1 #ifndef __LINUX_SWIOTLB_H 2 #define __LINUX_SWIOTLB_H 3 4 #include <linux/types.h> 5 6 struct device; 7 struct dma_attrs; 8 struct scatterlist; 9 10 extern void 11 swiotlb_init(void); 12 13 extern void 14 *swiotlb_alloc_coherent(struct device *hwdev, size_t size, 15 dma_addr_t *dma_handle, gfp_t flags); 16 17 extern void 18 swiotlb_free_coherent(struct device *hwdev, size_t size, 19 void *vaddr, dma_addr_t dma_handle); 20 21 extern dma_addr_t 22 swiotlb_map_single(struct device *hwdev, void *ptr, size_t size, int dir); 23 24 extern void 25 swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr, 26 size_t size, int dir); 27 28 extern dma_addr_t 29 swiotlb_map_single_attrs(struct device *hwdev, void *ptr, size_t size, 30 int dir, struct dma_attrs *attrs); 31 32 extern void 33 swiotlb_unmap_single_attrs(struct device *hwdev, dma_addr_t dev_addr, 34 size_t size, int dir, struct dma_attrs *attrs); 35 36 extern int 37 swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg, int nents, 38 int direction); 39 40 extern void 41 swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents, 42 int direction); 43 44 extern int 45 swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, int nelems, 46 int dir, struct dma_attrs *attrs); 47 48 extern void 49 swiotlb_unmap_sg_attrs(struct device *hwdev, struct scatterlist *sgl, 50 int nelems, int dir, struct dma_attrs *attrs); 51 52 extern void 53 swiotlb_sync_single_for_cpu(struct device *hwdev, dma_addr_t dev_addr, 54 size_t size, int dir); 55 56 extern void 57 swiotlb_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg, 58 int nelems, int dir); 59 60 extern void 61 swiotlb_sync_single_for_device(struct device *hwdev, dma_addr_t dev_addr, 62 size_t size, int dir); 63 64 extern void 65 swiotlb_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, 66 int nelems, int dir); 67 68 extern void 69 swiotlb_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dev_addr, 70 unsigned long offset, size_t size, int dir); 71 72 extern void 73 swiotlb_sync_single_range_for_device(struct device *hwdev, dma_addr_t dev_addr, 74 unsigned long offset, size_t size, 75 int dir); 76 77 extern int 78 swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr); 79 80 extern int 81 swiotlb_dma_supported(struct device *hwdev, u64 mask); 82 83 #endif /* __LINUX_SWIOTLB_H */ 84