81 lines
2.3 KiB
Diff
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
|
|
|