media: rockchip: ispp: optimize first frame memory copy

Change-Id: I38803f1b8cb5bbe6fe53856037eb9214c0e85cbe
Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
Cai YiWei
2021-04-08 19:10:53 +08:00
committed by Tao Huang
parent 6f4298adbc
commit f7fb9e42a9
3 changed files with 8 additions and 5 deletions

View File

@@ -327,6 +327,7 @@ static int rkispp_hw_probe(struct platform_device *pdev)
hw_dev->is_dma_contig = true;
hw_dev->is_shutdown = false;
hw_dev->is_first = true;
hw_dev->first_frame_dma = -1;
hw_dev->is_mmu = is_iommu_enable(dev);
ret = of_reserved_mem_device_init(dev);
if (ret) {

View File

@@ -53,6 +53,7 @@ struct rkispp_hw_dev {
atomic_t refcnt;
const struct vb2_mem_ops *mem_ops;
struct rkisp_ispp_reg *reg_buf;
u32 first_frame_dma;
bool is_mmu;
bool is_idle;
bool is_single;

View File

@@ -2537,6 +2537,10 @@ static void nr_work_event(struct rkispp_device *dev,
dbuf = vdev->nr.cur_rd->dbuf[GROUP_BUF_PIC];
dummy = dbuf_to_dummy(dbuf, &vdev->tnr.buf.iir, size);
val = dummy->dma_addr;
if (dev->hw_dev->is_first && dev->hw_dev->first_frame_dma != -1) {
val = dev->hw_dev->first_frame_dma;
dev->hw_dev->first_frame_dma = -1;
}
rkispp_write(dev, RKISPP_NR_ADDR_BASE_Y, val);
val += vdev->nr.uv_offset;
rkispp_write(dev, RKISPP_NR_ADDR_BASE_UV, val);
@@ -2718,13 +2722,10 @@ static void tnr_work_event(struct rkispp_device *dev,
if (!buf_rd && !buf_wr && is_isr) {
vdev->tnr.is_end = true;
if (dev->hw_dev->is_first && vdev->tnr.nxt_rd && vdev->tnr.cur_wr) {
if (dev->hw_dev->is_first && vdev->tnr.nxt_rd) {
struct rkispp_isp_buf_pool *tbuf = get_pool_buf(dev, vdev->tnr.nxt_rd);
dbuf = vdev->tnr.cur_wr->dbuf[GROUP_BUF_PIC];
dummy = dbuf_to_dummy(dbuf, &vdev->tnr.buf.iir, size);
memcpy(dummy->vaddr, tbuf->vaddr[GROUP_BUF_PIC], dummy->size);
rkispp_prepare_buffer(dev, dummy);
dev->hw_dev->first_frame_dma = tbuf->dma[GROUP_BUF_PIC];
}
if (vdev->tnr.cur_rd) {