本帖最后由 星空 于 2024-11-5 20:24 编辑
XBL LCD bringup 配置 为什么从xbl开始,因为xbl的编译速度快能快速调整参数是屏幕亮起来.
屏幕xml 文件客制化
进入路径 BOOT.MXF.2.0/boot_images/boot/QcomPkg/Settings/Panel/,参考高通默认屏 xml文件,复制一个文件后,重新命名(一般命名以屏 IC+分辨率+模式).
eg: Panel_HX8399_1080p_vid.xml,
客制化屏参数获取与替换
联系屏幕的供应商获取该屏幕的说明书和参数:分辨率、 Porch 值、 SyncPulse、初始化参数, 刷新率、 复位引脚时序.并且在xml文件中替换参数
添加屏名称和面板xml 文件位置到 flash 布局文件
BOOT.MXF.2.0/boot_images/boot/QcomPkg/SocPkg/Clarence/Common/Core.fdf
增加 OEM 面板到uefiDphyPanelList
BOOT.MXF.2.0/boot_images/boot/QcomPkg/SocPkg/Clarence/Library/MDPPlatformLib/MDPPlatformLibPanelConfig.c
这里是兼容多个屏幕的地方,根据入到的id来计算,如果不需要兼容,或者id不知道,则只设置1个屏幕.把宁外一个屏幕删除
添加 fastboot 列表
1 BOOT.MXF.2.0/boot_images/boot/QcomPkg/SocPkg/Clarence/Library/MDPPlatformLib/MDPPlatformLibPanelConfig.c
2 其中字段“qcom,mdss_dsi_HX8399_1080p_video” 为 kernel 匹配字段,后续的 kernel DTS 中&mdss_mdp 下 dsi_HX8399_1080p_video 节点名保持其完全一致,才能实现 XBL 到kernel 的匹配和传递。在sPhysicalPanelConfigTable里面添加如下
客制化屏为默认启动屏
BOOT.MXF.2.0/boot_images/boot/QcomPkg/SocPkg/Clarence/Library/MDPPlatformLib/MDPPlatformLibPanelCommon.h
修改屏幕的上电,背光等
1 定义gpio脚
BOOT.MXF.2.0/boot_images/boot/QcomPkg/SocPkg/Clarence/Library/MDPPlatformLib/MDPPlatformLibPanelCommon.h
2 拉高上电 GPIO
BOOT.MXF.2.0/boot_images/boot/QcomPkg/SocPkg/Clarence/Library/MDPPlatformLib/MDPPlatformLibPanelCommon.c
在函数 Panel_LCD_PowerUp 中修改的代码配置如下
/* LCD bias pin */ if (EFI_SUCCESS !=TLMMProtocol->ConfigGpio((UINT32)EFI_GPIO_CFG(Default_DISP_LCD_BIAS_EN, 0,GPIO_OUTPUT, GPIO_PULL_UP, GPIO_16MA), TLMM_GPIO_ENABLE)) { DEBUG((EFI_D_WARN, "DisplayDxe:Configure GPIO %d for Default_DISP_LCD_BIAS_EN failed!\n",Default_DISP_LCD_BIAS_EN)); }
if (EFI_SUCCESS !=TLMMProtocol->GpioOut((UINT32)EFI_GPIO_CFG(Default_DISP_LCD_BIAS_EN, 0,GPIO_OUTPUT, GPIO_NO_PULL, GPIO_16MA), GPIO_HIGH_VALUE)) { DEBUG((EFI_D_WARN, "DisplayDxe: SetDefault_DISP_LCD_BIAS_EN line high failed!\n")); }
MDP_OSAL_DELAYMS(10);
3 添加分辨率到添加分辨率到 mSimpleConsoleModeData 注意:这里只有qcom4490需要这个,其他平台不需要这个. 确认屏幕分辨率 计算参数 [Horizontal/8, Vertical/19] //计算公式 1080/8=135; 1920/19=101; BOOT.MXF.2.0/boot_images/boot/QcomPkg/Drivers/SimpleTextInOutSerialDxe/SimpleTextInOut.c 高通在 UEFI 的控制台中为分辨率添加了参数, DBS 未找到这个参数,就会触发 ASSERT, dump log 如下 ERROR: C90000002:V03000007 I0 408EDCEC-CF6D-477C-A5A8-B4844E3DE281 ASSERT ConSplitter.c +3102: !(((INTN)(RETURN_STATUS)(Status)) < 0) 到这里屏幕uefi应该能点亮
|