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 03:39:20 -0400
commit79a0b149d4e3d45fc46673f4b29a157776c174e2 (patch)
tree9bbe45c7b37ca6455e5f2002fc4586af5dbdab49
parent6f04f5925ce763e07cb405d1fbe97a53b6c026a3 (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 804d0ff53059..e205c5cf9019 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
@@ -761,7 +761,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
761 spin_lock(&vop->reg_lock); 761 spin_lock(&vop->reg_lock);
762 762
763 VOP_WIN_SET(vop, win, format, format); 763 VOP_WIN_SET(vop, win, format, format);
764 VOP_WIN_SET(vop, win, yrgb_vir, fb->pitches[0] >> 2); 764 VOP_WIN_SET(vop, win, yrgb_vir, DIV_ROUND_UP(fb->pitches[0], 4));
765 VOP_WIN_SET(vop, win, yrgb_mst, dma_addr); 765 VOP_WIN_SET(vop, win, yrgb_mst, dma_addr);
766 if (is_yuv_support(fb->format->format)) { 766 if (is_yuv_support(fb->format->format)) {
767 int hsub = drm_format_horz_chroma_subsampling(fb->format->format); 767 int hsub = drm_format_horz_chroma_subsampling(fb->format->format);
@@ -775,7 +775,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
775 offset += (src->y1 >> 16) * fb->pitches[1] / vsub; 775 offset += (src->y1 >> 16) * fb->pitches[1] / vsub;
776 776
777 dma_addr = rk_uv_obj->dma_addr + offset + fb->offsets[1]; 777 dma_addr = rk_uv_obj->dma_addr + offset + fb->offsets[1];
778 VOP_WIN_SET(vop, win, uv_vir, fb->pitches[1] >> 2); 778 VOP_WIN_SET(vop, win, uv_vir, DIV_ROUND_UP(fb->pitches[1], 4));
779 VOP_WIN_SET(vop, win, uv_mst, dma_addr); 779 VOP_WIN_SET(vop, win, uv_mst, dma_addr);
780 } 780 }
781 781