Branch data Line data Source code
1 : : /* 2 : : * include/linux/dmapool.h 3 : : * 4 : : * Allocation pools for DMAable (coherent) memory. 5 : : * 6 : : * This file is licensed under the terms of the GNU General Public 7 : : * License version 2. This program is licensed "as is" without any 8 : : * warranty of any kind, whether express or implied. 9 : : */ 10 : : 11 : : #ifndef LINUX_DMAPOOL_H 12 : : #define LINUX_DMAPOOL_H 13 : : 14 : : #include <linux/scatterlist.h> 15 : : #include <asm/io.h> 16 : : 17 : : struct device; 18 : : 19 : : #ifdef CONFIG_HAS_DMA 20 : : 21 : : struct dma_pool *dma_pool_create(const char *name, struct device *dev, 22 : : size_t size, size_t align, size_t allocation); 23 : : 24 : : void dma_pool_destroy(struct dma_pool *pool); 25 : : 26 : : void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags, 27 : : dma_addr_t *handle); 28 : : void dma_pool_free(struct dma_pool *pool, void *vaddr, dma_addr_t addr); 29 : : 30 : : /* 31 : : * Managed DMA pool 32 : : */ 33 : : struct dma_pool *dmam_pool_create(const char *name, struct device *dev, 34 : : size_t size, size_t align, size_t allocation); 35 : : void dmam_pool_destroy(struct dma_pool *pool); 36 : : 37 : : #else /* !CONFIG_HAS_DMA */ 38 : : static inline struct dma_pool *dma_pool_create(const char *name, 39 : : struct device *dev, size_t size, size_t align, size_t allocation) 40 : : { return NULL; } 41 : : static inline void dma_pool_destroy(struct dma_pool *pool) { } 42 : : static inline void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags, 43 : : dma_addr_t *handle) { return NULL; } 44 : : static inline void dma_pool_free(struct dma_pool *pool, void *vaddr, 45 : : dma_addr_t addr) { } 46 : : static inline struct dma_pool *dmam_pool_create(const char *name, 47 : : struct device *dev, size_t size, size_t align, size_t allocation) 48 : : { return NULL; } 49 : : static inline void dmam_pool_destroy(struct dma_pool *pool) { } 50 : : #endif /* !CONFIG_HAS_DMA */ 51 : : 52 : 0 : static inline void *dma_pool_zalloc(struct dma_pool *pool, gfp_t mem_flags, 53 : : dma_addr_t *handle) 54 : : { 55 : 0 : return dma_pool_alloc(pool, mem_flags | __GFP_ZERO, handle); 56 : : } 57 : : 58 : : #endif 59 : :