aboutsummaryrefslogtreecommitdiffstats
path: root/xen/drivers/acpi
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2013-02-22 11:48:57 +0100
committerJan Beulich <jbeulich@suse.com>2013-02-22 11:48:57 +0100
commit62d1a69a4e9f435999af22b7e31d7ee8910f5de0 (patch)
tree18ccac8cf815b8175cdaffeecd7c27509f86096c /xen/drivers/acpi
parenta37186e1c2b3e9462cce65d330a71c3afbde4b9b (diff)
downloadxen-62d1a69a4e9f435999af22b7e31d7ee8910f5de0.tar.gz
xen-62d1a69a4e9f435999af22b7e31d7ee8910f5de0.tar.bz2
xen-62d1a69a4e9f435999af22b7e31d7ee8910f5de0.zip
ACPI: support v5 (reduced HW) sleep interface
Note that this also fixes a broken input check in acpi_enter_sleep() (previously validating the sleep->pm1[ab]_cnt_val relationship based on acpi_sinfo.pm1b_cnt_val, which however gets set only subsequently). Also adjust a few minor issues with the pre-v5 handling in acpi_fadt_parse_sleep_info(). Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/drivers/acpi')
-rw-r--r--xen/drivers/acpi/hwregs.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/xen/drivers/acpi/hwregs.c b/xen/drivers/acpi/hwregs.c
index 67a3c51624..164fd61ab3 100644
--- a/xen/drivers/acpi/hwregs.c
+++ b/xen/drivers/acpi/hwregs.c
@@ -365,6 +365,14 @@ acpi_hw_register_read(u32 register_id, u32 * return_value)
acpi_os_read_port(acpi_gbl_FADT.smi_command, &value1, 8);
break;
+ case ACPI_REGISTER_SLEEP_STATUS:
+
+ status =
+ acpi_hw_low_level_read(acpi_gbl_FADT.sleep_status.bit_width,
+ &value1,
+ &acpi_gbl_FADT.sleep_status);
+ break;
+
default:
ACPI_DEBUG_PRINT((AE_INFO, "Unknown Register ID: %X", register_id));
status = AE_BAD_PARAMETER;
@@ -525,6 +533,14 @@ acpi_status acpi_hw_register_write(u32 register_id, u32 value)
acpi_os_write_port(acpi_gbl_FADT.smi_command, value, 8);
break;
+ case ACPI_REGISTER_SLEEP_CONTROL:
+
+ status =
+ acpi_hw_low_level_write(acpi_gbl_FADT.sleep_control.bit_width,
+ value,
+ &acpi_gbl_FADT.sleep_control);
+ break;
+
default:
status = AE_BAD_PARAMETER;
break;