On Fri, 23 Oct 2020 12:23:35 +0200, Kai-Heng Feng wrote: > > +static void hda_codec_pm_complete(struct device *dev) > { > struct hda_codec *codec = dev_to_hda_codec(dev); > - int ret; > > - ret = pm_runtime_force_resume(dev); > - /* schedule jackpoll work for jack detection update */ > - if (codec->jackpoll_interval || > - (pm_runtime_suspended(dev) && hda_codec_need_resume(codec))) > - schedule_delayed_work(&codec->jackpoll_work, > - codec->jackpoll_interval); > - return ret; > + if (pm_runtime_suspended(dev) && > + (hda_codec_need_resume(codec) || codec->forced_resume)) > + pm_request_resume(dev); You shouldn't drop the check of codec->jackpoll_interval. If this field is set, the codec driver has to resume no matter what it was, so that the polling can start up again. thanks, Takashi