diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2015-03-21 23:29:34 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2015-03-23 12:14:25 -0400 |
commit | c164c147c9a0a371c4710186972a02b6ee2eb984 (patch) | |
tree | 7474f10b4cc3cf1c380f3e577d4b50bc037824bd | |
parent | a736775db683174269c65c7c5cc8e5ee534e7681 (diff) |
Input: ALPS - fix max coordinates for v5 and v7 protocols
Commit 3296f71cd2fde7a2ad52e66a27eae419f6328066 ("Input: ALPS - consolidate
setting protocol parameters") inadvertently moved call to
alps_dolphin_get_device_area() from v5 to v7 protocol, causing both
protocols report incorrect maximum values for X and Y axes which resulted
in crash in Synaptics X driver.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=94801
Reported-by: Santiago Gala <sgala@apache.org>
Reported-by: Pali Rohár <pali.rohar@gmail.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-rw-r--r-- | drivers/input/mouse/alps.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c index 1bd15ebc01f2..33198b91bebf 100644 --- a/drivers/input/mouse/alps.c +++ b/drivers/input/mouse/alps.c | |||
@@ -2281,10 +2281,12 @@ static int alps_set_protocol(struct psmouse *psmouse, | |||
2281 | priv->set_abs_params = alps_set_abs_params_mt; | 2281 | priv->set_abs_params = alps_set_abs_params_mt; |
2282 | priv->nibble_commands = alps_v3_nibble_commands; | 2282 | priv->nibble_commands = alps_v3_nibble_commands; |
2283 | priv->addr_command = PSMOUSE_CMD_RESET_WRAP; | 2283 | priv->addr_command = PSMOUSE_CMD_RESET_WRAP; |
2284 | priv->x_max = 1360; | ||
2285 | priv->y_max = 660; | ||
2286 | priv->x_bits = 23; | 2284 | priv->x_bits = 23; |
2287 | priv->y_bits = 12; | 2285 | priv->y_bits = 12; |
2286 | |||
2287 | if (alps_dolphin_get_device_area(psmouse, priv)) | ||
2288 | return -EIO; | ||
2289 | |||
2288 | break; | 2290 | break; |
2289 | 2291 | ||
2290 | case ALPS_PROTO_V6: | 2292 | case ALPS_PROTO_V6: |
@@ -2303,9 +2305,8 @@ static int alps_set_protocol(struct psmouse *psmouse, | |||
2303 | priv->set_abs_params = alps_set_abs_params_mt; | 2305 | priv->set_abs_params = alps_set_abs_params_mt; |
2304 | priv->nibble_commands = alps_v3_nibble_commands; | 2306 | priv->nibble_commands = alps_v3_nibble_commands; |
2305 | priv->addr_command = PSMOUSE_CMD_RESET_WRAP; | 2307 | priv->addr_command = PSMOUSE_CMD_RESET_WRAP; |
2306 | 2308 | priv->x_max = 0xfff; | |
2307 | if (alps_dolphin_get_device_area(psmouse, priv)) | 2309 | priv->y_max = 0x7ff; |
2308 | return -EIO; | ||
2309 | 2310 | ||
2310 | if (priv->fw_ver[1] != 0xba) | 2311 | if (priv->fw_ver[1] != 0xba) |
2311 | priv->flags |= ALPS_BUTTONPAD; | 2312 | priv->flags |= ALPS_BUTTONPAD; |