drm/msm/dp: remove mode hard-coding in case of DP CTS
authorAbhinav Kumar <abhinavk@codeaurora.org>
Sat, 12 Sep 2020 21:08:15 +0000 (14:08 -0700)
committerRob Clark <robdclark@chromium.org>
Tue, 15 Sep 2020 17:54:35 +0000 (10:54 -0700)
No need to fix the number of resolutions to one during the video
pattern CTS test. The userspace test client will handle both
the hotplug as well as picking the right resolution for the test.

Changes in v2: rebase on top of latest patchset of dependency

Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@chromium.org>
drivers/gpu/drm/msm/dp/dp_display.c
drivers/gpu/drm/msm/dp/dp_link.c
drivers/gpu/drm/msm/dp/dp_panel.c

index aa7661f2a441eaf0f324ef429b964d81d4108c70..94b05e4a25747e34113939db819e7544de6df905 100644 (file)
@@ -426,10 +426,7 @@ static int dp_display_usbpd_disconnect_cb(struct device *dev)
 static void dp_display_handle_video_request(struct dp_display_private *dp)
 {
        if (dp->link->sink_request & DP_TEST_LINK_VIDEO_PATTERN) {
-               /* force disconnect followed by connect */
-               dp->usbpd->connect(dp->usbpd, false);
                dp->panel->video_test = true;
-               dp->usbpd->connect(dp->usbpd, true);
                dp_link_send_test_response(dp->link);
        }
 }
index 3cbae92deff0b081974e2e38eb054b4f53dddb07..ac0e1daea9134f6a9f7911c0656bab302203ecd2 100644 (file)
@@ -1059,8 +1059,8 @@ int dp_link_process_request(struct dp_link *dp_link)
        }
 
        if (dp_link_is_video_pattern_requested(link)) {
+               ret = 0;
                dp_link->sink_request |= DP_TEST_LINK_VIDEO_PATTERN;
-               return -EINVAL;
        }
 
        if (dp_link_is_audio_pattern_requested(link)) {
index 7cdf37c525d85734c96b9b7dc143b320c195c7fb..4e5af59db6ba4e36bdc8bd92df78889b9e77a7fd 100644 (file)
@@ -128,46 +128,6 @@ static u32 dp_panel_get_supported_bpp(struct dp_panel *dp_panel,
        return bpp;
 }
 
-static void dp_panel_set_test_mode(struct dp_panel_private *panel,
-               struct dp_display_mode *mode)
-{
-       struct drm_display_mode *drm_mode = NULL;
-       struct dp_link_test_video *test_info = NULL;
-
-       drm_mode = &mode->drm_mode;
-       test_info = &panel->link->test_video;
-
-       drm_mode->hdisplay = test_info->test_h_width;
-       drm_mode->hsync_start = drm_mode->hdisplay + test_info->test_h_total -
-                       (test_info->test_h_start + test_info->test_h_width);
-       drm_mode->hsync_end = drm_mode->hsync_start +
-                               test_info->test_hsync_width;
-       drm_mode->htotal = drm_mode->hsync_end + test_info->test_h_start -
-                                               test_info->test_hsync_width;
-
-       drm_mode->vdisplay = test_info->test_v_height;
-       drm_mode->vsync_start = drm_mode->vdisplay + test_info->test_v_total -
-                       (test_info->test_v_start + test_info->test_v_height);
-       drm_mode->vsync_end = drm_mode->vsync_start +
-                               test_info->test_vsync_width;
-       drm_mode->vtotal = drm_mode->vsync_end + test_info->test_v_start -
-                                               test_info->test_vsync_width;
-
-       drm_mode->clock = test_info->test_h_total *
-               test_info->test_v_total * test_info->test_rr_n;
-
-       drm_mode->type = 0x48;
-       drm_mode_set_name(drm_mode);
-
-       if (test_info->test_rr_d == 0)
-               drm_mode->clock /= 1000;
-       else
-               drm_mode->clock /= 1001;
-
-       if (test_info->test_h_width == 640)
-               drm_mode->clock = 25170;
-}
-
 static int dp_panel_update_modes(struct drm_connector *connector,
        struct edid *edid)
 {
@@ -285,21 +245,13 @@ u32 dp_panel_get_mode_bpp(struct dp_panel *dp_panel,
 int dp_panel_get_modes(struct dp_panel *dp_panel,
        struct drm_connector *connector, struct dp_display_mode *mode)
 {
-       struct dp_panel_private *panel;
-
        if (!dp_panel) {
                DRM_ERROR("invalid input\n");
                return -EINVAL;
        }
 
-       panel = container_of(dp_panel, struct dp_panel_private, dp_panel);
-
-       if (dp_panel->video_test) {
-               dp_panel_set_test_mode(panel, mode);
-               return 1;
-       } else if (dp_panel->edid) {
+       if (dp_panel->edid)
                return dp_panel_update_modes(connector, dp_panel->edid);
-       }
 
        return 0;
 }