1 #ifndef _LINUX_IOMMU_HELPER_H 2 #define _LINUX_IOMMU_HELPER_H 3 4 static 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 14 extern int iommu_is_span_boundary(unsigned int index, unsigned int nr, 15 unsigned long shift, 16 unsigned long boundary_size); 17 extern void iommu_area_reserve(unsigned long *map, unsigned long i, int len); 18 extern 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); 23 extern void iommu_area_free(unsigned long *map, unsigned long start, 24 unsigned int nr); 25 26 extern unsigned long iommu_num_pages(unsigned long addr, unsigned long len, 27 unsigned long io_page_size); 28 29 #endif 30