Hi Hans, Thanks for the patch. On Sat, Apr 23, 2016 at 12:03 PM, Hans Verkuil <hverkuil@xxxxxxxxx> wrote: > From: Hans Verkuil <hans.verkuil@xxxxxxxxx> > > Stop using alloc_ctx and just fill in the device pointer. > > Signed-off-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> > Cc: "Lad, Prabhakar" <prabhakar.csengg@xxxxxxxxx> > Cc: Scott Jiang <scott.jiang.linux@xxxxxxxxx> > Acked-by: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> > --- > drivers/media/platform/am437x/am437x-vpfe.c | 10 +--------- > drivers/media/platform/am437x/am437x-vpfe.h | 2 -- > drivers/media/platform/davinci/vpbe_display.c | 12 +----------- > drivers/media/platform/davinci/vpif_capture.c | 11 +---------- > drivers/media/platform/davinci/vpif_capture.h | 2 -- > drivers/media/platform/davinci/vpif_display.c | 11 +---------- > drivers/media/platform/davinci/vpif_display.h | 2 -- > include/media/davinci/vpbe_display.h | 2 -- > 11 files changed, 8 insertions(+), 76 deletions(-) > For all the above Acked-by: Lad, Prabhakar <prabhakar.csengg@xxxxxxxxx> Cheers, --Prabhakar Lad > diff --git a/drivers/media/platform/am437x/am437x-vpfe.c b/drivers/media/platform/am437x/am437x-vpfe.c > index e749eb7..d22b09d 100644 > --- a/drivers/media/platform/am437x/am437x-vpfe.c > +++ b/drivers/media/platform/am437x/am437x-vpfe.c > @@ -1915,7 +1915,6 @@ static int vpfe_queue_setup(struct vb2_queue *vq, > > if (vq->num_buffers + *nbuffers < 3) > *nbuffers = 3 - vq->num_buffers; > - alloc_ctxs[0] = vpfe->alloc_ctx; > > if (*nplanes) { > if (sizes[0] < size) > @@ -2364,13 +2363,6 @@ static int vpfe_probe_complete(struct vpfe_device *vpfe) > goto probe_out; > > /* Initialize videobuf2 queue as per the buffer type */ > - vpfe->alloc_ctx = vb2_dma_contig_init_ctx(vpfe->pdev); > - if (IS_ERR(vpfe->alloc_ctx)) { > - vpfe_err(vpfe, "Failed to get the context\n"); > - err = PTR_ERR(vpfe->alloc_ctx); > - goto probe_out; > - } > - > q = &vpfe->buffer_queue; > q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; > q->io_modes = VB2_MMAP | VB2_DMABUF | VB2_READ; > @@ -2381,11 +2373,11 @@ static int vpfe_probe_complete(struct vpfe_device *vpfe) > q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; > q->lock = &vpfe->lock; > q->min_buffers_needed = 1; > + q->dev = vpfe->pdev; > > err = vb2_queue_init(q); > if (err) { > vpfe_err(vpfe, "vb2_queue_init() failed\n"); > - vb2_dma_contig_cleanup_ctx(vpfe->alloc_ctx); > goto probe_out; > } > > diff --git a/drivers/media/platform/am437x/am437x-vpfe.h b/drivers/media/platform/am437x/am437x-vpfe.h > index 777bf97..17d7aa4 100644 > --- a/drivers/media/platform/am437x/am437x-vpfe.h > +++ b/drivers/media/platform/am437x/am437x-vpfe.h > @@ -264,8 +264,6 @@ struct vpfe_device { > struct v4l2_rect crop; > /* Buffer queue used in video-buf */ > struct vb2_queue buffer_queue; > - /* Allocator-specific contexts for each plane */ > - struct vb2_alloc_ctx *alloc_ctx; > /* Queue of filled frames */ > struct list_head dma_queue; > /* IRQ lock for DMA queue */ > diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c > index d0092da..1e244287 100644 > --- a/drivers/media/platform/blackfin/bfin_capture.c > +++ b/drivers/media/platform/blackfin/bfin_capture.c > @@ -91,8 +91,6 @@ struct bcap_device { > struct bcap_buffer *cur_frm; > /* buffer queue used in videobuf2 */ > struct vb2_queue buffer_queue; > - /* allocator-specific contexts for each plane */ > - struct vb2_alloc_ctx *alloc_ctx; > /* queue of filled frames */ > struct list_head dma_queue; > /* used in videobuf2 callback */ > @@ -209,7 +207,6 @@ static int bcap_queue_setup(struct vb2_queue *vq, > > if (vq->num_buffers + *nbuffers < 2) > *nbuffers = 2; > - alloc_ctxs[0] = bcap_dev->alloc_ctx; > > if (*nplanes) > return sizes[0] < bcap_dev->fmt.sizeimage ? -EINVAL : 0; > @@ -820,12 +817,6 @@ static int bcap_probe(struct platform_device *pdev) > } > bcap_dev->ppi->priv = bcap_dev; > > - bcap_dev->alloc_ctx = vb2_dma_contig_init_ctx(&pdev->dev); > - if (IS_ERR(bcap_dev->alloc_ctx)) { > - ret = PTR_ERR(bcap_dev->alloc_ctx); > - goto err_free_ppi; > - } > - > vfd = &bcap_dev->video_dev; > /* initialize field of video device */ > vfd->release = video_device_release_empty; > @@ -839,7 +830,7 @@ static int bcap_probe(struct platform_device *pdev) > if (ret) { > v4l2_err(pdev->dev.driver, > "Unable to register v4l2 device\n"); > - goto err_cleanup_ctx; > + goto err_free_ppi; > } > v4l2_info(&bcap_dev->v4l2_dev, "v4l2 device registered\n"); > > @@ -863,6 +854,7 @@ static int bcap_probe(struct platform_device *pdev) > q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; > q->lock = &bcap_dev->mutex; > q->min_buffers_needed = 1; > + q->dev = &pdev->dev; > > ret = vb2_queue_init(q); > if (ret) > @@ -967,8 +959,6 @@ err_free_handler: > v4l2_ctrl_handler_free(&bcap_dev->ctrl_handler); > err_unreg_v4l2: > v4l2_device_unregister(&bcap_dev->v4l2_dev); > -err_cleanup_ctx: > - vb2_dma_contig_cleanup_ctx(bcap_dev->alloc_ctx); > err_free_ppi: > ppi_delete_instance(bcap_dev->ppi); > err_free_dev: > @@ -986,7 +976,6 @@ static int bcap_remove(struct platform_device *pdev) > video_unregister_device(&bcap_dev->video_dev); > v4l2_ctrl_handler_free(&bcap_dev->ctrl_handler); > v4l2_device_unregister(v4l2_dev); > - vb2_dma_contig_cleanup_ctx(bcap_dev->alloc_ctx); > ppi_delete_instance(bcap_dev->ppi); > kfree(bcap_dev); > return 0; > diff --git a/drivers/media/platform/coda/coda-common.c b/drivers/media/platform/coda/coda-common.c > index 133ab9f..3d57c35 100644 > --- a/drivers/media/platform/coda/coda-common.c > +++ b/drivers/media/platform/coda/coda-common.c > @@ -1151,9 +1151,6 @@ static int coda_queue_setup(struct vb2_queue *vq, > *nplanes = 1; > sizes[0] = size; > > - /* Set to vb2-dma-contig allocator context, ignored by vb2-vmalloc */ > - alloc_ctxs[0] = ctx->dev->alloc_ctx; > - > v4l2_dbg(1, coda_debug, &ctx->dev->v4l2_dev, > "get %d buffer(s) of size %d each.\n", *nbuffers, size); > > @@ -1599,6 +1596,7 @@ static int coda_queue_init(struct coda_ctx *ctx, struct vb2_queue *vq) > * that videobuf2 will keep the value of bytesused intact. > */ > vq->allow_zero_bytesused = 1; > + vq->dev = &ctx->dev->plat_dev->dev; > > return vb2_queue_init(vq); > } > @@ -2040,16 +2038,10 @@ static void coda_fw_callback(const struct firmware *fw, void *context) > if (ret < 0) > goto put_pm; > > - dev->alloc_ctx = vb2_dma_contig_init_ctx(&pdev->dev); > - if (IS_ERR(dev->alloc_ctx)) { > - v4l2_err(&dev->v4l2_dev, "Failed to alloc vb2 context\n"); > - goto put_pm; > - } > - > dev->m2m_dev = v4l2_m2m_init(&coda_m2m_ops); > if (IS_ERR(dev->m2m_dev)) { > v4l2_err(&dev->v4l2_dev, "Failed to init mem2mem device\n"); > - goto rel_ctx; > + goto put_pm; > } > > for (i = 0; i < dev->devtype->num_vdevs; i++) { > @@ -2072,8 +2064,6 @@ rel_vfd: > while (--i >= 0) > video_unregister_device(&dev->vfd[i]); > v4l2_m2m_release(dev->m2m_dev); > -rel_ctx: > - vb2_dma_contig_cleanup_ctx(dev->alloc_ctx); > put_pm: > pm_runtime_put_sync(&pdev->dev); > } > @@ -2324,8 +2314,6 @@ static int coda_remove(struct platform_device *pdev) > if (dev->m2m_dev) > v4l2_m2m_release(dev->m2m_dev); > pm_runtime_disable(&pdev->dev); > - if (dev->alloc_ctx) > - vb2_dma_contig_cleanup_ctx(dev->alloc_ctx); > v4l2_device_unregister(&dev->v4l2_dev); > destroy_workqueue(dev->workqueue); > if (dev->iram.vaddr) > diff --git a/drivers/media/platform/coda/coda.h b/drivers/media/platform/coda/coda.h > index 8f2c71e..53f9666 100644 > --- a/drivers/media/platform/coda/coda.h > +++ b/drivers/media/platform/coda/coda.h > @@ -92,7 +92,6 @@ struct coda_dev { > struct mutex coda_mutex; > struct workqueue_struct *workqueue; > struct v4l2_m2m_dev *m2m_dev; > - struct vb2_alloc_ctx *alloc_ctx; > struct list_head instances; > unsigned long instance_mask; > struct dentry *debugfs_root; > diff --git a/drivers/media/platform/davinci/vpbe_display.c b/drivers/media/platform/davinci/vpbe_display.c > index 0abcdfe..2a4c291 100644 > --- a/drivers/media/platform/davinci/vpbe_display.c > +++ b/drivers/media/platform/davinci/vpbe_display.c > @@ -242,7 +242,6 @@ vpbe_buffer_queue_setup(struct vb2_queue *vq, > /* Store number of buffers allocated in numbuffer member */ > if (vq->num_buffers + *nbuffers < VPBE_DEFAULT_NUM_BUFS) > *nbuffers = VPBE_DEFAULT_NUM_BUFS - vq->num_buffers; > - alloc_ctxs[0] = layer->alloc_ctx; > > if (*nplanes) > return sizes[0] < layer->pix_fmt.sizeimage ? -EINVAL : 0; > @@ -1451,20 +1450,13 @@ static int vpbe_display_probe(struct platform_device *pdev) > q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; > q->min_buffers_needed = 1; > q->lock = &disp_dev->dev[i]->opslock; > + q->dev = disp_dev->vpbe_dev->pdev; > err = vb2_queue_init(q); > if (err) { > v4l2_err(v4l2_dev, "vb2_queue_init() failed\n"); > goto probe_out; > } > > - disp_dev->dev[i]->alloc_ctx = > - vb2_dma_contig_init_ctx(disp_dev->vpbe_dev->pdev); > - if (IS_ERR(disp_dev->dev[i]->alloc_ctx)) { > - v4l2_err(v4l2_dev, "Failed to get the context\n"); > - err = PTR_ERR(disp_dev->dev[i]->alloc_ctx); > - goto probe_out; > - } > - > INIT_LIST_HEAD(&disp_dev->dev[i]->dma_queue); > > if (register_device(disp_dev->dev[i], disp_dev, pdev)) { > @@ -1482,7 +1474,6 @@ probe_out: > for (k = 0; k < VPBE_DISPLAY_MAX_DEVICES; k++) { > /* Unregister video device */ > if (disp_dev->dev[k] != NULL) { > - vb2_dma_contig_cleanup_ctx(disp_dev->dev[k]->alloc_ctx); > video_unregister_device(&disp_dev->dev[k]->video_dev); > kfree(disp_dev->dev[k]); > } > @@ -1510,7 +1501,6 @@ static int vpbe_display_remove(struct platform_device *pdev) > for (i = 0; i < VPBE_DISPLAY_MAX_DEVICES; i++) { > /* Get the pointer to the layer object */ > vpbe_display_layer = disp_dev->dev[i]; > - vb2_dma_contig_cleanup_ctx(vpbe_display_layer->alloc_ctx); > /* Unregister video device */ > video_unregister_device(&vpbe_display_layer->video_dev); > > diff --git a/drivers/media/platform/davinci/vpif_capture.c b/drivers/media/platform/davinci/vpif_capture.c > index 08f7028..d5afab0 100644 > --- a/drivers/media/platform/davinci/vpif_capture.c > +++ b/drivers/media/platform/davinci/vpif_capture.c > @@ -133,7 +133,6 @@ static int vpif_buffer_queue_setup(struct vb2_queue *vq, > > *nplanes = 1; > sizes[0] = size; > - alloc_ctxs[0] = common->alloc_ctx; > > /* Calculate the offset for Y and C data in the buffer */ > vpif_calculate_offsets(ch); > @@ -1371,6 +1370,7 @@ static int vpif_probe_complete(void) > q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; > q->min_buffers_needed = 1; > q->lock = &common->lock; > + q->dev = vpif_dev; > > err = vb2_queue_init(q); > if (err) { > @@ -1378,13 +1378,6 @@ static int vpif_probe_complete(void) > goto probe_out; > } > > - common->alloc_ctx = vb2_dma_contig_init_ctx(vpif_dev); > - if (IS_ERR(common->alloc_ctx)) { > - vpif_err("Failed to get the context\n"); > - err = PTR_ERR(common->alloc_ctx); > - goto probe_out; > - } > - > INIT_LIST_HEAD(&common->dma_queue); > > /* Initialize the video_device structure */ > @@ -1412,7 +1405,6 @@ probe_out: > /* Get the pointer to the channel object */ > ch = vpif_obj.dev[k]; > common = &ch->common[k]; > - vb2_dma_contig_cleanup_ctx(common->alloc_ctx); > /* Unregister video device */ > video_unregister_device(&ch->video_dev); > } > @@ -1546,7 +1538,6 @@ static int vpif_remove(struct platform_device *device) > /* Get the pointer to the channel object */ > ch = vpif_obj.dev[i]; > common = &ch->common[VPIF_VIDEO_INDEX]; > - vb2_dma_contig_cleanup_ctx(common->alloc_ctx); > /* Unregister video device */ > video_unregister_device(&ch->video_dev); > kfree(vpif_obj.dev[i]); > diff --git a/drivers/media/platform/davinci/vpif_capture.h b/drivers/media/platform/davinci/vpif_capture.h > index 4a76009..9e35b67 100644 > --- a/drivers/media/platform/davinci/vpif_capture.h > +++ b/drivers/media/platform/davinci/vpif_capture.h > @@ -65,8 +65,6 @@ struct common_obj { > struct v4l2_format fmt; > /* Buffer queue used in video-buf */ > struct vb2_queue buffer_queue; > - /* allocator-specific contexts for each plane */ > - struct vb2_alloc_ctx *alloc_ctx; > /* Queue of filled frames */ > struct list_head dma_queue; > /* Used in video-buf */ > diff --git a/drivers/media/platform/davinci/vpif_display.c b/drivers/media/platform/davinci/vpif_display.c > index f40755c..5d77884 100644 > --- a/drivers/media/platform/davinci/vpif_display.c > +++ b/drivers/media/platform/davinci/vpif_display.c > @@ -126,7 +126,6 @@ static int vpif_buffer_queue_setup(struct vb2_queue *vq, > > *nplanes = 1; > sizes[0] = size; > - alloc_ctxs[0] = common->alloc_ctx; > > /* Calculate the offset for Y and C data in the buffer */ > vpif_calculate_offsets(ch); > @@ -1191,19 +1190,13 @@ static int vpif_probe_complete(void) > q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; > q->min_buffers_needed = 1; > q->lock = &common->lock; > + q->dev = vpif_dev; > err = vb2_queue_init(q); > if (err) { > vpif_err("vpif_display: vb2_queue_init() failed\n"); > goto probe_out; > } > > - common->alloc_ctx = vb2_dma_contig_init_ctx(vpif_dev); > - if (IS_ERR(common->alloc_ctx)) { > - vpif_err("Failed to get the context\n"); > - err = PTR_ERR(common->alloc_ctx); > - goto probe_out; > - } > - > INIT_LIST_HEAD(&common->dma_queue); > > /* register video device */ > @@ -1233,7 +1226,6 @@ probe_out: > for (k = 0; k < j; k++) { > ch = vpif_obj.dev[k]; > common = &ch->common[k]; > - vb2_dma_contig_cleanup_ctx(common->alloc_ctx); > video_unregister_device(&ch->video_dev); > } > return err; > @@ -1355,7 +1347,6 @@ static int vpif_remove(struct platform_device *device) > /* Get the pointer to the channel object */ > ch = vpif_obj.dev[i]; > common = &ch->common[VPIF_VIDEO_INDEX]; > - vb2_dma_contig_cleanup_ctx(common->alloc_ctx); > /* Unregister video device */ > video_unregister_device(&ch->video_dev); > kfree(vpif_obj.dev[i]); > diff --git a/drivers/media/platform/davinci/vpif_display.h b/drivers/media/platform/davinci/vpif_display.h > index e7a1723..af2765f 100644 > --- a/drivers/media/platform/davinci/vpif_display.h > +++ b/drivers/media/platform/davinci/vpif_display.h > @@ -74,8 +74,6 @@ struct common_obj { > struct v4l2_format fmt; /* Used to store the format */ > struct vb2_queue buffer_queue; /* Buffer queue used in > * video-buf */ > - /* allocator-specific contexts for each plane */ > - struct vb2_alloc_ctx *alloc_ctx; > > struct list_head dma_queue; /* Queue of filled frames */ > spinlock_t irqlock; /* Used in video-buf */ > diff --git a/include/media/davinci/vpbe_display.h b/include/media/davinci/vpbe_display.h > index e14a937..12783fd 100644 > --- a/include/media/davinci/vpbe_display.h > +++ b/include/media/davinci/vpbe_display.h > @@ -81,8 +81,6 @@ struct vpbe_layer { > * Buffer queue used in video-buf > */ > struct vb2_queue buffer_queue; > - /* allocator-specific contexts for each plane */ > - struct vb2_alloc_ctx *alloc_ctx; > /* Queue of filled frames */ > struct list_head dma_queue; > /* Used in video-buf */ > -- > 2.8.0.rc3 > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html