At Fri, 13 Apr 2012 08:43:06 -0400, Josh Boyer wrote:
Hi Takashi and Jaroslav,
We've had a number of bugs reported about sound not working correctly on various models of Thinkpad machines in the 3.3 kernel. I've listed them below.
I looked through the commits and found:
commit 29c5fbbcfefba5225a6783683c46c39e10877703: ALSA: HDA: Use model=auto for Thinkpad T510 The user reports that model=auto works fine for him. Using model=auto bring in new features such as jack detection notification to userspace.
I did a local build here with that comment reverted and so far most of the people reported their sound to be working again. The trivial revert patch is below in case you want it.
Could you get alsa-info.sh output on the non-working T510? If it's really about the built-in speaker or headphone jack, I doubt it's rahter the muted output in mixer. I see only "me too" in the bug report, which doesn't help much to diagnose the problem.
I've got a few positive feedbacks of T410 and T510, so basically the driver should work. But I know the problem of docking-station (see below).
It seems there are multiple models that have PCI ID 17aa:215e and using model=auto does not work for them all. It particularly messes with machines using a docking station for some reason.
Aside from just reverting the above commit, do you have other thoughts on how to fix this?
The problem regarding the docking station is basically a BIOS issue. ThinkPad BIOS doesn't expose the pins for docking stations at all. We have already a workaround for X200, and similar others would be needed for T410, T420, etc.
For testing, you don't need even patch the driver. When the driver is built with CONFIG_SND_HDA_PATCH_LOADER=y, create a file containing the below as /lib/firmware/alsa-tp-dock:
================================================================ [codec] 0x14f15069 0x17aa21a4 0
[pincfg] 0x1a 0x21a11000 0x1c 0x23014250 ================================================================
then pass the module option patch="alsa-tp-dock" to snd-hda-intel, e.g. create a file containing below in /etc/modprobe.d/*
options snd-hda-intel patch="alsa-tp-dock"
This will override the pin-default values of 0x1a and 0x1c, which corresponds to the docking-station mic and docking-station output. This will set dock-out as the line-out so that the built-in headphone is preferred over it.
Note that after applying this, the new mixer elements will appear, so you'd need to adjust the values manually once.
Similarly, for T420, create a file with the contents below instead:
================================================================ [codec] 0x14f1506e 0x17aa21d2 0
[pincfg] 0x19 0x0421104f 0x1a 0x21a19050 0x1c 0x2121401f ================================================================
The rest procedure is same.
If the above seem work (again, make sure that you adjust the mixer mutes and levels), I'll make kernel patches to add these fixups statically in the driver so that it works without extra patching.
thanks,
Takashi