diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h index ad721fccc6aa..335254d23c31 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h @@ -956,6 +956,7 @@ static inline int interpolate(int x1, int y1, int x2, int y2, int x) return y1 + (y2 - y1) * (x - x1) / (x2 - x1); } +extern void vop2_standby(struct drm_crtc *crtc, bool standby); extern const struct component_ops vop_component_ops; extern const struct component_ops vop2_component_ops; #endif /* _ROCKCHIP_DRM_VOP_H */ diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index 78dd63f70c3a..fb859b8673b3 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -653,6 +653,20 @@ static uint64_t vop2_soc_id_fixup(uint64_t soc_id) } } +void vop2_standby(struct drm_crtc *crtc, bool standby) +{ + struct vop2_video_port *vp = to_vop2_video_port(crtc); + struct vop2 *vop2 = vp->vop2; + + if (standby) { + VOP_MODULE_SET(vop2, vp, standby, 1); + mdelay(20); + } else { + VOP_MODULE_SET(vop2, vp, standby, 0); + } +} +EXPORT_SYMBOL(vop2_standby); + static inline const struct vop2_win_regs *vop2_get_win_regs(struct vop2_win *win, const struct vop_reg *reg) {