diff options
author | Alexey Starikovskiy <alexey.y.starikovskiy@intel.com> | 2006-12-07 10:42:16 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2006-12-08 02:56:06 -0500 |
commit | bec5a1e0604d1b829b87b4b7e85f71ccc43dda50 (patch) | |
tree | 9ebefa27acb45cbbf8376544cb0ded4333d532e1 /drivers/acpi/ec.c | |
parent | 5c4064124a5720a2576eb4bd5b7200d70052e9b5 (diff) |
ACPI: ec: Read status register from check_status() function
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/ec.c')
-rw-r--r-- | drivers/acpi/ec.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index 46a132d613b..94b983b9cfb 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) | |||
134 | outb(data, ec->data_addr); | 134 | outb(data, ec->data_addr); |
135 | } | 135 | } |
136 | 136 | ||
137 | static int acpi_ec_check_status(u8 status, u8 event) | 137 | static int acpi_ec_check_status(struct acpi_ec *ec, u8 event) |
138 | { | 138 | { |
139 | u8 status = acpi_ec_read_status(ec); | ||
139 | switch (event) { | 140 | switch (event) { |
140 | case ACPI_EC_EVENT_OBF_1: | 141 | case ACPI_EC_EVENT_OBF_1: |
141 | if (status & ACPI_EC_FLAG_OBF) | 142 | if (status & ACPI_EC_FLAG_OBF) |
@@ -158,7 +159,7 @@ static int acpi_ec_wait(struct acpi_ec *ec, u8 event) | |||
158 | long time_left; | 159 | long time_left; |
159 | 160 | ||
160 | ec->expect_event = event; | 161 | ec->expect_event = event; |
161 | if (acpi_ec_check_status(acpi_ec_read_status(ec), event)) { | 162 | if (acpi_ec_check_status(ec, event)) { |
162 | ec->expect_event = 0; | 163 | ec->expect_event = 0; |
163 | return 0; | 164 | return 0; |
164 | } | 165 | } |
@@ -175,7 +176,7 @@ static int acpi_ec_wait(struct acpi_ec *ec, u8 event) | |||
175 | return 0; | 176 | return 0; |
176 | } | 177 | } |
177 | } | 178 | } |
178 | if (acpi_ec_check_status(acpi_ec_read_status(ec), event)) { | 179 | if (acpi_ec_check_status(ec, event)) { |
179 | ec->expect_event = 0; | 180 | ec->expect_event = 0; |
180 | return 0; | 181 | return 0; |
181 | } | 182 | } |
@@ -457,15 +458,15 @@ static u32 acpi_ec_gpe_handler(void *data) | |||
457 | struct acpi_ec *ec = (struct acpi_ec *)data; | 458 | struct acpi_ec *ec = (struct acpi_ec *)data; |
458 | 459 | ||
459 | acpi_clear_gpe(NULL, ec->gpe_bit, ACPI_ISR); | 460 | acpi_clear_gpe(NULL, ec->gpe_bit, ACPI_ISR); |
460 | value = acpi_ec_read_status(ec); | ||
461 | 461 | ||
462 | if (acpi_ec_mode == EC_INTR) { | 462 | if (acpi_ec_mode == EC_INTR) { |
463 | if (acpi_ec_check_status(value, ec->expect_event)) { | 463 | if (acpi_ec_check_status(ec, ec->expect_event)) { |
464 | ec->expect_event = 0; | 464 | ec->expect_event = 0; |
465 | wake_up(&ec->wait); | 465 | wake_up(&ec->wait); |
466 | } | 466 | } |
467 | } | 467 | } |
468 | 468 | ||
469 | value = acpi_ec_read_status(ec); | ||
469 | if (value & ACPI_EC_FLAG_SCI) { | 470 | if (value & ACPI_EC_FLAG_SCI) { |
470 | status = acpi_os_execute(OSL_EC_BURST_HANDLER, acpi_ec_gpe_query, ec); | 471 | status = acpi_os_execute(OSL_EC_BURST_HANDLER, acpi_ec_gpe_query, ec); |
471 | return status == AE_OK ? | 472 | return status == AE_OK ? |