lkml.org 
[lkml]   [2015]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] Input: ALPS: Move v7 packet info to Documentation and v6 packet info
Hi,

On 10-02-15 13:43, Pali Rohár wrote:
> This patch move all packet info from driver source code to documentation
> and adds info about v6 packet format (from driver source code).
>
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>

Thanks for doing this:

Acked-by: Hans de Goede <hdegoede@redhat.com>

Regards,

Hans

> ---
> Documentation/input/alps.txt | 68 ++++++++++++++++++++++++++++++++++++++++--
> drivers/input/mouse/alps.c | 39 ------------------------
> 2 files changed, 66 insertions(+), 41 deletions(-)
>
> diff --git a/Documentation/input/alps.txt b/Documentation/input/alps.txt
> index 90bca6f..a63e5e0 100644
> --- a/Documentation/input/alps.txt
> +++ b/Documentation/input/alps.txt
> @@ -3,8 +3,8 @@ ALPS Touchpad Protocol
>
> Introduction
> ------------
> -Currently the ALPS touchpad driver supports five protocol versions in use by
> -ALPS touchpads, called versions 1, 2, 3, 4 and 5.
> +Currently the ALPS touchpad driver supports seven protocol versions in use by
> +ALPS touchpads, called versions 1, 2, 3, 4, 5, 6 and 7.
>
> Since roughly mid-2010 several new ALPS touchpads have been released and
> integrated into a variety of laptops and netbooks. These new touchpads
> @@ -240,3 +240,67 @@ For mt, the format is:
> byte 3: 0 x23 x22 x21 x20 x19 x18 x17
> byte 4: 0 x9 x8 x7 x6 x5 x4 x3
> byte 5: 0 x16 x15 x14 x13 x12 x11 x10
> +
> +ALPS Absolute Mode - Protocol Version 6
> +---------------------------------------
> +
> +For trackstick packet, the format is:
> +
> + byte 0: 1 1 1 1 1 1 1 1
> + byte 1: 0 X6 X5 X4 X3 X2 X1 X0
> + byte 2: 0 Y6 Y5 Y4 Y3 Y2 Y1 Y0
> + byte 3: ? Y7 X7 ? ? M R L
> + byte 4: Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0
> + byte 5: 0 1 1 1 1 1 1 1
> +
> +For touchpad packet, the format is:
> +
> + byte 0: 1 1 1 1 1 1 1 1
> + byte 1: 0 0 0 0 x3 x2 x1 x0
> + byte 2: 0 0 0 0 y3 y2 y1 y0
> + byte 3: ? x7 x6 x5 x4 ? r l
> + byte 4: ? y7 y6 y5 y4 ? ? ?
> + byte 5: z7 z6 z5 z4 z3 z2 z1 z0
> +
> +(v6 touchpad does not have middle button)
> +
> +ALPS Absolute Mode - Protocol Version 7
> +---------------------------------------
> +
> +For trackstick packet, the format is:
> +
> + byte 0: 0 1 0 0 1 0 0 0
> + byte 1: 1 1 * * 1 M R L
> + byte 2: X7 1 X5 X4 X3 X2 X1 X0
> + byte 3: Z6 1 Y6 X6 1 Y2 Y1 Y0
> + byte 4: Y7 0 Y5 Y4 Y3 1 1 0
> + byte 5: T&P 0 Z5 Z4 Z3 Z2 Z1 Z0
> +
> +For touchpad packet, the format is:
> +
> + packet-fmt b7 b6 b5 b4 b3 b2 b1 b0
> + byte 0: TWO & MULTI L 1 R M 1 Y0-2 Y0-1 Y0-0
> + byte 0: NEW L 1 X1-5 1 1 Y0-2 Y0-1 Y0-0
> + byte 1: Y0-10 Y0-9 Y0-8 Y0-7 Y0-6 Y0-5 Y0-4 Y0-3
> + byte 2: X0-11 1 X0-10 X0-9 X0-8 X0-7 X0-6 X0-5
> + byte 3: X1-11 1 X0-4 X0-3 1 X0-2 X0-1 X0-0
> + byte 4: TWO X1-10 TWO X1-9 X1-8 X1-7 X1-6 X1-5 X1-4
> + byte 4: MULTI X1-10 TWO X1-9 X1-8 X1-7 X1-6 Y1-5 1
> + byte 4: NEW X1-10 TWO X1-9 X1-8 X1-7 X1-6 0 0
> + byte 5: TWO & NEW Y1-10 0 Y1-9 Y1-8 Y1-7 Y1-6 Y1-5 Y1-4
> + byte 5: MULTI Y1-10 0 Y1-9 Y1-8 Y1-7 Y1-6 F-1 F-0
> +
> + L: Left button
> + R / M: Non-clickpads: Right / Middle button
> + Clickpads: When > 2 fingers are down, and some fingers
> + are in the button area, then the 2 coordinates reported
> + are for fingers outside the button area and these report
> + extra fingers being present in the right / left button
> + area. Note these fingers are not added to the F field!
> + so if a TWO packet is received and R = 1 then there are
> + 3 fingers down, etc.
> + TWO: 1: Two touches present, byte 0/4/5 are in TWO fmt
> + 0: If byte 4 bit 0 is 1, then byte 0/4/5 are in MULTI fmt
> + otherwise byte 0 bit 4 must be set and byte 0/4/5 are
> + in NEW fmt
> + F: Number of fingers - 3, 0 means 3 fingers, 1 means 4 ...
> diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
> index d88d73d..5ac2a91 100644
> --- a/drivers/input/mouse/alps.c
> +++ b/drivers/input/mouse/alps.c
> @@ -881,34 +881,6 @@ static void alps_get_finger_coordinate_v7(struct input_mt_pos *mt,
> unsigned char *pkt,
> unsigned char pkt_id)
> {
> - /*
> - * packet-fmt b7 b6 b5 b4 b3 b2 b1 b0
> - * Byte0 TWO & MULTI L 1 R M 1 Y0-2 Y0-1 Y0-0
> - * Byte0 NEW L 1 X1-5 1 1 Y0-2 Y0-1 Y0-0
> - * Byte1 Y0-10 Y0-9 Y0-8 Y0-7 Y0-6 Y0-5 Y0-4 Y0-3
> - * Byte2 X0-11 1 X0-10 X0-9 X0-8 X0-7 X0-6 X0-5
> - * Byte3 X1-11 1 X0-4 X0-3 1 X0-2 X0-1 X0-0
> - * Byte4 TWO X1-10 TWO X1-9 X1-8 X1-7 X1-6 X1-5 X1-4
> - * Byte4 MULTI X1-10 TWO X1-9 X1-8 X1-7 X1-6 Y1-5 1
> - * Byte4 NEW X1-10 TWO X1-9 X1-8 X1-7 X1-6 0 0
> - * Byte5 TWO & NEW Y1-10 0 Y1-9 Y1-8 Y1-7 Y1-6 Y1-5 Y1-4
> - * Byte5 MULTI Y1-10 0 Y1-9 Y1-8 Y1-7 Y1-6 F-1 F-0
> - * L: Left button
> - * R / M: Non-clickpads: Right / Middle button
> - * Clickpads: When > 2 fingers are down, and some fingers
> - * are in the button area, then the 2 coordinates reported
> - * are for fingers outside the button area and these report
> - * extra fingers being present in the right / left button
> - * area. Note these fingers are not added to the F field!
> - * so if a TWO packet is received and R = 1 then there are
> - * 3 fingers down, etc.
> - * TWO: 1: Two touches present, byte 0/4/5 are in TWO fmt
> - * 0: If byte 4 bit 0 is 1, then byte 0/4/5 are in MULTI fmt
> - * otherwise byte 0 bit 4 must be set and byte 0/4/5 are
> - * in NEW fmt
> - * F: Number of fingers - 3, 0 means 3 fingers, 1 means 4 ...
> - */
> -
> mt[0].x = ((pkt[2] & 0x80) << 4);
> mt[0].x |= ((pkt[2] & 0x3F) << 5);
> mt[0].x |= ((pkt[3] & 0x30) >> 1);
> @@ -1026,17 +998,6 @@ static void alps_process_trackstick_packet_v7(struct psmouse *psmouse)
> struct input_dev *dev2 = priv->dev2;
> int x, y, z, left, right, middle;
>
> - /*
> - * b7 b6 b5 b4 b3 b2 b1 b0
> - * Byte0 0 1 0 0 1 0 0 0
> - * Byte1 1 1 * * 1 M R L
> - * Byte2 X7 1 X5 X4 X3 X2 X1 X0
> - * Byte3 Z6 1 Y6 X6 1 Y2 Y1 Y0
> - * Byte4 Y7 0 Y5 Y4 Y3 1 1 0
> - * Byte5 T&P 0 Z5 Z4 Z3 Z2 Z1 Z0
> - * M / R / L: Middle / Right / Left button
> - */
> -
> x = ((packet[2] & 0xbf)) | ((packet[3] & 0x10) << 2);
> y = (packet[3] & 0x07) | (packet[4] & 0xb8) |
> ((packet[3] & 0x20) << 1);
>


\
 
 \ /
  Last update: 2015-02-11 08:41    [W:0.053 / U:3.092 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site