diff --git a/drivers/media/platform/rockchip/isp/capture.c b/drivers/media/platform/rockchip/isp/capture.c index eed0d46a74bb..6f3d4611f123 100644 --- a/drivers/media/platform/rockchip/isp/capture.c +++ b/drivers/media/platform/rockchip/isp/capture.c @@ -2562,6 +2562,10 @@ void rkisp_set_stream_def_fmt(struct rkisp_device *dev, u32 id, memset(&pixm, 0, sizeof(pixm)); if (pixelformat) pixm.pixelformat = pixelformat; + else + pixm.pixelformat = stream->out_isp_fmt.fourcc; + if (!pixm.pixelformat) + return; pixm.width = width; pixm.height = height; rkisp_set_fmt(stream, &pixm, false); @@ -2899,7 +2903,6 @@ static int rkisp_register_stream_vdev(struct rkisp_stream *stream) case RKISP_STREAM_DMATX2://CSI_SRC_CH3 case RKISP_STREAM_DMATX3://CSI_SRC_CH4 pad = stream->id; - stream->linked = true; dev->csi_dev.sink[pad - 1].linked = true; dev->csi_dev.sink[pad - 1].index = BIT(pad - 1); break; @@ -2935,6 +2938,7 @@ static int rkisp_stream_init(struct rkisp_device *dev, u32 id) init_waitqueue_head(&stream->done); spin_lock_init(&stream->vbq_lock); + stream->linked = MEDIA_LNK_FL_ENABLED; /* isp2 disable MP/SP, enable BRIDGE default */ if ((id == RKISP_STREAM_SP || id == RKISP_STREAM_MP) && dev->isp_ver == ISP_V20) diff --git a/drivers/media/platform/rockchip/isp/dev.h b/drivers/media/platform/rockchip/isp/dev.h index 6610d3ccafcf..9c486f15d6b4 100644 --- a/drivers/media/platform/rockchip/isp/dev.h +++ b/drivers/media/platform/rockchip/isp/dev.h @@ -44,7 +44,7 @@ #include "isp_stats.h" #include "isp_mipi_luma.h" -#ifdef VIDEO_ROCKCHIP_ISP1 +#ifdef CONFIG_VIDEO_ROCKCHIP_ISP1 #define DRIVER_NAME "rkisp1" #else #define DRIVER_NAME "rkisp" diff --git a/drivers/media/platform/rockchip/isp/isp_mipi_luma.c b/drivers/media/platform/rockchip/isp/isp_mipi_luma.c index 5fff835e9a49..494dedb64cbc 100644 --- a/drivers/media/platform/rockchip/isp/isp_mipi_luma.c +++ b/drivers/media/platform/rockchip/isp/isp_mipi_luma.c @@ -426,6 +426,9 @@ int rkisp_register_luma_vdev(struct rkisp_luma_vdev *luma_vdev, struct media_entity *source, *sink; luma_vdev->dev = dev; + if (dev->isp_ver != ISP_V20) + return 0; + INIT_LIST_HEAD(&luma_vdev->stat); spin_lock_init(&luma_vdev->irq_lock); spin_lock_init(&luma_vdev->rd_lock); @@ -494,10 +497,11 @@ void rkisp_unregister_luma_vdev(struct rkisp_luma_vdev *luma_vdev) struct rkisp_vdev_node *node = &luma_vdev->vnode; struct video_device *vdev = &node->vdev; + if (luma_vdev->dev->isp_ver != ISP_V20) + return; kfifo_free(&luma_vdev->rd_kfifo); tasklet_kill(&luma_vdev->rd_tasklet); video_unregister_device(vdev); media_entity_cleanup(&vdev->entity); vb2_queue_release(vdev->queue); } - diff --git a/drivers/media/platform/rockchip/isp/rkisp.c b/drivers/media/platform/rockchip/isp/rkisp.c index b50aa535353d..2ffbc9d5eaec 100644 --- a/drivers/media/platform/rockchip/isp/rkisp.c +++ b/drivers/media/platform/rockchip/isp/rkisp.c @@ -1582,6 +1582,8 @@ static int rkisp_subdev_link_setup(struct media_entity *entity, struct rkisp_stream *stream = NULL; u8 rawrd = INP_RAWRD0 | INP_RAWRD1 | INP_RAWRD2; + if (local->index != RKISP_ISP_PAD_SINK) + return 0; if (!sd) return -ENODEV; dev = sd_to_isp_dev(sd);