On Fri, Sep 21, 2018 at 12:10:48PM +0200, Thierry Reding wrote: > From: Thierry Reding <treding@xxxxxxxxxx> > > Technically this is not required because disabling the PWM should be > enough. However, when support for atomic operations was implemented in > the PWM subsystem, only actual changes to the PWM channel are applied > during pwm_config(), which means that during after resume from suspend > the old settings won't be applied. > > One possible solution is for the PWM driver to implement its own PM > operations such that settings from before suspend get applied on resume. > This has the disadvantage of completely ignoring any particular ordering > requirements that PWM user drivers might have, so it is best to leave it > up to the user drivers to apply the settings that they want at the > appropriate time. > > Another way to solve this would be to read back the current state of the > PWM at the time of resume. That way, in case the configuration was lost > during suspend, applying the old settings in PWM user drivers would > actually get them applied because they differ from the current settings. > However, not all PWM drivers support reading the hardware state, and not > all hardware may support it. > > The best workaround at this point seems to be to let PWM user drivers > tell the PWM subsystem that the PWM is turned off by, in addition to > disabling it, also setting the duty cycle to 0. This causes the resume > operation to apply a configuration that is different from the current > configuration, resulting in the proper state from before suspend getting > restored. > > Signed-off-by: Thierry Reding <treding@xxxxxxxxxx> Applied. Thanks, Guenter