Chinaunix首页 | 论坛 | 博客
  • 博客访问: 584223
  • 博文数量: 165
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1554
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-23 22:57
个人简介

我本仁慈,奈何苍天不许

文章分类

全部博文(165)

文章存档

2018年(1)

2016年(33)

2015年(5)

2014年(34)

2013年(92)

分类: LINUX

2013-12-26 19:49:00

S5pc100触摸屏驱动移植(基于linux 2.6.35.13内核)  

1、 修改driver/input/touchscreen/Kconfig
修改:
config TOUCHSCREEN_S3C2410
        tristate "Samsung S3C2410/generic touchscreen input driver"
        depends on ARCH_S3C2410 || SAMSUNG_DEV_TS
        select S3C_ADC
为:
config TOUCHSCREEN_S3C2410
        tristate "Samsung S3C2410/generic touchscreen input driver"
        depends on ARCH_S3C2410 || SAMSUNG_DEV_TS || ARCH_S5PC100
        select S3C_ADC
2
、 修改arch/arm/mach-s5pc100/include/mach/map.h
添加如下内容:
#define SAMSUNG_PA_ADC (0xF3000000)
3
、 修改arch/arm/plat-samsung/Kconfig
修改:
config SAMSUNG_DEV_ADC
        bool
        help
                Compile in platform device definition for ADC controller
        config SAMSUNG_DEV_TS
        bool
        help
                Common in platform device definitions for touchscreen device
为:
config SAMSUNG_DEV_ADC
        bool
        default y
        help
                Compile in platform device definition for ADC controller
        config SAMSUNG_DEV_TS
        bool
        default y
        help
                Common in platform device definitions for touchscreen device
4
、 修改arch/arm/plat-samsung/adc.c
修改:
      staticstructplatform_device_id s3c_adc_driver_ids[] = {
        {
        .name = "s3c24xx-adc",
        .driver_data = TYPE_S3C24XX,
        }, {
        .name = "s3c64xx-adc",
        .driver_data = TYPE_S3C64XX,
        },
        {}
        };
为:
      staticstructplatform_device_id s3c_adc_driver_ids[] = {
        {
        .name = "s3c24xx-adc",
        .driver_data = TYPE_S3C24XX,
        }, {
        .name = "s3c64xx-adc",
        .driver_data = TYPE_S3C64XX,
        },{
        .name = "samsung-adc"
        .driver_data = TYPE_S3C64XX,
        },
        {}
        };
5
、 修改driver/input/touchscreen/s3c2410_ts.c
在:
      input_report_key(ts.input, BTN_TOUCH, 1);
下添加:
      input_report_abs(ts.input, ABS_PRESSURE, 1);
在:
      input_report_key(ts.input, BTN_TOUCH, 0);
下添加:
      input_report_abs(ts.input, ABS_PRESSURE, 0);
在:
      input_set_abs_params(ts.input, ABS_Y, 0, 0x3FF, 0, 0);
下添加:
      input_set_abs_params(ts.input, ABS_PRESSURE, 0, 1, 0, 0);
6
、 修改arch/arm/mach-s5pc100/mach-smdkc100.c
添加头文件:
#if defined(CONFIG_TOUCHSCREEN_S3C2410)
        #include
        #endif
添加平台数据:
#if defined(CONFIG_TOUCHSCREEN_S3C2410)
        staticstruct s3c2410_ts_mach_info s5pc100_ts_cfg __initdata = {
                .delay = 20000,
                .presc = 49,
                .oversampling_shift = 2,
        };
        #endif
添加平台设备:
在结构体数组:
staticstructplatform_device *smdkc100_devices[] __initdata = {
               
……
               
……
         };
中添加如下内容:
#if defined(CONFIG_TOUCHSCREEN_S3C2410)
                &s3c_device_adc,
                &s3c_device_ts,
        #endif
在函数:
static void __init smdkc100_machine_init(void)
        {
               
……
        }
中添加如下内容:
#if defined(CONFIG_TOUCHSCREEN_S3C2410)
                s3c24xx_ts_set_platdata(&s5pc100_ts_cfg);
        #endif
7
、 配置内核
$ make menuconfig
        Device Drivers --->
                Input device support --->
                        <*> Event interface
                        [*] Touchscreens --->
                                <*> Samsung S3C2410/generic touchscreen input driver
8
、 编译内核并拷贝到tftpboot
$ make zImage
        $ cp arch/arm/boot/zImage /tftpboot

阅读(819) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~