
From: Matthew Garrett <mjg59@srcf.ucam.org>

snd_ac97_tune_hardware currently exits after applying a single ac97 quirk. 
There are bits of hardware (current HPs, for instance) that probably want
two - MUTE_LED and HP_ONLY.  The following patch only exits if a quirk
fails to apply.

Cc: Jaroslav Kysela <perex@suse.cz>
Cc: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 sound/pci/ac97/ac97_codec.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff -puN sound/pci/ac97/ac97_codec.c~allow-multiple-ac97-quirks-for-one-piece-of-hardware sound/pci/ac97/ac97_codec.c
--- devel/sound/pci/ac97/ac97_codec.c~allow-multiple-ac97-quirks-for-one-piece-of-hardware	2005-09-14 01:49:34.000000000 -0700
+++ devel-akpm/sound/pci/ac97/ac97_codec.c	2005-09-14 01:50:08.000000000 -0700
@@ -2600,11 +2600,16 @@ int snd_ac97_tune_hardware(ac97_t *ac97,
 		    quirk->subdevice == (quirk->mask & ac97->subsystem_device)) {
 			if (quirk->codec_id && quirk->codec_id != ac97->id)
 				continue;
-			snd_printdd("ac97 quirk for %s (%04x:%04x)\n", quirk->name, ac97->subsystem_vendor, ac97->subsystem_device);
+			snd_printdd("ac97 quirk for %s (%04x:%04x)\n",
+				quirk->name, ac97->subsystem_vendor,
+				ac97->subsystem_device);
 			result = apply_quirk(ac97, quirk->type);
-			if (result < 0)
-				snd_printk(KERN_ERR "applying quirk type %d for %s failed (%d)\n", quirk->type, quirk->name, result);
-			return result;
+			if (result < 0) {
+				snd_printk(KERN_ERR "applying quirk type %d "
+					"for %s failed (%d)\n",
+					quirk->type, quirk->name, result);
+				return result;
+			}
 		}
 	}
 	return 0;
_
