Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 805bdaec authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

PM: Make ACPI wakeup from S5 work again when CONFIG_PM_SLEEP is unset



Commit 074037ec (PM / Wakeup: Introduce wakeup source objects and
event statistics (v3)) caused ACPI wakeup to only work if
CONFIG_PM_SLEEP is set, but it also worked for CONFIG_PM_SLEEP unset
before.  This can be fixed by making device_set_wakeup_enable(),
device_init_wakeup() and device_may_wakeup() work in the same way
as before commit 074037ec when CONFIG_PM_SLEEP is unset.

Reported-and-tested-by: default avatarJustin Maggard <jmaggard10@gmail.com>
Cc: stable@kernel.org
Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
parent 2aa15890
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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;
+14 −11
Original line number Diff line number Diff line
@@ -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) {}