platform/chrome: cros_ec: determine `wake_enabled` in cros_ec_suspend()
authorTzung-Bi Shih <tzungbi@kernel.org>
Wed, 16 Feb 2022 08:03:04 +0000 (16:03 +0800)
committerTzung-Bi Shih <tzungbi@kernel.org>
Mon, 18 Apr 2022 07:39:27 +0000 (15:39 +0800)
`wake_enabled` indicates cros_ec_resume() needs to call
disable_irq_wake() to undo enable_irq_wake() in cros_ec_suspend().

Determine `wake_enabled` in cros_ec_suspend() instead of
reset-after-used in cros_ec_resume().

Reviewed-by: Prashant Malani <pmalani@chromium.org>
Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
drivers/platform/chrome/cros_ec.c

index 83679487144387ff803950db3f5458379a345000..3bd2b548179d7b61e6d55c44d339ff1eceff2107 100644 (file)
@@ -340,6 +340,8 @@ int cros_ec_suspend(struct cros_ec_device *ec_dev)
 
        if (device_may_wakeup(dev))
                ec_dev->wake_enabled = !enable_irq_wake(ec_dev->irq);
+       else
+               ec_dev->wake_enabled = false;
 
        disable_irq(ec_dev->irq);
        ec_dev->suspended = true;
@@ -381,10 +383,9 @@ int cros_ec_resume(struct cros_ec_device *ec_dev)
                dev_dbg(ec_dev->dev, "Error %d sending resume event to ec",
                        ret);
 
-       if (ec_dev->wake_enabled) {
+       if (ec_dev->wake_enabled)
                disable_irq_wake(ec_dev->irq);
-               ec_dev->wake_enabled = 0;
-       }
+
        /*
         * Let the mfd devices know about events that occur during
         * suspend. This way the clients know what to do with them.