mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
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:
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user