Merge tag 'for-5.15/io_uring-2021-09-04' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / arch / arm / include / asm / dma-iommu.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef ASMARM_DMA_IOMMU_H
3 #define ASMARM_DMA_IOMMU_H
4
5 #ifdef __KERNEL__
6
7 #include <linux/mm_types.h>
8 #include <linux/scatterlist.h>
9 #include <linux/kref.h>
10
11 struct dma_iommu_mapping {
12         /* iommu specific data */
13         struct iommu_domain     *domain;
14
15         unsigned long           **bitmaps;      /* array of bitmaps */
16         unsigned int            nr_bitmaps;     /* nr of elements in array */
17         unsigned int            extensions;
18         size_t                  bitmap_size;    /* size of a single bitmap */
19         size_t                  bits;           /* per bitmap */
20         dma_addr_t              base;
21
22         spinlock_t              lock;
23         struct kref             kref;
24 };
25
26 struct dma_iommu_mapping *
27 arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, u64 size);
28
29 void arm_iommu_release_mapping(struct dma_iommu_mapping *mapping);
30
31 int arm_iommu_attach_device(struct device *dev,
32                                         struct dma_iommu_mapping *mapping);
33 void arm_iommu_detach_device(struct device *dev);
34
35 #endif /* __KERNEL__ */
36 #endif