AnsweredAssumed Answered

Polytouch touchscreen driver issue: no irq domain found

Question asked by David W. on Apr 10, 2015

Hello,

I'm trying to use a LCD display witch touchscreen using EDT Polytouch FocalTech FT5x06 driver. The system is using 3.13 kernel from Timesys with device tree, running on dual-core Vybrid MVF61NN151CMK50 processor.

The polytouch driver should use i2c bus for communication and gpio pin for interrupts. I can see the touch chip on i2c address 0x38. However, when I write config for the driver in the device tree, I get the following error on boot:


i2c i2c-0: IMX I2C adapter registered

irq: no irq domain found for /soc/aips-bus@40000000/gpio-controller@4004b000 !

 

i2c-0 is the bus touchscreen chip is on, 4004b000 is the address of gpio3, where the interrupt pin is.

 

the .dts file:

/* I2C-2 (400E_6000): Touch screen */

&i2c2 {

    clock-frequency = <100000>;

    pinctrl-names = "default";

    pinctrl-0 = <&pinctrl_i2c2>;

    status = "okay";

 

    polytouch: edt-ft5x06@38 {

        compatible = "edt,edt-ft5406", "edt,edt-ft5x06";

        reg = <0x38>;

        pinctrl-names = "default";

        pinctrl-0 = <&edt_ft5x06_pins>;

        interrupt-parent = <&gpio3>;    // PTE22 - pin 127 ~ gpio3, pin 31

        interrupts = <31 0>;

        wake-gpios = <&gpio4 14 0>;    // PTE5 - port3,pin14 ~ gpio4, 14

    };

};

 

...

 

edt_ft5x06_pins: ft5x06grp {

            fsl,pins = <

                VF610_PAD_PTE22__GPIO_127    0x621    // IRQ

                VF610_PAD_PTE5__GPIO_110    0x2192    // Wake

            >;
};

 

and the definition of gpio3 in .dtsi file (almost default vf610.dtsi file provided by Freescale)

/* This is a GPIO controller device */

            gpio3: gpio-controller@4004b000 {

                compatible = "fsl,vf610-gpio";

                #address-cells = <2>;

                /* PORT C mux control: addr size, GPIO control: addr size */

                reg = <0x4004b000 0x1000 0x400ff080 0x40>;

                interrupts = <0 109 IRQ_TYPE_LEVEL_HIGH>;

                gpio-controller;

                #gpio-cells = <2>;

                interrupt-controller;

                #interrupt-cells = <2>;

                gpio-ranges = <&iomuxc 0 64 32>;
};

 

The touch screen driver is then able to load by modprobe edt-ft5x06 (dmesg: i2c-core: driver [edt_ft5x06] registered),
but it doesn't work and provided calibrate touchscreen init script returns "Finding touchscreen using legacy method:[FAIL]"

 

Is there something to be added for the gpio to function as an interrupt controller? Or where the problem might be?
(Attached files are: board .dts file, SoC .dtsi file and kernel .config)

Original Attachment has been moved to: dts-3.13.zip

Original Attachment has been moved to: vf610.dtsi.zip

Original Attachment has been moved to: .config.zip

Outcomes