1 #ifndef _ASM_GENERIC_DMA_MAPPING_H
2 #define _ASM_GENERIC_DMA_MAPPING_H
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
12 dma_alloc_coherent(struct device
*dev
, size_t size
, dma_addr_t
*dma_handle
,
16 dma_free_coherent(struct device
*dev
, size_t size
, void *cpu_addr
,
17 dma_addr_t dma_handle
);
19 static 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
)
23 /* attrs is not supported and ignored */
24 return dma_alloc_coherent(dev
, size
, dma_handle
, flag
);
27 static 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
)
31 /* attrs is not supported and ignored */
32 dma_free_coherent(dev
, size
, cpu_addr
, dma_handle
);
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)
39 dma_map_single(struct device
*dev
, void *ptr
, size_t size
,
40 enum dma_data_direction direction
);
43 dma_unmap_single(struct device
*dev
, dma_addr_t dma_addr
, size_t size
,
44 enum dma_data_direction direction
);
47 dma_map_sg(struct device
*dev
, struct scatterlist
*sg
, int nents
,
48 enum dma_data_direction direction
);
51 dma_unmap_sg(struct device
*dev
, struct scatterlist
*sg
, int nhwentries
,
52 enum dma_data_direction direction
);
55 dma_map_page(struct device
*dev
, struct page
*page
, unsigned long offset
,
56 size_t size
, enum dma_data_direction direction
);
59 dma_unmap_page(struct device
*dev
, dma_addr_t dma_address
, size_t size
,
60 enum dma_data_direction direction
);
63 dma_sync_single_for_cpu(struct device
*dev
, dma_addr_t dma_handle
, size_t size
,
64 enum dma_data_direction direction
);
67 dma_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
);
72 dma_sync_sg_for_cpu(struct device
*dev
, struct scatterlist
*sg
, int nelems
,
73 enum dma_data_direction direction
);
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
80 dma_mapping_error(struct device
*dev
, dma_addr_t dma_addr
);
83 dma_supported(struct device
*dev
, u64 mask
);
86 dma_set_mask(struct device
*dev
, u64 mask
);
89 dma_get_cache_alignment(void);
92 dma_cache_sync(struct device
*dev
, void *vaddr
, size_t size
,
93 enum dma_data_direction direction
);
95 #endif /* _ASM_GENERIC_DMA_MAPPING_H */