AnsweredAssumed Answered

Embedded Linux Multi-touch driver with QT, TSLIB

Question asked by Ram Ramasamy on Jun 11, 2013
Latest reply on Jan 31, 2014 by Ram Ramasamy

Hi,

I am trying to interface capacitive touch screen to our product.The driver for the capacitive touch screen controller (GT927) attached for your reference. Cross compiled the driver and insmod in to the kernel successfully. Getting the corresponding co-ordinate in debug terminal window whenever touched the capacitive screen as follows


root@Toucan /$ insmod gt9xx.ko

[   53.530000] <<-GTP-INFO->> GTP driver install.

[   53.540000] <<-GTP-INFO->> GTP Driver Version:V1.4<2012/12/12>

[   53.540000] <<-GTP-INFO->> GTP Driver build@14:12:47,Jun 10 2013

[   53.550000] <<-GTP-INFO->> GTP I2C Address:0x5d

[   53.680000] <<-GTP-DEBUG->> [664]len1=228,len2=0,len3=0,send_len:228

[   53.680000] <<-GTP-DEBUG->> [681]SENSOR ID:0

[   53.710000] <<-GTP-DEBUG->> [743]X_MAX = 480,Y_MAX = 800,TRIGGER = 0x00

[   53.740000] input: Goodix Capacitive TouchScreen as /devices/virtual/input/in

put1

[   53.760000] <<-GTP-DEBUG->> [886]INT trigger type:0

[   53.760000] <<-GTP-INFO->> GTP works in interrupt mode.

[   53.770000] <<-GTP-DEBUG->> [377]pre_touch:00, finger:80.

[   53.780000] <<-GTP-INFO->> IC VERSION:9270_1030

[   53.800000] <<-GTP-DEBUG->> [377]pre_touch:00, finger:80.

root@Toucan /$ [   53.820000] <<-GTP-DEBUG->> [377]pre_touch:00, finger:80.

[   56.930000] <<-GTP-DEBUG->> [377]pre_touch:00, finger:81.

[   56.940000] <<-GTP-DEBUG->> [273]ID:0, X:514, Y:423, W:22

[   56.960000] <<-GTP-DEBUG->> [377]pre_touch:01, finger:81.

[   56.960000] <<-GTP-DEBUG->> [273]ID:0, X:514, Y:423, W:22

[   56.980000] <<-GTP-DEBUG->> [377]pre_touch:01, finger:81.

[   56.990000] <<-GTP-DEBUG->> [273]ID:0, X:514, Y:423, W:22

[   57.010000] <<-GTP-DEBUG->> [377]pre_touch:01, finger:81.

[   57.010000] <<-GTP-DEBUG->> [273]ID:0, X:514, Y:423, W:22

[   57.030000] <<-GTP-DEBUG->> [377]pre_touch:01, finger:81.

[   57.040000] <<-GTP-DEBUG->> [273]ID:0, X:514, Y:423, W:22

[   57.060000] <<-GTP-DEBUG->> [377]pre_touch:01, finger:81.

[   57.060000] <<-GTP-DEBUG->> [273]ID:0, X:514, Y:423, W:22

[   57.080000] <<-GTP-DEBUG->> [377]pre_touch:01, finger:80.

[   57.090000] <<-GTP-DEBUG->> [433]Touch Release!

[   57.090000] <<-GTP-DEBUG->> [377]pre_touch:00, finger:80.

[   57.110000] <<-GTP-DEBUG->> [377]pre_touch:00, finger:80.

[   90.480000] <<-GTP-DEBUG->> [377]pre_touch:00, finger:83.

[   90.490000] <<-GTP-DEBUG->> [273]ID:0, X:399, Y:144, W:29

[   90.490000] <<-GTP-DEBUG->> [273]ID:1, X:455, Y:274, W:41

[   90.500000] <<-GTP-DEBUG->> [273]ID:2, X:405, Y:313, W:38

[   90.520000] <<-GTP-DEBUG->> [377]pre_touch:03, finger:84.

[   90.530000] <<-GTP-DEBUG->> [273]ID:0, X:399, Y:144, W:29

[   90.530000] <<-GTP-DEBUG->> [273]ID:1, X:455, Y:274, W:41

[   90.540000] <<-GTP-DEBUG->> [273]ID:2, X:405, Y:313, W:38

[   90.540000] <<-GTP-DEBUG->> [273]ID:3, X:334, Y:447, W:19

[   90.560000] <<-GTP-DEBUG->> [377]pre_touch:04, finger:85.

[   90.570000] <<-GTP-DEBUG->> [273]ID:0, X:399, Y:144, W:29

[   90.570000] <<-GTP-DEBUG->> [273]ID:1, X:455, Y:274, W:41

[   90.580000] <<-GTP-DEBUG->> [273]ID:2, X:405, Y:313, W:38

[   90.580000] <<-GTP-DEBUG->> [273]ID:3, X:334, Y:447, W:19

[   90.590000] <<-GTP-DEBUG->> [273]ID:4, X:168, Y:142, W:21

[   90.610000] <<-GTP-DEBUG->> [377]pre_touch:05, finger:85.

[   90.620000] <<-GTP-DEBUG->> [273]ID:0, X:399, Y:144, W:29

[   90.620000] <<-GTP-DEBUG->> [273]ID:1, X:455, Y:274, W:41

[   90.630000] <<-GTP-DEBUG->> [273]ID:2, X:405, Y:313, W:38

[   90.630000] <<-GTP-DEBUG->> [273]ID:3, X:334, Y:447, W:19

[   90.640000] <<-GTP-DEBUG->> [273]ID:4, X:168, Y:142, W:21

[   90.660000] <<-GTP-DEBUG->> [377]pre_touch:05, finger:85.

[   90.660000] <<-GTP-DEBUG->> [273]ID:0, X:399, Y:144, W:29

[   90.670000] <<-GTP-DEBUG->> [273]ID:1, X:455, Y:274, W:41

[   90.680000] <<-GTP-DEBUG->> [273]ID:2, X:409, Y:320, W:38

[   90.680000] <<-GTP-DEBUG->> [273]ID:3, X:334, Y:447, W:19

[   90.690000] <<-GTP-DEBUG->> [273]ID:4, X:173, Y:152, W:21

[   90.700000] <<-GTP-DEBUG->> [377]pre_touch:05, finger:81.

[   90.710000] <<-GTP-DEBUG->> [273]ID:4, X:166, Y:145, W:21

[   90.730000] <<-GTP-DEBUG->> [377]pre_touch:01, finger:80.

[   90.730000] <<-GTP-DEBUG->> [433]Touch Release!

[   90.740000] <<-GTP-DEBUG->> [377]pre_touch:00, finger:80.

[   90.750000] <<-GTP-DEBUG->> [377]pre_touch:00, finger:80.

 


Now i am facing problem of interfacing the driver in to multitouch protocol of the kernel. I cannot calibrate the touch screen using ts_calibrate. I tried by replacing all the occurrences of ABS_X / Y with ABS_MT_POSITION_X / Y in tslib (plugin/input-raw.c) but it's showing segment fault. How can i implement multi touch protocol for touch screen driver? I followed this link to interface multitouch with QT

http://www.ptrackapp.com/apclassys-notes/embedded-linux-multitouch/

 

But i can't able to calibrate (ts_calibrate) the touch screen, it gives the "Segment fault"

Please kindly give some suggestion to solve this problem.


Thanks,

Harish Ramasamy

Outcomes