转自:http://bbs.csdn.net/topics/380061884
问题描述:
Please press Enter to activate this console. [9;0][?33l[?25lCould not read calibration: /etc/pointercal
Cannot open /dev/ts0 (No such device)
Warning: Need to run firstuse
Warning: language message - en_US
Warning: and its not null
Warning: loading /usr/i18n/en_US/qt.qm
Warning: loading /usr/i18n/en_US/qpe.qm
Warning: loading /usr/i18n/en_US/libqpe.qm
Warning: loading /usr/i18n/en_US/libqtopia.qm
Warning: loading /usr/i18n/en_US/language.qm
Warning: loading /usr/i18n/en_US/timezone.qm
Warning: loading /usr/i18n/en_US/systemtime.qm
Cannot open /dev/ts0 (No such device)
解决办法:
最后还是自己解决了,我的ts的h文件与c文件都是来自2.6.33.7里面的。
33.7中的文件ts.h:
/linux-2.6.33.7/arch/arm/mach-s3c2410/include/mach
s3c2410_ts.c:
/linux-2.6.33.7/drivers/input/touchscreen
1、将以上两个文件复制到相应位置
2、在drivers/input/touchscreen/Makefile中添加
obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
3、在drivers/input/touchscreen/Kconfig中if INPUT_TOUCHSCREEN后加入:
config TOUCHSCREEN_S3C2410
tristate "Samsung S3C2410 touchscreen input driver"
depends on ARCH_S3C2410 && 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
4、修改arch/arm/plat-s3c24xx/devs.c
A、添加头文件#include <mach/ts.h>
B、224行左右添加:
/* Touchscreen */
static struct resource s3c_ts_resource[] = {
[0] = {
.start = S3C24XX_PA_ADC,
.end = S3C24XX_PA_ADC + S3C24XX_SZ_ADC - 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = IRQ_TC,
.end = IRQ_TC,
.flags = IORESOURCE_IRQ,
},
};
struct platform_device s3c_device_ts = {
.name = "s3c2410-ts",
.id = -1,
.dev.parent = &s3c_device_adc.dev,
.num_resources = ARRAY_SIZE(s3c_ts_resource),
.resource = s3c_ts_resource,
};
EXPORT_SYMBOL(s3c_device_ts);
static struct s3c2410_ts_mach_info s3c2410ts_info;
void __init s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *hard_s3c2410ts_info)
{
memcpy(&s3c2410ts_info, hard_s3c2410ts_info, sizeof(struct s3c2410_ts_mach_info));
s3c_device_ts.dev.platform_data = &s3c2410ts_info;
}
EXPORT_SYMBOL(s3c24xx_ts_set_platdata);
5、在/arch/arm/plat-s3c/include/plat/devs.h添加:
extern struct platform_device s3c_device_ts;
6、修改arch/arm/mach-s3c2440/mach-smdk2440.c文件。
A、添加头文件#include <mach/ts.h>
B、在static struct platform_device *smdk2440_devices[] __initdata 结构体数组内添加
&s3c_device_adc, //(触摸屏需要ADC的支持)
&s3c_device_ts, //最好将adc添加到ts前面,否则触摸屏初始化时可能会出错//
并在上面结构体后面添加:
/*Config for TouchScreen*/
static struct s3c2410_ts_mach_info smdk2410_ts_cfg __initdata = {
.delay = 10000,
.presc = 49,
.oversampling_shift = 2,
};
C、在static void __init smdk2440_machine_init(void)函数中(第三行吧)增加下列代码:
s3c24xx_ts_set_platdata(&smdk2410_ts_cfg);
7、make menuconfig
在配置菜单中添加如下项:
Device Drivers --->
<*>Input device support --->
<*> Event interface
<*>Input device support --->
<*>Touchscreens --->
<*> Samsung S3C2410 touchscreen input driver