1004cc378SMarek Szyprowski /*
2004cc378SMarek Szyprowski  * videobuf2-memops.h - generic memory handling routines for videobuf2
3004cc378SMarek Szyprowski  *
4004cc378SMarek Szyprowski  * Copyright (C) 2010 Samsung Electronics
5004cc378SMarek Szyprowski  *
695072084SPawel Osciak  * Author: Pawel Osciak <pawel@osciak.com>
7004cc378SMarek Szyprowski  *	   Marek Szyprowski <m.szyprowski@samsung.com>
8004cc378SMarek Szyprowski  *
9004cc378SMarek Szyprowski  * This program is free software; you can redistribute it and/or modify
10004cc378SMarek Szyprowski  * it under the terms of the GNU General Public License as published by
11004cc378SMarek Szyprowski  * the Free Software Foundation.
12004cc378SMarek Szyprowski  */
13004cc378SMarek Szyprowski 
14004cc378SMarek Szyprowski #ifndef _MEDIA_VIDEOBUF2_MEMOPS_H
15004cc378SMarek Szyprowski #define _MEDIA_VIDEOBUF2_MEMOPS_H
16004cc378SMarek Szyprowski 
17c139990eSJunghak Sung #include <media/videobuf2-v4l2.h>
1821fb0cb7SJan Kara #include <linux/mm.h>
196c4bb65dSElena Reshetova #include <linux/refcount.h>
20004cc378SMarek Szyprowski 
21004cc378SMarek Szyprowski /**
229fbe71b4SMauro Carvalho Chehab  * struct vb2_vmarea_handler - common vma refcount tracking handler.
23b6836a6fSMauro Carvalho Chehab  *
249fbe71b4SMauro Carvalho Chehab  * @refcount:	pointer to &refcount_t entry in the buffer.
259fbe71b4SMauro Carvalho Chehab  * @put:	callback to function that decreases buffer refcount.
269fbe71b4SMauro Carvalho Chehab  * @arg:	argument for @put callback.
27004cc378SMarek Szyprowski  */
28004cc378SMarek Szyprowski struct vb2_vmarea_handler {
296c4bb65dSElena Reshetova 	refcount_t		*refcount;
30004cc378SMarek Szyprowski 	void			(*put)(void *arg);
31004cc378SMarek Szyprowski 	void			*arg;
32004cc378SMarek Szyprowski };
33004cc378SMarek Szyprowski 
34004cc378SMarek Szyprowski extern const struct vm_operations_struct vb2_common_vm_ops;
35004cc378SMarek Szyprowski 
3621fb0cb7SJan Kara struct frame_vector *vb2_create_framevec(unsigned long start,
37*e2fc6eddSHans Verkuil 					 unsigned long length,
38*e2fc6eddSHans Verkuil 					 bool write);
3921fb0cb7SJan Kara void vb2_destroy_framevec(struct frame_vector *vec);
40004cc378SMarek Szyprowski 
41004cc378SMarek Szyprowski #endif
42