From 188a316f6bde40a09aefb698cb8e72952d676f67 Mon Sep 17 00:00:00 2001 From: Lin Ming Date: Thu, 19 Mar 2009 09:51:01 +0800 Subject: [PATCH] --- yaml --- r: 141864 b: refs/heads/master c: c3dd25f4c1ca84baa170c0a3a15a884f4f06297e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/acpi/acpica/aclocal.h | 4 ++++ trunk/drivers/acpi/acpica/hwregs.c | 7 +++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 814772c68ed6..f1f56d3e28d1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f9ca058430333c9a24c5ca926aa445125f88df18 +refs/heads/master: c3dd25f4c1ca84baa170c0a3a15a884f4f06297e diff --git a/trunk/drivers/acpi/acpica/aclocal.h b/trunk/drivers/acpi/acpica/aclocal.h index 42ef0cbf70f8..772ee5c4ccca 100644 --- a/trunk/drivers/acpi/acpica/aclocal.h +++ b/trunk/drivers/acpi/acpica/aclocal.h @@ -781,6 +781,10 @@ struct acpi_bit_register_info { */ #define ACPI_PM1_STATUS_PRESERVED_BITS 0x0800 /* Bit 11 */ +/* Write-only bits must be zeroed by software */ + +#define ACPI_PM1_CONTROL_WRITEONLY_BITS 0x2004 /* Bits 13, 2 */ + /* For control registers, both ignored and reserved bits must be preserved */ #define ACPI_PM1_CONTROL_IGNORED_BITS 0x0201 /* Bits 9, 0(SCI_EN) */ diff --git a/trunk/drivers/acpi/acpica/hwregs.c b/trunk/drivers/acpi/acpica/hwregs.c index f8ee0a7fd44d..7b2fb602b5cb 100644 --- a/trunk/drivers/acpi/acpica/hwregs.c +++ b/trunk/drivers/acpi/acpica/hwregs.c @@ -207,6 +207,13 @@ acpi_hw_register_read(u32 register_id, u32 * return_value) xpm1a_control_block, &acpi_gbl_FADT. xpm1b_control_block); + + /* + * Zero the write-only bits. From the ACPI specification, "Hardware + * Write-Only Bits": "Upon reads to registers with write-only bits, + * software masks out all write-only bits." + */ + value &= ~ACPI_PM1_CONTROL_WRITEONLY_BITS; break; case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */