RK3588 输入拓扑与设备树

RK3588 输入拓扑与设备树

1. 典型拓扑

1
2
3
4
5
6
7
SARADC ch1 -> adc-keys -> volume/menu/back
RK806 IRQ -> MFD rk805-pwrkey -> KEY_POWER
I2C5 + GPIO IRQ/reset -> GT1X/Hyn/FocalTech touch
PWM capture -> rockchip remotectl -> IR keys
USB host -> usbhid -> keyboard/mouse/gamepad
Bluetooth -> HIDP/HOGP -> input_dev
userspace -> uinput -> virtual event device

2. ADC keys

rk3588s-evb.dtsi 等公共文件定义 adc-keys、SARADC channel 1、1.8V key-up和四档键值。对应 CONFIG_KEYBOARD_ADC=y

不同板 resistor ladder可能不同,不应复制阈值而不核对原理图。

3. Touch

多个 EVB定义 goodix,gt1x,例如 I2C地址 0x14、reset/IRQ GPIO和 LCD 3.3V supply。部分板还并列 Hynitron/FocalTech候选。

验证:

1
2
3
i2cdetect -y <bus>   # 仅确认安全时
cat /proc/interrupts
evtest

不要对未知 I2C地址盲扫或强制 bind。

4. PMIC power key

RK806通过 MFD创建 rk805-pwrkey platform child。Input driver不直接匹配 RK806 DT compatible;其 probe依赖 parent MFD、regmap irq和资源名称。

5. IR

若板 DTS有 rockchip,remotectl-pwm,驱动读取 remote key tables并配置 power wake。需要 PWM capture pinmux、IRQ和 secure firmware共同支持。

6. GPIO keys

主配置已启用 interrupt和 polled GPIO keyboard,但具体 RK3588公共板更多使用 ADC keys。是否有 GPIO button必须按目标 DTS核对。

7. USB/Bluetooth

这两类不在 RK3588 SoC DTS中枚举具体键鼠:

  • USB runtime enumeration;
  • Bluetooth pairing/SDP/GATT;
  • HID Core生成 input device。

需同时启用 USB host、BT、HID和对应 transport。

8. 配置事实

主配置:

  • evdev、ADC/GPIO keyboard、touch、IR、uinput、RK805 pwrkey启用;
  • AT keyboard、PS/2 mouse、serio禁用;
  • FF memless启用;
  • mouse touchpad drivers CYAPA/ELAN I2C启用。

最终产品还会叠加 fragment,必须以 /proc/config.gz 为准。

9. Android

Android InputReader按 .idc/.kl/.kcm 和 device identity映射:

  • Linux keycode到 Android key;
  • touch orientation/size;
  • virtual keys;
  • wake policy。

内核事件正确不代表 Android层映射一定正确。

10. 验证链

1
2
3
4
5
6
7
8
原理图
-> DTS node/status/pinctrl
-> final config
-> bus/MFD probe
-> input device in proc/sysfs
-> eventX capability
-> evtest
-> libinput/Android mapping

文章互动

阅读 --

留言

0 条留言

正在加载留言…