This article was reproduced from: http://blog.csdn.net/kris_fei/article/details/52584903
platform:rk3288
Os:android 6.0
kernel:3.10.92
Take the LCD with the MIPI DSI interface as an example.
RK_SCREEN.C:
Read the LCD timing parameter.
LCD_MIPI.C:
Screen MIPI configuration information.
RK_FB.C:
FB Drive.
RK3288_LCDC.C
LCDC controller driver.
RK32_MIPI_DSI.C:
DSI controller driver.
MIPI_DSI.C
MIPI DSI operating set of functions.
Power on is performed in the following order.
//mipi DSI Interface Related information initialization
Rk_mipi_screen_init-LCD_MIPI.C
Platform_driver_probe-//name is Rk_mipi_screen
Rk_mipi_screen_probe
RK_MIPI_SCREEN_INIT_DT//Read MIPI information, Lane number, power, Gpio, Sceen on Cmds.
//FB Related Information read
Rk_fb_init-RK_FB.C
Platform_driver_register,//name: "ROCKCHIP,RK-FB"
Rk_fb_probe//Get Disp-mode, u-boot-logo-on and other parameters.
Rockchip_ion_client_create//Create ion client.
//timing Initialization of parameters
The timing parameters of the LCD,LCD of the interface type are to be read.
Rk_screen_init-RK_SCREEN.C
Platform_driver_register,//name: "Rk-screen"
Rk_screen_probe
RK_FB_PRASE_TIMING_DT///read configuration exists in the structure variable rk_screen.
Of_get_display_timing//Get timing parameters, you can configure multiple groups in DTS, which is read in a loop.
Display_timings_get//Select which set of timing parameters are currently used according to the current Native-mode.
Rk_fb_video_mode_from_timing//Convert the timing to FB video mode for subsequent use.
//MIPI DSI Controller Initialization
If it is a different interface, then the corresponding interface controller driver is called to initialize.
Rk32_mipi_dsi_init-RK32_MIPI_DSI.C
Platform_driver_register,//name: "Rk32-mipi"
Rk32_mipi_dsi_probe//Initialize the struct DSI structure, including clock, DSi OPS, Rk_screen pass over parameters,
Rk_fb_get_prmry_screen//Gets the Rk_screen variable initialized in the previous rk_screen_probe ().
Rk_mipi_dsi_probe
Register_dsi_ops//dsi->ops to Dsi_ops
Dsi_probe_current_chip//Check car DSI chip is present.
Rk_fb_trsm_ops_register//Registered Trsm_mipi_ops for Trsm_dsi_ops
//LCDC Controller Registration:
Rk3288_lcdc_module_init-RK3288_LCDC.C
Platform_driver_register,//name: "RK3288-LCDC"
Rk3288_lcdc_probe
RK3288_LCDC_PARSE_DT//Read parameters of the LCDC controller
Dev_drv->ops = &lcdc_drv_ops; LCDC corresponding Ops
DEVM_REQUEST_IRQ//LCDC corresponding IRQ is RK3288_LCDC_ISR ()
Rk_fb_register//For OPS is Lcdc_drv_ops
Init_lcdc_device_driver
Init_lcdc_win//A LCDC can support 4 layer win.
RK_DISP_PWR_CTR_PARSE_DT//Parse LCDC power CTRL related content.
Rk_fb_set_prmry_screen
Rk_fb_trsm_ops_get//Select the appropriate OPS according to the different screen types.
Framebuffer_alloc//system based on how much of win to create the corresponding number of FB
Fbi->fbops = &fb_ops; FB Ops
RKFB_CREATE_SYSFS//Generate to/dev/graphics/fbx/
Register_framebuffer
Rkfb_create_sysfs
The following code runs only once
Kthread_run//Create Rk_fb_wait_for_vsync_thread
Dev_drv->ops->post_dspbuf//show logo
[RK3288] [Android6.0] Display driver initialization process summary "Go"