mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 04:56:13 +02:00
pmdomain: core: Allow power-off for out-of-band wakeup-capable devices
Currently, if a device is configured as a system wakeup source, the PM domain core avoids powering off its power domain during system-wide suspend. However, this can lead to unnecessary power consumption, especially for devices whose wakeup logic resides in an always-on domain, i.e., devices with out-of-band wakeup capability. To address this, add a check for device_out_band_wakeup() in genpd_finish_suspend(). If the device supports out-of-band wakeup, its power domain can be safely powered off, just like regular devices without wakeup enabled. And same check in genpd_finish_resume(). This change improves power efficiency without compromising wakeup functionality. Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Dhruva Gole <d-gole@ti.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
4acbfb6c11
commit
3b7685da41
|
|
@ -1545,7 +1545,8 @@ static int genpd_finish_suspend(struct device *dev,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (device_awake_path(dev) && genpd_is_active_wakeup(genpd))
|
||||
if (device_awake_path(dev) && genpd_is_active_wakeup(genpd) &&
|
||||
!device_out_band_wakeup(dev))
|
||||
return 0;
|
||||
|
||||
if (genpd->dev_ops.stop && genpd->dev_ops.start &&
|
||||
|
|
@ -1600,7 +1601,8 @@ static int genpd_finish_resume(struct device *dev,
|
|||
if (IS_ERR(genpd))
|
||||
return -EINVAL;
|
||||
|
||||
if (device_awake_path(dev) && genpd_is_active_wakeup(genpd))
|
||||
if (device_awake_path(dev) && genpd_is_active_wakeup(genpd) &&
|
||||
!device_out_band_wakeup(dev))
|
||||
return resume_noirq(dev);
|
||||
|
||||
genpd_lock(genpd);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user