Re: again config problem with new snd_hda driver

From: Alexander Motin <mav_at_FreeBSD.org>
Date: Fri, 24 Oct 2008 16:11:42 +0300
Tobias Kirschstein wrote:
>>> from dmesg:
>>> -----------
>>> hdac0: <Intel 82801G High Definition Audio Controller> mem
>>> 0xee240000-0xee243fff irq 17 at device 27.0 on pci0 hdac0: HDA
>>> Driver Revision: 20081013_0113 hdac0: [ITHREAD]
>>> hdac0: HDA Codec #0: Analog Devices AD1981HD
>>> hdac0: HDA Codec #1: Conexant (Unknown)
>>> pcm0: <HDA Analog Devices AD1981HD PCM #0> at cad 0 nid 1 on hdac0
>> To understand current driver behavior I need to see verbose kernel
>> boot messages. Read them yourself and send them to me.
> 
> rebooted now and here are the verbose boot messages for you :)

Try please attached patch. It disables several unsupported signal paths
inside the codec to help widget parser to manage it. There is actually
two options in a patch:
 1) To disable playback mixer so you will not hear what you are
recording. But this situation is predictable.
 2) To use that mixer for playback. You may get system beeper working,
but it is hard to predict what will happen to recording.

Test please and send me verbose logs from both cases if you can.

-- 
Alexander Motin

diff -ruNp hda.HEAD/hdac.c hda/hdac.c
--- hda.HEAD/hdac.c	2008-10-23 21:30:06.000000000 +0300
+++ hda/hdac.c	2008-10-24 15:55:36.000000000 +0300
_at__at_ -4510,6 +4510,36 _at__at_ hdac_vendor_patch_parse(struct hdac_devi
 				    ~HDA_QUIRK_EAPDINV;
 		}
 		break;
+	case HDA_CODEC_AD1981HD:
+		/* Disable recording from mono mix. */
+		w = hdac_widget_get(devinfo, 21);
+		if (w != NULL)
+			w->connsenable[15] = 0;
+		/* Disable rear front mic mixer. */
+		w = hdac_widget_get(devinfo, 31);
+		if (w != NULL)
+			w->enable = 0;
+#if 1
+		/* Disable playback mixer, use bypass. */
+		w = hdac_widget_get(devinfo, 14);
+		if (w != NULL)
+			w->enable = 0;
+#else
+		/* Disable bypass, use playback mixer. */
+		w = hdac_widget_get(devinfo, 5);
+		if (w != NULL)
+			w->connsenable[0] = 0;
+		w = hdac_widget_get(devinfo, 6);
+		if (w != NULL)
+			w->connsenable[0] = 0;
+		w = hdac_widget_get(devinfo, 9);
+		if (w != NULL)
+			w->connsenable[0] = 0;
+		w = hdac_widget_get(devinfo, 24);
+		if (w != NULL)
+			w->connsenable[0] = 0;
+#endif
+		break;
 	}
 }
 
Received on Fri Oct 24 2008 - 11:11:44 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:36 UTC