diff options
-rw-r--r-- | drivers/pmdomain/core.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index ca47f91b9e91..5cef6de60c72 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2600,6 +2600,11 @@ static bool genpd_present(const struct generic_pm_domain *genpd) return ret; } +static void genpd_sync_state(struct device *dev) +{ + return of_genpd_sync_state(dev->of_node); +} + /** * of_genpd_add_provider_simple() - Register a simple PM domain provider * @np: Device node pointer associated with the PM domain provider. @@ -2628,6 +2633,8 @@ int of_genpd_add_provider_simple(struct device_node *np, if (!dev && !genpd_is_no_sync_state(genpd)) { genpd->sync_state = GENPD_SYNC_STATE_SIMPLE; device_set_node(&genpd->dev, fwnode); + } else { + dev_set_drv_sync_state(dev, genpd_sync_state); } put_device(dev); @@ -2700,6 +2707,8 @@ int of_genpd_add_provider_onecell(struct device_node *np, dev = get_dev_from_fwnode(fwnode); if (!dev) sync_state = true; + else + dev_set_drv_sync_state(dev, genpd_sync_state); put_device(dev); |