fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / sound / pci / ice1712 / pontis.c
index d23fb3f..6c74c2d 100644 (file)
@@ -31,6 +31,7 @@
 
 #include <sound/core.h>
 #include <sound/info.h>
+#include <sound/tlv.h>
 
 #include "ice1712.h"
 #include "envy24ht.h"
@@ -564,6 +565,8 @@ static int pontis_gpio_data_put(struct snd_kcontrol *kcontrol, struct snd_ctl_el
        return changed;
 }
 
+static DECLARE_TLV_DB_SCALE(db_scale_volume, -6400, 50, 1);
+
 /*
  * mixers
  */
@@ -571,17 +574,23 @@ static int pontis_gpio_data_put(struct snd_kcontrol *kcontrol, struct snd_ctl_el
 static struct snd_kcontrol_new pontis_controls[] __devinitdata = {
        {
                .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+               .access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |
+                          SNDRV_CTL_ELEM_ACCESS_TLV_READ),
                .name = "PCM Playback Volume",
                .info = wm_dac_vol_info,
                .get = wm_dac_vol_get,
                .put = wm_dac_vol_put,
+               .tlv = { .p = db_scale_volume },
        },
        {
                .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+               .access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |
+                          SNDRV_CTL_ELEM_ACCESS_TLV_READ),
                .name = "Capture Volume",
                .info = wm_adc_vol_info,
                .get = wm_adc_vol_get,
                .put = wm_adc_vol_put,
+               .tlv = { .p = db_scale_volume },
        },
        {
                .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -680,9 +689,8 @@ static void wm_proc_init(struct snd_ice1712 *ice)
 {
        struct snd_info_entry *entry;
        if (! snd_card_proc_new(ice->card, "wm_codec", &entry)) {
-               snd_info_set_text_ops(entry, ice, 1024, wm_proc_regs_read);
+               snd_info_set_text_ops(entry, ice, wm_proc_regs_read);
                entry->mode |= S_IWUSR;
-               entry->c.text.write_size = 1024;
                entry->c.text.write = wm_proc_regs_write;
        }
 }
@@ -705,9 +713,8 @@ static void cs_proc_regs_read(struct snd_info_entry *entry, struct snd_info_buff
 static void cs_proc_init(struct snd_ice1712 *ice)
 {
        struct snd_info_entry *entry;
-       if (! snd_card_proc_new(ice->card, "cs_codec", &entry)) {
-               snd_info_set_text_ops(entry, ice, 1024, cs_proc_regs_read);
-       }
+       if (! snd_card_proc_new(ice->card, "cs_codec", &entry))
+               snd_info_set_text_ops(entry, ice, cs_proc_regs_read);
 }