From c07f31cc8cf36847dac132abd73f79550fd42e56 Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Thu, 30 Jun 2022 14:53:45 +0800 Subject: [PATCH] drm/rockchip: vop2: add support soft te for mipi cmd mode some product will use gpio to instead of TE, so we add soft TE for all vp. Signed-off-by: Sandy Huang Change-Id: Idb2d8b6a63c17308519761ae986f853b2baf0bc4 --- drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 5 +++++ drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 8 ++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h index fb1dd0186658..a38af821496a 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h @@ -181,6 +181,11 @@ struct rockchip_crtc_state { * (3) edp psr mode */ bool hold_mode; + /** + * when enable soft_te, use gpio irq to triggle new fs, + * otherwise use hardware te + */ + bool soft_te; struct drm_tv_connector_state *tv_state; int left_margin; diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index 0f40e93da481..e655b982f993 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -6599,7 +6599,7 @@ static void vop2_crtc_atomic_enable(struct drm_crtc *crtc, struct drm_crtc_state VOP_CTRL_SET(vop2, mipi_pin_pol, val); VOP_CTRL_SET(vop2, mipi_dclk_pol, dclk_inv); if (vcstate->hold_mode) { - VOP_MODULE_SET(vop2, vp, edpi_te_en, 1); + VOP_MODULE_SET(vop2, vp, edpi_te_en, !vcstate->soft_te); VOP_MODULE_SET(vop2, vp, edpi_wms_hold_en, 1); } } @@ -6621,11 +6621,7 @@ static void vop2_crtc_atomic_enable(struct drm_crtc *crtc, struct drm_crtc_state VOP_CTRL_SET(vop2, mipi_pin_pol, val); VOP_CTRL_SET(vop2, mipi_dclk_pol, dclk_inv); if (vcstate->hold_mode) { - /* RK3588 VP1->DSC1->DSI1 only can support soft TE mode */ - if (vop2->version == VOP_VERSION_RK3588 && vp->id == 1) - VOP_MODULE_SET(vop2, vp, edpi_te_en, 0); - else - VOP_MODULE_SET(vop2, vp, edpi_te_en, 1); + VOP_MODULE_SET(vop2, vp, edpi_te_en, !vcstate->soft_te); VOP_MODULE_SET(vop2, vp, edpi_wms_hold_en, 1); } }