将gslX680触摸屏驱动移植到自己的开发板上(对应的源码文件gslX680.c),并且实现可以使用make menuconfig进行动态的加载和卸载因为触摸屏设备属于一种典型的输入设备,所以他的驱动源码最好是放在 drivers\input\touchscreen这个目录下,这样是最规范的。
(1)定义一个宏名,譬如CONFIG_TOUCHSCREEN_GSLX680
(2)mach文件中添加board_info
在代码中使用宏来条件编译 驱动源码的实现是基于I2C总线方式的,所以分为I2C设备驱动注册和I2C设备注册两个方面。gslX680.c文件只是实现了设备驱动的注册,而将设备的注册放在了mach文件中, 当然设备和设备驱动的注册是可以放在一个文件中的,这都没有错,只是不太符合规范,所以这其实就体现出了一种使用的灵活性。所以就存在一个匹配问题,那当然就是名字了,一定要保证他们能够匹配的上。
static struct i2c_board_info i2c_devs1[] __initdata = {
#ifdef CONFIG_VIDEO_TV20
{
I2C_BOARD_INFO("s5p_ddc", (0x74>>1)),
},
#endif
#ifdef CONFIG_TOUCHSCREEN_GSLX680
{
I2C_BOARD_INFO("gslX680", 0x40),
},
#endif
(3)在Makefile中使用宏来条件配置
在drivers\input\touchscreen目录下的Makefile文件中加入条件编译控制语句:
obj-$(CONFIG_TOUCHSCREEN_GSLX680) += gslX680.o gsl_point_id
gsl_point_id是一个预编译好的函数库文件,里面有很多的函数是被gslX680.c文件调用的,所以一定要加上。
(4)在Kconfig项目中添加宏的配置项
config TOUCHSCREEN_GSLX680
tristate "9tripod GSL1680 Touch Panel Controller"
depends on I2C
help
This enables support for FocalTech over I2C based touchscreens.
(5)make menuconfig并选择Y或者N