media: rockchip: ispp: add the iqtool module

Change-Id: I12bebaf79c5ed7de61d1869819b96b22c5b7ff3b
Signed-off-by: Lian Xu <xu.lian@rock-chips.com>
This commit is contained in:
Lian Xu
2021-12-11 21:39:22 +08:00
committed by Tao Huang
parent 2550f7a43d
commit fdee9ffb97
5 changed files with 18 additions and 27 deletions

View File

@@ -132,16 +132,14 @@ static int rkispp_create_links(struct rkispp_device *ispp_dev)
stream->linked = true;
}
source = &stream->vnode.vdev.entity;
ret = media_create_pad_link(source, 0, sink,
RKISPP_PAD_SINK, flags);
ret = media_create_pad_link(source, 0, sink, RKISPP_PAD_SINK, flags);
if (ret < 0)
return ret;
/* params links */
flags = MEDIA_LNK_FL_ENABLED;
source = &ispp_dev->params_vdev.vnode.vdev.entity;
ret = media_create_pad_link(source, 0, sink,
RKISPP_PAD_SINK_PARAMS, flags);
ret = media_create_pad_link(source, 0, sink, RKISPP_PAD_SINK_PARAMS, flags);
if (ret < 0)
return ret;
ispp_dev->stream_vdev.module_ens = ISPP_MODULE_FEC;
@@ -150,8 +148,7 @@ static int rkispp_create_links(struct rkispp_device *ispp_dev)
flags = MEDIA_LNK_FL_ENABLED;
source = &ispp_dev->ispp_sdev.sd.entity;
sink = &ispp_dev->stats_vdev.vnode.vdev.entity;
ret = media_create_pad_link(source, RKISPP_PAD_SOURCE_STATS,
sink, 0, flags);
ret = media_create_pad_link(source, RKISPP_PAD_SOURCE_STATS, sink, 0, flags);
if (ret < 0)
return ret;
@@ -159,32 +156,21 @@ static int rkispp_create_links(struct rkispp_device *ispp_dev)
stream = &stream_vdev->stream[STREAM_S0];
stream->linked = flags;
sink = &stream->vnode.vdev.entity;
ret = media_create_pad_link(source, RKISPP_PAD_SOURCE,
sink, 0, flags);
ret = media_create_pad_link(source, RKISPP_PAD_SOURCE, sink, 0, flags);
if (ret < 0)
return ret;
stream = &stream_vdev->stream[STREAM_S1];
stream->linked = flags;
sink = &stream->vnode.vdev.entity;
ret = media_create_pad_link(source, RKISPP_PAD_SOURCE,
sink, 0, flags);
ret = media_create_pad_link(source, RKISPP_PAD_SOURCE, sink, 0, flags);
if (ret < 0)
return ret;
stream = &stream_vdev->stream[STREAM_S2];
stream->linked = flags;
sink = &stream->vnode.vdev.entity;
ret = media_create_pad_link(source, RKISPP_PAD_SOURCE,
sink, 0, flags);
if (ret < 0)
return ret;
stream = &stream_vdev->stream[STREAM_VIR];
stream->linked = flags;
sink = &stream->vnode.vdev.entity;
ret = media_create_pad_link(source, RKISPP_PAD_SOURCE,
sink, 0, flags);
ret = media_create_pad_link(source, RKISPP_PAD_SOURCE, sink, 0, flags);
if (ret < 0)
return ret;
@@ -196,8 +182,14 @@ static int rkispp_create_links(struct rkispp_device *ispp_dev)
stream->linked = flags;
source = &ispp_dev->ispp_sdev.sd.entity;
sink = &stream->vnode.vdev.entity;
ret = media_create_pad_link(source, RKISPP_PAD_SOURCE,
sink, 0, flags);
ret = media_create_pad_link(source, RKISPP_PAD_SOURCE, sink, 0, flags);
if (ret < 0)
return ret;
stream = &stream_vdev->stream[STREAM_VIR];
stream->linked = flags;
sink = &stream->vnode.vdev.entity;
ret = media_create_pad_link(source, RKISPP_PAD_SOURCE, sink, 0, flags);
if (ret < 0)
return ret;

View File

@@ -391,7 +391,7 @@ static int rkispp_hw_probe(struct platform_device *pdev)
atomic_set(&hw_dev->refcnt, 0);
INIT_LIST_HEAD(&hw_dev->list);
hw_dev->is_idle = true;
hw_dev->is_single = false;
hw_dev->is_single = true;
hw_dev->is_fec_ext = false;
hw_dev->is_dma_contig = true;
hw_dev->is_dma_sg_ops = false;

View File

@@ -1934,7 +1934,7 @@ int rkispp_register_stream_vdevs(struct rkispp_device *dev)
stream_vdev->frame_qst.function = stream_vdev->stream_ops->rkispp_frame_done_early;
dev->hw_dev->pool[0].group_buf_max = GROUP_BUF_MAX;
} else if (dev->ispp_ver == ISPP_V20) {
dev->stream_max = STREAM_MB + 1;
dev->stream_max = STREAM_VIR + 1;
rkispp_stream_init_ops_v20(stream_vdev);
dev->hw_dev->pool[0].group_buf_max = GROUP_BUF_GAIN;
}

View File

@@ -20,10 +20,10 @@ struct rkispp_stream;
enum rkispp_stream_id {
STREAM_II = 0,
STREAM_MB,
STREAM_VIR,
STREAM_S0,
STREAM_S1,
STREAM_S2,
STREAM_VIR,
STREAM_MAX
};

View File

@@ -336,8 +336,7 @@ static void rkispp_module_work_event(struct rkispp_device *dev,
* tnr->nr->fec frame0
* |->tnr->nr->fec frame1
*/
if (is_isr && !buf_rd && !buf_wr &&
(module == ISPP_MODULE_FEC && dev->hw_dev->is_single)) {
if (is_isr && !buf_rd && !buf_wr) {
dev->stream_vdev.monitor.retry = 0;
rkispp_event_handle(dev, CMD_QUEUE_DMABUF, NULL);