Hello,
As a follow-up of my previous question, my quest for a successful display integration on Apalis continues…
This time is the touchscreen controller: Pixcir Tango C48
I am connecting the touchscreen controller through a custom adapter to the capacitive touch port on Ixora (X24) using a flat cable (which is longer than needed).
I’ve added the appropriate blob to the device tree according to this page and this page as well.
Recompiled the kernel and… It does not work.
i2c probe from U-Boot does not detect the address (0x5c)
i2cdetect from Linux does not detect either
Output from the driver:
[ 4.971325] pixcir_ts 1-005c: pixcir_set_power_mode: can't read reg 0x33 : -5
[ 4.980077] pixcir_ts 1-005c: Failed to set IDLE mode
[ 4.994909] pixcir_ts: probe of 1-005c failed with error -5
I have used an oscilloscope and every time I use i2cdetect -y -r 1 I can see the SCL and SDA lines getting the signals (I confirmed the clock and I spotted something on the data lane i just don’t know if it is correct or not)
I have also used a multimeter to confirm all connections (I am testing if the pins in the custom adapter board and the i2c pins in the extension header X27 beep (they do beep)
Here’s my i2c1 blob on the ixora device tree (the pn5xx works properly, it worked out of the box actually)
/* GEN1_I2C: I2C1_SDA/SCL on MXM3 209/211 (e.g. RTC on carrier board) */
&i2c1 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c1>;
status = "okay";
pixcir: pixcir_ts@5c {
compatible = "pixcir,pixcir_tangoc";
reg = <0x5c>;
interrupt-parent = <&gpio6>;
interrupts = <10 2>; //high to low edge triggered
attb-gpio = <&gpio6 10 1>; // INT GPIO
//interrupt-gpios = <&gpio6 10 1>; //INT gpio
reset-gpios = <&gpio6 9 1>; // 1 - active low
touchscreen-size-x = <800>;
touchscreen-size-y = <480>;
};
pn547: pn547@28 {
compatible = "nxp,pn547";
reg = <0x28>;
//clock-frequency = <400000>;
interrupt-parent = <&gpio2>;
interrupt-gpios = <&gpio2 4 0>; //MXM3 1
enable-gpios = <&gpio2 5 0>; //MXM3 3
};
};
I have also done a bunch of kernel tweaks like SMBus extensions, Tango C series driver added here but does not work either so I gave up on that one and continued to try on the one that already exists in the kernel.
What can be the causes of this?
Faulty hardware? (the display’s touch controller works, confirmed by a colleague in another legacy board from the company)
Faulty connections? (Maybe the length of the data cable)
Lack of pull-up resistors (I removed the ones on the adapter board since ixora already has 1.8k Ohm resistors)
Any kind of help would be appreciated.
Best regards,
João