* 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/