Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b31db8a authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

PM / Runtime: Generic resume shouldn't set RPM_ACTIVE unconditionally



The __pm_generic_resume() function changes the given device's runtime
PM status to RPM_ACTIVE if its driver's callback returns 0, but it
only should do that if the rumtime PM is enabled for the device.

Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
parent 5c1a07ab
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -185,7 +185,7 @@ static int __pm_generic_resume(struct device *dev, int event)
		return 0;
		return 0;


	ret = callback(dev);
	ret = callback(dev);
	if (!ret) {
	if (!ret && pm_runtime_enabled(dev)) {
		pm_runtime_disable(dev);
		pm_runtime_disable(dev);
		pm_runtime_set_active(dev);
		pm_runtime_set_active(dev);
		pm_runtime_enable(dev);
		pm_runtime_enable(dev);
+6 −0
Original line number Original line Diff line number Diff line
@@ -82,6 +82,11 @@ static inline bool pm_runtime_suspended(struct device *dev)
		&& !dev->power.disable_depth;
		&& !dev->power.disable_depth;
}
}


static inline bool pm_runtime_enabled(struct device *dev)
{
	return !dev->power.disable_depth;
}

static inline void pm_runtime_mark_last_busy(struct device *dev)
static inline void pm_runtime_mark_last_busy(struct device *dev)
{
{
	ACCESS_ONCE(dev->power.last_busy) = jiffies;
	ACCESS_ONCE(dev->power.last_busy) = jiffies;
@@ -120,6 +125,7 @@ static inline void pm_runtime_put_noidle(struct device *dev) {}
static inline bool device_run_wake(struct device *dev) { return false; }
static inline bool device_run_wake(struct device *dev) { return false; }
static inline void device_set_run_wake(struct device *dev, bool enable) {}
static inline void device_set_run_wake(struct device *dev, bool enable) {}
static inline bool pm_runtime_suspended(struct device *dev) { return false; }
static inline bool pm_runtime_suspended(struct device *dev) { return false; }
static inline bool pm_runtime_enabled(struct device *dev) { return false; }


static inline int pm_generic_runtime_idle(struct device *dev) { return 0; }
static inline int pm_generic_runtime_idle(struct device *dev) { return 0; }
static inline int pm_generic_runtime_suspend(struct device *dev) { return 0; }
static inline int pm_generic_runtime_suspend(struct device *dev) { return 0; }