diff options
| -rw-r--r-- | include/linux/pm.h | 2 | ||||
| -rw-r--r-- | include/linux/pm_wakeup.h | 25 | 
2 files changed, 16 insertions, 11 deletions
| diff --git a/include/linux/pm.h b/include/linux/pm.h index dd9c7ab38270..21415cc91cbb 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h @@ -431,6 +431,8 @@ struct dev_pm_info {  	struct list_head	entry;  	struct completion	completion;  	struct wakeup_source	*wakeup; +#else +	unsigned int		should_wakeup:1;  #endif  #ifdef CONFIG_PM_RUNTIME  	struct timer_list	suspend_timer; diff --git a/include/linux/pm_wakeup.h b/include/linux/pm_wakeup.h index 9cff00dd6b63..03a67db03d01 100644 --- a/include/linux/pm_wakeup.h +++ b/include/linux/pm_wakeup.h @@ -109,11 +109,6 @@ static inline bool device_can_wakeup(struct device *dev)  	return dev->power.can_wakeup;  } -static inline bool device_may_wakeup(struct device *dev) -{ -	return false; -} -  static inline struct wakeup_source *wakeup_source_create(const char *name)  {  	return NULL; @@ -134,24 +129,32 @@ static inline void wakeup_source_unregister(struct wakeup_source *ws) {}  static inline int device_wakeup_enable(struct device *dev)  { -	return -EINVAL; +	dev->power.should_wakeup = true; +	return 0;  }  static inline int device_wakeup_disable(struct device *dev)  { +	dev->power.should_wakeup = false;  	return 0;  } -static inline int device_init_wakeup(struct device *dev, bool val) +static inline int device_set_wakeup_enable(struct device *dev, bool enable)  { -	dev->power.can_wakeup = val; -	return val ? -EINVAL : 0; +	dev->power.should_wakeup = enable; +	return 0;  } +static inline int device_init_wakeup(struct device *dev, bool val) +{ +	device_set_wakeup_capable(dev, val); +	device_set_wakeup_enable(dev, val); +	return 0; +} -static inline int device_set_wakeup_enable(struct device *dev, bool enable) +static inline bool device_may_wakeup(struct device *dev)  { -	return -EINVAL; +	return dev->power.can_wakeup && dev->power.should_wakeup;  }  static inline void __pm_stay_awake(struct wakeup_source *ws) {} | 
