OSDN Git Service

Input: elan_i2c - handle firmware not implementing "get pattern" command
authorJingle Wu <jingle.wu@emc.com.tw>
Thu, 16 Jul 2020 00:40:27 +0000 (17:40 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 18 Jul 2020 00:35:58 +0000 (17:35 -0700)
Not all versions of firmware implement "get pattern" command. When
encountering those assume that the controllers use older pattern.

Signed-off-by: Jingle Wu <jingle.wu@emc.com.tw>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/mouse/elan_i2c_i2c.c

index 058b35b..0d8a6a1 100644 (file)
@@ -249,7 +249,13 @@ static int elan_i2c_get_pattern(struct i2c_client *client, u8 *pattern)
                dev_err(&client->dev, "failed to get pattern: %d\n", error);
                return error;
        }
-       *pattern = val[1];
+
+       /*
+        * Not all versions of firmware implement "get pattern" command.
+        * When this command is not implemented the device will respond
+        * with 0xFF 0xFF, which we will treat as "old" pattern 0.
+        */
+       *pattern = val[0] == 0xFF && val[1] == 0xFF ? 0 : val[1];
 
        return 0;
 }