---------------------
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) {