@@ -2645,6 +2645,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
26452645 SND_PCI_QUIRK (0x1558 , 0x65f1 , "Clevo PC50HS" , ALC1220_FIXUP_CLEVO_PB51ED_PINS ),
26462646 SND_PCI_QUIRK (0x1558 , 0x65f5 , "Clevo PD50PN[NRT]" , ALC1220_FIXUP_CLEVO_PB51ED_PINS ),
26472647 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 ),
26482649 SND_PCI_QUIRK (0x1558 , 0x67d1 , "Clevo PB71[ER][CDF]" , ALC1220_FIXUP_CLEVO_PB51ED_PINS ),
26492650 SND_PCI_QUIRK (0x1558 , 0x67e1 , "Clevo PB71[DE][CDF]" , ALC1220_FIXUP_CLEVO_PB51ED_PINS ),
26502651 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,
69646965 }
69656966}
69666967
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+
69676987static void alc_fixup_dell4_mic_no_presence_quiet (struct hda_codec * codec ,
69686988 const struct hda_fixup * fix ,
69696989 int action )
@@ -7104,6 +7124,38 @@ static void alc_fixup_headset_mic(struct hda_codec *codec,
71047124 }
71057125}
71067126
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+
71077159
71087160enum {
71097161 ALC269_FIXUP_GPIO2 ,
@@ -7382,6 +7434,8 @@ enum {
73827434 ALC294_FIXUP_CS35L41_I2C_2 ,
73837435 ALC245_FIXUP_CS35L56_SPI_4_HP_GPIO_LED ,
73847436 ALC256_FIXUP_ACER_SFG16_MICMUTE_LED ,
7437+ ALC256_FIXUP_HEADPHONE_AMP_VOL ,
7438+ ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX ,
73857439};
73867440
73877441/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -9581,6 +9635,14 @@ static const struct hda_fixup alc269_fixups[] = {
95819635 .type = HDA_FIXUP_FUNC ,
95829636 .v .func = alc256_fixup_acer_sfg16_micmute_led ,
95839637 },
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+ },
95849646};
95859647
95869648static const struct snd_pci_quirk alc269_fixup_tbl [] = {
@@ -9944,7 +10006,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
994410006 SND_PCI_QUIRK (0x103c , 0x8be8 , "HP Envy 17" , ALC287_FIXUP_CS35L41_I2C_2 ),
994510007 SND_PCI_QUIRK (0x103c , 0x8be9 , "HP Envy 15" , ALC287_FIXUP_CS35L41_I2C_2 ),
994610008 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 ),
994810010 SND_PCI_QUIRK (0x103c , 0x8c16 , "HP Spectre 16" , ALC287_FIXUP_CS35L41_I2C_2 ),
994910011 SND_PCI_QUIRK (0x103c , 0x8c17 , "HP Spectre 16" , ALC287_FIXUP_CS35L41_I2C_2 ),
995010012 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[] = {
1011510177 SND_PCI_QUIRK (0x1462 , 0xb120 , "MSI Cubi MS-B120" , ALC283_FIXUP_HEADSET_MIC ),
1011610178 SND_PCI_QUIRK (0x1462 , 0xb171 , "Cubi N 8GL (MS-B171)" , ALC283_FIXUP_HEADSET_MIC ),
1011710179 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 ),
1011810181 SND_PCI_QUIRK (0x1558 , 0x1323 , "Clevo N130ZU" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
1011910182 SND_PCI_QUIRK (0x1558 , 0x1325 , "Clevo N15[01][CW]U" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
1012010183 SND_PCI_QUIRK (0x1558 , 0x1401 , "Clevo L140[CZ]U" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
1012110184 SND_PCI_QUIRK (0x1558 , 0x1403 , "Clevo N140CU" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
1012210185 SND_PCI_QUIRK (0x1558 , 0x1404 , "Clevo N150CU" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
1012310186 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 ),
1012410188 SND_PCI_QUIRK (0x1558 , 0x4018 , "Clevo NV40M[BE]" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
1012510189 SND_PCI_QUIRK (0x1558 , 0x4019 , "Clevo NV40MZ" , ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE ),
1012610190 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[] = {
1031910383 SND_PCI_QUIRK (0x17aa , 0x9e56 , "Lenovo ZhaoYang CF4620Z" , ALC286_FIXUP_SONY_MIC_NO_PRESENCE ),
1032010384 SND_PCI_QUIRK (0x1849 , 0x1233 , "ASRock NUC Box 1100" , ALC233_FIXUP_NO_AUDIO_JACK ),
1032110385 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 ),
1032210388 SND_PCI_QUIRK (0x19e5 , 0x3204 , "Huawei MACH-WX9" , ALC256_FIXUP_HUAWEI_MACH_WX9_PINS ),
1032310389 SND_PCI_QUIRK (0x19e5 , 0x320f , "Huawei WRT-WX9 " , ALC256_FIXUP_ASUS_MIC_NO_PRESENCE ),
1032410390 SND_PCI_QUIRK (0x1b35 , 0x1235 , "CZC B20" , ALC269_FIXUP_CZC_B20 ),
0 commit comments