focaltech touch driver in 6.6 kernel is failing at probe

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

focaltech touch driver in 6.6 kernel is failing at probe

377 Views
Chandrasekhar-carrier
Contributor II

When we are porting kernel from 6.1 to 6.6, facing problem with Focaltech display touch driver.
With 6.1 kernel driver touch is working as expected.
when we insert the touch driver it is failing at the probe itself.
here is the log snippet:

 

dmesg | grep fts 
[    7.399962] fts_ts 2-0038: max touch number:10, irq gpio:0
[    7.405883] input: fts_ts as /devices/platform/soc@0/30800000.bus/30a40000.i2c/i2c-2/2-0038/input/input1
[    7.417695] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.419423] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.420714] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.420963] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.421196] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.421392] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.633209] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.633629] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.633866] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.634093] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.634315] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.634528] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.849625] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.849875] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.850111] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.851682] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.852990] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    7.862956] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    8.078563] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    8.078808] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    8.079042] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    8.079280] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    8.079533] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    8.079780] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    8.285870] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    8.286119] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    8.286360] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    8.286575] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    8.286785] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    8.286994] fts_ts 2-0038: i2c_transfer(read) fail,ret:-6
[    8.493336] fts_ts 2-0038: fw is invalid, need read boot id
[    8.493589] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.493809] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.494022] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.494028] fts_ts 2-0038: hid2std cmd write fail
[    8.494235] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.494441] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.494648] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.494653] fts_ts 2-0038: start cmd write fail
[    8.494657] fts_ts 2-0038: read boot id fail
[    8.494661] fts_ts 2-0038: fw is invalid, need read boot id
[    8.494868] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.495074] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.495280] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.495285] fts_ts 2-0038: hid2std cmd write fail
[    8.495491] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.495707] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.495921] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.495928] fts_ts 2-0038: start cmd write fail
[    8.495932] fts_ts 2-0038: read boot id fail
[    8.495936] fts_ts 2-0038: fw is invalid, need read boot id
[    8.496145] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.496355] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.497423] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.497442] fts_ts 2-0038: hid2std cmd write fail
[    8.498387] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.498626] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.498843] fts_ts 2-0038: i2c_transfer(write) fail,ret:-6
[    8.498850] fts_ts 2-0038: start cmd write fail
[    8.498855] fts_ts 2-0038: read boot id fail
[    8.498859] fts_ts 2-0038: get ic information, chip id = 0x0000(cid type=0x0)
[    8.498865] fts_ts 2-0038: not focal IC, unregister driver
[    8.517605] fts_ts 2-0038: FTS Touch Screen(I2C BUS) driver probe fail

 

 
here is the dts 

 

&i2c3 {
    focaltech_touch: touchscreen@38{
        compatible = "focaltech,fts";
        reg = <0x38>;
        reset-gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
        irq-gpio = <&gpio1 0 IRQ_TYPE_EDGE_FALLING>;
        touchscreen-size-x = <1024>;
        touchscreen-size-y = <600>;
        max-touch-number = <10>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_touch_en &pinctrl_touch_rst>;
};
};


 pinctrl_touch_en: touch_en {
                fsl,pins = <
                        MX8MP_IOMUXC_GPIO1_IO00__GPIO1_IO00     0x16
                >;
        };

 pinctrl_touch_rst: touch_rst_grp {
                fsl,pins = <
                        MX8MP_IOMUXC_GPIO1_IO07__GPIO1_IO07             0x19
                >;
        };

 

 

0 Kudos
Reply
4 Replies

256 Views
Chandrasekhar-carrier
Contributor II

here is the command output:



root@imx8mp-lpddr4-evk:~# i2cdetect -y 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- 38 -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
root@imx8mp-lpddr4-evk:~# ls /sys/class/i2c-dev/i2c-1/device/
1-003e  1-0052  1-0054  1-0056  1-0058  1-005a  1-005c  1-005e  1-0060  delete_device  i2c-dev  new_device  power      uevent
1-0051  1-0053  1-0055  1-0057  1-0059  1-005b  1-005d  1-005f  1-0061  device         name     of_node     subsystem
root@imx8mp-lpddr4-evk:~# ls /sys/class/i2c-dev/i2c-2/device/
2-0038  delete_device  device  i2c-dev  name  new_device  of_node  power  subsystem  uevent
root@imx8mp-lpddr4-evk:~# ls /sys/class/i2c-dev/i2c-3/device/
ls: cannot access '/sys/class/i2c-dev/i2c-3/device/': No such file or directory
root@imx8mp-lpddr4-evk:~#
0 Kudos
Reply

339 Views
Chandrasekhar-carrier
Contributor II

after making the reset pin as high,
we are able to get the i2cdetect output, but still probe is failing

 

root@imx8mp-lpddr4-evk:~# i2cdetect -y 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- 38 -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
root@imx8mp-lpddr4-evk:~#
root@imx8mp-lpddr4-evk:~# dmesg | grep fts
[ 1100.471362] fts_ts 2-0038: max touch number:10, irq gpio:0
[ 1100.471982] input: fts_ts as /devices/platform/soc@0/30800000.bus/30a40000.i2c/i2c-2/2-0038/input/input3
[ 1100.473133] fts_ts 2-0038: verify id:0x5422
[ 1100.679969] fts_ts 2-0038: verify id:0x5422
[ 1100.889744] fts_ts 2-0038: verify id:0x5422
[ 1101.098127] fts_ts 2-0038: verify id:0x5422
[ 1101.308162] fts_ts 2-0038: verify id:0x5422
[ 1101.514969] fts_ts 2-0038: fw is invalid, need read boot id
[ 1101.563668] fts_ts 2-0038: read boot id fail,read:0x0000
[ 1101.563686] fts_ts 2-0038: read boot id fail
[ 1101.563692] fts_ts 2-0038: fw is invalid, need read boot id
[ 1101.606452] fts_ts 2-0038: read boot id fail,read:0x0000
[ 1101.606469] fts_ts 2-0038: read boot id fail
[ 1101.606475] fts_ts 2-0038: fw is invalid, need read boot id
[ 1101.659464] fts_ts 2-0038: read boot id fail,read:0x0000
[ 1101.659482] fts_ts 2-0038: read boot id fail
[ 1101.659487] fts_ts 2-0038: get ic information, chip id = 0x0000(cid type=0x0)
[ 1101.659494] fts_ts 2-0038: not focal IC, unregister driver
[ 1101.683252] fts_ts 2-0038: FTS Touch Screen(I2C BUS) driver probe fail
[ 1101.683272] fts_ts: probe of 2-0038 failed with error -5
root@imx8mp-lpddr4-evk:~# i2cdump -y 2 0x38
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
80: 4b 46 12 12 12 a0 01 0f 0b 1e 00 00 00 00 00 00    KF????????......
90: 00 15 00 00 00 00 00 00 00 00 00 00 00 00 00 22    .?............."
a0: 4d 00 01 54 01 01 06 01 79 01 1b 00 5a 01 01 15    M.?T????y??.Z???
b0: 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 55    .?.............U
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: ff ff ff ff ff ff ff ff ff ff ff eb 08 ff ff ff    ...........??...
f0: ff ff ff ff ff ff ff ff ff ff ff ff 01 00 05 ff    ............?.?.

 

0 Kudos
Reply

327 Views
Chavira
NXP TechSupport
NXP TechSupport

Hi @Chandrasekhar-carrier!

 

Looks good because the i2c tools is detecting the i2c direction.

 

The device tree is pointing to the correct i2c bus?

 

can you share the result of the next commands?

 ls /sys/class/i2c-dev/i2c-1/device/
 ls /sys/class/i2c-dev/i2c-2/device/
 ls /sys/class/i2c-dev/i2c-3/device/

 

0 Kudos
Reply

344 Views
Chavira
NXP TechSupport
NXP TechSupport

Hi @Chandrasekhar-carrier!

Thank you for contacting NXP Support!

 

Can you share the result of the command i2cdetect -y 2 ?

Can you confirm if the ic enable and reset pins are not arrested?

 

I suspect that the pins of the reset and the enable are not in the correct values, for that I recommend to add the next properties to your device tree.

 

&i2c3 {
    focaltech_touch: touchscreen@38{
        compatible = "focaltech,fts";
        reg = <0x38>;
        reset-gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
        irq-gpio = <&gpio1 0 IRQ_TYPE_EDGE_FALLING>;
        touchscreen-size-x = <1024>;
        touchscreen-size-y = <600>;
        max-touch-number = <10>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_touch_en &pinctrl_touch_rst>;
        enable-gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
        reset-gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
   };
};

 

Best Regards!

Chavira

 

 

0 Kudos
Reply