blob: e930dbb9d7f45813ff68615e1ea7a18ba0a246e8 [file] [log] [blame]
David Brazdil0f672f62019-12-10 10:32:29 +00001/* SPDX-License-Identifier: GPL-2.0-only */
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00002/*
3 * helper functions for vmalloc capture buffers
4 *
5 * The functions expect the hardware being able to scatter gather
6 * (i.e. the buffers are not linear in physical memory, but fragmented
7 * into PAGE_SIZE chunks). They also assume the driver does not need
8 * to touch the video data.
9 *
10 * (c) 2007 Mauro Carvalho Chehab, <mchehab@kernel.org>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000011 */
12#ifndef _VIDEOBUF_VMALLOC_H
13#define _VIDEOBUF_VMALLOC_H
14
15#include <media/videobuf-core.h>
16
17/* --------------------------------------------------------------------- */
18
19struct videobuf_vmalloc_memory {
20 u32 magic;
21
22 void *vaddr;
23
24 /* remap_vmalloc_range seems to need to run
25 * after mmap() on some cases */
26 struct vm_area_struct *vma;
27};
28
29void videobuf_queue_vmalloc_init(struct videobuf_queue *q,
30 const struct videobuf_queue_ops *ops,
31 struct device *dev,
32 spinlock_t *irqlock,
33 enum v4l2_buf_type type,
34 enum v4l2_field field,
35 unsigned int msize,
36 void *priv,
37 struct mutex *ext_lock);
38
39void *videobuf_to_vmalloc(struct videobuf_buffer *buf);
40
41void videobuf_vmalloc_free(struct videobuf_buffer *buf);
42
43#endif