pwm: lpss: Set DPM_FLAG_SMART_SUSPEND on Cherry Trail devices
authorHans de Goede <hdegoede@redhat.com>
Mon, 9 Nov 2020 10:57:26 +0000 (11:57 +0100)
committerThierry Reding <thierry.reding@gmail.com>
Thu, 17 Dec 2020 13:18:49 +0000 (14:18 +0100)
commite3aa45f2f88b6779ab798c63a4deb7ddff949ac7
tree78fa402da641839eb1d8d2d0b6ec64d8fb41baa1
parentb9c90f153d836522621b5504087cf83419886e30
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>
drivers/pwm/pwm-lpss-platform.c