aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/ice1712/revo.c
diff options
context:
space:
mode:
authorJochen Voss <voss@seehuhn.de>2006-08-08 15:13:42 -0400
committerJaroslav Kysela <perex@suse.cz>2006-09-23 04:40:23 -0400
commit96d9e9347c9c5ca980bef22b4add7d437d79034f (patch)
tree302ad6bbddb84efb58367f46d0a4c21df56a71e5 /sound/pci/ice1712/revo.c
parent683fe1537e660c322c8af953773921e814791193 (diff)
[ALSA] Revolution 5.1 - register the AK5365 ADC with ALSA
Enable capture support for the M-Audio Revolution 5.1 card, by registering the ADC with ALSA. Signed-off-by: Jochen Voss <voss@seehuhn.de> 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.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/sound/pci/ice1712/revo.c b/sound/pci/ice1712/revo.c
index fec9440cb310..ef64be49a898 100644
--- a/sound/pci/ice1712/revo.c
+++ b/sound/pci/ice1712/revo.c
@@ -98,6 +98,9 @@ static unsigned int revo51_num_stereo[] = {2, 1, 1, 2};
98static char *revo51_channel_names[] = {"PCM Playback Volume", "PCM Center Playback Volume", 98static char *revo51_channel_names[] = {"PCM Playback Volume", "PCM Center Playback Volume",
99 "PCM LFE Playback Volume", "PCM Rear Playback Volume"}; 99 "PCM LFE Playback Volume", "PCM Rear Playback Volume"};
100 100
101static unsigned int revo51_adc_num_stereo[] = {2};
102static char *revo51_adc_channel_names[] = {"PCM Capture Volume"};
103
101static struct snd_akm4xxx akm_revo_front __devinitdata = { 104static struct snd_akm4xxx akm_revo_front __devinitdata = {
102 .type = SND_AK4381, 105 .type = SND_AK4381,
103 .num_dacs = 2, 106 .num_dacs = 2,
@@ -159,7 +162,26 @@ static struct snd_ak4xxx_private akm_revo51_priv __devinitdata = {
159 .data_mask = VT1724_REVO_CDOUT, 162 .data_mask = VT1724_REVO_CDOUT,
160 .clk_mask = VT1724_REVO_CCLK, 163 .clk_mask = VT1724_REVO_CCLK,
161 .cs_mask = VT1724_REVO_CS0 | VT1724_REVO_CS1 | VT1724_REVO_CS2, 164 .cs_mask = VT1724_REVO_CS0 | VT1724_REVO_CS1 | VT1724_REVO_CS2,
162 .cs_addr = 0, 165 .cs_addr = VT1724_REVO_CS1 | VT1724_REVO_CS2,
166 .cs_none = VT1724_REVO_CS0 | VT1724_REVO_CS1 | VT1724_REVO_CS2,
167 .add_flags = VT1724_REVO_CCLK, /* high at init */
168 .mask_flags = 0,
169};
170
171static struct snd_akm4xxx akm_revo51_adc __devinitdata = {
172 .type = SND_AK5365,
173 .num_adcs = 2,
174 .num_stereo = revo51_adc_num_stereo,
175 .channel_names = revo51_adc_channel_names
176};
177
178static struct snd_ak4xxx_private akm_revo51_adc_priv __devinitdata = {
179 .caddr = 2,
180 .cif = 0,
181 .data_mask = VT1724_REVO_CDOUT,
182 .clk_mask = VT1724_REVO_CCLK,
183 .cs_mask = VT1724_REVO_CS0 | VT1724_REVO_CS1 | VT1724_REVO_CS2,
184 .cs_addr = VT1724_REVO_CS0 | VT1724_REVO_CS2,
163 .cs_none = VT1724_REVO_CS0 | VT1724_REVO_CS1 | VT1724_REVO_CS2, 185 .cs_none = VT1724_REVO_CS0 | VT1724_REVO_CS1 | VT1724_REVO_CS2,
164 .add_flags = VT1724_REVO_CCLK, /* high at init */ 186 .add_flags = VT1724_REVO_CCLK, /* high at init */
165 .mask_flags = 0, 187 .mask_flags = 0,
@@ -202,9 +224,13 @@ static int __devinit revo_init(struct snd_ice1712 *ice)
202 snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE, VT1724_REVO_MUTE); 224 snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE, VT1724_REVO_MUTE);
203 break; 225 break;
204 case VT1724_SUBDEVICE_REVOLUTION51: 226 case VT1724_SUBDEVICE_REVOLUTION51:
205 ice->akm_codecs = 1; 227 ice->akm_codecs = 2;
206 if ((err = snd_ice1712_akm4xxx_init(ak, &akm_revo51, &akm_revo51_priv, ice)) < 0) 228 if ((err = snd_ice1712_akm4xxx_init(ak, &akm_revo51, &akm_revo51_priv, ice)) < 0)
207 return err; 229 return err;
230 err = snd_ice1712_akm4xxx_init(ak + 1, &akm_revo51_adc,
231 &akm_revo51_adc_priv, ice);
232 if (err < 0)
233 return err;
208 /* unmute all codecs - needed! */ 234 /* unmute all codecs - needed! */
209 snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE, VT1724_REVO_MUTE); 235 snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE, VT1724_REVO_MUTE);
210 break; 236 break;