diff options
author | Jaroslav Kysela <perex@perex.cz> | 2008-02-06 14:04:49 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-04-24 06:00:08 -0400 |
commit | ef2cd2ccad66b4aba518eca7514eface267ee0f3 (patch) | |
tree | 5814364e8de71e368e7fa9fbad541a712cdca428 /sound/pci/ice1712 | |
parent | a60567d13c047b03167df4aed6b7a8730f267234 (diff) |
[ALSA] ice1712 - added support for M-Audio Delta 66E
See ALSA bug#3327 for more details. Experimental.
Also fix support for M-Audio Delta 1010E - subdevice check.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'sound/pci/ice1712')
-rw-r--r-- | sound/pci/ice1712/delta.c | 15 | ||||
-rw-r--r-- | sound/pci/ice1712/delta.h | 1 |
2 files changed, 13 insertions, 3 deletions
diff --git a/sound/pci/ice1712/delta.c b/sound/pci/ice1712/delta.c index c78894f110be..0ed96c178059 100644 --- a/sound/pci/ice1712/delta.c +++ b/sound/pci/ice1712/delta.c | |||
@@ -1,8 +1,8 @@ | |||
1 | /* | 1 | /* |
2 | * ALSA driver for ICEnsemble ICE1712 (Envy24) | 2 | * ALSA driver for ICEnsemble ICE1712 (Envy24) |
3 | * | 3 | * |
4 | * Lowlevel functions for M-Audio Delta 1010, 44, 66, Dio2496, Audiophile | 4 | * Lowlevel functions for M-Audio Delta 1010, 1010E, 44, 66, 66E, Dio2496, |
5 | * Digigram VX442 | 5 | * Audiophile, Digigram VX442 |
6 | * | 6 | * |
7 | * Copyright (c) 2000 Jaroslav Kysela <perex@perex.cz> | 7 | * Copyright (c) 2000 Jaroslav Kysela <perex@perex.cz> |
8 | * | 8 | * |
@@ -536,9 +536,14 @@ static int __devinit snd_ice1712_delta_init(struct snd_ice1712 *ice) | |||
536 | int err; | 536 | int err; |
537 | struct snd_akm4xxx *ak; | 537 | struct snd_akm4xxx *ak; |
538 | 538 | ||
539 | if (ice->eeprom.subvendor && ice->eeprom.gpiodir == 0x7b) | 539 | if (ice->eeprom.subvendor == ICE1712_SUBDEVICE_DELTA1010 && |
540 | ice->eeprom.gpiodir == 0x7b) | ||
540 | ice->eeprom.subvendor = ICE1712_SUBDEVICE_DELTA1010E; | 541 | ice->eeprom.subvendor = ICE1712_SUBDEVICE_DELTA1010E; |
541 | 542 | ||
543 | if (ice->eeprom.subvendor == ICE1712_SUBDEVICE_DELTA66 && | ||
544 | ice->eeprom.gpiodir == 0xfb) | ||
545 | ice->eeprom.subvendor = ICE1712_SUBDEVICE_DELTA66E; | ||
546 | |||
542 | /* determine I2C, DACs and ADCs */ | 547 | /* determine I2C, DACs and ADCs */ |
543 | switch (ice->eeprom.subvendor) { | 548 | switch (ice->eeprom.subvendor) { |
544 | case ICE1712_SUBDEVICE_AUDIOPHILE: | 549 | case ICE1712_SUBDEVICE_AUDIOPHILE: |
@@ -565,6 +570,7 @@ static int __devinit snd_ice1712_delta_init(struct snd_ice1712 *ice) | |||
565 | ice->num_total_dacs = 4; /* two AK4324 codecs */ | 570 | ice->num_total_dacs = 4; /* two AK4324 codecs */ |
566 | break; | 571 | break; |
567 | case ICE1712_SUBDEVICE_VX442: | 572 | case ICE1712_SUBDEVICE_VX442: |
573 | case ICE1712_SUBDEVICE_DELTA66E: /* omni not suported yet */ | ||
568 | ice->num_total_dacs = 4; | 574 | ice->num_total_dacs = 4; |
569 | ice->num_total_adcs = 4; | 575 | ice->num_total_adcs = 4; |
570 | break; | 576 | break; |
@@ -577,6 +583,7 @@ static int __devinit snd_ice1712_delta_init(struct snd_ice1712 *ice) | |||
577 | case ICE1712_SUBDEVICE_DELTA1010E: | 583 | case ICE1712_SUBDEVICE_DELTA1010E: |
578 | case ICE1712_SUBDEVICE_DELTA1010LT: | 584 | case ICE1712_SUBDEVICE_DELTA1010LT: |
579 | case ICE1712_SUBDEVICE_VX442: | 585 | case ICE1712_SUBDEVICE_VX442: |
586 | case ICE1712_SUBDEVICE_DELTA66E: | ||
580 | if ((err = snd_i2c_bus_create(ice->card, "ICE1712 GPIO 1", NULL, &ice->i2c)) < 0) { | 587 | if ((err = snd_i2c_bus_create(ice->card, "ICE1712 GPIO 1", NULL, &ice->i2c)) < 0) { |
581 | snd_printk(KERN_ERR "unable to create I2C bus\n"); | 588 | snd_printk(KERN_ERR "unable to create I2C bus\n"); |
582 | return err; | 589 | return err; |
@@ -635,6 +642,7 @@ static int __devinit snd_ice1712_delta_init(struct snd_ice1712 *ice) | |||
635 | err = snd_ice1712_akm4xxx_init(ak, &akm_delta44, &akm_delta44_priv, ice); | 642 | err = snd_ice1712_akm4xxx_init(ak, &akm_delta44, &akm_delta44_priv, ice); |
636 | break; | 643 | break; |
637 | case ICE1712_SUBDEVICE_VX442: | 644 | case ICE1712_SUBDEVICE_VX442: |
645 | case ICE1712_SUBDEVICE_DELTA66E: | ||
638 | err = snd_ice1712_akm4xxx_init(ak, &akm_vx442, &akm_vx442_priv, ice); | 646 | err = snd_ice1712_akm4xxx_init(ak, &akm_vx442, &akm_vx442_priv, ice); |
639 | break; | 647 | break; |
640 | default: | 648 | default: |
@@ -725,6 +733,7 @@ static int __devinit snd_ice1712_delta_add_controls(struct snd_ice1712 *ice) | |||
725 | case ICE1712_SUBDEVICE_DELTA44: | 733 | case ICE1712_SUBDEVICE_DELTA44: |
726 | case ICE1712_SUBDEVICE_DELTA66: | 734 | case ICE1712_SUBDEVICE_DELTA66: |
727 | case ICE1712_SUBDEVICE_VX442: | 735 | case ICE1712_SUBDEVICE_VX442: |
736 | case ICE1712_SUBDEVICE_DELTA66E: | ||
728 | err = snd_ice1712_akm4xxx_build_controls(ice); | 737 | err = snd_ice1712_akm4xxx_build_controls(ice); |
729 | if (err < 0) | 738 | if (err < 0) |
730 | return err; | 739 | return err; |
diff --git a/sound/pci/ice1712/delta.h b/sound/pci/ice1712/delta.h index d07c49b4b66f..ea7116c304c0 100644 --- a/sound/pci/ice1712/delta.h +++ b/sound/pci/ice1712/delta.h | |||
@@ -39,6 +39,7 @@ | |||
39 | #define ICE1712_SUBDEVICE_DELTA1010E 0xff1430d6 | 39 | #define ICE1712_SUBDEVICE_DELTA1010E 0xff1430d6 |
40 | #define ICE1712_SUBDEVICE_DELTADIO2496 0x121431d6 | 40 | #define ICE1712_SUBDEVICE_DELTADIO2496 0x121431d6 |
41 | #define ICE1712_SUBDEVICE_DELTA66 0x121432d6 | 41 | #define ICE1712_SUBDEVICE_DELTA66 0x121432d6 |
42 | #define ICE1712_SUBDEVICE_DELTA66E 0xff1432d6 | ||
42 | #define ICE1712_SUBDEVICE_DELTA44 0x121433d6 | 43 | #define ICE1712_SUBDEVICE_DELTA44 0x121433d6 |
43 | #define ICE1712_SUBDEVICE_AUDIOPHILE 0x121434d6 | 44 | #define ICE1712_SUBDEVICE_AUDIOPHILE 0x121434d6 |
44 | #define ICE1712_SUBDEVICE_DELTA410 0x121438d6 | 45 | #define ICE1712_SUBDEVICE_DELTA410 0x121438d6 |