From a2eee96da14d15143164120e7caa37aecca1158c Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Wed, 13 Jan 2021 09:52:49 +0800 Subject: [PATCH] media: rockchip: isp/ispp get vaddr in buf queue avoid to map vaddr when vb2_plane_vaddr at interrupt Change-Id: Id391a405973a9838fbc97065e4e27f6b88c07b8c Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/capture_v1x.c | 1 + drivers/media/platform/rockchip/isp/capture_v20.c | 1 + drivers/media/platform/rockchip/isp/capture_v21.c | 1 + drivers/media/platform/rockchip/ispp/stats.c | 1 + 4 files changed, 4 insertions(+) diff --git a/drivers/media/platform/rockchip/isp/capture_v1x.c b/drivers/media/platform/rockchip/isp/capture_v1x.c index c7550cacac10..410cc0911d06 100644 --- a/drivers/media/platform/rockchip/isp/capture_v1x.c +++ b/drivers/media/platform/rockchip/isp/capture_v1x.c @@ -606,6 +606,7 @@ static void rkisp_buf_queue(struct vb2_buffer *vb) memset(ispbuf->buff_addr, 0, sizeof(ispbuf->buff_addr)); for (i = 0; i < isp_fmt->mplanes; i++) { + vb2_plane_vaddr(vb, i); if (stream->ispdev->hw_dev->is_mmu) { sgt = vb2_dma_sg_plane_desc(vb, i); ispbuf->buff_addr[i] = sg_dma_address(sgt->sgl); diff --git a/drivers/media/platform/rockchip/isp/capture_v20.c b/drivers/media/platform/rockchip/isp/capture_v20.c index b100e1aa3102..5fb45c2925db 100644 --- a/drivers/media/platform/rockchip/isp/capture_v20.c +++ b/drivers/media/platform/rockchip/isp/capture_v20.c @@ -1656,6 +1656,7 @@ static void rkisp_buf_queue(struct vb2_buffer *vb) memset(ispbuf->buff_addr, 0, sizeof(ispbuf->buff_addr)); for (i = 0; i < isp_fmt->mplanes; i++) { + vb2_plane_vaddr(vb, i); if (stream->ispdev->hw_dev->is_mmu) { sgt = vb2_dma_sg_plane_desc(vb, i); ispbuf->buff_addr[i] = sg_dma_address(sgt->sgl); diff --git a/drivers/media/platform/rockchip/isp/capture_v21.c b/drivers/media/platform/rockchip/isp/capture_v21.c index c1b2f548c4ec..5f7794ae30de 100644 --- a/drivers/media/platform/rockchip/isp/capture_v21.c +++ b/drivers/media/platform/rockchip/isp/capture_v21.c @@ -960,6 +960,7 @@ static void rkisp_buf_queue(struct vb2_buffer *vb) memset(ispbuf->buff_addr, 0, sizeof(ispbuf->buff_addr)); for (i = 0; i < isp_fmt->mplanes; i++) { + vb2_plane_vaddr(vb, i); if (stream->ispdev->hw_dev->is_mmu) { sgt = vb2_dma_sg_plane_desc(vb, i); ispbuf->buff_addr[i] = sg_dma_address(sgt->sgl); diff --git a/drivers/media/platform/rockchip/ispp/stats.c b/drivers/media/platform/rockchip/ispp/stats.c index 9b11fdb332dc..764dea95d069 100644 --- a/drivers/media/platform/rockchip/ispp/stats.c +++ b/drivers/media/platform/rockchip/ispp/stats.c @@ -214,6 +214,7 @@ static void rkispp_stats_vb2_buf_queue(struct vb2_buffer *vb) struct rkispp_stats_vdev *stats_dev = vq->drv_priv; unsigned long lock_flags = 0; + vb2_plane_vaddr(vb, 0); if (stats_dev->dev->hw_dev->is_mmu) { struct sg_table *sgt = vb2_dma_sg_plane_desc(vb, 0);