ACPI: Add Time and Alarm Device (TAD) driver

Introduce a driver for the ACPI Time and Alarm Device (TAD) based on
Section 9.18 of ACPI 6.2.

This driver only supports the system wakeup capabilities of the TAD
which are mandatory.  Support for the RTC capabilities of the TAD
will be added to it in the future.

This driver is entirely sysfs-based.  It provides attributes (under
the TAD platform device) to allow user space to manage the AC and DC
wakeup timers of the TAD: set and read their values, set and check
their expire timer wake policies, check and clear their status and
check the capabilities of the TAD reported by AML.  The DC timer
attributes are only present if the TAD supports a separate DC alarm
timer.

The wakeup events handling and power management of the TAD is
expected to be taken care of by the ACPI PM domain attached to its
platform device.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
This commit is contained in:
Rafael J. Wysocki
2018-03-16 13:51:01 +01:00
parent c698ca5278
commit 95c513ec84
4 changed files with 600 additions and 0 deletions

View File

@@ -217,6 +217,19 @@ config ACPI_FAN
To compile this driver as a module, choose M here:
the module will be called fan.
config ACPI_TAD
tristate "ACPI Time and Alarm (TAD) Device Support"
depends on SYSFS && PM_SLEEP
help
The ACPI Time and Alarm (TAD) device is an alternative to the Real
Time Clock (RTC). Its wake timers allow the system to transition from
the S3 (or optionally S4/S5) state to S0 state after a time period
elapses. In comparison with the RTC Alarm, the TAD provides a larger
scale of flexibility in the wake timers. The time capabilities of the
TAD maintain the time of day information across platform power
transitions, and keep track of time even when the platform is turned
off.
config ACPI_DOCK
bool "Dock"
help