Skip to content

Commit 557f6e4

Browse files
chplattnertiwai
authored andcommitted
ALSA: hda: Sound support for HP Spectre x360 16 inch model 2024
Included solution with ALC287/CS35L41 did not cover full function, 14 inch code blocked. Forcing output for treble/bass speaker to connection 0x02, setting pin configs for LEDs and re-powering amp and calling fixups for cs35l41, mute and gpio leds was a working combination to reach correct behaviour. Signed-off-by: christoph.plattner <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Takashi Iwai <[email protected]>
1 parent 8cf0b93 commit 557f6e4

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

sound/pci/hda/patch_realtek.c

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)