|
@@ -168,12 +168,15 @@ static void start_transaction(struct acpi_ec *ec)
|
|
|
acpi_ec_write_cmd(ec, ec->curr->command);
|
|
|
}
|
|
|
|
|
|
-static void advance_transaction(struct acpi_ec *ec, u8 status)
|
|
|
+static void advance_transaction(struct acpi_ec *ec)
|
|
|
{
|
|
|
unsigned long flags;
|
|
|
struct transaction *t;
|
|
|
+ u8 status;
|
|
|
|
|
|
spin_lock_irqsave(&ec->lock, flags);
|
|
|
+ pr_debug("===== %s =====\n", in_interrupt() ? "IRQ" : "TASK");
|
|
|
+ status = acpi_ec_read_status(ec);
|
|
|
t = ec->curr;
|
|
|
if (!t)
|
|
|
goto unlock;
|
|
@@ -236,7 +239,7 @@ static int ec_poll(struct acpi_ec *ec)
|
|
|
msecs_to_jiffies(1)))
|
|
|
return 0;
|
|
|
}
|
|
|
- advance_transaction(ec, acpi_ec_read_status(ec));
|
|
|
+ advance_transaction(ec);
|
|
|
} while (time_before(jiffies, delay));
|
|
|
pr_debug("controller reset, restart transaction\n");
|
|
|
spin_lock_irqsave(&ec->lock, flags);
|
|
@@ -635,11 +638,8 @@ static u32 acpi_ec_gpe_handler(acpi_handle gpe_device,
|
|
|
u32 gpe_number, void *data)
|
|
|
{
|
|
|
struct acpi_ec *ec = data;
|
|
|
- u8 status = acpi_ec_read_status(ec);
|
|
|
-
|
|
|
- pr_debug("~~~> interrupt, status:0x%02x\n", status);
|
|
|
|
|
|
- advance_transaction(ec, status);
|
|
|
+ advance_transaction(ec);
|
|
|
if (ec_transaction_done(ec) &&
|
|
|
(acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF) == 0) {
|
|
|
wake_up(&ec->wait);
|