|
@@ -259,7 +259,6 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec,
|
|
|
clear_bit(EC_FLAGS_QUERY_PENDING, &ec->flags);
|
|
|
spin_unlock_irqrestore(&ec->curr_lock, tmp);
|
|
|
ret = ec_poll(ec);
|
|
|
- pr_debug(PREFIX "transaction end\n");
|
|
|
spin_lock_irqsave(&ec->curr_lock, tmp);
|
|
|
ec->curr = NULL;
|
|
|
spin_unlock_irqrestore(&ec->curr_lock, tmp);
|
|
@@ -316,6 +315,7 @@ static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t)
|
|
|
/* check if we received SCI during transaction */
|
|
|
ec_check_sci_sync(ec, acpi_ec_read_status(ec));
|
|
|
if (test_bit(EC_FLAGS_GPE_STORM, &ec->flags)) {
|
|
|
+ msleep(1);
|
|
|
/* it is safe to enable GPE outside of transaction */
|
|
|
acpi_enable_gpe(NULL, ec->gpe);
|
|
|
} else if (t->irq_count > ACPI_EC_STORM_THRESHOLD) {
|
|
@@ -323,6 +323,7 @@ static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t)
|
|
|
"transactions will use polling mode\n");
|
|
|
set_bit(EC_FLAGS_GPE_STORM, &ec->flags);
|
|
|
}
|
|
|
+ pr_debug(PREFIX "transaction end\n");
|
|
|
end:
|
|
|
if (ec->global_lock)
|
|
|
acpi_release_global_lock(glk);
|