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