Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Dec 2008 22:47:11 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r186503 - head/sys/dev/sound/pci/hda
Message-ID:  <200812262247.mBQMlBkv052516@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Fri Dec 26 22:47:11 2008
New Revision: 186503
URL: http://svn.freebsd.org/changeset/base/186503

Log:
  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.

Modified:
  head/sys/dev/sound/pci/hda/hdac.c

Modified: head/sys/dev/sound/pci/hda/hdac.c
==============================================================================
--- head/sys/dev/sound/pci/hda/hdac.c	Fri Dec 26 22:31:45 2008	(r186502)
+++ head/sys/dev/sound/pci/hda/hdac.c	Fri Dec 26 22:47:11 2008	(r186503)
@@ -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_devi
 		 */
 		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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200812262247.mBQMlBkv052516>