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