Tengo una pantalla táctil que no funciona el panel táctil. Utiliza i2c.
Este es el controlador: goodix.c .
Así es como debo agregar el nodo al árbol de dispositivos: goodix.txt
Este es el árbol de dispositivos: imx6qdl-sb-fx6.dtsi
Y este es el nodo que puse como hijo de /i2cmux/i2c@0
:
gt9271@XX {
compatible = "goodix,gt9271";
#if GOODIX_5D
reg = <0x5d>;
#else
reg = <0x14>;
#endif
interrupt-parent = <&gpio1>;
interrupts = <4 0>;
irq-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
reset = <&pca9555 11 GPIO_ACTIVE_LOW>;
};
El controlador se carga correctamente:
root@cm-fx6:~# dmesg | grep Goodix
[ 4.811992] Goodix-TS 3-0014: ID 9271, version: 1020
[ 4.828035] Goodix-TS 3-0014: Invalid config, using defaults
[ 4.832665] input: Goodix Capacitive TouchScreen as /devices/soc0/soc/2100000.aips-bus/21a0000.i2c/i2c-0/i2c-3/3-0014/input/input0
Pero no hay interrupciones de generación cuando toco.
La fase de inicialización (verificar la función goodix_reset
) no se realiza como debería. Esto es lo que debería ver (con un osciloscopio) durante el encendido: enlace .
Pero los pines INT y RESET permanecen ALTOS en todo momento.
Escribí reset
en lugar de reset-gpios
como se describe en la documentación porque de lo contrario, obtengo un error al intentar obtener el pin. El error es -16, lo que significa que el recurso está ocupado, porque también se está usando pca9555 11
en otro dispositivo (verifique el nodo mipi-dsi-reset
). Por cierto, pca9555
es un controlador gpio auxiliar.
¿Alguna pista sobre lo que está sucediendo y por qué los pines no actúan como lo dicta el conductor? Ya se ha descartado como un problema de conexión: si no cargo el controlador y trato de configurar gpio4 en 1 o 0, veo que se refleja en el pin (ambos lados).