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)
With best regards,
Ulo Mets
Signed-off-by: Ulo Mets<umets at osa.pri.ee>
---b/sound/pci/hda/patch_conexant.c 2011-08-01 12:45:32.302640276 +0300 +++ a/sound/pci/hda/patch_conexant.c 2011-08-01 12:50:22.003141176 +0300 @@ -1785,6 +1785,19 @@ {} };
+static const struct snd_kcontrol_new cxt5051_lenovo_x200_mixers[] = { + HDA_CODEC_VOLUME("Int Mic Volume", 0x14, 0x00, HDA_INPUT), + HDA_CODEC_MUTE("Int Mic Switch", 0x14, 0x00, HDA_INPUT), + HDA_CODEC_VOLUME("Dock Mic Volume", 0x14, 0x01, HDA_INPUT), + HDA_CODEC_MUTE("Dock Mic Switch", 0x14, 0x01, HDA_INPUT), + HDA_CODEC_VOLUME("Ext Mic Volume", 0x15, 0x00, HDA_INPUT), + HDA_CODEC_MUTE("Ext Mic Switch", 0x15, 0x00, HDA_INPUT), + HDA_CODEC_VOLUME("Int Mic Boost", 0x1d, 0x00, HDA_INPUT), + HDA_CODEC_VOLUME("Dock Mic Boost", 0x17, 0x00, HDA_INPUT), + HDA_CODEC_VOLUME("Ext Mic Boost", 0x18, 0x00, HDA_INPUT), + {} +}; + static const struct snd_kcontrol_new cxt5051_hp_mixers[] = { HDA_CODEC_VOLUME("Internal Mic Volume", 0x14, 0x00, HDA_INPUT), HDA_CODEC_MUTE("Internal Mic Switch", 0x14, 0x00, HDA_INPUT), @@ -2055,6 +2079,7 @@ break; case CXT5051_LENOVO_X200: spec->init_verbs[0] = cxt5051_lenovo_x200_init_verbs; + spec->mixers[0] = cxt5051_lenovo_x200_mixers; /* Thinkpad X301 does not have S/PDIF wired and no ability to use a docking station. */ if (codec->subsystem_id == 0x17aa211f)