Blame view
include/linux/dma-mapping.h
2.87 KB
1da177e4c
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#ifndef _ASM_LINUX_DMA_MAPPING_H #define _ASM_LINUX_DMA_MAPPING_H #include <linux/device.h> #include <linux/err.h> /* These definitions mirror those in pci.h, so they can be used * interchangeably with their PCI_ counterparts */ enum dma_data_direction { DMA_BIDIRECTIONAL = 0, DMA_TO_DEVICE = 1, DMA_FROM_DEVICE = 2, DMA_NONE = 3, }; #define DMA_64BIT_MASK 0xffffffffffffffffULL |
4c1b46226
|
17 |
#define DMA_48BIT_MASK 0x0000ffffffffffffULL |
b8112df71
|
18 19 |
#define DMA_40BIT_MASK 0x000000ffffffffffULL #define DMA_39BIT_MASK 0x0000007fffffffffULL |
1da177e4c
|
20 |
#define DMA_32BIT_MASK 0x00000000ffffffffULL |
b8112df71
|
21 22 23 |
#define DMA_31BIT_MASK 0x000000007fffffffULL #define DMA_30BIT_MASK 0x000000003fffffffULL #define DMA_29BIT_MASK 0x000000001fffffffULL |
9d2f928dd
|
24 |
#define DMA_28BIT_MASK 0x000000000fffffffULL |
56b146d36
|
25 |
#define DMA_24BIT_MASK 0x0000000000ffffffULL |
1da177e4c
|
26 |
|
d6bd3a39f
|
27 28 29 30 31 32 |
static inline int valid_dma_direction(int dma_direction) { return ((dma_direction == DMA_BIDIRECTIONAL) || (dma_direction == DMA_TO_DEVICE) || (dma_direction == DMA_FROM_DEVICE)); } |
1b0fac458
|
33 |
#ifdef CONFIG_HAS_DMA |
1da177e4c
|
34 |
#include <asm/dma-mapping.h> |
1b0fac458
|
35 36 37 |
#else #include <asm-generic/dma-mapping-broken.h> #endif |
1da177e4c
|
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
/* Backwards compat, remove in 2.7.x */ #define dma_sync_single dma_sync_single_for_cpu #define dma_sync_sg dma_sync_sg_for_cpu extern u64 dma_get_required_mask(struct device *dev); /* flags for the coherent memory api */ #define DMA_MEMORY_MAP 0x01 #define DMA_MEMORY_IO 0x02 #define DMA_MEMORY_INCLUDES_CHILDREN 0x04 #define DMA_MEMORY_EXCLUSIVE 0x08 #ifndef ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY static inline int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, dma_addr_t device_addr, size_t size, int flags) { return 0; } static inline void dma_release_declared_memory(struct device *dev) { } static inline void * dma_mark_declared_memory_occupied(struct device *dev, dma_addr_t device_addr, size_t size) { return ERR_PTR(-EBUSY); } #endif |
9ac7849e3
|
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
/* * Managed DMA API */ extern void *dmam_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp); extern void dmam_free_coherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle); extern void *dmam_alloc_noncoherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp); extern void dmam_free_noncoherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle); #ifdef ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY extern int dmam_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, dma_addr_t device_addr, size_t size, int flags); extern void dmam_release_declared_memory(struct device *dev); #else /* ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY */ static inline int dmam_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, dma_addr_t device_addr, size_t size, gfp_t gfp) { return 0; } |
1da177e4c
|
94 |
|
9ac7849e3
|
95 96 97 98 |
static inline void dmam_release_declared_memory(struct device *dev) { } #endif /* ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY */ |
1da177e4c
|
99 |
|
9ac7849e3
|
100 |
#endif |