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

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

Merge branch 'pm-sleep'

* pm-sleep:
  PM / s2idle: Invoke the ->wake() platform callback earlier
parents 9e66317d 87cbde8d
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -120,22 +120,26 @@ static void s2idle_loop(void)
		 * frozen processes + suspended devices + idle processors.
		 * Thus s2idle_enter() should be called right after
		 * all devices have been suspended.
		 *
		 * Wakeups during the noirq suspend of devices may be spurious,
		 * so prevent them from terminating the loop right away.
		 */
		error = dpm_noirq_suspend_devices(PMSG_SUSPEND);
		if (!error)
			s2idle_enter();
		else if (error == -EBUSY && pm_wakeup_pending())
			error = 0;

		dpm_noirq_resume_devices(PMSG_RESUME);
		if (error && (error != -EBUSY || !pm_wakeup_pending())) {
			dpm_noirq_end();
			break;
		}

		if (s2idle_ops && s2idle_ops->wake)
		if (!error && s2idle_ops && s2idle_ops->wake)
			s2idle_ops->wake();

		dpm_noirq_resume_devices(PMSG_RESUME);

		dpm_noirq_end();

		if (error)
			break;

		if (s2idle_ops && s2idle_ops->sync)
			s2idle_ops->sync();