drm/amd/display: handle max_vstartup larger than vblank_end
authorDmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Fri, 14 Sep 2018 19:32:33 +0000 (15:32 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 5 Nov 2018 19:20:39 +0000 (14:20 -0500)
When vstartup is larger than vblank end we need to set v_fp2
to allow for this early start

Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.c

index 54626682bab23bed0a299c06d3a51b34f868c3e0..47f80e0e8be88f92c915acb213ffc16c4479021c 100644 (file)
@@ -274,10 +274,12 @@ void optc1_program_timing(
         * program the reg for interrupt postition.
         */
        vertical_line_start = asic_blank_end - optc->dlg_otg_param.vstartup_start + 1;
-       if (vertical_line_start < 0) {
-               ASSERT(0);
+       v_fp2 = 0;
+       if (vertical_line_start < 0)
+               v_fp2 = -vertical_line_start;
+       if (vertical_line_start < 0)
                vertical_line_start = 0;
-       }
+
        REG_SET(OTG_VERTICAL_INTERRUPT2_POSITION, 0,
                        OTG_VERTICAL_INTERRUPT2_LINE_START, vertical_line_start);
 
@@ -296,9 +298,6 @@ void optc1_program_timing(
                if (patched_crtc_timing.flags.INTERLACE == 1)
                        field_num = 1;
        }
-       v_fp2 = 0;
-       if (optc->dlg_otg_param.vstartup_start > asic_blank_end)
-               v_fp2 = optc->dlg_otg_param.vstartup_start > asic_blank_end;
 
        /* Interlace */
        if (patched_crtc_timing.flags.INTERLACE == 1) {