Re: HDA sound driver mod for thinkpad x60s

Andrea Bittau <[email protected]>
Newsgroups gmane.os.freebsd.devel.mobile
Message-ID <[email protected]>
On Tue, Jun 06, 2006 at 01:52:40PM -0500, Eric Anderson wrote:
> I can't seem to play any audio tho..  I realize this isn't an IBM, but 
> was hoping it would work.. :)

What does that mean?  If you:
cat /dev/urandom > /dev/dsp
does it complain?  dmesg?  Also, if you ctrl C, does it stop after a bit, with
no complatins?

Anyway, assuming my code is "good enough" there might be two reasons why it's
not working:

1) I lamely hardcoded the Output device node identifier.
2) I hardcoded the Pin node identifier for the volume control.


To solve #1 try this in my code:
in hdac_attach2() get rid of the if(0) before sorbo_enum().  That is,
sorbo_enum() needs to be called.  Then, in sorbo_print_widget() get rid of the 0
&& in the type == HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_AUDIO_OUTPUT.  That is,
sorbo_conf_output() needs to be called if the type is audio output.  [I'm not
sure what happens if all output devices are configured though...].  Basically,
this will cause all output devices to accept the music stream.  Try it like
that.

Ideally you want only one output device to be configured, but I guess if you
look at the dmesg output u can figure out which node identifiers are output
devices and try them all, one at a time, until you find the correct one.  You
might notice that in IBM's case it's a 3, so I call sorbo_conf_output(sc, 0, 3);
Actually, you probably wanna get rid of that call too if your output device is
not node id 3.


To solve #2 do this:
Enable sorbo_enum() like above, and then in sorbo_print_widget() get rid of the
if (0) before sorbo_set_amp(sc, codecid, nodeid, 40);.  Basically, this will
cause all nodes to be amplified.  Try it like that.  Once again, ideally you
only want the correct node [TYPE_PIN] to be amplified.


As a final test, you might want to put a printf in sorbo_in_intr() to see if you
are getting any interrupts.


good luck, and remember to sync before kldload =P
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-mobile
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.