===================================================================
@@ -367,6 +367,7 @@ static void pm_genpd_sync_poweroff(struc
static int pm_genpd_prepare(struct device *dev)
{
struct generic_pm_domain *genpd;
+ int ret;
dev_dbg(dev, "%s()\n", __func__);
@@ -400,7 +401,16 @@ static int pm_genpd_prepare(struct devic
mutex_unlock(&genpd->lock);
- return pm_generic_prepare(dev);
+ ret = pm_generic_prepare(dev);
+ if (ret) {
+ mutex_lock(&genpd->lock);
+
+ if (--genpd->prepared_count == 0)
+ genpd->suspend_power_off = false;
+
+ mutex_unlock(&genpd->lock);
+ }
+ return ret;
}
/**