swiotlb.h 2.2 KB

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