@@ -7403,6 +7403,49 @@ static void alc245_fixup_hp_spectre_x360_eu0xxx(struct hda_codec *codec,
7403
7403
alc245_fixup_hp_gpio_led (codec , fix , action );
7404
7404
}
7405
7405
7406
+ /* some changes for Spectre x360 16, 2024 model */
7407
+ static void alc245_fixup_hp_spectre_x360_16_aa0xxx (struct hda_codec * codec ,
7408
+ const struct hda_fixup * fix , int action )
7409
+ {
7410
+ /*
7411
+ * The Pin Complex 0x14 for the treble speakers is wrongly reported as
7412
+ * unconnected.
7413
+ * The Pin Complex 0x17 for the bass speakers has the lowest association
7414
+ * and sequence values so shift it up a bit to squeeze 0x14 in.
7415
+ */
7416
+ struct alc_spec * spec = codec -> spec ;
7417
+ static const struct hda_pintbl pincfgs [] = {
7418
+ { 0x14 , 0x90170110 }, // top/treble
7419
+ { 0x17 , 0x90170111 }, // bottom/bass
7420
+ { }
7421
+ };
7422
+
7423
+ /*
7424
+ * Force DAC 0x02 for the bass speakers 0x17.
7425
+ */
7426
+ static const hda_nid_t conn [] = { 0x02 };
7427
+
7428
+ switch (action ) {
7429
+ case HDA_FIXUP_ACT_PRE_PROBE :
7430
+ /* needed for amp of back speakers */
7431
+ spec -> gpio_mask |= 0x01 ;
7432
+ spec -> gpio_dir |= 0x01 ;
7433
+ snd_hda_apply_pincfgs (codec , pincfgs );
7434
+ snd_hda_override_conn_list (codec , 0x17 , ARRAY_SIZE (conn ), conn );
7435
+ break ;
7436
+ case HDA_FIXUP_ACT_INIT :
7437
+ /* need to toggle GPIO to enable the amp of back speakers */
7438
+ alc_update_gpio_data (codec , 0x01 , true);
7439
+ msleep (100 );
7440
+ alc_update_gpio_data (codec , 0x01 , false);
7441
+ break ;
7442
+ }
7443
+
7444
+ cs35l41_fixup_i2c_two (codec , fix , action );
7445
+ alc245_fixup_hp_mute_led_coefbit (codec , fix , action );
7446
+ alc245_fixup_hp_gpio_led (codec , fix , action );
7447
+ }
7448
+
7406
7449
/*
7407
7450
* ALC287 PCM hooks
7408
7451
*/
@@ -7725,6 +7768,7 @@ enum {
7725
7768
ALC256_FIXUP_ACER_SFG16_MICMUTE_LED ,
7726
7769
ALC256_FIXUP_HEADPHONE_AMP_VOL ,
7727
7770
ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX ,
7771
+ ALC245_FIXUP_HP_SPECTRE_X360_16_AA0XXX ,
7728
7772
ALC285_FIXUP_ASUS_GA403U ,
7729
7773
ALC285_FIXUP_ASUS_GA403U_HEADSET_MIC ,
7730
7774
ALC285_FIXUP_ASUS_GA403U_I2C_SPEAKER2_TO_DAC1 ,
@@ -10011,6 +10055,10 @@ static const struct hda_fixup alc269_fixups[] = {
10011
10055
.type = HDA_FIXUP_FUNC ,
10012
10056
.v .func = alc245_fixup_hp_spectre_x360_eu0xxx ,
10013
10057
},
10058
+ [ALC245_FIXUP_HP_SPECTRE_X360_16_AA0XXX ] = {
10059
+ .type = HDA_FIXUP_FUNC ,
10060
+ .v .func = alc245_fixup_hp_spectre_x360_16_aa0xxx ,
10061
+ },
10014
10062
[ALC285_FIXUP_ASUS_GA403U ] = {
10015
10063
.type = HDA_FIXUP_FUNC ,
10016
10064
.v .func = alc285_fixup_asus_ga403u ,
@@ -10448,7 +10496,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
10448
10496
SND_PCI_QUIRK (0x103c , 0x8be9 , "HP Envy 15" , ALC287_FIXUP_CS35L41_I2C_2 ),
10449
10497
SND_PCI_QUIRK (0x103c , 0x8bf0 , "HP" , ALC236_FIXUP_HP_GPIO_LED ),
10450
10498
SND_PCI_QUIRK (0x103c , 0x8c15 , "HP Spectre x360 2-in-1 Laptop 14-eu0xxx" , ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX ),
10451
- SND_PCI_QUIRK (0x103c , 0x8c16 , "HP Spectre 16 " , ALC287_FIXUP_CS35L41_I2C_2 ),
10499
+ SND_PCI_QUIRK (0x103c , 0x8c16 , "HP Spectre x360 2-in-1 Laptop 16-aa0xxx " , ALC245_FIXUP_HP_SPECTRE_X360_16_AA0XXX ),
10452
10500
SND_PCI_QUIRK (0x103c , 0x8c17 , "HP Spectre 16" , ALC287_FIXUP_CS35L41_I2C_2 ),
10453
10501
SND_PCI_QUIRK (0x103c , 0x8c21 , "HP Pavilion Plus Laptop 14-ey0XXX" , ALC245_FIXUP_HP_X360_MUTE_LEDS ),
10454
10502
SND_PCI_QUIRK (0x103c , 0x8c30 , "HP Victus 15-fb1xxx" , ALC245_FIXUP_HP_MUTE_LED_COEFBIT ),
0 commit comments