diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-sh/dma-mapping.h | 56 |
1 files changed, 20 insertions, 36 deletions
diff --git a/include/asm-sh/dma-mapping.h b/include/asm-sh/dma-mapping.h index 20ae762e5258..22cc419389fe 100644 --- a/include/asm-sh/dma-mapping.h +++ b/include/asm-sh/dma-mapping.h | |||
| @@ -8,11 +8,6 @@ | |||
| 8 | 8 | ||
| 9 | extern struct bus_type pci_bus_type; | 9 | extern struct bus_type pci_bus_type; |
| 10 | 10 | ||
| 11 | /* arch/sh/mm/consistent.c */ | ||
| 12 | extern void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t *handle); | ||
| 13 | extern void consistent_free(void *vaddr, size_t size, dma_addr_t handle); | ||
| 14 | extern void consistent_sync(void *vaddr, size_t size, int direction); | ||
| 15 | |||
| 16 | #define dma_supported(dev, mask) (1) | 11 | #define dma_supported(dev, mask) (1) |
| 17 | 12 | ||
| 18 | static inline int dma_set_mask(struct device *dev, u64 mask) | 13 | static inline int dma_set_mask(struct device *dev, u64 mask) |
| @@ -25,44 +20,19 @@ static inline int dma_set_mask(struct device *dev, u64 mask) | |||
| 25 | return 0; | 20 | return 0; |
| 26 | } | 21 | } |
| 27 | 22 | ||
| 28 | static inline void *dma_alloc_coherent(struct device *dev, size_t size, | 23 | void *dma_alloc_coherent(struct device *dev, size_t size, |
| 29 | dma_addr_t *dma_handle, gfp_t flag) | 24 | dma_addr_t *dma_handle, gfp_t flag); |
| 30 | { | ||
| 31 | if (sh_mv.mv_consistent_alloc) { | ||
| 32 | void *ret; | ||
| 33 | 25 | ||
| 34 | ret = sh_mv.mv_consistent_alloc(dev, size, dma_handle, flag); | 26 | void dma_free_coherent(struct device *dev, size_t size, |
| 35 | if (ret != NULL) | 27 | void *vaddr, dma_addr_t dma_handle); |
| 36 | return ret; | ||
| 37 | } | ||
| 38 | |||
| 39 | return consistent_alloc(flag, size, dma_handle); | ||
| 40 | } | ||
| 41 | |||
| 42 | static inline void dma_free_coherent(struct device *dev, size_t size, | ||
| 43 | void *vaddr, dma_addr_t dma_handle) | ||
| 44 | { | ||
| 45 | if (sh_mv.mv_consistent_free) { | ||
| 46 | int ret; | ||
| 47 | |||
| 48 | ret = sh_mv.mv_consistent_free(dev, size, vaddr, dma_handle); | ||
| 49 | if (ret == 0) | ||
| 50 | return; | ||
| 51 | } | ||
| 52 | 28 | ||
| 53 | consistent_free(vaddr, size, dma_handle); | 29 | void dma_cache_sync(struct device *dev, void *vaddr, size_t size, |
| 54 | } | 30 | enum dma_data_direction dir); |
| 55 | 31 | ||
| 56 | #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) | 32 | #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) |
| 57 | #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) | 33 | #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) |
| 58 | #define dma_is_consistent(d, h) (1) | 34 | #define dma_is_consistent(d, h) (1) |
| 59 | 35 | ||
| 60 | static inline void dma_cache_sync(struct device *dev, void *vaddr, size_t size, | ||
| 61 | enum dma_data_direction dir) | ||
| 62 | { | ||
| 63 | consistent_sync(vaddr, size, (int)dir); | ||
| 64 | } | ||
| 65 | |||
| 66 | static inline dma_addr_t dma_map_single(struct device *dev, | 36 | static inline dma_addr_t dma_map_single(struct device *dev, |
| 67 | void *ptr, size_t size, | 37 | void *ptr, size_t size, |
| 68 | enum dma_data_direction dir) | 38 | enum dma_data_direction dir) |
| @@ -205,4 +175,18 @@ static inline int dma_mapping_error(dma_addr_t dma_addr) | |||
| 205 | { | 175 | { |
| 206 | return dma_addr == 0; | 176 | return dma_addr == 0; |
| 207 | } | 177 | } |
| 178 | |||
| 179 | #define ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY | ||
| 180 | |||
| 181 | extern int | ||
| 182 | dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, | ||
| 183 | dma_addr_t device_addr, size_t size, int flags); | ||
| 184 | |||
| 185 | extern void | ||
| 186 | dma_release_declared_memory(struct device *dev); | ||
| 187 | |||
| 188 | extern void * | ||
| 189 | dma_mark_declared_memory_occupied(struct device *dev, | ||
| 190 | dma_addr_t device_addr, size_t size); | ||
| 191 | |||
| 208 | #endif /* __ASM_SH_DMA_MAPPING_H */ | 192 | #endif /* __ASM_SH_DMA_MAPPING_H */ |
