xref: /openbmc/linux/arch/arm/include/asm/dma-iommu.h (revision d0b73b48)
1 #ifndef ASMARM_DMA_IOMMU_H
2 #define ASMARM_DMA_IOMMU_H
3 
4 #ifdef __KERNEL__
5 
6 #include <linux/mm_types.h>
7 #include <linux/scatterlist.h>
8 #include <linux/dma-debug.h>
9 #include <linux/kmemcheck.h>
10 
11 struct dma_iommu_mapping {
12 	/* iommu specific data */
13 	struct iommu_domain	*domain;
14 
15 	void			*bitmap;
16 	size_t			bits;
17 	unsigned int		order;
18 	dma_addr_t		base;
19 
20 	spinlock_t		lock;
21 	struct kref		kref;
22 };
23 
24 struct dma_iommu_mapping *
25 arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size,
26 			 int order);
27 
28 void arm_iommu_release_mapping(struct dma_iommu_mapping *mapping);
29 
30 int arm_iommu_attach_device(struct device *dev,
31 					struct dma_iommu_mapping *mapping);
32 
33 #endif /* __KERNEL__ */
34 #endif
35