UEFI XBL 点亮LCD 流程

1.复制修改QcomPkg/Settings/Panel/Panel_kd080d56_720p_video.xml文件。

 


KD080D56
kd080d56 720p video mode dsi panel
800302424000128020124000

83

103614TrueTrue0x3C00000x3B0000 0x3B4000 0x3B8000 0x3BC000 0x3C0000FalseFalse00

05 11 00ff 7805 29 00ff 32

05 28FF 3205 10FF 78

120 10 10000 10000 0

修改:HorizontalActive

           HorizontalFrontPorch

           HorizontalBackPorch

           HorizontalSyncPulse

           HorizontalSyncSkew

           HorizontalLeftBorder
           HorizontalRightBorder
           VerticalActive
           VerticalFrontPorch
           VerticalBackPorch
           VerticalSyncPulse
           VerticalSyncSkew
           VerticalTopBorder
           VerticalBottomBorder

           DSIInitSequence

           DSITermSequence

 2.修改QcomPkg/Include/Library/MDPPlatformLib.h

添加相应LCD

@@ -116,20 +116,21 @@ typedef enum {MDPPLATFORM_PANEL_NT36525_TRULY_HDPLUS_VIDEO,           /* nt36525 truly hdplus video mode */MDPPLATFORM_PANEL_R66451_AMOLED_HDPLUS_CMD,			  /* r66451 hd plus 90hz cmd mode */MDPPLATFORM_PANEL_R66451_AMOLED_HDPLUS_VIDEO,			  /* r66451 hd plus 90hz video mode */MDPPLATFORM_PANEL_NT36672E_90HZ_FHD_PLUS_VIDEO,         /* nt36672e 90hz fhd plus video mode */MDPPLATFORM_PANEL_NT36672E_120HZ_FHD_PLUS_VIDEO,        /* nt36672e 120hz fhd plus video mode */MDPPLATFORM_PANEL_EXT_BRIDGE_1080P_VIDEO,               /* External bridge 1080p vid */MDPPLATFORM_PANEL_ILI9881C_720P_VIDEO,                  /* ILI9881C lcd video mode panel */MDPPLATFORM_PANEL_HX8394F_720P_VIDEO,MDPPLATFORM_PANEL_ILI9881D_720P_VIDEO,MDPPLATFORM_PANEL_KD070D57_C006_720P_VIDEO,
+  MDPPLATFORM_PANEL_KD080D56_720P_VIDEO,MDPPLATFORM_PANEL_MAX} MDPPlatformPanelType;

 3.修改comPkg/SocPkg/KamortaPkg/LAA/Core.fdf

@@ -451,20 +451,25 @@ FvNameGuid         = 631008B0-B2D1-410A-8B49-2C5C4D8ECC7EFILE FREEFORM = 8297c793-9861-422c-9f67-d447af1ea815 {SECTION UI = "Panel_ili9881d_720p_video.xml"SECTION RAW = QcomPkg/Settings/Panel/Panel_ili9881d_720p_video.xml}FILE FREEFORM = 8297c793-9861-422c-9f67-d447af1ea816 {SECTION UI = "Panel_kd070d57_c006_720p_video.xml"SECTION RAW = QcomPkg/Settings/Panel/Panel_kd070d57_c006_720p_video.xml}
+
+  FILE FREEFORM = 0cbd71a5-5ec0-4145-a014-5975bb51fc31 {
+    SECTION UI = "Panel_kd080d56_720p_video.xml"
+    SECTION RAW = QcomPkg/Settings/Panel/Panel_kd080d56_720p_video.xml
+  }# End - Display panel configuration xmlFILE FREEFORM = 3E5584ED-05D4-4267-9048-0D47F76F4248 {SECTION UI = "battery_symbol_Soc10.bmp"SECTION RAW = QcomPkg/Application/QcomChargerApp/battery_symbol_Soc10.bmp}FILE FREEFORM = 4753E815-DDD8-402d-BF69-9B8C4EB7573E {SECTION UI = "battery_symbol_NoBattery.bmp"

4.修改 QcomPkg/SocPkg/KamortaPkg/Library/MDPPlatformLib/MDPPlatformLib.c

@@ -128,20 +128,34 @@ const static int8 dummy_xmldata[] =Dynamic panel detect list:-- first entry contains default panelAt SDM845 panel detection base on platform subtype-- use Truly 2k panel--- dual dsi (without dsc) video and cmd mode--- single dsi with DSC video and cmd mode***************************************************************************/static PlatformDSIDetectParams uefiPanelList[] = { 
+      {
+      0x06,                                                  // uCmdType
+      0x05,                                                  // total number of retry on failures
+      {
+        {{0xDA, 0x00},                                       // address to read ID1
+        {0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}     // expected readback
+        },
+      },
+      0,                                                     // Lane remap order {0, 1, 2, 3}
+      NULL,                     // psPanelCfg (panel configuration)
+      0,             // uPanelCfgSize
+      MDPPLATFORM_PANEL_KD080D56_720P_VIDEO,                 // eSelectedPanel
+      0                                                      // uFlags
+    },{0x06,                                                  // uCmdType0x05,                                                  // total number of retry on failures{{{0xDA, 0x00},                                       // address to read ID1{0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}     // expected readback},},0,                                                     // Lane remap order {0, 1, 2, 3}NULL,                     // psPanelCfg (panel configuration)
@@ -181,20 +195,21 @@ static PlatformDSIDetectParams uefiPanelList[] = {/** List of supported panels. The ones with XML data have UEFI support and the rest are only supported by kernel.  These are applicable for fastboot overrides of the* panel configuration.* */const PanelDTInfoType fastBootPanelList[] ={/*Supported Panels*/
+  PANEL_CREATE_ENTRY("kd080d56_720p_video",		  MDPPLATFORM_PANEL_KD080D56_720P_VIDEO, 	"qcom,mdss_dsi_kd080d56_720p_video:",  DISP_INTF_DSI,  DISP_TOPOLOGY_CONFIG_NONE,  DISP_TIMING_CONFIG_NONE,	  PLL_OVERRIDE_NONE, DISP_MODE_SINGLE_DSI,		   DISP_MODE_SINGLE_DSI,			DISP_MODE_SINGLE_DSI),PANEL_CREATE_ENTRY("kd070d57_c006_720p_video",		  MDPPLATFORM_PANEL_KD070D57_C006_720P_VIDEO, 	"qcom,mdss_dsi_kd070d57_c006_720p_video:",  DISP_INTF_DSI,  DISP_TOPOLOGY_CONFIG_NONE,  DISP_TIMING_CONFIG_NONE,	  PLL_OVERRIDE_NONE, DISP_MODE_SINGLE_DSI,		   DISP_MODE_SINGLE_DSI,			DISP_MODE_SINGLE_DSI),PANEL_CREATE_ENTRY("hx8394f_720p_video",		  MDPPLATFORM_PANEL_HX8394F_720P_VIDEO, 	"qcom,mdss_dsi_hx8394f_720p_video:",  DISP_INTF_DSI,  DISP_TOPOLOGY_CONFIG_NONE,  DISP_TIMING_CONFIG_NONE,	  PLL_OVERRIDE_NONE, DISP_MODE_SINGLE_DSI,		   DISP_MODE_SINGLE_DSI,			DISP_MODE_SINGLE_DSI),PANEL_CREATE_ENTRY("ili9881d_720p_video",		 MDPPLATFORM_PANEL_ILI9881D_720P_VIDEO, 	"qcom,mdss_dsi_ili9881d_720p_video:",  DISP_INTF_DSI,  DISP_TOPOLOGY_CONFIG_NONE,  DISP_TIMING_CONFIG_NONE,    PLL_OVERRIDE_NONE, DISP_MODE_SINGLE_DSI, 		DISP_MODE_SINGLE_DSI,			 DISP_MODE_SINGLE_DSI),PANEL_CREATE_ENTRY("truly_td4330_fhd_cmd",       MDPPLATFORM_PANEL_TD4330_V2_TRULY_FHD_CMD,	  "qcom,mdss_dsi_td4330_truly_v2_cmd:",       DISP_INTF_DSI, DISP_TOPOLOGY_CONFIG_NONE,  DISP_TIMING_CONFIG_NONE,PLL_OVERRIDE_NONE, DISP_MODE_SINGLE_DSI,							   DISP_MODE_SINGLE_DSI,								 DISP_MODE_SINGLE_DSI),PANEL_CREATE_ENTRY("truly_td4330_fhd_vid",       MDPPLATFORM_PANEL_TD4330_V2_TRULY_FHD_VIDEO,   "qcom,mdss_dsi_td4330_truly_v2_video:",     DISP_INTF_DSI, DISP_TOPOLOGY_CONFIG_NONE,  DISP_TIMING_CONFIG_NONE,PLL_OVERRIDE_NONE, DISP_MODE_SINGLE_DSI, 							   DISP_MODE_SINGLE_DSI,								 DISP_MODE_SINGLE_DSI),PANEL_CREATE_ENTRY("truly_nt36525_hdplus_vid",   MDPPLATFORM_PANEL_NT36525_TRULY_HDPLUS_VIDEO,  "qcom,mdss_dsi_nt36525_truly_video:",       DISP_INTF_DSI, DISP_TOPOLOGY_CONFIG_NONE,  DISP_TIMING_CONFIG_NONE,PLL_OVERRIDE_NONE, DISP_MODE_SINGLE_DSI, 							   DISP_MODE_SINGLE_DSI,							     DISP_MODE_SINGLE_DSI),PANEL_CREATE_ENTRY("r66451_amoled_hd_plus_cmd",  MDPPLATFORM_PANEL_R66451_AMOLED_HDPLUS_CMD,    "qcom,mdss_dsi_r66451_hd_plus_90hz_cmd:",   DISP_INTF_DSI, DISP_TOPOLOGY_CONFIG_NONE,  DISP_TIMING_CONFIG_NONE, PLL_OVERRIDE_NONE, DISP_MODE_SINGLE_DSI | DISP_MODE_SKIP_BOOTLOADER,  DISP_MODE_SINGLE_DSI | DISP_MODE_SKIP_BOOTLOADER,     DISP_MODE_SINGLE_DSI | DISP_MODE_SKIP_BOOTLOADER),PANEL_CREATE_ENTRY("r66451_amoled_hd_plus_vid",  MDPPLATFORM_PANEL_R66451_AMOLED_HDPLUS_VIDEO,  "qcom,mdss_dsi_r66451_hd_plus_90hz_video:", DISP_INTF_DSI, DISP_TOPOLOGY_CONFIG_NONE,  DISP_TIMING_CONFIG_NONE, PLL_OVERRIDE_NONE, DISP_MODE_SINGLE_DSI | DISP_MODE_SKIP_BOOTLOADER,  DISP_MODE_SINGLE_DSI | DISP_MODE_SKIP_BOOTLOADER,     DISP_MODE_SINGLE_DSI | DISP_MODE_SKIP_BOOTLOADER),

 5.修改QcomPkg/SocPkg/KamortaPkg/Library/MDPPlatformLib/MDPPlatformLibPanelCommon.c

查看硬件线路图

拉对应的LCD_VDD_EN

              LCD_PWR_EN

              LCD_BL_EN

              LCD_RST  pins

更改pwm输出

@@ -110,21 +110,41 @@ MDP_Status Panel_Default_PowerUp(MDP_Display_IDType eDisplayId, Panel_PowerCtrlPif (EFI_SUCCESS != TLMMProtocol->ConfigGpio((UINT32)EFI_GPIO_CFG(LCD_2V8_EN_GPIO, 0, GPIO_OUTPUT, GPIO_PULL_UP, GPIO_8MA), TLMM_GPIO_ENABLE)){DEBUG((EFI_D_WARN, "DisplayDxe: Configure LCD_2V8_EN_GPIO failed!\n"));} if (EFI_SUCCESS != TLMMProtocol->GpioOut((UINT32)EFI_GPIO_CFG(LCD_2V8_EN_GPIO, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_16MA), GPIO_HIGH_VALUE)){DEBUG((EFI_D_WARN, "DisplayDxe: LCD_2V8_EN_GPIO gpio out failed!\n"));}}
+  /* Enable LCD_VDD_EN*/
+  if (EFI_SUCCESS != TLMMProtocol->ConfigGpio((UINT32)EFI_GPIO_CFG(LCD_VDD_EN_GPIO, 0, GPIO_OUTPUT, GPIO_PULL_UP, GPIO_8MA), TLMM_GPIO_ENABLE))
+    {
+      DEBUG((EFI_D_WARN, "DisplayDxe: Configure LCD_VDD_EN_GPIO failed!\n"));
+    }
+	 if (EFI_SUCCESS != TLMMProtocol->GpioOut((UINT32)EFI_GPIO_CFG(LCD_VDD_EN_GPIO, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_16MA), GPIO_HIGH_VALUE))
+    {
+      DEBUG((EFI_D_WARN, "DisplayDxe: LCD_VDD_EN_GPIO gpio out failed!\n"));
+    }
+
+    MDP_OSAL_DELAYMS(20);+   /* Enable LCD_PWR_EN_GPIO*/
+   if (EFI_SUCCESS != TLMMProtocol->ConfigGpio((UINT32)EFI_GPIO_CFG(LCD_PWR_EN_GPIO, 0, GPIO_OUTPUT, GPIO_PULL_UP, GPIO_8MA), TLMM_GPIO_ENABLE))
+    {
+      DEBUG((EFI_D_WARN, "DisplayDxe: Configure LCD_PWR_EN_GPIO failed!\n"));
+    }
+	 if (EFI_SUCCESS != TLMMProtocol->GpioOut((UINT32)EFI_GPIO_CFG(LCD_PWR_EN_GPIO, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_16MA), GPIO_HIGH_VALUE))
+    {
+      DEBUG((EFI_D_WARN, "DisplayDxe: LCD_PWR_EN_GPIO gpio out failed!\n"));
+    }return Status;}/************************************************************************************************ FUNCTION: Panel_Default_PowerDown()** DESCRIPTION:*   Panel power down sequence for default platform, such as CDP/MTP/QRD.
@@ -326,21 +346,27 @@ static MDP_Status GetPmicIBBLABMode(MDP_Display_IDType eDisplayId, Panel_PowerCt** DESCRIPTION:*   Configure PWM registers and enable it.************************************************************************************************/MDP_Status Panel_Default_Brightness_Enable(MDP_Display_IDType eDisplayId, Panel_PowerCtrlParams *pPowerParams){MDP_Status                   Status           = MDP_STATUS_OK;EFI_QCOM_PMIC_GPIO_PROTOCOL *PmicGpioProtocol = NULL;EFI_QCOM_PMIC_PWM_PROTOCOL  *PMICPWMProtocol  = NULL;
+  EFI_TLMM_PROTOCOL           *TLMMProtocol     = NULL;EFI_STATUS                   eLocalStatus     = EFI_SUCCESS;
+  if (EFI_SUCCESS != gBS->LocateProtocol(&gEfiTLMMProtocolGuid, NULL, (void **)&TLMMProtocol))
+  {
+    DEBUG((EFI_D_ERROR, "DisplayDxe: Locate TLMM protocol failed!\n"));
+    Status = MDP_STATUS_NO_RESOURCES;
+  }if (MDP_STATUS_OK != (Status = GetPmicIBBLABMode(eDisplayId, pPowerParams))){DEBUG((EFI_D_ERROR, "DisplayDxe: Getting PMIC mode failed with error(%d), skipping peripheral power configuration!\n", Status));}else if (pPowerParams->ePMICSecondaryPower[eDisplayId] != MDP_PMIC_MODULE_CONTROLTYPE_NONE){// Configure Backlight enable gpio on Nebulaif (EFI_SUCCESS != gBS->LocateProtocol(&gQcomPmicGpioProtocolGuid, NULL, (VOID **)&PmicGpioProtocol))
@@ -378,33 +404,44 @@ MDP_Status Panel_Default_Brightness_Enable(MDP_Display_IDType eDisplayId, Panel_}/* Configure PWM */if (EFI_SUCCESS != gBS->LocateProtocol(&gQcomPmicPwmProtocolGuid, NULL, (void **)&PMICPWMProtocol)){DEBUG((EFI_D_ERROR, "DisplayDxe: Locate PMICPWM Protocol failed!\n"));Status = MDP_STATUS_NO_RESOURCES;} else{
-    eLocalStatus = PMICPWMProtocol->PwmConfig(1,
-                                          EFI_PM_PWM_RSRC_PWM_4,
+    eLocalStatus = PMICPWMProtocol->PwmConfig(0,
+                                          EFI_PM_PWM_RSRC_PWM_1,511,1,2,EFI_PM_PWM_CLK_19_2_MHZ,EFI_PM_PWM_SIZE_9BIT);if (EFI_SUCCESS != eLocalStatus){DEBUG((EFI_D_ERROR, "DisplayDxe: PwmConfig failed error %d !\n", eLocalStatus));Status = MDP_STATUS_FAILED;}} 
+  /*Enable Backlight gpio*/
+  if (EFI_SUCCESS != TLMMProtocol->ConfigGpio((UINT32)EFI_GPIO_CFG(LCD_BL_EN_GPIO, 0, GPIO_OUTPUT, GPIO_PULL_UP, GPIO_8MA), TLMM_GPIO_ENABLE))
+  {
+    DEBUG((EFI_D_WARN, "DisplayDxe: Configure LCD_BL_EN_GPIO failed!\n"));
+  }
+
+  if (EFI_SUCCESS != TLMMProtocol->GpioOut((UINT32)EFI_GPIO_CFG(LCD_BL_EN_GPIO, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_16MA), GPIO_HIGH_VALUE))
+  {
+    DEBUG((EFI_D_WARN, "DisplayDxe: LCD_BL_EN_GPIO gpio out failed!\n"));
+  }
+return Status;}/************************************************************************************************ FUNCTION: Panel_Default_Peripheral_Power()** DESCRIPTION:*   Secondary power sequence for other PMIC modules such as IBB/LAB.

             

6.QcomPkg/SocPkg/KamortaPkg/Library/MDPPlatformLib/MDPPlatformLibPanelCommon.h

根据GPIO table修改对应GPIO

@@ -37,21 +37,28 @@#define PM632_INDEX                       1#define PMIC_IBBLAB_READYTIME             25      // Maximum of milliseconds to wait for IBB/LAB to stabilize (Can be up to 8.8ms +/-16%)/* SDM845 Main Panel default platform specific defines*/#define DEFAULT_DISP_RESET_GPIO           82   //GPIO number for LCD0_RESET#define DEFAULT_DISP_TE_GPIO              81   //GPIO number for TE#define LCD_1V8_EN_GPIO                   56#define LCD_2V8_EN_GPIO                   31
-
+/* LCD IC power gpio
+*/
+#define LCD_VDD_EN_GPIO                   65
+#define LCD_PWR_EN_GPIO                   66
+
+/*LCD BL control gpio
+*/
+#define LCD_BL_EN_GPIO                   33/* Helper macro for supported panels table entry PanelDTInfoType*/#define PANEL_CREATE_ENTRY(_name_,_id_,_dtlable_,_interface_,_cfg_,_timing_,_pll_, _top0_, _top1_, _top2_)     \{(_name_),                            \(_id_),                              \(_dtlable_),                         \(_interface_),                       \(_cfg_),                             \(_timing_),        

 7.修改QcomPkg/SocPkg/KamortaPkg/Library/MDPPlatformLib/MDPPlatformLibPanelConfig.h

绑定对应接口

@@ -220,13 +220,23 @@ MDPPlatformPanelFunctionTable sMDPPlatformPanelFunction[MDPPLATFORM_PANEL_MAX] ={ /* Kamorta Panel */MDPPLATFORM_PANEL_KD070D57_C006_720P_VIDEO, 		           // ePanelSelected"Panel_kd070d57_c006_720p_video.xml",				       // pPanelXmlConfigPanel_Default_PowerUp,					               // pPanel_PowerUpPanel_Default_PowerDown,					           // pPanel_PowerDownPanel_Default_Reset,					               // pPanel_ResetPanel_Default_Peripheral_Power,				           // pPanel_Peripheral_PowerPanel_Default_Brightness_Enable,				       // pPanel_Brightness_EnablePanel_Default_Brightness_Level				           // pPanel_Brightness_Level},
+  { /* Kamorta Panel */
+    MDPPLATFORM_PANEL_KD080D56_720P_VIDEO, 		           // ePanelSelected
+    "Panel_kd080d56_720p_video.xml",				       // pPanelXmlConfig
+    Panel_Default_PowerUp,					               // pPanel_PowerUp
+    Panel_Default_PowerDown,					           // pPanel_PowerDown
+    Panel_Default_Reset,					               // pPanel_Reset
+    Panel_Default_Peripheral_Power,				           // pPanel_Peripheral_Power
+    Panel_Default_Brightness_Enable,				       // pPanel_Brightness_Enable
+    Panel_Default_Brightness_Level				           // pPanel_Brightness_Level
+  },};#endif // __MDP_PLATFORM_LIB_PANEL_CONFIG__H__


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部