Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

Mark yao 79a0b149 6f04f592

+2 -2
+2 -2
drivers/gpu/drm/rockchip/rockchip_drm_vop.c
··· 761 761 spin_lock(&vop->reg_lock); 762 762 763 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 765 VOP_WIN_SET(vop, win, yrgb_mst, dma_addr); 766 766 if (is_yuv_support(fb->format->format)) { 767 767 int hsub = drm_format_horz_chroma_subsampling(fb->format->format); ··· 775 775 offset += (src->y1 >> 16) * fb->pitches[1] / vsub; 776 776 777 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 779 VOP_WIN_SET(vop, win, uv_mst, dma_addr); 780 780 } 781 781