summaryrefslogtreecommitdiffstats
path: root/sys/dev/sound
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2008-10-24 19:29:07 +0000
committermav <mav@FreeBSD.org>2008-10-24 19:29:07 +0000
commit882a5fcfeb067cec6965967024693d179113bb7d (patch)
tree0c0f6371ec9cf4ad7d135ae9d08f9bbfeec2cf9b /sys/dev/sound
parent7ab8bc1fe7f40bb80bec68593a3260fec249447d (diff)
downloadFreeBSD-src-882a5fcfeb067cec6965967024693d179113bb7d.zip
FreeBSD-src-882a5fcfeb067cec6965967024693d179113bb7d.tar.gz
Add some special handeling for AD1981HD codec. It has very unusual design
with several points unappropriate for the present parser. This patch disables input-to-output analog monitoring but instead fixes recording. Tested by Tobias Grosser on ThinkPad T61p.
Diffstat (limited to 'sys/dev/sound')
-rw-r--r--sys/dev/sound/pci/hda/hdac.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/sys/dev/sound/pci/hda/hdac.c b/sys/dev/sound/pci/hda/hdac.c
index 5f2b281..caf4922 100644
--- a/sys/dev/sound/pci/hda/hdac.c
+++ b/sys/dev/sound/pci/hda/hdac.c
@@ -4510,6 +4510,24 @@ hdac_vendor_patch_parse(struct hdac_devinfo *devinfo)
~HDA_QUIRK_EAPDINV;
}
break;
+ case HDA_CODEC_AD1981HD:
+ /*
+ * This codec has very unusual design with several
+ * points unappropriate for the present parser.
+ */
+ /* Disable recording from mono playback mix. */
+ w = hdac_widget_get(devinfo, 21);
+ if (w != NULL)
+ w->connsenable[3] = 0;
+ /* Disable rear to front mic mixer, use separately. */
+ w = hdac_widget_get(devinfo, 31);
+ if (w != NULL)
+ w->enable = 0;
+ /* Disable playback mixer, use direct bypass. */
+ w = hdac_widget_get(devinfo, 14);
+ if (w != NULL)
+ w->enable = 0;
+ break;
}
}
OpenPOWER on IntegriCloud