@@ -2645,6 +2645,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
2645
2645
SND_PCI_QUIRK (0x1558 , 0x65f1 , "Clevo PC50HS" , ALC1220_FIXUP_CLEVO_PB51ED_PINS ),
2646
2646
SND_PCI_QUIRK (0x1558 , 0x65f5 , "Clevo PD50PN[NRT]" , ALC1220_FIXUP_CLEVO_PB51ED_PINS ),
2647
2647
SND_PCI_QUIRK (0x1558 , 0x66a2 , "Clevo PE60RNE" , ALC1220_FIXUP_CLEVO_PB51ED_PINS ),
2648
+ SND_PCI_QUIRK (0x1558 , 0x66a6 , "Clevo PE60SN[CDE]-[GS]" , ALC1220_FIXUP_CLEVO_PB51ED_PINS ),
2648
2649
SND_PCI_QUIRK (0x1558 , 0x67d1 , "Clevo PB71[ER][CDF]" , ALC1220_FIXUP_CLEVO_PB51ED_PINS ),
2649
2650
SND_PCI_QUIRK (0x1558 , 0x67e1 , "Clevo PB71[DE][CDF]" , ALC1220_FIXUP_CLEVO_PB51ED_PINS ),
2650
2651
SND_PCI_QUIRK (0x1558 , 0x67e5 , "Clevo PC70D[PRS](?:-D|-G)?" , ALC1220_FIXUP_CLEVO_PB51ED_PINS ),
@@ -6964,6 +6965,25 @@ static void alc256_fixup_mic_no_presence_and_resume(struct hda_codec *codec,
6964
6965
}
6965
6966
}
6966
6967
6968
+ static void alc256_decrease_headphone_amp_val (struct hda_codec * codec ,
6969
+ const struct hda_fixup * fix , int action )
6970
+ {
6971
+ u32 caps ;
6972
+ u8 nsteps , offs ;
6973
+
6974
+ if (action != HDA_FIXUP_ACT_PRE_PROBE )
6975
+ return ;
6976
+
6977
+ caps = query_amp_caps (codec , 0x3 , HDA_OUTPUT );
6978
+ nsteps = ((caps & AC_AMPCAP_NUM_STEPS ) >> AC_AMPCAP_NUM_STEPS_SHIFT ) - 10 ;
6979
+ offs = ((caps & AC_AMPCAP_OFFSET ) >> AC_AMPCAP_OFFSET_SHIFT ) - 10 ;
6980
+ caps &= ~AC_AMPCAP_NUM_STEPS & ~AC_AMPCAP_OFFSET ;
6981
+ caps |= (nsteps << AC_AMPCAP_NUM_STEPS_SHIFT ) | (offs << AC_AMPCAP_OFFSET_SHIFT );
6982
+
6983
+ if (snd_hda_override_amp_caps (codec , 0x3 , HDA_OUTPUT , caps ))
6984
+ codec_warn (codec , "failed to override amp caps for NID 0x3\n" );
6985
+ }
6986
+
6967
6987
static void alc_fixup_dell4_mic_no_presence_quiet (struct hda_codec * codec ,
6968
6988
const struct hda_fixup * fix ,
6969
6989
int action )
@@ -7104,6 +7124,38 @@ static void alc_fixup_headset_mic(struct hda_codec *codec,
7104
7124
}
7105
7125
}
7106
7126
7127
+ static void alc245_fixup_hp_spectre_x360_eu0xxx (struct hda_codec * codec ,
7128
+ const struct hda_fixup * fix , int action )
7129
+ {
7130
+ /*
7131
+ * The Pin Complex 0x14 for the treble speakers is wrongly reported as
7132
+ * unconnected.
7133
+ * The Pin Complex 0x17 for the bass speakers has the lowest association
7134
+ * and sequence values so shift it up a bit to squeeze 0x14 in.
7135
+ */
7136
+ static const struct hda_pintbl pincfgs [] = {
7137
+ { 0x14 , 0x90170110 }, // top/treble
7138
+ { 0x17 , 0x90170111 }, // bottom/bass
7139
+ { }
7140
+ };
7141
+
7142
+ /*
7143
+ * Force DAC 0x02 for the bass speakers 0x17.
7144
+ */
7145
+ static const hda_nid_t conn [] = { 0x02 };
7146
+
7147
+ switch (action ) {
7148
+ case HDA_FIXUP_ACT_PRE_PROBE :
7149
+ snd_hda_apply_pincfgs (codec , pincfgs );
7150
+ snd_hda_override_conn_list (codec , 0x17 , ARRAY_SIZE (conn ), conn );
7151
+ break ;
7152
+ }
7153
+
7154
+ cs35l41_fixup_i2c_two (codec , fix , action );
7155
+ alc245_fixup_hp_mute_led_coefbit (codec , fix , action );
7156
+ alc245_fixup_hp_gpio_led (codec , fix , action );
7157
+ }
7158
+
7107
7159
7108
7160
enum {
7109
7161
ALC269_FIXUP_GPIO2 ,
@@ -7382,6 +7434,8 @@ enum {
7382
7434
ALC294_FIXUP_CS35L41_I2C_2 ,
7383
7435
ALC245_FIXUP_CS35L56_SPI_4_HP_GPIO_LED ,
7384
7436
ALC256_FIXUP_ACER_SFG16_MICMUTE_LED ,
7437
+ ALC256_FIXUP_HEADPHONE_AMP_VOL ,
7438
+ ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX ,
7385
7439
};
7386
7440
7387
7441
/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -9581,6 +9635,14 @@ static const struct hda_fixup alc269_fixups[] = {
9581
9635
.type = HDA_FIXUP_FUNC ,
9582
9636
.v .func = alc256_fixup_acer_sfg16_micmute_led ,
9583
9637
},
9638
+ [ALC256_FIXUP_HEADPHONE_AMP_VOL ] = {
9639
+ .type = HDA_FIXUP_FUNC ,
9640
+ .v .func = alc256_decrease_headphone_amp_val ,
9641
+ },
9642
+ [ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX ] = {
9643
+ .type = HDA_FIXUP_FUNC ,
9644
+ .v .func = alc245_fixup_hp_spectre_x360_eu0xxx ,
9645
+ },
9584
9646
};
9585
9647
9586
9648
static const struct snd_pci_quirk alc269_fixup_tbl [] = {
@@ -9944,7 +10006,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
9944
10006
SND_PCI_QUIRK (0x103c , 0x8be8 , "HP Envy 17" , ALC287_FIXUP_CS35L41_I2C_2 ),
9945
10007
SND_PCI_QUIRK (0x103c , 0x8be9 , "HP Envy 15" , ALC287_FIXUP_CS35L41_I2C_2 ),
9946
10008
SND_PCI_QUIRK (0x103c , 0x8bf0 , "HP" , ALC236_FIXUP_HP_GPIO_LED ),
9947
- SND_PCI_QUIRK (0x103c , 0x8c15 , "HP Spectre 14 " , ALC287_FIXUP_CS35L41_I2C_2 ),
10009
+ SND_PCI_QUIRK (0x103c , 0x8c15 , "HP Spectre x360 2-in-1 Laptop 14-eu0xxx " , ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX ),
9948
10010
SND_PCI_QUIRK (0x103c , 0x8c16 , "HP Spectre 16" , ALC287_FIXUP_CS35L41_I2C_2 ),
9949
10011
SND_PCI_QUIRK (0x103c , 0x8c17 , "HP Spectre 16" , ALC287_FIXUP_CS35L41_I2C_2 ),
9950
10012
SND_PCI_QUIRK (0x103c , 0x8c46 , "HP EliteBook 830 G11" , ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED ),
@@ -10115,12 +10177,14 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
10115
10177
SND_PCI_QUIRK (0x1462 , 0xb120 , "MSI Cubi MS-B120" , ALC283_FIXUP_HEADSET_MIC ),
10116
10178
SND_PCI_QUIRK (0x1462 , 0xb171 , "Cubi N 8GL (MS-B171)" , ALC283_FIXUP_HEADSET_MIC ),
10117
10179
SND_PCI_QUIRK (0x152d , 0x1082 , "Quanta NL3" , ALC269_FIXUP_LIFEBOOK ),
10180
+ SND_PCI_QUIRK (0x1558 , 0x0353 , "Clevo V35[05]SN[CDE]Q" , ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
10118
10181
SND_PCI_QUIRK (0x1558 , 0x1323 , "Clevo N130ZU" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
10119
10182
SND_PCI_QUIRK (0x1558 , 0x1325 , "Clevo N15[01][CW]U" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
10120
10183
SND_PCI_QUIRK (0x1558 , 0x1401 , "Clevo L140[CZ]U" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
10121
10184
SND_PCI_QUIRK (0x1558 , 0x1403 , "Clevo N140CU" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
10122
10185
SND_PCI_QUIRK (0x1558 , 0x1404 , "Clevo N150CU" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
10123
10186
SND_PCI_QUIRK (0x1558 , 0x14a1 , "Clevo L141MU" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
10187
+ SND_PCI_QUIRK (0x1558 , 0x2624 , "Clevo L240TU" , ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
10124
10188
SND_PCI_QUIRK (0x1558 , 0x4018 , "Clevo NV40M[BE]" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
10125
10189
SND_PCI_QUIRK (0x1558 , 0x4019 , "Clevo NV40MZ" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
10126
10190
SND_PCI_QUIRK (0x1558 , 0x4020 , "Clevo NV40MB" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
@@ -10319,6 +10383,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
10319
10383
SND_PCI_QUIRK (0x17aa , 0x9e56 , "Lenovo ZhaoYang CF4620Z" , ALC286_FIXUP_SONY_MIC_NO_PRESENCE ),
10320
10384
SND_PCI_QUIRK (0x1849 , 0x1233 , "ASRock NUC Box 1100" , ALC233_FIXUP_NO_AUDIO_JACK ),
10321
10385
SND_PCI_QUIRK (0x1849 , 0xa233 , "Positivo Master C6300" , ALC269_FIXUP_HEADSET_MIC ),
10386
+ SND_PCI_QUIRK (0x1854 , 0x0440 , "LG CQ6" , ALC256_FIXUP_HEADPHONE_AMP_VOL ),
10387
+ SND_PCI_QUIRK (0x1854 , 0x0441 , "LG CQ6 AIO" , ALC256_FIXUP_HEADPHONE_AMP_VOL ),
10322
10388
SND_PCI_QUIRK (0x19e5 , 0x3204 , "Huawei MACH-WX9" , ALC256_FIXUP_HUAWEI_MACH_WX9_PINS ),
10323
10389
SND_PCI_QUIRK (0x19e5 , 0x320f , "Huawei WRT-WX9 " , ALC256_FIXUP_ASUS_MIC_NO_PRESENCE ),
10324
10390
SND_PCI_QUIRK (0x1b35 , 0x1235 , "CZC B20" , ALC269_FIXUP_CZC_B20 ),
0 commit comments