@@ -122,6 +122,7 @@ struct alc_spec {
122122 unsigned int ultra_low_power :1 ;
123123 unsigned int has_hs_key :1 ;
124124 unsigned int no_internal_mic_pin :1 ;
125+ unsigned int en_3kpull_low :1 ;
125126
126127 /* for PLL fix */
127128 hda_nid_t pll_nid ;
@@ -3622,6 +3623,7 @@ static void alc256_shutup(struct hda_codec *codec)
36223623 if (!hp_pin )
36233624 hp_pin = 0x21 ;
36243625
3626+ alc_update_coefex_idx (codec , 0x57 , 0x04 , 0x0007 , 0x1 ); /* Low power */
36253627 hp_pin_sense = snd_hda_jack_detect (codec , hp_pin );
36263628
36273629 if (hp_pin_sense )
@@ -3638,8 +3640,7 @@ static void alc256_shutup(struct hda_codec *codec)
36383640 /* If disable 3k pulldown control for alc257, the Mic detection will not work correctly
36393641 * when booting with headset plugged. So skip setting it for the codec alc257
36403642 */
3641- if (codec -> core .vendor_id != 0x10ec0236 &&
3642- codec -> core .vendor_id != 0x10ec0257 )
3643+ if (spec -> en_3kpull_low )
36433644 alc_update_coef_idx (codec , 0x46 , 0 , 3 << 12 );
36443645
36453646 if (!spec -> no_shutup_pins )
@@ -4623,6 +4624,21 @@ static void alc236_fixup_hp_mute_led_coefbit(struct hda_codec *codec,
46234624 }
46244625}
46254626
4627+ static void alc236_fixup_hp_mute_led_coefbit2 (struct hda_codec * codec ,
4628+ const struct hda_fixup * fix , int action )
4629+ {
4630+ struct alc_spec * spec = codec -> spec ;
4631+
4632+ if (action == HDA_FIXUP_ACT_PRE_PROBE ) {
4633+ spec -> mute_led_polarity = 0 ;
4634+ spec -> mute_led_coef .idx = 0x07 ;
4635+ spec -> mute_led_coef .mask = 1 ;
4636+ spec -> mute_led_coef .on = 1 ;
4637+ spec -> mute_led_coef .off = 0 ;
4638+ snd_hda_gen_add_mute_led_cdev (codec , coef_mute_led_set );
4639+ }
4640+ }
4641+
46264642/* turn on/off mic-mute LED per capture hook by coef bit */
46274643static int coef_micmute_led_set (struct led_classdev * led_cdev ,
46284644 enum led_brightness brightness )
@@ -7143,6 +7159,7 @@ enum {
71437159 ALC285_FIXUP_HP_GPIO_LED ,
71447160 ALC285_FIXUP_HP_MUTE_LED ,
71457161 ALC285_FIXUP_HP_SPECTRE_X360_MUTE_LED ,
7162+ ALC236_FIXUP_HP_MUTE_LED_COEFBIT2 ,
71467163 ALC236_FIXUP_HP_GPIO_LED ,
71477164 ALC236_FIXUP_HP_MUTE_LED ,
71487165 ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF ,
@@ -7213,6 +7230,7 @@ enum {
72137230 ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN ,
72147231 ALC295_FIXUP_DELL_INSPIRON_TOP_SPEAKERS ,
72157232 ALC236_FIXUP_DELL_DUAL_CODECS ,
7233+ ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI ,
72167234};
72177235
72187236/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -8632,6 +8650,10 @@ static const struct hda_fixup alc269_fixups[] = {
86328650 .type = HDA_FIXUP_FUNC ,
86338651 .v .func = alc285_fixup_hp_spectre_x360_mute_led ,
86348652 },
8653+ [ALC236_FIXUP_HP_MUTE_LED_COEFBIT2 ] = {
8654+ .type = HDA_FIXUP_FUNC ,
8655+ .v .func = alc236_fixup_hp_mute_led_coefbit2 ,
8656+ },
86358657 [ALC236_FIXUP_HP_GPIO_LED ] = {
86368658 .type = HDA_FIXUP_FUNC ,
86378659 .v .func = alc236_fixup_hp_gpio_led ,
@@ -9145,8 +9167,6 @@ static const struct hda_fixup alc269_fixups[] = {
91459167 [ALC287_FIXUP_CS35L41_I2C_2 ] = {
91469168 .type = HDA_FIXUP_FUNC ,
91479169 .v .func = cs35l41_fixup_i2c_two ,
9148- .chained = true,
9149- .chain_id = ALC269_FIXUP_THINKPAD_ACPI ,
91509170 },
91519171 [ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED ] = {
91529172 .type = HDA_FIXUP_FUNC ,
@@ -9283,6 +9303,12 @@ static const struct hda_fixup alc269_fixups[] = {
92839303 .chained = true,
92849304 .chain_id = ALC255_FIXUP_DELL1_MIC_NO_PRESENCE ,
92859305 },
9306+ [ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI ] = {
9307+ .type = HDA_FIXUP_FUNC ,
9308+ .v .func = cs35l41_fixup_i2c_two ,
9309+ .chained = true,
9310+ .chain_id = ALC269_FIXUP_THINKPAD_ACPI ,
9311+ },
92869312};
92879313
92889314static const struct snd_pci_quirk alc269_fixup_tbl [] = {
@@ -9393,6 +9419,14 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
93939419 SND_PCI_QUIRK (0x1028 , 0x0c1c , "Dell Precision 3540" , ALC236_FIXUP_DELL_DUAL_CODECS ),
93949420 SND_PCI_QUIRK (0x1028 , 0x0c1d , "Dell Precision 3440" , ALC236_FIXUP_DELL_DUAL_CODECS ),
93959421 SND_PCI_QUIRK (0x1028 , 0x0c1e , "Dell Precision 3540" , ALC236_FIXUP_DELL_DUAL_CODECS ),
9422+ SND_PCI_QUIRK (0x1028 , 0x0cbd , "Dell Oasis 13 CS MTL-U" , ALC245_FIXUP_CS35L41_SPI_2 ),
9423+ SND_PCI_QUIRK (0x1028 , 0x0cbe , "Dell Oasis 13 2-IN-1 MTL-U" , ALC245_FIXUP_CS35L41_SPI_2 ),
9424+ SND_PCI_QUIRK (0x1028 , 0x0cbf , "Dell Oasis 13 Low Weight MTU-L" , ALC245_FIXUP_CS35L41_SPI_2 ),
9425+ SND_PCI_QUIRK (0x1028 , 0x0cc1 , "Dell Oasis 14 MTL-H/U" , ALC287_FIXUP_CS35L41_I2C_2 ),
9426+ SND_PCI_QUIRK (0x1028 , 0x0cc2 , "Dell Oasis 14 2-in-1 MTL-H/U" , ALC287_FIXUP_CS35L41_I2C_2 ),
9427+ SND_PCI_QUIRK (0x1028 , 0x0cc3 , "Dell Oasis 14 Low Weight MTL-U" , ALC287_FIXUP_CS35L41_I2C_2 ),
9428+ SND_PCI_QUIRK (0x1028 , 0x0cc4 , "Dell Oasis 16 MTL-H/U" , ALC287_FIXUP_CS35L41_I2C_2 ),
9429+ SND_PCI_QUIRK (0x1028 , 0x0cc5 , "Dell Oasis MLK 14 RPL-P" , ALC287_FIXUP_CS35L41_I2C_2 ),
93969430 SND_PCI_QUIRK (0x1028 , 0x164a , "Dell" , ALC293_FIXUP_DELL1_MIC_NO_PRESENCE ),
93979431 SND_PCI_QUIRK (0x1028 , 0x164b , "Dell" , ALC293_FIXUP_DELL1_MIC_NO_PRESENCE ),
93989432 SND_PCI_QUIRK (0x103c , 0x1586 , "HP" , ALC269_FIXUP_HP_MUTE_LED_MIC2 ),
@@ -9516,6 +9550,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
95169550 SND_PCI_QUIRK (0x103c , 0x886d , "HP ZBook Fury 17.3 Inch G8 Mobile Workstation PC" , ALC285_FIXUP_HP_GPIO_AMP_INIT ),
95179551 SND_PCI_QUIRK (0x103c , 0x8870 , "HP ZBook Fury 15.6 Inch G8 Mobile Workstation PC" , ALC285_FIXUP_HP_GPIO_AMP_INIT ),
95189552 SND_PCI_QUIRK (0x103c , 0x8873 , "HP ZBook Studio 15.6 Inch G8 Mobile Workstation PC" , ALC285_FIXUP_HP_GPIO_AMP_INIT ),
9553+ SND_PCI_QUIRK (0x103c , 0x887a , "HP Laptop 15s-eq2xxx" , ALC236_FIXUP_HP_MUTE_LED_COEFBIT2 ),
95199554 SND_PCI_QUIRK (0x103c , 0x888d , "HP ZBook Power 15.6 inch G8 Mobile Workstation PC" , ALC236_FIXUP_HP_GPIO_LED ),
95209555 SND_PCI_QUIRK (0x103c , 0x8895 , "HP EliteBook 855 G8 Notebook PC" , ALC285_FIXUP_HP_SPEAKERS_MICMUTE_LED ),
95219556 SND_PCI_QUIRK (0x103c , 0x8896 , "HP EliteBook 855 G8 Notebook PC" , ALC285_FIXUP_HP_MUTE_LED ),
@@ -9727,6 +9762,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
97279762 SND_PCI_QUIRK (0x1558 , 0x5157 , "Clevo W517GU1" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
97289763 SND_PCI_QUIRK (0x1558 , 0x51a1 , "Clevo NS50MU" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
97299764 SND_PCI_QUIRK (0x1558 , 0x51b1 , "Clevo NS50AU" , ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
9765+ SND_PCI_QUIRK (0x1558 , 0x51b3 , "Clevo NS70AU" , ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
97309766 SND_PCI_QUIRK (0x1558 , 0x5630 , "Clevo NP50RNJS" , ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
97319767 SND_PCI_QUIRK (0x1558 , 0x70a1 , "Clevo NB70T[HJK]" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
97329768 SND_PCI_QUIRK (0x1558 , 0x70b3 , "Clevo NK70SB" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
@@ -9810,14 +9846,14 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
98109846 SND_PCI_QUIRK (0x17aa , 0x22be , "Thinkpad X1 Carbon 8th" , ALC285_FIXUP_THINKPAD_HEADSET_JACK ),
98119847 SND_PCI_QUIRK (0x17aa , 0x22c1 , "Thinkpad P1 Gen 3" , ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK ),
98129848 SND_PCI_QUIRK (0x17aa , 0x22c2 , "Thinkpad X1 Extreme Gen 3" , ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK ),
9813- SND_PCI_QUIRK (0x17aa , 0x22f1 , "Thinkpad" , ALC287_FIXUP_CS35L41_I2C_2 ),
9814- SND_PCI_QUIRK (0x17aa , 0x22f2 , "Thinkpad" , ALC287_FIXUP_CS35L41_I2C_2 ),
9815- SND_PCI_QUIRK (0x17aa , 0x22f3 , "Thinkpad" , ALC287_FIXUP_CS35L41_I2C_2 ),
9816- SND_PCI_QUIRK (0x17aa , 0x2316 , "Thinkpad P1 Gen 6" , ALC287_FIXUP_CS35L41_I2C_2 ),
9817- SND_PCI_QUIRK (0x17aa , 0x2317 , "Thinkpad P1 Gen 6" , ALC287_FIXUP_CS35L41_I2C_2 ),
9818- SND_PCI_QUIRK (0x17aa , 0x2318 , "Thinkpad Z13 Gen2" , ALC287_FIXUP_CS35L41_I2C_2 ),
9819- SND_PCI_QUIRK (0x17aa , 0x2319 , "Thinkpad Z16 Gen2" , ALC287_FIXUP_CS35L41_I2C_2 ),
9820- SND_PCI_QUIRK (0x17aa , 0x231a , "Thinkpad Z16 Gen2" , ALC287_FIXUP_CS35L41_I2C_2 ),
9849+ SND_PCI_QUIRK (0x17aa , 0x22f1 , "Thinkpad" , ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI ),
9850+ SND_PCI_QUIRK (0x17aa , 0x22f2 , "Thinkpad" , ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI ),
9851+ SND_PCI_QUIRK (0x17aa , 0x22f3 , "Thinkpad" , ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI ),
9852+ SND_PCI_QUIRK (0x17aa , 0x2316 , "Thinkpad P1 Gen 6" , ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI ),
9853+ SND_PCI_QUIRK (0x17aa , 0x2317 , "Thinkpad P1 Gen 6" , ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI ),
9854+ SND_PCI_QUIRK (0x17aa , 0x2318 , "Thinkpad Z13 Gen2" , ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI ),
9855+ SND_PCI_QUIRK (0x17aa , 0x2319 , "Thinkpad Z16 Gen2" , ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI ),
9856+ SND_PCI_QUIRK (0x17aa , 0x231a , "Thinkpad Z16 Gen2" , ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI ),
98219857 SND_PCI_QUIRK (0x17aa , 0x30bb , "ThinkCentre AIO" , ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY ),
98229858 SND_PCI_QUIRK (0x17aa , 0x30e2 , "ThinkCentre AIO" , ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY ),
98239859 SND_PCI_QUIRK (0x17aa , 0x310c , "ThinkCentre Station" , ALC294_FIXUP_LENOVO_MIC_LOCATION ),
@@ -10682,6 +10718,8 @@ static int patch_alc269(struct hda_codec *codec)
1068210718 spec -> shutup = alc256_shutup ;
1068310719 spec -> init_hook = alc256_init ;
1068410720 spec -> gen .mixer_nid = 0 ; /* ALC256 does not have any loopback mixer path */
10721+ if (codec -> bus -> pci -> vendor == PCI_VENDOR_ID_AMD )
10722+ spec -> en_3kpull_low = true;
1068510723 break ;
1068610724 case 0x10ec0257 :
1068710725 spec -> codec_variant = ALC269_TYPE_ALC257 ;
0 commit comments