edk2 lcd display 代码流程

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

                        

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值