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