[meta-freescale] Issue with egalax_ts in linux-boundary
Fabio Estevam
festevam at gmail.com
Mon Jul 1 09:56:28 PDT 2013
Hi Erik,
On Mon, Jul 1, 2013 at 12:53 PM, Erik Botö <erik.boto at pelagicore.com> wrote:
> Hi,
>
> When trying to use a nitrogen6x board with Freescale MCIMX-LVDS1 touchscreen
> together with Qt5 to create a QtQuick GUI that uses multitouch gestures I
> discovered that the touchscreen driver (egalax_ts) does not work as intended
> with Qt5. I'm not entirely sure if it's Qt that is not handling a case that
> should be ok or if it's the driver that is misbehaving, but I think it's the
> driver that is at fault.
>
> The problem is that when pressing two fingers on the screen and then when
> you lift one finger only the lifted finger will be reported before sending
> the next SYN_REPORT, instead of also reporting the other present fingers
> before SYN_REPORT.
>
> Is there a separate mailing list for boundary-linux or is this list ok? I
> thought this might be useful to get "on the record" here anyway if someone
> else hits the same issue.
>
> Cheers,
> Erik Botö
> Pelagicore AB
>
> Proposed fix:
Your proposed fix matches the code from FSL BSP 4.0.0 driver:
http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tree/drivers/input/touchscreen/egalax_ts.c?h=imx_3.0.35_4.0.0
#ifdef CONFIG_TOUCHSCREEN_EGALAX_SINGLE_TOUCH
input_report_abs(input_dev, ABS_X, x);
input_report_abs(input_dev, ABS_Y, y);
input_event(data->input_dev, EV_KEY, BTN_TOUCH, 1);
input_report_abs(input_dev, ABS_PRESSURE, 1);
#else
for (i = 0; i < MAX_SUPPORT_POINTS; i++) {
if (!events[i].valid)
continue;
dev_dbg(&client->dev, "report id:%d valid:%d x:%d y:%d",
i, valid, x, y);
input_report_abs(input_dev,
ABS_MT_TRACKING_ID, i);
input_report_abs(input_dev,
ABS_MT_TOUCH_MAJOR, 1);
input_report_abs(input_dev,
ABS_MT_POSITION_X, events[i].x);
input_report_abs(input_dev,
ABS_MT_POSITION_Y, events[i].y);
input_mt_sync(input_dev);
}
#endif
Regards,
Fabio Estevam
More information about the meta-freescale
mailing list