mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
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: wangdicheng <wangdicheng@kylinos.cn> Link: https://patch.msgid.link/20260303081516.583438-1-wangdich9700@163.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
committed by
Takashi Iwai
parent
83307aebe6
commit
7ae0d8f1ab
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user