Depuración de teclado y panel táctil en plataforma UMS9620 con Android 14

El teclado y el panel táctil se conectan mediante bus I2C. A continuación se muestran esquemáticos representativos de su conexión e interrupciones.

Basándose en el esquemático, es necesario configurar los nodos DTS con el número de bus I2C, la frecuencia del reloj, la dirección y la interrupción correspondiente.

--- a/arch/arm64/boot/dts/sprd/ums9620-1h10-overlay.dts
+++ b/arch/arm64/boot/dts/sprd/ums9620-1h10-overlay.dts
@@ -300,6 +300,17 @@
 		csi = <&csi1>;
 		power-domains = <&mm_domain>;
 	};
+
+	teclado@2c {
+		status = "okay";
+		compatible = "hid-over-i2c";
+		reg = <0x2c>;
+		clock-frequency = <400000>;
+		interrupt-parent = <&eic_async>;
+		interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
+		hid-descr-addr = <0x20>;
+		hid-support-wakeup;
+	};
 };
 
 &i2c1 {
@@ -344,6 +355,21 @@
 	};
 };
 
+&i2c3 {
+	status = "okay";
+	clock-frequency = <400000>;
+
+	panel-tactil: panel-tactil@15 {
+		status = "okay";
+		compatible = "hid-over-i2c";
+		reg = <0x15>;
+		clock-frequency = <400000>;
+		interrupt-parent = <&ap_gpio>;
+		interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
+		hid-descr-addr = <0x20>;
+	};
+};
+
 &i2c4 {
 	status = "okay";
 	clock-frequency = <400000>;

3. Configuración de compilación del kernel

Dado que estos dispositivos son del tipo HID, se requiere activar los módulos necesarios en la configuración del kernel.

--- a/arch/arm64/configs/sprd_gki_qogirn6pro.fragment
+++ b/arch/arm64/configs/sprd_gki_qogirn6pro.fragment
@@ -300,3 +300,6 @@
 CONFIG_ZRAM_DEDUP=y
 CONFIG_ZRAM_WRITEBACK=y
 CONFIG_USB_HUB=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_HID_CORE=y
+CONFIG_I2C_HID_OF=y

4. Puntos adicionales a considerar

Tanto el teclado como el panel táctil poseen firmware propio, el cual debe ser proporcionado por el fabricante. Tras realizar las configuraciones anteriores, es posible que los dispositivos no funcionen correctamente o presenten comportamientos inesperados debido a una versión de firmware incompatible. Se recomienda validar directamente con el proveedor.

Si el bus I2C no detecta los dispositivos, se debe verificar la configuración en el DTS. Adicionalmente, se pueden añadir mensajes de registro en el controlador para diagnóstico. La ruta del controlador relevante es: drivers/hid/i2c-hid.

Para la asignación o modificación de códigos de tecla, se puede consultar la documentación relacionada con la adición de keycodes en Android 14.

Para funcionalidades específicas como la lectura de la versión del firmware del panel táctil o la desactivación del panel táctil mediante una tecla rápida, se requieren ajustes adicionales que se documentan por separado.

Etiquetas: ums9620 android14 hid-over-i2c device-tree kernel-config

Publicado el 6-29 02:56