2007-08-03 06:31:33 +04:00
/*
* helper functions for vmalloc capture buffers
*
2008-07-17 04:27:49 +04:00
* The functions expect the hardware being able to scatter gather
2007-08-03 06:31:33 +04:00
* ( i . e . the buffers are not linear in physical memory , but fragmented
* into PAGE_SIZE chunks ) . They also assume the driver does not need
* to touch the video data .
*
* ( c ) 2007 Mauro Carvalho Chehab , < mchehab @ infradead . org >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2
*/
2008-04-13 22:10:00 +04:00
# ifndef _VIDEOBUF_VMALLOC_H
# define _VIDEOBUF_VMALLOC_H
2007-08-03 06:31:33 +04:00
# include <media/videobuf-core.h>
/* --------------------------------------------------------------------- */
2010-03-17 10:01:04 +03:00
struct videobuf_vmalloc_memory {
2007-08-03 06:31:33 +04:00
u32 magic ;
2010-05-11 17:36:34 +04:00
void * vaddr ;
2007-08-03 06:31:33 +04:00
2010-03-17 10:01:04 +03:00
/* remap_vmalloc_range seems to need to run
* after mmap ( ) on some cases */
2007-08-03 06:31:33 +04:00
struct vm_area_struct * vma ;
} ;
2010-03-17 10:01:04 +03:00
void videobuf_queue_vmalloc_init ( struct videobuf_queue * q ,
2009-11-18 01:43:41 +03:00
const struct videobuf_queue_ops * ops ,
2009-11-23 20:29:35 +03:00
struct device * dev ,
2007-08-03 06:31:33 +04:00
spinlock_t * irqlock ,
enum v4l2_buf_type type ,
enum v4l2_field field ,
unsigned int msize ,
2010-09-21 00:39:46 +04:00
void * priv ,
struct mutex * ext_lock ) ;
2007-08-03 06:31:33 +04:00
2010-03-17 10:01:04 +03:00
void * videobuf_to_vmalloc ( struct videobuf_buffer * buf ) ;
2007-08-03 06:31:33 +04:00
2010-03-17 10:01:04 +03:00
void videobuf_vmalloc_free ( struct videobuf_buffer * buf ) ;
2008-04-13 22:10:00 +04:00
# endif