14ce63fcdSMarek Szyprowski #ifndef ASMARM_DMA_IOMMU_H 24ce63fcdSMarek Szyprowski #define ASMARM_DMA_IOMMU_H 34ce63fcdSMarek Szyprowski 44ce63fcdSMarek Szyprowski #ifdef __KERNEL__ 54ce63fcdSMarek Szyprowski 64ce63fcdSMarek Szyprowski #include <linux/mm_types.h> 74ce63fcdSMarek Szyprowski #include <linux/scatterlist.h> 84ce63fcdSMarek Szyprowski #include <linux/dma-debug.h> 94ce63fcdSMarek Szyprowski #include <linux/kmemcheck.h> 103e3a1823SLaurent Pinchart #include <linux/kref.h> 114ce63fcdSMarek Szyprowski 124ce63fcdSMarek Szyprowski struct dma_iommu_mapping { 134ce63fcdSMarek Szyprowski /* iommu specific data */ 144ce63fcdSMarek Szyprowski struct iommu_domain *domain; 154ce63fcdSMarek Szyprowski 164d852ef8SAndreas Herrmann unsigned long **bitmaps; /* array of bitmaps */ 174d852ef8SAndreas Herrmann unsigned int nr_bitmaps; /* nr of elements in array */ 184d852ef8SAndreas Herrmann unsigned int extensions; 194d852ef8SAndreas Herrmann size_t bitmap_size; /* size of a single bitmap */ 204d852ef8SAndreas Herrmann size_t bits; /* per bitmap */ 214d852ef8SAndreas Herrmann unsigned int size; /* per bitmap */ 224ce63fcdSMarek Szyprowski unsigned int order; 234ce63fcdSMarek Szyprowski dma_addr_t base; 244ce63fcdSMarek Szyprowski 254ce63fcdSMarek Szyprowski spinlock_t lock; 264ce63fcdSMarek Szyprowski struct kref kref; 274ce63fcdSMarek Szyprowski }; 284ce63fcdSMarek Szyprowski 294ce63fcdSMarek Szyprowski struct dma_iommu_mapping * 304ce63fcdSMarek Szyprowski arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size, 314ce63fcdSMarek Szyprowski int order); 324ce63fcdSMarek Szyprowski 334ce63fcdSMarek Szyprowski void arm_iommu_release_mapping(struct dma_iommu_mapping *mapping); 344ce63fcdSMarek Szyprowski 354ce63fcdSMarek Szyprowski int arm_iommu_attach_device(struct device *dev, 364ce63fcdSMarek Szyprowski struct dma_iommu_mapping *mapping); 376fe36758SHiroshi Doyu void arm_iommu_detach_device(struct device *dev); 384ce63fcdSMarek Szyprowski 394ce63fcdSMarek Szyprowski #endif /* __KERNEL__ */ 404ce63fcdSMarek Szyprowski #endif 41