iommu-helper.h 822 B

1234567891011121314151617181920212223242526
  1. #ifndef _LINUX_IOMMU_HELPER_H
  2. #define _LINUX_IOMMU_HELPER_H
  3. static inline unsigned long iommu_device_max_index(unsigned long size,
  4. unsigned long offset,
  5. u64 dma_mask)
  6. {
  7. if (size + offset > dma_mask)
  8. return dma_mask - offset + 1;
  9. else
  10. return size;
  11. }
  12. extern int iommu_is_span_boundary(unsigned int index, unsigned int nr,
  13. unsigned long shift,
  14. unsigned long boundary_size);
  15. extern void iommu_area_reserve(unsigned long *map, unsigned long i, int len);
  16. extern unsigned long iommu_area_alloc(unsigned long *map, unsigned long size,
  17. unsigned long start, unsigned int nr,
  18. unsigned long shift,
  19. unsigned long boundary_size,
  20. unsigned long align_mask);
  21. extern void iommu_area_free(unsigned long *map, unsigned long start,
  22. unsigned int nr);
  23. #endif