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

Commit b2201e54 authored by Daniel Drake's avatar Daniel Drake Committed by Rafael J. Wysocki
Browse files

rtc-cmos / PM: report wakeup event on ACPI RTC alarm



When the ACPI-driven RTC alarm wakes the system, report it as a wakeup
event. This allows userspace to determine that the reason for system
wakeup was RTC alarm.

Signed-off-by: default avatarDaniel Drake <dsd@laptop.org>
Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
parent c10d7a13
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -910,14 +910,17 @@ static inline int cmos_poweroff(struct device *dev)

static u32 rtc_handler(void *context)
{
	struct device *dev = context;

	pm_wakeup_event(dev, 0);
	acpi_clear_event(ACPI_EVENT_RTC);
	acpi_disable_event(ACPI_EVENT_RTC, 0);
	return ACPI_INTERRUPT_HANDLED;
}

static inline void rtc_wake_setup(void)
static inline void rtc_wake_setup(struct device *dev)
{
	acpi_install_fixed_event_handler(ACPI_EVENT_RTC, rtc_handler, NULL);
	acpi_install_fixed_event_handler(ACPI_EVENT_RTC, rtc_handler, dev);
	/*
	 * After the RTC handler is installed, the Fixed_RTC event should
	 * be disabled. Only when the RTC alarm is set will it be enabled.
@@ -950,7 +953,7 @@ cmos_wake_setup(struct device *dev)
	if (acpi_disabled)
		return;

	rtc_wake_setup();
	rtc_wake_setup(dev);
	acpi_rtc_info.wake_on = rtc_wake_on;
	acpi_rtc_info.wake_off = rtc_wake_off;