Android4.1.1_r1系统移植------TP移植篇
2013-10-19 15:24
369 查看
学有所得,得有共享,这才是进步之道。
最近天天加班,很多博文写了一半觉得不完善,只好忍痛丢进了草稿箱。
不管其他的,今天得讲讲移植TP的东西:
注:此处TP移植讲解以移植适应“思立微”TP IC为实例,其他IC可依葫芦画瓢。
1.添加触摸屏驱动
把触摸IC供应商提供的驱动文件(rockchip_gslX680.c
;rockchip_gslX680.h)复制到kernel/drivers/input/touchscreen/下
并进行touch命令,以修改文件的时间戳。
2.修改kernel/drivers/input/touchscreen/下的Kconfig文件,在该文件定义config宏
config TOUCHSCREEN_GSLX680
tristate "gslX680 touchscreen panel support"
depends on I2C2_RK29 || I2C2_RK30
3.修改kernel/drivers/input/touchscreen/下的Makefile文件,在该文件最后添加
obj-$(CONFIG_TOUCHSCREEN_GSLX680) += rockchip_gslX680.o
4. 修改kernel/arch/arm/mach-rk2928/borad-rk2926-sdk.c文件
添加如下代码:
#if defined(CONFIG_TOUCHSCREEN_GSLX680)
#define TOUCH_RESET_PIN INVALID_GPIO //RK2928_PIN0_PD3//RK2928_PIN1_PA3
#define TOUCH_INT_PIN RK2928_PIN1_PB0
int gslx680_init_platform_hw(void)
{
//printk("ft5306_init_platform_hw\n");
if(gpio_request(TOUCH_RESET_PIN,NULL) != 0){
gpio_free(TOUCH_RESET_PIN);
printk("gslx680_init_platform_hw gpio_request error\n");
return -EIO;
}
if(gpio_request(TOUCH_INT_PIN,NULL) != 0){
gpio_free(TOUCH_INT_PIN);
printk("gslx680_init_platform_hw gpio_request error\n");
return -EIO;
}
gpio_direction_output(TOUCH_RESET_PIN, GPIO_HIGH);
mdelay(10);
gpio_set_value(TOUCH_RESET_PIN,GPIO_LOW);
mdelay(10);
gpio_set_value(TOUCH_RESET_PIN,GPIO_HIGH);
msleep(300);
return 0;
}
struct goodix_platform_data gslx680_ts_hw_info = {
.model = 8107,
// .irq_pin = RK2928_PIN1_PB0,
.rest_pin = TOUCH_RESET_PIN,
.init_platform_hw = gslx680_init_platform_hw,
};
#endif
-------------------------------------------------------------------------------------------------------------------
#if defined (CONFIG_TOUCHSCREEN_GSLX680)
{
.type = "gslx680_ts", //名字为gslx680_ts
.addr = 0x40, // i2c地址为0x40
.flags = 0,
.irq = TOUCH_INT_PIN, //指定中断脚
.platform_data = &gslx680_ts_hw_info,
},
#endif
5.在menuconfig中选中“gslX680 touchscreen panel support”选项,编译即可。
补充:Kconfig文件的作用
内核源码树的目录下都有两个文件Kconfig(2.4版本是Config.in)和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出菜单,用户选择后保存到.config的内核配置文件中。在内核编译时,主Makefile调用这个.config,就知道了用户的选择。
最近天天加班,很多博文写了一半觉得不完善,只好忍痛丢进了草稿箱。
不管其他的,今天得讲讲移植TP的东西:
注:此处TP移植讲解以移植适应“思立微”TP IC为实例,其他IC可依葫芦画瓢。
1.添加触摸屏驱动
把触摸IC供应商提供的驱动文件(rockchip_gslX680.c
;rockchip_gslX680.h)复制到kernel/drivers/input/touchscreen/下
并进行touch命令,以修改文件的时间戳。
2.修改kernel/drivers/input/touchscreen/下的Kconfig文件,在该文件定义config宏
config TOUCHSCREEN_GSLX680
tristate "gslX680 touchscreen panel support"
depends on I2C2_RK29 || I2C2_RK30
3.修改kernel/drivers/input/touchscreen/下的Makefile文件,在该文件最后添加
obj-$(CONFIG_TOUCHSCREEN_GSLX680) += rockchip_gslX680.o
4. 修改kernel/arch/arm/mach-rk2928/borad-rk2926-sdk.c文件
添加如下代码:
#if defined(CONFIG_TOUCHSCREEN_GSLX680)
#define TOUCH_RESET_PIN INVALID_GPIO //RK2928_PIN0_PD3//RK2928_PIN1_PA3
#define TOUCH_INT_PIN RK2928_PIN1_PB0
int gslx680_init_platform_hw(void)
{
//printk("ft5306_init_platform_hw\n");
if(gpio_request(TOUCH_RESET_PIN,NULL) != 0){
gpio_free(TOUCH_RESET_PIN);
printk("gslx680_init_platform_hw gpio_request error\n");
return -EIO;
}
if(gpio_request(TOUCH_INT_PIN,NULL) != 0){
gpio_free(TOUCH_INT_PIN);
printk("gslx680_init_platform_hw gpio_request error\n");
return -EIO;
}
gpio_direction_output(TOUCH_RESET_PIN, GPIO_HIGH);
mdelay(10);
gpio_set_value(TOUCH_RESET_PIN,GPIO_LOW);
mdelay(10);
gpio_set_value(TOUCH_RESET_PIN,GPIO_HIGH);
msleep(300);
return 0;
}
struct goodix_platform_data gslx680_ts_hw_info = {
.model = 8107,
// .irq_pin = RK2928_PIN1_PB0,
.rest_pin = TOUCH_RESET_PIN,
.init_platform_hw = gslx680_init_platform_hw,
};
#endif
-------------------------------------------------------------------------------------------------------------------
#if defined (CONFIG_TOUCHSCREEN_GSLX680)
{
.type = "gslx680_ts", //名字为gslx680_ts
.addr = 0x40, // i2c地址为0x40
.flags = 0,
.irq = TOUCH_INT_PIN, //指定中断脚
.platform_data = &gslx680_ts_hw_info,
},
#endif
5.在menuconfig中选中“gslX680 touchscreen panel support”选项,编译即可。
补充:Kconfig文件的作用
内核源码树的目录下都有两个文件Kconfig(2.4版本是Config.in)和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出菜单,用户选择后保存到.config的内核配置文件中。在内核编译时,主Makefile调用这个.config,就知道了用户的选择。
相关文章推荐
- Android4.1.1_r1系统移植------TP移植篇
- 深入浅出 - Android系统移植与平台开发(十四) - Sensor HAL框架分析之四
- 深入浅出 - Android系统移植与平台开发(十三)- Android的对象管理
- Android系统的移植要做的两个工作
- 深入浅出 - Android系统移植与平台开发(三)- 编译并运行Android4.0模拟器
- Android系统移植与调试之------->如何修改Android启动动画和开机声音
- 深入浅出 - Android系统移植与平台开发(六)- 为Android启动加速
- Linux 4.4内核移植以及Android系统编译
- 深入浅出 - Android系统移植与平台开发(六)- 为Android启动加速
- Android系统移植与调试之------->增加一个双击物理按键打开和关闭闪光灯并将闪光灯状态同步到下拉菜单中
- 日常笔记之Android系统下移植WIFI驱动
- Android系统移植与调试之------->安装apk时出现错误Failure [INSTALL_FAILED_DEXOPT]问题解决的方法
- 深入浅出 - Android系统移植与平台开发(1)- Android系统的定制
- android系统移植之按键驱动篇
- android系统移植(一) 总述
- android系统移植emmc记录(1) --制作SD卡启动u-boot
- 深入浅出 - Android系统移植与平台开发(八)- Android系统的本地服务
- Android系统移植主要事项
- android2.3系统成功下载编译移植到BeagleBoard上
- 2012-06-06 17:24 mpeg4ip的Mp4v2库移植到android系统上,实现h264封装到mp4的容器内