@@ -6963,6 +6963,41 @@ static void alc285_fixup_hp_spectre_x360_eb1(struct hda_codec *codec,
6963
6963
}
6964
6964
}
6965
6965
6966
+ /* GPIO1 = amplifier on/off */
6967
+ static void alc285_fixup_hp_spectre_x360_df1 (struct hda_codec * codec ,
6968
+ const struct hda_fixup * fix ,
6969
+ int action )
6970
+ {
6971
+ struct alc_spec * spec = codec -> spec ;
6972
+ static const hda_nid_t conn [] = { 0x02 };
6973
+ static const struct hda_pintbl pincfgs [] = {
6974
+ { 0x14 , 0x90170110 }, /* front/high speakers */
6975
+ { 0x17 , 0x90170130 }, /* back/bass speakers */
6976
+ { }
6977
+ };
6978
+
6979
+ // enable mute led
6980
+ alc285_fixup_hp_mute_led_coefbit (codec , fix , action );
6981
+
6982
+ switch (action ) {
6983
+ case HDA_FIXUP_ACT_PRE_PROBE :
6984
+ /* needed for amp of back speakers */
6985
+ spec -> gpio_mask |= 0x01 ;
6986
+ spec -> gpio_dir |= 0x01 ;
6987
+ snd_hda_apply_pincfgs (codec , pincfgs );
6988
+ /* share DAC to have unified volume control */
6989
+ snd_hda_override_conn_list (codec , 0x14 , ARRAY_SIZE (conn ), conn );
6990
+ snd_hda_override_conn_list (codec , 0x17 , ARRAY_SIZE (conn ), conn );
6991
+ break ;
6992
+ case HDA_FIXUP_ACT_INIT :
6993
+ /* need to toggle GPIO to enable the amp of back speakers */
6994
+ alc_update_gpio_data (codec , 0x01 , true);
6995
+ msleep (100 );
6996
+ alc_update_gpio_data (codec , 0x01 , false);
6997
+ break ;
6998
+ }
6999
+ }
7000
+
6966
7001
static void alc285_fixup_hp_spectre_x360 (struct hda_codec * codec ,
6967
7002
const struct hda_fixup * fix , int action )
6968
7003
{
@@ -7743,6 +7778,7 @@ enum {
7743
7778
ALC280_FIXUP_HP_9480M ,
7744
7779
ALC245_FIXUP_HP_X360_AMP ,
7745
7780
ALC285_FIXUP_HP_SPECTRE_X360_EB1 ,
7781
+ ALC285_FIXUP_HP_SPECTRE_X360_DF1 ,
7746
7782
ALC285_FIXUP_HP_ENVY_X360 ,
7747
7783
ALC288_FIXUP_DELL_HEADSET_MODE ,
7748
7784
ALC288_FIXUP_DELL1_MIC_NO_PRESENCE ,
@@ -9818,6 +9854,10 @@ static const struct hda_fixup alc269_fixups[] = {
9818
9854
.type = HDA_FIXUP_FUNC ,
9819
9855
.v .func = alc285_fixup_hp_spectre_x360_eb1
9820
9856
},
9857
+ [ALC285_FIXUP_HP_SPECTRE_X360_DF1 ] = {
9858
+ .type = HDA_FIXUP_FUNC ,
9859
+ .v .func = alc285_fixup_hp_spectre_x360_df1
9860
+ },
9821
9861
[ALC285_FIXUP_HP_ENVY_X360 ] = {
9822
9862
.type = HDA_FIXUP_FUNC ,
9823
9863
.v .func = alc285_fixup_hp_envy_x360 ,
@@ -10541,6 +10581,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
10541
10581
SND_PCI_QUIRK (0x103c , 0x86c1 , "HP Laptop 15-da3001TU" , ALC236_FIXUP_HP_MUTE_LED_COEFBIT2 ),
10542
10582
SND_PCI_QUIRK (0x103c , 0x86c7 , "HP Envy AiO 32" , ALC274_FIXUP_HP_ENVY_GPIO ),
10543
10583
SND_PCI_QUIRK (0x103c , 0x86e7 , "HP Spectre x360 15-eb0xxx" , ALC285_FIXUP_HP_SPECTRE_X360_EB1 ),
10584
+ SND_PCI_QUIRK (0x103c , 0x863e , "HP Spectre x360 15-df1xxx" , ALC285_FIXUP_HP_SPECTRE_X360_DF1 ),
10544
10585
SND_PCI_QUIRK (0x103c , 0x86e8 , "HP Spectre x360 15-eb0xxx" , ALC285_FIXUP_HP_SPECTRE_X360_EB1 ),
10545
10586
SND_PCI_QUIRK (0x103c , 0x86f9 , "HP Spectre x360 13-aw0xxx" , ALC285_FIXUP_HP_SPECTRE_X360_MUTE_LED ),
10546
10587
SND_PCI_QUIRK (0x103c , 0x8716 , "HP Elite Dragonfly G2 Notebook PC" , ALC285_FIXUP_HP_GPIO_AMP_INIT ),
@@ -11457,6 +11498,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
11457
11498
{.id = ALC295_FIXUP_HP_OMEN , .name = "alc295-hp-omen" },
11458
11499
{.id = ALC285_FIXUP_HP_SPECTRE_X360 , .name = "alc285-hp-spectre-x360" },
11459
11500
{.id = ALC285_FIXUP_HP_SPECTRE_X360_EB1 , .name = "alc285-hp-spectre-x360-eb1" },
11501
+ {.id = ALC285_FIXUP_HP_SPECTRE_X360_DF1 , .name = "alc285-hp-spectre-x360-df1" },
11460
11502
{.id = ALC285_FIXUP_HP_ENVY_X360 , .name = "alc285-hp-envy-x360" },
11461
11503
{.id = ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP , .name = "alc287-ideapad-bass-spk-amp" },
11462
11504
{.id = ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN , .name = "alc287-yoga9-bass-spk-pin" },
0 commit comments