diff options
author | Alexey Starikovskiy <astarikovskiy@suse.de> | 2008-01-10 18:42:57 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-01-10 20:50:12 -0500 |
commit | b3b233c7d948a5f55185fb5a1b248157b948a1e5 (patch) | |
tree | 4c2be8fc5bd0ade450852818827bc4b576b7c092 /drivers | |
parent | 3e71a87d03055de0b8c8e42aba758ee6494af083 (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.c | 4 |
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; |