aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/ice1712/revo.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/pci/ice1712/revo.c')
-rw-r--r--sound/pci/ice1712/revo.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/sound/pci/ice1712/revo.c b/sound/pci/ice1712/revo.c
index 4d2631434dc8..b508bb360b97 100644
--- a/sound/pci/ice1712/revo.c
+++ b/sound/pci/ice1712/revo.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * ALSA driver for ICEnsemble ICE1712 (Envy24) 2 * ALSA driver for ICEnsemble ICE1712 (Envy24)
3 * 3 *
4 * Lowlevel functions for M-Audio Revolution 7.1 4 * Lowlevel functions for M-Audio Audiophile 192, Revolution 7.1 and 5.1
5 * 5 *
6 * Copyright (c) 2003 Takashi Iwai <tiwai@suse.de> 6 * Copyright (c) 2003 Takashi Iwai <tiwai@suse.de>
7 * 7 *
@@ -48,7 +48,7 @@ static void revo_i2s_mclk_changed(struct snd_ice1712 *ice)
48} 48}
49 49
50/* 50/*
51 * change the rate of envy24HT, AK4355 and AK4381 51 * change the rate of Envy24HT, AK4355 and AK4381
52 */ 52 */
53static void revo_set_rate_val(struct snd_akm4xxx *ak, unsigned int rate) 53static void revo_set_rate_val(struct snd_akm4xxx *ak, unsigned int rate)
54{ 54{
@@ -83,8 +83,8 @@ static void revo_set_rate_val(struct snd_akm4xxx *ak, unsigned int rate)
83 tmp = snd_akm4xxx_get(ak, 0, reg); 83 tmp = snd_akm4xxx_get(ak, 0, reg);
84 tmp &= ~(0x03 << shift); 84 tmp &= ~(0x03 << shift);
85 tmp |= dfs << shift; 85 tmp |= dfs << shift;
86 // snd_akm4xxx_write(ak, 0, reg, tmp); 86 /* snd_akm4xxx_write(ak, 0, reg, tmp); */
87 snd_akm4xxx_set(ak, 0, reg, tmp); /* the value is written in reset(0) */ 87 snd_akm4xxx_set(ak, 0, reg, tmp); /* value is written in reset(0) */
88 snd_akm4xxx_reset(ak, 0); 88 snd_akm4xxx_reset(ak, 0);
89} 89}
90 90
@@ -216,6 +216,7 @@ static const struct snd_akm4xxx_dac_channel revo51_dac[] = {
216 AK_DAC("PCM Center Playback Volume", 1), 216 AK_DAC("PCM Center Playback Volume", 1),
217 AK_DAC("PCM LFE Playback Volume", 1), 217 AK_DAC("PCM LFE Playback Volume", 1),
218 AK_DAC("PCM Rear Playback Volume", 2), 218 AK_DAC("PCM Rear Playback Volume", 2),
219 AK_DAC("PCM Headphone Volume", 2),
219}; 220};
220 221
221static const char *revo51_adc_input_names[] = { 222static const char *revo51_adc_input_names[] = {
@@ -279,7 +280,7 @@ static struct snd_ak4xxx_private akm_revo_surround_priv __devinitdata = {
279 280
280static struct snd_akm4xxx akm_revo51 __devinitdata = { 281static struct snd_akm4xxx akm_revo51 __devinitdata = {
281 .type = SND_AK4358, 282 .type = SND_AK4358,
282 .num_dacs = 6, 283 .num_dacs = 8,
283 .ops = { 284 .ops = {
284 .set_rate_val = revo_set_rate_val 285 .set_rate_val = revo_set_rate_val
285 }, 286 },
@@ -508,7 +509,7 @@ static int __devinit revo_init(struct snd_ice1712 *ice)
508 ice->gpio.i2s_mclk_changed = revo_i2s_mclk_changed; 509 ice->gpio.i2s_mclk_changed = revo_i2s_mclk_changed;
509 break; 510 break;
510 case VT1724_SUBDEVICE_REVOLUTION51: 511 case VT1724_SUBDEVICE_REVOLUTION51:
511 ice->num_total_dacs = 6; 512 ice->num_total_dacs = 8;
512 ice->num_total_adcs = 2; 513 ice->num_total_adcs = 2;
513 break; 514 break;
514 case VT1724_SUBDEVICE_AUDIOPHILE192: 515 case VT1724_SUBDEVICE_AUDIOPHILE192:
@@ -524,16 +525,20 @@ static int __devinit revo_init(struct snd_ice1712 *ice)
524 ak = ice->akm = kcalloc(2, sizeof(struct snd_akm4xxx), GFP_KERNEL); 525 ak = ice->akm = kcalloc(2, sizeof(struct snd_akm4xxx), GFP_KERNEL);
525 if (! ak) 526 if (! ak)
526 return -ENOMEM; 527 return -ENOMEM;
527 ice->akm_codecs = 2;
528 switch (ice->eeprom.subvendor) { 528 switch (ice->eeprom.subvendor) {
529 case VT1724_SUBDEVICE_REVOLUTION71: 529 case VT1724_SUBDEVICE_REVOLUTION71:
530 ice->akm_codecs = 2; 530 ice->akm_codecs = 2;
531 if ((err = snd_ice1712_akm4xxx_init(ak, &akm_revo_front, &akm_revo_front_priv, ice)) < 0) 531 err = snd_ice1712_akm4xxx_init(ak, &akm_revo_front,
532 &akm_revo_front_priv, ice);
533 if (err < 0)
532 return err; 534 return err;
533 if ((err = snd_ice1712_akm4xxx_init(ak + 1, &akm_revo_surround, &akm_revo_surround_priv, ice)) < 0) 535 err = snd_ice1712_akm4xxx_init(ak+1, &akm_revo_surround,
536 &akm_revo_surround_priv, ice);
537 if (err < 0)
534 return err; 538 return err;
535 /* unmute all codecs */ 539 /* unmute all codecs */
536 snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE, VT1724_REVO_MUTE); 540 snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE,
541 VT1724_REVO_MUTE);
537 break; 542 break;
538 case VT1724_SUBDEVICE_REVOLUTION51: 543 case VT1724_SUBDEVICE_REVOLUTION51:
539 ice->akm_codecs = 2; 544 ice->akm_codecs = 2;