These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / media / platform / davinci / vpbe_display.c
index c4ab46f..6d91422 100644 (file)
@@ -71,16 +71,11 @@ static int venc_is_second_field(struct vpbe_display *disp_dev)
 static void vpbe_isr_even_field(struct vpbe_display *disp_obj,
                                struct vpbe_layer *layer)
 {
-       struct timespec timevalue;
-
        if (layer->cur_frm == layer->next_frm)
                return;
-       ktime_get_ts(&timevalue);
-       layer->cur_frm->vb.v4l2_buf.timestamp.tv_sec =
-               timevalue.tv_sec;
-       layer->cur_frm->vb.v4l2_buf.timestamp.tv_usec =
-               timevalue.tv_nsec / NSEC_PER_USEC;
-       vb2_buffer_done(&layer->cur_frm->vb, VB2_BUF_STATE_DONE);
+
+       v4l2_get_timestamp(&layer->cur_frm->vb.timestamp);
+       vb2_buffer_done(&layer->cur_frm->vb.vb2_buf, VB2_BUF_STATE_DONE);
        /* Make cur_frm pointing to next_frm */
        layer->cur_frm = layer->next_frm;
 }
@@ -109,8 +104,8 @@ static void vpbe_isr_odd_field(struct vpbe_display *disp_obj,
        list_del(&layer->next_frm->list);
        spin_unlock(&disp_obj->dma_queue_lock);
        /* Mark state of the frame to active */
-       layer->next_frm->vb.state = VB2_BUF_STATE_ACTIVE;
-       addr = vb2_dma_contig_plane_dma_addr(&layer->next_frm->vb, 0);
+       layer->next_frm->vb.vb2_buf.state = VB2_BUF_STATE_ACTIVE;
+       addr = vb2_dma_contig_plane_dma_addr(&layer->next_frm->vb.vb2_buf, 0);
        osd_device->ops.start_layer(osd_device,
                        layer->layer_info.id,
                        addr,
@@ -233,11 +228,12 @@ static int vpbe_buffer_prepare(struct vb2_buffer *vb)
  * This function allocates memory for the buffers
  */
 static int
-vpbe_buffer_queue_setup(struct vb2_queue *vq, const struct v4l2_format *fmt,
+vpbe_buffer_queue_setup(struct vb2_queue *vq, const void *parg,
                        unsigned int *nbuffers, unsigned int *nplanes,
                        unsigned int sizes[], void *alloc_ctxs[])
 
 {
+       const struct v4l2_format *fmt = parg;
        /* Get the file handle object and layer object */
        struct vpbe_layer *layer = vb2_get_drv_priv(vq);
        struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev;
@@ -264,8 +260,9 @@ vpbe_buffer_queue_setup(struct vb2_queue *vq, const struct v4l2_format *fmt,
  */
 static void vpbe_buffer_queue(struct vb2_buffer *vb)
 {
+       struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
        /* Get the file handle object and layer object */
-       struct vpbe_disp_buffer *buf = container_of(vb,
+       struct vpbe_disp_buffer *buf = container_of(vbuf,
                                struct vpbe_disp_buffer, vb);
        struct vpbe_layer *layer = vb2_get_drv_priv(vb->vb2_queue);
        struct vpbe_display *disp = layer->disp_dev;
@@ -295,7 +292,7 @@ static int vpbe_start_streaming(struct vb2_queue *vq, unsigned int count)
        /* Remove buffer from the buffer queue */
        list_del(&layer->cur_frm->list);
        /* Mark state of the current frame to active */
-       layer->cur_frm->vb.state = VB2_BUF_STATE_ACTIVE;
+       layer->cur_frm->vb.vb2_buf.state = VB2_BUF_STATE_ACTIVE;
        /* Initialize field_id and started member */
        layer->field_id = 0;
 
@@ -304,10 +301,12 @@ static int vpbe_start_streaming(struct vb2_queue *vq, unsigned int count)
        if (ret < 0) {
                struct vpbe_disp_buffer *buf, *tmp;
 
-               vb2_buffer_done(&layer->cur_frm->vb, VB2_BUF_STATE_QUEUED);
+               vb2_buffer_done(&layer->cur_frm->vb.vb2_buf,
+                               VB2_BUF_STATE_QUEUED);
                list_for_each_entry_safe(buf, tmp, &layer->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;
@@ -337,13 +336,14 @@ static void vpbe_stop_streaming(struct vb2_queue *vq)
        /* release all active buffers */
        spin_lock_irqsave(&disp->dma_queue_lock, flags);
        if (layer->cur_frm == layer->next_frm) {
-               vb2_buffer_done(&layer->cur_frm->vb, VB2_BUF_STATE_ERROR);
+               vb2_buffer_done(&layer->cur_frm->vb.vb2_buf,
+                               VB2_BUF_STATE_ERROR);
        } else {
                if (layer->cur_frm != NULL)
-                       vb2_buffer_done(&layer->cur_frm->vb,
+                       vb2_buffer_done(&layer->cur_frm->vb.vb2_buf,
                                        VB2_BUF_STATE_ERROR);
                if (layer->next_frm != NULL)
-                       vb2_buffer_done(&layer->next_frm->vb,
+                       vb2_buffer_done(&layer->next_frm->vb.vb2_buf,
                                        VB2_BUF_STATE_ERROR);
        }
 
@@ -351,7 +351,8 @@ static void vpbe_stop_streaming(struct vb2_queue *vq)
                layer->next_frm = list_entry(layer->dma_queue.next,
                                                struct vpbe_disp_buffer, list);
                list_del(&layer->next_frm->list);
-               vb2_buffer_done(&layer->next_frm->vb, VB2_BUF_STATE_ERROR);
+               vb2_buffer_done(&layer->next_frm->vb.vb2_buf,
+                               VB2_BUF_STATE_ERROR);
        }
        spin_unlock_irqrestore(&disp->dma_queue_lock, flags);
 }
@@ -388,7 +389,7 @@ static int vpbe_set_osd_display_params(struct vpbe_display *disp_dev,
        unsigned long addr;
        int ret;
 
-       addr = vb2_dma_contig_plane_dma_addr(&layer->cur_frm->vb, 0);
+       addr = vb2_dma_contig_plane_dma_addr(&layer->cur_frm->vb.vb2_buf, 0);
        /* Set address in the display registers */
        osd_device->ops.start_layer(osd_device,
                                    layer->layer_info.id,