*/
 static int sur40_queue_setup(struct vb2_queue *q,
                       unsigned int *nbuffers, unsigned int *nplanes,
-                      unsigned int sizes[], void *alloc_ctxs[])
+                      unsigned int sizes[], struct device *alloc_devs[])
 {
        if (q->num_buffers + *nbuffers < 3)
                *nbuffers = 3 - q->num_buffers;
 
 /* Videobuf2 operations */
 static int rtl2832_sdr_queue_setup(struct vb2_queue *vq,
                unsigned int *nbuffers,
-               unsigned int *nplanes, unsigned int sizes[], void *alloc_ctxs[])
+               unsigned int *nplanes, unsigned int sizes[], struct device *alloc_devs[])
 {
        struct rtl2832_sdr_dev *dev = vb2_get_drv_priv(vq);
        struct platform_device *pdev = dev->pdev;
 
 
 static int cobalt_queue_setup(struct vb2_queue *q,
                        unsigned int *num_buffers, unsigned int *num_planes,
-                       unsigned int sizes[], void *alloc_ctxs[])
+                       unsigned int sizes[], struct device *alloc_devs[])
 {
        struct cobalt_stream *s = q->drv_priv;
        unsigned size = s->stride * s->height;
 
 
 static int queue_setup(struct vb2_queue *q,
                           unsigned int *num_buffers, unsigned int *num_planes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct cx23885_dev *dev = q->drv_priv;
 
 
 
 static int queue_setup(struct vb2_queue *q,
                           unsigned int *num_buffers, unsigned int *num_planes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct cx23885_tsport *port = q->drv_priv;
 
 
 
 static int queue_setup(struct vb2_queue *q,
                           unsigned int *num_buffers, unsigned int *num_planes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct cx23885_dev *dev = q->drv_priv;
        unsigned lines = VBI_PAL_LINE_COUNT;
 
 
 static int queue_setup(struct vb2_queue *q,
                           unsigned int *num_buffers, unsigned int *num_planes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct cx23885_dev *dev = q->drv_priv;
 
 
 
 static int cx25821_queue_setup(struct vb2_queue *q,
                           unsigned int *num_buffers, unsigned int *num_planes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct cx25821_channel *chan = q->drv_priv;
        unsigned size = (chan->fmt->depth * chan->width * chan->height) >> 3;
 
 
 static int queue_setup(struct vb2_queue *q,
                           unsigned int *num_buffers, unsigned int *num_planes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct cx8802_dev *dev = q->drv_priv;
 
 
 
 static int queue_setup(struct vb2_queue *q,
                           unsigned int *num_buffers, unsigned int *num_planes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct cx8802_dev *dev = q->drv_priv;
 
 
 
 static int queue_setup(struct vb2_queue *q,
                           unsigned int *num_buffers, unsigned int *num_planes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct cx8800_dev *dev = q->drv_priv;
 
 
 
 static int queue_setup(struct vb2_queue *q,
                           unsigned int *num_buffers, unsigned int *num_planes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct cx8800_dev *dev = q->drv_priv;
        struct cx88_core *core = dev->core;
 
 static int
 dt3155_queue_setup(struct vb2_queue *vq,
                unsigned int *nbuffers, unsigned int *num_planes,
-               unsigned int sizes[], void *alloc_ctxs[])
+               unsigned int sizes[], struct device *alloc_devs[])
 
 {
        struct dt3155_priv *pd = vb2_get_drv_priv(vq);
 
                                    unsigned int *nbuffers,
                                    unsigned int *nplanes,
                                    unsigned int sizes[],
-                                   void *alloc_ctxs[])
+                                   struct device *alloc_devs[])
 {
        struct netup_dma *dma = vb2_get_drv_priv(vq);
 
 
 
 int saa7134_ts_queue_setup(struct vb2_queue *q,
                           unsigned int *nbuffers, unsigned int *nplanes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct saa7134_dmaqueue *dmaq = q->drv_priv;
        struct saa7134_dev *dev = dmaq->dev;
 
 
 static int queue_setup(struct vb2_queue *q,
                           unsigned int *nbuffers, unsigned int *nplanes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct saa7134_dmaqueue *dmaq = q->drv_priv;
        struct saa7134_dev *dev = dmaq->dev;
 
 
 static int queue_setup(struct vb2_queue *q,
                           unsigned int *nbuffers, unsigned int *nplanes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct saa7134_dmaqueue *dmaq = q->drv_priv;
        struct saa7134_dev *dev = dmaq->dev;
 
 int saa7134_ts_buffer_prepare(struct vb2_buffer *vb2);
 int saa7134_ts_queue_setup(struct vb2_queue *q,
                           unsigned int *nbuffers, unsigned int *nplanes,
-                          unsigned int sizes[], void *alloc_ctxs[]);
+                          unsigned int sizes[], struct device *alloc_devs[]);
 int saa7134_ts_start_streaming(struct vb2_queue *vq, unsigned int count);
 void saa7134_ts_stop_streaming(struct vb2_queue *vq);
 
 
 static int solo_enc_queue_setup(struct vb2_queue *q,
                                unsigned int *num_buffers,
                                unsigned int *num_planes, unsigned int sizes[],
-                               void *alloc_ctxs[])
+                               struct device *alloc_devs[])
 {
        sizes[0] = FRAME_BUF_SIZE;
        *num_planes = 1;
 
 
 static int solo_queue_setup(struct vb2_queue *q,
                           unsigned int *num_buffers, unsigned int *num_planes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct solo_dev *solo_dev = vb2_get_drv_priv(q);
 
 
 /* Videobuf2 Operations */
 static int queue_setup(struct vb2_queue *vq,
                       unsigned int *nbuffers, unsigned int *nplanes,
-                      unsigned int sizes[], void *alloc_ctxs[])
+                      unsigned int sizes[], struct device *alloc_devs[])
 {
        struct sta2x11_vip *vip = vb2_get_drv_priv(vq);
 
 
 
 static int tw68_queue_setup(struct vb2_queue *q,
                           unsigned int *num_buffers, unsigned int *num_planes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct tw68_dev *dev = vb2_get_drv_priv(q);
        unsigned tot_bufs = q->num_buffers + *num_buffers;
 
 
 static int tw686x_queue_setup(struct vb2_queue *vq,
                              unsigned int *nbuffers, unsigned int *nplanes,
-                             unsigned int sizes[], void *alloc_ctxs[])
+                             unsigned int sizes[], struct device *alloc_devs[])
 {
        struct tw686x_video_channel *vc = vb2_get_drv_priv(vq);
        unsigned int szimage =
 
  * @nbuffers: ptr to number of buffers requested by application
  * @nplanes:: contains number of distinct video planes needed to hold a frame
  * @sizes[]: contains the size (in bytes) of each plane.
- * @alloc_ctxs: ptr to allocation context
+ * @alloc_devs: ptr to allocation context
  *
  * This callback function is called when reqbuf() is called to adjust
  * the buffer count and buffer size
  */
 static int vpfe_queue_setup(struct vb2_queue *vq,
                            unsigned int *nbuffers, unsigned int *nplanes,
-                           unsigned int sizes[], void *alloc_ctxs[])
+                           unsigned int sizes[], struct device *alloc_devs[])
 {
        struct vpfe_device *vpfe = vb2_get_drv_priv(vq);
        unsigned size = vpfe->fmt.fmt.pix.sizeimage;
 
 
 static int bcap_queue_setup(struct vb2_queue *vq,
                                unsigned int *nbuffers, unsigned int *nplanes,
-                               unsigned int sizes[], void *alloc_ctxs[])
+                               unsigned int sizes[], struct device *alloc_devs[])
 {
        struct bcap_device *bcap_dev = vb2_get_drv_priv(vq);
 
 
  */
 static int coda_queue_setup(struct vb2_queue *vq,
                                unsigned int *nbuffers, unsigned int *nplanes,
-                               unsigned int sizes[], void *alloc_ctxs[])
+                               unsigned int sizes[], struct device *alloc_devs[])
 {
        struct coda_ctx *ctx = vb2_get_drv_priv(vq);
        struct coda_q_data *q_data;
 
 static int
 vpbe_buffer_queue_setup(struct vb2_queue *vq,
                        unsigned int *nbuffers, unsigned int *nplanes,
-                       unsigned int sizes[], void *alloc_ctxs[])
+                       unsigned int sizes[], struct device *alloc_devs[])
 
 {
        /* Get the file handle object and layer object */
 
  * @nbuffers: ptr to number of buffers requested by application
  * @nplanes:: contains number of distinct video planes needed to hold a frame
  * @sizes[]: contains the size (in bytes) of each plane.
- * @alloc_ctxs: ptr to allocation context
+ * @alloc_devs: ptr to allocation context
  *
  * This callback function is called when reqbuf() is called to adjust
  * the buffer count and buffer size
  */
 static int vpif_buffer_queue_setup(struct vb2_queue *vq,
                                unsigned int *nbuffers, unsigned int *nplanes,
-                               unsigned int sizes[], void *alloc_ctxs[])
+                               unsigned int sizes[], struct device *alloc_devs[])
 {
        struct channel_obj *ch = vb2_get_drv_priv(vq);
        struct common_obj *common = &ch->common[VPIF_VIDEO_INDEX];
 
  * @nbuffers: ptr to number of buffers requested by application
  * @nplanes:: contains number of distinct video planes needed to hold a frame
  * @sizes[]: contains the size (in bytes) of each plane.
- * @alloc_ctxs: ptr to allocation context
+ * @alloc_devs: ptr to allocation context
  *
  * This callback function is called when reqbuf() is called to adjust
  * the buffer count and buffer size
  */
 static int vpif_buffer_queue_setup(struct vb2_queue *vq,
                                unsigned int *nbuffers, unsigned int *nplanes,
-                               unsigned int sizes[], void *alloc_ctxs[])
+                               unsigned int sizes[], struct device *alloc_devs[])
 {
        struct channel_obj *ch = vb2_get_drv_priv(vq);
        struct common_obj *common = &ch->common[VPIF_VIDEO_INDEX];
 
  * @irq_queue: interrupt handler waitqueue
  * @m2m:       memory-to-memory V4L2 device information
  * @state:     flags used to synchronize m2m and capture mode operation
- * @alloc_ctx: videobuf2 memory allocator context
  * @vdev:      video device for G-Scaler instance
  */
 struct gsc_dev {
 
 
 static int gsc_m2m_queue_setup(struct vb2_queue *vq,
                        unsigned int *num_buffers, unsigned int *num_planes,
-                       unsigned int sizes[], void *allocators[])
+                       unsigned int sizes[], struct device *alloc_devs[])
 {
        struct gsc_ctx *ctx = vb2_get_drv_priv(vq);
        struct gsc_frame *frame;
 
 
 static int queue_setup(struct vb2_queue *vq,
                       unsigned int *num_buffers, unsigned int *num_planes,
-                      unsigned int sizes[], void *allocators[])
+                      unsigned int sizes[], struct device *alloc_devs[])
 {
        struct fimc_ctx *ctx = vq->drv_priv;
        struct fimc_frame *frame = &ctx->d_frame;
 
 
 static int isp_video_capture_queue_setup(struct vb2_queue *vq,
                        unsigned int *num_buffers, unsigned int *num_planes,
-                       unsigned int sizes[], void *allocators[])
+                       unsigned int sizes[], struct device *alloc_devs[])
 {
        struct fimc_isp *isp = vb2_get_drv_priv(vq);
        struct v4l2_pix_format_mplane *vid_fmt = &isp->video_capture.pixfmt;
 
 
 static int queue_setup(struct vb2_queue *vq,
                       unsigned int *num_buffers, unsigned int *num_planes,
-                      unsigned int sizes[], void *allocators[])
+                      unsigned int sizes[], struct device *alloc_devs[])
 {
        struct fimc_lite *fimc = vq->drv_priv;
        struct flite_frame *frame = &fimc->out_frame;
 
 
 static int fimc_queue_setup(struct vb2_queue *vq,
                            unsigned int *num_buffers, unsigned int *num_planes,
-                           unsigned int sizes[], void *allocators[])
+                           unsigned int sizes[], struct device *alloc_devs[])
 {
        struct fimc_ctx *ctx = vb2_get_drv_priv(vq);
        struct fimc_frame *f;
 
 
 static int deinterlace_queue_setup(struct vb2_queue *vq,
                                unsigned int *nbuffers, unsigned int *nplanes,
-                               unsigned int sizes[], void *alloc_ctxs[])
+                               unsigned int sizes[], struct device *alloc_devs[])
 {
        struct deinterlace_ctx *ctx = vb2_get_drv_priv(vq);
        struct deinterlace_q_data *q_data;
 
 static int mcam_vb_queue_setup(struct vb2_queue *vq,
                unsigned int *nbufs,
                unsigned int *num_planes, unsigned int sizes[],
-               void *alloc_ctxs[])
+               struct device *alloc_devs[])
 {
        struct mcam_camera *cam = vb2_get_drv_priv(vq);
        int minbufs = (cam->buffer_mode == B_DMA_contig) ? 3 : 2;
 
  */
 static int emmaprp_queue_setup(struct vb2_queue *vq,
                                unsigned int *nbuffers, unsigned int *nplanes,
-                               unsigned int sizes[], void *alloc_ctxs[])
+                               unsigned int sizes[], struct device *alloc_devs[])
 {
        struct emmaprp_ctx *ctx = vb2_get_drv_priv(vq);
        struct emmaprp_q_data *q_data;
 
 
 static int isp_video_queue_setup(struct vb2_queue *queue,
                                 unsigned int *count, unsigned int *num_planes,
-                                unsigned int sizes[], void *alloc_ctxs[])
+                                unsigned int sizes[], struct device *alloc_devs[])
 {
        struct isp_video_fh *vfh = vb2_get_drv_priv(queue);
        struct isp_video *video = vfh->video;
 
 
 static int rvin_queue_setup(struct vb2_queue *vq, unsigned int *nbuffers,
                            unsigned int *nplanes, unsigned int sizes[],
-                           void *alloc_ctxs[])
+                           struct device *alloc_devs[])
 
 {
        struct rvin_dev *vin = vb2_get_drv_priv(vq);
 
  */
 static int jpu_queue_setup(struct vb2_queue *vq,
                           unsigned int *nbuffers, unsigned int *nplanes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct jpu_ctx *ctx = vb2_get_drv_priv(vq);
        struct jpu_q_data *q_data;
 
 
 static int queue_setup(struct vb2_queue *vq,
                       unsigned int *num_buffers, unsigned int *num_planes,
-                      unsigned int sizes[], void *allocators[])
+                      unsigned int sizes[], struct device *alloc_devs[])
 {
        struct camif_vp *vp = vb2_get_drv_priv(vq);
        struct camif_frame *frame = &vp->out_frame;
 
 
 static int g2d_queue_setup(struct vb2_queue *vq,
                           unsigned int *nbuffers, unsigned int *nplanes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct g2d_ctx *ctx = vb2_get_drv_priv(vq);
        struct g2d_frame *f = get_frame(ctx, vq->type);
 
 
 static int s5p_jpeg_queue_setup(struct vb2_queue *vq,
                           unsigned int *nbuffers, unsigned int *nplanes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct s5p_jpeg_ctx *ctx = vb2_get_drv_priv(vq);
        struct s5p_jpeg_q_data *q_data = NULL;
 
 static int s5p_mfc_queue_setup(struct vb2_queue *vq,
                        unsigned int *buf_count,
                        unsigned int *plane_count, unsigned int psize[],
-                       void *allocators[])
+                       struct device *alloc_devs[])
 {
        struct s5p_mfc_ctx *ctx = fh_to_ctx(vq->drv_priv);
        struct s5p_mfc_dev *dev = ctx->dev;
                psize[1] = ctx->chroma_size;
 
                if (IS_MFCV6_PLUS(dev))
-                       allocators[0] = &ctx->dev->mem_dev_l;
+                       alloc_devs[0] = ctx->dev->mem_dev_l;
                else
-                       allocators[0] = &ctx->dev->mem_dev_r;
-               allocators[1] = &ctx->dev->mem_dev_l;
+                       alloc_devs[0] = ctx->dev->mem_dev_r;
+               alloc_devs[1] = ctx->dev->mem_dev_l;
        } else if (vq->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE &&
                   ctx->state == MFCINST_INIT) {
                psize[0] = ctx->dec_src_buf_size;
-               allocators[0] = &ctx->dev->mem_dev_l;
+               alloc_devs[0] = ctx->dev->mem_dev_l;
        } else {
                mfc_err("This video node is dedicated to decoding. Decoding not initialized\n");
                return -EINVAL;
 
 
 static int s5p_mfc_queue_setup(struct vb2_queue *vq,
                        unsigned int *buf_count, unsigned int *plane_count,
-                       unsigned int psize[], void *allocators[])
+                       unsigned int psize[], struct device *alloc_devs[])
 {
        struct s5p_mfc_ctx *ctx = fh_to_ctx(vq->drv_priv);
        struct s5p_mfc_dev *dev = ctx->dev;
                if (*buf_count > MFC_MAX_BUFFERS)
                        *buf_count = MFC_MAX_BUFFERS;
                psize[0] = ctx->enc_dst_buf_size;
-               allocators[0] = &ctx->dev->mem_dev_l;
+               alloc_devs[0] = ctx->dev->mem_dev_l;
        } else if (vq->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) {
                if (ctx->src_fmt)
                        *plane_count = ctx->src_fmt->num_planes;
                psize[1] = ctx->chroma_size;
 
                if (IS_MFCV6_PLUS(dev)) {
-                       allocators[0] = &ctx->dev->mem_dev_l;
-                       allocators[1] = &ctx->dev->mem_dev_l;
+                       alloc_devs[0] = ctx->dev->mem_dev_l;
+                       alloc_devs[1] = ctx->dev->mem_dev_l;
                } else {
-                       allocators[0] = &ctx->dev->mem_dev_r;
-                       allocators[1] = &ctx->dev->mem_dev_r;
+                       alloc_devs[0] = ctx->dev->mem_dev_r;
+                       alloc_devs[1] = ctx->dev->mem_dev_r;
                }
        } else {
                mfc_err("invalid queue type: %d\n", vq->type);
 
 
 static int queue_setup(struct vb2_queue *vq,
        unsigned int *nbuffers, unsigned int *nplanes, unsigned int sizes[],
-       void *alloc_ctxs[])
+       struct device *alloc_devs[])
 {
        struct mxr_layer *layer = vb2_get_drv_priv(vq);
        const struct mxr_format *fmt = layer->fmt;
 
 
 static int sh_veu_queue_setup(struct vb2_queue *vq,
                              unsigned int *nbuffers, unsigned int *nplanes,
-                             unsigned int sizes[], void *alloc_ctxs[])
+                             unsigned int sizes[], struct device *alloc_devs[])
 {
        struct sh_veu_dev *veu = vb2_get_drv_priv(vq);
        struct sh_veu_vfmt *vfmt = sh_veu_get_vfmt(veu, vq->type);
 
 /* Locking: caller holds fop_lock mutex */
 static int sh_vou_queue_setup(struct vb2_queue *vq,
                       unsigned int *nbuffers, unsigned int *nplanes,
-                      unsigned int sizes[], void *alloc_ctxs[])
+                      unsigned int sizes[], struct device *alloc_devs[])
 {
        struct sh_vou_device *vou_dev = vb2_get_drv_priv(vq);
        struct v4l2_pix_format *pix = &vou_dev->pix;
 
    ------------------------------------------------------------------*/
 static int queue_setup(struct vb2_queue *vq,
                                unsigned int *nbuffers, unsigned int *nplanes,
-                               unsigned int sizes[], void *alloc_ctxs[])
+                               unsigned int sizes[], struct device *alloc_devs[])
 {
        struct soc_camera_device *icd = soc_camera_from_vb2q(vq);
        struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
 
 static int rcar_vin_videobuf_setup(struct vb2_queue *vq,
                                   unsigned int *count,
                                   unsigned int *num_planes,
-                                  unsigned int sizes[], void *alloc_ctxs[])
+                                  unsigned int sizes[], struct device *alloc_devs[])
 {
        struct soc_camera_device *icd = soc_camera_from_vb2q(vq);
        struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
 
  */
 static int sh_mobile_ceu_videobuf_setup(struct vb2_queue *vq,
                        unsigned int *count, unsigned int *num_planes,
-                       unsigned int sizes[], void *alloc_ctxs[])
+                       unsigned int sizes[], struct device *alloc_devs[])
 {
        struct soc_camera_device *icd = soc_camera_from_vb2q(vq);
        struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
 
 
 static int bdisp_queue_setup(struct vb2_queue *vq,
                             unsigned int *nb_buf, unsigned int *nb_planes,
-                            unsigned int sizes[], void *alloc_ctxs[])
+                            unsigned int sizes[], struct device *alloc_devs[])
 {
        struct bdisp_ctx *ctx = vb2_get_drv_priv(vq);
        struct bdisp_frame *frame = ctx_get_frame(ctx, vq->type);
 
  */
 static int cal_queue_setup(struct vb2_queue *vq,
                           unsigned int *nbuffers, unsigned int *nplanes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct cal_ctx *ctx = vb2_get_drv_priv(vq);
        unsigned size = ctx->v_fmt.fmt.pix.sizeimage;
 
  */
 static int vpe_queue_setup(struct vb2_queue *vq,
                           unsigned int *nbuffers, unsigned int *nplanes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        int i;
        struct vpe_ctx *ctx = vb2_get_drv_priv(vq);
 
 
 static int vim2m_queue_setup(struct vb2_queue *vq,
                                unsigned int *nbuffers, unsigned int *nplanes,
-                               unsigned int sizes[], void *alloc_ctxs[])
+                               unsigned int sizes[], struct device *alloc_devs[])
 {
        struct vim2m_ctx *ctx = vb2_get_drv_priv(vq);
        struct vim2m_q_data *q_data;
        *nplanes = 1;
        sizes[0] = size;
 
-       /*
-        * videobuf2-vmalloc allocator is context-less so no need to set
-        * alloc_ctxs array.
-        */
-
        dprintk(ctx->dev, "get %d buffer(s) of size %d each.\n", count, size);
 
        return 0;
 
 
 static int sdr_cap_queue_setup(struct vb2_queue *vq,
                       unsigned *nbuffers, unsigned *nplanes,
-                      unsigned sizes[], void *alloc_ctxs[])
+                      unsigned sizes[], struct device *alloc_devs[])
 {
        /* 2 = max 16-bit sample returned */
        sizes[0] = SDR_CAP_SAMPLES_PER_BUF * 2;
 
 
 static int vbi_cap_queue_setup(struct vb2_queue *vq,
                       unsigned *nbuffers, unsigned *nplanes,
-                      unsigned sizes[], void *alloc_ctxs[])
+                      unsigned sizes[], struct device *alloc_devs[])
 {
        struct vivid_dev *dev = vb2_get_drv_priv(vq);
        bool is_60hz = dev->std_cap & V4L2_STD_525_60;
 
 
 static int vbi_out_queue_setup(struct vb2_queue *vq,
                       unsigned *nbuffers, unsigned *nplanes,
-                      unsigned sizes[], void *alloc_ctxs[])
+                      unsigned sizes[], struct device *alloc_devs[])
 {
        struct vivid_dev *dev = vb2_get_drv_priv(vq);
        bool is_60hz = dev->std_out & V4L2_STD_525_60;
 
 
 static int vid_cap_queue_setup(struct vb2_queue *vq,
                       unsigned *nbuffers, unsigned *nplanes,
-                      unsigned sizes[], void *alloc_ctxs[])
+                      unsigned sizes[], struct device *alloc_devs[])
 {
        struct vivid_dev *dev = vb2_get_drv_priv(vq);
        unsigned buffers = tpg_g_buffers(&dev->tpg);
 
        *nplanes = buffers;
 
-       /*
-        * videobuf2-vmalloc allocator is context-less so no need to set
-        * alloc_ctxs array.
-        */
-
        dprintk(dev, 1, "%s: count=%d\n", __func__, *nbuffers);
        for (p = 0; p < buffers; p++)
                dprintk(dev, 1, "%s: size[%u]=%u\n", __func__, p, sizes[p]);
 
 
 static int vid_out_queue_setup(struct vb2_queue *vq,
                       unsigned *nbuffers, unsigned *nplanes,
-                      unsigned sizes[], void *alloc_ctxs[])
+                      unsigned sizes[], struct device *alloc_devs[])
 {
        struct vivid_dev *dev = vb2_get_drv_priv(vq);
        const struct vivid_fmt *vfmt = dev->fmt_out;
 
        *nplanes = planes;
 
-       /*
-        * videobuf2-vmalloc allocator is context-less so no need to set
-        * alloc_ctxs array.
-        */
-
        dprintk(dev, 1, "%s: count=%d\n", __func__, *nbuffers);
        for (p = 0; p < planes; p++)
                dprintk(dev, 1, "%s: size[%u]=%u\n", __func__, p, sizes[p]);
 
 
 static int
 vsp1_video_queue_setup(struct vb2_queue *vq,
-                    unsigned int *nbuffers, unsigned int *nplanes,
-                    unsigned int sizes[], void *alloc_ctxs[])
+                      unsigned int *nbuffers, unsigned int *nplanes,
+                      unsigned int sizes[], struct device *alloc_devs[])
 {
        struct vsp1_video *video = vb2_get_drv_priv(vq);
        const struct v4l2_pix_format_mplane *format = &video->rwpf->format;
                if (*nplanes != format->num_planes)
                        return -EINVAL;
 
-               for (i = 0; i < *nplanes; i++) {
+               for (i = 0; i < *nplanes; i++)
                        if (sizes[i] < format->plane_fmt[i].sizeimage)
                                return -EINVAL;
-               }
                return 0;
        }
 
 
        video_set_drvdata(&video->video, video);
 
-       /* ... and the buffers queue... */
        video->queue.type = video->type;
        video->queue.io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF;
        video->queue.lock = &video->lock;
 
 static int
 xvip_dma_queue_setup(struct vb2_queue *vq,
                     unsigned int *nbuffers, unsigned int *nplanes,
-                    unsigned int sizes[], void *alloc_ctxs[])
+                    unsigned int sizes[], struct device *alloc_devs[])
 {
        struct xvip_dma *dma = vb2_get_drv_priv(vq);
 
 
 /* Videobuf2 operations */
 static int airspy_queue_setup(struct vb2_queue *vq,
                unsigned int *nbuffers,
-               unsigned int *nplanes, unsigned int sizes[], void *alloc_ctxs[])
+               unsigned int *nplanes, unsigned int sizes[], struct device *alloc_devs[])
 {
        struct airspy *s = vb2_get_drv_priv(vq);
 
 
 
 static int vbi_queue_setup(struct vb2_queue *vq,
                           unsigned int *nbuffers, unsigned int *nplanes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct au0828_dev *dev = vb2_get_drv_priv(vq);
        unsigned long size = dev->vbi_width * dev->vbi_height * 2;
 
 
 static int queue_setup(struct vb2_queue *vq,
                       unsigned int *nbuffers, unsigned int *nplanes,
-                      unsigned int sizes[], void *alloc_ctxs[])
+                      unsigned int sizes[], struct device *alloc_devs[])
 {
        struct au0828_dev *dev = vb2_get_drv_priv(vq);
        unsigned long size = dev->height * dev->bytesperline;
 
 
 static int vbi_queue_setup(struct vb2_queue *vq,
                           unsigned int *nbuffers, unsigned int *nplanes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct em28xx *dev = vb2_get_drv_priv(vq);
        struct em28xx_v4l2 *v4l2 = dev->v4l2;
 
 
 static int queue_setup(struct vb2_queue *vq,
                       unsigned int *nbuffers, unsigned int *nplanes,
-                      unsigned int sizes[], void *alloc_ctxs[])
+                      unsigned int sizes[], struct device *alloc_devs[])
 {
        struct em28xx *dev = vb2_get_drv_priv(vq);
        struct em28xx_v4l2 *v4l2 = dev->v4l2;
 
 
 static int go7007_queue_setup(struct vb2_queue *q,
                unsigned int *num_buffers, unsigned int *num_planes,
-               unsigned int sizes[], void *alloc_ctxs[])
+               unsigned int sizes[], struct device *alloc_devs[])
 {
        sizes[0] = GO7007_BUF_SIZE;
        *num_planes = 1;
 
 
 static int hackrf_queue_setup(struct vb2_queue *vq,
                unsigned int *nbuffers,
-               unsigned int *nplanes, unsigned int sizes[], void *alloc_ctxs[])
+               unsigned int *nplanes, unsigned int sizes[], struct device *alloc_devs[])
 {
        struct hackrf_dev *dev = vb2_get_drv_priv(vq);
 
 
 static int msi2500_queue_setup(struct vb2_queue *vq,
                               unsigned int *nbuffers,
                               unsigned int *nplanes, unsigned int sizes[],
-                              void *alloc_ctxs[])
+                              struct device *alloc_devs[])
 {
        struct msi2500_dev *dev = vb2_get_drv_priv(vq);
 
 
 
 static int queue_setup(struct vb2_queue *vq,
                                unsigned int *nbuffers, unsigned int *nplanes,
-                               unsigned int sizes[], void *alloc_ctxs[])
+                               unsigned int sizes[], struct device *alloc_devs[])
 {
        struct pwc_device *pdev = vb2_get_drv_priv(vq);
        int size;
 
 
 static int queue_setup(struct vb2_queue *vq,
                       unsigned int *nbuffers, unsigned int *nplanes,
-                      unsigned int sizes[], void *alloc_ctxs[])
+                      unsigned int sizes[], struct device *alloc_devs[])
 {
        struct s2255_vc *vc = vb2_get_drv_priv(vq);
        if (*nbuffers < S2255_MIN_BUFS)
 
  */
 static int queue_setup(struct vb2_queue *vq,
                                unsigned int *nbuffers, unsigned int *nplanes,
-                               unsigned int sizes[], void *alloc_ctxs[])
+                               unsigned int sizes[], struct device *alloc_devs[])
 {
        struct stk1160 *dev = vb2_get_drv_priv(vq);
        unsigned long size;
 
 
 static int usbtv_queue_setup(struct vb2_queue *vq,
        unsigned int *nbuffers,
-       unsigned int *nplanes, unsigned int sizes[], void *alloc_ctxs[])
+       unsigned int *nplanes, unsigned int sizes[], struct device *alloc_devs[])
 {
        struct usbtv *usbtv = vb2_get_drv_priv(vq);
        unsigned size = USBTV_CHUNK * usbtv->n_chunks * 2 * sizeof(u32);
 
 
 static int uvc_queue_setup(struct vb2_queue *vq,
                           unsigned int *nbuffers, unsigned int *nplanes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct uvc_video_queue *queue = vb2_get_drv_priv(vq);
        struct uvc_streaming *stream = uvc_queue_to_stream(queue);
 
                unsigned long size = PAGE_ALIGN(vb->planes[plane].length);
 
                mem_priv = call_ptr_memop(vb, alloc,
-                               q->alloc_ctx[plane] ? : &q->dev,
+                               q->alloc_devs[plane] ? : q->dev,
                                q->dma_attrs, size, dma_dir, q->gfp_flags);
                if (IS_ERR_OR_NULL(mem_priv))
                        goto free;
         */
        num_buffers = min_t(unsigned int, *count, VB2_MAX_FRAME);
        num_buffers = max_t(unsigned int, num_buffers, q->min_buffers_needed);
-       memset(q->alloc_ctx, 0, sizeof(q->alloc_ctx));
+       memset(q->alloc_devs, 0, sizeof(q->alloc_devs));
        q->memory = memory;
 
        /*
         * Driver also sets the size and allocator context for each plane.
         */
        ret = call_qop(q, queue_setup, q, &num_buffers, &num_planes,
-                      plane_sizes, q->alloc_ctx);
+                      plane_sizes, q->alloc_devs);
        if (ret)
                return ret;
 
                num_planes = 0;
 
                ret = call_qop(q, queue_setup, q, &num_buffers,
-                              &num_planes, plane_sizes, q->alloc_ctx);
+                              &num_planes, plane_sizes, q->alloc_devs);
 
                if (!ret && allocated_buffers < num_buffers)
                        ret = -ENOMEM;
        }
 
        if (!q->num_buffers) {
-               memset(q->alloc_ctx, 0, sizeof(q->alloc_ctx));
+               memset(q->alloc_devs, 0, sizeof(q->alloc_devs));
                q->memory = memory;
                q->waiting_for_buffers = !q->is_output;
        }
         * buffer and their sizes are acceptable
         */
        ret = call_qop(q, queue_setup, q, &num_buffers,
-                      &num_planes, plane_sizes, q->alloc_ctx);
+                      &num_planes, plane_sizes, q->alloc_devs);
        if (ret)
                return ret;
 
                 * queue driver has set up
                 */
                ret = call_qop(q, queue_setup, q, &num_buffers,
-                              &num_planes, plane_sizes, q->alloc_ctx);
+                              &num_planes, plane_sizes, q->alloc_devs);
 
                if (!ret && allocated_buffers < num_buffers)
                        ret = -ENOMEM;
 
                /* Acquire each plane's memory */
                mem_priv = call_ptr_memop(vb, get_userptr,
-                               q->alloc_ctx[plane] ? : &q->dev,
+                               q->alloc_devs[plane] ? : q->dev,
                                planes[plane].m.userptr,
                                planes[plane].length, dma_dir);
                if (IS_ERR_OR_NULL(mem_priv)) {
 
                /* Acquire each plane's memory */
                mem_priv = call_ptr_memop(vb, attach_dmabuf,
-                               q->alloc_ctx[plane] ? : &q->dev,
+                               q->alloc_devs[plane] ? : q->dev,
                                dbuf, planes[plane].length, dma_dir);
                if (IS_ERR(mem_priv)) {
                        dprintk(1, "failed to attach dmabuf\n");
 
 #include <media/videobuf2-dma-contig.h>
 #include <media/videobuf2-memops.h>
 
-struct vb2_dc_conf {
-       struct device           *dev;
-};
-
 struct vb2_dc_buf {
        struct device                   *dev;
        void                            *vaddr;
        kfree(buf);
 }
 
-static void *vb2_dc_alloc(void *alloc_ctx, const struct dma_attrs *attrs,
+static void *vb2_dc_alloc(struct device *dev, const struct dma_attrs *attrs,
                          unsigned long size, enum dma_data_direction dma_dir,
                          gfp_t gfp_flags)
 {
-       struct vb2_dc_conf *conf = alloc_ctx;
-       struct device *dev = conf->dev;
        struct vb2_dc_buf *buf;
 
        buf = kzalloc(sizeof *buf, GFP_KERNEL);
 }
 #endif
 
-static void *vb2_dc_get_userptr(void *alloc_ctx, unsigned long vaddr,
+static void *vb2_dc_get_userptr(struct device *dev, unsigned long vaddr,
        unsigned long size, enum dma_data_direction dma_dir)
 {
-       struct vb2_dc_conf *conf = alloc_ctx;
        struct vb2_dc_buf *buf;
        struct frame_vector *vec;
        unsigned long offset;
        if (!buf)
                return ERR_PTR(-ENOMEM);
 
-       buf->dev = conf->dev;
+       buf->dev = dev;
        buf->dma_dir = dma_dir;
 
        offset = vaddr & ~PAGE_MASK;
        kfree(buf);
 }
 
-static void *vb2_dc_attach_dmabuf(void *alloc_ctx, struct dma_buf *dbuf,
+static void *vb2_dc_attach_dmabuf(struct device *dev, struct dma_buf *dbuf,
        unsigned long size, enum dma_data_direction dma_dir)
 {
-       struct vb2_dc_conf *conf = alloc_ctx;
        struct vb2_dc_buf *buf;
        struct dma_buf_attachment *dba;
 
        if (!buf)
                return ERR_PTR(-ENOMEM);
 
-       buf->dev = conf->dev;
+       buf->dev = dev;
        /* create attachment for the dmabuf with the user device */
        dba = dma_buf_attach(dbuf, buf->dev);
        if (IS_ERR(dba)) {
 };
 EXPORT_SYMBOL_GPL(vb2_dma_contig_memops);
 
-void *vb2_dma_contig_init_ctx(struct device *dev)
-{
-       struct vb2_dc_conf *conf;
-
-       conf = kzalloc(sizeof *conf, GFP_KERNEL);
-       if (!conf)
-               return ERR_PTR(-ENOMEM);
-
-       conf->dev = dev;
-
-       return conf;
-}
-EXPORT_SYMBOL_GPL(vb2_dma_contig_init_ctx);
-
-void vb2_dma_contig_cleanup_ctx(void *alloc_ctx)
-{
-       if (!IS_ERR_OR_NULL(alloc_ctx))
-               kfree(alloc_ctx);
-}
-EXPORT_SYMBOL_GPL(vb2_dma_contig_cleanup_ctx);
-
 /**
  * vb2_dma_contig_set_max_seg_size() - configure DMA max segment size
  * @dev:       device for configuring DMA parameters
 
                        printk(KERN_DEBUG "vb2-dma-sg: " fmt, ## arg);  \
        } while (0)
 
-struct vb2_dma_sg_conf {
-       struct device           *dev;
-};
-
 struct vb2_dma_sg_buf {
        struct device                   *dev;
        void                            *vaddr;
        return 0;
 }
 
-static void *vb2_dma_sg_alloc(void *alloc_ctx, const struct dma_attrs *dma_attrs,
+static void *vb2_dma_sg_alloc(struct device *dev, const struct dma_attrs *dma_attrs,
                              unsigned long size, enum dma_data_direction dma_dir,
                              gfp_t gfp_flags)
 {
-       struct vb2_dma_sg_conf *conf = alloc_ctx;
        struct vb2_dma_sg_buf *buf;
        struct sg_table *sgt;
        int ret;
 
        dma_set_attr(DMA_ATTR_SKIP_CPU_SYNC, &attrs);
 
-       if (WARN_ON(alloc_ctx == NULL))
+       if (WARN_ON(dev == NULL))
                return NULL;
        buf = kzalloc(sizeof *buf, GFP_KERNEL);
        if (!buf)
                goto fail_table_alloc;
 
        /* Prevent the device from being released while the buffer is used */
-       buf->dev = get_device(conf->dev);
+       buf->dev = get_device(dev);
 
        sgt = &buf->sg_table;
        /*
        dma_sync_sg_for_cpu(buf->dev, sgt->sgl, sgt->orig_nents, buf->dma_dir);
 }
 
-static void *vb2_dma_sg_get_userptr(void *alloc_ctx, unsigned long vaddr,
+static void *vb2_dma_sg_get_userptr(struct device *dev, unsigned long vaddr,
                                    unsigned long size,
                                    enum dma_data_direction dma_dir)
 {
-       struct vb2_dma_sg_conf *conf = alloc_ctx;
        struct vb2_dma_sg_buf *buf;
        struct sg_table *sgt;
        DEFINE_DMA_ATTRS(attrs);
                return NULL;
 
        buf->vaddr = NULL;
-       buf->dev = conf->dev;
+       buf->dev = dev;
        buf->dma_dir = dma_dir;
        buf->offset = vaddr & ~PAGE_MASK;
        buf->size = size;
        kfree(buf);
 }
 
-static void *vb2_dma_sg_attach_dmabuf(void *alloc_ctx, struct dma_buf *dbuf,
+static void *vb2_dma_sg_attach_dmabuf(struct device *dev, struct dma_buf *dbuf,
        unsigned long size, enum dma_data_direction dma_dir)
 {
-       struct vb2_dma_sg_conf *conf = alloc_ctx;
        struct vb2_dma_sg_buf *buf;
        struct dma_buf_attachment *dba;
 
        if (!buf)
                return ERR_PTR(-ENOMEM);
 
-       buf->dev = conf->dev;
+       buf->dev = dev;
        /* create attachment for the dmabuf with the user device */
        dba = dma_buf_attach(dbuf, buf->dev);
        if (IS_ERR(dba)) {
 };
 EXPORT_SYMBOL_GPL(vb2_dma_sg_memops);
 
-void *vb2_dma_sg_init_ctx(struct device *dev)
-{
-       struct vb2_dma_sg_conf *conf;
-
-       conf = kzalloc(sizeof(*conf), GFP_KERNEL);
-       if (!conf)
-               return ERR_PTR(-ENOMEM);
-
-       conf->dev = dev;
-
-       return conf;
-}
-EXPORT_SYMBOL_GPL(vb2_dma_sg_init_ctx);
-
-void vb2_dma_sg_cleanup_ctx(void *alloc_ctx)
-{
-       if (!IS_ERR_OR_NULL(alloc_ctx))
-               kfree(alloc_ctx);
-}
-EXPORT_SYMBOL_GPL(vb2_dma_sg_cleanup_ctx);
-
 MODULE_DESCRIPTION("dma scatter/gather memory handling routines for videobuf2");
 MODULE_AUTHOR("Andrzej Pietrasiewicz");
 MODULE_LICENSE("GPL");
 
 
 static void vb2_vmalloc_put(void *buf_priv);
 
-static void *vb2_vmalloc_alloc(void *alloc_ctx, const struct dma_attrs *attrs,
+static void *vb2_vmalloc_alloc(struct device *dev, const struct dma_attrs *attrs,
                               unsigned long size, enum dma_data_direction dma_dir,
                               gfp_t gfp_flags)
 {
        }
 }
 
-static void *vb2_vmalloc_get_userptr(void *alloc_ctx, unsigned long vaddr,
+static void *vb2_vmalloc_get_userptr(struct device *dev, unsigned long vaddr,
                                     unsigned long size,
                                     enum dma_data_direction dma_dir)
 {
        kfree(buf);
 }
 
-static void *vb2_vmalloc_attach_dmabuf(void *alloc_ctx, struct dma_buf *dbuf,
+static void *vb2_vmalloc_attach_dmabuf(struct device *dev, struct dma_buf *dbuf,
        unsigned long size, enum dma_data_direction dma_dir)
 {
        struct vb2_vmalloc_buf *buf;
 
  * @nbuffers: ptr to number of buffers requested by application
  * @nplanes:: contains number of distinct video planes needed to hold a frame
  * @sizes[]: contains the size (in bytes) of each plane.
- * @alloc_ctxs: ptr to allocation context
+ * @alloc_devs: ptr to allocation context
  *
  * This callback function is called when reqbuf() is called to adjust
  * the buffer nbuffers and buffer size
 static int
 vpfe_buffer_queue_setup(struct vb2_queue *vq,
                        unsigned int *nbuffers, unsigned int *nplanes,
-                       unsigned int sizes[], void *alloc_ctxs[])
+                       unsigned int sizes[], struct device *alloc_devs[])
 {
        struct vpfe_fh *fh = vb2_get_drv_priv(vq);
        struct vpfe_video_device *video = fh->video;
 
 
 static int iss_video_queue_setup(struct vb2_queue *vq,
                                 unsigned int *count, unsigned int *num_planes,
-                                unsigned int sizes[], void *alloc_ctxs[])
+                                unsigned int sizes[], struct device *alloc_devs[])
 {
        struct iss_video_fh *vfh = vb2_get_drv_priv(vq);
        struct iss_video *video = vfh->video;
 
 
 static int tw686x_queue_setup(struct vb2_queue *vq, unsigned int *nbuffers,
                              unsigned int *nplanes, unsigned int sizes[],
-                             void *alloc_ctxs[])
+                             struct device *alloc_devs[])
 {
        struct tw686x_video_channel *vc = vb2_get_drv_priv(vq);
        unsigned int size = vc->width * vc->height * vc->format->depth / 8;
 
 
 static int uvc_queue_setup(struct vb2_queue *vq,
                           unsigned int *nbuffers, unsigned int *nplanes,
-                          unsigned int sizes[], void *alloc_ctxs[])
+                          unsigned int sizes[], struct device *alloc_devs[])
 {
        struct uvc_video_queue *queue = vb2_get_drv_priv(vq);
        struct uvc_video *video = container_of(queue, struct uvc_video, queue);
 
  * @put_userptr: inform the allocator that a USERPTR buffer will no longer
  *              be used.
  * @attach_dmabuf: attach a shared struct dma_buf for a hardware operation;
- *                used for DMABUF memory types; alloc_ctx is the alloc context
+ *                used for DMABUF memory types; dev is the alloc device
  *                dbuf is the shared dma_buf; returns NULL on failure;
  *                allocator private per-buffer structure on success;
  *                this needs to be used for further accesses to the buffer.
  *                               unmap_dmabuf.
  */
 struct vb2_mem_ops {
-       void            *(*alloc)(void *alloc_ctx, const struct dma_attrs *attrs,
+       void            *(*alloc)(struct device *dev, const struct dma_attrs *attrs,
                                  unsigned long size, enum dma_data_direction dma_dir,
                                  gfp_t gfp_flags);
        void            (*put)(void *buf_priv);
        struct dma_buf *(*get_dmabuf)(void *buf_priv, unsigned long flags);
 
-       void            *(*get_userptr)(void *alloc_ctx, unsigned long vaddr,
+       void            *(*get_userptr)(struct device *dev, unsigned long vaddr,
                                        unsigned long size,
                                        enum dma_data_direction dma_dir);
        void            (*put_userptr)(void *buf_priv);
        void            (*prepare)(void *buf_priv);
        void            (*finish)(void *buf_priv);
 
-       void            *(*attach_dmabuf)(void *alloc_ctx, struct dma_buf *dbuf,
+       void            *(*attach_dmabuf)(struct device *dev, struct dma_buf *dbuf,
                                          unsigned long size,
                                          enum dma_data_direction dma_dir);
        void            (*detach_dmabuf)(void *buf_priv);
  *                     in *num_buffers, the required number of planes per
  *                     buffer in *num_planes, the size of each plane should be
  *                     set in the sizes[] array and optional per-plane
- *                     allocator specific context in the alloc_ctxs[] array.
+ *                     allocator specific device in the alloc_devs[] array.
  *                     When called from VIDIOC_REQBUFS, *num_planes == 0, the
  *                     driver has to use the currently configured format to
  *                     determine the plane sizes and *num_buffers is the total
 struct vb2_ops {
        int (*queue_setup)(struct vb2_queue *q,
                           unsigned int *num_buffers, unsigned int *num_planes,
-                          unsigned int sizes[], void *alloc_ctxs[]);
+                          unsigned int sizes[], struct device *alloc_devs[]);
 
        void (*wait_prepare)(struct vb2_queue *q);
        void (*wait_finish)(struct vb2_queue *q);
  *             the V4L2_BUF_TYPE_* in include/uapi/linux/videodev2.h
  * @io_modes:  supported io methods (see vb2_io_modes enum)
  * @dev:       device to use for the default allocation context if the driver
- *             doesn't fill in the @alloc_ctx array.
+ *             doesn't fill in the @alloc_devs array.
  * @dma_attrs: DMA attributes to use for the DMA. May be NULL.
  * @fileio_read_once:          report EOF after reading the first buffer
  * @fileio_write_immediately:  queue buffer after each write() call
  * @done_list: list of buffers ready to be dequeued to userspace
  * @done_lock: lock to protect done_list list
  * @done_wq:   waitqueue for processes waiting for buffers ready to be dequeued
- * @alloc_ctx: memory type/allocator-specific contexts for each plane
+ * @alloc_devs:        memory type/allocator-specific per-plane device
  * @streaming: current streaming state
  * @start_streaming_called: start_streaming() was called successfully and we
  *             started streaming.
        spinlock_t                      done_lock;
        wait_queue_head_t               done_wq;
 
-       void                            *alloc_ctx[VB2_MAX_PLANES];
+       struct device                   *alloc_devs[VB2_MAX_PLANES];
 
        unsigned int                    streaming:1;
        unsigned int                    start_streaming_called:1;
 
        return *addr;
 }
 
-void *vb2_dma_contig_init_ctx(struct device *dev);
-void vb2_dma_contig_cleanup_ctx(void *alloc_ctx);
 int vb2_dma_contig_set_max_seg_size(struct device *dev, unsigned int size);
 void vb2_dma_contig_clear_max_seg_size(struct device *dev);
 
 
        return (struct sg_table *)vb2_plane_cookie(vb, plane_no);
 }
 
-void *vb2_dma_sg_init_ctx(struct device *dev);
-void vb2_dma_sg_cleanup_ctx(void *alloc_ctx);
-
 extern const struct vb2_mem_ops vb2_dma_sg_memops;
 
 #endif
 
  */
 static int queue_setup(struct vb2_queue *vq,
                       unsigned int *nbuffers, unsigned int *nplanes,
-                      unsigned int sizes[], void *alloc_ctxs[])
+                      unsigned int sizes[], struct device *alloc_devs[])
 {
        struct skeleton *skel = vb2_get_drv_priv(vq);