pico panel rv1106 - unstable goodix touchscreen i2c address
Posted: 2025-06-21 9:33
Hi, I am debugging a problem with the 86panel, where the touch input only works sometimes, but sometimes not. I found the following:
The goodix touchscreen is configured at i2c address 0x14 in the dts (sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-86panel-ipc.dtsi in the SDK, lines 281ff).
However, sometimes the goodix chip appears at i2c address 0x5d (visible with i2cdetect 3). This is the alternate i2c address of the touchscreen chip when the IRQ line (connected to PA0) is logic low during reset (PD0).
Unfortunately, we don't seem to have a schematic diagram of the 86panel, so it's not totally clear how goodix IRQ is connected. But I guess it is just connected to PA0 without a pullup.
So my question is: shouldn't the pinctrl setup in the dts (line 305 in sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-86panel-ipc.dtsi) configure a pullup on the IRQ line to make sure it is not floating and always high when the goodix chip is reset? Like:
A floating IRQ does not seem to be a good idea in any case, I suspect that it could also be responsible for sudden freezes of the entire system I sometimes see when writing to the emmc. If that input starts oscillating, all sorts of bad things could happen.
Update: Yes
- configuring a pullup for PA0 solves all the instability issues I had with both of my 86panels! These worked, but as soon as mounted near mains, apparently took up some EMI on that floating IRQ line and crashed/malfunctioned. I guess that DTS change should be added to the SDK, others might have experienced unstable operation, too
The goodix touchscreen is configured at i2c address 0x14 in the dts (sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-86panel-ipc.dtsi in the SDK, lines 281ff).
However, sometimes the goodix chip appears at i2c address 0x5d (visible with i2cdetect 3). This is the alternate i2c address of the touchscreen chip when the IRQ line (connected to PA0) is logic low during reset (PD0).
Unfortunately, we don't seem to have a schematic diagram of the 86panel, so it's not totally clear how goodix IRQ is connected. But I guess it is just connected to PA0 without a pullup.
So my question is: shouldn't the pinctrl setup in the dts (line 305 in sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-86panel-ipc.dtsi) configure a pullup on the IRQ line to make sure it is not floating and always high when the goodix chip is reset? Like:
Code: Select all
tp_irq:tp-irq {
rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
};
Update: Yes


