初始化流程
在 menuconfig 中使能 LVDS 显示接口和 simple panel 后,显示驱动的初始化过程如下:

DE 和 DI 匹配
DI 在 menuconfig 配置时进行选择,三个显示接口只能使能一个。DE, DI 的 driver
会被存放在一个指针数组中。
static struct platform_driver *drivers[] = {
#ifdef AIC_DISP_DE_DRV
&artinchip_de_driver,
#endif
#ifdef AIC_DISP_RGB
&artinchip_rgb_driver,
#endif
#ifdef AIC_DISP_LVDS
&artinchip_lvds_driver,
#endif
#ifdef AIC_DISP_MIPI_DSI
&artinchip_dsi_driver
#endif
#ifdef AIC_DISP_MIPI_DBI
&artinchip_dbi_driver
#endif
};通过 component_type 来适配 menuconfig 指定的 driver。
panel 的匹配
panel_com.c 维护了一个 panel
的指针数组。static struct aic_panel *panels[] = {
#ifdef AIC_DISP_RGB
&aic_panel_rgb,
#endif
#ifdef AIC_DISP_LVDS
&aic_panel_lvds,
#endif
#ifdef AIC_PANEL_DSI_XM91080
&dsi_xm91080,
#endif
};通过 struct aic_panel *aic_find_panel(u32 connector_type)
即可获取一个跟显示接口匹配的 LCD panel。
在 menuconfig 中选择 panel 时,只能使能其中一个。
panel_simple.c 为不需要初始化命令的 LCD 提供 panel,例如:常用的 prgb, lvds 屏幕。
backlight
Luban-Lite 提供两种方式控制背光:
-
GPIO
-
PWM
在 menuconfig 中配置 backlight,详情参考 背光配置。
