|
@@ -436,7 +436,7 @@ static int pm_genpd_poweroff(struct generic_pm_domain *genpd)
|
|
|
not_suspended = 0;
|
|
|
list_for_each_entry(pdd, &genpd->dev_list, list_node)
|
|
|
if (pdd->dev->driver && (!pm_runtime_suspended(pdd->dev)
|
|
|
- || pdd->dev->power.irq_safe || to_gpd_data(pdd)->syscore))
|
|
|
+ || pdd->dev->power.irq_safe || pdd->dev->power.syscore))
|
|
|
not_suspended++;
|
|
|
|
|
|
if (not_suspended > genpd->in_progress)
|
|
@@ -578,9 +578,6 @@ static int pm_genpd_runtime_suspend(struct device *dev)
|
|
|
|
|
|
might_sleep_if(!genpd->dev_irq_safe);
|
|
|
|
|
|
- if (dev_gpd_data(dev)->syscore)
|
|
|
- return -EBUSY;
|
|
|
-
|
|
|
stop_ok = genpd->gov ? genpd->gov->stop_ok : NULL;
|
|
|
if (stop_ok && !stop_ok(dev))
|
|
|
return -EBUSY;
|
|
@@ -983,7 +980,7 @@ static int pm_genpd_suspend_noirq(struct device *dev)
|
|
|
if (IS_ERR(genpd))
|
|
|
return -EINVAL;
|
|
|
|
|
|
- if (genpd->suspend_power_off || dev_gpd_data(dev)->syscore
|
|
|
+ if (genpd->suspend_power_off
|
|
|
|| (dev->power.wakeup_path && genpd_dev_active_wakeup(genpd, dev)))
|
|
|
return 0;
|
|
|
|
|
@@ -1016,7 +1013,7 @@ static int pm_genpd_resume_noirq(struct device *dev)
|
|
|
if (IS_ERR(genpd))
|
|
|
return -EINVAL;
|
|
|
|
|
|
- if (genpd->suspend_power_off || dev_gpd_data(dev)->syscore
|
|
|
+ if (genpd->suspend_power_off
|
|
|
|| (dev->power.wakeup_path && genpd_dev_active_wakeup(genpd, dev)))
|
|
|
return 0;
|
|
|
|
|
@@ -1136,8 +1133,7 @@ static int pm_genpd_freeze_noirq(struct device *dev)
|
|
|
if (IS_ERR(genpd))
|
|
|
return -EINVAL;
|
|
|
|
|
|
- return genpd->suspend_power_off || dev_gpd_data(dev)->syscore ?
|
|
|
- 0 : genpd_stop_dev(genpd, dev);
|
|
|
+ return genpd->suspend_power_off ? 0 : genpd_stop_dev(genpd, dev);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1157,8 +1153,7 @@ static int pm_genpd_thaw_noirq(struct device *dev)
|
|
|
if (IS_ERR(genpd))
|
|
|
return -EINVAL;
|
|
|
|
|
|
- return genpd->suspend_power_off || dev_gpd_data(dev)->syscore ?
|
|
|
- 0 : genpd_start_dev(genpd, dev);
|
|
|
+ return genpd->suspend_power_off ? 0 : genpd_start_dev(genpd, dev);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1253,7 +1248,7 @@ static int pm_genpd_restore_noirq(struct device *dev)
|
|
|
|
|
|
pm_genpd_sync_poweron(genpd);
|
|
|
|
|
|
- return dev_gpd_data(dev)->syscore ? 0 : genpd_start_dev(genpd, dev);
|
|
|
+ return genpd_start_dev(genpd, dev);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1525,26 +1520,6 @@ int pm_genpd_remove_device(struct generic_pm_domain *genpd,
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * pm_genpd_dev_syscore - Set/unset the "syscore" flag for a given device.
|
|
|
- * @dev: Device to set/unset the flag for.
|
|
|
- * @val: The new value of the device's "syscore" flag.
|
|
|
- */
|
|
|
-void pm_genpd_dev_syscore(struct device *dev, bool val)
|
|
|
-{
|
|
|
- struct pm_subsys_data *psd;
|
|
|
- unsigned long flags;
|
|
|
-
|
|
|
- spin_lock_irqsave(&dev->power.lock, flags);
|
|
|
-
|
|
|
- psd = dev_to_psd(dev);
|
|
|
- if (psd && psd->domain_data)
|
|
|
- to_gpd_data(psd->domain_data)->syscore = val;
|
|
|
-
|
|
|
- spin_unlock_irqrestore(&dev->power.lock, flags);
|
|
|
-}
|
|
|
-EXPORT_SYMBOL_GPL(pm_genpd_dev_syscore);
|
|
|
-
|
|
|
/**
|
|
|
* pm_genpd_dev_need_restore - Set/unset the device's "need restore" flag.
|
|
|
* @dev: Device to set/unset the flag for.
|