aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2005-10-04 07:49:32 -0400
committerJaroslav Kysela <perex@suse.cz>2005-10-07 08:46:34 -0400
commitb150869369adafb7cc0cf65ea500f9f3c4bbf857 (patch)
tree84ec5cce59978d59cacc5860008a7a7997551f69
parent315e3bd717068624ce888f3d045a168acefc6ce8 (diff)
[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>
-rw-r--r--sound/pci/emu10k1/emumixer.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/sound/pci/emu10k1/emumixer.c b/sound/pci/emu10k1/emumixer.c
index 6994f90bb83a..7cc831ccd0cb 100644
--- a/sound/pci/emu10k1/emumixer.c
+++ b/sound/pci/emu10k1/emumixer.c
@@ -802,21 +802,22 @@ int __devinit snd_emu10k1_mixer(emu10k1_t *emu,
802 .read = snd_emu10k1_ac97_read, 802 .read = snd_emu10k1_ac97_read,
803 }; 803 };
804 804
805 if ((err = snd_ac97_bus(emu->card, 0, &ops, NULL, &pbus)) < 0) { 805 if ((err = snd_ac97_bus(emu->card, 0, &ops, NULL, &pbus)) < 0)
806 if (emu->card_capabilities->ac97_chip == 1) 806 return err;
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 */ 807 pbus->no_vra = 1; /* we don't need VRA */
813 808
814 memset(&ac97, 0, sizeof(ac97)); 809 memset(&ac97, 0, sizeof(ac97));
815 ac97.private_data = emu; 810 ac97.private_data = emu;
816 ac97.private_free = snd_emu10k1_mixer_free_ac97; 811 ac97.private_free = snd_emu10k1_mixer_free_ac97;
817 ac97.scaps = AC97_SCAP_NO_SPDIF; 812 ac97.scaps = AC97_SCAP_NO_SPDIF;
818 if ((err = snd_ac97_mixer(pbus, &ac97, &emu->ac97)) < 0) 813 if ((err = snd_ac97_mixer(pbus, &ac97, &emu->ac97)) < 0) {
819 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 }
820 if (emu->audigy) { 821 if (emu->audigy) {
821 /* set master volume to 0 dB */ 822 /* set master volume to 0 dB */
822 snd_ac97_write(emu->ac97, AC97_MASTER, 0x0000); 823 snd_ac97_write(emu->ac97, AC97_MASTER, 0x0000);