@@ -7444,6 +7444,7 @@ enum {
7444
7444
ALC287_FIXUP_LEGION_15IMHG05_AUTOMUTE ,
7445
7445
ALC287_FIXUP_YOGA7_14ITL_SPEAKERS ,
7446
7446
ALC298_FIXUP_LENOVO_C940_DUET7 ,
7447
+ ALC287_FIXUP_LENOVO_14IRP8_DUETITL ,
7447
7448
ALC287_FIXUP_13S_GEN2_SPEAKERS ,
7448
7449
ALC256_FIXUP_SET_COEF_DEFAULTS ,
7449
7450
ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ,
@@ -7495,6 +7496,26 @@ static void alc298_fixup_lenovo_c940_duet7(struct hda_codec *codec,
7495
7496
__snd_hda_apply_fixup (codec , id , action , 0 );
7496
7497
}
7497
7498
7499
+ /* A special fixup for Lenovo Slim/Yoga Pro 9 14IRP8 and Yoga DuetITL 2021;
7500
+ * 14IRP8 PCI SSID will mistakenly be matched with the DuetITL codec SSID,
7501
+ * so we need to apply a different fixup in this case. The only DuetITL codec
7502
+ * SSID reported so far is the 17aa:3802 while the 14IRP8 has the 17aa:38be
7503
+ * and 17aa:38bf. If it weren't for the PCI SSID, the 14IRP8 models would
7504
+ * have matched correctly by their codecs.
7505
+ */
7506
+ static void alc287_fixup_lenovo_14irp8_duetitl (struct hda_codec * codec ,
7507
+ const struct hda_fixup * fix ,
7508
+ int action )
7509
+ {
7510
+ int id ;
7511
+
7512
+ if (codec -> core .subsystem_id == 0x17aa3802 )
7513
+ id = ALC287_FIXUP_YOGA7_14ITL_SPEAKERS ; /* DuetITL */
7514
+ else
7515
+ id = ALC287_FIXUP_TAS2781_I2C ; /* 14IRP8 */
7516
+ __snd_hda_apply_fixup (codec , id , action , 0 );
7517
+ }
7518
+
7498
7519
static const struct hda_fixup alc269_fixups [] = {
7499
7520
[ALC269_FIXUP_GPIO2 ] = {
7500
7521
.type = HDA_FIXUP_FUNC ,
@@ -9379,6 +9400,10 @@ static const struct hda_fixup alc269_fixups[] = {
9379
9400
.type = HDA_FIXUP_FUNC ,
9380
9401
.v .func = alc298_fixup_lenovo_c940_duet7 ,
9381
9402
},
9403
+ [ALC287_FIXUP_LENOVO_14IRP8_DUETITL ] = {
9404
+ .type = HDA_FIXUP_FUNC ,
9405
+ .v .func = alc287_fixup_lenovo_14irp8_duetitl ,
9406
+ },
9382
9407
[ALC287_FIXUP_13S_GEN2_SPEAKERS ] = {
9383
9408
.type = HDA_FIXUP_VERBS ,
9384
9409
.v .verbs = (const struct hda_verb []) {
@@ -10251,7 +10276,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
10251
10276
SND_PCI_QUIRK (0x17aa , 0x31af , "ThinkCentre Station" , ALC623_FIXUP_LENOVO_THINKSTATION_P340 ),
10252
10277
SND_PCI_QUIRK (0x17aa , 0x334b , "Lenovo ThinkCentre M70 Gen5" , ALC283_FIXUP_HEADSET_MIC ),
10253
10278
SND_PCI_QUIRK (0x17aa , 0x3801 , "Lenovo Yoga9 14IAP7" , ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN ),
10254
- SND_PCI_QUIRK (0x17aa , 0x3802 , "Lenovo Yoga DuetITL 2021" , ALC287_FIXUP_YOGA7_14ITL_SPEAKERS ),
10279
+ SND_PCI_QUIRK (0x17aa , 0x3802 , "Lenovo Yoga Pro 9 14IRP8 / DuetITL 2021" , ALC287_FIXUP_LENOVO_14IRP8_DUETITL ),
10255
10280
SND_PCI_QUIRK (0x17aa , 0x3813 , "Legion 7i 15IMHG05" , ALC287_FIXUP_LEGION_15IMHG05_SPEAKERS ),
10256
10281
SND_PCI_QUIRK (0x17aa , 0x3818 , "Lenovo C940 / Yoga Duet 7" , ALC298_FIXUP_LENOVO_C940_DUET7 ),
10257
10282
SND_PCI_QUIRK (0x17aa , 0x3819 , "Lenovo 13s Gen2 ITL" , ALC287_FIXUP_13S_GEN2_SPEAKERS ),
0 commit comments