blob: f7dc8401817ec77d88b14427ec778bf1e58c600d [file] [log] [blame]
Pawel Osciak1a758d42010-10-11 10:59:36 -03001/*
Albert Wang86b09052012-06-07 05:42:24 -03002 * videobuf2-dma-contig.h - DMA contig memory allocator for videobuf2
Pawel Osciak1a758d42010-10-11 10:59:36 -03003 *
4 * Copyright (C) 2010 Samsung Electronics
5 *
Pawel Osciak95072082011-03-13 15:23:32 -03006 * Author: Pawel Osciak <pawel@osciak.com>
Pawel Osciak1a758d42010-10-11 10:59:36 -03007 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation.
11 */
12
Albert Wang86b09052012-06-07 05:42:24 -030013#ifndef _MEDIA_VIDEOBUF2_DMA_CONTIG_H
14#define _MEDIA_VIDEOBUF2_DMA_CONTIG_H
Pawel Osciak1a758d42010-10-11 10:59:36 -030015
Junghak Sungc1399902015-09-22 10:30:29 -030016#include <media/videobuf2-v4l2.h>
Pawel Osciak472af2b2011-03-14 10:38:24 -030017#include <linux/dma-mapping.h>
Pawel Osciak1a758d42010-10-11 10:59:36 -030018
Tomasz Figaccc66e72016-02-01 22:34:42 +010019struct dma_attrs;
20
Pawel Osciak472af2b2011-03-14 10:38:24 -030021static inline dma_addr_t
Marek Szyprowskiba7fcb02011-08-29 03:20:56 -030022vb2_dma_contig_plane_dma_addr(struct vb2_buffer *vb, unsigned int plane_no)
Pawel Osciak1a758d42010-10-11 10:59:36 -030023{
Marek Szyprowskiba7fcb02011-08-29 03:20:56 -030024 dma_addr_t *addr = vb2_plane_cookie(vb, plane_no);
Pawel Osciak472af2b2011-03-14 10:38:24 -030025
Marek Szyprowskiba7fcb02011-08-29 03:20:56 -030026 return *addr;
Pawel Osciak1a758d42010-10-11 10:59:36 -030027}
28
Tomasz Figaccc66e72016-02-01 22:34:42 +010029void *vb2_dma_contig_init_ctx_attrs(struct device *dev,
30 struct dma_attrs *attrs);
31
32static inline void *vb2_dma_contig_init_ctx(struct device *dev)
33{
34 return vb2_dma_contig_init_ctx_attrs(dev, NULL);
35}
36
Pawel Osciak1a758d42010-10-11 10:59:36 -030037void vb2_dma_contig_cleanup_ctx(void *alloc_ctx);
Marek Szyprowski3f033962016-05-24 09:16:06 +020038int vb2_dma_contig_set_max_seg_size(struct device *dev, unsigned int size);
39void vb2_dma_contig_clear_max_seg_size(struct device *dev);
Pawel Osciak1a758d42010-10-11 10:59:36 -030040
41extern const struct vb2_mem_ops vb2_dma_contig_memops;
42
43#endif