Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2534385
  • 博文数量: 401
  • 博客积分: 12926
  • 博客等级: 上将
  • 技术积分: 4578
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-22 14:51
文章分类

全部博文(401)

文章存档

2015年(16)

2014年(4)

2013年(12)

2012年(82)

2011年(98)

2010年(112)

2009年(77)

分类: LINUX

2012-04-11 02:42:54

今天编译tslib,之后死活认不出touchscreen。
通过cat 测试了/dev/input/event2,发现touch有反映。
但是tslib死活老说 selected device is not a touchscreen I understand这log。
google了半天,也没搞定。
于是开始看代码。
发现tslib有这么一段

if (! ((ioctl(ts->fd, EVIOCGVERSION, &version) >= 0) &&
(version == EV_VERSION) &&
(ioctl(ts->fd, EVIOCGBIT(0, sizeof(bit) * 8), &bit) >= 0) &&
(bit & (1 << EV_ABS)) &&
(ioctl(ts->fd, EVIOCGBIT(EV_ABS, sizeof(absbit) * 8), &absbit) >= 0) &&
(absbit & (1 << ABS_X)) &&
(absbit & (1 << ABS_Y)) && (absbit & (1 << ABS_PRESSURE)))) {
fprintf(stderr, "selected device is not a touchscreen I understand\n");
return -1;
}

然后再看kernel源代码,drivers/input/evdev.c文件中,有这个ioctl的处理。

case EVIOCGVERSION:
return put_user(EV_VERSION, ip);
然后在看EV_VERSION定义:
include/linux/input.h
#define EV_VERSION 0x010000  //gjl 0x010001
再看tslib的代码,对EV_VERSION的定义为0x010001。

靠,无语了。。。。这是飞凌的一个bug,这叫gjl的不知道为什么把version给改了。导致了这个bug。
无奈了。。。。。。。。。。改成0x010001后,一切OK。。。。。。
阅读(12131) | 评论(7) | 转发(0) |
0

上一篇:ARM EABI

下一篇:内核处理cmdline和atags流程

给主人留下些什么吧!~~

taolin2019-01-16 17:43:32

您好,我在kernel源码下的linux/input.h中没有找到EV_VERSION的定义,请问一下,我找的路径正确吗

yeshenqiu2013-04-23 23:35:45

请问一下tslib的代码,对EV_VERSION的定义在什么地方?多谢!

4500632392012-07-25 18:49:02

我也遇到这个问题了,按照你给的目录看了,确实是这样的,可是我不知道怎么修改,能给我指导一下吗,我已经困惑好几天了,谁能帮我指导指导,谢谢
我的QQ:450063239,我静候您的消息

BENNYSNAKE2012-04-16 23:41:39

依兰风: 请问一下tslib的代码,对EV_VERSION的定义在什么地方?多谢!.....
在你系统的/usr/include/linux/input.h

依兰风2012-04-12 22:36:35

请问一下tslib的代码,对EV_VERSION的定义在什么地方?多谢!