Date: Wed, 13 Aug 2008 14:43:23 +0200 From: "Alexander Leidinger" <Alexander@Leidinger.net> To: "Alexander Motin" <mav@FreeBSD.org>, ariff@FreeBSD.org Cc: freebsd-multimedia@FreeBSD.org Subject: Re: RFC: massive snd_hda driver update to better conform UAA specification Message-ID: <20080813144323.191755ysxy2w38so@webmail.leidinger.net> In-Reply-To: <48A20E02.6070609@FreeBSD.org> References: <48A20E02.6070609@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Quoting "Alexander Motin" <mav@FreeBSD.org> (from Wed, 13 Aug 2008 01:26:10 +0300): > Hi. > > I have made major snd_hda driver rewrite. I will be grateful for > reviews and any positive or negative feedbacks. Have you already asked Ariff for a review? I've CCed him... > Here is my patches: http://people.freebsd.org/~mav/ > > For 8-CURRENT use: > http://people.freebsd.org/~mav/hda.20080812.patch I can not do a technical about this stuff, but I noticed that you use comments to disable code. Please use "#if 0" instead of comments to disable code. I don't cut the rest of the mail in case Ariff hasn't seen it yet. Bye, Alexander. > For 7-STABLE try (I have no place to test it, but it builds): > http://people.freebsd.org/~mav/hda.7.20080812.patch > > The main point of this change was to make driver conforming > Universal Audio Architecture (UAA) specification. UAA gives ability > to avoid most of device-dependent quirks (I have removed most of) > and make driver more friendly to a new hardware, more friendly to > average user by using information written by system integrators and > much more configurable for experienced users. UAA allows driver to > get all configuration information directly from HDA codec and > configure system audio devices according to it. Same time new driver > allows easily override default configuration using device.hints > mechanism. > > Second point of this change was to make driver multichannel. Now > driver supports multiple HDA codecs per controller, multiple > function groups per codec, multiple PCM devices per audio function > group and multiple channels per PCM device (last will be useful if > FreeBSD OSS sometimes will have multichannel support). > > To demonstrate features I can show some operation examples from my > notebook. This is Acer TM6292 with very simple simple Realtek ALC268 > HDA codec. > > 1. Previous driver gave me: > - stereo playback (pcm0) via built in speakers and headphones > without jack sensing; > - recording device (pcm0) from external mic. Built in mic, CD and > line in was dead. > > 2. New driver by default without any quirks gives me: > - stereo playback (pcm0) via built in speakers and headphones with > jack sensing; > - recording device (pcm0) for built in mic (it does working!), line > in and mic in; > - recording device (pcm1) for CD. CD does not working for some > unknown reason, I think it may be just not implemented in hardware. > > 3. By adding to the loader.conf string > hint.hdac.0.cad0.nid20.config="seq=1" > it will be possible (when OSS will have multichannel support) to get > quadro playback via built in speakers and HP out connector. cad0 > here means codec with ID 0. nid20 means pin with ID 20 - HP out, > seq=1 changes pin sequence inside association from 15 to 1 > effectively disabling redirection making HP out independent. > > 4. By adding > hint.hdac.0.cad0.nid20.config="seq=1" > hint.hdac.0.cad0.nid21.config="as=3 seq=1" > it is possible to get two independent playback devices. One (pcm0) > for HP connector and second (pcm1) for built in speakers. Record > will stay as before. Here as=3 changes built in speakers pin > association number from 1 to 3 separating it completely from HP > output. > > 5. By adding > hint.hdac.0.cad0.nid26.config="as=1 seq=0 device=0" > hint.hdac.0.cad0.nid20.config="as=1 seq=15" > hint.hdac.0.cad0.nid21.config="as=3" it is possible to get two > independent playback devices. First (pcm0) for playback via line in > and HP out connectors with jack sensing in HP connector and line in > connector auto mute. And second (pcm1) for playback via built in > speakers. In this codec line in connector is reversible. String > device=0 changes it's description from Line in to Line out forcing > actual direction change. > > Driver allows to build many others usage scenarios. The main > limitation factor is codec functionality. Presented ALC268 is very > simple and restricted one. But I have also successfully tested it on > more powerful AD1988 and there range of possible scenarios is wider > while even default configuration covers all present codec > functionality. > > More information about UAA you can find at: > http://www.microsoft.com/whdc/device/audio/default.mspx > > If you will have any questions/problems boot your system with > verbose logging. Driver prints a lot of usable information there. If > you will send me problem reports add please attach that verbose boot > output and `cat /dev/sndstat` output to your message. > > Thanks. > > -- > Alexander Motin > _______________________________________________ > freebsd-multimedia@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-multimedia > To unsubscribe, send any mail to "freebsd-multimedia-unsubscribe@freebsd.org" > > -- An Englishman never enjoys himself, except for a noble purpose. -- A. P. Herbert http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7 http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080813144323.191755ysxy2w38so>
