Skip to content

Commit

Permalink
rtc-cmos / PM: report wakeup event on ACPI RTC alarm
Browse files Browse the repository at this point in the history
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: Daniel Drake <dsd@laptop.org>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
  • Loading branch information
Daniel Drake authored and Rafael J. Wysocki committed May 29, 2012
1 parent c10d7a1 commit b2201e5
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions drivers/rtc/rtc-cmos.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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;

Expand Down

0 comments on commit b2201e5

Please sign in to comment.