rk3506:两块同样主板通过otg接口,实现adb通信底层配置
本文记录了两项内核补丁,用于在 Rockchip RK3506 平台的 Linux 6.1 内核中启用 DWC2 USB 控制器对 HNP(Host Negotiation Protocol,主机协商协议)的支持。HNP 是 USB OTG(On-The-Go)规范的关键部分,允许连接到同一端口的两台 OTG 设备在不重新插拔数据线的情况下动态交换主从角色,例如让手机在充当 U 盘与连接外设之间无缝切换。补丁要解决的问题上游 DWC2 驱动未能正确处理与 HNP 相关的标准设备请求(如USB_DEVICE_B_HNP_ENABLE、USB_DEVICE_A_HNP_SUPPORT等),导致驱动在收到这些请求时直接返回-ENOENT,从而引起主机或设备端枚举失败、OTG 角色切换卡死、甚至无法正常挂载 USB 设备。此外,hub.c中对 legacy OTG 描述符的处理分支在不支持 HNP 时仍然尝试执行,可能干扰 B-Device 的正常协商流程。应用补丁前后的效果对比场景应用补丁前应用补丁后OTG 设备插入/拔出系统日志中频繁出现-ENOENT报错,无法完成角色协商,设备始终固定为 B-Device 或无法识别