转自:https://blog.csdn.net/kk20000/article/details/83041081

使用的汇顶的触摸驱动的时候会重新亮屏速度慢3秒,而在使用另外一个敦泰触摸驱动的时候没有发现问题。
比较代码后发现,fb_notifier_callback的影响是关键.

有问题的代码是:

static int fb_notifier_callback(struct notifier_block *self,
                                 unsigned long event, void *data)
{
        struct fb_event *evdata = data;
        int *blank;
        struct goodix_ts_data *ts =
                container_of(self, struct goodix_ts_data, fb_notif);

if (evdata && evdata->data && event == FB_EVENT_BLANK &&
                        ts && ts->client) {
                blank = evdata->data;

GTP_DEBUG("fb notifier callback blank :%d",*blank);

if (*blank == FB_BLANK_UNBLANK)
                        goodix_ts_resume(&ts->client->dev);
                else if (*blank == FB_BLANK_POWERDOWN)
                        goodix_ts_suspend(&ts->client->dev);
        }
        return 0;
}

修改为下面的方式后正常:

static int fb_notifier_callback(struct notifier_block *self,

unsigned long event, void *data)
{
        struct fb_event *evdata = data;
        int *blank;
        struct goodix_ts_data *ts =
                container_of(self, struct goodix_ts_data, fb_notif);
        if (evdata && evdata->data && event == FB_EARLY_EVENT_BLANK && ts && ts->client)
        {
                blank = evdata->data;
                GTP_DEBUG ("fb_notifier_callback:goodix blank=%d\n", *blank);
                if (*blank == FB_BLANK_UNBLANK)
                {
                        if (!work_pending (&ts->resume_work))
                        {
                                schedule_work (&ts->resume_work);
                        }
                }
                else if (*blank == FB_BLANK_POWERDOWN)
                {
                        cancel_work_sync (&ts->resume_work);
                        goodix_ts_suspend (&ts->client->dev);
                }
        }
        else if (event == FB_R_EARLY_EVENT_BLANK)
        {
                if (!work_pending (&ts->resume_work))
                {
                        schedule_work (&ts->resume_work);
                }
        }

return 0;
}

所以在使用屏幕通知唤醒的时候,要避免直接调用唤醒函数,而应该采用内核工作队列中来处理。
---------------------
作者:雨滴平头哥
来源:CSDN
原文:https://blog.csdn.net/kk20000/article/details/83041081
版权声明:本文为博主原创文章,转载请附上博文链接!

MSM8909的触摸屏驱动导致的熄屏后重新亮屏速度慢的原因!【转】的更多相关文章

  1. win7下自写驱动导致开机蓝屏调试过程

    之前没有接触过驱动调试.这里上手就要解决一个因为某个自定义驱动导致的系统登陆后蓝屏问题,记录下来.   问题: 从客户那边弄来的一个虚拟机,已知是加了我们的驱动之后才会导致蓝屏. 解决过程:   使用 ...

  2. mini2440触摸屏驱动分析

    mini2440驱动分析系列之 ---------------------------------------Mini2440触摸屏程序分析 By JeefJiang July,8th,2009 这是 ...

  3. AM335x(TQ335x)学习笔记——触摸屏驱动编写

    前面几篇文章已经通过配置DTS的方式完成了多个驱动的移植,接下来我们解决TQ335x的触摸驱动问题.由于种种原因,TQ335x的触摸屏驱动是以模块方式提供的,且Linux官方内核中也没有带该触摸屏的驱 ...

  4. 【驱动】input子系统整体流程全面分析(触摸屏驱动为例)【转】

    转自:http://www.cnblogs.com/lcw/p/3294356.html input输入子系统整体流程 input子系统在内核中的实现,包括输入子系统(Input Core),事件处理 ...

  5. 【6集iCore3_ADP触摸屏驱动讲解视频】6-1 工程及程序构架介绍

    视频简介: 该视频由银杏科技有限公司基于iCore3应用开发平台推出,包含 触摸屏驱动工程文件的介绍与程序构架的介绍等.   源视频包下载地址: http://pan.baidu.com/s/1dFz ...

  6. ARM-Linux驱动-触摸屏驱动分析

    出处:http://blog.csdn.net/geekcome/article/details/6580981 硬件平台:FL2440 内核版本:2.6.28 主机平台:Ubuntu 11.04 内 ...

  7. S3C2440触摸屏驱动实例开发讲解

    出处:http://www.embeddedlinux.org.cn/html/yingjianqudong/ 一.开发环境 主  机:VMWare--Fedora 9 开发板:Mini2440--6 ...

  8. linux 触摸屏驱动

    目录 linux 触摸屏驱动 输入子系统怎么写? 触摸屏事件 事件分类 事件设置 硬件配置 设计思路 完整程序 测试 ts_lib 使用 问题小结 title: linux 触摸屏驱动 tags: l ...

  9. 【Linux高级驱动】触摸屏驱动的移植

    触摸屏驱动的移植 流程 注意:看框架图 1.添加input.c组件 Device Drivers  ---> Input device support  --->  Generic inp ...

随机推荐

  1. Win7系统用户文件夹多出一个Administrator.xxx开头的文件怎么解决

    一般情况下,Win7操作系统都会有一个Administrator用户文件夹,但最近有用户发现自己win7系统电脑中用户文件夹有两个Administrator文件夹,另一个是以Administrator ...

  2. 一入OI深似海 3 —— 纪念我最后一次PJ(上)

    其实在比赛前一天中午上车前, 我还在机房打 I wanna, 感觉就是去杭州旅游的. 诶,还真是这样! 我和jwj在绍兴服务区买了金拱门, 拎着吃的回到车上的时候, 迎面而来羡慕的小眼神. 下午很早就 ...

  3. NodeJs操作MongoDB之分页功能与常见问题

    NodeJs操作MongoDB之分页功能与常见问题 一,方法介绍 1,聚合操作之count count()方法可以查询统计符合条件的集合的总数 db.User.count(<query>) ...

  4. Sptringboot 添加子项目

    1:复制一个子项目,修改项目名 2:修改启动类 3:修改pom.xml 4:打开project structure  选择Modules 下一步下一步 5:添加主项目的pom.xml  在<mo ...

  5. Retrofit原理

    Retrofit原理解析最简洁的思路 Retrofit 工作原理总结 从架构角度看Retrofit的作用.原理和启示 Retrofit主要是在create方法中采用动态代理模式实现接口方法:这个过程构 ...

  6. django xadmin(2) 在xadmin基础上完成自定义页面

    1.在xadmin.py,GlobalSettings中自定义菜单 2.自定义视图函数,并获取原来的菜单等一下信息(主要是为了用xadmin的模板),具体的自己看xadmin源码 3.在adminx. ...

  7. 为知笔记Linux版编译使用记录

    本文档长期不定时更新,根据使用情况进行反馈. 目录 编译 Error creating SSL context 无法输入中文 如何打包使用 桌面图标 Markdown Windows 版本差异 常用快 ...

  8. android 调用 screenrecord 实现录屏

    首先要说明的是并未实现,本文讲一下自己的思路. adb 使用shell 命令 screenrecord 可录屏. 自己写了个app,通过Process p = Runtime.getRuntime() ...

  9. js打开新窗口,打开新窗口屏蔽工具栏和地址栏,窗口按规定大小显示

    opener=null; window.open ("http://baidu.com", "newwindow", "height=500, wid ...

  10. atlassian-jira部署文档

    部署mysql数据库,我这里使用mariadb数据库,并且创建jira的数据库和用户,下面是创建jira数据库和用户的操作,安装数据库mysq过程略.(MYSQL数据库也是可以的,不过mysql的驱动 ...