HID 子系统架构与源码总览
1. 目标
HID 将 USB、Bluetooth、I2C、虚拟用户态等不同传输统一为报告模型,并向上提供:
- Linux input:键盘、鼠标、触控、游戏手柄;
- hidraw:不解释的原始报告;
- hiddev:USB 专用旧接口;
- 专用 HID driver;
- LED、力反馈、电池、传感器等功能。
2. 分层
1 | Userspace |
3. 核心对象
| 结构 | 作用 |
|---|---|
hid_device |
一台 HID 逻辑设备 |
hid_driver |
HID 总线驱动 |
hid_ll_driver |
USB/I2C/UHID 等传输操作 |
hid_report_enum |
Input/Output/Feature report 集合 |
hid_report |
一个 report ID 的布局 |
hid_field |
位段及逻辑/物理范围 |
hid_usage |
Usage Page + Usage ID 语义 |
hid_input |
HID 到 input_dev 的映射 |
4. 枚举链
1 | transport probe |
5. 输入链
1 | USB URB / I2C IRQ / HIDP packet / UHID write |
6. 输出链
LED、rumble、Feature 报告通过:
1 | input/driver/hidraw |
7. 驱动匹配
hid_device_id 可匹配 bus、group、vendor、product。专用驱动可提供:
match;probe/remove;report_fixup;input_mapping/input_mapped;raw_event/event/report;- PM 回调。
没有专用驱动时由 hid-generic 处理。
8. RK3588 重点
- USB 键鼠/手柄:
usbhid; - 蓝牙键鼠/手柄:Bluetooth HIDP;
- I2C HID 触摸屏/触控板能力:
i2c-hid-of(本树 RK3588 DTS 未见标准hid-over-i2c实例); - 多点触控:
hid-multitouch; - Android/容器代理:UHID;
rockchip_linux_defconfig开启 HIDRAW、UHID、MULTITOUCH、USB HIDDEV、I2C_HID_OF 和 HID 电池。
HID 本身一般不直接绑定 RK3588 SoC compatible;平台相关性主要来自 USB host、I2C controller、GPIO IRQ、电源和板级 DT。
正在加载留言…