drm/amd/display: wait for update when setting dpg test pattern
authorWenjing Liu <Wenjing.Liu@amd.com>
Fri, 13 Dec 2019 16:54:29 +0000 (11:54 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 16 Jan 2020 19:12:01 +0000 (14:12 -0500)
Test pattern should be applied to hardware when exiting set test pattern
function.

Signed-off-by: Wenjing Liu <Wenjing.Liu@amd.com>
Reviewed-by: Nikola Cornij <Nikola.Cornij@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c

index f703b39..e415f77 100644 (file)
@@ -3611,6 +3611,7 @@ static void set_crtc_test_pattern(struct dc_link *link,
                        struct pipe_ctx *odm_pipe;
                        enum controller_dp_color_space controller_color_space;
                        int opp_cnt = 1;
+                       uint8_t count = 0;
 
                        switch (test_pattern_color_space) {
                        case DP_TEST_PATTERN_COLOR_SPACE_RGB:
@@ -3646,6 +3647,12 @@ static void set_crtc_test_pattern(struct dc_link *link,
                                        NULL,
                                        width,
                                        height);
+                               /* wait for dpg to blank pixel data with test pattern */
+                               for (count = 0; count < 1000; count++)
+                                       if (odm_opp->funcs->dpg_is_blanked(odm_opp))
+                                               break;
+                                       else
+                                               udelay(100);
                        }
                        opp->funcs->opp_set_disp_pattern_generator(opp,
                                controller_test_pattern,
@@ -3654,6 +3661,12 @@ static void set_crtc_test_pattern(struct dc_link *link,
                                NULL,
                                width,
                                height);
+                       /* wait for dpg to blank pixel data with test pattern */
+                       for (count = 0; count < 1000; count++)
+                               if (opp->funcs->dpg_is_blanked(opp))
+                                       break;
+                               else
+                                       udelay(100);
                }
        }
        break;