Commit | Line | Data |
---|---|---|
4ce63fcd MS |
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> | |
3e3a1823 | 10 | #include <linux/kref.h> |
4ce63fcd MS |
11 | |
12 | struct dma_iommu_mapping { | |
13 | /* iommu specific data */ | |
14 | struct iommu_domain *domain; | |
15 | ||
4d852ef8 AH |
16 | unsigned long **bitmaps; /* array of bitmaps */ |
17 | unsigned int nr_bitmaps; /* nr of elements in array */ | |
18 | unsigned int extensions; | |
19 | size_t bitmap_size; /* size of a single bitmap */ | |
20 | size_t bits; /* per bitmap */ | |
4ce63fcd MS |
21 | dma_addr_t base; |
22 | ||
23 | spinlock_t lock; | |
24 | struct kref kref; | |
25 | }; | |
26 | ||
27 | struct dma_iommu_mapping * | |
1424532b | 28 | arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, u64 size); |
4ce63fcd MS |
29 | |
30 | void arm_iommu_release_mapping(struct dma_iommu_mapping *mapping); | |
31 | ||
32 | int arm_iommu_attach_device(struct device *dev, | |
33 | struct dma_iommu_mapping *mapping); | |
6fe36758 | 34 | void arm_iommu_detach_device(struct device *dev); |
4ce63fcd MS |
35 | |
36 | #endif /* __KERNEL__ */ | |
37 | #endif |