Input: iforce - only call iforce_process_packet() if initialized
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 10 Aug 2018 17:34:13 +0000 (10:34 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sun, 23 Jun 2019 06:55:23 +0000 (23:55 -0700)
It is excessive to check if device is fully initialized in
iforce_process_packet(), as for USB-conected devices we do not start
collecting reports until the device is fully initialized.

Let's change serio transport code to not call iforce_process_packet()
until device initialization is done.

Tested-by: Tim Schumacher <timschumi@gmx.de>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/joystick/iforce/iforce-packets.c
drivers/input/joystick/iforce/iforce-serio.c

index c0a665961c2302cf64c49a1632d199a7c03a03bd..976ec1c7cf155ad7cd5af366aa745231b377819c 100644 (file)
@@ -172,9 +172,6 @@ void iforce_process_packet(struct iforce *iforce,
        struct input_dev *dev = iforce->dev;
        int i, j;
 
-       if (!iforce->type)
-               return;
-
        switch (packet_id) {
 
        case 0x01:      /* joystick position data */
index 0dd95d145e85cef40b8ffdc33fbb8a14a215265a..8d7eba9c9f0e6fc2ddc2003a102ca58b509f3de3 100644 (file)
@@ -172,7 +172,7 @@ static irqreturn_t iforce_serio_irq(struct serio *serio,
 
                        /* Signal that command is done */
                        wake_up(&iforce->wait);
-               } else {
+               } else if (likely(iforce->type)) {
                        iforce_process_packet(iforce, iforce_serio->id,
                                              iforce->data, iforce_serio->len);
                }