swiotlb.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef _ASM_SWIOTLB_H
  2. #define _ASM_SWIOTLB_H 1
  3. #include <asm/dma-mapping.h>
  4. /* SWIOTLB interface */
  5. extern dma_addr_t swiotlb_map_single(struct device *hwdev, void *ptr,
  6. size_t size, int dir);
  7. extern void *swiotlb_alloc_coherent(struct device *hwdev, size_t size,
  8. dma_addr_t *dma_handle, gfp_t flags);
  9. extern void swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr,
  10. size_t size, int dir);
  11. extern void swiotlb_sync_single_for_cpu(struct device *hwdev,
  12. dma_addr_t dev_addr,
  13. size_t size, int dir);
  14. extern void swiotlb_sync_single_for_device(struct device *hwdev,
  15. dma_addr_t dev_addr,
  16. size_t size, int dir);
  17. extern void swiotlb_sync_single_range_for_cpu(struct device *hwdev,
  18. dma_addr_t dev_addr,
  19. unsigned long offset,
  20. size_t size, int dir);
  21. extern void swiotlb_sync_single_range_for_device(struct device *hwdev,
  22. dma_addr_t dev_addr,
  23. unsigned long offset,
  24. size_t size, int dir);
  25. extern void swiotlb_sync_sg_for_cpu(struct device *hwdev,
  26. struct scatterlist *sg, int nelems,
  27. int dir);
  28. extern void swiotlb_sync_sg_for_device(struct device *hwdev,
  29. struct scatterlist *sg, int nelems,
  30. int dir);
  31. extern int swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg,
  32. int nents, int direction);
  33. extern void swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg,
  34. int nents, int direction);
  35. extern int swiotlb_dma_mapping_error(dma_addr_t dma_addr);
  36. extern void swiotlb_free_coherent (struct device *hwdev, size_t size,
  37. void *vaddr, dma_addr_t dma_handle);
  38. extern int swiotlb_dma_supported(struct device *hwdev, u64 mask);
  39. extern void swiotlb_init(void);
  40. extern int swiotlb_force;
  41. #ifdef CONFIG_SWIOTLB
  42. extern int swiotlb;
  43. #else
  44. #define swiotlb 0
  45. #endif
  46. extern void pci_swiotlb_init(void);
  47. static inline void dma_mark_clean(void *addr, size_t size) {}
  48. #endif /* _ASM_SWIOTLB_H */