.. | .. |
---|
58 | 58 | * @queue: vb2 video capture queue |
---|
59 | 59 | * @qlock: spinlock controlling access to buf_list and sequence |
---|
60 | 60 | * @buf_list: list of buffers queued for DMA |
---|
| 61 | + * @field: the field (TOP/BOTTOM/other) of the current buffer |
---|
61 | 62 | * @sequence: frame sequence counter |
---|
62 | 63 | */ |
---|
63 | 64 | struct skeleton { |
---|
.. | .. |
---|
80 | 81 | }; |
---|
81 | 82 | |
---|
82 | 83 | struct skel_buffer { |
---|
83 | | - struct vb2_buffer vb; |
---|
| 84 | + struct vb2_v4l2_buffer vb; |
---|
84 | 85 | struct list_head list; |
---|
85 | 86 | }; |
---|
86 | 87 | |
---|
87 | | -static inline struct skel_buffer *to_skel_buffer(struct vb2_buffer *vb2) |
---|
| 88 | +static inline struct skel_buffer *to_skel_buffer(struct vb2_v4l2_buffer *vbuf) |
---|
88 | 89 | { |
---|
89 | | - return container_of(vb2, struct skel_buffer, vb); |
---|
| 90 | + return container_of(vbuf, struct skel_buffer, vb); |
---|
90 | 91 | } |
---|
91 | 92 | |
---|
92 | 93 | static const struct pci_device_id skeleton_pci_tbl[] = { |
---|
.. | .. |
---|
139 | 140 | spin_lock(&skel->qlock); |
---|
140 | 141 | list_del(&new_buf->list); |
---|
141 | 142 | spin_unlock(&skel->qlock); |
---|
142 | | - v4l2_get_timestamp(&new_buf->vb.v4l2_buf.timestamp); |
---|
143 | | - new_buf->vb.v4l2_buf.sequence = skel->sequence++; |
---|
144 | | - new_buf->vb.v4l2_buf.field = skel->field; |
---|
| 143 | + new_buf->vb.vb2_buf.timestamp = ktime_get_ns(); |
---|
| 144 | + new_buf->vb.sequence = skel->sequence++; |
---|
| 145 | + new_buf->vb.field = skel->field; |
---|
145 | 146 | if (skel->format.field == V4L2_FIELD_ALTERNATE) { |
---|
146 | 147 | if (skel->field == V4L2_FIELD_BOTTOM) |
---|
147 | 148 | skel->field = V4L2_FIELD_TOP; |
---|
148 | 149 | else if (skel->field == V4L2_FIELD_TOP) |
---|
149 | 150 | skel->field = V4L2_FIELD_BOTTOM; |
---|
150 | 151 | } |
---|
151 | | - vb2_buffer_done(&new_buf->vb, VB2_BUF_STATE_DONE); |
---|
| 152 | + vb2_buffer_done(&new_buf->vb.vb2_buf, VB2_BUF_STATE_DONE); |
---|
152 | 153 | } |
---|
153 | 154 | #endif |
---|
154 | 155 | return IRQ_HANDLED; |
---|
.. | .. |
---|
212 | 213 | */ |
---|
213 | 214 | static void buffer_queue(struct vb2_buffer *vb) |
---|
214 | 215 | { |
---|
| 216 | + struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb); |
---|
215 | 217 | struct skeleton *skel = vb2_get_drv_priv(vb->vb2_queue); |
---|
216 | | - struct skel_buffer *buf = to_skel_buffer(vb); |
---|
| 218 | + struct skel_buffer *buf = to_skel_buffer(vbuf); |
---|
217 | 219 | unsigned long flags; |
---|
218 | 220 | |
---|
219 | 221 | spin_lock_irqsave(&skel->qlock, flags); |
---|
.. | .. |
---|
232 | 234 | |
---|
233 | 235 | spin_lock_irqsave(&skel->qlock, flags); |
---|
234 | 236 | list_for_each_entry_safe(buf, node, &skel->buf_list, list) { |
---|
235 | | - vb2_buffer_done(&buf->vb, state); |
---|
| 237 | + vb2_buffer_done(&buf->vb.vb2_buf, state); |
---|
236 | 238 | list_del(&buf->list); |
---|
237 | 239 | } |
---|
238 | 240 | spin_unlock_irqrestore(&skel->qlock, flags); |
---|
.. | .. |
---|
877 | 879 | vdev->tvnorms = SKEL_TVNORMS; |
---|
878 | 880 | video_set_drvdata(vdev, skel); |
---|
879 | 881 | |
---|
880 | | - ret = video_register_device(vdev, VFL_TYPE_GRABBER, -1); |
---|
| 882 | + ret = video_register_device(vdev, VFL_TYPE_VIDEO, -1); |
---|
881 | 883 | if (ret) |
---|
882 | 884 | goto free_hdl; |
---|
883 | 885 | |
---|