Messages in this thread | | | Subject | Re: [PATCH] Input: ALPS - Detect trackstick presence for v7 protocol | From | Hans de Goede <> | Date | Wed, 6 Jan 2016 09:12:30 +0100 |
| |
Hi,
On 05-01-16 17:44, Pali Rohár wrote: > On Sunday 22 March 2015 14:46:11 Pali Rohár wrote: >> This patch adds detection of trackstick for v7 protocol devices. Code in this >> patch is used in official Dell touchpad linux drivers for Dell models: >> Dell Latitude E5250/5250, E5450/5450, E5550/5550 >> >> Detection code and base reg for alps v3 rushmore and v7 devices is exacly same. >> >> Also user in bug https://bugzilla.kernel.org/show_bug.cgi?id=94801 reported >> that Toshiba Sattellite Z30-A-1DG has only alps v7 touchpad device without >> trackstick and kernel reports to userspace also redundant trackstick device. >> >> Signed-off-by: Pali Rohár <pali.rohar@gmail.com> >> --- > > Hello! > > Alex now tested this patch on two Dell machines with ALPS: E5450 (with > TrackStick) and E5250 (without TrackStick). > > With patch nothing was changed for E5450. And E5250 with patch does not > show trackstick input device anymore. > > Tested-by: Alex Hung <alex.hung@canonical.com>
With that this patch looks good to me:
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Pali, it is probably a good idea to send Dmitry a v2 of these 2 patches rebased on top of the latest next and with Alex' Tested-By and my Reviewed-by-s added.
Regards,
Hans
> >> drivers/input/mouse/alps.c | 12 ++++++++---- >> 1 file changed, 8 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c >> index 33198b9..c9cd27a 100644 >> --- a/drivers/input/mouse/alps.c >> +++ b/drivers/input/mouse/alps.c >> @@ -30,6 +30,7 @@ >> #define ALPS_CMD_NIBBLE_10 0x01f2 >> >> #define ALPS_REG_BASE_RUSHMORE 0xc2c0 >> +#define ALPS_REG_BASE_V7 0xc2c0 >> #define ALPS_REG_BASE_PINNACLE 0x0000 >> >> static const struct alps_nibble_commands alps_v3_nibble_commands[] = { >> @@ -1795,7 +1796,7 @@ static int alps_absolute_mode_v3(struct psmouse *psmouse) >> return 0; >> } >> >> -static int alps_probe_trackstick_v3(struct psmouse *psmouse, int reg_base) >> +static int alps_probe_trackstick_v3_v7(struct psmouse *psmouse, int reg_base) >> { >> int ret = -EIO, reg_val; >> >> @@ -1880,7 +1881,7 @@ static int alps_hw_init_v3(struct psmouse *psmouse) >> int reg_val; >> unsigned char param[4]; >> >> - reg_val = alps_probe_trackstick_v3(psmouse, ALPS_REG_BASE_PINNACLE); >> + reg_val = alps_probe_trackstick_v3_v7(psmouse, ALPS_REG_BASE_PINNACLE); >> if (reg_val == -EIO) >> goto error; >> >> @@ -2260,8 +2261,8 @@ static int alps_set_protocol(struct psmouse *psmouse, >> priv->x_bits = 16; >> priv->y_bits = 12; >> >> - if (alps_probe_trackstick_v3(psmouse, >> - ALPS_REG_BASE_RUSHMORE) < 0) >> + if (alps_probe_trackstick_v3_v7(psmouse, >> + ALPS_REG_BASE_RUSHMORE) < 0) >> priv->flags &= ~ALPS_DUALPOINT; >> >> break; >> @@ -2311,6 +2312,9 @@ static int alps_set_protocol(struct psmouse *psmouse, >> if (priv->fw_ver[1] != 0xba) >> priv->flags |= ALPS_BUTTONPAD; >> >> + if (alps_probe_trackstick_v3_v7(psmouse, ALPS_REG_BASE_V7) < 0) >> + priv->flags &= ~ALPS_DUALPOINT; >> + >> break; >> } >> >
| |