drm/rockchip: vop: add line_flag 0/1 for ddr freq change
authorMark Yao <mark.yao@rock-chips.com>
Fri, 24 Mar 2017 11:46:46 +0000 (19:46 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Fri, 12 May 2017 11:28:51 +0000 (19:28 +0800)
Change-Id: Icae9fe3d3600a478f68220545c17b393b4aff1ec
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
drivers/gpu/drm/rockchip/rockchip_drm_vop.c
drivers/gpu/drm/rockchip/rockchip_drm_vop.h

index 9219d9672d5429105c74d227215ec00fa8e8c914..706fc973e94f210b523bc80a45b418836c738131 100644 (file)
@@ -1701,6 +1701,10 @@ static void vop_crtc_enable(struct drm_crtc *crtc)
        val |= vact_end;
        VOP_CTRL_SET(vop, vact_st_end, val);
        VOP_CTRL_SET(vop, vpost_st_end, val);
+
+       VOP_INTR_SET(vop, line_flag_num[0], vact_end);
+       VOP_INTR_SET(vop, line_flag_num[1],
+                    vact_end - us_to_vertical_line(adjusted_mode, 1000));
        if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) {
                u16 vact_st_f1 = vtotal + vact_st + 1;
                u16 vact_end_f1 = vact_st_f1 + vdisplay;
index cd36b6cd339175183d357b7d861af0aedae1768b..9e912415f800304864639a40280a4c06e156ee24 100644 (file)
@@ -493,5 +493,10 @@ static inline int scl_vop_cal_lb_mode(int width, bool is_yuv)
        return lb_mode;
 }
 
+static inline int us_to_vertical_line(struct drm_display_mode *mode, int us)
+{
+       return us * mode->clock / mode->htotal / 1000;
+}
+
 extern const struct component_ops vop_component_ops;
 #endif /* _ROCKCHIP_DRM_VOP_H */