栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

全志A133 uboot的显示流程

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

全志A133 uboot的显示流程

//u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_display.c
LCD_OPEN_FUNC()
	lcd->set_open_func()
		//"u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.c
		disp_lcd_set_open_func

//u-boot-2018/common/board_r.c
	board_init_r
		initcall_run_list(init_sequence_r)
			//u-boot-2018/board/sunxi/board_common.c
			board_early_init_r
				initr_sunxi_display	 //这里如果定义了CONFIG_DISP2_SUNXI就会进入屏幕初始化流程
					get_boot_work_mode   //这里会读取USB工作状态,如果系统进入烧写模式,会直接跳出initr_sunxi_display函数
						//u-boot-2018/drivers/video/sunxi/disp2/disp/dev_disp.c
						drv_disp_init
							//u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_display.c			
							bsp_disp_init			
								//u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.c
								disp_init_lcd
									lcd->init(lcd)
										disp_lcd_init
											lcd_parse_panel_para //获取设备树的屏参数据
								disp_init_hdmi
								disp_init_edp						
			board_late_init		
				axp_battery_status_handle
					//u-boot-2018/board/sunxi/power_manage.c
					sunxi_bat_low_vol_handle
						disp_ioctl	//这里如果定义了CONFIG_DISP2_SUNXI就会进入屏幕初始化流程
							//u-boot-2018/drivers/video/sunxi/disp2/disp/dev_disp.c
							drv_lcd_enable
								drv_lcd_open_callback  //回调函数,通过add_timer定时器轮询执行屏驱动里的函数(即下面的LCD_OPEN_FUNC),这里要在uboot结束前轮询完所有函数,如果不能轮询完就会有点不亮屏的问题,因此这个delay时间很关键
									lcd_timer[sel].expires = flow->func[i].delay;
									add_timer(&lcd_timer[sel]);
										bsp_disp_lcd_get_open_flow
											//u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_display.c
											disp_get_lcd
												//u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.c
												bsp_disp_feat_get_num_screens
											lcd->get_open_flow
												//u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.c
												disp_lcd_get_open_flow							
													//u-boot-2018/drivers/video/sunxi/disp2/disp/lcd/k101im2byl02l.c						
													LCD_open_flow  //.cfg_open_flow=LCD_open_flow
														LCD_OPEN_FUNC(sel, LCD_power_on, 100);   //这里的100即为add_timer定时器的delay时间 
															lcd->set_open_func()
																//u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.c
																disp_lcd_set_open_func
																	lcdp->open_flow.func[lcdp->open_flow.func_num].func = func;
																	lcdp->open_flow.func[lcdp->open_flow.func_num].delay = delay; //将delay传给add_timer定时器
																	lcdp->open_flow.func_num ++;
														LCD_OPEN_FUNC(sel, LCD_panel_init, 200);      
														LCD_OPEN_FUNC(sel, sunxi_lcd_tcon_enable, 50);
														LCD_OPEN_FUNC(sel, LCD_bl_open, 0);           
															

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675560.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号