From 2d33531068480ee893fde48de2fd3074acc40ba5 Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Tue, 10 Jun 2025 16:40:53 +0800 Subject: [PATCH] drm/rockchip: vop2: use rkiommu 1.0 for rk3576 reserved plane mode reserved plane mode will enable iommu bypass for rtos reserved plane display, but rkiommu 2.0 can't support iommu bypass function, so use rkiommu 1.0 at reserved plane mode by default, others will use rkiommu 2.0 by default. Signed-off-by: Sandy Huang Change-Id: I68f2ae66e4e0d7eec45264c39a7f23deab01c8eb --- drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index 3bfd50b3d342..d57bf7c676a1 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -4712,8 +4712,14 @@ static void vop2_initial(struct drm_crtc *crtc) vop2_mask_write(vop2, 0x700, 0x3, 4, 0, 0, true); if (vop2->version == VOP_VERSION_RK3576) { - /* Default use rkiommu 2.0 for axi0 */ - VOP_CTRL_SET(vop2, rkmmu_v2_en, 1); + /* reserved plane mode will enable iommu bypass for rtos reserved plane display, + * but rkiommu 2.0 can't support iommu bypass function, so use rkiommu 1.0 + * at reserved plane mode by default, others will use rkiommu 2.0 by default. + */ + if (vop2->enable_reserved_plane) + VOP_CTRL_SET(vop2, rkmmu_v2_en, 0); + else /* Default use rkiommu 2.0 for axi0 */ + VOP_CTRL_SET(vop2, rkmmu_v2_en, 1); if (vop2->merge_irq == true) VOP_CTRL_SET(vop2, vp_intr_merge_en, 1);