On Wed, Dec 3, 2014 at 8:27 AM, Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > Add a table documenting where all the bits are in the v7 touchpad packets. > > Cc: stable@xxxxxxxxxxxxxxx # 3.17 > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> > --- Hi Hans, I tested yesterday the series on a Toshiba W50-A and a Z30-A if my memory is accurate. Internal QA tested these on a Dell M4700 (don't know if it has a v7 touchpad though). Both tests were conclusive, i.e. they fixes the spurious release when right-clicking. Tested-by: Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx> I am not confident enough with the code to review 3/4 and 4/4, but they look sane to me. Cheers, Benjamin > drivers/input/mouse/alps.c | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c > index d125a01..aceaade 100644 > --- a/drivers/input/mouse/alps.c > +++ b/drivers/input/mouse/alps.c > @@ -881,6 +881,34 @@ 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); > -- > 2.1.0 > > -- > 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 -- 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