aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2012-04-30 07:19:10 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-05-08 12:46:19 -0400
commit4742c82ed90d0f8c82639750dcfe481e61d883a4 (patch)
tree7b9e5848405655c4e77c0ca1aba5dfcbca841ef6 /drivers
parent616bd4e2573cb114aadd90182ebe7f34066b15da (diff)
[media] uvcvideo: Use videobuf2 .get_unmapped_area() implementation
The get_unmapped_area() operation was forgotten during conversion to videobuf2. Fix it. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/video/uvc/uvc_queue.c43
1 files changed, 13 insertions, 30 deletions
diff --git a/drivers/media/video/uvc/uvc_queue.c b/drivers/media/video/uvc/uvc_queue.c
index 8f54e24e3f3..9288fbd5001 100644
--- a/drivers/media/video/uvc/uvc_queue.c
+++ b/drivers/media/video/uvc/uvc_queue.c
@@ -207,6 +207,19 @@ int uvc_queue_mmap(struct uvc_video_queue *queue, struct vm_area_struct *vma)
207 return ret; 207 return ret;
208} 208}
209 209
210#ifndef CONFIG_MMU
211unsigned long uvc_queue_get_unmapped_area(struct uvc_video_queue *queue,
212 unsigned long pgoff)
213{
214 unsigned long ret;
215
216 mutex_lock(&queue->mutex);
217 ret = vb2_get_unmapped_area(&queue->queue, 0, 0, pgoff, 0);
218 mutex_unlock(&queue->mutex);
219 return ret;
220}
221#endif
222
210unsigned int uvc_queue_poll(struct uvc_video_queue *queue, struct file *file, 223unsigned int uvc_queue_poll(struct uvc_video_queue *queue, struct file *file,
211 poll_table *wait) 224 poll_table *wait)
212{ 225{
@@ -237,36 +250,6 @@ int uvc_queue_allocated(struct uvc_video_queue *queue)
237 return allocated; 250 return allocated;
238} 251}
239 252
240#ifndef CONFIG_MMU
241/*
242 * Get unmapped area.
243 *
244 * NO-MMU arch need this function to make mmap() work correctly.
245 */
246unsigned long uvc_queue_get_unmapped_area(struct uvc_video_queue *queue,
247 unsigned long pgoff)
248{
249 struct uvc_buffer *buffer;
250 unsigned int i;
251 unsigned long ret;
252
253 mutex_lock(&queue->mutex);
254 for (i = 0; i < queue->count; ++i) {
255 buffer = &queue->buffer[i];
256 if ((buffer->buf.m.offset >> PAGE_SHIFT) == pgoff)
257 break;
258 }
259 if (i == queue->count) {
260 ret = -EINVAL;
261 goto done;
262 }
263 ret = (unsigned long)buf->mem;
264done:
265 mutex_unlock(&queue->mutex);
266 return ret;
267}
268#endif
269
270/* 253/*
271 * Enable or disable the video buffers queue. 254 * Enable or disable the video buffers queue.
272 * 255 *