Re: [PATCH v4] hid-multitouch: migrate 3M PCT touch screens to hid-multitouch
flat view
From: Jiri Kosina <hidden>
Date: 2011-03-24 11:46:19
Also in:
lkml
On Tue, 22 Mar 2011, Henrik Rydberg wrote:
On Tue, Mar 22, 2011 at 05:34:01PM +0100, Benjamin Tissoires wrote:quoted
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 <redacted> Reviewed-by: Stéphane Chatty <redacted> ---[...]quoted
Henrik, do I still have your Reviewed-and-tested-by ?Yep, looks good. One more thing, though:quoted
@@ -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.
Okay, thanks a lot for the review. This can be handled later during -rc phase if needed. So please proceed with confirming with the existing devices, and meanwhile I have applied the patch.
quoted
+ 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, -- Jiri Kosina SUSE Labs, Novell Inc. -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html