xref: /linux-6.15/include/linux/dmapool.h (revision ce66b032)
11da177e4SLinus Torvalds /*
21da177e4SLinus Torvalds  * include/linux/dmapool.h
31da177e4SLinus Torvalds  *
41da177e4SLinus Torvalds  * Allocation pools for DMAable (coherent) memory.
51da177e4SLinus Torvalds  *
61da177e4SLinus Torvalds  * This file is licensed under  the terms of the GNU General Public
71da177e4SLinus Torvalds  * License version 2. This program is licensed "as is" without any
81da177e4SLinus Torvalds  * warranty of any kind, whether express or implied.
91da177e4SLinus Torvalds  */
101da177e4SLinus Torvalds 
111da177e4SLinus Torvalds #ifndef LINUX_DMAPOOL_H
121da177e4SLinus Torvalds #define	LINUX_DMAPOOL_H
131da177e4SLinus Torvalds 
141da177e4SLinus Torvalds #include <asm/io.h>
151da177e4SLinus Torvalds #include <asm/scatterlist.h>
161da177e4SLinus Torvalds 
17*ce66b032SMark Brown struct device;
18*ce66b032SMark Brown 
191da177e4SLinus Torvalds struct dma_pool *dma_pool_create(const char *name, struct device *dev,
201da177e4SLinus Torvalds 			size_t size, size_t align, size_t allocation);
211da177e4SLinus Torvalds 
221da177e4SLinus Torvalds void dma_pool_destroy(struct dma_pool *pool);
231da177e4SLinus Torvalds 
24dd0fc66fSAl Viro void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags,
253a11ec5eSVictor Fusco 		     dma_addr_t *handle);
261da177e4SLinus Torvalds 
271da177e4SLinus Torvalds void dma_pool_free(struct dma_pool *pool, void *vaddr, dma_addr_t addr);
281da177e4SLinus Torvalds 
299ac7849eSTejun Heo /*
309ac7849eSTejun Heo  * Managed DMA pool
319ac7849eSTejun Heo  */
329ac7849eSTejun Heo struct dma_pool *dmam_pool_create(const char *name, struct device *dev,
339ac7849eSTejun Heo 				  size_t size, size_t align, size_t allocation);
349ac7849eSTejun Heo void dmam_pool_destroy(struct dma_pool *pool);
359ac7849eSTejun Heo 
361da177e4SLinus Torvalds #endif
371da177e4SLinus Torvalds 
38