imx6ulevk- touch screen driver for edt-ft5x06 - sending garbage data, not recognized by x11

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

imx6ulevk- touch screen driver for edt-ft5x06 - sending garbage data, not recognized by x11

Jump to solution
1,586 Views
muhammadnadeem
Contributor II

Hi All,

we are using imx6ulevk evaluation kit and the build tool we are using is yocto. We have created a small interface board to connect a 7" LCD instead of the 4.3" available with the kit. touch controller used on touch screen is ft-5x06. display is working fine but the touch is not. Here is what was done so fa

- edt-ft-5x06 is enabled from the kernel config

- imx6ul-14x14-evk.dts is modified to include touch controller

      polytouch: edt-ft5x06@38 {

       compatible = "edt,edt-ft5x06";

       reg = <0x38>;

       pinctrl-names = "default";

       pinctrl-0 = <&tx28_edt_ft5x06_pins>;

       interrupt-parent = <&gpio1>;

       interrupts = <2 2>;

       reset-gpios = <&gpio1 4 1>;             

   };

- pins are configured accordingly and so is the i2c2

     tx28_edt_ft5x06_pins: ft5x06grp {
        fsl,pins = <
         MX6UL_PAD_GPIO1_IO02__GPIO1_IO02 0xb0  /* INT */
         MX6UL_PAD_GPIO1_IO04__GPIO1_IO04 0xb0  /* RESET */
   >;

  };

- since edt-ft-5x06 driver in 3.14.38 version of the kernel does not support device tree. I used the driver from 3.18.27 version of Linux which does supports device tree

After compiling and running evtest, shows the following

Available devices:

/dev/input/event0:      20cc000.snvs-pwrkey

/dev/input/event1:      EP0790M09

/dev/input/event2:      FreescaleAccelerometer

/dev/input/event3:      mag3110

/dev/input/event4:      Logitech USB Optical Mouse

Select the device event number [0-4]:

evtest after selecting 1 continuously sends data in the following format

Event: time 1457360914.424370, -------------- SYN_REPORT ------------

Event: time 1457360914.444068, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 1

Event: time 1457360914.444068, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 79

Event: time 1457360914.444068, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 105

Event: time 1457360914.444068, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 0

Event: time 1457360914.444068, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 95

Event: time 1457360914.444068, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 32

Event: time 1457360914.444068, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 2

Event: time 1457360914.444068, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 10460

Event: time 1457360914.444068, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 57

Event: time 1457360914.444068, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 260

Event: time 1457360914.444068, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 3

Event: time 1457360914.444068, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1

Event: time 1457360914.444068, type 3 (EV_ABS), code 0 (ABS_X), value 79

Event: time 1457360914.444068, type 3 (EV_ABS), code 1 (ABS_Y), value 105

Event: time 1457360914.444068, -------------- SYN_REPORT ------------

Event: time 1457360914.461301, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 1

Event: time 1457360914.461301, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 802

Event: time 1457360914.461301, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 104

Event: time 1457360914.461301, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 0

Event: time 1457360914.461301, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), val

Event: time 1457360914.461301, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 31

Event: time 1457360914.461301, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 2

Event: time 1457360914.461301, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 11

Event: time 1457360914.461301, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 140

Event: time 1457360914.461301, type 3 (EV_ABS), code 0 (ABS_X), value 802

Event: time 1457360914.461301, type 3 (EV_ABS), code 1 (ABS_Y), value 104

Event: time 1457360914.461301, -------------- SYN_REPORT ------------

Event: time 1457360914.479409, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 1

Event: time 1457360914.479409, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 707

Event: time 1457360914.479409, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 145

Event: time 1457360914.479409, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 0

Event: time 1457360914.479409, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 707

Event: time 1457360914.479409, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 25

Event: time 1457360914.479409, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 4

Event: time 1457360914.479409, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 10461

Event: time 1457360914.479409, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 707

Event: time 1457360914.479409, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 378

Event: time 1457360914.479409, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 2

Event: time 1457360914.479409, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1

Event: time 1457360914.479409, type 3 (EV_ABS), code 0 (ABS_X), value 707

Event: time 1457360914.479409, type 3 (EV_ABS), code 1 (ABS_Y), value 145

Event: time 1457360914.479409, -------------- SYN_REPORT ------------

On the hardware side I can scope the interrupt  which is generated continuously and I can also scope i2c2 clock and data pins which seems to be running OK

also X11 does not seems to recognize this control as a touch screen even though the data is garbage.

So finally my questions are

1. Why I am getting garbage data continuously, shouldn't I get the data only when the screen is touched?

2. Why x11 does not recognize it as a touch screen?

Any help would be much appreciated

Thanks

M. Nadeem

Labels (2)
0 Kudos
1 Solution
747 Views
muhammadnadeem
Contributor II

Hi All,

We have found the problem. LCD and the touch screen power supply is provided through a MOSFET switch and some how the input to the switch is 3.3 volts but the output is 2.6V, which is barely enough to drive the touch screen controller (according to the data sheet it should be between 2.8 to 3.3 volts). The MOSFET switch has a 0Omhs bypass resistor which is not populated on the board so we soldered the 0Ohm resistor and everything works fine there on

Thanks

M. Nadeem

View solution in original post

0 Kudos
2 Replies
747 Views
igorpadykov
NXP Employee
NXP Employee

Hi Muhammad

if you are seeing on scope the interrupt  which is generated continuously then reason

in touch controller: it may be improperly initialized or powered, also may be recommended to

check interrupt line voltage level if it is compatible with i.MX6 side.

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos
748 Views
muhammadnadeem
Contributor II

Hi All,

We have found the problem. LCD and the touch screen power supply is provided through a MOSFET switch and some how the input to the switch is 3.3 volts but the output is 2.6V, which is barely enough to drive the touch screen controller (according to the data sheet it should be between 2.8 to 3.3 volts). The MOSFET switch has a 0Omhs bypass resistor which is not populated on the board so we soldered the 0Ohm resistor and everything works fine there on

Thanks

M. Nadeem

0 Kudos