HID: magicmouse: Adjust major / minor axes to scale
authorHenrik Rydberg <rydberg@euromail.se>
Wed, 1 Sep 2010 01:56:24 +0000 (21:56 -0400)
committerJiri Kosina <jkosina@suse.cz>
Fri, 1 Oct 2010 13:42:47 +0000 (15:42 +0200)
By visual inspection, the reported touch_major and touch_minor axes
are roughly a factor of four too small. The factor is approximate,
since the protocol is not known and the HID report encodes touch size
with fewer bits than positions. This patch scales the reported values
by a factor of four.

Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Acked-by: Michael Poole <mdpoole@troilus.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-magicmouse.c

index 5e1907a514466dbab4223075d8836b1d13b3954a..e6dc151716643f0997e4eac4dc3d079c368dd15f 100644 (file)
@@ -254,8 +254,8 @@ static void magicmouse_emit_touch(struct magicmouse_sc *msc, int raw_id, u8 *tda
        /* Generate the input events for this touch. */
        if (report_touches && down) {
                input_report_abs(input, ABS_MT_TRACKING_ID, id);
-               input_report_abs(input, ABS_MT_TOUCH_MAJOR, touch_major);
-               input_report_abs(input, ABS_MT_TOUCH_MINOR, touch_minor);
+               input_report_abs(input, ABS_MT_TOUCH_MAJOR, touch_major << 2);
+               input_report_abs(input, ABS_MT_TOUCH_MINOR, touch_minor << 2);
                input_report_abs(input, ABS_MT_ORIENTATION, orientation);
                input_report_abs(input, ABS_MT_POSITION_X, x);
                input_report_abs(input, ABS_MT_POSITION_Y, y);