From: Matthew Garrett 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 Cc: Takashi Iwai Signed-off-by: Andrew Morton --- 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; _