From: Jingle Wu Date: Thu, 16 Jul 2020 00:40:27 +0000 (-0700) Subject: Input: elan_i2c - handle firmware not implementing "get pattern" command X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=77da21c5d3c698f5c9ce41d57c137244bc8b7b93;p=linux.git 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 Signed-off-by: Dmitry Torokhov --- diff --git a/drivers/input/mouse/elan_i2c_i2c.c b/drivers/input/mouse/elan_i2c_i2c.c index 058b35b1f9a92..0d8a6a1b30d7c 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; }