@@ -122,6 +122,7 @@ struct alc_spec {
122
122
unsigned int ultra_low_power :1 ;
123
123
unsigned int has_hs_key :1 ;
124
124
unsigned int no_internal_mic_pin :1 ;
125
+ unsigned int en_3kpull_low :1 ;
125
126
126
127
/* for PLL fix */
127
128
hda_nid_t pll_nid ;
@@ -3622,6 +3623,7 @@ static void alc256_shutup(struct hda_codec *codec)
3622
3623
if (!hp_pin )
3623
3624
hp_pin = 0x21 ;
3624
3625
3626
+ alc_update_coefex_idx (codec , 0x57 , 0x04 , 0x0007 , 0x1 ); /* Low power */
3625
3627
hp_pin_sense = snd_hda_jack_detect (codec , hp_pin );
3626
3628
3627
3629
if (hp_pin_sense )
@@ -3638,8 +3640,7 @@ static void alc256_shutup(struct hda_codec *codec)
3638
3640
/* If disable 3k pulldown control for alc257, the Mic detection will not work correctly
3639
3641
* when booting with headset plugged. So skip setting it for the codec alc257
3640
3642
*/
3641
- if (codec -> core .vendor_id != 0x10ec0236 &&
3642
- codec -> core .vendor_id != 0x10ec0257 )
3643
+ if (spec -> en_3kpull_low )
3643
3644
alc_update_coef_idx (codec , 0x46 , 0 , 3 << 12 );
3644
3645
3645
3646
if (!spec -> no_shutup_pins )
@@ -4623,6 +4624,21 @@ static void alc236_fixup_hp_mute_led_coefbit(struct hda_codec *codec,
4623
4624
}
4624
4625
}
4625
4626
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
+
4626
4642
/* turn on/off mic-mute LED per capture hook by coef bit */
4627
4643
static int coef_micmute_led_set (struct led_classdev * led_cdev ,
4628
4644
enum led_brightness brightness )
@@ -7143,6 +7159,7 @@ enum {
7143
7159
ALC285_FIXUP_HP_GPIO_LED ,
7144
7160
ALC285_FIXUP_HP_MUTE_LED ,
7145
7161
ALC285_FIXUP_HP_SPECTRE_X360_MUTE_LED ,
7162
+ ALC236_FIXUP_HP_MUTE_LED_COEFBIT2 ,
7146
7163
ALC236_FIXUP_HP_GPIO_LED ,
7147
7164
ALC236_FIXUP_HP_MUTE_LED ,
7148
7165
ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF ,
@@ -7213,6 +7230,7 @@ enum {
7213
7230
ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN ,
7214
7231
ALC295_FIXUP_DELL_INSPIRON_TOP_SPEAKERS ,
7215
7232
ALC236_FIXUP_DELL_DUAL_CODECS ,
7233
+ ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI ,
7216
7234
};
7217
7235
7218
7236
/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -8632,6 +8650,10 @@ static const struct hda_fixup alc269_fixups[] = {
8632
8650
.type = HDA_FIXUP_FUNC ,
8633
8651
.v .func = alc285_fixup_hp_spectre_x360_mute_led ,
8634
8652
},
8653
+ [ALC236_FIXUP_HP_MUTE_LED_COEFBIT2 ] = {
8654
+ .type = HDA_FIXUP_FUNC ,
8655
+ .v .func = alc236_fixup_hp_mute_led_coefbit2 ,
8656
+ },
8635
8657
[ALC236_FIXUP_HP_GPIO_LED ] = {
8636
8658
.type = HDA_FIXUP_FUNC ,
8637
8659
.v .func = alc236_fixup_hp_gpio_led ,
@@ -9145,8 +9167,6 @@ static const struct hda_fixup alc269_fixups[] = {
9145
9167
[ALC287_FIXUP_CS35L41_I2C_2 ] = {
9146
9168
.type = HDA_FIXUP_FUNC ,
9147
9169
.v .func = cs35l41_fixup_i2c_two ,
9148
- .chained = true,
9149
- .chain_id = ALC269_FIXUP_THINKPAD_ACPI ,
9150
9170
},
9151
9171
[ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED ] = {
9152
9172
.type = HDA_FIXUP_FUNC ,
@@ -9283,6 +9303,12 @@ static const struct hda_fixup alc269_fixups[] = {
9283
9303
.chained = true,
9284
9304
.chain_id = ALC255_FIXUP_DELL1_MIC_NO_PRESENCE ,
9285
9305
},
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
+ },
9286
9312
};
9287
9313
9288
9314
static const struct snd_pci_quirk alc269_fixup_tbl [] = {
@@ -9393,6 +9419,14 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
9393
9419
SND_PCI_QUIRK (0x1028 , 0x0c1c , "Dell Precision 3540" , ALC236_FIXUP_DELL_DUAL_CODECS ),
9394
9420
SND_PCI_QUIRK (0x1028 , 0x0c1d , "Dell Precision 3440" , ALC236_FIXUP_DELL_DUAL_CODECS ),
9395
9421
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 ),
9396
9430
SND_PCI_QUIRK (0x1028 , 0x164a , "Dell" , ALC293_FIXUP_DELL1_MIC_NO_PRESENCE ),
9397
9431
SND_PCI_QUIRK (0x1028 , 0x164b , "Dell" , ALC293_FIXUP_DELL1_MIC_NO_PRESENCE ),
9398
9432
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[] = {
9516
9550
SND_PCI_QUIRK (0x103c , 0x886d , "HP ZBook Fury 17.3 Inch G8 Mobile Workstation PC" , ALC285_FIXUP_HP_GPIO_AMP_INIT ),
9517
9551
SND_PCI_QUIRK (0x103c , 0x8870 , "HP ZBook Fury 15.6 Inch G8 Mobile Workstation PC" , ALC285_FIXUP_HP_GPIO_AMP_INIT ),
9518
9552
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 ),
9519
9554
SND_PCI_QUIRK (0x103c , 0x888d , "HP ZBook Power 15.6 inch G8 Mobile Workstation PC" , ALC236_FIXUP_HP_GPIO_LED ),
9520
9555
SND_PCI_QUIRK (0x103c , 0x8895 , "HP EliteBook 855 G8 Notebook PC" , ALC285_FIXUP_HP_SPEAKERS_MICMUTE_LED ),
9521
9556
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[] = {
9727
9762
SND_PCI_QUIRK (0x1558 , 0x5157 , "Clevo W517GU1" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
9728
9763
SND_PCI_QUIRK (0x1558 , 0x51a1 , "Clevo NS50MU" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
9729
9764
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 ),
9730
9766
SND_PCI_QUIRK (0x1558 , 0x5630 , "Clevo NP50RNJS" , ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
9731
9767
SND_PCI_QUIRK (0x1558 , 0x70a1 , "Clevo NB70T[HJK]" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
9732
9768
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[] = {
9810
9846
SND_PCI_QUIRK (0x17aa , 0x22be , "Thinkpad X1 Carbon 8th" , ALC285_FIXUP_THINKPAD_HEADSET_JACK ),
9811
9847
SND_PCI_QUIRK (0x17aa , 0x22c1 , "Thinkpad P1 Gen 3" , ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK ),
9812
9848
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 ),
9821
9857
SND_PCI_QUIRK (0x17aa , 0x30bb , "ThinkCentre AIO" , ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY ),
9822
9858
SND_PCI_QUIRK (0x17aa , 0x30e2 , "ThinkCentre AIO" , ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY ),
9823
9859
SND_PCI_QUIRK (0x17aa , 0x310c , "ThinkCentre Station" , ALC294_FIXUP_LENOVO_MIC_LOCATION ),
@@ -10682,6 +10718,8 @@ static int patch_alc269(struct hda_codec *codec)
10682
10718
spec -> shutup = alc256_shutup ;
10683
10719
spec -> init_hook = alc256_init ;
10684
10720
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;
10685
10723
break ;
10686
10724
case 0x10ec0257 :
10687
10725
spec -> codec_variant = ALC269_TYPE_ALC257 ;
0 commit comments