Merge "meson_dislay: Add flow for setting dummy mode [1/1]"
diff --git a/display_framework/src/extension/display_settings/display_settings.c b/display_framework/src/extension/display_settings/display_settings.c
index 3a5eb9c..c4e8cb9 100644
--- a/display_framework/src/extension/display_settings/display_settings.c
+++ b/display_framework/src/extension/display_settings/display_settings.c
@@ -477,6 +477,7 @@
 int setDisplayMode(DisplayMode* modeInfo,MESON_CONNECTOR_TYPE connType) {
     int res = -1;
     int ret = -1;
+    int resNum = -1;
     int fd = 0;
     drmModeAtomicReq *req = NULL;
     if (modeInfo == NULL) {
@@ -492,7 +493,18 @@
     res = meson_drm_changeMode(fd, req, modeInfo, connType);
     if (res == -1) {
         ERROR("changeModeFail\n");
-        goto out;
+        if (connType == MESON_CONNECTOR_DUMMY) {
+            ERROR("No dummy connector ,set hdmi dummy_l mode\n");
+            modeInfo->interlace = 0;
+            modeInfo->w  = 720;
+            modeInfo->h = 480;
+            modeInfo->vrefresh = 50;
+            resNum = meson_drm_changeMode(fd, req, modeInfo, MESON_CONNECTOR_HDMIA);
+            if (resNum == -1) {
+                ERROR("meson_drm_changeMode Fail");
+                goto out;
+           }
+       }
     }
     ret = drmModeAtomicCommit(fd, req, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
     if (ret) {
diff --git a/display_framework/src/extension/display_settings/display_settings.h b/display_framework/src/extension/display_settings/display_settings.h
index 662743f..4752a47 100644
--- a/display_framework/src/extension/display_settings/display_settings.h
+++ b/display_framework/src/extension/display_settings/display_settings.h
@@ -67,6 +67,7 @@
     MESON_CONNECTOR_HDMIB,
     MESON_CONNECTOR_LVDS,
     MESON_CONNECTOR_CVBS,
+    MESON_CONNECTOR_DUMMY,

     MESON_CONNECTOR_RESERVED
 } MESON_CONNECTOR_TYPE;
 

diff --git a/display_framework/src/extension/display_settings/display_settings_Test.c b/display_framework/src/extension/display_settings/display_settings_Test.c
index 677d962..ad40a25 100644
--- a/display_framework/src/extension/display_settings/display_settings_Test.c
+++ b/display_framework/src/extension/display_settings/display_settings_Test.c
@@ -37,7 +37,7 @@
     select_len = scanf("%d",&select_s);
     if (select_s == 0 && select_len == 1) {
         printf("set:0->hdmi mode 1->cvbs mode 2->event test 3->hdr policy 4->av mute 5->HDMI HDCP enable 6-><colorSpace, colorDepth>"
-        "7->HDCP Content Type  8->DvEnable 9->active 10->vrr Enable 11->auto mode\n");
+        "7->HDCP Content Type  8->DvEnable 9->active 10->vrr Enable 11->auto mode 12->dummy mode\n");
         len = scanf("%d",&set);
         if (set == 0 && len == 1) {
             printf("please input modeInfo:interlace, w, h, vrefresh\n");
@@ -147,11 +147,20 @@
                     printf("\n scanf fail\n");
                 }
     } else if (set == 11 && len == 1) {
-             if (0 == setDisplayAutoMode(MESON_CONNECTOR_HDMIA))
+             if (0 == setDisplayAutoMode(MESON_CONNECTOR_HDMIA)) {
                 printf("Successfully set the optimal resolution!\n");
         } else {
             printf("scanf fail\n");
-         }

+        }

+    } else if (set == 12 && len == 1) {

+            printf("please input dummy modeInfo:interlace, w, h, vrefresh\n");

+            scanf("%d %d %d %d", &modeInfo->interlace, &modeInfo->w, &modeInfo->h,&modeInfo->vrefresh);

+            if (setDisplayMode(modeInfo, MESON_CONNECTOR_DUMMY) == 0) {

+                printf("\n mode:%d %d %d %d\n",modeInfo->interlace,modeInfo->w, modeInfo->h, modeInfo->vrefresh);

+            }else{

+                printf("setModeFail\n");

+            }

+        }

     }

     else if(select_s == 1 && select_len == 1) {
         printf("get:0->hdrPolicy 1->modeinfo 2->HDCP version 3->HDMI connected 4->color depth 5->color space"