aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/ec.c
diff options
context:
space:
mode:
authorAlexey Starikovskiy <alexey.y.starikovskiy@intel.com>2006-12-07 10:42:16 -0500
committerLen Brown <len.brown@intel.com>2006-12-08 02:56:06 -0500
commitbec5a1e0604d1b829b87b4b7e85f71ccc43dda50 (patch)
tree9ebefa27acb45cbbf8376544cb0ded4333d532e1 /drivers/acpi/ec.c
parent5c4064124a5720a2576eb4bd5b7200d70052e9b5 (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.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)
134 outb(data, ec->data_addr); 134 outb(data, ec->data_addr);
135} 135}
136 136
137static int acpi_ec_check_status(u8 status, u8 event) 137static 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 ?