| Mauro Carvalho Chehab | 87b9ad0 | 2007-08-02 23:31:33 -0300 | [diff] [blame] | 1 | /* | 
 | 2 |  * helper functions for vmalloc capture buffers | 
 | 3 |  * | 
| Magnus Damm | 5d6aaf5 | 2008-07-16 21:27:49 -0300 | [diff] [blame] | 4 |  * The functions expect the hardware being able to scatter gather | 
| Mauro Carvalho Chehab | 87b9ad0 | 2007-08-02 23:31:33 -0300 | [diff] [blame] | 5 |  * (i.e. the buffers are not linear in physical memory, but fragmented | 
 | 6 |  * into PAGE_SIZE chunks).  They also assume the driver does not need | 
 | 7 |  * to touch the video data. | 
 | 8 |  * | 
 | 9 |  * (c) 2007 Mauro Carvalho Chehab, <mchehab@infradead.org> | 
 | 10 |  * | 
 | 11 |  * This program is free software; you can redistribute it and/or modify | 
 | 12 |  * it under the terms of the GNU General Public License as published by | 
 | 13 |  * the Free Software Foundation; either version 2 | 
 | 14 |  */ | 
| Mauro Carvalho Chehab | 59d3448 | 2008-04-13 15:10:00 -0300 | [diff] [blame] | 15 | #ifndef _VIDEOBUF_VMALLOC_H | 
 | 16 | #define _VIDEOBUF_VMALLOC_H | 
| Mauro Carvalho Chehab | 87b9ad0 | 2007-08-02 23:31:33 -0300 | [diff] [blame] | 17 |  | 
 | 18 | #include <media/videobuf-core.h> | 
 | 19 |  | 
 | 20 | /* --------------------------------------------------------------------- */ | 
 | 21 |  | 
| Pawel Osciak | 7a02264 | 2010-03-17 04:01:04 -0300 | [diff] [blame] | 22 | struct videobuf_vmalloc_memory { | 
| Mauro Carvalho Chehab | 87b9ad0 | 2007-08-02 23:31:33 -0300 | [diff] [blame] | 23 | 	u32                 magic; | 
 | 24 |  | 
| Laurent Pinchart | bb6dbe7 | 2010-05-11 10:36:34 -0300 | [diff] [blame] | 25 | 	void                *vaddr; | 
| Mauro Carvalho Chehab | 87b9ad0 | 2007-08-02 23:31:33 -0300 | [diff] [blame] | 26 |  | 
| Pawel Osciak | 7a02264 | 2010-03-17 04:01:04 -0300 | [diff] [blame] | 27 | 	/* remap_vmalloc_range seems to need to run | 
 | 28 | 	 * after mmap() on some cases */ | 
| Mauro Carvalho Chehab | 87b9ad0 | 2007-08-02 23:31:33 -0300 | [diff] [blame] | 29 | 	struct vm_area_struct *vma; | 
 | 30 | }; | 
 | 31 |  | 
| Pawel Osciak | 7a02264 | 2010-03-17 04:01:04 -0300 | [diff] [blame] | 32 | void videobuf_queue_vmalloc_init(struct videobuf_queue *q, | 
| Jonathan Corbet | 38a54f3 | 2009-11-17 19:43:41 -0300 | [diff] [blame] | 33 | 			 const struct videobuf_queue_ops *ops, | 
| Jonathan Corbet | f8b0bca | 2009-11-23 14:29:35 -0300 | [diff] [blame] | 34 | 			 struct device *dev, | 
| Mauro Carvalho Chehab | 87b9ad0 | 2007-08-02 23:31:33 -0300 | [diff] [blame] | 35 | 			 spinlock_t *irqlock, | 
 | 36 | 			 enum v4l2_buf_type type, | 
 | 37 | 			 enum v4l2_field field, | 
 | 38 | 			 unsigned int msize, | 
| Hans Verkuil | 08bff03 | 2010-09-20 17:39:46 -0300 | [diff] [blame] | 39 | 			 void *priv, | 
 | 40 | 			 struct mutex *ext_lock); | 
| Mauro Carvalho Chehab | 87b9ad0 | 2007-08-02 23:31:33 -0300 | [diff] [blame] | 41 |  | 
| Pawel Osciak | 7a02264 | 2010-03-17 04:01:04 -0300 | [diff] [blame] | 42 | void *videobuf_to_vmalloc(struct videobuf_buffer *buf); | 
| Mauro Carvalho Chehab | 87b9ad0 | 2007-08-02 23:31:33 -0300 | [diff] [blame] | 43 |  | 
| Pawel Osciak | 7a02264 | 2010-03-17 04:01:04 -0300 | [diff] [blame] | 44 | void videobuf_vmalloc_free(struct videobuf_buffer *buf); | 
| Mauro Carvalho Chehab | 59d3448 | 2008-04-13 15:10:00 -0300 | [diff] [blame] | 45 |  | 
 | 46 | #endif |