From bfdc2e913561ca6cc42130d7ee005ad61cc5ee9f Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Thu, 15 Oct 2020 09:49:10 +0800 Subject: [PATCH] media: rockchip: isp: resolution write directly to reg for first dev Change-Id: I75f2aced1de968eb0bb16f9643b93bb5709550c3 Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/csi.c | 1 + drivers/media/platform/rockchip/isp/rkisp.c | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/drivers/media/platform/rockchip/isp/csi.c b/drivers/media/platform/rockchip/isp/csi.c index 3063df3e6742..0fbed1c3d5a6 100644 --- a/drivers/media/platform/rockchip/isp/csi.c +++ b/drivers/media/platform/rockchip/isp/csi.c @@ -474,6 +474,7 @@ void rkisp_trigger_read_back(struct rkisp_csi_device *csi, u8 dma2frm, u32 mode) u32 val, cur_frame_id, tmp; bool is_upd = false; + hw->cur_dev_id = dev->dev_id; rkisp_dmarx_get_frame(dev, &cur_frame_id, NULL, true); if (dma2frm > 2) dma2frm = 2; diff --git a/drivers/media/platform/rockchip/isp/rkisp.c b/drivers/media/platform/rockchip/isp/rkisp.c index 3e9861a0752c..3edc6641b77d 100644 --- a/drivers/media/platform/rockchip/isp/rkisp.c +++ b/drivers/media/platform/rockchip/isp/rkisp.c @@ -503,6 +503,10 @@ static int rkisp_config_isp(struct rkisp_device *dev) u32 signal = 0; u32 acq_mult = 0; u32 acq_prop = 0; + bool is_direct = true; + + if (atomic_read(&dev->hw_dev->refcnt) > 1) + is_direct = false; sensor = dev->active_sensor; in_fmt = &dev->isp_sdev.in_fmt; @@ -591,21 +595,21 @@ static int rkisp_config_isp(struct rkisp_device *dev) rkisp_write(dev, CIF_ISP_ACQ_NR_FRAMES, 0, true); /* Acquisition Size */ - rkisp_write(dev, CIF_ISP_ACQ_H_OFFS, acq_mult * in_crop->left, false); - rkisp_write(dev, CIF_ISP_ACQ_V_OFFS, in_crop->top, false); - rkisp_write(dev, CIF_ISP_ACQ_H_SIZE, acq_mult * in_crop->width, false); + rkisp_write(dev, CIF_ISP_ACQ_H_OFFS, acq_mult * in_crop->left, is_direct); + rkisp_write(dev, CIF_ISP_ACQ_V_OFFS, in_crop->top, is_direct); + rkisp_write(dev, CIF_ISP_ACQ_H_SIZE, acq_mult * in_crop->width, is_direct); /* ISP Out Area differ with ACQ is only FIFO, so don't crop in this */ rkisp_write(dev, CIF_ISP_OUT_H_OFFS, 0, true); rkisp_write(dev, CIF_ISP_OUT_V_OFFS, 0, true); - rkisp_write(dev, CIF_ISP_OUT_H_SIZE, in_crop->width, false); + rkisp_write(dev, CIF_ISP_OUT_H_SIZE, in_crop->width, is_direct); if (dev->cap_dev.stream[RKISP_STREAM_SP].interlaced) { - rkisp_write(dev, CIF_ISP_ACQ_V_SIZE, in_crop->height / 2, false); - rkisp_write(dev, CIF_ISP_OUT_V_SIZE, in_crop->height / 2, false); + rkisp_write(dev, CIF_ISP_ACQ_V_SIZE, in_crop->height / 2, is_direct); + rkisp_write(dev, CIF_ISP_OUT_V_SIZE, in_crop->height / 2, is_direct); } else { - rkisp_write(dev, CIF_ISP_ACQ_V_SIZE, in_crop->height, false); - rkisp_write(dev, CIF_ISP_OUT_V_SIZE, in_crop->height, false); + rkisp_write(dev, CIF_ISP_ACQ_V_SIZE, in_crop->height, is_direct); + rkisp_write(dev, CIF_ISP_OUT_V_SIZE, in_crop->height, is_direct); } /* interrupt mask */