--------------------- PatchSet 3094 Date: 2005/04/07 15:48:42 Author: tiwai Branch: HEAD Tag: (none) Log: Summary: Check revision for the proper detection of audigy 2 Check ther revision to detect non-listed audigy 2 boards. Members: include/emu10k1.h:1.64->1.65 pci/emu10k1/emu10k1_main.c:1.53->1.54 Index: /include/sound/emu10k1.h diff -u /include/sound/emu10k1.h.old /include/sound/emu10k1.h --- /include/sound/emu10k1.h.old Wed Mar 30 05:22:25 2005 +++ /include/sound/emu10k1.h Thu Apr 7 07:48:42 2005 @@ -1040,6 +1040,7 @@ u32 vendor; u32 device; u32 subsystem; + unsigned char revision; unsigned char emu10k1_chip; /* Original SB Live. Not SB Live 24bit. */ unsigned char emu10k2_chip; /* Audigy 1 or Audigy 2. */ unsigned char ca0102_chip; /* Audigy 1 or Audigy 2. Not SB Audigy 2 Value. */ Index: /sound/pci/emu10k1/emu10k1_main.c diff -u /sound/pci/emu10k1/emu10k1_main.c.old /sound/pci/emu10k1/emu10k1_main.c --- /sound/pci/emu10k1/emu10k1_main.c.old Fri Apr 1 02:15:07 2005 +++ /sound/pci/emu10k1/emu10k1_main.c Thu Apr 7 07:48:43 2005 @@ -679,6 +679,14 @@ .spk71 = 1, .spdif_bug = 1, .ac97_chip = 1} , + {.vendor = 0x1102, .device = 0x0004, .revision = 0x04, + .driver = "Audigy2", .name = "Audigy 2 [Unknown]", + .id = "Audigy2", + .emu10k2_chip = 1, + .ca0102_chip = 1, + .ca0151_chip = 1, + .spdif_bug = 1, + .ac97_chip = 1} , {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x10020052, .driver = "Audigy", .name = "Audigy 1 ES [SB0160]", .id = "Audigy", @@ -693,11 +701,10 @@ .ca0102_chip = 1, .ac97_chip = 1} , {.vendor = 0x1102, .device = 0x0004, - .driver = "Audigy", .name = "Audigy 1 or 2 [Unknown]", + .driver = "Audigy", .name = "Audigy 1 [Unknown]", .id = "Audigy", .emu10k2_chip = 1, .ca0102_chip = 1, - .spdif_bug = 1, .ac97_chip = 1} , {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x40011102, .driver = "EMU10K1", .name = "E-mu APS [4001]", @@ -781,8 +788,11 @@ for (c = emu_chip_details; c->vendor; c++) { if (c->vendor == pci->vendor && c->device == pci->device) { - if (c->subsystem == emu->serial) break; - if (c->subsystem == 0) break; + if (c->subsystem && c->subsystem != emu->serial) + continue; + if (c->revision && c->revision != emu->revision) + continue; + break; } } if (c->vendor == 0) {