@@ -7403,6 +7403,49 @@ static void alc245_fixup_hp_spectre_x360_eu0xxx(struct hda_codec *codec,
74037403 alc245_fixup_hp_gpio_led (codec , fix , action );
74047404}
74057405
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+
74067449/*
74077450 * ALC287 PCM hooks
74087451 */
@@ -7725,6 +7768,7 @@ enum {
77257768 ALC256_FIXUP_ACER_SFG16_MICMUTE_LED ,
77267769 ALC256_FIXUP_HEADPHONE_AMP_VOL ,
77277770 ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX ,
7771+ ALC245_FIXUP_HP_SPECTRE_X360_16_AA0XXX ,
77287772 ALC285_FIXUP_ASUS_GA403U ,
77297773 ALC285_FIXUP_ASUS_GA403U_HEADSET_MIC ,
77307774 ALC285_FIXUP_ASUS_GA403U_I2C_SPEAKER2_TO_DAC1 ,
@@ -10011,6 +10055,10 @@ static const struct hda_fixup alc269_fixups[] = {
1001110055 .type = HDA_FIXUP_FUNC ,
1001210056 .v .func = alc245_fixup_hp_spectre_x360_eu0xxx ,
1001310057 },
10058+ [ALC245_FIXUP_HP_SPECTRE_X360_16_AA0XXX ] = {
10059+ .type = HDA_FIXUP_FUNC ,
10060+ .v .func = alc245_fixup_hp_spectre_x360_16_aa0xxx ,
10061+ },
1001410062 [ALC285_FIXUP_ASUS_GA403U ] = {
1001510063 .type = HDA_FIXUP_FUNC ,
1001610064 .v .func = alc285_fixup_asus_ga403u ,
@@ -10448,7 +10496,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1044810496 SND_PCI_QUIRK (0x103c , 0x8be9 , "HP Envy 15" , ALC287_FIXUP_CS35L41_I2C_2 ),
1044910497 SND_PCI_QUIRK (0x103c , 0x8bf0 , "HP" , ALC236_FIXUP_HP_GPIO_LED ),
1045010498 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 ),
1045210500 SND_PCI_QUIRK (0x103c , 0x8c17 , "HP Spectre 16" , ALC287_FIXUP_CS35L41_I2C_2 ),
1045310501 SND_PCI_QUIRK (0x103c , 0x8c21 , "HP Pavilion Plus Laptop 14-ey0XXX" , ALC245_FIXUP_HP_X360_MUTE_LEDS ),
1045410502 SND_PCI_QUIRK (0x103c , 0x8c30 , "HP Victus 15-fb1xxx" , ALC245_FIXUP_HP_MUTE_LED_COEFBIT ),
0 commit comments