Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / arch / arm / include / asm / dma-iommu.h
diff --git a/kernel/arch/arm/include/asm/dma-iommu.h b/kernel/arch/arm/include/asm/dma-iommu.h
new file mode 100644 (file)
index 0000000..2ef282f
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef ASMARM_DMA_IOMMU_H
+#define ASMARM_DMA_IOMMU_H
+
+#ifdef __KERNEL__
+
+#include <linux/mm_types.h>
+#include <linux/scatterlist.h>
+#include <linux/dma-debug.h>
+#include <linux/kmemcheck.h>
+#include <linux/kref.h>
+
+struct dma_iommu_mapping {
+       /* iommu specific data */
+       struct iommu_domain     *domain;
+
+       unsigned long           **bitmaps;      /* array of bitmaps */
+       unsigned int            nr_bitmaps;     /* nr of elements in array */
+       unsigned int            extensions;
+       size_t                  bitmap_size;    /* size of a single bitmap */
+       size_t                  bits;           /* per bitmap */
+       dma_addr_t              base;
+
+       spinlock_t              lock;
+       struct kref             kref;
+};
+
+struct dma_iommu_mapping *
+arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, u64 size);
+
+void arm_iommu_release_mapping(struct dma_iommu_mapping *mapping);
+
+int arm_iommu_attach_device(struct device *dev,
+                                       struct dma_iommu_mapping *mapping);
+void arm_iommu_detach_device(struct device *dev);
+
+#endif /* __KERNEL__ */
+#endif