dma-noncoherent.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef _LINUX_DMA_NONCOHERENT_H
  3. #define _LINUX_DMA_NONCOHERENT_H 1
  4. #include <linux/dma-mapping.h>
  5. void *arch_dma_alloc(struct device *dev, size_t size, dma_addr_t *dma_handle,
  6. gfp_t gfp, unsigned long attrs);
  7. void arch_dma_free(struct device *dev, size_t size, void *cpu_addr,
  8. dma_addr_t dma_addr, unsigned long attrs);
  9. #ifdef CONFIG_DMA_NONCOHERENT_MMAP
  10. int arch_dma_mmap(struct device *dev, struct vm_area_struct *vma,
  11. void *cpu_addr, dma_addr_t dma_addr, size_t size,
  12. unsigned long attrs);
  13. #else
  14. #define arch_dma_mmap NULL
  15. #endif /* CONFIG_DMA_NONCOHERENT_MMAP */
  16. #ifdef CONFIG_DMA_NONCOHERENT_CACHE_SYNC
  17. void arch_dma_cache_sync(struct device *dev, void *vaddr, size_t size,
  18. enum dma_data_direction direction);
  19. #else
  20. #define arch_dma_cache_sync NULL
  21. #endif /* CONFIG_DMA_NONCOHERENT_CACHE_SYNC */
  22. #ifdef CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE
  23. void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
  24. size_t size, enum dma_data_direction dir);
  25. #else
  26. static inline void arch_sync_dma_for_device(struct device *dev,
  27. phys_addr_t paddr, size_t size, enum dma_data_direction dir)
  28. {
  29. }
  30. #endif /* ARCH_HAS_SYNC_DMA_FOR_DEVICE */
  31. #ifdef CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU
  32. void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
  33. size_t size, enum dma_data_direction dir);
  34. #else
  35. static inline void arch_sync_dma_for_cpu(struct device *dev,
  36. phys_addr_t paddr, size_t size, enum dma_data_direction dir)
  37. {
  38. }
  39. #endif /* ARCH_HAS_SYNC_DMA_FOR_CPU */
  40. #ifdef CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL
  41. void arch_sync_dma_for_cpu_all(struct device *dev);
  42. #else
  43. static inline void arch_sync_dma_for_cpu_all(struct device *dev)
  44. {
  45. }
  46. #endif /* CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL */
  47. #endif /* _LINUX_DMA_NONCOHERENT_H */