[RK3399][Android7.1] 调试笔记 --- USB touch开机无法识别问题

在RK3399平台运行Android 7.1的设备遇到USB touch开机无法识别的问题。通过分析硬件中断、上层EventHub及input注册,发现ueventd进程创建晚于touch事件发送导致问题。解决方案是在hid或usb控制器驱动中添加延迟,确保ueventd先创建。参考了Android ueventd和Linux input子系统的分析资料。
摘要由CSDN通过智能技术生成

Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83

现象:
外接USB touch到板子上, 插到一个USB可以识别,但是另外一个却不行.


分析过程:

  1. 硬件中断可以接收到,说明驱动加载OK
  2. 查看上层openDeviceLocked@EventHub.cpp, 它会读取/dev/input目录,却并没有touch对应的event.
  3. input_register_handler@input.c,也确实有和input_dev匹配成功后发送事件到上层
  4. /dev/input/event由ueventd进程创建
  5. 查看log,发现ueventd的创建晚于touch事件发送之后,原因找到

解决方法:
在hid驱动或者usb controller驱动中增加一个延迟,让事件的发送晚于ueventd创建之后.

kris@ecobsp:~/rk3399/kernel$ g df 769bf422e78ea3751378b06863c41140f95b08d5 540dba9cd1a09821e8492275f70617420570fbee
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 9028976..37d5f96 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -38,6 +38,10 @@
 
 #include "hid-ids.h"
 
+/*Kris, 190619, Fix issue that touch can't be recognized. */
+#inclu
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值