@@ -441,19 +441,19 @@ static void alc_fill_eapd_coef(struct hda_codec *codec)
441441 alc_update_coef_idx (codec , 0x67 , 0xf000 , 0x3000 );
442442 fallthrough ;
443443 case 0x10ec0215 :
444+ case 0x10ec0236 :
445+ case 0x10ec0245 :
446+ case 0x10ec0256 :
447+ case 0x10ec0257 :
444448 case 0x10ec0285 :
445449 case 0x10ec0289 :
446450 alc_update_coef_idx (codec , 0x36 , 1 <<13 , 0 );
447451 fallthrough ;
448452 case 0x10ec0230 :
449453 case 0x10ec0233 :
450454 case 0x10ec0235 :
451- case 0x10ec0236 :
452- case 0x10ec0245 :
453455 case 0x10ec0255 :
454- case 0x10ec0256 :
455456 case 0x19e58326 :
456- case 0x10ec0257 :
457457 case 0x10ec0282 :
458458 case 0x10ec0283 :
459459 case 0x10ec0286 :
@@ -6742,6 +6742,25 @@ static void alc274_fixup_bind_dacs(struct hda_codec *codec,
67426742 codec -> power_save_node = 0 ;
67436743}
67446744
6745+ /* avoid DAC 0x06 for speaker switch 0x17; it has no volume control */
6746+ static void alc274_fixup_hp_aio_bind_dacs (struct hda_codec * codec ,
6747+ const struct hda_fixup * fix , int action )
6748+ {
6749+ static const hda_nid_t conn [] = { 0x02 , 0x03 }; /* exclude 0x06 */
6750+ /* The speaker is routed to the Node 0x06 by a mistake, thus the
6751+ * speaker's volume can't be adjusted since the node doesn't have
6752+ * Amp-out capability. Assure the speaker and lineout pin to be
6753+ * coupled with DAC NID 0x02.
6754+ */
6755+ static const hda_nid_t preferred_pairs [] = {
6756+ 0x16 , 0x02 , 0x17 , 0x02 , 0x21 , 0x03 , 0
6757+ };
6758+ struct alc_spec * spec = codec -> spec ;
6759+
6760+ snd_hda_override_conn_list (codec , 0x17 , ARRAY_SIZE (conn ), conn );
6761+ spec -> gen .preferred_dacs = preferred_pairs ;
6762+ }
6763+
67456764/* avoid DAC 0x06 for bass speaker 0x17; it has no volume control */
67466765static void alc289_fixup_asus_ga401 (struct hda_codec * codec ,
67476766 const struct hda_fixup * fix , int action )
@@ -6963,6 +6982,41 @@ static void alc285_fixup_hp_spectre_x360_eb1(struct hda_codec *codec,
69636982 }
69646983}
69656984
6985+ /* GPIO1 = amplifier on/off */
6986+ static void alc285_fixup_hp_spectre_x360_df1 (struct hda_codec * codec ,
6987+ const struct hda_fixup * fix ,
6988+ int action )
6989+ {
6990+ struct alc_spec * spec = codec -> spec ;
6991+ static const hda_nid_t conn [] = { 0x02 };
6992+ static const struct hda_pintbl pincfgs [] = {
6993+ { 0x14 , 0x90170110 }, /* front/high speakers */
6994+ { 0x17 , 0x90170130 }, /* back/bass speakers */
6995+ { }
6996+ };
6997+
6998+ // enable mute led
6999+ alc285_fixup_hp_mute_led_coefbit (codec , fix , action );
7000+
7001+ switch (action ) {
7002+ case HDA_FIXUP_ACT_PRE_PROBE :
7003+ /* needed for amp of back speakers */
7004+ spec -> gpio_mask |= 0x01 ;
7005+ spec -> gpio_dir |= 0x01 ;
7006+ snd_hda_apply_pincfgs (codec , pincfgs );
7007+ /* share DAC to have unified volume control */
7008+ snd_hda_override_conn_list (codec , 0x14 , ARRAY_SIZE (conn ), conn );
7009+ snd_hda_override_conn_list (codec , 0x17 , ARRAY_SIZE (conn ), conn );
7010+ break ;
7011+ case HDA_FIXUP_ACT_INIT :
7012+ /* need to toggle GPIO to enable the amp of back speakers */
7013+ alc_update_gpio_data (codec , 0x01 , true);
7014+ msleep (100 );
7015+ alc_update_gpio_data (codec , 0x01 , false);
7016+ break ;
7017+ }
7018+ }
7019+
69667020static void alc285_fixup_hp_spectre_x360 (struct hda_codec * codec ,
69677021 const struct hda_fixup * fix , int action )
69687022{
@@ -7761,6 +7815,7 @@ enum {
77617815 ALC280_FIXUP_HP_9480M ,
77627816 ALC245_FIXUP_HP_X360_AMP ,
77637817 ALC285_FIXUP_HP_SPECTRE_X360_EB1 ,
7818+ ALC285_FIXUP_HP_SPECTRE_X360_DF1 ,
77647819 ALC285_FIXUP_HP_ENVY_X360 ,
77657820 ALC288_FIXUP_DELL_HEADSET_MODE ,
77667821 ALC288_FIXUP_DELL1_MIC_NO_PRESENCE ,
@@ -7970,6 +8025,7 @@ enum {
79708025 ALC294_FIXUP_BASS_SPEAKER_15 ,
79718026 ALC283_FIXUP_DELL_HP_RESUME ,
79728027 ALC294_FIXUP_ASUS_CS35L41_SPI_2 ,
8028+ ALC274_FIXUP_HP_AIO_BIND_DACS ,
79738029};
79748030
79758031/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -9837,6 +9893,10 @@ static const struct hda_fixup alc269_fixups[] = {
98379893 .type = HDA_FIXUP_FUNC ,
98389894 .v .func = alc285_fixup_hp_spectre_x360_eb1
98399895 },
9896+ [ALC285_FIXUP_HP_SPECTRE_X360_DF1 ] = {
9897+ .type = HDA_FIXUP_FUNC ,
9898+ .v .func = alc285_fixup_hp_spectre_x360_df1
9899+ },
98409900 [ALC285_FIXUP_HP_ENVY_X360 ] = {
98419901 .type = HDA_FIXUP_FUNC ,
98429902 .v .func = alc285_fixup_hp_envy_x360 ,
@@ -10340,6 +10400,10 @@ static const struct hda_fixup alc269_fixups[] = {
1034010400 .chained = true,
1034110401 .chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC ,
1034210402 },
10403+ [ALC274_FIXUP_HP_AIO_BIND_DACS ] = {
10404+ .type = HDA_FIXUP_FUNC ,
10405+ .v .func = alc274_fixup_hp_aio_bind_dacs ,
10406+ },
1034310407};
1034410408
1034510409static const struct hda_quirk alc269_fixup_tbl [] = {
@@ -10564,6 +10628,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
1056410628 SND_PCI_QUIRK (0x103c , 0x86c1 , "HP Laptop 15-da3001TU" , ALC236_FIXUP_HP_MUTE_LED_COEFBIT2 ),
1056510629 SND_PCI_QUIRK (0x103c , 0x86c7 , "HP Envy AiO 32" , ALC274_FIXUP_HP_ENVY_GPIO ),
1056610630 SND_PCI_QUIRK (0x103c , 0x86e7 , "HP Spectre x360 15-eb0xxx" , ALC285_FIXUP_HP_SPECTRE_X360_EB1 ),
10631+ SND_PCI_QUIRK (0x103c , 0x863e , "HP Spectre x360 15-df1xxx" , ALC285_FIXUP_HP_SPECTRE_X360_DF1 ),
1056710632 SND_PCI_QUIRK (0x103c , 0x86e8 , "HP Spectre x360 15-eb0xxx" , ALC285_FIXUP_HP_SPECTRE_X360_EB1 ),
1056810633 SND_PCI_QUIRK (0x103c , 0x86f9 , "HP Spectre x360 13-aw0xxx" , ALC285_FIXUP_HP_SPECTRE_X360_MUTE_LED ),
1056910634 SND_PCI_QUIRK (0x103c , 0x8716 , "HP Elite Dragonfly G2 Notebook PC" , ALC285_FIXUP_HP_GPIO_AMP_INIT ),
@@ -10768,12 +10833,13 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
1076810833 SND_PCI_QUIRK (0x103c , 0x8ca7 , "HP ZBook Fury" , ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED ),
1076910834 SND_PCI_QUIRK (0x103c , 0x8caf , "HP Elite mt645 G8 Mobile Thin Client" , ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF ),
1077010835 SND_PCI_QUIRK (0x103c , 0x8cbd , "HP Pavilion Aero Laptop 13-bg0xxx" , ALC245_FIXUP_HP_X360_MUTE_LEDS ),
10771- SND_PCI_QUIRK (0x103c , 0x8cdd , "HP Spectre" , ALC287_FIXUP_CS35L41_I2C_2 ),
10772- SND_PCI_QUIRK (0x103c , 0x8cde , "HP Spectre " , ALC287_FIXUP_CS35L41_I2C_2 ),
10836+ SND_PCI_QUIRK (0x103c , 0x8cdd , "HP Spectre" , ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX ),
10837+ SND_PCI_QUIRK (0x103c , 0x8cde , "HP OmniBook Ultra Flip Laptop 14t " , ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX ),
1077310838 SND_PCI_QUIRK (0x103c , 0x8cdf , "HP SnowWhite" , ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED ),
1077410839 SND_PCI_QUIRK (0x103c , 0x8ce0 , "HP SnowWhite" , ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED ),
1077510840 SND_PCI_QUIRK (0x103c , 0x8cf5 , "HP ZBook Studio 16" , ALC245_FIXUP_CS35L41_SPI_4_HP_GPIO_LED ),
1077610841 SND_PCI_QUIRK (0x103c , 0x8d01 , "HP ZBook Power 14 G12" , ALC285_FIXUP_HP_GPIO_LED ),
10842+ SND_PCI_QUIRK (0x103c , 0x8d18 , "HP EliteStudio 8 AIO" , ALC274_FIXUP_HP_AIO_BIND_DACS ),
1077710843 SND_PCI_QUIRK (0x103c , 0x8d84 , "HP EliteBook X G1i" , ALC285_FIXUP_HP_GPIO_LED ),
1077810844 SND_PCI_QUIRK (0x103c , 0x8d85 , "HP EliteBook 14 G12" , ALC285_FIXUP_HP_GPIO_LED ),
1077910845 SND_PCI_QUIRK (0x103c , 0x8d86 , "HP Elite X360 14 G12" , ALC285_FIXUP_HP_GPIO_LED ),
@@ -10793,11 +10859,15 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
1079310859 SND_PCI_QUIRK (0x103c , 0x8da1 , "HP 16 Clipper OmniBook X" , ALC287_FIXUP_CS35L41_I2C_2 ),
1079410860 SND_PCI_QUIRK (0x103c , 0x8da7 , "HP 14 Enstrom OmniBook X" , ALC287_FIXUP_CS35L41_I2C_2 ),
1079510861 SND_PCI_QUIRK (0x103c , 0x8da8 , "HP 16 Piston OmniBook X" , ALC287_FIXUP_CS35L41_I2C_2 ),
10862+ SND_PCI_QUIRK (0x103c , 0x8dd4 , "HP EliteStudio 8 AIO" , ALC274_FIXUP_HP_AIO_BIND_DACS ),
1079610863 SND_PCI_QUIRK (0x103c , 0x8de8 , "HP Gemtree" , ALC245_FIXUP_TAS2781_SPI_2 ),
1079710864 SND_PCI_QUIRK (0x103c , 0x8de9 , "HP Gemtree" , ALC245_FIXUP_TAS2781_SPI_2 ),
1079810865 SND_PCI_QUIRK (0x103c , 0x8dec , "HP EliteBook 640 G12" , ALC236_FIXUP_HP_GPIO_LED ),
10866+ SND_PCI_QUIRK (0x103c , 0x8ded , "HP EliteBook 640 G12" , ALC236_FIXUP_HP_GPIO_LED ),
1079910867 SND_PCI_QUIRK (0x103c , 0x8dee , "HP EliteBook 660 G12" , ALC236_FIXUP_HP_GPIO_LED ),
10868+ SND_PCI_QUIRK (0x103c , 0x8def , "HP EliteBook 660 G12" , ALC236_FIXUP_HP_GPIO_LED ),
1080010869 SND_PCI_QUIRK (0x103c , 0x8df0 , "HP EliteBook 630 G12" , ALC236_FIXUP_HP_GPIO_LED ),
10870+ SND_PCI_QUIRK (0x103c , 0x8df1 , "HP EliteBook 630 G12" , ALC236_FIXUP_HP_GPIO_LED ),
1080110871 SND_PCI_QUIRK (0x103c , 0x8dfc , "HP EliteBook 645 G12" , ALC236_FIXUP_HP_GPIO_LED ),
1080210872 SND_PCI_QUIRK (0x103c , 0x8dfe , "HP EliteBook 665 G12" , ALC236_FIXUP_HP_GPIO_LED ),
1080310873 SND_PCI_QUIRK (0x103c , 0x8e11 , "HP Trekker" , ALC287_FIXUP_CS35L41_I2C_2 ),
@@ -10843,10 +10913,10 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
1084310913 SND_PCI_QUIRK (0x1043 , 0x12a3 , "Asus N7691ZM" , ALC269_FIXUP_ASUS_N7601ZM ),
1084410914 SND_PCI_QUIRK (0x1043 , 0x12af , "ASUS UX582ZS" , ALC245_FIXUP_CS35L41_SPI_2 ),
1084510915 SND_PCI_QUIRK (0x1043 , 0x12b4 , "ASUS B3405CCA / P3405CCA" , ALC294_FIXUP_ASUS_CS35L41_SPI_2 ),
10846- SND_PCI_QUIRK (0x1043 , 0x12e0 , "ASUS X541SA" , ALC256_FIXUP_ASUS_MIC ),
10847- SND_PCI_QUIRK (0x1043 , 0x12f0 , "ASUS X541UV" , ALC256_FIXUP_ASUS_MIC ),
10916+ SND_PCI_QUIRK (0x1043 , 0x12e0 , "ASUS X541SA" , ALC256_FIXUP_ASUS_MIC_NO_PRESENCE ),
10917+ SND_PCI_QUIRK (0x1043 , 0x12f0 , "ASUS X541UV" , ALC256_FIXUP_ASUS_MIC_NO_PRESENCE ),
1084810918 SND_PCI_QUIRK (0x1043 , 0x1313 , "Asus K42JZ" , ALC269VB_FIXUP_ASUS_MIC_NO_PRESENCE ),
10849- SND_PCI_QUIRK (0x1043 , 0x13b0 , "ASUS Z550SA" , ALC256_FIXUP_ASUS_MIC ),
10919+ SND_PCI_QUIRK (0x1043 , 0x13b0 , "ASUS Z550SA" , ALC256_FIXUP_ASUS_MIC_NO_PRESENCE ),
1085010920 SND_PCI_QUIRK (0x1043 , 0x1427 , "Asus Zenbook UX31E" , ALC269VB_FIXUP_ASUS_ZENBOOK ),
1085110921 SND_PCI_QUIRK (0x1043 , 0x1433 , "ASUS GX650PY/PZ/PV/PU/PYV/PZV/PIV/PVV" , ALC285_FIXUP_ASUS_I2C_HEADSET_MIC ),
1085210922 SND_PCI_QUIRK (0x1043 , 0x1460 , "Asus VivoBook 15" , ALC256_FIXUP_ASUS_MIC_NO_PRESENCE ),
@@ -10900,7 +10970,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
1090010970 SND_PCI_QUIRK (0x1043 , 0x1c92 , "ASUS ROG Strix G15" , ALC285_FIXUP_ASUS_G533Z_PINS ),
1090110971 SND_PCI_QUIRK (0x1043 , 0x1c9f , "ASUS G614JU/JV/JI" , ALC285_FIXUP_ASUS_HEADSET_MIC ),
1090210972 SND_PCI_QUIRK (0x1043 , 0x1caf , "ASUS G634JY/JZ/JI/JG" , ALC285_FIXUP_ASUS_SPI_REAR_SPEAKERS ),
10903- SND_PCI_QUIRK (0x1043 , 0x1ccd , "ASUS X555UB" , ALC256_FIXUP_ASUS_MIC ),
10973+ SND_PCI_QUIRK (0x1043 , 0x1ccd , "ASUS X555UB" , ALC256_FIXUP_ASUS_MIC_NO_PRESENCE ),
1090410974 SND_PCI_QUIRK (0x1043 , 0x1ccf , "ASUS G814JU/JV/JI" , ALC245_FIXUP_CS35L41_SPI_2 ),
1090510975 SND_PCI_QUIRK (0x1043 , 0x1cdf , "ASUS G814JY/JZ/JG" , ALC245_FIXUP_CS35L41_SPI_2 ),
1090610976 SND_PCI_QUIRK (0x1043 , 0x1cef , "ASUS G834JY/JZ/JI/JG" , ALC285_FIXUP_ASUS_HEADSET_MIC ),
@@ -11494,6 +11564,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
1149411564 {.id = ALC295_FIXUP_HP_OMEN , .name = "alc295-hp-omen" },
1149511565 {.id = ALC285_FIXUP_HP_SPECTRE_X360 , .name = "alc285-hp-spectre-x360" },
1149611566 {.id = ALC285_FIXUP_HP_SPECTRE_X360_EB1 , .name = "alc285-hp-spectre-x360-eb1" },
11567+ {.id = ALC285_FIXUP_HP_SPECTRE_X360_DF1 , .name = "alc285-hp-spectre-x360-df1" },
1149711568 {.id = ALC285_FIXUP_HP_ENVY_X360 , .name = "alc285-hp-envy-x360" },
1149811569 {.id = ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP , .name = "alc287-ideapad-bass-spk-amp" },
1149911570 {.id = ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN , .name = "alc287-yoga9-bass-spk-pin" },
0 commit comments