[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110322165815.GA6706@polaris.bitmath.org>
Date: Tue, 22 Mar 2011 17:58:15 +0100
From: "Henrik Rydberg" <rydberg@...omail.se>
To: Benjamin Tissoires <benjamin.tissoires@...c.fr>
Cc: Dmitry Torokhov <dmitry.torokhov@...il.com>,
Jiri Kosina <jkosina@...e.cz>,
Stephane Chatty <chatty@...-enac.fr>,
linux-input@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v4] hid-multitouch: migrate 3M PCT touch screens to
hid-multitouch
On Tue, Mar 22, 2011 at 05:34:01PM +0100, Benjamin Tissoires wrote:
> This patch merges the hid-3m-pct driver into hid-multitouch.
> To keep devices working the same way they used to with hid-3m-pct,
> we need to add two signal/noise ratios for width and height.
> We also need to work on width/height to send proper
> ABS_MT_ORIENTATION flag.
>
> Importing 3M into hid-multitouch also solved the bug in which
> devices handling width and height in their report descriptors
> did not show ABS_MT_TOUCH_MAJOR and ABS_MT_TOUCH_MINOR.
>
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@...c.fr>
> Reviewed-by: Stéphane Chatty <chatty@...c.fr>
> ---
[...]
> Henrik, do I still have your Reviewed-and-tested-by ?
Yep, looks good. One more thing, though:
> @@ -332,11 +351,18 @@ static void mt_emit_event(struct mt_device *td, struct input_dev *input)
> input_mt_report_slot_state(input, MT_TOOL_FINGER,
> s->touch_state);
> if (s->touch_state) {
> + /* this finger is on the screen */
> + int wide = (s->w > s->h);
> + /* divided by two to match visual scale of touch */
> + int major = max(s->w, s->h) >> 1;
> + int minor = min(s->w, s->h) >> 1;
This scaling is most likely not correct for all devices. I went
through a set of devices some time ago, running mtview on all of them,
visually inspecting the touch size. Some were low by a factor of two,
some were high by a factor of two. A confirmation that the other
devices supported by this driver seem right would be good. If not, a
quirk should probably be added here.
> +
> input_event(input, EV_ABS, ABS_MT_POSITION_X, s->x);
> input_event(input, EV_ABS, ABS_MT_POSITION_Y, s->y);
> + input_event(input, EV_ABS, ABS_MT_ORIENTATION, wide);
> input_event(input, EV_ABS, ABS_MT_PRESSURE, s->p);
> - input_event(input, EV_ABS, ABS_MT_TOUCH_MAJOR, s->w);
> - input_event(input, EV_ABS, ABS_MT_TOUCH_MINOR, s->h);
> + input_event(input, EV_ABS, ABS_MT_TOUCH_MAJOR, major);
> + input_event(input, EV_ABS, ABS_MT_TOUCH_MINOR, minor);
> }
> s->seen_in_this_frame = false;
Thanks,
Henrik
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists