linux 内核 触摸屏,向内核里面添加触摸屏驱动(方法适合其他设备)

我最近在给2.6.13内核做设备驱动,现在写到"触摸屏",我参考的方法如下:

(大家先浏览一下啊,呵呵)

在linux2.6.14中没有提供s3c2410的驱动,所以我们要新建驱动文件,我们在

linux2.6.14/drivers/input/touchscreen目录下建立新的文件hfrk_s3c2410_ts.c文件,驱动文件我们

可以参考类似的触摸屏驱动,具体的内容参看网站或者光盘提供的源代码。

首先:我们需要修改linux2.6.14/drivers/input/touchscreen目录下的makefile文件,在文件的最后添加:

obj-$(CONFIG_TOUCHSCREEN_S3C2410) += hfrk_s3c2410_ts.o

第二:我们需要修改linux2.6.14/drivers/input/touchscreen/Kconfig中添加:

config TOUCHSCREEN_S

tristate "Samsung S3C2410 touchscreen input driver"

depends on ARCH_SMDK2410 && INPUT && INPUT_TOUCHSCREEN

select SERIO

help

Say Y here if you have the s3c2410 touchscreen.

If unsure, say N.

To compile this driver as a module, choose M here: the

module will be called s3c2410_ts.

config TOUCHSCREEN_S3C2410_DEBUG

boolean "Samsung S3C2410 touchscreen debug messages"

depends on TOUCHSCREEN_S3C2410

help

Select this if you want debug messages

修改完成以后,在我们配置内核的时候,就会增加关系s3c2410的触摸屏配置,我们选择上这些配置就可以把驱动增加进去了

Device drivers -à

Input device support à

Touchscreens à

Samsung S3C2410 touchscreen input driver

[]Samsung s3c2410 touchscreen debug message

第三:在/linux-2.6.14/arch/arm/mach-s3c2410/mach-smdk2410.c,中增加如下内容:

static struct s3c2410_ts_mach_info sbc2410_ts_cfg __initdata = {

.delay = 10000,

.presc = 49,

.oversampling_shift = 2,

};

在smdk2410_devices结构中,添加:

&s3c_device_ts,

在smdk2410_map_io函数中添加:

set_s3c2410ts_info(&sbc2410_ts_cfg);

第四:在/linux-2.6.14/arch/arm/mach-s3c2410/devs.h文件中添加:

extern struct platform_device s3c_device_ts;

第五:在arch/arm/mach-s3c2410/devs.c文件中添加如下几行:

/* Touchscreen */

static struct s3c2410_ts_mach_info s3c2410ts_info;

void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info)

{

memcpy(&s3c2410ts_info,hard_s3c2410ts_info,sizeof(struct s3c2410_ts_mach_info));

}

EXPORT_SYMBOL(set_s3c2410ts_info);

struct platform_device s3c_device_ts = {

.name = "s3c2410-ts",

.id = -1,

.dev = {

.platform_data = &s3c2410ts_info,

}

};

EXPORT_SYMBOL(s3c_device_ts);

经过这些修改,我们的触摸屏驱动已经完成,我们编译就可以了。我们的这个触摸屏驱动在内核注册为/dev/input/mouse0。

大家不要只看了方法请帮我看看问题,发表一下意见

ok!!!到目前为止我的启动信息里已经能看到:

s3c2410 TouchScreen successfully loaded,而且设备文件/dev/input/mouse0也可以生成.

我的触摸屏在内核打印信息,已经能看到数据正确,触摸屏驱动应该是好的,可是我还不清楚2.6内核和测试程序的接口在什么地方,原来的什么

fileoprition结构体荡然无存,触摸屏的驱动挂到了BUS上......那我的数据要在什么地方才能传递给上层测试程序呢???在什么地方才能

有相应的read,write,函数呢,什么地方写入buff呢.....???我现在的测试程序无法从设备文件中读取正确的数值,应该是下层的驱动向上

层的测试程序传递的时候出现了问题,可是我无法找到接口位置啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值