@@ -6965,6 +6965,41 @@ static void alc285_fixup_hp_spectre_x360_eb1(struct hda_codec *codec,
69656965 }
69666966}
69676967
6968+ /* GPIO1 = amplifier on/off */
6969+ static void alc285_fixup_hp_spectre_x360_df1 (struct hda_codec * codec ,
6970+ const struct hda_fixup * fix ,
6971+ int action )
6972+ {
6973+ struct alc_spec * spec = codec -> spec ;
6974+ static const hda_nid_t conn [] = { 0x02 };
6975+ static const struct hda_pintbl pincfgs [] = {
6976+ { 0x14 , 0x90170110 }, /* front/high speakers */
6977+ { 0x17 , 0x90170130 }, /* back/bass speakers */
6978+ { }
6979+ };
6980+
6981+ // enable mute led
6982+ alc285_fixup_hp_mute_led_coefbit (codec , fix , action );
6983+
6984+ switch (action ) {
6985+ case HDA_FIXUP_ACT_PRE_PROBE :
6986+ /* needed for amp of back speakers */
6987+ spec -> gpio_mask |= 0x01 ;
6988+ spec -> gpio_dir |= 0x01 ;
6989+ snd_hda_apply_pincfgs (codec , pincfgs );
6990+ /* share DAC to have unified volume control */
6991+ snd_hda_override_conn_list (codec , 0x14 , ARRAY_SIZE (conn ), conn );
6992+ snd_hda_override_conn_list (codec , 0x17 , ARRAY_SIZE (conn ), conn );
6993+ break ;
6994+ case HDA_FIXUP_ACT_INIT :
6995+ /* need to toggle GPIO to enable the amp of back speakers */
6996+ alc_update_gpio_data (codec , 0x01 , true);
6997+ msleep (100 );
6998+ alc_update_gpio_data (codec , 0x01 , false);
6999+ break ;
7000+ }
7001+ }
7002+
69687003static void alc285_fixup_hp_spectre_x360 (struct hda_codec * codec ,
69697004 const struct hda_fixup * fix , int action )
69707005{
@@ -7730,6 +7765,7 @@ enum {
77307765 ALC280_FIXUP_HP_9480M ,
77317766 ALC245_FIXUP_HP_X360_AMP ,
77327767 ALC285_FIXUP_HP_SPECTRE_X360_EB1 ,
7768+ ALC285_FIXUP_HP_SPECTRE_X360_DF1 ,
77337769 ALC285_FIXUP_HP_ENVY_X360 ,
77347770 ALC288_FIXUP_DELL_HEADSET_MODE ,
77357771 ALC288_FIXUP_DELL1_MIC_NO_PRESENCE ,
@@ -9798,6 +9834,10 @@ static const struct hda_fixup alc269_fixups[] = {
97989834 .type = HDA_FIXUP_FUNC ,
97999835 .v .func = alc285_fixup_hp_spectre_x360_eb1
98009836 },
9837+ [ALC285_FIXUP_HP_SPECTRE_X360_DF1 ] = {
9838+ .type = HDA_FIXUP_FUNC ,
9839+ .v .func = alc285_fixup_hp_spectre_x360_df1
9840+ },
98019841 [ALC285_FIXUP_HP_ENVY_X360 ] = {
98029842 .type = HDA_FIXUP_FUNC ,
98039843 .v .func = alc285_fixup_hp_envy_x360 ,
@@ -10515,6 +10555,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
1051510555 SND_PCI_QUIRK (0x103c , 0x86c1 , "HP Laptop 15-da3001TU" , ALC236_FIXUP_HP_MUTE_LED_COEFBIT2 ),
1051610556 SND_PCI_QUIRK (0x103c , 0x86c7 , "HP Envy AiO 32" , ALC274_FIXUP_HP_ENVY_GPIO ),
1051710557 SND_PCI_QUIRK (0x103c , 0x86e7 , "HP Spectre x360 15-eb0xxx" , ALC285_FIXUP_HP_SPECTRE_X360_EB1 ),
10558+ SND_PCI_QUIRK (0x103c , 0x863e , "HP Spectre x360 15-df1xxx" , ALC285_FIXUP_HP_SPECTRE_X360_DF1 ),
1051810559 SND_PCI_QUIRK (0x103c , 0x86e8 , "HP Spectre x360 15-eb0xxx" , ALC285_FIXUP_HP_SPECTRE_X360_EB1 ),
1051910560 SND_PCI_QUIRK (0x103c , 0x86f9 , "HP Spectre x360 13-aw0xxx" , ALC285_FIXUP_HP_SPECTRE_X360_MUTE_LED ),
1052010561 SND_PCI_QUIRK (0x103c , 0x8716 , "HP Elite Dragonfly G2 Notebook PC" , ALC285_FIXUP_HP_GPIO_AMP_INIT ),
@@ -11404,6 +11445,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
1140411445 {.id = ALC295_FIXUP_HP_OMEN , .name = "alc295-hp-omen" },
1140511446 {.id = ALC285_FIXUP_HP_SPECTRE_X360 , .name = "alc285-hp-spectre-x360" },
1140611447 {.id = ALC285_FIXUP_HP_SPECTRE_X360_EB1 , .name = "alc285-hp-spectre-x360-eb1" },
11448+ {.id = ALC285_FIXUP_HP_SPECTRE_X360_DF1 , .name = "alc285-hp-spectre-x360-df1" },
1140711449 {.id = ALC285_FIXUP_HP_ENVY_X360 , .name = "alc285-hp-envy-x360" },
1140811450 {.id = ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP , .name = "alc287-ideapad-bass-spk-amp" },
1140911451 {.id = ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN , .name = "alc287-yoga9-bass-spk-pin" },
0 commit comments