mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 04:34:03 +02:00
ALSA: hda/realtek: Add quirk for HP Pavilion All-in-One 27-ca1xxx
This HP All-in-One desktop (model 27-ca1xxx) uses an ALC274 codec and has no sound from either the internal speakers or the headphone jack. The audio output requires a combination of a specific verb setup and GPIO configuration to become functional. Additionally, the power_save feature must be disabled; otherwise, audible clicks or pops occur during power state transitions. Link: https://bugzilla.kernel.org/show_bug.cgi?id=220694 Signed-off-by: Zhang Heng <zhangheng@kylinos.cn> Link: https://patch.msgid.link/20260721113539.317561-1-zhangheng@kylinos.cn Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
b5e24d6377
commit
704de56970
|
|
@ -3863,6 +3863,16 @@ static void alc288_fixup_surface_swap_dacs(struct hda_codec *codec,
|
|||
spec->gen.preferred_dacs = preferred_pairs;
|
||||
}
|
||||
|
||||
static void alc274_fixup_hp_89e9_amp(struct hda_codec *codec,
|
||||
const struct hda_fixup *fix, int action)
|
||||
{
|
||||
if (action == HDA_FIXUP_ACT_INIT) {
|
||||
/* need to toggle GPIO to enable the amp */
|
||||
snd_hda_codec_set_gpio(codec, 0x03, 0x03, 0x03, 0);
|
||||
msleep(100);
|
||||
snd_hda_codec_set_gpio(codec, 0x03, 0x03, 0x00, 0);
|
||||
}
|
||||
}
|
||||
enum {
|
||||
ALC269_FIXUP_GPIO2,
|
||||
ALC269_FIXUP_SONY_VAIO,
|
||||
|
|
@ -4213,6 +4223,8 @@ enum {
|
|||
ALC245_FIXUP_HP_ENVY_X360_15_FH0XXX,
|
||||
ALC287_FIXUP_ACER_MICMUTE_LED,
|
||||
ALC236_FIXUP_DELL_HP_POP_NOISE,
|
||||
ALC274_FIXUP_HP_89E9_GPIO,
|
||||
ALC274_FIXUP_HP_VERBS,
|
||||
};
|
||||
|
||||
/* A special fixup for Lenovo C940 and Yoga Duet 7;
|
||||
|
|
@ -6855,6 +6867,28 @@ static const struct hda_fixup alc269_fixups[] = {
|
|||
.type = HDA_FIXUP_FUNC,
|
||||
.v.func = alc285_fixup_invalidate_dacs,
|
||||
},
|
||||
[ALC274_FIXUP_HP_89E9_GPIO] = {
|
||||
.type = HDA_FIXUP_FUNC,
|
||||
.v.func = alc274_fixup_hp_89e9_amp,
|
||||
},
|
||||
[ALC274_FIXUP_HP_VERBS] = {
|
||||
.type = HDA_FIXUP_VERBS,
|
||||
.v.verbs = (const struct hda_verb[]) {
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x0b },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x7778 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x10 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xc580 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x26 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x5757 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x62 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xa007 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x6b },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0060 },
|
||||
{ }
|
||||
},
|
||||
.chained = true,
|
||||
.chain_id = ALC274_FIXUP_HP_89E9_GPIO,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct hda_quirk alc269_fixup_tbl[] = {
|
||||
|
|
@ -7231,6 +7265,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
|
|||
SND_PCI_QUIRK(0x103c, 0x8a3d, "HP Victus 15-fb0xxx (MB 8A3D)", ALC245_FIXUP_HP_MUTE_LED_V2_COEFBIT),
|
||||
SND_PCI_QUIRK(0x103c, 0x8a4f, "HP Victus 15-fa0xxx (MB 8A4F)", ALC245_FIXUP_HP_MUTE_LED_COEFBIT),
|
||||
SND_PCI_QUIRK(0x103c, 0x8a50, "HP Victus 15-fa0xxx (MB 8A50)", ALC245_FIXUP_HP_MUTE_LED_COEFBIT),
|
||||
SND_PCI_QUIRK(0x103c, 0x8a6b, "HP Pavilion All-in-One Desktop 27-ca1xxx", ALC274_FIXUP_HP_VERBS),
|
||||
SND_PCI_QUIRK(0x103c, 0x8a6e, "HP EDNA 360", ALC287_FIXUP_CS35L41_I2C_4),
|
||||
SND_PCI_QUIRK(0x103c, 0x8a74, "HP ProBook 440 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8a75, "HP ProBook 450 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
|
||||
|
|
|
|||
|
|
@ -2306,6 +2306,8 @@ static const struct snd_pci_quirk power_save_denylist[] = {
|
|||
SND_PCI_QUIRK(0x1028, 0x0962, "Dell ALC3271", 0),
|
||||
/* https://bugzilla.kernel.org/show_bug.cgi?id=220210 */
|
||||
SND_PCI_QUIRK(0x17aa, 0x5079, "Lenovo Thinkpad E15", 0),
|
||||
/* https://bugzilla.kernel.org/show_bug.cgi?id=220694 */
|
||||
SND_PCI_QUIRK(0x103c, 0x8a6b, "HP 89E9", 0),
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user