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

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
...@@ -910,14 +910,17 @@ static inline int cmos_poweroff(struct device *dev) ...@@ -910,14 +910,17 @@ static inline int cmos_poweroff(struct device *dev)
static u32 rtc_handler(void *context) static u32 rtc_handler(void *context)
{ {
struct device *dev = context;
pm_wakeup_event(dev, 0);
acpi_clear_event(ACPI_EVENT_RTC); acpi_clear_event(ACPI_EVENT_RTC);
acpi_disable_event(ACPI_EVENT_RTC, 0); acpi_disable_event(ACPI_EVENT_RTC, 0);
return ACPI_INTERRUPT_HANDLED; 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 * After the RTC handler is installed, the Fixed_RTC event should
* be disabled. Only when the RTC alarm is set will it be enabled. * be disabled. Only when the RTC alarm is set will it be enabled.
...@@ -950,7 +953,7 @@ cmos_wake_setup(struct device *dev) ...@@ -950,7 +953,7 @@ cmos_wake_setup(struct device *dev)
if (acpi_disabled) if (acpi_disabled)
return; return;
rtc_wake_setup(); rtc_wake_setup(dev);
acpi_rtc_info.wake_on = rtc_wake_on; acpi_rtc_info.wake_on = rtc_wake_on;
acpi_rtc_info.wake_off = rtc_wake_off; acpi_rtc_info.wake_off = rtc_wake_off;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment