//linux-3.4/drivers/video/sunxi/disp/dev_disp.c
disp_module_init
//linux-3.4/drivers/video/sunxi/disp/dev_disp.c
disp_probe
s32 DRV_DISP_Init(void)
bsp_disp_init(¶);
//linux-3.4/drivers/video/sunxi/disp/de/disp_display.c
disp_init_lcd(para);
//linux-3.4/drivers/video/sunxi/disp/de/disp_lcd.c
disp_init_lcd
switch(screen_id) //设置lcd->channel_id等
lcd->xxx = disp_lcd_xxx //保存一些函数到struct disp_lcd *lcd;
lcd->pre_enable = disp_lcd_pre_enable->disp_al_lcd_cfg()//将屏参写入寄存器
lcd->init(lcd);//即运行disp_lcd_init
disp_lcd_init(struct disp_lcd* lcd)
lcd_get_sys_config(lcd->channel_id, &lcdp->lcd_cfg) //lcd使能
lcd_parse_panel_para(lcd->channel_id, &lcdp->panel_info)//从sys_config.fex读取屏参 ,panel_info保存了屏参
lcd_panel_parameter_check(u32 screen_id, struct disp_lcd* lcd)
sprintf(primary_key, "lcd%d_para", lcd->channel_id);
s32 start_process(void)
Fb_Init();
//linux-3.4/drivers/video/sunxi/lcd/dev_lcd.c
lcd_module_init
lcd_init
sunxi_disp_get_source_ops
//linux-3.4/drivers/video/sunxi/lcd/lcd_panel_cfg.c
LCD_set_panel_funs() //遍历所有屏的配置函数
start_work
//linux-3.4/drivers/video/sunxi/disp/dev_disp.c
drv_lcd_enable(screen_id)
//drivers/video/sunxi/disp/de/disp_display.c
bsp_disp_lcd_pre_enable
if(lcd && lcd->pre_enable);//lcd->pre_enable即运行disp_lcd_pre_enable
//linux-3.4/drivers/video/sunxi/disp/de/disp_lcd.c
disp_lcd_pre_enable
//linux-3.4/drivers/video/sunxi/disp/de/lowlevel_sun8iw5/disp_al.c
disp_al_lcd_cfg
//linux-3.4/drivers/video/sunxi/disp/de/lowlevel_sun8iw5/de_dsi.c
dsi_cfg
dsi_basic_cfg //设置lcd_parse_panel_para函数里面提取的屏参
lcdp->lcd_panel_fun.cfg_open_flow
flow->func[i].func(sel) //轮询执行1.2.3.4函数
//drivers/video/sunxi/lcd/panels/sl698ph_720p.c
1.LCD_power_on
2.LCD_panel_init //控制resetGPIO,并下发指令
3.sunxi_lcd_tcon_enable
4.LCD_bl_open
sunxi_lcd_pwm_enable //打开背光
sunxi_lcd_backlight_enable
bsp_disp_lcd_get_open_flow(sel)
bsp_disp_lcd_post_enable(sel)