diff options
Diffstat (limited to 'include/linux/dma-mapping.h')
-rw-r--r-- | include/linux/dma-mapping.h | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 2dc21cbeb304..101a2d4636be 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h | |||
@@ -13,16 +13,28 @@ enum dma_data_direction { | |||
13 | DMA_NONE = 3, | 13 | DMA_NONE = 3, |
14 | }; | 14 | }; |
15 | 15 | ||
16 | #define DMA_64BIT_MASK 0xffffffffffffffffULL | 16 | #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) |
17 | #define DMA_48BIT_MASK 0x0000ffffffffffffULL | 17 | |
18 | #define DMA_40BIT_MASK 0x000000ffffffffffULL | 18 | /* |
19 | #define DMA_39BIT_MASK 0x0000007fffffffffULL | 19 | * NOTE: do not use the below macros in new code and do not add new definitions |
20 | #define DMA_32BIT_MASK 0x00000000ffffffffULL | 20 | * here. |
21 | #define DMA_31BIT_MASK 0x000000007fffffffULL | 21 | * |
22 | #define DMA_30BIT_MASK 0x000000003fffffffULL | 22 | * Instead, just open-code DMA_BIT_MASK(n) within your driver |
23 | #define DMA_29BIT_MASK 0x000000001fffffffULL | 23 | */ |
24 | #define DMA_28BIT_MASK 0x000000000fffffffULL | 24 | #define DMA_64BIT_MASK DMA_BIT_MASK(64) |
25 | #define DMA_24BIT_MASK 0x0000000000ffffffULL | 25 | #define DMA_48BIT_MASK DMA_BIT_MASK(48) |
26 | #define DMA_47BIT_MASK DMA_BIT_MASK(47) | ||
27 | #define DMA_40BIT_MASK DMA_BIT_MASK(40) | ||
28 | #define DMA_39BIT_MASK DMA_BIT_MASK(39) | ||
29 | #define DMA_35BIT_MASK DMA_BIT_MASK(35) | ||
30 | #define DMA_32BIT_MASK DMA_BIT_MASK(32) | ||
31 | #define DMA_31BIT_MASK DMA_BIT_MASK(31) | ||
32 | #define DMA_30BIT_MASK DMA_BIT_MASK(30) | ||
33 | #define DMA_29BIT_MASK DMA_BIT_MASK(29) | ||
34 | #define DMA_28BIT_MASK DMA_BIT_MASK(28) | ||
35 | #define DMA_24BIT_MASK DMA_BIT_MASK(24) | ||
36 | |||
37 | #define DMA_MASK_NONE 0x0ULL | ||
26 | 38 | ||
27 | static inline int valid_dma_direction(int dma_direction) | 39 | static inline int valid_dma_direction(int dma_direction) |
28 | { | 40 | { |
@@ -31,6 +43,11 @@ static inline int valid_dma_direction(int dma_direction) | |||
31 | (dma_direction == DMA_FROM_DEVICE)); | 43 | (dma_direction == DMA_FROM_DEVICE)); |
32 | } | 44 | } |
33 | 45 | ||
46 | static inline int is_device_dma_capable(struct device *dev) | ||
47 | { | ||
48 | return dev->dma_mask != NULL && *dev->dma_mask != DMA_MASK_NONE; | ||
49 | } | ||
50 | |||
34 | #ifdef CONFIG_HAS_DMA | 51 | #ifdef CONFIG_HAS_DMA |
35 | #include <asm/dma-mapping.h> | 52 | #include <asm/dma-mapping.h> |
36 | #else | 53 | #else |