@@ -4367,24 +4367,44 @@ static void apply_pin_fixup(struct hda_codec *codec,
4367
4367
4368
4368
enum {
4369
4369
CXT_PINCFG_LENOVO_X200 ,
4370
+ CXT_PINCFG_LENOVO_TP410 ,
4370
4371
};
4371
4372
4373
+ /* ThinkPad X200 & co with cxt5051 */
4372
4374
static const struct cxt_pincfg cxt_pincfg_lenovo_x200 [] = {
4373
4375
{ 0x16 , 0x042140ff }, /* HP (seq# overridden) */
4374
4376
{ 0x17 , 0x21a11000 }, /* dock-mic */
4375
4377
{ 0x19 , 0x2121103f }, /* dock-HP */
4376
4378
{}
4377
4379
};
4378
4380
4381
+ /* ThinkPad 410/420/510/520, X201 & co with cxt5066 */
4382
+ static const struct cxt_pincfg cxt_pincfg_lenovo_tp410 [] = {
4383
+ { 0x19 , 0x042110ff }, /* HP (seq# overridden) */
4384
+ { 0x1a , 0x21a190f0 }, /* dock-mic */
4385
+ { 0x1c , 0x212140ff }, /* dock-HP */
4386
+ {}
4387
+ };
4388
+
4379
4389
static const struct cxt_pincfg * cxt_pincfg_tbl [] = {
4380
4390
[CXT_PINCFG_LENOVO_X200 ] = cxt_pincfg_lenovo_x200 ,
4391
+ [CXT_PINCFG_LENOVO_TP410 ] = cxt_pincfg_lenovo_tp410 ,
4381
4392
};
4382
4393
4383
- static const struct snd_pci_quirk cxt_fixups [] = {
4394
+ static const struct snd_pci_quirk cxt5051_fixups [] = {
4384
4395
SND_PCI_QUIRK (0x17aa , 0x20f2 , "Lenovo X200" , CXT_PINCFG_LENOVO_X200 ),
4385
4396
{}
4386
4397
};
4387
4398
4399
+ static const struct snd_pci_quirk cxt5066_fixups [] = {
4400
+ SND_PCI_QUIRK (0x17aa , 0x20f2 , "Lenovo T400" , CXT_PINCFG_LENOVO_TP410 ),
4401
+ SND_PCI_QUIRK (0x17aa , 0x215e , "Lenovo T410" , CXT_PINCFG_LENOVO_TP410 ),
4402
+ SND_PCI_QUIRK (0x17aa , 0x215f , "Lenovo T510" , CXT_PINCFG_LENOVO_TP410 ),
4403
+ SND_PCI_QUIRK (0x17aa , 0x21ce , "Lenovo T420" , CXT_PINCFG_LENOVO_TP410 ),
4404
+ SND_PCI_QUIRK (0x17aa , 0x21cf , "Lenovo T520" , CXT_PINCFG_LENOVO_TP410 ),
4405
+ {}
4406
+ };
4407
+
4388
4408
/* add "fake" mute amp-caps to DACs on cx5051 so that mixer mute switches
4389
4409
* can be created (bko#42825)
4390
4410
*/
@@ -4421,11 +4441,13 @@ static int patch_conexant_auto(struct hda_codec *codec)
4421
4441
break ;
4422
4442
case 0x14f15051 :
4423
4443
add_cx5051_fake_mutes (codec );
4444
+ apply_pin_fixup (codec , cxt5051_fixups , cxt_pincfg_tbl );
4445
+ break ;
4446
+ default :
4447
+ apply_pin_fixup (codec , cxt5066_fixups , cxt_pincfg_tbl );
4424
4448
break ;
4425
4449
}
4426
4450
4427
- apply_pin_fixup (codec , cxt_fixups , cxt_pincfg_tbl );
4428
-
4429
4451
err = cx_auto_search_adcs (codec );
4430
4452
if (err < 0 )
4431
4453
return err ;
0 commit comments