diff --git a/drivers/media/platform/rockchip/ispp/dev.c b/drivers/media/platform/rockchip/ispp/dev.c index 7c59f2985124..54fa571f8de1 100644 --- a/drivers/media/platform/rockchip/ispp/dev.c +++ b/drivers/media/platform/rockchip/ispp/dev.c @@ -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; diff --git a/drivers/media/platform/rockchip/ispp/hw.c b/drivers/media/platform/rockchip/ispp/hw.c index cfca23660507..2d0466070fd6 100644 --- a/drivers/media/platform/rockchip/ispp/hw.c +++ b/drivers/media/platform/rockchip/ispp/hw.c @@ -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; diff --git a/drivers/media/platform/rockchip/ispp/stream.c b/drivers/media/platform/rockchip/ispp/stream.c index aa442d6498a8..a2f4a96bdec2 100644 --- a/drivers/media/platform/rockchip/ispp/stream.c +++ b/drivers/media/platform/rockchip/ispp/stream.c @@ -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; } diff --git a/drivers/media/platform/rockchip/ispp/stream.h b/drivers/media/platform/rockchip/ispp/stream.h index e530c30dfb5d..8ffde026109d 100644 --- a/drivers/media/platform/rockchip/ispp/stream.h +++ b/drivers/media/platform/rockchip/ispp/stream.h @@ -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 }; diff --git a/drivers/media/platform/rockchip/ispp/stream_v20.c b/drivers/media/platform/rockchip/ispp/stream_v20.c index 90c5fe8f02b4..728a9c0afdf8 100644 --- a/drivers/media/platform/rockchip/ispp/stream_v20.c +++ b/drivers/media/platform/rockchip/ispp/stream_v20.c @@ -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);