linux2.6.32移植到fl2440 求助Cannot open /dev/ts0 (No such device) 问题

来源:互联网 发布:淘宝号怎样会被冻结 编辑:程序博客网 时间:2024/06/06 00:52

转自: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