详细代码实现见
Android Display Graphics系列文章-汇总Android Display Graphics系列文章-汇总
Android Display Graphics系列文章-汇总
Android Display Graphics系列文章-汇总
本文主要包括部分:
一、Android12的Kernel 5.10版本
1.1 Kernel 5.10 情况说明
1.2 前置条件
二、QCM 8**5 plane配置
2.1 multi-card配置
2.2 移植msm-lease
2.3 配置信息确认
三、Kernel 5.10 mutil-cards方案实现
3.1 移植详细代码实现
一、Android12的Kernel 5.10版本
1.1 Kernel 5.10 情况说明
高通提供Android 12基线代码,有的是基于Kernel 5.10,在上篇文章中Kernel 5.4中就已经不存在msm-lease了。所以在Kernel 5.10版本上,也是一样的。
在Kernel 5.10中,msm的驱动已经移至 target_ap/vendor/qcom/opensource/display-drivers路径下;需要将msm-lease移植适配到此路径下,msm-lease同样需要移植到此路径下;
1.2 前置条件
移植multi-card的前置条件是,DSI屏和DP屏的驱动已经调试正常,单card(android默认)下是显示相同内容的。
此时再按照以下patch实现multi-card。
二、QCM 8**5 plane配置
2.1 multi-card配置
以QCM84*5为例,说明配置card信息;
下面配置:sde_card1的接口是DSI,并且分配了12个plane;sde_card2的接口是DP1,也分配了4个plane。实际使用场景可以根据对现实的需求分配。
-
sde_card1: qcom,sde-kms-lease@0 {
-
compatible = "qcom,sde-kms-lease";
-
qcom,dev-name = "msm_drm";
-
//qcom,lease-connectors = "DSI-1";
-
//qcom,lease-planes = "plane-0","plane-1","plane-4","plane-5";
-
qcom,lease-connectors = "DSI-1";
-
qcom,lease-planes = "plane-0","plane-1","plane-2","plane-3","plane-5","plane-7","plane-8","plane-9","plane-10","plane-11","plane-13","plane-15";
-
};
-
sde_card2: qcom,sde-kms-lease@1 {
-
compatible = "qcom,sde-kms-lease";
-
qcom,dev-name = "msm_drm1";
-
qcom,lease-connectors = "DP-1";
-
//qcom,lease-planes = "plane-2","plane-3","plane-6","plane-7";
-
qcom,lease-planes = "plane-4","plane-6","plane-12","plane-14";
-
};
2.2 移植msm-lease
将适合该平台的msm-lease文件放到target_ap/vendor/qcom/opensource/display-drivers/路径下,并在内核中增加配置。
--- a/target_ap/vendor/qcom/opensource/display-drivers/msm/Kbuild
+++ b/target_ap/vendor/qcom/opensource/display-drivers/msm/Kbuild
@@ -82,6 +82,7 @@ obj-m += msm_drm.o
msm_drm-$(CONFIG_DSI_PARSER) += dsi/dsi_parser.o
+msm_drm-$(CONFIG_DRM_MSM_LEASE) += ../msm-lease/msm_lease_drv.o
target_ap/kernel_platform/common/include/drm
--- a/target_ap/vendor/qcom/opensource/display-drivers/config/gki_waipiodisptuiconf.h
+++ b/target_ap/vendor/qcom/opensource/display-drivers/config/gki_waipiodisptuiconf.h
@@ -14,3 +14,4 @@
#define CONFIG_GKI_DISPLAY 1
#define CONFIG_DRM_SDE_VM 1
#define CONFIG_DRM_MSM_LOW_MEM_FOOTPRINT 1
+#define CONFIG_DRM_MSM_LEASE 1
在内核中要增加头文件:
kernel_platform/common/include/drm/drmP.h
kernel_platform/common/include/drm/drm_os_linux.h
kernel_platform/common/include/drm/drm_pci.h
kernel_platform/msm-kernel/include/drm/drmP.h
kernel_platform/msm-kernel/include/drm/drm_os_linux.h
kernel_platform/msm-kernel/include/drm/drm_pci.h
修改vendor/qcom/opensource/display-drivers/msm/msm_drv.h
vendor/qcom/opensource/display-drivers/msm/msm_drv.c ,使其调用msm_drm_register()注册drm时,调用msm_lease_drm_unregister()注册lease_drm。
移植完成,同样可以看到两个card节点,
2.3 配置信息确认
可以查看上篇文章 中此章节内容
三、Kernel 5.10 mutil-card方案实现
3.1 移植详细代码实现
cpp
diff --git a/target_ap/device/qcom/sepolicy_vndr/generic/vendor/common/file_contexts b/target_ap/device/qcom/sepolicy_vndr/generic/vendor/common/file_contexts
index 3866017..2e4a53d 100644
--- a/target_ap/device/qcom/sepolicy_vndr/generic/vendor/common/file_contexts
+++ b/target_ap/device/qcom/sepolicy_vndr/generic/vendor/common/file_contexts
@@ -443,6 +443,8 @@
# graphics device
/dev/mdss_rotator u:object_r:graphics_device:s0
/dev/dri/card0 u:object_r:graphics_device:s0
+/dev/dri/card1 u:object_r:graphics_device:s0
+/dev/dri/card2 u:object_r:graphics_device:s0
/dev/dri/controlD64 u:object_r:graphics_device:s0
/dev/dri/renderD128 u:object_r:graphics_device:s0
/dev/spec_sync u:object_r:graphics_device:s0
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************详见如下系列文章**************************Android Display Graphics系列文章-汇总
Android Display Graphics系列文章-汇总
****************************************************************************************************************************************************************************************************************************