Re: Thinkpad hda regression in 3.3

From: Takashi Iwai
Date: Fri Apr 13 2012 - 09:07:07 EST


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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/