@@ -6758,6 +6758,41 @@ static void alc285_fixup_hp_spectre_x360_eb1(struct hda_codec *codec,
6758
6758
}
6759
6759
}
6760
6760
6761
+ /* GPIO1 = amplifier on/off */
6762
+ static void alc285_fixup_hp_spectre_x360_df1 (struct hda_codec * codec ,
6763
+ const struct hda_fixup * fix ,
6764
+ int action )
6765
+ {
6766
+ struct alc_spec * spec = codec -> spec ;
6767
+ static const hda_nid_t conn [] = { 0x02 };
6768
+ static const struct hda_pintbl pincfgs [] = {
6769
+ { 0x14 , 0x90170110 }, /* front/high speakers */
6770
+ { 0x17 , 0x90170130 }, /* back/bass speakers */
6771
+ { }
6772
+ };
6773
+
6774
+ // enable mute led
6775
+ alc285_fixup_hp_mute_led_coefbit (codec , fix , action );
6776
+
6777
+ switch (action ) {
6778
+ case HDA_FIXUP_ACT_PRE_PROBE :
6779
+ /* needed for amp of back speakers */
6780
+ spec -> gpio_mask |= 0x01 ;
6781
+ spec -> gpio_dir |= 0x01 ;
6782
+ snd_hda_apply_pincfgs (codec , pincfgs );
6783
+ /* share DAC to have unified volume control */
6784
+ snd_hda_override_conn_list (codec , 0x14 , ARRAY_SIZE (conn ), conn );
6785
+ snd_hda_override_conn_list (codec , 0x17 , ARRAY_SIZE (conn ), conn );
6786
+ break ;
6787
+ case HDA_FIXUP_ACT_INIT :
6788
+ /* need to toggle GPIO to enable the amp of back speakers */
6789
+ alc_update_gpio_data (codec , 0x01 , true);
6790
+ msleep (100 );
6791
+ alc_update_gpio_data (codec , 0x01 , false);
6792
+ break ;
6793
+ }
6794
+ }
6795
+
6761
6796
static void alc285_fixup_hp_spectre_x360 (struct hda_codec * codec ,
6762
6797
const struct hda_fixup * fix , int action )
6763
6798
{
@@ -7040,6 +7075,7 @@ enum {
7040
7075
ALC280_FIXUP_HP_9480M ,
7041
7076
ALC245_FIXUP_HP_X360_AMP ,
7042
7077
ALC285_FIXUP_HP_SPECTRE_X360_EB1 ,
7078
+ ALC285_FIXUP_HP_SPECTRE_X360_DF1 ,
7043
7079
ALC285_FIXUP_HP_ENVY_X360 ,
7044
7080
ALC288_FIXUP_DELL_HEADSET_MODE ,
7045
7081
ALC288_FIXUP_DELL1_MIC_NO_PRESENCE ,
@@ -8881,6 +8917,10 @@ static const struct hda_fixup alc269_fixups[] = {
8881
8917
.type = HDA_FIXUP_FUNC ,
8882
8918
.v .func = alc285_fixup_hp_spectre_x360_eb1
8883
8919
},
8920
+ [ALC285_FIXUP_HP_SPECTRE_X360_DF1 ] = {
8921
+ .type = HDA_FIXUP_FUNC ,
8922
+ .v .func = alc285_fixup_hp_spectre_x360_df1
8923
+ },
8884
8924
[ALC285_FIXUP_HP_ENVY_X360 ] = {
8885
8925
.type = HDA_FIXUP_FUNC ,
8886
8926
.v .func = alc285_fixup_hp_envy_x360 ,
@@ -9286,6 +9326,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
9286
9326
SND_PCI_QUIRK (0x103c , 0x86c1 , "HP Laptop 15-da3001TU" , ALC236_FIXUP_HP_MUTE_LED_COEFBIT2 ),
9287
9327
SND_PCI_QUIRK (0x103c , 0x86c7 , "HP Envy AiO 32" , ALC274_FIXUP_HP_ENVY_GPIO ),
9288
9328
SND_PCI_QUIRK (0x103c , 0x86e7 , "HP Spectre x360 15-eb0xxx" , ALC285_FIXUP_HP_SPECTRE_X360_EB1 ),
9329
+ SND_PCI_QUIRK (0x103c , 0x863e , "HP Spectre x360 15-df1xxx" , ALC285_FIXUP_HP_SPECTRE_X360_DF1 ),
9289
9330
SND_PCI_QUIRK (0x103c , 0x86e8 , "HP Spectre x360 15-eb0xxx" , ALC285_FIXUP_HP_SPECTRE_X360_EB1 ),
9290
9331
SND_PCI_QUIRK (0x103c , 0x86f9 , "HP Spectre x360 13-aw0xxx" , ALC285_FIXUP_HP_SPECTRE_X360_MUTE_LED ),
9291
9332
SND_PCI_QUIRK (0x103c , 0x8716 , "HP Elite Dragonfly G2 Notebook PC" , ALC285_FIXUP_HP_GPIO_AMP_INIT ),
@@ -9832,6 +9873,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
9832
9873
{.id = ALC295_FIXUP_HP_OMEN , .name = "alc295-hp-omen" },
9833
9874
{.id = ALC285_FIXUP_HP_SPECTRE_X360 , .name = "alc285-hp-spectre-x360" },
9834
9875
{.id = ALC285_FIXUP_HP_SPECTRE_X360_EB1 , .name = "alc285-hp-spectre-x360-eb1" },
9876
+ {.id = ALC285_FIXUP_HP_SPECTRE_X360_DF1 , .name = "alc285-hp-spectre-x360-df1" },
9835
9877
{.id = ALC285_FIXUP_HP_ENVY_X360 , .name = "alc285-hp-envy-x360" },
9836
9878
{.id = ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP , .name = "alc287-ideapad-bass-spk-amp" },
9837
9879
{.id = ALC623_FIXUP_LENOVO_THINKSTATION_P340 , .name = "alc623-lenovo-thinkstation-p340" },
0 commit comments