summaryrefslogtreecommitdiff
path: root/drivers/media/platform/rockchip
diff options
context:
space:
mode:
authorCai YiWei <cyw@rock-chips.com>2018-09-21 10:39:12 +0800
committerTao Huang <huangtao@rock-chips.com>2018-10-11 18:42:42 +0800
commita4bb4f5d2cca4f618c7c7f6b26a93d5f955e1833 (patch)
treeef7d2d553590b42793803e73a330842deae4aff7 /drivers/media/platform/rockchip
parent10dbf59d3f10fe8f2bb59c3034bf246af5884cff (diff)
media: rockchip: isp1: fix cplanes address calculation error
for multiple cplane: cplane 0 addr: Y addr + Y size cplane 1 addr: cplane 0 addr + cplane 0 size and cplane size refer to xysubs Change-Id: I50dbb0175f04452c62dd327f73ede1ca4a2d2ad7 Signed-off-by: Cai YiWei <cyw@rock-chips.com>
Diffstat (limited to 'drivers/media/platform/rockchip')
-rw-r--r--drivers/media/platform/rockchip/isp1/capture.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/media/platform/rockchip/isp1/capture.c b/drivers/media/platform/rockchip/isp1/capture.c
index 74a7c9155bf4..6496cefcff86 100644
--- a/drivers/media/platform/rockchip/isp1/capture.c
+++ b/drivers/media/platform/rockchip/isp1/capture.c
@@ -1133,12 +1133,18 @@ static void rkisp1_buf_queue(struct vb2_buffer *vb)
for (i = 0; i < isp_fmt->mplanes; i++)
ispbuf->buff_addr[i] = vb2_dma_contig_plane_dma_addr(vb, i);
+ /*
+ * NOTE: plane_fmt[0].sizeimage is total size of all planes for single
+ * memory plane formats, so calculate the size explicitly.
+ */
if (isp_fmt->mplanes == 1) {
for (i = 0; i < isp_fmt->cplanes - 1; i++) {
- ispbuf->buff_addr[i + 1] =
+ ispbuf->buff_addr[i + 1] = (i == 0) ?
ispbuf->buff_addr[i] +
pixm->plane_fmt[i].bytesperline *
- pixm->height;
+ pixm->height :
+ ispbuf->buff_addr[i] +
+ pixm->plane_fmt[i].sizeimage;
}
}