Re: ALPS touchpad ot correctly recognized: GlidePoint vs DualPoint

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Juanito,

On Thu, Sep 07, 2017 at 09:05:14AM +0200, Juanito wrote:
> Dear Kernel Hackers,
> 
> I hope this is the correct place to post this. If not, please forgive me
> and feel free to forward it to someplace else. Thank you very much!

Let's add a few more people who's been looking after ALPS...

> 
> I have a ThinkPad with a touchpad that looks exactly like this:
> https://www.camerongray.me/wp-content/uploads/2015/02/SCotlGg.jpg
> 
> The three pyhsical buttons on top do not work on my debian stretch
> (4.9). I think it isn't being recognized correctly. I see a "Rejected
> trackstick packet from non DualPoint device" in my syslog whenever I
> click on one of them. On the other hand on a Ubuntu 16.04 (4.4 - patched
> by Ubuntu y guess) the buttons *do* work. Interestingly enough, it
> doesn't work on 17.04 (4.10).
> 
> I have noticed that the touchpad gets assigned different names on both
> distros. On debian it is recognized as a GlidePoint and on Ubuntu as a
> DualPoint. In an upstream kernel 4.13 which I just built, it's also
> recognized as a GlidePoint. Unfortunately it doesn't work either.
> 
> I am not sure if the device is actually a DualPoint or not (I don't
> really understand the terminology here), but the thing is that the
> buttons work when the kernel believes it to be one.
> 
> This is the info I have managed to find about the device while running
> on the non-working debian:
> 
> dmesg:
> [    2.914806] input: AlpsPS/2 ALPS GlidePoint as
> /devices/platform/i8042/serio1/input/input2
> 
> lsinput:
> /dev/input/event11
>    bustype : BUS_I8042
>    vendor  : 0x2
>    product : 0x8
>    version : 1792
>    name    : "AlpsPS/2 ALPS GlidePoint"
>    phys    : "isa0060/serio1/input0"
>    bits ev : (null) (null) (null)
> 
> I have played around with the drivers/input/mouse/alps.c file and found
> out the following:
> 
> e7 and ec are important (although I don't know what these are exactly)
> and have the following values:
> 
> e7: 73 03 0a
> ec: 88 b0 13
> 
> This combination is recognized as an ALPS touchpad, but isn't assigned
> the ALPS_DUALPOINT flag. As far as I can see, it is actually being
> *removed* at this point:
> 
> if (alps_probe_trackstick_v3_v7(psmouse, ALPS_REG_BASE_V7) < 0)
>             priv->flags &= ~ALPS_DUALPOINT;
> 
> The bit that says it has a trackpoint (I don't know what this is) is
> apparently saying my device doesn't have one and is removing the
> ALPS_DUALPOINT flag.
> 
> This flag makes the buttons work. I am not sure if it breaks other stuff.
> 
> I have written a pretty dummy patch which actually adds the flag again
> making the buttons work. Again, I am not sure if it breaks other stuff
> but my system isn't whining. Here is the patch:
> 
> diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
> index 850b00e3ad8e..17aba42e846f 100644
> --- a/drivers/input/mouse/alps.c
> +++ b/drivers/input/mouse/alps.c
> @@ -2804,6 +2804,9 @@ static int alps_set_protocol(struct psmouse *psmouse,
>                 if (alps_probe_trackstick_v3_v7(psmouse,
> ALPS_REG_BASE_V7) < 0)
>                         priv->flags &= ~ALPS_DUALPOINT;
> 
> +               if (priv->fw_ver[1] == 0xb0)
> +                       priv->flags |= ALPS_DUALPOINT;
> +
>                 break;
> 
>         case ALPS_PROTO_V8:
> 
> After applying this patch dmesg and lsinput say this:
> 
> [    8.226543] input: AlpsPS/2 ALPS DualPoint Stick as
> /devices/platform/i8042/serio1/input/input13
> [    8.247595] input: AlpsPS/2 ALPS DualPoint TouchPad as
> /devices/platform/i8042/serio1/input/input2
> 
> /dev/input/event11
>    bustype : BUS_I8042
>    vendor  : 0x2
>    product : 0x8
>    version : 1792
>    name    : "AlpsPS/2 ALPS DualPoint Stick"
>    phys    : "isa0060/serio1/input1"
>    bits ev : (null) (null) (null)
> 
> /dev/input/event12
>    bustype : BUS_I8042
>    vendor  : 0x2
>    product : 0x8
>    version : 1792
>    name    : "AlpsPS/2 ALPS DualPoint TouchPad"
>    phys    : "isa0060/serio1/input0"
>    bits ev : (null) (null) (null)
> 
> I am a total newbie to kernels and drivers so it would be great if
> somebody who actually had some idea could take a look at this and
> probably create a patch in a better place. I'll be glad to post more
> info if necessary.
> 
> Thank you very much!
> 
> Cheers,
> Juanito
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux