文章首次写在个人微信公众号【Linux驱动】。
写在前面的话:
本篇文章接
1.关闭UEFI panel的添加&禁止连续显示
diff --git a/QcomPkg/Library/MDPLib/DisplayUtils.c b/QcomPkg/Library/MDPLib/DisplayUtils.c
index 7895788..5100b46 100755
--- a/QcomPkg/Library/MDPLib/DisplayUtils.c
+++ b/QcomPkg/Library/MDPLib/DisplayUtils.c
@@ -961,8 +961,8 @@ static void UpdatePanelConfiguration(const bool32 aSupportedDisplayList[], CHAR8
}
}
- if (DISP_MODE_PANEL_NONE & pDisplayParams->uFlags)//关闭UEFI panel的添加
+ if(1)
{
/* Panel override with NONE, no string will be generated */
}
diff --git a/QcomPkg/Library/MDPLib/MDPLib.c b/QcomPkg/Library/MDPLib/MDPLib.c
index ddbc96d..d9507cd 100755
--- a/QcomPkg/Library/MDPLib/MDPLib.c
+++ b/QcomPkg/Library/MDPLib/MDPLib.c
@@ -1129,8 +1129,8 @@ MDP_Status MDPExitBoot(uint32 uFlags)
{
pDisplayInfo = MDP_GET_DISPLAYINFO(eDisplayId);
- if (MDP_PANEL_FLAG_DISABLE_SEAMLESS_SPLASH & pDisplayInfo->eDisplayFlags)//禁止连续显示
+ if(1)
{
bSeamlessSplash = FALSE;
}
2. dsi select lcm
dsi驱动加载log打印
[ 26.168632] dsi_display_dev_probe+0x190/0x3f0
[ 26.173200] platform_drv_probe+0x80/0xb8
[ 26.177323] really_probe+0x530/0x730
[ 26.181089] driver_probe_device+0x74/0x148
[ 26.185390] __driver_attach+0x128/0x1e0
[ 26.189432] bus_for_each_dev+0x84/0xd0
[ 26.193377] driver_attach+0x2c/0x38
[ 26.197060] bus_add_driver+0x144/0x268
[ 26.201006] driver_register+0x78/0x110
[ 26.204951] __platform_driver_register+0x4c/0x58
[ 26.209792] dsi_display_register+0x16c/0x198
[ 26.214274] do_one_initcall+0x1fc/0x400
[ 26.218318] kernel_init_freeable+0x4b4/0x56c
[ 26.222799] kernel_init+0x18/0x298
[ 26.226386] ret_from_fork+0x10/0x1c
kernel/msm-4.19/techpack/display/msm/dsi/dsi_display.c
of_device_id 结构体成员compatible的值 (qcom,dsi-display)
,代表的是当前驱动(driver)
的名称,和“msm-dsi-display”
是驱动名称的两种表示方式。前者用于和dtsi中代表设备(device)
的节点进行match,后者用于兼容kernel旧的设备驱动模型。

当设备与驱动match之后,执行驱动的probe函数:dsi_display_dev_probe
执行的过程中,会检查dis_display_boot_param
类型结构体数组 boot_displays[ ]
的数组成员的值。数组成员的值来自uefi 传给kernel的command line
,传递过程使用到了内核MODULE_PARM_DESC宏定义。

qcom,dsi-display-primary
节点代表平台端的dsi控制器设备节点,其属性 qcom,mdp
代表该控制器支持的LCM的列表。 当boot_disp_en 为1 时,表示uefi向kernel 传递LCM 值的机制没关,则在当前dsi控制器支持的LCM列表中查找uefi传递的LCM。 反之,boot_disp_en 为0时,表示uefi向kernel 传递LCM 值的机制关闭, 则将当前dsi控制器设备节点的属性qcom,dsi-default-panel
的值作为LCM设备节点进行LCM的初始化操作。

vendor/qcom/proprietary/devicetree-4.19/qcom/lito-sde-display.dtsi
sde_dsi: qcom,dsi-display-primary
qcom,mdp = <&mdss_mdp>;
qcom,dsi-default-panel = <&dsi_ft8719p_1080p_video>;
sde_dsi1: qcom,dsi-display-secondary
