Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 6 Jun 2006 21:59:18 +0100
From:      Andrea Bittau <a.bittau@cs.ucl.ac.uk>
To:        Eric Anderson <anderson@centtech.com>
Cc:        freebsd-mobile@freebsd.org
Subject:   Re: HDA sound driver mod for thinkpad x60s
Message-ID:  <20060606205918.GA6765@shorty.sorbonet.org>
In-Reply-To: <4485E199.7000604@centtech.com>
References:  <20060606124030.GA32057@shorty.sorbonet.org> <4485CEF8.10201@centtech.com> <20060606192229.GA4465@shorty.sorbonet.org> <4485DA6D.9020304@centtech.com> <4485E199.7000604@centtech.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Jun 06, 2006 at 03:12:09PM -0500, Eric Anderson wrote:
> How can I figure out the node id?

> Jun  6 14:43:51 neutrino kernel: pcm0: node 2 type 0 cap d0401
> Jun  6 14:43:51 neutrino kernel: pcm0: node 5 type 0 cap 40211

> Jun  6 14:43:51 neutrino kernel: pcm0: node 8 type 4 cap 430681
> Jun  6 14:43:51 neutrino kernel: pcm0: node 9 type 4 cap 400301
> Jun  6 14:43:51 neutrino kernel: pcm0: node 13 type 4 cap 400181
> Jun  6 14:43:51 neutrino kernel: pcm0: node 14 type 4 cap 400181
> Jun  6 14:43:51 neutrino kernel: pcm0: node 15 type 4 cap 400181
> Jun  6 14:43:51 neutrino kernel: pcm0: node 16 type 4 cap 400181
> Jun  6 14:43:51 neutrino kernel: pcm0: node 17 type 4 cap 400104
> Jun  6 14:43:51 neutrino kernel: pcm0: node 18 type 4 cap 400001

OK so type 0 is audio output, so node id 2 and 5 are audio output.  Therefore,
in the driver, the:
        sorbo_conf_output(sc, 0, 3);
should be replaced with 0, 2 or 0, 5.

The "pins", are type 4 and you need to amplify them.  So you need to modify:
sorbo_set_amp(sc, 0, 5, 40);
with:
sorbo_set_amp(sc, 0, 8, 40); // set node id 8 gain 40
sorbo_set_amp(sc, 0, 9, 40); // set node id 9 gain 40
...
sorbo_set_amp(sc, 0, 18, 40); // node id 18.

There is one aditional piece of debug info which might be handy.  You need to
make sure that the "pins" are connected to the audio output device.  Make enum()
get called as described in the previous mails, then in sorbo_print_widget(), get
rid of 0 && in the type == HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_PIN_COMPLEX.  That
is, sorbo_conf_pin() should be called for each pin.  This will cause an
additional printf which will tell you which audio output each pin is connected
to [list %x cur %d].  Ideally you want pins to be connected either to 2 or 5 in
your case.

Also, make sure the hardware volume is up, if there are any buttons on the
laptop. =D



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