设备驱动未调用probe函数是否能够正常工作
hbtp_input驱动init执行正常但probe未调用的工作状态判断
- 该驱动完全无法正常工作,核心原因如下:
- Linux 设备驱动模型中,
probe是驱动与硬件设备匹配成功后才会执行的核心逻辑入口,hbtp_input 触摸屏驱动的硬件复位初始化、中断申请、输入设备节点注册、触摸事件上报链路创建等核心功能全部在probe函数中实现。仅执行init函数只完成了驱动本身的内核注册,没有和实际的触摸屏硬件完成绑定,没有任何业务逻辑被执行。 - Qualcomm 平台的 hbtp_input 属于平台设备驱动,
init阶段通常仅执行platform_driver_register这类驱动注册操作,只要代码语法没有错误就会返回执行成功。probe未调用通常是设备树硬件节点与驱动of_match_table匹配失败、平台设备未正常注册、同硬件的其他驱动优先级更高抢占了匹配这几类原因导致,此时驱动和硬件完全没有建立关联,无法实现触摸输入功能。
- Linux 设备驱动模型中,
- 常见排查方向:
- 核对设备树中触摸屏节点的
compatible属性是否与驱动of_match_table中定义的字符串完全一致 - 检查内核编译配置,确认该驱动的依赖项全部选中,且没有同硬件的其他驱动被编入内核抢占匹配
- 测量触摸屏硬件的供电、复位引脚电平状态,确认硬件本身没有出现上电失败、未正常响应的问题
- 核对设备树中触摸屏节点的
内容的提问来源于stack exchange,提问作者Faizal Khan
相关产品推荐
相关产品推荐

