On Tue, 19 Jan 2021 16:21:43 +0100, Kai-Heng Feng wrote: > > After hibernation, HDA controller can't be runtime-suspended after > commit 215a22ed31a1 ("ALSA: hda: Refactor codjc PM to use > direct-complete optimization"), which enables direct-complete for HDA > codec. > > The HDA codec driver didn't expect direct-complete will be disabled > after it returns a positive value from prepare() callback. However, > there are some places that PM core can disable direct-complete. For > instance, system hibernation or when codec has subordinates like LEDs. > > So if the codec is prepared for direct-complete but PM core still calls > codec's suspend or freeze callback, partially revert the commit and take > the original approach, which uses pm_runtime_force_*() helpers to > ensure PM refcount are balanced. Meanwhile, still keep prepare() and > complete() callbacks to enable direct-complete and request a resume for > jack detection, respectively. > > Reported-by: Kenneth R. Crudup <kenny@xxxxxxxxx> > Fixes: 215a22ed31a1 ("ALSA: hda: Refactor codec PM to use direct-complete optimization") > Signed-off-by: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx> > --- > v2: > - Use pm_runtime_force_*() helpers to avoid suspend/resume ping pong. Thanks, applied now. Takashi