From 183bc1a692154016d9f5df16081ddfa9b806dd15 Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Wed, 13 Apr 2022 14:51:07 +0800 Subject: [PATCH] drm/rockchip: vop2: reset transform offset when exit from afbc format If cluster transform offset isn't equeal to 0 at linear format mode, VOP will appear iommu pagefault error. errr log: [ 8283.190920][ C0] rk_iommu fdd97e00.iommu: Page fault at 0x00000000f20b1000 of type read [ 8283.191012][ C0] [drm:rockchip_drm_fault_handler] *ERROR* iommu fault handler flags: 0x18b ... [ 8283.191131][ C0] Video Port0: DISABLED [ 8283.191153][ C0] Video Port1: DISABLED [ 8283.191198][ C0] SYS: [ 8283.191252][ C0] 00000000: 00008008 40176786 7fffffff 00000000 [ 8283.191281][ C0] 00000010: 00000000 00000000 00000000 00000000 ... [ 8283.191715][ C0] OVL: [ 8283.191765][ C0] 00000000: c0000000 75643120 e4e47531 00000000 [ 8283.191792][ C0] 00000010: 00000000 00000000 00000000 00000000 ... [ 8283.195257][ C0] Cluster3: [ 8283.195306][ C0] 00000000: 00004001 00000000 000000e6 00000000 [ 8283.195333][ C0] 00000010: f2057000 00000000 00000030 00000000 [ 8283.195361][ C0] 00000020: 077f002f 077f002f 00000408 00000000 [ 8283.195389][ C0] 00000030: 00000000 00000000 00000000 00020009 [ 8283.195417][ C0] 00000040: 00000000 00000000 00000000 00000000 [ 8283.195445][ C0] 00000050: 00000010 00000000 f396a000 00290500 [ 8283.195473][ C0] 00000060: 048b028d 003a0139 00000000 00000094 ... [ 8283.199008][ C0] rockchip-vop2 fdd90000.vop: [drm:vop2_isr] *ERROR* POST_BUF_EMPTY irq err at vp3 [ 8283.199303][ C0] rockchip-vop2 fdd90000.vop: [drm:vop2_isr] *ERROR* POST_BUF_EMPTY irq err at vp3 [ 8283.199377][ C0] rockchip-vop2 fdd90000.vop: [drm:vop2_isr] *ERROR* POST_BUF_EMPTY irq err at vp3 Signed-off-by: Sandy Huang Change-Id: Ib490796e1da568069f78ed35b2287a5fe32033d9 --- drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index 7f90b080efbf..ca734bcd6618 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -4470,6 +4470,7 @@ static void vop2_win_atomic_update(struct vop2_win *win, struct drm_rect *src, s VOP_AFBC_SET(vop2, win, rotate_90, vpstate->rotate_90_en); } else { VOP_CLUSTER_SET(vop2, win, afbc_enable, 0); + VOP_AFBC_SET(vop2, win, transform_offset, 0); VOP_WIN_SET(vop2, win, ymirror, vpstate->ymirror_en); VOP_WIN_SET(vop2, win, xmirror, vpstate->xmirror_en); }