linuxOS_AP06/buildroot/package/lvgl/lv_drivers/0021-rkadk-Added-drm-encode-detection.patch
2025-06-03 12:28:32 +08:00

81 lines
2.3 KiB
Diff

From 514d90a6573c1e95186b372fc18a914651b61daa Mon Sep 17 00:00:00 2001
From: ZiHan Huang <zack.huang@rock-chips.com>
Date: Wed, 25 Sep 2024 10:39:49 +0800
Subject: [PATCH] rkadk: Added drm encode detection
Signed-off-by: ZiHan Huang <zack.huang@rock-chips.com>
---
rkadk/rkadk.c | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
diff --git a/rkadk/rkadk.c b/rkadk/rkadk.c
index 8df2369..5c63212 100644
--- a/rkadk/rkadk.c
+++ b/rkadk/rkadk.c
@@ -58,6 +58,7 @@
/**********************
* STATIC PROTOTYPES
**********************/
+static int drm_encode = 0;
static void *pMblk;
struct disp_buffer
@@ -130,6 +131,7 @@ static int drm_find_connector(int32_t dev_fd)
{
drmModeConnector *conn = NULL;
drmModeRes *res = NULL;
+ drmModeEncoder *encode = NULL;
int32_t i;
if ((res = drmModeGetResources(dev_fd)) == NULL)
@@ -189,6 +191,20 @@ static int drm_find_connector(int32_t dev_fd)
goto free_res;
}
+ encode = drmModeGetEncoder(dev_fd, conn->encoders[0]);
+ if(encode != NULL) {
+ if(encode->encoder_type == DRM_MODE_ENCODER_DSI){
+ printf("drm encode type is MIPI\n");
+ drm_encode = DRM_MODE_ENCODER_DSI;
+ }
+ if(encode->encoder_type == DRM_MODE_ENCODER_DPI){
+ printf("drm encode type is LCD\n");
+ drm_encode = DRM_MODE_ENCODER_DPI;
+ }
+ }
+ if(encode) {
+ drmModeFreeEncoder(encode);
+ }
disp_dev.width = conn->modes[0].hdisplay;
if (disp_dev.width % 16 != 0)
{
@@ -198,6 +214,9 @@ static int drm_find_connector(int32_t dev_fd)
disp_dev.mm_width = conn->mmWidth;
disp_dev.mm_height = conn->mmHeight;
+ if(conn) {
+ drmModeFreeConnector(conn);
+ }
return 0;
free_res:
@@ -259,7 +278,14 @@ static int32_t rk_disp_setup(void)
#ifdef PLATFORM_RV1106
ui_attr.enUiVoIntfTye = DISPLAY_TYPE_DEFAULT;
#else
- ui_attr.enUiVoIntfTye = DISPLAY_TYPE_MIPI;
+ if(drm_encode == DRM_MODE_ENCODER_DSI){
+ ui_attr.enUiVoIntfTye = DISPLAY_TYPE_MIPI;
+ }else if(drm_encode == DRM_MODE_ENCODER_DPI){
+ ui_attr.enUiVoIntfTye = DISPLAY_TYPE_LCD;
+ }else{
+ ui_attr.enUiVoIntfTye = DISPLAY_TYPE_MIPI;
+ }
+
#endif
ret = RKADK_UI_Create(&ui_attr, &disp_dev.ui_ptr);
--
2.34.1