[alsa-devel] Conexant 5051 lenovo-x200 fixes

Ulo Mets umets at osa.pri.ee
Wed Aug 24 04:45:43 CEST 2011

On 08/23/2011 04:10 PM, Takashi Iwai wrote:
> At Tue, 23 Aug 2011 14:32:21 +0300,
> Ulo Mets wrote:
>> On 8/22/2011 3:00 PM, Takashi Iwai wrote:
>>> At Sat, 20 Aug 2011 18:14:20 +0300,
>>> Ülo Mets wrote:
>>>> On 08/19/2011 08:43 AM, Takashi Iwai wrote:
>>>>> At Fri, 19 Aug 2011 03:00:58 +0300,
>>>>> Ulo Mets wrote:
>>>>>> On 08/18/2011 01:08 PM, Takashi Iwai wrote:
>>>>>>> At Thu, 18 Aug 2011 03:45:33 +0300,
>>>>>>> Ulo Mets wrote:
>>>>>>>> Hi,
>>>>>>>> I am not a kernel developer, but occasionally dig into it if something gets in my way.
>>>>>>>> On Lenovo X200 Tablet none of the mixers showed Mic Boost adjustments, but HDA-Analyzer found them
>>>>>>>> and adjusted properly. So I inserted the corresponding controls, and it worked.
>>>>>>>> Then, during testing I found that the labels of External and Docking Mic are swapped,
>>>>>>>> so I exchanged these too. Since I could not test it on other hardware, I put it all on lenovo-x200 branch.
>>>>>>>> The patch applies to 3.1-rc2, I hope it is sufficiently recent.
>>>>>>>> The Mic Switches don't have any effect on my unit (X200T without modem)
>>>>>>> Could you try model=auto instead of patching?
>>>>>>> The recent auto-parser should work better.
>>>>>> Model=auto seems to give a very generic configuration, which indeed does
>>>>>> include working
>>>>>> Mic boost for Internal Mic. (Ext?) Mic Boost and gain are also present,
>>>>>> but jack sensing does not work,
>>>>>> so these cannot be tested.
>>>>> The automatic mic-switch by jack-sensing works without model=auto,
>>>>> right?  Then we need to fix it.  Could you give alsa-info.sh output?
>>>> Right. The alsa-info.sh output is attached.
>>> Thanks.
>>>>>> It would be nice to get the mute switches to work as well.
>>>>> Which mute switch do you mean exactly?
>>>> I see the "Mic Switch" controls in the input nodes 0x14 and 0x15, and some Mute controls
>>>> with hda-analyzer. But it may well be just wishful thinking. I wonder if anybody has seen the
>>>> datasheet of CX20561?
>>> Google is your friend :)
>> Is that so? I'll give you $100 for a set of keywords that leads to the datasheet.
> Then it has been removed.  Ask Conexant if you still need it.
>> BTW, the chip revision in question is -15Z
> It should be compatible no matter which revision is.
>>> But you can figure out almost all things in the codec proc file.
>> Yes, the Pin Defaults are correct in the proc file, and the control names in 0x14 and 0x15 contradict these.
>> That's why it was so easy to fix.
>>> What you should test is to check which I/O the pins 0x16, 0x17, 0x18
>>> and 0x19 correspond.  I suppose 0x16 = HP, 0x17 = mic-jack, 0x18 =
>>> dock-mic, 0x19 = dock-HP.
>> Almost. 0x16 = HP, 0x17 = dock-mic, 0x18 = ext-mic, 0x19 = dock-HP
> OK.
>>> An easy way would be to test the jack-detection via hda-verb.
>>> 	# hda-verb /dev/snd/hwC0D0 0x16 GET_PIN_SENSE 0
>>> When any jack corresponds to the pin 0x16, it'll report 0x80000000
>>> upon plugged.
>> Nice tool. But ver. 0.3 reports 0xffffffff when plugged and 0x7fffffff when unplugged.
> It doesn't matter.  The only meaningful bit is the bit 31.
> For making auto-parser working, apply the patch below.
> It fixes the multi-headphone assignment case.
> Then, put lines below to /lib/firmware/x200t-pincfg file.
> ----------------------------------------------------------------
> 0x16 0x042140ff
> 0x17 0x23a11040
> 0x18 0x04a190f0
> 0x19 0x2121103f
> 0x1a 0x901701f0
> 0x1d 0x90a601f0
> ----------------------------------------------------------------
> After creating the file, pass "patch=x200t-pincfg model=auto" module
> options to snd-hda-intel driver.  Now the driver will be set up using
> the auto-parser with the given pin-configuration table.
> Let me know if this works.  Once after confirming it's working, we can
> add a static configuration in the driver itself.
I only replaced the snd-hda-codec-conexant module, I hope this is enough.
Loading of x200t-pincfg and BIOS autoconfig was reported in syslog.

There is only one difference from the stock module with model=auto:
in the new version the dock headphone is correctly adjusted with headphone volume,
while in stock version it is adjusted by speaker volume.

The right side headphone is adjusted with headphone control in both cases, and also the
speaker is muted properly.

The microphone autosensing does not work, the internal microphone remains active when
cables are plugged to either of mic jacks.
The dock microphone is not seen by the mixer (alsamixer).

Is there anything specific that I can test or do?

with best regards,


More information about the Alsa-devel mailing list