Commit 7ae0d8f1 authored by wangdicheng's avatar wangdicheng Committed by Takashi Iwai
Browse files

ALSA: hda/senary: Ensure EAPD is enabled during init



The driver sets spec->gen.own_eapd_ctl to take manual control of the
EAPD (External Amplifier). However, senary_init does not turn on the
EAPD, while senary_shutdown turns it off.

Since the generic driver skips EAPD handling when own_eapd_ctl is set,
the EAPD remains off after initialization (e.g., after resume), leaving
the codec in a non-functional state.

Explicitly call senary_auto_turn_eapd in senary_init to ensure the EAPD
is enabled and the codec is functional.

Signed-off-by: default avatarwangdicheng <wangdicheng@kylinos.cn>
Link: https://patch.msgid.link/20260303081516.583438-1-wangdich9700@163.com


Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 83307aeb
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ struct senary_spec {
	/* extra EAPD pins */
	unsigned int num_eapds;
	hda_nid_t eapds[4];
	bool dynamic_eapd;
	hda_nid_t mute_led_eapd;

	unsigned int parse_flags; /* flag for snd_hda_parse_pin_defcfg() */
@@ -131,8 +132,12 @@ static void senary_init_gpio_led(struct hda_codec *codec)

static int senary_init(struct hda_codec *codec)
{
	struct senary_spec *spec = codec->spec;

	snd_hda_gen_init(codec);
	senary_init_gpio_led(codec);
	if (!spec->dynamic_eapd)
		senary_auto_turn_eapd(codec, spec->num_eapds, spec->eapds, true);
	snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_INIT);

	return 0;