Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bdaed502 authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela
Browse files

[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: default avatarTakashi Iwai <tiwai@suse.de>
parent 5af4c833
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -1040,6 +1040,7 @@ typedef struct {
	u32 vendor;
	u32 vendor;
	u32 device;
	u32 device;
	u32 subsystem;
	u32 subsystem;
	unsigned char revision;
	unsigned char emu10k1_chip; /* Original SB Live. Not SB Live 24bit. */
	unsigned char emu10k1_chip; /* Original SB Live. Not SB Live 24bit. */
	unsigned char emu10k2_chip; /* Audigy 1 or Audigy 2. */
	unsigned char emu10k2_chip; /* Audigy 1 or Audigy 2. */
	unsigned char ca0102_chip;  /* Audigy 1 or Audigy 2. Not SB Audigy 2 Value. */
	unsigned char ca0102_chip;  /* Audigy 1 or Audigy 2. Not SB Audigy 2 Value. */
+14 −4
Original line number Original line Diff line number Diff line
@@ -679,6 +679,14 @@ static emu_chip_details_t emu_chip_details[] = {
	 .spk71 = 1,
	 .spk71 = 1,
	 .spdif_bug = 1,
	 .spdif_bug = 1,
	 .ac97_chip = 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,
	{.vendor = 0x1102, .device = 0x0004, .subsystem = 0x10020052,
	 .driver = "Audigy", .name = "Audigy 1 ES [SB0160]", 
	 .driver = "Audigy", .name = "Audigy 1 ES [SB0160]", 
	 .id = "Audigy",
	 .id = "Audigy",
@@ -693,11 +701,10 @@ static emu_chip_details_t emu_chip_details[] = {
	 .ca0102_chip = 1,
	 .ca0102_chip = 1,
	 .ac97_chip = 1} ,
	 .ac97_chip = 1} ,
	{.vendor = 0x1102, .device = 0x0004,
	{.vendor = 0x1102, .device = 0x0004,
	 .driver = "Audigy", .name = "Audigy 1 or 2 [Unknown]", 
	 .driver = "Audigy", .name = "Audigy 1 [Unknown]", 
	 .id = "Audigy",
	 .id = "Audigy",
	 .emu10k2_chip = 1,
	 .emu10k2_chip = 1,
	 .ca0102_chip = 1,
	 .ca0102_chip = 1,
	 .spdif_bug = 1,
	 .ac97_chip = 1} ,
	 .ac97_chip = 1} ,
	{.vendor = 0x1102, .device = 0x0002, .subsystem = 0x40011102,
	{.vendor = 0x1102, .device = 0x0002, .subsystem = 0x40011102,
	 .driver = "EMU10K1", .name = "E-mu APS [4001]", 
	 .driver = "EMU10K1", .name = "E-mu APS [4001]", 
@@ -781,8 +788,11 @@ int __devinit snd_emu10k1_create(snd_card_t * card,


	for (c = emu_chip_details; c->vendor; c++) {
	for (c = emu_chip_details; c->vendor; c++) {
		if (c->vendor == pci->vendor && c->device == pci->device) {
		if (c->vendor == pci->vendor && c->device == pci->device) {
			if (c->subsystem == emu->serial) break;
			if (c->subsystem && c->subsystem != emu->serial)
			if (c->subsystem == 0) break;
				continue;
			if (c->revision && c->revision != emu->revision)
				continue;
			break;
		}
		}
	}
	}
	if (c->vendor == 0) {
	if (c->vendor == 0) {