struct dc_crtc_timing patched_crtc_timing;
        int vesa_sync_start;
        int asic_blank_end;
-       int interlace_factor;
        int vertical_line_start;
 
        patched_crtc_timing = *dc_crtc_timing;
                        vesa_sync_start -
                        patched_crtc_timing.h_border_left;
 
-       interlace_factor = patched_crtc_timing.flags.INTERLACE ? 2 : 1;
-
        vesa_sync_start = patched_crtc_timing.v_addressable +
                        patched_crtc_timing.v_border_bottom +
                        patched_crtc_timing.v_front_porch;
 
        asic_blank_end = (patched_crtc_timing.v_total -
                        vesa_sync_start -
-                       patched_crtc_timing.v_border_top)
-                       * interlace_factor;
+                       patched_crtc_timing.v_border_top);
 
        vertical_line_start = asic_blank_end - optc->dlg_otg_param.vstartup_start + 1;
        if (vertical_line_start < 0) {
        uint32_t v_sync_end;
        uint32_t v_init, v_fp2;
        uint32_t h_sync_polarity, v_sync_polarity;
-       uint32_t interlace_factor;
        uint32_t start_point = 0;
        uint32_t field_num = 0;
        uint32_t h_div_2;
        REG_UPDATE(OTG_H_SYNC_A_CNTL,
                        OTG_H_SYNC_A_POL, h_sync_polarity);
 
-       /* Load vertical timing */
+       v_total = patched_crtc_timing.v_total - 1;
 
-       /* CRTC_V_TOTAL = v_total - 1 */
-       if (patched_crtc_timing.flags.INTERLACE) {
-               interlace_factor = 2;
-               v_total = 2 * patched_crtc_timing.v_total;
-       } else {
-               interlace_factor = 1;
-               v_total = patched_crtc_timing.v_total - 1;
-       }
        REG_SET(OTG_V_TOTAL, 0,
                        OTG_V_TOTAL, v_total);
 
                OTG_V_TOTAL_MIN, v_total);
 
        /* v_sync_start = 0, v_sync_end = v_sync_width */
-       v_sync_end = patched_crtc_timing.v_sync_width * interlace_factor;
+       v_sync_end = patched_crtc_timing.v_sync_width;
 
        REG_UPDATE_2(OTG_V_SYNC_A,
                        OTG_V_SYNC_A_START, 0,
 
        asic_blank_end = (patched_crtc_timing.v_total -
                        vesa_sync_start -
-                       patched_crtc_timing.v_border_top)
-                       * interlace_factor;
+                       patched_crtc_timing.v_border_top);
 
        /* v_blank_start = v_blank_end + v_active */
        asic_blank_start = asic_blank_end +
                        (patched_crtc_timing.v_border_top +
                        patched_crtc_timing.v_addressable +
-                       patched_crtc_timing.v_border_bottom)
-                       * interlace_factor;
+                       patched_crtc_timing.v_border_bottom);
 
        REG_UPDATE_2(OTG_V_BLANK_START_END,
                        OTG_V_BLANK_START, asic_blank_start,
                        0 : 1;
 
        REG_UPDATE(OTG_V_SYNC_A_CNTL,
-                       OTG_V_SYNC_A_POL, v_sync_polarity);
+               OTG_V_SYNC_A_POL, v_sync_polarity);
 
        v_init = asic_blank_start;
        if (optc->dlg_otg_param.signal == SIGNAL_TYPE_DISPLAY_PORT ||
        struct timing_generator *optc,
        const struct dc_crtc_timing *timing)
 {
-       uint32_t interlace_factor;
        uint32_t v_blank;
        uint32_t h_blank;
        uint32_t min_v_blank;
 
        ASSERT(timing != NULL);
 
-       interlace_factor = timing->flags.INTERLACE ? 2 : 1;
        v_blank = (timing->v_total - timing->v_addressable -
-                                       timing->v_border_top - timing->v_border_bottom) *
-                                       interlace_factor;
+                                       timing->v_border_top - timing->v_border_bottom);
 
        h_blank = (timing->h_total - timing->h_addressable -
                timing->h_border_right -