Commit f12aa40c authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela

[ALSA] emu10k1 - Fix loading of SBLive Game board

EMU10K1/EMU10K2 driver
Fixed the error at loading SBLive Game board (and possible other models).
The PCI SSIDs of this board conflicts with SB Live 5.1 Platinum, which has
no AC97 chip.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent c66186e1
...@@ -1059,7 +1059,7 @@ typedef struct { ...@@ -1059,7 +1059,7 @@ typedef struct {
unsigned char spk71; /* Has 7.1 speakers */ unsigned char spk71; /* Has 7.1 speakers */
unsigned char sblive51; /* SBLive! 5.1 - extout 0x11 -> center, 0x12 -> lfe */ unsigned char sblive51; /* SBLive! 5.1 - extout 0x11 -> center, 0x12 -> lfe */
unsigned char spdif_bug; /* Has Spdif phasing bug */ unsigned char spdif_bug; /* Has Spdif phasing bug */
unsigned char ac97_chip; /* Has an AC97 chip */ unsigned char ac97_chip; /* Has an AC97 chip: 1 = mandatory, 2 = optional */
unsigned char ecard; /* APS EEPROM */ unsigned char ecard; /* APS EEPROM */
const char *driver; const char *driver;
const char *name; const char *name;
......
...@@ -756,9 +756,12 @@ static emu_chip_details_t emu_chip_details[] = { ...@@ -756,9 +756,12 @@ static emu_chip_details_t emu_chip_details[] = {
.sblive51 = 1} , .sblive51 = 1} ,
/* Tested by alsa bugtrack user "hus" bug #1297 12th Aug 2005 */ /* Tested by alsa bugtrack user "hus" bug #1297 12th Aug 2005 */
{.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80611102, {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80611102,
.driver = "EMU10K1", .name = "SBLive! Platinum 5.1 [SB0060]", .driver = "EMU10K1", .name = "SBLive 5.1 [SB0060]",
.id = "Live", .id = "Live",
.emu10k1_chip = 1, .emu10k1_chip = 1,
.ac97_chip = 2, /* ac97 is optional; both SBLive 5.1 and platinum
* share the same IDs!
*/
.sblive51 = 1} , .sblive51 = 1} ,
{.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80511102, {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80511102,
.driver = "EMU10K1", .name = "SBLive! Value [CT4850]", .driver = "EMU10K1", .name = "SBLive! Value [CT4850]",
......
...@@ -802,8 +802,13 @@ int __devinit snd_emu10k1_mixer(emu10k1_t *emu, ...@@ -802,8 +802,13 @@ int __devinit snd_emu10k1_mixer(emu10k1_t *emu,
.read = snd_emu10k1_ac97_read, .read = snd_emu10k1_ac97_read,
}; };
if ((err = snd_ac97_bus(emu->card, 0, &ops, NULL, &pbus)) < 0) if ((err = snd_ac97_bus(emu->card, 0, &ops, NULL, &pbus)) < 0) {
if (emu->card_capabilities->ac97_chip == 1)
return err; return err;
snd_printd(KERN_INFO "emu10k1: AC97 is optional on this board\n");
snd_printd(KERN_INFO" Proceeding without ac97 mixers...\n");
goto no_ac97; /* FIXME: get rid of ugly gotos.. */
}
pbus->no_vra = 1; /* we don't need VRA */ pbus->no_vra = 1; /* we don't need VRA */
memset(&ac97, 0, sizeof(ac97)); memset(&ac97, 0, sizeof(ac97));
...@@ -836,6 +841,7 @@ int __devinit snd_emu10k1_mixer(emu10k1_t *emu, ...@@ -836,6 +841,7 @@ int __devinit snd_emu10k1_mixer(emu10k1_t *emu,
for (; *c; c++) for (; *c; c++)
remove_ctl(card, *c); remove_ctl(card, *c);
} else { } else {
no_ac97:
if (emu->card_capabilities->ecard) if (emu->card_capabilities->ecard)
strcpy(emu->card->mixername, "EMU APS"); strcpy(emu->card->mixername, "EMU APS");
else if (emu->audigy) else if (emu->audigy)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment