aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorAlexey Starikovskiy <alexey.y.starikovskiy@intel.com>2006-12-07 18:42:16 +0300
committerLen Brown <len.brown@intel.com>2006-12-08 02:56:06 -0500
commitbec5a1e0604d1b829b87b4b7e85f71ccc43dda50 (patch)
tree9ebefa27acb45cbbf8376544cb0ded4333d532e1 /drivers/acpi
parentACPI: ec: Increase timeout from 50 to 500 ms to handle old slow machines. (diff)
downloadlinux-dev-bec5a1e0604d1b829b87b4b7e85f71ccc43dda50.tar.xz
linux-dev-bec5a1e0604d1b829b87b4b7e85f71ccc43dda50.zip
ACPI: ec: Read status register from check_status() function
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/ec.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 46a132d613bc..94b983b9cfba 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -134,8 +134,9 @@ static inline void acpi_ec_write_data(struct acpi_ec *ec, u8 data)
outb(data, ec->data_addr);
}
-static int acpi_ec_check_status(u8 status, u8 event)
+static int acpi_ec_check_status(struct acpi_ec *ec, u8 event)
{
+ u8 status = acpi_ec_read_status(ec);
switch (event) {
case ACPI_EC_EVENT_OBF_1:
if (status & ACPI_EC_FLAG_OBF)
@@ -158,7 +159,7 @@ static int acpi_ec_wait(struct acpi_ec *ec, u8 event)
long time_left;
ec->expect_event = event;
- if (acpi_ec_check_status(acpi_ec_read_status(ec), event)) {
+ if (acpi_ec_check_status(ec, event)) {
ec->expect_event = 0;
return 0;
}
@@ -175,7 +176,7 @@ static int acpi_ec_wait(struct acpi_ec *ec, u8 event)
return 0;
}
}
- if (acpi_ec_check_status(acpi_ec_read_status(ec), event)) {
+ if (acpi_ec_check_status(ec, event)) {
ec->expect_event = 0;
return 0;
}
@@ -457,15 +458,15 @@ static u32 acpi_ec_gpe_handler(void *data)
struct acpi_ec *ec = (struct acpi_ec *)data;
acpi_clear_gpe(NULL, ec->gpe_bit, ACPI_ISR);
- value = acpi_ec_read_status(ec);
if (acpi_ec_mode == EC_INTR) {
- if (acpi_ec_check_status(value, ec->expect_event)) {
+ if (acpi_ec_check_status(ec, ec->expect_event)) {
ec->expect_event = 0;
wake_up(&ec->wait);
}
}
+ value = acpi_ec_read_status(ec);
if (value & ACPI_EC_FLAG_SCI) {
status = acpi_os_execute(OSL_EC_BURST_HANDLER, acpi_ec_gpe_query, ec);
return status == AE_OK ?