@@ -3254,6 +3254,34 @@ static void find_cirrus_companion_amps(struct hda_codec *cdc)
32543254 comp_generic_fixup (cdc , HDA_FIXUP_ACT_PRE_PROBE , bus , acpi_ids [i ].hid , match , count );
32553255}
32563256
3257+ static void aw88399_fixup_i2c_two (struct hda_codec * cdc , const struct hda_fixup * fix , int action )
3258+ {
3259+ comp_generic_fixup (cdc , action , "i2c" , "AWDZ8399" , "-%s:00-aw88399-hda.%d" , 2 );
3260+ }
3261+
3262+ static void alc287_fixup_legion_16iax10h_aw88399 (struct hda_codec * codec ,
3263+ const struct hda_fixup * fix , int action )
3264+ {
3265+ static const struct hda_pintbl pincfgs [] = {
3266+ { 0x1d , 0x411111f0 }, /* unused bogus pin */
3267+ { }
3268+ };
3269+
3270+ /*
3271+ * Force DAC 0x02 for the bass speaker 0x17, as the default 0x06 lacks volume controls.
3272+ */
3273+ static const hda_nid_t conn [] = { 0x02 };
3274+
3275+ alc269_fixup_limit_int_mic_boost (codec , fix , action );
3276+
3277+ switch (action ) {
3278+ case HDA_FIXUP_ACT_PRE_PROBE :
3279+ snd_hda_apply_pincfgs (codec , pincfgs );
3280+ snd_hda_override_conn_list (codec , 0x17 , ARRAY_SIZE (conn ), conn );
3281+ break ;
3282+ }
3283+ }
3284+
32573285static void cs35l41_fixup_i2c_two (struct hda_codec * cdc , const struct hda_fixup * fix , int action )
32583286{
32593287 comp_generic_fixup (cdc , action , "i2c" , "CSC3551" , "-%s:00-cs35l41-hda.%d" , 2 );
@@ -4130,6 +4158,8 @@ enum {
41304158 ALC245_FIXUP_ACER_MICMUTE_LED ,
41314159 ALC245_FIXUP_CS35L41_I2C_2_MUTE_LED ,
41324160 ALC236_FIXUP_HP_DMIC ,
4161+ ALC287_FIXUP_AW88399_I2C_2 ,
4162+ ALC287_FIXUP_LENOVO_LEGION_AW88399 ,
41334163};
41344164
41354165/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -6676,6 +6706,16 @@ static const struct hda_fixup alc269_fixups[] = {
66766706 { 0x12 , 0x90a60160 }, /* use as internal mic */
66776707 { }
66786708 },
6709+ },
6710+ [ALC287_FIXUP_AW88399_I2C_2 ] = {
6711+ .type = HDA_FIXUP_FUNC ,
6712+ .v .func = aw88399_fixup_i2c_two ,
6713+ },
6714+ [ALC287_FIXUP_LENOVO_LEGION_AW88399 ] = {
6715+ .type = HDA_FIXUP_FUNC ,
6716+ .v .func = alc287_fixup_legion_16iax10h_aw88399 ,
6717+ .chained = true,
6718+ .chain_id = ALC287_FIXUP_AW88399_I2C_2 ,
66796719 }
66806720};
66816721
@@ -7694,6 +7734,11 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
76947734 SND_PCI_QUIRK (0x17aa , 0x38fa , "Thinkbook 16P Gen5" , ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD ),
76957735 SND_PCI_QUIRK (0x17aa , 0x38fd , "ThinkBook plus Gen5 Hybrid" , ALC287_FIXUP_TAS2781_I2C ),
76967736 SND_PCI_QUIRK (0x17aa , 0x3902 , "Lenovo E50-80" , ALC269_FIXUP_DMIC_THINKPAD_ACPI ),
7737+ SND_PCI_QUIRK (0x17aa , 0x3906 , "Lenovo Legion Pro 7i 16IAX10H" , ALC287_FIXUP_LENOVO_LEGION_AW88399 ),
7738+ SND_PCI_QUIRK (0x17aa , 0x3907 , "Lenovo Legion Pro 7i 16IAX10H / Y9000P IAX10" , ALC287_FIXUP_LENOVO_LEGION_AW88399 ),
7739+ SND_PCI_QUIRK (0x17aa , 0x3d6c , "Lenovo Legion Pro 7i 16IAX10H" , ALC287_FIXUP_LENOVO_LEGION_AW88399 ),
7740+ SND_PCI_QUIRK (0x17aa , 0x3938 , "Lenovo Legion Pro 7 16AFR10H" , ALC287_FIXUP_LENOVO_LEGION_AW88399 ),
7741+ SND_PCI_QUIRK (0x17aa , 0x3939 , "Lenovo Legion Pro 7 16AFR10H" , ALC287_FIXUP_LENOVO_LEGION_AW88399 ),
76977742 SND_PCI_QUIRK (0x17aa , 0x390d , "Lenovo Yoga Pro 7 14ASP10" , ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN ),
76987743 SND_PCI_QUIRK (0x17aa , 0x3913 , "Lenovo 145" , ALC236_FIXUP_LENOVO_INV_DMIC ),
76997744 SND_PCI_QUIRK (0x17aa , 0x391a , "Lenovo Yoga Slim 7 14AKP10" , ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN ),
0 commit comments