@@ -7078,6 +7078,24 @@ static void alc287_fixup_bind_dacs(struct hda_codec *codec,
7078
7078
0x0 ); /* Make sure 0x14 was disable */
7079
7079
}
7080
7080
}
7081
+ /* Fix none verb table of Headset Mic pin */
7082
+ static void alc_fixup_headset_mic (struct hda_codec * codec ,
7083
+ const struct hda_fixup * fix , int action )
7084
+ {
7085
+ struct alc_spec * spec = codec -> spec ;
7086
+ static const struct hda_pintbl pincfgs [] = {
7087
+ { 0x19 , 0x03a1103c },
7088
+ { }
7089
+ };
7090
+
7091
+ switch (action ) {
7092
+ case HDA_FIXUP_ACT_PRE_PROBE :
7093
+ snd_hda_apply_pincfgs (codec , pincfgs );
7094
+ alc_update_coef_idx (codec , 0x45 , 0xf <<12 | 1 <<10 , 5 <<12 );
7095
+ spec -> parse_flags |= HDA_PINCFG_HEADSET_MIC ;
7096
+ break ;
7097
+ }
7098
+ }
7081
7099
7082
7100
7083
7101
enum {
@@ -7344,6 +7362,7 @@ enum {
7344
7362
ALC245_FIXUP_HP_X360_MUTE_LEDS ,
7345
7363
ALC287_FIXUP_THINKPAD_I2S_SPK ,
7346
7364
ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD ,
7365
+ ALC2XX_FIXUP_HEADSET_MIC ,
7347
7366
};
7348
7367
7349
7368
/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -9448,6 +9467,10 @@ static const struct hda_fixup alc269_fixups[] = {
9448
9467
.chained = true,
9449
9468
.chain_id = ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI ,
9450
9469
},
9470
+ [ALC2XX_FIXUP_HEADSET_MIC ] = {
9471
+ .type = HDA_FIXUP_FUNC ,
9472
+ .v .func = alc_fixup_headset_mic ,
9473
+ },
9451
9474
};
9452
9475
9453
9476
static const struct snd_pci_quirk alc269_fixup_tbl [] = {
@@ -10752,6 +10775,8 @@ static const struct snd_hda_pin_quirk alc269_fallback_pin_fixup_tbl[] = {
10752
10775
SND_HDA_PIN_QUIRK (0x10ec0274 , 0x1028 , "Dell" , ALC274_FIXUP_DELL_AIO_LINEOUT_VERB ,
10753
10776
{0x19 , 0x40000000 },
10754
10777
{0x1a , 0x40000000 }),
10778
+ SND_HDA_PIN_QUIRK (0x10ec0256 , 0x1043 , "ASUS" , ALC2XX_FIXUP_HEADSET_MIC ,
10779
+ {0x19 , 0x40000000 }),
10755
10780
{}
10756
10781
};
10757
10782
0 commit comments