You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌入式Linux(5.10.24)下GT911触摸屏唤醒功能失效求助

基于Kernel 5.10.24的GT911触摸屏唤醒休眠系统问题排查与必要条件分析

环境与现状

  • 基于kernel-5.10.24版本的嵌入式Linux系统,搭载GT911触摸屏,触摸屏基础功能正常
  • 系统RTC定时唤醒功能正常:设置120秒后唤醒,休眠时屏幕黑屏,唤醒后触摸屏可恢复正常工作

已做操作与验证

  1. 发现设备树未启用slide-wake功能,添加如下dts配置:
goodix,slide-wakeup = <1>;
  1. 内核日志确认唤醒功能已启用:
goodix-ts 0-0004: slide-wakeup enabled
goodix-ts 0-0004: INT num 36, trigger type:2
goodix-ts 0-0004: slide wakeup enabled
  1. /sys/class/wakeup/*路径下存在gt9xx相关唤醒设备条目

问题现象

执行echo standby > /sys/power/state使系统进入休眠后,触摸屏幕(点击/滑动)无法唤醒系统,只能等待RTC定时120秒自动唤醒

驱动相关代码片段

使用的GT9xx驱动中,唤醒相关核心函数:

static int gtp_wakeup_sleep(struct goodix_ts_data *ts)
{
    u8 retry = 0;
    int ret = -1;

    while (retry++ < 10) {
        gtp_int_output(ts, 1);
        usleep_range(5000, 6000);

        ret = gtp_i2c_test(ts->client);
        if (!ret) {
            dev_dbg(&ts->client->dev, "Success wakeup sleep");

            gtp_int_sync(ts, 25);
            if (ts->pdata->esd_protect)
                gtp_init_ext_watchdog(ts->client);

            return ret;
        }
        gtp_reset_guitar(ts->client, 20);
    }

    dev_err(&ts->client->dev, "Failed wakeup from sleep mode");
    return -EINVAL;
}

gtp_probe()中设置唤醒功能的代码:

gtp_work_control_enable(ts, false);
if (ts->pdata->slide_wakeup) {
    dev_info(&client->dev, "slide wakeup enabled");
    ret = enable_irq_wake(client->irq);
    if (ret < 0)
        dev_err(&client->dev, "Failed set irq wake");
}

触摸屏唤醒休眠系统的必要条件分析

1. 硬件层面

  • GT911芯片本身需支持低功耗唤醒模式,且硬件连接正确:中断引脚必须连接到SOC的可唤醒中断GPIO引脚,该GPIO需具备休眠唤醒能力
  • 休眠期间触摸屏电源不能被完全切断,需保留维持低功耗待机的供电
  • 确认触摸中断的硬件触发方式(上升沿/下降沿/双边沿)与驱动配置一致(日志中trigger type:2对应双边沿触发)

2. 设备树配置

  • 除goodix,slide-wakeup = <1>外,需确保触摸屏节点的中断配置完整,包括中断触发类型、GPIO的唤醒属性配置(如gpio-hog、wakeup-source标记)
  • 需配置SOC侧对应GPIO的电源管理属性,确保休眠时该GPIO不会被禁用

3. 驱动层面

  • 必须成功调用enable_irq_wake()将触摸屏中断注册为唤醒源:需检查gtp_probe中该函数的返回值是否为0,若返回错误需排查中断申请/配置问题
  • 驱动需实现完整的电源管理回调(struct dev_pm_ops):在suspend回调中需将GT911配置为低功耗待机模式,开启触摸唤醒中断;在resume回调中调用gtp_wakeup_sleep恢复触摸屏工作
  • 确保中断处理函数未被屏蔽,且触摸事件触发的中断能被SOC识别为唤醒信号

4. 系统电源管理配置

  • 内核需开启休眠唤醒相关配置:如CONFIG_PM_SLEEP、CONFIG_PM_WAKELOCKS、CONFIG_PM_WAKEUP_SOURCE等
  • 确认系统休眠模式(standby)支持外设唤醒:部分SOC的standby模式可能限制唤醒源,需核对SOC电源管理文档
  • 确保gt9xx唤醒设备处于启用状态:执行echo enabled > /sys/class/wakeup/[gt9xx设备名]/power/wakeup(替换为实际设备名)

内容的提问来源于stack exchange,提问作者wangt13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 21:32:53