基于tiny210的四线触摸屏驱动修改(一)

开发板:tiny210

内核:linux-2.6.35.7

触摸屏:3.5寸触摸屏    

由于tiny210默认的触摸屏采用的是一线触摸,所使用的驱动是[*]Mini210 1-Wire host and Touch Screen Driver,而现在要使用四线触摸,因此配置内核如下:

     Device Drivers  ---> 

Input device support  --->  

[*]   Touchscreens  ---> 

<*>   S3C touchscreen driver

< >    Mini210 1-Wire host and Touch Screen Driver

/arch/arm/mach-s5pv210/mach-mini210.c找到s3c_device_1wire,并配置如下:

#ifdef CONFIG_TOUCHSCREEN_S3C
&s3c_device_ts,
#endif
#ifdef CONFIG_TOUCHSCREEN_1WIRE
&s3c_device_1wire,
#endif

根据tiny210的datasheet,开发板是支持两个触摸屏的,分别是Touch Screen0和Touch Screen1,在此我们接的是Touch Screen1,所以我们使用的ADC Control Register(7.7.1.1章节)是TSADCCON1,它的地址是 0xE170_1000。而内核中并没有该寄存器的定义,因此我们在/arch/arm/mach-s5pv210/include/mach/map.h定义如下:

#define S5PV2XX_PA_ADC1         (0xE1701000)

#define S3C_PA_ADC1              S5PV2XX_PA_ADC1

接下来我们在/arch/arm/mach-s5pv210/mach-mini210.c中根据datasheet修改其中针对触摸屏驱动的相关参数:

#if defined(CONFIG_TOUCHSCREEN_S3C)

static struct s3c_ts_mach_info s3c_ts_platform __initdata = {

       .delay                  = 10000,

       .presc                  = 49,

       .oversampling_shift     = 6,//2

       .resol_bit              = 10,//12

       .s3c_adc_con            = ADC_TYPE_2,

};

 

/* Touch srcreen */

static struct resource s3c_ts_resource[] = {

       [0] = {

              .start = S3C_PA_ADC1,

              .end   = S3C_PA_ADC1 + SZ_4K - 1,

              .flags = IORESOURCE_MEM,

       },

       [1] = {

              .start = IRQ_PENDN1,

              .end   = IRQ_PENDN1,

              .flags = IORESOURCE_IRQ,

       },

       [2] = {

              .start = IRQ_ADC1,

              .end   = IRQ_ADC1,

              .flags = IORESOURCE_IRQ,

       }

};

 

struct platform_device s3c_device_ts = {

       .name               = "s3c-ts",

       .id            = -1,

       .num_resources        = ARRAY_SIZE(s3c_ts_resource),

       .resource   = s3c_ts_resource,

};

 

void __init s3c_ts_set_platdata(struct s3c_ts_mach_info *pd)

{

       struct s3c_ts_mach_info *npd;

 

       npd = kmalloc(sizeof(*npd), GFP_KERNEL);

       if (npd) {

              memcpy(npd, pd, sizeof(*npd));

              s3c_device_ts.dev.platform_data = npd;

       } else {

              pr_err("no memory for Touchscreen platform data\n");

       }

}

#endif


下来修改/drivers/input/touchscreen/ts-s3c.c驱动程序。由于代码太长,因此另起一章。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

happydesigner

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值