aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2005-04-07 09:48:42 -0400
committerJaroslav Kysela <perex@suse.cz>2005-05-29 03:58:22 -0400
commitbdaed50292bea3e2b20c68c2ffe9dbde7c0d6910 (patch)
tree7f056ec8acce0c50b9dc84611b24e4a711d0100d
parent5af4c83375cba113fb7e1ed57024a5442ca5060e (diff)
[ALSA] Check revision for the proper detection of audigy 2
EMU10K1/EMU10K2 driver Check ther revision to detect non-listed audigy 2 boards. Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--include/sound/emu10k1.h1
-rw-r--r--sound/pci/emu10k1/emu10k1_main.c18
2 files changed, 15 insertions, 4 deletions
diff --git a/include/sound/emu10k1.h b/include/sound/emu10k1.h
index 6647919768bf..f5babd3f8452 100644
--- a/include/sound/emu10k1.h
+++ b/include/sound/emu10k1.h
@@ -1040,6 +1040,7 @@ typedef struct {
1040 u32 vendor; 1040 u32 vendor;
1041 u32 device; 1041 u32 device;
1042 u32 subsystem; 1042 u32 subsystem;
1043 unsigned char revision;
1043 unsigned char emu10k1_chip; /* Original SB Live. Not SB Live 24bit. */ 1044 unsigned char emu10k1_chip; /* Original SB Live. Not SB Live 24bit. */
1044 unsigned char emu10k2_chip; /* Audigy 1 or Audigy 2. */ 1045 unsigned char emu10k2_chip; /* Audigy 1 or Audigy 2. */
1045 unsigned char ca0102_chip; /* Audigy 1 or Audigy 2. Not SB Audigy 2 Value. */ 1046 unsigned char ca0102_chip; /* Audigy 1 or Audigy 2. Not SB Audigy 2 Value. */
diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c
index a3a1a10fb0c9..c6d53b459254 100644
--- a/sound/pci/emu10k1/emu10k1_main.c
+++ b/sound/pci/emu10k1/emu10k1_main.c
@@ -679,6 +679,14 @@ static emu_chip_details_t emu_chip_details[] = {
679 .spk71 = 1, 679 .spk71 = 1,
680 .spdif_bug = 1, 680 .spdif_bug = 1,
681 .ac97_chip = 1} , 681 .ac97_chip = 1} ,
682 {.vendor = 0x1102, .device = 0x0004, .revision = 0x04,
683 .driver = "Audigy2", .name = "Audigy 2 [Unknown]",
684 .id = "Audigy2",
685 .emu10k2_chip = 1,
686 .ca0102_chip = 1,
687 .ca0151_chip = 1,
688 .spdif_bug = 1,
689 .ac97_chip = 1} ,
682 {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x10020052, 690 {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x10020052,
683 .driver = "Audigy", .name = "Audigy 1 ES [SB0160]", 691 .driver = "Audigy", .name = "Audigy 1 ES [SB0160]",
684 .id = "Audigy", 692 .id = "Audigy",
@@ -693,11 +701,10 @@ static emu_chip_details_t emu_chip_details[] = {
693 .ca0102_chip = 1, 701 .ca0102_chip = 1,
694 .ac97_chip = 1} , 702 .ac97_chip = 1} ,
695 {.vendor = 0x1102, .device = 0x0004, 703 {.vendor = 0x1102, .device = 0x0004,
696 .driver = "Audigy", .name = "Audigy 1 or 2 [Unknown]", 704 .driver = "Audigy", .name = "Audigy 1 [Unknown]",
697 .id = "Audigy", 705 .id = "Audigy",
698 .emu10k2_chip = 1, 706 .emu10k2_chip = 1,
699 .ca0102_chip = 1, 707 .ca0102_chip = 1,
700 .spdif_bug = 1,
701 .ac97_chip = 1} , 708 .ac97_chip = 1} ,
702 {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x40011102, 709 {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x40011102,
703 .driver = "EMU10K1", .name = "E-mu APS [4001]", 710 .driver = "EMU10K1", .name = "E-mu APS [4001]",
@@ -781,8 +788,11 @@ int __devinit snd_emu10k1_create(snd_card_t * card,
781 788
782 for (c = emu_chip_details; c->vendor; c++) { 789 for (c = emu_chip_details; c->vendor; c++) {
783 if (c->vendor == pci->vendor && c->device == pci->device) { 790 if (c->vendor == pci->vendor && c->device == pci->device) {
784 if (c->subsystem == emu->serial) break; 791 if (c->subsystem && c->subsystem != emu->serial)
785 if (c->subsystem == 0) break; 792 continue;
793 if (c->revision && c->revision != emu->revision)
794 continue;
795 break;
786 } 796 }
787 } 797 }
788 if (c->vendor == 0) { 798 if (c->vendor == 0) {