aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlexey Starikovskiy <astarikovskiy@suse.de>2008-01-10 18:42:57 -0500
committerLen Brown <len.brown@intel.com>2008-01-10 20:50:12 -0500
commitb3b233c7d948a5f55185fb5a1b248157b948a1e5 (patch)
tree4c2be8fc5bd0ade450852818827bc4b576b7c092 /drivers
parent3e71a87d03055de0b8c8e42aba758ee6494af083 (diff)
ACPI: EC: Some hardware requires burst mode to operate properly
Burst mode temporary (50 ms) locks EC to do only transactions with driver, without it some hardware returns abstract garbage. Reference: http://bugzilla.kernel.org/show_bug.cgi?id=9341 Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/acpi/ec.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 63862dfe347b..445ecbabbe76 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -575,6 +575,8 @@ acpi_ec_space_handler(u32 function, acpi_physical_address address,
575 if (bits != 8 && acpi_strict) 575 if (bits != 8 && acpi_strict)
576 return AE_BAD_PARAMETER; 576 return AE_BAD_PARAMETER;
577 577
578 acpi_ec_burst_enable(ec);
579
578 if (function == ACPI_READ) { 580 if (function == ACPI_READ) {
579 result = acpi_ec_read(ec, address, &temp); 581 result = acpi_ec_read(ec, address, &temp);
580 *value = temp; 582 *value = temp;
@@ -594,6 +596,8 @@ acpi_ec_space_handler(u32 function, acpi_physical_address address,
594 } 596 }
595 } 597 }
596 598
599 acpi_ec_burst_disable(ec);
600
597 switch (result) { 601 switch (result) {
598 case -EINVAL: 602 case -EINVAL:
599 return AE_BAD_PARAMETER; 603 return AE_BAD_PARAMETER;