diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2012-04-30 07:19:10 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-05-08 12:46:19 -0400 |
commit | 4742c82ed90d0f8c82639750dcfe481e61d883a4 (patch) | |
tree | 7b9e5848405655c4e77c0ca1aba5dfcbca841ef6 /drivers | |
parent | 616bd4e2573cb114aadd90182ebe7f34066b15da (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.c | 43 |
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 | ||
211 | unsigned 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 | |||
210 | unsigned int uvc_queue_poll(struct uvc_video_queue *queue, struct file *file, | 223 | unsigned 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 | */ | ||
246 | unsigned 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; | ||
264 | done: | ||
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 | * |