MSM8909的触摸屏驱动导致的熄屏后重新亮屏速度慢的原因!【转】
转自: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的触摸屏驱动导致的熄屏后重新亮屏速度慢的原因!【转】的更多相关文章
- win7下自写驱动导致开机蓝屏调试过程
之前没有接触过驱动调试.这里上手就要解决一个因为某个自定义驱动导致的系统登陆后蓝屏问题,记录下来. 问题: 从客户那边弄来的一个虚拟机,已知是加了我们的驱动之后才会导致蓝屏. 解决过程: 使用 ...
- mini2440触摸屏驱动分析
mini2440驱动分析系列之 ---------------------------------------Mini2440触摸屏程序分析 By JeefJiang July,8th,2009 这是 ...
- AM335x(TQ335x)学习笔记——触摸屏驱动编写
前面几篇文章已经通过配置DTS的方式完成了多个驱动的移植,接下来我们解决TQ335x的触摸驱动问题.由于种种原因,TQ335x的触摸屏驱动是以模块方式提供的,且Linux官方内核中也没有带该触摸屏的驱 ...
- 【驱动】input子系统整体流程全面分析(触摸屏驱动为例)【转】
转自:http://www.cnblogs.com/lcw/p/3294356.html input输入子系统整体流程 input子系统在内核中的实现,包括输入子系统(Input Core),事件处理 ...
- 【6集iCore3_ADP触摸屏驱动讲解视频】6-1 工程及程序构架介绍
视频简介: 该视频由银杏科技有限公司基于iCore3应用开发平台推出,包含 触摸屏驱动工程文件的介绍与程序构架的介绍等. 源视频包下载地址: http://pan.baidu.com/s/1dFz ...
- ARM-Linux驱动-触摸屏驱动分析
出处:http://blog.csdn.net/geekcome/article/details/6580981 硬件平台:FL2440 内核版本:2.6.28 主机平台:Ubuntu 11.04 内 ...
- S3C2440触摸屏驱动实例开发讲解
出处:http://www.embeddedlinux.org.cn/html/yingjianqudong/ 一.开发环境 主 机:VMWare--Fedora 9 开发板:Mini2440--6 ...
- linux 触摸屏驱动
目录 linux 触摸屏驱动 输入子系统怎么写? 触摸屏事件 事件分类 事件设置 硬件配置 设计思路 完整程序 测试 ts_lib 使用 问题小结 title: linux 触摸屏驱动 tags: l ...
- 【Linux高级驱动】触摸屏驱动的移植
触摸屏驱动的移植 流程 注意:看框架图 1.添加input.c组件 Device Drivers ---> Input device support ---> Generic inp ...
随机推荐
- Android布局理解
参考菜鸟教程,原文请查看:https://www.runoob.com/w3cnote/android-tutorial-linearlayout.html 1.FrameLayout(帧布局) 帧布 ...
- Trie树(字典树)推荐文章
Trie树也被称为字典树,通过这个名字,可以明显知道这种树的结构:像字典一样进行查找的树(想想采用拼音法查找汉字的时候的过程,实质上就是一个逐字母匹配的过程).Trie树就是利用了这种思想构造出来的多 ...
- Make a Person 闭包
用下面给定的方法构造一个对象. 方法有 getFirstName(), getLastName(), getFullName(), setFirstName(first), setLastName(l ...
- WMI Explorer操作 和 powershell命令
powershell查看wmi root 空间 PS C:\Users\yyy> Get-WmiObject -Class __namespace -Namespace root | selec ...
- (一)jdk8学习心得之遍历
一.遍历 -- 最好和stream流连用 使用jdk8提供的forEach进行遍历时,采用的是多线程的操作,理论上讲是会比原来的方法更快.但是注意,系统启动时需要加载lambda框架的内容.因此如果通 ...
- flutter 自定义主题切换
1. 定义local_srorage.dart文件 使用Flutter第三方插件shared_preferences实现存储键值对信息 相关shared_preferences插件可参考: flutt ...
- layui table默认选中指定行
表格默认选中行,在回调里写入 done: function (res, curr, count) { tableData = res.data; $("[data-field='id']&q ...
- 洛谷P3268 [JLOI2016]圆的异或并(扫描线)
扫描线还不是很熟啊--不管是从想的方面还是代码实现的方面-- 关于这题,考虑一条平行于\(y\)轴的扫描线从左到右扫描每一个圆,因为只有相离和内含两种关系,只用在切线处扫描即可 我们设上半圆为1,下半 ...
- 什么是GPIO?
”通用输入/输出口”(GPIO)是一个灵活的由软件控制的数字信号.他们可由多种芯片提供,且对于从事嵌入式和定制硬件的Linux开发者来说是比较熟 悉.每个GPIO都代表一个连接到特定引脚或球栅阵列(B ...
- MATLAB-离散系统的数字PID控制仿真
%PID Controller clear all; close all; ts=0.001; %采样时间=0.001s sys=tf(,]); %建立被控对象传递函数 dsys=c2d(sys,t ...