Based on the runtime request of the active device, the callbacks of the passive pm runtime devices will be invoked. Signed-off-by: Amit Daniel Kachhap <amit.daniel@xxxxxxxxxxx> --- drivers/base/power/domain.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index c5280f2..160e74a 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -49,6 +49,7 @@ static LIST_HEAD(gpd_list); static DEFINE_MUTEX(gpd_list_lock); +static void __pm_genpd_restore_devices(struct generic_pm_domain *genpd); static struct generic_pm_domain *pm_genpd_lookup_name(const char *domain_name) { @@ -176,6 +177,8 @@ static int genpd_power_on(struct generic_pm_domain *genpd) pr_warn("%s: Power-%s latency exceeded, new value %lld ns\n", genpd->name, "on", elapsed_ns); + __pm_genpd_restore_devices(genpd); + return ret; } @@ -397,6 +400,9 @@ static int __pm_genpd_save_device(struct pm_domain_data *pdd, struct device *dev = pdd->dev; int ret = 0; + if (dev->power.slave == true) + gpd_data->need_restore = 0; + if (gpd_data->need_restore > 0) return 0; @@ -453,6 +459,28 @@ static void __pm_genpd_restore_device(struct pm_domain_data *pdd, } /** + * __pm_genpd_restore_devices- Restore the pre-suspend state of all device + * according to the restore flag. + * @genpd: PM domain the device belongs to. + */ +static void __pm_genpd_restore_devices(struct generic_pm_domain *genpd) +{ + struct pm_domain_data *pdd; + struct generic_pm_domain_data *gpd_data; + struct device *dev; + + /* Force restore the devices according to the restore flag */ + list_for_each_entry(pdd, &genpd->dev_list, list_node) { + dev = pdd->dev; + gpd_data = to_gpd_data(pdd); + if (dev->power.slave == true) { + gpd_data->need_restore = 1; + __pm_genpd_restore_device(pdd, genpd); + } + } +} + +/** * genpd_abort_poweroff - Check if a PM domain power off should be aborted. * @genpd: PM domain to check. * -- 2.2.0 -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html