Commit 2e492462 authored by Maxim Levitsky's avatar Maxim Levitsky Committed by Jaroslav Kysela

[ALSA] hda-intel - fix a race in dynamic power managment

codec->power_transition is supposed to be true while codec is going
to be shut off if in the mean time somebody calls snd_hda_power_up,
hda_power_work will not shut down the codec, but nether will clear
codec->power_transition, thus it stays on forever. Fix this.
Signed-off-by: default avatarMaxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent b7e054a7
...@@ -2195,8 +2195,10 @@ static void hda_power_work(struct work_struct *work) ...@@ -2195,8 +2195,10 @@ static void hda_power_work(struct work_struct *work)
struct hda_codec *codec = struct hda_codec *codec =
container_of(work, struct hda_codec, power_work.work); container_of(work, struct hda_codec, power_work.work);
if (!codec->power_on || codec->power_count) if (!codec->power_on || codec->power_count) {
codec->power_transition = 0;
return; return;
}
hda_call_codec_suspend(codec); hda_call_codec_suspend(codec);
if (codec->bus->ops.pm_notify) if (codec->bus->ops.pm_notify)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment