[ALSA] emu10k1 - Fix handling of ac97_chip=2

EMU10K1/EMU10K2 driver
Fixed the handling of ac97_chip=2 capability type.
The error occurs in snd_ac97_mixer(), not in snd_ac97_bus().
Also, release the unnecessary ac97_bus object in the error path.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by Takashi Iwai and committed by Jaroslav Kysela b1508693 315e3bd7

+10 -9
+10 -9
sound/pci/emu10k1/emumixer.c
··· 802 .read = snd_emu10k1_ac97_read, 803 }; 804 805 - if ((err = snd_ac97_bus(emu->card, 0, &ops, NULL, &pbus)) < 0) { 806 - if (emu->card_capabilities->ac97_chip == 1) 807 - return err; 808 - snd_printd(KERN_INFO "emu10k1: AC97 is optional on this board\n"); 809 - snd_printd(KERN_INFO" Proceeding without ac97 mixers...\n"); 810 - goto no_ac97; /* FIXME: get rid of ugly gotos.. */ 811 - } 812 pbus->no_vra = 1; /* we don't need VRA */ 813 814 memset(&ac97, 0, sizeof(ac97)); 815 ac97.private_data = emu; 816 ac97.private_free = snd_emu10k1_mixer_free_ac97; 817 ac97.scaps = AC97_SCAP_NO_SPDIF; 818 - if ((err = snd_ac97_mixer(pbus, &ac97, &emu->ac97)) < 0) 819 - return err; 820 if (emu->audigy) { 821 /* set master volume to 0 dB */ 822 snd_ac97_write(emu->ac97, AC97_MASTER, 0x0000);
··· 802 .read = snd_emu10k1_ac97_read, 803 }; 804 805 + if ((err = snd_ac97_bus(emu->card, 0, &ops, NULL, &pbus)) < 0) 806 + return err; 807 pbus->no_vra = 1; /* we don't need VRA */ 808 809 memset(&ac97, 0, sizeof(ac97)); 810 ac97.private_data = emu; 811 ac97.private_free = snd_emu10k1_mixer_free_ac97; 812 ac97.scaps = AC97_SCAP_NO_SPDIF; 813 + if ((err = snd_ac97_mixer(pbus, &ac97, &emu->ac97)) < 0) { 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 + } 821 if (emu->audigy) { 822 /* set master volume to 0 dB */ 823 snd_ac97_write(emu->ac97, AC97_MASTER, 0x0000);