swiotlb-xen.h 2.2 KB

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