ACPI: EC: Clean up status flags checks in advance_transaction()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 23 Nov 2020 19:01:01 +0000 (20:01 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 23 Nov 2020 19:01:01 +0000 (20:01 +0100)
Eliminate comparisons from the status flags checks in
advance_transaction() (especially from the one that is only correct,
because the value of the flag checked in there is 1) and rearrange
the code for more clarity while at it.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/ec.c

index 091f0e9f37a04e87424313f8fa5e5468f2ae250e..13565629ce0a8c570b68de07ce21669ce94f6539 100644 (file)
@@ -667,25 +667,24 @@ static void advance_transaction(struct acpi_ec *ec, bool interrupt)
 
        if (t->flags & ACPI_EC_COMMAND_POLL) {
                if (t->wlen > t->wi) {
-                       if ((status & ACPI_EC_FLAG_IBF) == 0)
+                       if (!(status & ACPI_EC_FLAG_IBF))
                                acpi_ec_write_data(ec, t->wdata[t->wi++]);
                        else if (interrupt && !(status & ACPI_EC_FLAG_SCI))
                                acpi_ec_spurious_interrupt(ec, t);
                } else if (t->rlen > t->ri) {
-                       if ((status & ACPI_EC_FLAG_OBF) == 1) {
+                       if (status & ACPI_EC_FLAG_OBF) {
                                t->rdata[t->ri++] = acpi_ec_read_data(ec);
                                if (t->rlen == t->ri) {
                                        ec_transaction_transition(ec, ACPI_EC_COMMAND_COMPLETE);
+                                       wakeup = true;
                                        if (t->command == ACPI_EC_COMMAND_QUERY)
                                                ec_dbg_evt("Command(%s) completed by hardware",
                                                           acpi_ec_cmd_string(ACPI_EC_COMMAND_QUERY));
-                                       wakeup = true;
                                }
                        } else if (interrupt && !(status & ACPI_EC_FLAG_SCI)) {
                                acpi_ec_spurious_interrupt(ec, t);
                        }
-               } else if (t->wlen == t->wi &&
-                          (status & ACPI_EC_FLAG_IBF) == 0) {
+               } else if (t->wlen == t->wi && !(status & ACPI_EC_FLAG_IBF)) {
                        ec_transaction_transition(ec, ACPI_EC_COMMAND_COMPLETE);
                        wakeup = true;
                }
@@ -697,6 +696,7 @@ static void advance_transaction(struct acpi_ec *ec, bool interrupt)
 out:
        if (status & ACPI_EC_FLAG_SCI)
                acpi_ec_submit_query(ec);
+
        if (wakeup && interrupt)
                wake_up(&ec->wait);
 }