Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[firefly-linux-kernel-4.4.55.git] / drivers / media / platform / am437x / am437x-vpfe.c
index c8447fa3fd91b4051ef7f47e03cb854d9f239028..f0480d687f174b259affc527713a394187e069ee 100644 (file)
@@ -307,7 +307,8 @@ static inline struct vpfe_device *to_vpfe(struct vpfe_ccdc *ccdc)
        return container_of(ccdc, struct vpfe_device, ccdc);
 }
 
-static inline struct vpfe_cap_buffer *to_vpfe_buffer(struct vb2_buffer *vb)
+static inline
+struct vpfe_cap_buffer *to_vpfe_buffer(struct vb2_v4l2_buffer *vb)
 {
        return container_of(vb, struct vpfe_cap_buffer, vb);
 }
@@ -1257,14 +1258,14 @@ static inline void vpfe_schedule_next_buffer(struct vpfe_device *vpfe)
        list_del(&vpfe->next_frm->list);
 
        vpfe_set_sdr_addr(&vpfe->ccdc,
-                      vb2_dma_contig_plane_dma_addr(&vpfe->next_frm->vb, 0));
+              vb2_dma_contig_plane_dma_addr(&vpfe->next_frm->vb.vb2_buf, 0));
 }
 
 static inline void vpfe_schedule_bottom_field(struct vpfe_device *vpfe)
 {
        unsigned long addr;
 
-       addr = vb2_dma_contig_plane_dma_addr(&vpfe->next_frm->vb, 0) +
+       addr = vb2_dma_contig_plane_dma_addr(&vpfe->next_frm->vb.vb2_buf, 0) +
                                        vpfe->field_off;
 
        vpfe_set_sdr_addr(&vpfe->ccdc, addr);
@@ -1280,10 +1281,10 @@ static inline void vpfe_schedule_bottom_field(struct vpfe_device *vpfe)
  */
 static inline void vpfe_process_buffer_complete(struct vpfe_device *vpfe)
 {
-       v4l2_get_timestamp(&vpfe->cur_frm->vb.v4l2_buf.timestamp);
-       vpfe->cur_frm->vb.v4l2_buf.field = vpfe->fmt.fmt.pix.field;
-       vpfe->cur_frm->vb.v4l2_buf.sequence = vpfe->sequence++;
-       vb2_buffer_done(&vpfe->cur_frm->vb, VB2_BUF_STATE_DONE);
+       v4l2_get_timestamp(&vpfe->cur_frm->vb.timestamp);
+       vpfe->cur_frm->vb.field = vpfe->fmt.fmt.pix.field;
+       vpfe->cur_frm->vb.sequence = vpfe->sequence++;
+       vb2_buffer_done(&vpfe->cur_frm->vb.vb2_buf, VB2_BUF_STATE_DONE);
        vpfe->cur_frm = vpfe->next_frm;
 }
 
@@ -1907,10 +1908,11 @@ static void vpfe_calculate_offsets(struct vpfe_device *vpfe)
  * the buffer count and buffer size
  */
 static int vpfe_queue_setup(struct vb2_queue *vq,
-                           const struct v4l2_format *fmt,
+                           const void *parg,
                            unsigned int *nbuffers, unsigned int *nplanes,
                            unsigned int sizes[], void *alloc_ctxs[])
 {
+       const struct v4l2_format *fmt = parg;
        struct vpfe_device *vpfe = vb2_get_drv_priv(vq);
 
        if (fmt && fmt->fmt.pix.sizeimage < vpfe->fmt.fmt.pix.sizeimage)
@@ -1942,6 +1944,7 @@ static int vpfe_queue_setup(struct vb2_queue *vq,
  */
 static int vpfe_buffer_prepare(struct vb2_buffer *vb)
 {
+       struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
        struct vpfe_device *vpfe = vb2_get_drv_priv(vb->vb2_queue);
 
        vb2_set_plane_payload(vb, 0, vpfe->fmt.fmt.pix.sizeimage);
@@ -1949,7 +1952,7 @@ static int vpfe_buffer_prepare(struct vb2_buffer *vb)
        if (vb2_get_plane_payload(vb, 0) > vb2_plane_size(vb, 0))
                return -EINVAL;
 
-       vb->v4l2_buf.field = vpfe->fmt.fmt.pix.field;
+       vbuf->field = vpfe->fmt.fmt.pix.field;
 
        return 0;
 }
@@ -1960,8 +1963,9 @@ static int vpfe_buffer_prepare(struct vb2_buffer *vb)
  */
 static void vpfe_buffer_queue(struct vb2_buffer *vb)
 {
+       struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
        struct vpfe_device *vpfe = vb2_get_drv_priv(vb->vb2_queue);
-       struct vpfe_cap_buffer *buf = to_vpfe_buffer(vb);
+       struct vpfe_cap_buffer *buf = to_vpfe_buffer(vbuf);
        unsigned long flags = 0;
 
        /* add the buffer to the DMA queue */
@@ -2006,7 +2010,7 @@ static int vpfe_start_streaming(struct vb2_queue *vq, unsigned int count)
        list_del(&vpfe->cur_frm->list);
        spin_unlock_irqrestore(&vpfe->dma_queue_lock, flags);
 
-       addr = vb2_dma_contig_plane_dma_addr(&vpfe->cur_frm->vb, 0);
+       addr = vb2_dma_contig_plane_dma_addr(&vpfe->cur_frm->vb.vb2_buf, 0);
 
        vpfe_set_sdr_addr(&vpfe->ccdc, (unsigned long)(addr));
 
@@ -2023,7 +2027,7 @@ static int vpfe_start_streaming(struct vb2_queue *vq, unsigned int count)
 err:
        list_for_each_entry_safe(buf, tmp, &vpfe->dma_queue, list) {
                list_del(&buf->list);
-               vb2_buffer_done(&buf->vb, VB2_BUF_STATE_QUEUED);
+               vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_QUEUED);
        }
 
        return ret;
@@ -2055,13 +2059,14 @@ static void vpfe_stop_streaming(struct vb2_queue *vq)
        /* release all active buffers */
        spin_lock_irqsave(&vpfe->dma_queue_lock, flags);
        if (vpfe->cur_frm == vpfe->next_frm) {
-               vb2_buffer_done(&vpfe->cur_frm->vb, VB2_BUF_STATE_ERROR);
+               vb2_buffer_done(&vpfe->cur_frm->vb.vb2_buf,
+                               VB2_BUF_STATE_ERROR);
        } else {
                if (vpfe->cur_frm != NULL)
-                       vb2_buffer_done(&vpfe->cur_frm->vb,
+                       vb2_buffer_done(&vpfe->cur_frm->vb.vb2_buf,
                                        VB2_BUF_STATE_ERROR);
                if (vpfe->next_frm != NULL)
-                       vb2_buffer_done(&vpfe->next_frm->vb,
+                       vb2_buffer_done(&vpfe->next_frm->vb.vb2_buf,
                                        VB2_BUF_STATE_ERROR);
        }
 
@@ -2069,7 +2074,8 @@ static void vpfe_stop_streaming(struct vb2_queue *vq)
                vpfe->next_frm = list_entry(vpfe->dma_queue.next,
                                                struct vpfe_cap_buffer, list);
                list_del(&vpfe->next_frm->list);
-               vb2_buffer_done(&vpfe->next_frm->vb, VB2_BUF_STATE_ERROR);
+               vb2_buffer_done(&vpfe->next_frm->vb.vb2_buf,
+                               VB2_BUF_STATE_ERROR);
        }
        spin_unlock_irqrestore(&vpfe->dma_queue_lock, flags);
 }
@@ -2546,11 +2552,12 @@ static int vpfe_probe(struct platform_device *pdev)
        if (IS_ERR(ccdc->ccdc_cfg.base_addr))
                return PTR_ERR(ccdc->ccdc_cfg.base_addr);
 
-       vpfe->irq = platform_get_irq(pdev, 0);
-       if (vpfe->irq <= 0) {
+       ret = platform_get_irq(pdev, 0);
+       if (ret <= 0) {
                dev_err(&pdev->dev, "No IRQ resource\n");
                return -ENODEV;
        }
+       vpfe->irq = ret;
 
        ret = devm_request_irq(vpfe->pdev, vpfe->irq, vpfe_isr, 0,
                               "vpfe_capture0", vpfe);