Goodix GT911触摸屏上电64秒后才产生I2C信号问题求助
Goodix GT911触摸屏上电64秒延迟响应问题排查与解决
问题核心分析
从dmesg日志和硬件监测结果来看,延迟的关键触发点在于:
- 驱动在1.6秒左右完成芯片识别,但因找不到
goodix_911_cfg.bin配置固件,进入了sysfs fallback的等待流程,这个等待时长恰好对应64秒的延迟 - 设备树中同时配置了
interrupts和irq-gpios,可能导致中断处理逻辑冲突,进一步加剧初始化延迟 - 电源部分使用dummy regulator,可能不符合GT911的上电时序要求
分步解决方案
1. 解决固件加载问题
驱动加载时找不到配置固件是触发64秒等待的直接原因:
- 获取对应GT911版本(日志显示版本为1060)的官方配置文件
goodix_911_cfg.bin - 将文件放置到系统的
/lib/firmware/目录下 - 重启系统后,检查dmesg日志,确认不再出现
Falling back to sysfs fallback for: goodix_911_cfg.bin的提示
2. 修正设备树中断配置
Goodix驱动优先使用irq-gpios处理中断,同时配置interrupts会导致逻辑冲突:
- 删除设备树中的
interrupt-parent和interrupts节点,仅保留irq-gpios配置 - 修改后的设备树片段:
&i2c1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c1>; status = "okay"; clock-frequency = <100000>; gt911@5d { compatible = "goodix,gt911"; reg = <0x5d>; irq-gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>; touchscreen-size-x = <1024>; touchscreen-size-y = <600>; touchscreen-inverted-x = <0>; touchscreen-inverted-y = <0>; }; };
3. 完善电源 regulator 配置
dummy regulator无法提供稳定的电源时序,需配置真实电源节点:
- 在GT911的设备树节点中添加电源供应配置,示例如下:
gt911@5d { // 保留原有配置 AVDD28-supply = <®_2p8v>; VDDIO-supply = <®_1p8v>; };
注意:reg_2p8v和reg_1p8v需是系统中已定义的有效电源 regulator 节点
4. 优化芯片复位逻辑
若上述步骤无效,可手动强化复位时序:
- 修改
goodix.c驱动的goodix_probe函数,添加主动复位逻辑:
// 确保reset_gpio已获取 gpiod_set_value(reset_gpio, 0); msleep(10); // 保持复位至少10ms gpiod_set_value(reset_gpio, 1); msleep(50); // 等待芯片完成初始化
- 重新编译内核并烧录
验证方式
- 重启系统后,查看dmesg日志,确认
input: Goodix Capacitive TouchScreen的注册时间提前至几秒内 - 用示波器监测I2C总线,确认触摸事件触发时立即产生通信信号
内容的提问来源于stack exchange,提问作者ahmet cihan Akınca
相关产品推荐
相关产品推荐

