* DisplayDxe_SetMode --> MDPSetMode --> MDPSetupPipe
* --> MDPPanelInit --> DSIDriver_SetMode --> send init sequence
|-- DisplayDxeInitialize()[DisplayDxe.c]
|-- gBS->CreateEvent(DisplayDxeExitBootServicesEvent)
|-- gBS->CreateEventEx(BlockIoCallback)
|-- gBS->CreateEventEx(UIActiveEventCallBack)
|-- gBS->CreateEventEx(UIIdleEventCallBack)
|-- DisplayPwr_InitLPMSupport(TRUE)
|-- MDPSetProperty(MDP_DISPLAY_PROPERTY_ABL_INTERFACE_INIT)
|-- Display_Utils_Initialize()[MDPLib.c]
|-- CheckTargetPanelSupport()
|-- CheckPanelOverride()
|-- MDPInit(MDP_INIT_FLAG_MMU_INIT)
|-- MDPPower()
|-- if(bPowerOn) MDPPlatformConfigure(MDPPLATFORM_CONFIG_POWERUP)[MDPLib.c]
|-- pPanel_PowerUp()
|-- Panel_Default_PowerUp()
|-- PlatformClientInit()
|-- ConfigGpio()
|-- pPanel_Peripheral_Power()
else MDPPlatformConfigure(MDPPLATFORM_CONFIG_POWERDOWN)
|-- MDPDetect(MDP_DISPLAY_PRIMARY)
|-- MDPDetectPanel()
|-- XML_UpdateTag("DSIInitSequence")
|-- XML_UpdateTag("DSITermSequence")
|-- XML_UpdateTag("I2CInitSequence")
|-- XML_UpdateTag("I2CTermSequence")
|-- MDPPlatformConfigure(MDPPLATFORM_CONFIG_GETPANELCONFIG)
|-- SwitchPanelId()
|-- gBS->LocateProtocol(&gEfiTLMMProtocolGuid)
|-- FindPanelIndex()
|-- GetPanelXmlConfig()
|-- XML_Parser(&sXmlTagsList)
|-- Display_Utils_SetPanelConfiguration()
|-- UpdatePanelConfiguration()
|-- UpdateDisplayParams()
|-- MDPPlatformConfigure(MDPPLATFORM_CONFIG_GETPANELSUPPORTFLAGS)
|-- MDP_SetBootServiceVariable(DISPVAR_PANEL_CONFIGURATION)
|-- DisplayDxeSelectMode()
|-- MDPSetProperty(MDP_DISPLAY_PROPERTY_POWER_STATE)
|--
|-- gBS->InstallMultipleProtocolInterfaces()
|-- GetConfigValue("EnableDisplayThread")
|-- SetModeThread("disp")
|-- DisplayDxe_SetMode()[DisplayDxe.c]
|-- MDPSetMode(MDP_DISPLAY_PRIMARY)[MDPLib.c]
|-- if(Display_Utils_CheckPanelSkip())
|-- MDP_GET_DISPLAYINFO()
|-- MDPSetGPIOState()[]
|-- MDPPlatformConfigure(MDPPLATFORM_CONFIG_SETGPIOSTATE)[MDPPlatformLib.c]
|-- PlatformConfigRemap()
|-- SetDefaultGPIOState()
|-- gBS->LocateProtocol(&gEfiTLMMProtocolGuid)
|-- ConfigGpio()
|-- GpioOut()
|-- MDPSetupPipe()[MDPConfig.c]
|-- MDPPanelInit()[MDPPanel.c]
|-- DsiPanelInit()[dsiDriver.c]
|-- DSIDriver_Init()[dsiDriver.c]
|-- MDPSetupClocks()[..]
|-- gBS->LocateProtocol()[]
|-- DSI_Device_Open()
|-- I2CDriver_Init()
|-- MDPPlatformConfigure(MDPPLATFORM_CONFIG_RESETPANEL)
|-- sMDPPlatformPanelFunction.pPanel_Reset()[MDPPlatformLibPanelConfig.h]
|-- Panel_Default_Reset()[MDPPlatformLibPanelCommon.c]
|-- gBS->LocateProtocol(&gEfiTLMMProtocolGuid)
|-- TLMMProtocol->ConfigGpio(uResetGpio)
|-- DSIDriver_SetMode()[dsiDriver.c]
|-- DSI_Display_Open
|-- DSI_Display_Commit()
|-- dsiShared_Comit()
|-- dsiShared_DeviceHandle2Id()
|-- DSIHOST_GET_USERCTX()
|-- HAL_DSI_ClockConfig()
|-- dsiShared_CommitVideoModeConfig()
|--
|-- DSI_Display_SetProperty(DSI_DISPLAY_PROPERTYID_SETSCRATCH1)
|-- DSI_Display_SetProperty(DSI_DISPLAY_PROPERTYID_LANESTATE)
|-- SendPanelXMLSequence(pInitBuffer)
|--
|-- MDPStartPipe()
|-- HAL_MDP_Interface_Enable()
|-- MDPPanelSendCommandSequence(MDP_PANEL_COMMAND_INIT)[MDPPanel.c]
|--DsiPanelSendCommandSequence()[dsiDriver.c]
|-- SendPanelXMLSequence()
|-- DSI_Display_GetProperty()
|-- DSI_Display_ClientWrite()
|-- MDPPanelSendCommandSequence(MDP_PANEL_COMMAND_PPS)
|--
|-- GetChargerPowerStatus()
|-- gBS->LocateProtocol(&gChargerExProtocolGuid)
|--
|-- MDPSetProperty(MDP_DISPLAY_PROPERTY_BACKLIGHT)[MDPLib.c]
|-- MDPPlatformConfigure(MDPPLATFORM_CONFIG_SETBACKLIGHT)[MDPPlatformLib.c]
|-- pPanel_Brightness_Enable()[MDPPlatformLibPanelConfig.h]
|-- Panel_Default_Brightness_Enable()[MDPPlatformLibPanelCommon.c]
|-- gBS->LocateProtocol(&gQcomPmicGpioProtocolGuid()
|-- ConfigDigitalOutput()
|-- PMICPWMProtocol->PwmConfig()
|-- MDPSetProperty(MDP_DISPLAY_PROPERTY_FIRMWAREENV)
reference to:
https://www.programmersought.com/article/57332096500/
https://www.codeleading.com/article/29811438853/