The UEFI workflow is as follows:
1. Set default panel
2. Preconfigure MDP-related register and setup SMMU
3. Display Dxe set mode
4. Initialize DSI-Phy and Ctrl
5. Initialize TG/PP and panel
6. Display splash logo and exit UEFI
The UEFI workflow is as follows:
1. Set default panel
2. Preconfigure MDP-related register and setup SMMU
3. Display Dxe set mode
4. Initialize DSI-Phy and Ctrl
5. Initialize TG/PP and panel
6. Display splash logo and exit UEFI
The kernel bringUp in 80-PV988-84 Rev
Following sections provide the call flow for each of the above steps
The following figure shows the workflow of display panel bringup in UEFI.
NOTE For Android devices, bring up the panel in the Linux kernel
before the panel bringup in the UEFI.
1: Start
2: Prepare panel data in one xml file per panel using existing MTP/CDP panel as reference.
3: Modify XML data with panel init command, resolutions, timings and so on based on panel specifications.
4: Define and configure panel GPIOs and regulators to reset panel, refer to Panel_CDP_PowerUP and Panel_CDP_PeripheralPower.
5: Modify MDPPlatformConfigure ()
MDPPLATFORM_CONFIG_POWERUP to connect platform panel to its reset functions.
6: Build and flash
Display comes up?
7: if NO ->Debug No-> to start
if Yes -> Enable continuous splash
8: end
2.1.2 For boot version BOOT.XF.3.0 and later versions
2.1.2.1 Prepare the XML file for panel configuration
1. Prepare the XML data by referring to examples at <>/QcomPkg/Settings/Panel/*.xml
The examples for panel, its resolution, and respective XML data is listed in the following table
2. Modify the panel configuration based on the panel specifications and the UEFI XML format and save the XML file at <>/QcomPkg/Settings/Panel/*.xml
For details on all the configuration parameters related to display, see Display Drivers (ACPI and XML) Configuration Guide (80-NB116-2). The same XML syntax is shared between Windows ACPI and Linux Android UEFI display drivers
3. Add the panel name and panel xml file location to flash layout file at: <>/QcomPkg/SocPkg/<ChipsetName>/Common/Core.fdf
For example,
#
# Display panel configuration xml
#
FILE FREEFORM = 8cae2c55-fc5a-410b-812b-8ca22f572f36 {//uuid
SECTION UI = "Panel_truly_wqxga_dsc_cmd.xml"
SECTION RAW = QcomPkg/Settings/Panel/Panel_truly_wqxga_dsc_cmd.xml
}
4. Add panel type to MDPPlatformLibPanelConfig file <>/QcomPkg/SocPkg/<ChipsetName>/Library/MDPPlatformLib/MDPPlatformLibPanelConfig.h
MDPPlatformPanelFunctionTable
a. Add new platform and panel xml in header files. For example,
{
MDPPLATFORM_PANEL_AUO_1080P_EDP, // ePanelSelected
"Panel_auo_1080p_edp.xml", // pPanelXmlConfig
Panel_CLS_PowerUp, // pPanel_PowerUp
Panel_CLS_PowerDown, // pPanel_PowerDown
Panel_CLS_Reset, // pPanel_Reset
Panel_CLS_Peripheral_Power, // pPanel_Peripheral_Power
Panel_CLS_Brightness_Enable, // pPanel_Brightness_Enable
Panel_CLS_Brightness_Level // pPanel_Brightness_Level
},
b. Add new platform power/peripheral/backlight control functions under <>/QcomPkg/SocPkg/<ChipsetName>/Library/MDPPlatformLib/MDPPlatformLibPanelEdp.c. For
example,
MDP_Status Panel_CLS_PowerUp(MDP_Display_IDType eDisplayId,
Panel_PowerCtrlParams *pPowerParams){...}
MDP_Status Panel_CLS_PowerDown(MDP_Display_IDType eDisplayId,
Panel_PowerCtrlParams *pPowerParams){...}
MDP_Status Panel_CLS_Peripheral_Power(MDP_Display_IDType eDisplayId,
Panel_PowerCtrlParams *pPowerParams, bool32 bPowerUp){...}
MDP_Status Panel_CLS_Brightness_Enable(MDP_Display_IDType eDisplayId,
Panel_PowerCtrlParams *pPowerParams){...}
MDP_Status Panel_CLS_Brightness_Level(MDP_Display_IDType eDisplayId,
BacklightConfigType *pBacklightConfig){...}
MDP_Status Panel_CLS_Reset(MDPPlatformPanelResetInfo *pResetInfo){...}
5. Add OEM panel to uefiPanelList[0] and define its detection parameters at:<>/ QcomPkg/SocPkg/<ChipsetName>/Library/MDPPlatformLib/MDPPlatformLib.c
For example,
const MDPPlatformPanelType uefiPanelList[] =
{
MDPPLATFORM_PANEL_SHARP_4K_DSC_CMD, /* NT35950 4k
command panel DSC mode */
MDPPLATFORM_PANEL_SHARP_4K_DSC_VIDEO, /* NT35950 4k
video panel DSC mode */
MDPPLATFORM_PANEL_TRULY_WQXGA_DSC_CMD, /* Truly 2k cmd
panel DSC mode single dsi */
MDPPLATFORM_PANEL_TRULY_WQXGA_DSC_