Why does the Touchscreen Driver work as a Touchpad?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Why does the Touchscreen Driver work as a Touchpad?

2,829 Views
atakan
Contributor II

Hello,

 

I have a Sabre SD board and a FT5X06 based touchscreen. The driver that comes with Freescale's Lollipop 5.0.0 release did not worked due to its uncompatibility to device tree. Finally I found another driver that worked fine after some modifications.

 

Somehow, the driver shows a circular cursor on the screen and takes the finger movements as relative coordinates and moves the cursor. It acts as a laptop touchpad. The driver can read the coordinates of multi touches properly. But there is a problem with input reporting. I've compared it to the default eGalax touchscreen driver that works good. But could not find the problem.

 

The driver is attached.

Please help me with this issue.

 

Thank you.

!

Original Attachment has been moved to: edt-ft5x06_relative.c.zip

0 Kudos
Reply
4 Replies

1,577 Views
BiyongSUN
NXP Employee
NXP Employee

first of all, the touch pad driver problem is not i.MX problem.

The second, the protocol you have modified is changing the problem.

To debug the protocol evtest /dev/input/event0 to see what's wrong.

The protocol could be single touch, multi-touch A , multi-touch B.

Different application OS accept different protocol.

You can find the protocol in the Linux source tree.

Documentation\input\multi-touch-protocol.txt

Addition to that, you need to modify the device tree according to the hardware, especially the interrupt gpio from touch to the i.MX

0 Kudos
Reply

1,577 Views
andrzejdziedzic
Contributor IV

Hi

It may happen if you don't have the "idc" file or it is not correct (it should contain an entry "touch.deviceType = touchScreen").

Please check this: https://source.android.com/devices/input/input-device-configuration-files.html

0 Kudos
Reply

1,577 Views
borisgorshkov
Contributor I

In function
static int edt_ft5x06_ts_probe(struct i2c_client *client,
                     const struct i2c_device_id *id)
you should uncomment line

 error = input_mt_init_slots(input, MAX_SUPPORT_POINTS,  INPUT_MT_DIRECT );

0 Kudos
Reply

1,577 Views
zhanghuan
Contributor I

HI, I met the same problem. And I have no idea about it. Have you known the reason? Please help me. Thank you!

0 Kudos
Reply