diff options
| -rw-r--r-- | drivers/base/power/main.c | 3 | ||||
| -rw-r--r-- | include/linux/device.h | 5 | ||||
| -rw-r--r-- | include/linux/pm.h | 2 | ||||
| -rw-r--r-- | include/linux/pm_runtime.h | 6 | 
4 files changed, 8 insertions, 8 deletions
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index 7fa098464da..c3d2dfcf438 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c @@ -920,7 +920,8 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)   End:  	if (!error) {  		dev->power.is_suspended = true; -		if (dev->power.wakeup_path && dev->parent) +		if (dev->power.wakeup_path +		    && dev->parent && !dev->parent->power.ignore_children)  			dev->parent->power.wakeup_path = true;  	} diff --git a/include/linux/device.h b/include/linux/device.h index ffbcf95cd97..52b3a4111df 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -682,6 +682,11 @@ static inline bool device_async_suspend_enabled(struct device *dev)  	return !!dev->power.async_suspend;  } +static inline void pm_suspend_ignore_children(struct device *dev, bool enable) +{ +	dev->power.ignore_children = enable; +} +  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 f15acb64681..5c4c8b18c8b 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h @@ -447,6 +447,7 @@ struct dev_pm_info {  	unsigned int		async_suspend:1;  	bool			is_prepared:1;	/* Owned by the PM core */  	bool			is_suspended:1;	/* Ditto */ +	bool			ignore_children:1;  	spinlock_t		lock;  #ifdef CONFIG_PM_SLEEP  	struct list_head	entry; @@ -464,7 +465,6 @@ struct dev_pm_info {  	atomic_t		usage_count;  	atomic_t		child_count;  	unsigned int		disable_depth:3; -	unsigned int		ignore_children:1;  	unsigned int		idle_notification:1;  	unsigned int		request_pending:1;  	unsigned int		deferred_resume:1; diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h index d8d90361964..d3085e72a0e 100644 --- a/include/linux/pm_runtime.h +++ b/include/linux/pm_runtime.h @@ -52,11 +52,6 @@ static inline bool pm_children_suspended(struct device *dev)  		|| !atomic_read(&dev->power.child_count);  } -static inline void pm_suspend_ignore_children(struct device *dev, bool enable) -{ -	dev->power.ignore_children = enable; -} -  static inline void pm_runtime_get_noresume(struct device *dev)  {  	atomic_inc(&dev->power.usage_count); @@ -130,7 +125,6 @@ static inline void pm_runtime_allow(struct device *dev) {}  static inline void pm_runtime_forbid(struct device *dev) {}  static inline bool pm_children_suspended(struct device *dev) { return false; } -static inline void pm_suspend_ignore_children(struct device *dev, bool en) {}  static inline void pm_runtime_get_noresume(struct device *dev) {}  static inline void pm_runtime_put_noidle(struct device *dev) {}  static inline bool device_run_wake(struct device *dev) { return false; }  |