Commit f4ab5d0b authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

media: media/platform: drop vb2_queue_release()

This is only needed for drivers that do not use vb2_fop_release().
Note that vb2_queue_release() is *not* the counterpart of vb2_queue_init()
as some drivers here seem to think.

Also use vb2_video_unregister_device() to automatically stop streaming
at unregister time for those drivers that set vdev->queue.

Note that sun4i-csi didn't unregister the video device at all. That's
now fixed.
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 11788d9b
...@@ -1597,7 +1597,6 @@ static int aspeed_video_setup_video(struct aspeed_video *video) ...@@ -1597,7 +1597,6 @@ static int aspeed_video_setup_video(struct aspeed_video *video)
video_set_drvdata(vdev, video); video_set_drvdata(vdev, video);
rc = video_register_device(vdev, VFL_TYPE_VIDEO, 0); rc = video_register_device(vdev, VFL_TYPE_VIDEO, 0);
if (rc) { if (rc) {
vb2_queue_release(vbq);
v4l2_ctrl_handler_free(&video->ctrl_handler); v4l2_ctrl_handler_free(&video->ctrl_handler);
v4l2_device_unregister(v4l2_dev); v4l2_device_unregister(v4l2_dev);
...@@ -1737,9 +1736,7 @@ static int aspeed_video_remove(struct platform_device *pdev) ...@@ -1737,9 +1736,7 @@ static int aspeed_video_remove(struct platform_device *pdev)
clk_unprepare(video->vclk); clk_unprepare(video->vclk);
clk_unprepare(video->eclk); clk_unprepare(video->eclk);
video_unregister_device(&video->vdev); vb2_video_unregister_device(&video->vdev);
vb2_queue_release(&video->queue);
v4l2_ctrl_handler_free(&video->ctrl_handler); v4l2_ctrl_handler_free(&video->ctrl_handler);
......
...@@ -1525,10 +1525,8 @@ int mtk_vcodec_dec_queue_init(void *priv, struct vb2_queue *src_vq, ...@@ -1525,10 +1525,8 @@ int mtk_vcodec_dec_queue_init(void *priv, struct vb2_queue *src_vq,
dst_vq->dev = &ctx->dev->plat_dev->dev; dst_vq->dev = &ctx->dev->plat_dev->dev;
ret = vb2_queue_init(dst_vq); ret = vb2_queue_init(dst_vq);
if (ret) { if (ret)
vb2_queue_release(src_vq);
mtk_v4l2_err("Failed to initialize videobuf2 queue(capture)"); mtk_v4l2_err("Failed to initialize videobuf2 queue(capture)");
}
return ret; return ret;
} }
...@@ -1453,13 +1453,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq, ...@@ -1453,13 +1453,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq,
dst_vq->allow_zero_bytesused = 1; dst_vq->allow_zero_bytesused = 1;
dst_vq->min_buffers_needed = 0; dst_vq->min_buffers_needed = 0;
dst_vq->dev = inst->core->dev; dst_vq->dev = inst->core->dev;
ret = vb2_queue_init(dst_vq); return vb2_queue_init(dst_vq);
if (ret) {
vb2_queue_release(src_vq);
return ret;
}
return 0;
} }
static int vdec_open(struct file *file) static int vdec_open(struct file *file)
......
...@@ -1129,13 +1129,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq, ...@@ -1129,13 +1129,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq,
dst_vq->allow_zero_bytesused = 1; dst_vq->allow_zero_bytesused = 1;
dst_vq->min_buffers_needed = 1; dst_vq->min_buffers_needed = 1;
dst_vq->dev = inst->core->dev; dst_vq->dev = inst->core->dev;
ret = vb2_queue_init(dst_vq); return vb2_queue_init(dst_vq);
if (ret) {
vb2_queue_release(src_vq);
return ret;
}
return 0;
} }
static void venc_inst_init(struct venus_inst *inst) static void venc_inst_init(struct venus_inst *inst)
......
...@@ -287,6 +287,7 @@ static int sun4i_csi_remove(struct platform_device *pdev) ...@@ -287,6 +287,7 @@ static int sun4i_csi_remove(struct platform_device *pdev)
v4l2_async_notifier_unregister(&csi->notifier); v4l2_async_notifier_unregister(&csi->notifier);
v4l2_async_notifier_cleanup(&csi->notifier); v4l2_async_notifier_cleanup(&csi->notifier);
vb2_video_unregister_device(&csi->vdev);
media_device_unregister(&csi->mdev); media_device_unregister(&csi->mdev);
sun4i_csi_dma_unregister(csi); sun4i_csi_dma_unregister(csi);
media_device_cleanup(&csi->mdev); media_device_cleanup(&csi->mdev);
......
...@@ -431,7 +431,7 @@ int sun4i_csi_dma_register(struct sun4i_csi *csi, int irq) ...@@ -431,7 +431,7 @@ int sun4i_csi_dma_register(struct sun4i_csi *csi, int irq)
ret = v4l2_device_register(csi->dev, &csi->v4l); ret = v4l2_device_register(csi->dev, &csi->v4l);
if (ret) { if (ret) {
dev_err(csi->dev, "Couldn't register the v4l2 device\n"); dev_err(csi->dev, "Couldn't register the v4l2 device\n");
goto err_free_queue; goto err_free_mutex;
} }
ret = devm_request_irq(csi->dev, irq, sun4i_csi_irq, 0, ret = devm_request_irq(csi->dev, irq, sun4i_csi_irq, 0,
...@@ -446,9 +446,6 @@ int sun4i_csi_dma_register(struct sun4i_csi *csi, int irq) ...@@ -446,9 +446,6 @@ int sun4i_csi_dma_register(struct sun4i_csi *csi, int irq)
err_unregister_device: err_unregister_device:
v4l2_device_unregister(&csi->v4l); v4l2_device_unregister(&csi->v4l);
err_free_queue:
vb2_queue_release(q);
err_free_mutex: err_free_mutex:
mutex_destroy(&csi->lock); mutex_destroy(&csi->lock);
return ret; return ret;
...@@ -457,6 +454,5 @@ int sun4i_csi_dma_register(struct sun4i_csi *csi, int irq) ...@@ -457,6 +454,5 @@ int sun4i_csi_dma_register(struct sun4i_csi *csi, int irq)
void sun4i_csi_dma_unregister(struct sun4i_csi *csi) void sun4i_csi_dma_unregister(struct sun4i_csi *csi)
{ {
v4l2_device_unregister(&csi->v4l); v4l2_device_unregister(&csi->v4l);
vb2_queue_release(&csi->queue);
mutex_destroy(&csi->lock); mutex_destroy(&csi->lock);
} }
...@@ -660,13 +660,11 @@ int sun6i_video_init(struct sun6i_video *video, struct sun6i_csi *csi, ...@@ -660,13 +660,11 @@ int sun6i_video_init(struct sun6i_video *video, struct sun6i_csi *csi,
if (ret < 0) { if (ret < 0) {
v4l2_err(&csi->v4l2_dev, v4l2_err(&csi->v4l2_dev,
"video_register_device failed: %d\n", ret); "video_register_device failed: %d\n", ret);
goto release_vb2; goto clean_entity;
} }
return 0; return 0;
release_vb2:
vb2_queue_release(&video->vb2_vidq);
clean_entity: clean_entity:
media_entity_cleanup(&video->vdev.entity); media_entity_cleanup(&video->vdev.entity);
mutex_destroy(&video->lock); mutex_destroy(&video->lock);
...@@ -675,8 +673,7 @@ int sun6i_video_init(struct sun6i_video *video, struct sun6i_csi *csi, ...@@ -675,8 +673,7 @@ int sun6i_video_init(struct sun6i_video *video, struct sun6i_csi *csi,
void sun6i_video_cleanup(struct sun6i_video *video) void sun6i_video_cleanup(struct sun6i_video *video)
{ {
video_unregister_device(&video->vdev); vb2_video_unregister_device(&video->vdev);
media_entity_cleanup(&video->vdev.entity); media_entity_cleanup(&video->vdev.entity);
vb2_queue_release(&video->vb2_vidq);
mutex_destroy(&video->lock); mutex_destroy(&video->lock);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment