aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark yao <mark.yao@rock-chips.com>2017-07-31 05:49:50 -0400
committerMark Yao <mark.yao@rock-chips.com>2017-08-04 04:09:41 -0400
commitda709a7b27082421289e264f3491a8f43cd4d2f7 (patch)
tree8df7be0945a6bf80e8967b548fd875cadf09b14f
parent0b12e9c0e4d5138289a7a9d875ce655842b60b03 (diff)
drm/rockchip: vop: round_up pitches to word align
VOP pitch register is word align, need align to word. VOP_WIN0_VIR: bit[31:16] win0_vir_stride_uv Number of words of Win0 uv Virtual width bit[15:0] win0_vir_width Number of words of Win0 yrgb Virtual width ARGB888 : win0_vir_width RGB888 : (win0_vir_width*3/4) + (win0_vir_width%3) RGB565 : ceil(win0_vir_width/2) YUV : ceil(win0_vir_width/4) Signed-off-by: Mark Yao <mark.yao@rock-chips.com> Reviewed-by: Sandy huang <sandy.huang@rock-chips.com> Link: https://patchwork.freedesktop.org/patch/msgid/1501494591-7034-1-git-send-email-mark.yao@rock-chips.com
-rw-r--r--drivers/gpu/drm/rockchip/rockchip_drm_vop.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
index a1017a713edf..e59ef93bcd74 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
@@ -757,7 +757,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
757 spin_lock(&vop->reg_lock); 757 spin_lock(&vop->reg_lock);
758 758
759 VOP_WIN_SET(vop, win, format, format); 759 VOP_WIN_SET(vop, win, format, format);
760 VOP_WIN_SET(vop, win, yrgb_vir, fb->pitches[0] >> 2); 760 VOP_WIN_SET(vop, win, yrgb_vir, DIV_ROUND_UP(fb->pitches[0], 4));
761 VOP_WIN_SET(vop, win, yrgb_mst, dma_addr); 761 VOP_WIN_SET(vop, win, yrgb_mst, dma_addr);
762 if (is_yuv_support(fb->format->format)) { 762 if (is_yuv_support(fb->format->format)) {
763 int hsub = drm_format_horz_chroma_subsampling(fb->format->format); 763 int hsub = drm_format_horz_chroma_subsampling(fb->format->format);
@@ -771,7 +771,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
771 offset += (src->y1 >> 16) * fb->pitches[1] / vsub; 771 offset += (src->y1 >> 16) * fb->pitches[1] / vsub;
772 772
773 dma_addr = rk_uv_obj->dma_addr + offset + fb->offsets[1]; 773 dma_addr = rk_uv_obj->dma_addr + offset + fb->offsets[1];
774 VOP_WIN_SET(vop, win, uv_vir, fb->pitches[1] >> 2); 774 VOP_WIN_SET(vop, win, uv_vir, DIV_ROUND_UP(fb->pitches[1], 4));
775 VOP_WIN_SET(vop, win, uv_mst, dma_addr); 775 VOP_WIN_SET(vop, win, uv_mst, dma_addr);
776 } 776 }
777 777