diff options
author | Jaroslav Kysela <perex@perex.cz> | 2008-02-06 09:48:06 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-04-24 06:00:08 -0400 |
commit | a60567d13c047b03167df4aed6b7a8730f267234 (patch) | |
tree | 9ccd48804a2c45be6f854e9be824377ed0fcf360 /sound/pci/ice1712 | |
parent | cf7aaca8bae3a719db47ff6eca5f6f2f42eba05a (diff) |
[ALSA] Added support for Delta1010E (newer revisions of Delta1010)
For more details, see ALSA bug#3327 .
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'sound/pci/ice1712')
-rw-r--r-- | sound/pci/ice1712/delta.c | 9 | ||||
-rw-r--r-- | sound/pci/ice1712/delta.h | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/sound/pci/ice1712/delta.c b/sound/pci/ice1712/delta.c index efd180b40e56..c78894f110be 100644 --- a/sound/pci/ice1712/delta.c +++ b/sound/pci/ice1712/delta.c | |||
@@ -86,6 +86,7 @@ static unsigned char ap_cs8427_codec_select(struct snd_ice1712 *ice) | |||
86 | unsigned char tmp; | 86 | unsigned char tmp; |
87 | tmp = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA); | 87 | tmp = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA); |
88 | switch (ice->eeprom.subvendor) { | 88 | switch (ice->eeprom.subvendor) { |
89 | case ICE1712_SUBDEVICE_DELTA1010E: | ||
89 | case ICE1712_SUBDEVICE_DELTA1010LT: | 90 | case ICE1712_SUBDEVICE_DELTA1010LT: |
90 | tmp &= ~ICE1712_DELTA_1010LT_CS; | 91 | tmp &= ~ICE1712_DELTA_1010LT_CS; |
91 | tmp |= ICE1712_DELTA_1010LT_CCLK | ICE1712_DELTA_1010LT_CS_CS8427; | 92 | tmp |= ICE1712_DELTA_1010LT_CCLK | ICE1712_DELTA_1010LT_CS_CS8427; |
@@ -109,6 +110,7 @@ static unsigned char ap_cs8427_codec_select(struct snd_ice1712 *ice) | |||
109 | static void ap_cs8427_codec_deassert(struct snd_ice1712 *ice, unsigned char tmp) | 110 | static void ap_cs8427_codec_deassert(struct snd_ice1712 *ice, unsigned char tmp) |
110 | { | 111 | { |
111 | switch (ice->eeprom.subvendor) { | 112 | switch (ice->eeprom.subvendor) { |
113 | case ICE1712_SUBDEVICE_DELTA1010E: | ||
112 | case ICE1712_SUBDEVICE_DELTA1010LT: | 114 | case ICE1712_SUBDEVICE_DELTA1010LT: |
113 | tmp &= ~ICE1712_DELTA_1010LT_CS; | 115 | tmp &= ~ICE1712_DELTA_1010LT_CS; |
114 | tmp |= ICE1712_DELTA_1010LT_CS_NONE; | 116 | tmp |= ICE1712_DELTA_1010LT_CS_NONE; |
@@ -534,6 +536,9 @@ static int __devinit snd_ice1712_delta_init(struct snd_ice1712 *ice) | |||
534 | int err; | 536 | int err; |
535 | struct snd_akm4xxx *ak; | 537 | struct snd_akm4xxx *ak; |
536 | 538 | ||
539 | if (ice->eeprom.subvendor && ice->eeprom.gpiodir == 0x7b) | ||
540 | ice->eeprom.subvendor = ICE1712_SUBDEVICE_DELTA1010E; | ||
541 | |||
537 | /* determine I2C, DACs and ADCs */ | 542 | /* determine I2C, DACs and ADCs */ |
538 | switch (ice->eeprom.subvendor) { | 543 | switch (ice->eeprom.subvendor) { |
539 | case ICE1712_SUBDEVICE_AUDIOPHILE: | 544 | case ICE1712_SUBDEVICE_AUDIOPHILE: |
@@ -550,6 +555,7 @@ static int __devinit snd_ice1712_delta_init(struct snd_ice1712 *ice) | |||
550 | ice->num_total_adcs = ice->omni ? 8 : 4; | 555 | ice->num_total_adcs = ice->omni ? 8 : 4; |
551 | break; | 556 | break; |
552 | case ICE1712_SUBDEVICE_DELTA1010: | 557 | case ICE1712_SUBDEVICE_DELTA1010: |
558 | case ICE1712_SUBDEVICE_DELTA1010E: | ||
553 | case ICE1712_SUBDEVICE_DELTA1010LT: | 559 | case ICE1712_SUBDEVICE_DELTA1010LT: |
554 | case ICE1712_SUBDEVICE_MEDIASTATION: | 560 | case ICE1712_SUBDEVICE_MEDIASTATION: |
555 | ice->num_total_dacs = 8; | 561 | ice->num_total_dacs = 8; |
@@ -568,6 +574,7 @@ static int __devinit snd_ice1712_delta_init(struct snd_ice1712 *ice) | |||
568 | switch (ice->eeprom.subvendor) { | 574 | switch (ice->eeprom.subvendor) { |
569 | case ICE1712_SUBDEVICE_AUDIOPHILE: | 575 | case ICE1712_SUBDEVICE_AUDIOPHILE: |
570 | case ICE1712_SUBDEVICE_DELTA410: | 576 | case ICE1712_SUBDEVICE_DELTA410: |
577 | case ICE1712_SUBDEVICE_DELTA1010E: | ||
571 | case ICE1712_SUBDEVICE_DELTA1010LT: | 578 | case ICE1712_SUBDEVICE_DELTA1010LT: |
572 | case ICE1712_SUBDEVICE_VX442: | 579 | case ICE1712_SUBDEVICE_VX442: |
573 | if ((err = snd_i2c_bus_create(ice->card, "ICE1712 GPIO 1", NULL, &ice->i2c)) < 0) { | 580 | if ((err = snd_i2c_bus_create(ice->card, "ICE1712 GPIO 1", NULL, &ice->i2c)) < 0) { |
@@ -601,6 +608,7 @@ static int __devinit snd_ice1712_delta_init(struct snd_ice1712 *ice) | |||
601 | /* no analog? */ | 608 | /* no analog? */ |
602 | switch (ice->eeprom.subvendor) { | 609 | switch (ice->eeprom.subvendor) { |
603 | case ICE1712_SUBDEVICE_DELTA1010: | 610 | case ICE1712_SUBDEVICE_DELTA1010: |
611 | case ICE1712_SUBDEVICE_DELTA1010E: | ||
604 | case ICE1712_SUBDEVICE_DELTADIO2496: | 612 | case ICE1712_SUBDEVICE_DELTADIO2496: |
605 | case ICE1712_SUBDEVICE_MEDIASTATION: | 613 | case ICE1712_SUBDEVICE_MEDIASTATION: |
606 | return 0; | 614 | return 0; |
@@ -674,6 +682,7 @@ static int __devinit snd_ice1712_delta_add_controls(struct snd_ice1712 *ice) | |||
674 | if (err < 0) | 682 | if (err < 0) |
675 | return err; | 683 | return err; |
676 | break; | 684 | break; |
685 | case ICE1712_SUBDEVICE_DELTA1010E: | ||
677 | case ICE1712_SUBDEVICE_DELTA1010LT: | 686 | case ICE1712_SUBDEVICE_DELTA1010LT: |
678 | err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_delta1010lt_wordclock_select, ice)); | 687 | err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_delta1010lt_wordclock_select, ice)); |
679 | if (err < 0) | 688 | if (err < 0) |
diff --git a/sound/pci/ice1712/delta.h b/sound/pci/ice1712/delta.h index 26ea05a32f56..d07c49b4b66f 100644 --- a/sound/pci/ice1712/delta.h +++ b/sound/pci/ice1712/delta.h | |||
@@ -36,6 +36,7 @@ | |||
36 | "{Lionstracs,Mediastation}," | 36 | "{Lionstracs,Mediastation}," |
37 | 37 | ||
38 | #define ICE1712_SUBDEVICE_DELTA1010 0x121430d6 | 38 | #define ICE1712_SUBDEVICE_DELTA1010 0x121430d6 |
39 | #define ICE1712_SUBDEVICE_DELTA1010E 0xff1430d6 | ||
39 | #define ICE1712_SUBDEVICE_DELTADIO2496 0x121431d6 | 40 | #define ICE1712_SUBDEVICE_DELTADIO2496 0x121431d6 |
40 | #define ICE1712_SUBDEVICE_DELTA66 0x121432d6 | 41 | #define ICE1712_SUBDEVICE_DELTA66 0x121432d6 |
41 | #define ICE1712_SUBDEVICE_DELTA44 0x121433d6 | 42 | #define ICE1712_SUBDEVICE_DELTA44 0x121433d6 |