显示触摸屏驱动
(1)配置sysconfig.fex文件
(2)env_cfg文件配置(lichee/tools/pack/chips/sun8iw11p1/configs/default$)
设置loglevel=1
A40I 原厂android7.1程序中,在linux3.10中没有FT5316的驱动程序,需要将ft5x_ts.c程序移植到此系统中。
(3)驱动文件修改
驱动文件修改1:修改Kconfig和Makefile
lichee/linux-3.10/drivers/input/touchscreen/Kconfig
lichee/linux-3.10/drivers/input/touchscreen/Makefile
驱动文件修改2:修改原android6.0上的ft5x.c文件
android目录文件修改
修改文件1:android/device/softwinner/a40-common/init.sun8iw11p1.rc
修改文件2:在/android/device/softwinner/a40-p1/configs目录下面,执行命令
修改文件3:android/device/softwinner/a40-p1/a40_p1.mk
说明:在调试中,发现滑鼠现象(手指在触屏上滑动的时候,鼠标箭头跟着滑动),消除滑鼠现象,需要添加idc文件,idc文件的名称必须与驱动名称一致,否则无效。
10寸触摸屏在7寸触摸屏的基础上,做了如下修改:
1 屏幕切换触摸屏配置修改,将注释位置的配置更换
2 屏幕切换LCD配置修改,将注释位置的配置更换
驱动源码程序修改ft5x.c文件
(1) TOUCH_KEY_FOR_EVB13 部分代码替换为下面的代码
#ifdef TOUCH_KEY_FOR_EVB13
if((1==event->touch_point)&&(event->y1==900)){
key_tp = 1;
if(event->x1 == 120){
key_val = KEY_BRIGHTNESSDOWN;
input_report_key(data->input_dev, key_val, 1);
input_sync(data->input_dev);
//printk("===KEY 1====\n");
}else if(event->x1 == 360){
key_val = KEY_BRIGHTNESSUP;
input_report_key(data->input_dev, key_val, 1);
input_sync(data->input_dev);
//printk("===KEY 2 ====\n");
}else if(event->x1 == 600){
key_val = KEY_HOMEPAGE;
input_report_key(data->input_dev, key_val, 1);
input_sync(data->input_dev);
//printk("===KEY 3====\n");
}else if (event->x1 == 960) {
key_val = KEY_MENU;
input_report_key(data->input_dev, key_val, 1);
input_sync(data->input_dev);
//printk("===KEY 4====\n");
}else if (event->x1 == 1160) {
key_val = KEY_BACK;
input_report_key(data->input_dev, key_val, 1);
input_sync(data->input_dev);
//printk("===KEY 5====\n");
}
}else{
key_tp = 0;
}
(2)在ft5x_ts_probe函数中增加如下程序:
set_bit(KEY_BRIGHTNESSDOWN,input_dev->keybit);
set_bit(KEY_BRIGHTNESSUP,input_dev->keybit);
set_bit(KEY_HOMEPAGE,input_dev->keybit);
set_bit(KEY_MENU,input_dev->keybit);
set_bit(KEY_BACK,input_dev->keybit);
set_bit(EV_ABS, input_dev->evbit);
set_bit(EV_KEY, input_dev->evbit);
测试过程:LCD屏可显示,触屏可以用;