]> git.baikalelectronics.ru Git - kernel.git/commitdiff
Input: synaptics-rmi4 - fix command completion check for bootloader v7/v8
authorMatthias Schiffer <matthias.schiffer@ew.tq-group.com>
Wed, 8 Jun 2022 12:48:02 +0000 (14:48 +0200)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 23 Sep 2022 20:00:13 +0000 (13:00 -0700)
The command register is reset to 0 when a command has completed. Check
for this condition instead of the error status, which will not accurately
reflect completion. In particular, the incorrect condition caused every
command error to be reported as a timeout.

Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Link: https://lore.kernel.org/r/20220608124808.51402-4-matthias.schiffer@ew.tq-group.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/rmi4/rmi_f34.c

index 3afc94f679edcdbe1b775d51f10eb377baef0f23..b811706fb77b52cd6f4ebbafbe1eb970d209650d 100644 (file)
@@ -114,13 +114,13 @@ static irqreturn_t rmi_f34_attention(int irq, void *ctx)
                        complete(&f34->v5.cmd_done);
        } else {
                ret = rmi_read_block(f34->fn->rmi_dev,
-                                    f34->fn->fd.data_base_addr +
-                                               f34->v7.off.flash_status,
-                                    &status, sizeof(status));
-               rmi_dbg(RMI_DEBUG_FN, &fn->dev, "%s: status: %#02x, ret: %d\n",
+                                       f34->fn->fd.data_base_addr +
+                                               f34->v7.off.flash_cmd,
+                                       &status, sizeof(status));
+               rmi_dbg(RMI_DEBUG_FN, &f34->fn->dev, "%s: cmd: %#02x, ret: %d\n",
                        __func__, status, ret);
 
-               if (!ret && !(status & 0x1f))
+               if (!ret && status == CMD_V7_IDLE)
                        complete(&f34->v7.cmd_done);
        }