aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/ice1712/revo.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2006-08-30 10:49:54 -0400
committerJaroslav Kysela <perex@suse.cz>2006-09-23 04:45:08 -0400
commit723b2b0d36fa7cea81a962af2d40d88520d5a5f1 (patch)
tree0020b109e0792aba552c99cff7b6576b81a5c2b6 /sound/pci/ice1712/revo.c
parentd0ae48471570c680333cbe28c143bbab887a4ec2 (diff)
[ALSA] Clean up and add TLV support to AK4xxx i2c driver
- Clean up the code in AK4xxx-ADDA i2c code. - Fix capture gain controls for AK5365 - Changed the static table for DAC/ADC mixer labels to use structs - Implemented TLV entries for each AK codec The volumes in AK4524, AK4528 and AK5365 are corrected with a table to be suitable for dB conversion. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/pci/ice1712/revo.c')
-rw-r--r--sound/pci/ice1712/revo.c47
1 files changed, 29 insertions, 18 deletions
diff --git a/sound/pci/ice1712/revo.c b/sound/pci/ice1712/revo.c
index 1134a57f9e6..c9eefa9bbff 100644
--- a/sound/pci/ice1712/revo.c
+++ b/sound/pci/ice1712/revo.c
@@ -87,19 +87,34 @@ static void revo_set_rate_val(struct snd_akm4xxx *ak, unsigned int rate)
87 * initialize the chips on M-Audio Revolution cards 87 * initialize the chips on M-Audio Revolution cards
88 */ 88 */
89 89
90static unsigned int revo71_num_stereo_front[] = {2}; 90#define AK_DAC(xname,xch) { .name = xname, .num_channels = xch }
91static char *revo71_channel_names_front[] = {"PCM Playback Volume"};
92 91
93static unsigned int revo71_num_stereo_surround[] = {1, 1, 2, 2}; 92static struct snd_akm4xxx_dac_channel revo71_front[] = {
94static char *revo71_channel_names_surround[] = {"PCM Center Playback Volume", "PCM LFE Playback Volume", 93 AK_DAC("PCM Playback Volume", 2)
95 "PCM Side Playback Volume", "PCM Rear Playback Volume"}; 94};
95
96static struct snd_akm4xxx_dac_channel revo71_surround[] = {
97 AK_DAC("PCM Center Playback Volume", 1),
98 AK_DAC("PCM LFE Playback Volume", 1),
99 AK_DAC("PCM Side Playback Volume", 2),
100 AK_DAC("PCM Rear Playback Volume", 2),
101};
96 102
97static unsigned int revo51_num_stereo[] = {2, 1, 1, 2}; 103static struct snd_akm4xxx_dac_channel revo51_dac[] = {
98static char *revo51_channel_names[] = {"PCM Playback Volume", "PCM Center Playback Volume", 104 AK_DAC("PCM Playback Volume", 2),
99 "PCM LFE Playback Volume", "PCM Rear Playback Volume"}; 105 AK_DAC("PCM Center Playback Volume", 1),
106 AK_DAC("PCM LFE Playback Volume", 1),
107 AK_DAC("PCM Rear Playback Volume", 2),
108};
100 109
101static unsigned int revo51_adc_num_stereo[] = {2}; 110static struct snd_akm4xxx_adc_channel revo51_adc[] = {
102static char *revo51_adc_channel_names[] = {"PCM Capture Volume","PCM Capture Switch"}; 111 {
112 .name = "PCM Capture Volume",
113 .gain_name = "PCM Capture Gain Volume",
114 .switch_name = "PCM Capture Switch",
115 .num_channels = 2
116 },
117};
103 118
104static struct snd_akm4xxx akm_revo_front __devinitdata = { 119static struct snd_akm4xxx akm_revo_front __devinitdata = {
105 .type = SND_AK4381, 120 .type = SND_AK4381,
@@ -107,8 +122,7 @@ static struct snd_akm4xxx akm_revo_front __devinitdata = {
107 .ops = { 122 .ops = {
108 .set_rate_val = revo_set_rate_val 123 .set_rate_val = revo_set_rate_val
109 }, 124 },
110 .num_stereo = revo71_num_stereo_front, 125 .dac_info = revo71_front,
111 .channel_names = revo71_channel_names_front
112}; 126};
113 127
114static struct snd_ak4xxx_private akm_revo_front_priv __devinitdata = { 128static struct snd_ak4xxx_private akm_revo_front_priv __devinitdata = {
@@ -130,8 +144,7 @@ static struct snd_akm4xxx akm_revo_surround __devinitdata = {
130 .ops = { 144 .ops = {
131 .set_rate_val = revo_set_rate_val 145 .set_rate_val = revo_set_rate_val
132 }, 146 },
133 .num_stereo = revo71_num_stereo_surround, 147 .dac_info = revo71_surround,
134 .channel_names = revo71_channel_names_surround
135}; 148};
136 149
137static struct snd_ak4xxx_private akm_revo_surround_priv __devinitdata = { 150static struct snd_ak4xxx_private akm_revo_surround_priv __devinitdata = {
@@ -152,8 +165,7 @@ static struct snd_akm4xxx akm_revo51 __devinitdata = {
152 .ops = { 165 .ops = {
153 .set_rate_val = revo_set_rate_val 166 .set_rate_val = revo_set_rate_val
154 }, 167 },
155 .num_stereo = revo51_num_stereo, 168 .dac_info = revo51_dac,
156 .channel_names = revo51_channel_names
157}; 169};
158 170
159static struct snd_ak4xxx_private akm_revo51_priv __devinitdata = { 171static struct snd_ak4xxx_private akm_revo51_priv __devinitdata = {
@@ -171,8 +183,7 @@ static struct snd_ak4xxx_private akm_revo51_priv __devinitdata = {
171static struct snd_akm4xxx akm_revo51_adc __devinitdata = { 183static struct snd_akm4xxx akm_revo51_adc __devinitdata = {
172 .type = SND_AK5365, 184 .type = SND_AK5365,
173 .num_adcs = 2, 185 .num_adcs = 2,
174 .num_stereo = revo51_adc_num_stereo, 186 .adc_info = revo51_adc,
175 .channel_names = revo51_adc_channel_names
176}; 187};
177 188
178static struct snd_ak4xxx_private akm_revo51_adc_priv __devinitdata = { 189static struct snd_ak4xxx_private akm_revo51_adc_priv __devinitdata = {