高通UEFI研究[七]

显示函数研究续

1、Display_Utils_Initialize初始化 Apps BootLoader (ABL) 接口,检查由 ABL 设置的面板覆盖(如果有)并设置将由 MDPInit 使用的参数。

void Display_Utils_Initialize(bool32 (*pSupportedDisplayList)[])
{
  Display_UtilsContextType *pDisplayContext = GET_DISPLAY_CONTEXT();

  /* initialize override flag */
  MDP_OSAL_MEMZERO(pDisplayContext, sizeof(Display_UtilsContextType));

  /* get list of supported panels & build DT info array */
  CheckTargetPanelSupport();

  /* Check panel override */
  CheckPanelOverride(pSupportedDisplayList);

}

CheckTargetPanelSupport();这个函数主要获取开发者注册的panel list和PanelCount,并调用MDP_SetBootServiceVariable将这两个panel相关信息注册为全局变量。

CheckPanelOverride(pSupportedDisplayList); //检查是否有fastboot oem select-display-panel jdi_1080p_video 命令选择的面板,同时解析命令中的":cs1" ":cs0" 附加命令。

2、Display_Utils_CheckPanelSkip解释见注释,如果选中的面板被skip了,则选择软件渲染方式

*   Check for panel override and if the overridden panel is supported in 
*   bootloader
* \retval TRUE if panel configuration is to be skipped in bootloader
3、SetupPlatformPanelConfig

这个函数大概的意思是判断 用于 强制填充(fastboot命令)的Panelid 是否储存于 已知的 Panel列表中(fastBootPanelList)。有则 使用这个参数,如果屏id is not override and it is not SW render- 选择默认面板进行加电并触发动态检测

4、MDPPLATFORM_CONFIG_POWERUP

对支持的平台类型进行上电:

  • 针对主屏,使用屏对应的上电时序   
  • 针对拓展屏,使用默认的拓展屏上电策略
  • 上下电函数定义为
  • #define MDP_PLATFORM_PANEL_FUNCTION_ENTRY2(_panelselection_, _panelgpio_, _xmlconfig_)\
  • {\
      (_panelselection_),\
      (_panelgpio_),\
      (_xmlconfig_),\
      Panel_Default_PowerUp,\
      Panel_Default_PowerDown,\
      Panel_Default_Reset,\
      Panel_Default_Peripheral_Power,\
      Panel_Default_Brightness_Enable,\
      Panel_Default_Brightness_Level\
    }

5、GetPmicIBBLABMode

这个函数用来判断

MDP_PMIC_MODULE_CONTROLTYPE_IBB_LAB_LCD

MDP_PMIC_MODULE_CONTROLTYPE_IBB_LAB_OLED

6、显示屏初始化 MDPInit()
分配 DSI 和 I2C 相关的缓存内存资源
检查是否配置了bSWRender 软件渲染,
如果没有配置,则获取平台信息,是硬件初始化
检查在ABL中是否有对屏幕配置覆盖,或者是否支持 硬件屏幕,判断条见为 gPanelList 数组内容是否为空
初始化 MDP HAL,配置 MMU
如果不支持硬件屏幕,或者屏幕检测失败,则配置为软件渲染
7、MDPPlatformConfigure(eDisplayId, MDPPLATFORM_CONFIG_GETPANELCONFIG, &sPlatformParams)  从flash读取xml配置文件

8、XML_Parser(sPlatformParams.sPlatformPanel.pPanelXMLConfig, sPlatformParams.sPlatformPanel.uConfigSize, sXmlTagsList, XML_TAGSLIST_LENGTH)解析上面函数读取到的xml

9、pPanelInfo->eSelectedPanel动态获取到的当前Panel

10、if( (0x00 == pDsiMapping[0]) && (0x01 == pDsiMapping[1]))判断当前是否为dual DSI panel

11、DisplayDxe_SetMode --> MDPSetMode --> MDPSetupPipe--> MDPPanelInit --> DSIDriver_SetMode --> send init sequence

12、gDxeModeInfo.hDispThread = ThreadCreate ("Disp", &SetModeThread, 0, UEFI_THREAD_PRIORITY + 1, DEFAULT_STACK_SIZE * 3)  //创建SetModeThread

ThreadDetach (gDxeModeInfo.hDispThread);分离线程
ThreadResume (gDxeModeInfo.hDispThread);线程运行

13、DisplayDxe_SetMode 配置mdp a new source surface and/or cropping rectangle,执行复位屏,初始化屏,设置背光等功能。

14、DsiPanelInit 初始化DSI Clocks and timing initialization,复位屏()MDPPlatformConfigure(pPanelInfo->eDisplayId, MDPPLATFORM_CONFIG_RESETPANEL, &sMDPPlatformParam)

15、DSIDriver_SetMode根据xml里面的分辨率,porch dsc参数等初始化dsi core

16、MDPUpdateCoreClockAndBandwidth// Dynamically update core clock and bandwidth to meet requirement of fps > 60Hz

17、Display_Utils_SetPanelConfiguration(eDisplayId);// Update ABL with selected panel info

18、MDPSetProperty(eDisplayId, MDP_DISPLAY_PROPERTY_BACKLIGHT, &sDisplayProp);//调用MDPPlatformConfigure(eDisplayId, MDPPLATFORM_CONFIG_SETBACKLIGHT, &sPlatformParams)配置背光

19、MDPSetProperty(eDisplayId, MDP_DISPLAY_PROPERTY_FIRMWAREENV, NULL);// Populate the display environment information, used to inform the OS driver of firmware state.

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
高通UEFI高通公司为了支持其处理器和芯片组在Android设备上的引导和初始化而开发的软件模块。UEFI(统一扩展固件界面)是一种新型的固件标准,取代了过去的BIOS(基本输入输出系统)。高通UEFI开发Android开发文档主要提供了有关在使用高通处理器和芯片组的Android设备上进行开发的指导和说明。 该文档首先介绍了如何正确设置开发环境,包括安装必要的软件和驱动程序。接着,文档介绍了高通UEFI的架构和工作原理,包括引导流程、启动流程和初始化过程。开发人员可以深入了解UEFI在Android设备上的作用和功能。 文档还提供了如何进行UEFI开发的具体指导,包括如何编写UEFI应用程序、如何调试和测试UEFI应用程序以及如何进行项目集成等。针对不同的开发需求,文档也提供了各种开发和定制UEFI的选项和工具,使开发人员能够根据实际情况进行灵活的开发和调试。 此外,文档还包含了一些实际案例和示例代码,帮助开发人员更好地理解如何使用高通UEFI开发Android设备,并且提供了一些常见问题和解决方案以供参考。 总而言之,高通UEFI开发Android开发文档为开发人员提供了一个全面的指南,帮助他们理解和应用高通UEFI在Android设备上的开发和定制。通过这些文档,开发人员可以更加有效地利用高通UEFI提供的功能和特性,为Android设备开发出更加稳定和高性能的引导和初始化软件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值