summaryrefslogtreecommitdiff
path: root/drivers/input
diff options
context:
space:
mode:
authorJingle Wu <jingle.wu@emc.com.tw>2020-07-15 17:40:27 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2020-07-17 17:35:58 -0700
commit77da21c5d3c698f5c9ce41d57c137244bc8b7b93 (patch)
treefa01b092f3690d29d03aa8ec08b6951bfc4e110b /drivers/input
parent3d77e6a8804abcc0504c904bd6e5cdf3a5cf8162 (diff)
Input: elan_i2c - handle firmware not implementing "get pattern" command
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>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/mouse/elan_i2c_i2c.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/input/mouse/elan_i2c_i2c.c b/drivers/input/mouse/elan_i2c_i2c.c
index 058b35b1f9a9..0d8a6a1b30d7 100644
--- a/drivers/input/mouse/elan_i2c_i2c.c
+++ b/drivers/input/mouse/elan_i2c_i2c.c
@@ -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;
}