linux/include/asm-generic/dma-mapping-broken.h
<<
>>
Prefs
   1#ifndef _ASM_GENERIC_DMA_MAPPING_H
   2#define _ASM_GENERIC_DMA_MAPPING_H
   3
   4/* define the dma api to allow compilation but not linking of
   5 * dma dependent code.  Code that depends on the dma-mapping
   6 * API needs to set 'depends on HAS_DMA' in its Kconfig
   7 */
   8
   9struct scatterlist;
  10
  11extern void *
  12dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
  13                   gfp_t flag);
  14
  15extern void
  16dma_free_coherent(struct device *dev, size_t size, void *cpu_addr,
  17                    dma_addr_t dma_handle);
  18
  19static inline void *dma_alloc_attrs(struct device *dev, size_t size,
  20                                    dma_addr_t *dma_handle, gfp_t flag,
  21                                    struct dma_attrs *attrs)
  22{
  23        /* attrs is not supported and ignored */
  24        return dma_alloc_coherent(dev, size, dma_handle, flag);
  25}
  26
  27static inline void dma_free_attrs(struct device *dev, size_t size,
  28                                  void *cpu_addr, dma_addr_t dma_handle,
  29                                  struct dma_attrs *attrs)
  30{
  31        /* attrs is not supported and ignored */
  32        dma_free_coherent(dev, size, cpu_addr, dma_handle);
  33}
  34
  35#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
  36#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
  37
  38extern dma_addr_t
  39dma_map_single(struct device *dev, void *ptr, size_t size,
  40               enum dma_data_direction direction);
  41
  42extern void
  43dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
  44                 enum dma_data_direction direction);
  45
  46extern int
  47dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
  48           enum dma_data_direction direction);
  49
  50extern void
  51dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
  52             enum dma_data_direction direction);
  53
  54extern dma_addr_t
  55dma_map_page(struct device *dev, struct page *page, unsigned long offset,
  56             size_t size, enum dma_data_direction direction);
  57
  58extern void
  59dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
  60               enum dma_data_direction direction);
  61
  62extern void
  63dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size,
  64                        enum dma_data_direction direction);
  65
  66extern void
  67dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t dma_handle,
  68                              unsigned long offset, size_t size,
  69                              enum dma_data_direction direction);
  70
  71extern void
  72dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems,
  73                    enum dma_data_direction direction);
  74
  75#define dma_sync_single_for_device dma_sync_single_for_cpu
  76#define dma_sync_single_range_for_device dma_sync_single_range_for_cpu
  77#define dma_sync_sg_for_device dma_sync_sg_for_cpu
  78
  79extern int
  80dma_mapping_error(struct device *dev, dma_addr_t dma_addr);
  81
  82extern int
  83dma_supported(struct device *dev, u64 mask);
  84
  85extern int
  86dma_set_mask(struct device *dev, u64 mask);
  87
  88extern int
  89dma_get_cache_alignment(void);
  90
  91extern void
  92dma_cache_sync(struct device *dev, void *vaddr, size_t size,
  93               enum dma_data_direction direction);
  94
  95#endif /* _ASM_GENERIC_DMA_MAPPING_H */
  96