From b93d53026908e53477e1e77632b766038daaf415 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Wed, 7 Dec 2022 14:50:26 +0800 Subject: [PATCH] media: rockchip: isp: online rx add memory compact or no Change-Id: I397741f023e1cd707e3d4f2ada32ee8b326303f0 Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/isp_external.h | 2 ++ drivers/media/platform/rockchip/isp/rkisp.c | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/rockchip/isp/isp_external.h b/drivers/media/platform/rockchip/isp/isp_external.h index fa0a9189caee..6e117d40cd4b 100644 --- a/drivers/media/platform/rockchip/isp/isp_external.h +++ b/drivers/media/platform/rockchip/isp/isp_external.h @@ -55,6 +55,8 @@ struct rkisp_rx_buf { bool is_resmem; bool is_switch; + + bool is_uncompact; }; #endif diff --git a/drivers/media/platform/rockchip/isp/rkisp.c b/drivers/media/platform/rockchip/isp/rkisp.c index 5a6ff034eb34..a565184320d0 100644 --- a/drivers/media/platform/rockchip/isp/rkisp.c +++ b/drivers/media/platform/rockchip/isp/rkisp.c @@ -2812,8 +2812,13 @@ static void rkisp_rx_qbuf_online(struct rkisp_stream *stream, rkisp_write(dev, stream->config->mi.y_base_ad_init, val, false); if (dev->hw_dev->is_unite) { - val += (stream->out_fmt.width / 2 - RKMOUDLE_UNITE_EXTEND_PIXEL) * - stream->out_isp_fmt.bpp[0] / 8; + u32 offs = stream->out_fmt.width / 2 - RKMOUDLE_UNITE_EXTEND_PIXEL; + + if (stream->memory) + offs *= DIV_ROUND_UP(stream->out_isp_fmt.bpp[0], 8); + else + offs = offs * stream->out_isp_fmt.bpp[0] / 8; + val += offs; rkisp_next_write(dev, stream->config->mi.y_base_ad_init, val, false); } } @@ -2967,6 +2972,10 @@ end: stream = &dev->dmarx_dev.stream[RKISP_STREAM_RAWRD1]; } if (dbufs->is_first) { + stream->memory = 0; + if (dbufs->is_uncompact) + stream->memory = SW_CSI_RAW_WR_SIMG_MODE; + rkisp_dmarx_set_fmt(stream, stream->out_fmt); stream->ops->config_mi(stream); dbufs->is_first = false; }