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

[media] media/platform: convert drivers to use the new vb2_queue dev field

Stop using alloc_ctx and just fill in the device pointer.
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Mikhail Ulyanov <mikhail.ulyanov@cogentembedded.com>
Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent dce57314
...@@ -136,7 +136,6 @@ struct deinterlace_dev { ...@@ -136,7 +136,6 @@ struct deinterlace_dev {
struct dma_chan *dma_chan; struct dma_chan *dma_chan;
struct v4l2_m2m_dev *m2m_dev; struct v4l2_m2m_dev *m2m_dev;
struct vb2_alloc_ctx *alloc_ctx;
}; };
struct deinterlace_ctx { struct deinterlace_ctx {
...@@ -820,8 +819,6 @@ static int deinterlace_queue_setup(struct vb2_queue *vq, ...@@ -820,8 +819,6 @@ static int deinterlace_queue_setup(struct vb2_queue *vq,
*nbuffers = count; *nbuffers = count;
sizes[0] = size; sizes[0] = size;
alloc_ctxs[0] = ctx->dev->alloc_ctx;
dprintk(ctx->dev, "get %d buffer(s) of size %d each.\n", count, size); dprintk(ctx->dev, "get %d buffer(s) of size %d each.\n", count, size);
return 0; return 0;
...@@ -874,6 +871,7 @@ static int queue_init(void *priv, struct vb2_queue *src_vq, ...@@ -874,6 +871,7 @@ static int queue_init(void *priv, struct vb2_queue *src_vq,
src_vq->ops = &deinterlace_qops; src_vq->ops = &deinterlace_qops;
src_vq->mem_ops = &vb2_dma_contig_memops; src_vq->mem_ops = &vb2_dma_contig_memops;
src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
src_vq->dev = ctx->dev->v4l2_dev.dev;
q_data[V4L2_M2M_SRC].fmt = &formats[0]; q_data[V4L2_M2M_SRC].fmt = &formats[0];
q_data[V4L2_M2M_SRC].width = 640; q_data[V4L2_M2M_SRC].width = 640;
q_data[V4L2_M2M_SRC].height = 480; q_data[V4L2_M2M_SRC].height = 480;
...@@ -891,6 +889,7 @@ static int queue_init(void *priv, struct vb2_queue *src_vq, ...@@ -891,6 +889,7 @@ static int queue_init(void *priv, struct vb2_queue *src_vq,
dst_vq->ops = &deinterlace_qops; dst_vq->ops = &deinterlace_qops;
dst_vq->mem_ops = &vb2_dma_contig_memops; dst_vq->mem_ops = &vb2_dma_contig_memops;
dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
dst_vq->dev = ctx->dev->v4l2_dev.dev;
q_data[V4L2_M2M_DST].fmt = &formats[0]; q_data[V4L2_M2M_DST].fmt = &formats[0];
q_data[V4L2_M2M_DST].width = 640; q_data[V4L2_M2M_DST].width = 640;
q_data[V4L2_M2M_DST].height = 480; q_data[V4L2_M2M_DST].height = 480;
...@@ -1046,13 +1045,6 @@ static int deinterlace_probe(struct platform_device *pdev) ...@@ -1046,13 +1045,6 @@ static int deinterlace_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, pcdev); platform_set_drvdata(pdev, pcdev);
pcdev->alloc_ctx = vb2_dma_contig_init_ctx(&pdev->dev);
if (IS_ERR(pcdev->alloc_ctx)) {
v4l2_err(&pcdev->v4l2_dev, "Failed to alloc vb2 context\n");
ret = PTR_ERR(pcdev->alloc_ctx);
goto err_ctx;
}
pcdev->m2m_dev = v4l2_m2m_init(&m2m_ops); pcdev->m2m_dev = v4l2_m2m_init(&m2m_ops);
if (IS_ERR(pcdev->m2m_dev)) { if (IS_ERR(pcdev->m2m_dev)) {
v4l2_err(&pcdev->v4l2_dev, "Failed to init mem2mem device\n"); v4l2_err(&pcdev->v4l2_dev, "Failed to init mem2mem device\n");
...@@ -1064,8 +1056,6 @@ static int deinterlace_probe(struct platform_device *pdev) ...@@ -1064,8 +1056,6 @@ static int deinterlace_probe(struct platform_device *pdev)
err_m2m: err_m2m:
video_unregister_device(&pcdev->vfd); video_unregister_device(&pcdev->vfd);
err_ctx:
vb2_dma_contig_cleanup_ctx(pcdev->alloc_ctx);
unreg_dev: unreg_dev:
v4l2_device_unregister(&pcdev->v4l2_dev); v4l2_device_unregister(&pcdev->v4l2_dev);
rel_dma: rel_dma:
...@@ -1082,7 +1072,6 @@ static int deinterlace_remove(struct platform_device *pdev) ...@@ -1082,7 +1072,6 @@ static int deinterlace_remove(struct platform_device *pdev)
v4l2_m2m_release(pcdev->m2m_dev); v4l2_m2m_release(pcdev->m2m_dev);
video_unregister_device(&pcdev->vfd); video_unregister_device(&pcdev->vfd);
v4l2_device_unregister(&pcdev->v4l2_dev); v4l2_device_unregister(&pcdev->v4l2_dev);
vb2_dma_contig_cleanup_ctx(pcdev->alloc_ctx);
dma_release_channel(pcdev->dma_chan); dma_release_channel(pcdev->dma_chan);
return 0; return 0;
......
...@@ -1059,10 +1059,6 @@ static int mcam_vb_queue_setup(struct vb2_queue *vq, ...@@ -1059,10 +1059,6 @@ static int mcam_vb_queue_setup(struct vb2_queue *vq,
if (*nbufs < minbufs) if (*nbufs < minbufs)
*nbufs = minbufs; *nbufs = minbufs;
if (cam->buffer_mode == B_DMA_contig)
alloc_ctxs[0] = cam->vb_alloc_ctx;
else if (cam->buffer_mode == B_DMA_sg)
alloc_ctxs[0] = cam->vb_alloc_ctx_sg;
if (*num_planes) if (*num_planes)
return sizes[0] < size ? -EINVAL : 0; return sizes[0] < size ? -EINVAL : 0;
...@@ -1271,6 +1267,7 @@ static int mcam_setup_vb2(struct mcam_camera *cam) ...@@ -1271,6 +1267,7 @@ static int mcam_setup_vb2(struct mcam_camera *cam)
vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
vq->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ; vq->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ;
vq->buf_struct_size = sizeof(struct mcam_vb_buffer); vq->buf_struct_size = sizeof(struct mcam_vb_buffer);
vq->dev = cam->dev;
INIT_LIST_HEAD(&cam->buffers); INIT_LIST_HEAD(&cam->buffers);
switch (cam->buffer_mode) { switch (cam->buffer_mode) {
case B_DMA_contig: case B_DMA_contig:
...@@ -1279,9 +1276,6 @@ static int mcam_setup_vb2(struct mcam_camera *cam) ...@@ -1279,9 +1276,6 @@ static int mcam_setup_vb2(struct mcam_camera *cam)
vq->mem_ops = &vb2_dma_contig_memops; vq->mem_ops = &vb2_dma_contig_memops;
cam->dma_setup = mcam_ctlr_dma_contig; cam->dma_setup = mcam_ctlr_dma_contig;
cam->frame_complete = mcam_dma_contig_done; cam->frame_complete = mcam_dma_contig_done;
cam->vb_alloc_ctx = vb2_dma_contig_init_ctx(cam->dev);
if (IS_ERR(cam->vb_alloc_ctx))
return PTR_ERR(cam->vb_alloc_ctx);
#endif #endif
break; break;
case B_DMA_sg: case B_DMA_sg:
...@@ -1290,9 +1284,6 @@ static int mcam_setup_vb2(struct mcam_camera *cam) ...@@ -1290,9 +1284,6 @@ static int mcam_setup_vb2(struct mcam_camera *cam)
vq->mem_ops = &vb2_dma_sg_memops; vq->mem_ops = &vb2_dma_sg_memops;
cam->dma_setup = mcam_ctlr_dma_sg; cam->dma_setup = mcam_ctlr_dma_sg;
cam->frame_complete = mcam_dma_sg_done; cam->frame_complete = mcam_dma_sg_done;
cam->vb_alloc_ctx_sg = vb2_dma_sg_init_ctx(cam->dev);
if (IS_ERR(cam->vb_alloc_ctx_sg))
return PTR_ERR(cam->vb_alloc_ctx_sg);
#endif #endif
break; break;
case B_vmalloc: case B_vmalloc:
...@@ -1309,18 +1300,6 @@ static int mcam_setup_vb2(struct mcam_camera *cam) ...@@ -1309,18 +1300,6 @@ static int mcam_setup_vb2(struct mcam_camera *cam)
return vb2_queue_init(vq); return vb2_queue_init(vq);
} }
static void mcam_cleanup_vb2(struct mcam_camera *cam)
{
#ifdef MCAM_MODE_DMA_CONTIG
if (cam->buffer_mode == B_DMA_contig)
vb2_dma_contig_cleanup_ctx(cam->vb_alloc_ctx);
#endif
#ifdef MCAM_MODE_DMA_SG
if (cam->buffer_mode == B_DMA_sg)
vb2_dma_sg_cleanup_ctx(cam->vb_alloc_ctx_sg);
#endif
}
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
/* /*
...@@ -1875,7 +1854,6 @@ void mccic_shutdown(struct mcam_camera *cam) ...@@ -1875,7 +1854,6 @@ void mccic_shutdown(struct mcam_camera *cam)
cam_warn(cam, "Removing a device with users!\n"); cam_warn(cam, "Removing a device with users!\n");
mcam_ctlr_power_down(cam); mcam_ctlr_power_down(cam);
} }
mcam_cleanup_vb2(cam);
if (cam->buffer_mode == B_vmalloc) if (cam->buffer_mode == B_vmalloc)
mcam_free_dma_bufs(cam); mcam_free_dma_bufs(cam);
video_unregister_device(&cam->vdev); video_unregister_device(&cam->vdev);
......
...@@ -176,8 +176,6 @@ struct mcam_camera { ...@@ -176,8 +176,6 @@ struct mcam_camera {
/* DMA buffers - DMA modes */ /* DMA buffers - DMA modes */
struct mcam_vb_buffer *vb_bufs[MAX_DMA_BUFS]; struct mcam_vb_buffer *vb_bufs[MAX_DMA_BUFS];
struct vb2_alloc_ctx *vb_alloc_ctx;
struct vb2_alloc_ctx *vb_alloc_ctx_sg;
/* Mode-specific ops, set at open time */ /* Mode-specific ops, set at open time */
void (*dma_setup)(struct mcam_camera *cam); void (*dma_setup)(struct mcam_camera *cam);
......
...@@ -211,7 +211,6 @@ struct emmaprp_dev { ...@@ -211,7 +211,6 @@ struct emmaprp_dev {
struct clk *clk_emma_ahb, *clk_emma_ipg; struct clk *clk_emma_ahb, *clk_emma_ipg;
struct v4l2_m2m_dev *m2m_dev; struct v4l2_m2m_dev *m2m_dev;
struct vb2_alloc_ctx *alloc_ctx;
}; };
struct emmaprp_ctx { struct emmaprp_ctx {
...@@ -710,8 +709,6 @@ static int emmaprp_queue_setup(struct vb2_queue *vq, ...@@ -710,8 +709,6 @@ static int emmaprp_queue_setup(struct vb2_queue *vq,
*nbuffers = count; *nbuffers = count;
sizes[0] = size; sizes[0] = size;
alloc_ctxs[0] = ctx->dev->alloc_ctx;
dprintk(ctx->dev, "get %d buffer(s) of size %d each.\n", count, size); dprintk(ctx->dev, "get %d buffer(s) of size %d each.\n", count, size);
return 0; return 0;
...@@ -765,6 +762,7 @@ static int queue_init(void *priv, struct vb2_queue *src_vq, ...@@ -765,6 +762,7 @@ static int queue_init(void *priv, struct vb2_queue *src_vq,
src_vq->ops = &emmaprp_qops; src_vq->ops = &emmaprp_qops;
src_vq->mem_ops = &vb2_dma_contig_memops; src_vq->mem_ops = &vb2_dma_contig_memops;
src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
src_vq->dev = ctx->dev->v4l2_dev.dev;
ret = vb2_queue_init(src_vq); ret = vb2_queue_init(src_vq);
if (ret) if (ret)
...@@ -777,6 +775,7 @@ static int queue_init(void *priv, struct vb2_queue *src_vq, ...@@ -777,6 +775,7 @@ static int queue_init(void *priv, struct vb2_queue *src_vq,
dst_vq->ops = &emmaprp_qops; dst_vq->ops = &emmaprp_qops;
dst_vq->mem_ops = &vb2_dma_contig_memops; dst_vq->mem_ops = &vb2_dma_contig_memops;
dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
dst_vq->dev = ctx->dev->v4l2_dev.dev;
return vb2_queue_init(dst_vq); return vb2_queue_init(dst_vq);
} }
...@@ -948,18 +947,11 @@ static int emmaprp_probe(struct platform_device *pdev) ...@@ -948,18 +947,11 @@ static int emmaprp_probe(struct platform_device *pdev)
if (ret) if (ret)
goto rel_vdev; goto rel_vdev;
pcdev->alloc_ctx = vb2_dma_contig_init_ctx(&pdev->dev);
if (IS_ERR(pcdev->alloc_ctx)) {
v4l2_err(&pcdev->v4l2_dev, "Failed to alloc vb2 context\n");
ret = PTR_ERR(pcdev->alloc_ctx);
goto rel_vdev;
}
pcdev->m2m_dev = v4l2_m2m_init(&m2m_ops); pcdev->m2m_dev = v4l2_m2m_init(&m2m_ops);
if (IS_ERR(pcdev->m2m_dev)) { if (IS_ERR(pcdev->m2m_dev)) {
v4l2_err(&pcdev->v4l2_dev, "Failed to init mem2mem device\n"); v4l2_err(&pcdev->v4l2_dev, "Failed to init mem2mem device\n");
ret = PTR_ERR(pcdev->m2m_dev); ret = PTR_ERR(pcdev->m2m_dev);
goto rel_ctx; goto rel_vdev;
} }
ret = video_register_device(vfd, VFL_TYPE_GRABBER, 0); ret = video_register_device(vfd, VFL_TYPE_GRABBER, 0);
...@@ -973,8 +965,6 @@ static int emmaprp_probe(struct platform_device *pdev) ...@@ -973,8 +965,6 @@ static int emmaprp_probe(struct platform_device *pdev)
rel_m2m: rel_m2m:
v4l2_m2m_release(pcdev->m2m_dev); v4l2_m2m_release(pcdev->m2m_dev);
rel_ctx:
vb2_dma_contig_cleanup_ctx(pcdev->alloc_ctx);
rel_vdev: rel_vdev:
video_device_release(vfd); video_device_release(vfd);
unreg_dev: unreg_dev:
...@@ -993,7 +983,6 @@ static int emmaprp_remove(struct platform_device *pdev) ...@@ -993,7 +983,6 @@ static int emmaprp_remove(struct platform_device *pdev)
video_unregister_device(pcdev->vfd); video_unregister_device(pcdev->vfd);
v4l2_m2m_release(pcdev->m2m_dev); v4l2_m2m_release(pcdev->m2m_dev);
vb2_dma_contig_cleanup_ctx(pcdev->alloc_ctx);
v4l2_device_unregister(&pcdev->v4l2_dev); v4l2_device_unregister(&pcdev->v4l2_dev);
mutex_destroy(&pcdev->dev_mutex); mutex_destroy(&pcdev->dev_mutex);
......
...@@ -342,8 +342,6 @@ static int isp_video_queue_setup(struct vb2_queue *queue, ...@@ -342,8 +342,6 @@ static int isp_video_queue_setup(struct vb2_queue *queue,
if (sizes[0] == 0) if (sizes[0] == 0)
return -EINVAL; return -EINVAL;
alloc_ctxs[0] = video->alloc_ctx;
*count = min(*count, video->capture_mem / PAGE_ALIGN(sizes[0])); *count = min(*count, video->capture_mem / PAGE_ALIGN(sizes[0]));
return 0; return 0;
...@@ -1308,6 +1306,7 @@ static int isp_video_open(struct file *file) ...@@ -1308,6 +1306,7 @@ static int isp_video_open(struct file *file)
queue->mem_ops = &vb2_dma_contig_memops; queue->mem_ops = &vb2_dma_contig_memops;
queue->buf_struct_size = sizeof(struct isp_buffer); queue->buf_struct_size = sizeof(struct isp_buffer);
queue->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; queue->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
queue->dev = video->isp->dev;
ret = vb2_queue_init(&handle->queue); ret = vb2_queue_init(&handle->queue);
if (ret < 0) { if (ret < 0) {
...@@ -1414,15 +1413,9 @@ int omap3isp_video_init(struct isp_video *video, const char *name) ...@@ -1414,15 +1413,9 @@ int omap3isp_video_init(struct isp_video *video, const char *name)
return -EINVAL; return -EINVAL;
} }
video->alloc_ctx = vb2_dma_contig_init_ctx(video->isp->dev);
if (IS_ERR(video->alloc_ctx))
return PTR_ERR(video->alloc_ctx);
ret = media_entity_pads_init(&video->video.entity, 1, &video->pad); ret = media_entity_pads_init(&video->video.entity, 1, &video->pad);
if (ret < 0) { if (ret < 0)
vb2_dma_contig_cleanup_ctx(video->alloc_ctx);
return ret; return ret;
}
mutex_init(&video->mutex); mutex_init(&video->mutex);
atomic_set(&video->active, 0); atomic_set(&video->active, 0);
...@@ -1451,7 +1444,6 @@ int omap3isp_video_init(struct isp_video *video, const char *name) ...@@ -1451,7 +1444,6 @@ int omap3isp_video_init(struct isp_video *video, const char *name)
void omap3isp_video_cleanup(struct isp_video *video) void omap3isp_video_cleanup(struct isp_video *video)
{ {
vb2_dma_contig_cleanup_ctx(video->alloc_ctx);
media_entity_cleanup(&video->video.entity); media_entity_cleanup(&video->video.entity);
mutex_destroy(&video->queue_lock); mutex_destroy(&video->queue_lock);
mutex_destroy(&video->stream_lock); mutex_destroy(&video->stream_lock);
......
...@@ -171,7 +171,6 @@ struct isp_video { ...@@ -171,7 +171,6 @@ struct isp_video {
bool error; bool error;
/* Video buffers queue */ /* Video buffers queue */
void *alloc_ctx;
struct vb2_queue *queue; struct vb2_queue *queue;
struct mutex queue_lock; /* protects the queue */ struct mutex queue_lock; /* protects the queue */
spinlock_t irqlock; /* protects dmaqueue */ spinlock_t irqlock; /* protects dmaqueue */
......
...@@ -203,7 +203,6 @@ ...@@ -203,7 +203,6 @@
* @irq: JPEG IP irq * @irq: JPEG IP irq
* @clk: JPEG IP clock * @clk: JPEG IP clock
* @dev: JPEG IP struct device * @dev: JPEG IP struct device
* @alloc_ctx: videobuf2 memory allocator's context
* @ref_count: reference counter * @ref_count: reference counter
*/ */
struct jpu { struct jpu {
...@@ -220,7 +219,6 @@ struct jpu { ...@@ -220,7 +219,6 @@ struct jpu {
unsigned int irq; unsigned int irq;
struct clk *clk; struct clk *clk;
struct device *dev; struct device *dev;
void *alloc_ctx;
int ref_count; int ref_count;
}; };
...@@ -1033,17 +1031,14 @@ static int jpu_queue_setup(struct vb2_queue *vq, ...@@ -1033,17 +1031,14 @@ static int jpu_queue_setup(struct vb2_queue *vq,
if (sizes[i] < q_size) if (sizes[i] < q_size)
return -EINVAL; return -EINVAL;
alloc_ctxs[i] = ctx->jpu->alloc_ctx;
} }
return 0; return 0;
} }
*nplanes = q_data->format.num_planes; *nplanes = q_data->format.num_planes;
for (i = 0; i < *nplanes; i++) { for (i = 0; i < *nplanes; i++)
sizes[i] = q_data->format.plane_fmt[i].sizeimage; sizes[i] = q_data->format.plane_fmt[i].sizeimage;
alloc_ctxs[i] = ctx->jpu->alloc_ctx;
}
return 0; return 0;
} }
...@@ -1214,6 +1209,7 @@ static int jpu_queue_init(void *priv, struct vb2_queue *src_vq, ...@@ -1214,6 +1209,7 @@ static int jpu_queue_init(void *priv, struct vb2_queue *src_vq,
src_vq->mem_ops = &vb2_dma_contig_memops; src_vq->mem_ops = &vb2_dma_contig_memops;
src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
src_vq->lock = &ctx->jpu->mutex; src_vq->lock = &ctx->jpu->mutex;
src_vq->dev = ctx->jpu->v4l2_dev.dev;
ret = vb2_queue_init(src_vq); ret = vb2_queue_init(src_vq);
if (ret) if (ret)
...@@ -1228,6 +1224,7 @@ static int jpu_queue_init(void *priv, struct vb2_queue *src_vq, ...@@ -1228,6 +1224,7 @@ static int jpu_queue_init(void *priv, struct vb2_queue *src_vq,
dst_vq->mem_ops = &vb2_dma_contig_memops; dst_vq->mem_ops = &vb2_dma_contig_memops;
dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
dst_vq->lock = &ctx->jpu->mutex; dst_vq->lock = &ctx->jpu->mutex;
dst_vq->dev = ctx->jpu->v4l2_dev.dev;
return vb2_queue_init(dst_vq); return vb2_queue_init(dst_vq);
} }
...@@ -1676,13 +1673,6 @@ static int jpu_probe(struct platform_device *pdev) ...@@ -1676,13 +1673,6 @@ static int jpu_probe(struct platform_device *pdev)
goto device_register_rollback; goto device_register_rollback;
} }
jpu->alloc_ctx = vb2_dma_contig_init_ctx(&pdev->dev);
if (IS_ERR(jpu->alloc_ctx)) {
v4l2_err(&jpu->v4l2_dev, "Failed to init memory allocator\n");
ret = PTR_ERR(jpu->alloc_ctx);
goto m2m_init_rollback;
}
/* fill in qantization and Huffman tables for encoder */ /* fill in qantization and Huffman tables for encoder */
for (i = 0; i < JPU_MAX_QUALITY; i++) for (i = 0; i < JPU_MAX_QUALITY; i++)
jpu_generate_hdr(i, (unsigned char *)jpeg_hdrs[i]); jpu_generate_hdr(i, (unsigned char *)jpeg_hdrs[i]);
...@@ -1699,7 +1689,7 @@ static int jpu_probe(struct platform_device *pdev) ...@@ -1699,7 +1689,7 @@ static int jpu_probe(struct platform_device *pdev)
ret = video_register_device(&jpu->vfd_encoder, VFL_TYPE_GRABBER, -1); ret = video_register_device(&jpu->vfd_encoder, VFL_TYPE_GRABBER, -1);
if (ret) { if (ret) {
v4l2_err(&jpu->v4l2_dev, "Failed to register video device\n"); v4l2_err(&jpu->v4l2_dev, "Failed to register video device\n");
goto vb2_allocator_rollback; goto m2m_init_rollback;
} }
video_set_drvdata(&jpu->vfd_encoder, jpu); video_set_drvdata(&jpu->vfd_encoder, jpu);
...@@ -1732,9 +1722,6 @@ static int jpu_probe(struct platform_device *pdev) ...@@ -1732,9 +1722,6 @@ static int jpu_probe(struct platform_device *pdev)
enc_vdev_register_rollback: enc_vdev_register_rollback:
video_unregister_device(&jpu->vfd_encoder); video_unregister_device(&jpu->vfd_encoder);
vb2_allocator_rollback:
vb2_dma_contig_cleanup_ctx(jpu->alloc_ctx);
m2m_init_rollback: m2m_init_rollback:
v4l2_m2m_release(jpu->m2m_dev); v4l2_m2m_release(jpu->m2m_dev);
...@@ -1750,7 +1737,6 @@ static int jpu_remove(struct platform_device *pdev) ...@@ -1750,7 +1737,6 @@ static int jpu_remove(struct platform_device *pdev)
video_unregister_device(&jpu->vfd_decoder); video_unregister_device(&jpu->vfd_decoder);
video_unregister_device(&jpu->vfd_encoder); video_unregister_device(&jpu->vfd_encoder);
vb2_dma_contig_cleanup_ctx(jpu->alloc_ctx);
v4l2_m2m_release(jpu->m2m_dev); v4l2_m2m_release(jpu->m2m_dev);
v4l2_device_unregister(&jpu->v4l2_dev); v4l2_device_unregister(&jpu->v4l2_dev);
......
...@@ -118,7 +118,6 @@ struct sh_veu_dev { ...@@ -118,7 +118,6 @@ struct sh_veu_dev {
struct sh_veu_file *output; struct sh_veu_file *output;
struct mutex fop_lock; struct mutex fop_lock;
void __iomem *base; void __iomem *base;
struct vb2_alloc_ctx *alloc_ctx;
spinlock_t lock; spinlock_t lock;
bool is_2h; bool is_2h;
unsigned int xaction; unsigned int xaction;
...@@ -882,14 +881,11 @@ static int sh_veu_queue_setup(struct vb2_queue *vq, ...@@ -882,14 +881,11 @@ static int sh_veu_queue_setup(struct vb2_queue *vq,
*nbuffers = count; *nbuffers = count;
} }
if (*nplanes) { if (*nplanes)
alloc_ctxs[0] = veu->alloc_ctx;
return sizes[0] < size ? -EINVAL : 0; return sizes[0] < size ? -EINVAL : 0;
}
*nplanes = 1; *nplanes = 1;
sizes[0] = size; sizes[0] = size;
alloc_ctxs[0] = veu->alloc_ctx;
dev_dbg(veu->dev, "get %d buffer(s) of size %d each.\n", count, size); dev_dbg(veu->dev, "get %d buffer(s) of size %d each.\n", count, size);
...@@ -948,6 +944,7 @@ static int sh_veu_queue_init(void *priv, struct vb2_queue *src_vq, ...@@ -948,6 +944,7 @@ static int sh_veu_queue_init(void *priv, struct vb2_queue *src_vq,
src_vq->mem_ops = &vb2_dma_contig_memops; src_vq->mem_ops = &vb2_dma_contig_memops;
src_vq->lock = &veu->fop_lock; src_vq->lock = &veu->fop_lock;
src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
src_vq->dev = veu->v4l2_dev.dev;
ret = vb2_queue_init(src_vq); ret = vb2_queue_init(src_vq);
if (ret < 0) if (ret < 0)
...@@ -962,6 +959,7 @@ static int sh_veu_queue_init(void *priv, struct vb2_queue *src_vq, ...@@ -962,6 +959,7 @@ static int sh_veu_queue_init(void *priv, struct vb2_queue *src_vq,
dst_vq->mem_ops = &vb2_dma_contig_memops; dst_vq->mem_ops = &vb2_dma_contig_memops;
dst_vq->lock = &veu->fop_lock; dst_vq->lock = &veu->fop_lock;
dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
dst_vq->dev = veu->v4l2_dev.dev;
return vb2_queue_init(dst_vq); return vb2_queue_init(dst_vq);
} }
...@@ -1148,12 +1146,6 @@ static int sh_veu_probe(struct platform_device *pdev) ...@@ -1148,12 +1146,6 @@ static int sh_veu_probe(struct platform_device *pdev)
vdev = &veu->vdev; vdev = &veu->vdev;
veu->alloc_ctx = vb2_dma_contig_init_ctx(&pdev->dev);
if (IS_ERR(veu->alloc_ctx)) {
ret = PTR_ERR(veu->alloc_ctx);
goto einitctx;
}
*vdev = sh_veu_videodev; *vdev = sh_veu_videodev;
vdev->v4l2_dev = &veu->v4l2_dev; vdev->v4l2_dev = &veu->v4l2_dev;
spin_lock_init(&veu->lock); spin_lock_init(&veu->lock);
...@@ -1187,8 +1179,6 @@ static int sh_veu_probe(struct platform_device *pdev) ...@@ -1187,8 +1179,6 @@ static int sh_veu_probe(struct platform_device *pdev)
pm_runtime_disable(&pdev->dev); pm_runtime_disable(&pdev->dev);
v4l2_m2m_release(veu->m2m_dev); v4l2_m2m_release(veu->m2m_dev);
em2minit: em2minit:
vb2_dma_contig_cleanup_ctx(veu->alloc_ctx);
einitctx:
v4l2_device_unregister(&veu->v4l2_dev); v4l2_device_unregister(&veu->v4l2_dev);
return ret; return ret;
} }
...@@ -1202,7 +1192,6 @@ static int sh_veu_remove(struct platform_device *pdev) ...@@ -1202,7 +1192,6 @@ static int sh_veu_remove(struct platform_device *pdev)
video_unregister_device(&veu->vdev); video_unregister_device(&veu->vdev);
pm_runtime_disable(&pdev->dev); pm_runtime_disable(&pdev->dev);
v4l2_m2m_release(veu->m2m_dev); v4l2_m2m_release(veu->m2m_dev);
vb2_dma_contig_cleanup_ctx(veu->alloc_ctx);
v4l2_device_unregister(&veu->v4l2_dev); v4l2_device_unregister(&veu->v4l2_dev);
return 0; return 0;
......
...@@ -86,7 +86,6 @@ struct sh_vou_device { ...@@ -86,7 +86,6 @@ struct sh_vou_device {
v4l2_std_id std; v4l2_std_id std;
int pix_idx; int pix_idx;
struct vb2_queue queue; struct vb2_queue queue;
struct vb2_alloc_ctx *alloc_ctx;
struct sh_vou_buffer *active; struct sh_vou_buffer *active;
enum sh_vou_status status; enum sh_vou_status status;
unsigned sequence; unsigned sequence;
...@@ -253,7 +252,6 @@ static int sh_vou_queue_setup(struct vb2_queue *vq, ...@@ -253,7 +252,6 @@ static int sh_vou_queue_setup(struct vb2_queue *vq,
dev_dbg(vou_dev->v4l2_dev.dev, "%s()\n", __func__); dev_dbg(vou_dev->v4l2_dev.dev, "%s()\n", __func__);
alloc_ctxs[0] = vou_dev->alloc_ctx;
if (*nplanes) if (*nplanes)
return sizes[0] < pix->height * bytes_per_line ? -EINVAL : 0; return sizes[0] < pix->height * bytes_per_line ? -EINVAL : 0;
*nplanes = 1; *nplanes = 1;
...@@ -1304,16 +1302,11 @@ static int sh_vou_probe(struct platform_device *pdev) ...@@ -1304,16 +1302,11 @@ static int sh_vou_probe(struct platform_device *pdev)
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
q->min_buffers_needed = 2; q->min_buffers_needed = 2;
q->lock = &vou_dev->fop_lock; q->lock = &vou_dev->fop_lock;
q->dev = &pdev->dev;
ret = vb2_queue_init(q); ret = vb2_queue_init(q);
if (ret) if (ret)
goto einitctx; goto ei2cgadap;
vou_dev->alloc_ctx = vb2_dma_contig_init_ctx(&pdev->dev);
if (IS_ERR(vou_dev->alloc_ctx)) {
dev_err(&pdev->dev, "Can't allocate buffer context");
ret = PTR_ERR(vou_dev->alloc_ctx);
goto einitctx;
}
vdev->queue = q; vdev->queue = q;
INIT_LIST_HEAD(&vou_dev->buf_list); INIT_LIST_HEAD(&vou_dev->buf_list);
...@@ -1348,8 +1341,6 @@ static int sh_vou_probe(struct platform_device *pdev) ...@@ -1348,8 +1341,6 @@ static int sh_vou_probe(struct platform_device *pdev)
ereset: ereset:
i2c_put_adapter(i2c_adap); i2c_put_adapter(i2c_adap);
ei2cgadap: ei2cgadap:
vb2_dma_contig_cleanup_ctx(vou_dev->alloc_ctx);
einitctx:
pm_runtime_disable(&pdev->dev); pm_runtime_disable(&pdev->dev);
v4l2_device_unregister(&vou_dev->v4l2_dev); v4l2_device_unregister(&vou_dev->v4l2_dev);
return ret; return ret;
...@@ -1367,7 +1358,6 @@ static int sh_vou_remove(struct platform_device *pdev) ...@@ -1367,7 +1358,6 @@ static int sh_vou_remove(struct platform_device *pdev)
pm_runtime_disable(&pdev->dev); pm_runtime_disable(&pdev->dev);
video_unregister_device(&vou_dev->vdev); video_unregister_device(&vou_dev->vdev);
i2c_put_adapter(client->adapter); i2c_put_adapter(client->adapter);
vb2_dma_contig_cleanup_ctx(vou_dev->alloc_ctx);
v4l2_device_unregister(&vou_dev->v4l2_dev); v4l2_device_unregister(&vou_dev->v4l2_dev);
return 0; return 0;
} }
......
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