ALSA: hda: Fix codec device field initializan
Commitf2bd1c5ae2
("ALSA: hda: Fix page fault in snd_hda_codec_shutdown()") relocated initialization of several codec device fields. Due to differences between codec_exec_verb() and snd_hdac_bus_exec_bus() in how they handle VERB execution - the latter does not touch PM - assigning ->exec_verb to codec_exec_verb() causes PM to be engaged before it is configured for the device. Configuration of PM for the ASoC HDAudio sound card is done with snd_hda_set_power_save() during skl_hda_audio_probe() whereas the assignment happens early, in snd_hda_codec_device_init(). Revert to previous behavior to avoid problems caused by too early PM manipulation. Suggested-by: Jason Montleon <jmontleo@redhat.com> Link: https://lore.kernel.org/regressions/CALFERdzKUodLsm6=Ub3g2+PxpNpPtPq3bGBLbff=eZr9_S=YVA@mail.gmail.com Fixes:f2bd1c5ae2
("ALSA: hda: Fix page fault in snd_hda_codec_shutdown()") Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://lore.kernel.org/r/20230210165541.3543604-1-cezary.rojewski@intel.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Родитель
18d7e16c91
Коммит
3af4a4f7a2
|
@ -927,7 +927,6 @@ snd_hda_codec_device_init(struct hda_bus *bus, unsigned int codec_addr,
|
|||
codec->depop_delay = -1;
|
||||
codec->fixup_id = HDA_FIXUP_ID_NOT_SET;
|
||||
codec->core.dev.release = snd_hda_codec_dev_release;
|
||||
codec->core.exec_verb = codec_exec_verb;
|
||||
codec->core.type = HDA_DEV_LEGACY;
|
||||
|
||||
mutex_init(&codec->spdif_mutex);
|
||||
|
@ -998,6 +997,7 @@ int snd_hda_codec_device_new(struct hda_bus *bus, struct snd_card *card,
|
|||
if (snd_BUG_ON(codec_addr > HDA_MAX_CODEC_ADDRESS))
|
||||
return -EINVAL;
|
||||
|
||||
codec->core.exec_verb = codec_exec_verb;
|
||||
codec->card = card;
|
||||
codec->addr = codec_addr;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче