转自: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. gitlab搭建和使用

    原文地址:https://blog.csdn.net/zhushuai662/article/details/79581377 大家常听说Git.Github.Gitlab,很多人对着三个词很懵逼,分 ...

  2. 一次隐蔽的while死循环

    private int isStocksEnough(int goodsNum,int goodsID) { while(true) { sql = "select * from tb_go ...

  3. 个人jQuery的使用总结

    一.使用方法 参考内容有: http://www.w3school.com.cn/jquery/jquery_ref_events.asp http://www.cnblogs.com/zhangzi ...

  4. spring事物与传播行为

    一.事物的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 作用:事物就是保证数据的一致性 事物的特性:事务必须服从ISO/IEC所制定的ACID原则.ACID是原 ...

  5. 2019-04-19 EasyWeb数据源问题

    问题描述:今天增加了个新模块,为了让各个模块自己保留自己的数据源配置,所以把数据源配置类放入自己模块包中,但是进行请求发现数据源会先选择默认的数据源,导致报错说主数据源下不存在表:当我把配置文件放回统 ...

  6. react native输入框定位在底部(虚拟键盘弹起)

    1.通过Keyboard获取键盘高度,改变定位的bottom 缺点:虚拟键盘完全弹起时,才会获取到键盘高度,定位稍有延迟,而且键盘收起时,定位会出现悬空状态,然后再回到底部 import React, ...

  7. ubuntu下python跑任务输出到文件中遇到的一些问题(输出重定向)

    之前主要是参考https://www.cnblogs.com/chason95/articles/9760291.html 一般使用 python test.py > ./log.txt 或 p ...

  8. 关于vue移动端的适配

    http://blog.csdn.net/z1712636234/article/details/77881685

  9. Educational Codeforces Round 63 (Rated for Div. 2) C. Alarm Clocks Everywhere gcd

    题意:给出一个递增的时间序列a  给出另外一个序列b  (都是整数) 以b中任选一个数字作为间隔  自己从1开始任选一个时间当成开始时间 输出选择的数字标号以及 开始时间 思路  直接求间隔的公共gc ...

  10. 特殊计数序列——第一类斯特林(stirling)数

    第一类斯特林数 在这里我因为懒所以还是用\(S(n,m)\)表示第一类斯特林数,但一定要和第二类斯特林数区分开来 递推式 \(S(n,m)=S(n-1.m-1)+S(n-1,m)*(n-1)\) 其中 ...