dma-mapping.h revision 73e5a848426fae8e7f1f685389aa61d7a98e7c36
1#ifndef _ASM_S390_DMA_MAPPING_H 2#define _ASM_S390_DMA_MAPPING_H 3 4#include <linux/kernel.h> 5#include <linux/types.h> 6#include <linux/mm.h> 7#include <linux/scatterlist.h> 8#include <linux/dma-attrs.h> 9#include <linux/dma-debug.h> 10#include <linux/io.h> 11 12#define DMA_ERROR_CODE (~(dma_addr_t) 0x0) 13 14extern struct dma_map_ops s390_dma_ops; 15 16static inline struct dma_map_ops *get_dma_ops(struct device *dev) 17{ 18 return &s390_dma_ops; 19} 20 21extern int dma_set_mask(struct device *dev, u64 mask); 22 23static inline void dma_cache_sync(struct device *dev, void *vaddr, size_t size, 24 enum dma_data_direction direction) 25{ 26} 27 28#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) 29#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) 30 31#include <asm-generic/dma-mapping-common.h> 32 33static inline int dma_supported(struct device *dev, u64 mask) 34{ 35 struct dma_map_ops *dma_ops = get_dma_ops(dev); 36 37 if (dma_ops->dma_supported == NULL) 38 return 1; 39 return dma_ops->dma_supported(dev, mask); 40} 41 42static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size) 43{ 44 if (!dev->dma_mask) 45 return 0; 46 return addr + size - 1 <= *dev->dma_mask; 47} 48 49static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) 50{ 51 struct dma_map_ops *dma_ops = get_dma_ops(dev); 52 53 if (dma_ops->mapping_error) 54 return dma_ops->mapping_error(dev, dma_addr); 55 return (dma_addr == DMA_ERROR_CODE); 56} 57 58static inline void *dma_alloc_coherent(struct device *dev, size_t size, 59 dma_addr_t *dma_handle, gfp_t flag) 60{ 61 struct dma_map_ops *ops = get_dma_ops(dev); 62 void *ret; 63 64 ret = ops->alloc(dev, size, dma_handle, flag, NULL); 65 debug_dma_alloc_coherent(dev, size, *dma_handle, ret); 66 return ret; 67} 68 69static inline void dma_free_coherent(struct device *dev, size_t size, 70 void *cpu_addr, dma_addr_t dma_handle) 71{ 72 struct dma_map_ops *dma_ops = get_dma_ops(dev); 73 74 debug_dma_free_coherent(dev, size, cpu_addr, dma_handle); 75 dma_ops->free(dev, size, cpu_addr, dma_handle, NULL); 76} 77 78#endif /* _ASM_S390_DMA_MAPPING_H */ 79