Skip to content

Commit

Permalink
[ALSA] Check revision for the proper detection of audigy 2
Browse files Browse the repository at this point in the history
EMU10K1/EMU10K2 driver
Check ther revision to detect non-listed audigy 2 boards.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Takashi Iwai authored and Jaroslav Kysela committed May 29, 2005
1 parent 5af4c83 commit bdaed50
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
1 change: 1 addition & 0 deletions include/sound/emu10k1.h
Original file line number Diff line number Diff line change
Expand Up @@ -1040,6 +1040,7 @@ typedef struct {
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. */
Expand Down
18 changes: 14 additions & 4 deletions sound/pci/emu10k1/emu10k1_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -679,6 +679,14 @@ static emu_chip_details_t emu_chip_details[] = {
.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",
Expand All @@ -693,11 +701,10 @@ static emu_chip_details_t emu_chip_details[] = {
.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]",
Expand Down Expand Up @@ -781,8 +788,11 @@ int __devinit snd_emu10k1_create(snd_card_t * card,

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

0 comments on commit bdaed50

Please sign in to comment.