Update of /cvsroot/alsa/alsa-kernel/pci/ac97 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4225/pci/ac97
Modified Files: ac97_codec.c Log Message: Add AC97 quick manual override module parameter. Index: ac97_codec.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/ac97/ac97_codec.c,v retrieving revision 1.118 retrieving revision 1.119 diff -u -r1.118 -r1.119 --- ac97_codec.c 12 Jan 2004 14:38:06 -0000 1.118 +++ ac97_codec.c 5 Feb 2004 10:37:10 -0000 1.119 @@ -2140,10 +2140,28 @@ return 0; } +static int apply_quirk(ac97_t *ac97, int quirk) +{ + switch (quirk) { + case AC97_TUNE_NONE: + return 0; + case AC97_TUNE_HP_ONLY: + return swap_headphone(ac97, 1); + case AC97_TUNE_SWAP_HP: + return swap_headphone(ac97, 0); + case AC97_TUNE_SWAP_SURROUND: + return swap_surround(ac97); + case AC97_TUNE_AD_SHARING: + return tune_ad_sharing(ac97); + } + return -EINVAL; +} + /** * snd_ac97_tune_hardware - tune up the hardware * @ac97: the ac97 instance * @quirk: quirk list + * @override: explicit quirk value (overrides the list if not AC97_TUNE_DEFAULT) * * Do some workaround for each pci device, such as renaming of the * headphone (true line-out) control as "Master". @@ -2152,28 +2170,29 @@ * Returns zero if successful, or a negative error code on failure. */ -int snd_ac97_tune_hardware(ac97_t *ac97, struct ac97_quirk *quirk) +int snd_ac97_tune_hardware(ac97_t *ac97, struct ac97_quirk *quirk, int override) { + int result; + snd_assert(quirk, return -EINVAL); + if (override != AC97_TUNE_DEFAULT) { + result = apply_quirk(ac97, override); + if (result < 0) + snd_printk(KERN_ERR "applying quirk type %d failed (%d)\n", override, result); + return result; + } + for (; quirk->vendor; quirk++) { if (quirk->vendor != ac97->subsystem_vendor) continue; if ((! quirk->mask && quirk->device == ac97->subsystem_device) || quirk->device == (quirk->mask & ac97->subsystem_device)) { snd_printdd("ac97 quirk for %s (%04x:%04x)\n", quirk->name, ac97->subsystem_vendor, ac97->subsystem_device); - switch (quirk->type) { - case AC97_TUNE_HP_ONLY: - return swap_headphone(ac97, 1); - case AC97_TUNE_SWAP_HP: - return swap_headphone(ac97, 0); - case AC97_TUNE_SWAP_SURROUND: - return swap_surround(ac97); - case AC97_TUNE_AD_SHARING: - return tune_ad_sharing(ac97); - } - snd_printk(KERN_ERR "invalid quirk type %d for %s\n", quirk->type, quirk->name); - return -EINVAL; + 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; } } return 0; ------------------------------------------------------- The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. http://www.eclipsecon.org/osdn _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog