diff options
| -rw-r--r-- | drivers/base/power/common.c | 15 | ||||
| -rw-r--r-- | drivers/base/power/domain.c | 2 | ||||
| -rw-r--r-- | drivers/base/power/runtime.c | 2 | ||||
| -rw-r--r-- | include/linux/device.h | 7 | ||||
| -rw-r--r-- | include/linux/pm.h | 6 | 
5 files changed, 10 insertions, 22 deletions
diff --git a/drivers/base/power/common.c b/drivers/base/power/common.c index cf7a8513473..39c32529b83 100644 --- a/drivers/base/power/common.c +++ b/drivers/base/power/common.c @@ -83,18 +83,3 @@ int dev_pm_put_subsys_data(struct device *dev)  	return ret;  }  EXPORT_SYMBOL_GPL(dev_pm_put_subsys_data); - -/** - * dev_pm_syscore_device - Set/unset the given device's power.syscore flag. - * @dev: Device whose flag is to be modified. - * @val: New value of the flag. - */ -void dev_pm_syscore_device(struct device *dev, bool val) -{ -	unsigned long flags; - -	spin_lock_irqsave(&dev->power.lock, flags); -	dev->power.syscore = val; -	spin_unlock_irqrestore(&dev->power.lock, flags); -} -EXPORT_SYMBOL_GPL(dev_pm_syscore_device); diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index d7e71b5b080..5f4606f13be 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -442,7 +442,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 || pdd->dev->power.syscore)) +		    || pdd->dev->power.irq_safe))  			not_suspended++;  	if (not_suspended > genpd->in_progress) diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c index bd1de398091..7d9c1cb1c39 100644 --- a/drivers/base/power/runtime.c +++ b/drivers/base/power/runtime.c @@ -134,7 +134,7 @@ static int rpm_check_suspend_allowed(struct device *dev)  	if (dev->power.runtime_error)  		retval = -EINVAL; -	else if (dev->power.disable_depth > 0 || dev->power.syscore) +	else if (dev->power.disable_depth > 0)  		retval = -EACCES;  	else if (atomic_read(&dev->power.usage_count) > 0)  		retval = -EAGAIN; diff --git a/include/linux/device.h b/include/linux/device.h index 52a5f15a222..86529e642d6 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -772,6 +772,13 @@ static inline void pm_suspend_ignore_children(struct device *dev, bool enable)  	dev->power.ignore_children = enable;  } +static inline void dev_pm_syscore_device(struct device *dev, bool val) +{ +#ifdef CONFIG_PM_SLEEP +	dev->power.syscore = val; +#endif +} +  static inline void device_lock(struct device *dev)  {  	mutex_lock(&dev->mutex); diff --git a/include/linux/pm.h b/include/linux/pm.h index b79a0dd3bc6..44d1f2307db 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h @@ -43,12 +43,8 @@ struct device;  #ifdef CONFIG_PM  extern const char power_group_name[];		/* = "power" */ - -extern void dev_pm_syscore_device(struct device *dev, bool val);  #else  #define power_group_name	NULL - -static inline void dev_pm_syscore_device(struct device *dev, bool val) {}  #endif  typedef struct pm_message { @@ -515,13 +511,13 @@ struct dev_pm_info {  	bool			is_suspended:1;	/* Ditto */  	bool			ignore_children:1;  	bool			early_init:1;	/* Owned by the PM core */ -	bool			syscore:1;  	spinlock_t		lock;  #ifdef CONFIG_PM_SLEEP  	struct list_head	entry;  	struct completion	completion;  	struct wakeup_source	*wakeup;  	bool			wakeup_path:1; +	bool			syscore:1;  #else  	unsigned int		should_wakeup:1;  #endif  |