Re: again config problem with new snd_hda driver

From: Alexander Motin <mav_at_FreeBSD.org>
Date: Fri, 24 Oct 2008 17:18:41 +0300
Alexander Motin wrote:
> 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.

I am sorry, I have made mistake there. Could you test new one.

-- 
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[3] = 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 - 12:18:43 UTC

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