mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
pwm: lpss: Set DPM_FLAG_SMART_SUSPEND on Cherry Trail devices
As the comment above the code setting the DPM_FLAG_NO_DIRECT_COMPLETE flag explains: /* * On Cherry Trail devices the GFX0._PS0 AML checks if the controller * is on and if it is not on it turns it on and restores what it * believes is the correct state to the PWM controller. * Because of this we must disallow direct-complete, which keeps the * controller (runtime)suspended, on resume to avoid 2 issues: * 1. The controller getting turned on without the linux-pm code * knowing about this. On devices where the controller is unused * this causes it to stay on during the next suspend causing high * battery drain (because S0i3 is not reached) * 2. The state restoring code unexpectedly messing with the controller */ The pm-core must not skip resume to avoid the GFX0._PS0 AML code messing with the PWM controller behind our back. But leaving the controller runtime-suspended (skipping runtime-resume + normal-suspend) during suspend is fine. Set the DPM_FLAG_SMART_SUSPEND flag to allow this. Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
This commit is contained in:
parent
b9c90f153d
commit
e3aa45f2f8
@ -69,9 +69,13 @@ static int pwm_lpss_probe_platform(struct platform_device *pdev)
|
||||
* this causes it to stay on during the next suspend causing high
|
||||
* battery drain (because S0i3 is not reached)
|
||||
* 2. The state restoring code unexpectedly messing with the controller
|
||||
*
|
||||
* Leaving the controller runtime-suspended (skipping runtime-resume +
|
||||
* normal-suspend) during suspend is fine.
|
||||
*/
|
||||
if (info->other_devices_aml_touches_pwm_regs)
|
||||
dev_pm_set_driver_flags(&pdev->dev, DPM_FLAG_NO_DIRECT_COMPLETE);
|
||||
dev_pm_set_driver_flags(&pdev->dev, DPM_FLAG_NO_DIRECT_COMPLETE|
|
||||
DPM_FLAG_SMART_SUSPEND);
|
||||
|
||||
pm_runtime_set_active(&pdev->dev);
|
||||
pm_runtime_enable(&pdev->dev);
|
||||
|
Loading…
Reference in New Issue
Block a user