Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2984234
  • 博文数量: 401
  • 博客积分: 12926
  • 博客等级: 上将
  • 技术积分: 4588
  • 用 户 组: 普通用户
  • 注册时间: 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。。。。。。
阅读(13106) | 评论(7) | 转发(0) |
0

上一篇:ARM EABI

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

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

☆彼岸★花开2012-04-12 10:01:04

不错···受教了。。。不愧是工作在第一线的高人啊

十七岁的回忆2012-04-11 16:16:25

。。。这么强???楼主威武啊~~小弟先顶一个~~