1#ifndef __LINUX_SWIOTLB_XEN_H 2#define __LINUX_SWIOTLB_XEN_H 3 4#include <linux/dma-direction.h> 5#include <linux/swiotlb.h> 6 7extern int xen_swiotlb_init(int verbose, bool early); 8 9extern void 10*xen_swiotlb_alloc_coherent(struct device *hwdev, size_t size, 11 dma_addr_t *dma_handle, gfp_t flags, 12 struct dma_attrs *attrs); 13 14extern void 15xen_swiotlb_free_coherent(struct device *hwdev, size_t size, 16 void *vaddr, dma_addr_t dma_handle, 17 struct dma_attrs *attrs); 18 19extern dma_addr_t xen_swiotlb_map_page(struct device *dev, struct page *page, 20 unsigned long offset, size_t size, 21 enum dma_data_direction dir, 22 struct dma_attrs *attrs); 23 24extern void xen_swiotlb_unmap_page(struct device *hwdev, dma_addr_t dev_addr, 25 size_t size, enum dma_data_direction dir, 26 struct dma_attrs *attrs); 27extern int 28xen_swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, 29 int nelems, enum dma_data_direction dir, 30 struct dma_attrs *attrs); 31 32extern void 33xen_swiotlb_unmap_sg_attrs(struct device *hwdev, struct scatterlist *sgl, 34 int nelems, enum dma_data_direction dir, 35 struct dma_attrs *attrs); 36 37extern void 38xen_swiotlb_sync_single_for_cpu(struct device *hwdev, dma_addr_t dev_addr, 39 size_t size, enum dma_data_direction dir); 40 41extern void 42xen_swiotlb_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg, 43 int nelems, enum dma_data_direction dir); 44 45extern void 46xen_swiotlb_sync_single_for_device(struct device *hwdev, dma_addr_t dev_addr, 47 size_t size, enum dma_data_direction dir); 48 49extern void 50xen_swiotlb_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, 51 int nelems, enum dma_data_direction dir); 52 53extern int 54xen_swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr); 55 56extern int 57xen_swiotlb_dma_supported(struct device *hwdev, u64 mask); 58 59extern int 60xen_swiotlb_set_dma_mask(struct device *dev, u64 dma_mask); 61#endif /* __LINUX_SWIOTLB_XEN_H */ 62