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

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

Merge branch 'pm-sleep'

* pm-sleep:
  PM: Move disabling/enabling runtime PM to late suspend/early resume
parents 868b0935 9f6d8f6a
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -642,12 +642,13 @@ out the following operations:
  * During system suspend it calls pm_runtime_get_noresume() and
    pm_runtime_barrier() for every device right before executing the
    subsystem-level .suspend() callback for it.  In addition to that it calls
    pm_runtime_disable() for every device right after executing the
    subsystem-level .suspend() callback for it.
    __pm_runtime_disable() with 'false' as the second argument for every device
    right before executing the subsystem-level .suspend_late() callback for it.

  * During system resume it calls pm_runtime_enable() and pm_runtime_put_sync()
    for every device right before and right after executing the subsystem-level
    .resume() callback for it, respectively.
    for every device right after executing the subsystem-level .resume_early()
    callback and right after executing the subsystem-level .resume() callback
    for it, respectively.

7. Generic subsystem callbacks

+4 −5
Original line number Diff line number Diff line
@@ -513,6 +513,8 @@ static int device_resume_early(struct device *dev, pm_message_t state)

 Out:
	TRACE_RESUME(error);

	pm_runtime_enable(dev);
	return error;
}

@@ -589,8 +591,6 @@ static int device_resume(struct device *dev, pm_message_t state, bool async)
	if (!dev->power.is_suspended)
		goto Unlock;

	pm_runtime_enable(dev);

	if (dev->pm_domain) {
		info = "power domain ";
		callback = pm_op(&dev->pm_domain->ops, state);
@@ -930,6 +930,8 @@ static int device_suspend_late(struct device *dev, pm_message_t state)
	pm_callback_t callback = NULL;
	char *info = NULL;

	__pm_runtime_disable(dev, false);

	if (dev->power.syscore)
		return 0;

@@ -1133,11 +1135,8 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)

 Complete:
	complete_all(&dev->power.completion);

	if (error)
		async_error = error;
	else if (dev->power.is_suspended)
		__pm_runtime_disable(dev, false);

	return error;
}