@@ -441,19 +441,19 @@ static void alc_fill_eapd_coef(struct hda_codec *codec)
441
441
alc_update_coef_idx (codec , 0x67 , 0xf000 , 0x3000 );
442
442
fallthrough ;
443
443
case 0x10ec0215 :
444
+ case 0x10ec0236 :
445
+ case 0x10ec0245 :
446
+ case 0x10ec0256 :
447
+ case 0x10ec0257 :
444
448
case 0x10ec0285 :
445
449
case 0x10ec0289 :
446
450
alc_update_coef_idx (codec , 0x36 , 1 <<13 , 0 );
447
451
fallthrough ;
448
452
case 0x10ec0230 :
449
453
case 0x10ec0233 :
450
454
case 0x10ec0235 :
451
- case 0x10ec0236 :
452
- case 0x10ec0245 :
453
455
case 0x10ec0255 :
454
- case 0x10ec0256 :
455
456
case 0x19e58326 :
456
- case 0x10ec0257 :
457
457
case 0x10ec0282 :
458
458
case 0x10ec0283 :
459
459
case 0x10ec0286 :
@@ -6742,6 +6742,25 @@ static void alc274_fixup_bind_dacs(struct hda_codec *codec,
6742
6742
codec -> power_save_node = 0 ;
6743
6743
}
6744
6744
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
+
6745
6764
/* avoid DAC 0x06 for bass speaker 0x17; it has no volume control */
6746
6765
static void alc289_fixup_asus_ga401 (struct hda_codec * codec ,
6747
6766
const struct hda_fixup * fix , int action )
@@ -6963,6 +6982,41 @@ static void alc285_fixup_hp_spectre_x360_eb1(struct hda_codec *codec,
6963
6982
}
6964
6983
}
6965
6984
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
+
6966
7020
static void alc285_fixup_hp_spectre_x360 (struct hda_codec * codec ,
6967
7021
const struct hda_fixup * fix , int action )
6968
7022
{
@@ -7761,6 +7815,7 @@ enum {
7761
7815
ALC280_FIXUP_HP_9480M ,
7762
7816
ALC245_FIXUP_HP_X360_AMP ,
7763
7817
ALC285_FIXUP_HP_SPECTRE_X360_EB1 ,
7818
+ ALC285_FIXUP_HP_SPECTRE_X360_DF1 ,
7764
7819
ALC285_FIXUP_HP_ENVY_X360 ,
7765
7820
ALC288_FIXUP_DELL_HEADSET_MODE ,
7766
7821
ALC288_FIXUP_DELL1_MIC_NO_PRESENCE ,
@@ -7970,6 +8025,7 @@ enum {
7970
8025
ALC294_FIXUP_BASS_SPEAKER_15 ,
7971
8026
ALC283_FIXUP_DELL_HP_RESUME ,
7972
8027
ALC294_FIXUP_ASUS_CS35L41_SPI_2 ,
8028
+ ALC274_FIXUP_HP_AIO_BIND_DACS ,
7973
8029
};
7974
8030
7975
8031
/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -9837,6 +9893,10 @@ static const struct hda_fixup alc269_fixups[] = {
9837
9893
.type = HDA_FIXUP_FUNC ,
9838
9894
.v .func = alc285_fixup_hp_spectre_x360_eb1
9839
9895
},
9896
+ [ALC285_FIXUP_HP_SPECTRE_X360_DF1 ] = {
9897
+ .type = HDA_FIXUP_FUNC ,
9898
+ .v .func = alc285_fixup_hp_spectre_x360_df1
9899
+ },
9840
9900
[ALC285_FIXUP_HP_ENVY_X360 ] = {
9841
9901
.type = HDA_FIXUP_FUNC ,
9842
9902
.v .func = alc285_fixup_hp_envy_x360 ,
@@ -10340,6 +10400,10 @@ static const struct hda_fixup alc269_fixups[] = {
10340
10400
.chained = true,
10341
10401
.chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC ,
10342
10402
},
10403
+ [ALC274_FIXUP_HP_AIO_BIND_DACS ] = {
10404
+ .type = HDA_FIXUP_FUNC ,
10405
+ .v .func = alc274_fixup_hp_aio_bind_dacs ,
10406
+ },
10343
10407
};
10344
10408
10345
10409
static const struct hda_quirk alc269_fixup_tbl [] = {
@@ -10564,6 +10628,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
10564
10628
SND_PCI_QUIRK (0x103c , 0x86c1 , "HP Laptop 15-da3001TU" , ALC236_FIXUP_HP_MUTE_LED_COEFBIT2 ),
10565
10629
SND_PCI_QUIRK (0x103c , 0x86c7 , "HP Envy AiO 32" , ALC274_FIXUP_HP_ENVY_GPIO ),
10566
10630
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 ),
10567
10632
SND_PCI_QUIRK (0x103c , 0x86e8 , "HP Spectre x360 15-eb0xxx" , ALC285_FIXUP_HP_SPECTRE_X360_EB1 ),
10568
10633
SND_PCI_QUIRK (0x103c , 0x86f9 , "HP Spectre x360 13-aw0xxx" , ALC285_FIXUP_HP_SPECTRE_X360_MUTE_LED ),
10569
10634
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[] = {
10768
10833
SND_PCI_QUIRK (0x103c , 0x8ca7 , "HP ZBook Fury" , ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED ),
10769
10834
SND_PCI_QUIRK (0x103c , 0x8caf , "HP Elite mt645 G8 Mobile Thin Client" , ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF ),
10770
10835
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 ),
10773
10838
SND_PCI_QUIRK (0x103c , 0x8cdf , "HP SnowWhite" , ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED ),
10774
10839
SND_PCI_QUIRK (0x103c , 0x8ce0 , "HP SnowWhite" , ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED ),
10775
10840
SND_PCI_QUIRK (0x103c , 0x8cf5 , "HP ZBook Studio 16" , ALC245_FIXUP_CS35L41_SPI_4_HP_GPIO_LED ),
10776
10841
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 ),
10777
10843
SND_PCI_QUIRK (0x103c , 0x8d84 , "HP EliteBook X G1i" , ALC285_FIXUP_HP_GPIO_LED ),
10778
10844
SND_PCI_QUIRK (0x103c , 0x8d85 , "HP EliteBook 14 G12" , ALC285_FIXUP_HP_GPIO_LED ),
10779
10845
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[] = {
10793
10859
SND_PCI_QUIRK (0x103c , 0x8da1 , "HP 16 Clipper OmniBook X" , ALC287_FIXUP_CS35L41_I2C_2 ),
10794
10860
SND_PCI_QUIRK (0x103c , 0x8da7 , "HP 14 Enstrom OmniBook X" , ALC287_FIXUP_CS35L41_I2C_2 ),
10795
10861
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 ),
10796
10863
SND_PCI_QUIRK (0x103c , 0x8de8 , "HP Gemtree" , ALC245_FIXUP_TAS2781_SPI_2 ),
10797
10864
SND_PCI_QUIRK (0x103c , 0x8de9 , "HP Gemtree" , ALC245_FIXUP_TAS2781_SPI_2 ),
10798
10865
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 ),
10799
10867
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 ),
10800
10869
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 ),
10801
10871
SND_PCI_QUIRK (0x103c , 0x8dfc , "HP EliteBook 645 G12" , ALC236_FIXUP_HP_GPIO_LED ),
10802
10872
SND_PCI_QUIRK (0x103c , 0x8dfe , "HP EliteBook 665 G12" , ALC236_FIXUP_HP_GPIO_LED ),
10803
10873
SND_PCI_QUIRK (0x103c , 0x8e11 , "HP Trekker" , ALC287_FIXUP_CS35L41_I2C_2 ),
@@ -10843,10 +10913,10 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
10843
10913
SND_PCI_QUIRK (0x1043 , 0x12a3 , "Asus N7691ZM" , ALC269_FIXUP_ASUS_N7601ZM ),
10844
10914
SND_PCI_QUIRK (0x1043 , 0x12af , "ASUS UX582ZS" , ALC245_FIXUP_CS35L41_SPI_2 ),
10845
10915
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 ),
10848
10918
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 ),
10850
10920
SND_PCI_QUIRK (0x1043 , 0x1427 , "Asus Zenbook UX31E" , ALC269VB_FIXUP_ASUS_ZENBOOK ),
10851
10921
SND_PCI_QUIRK (0x1043 , 0x1433 , "ASUS GX650PY/PZ/PV/PU/PYV/PZV/PIV/PVV" , ALC285_FIXUP_ASUS_I2C_HEADSET_MIC ),
10852
10922
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[] = {
10900
10970
SND_PCI_QUIRK (0x1043 , 0x1c92 , "ASUS ROG Strix G15" , ALC285_FIXUP_ASUS_G533Z_PINS ),
10901
10971
SND_PCI_QUIRK (0x1043 , 0x1c9f , "ASUS G614JU/JV/JI" , ALC285_FIXUP_ASUS_HEADSET_MIC ),
10902
10972
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 ),
10904
10974
SND_PCI_QUIRK (0x1043 , 0x1ccf , "ASUS G814JU/JV/JI" , ALC245_FIXUP_CS35L41_SPI_2 ),
10905
10975
SND_PCI_QUIRK (0x1043 , 0x1cdf , "ASUS G814JY/JZ/JG" , ALC245_FIXUP_CS35L41_SPI_2 ),
10906
10976
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[] = {
11494
11564
{.id = ALC295_FIXUP_HP_OMEN , .name = "alc295-hp-omen" },
11495
11565
{.id = ALC285_FIXUP_HP_SPECTRE_X360 , .name = "alc285-hp-spectre-x360" },
11496
11566
{.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" },
11497
11568
{.id = ALC285_FIXUP_HP_ENVY_X360 , .name = "alc285-hp-envy-x360" },
11498
11569
{.id = ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP , .name = "alc287-ideapad-bass-spk-amp" },
11499
11570
{.id = ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN , .name = "alc287-yoga9-bass-spk-pin" },
0 commit comments