summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2008-12-26 22:47:11 +0000
committermav <mav@FreeBSD.org>2008-12-26 22:47:11 +0000
commit6c05275d0d10be09dace3e204b580dce3dd2f594 (patch)
tree3656db65e756bd77343cac3b3c27dbcff3b3911d /sys
parenta371cf7a492d25bdb9515f5e43f8f529da0db039 (diff)
downloadFreeBSD-src-6c05275d0d10be09dace3e204b580dce3dd2f594.zip
FreeBSD-src-6c05275d0d10be09dace3e204b580dce3dd2f594.tar.gz
Add some special handling for AD1986A codec:
Disable some unneeded pathes in overcomplicated input mixer to help parser to handle the rest better. This gives mic input boost control in some configurations and just more predictable operation in others.
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/sound/pci/hda/hdac.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/sys/dev/sound/pci/hda/hdac.c b/sys/dev/sound/pci/hda/hdac.c
index 720429d..d1b5859 100644
--- a/sys/dev/sound/pci/hda/hdac.c
+++ b/sys/dev/sound/pci/hda/hdac.c
@@ -83,7 +83,7 @@
#include "mixer_if.h"
-#define HDA_DRV_TEST_REV "20081223_0121"
+#define HDA_DRV_TEST_REV "20081226_0122"
SND_DECLARE_FILE("$FreeBSD$");
@@ -4548,6 +4548,32 @@ hdac_vendor_patch_parse(struct hdac_devinfo *devinfo)
*/
break;
case HDA_CODEC_AD1986A:
+ /*
+ * This codec has overcomplicated input mixing.
+ * Make some cleaning there.
+ */
+ /* Disable input mono mixer. Not needed and not supported. */
+ w = hdac_widget_get(devinfo, 43);
+ if (w != NULL)
+ w->enable = 0;
+ /* Disable any with any input mixing mesh. Use separately. */
+ w = hdac_widget_get(devinfo, 39);
+ if (w != NULL)
+ w->enable = 0;
+ w = hdac_widget_get(devinfo, 40);
+ if (w != NULL)
+ w->enable = 0;
+ w = hdac_widget_get(devinfo, 41);
+ if (w != NULL)
+ w->enable = 0;
+ w = hdac_widget_get(devinfo, 42);
+ if (w != NULL)
+ w->enable = 0;
+ /* Disable duplicate mixer node connector. */
+ w = hdac_widget_get(devinfo, 15);
+ if (w != NULL)
+ w->connsenable[3] = 0;
+
if (subvendor == ASUS_A8X_SUBVENDOR) {
/*
* This is just plain ridiculous.. There
OpenPOWER on IntegriCloud