因为内核linux-3.0已经有支持触摸屏的驱动,我们只需要将略做修改使其支持s3c-2440就行了
很简单;
第一步
修改源代码:
1、vim arch/arm/mach-s3c2440/mach-smdk2440.c
添加头文件
#include <plat/ts.h>
找个合适的位置添加以下结构体
/* Touch Screen driver info add by liuchengdeng 2014.08.24 */
static struct s3c2410_ts_mach_info smdk2440_ts_cfg __initdata = {
.delay = 10000,
.presc = 49,
.oversampling_shift = 2,
};
修改结构体
static struct platform_device *smdk2440_devices[] __initdata = {
&s3c_device_ohci,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_dm9000,
&s3c_device_adc, /* modify by huangan */
&s3c_device_ts, /* add end*/
};
static void __init smdk2440_machine_init(void)
{
s3c24xx_fb_set_platdata(&smdk2440_fb_info);
s3c24xx_ts_set_platdata(&smdk2440_ts_cfg);/* add toucg screen info by huangan*/
s3c_i2c0_set_platdata(NULL);
platform_add_devices(smdk2440_devices, ARRAY_SIZE(smdk2440_devices));
smdk_machine_init();
}
2、vim drivers/input/touchscreen/s3c2410_ts.c
添加代码1、
input_report_key(ts.input, BTN_TOUCH, 1);
input_report_abs(ts.input, ABS_PRESSURE, 1);/*add by huangan*/
input_sync(ts.input);
添加代码2、
input_report_key(ts.input, BTN_TOUCH, 0);
input_report_abs(ts.input, ABS_PRESSURE, 0);/* add by huangan */
input_sync(ts.input);
添加代码3、
ts.input = input_dev;
ts.input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS) //将这句删除
ts.input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS) | BIT(EV_SYN); //添加这句
ts.input->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
input_set_abs_params(ts.input, ABS_X, 0, 0x3FF, 0, 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); /*add by huangan */
第二步、配置内核:
make menuconfig
Device Drivers --->
Input device support --->
[*] Touchscreens --->
<*> Samsung S3C2410/generic touchscreen input driver
第三步、重新编译内核,并烧到开发板,输入如下命令
~>cd dev/
~>ls
audio ptyq3 tty10 ttyq5
autofs ptyq4 tty11 ttyq6
console ptyq5 tty12 ttyq7
controlC0 ptyq6 tty13 ttyq8
cpu_dma_latency ptyq7 tty14 ttyq9
discover ptyq8 tty15 ttyqa
dsp ptyq9 tty16 ttyqb
err ptyqa tty17 ttyqc
event0 ptyqb tty18 ttyqd(多出了event0 设备)
fb0 ptyqc tty19 ttyqe
flush ptyqd tty2 ttyqf
说明已经移植成功。。
OK,大功告成!!!!!!!!!!!