Some bootloaders disable power domains on boot and the platform startup code registers them in the 'disabled' state. Current gen_pd code assumed that the devices can be registered only to the power domain which is in 'enabled' state and these devices are active at the time of the registration. This is not correct in our case. This patch lets drivers to be registered into 'disabled' power domains and finally solves mysterious freezes and lack of resume/suspend calls on Samsung Exynos4 NURI and UniversalC210 platforms. Signed-off-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> Signed-off-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx> --- drivers/base/power/domain.c | 7 +------ 1 files changed, 1 insertions(+), 6 deletions(-) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 73ce9fb..05f5799f 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -1211,11 +1211,6 @@ int __pm_genpd_add_device(struct generic_pm_domain *genpd, struct device *dev, genpd_acquire_lock(genpd); - if (genpd->status == GPD_STATE_POWER_OFF) { - ret = -EINVAL; - goto out; - } - if (genpd->prepared_count > 0) { ret = -EAGAIN; goto out; @@ -1239,7 +1234,7 @@ int __pm_genpd_add_device(struct generic_pm_domain *genpd, struct device *dev, dev_pm_get_subsys_data(dev); dev->power.subsys_data->domain_data = &gpd_data->base; gpd_data->base.dev = dev; - gpd_data->need_restore = false; + gpd_data->need_restore = true; list_add_tail(&gpd_data->base.list_node, &genpd->dev_list); if (td) gpd_data->td = *td; -- 1.7.1.569.g6f426 -- 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