安卓5.1源码 lcd驱动移植
来源:互联网 发布:ubuntu忘记root密码 编辑:程序博客网 时间:2024/05/15 02:06
Kernel部分:/kernel-3.10/drivers/misc/mediate/lcm
#define FRAME_WIDTH (720)#define FRAME_HEIGHT (1280) //分辨率修改 static structLCM_setting_table lcm_initialization_setting[] = { //初始化代码修改为p43厂商给的初始化代码;} static voidinit_lcm_registers(void){ //寄存器函数删除掉;} static struct LCM_setting_tablelcm_sleep_out_setting[] = { //Sleep Out {0x11, 1, {0x00}}, {REGFLAG_DELAY, 120, {}}, // Display ON {0x29, 1, {0x00}}, {REGFLAG_DELAY, 20, {}}, {REGFLAG_END_OF_TABLE, 0x00, {}}}; static struct LCM_setting_tablelcm_deep_sleep_mode_in_setting[] = { // Display off sequence {0x28, 1, {0x00}}, {REGFLAG_DELAY, 20, {}}, // Sleep Mode On {0x10, 1, {0x00}}, {REGFLAG_DELAY, 120, {}}, {REGFLAG_END_OF_TABLE, 0x00, {}}}; static void lcm_get_params(LCM_PARAMS*params){ memset(params,0, sizeof(LCM_PARAMS)); params->type = LCM_TYPE_DSI; params->width = FRAME_WIDTH; params->height= FRAME_HEIGHT; //enable tearing-free params->dbi.te_mode =LCM_DBI_TE_MODE_VSYNC_ONLY; params->dbi.te_edge_polarity = LCM_POLARITY_RISING; #if (LCM_DSI_CMD_MODE) params->dsi.mode = CMD_MODE;#else params->dsi.mode =SYNC_PULSE_VDO_MODE; //SYNC_PULSE_VDO_MODE;//BURST_VDO_MODE; //params->dsi.mode = BURST_VDO_MODE;#endif //DSI /*Command mode setting */ params->dsi.LANE_NUM =LCM_FOUR_LANE; //这句函数对应你的lcd修改 params->dsi.data_format.format =LCM_DSI_FORMAT_RGB888; //videomode timing params->dsi.PS=LCM_PACKED_PS_24BIT_RGB888; //前后阶参数查看datashift;params->dsi.vertical_sync_active = 10; //8; //2;params->dsi.vertical_backporch = 20;//18; //14;params->dsi.vertical_frontporch = 10;//20; //16; params->dsi.vertical_active_line =FRAME_HEIGHT; params->dsi.horizontal_sync_active = 40; //2;params->dsi.horizontal_backporch =100;//120; //60; //42;params->dsi.horizontal_frontporch = 80;//100; //60; //44;params->dsi.horizontal_active_pixel = FRAME_WIDTH; params->dsi.PLL_CLOCK= 175;//208; 210 //查看datashift;}void lcm_display_on(void){ //去掉这段函数;}static void lcm_init(void){ SET_RESET_PIN(1); MDELAY(10); SET_RESET_PIN(0); MDELAY(10); SET_RESET_PIN(1); MDELAY(120); push_table(lcm_initialization_setting,sizeof(lcm_initialization_setting) / sizeof(struct LCM_setting_table), 1); (init_lcm_registers(); lcm_display_on();) //去掉这两句; LCD_DEBUG("uboot:boe_nt35521_lcm_init\n");}static structLCM_setting_table lcm_backlight_level_setting[] = { //去掉这段函数;}static voidlcm_setbacklight(unsigned int level){ //去掉这段函数;}static unsigned int lcm_compare_id(void){ //本函数最后返回了一个ID屏蔽掉这一句; return (ID == 0x9881)?1:0;}
Lk:bootable/bootloader/lk/dev/lcm
Lk修改方法和kernel修改方法相同但是注意lk修改的地方尽量在lk里面去修改kernel修改的地方也在kernel里面去修改切不可同文件互用。
lk:
在内核目录下bootable/bootloader/lk/dev/lcm/下存放的是各种lcm厂商的lcm驱动,其中也有一个mt67xx_lcm_list.c文件,里面定义了所有的lcm驱动)
1.移植是首先要在lcm/目录下建立一个所移植的那个lcm屏的目录文件夹,目录文件夹名字选取是根据你所定义的设备名统一。
2.在建的这个目录下添加lcm驱动和makefile文件,如果你有lcm驱动就放在这个目录下,如果没有,就找lcm目录下其他的lcm驱动文件夹中的.c文件进行修改后放在此目录下
3.准备工作做好后,修改文件主要有几个,一个是mt67xx_list.c:
在这个文件中加入你所添加的驱动定义:格式和方法参照文件中其他lcm的定义。
另一个是bootable/blltloader/lk/project/这个目录下有你编译的工程文件(就是你lunch的时候选取的那个文件,Project.mk).mk文件,
在这个文件下主要修改的是CUSTOM_LK_LCM、和BOOT_LOGO,把这两个修改成你移植的对应的参数,CUSTOM_LK_LCM要和你的文件名,目录名,还有你的.c文件中的.name变量的值统一。logo,以及lcm屏的宽、高,看lcm数据手册。
kernel:
kernel/drives/misc/mediatek/lcm/....在这个目录下加入和lk当时候加入的是一样的。直接拷贝过来就可以。同样修改mt67xx_lcm_list.c文件
kernel-3.10/arch/arm64/configs/..目录下是:工程名_debug_defconfig,和对应:工程名_defconfig这两种文件,其中后缀是debug_defconfig的文件是eng对应的,而defconfig是user对应的。
(在我们的lunch所打印出来的工程中有三种后缀,eng(调试工程)、user(用户工程)、userdebug,进入这个文件后,反斜杠搜索/CONFIG_CUSTOM_KERNEL_LCM 然后修改对应的名称和分辨率。
注:以上只是个人意见也可自行修改,亲测成功!
- 安卓5.1源码 lcd驱动移植
- LCD驱动移植笔记
- 移植LCD驱动
- 6410 LCD驱动移植
- 6410 LCD驱动移植
- LCD驱动的移植
- LCD驱动移植
- LCD 背光驱动移植
- OK6410 LCD驱动移植
- LCD驱动移植
- Wince LCD驱动移植
- wince lcd驱动移植
- s5pv210 LCD驱动移植
- AM1808 LCD驱动移植
- s3c2440 lcd驱动移植
- <八> LCD 驱动移植
- LCD驱动移植
- LCD驱动移植
- 让OkHttp3 也能缓存Post 请求
- 安卓类——Bundle类
- Android中长按监听的使用
- iOS数据库 创建事物插入 一条条插入非常耗时
- shell 脚本判断文件、文件夹是否存在
- 安卓5.1源码 lcd驱动移植
- 桌面小火箭的实现逻辑
- 基于dragonboard 410c的智能魔镜设计(1)——整体方案设计
- awk命令
- iOS 在一个屏幕中根据不同的按钮创建不同的 view
- CSS 选择器中,元素选择器和类选择器的区别是什么?
- 嵌入式 linux 去掉启动时闪烁的光标 和制作启动LOGO
- 关机时执行指定脚本
- ipv6审核被拒绝的解决方案