在 linux2.6.14/drivers/input/touchscreen 目錄下建立新的文件s3c2410_ts.c 文件,驅動文件我們可以參考類似的觸摸屏驅動,具體的內容參看網(wǎng)站或者光盤提供的源代碼。
首先:修改 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
配置內核,選擇上這些配置
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函數(shù)中添加:
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