diff options
Diffstat (limited to 'sound/pci/emu10k1/emumixer.c')
-rw-r--r-- | sound/pci/emu10k1/emumixer.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sound/pci/emu10k1/emumixer.c b/sound/pci/emu10k1/emumixer.c index d71a72e84bcc..7cc831ccd0cb 100644 --- a/sound/pci/emu10k1/emumixer.c +++ b/sound/pci/emu10k1/emumixer.c | |||
@@ -810,8 +810,14 @@ int __devinit snd_emu10k1_mixer(emu10k1_t *emu, | |||
810 | ac97.private_data = emu; | 810 | ac97.private_data = emu; |
811 | ac97.private_free = snd_emu10k1_mixer_free_ac97; | 811 | ac97.private_free = snd_emu10k1_mixer_free_ac97; |
812 | ac97.scaps = AC97_SCAP_NO_SPDIF; | 812 | ac97.scaps = AC97_SCAP_NO_SPDIF; |
813 | if ((err = snd_ac97_mixer(pbus, &ac97, &emu->ac97)) < 0) | 813 | if ((err = snd_ac97_mixer(pbus, &ac97, &emu->ac97)) < 0) { |
814 | return err; | 814 | if (emu->card_capabilities->ac97_chip == 1) |
815 | return err; | ||
816 | snd_printd(KERN_INFO "emu10k1: AC97 is optional on this board\n"); | ||
817 | snd_printd(KERN_INFO" Proceeding without ac97 mixers...\n"); | ||
818 | snd_device_free(emu->card, pbus); | ||
819 | goto no_ac97; /* FIXME: get rid of ugly gotos.. */ | ||
820 | } | ||
815 | if (emu->audigy) { | 821 | if (emu->audigy) { |
816 | /* set master volume to 0 dB */ | 822 | /* set master volume to 0 dB */ |
817 | snd_ac97_write(emu->ac97, AC97_MASTER, 0x0000); | 823 | snd_ac97_write(emu->ac97, AC97_MASTER, 0x0000); |
@@ -836,6 +842,7 @@ int __devinit snd_emu10k1_mixer(emu10k1_t *emu, | |||
836 | for (; *c; c++) | 842 | for (; *c; c++) |
837 | remove_ctl(card, *c); | 843 | remove_ctl(card, *c); |
838 | } else { | 844 | } else { |
845 | no_ac97: | ||
839 | if (emu->card_capabilities->ecard) | 846 | if (emu->card_capabilities->ecard) |
840 | strcpy(emu->card->mixername, "EMU APS"); | 847 | strcpy(emu->card->mixername, "EMU APS"); |
841 | else if (emu->audigy) | 848 | else if (emu->audigy) |