summaryrefslogtreecommitdiff
path: root/sys/contrib/dev/acpica/evxfevnt.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/acpica/evxfevnt.c')
-rw-r--r--sys/contrib/dev/acpica/evxfevnt.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/sys/contrib/dev/acpica/evxfevnt.c b/sys/contrib/dev/acpica/evxfevnt.c
index d6c849e8991a..2c38dcb6449f 100644
--- a/sys/contrib/dev/acpica/evxfevnt.c
+++ b/sys/contrib/dev/acpica/evxfevnt.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: evxfevnt - External Interfaces, ACPI event disable/enable
- * $Revision: 22 $
+ * $Revision: 26 $
*
*****************************************************************************/
@@ -287,7 +287,14 @@ AcpiEnableEvent (
* enable register bit)
*/
- AcpiHwRegisterAccess (ACPI_WRITE, TRUE, RegisterId, 1);
+ AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RegisterId, 1);
+
+ if (1 != AcpiHwRegisterBitAccess(ACPI_READ, ACPI_MTX_LOCK, RegisterId))
+ {
+ DEBUG_PRINT(ACPI_ERROR, ("Fixed event bit clear when it should be set,\n"));
+ return_ACPI_STATUS (AE_ERROR);
+ }
+
break;
@@ -384,7 +391,14 @@ AcpiDisableEvent (
* enable register bit)
*/
- AcpiHwRegisterAccess (ACPI_WRITE, TRUE, RegisterId, 0);
+ AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RegisterId, 0);
+
+ if (0 != AcpiHwRegisterBitAccess(ACPI_READ, ACPI_MTX_LOCK, RegisterId))
+ {
+ DEBUG_PRINT(ACPI_ERROR, ("Fixed event bit set when it should be clear,\n"));
+ return_ACPI_STATUS (AE_ERROR);
+ }
+
break;
@@ -478,7 +492,7 @@ AcpiClearEvent (
* status register bit)
*/
- AcpiHwRegisterAccess (ACPI_WRITE, TRUE, RegisterId, 1);
+ AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RegisterId, 1);
break;
@@ -579,7 +593,7 @@ AcpiGetEventStatus (
/* Get the status of the requested fixed event */
- *EventStatus = AcpiHwRegisterAccess (ACPI_READ, TRUE, RegisterId);
+ *EventStatus = AcpiHwRegisterBitAccess (ACPI_READ, ACPI_MTX_LOCK, RegisterId);
break;