mini2440触摸屏驱动在linux-2.6.32.2的移植

用menuconfig进去Device Drivers -->Input device support --->Touchscreen --->目录一看傻眼了,核是

自己配的,TOUCHSCREEN驱动那么多选项也不知道哪个适合我的板子。搞不好一个都不适合。自己写

驱动?不太可能,作为这么新的手写如此精辟的驱动估计写一个月都够呛。好在友善官网提供的linux2.6.29

的核中含驱动源码。只需移植过来,再慢慢研究。
首先把友善2.6.29/drivers/input/touchscreen/s3c2410_ts.c拷到
linux2.6.32.2对应的目录下:/drivers/input/touchscreen/

并修改如下:

1、添加头文件 #include <linux/gpio.h> 否则会出现 error: implicit declaration of function 's3c2410_gpio_cfgpin'

2、修改

static inline void s3c2410_ts_connect(void)
{
    s3c2410_gpio_cfgpin(S3C2410_GPG(12), S3C2410_GPG12_XMON);
    s3c2410_gpio_cfgpin(S3C2410_GPG(13), S3C2410_GPG13_nXPON);
    s3c2410_gpio_cfgpin(S3C2410_GPG(14), S3C2410_GPG14_YMON);
    s3c2410_gpio_cfgpin(S3C2410_GPG(15), S3C2410_GPG15_nYPON);
}


下面如何在menuconfig菜单上显示有该项呢?
查看2.6.29/drivers/input/touchscreen/Kconfig文件,里面有这样一段文字:

config TOUCHSCREEN_S3C2410
     tristate "Samsung S3C2410 touchscreen input driver"
     depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN && MINI2440_ADC
     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.
将其拷到2.6.32.2/drivers/input/touchscreen/Kconfig相应的地方。
并在2.6.32.2/drivers/input/touchscreen/Makefile添加:
obj-$(CONFIG_TOUCHSCREEN_S3C2410)      += s3c2410_ts.o
#make menuconfig
发现Device Drivers -->Input device support --->Touchscreen --->里面还是没有S3C2410 touchscreen

驱动的选项。何故?
打开Kconfig仔细一看,原来添加的那段文字有这么一句:
“depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN && MINI2440_ADC”
就是说该项依赖这几项:
ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN && MINI2440_ADC
也就是说这几项全部选上了才会出现S3C2410 touchscreen驱动项。
再仔细一看MINI2440_ADC应该是AD驱动,一想也是,要使用触摸屏肯定是要用到AD的。
接着又在2.6.29/drivers/char下找到mini2440_adc.c、s3c24xx-adc.h(开始没拷这个以致编译时发生错误)

两个文件。同样拷到2.6.32.2相应目录/drivers/char下。

并在mini2440_adc.c添加头文件#include <linux/sched.h>
为了让menuconfig出现MINI2440_ADC选项,将2.6.32.2/drivers/char/Kconfig的这段文字做出如下修改,拷到

2.6.29/drivers/char/Kconfig里:
config MINI2440_ADC
     bool "ADC driver for FriendlyARM Mini2440/QQ2440 development boards"
    (depends on MACH_FRIENDLY_ARM_MINI2440 )   //删去该行
    (default y if MACH_FRIENDLY_ARM_MINI2440 )     //删去该行
     help
     this is ADC driver for FriendlyARM Mini2440/QQ2440 development boards
     Notes: the touch-screen-driver required this option
并在2.6.29/drivers/char/Makefile添加:
obj-$(CONFIG_MINI2440_ADC)      += mini2440_adc.o

下面修改2.6.32.2/drivers/input/touchscreen/Kconfig
将从2.6.29/drivers/input/touchscreen/Kconfig拷过来的那段文字改为:

config TOUCHSCREEN_S3C2410
    tristate "Samsung S3C2410 touchscreen input driver"
    depends on INPUT && MINI2440_ADC          //修改了该行
    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.

好了,接着退到2.6.32.2/的顶层
#make menuconfig
于是在Device Drivers -->
             Character devices --->
出现了               []ADC driver for FriendlyARM Mini2440/QQ2440 development boards                  

 
在    Device Drivers -->
                 Input device support --->
                         Touchscreen --->
出现了                       <>Samsung S3C2410 touchscreen input driver

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值