Linux Audio

Check our new training course

Loading...
v3.5.6
 
 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
11struct 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
24struct dma_iommu_mapping *
25arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size,
26			 int order);
27
28void arm_iommu_release_mapping(struct dma_iommu_mapping *mapping);
29
30int arm_iommu_attach_device(struct device *dev,
31					struct dma_iommu_mapping *mapping);
 
32
33#endif /* __KERNEL__ */
34#endif
v6.9.4
 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
11struct 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
26struct dma_iommu_mapping *
27arm_iommu_create_mapping(const struct bus_type *bus, dma_addr_t base, u64 size);
 
28
29void arm_iommu_release_mapping(struct dma_iommu_mapping *mapping);
30
31int arm_iommu_attach_device(struct device *dev,
32					struct dma_iommu_mapping *mapping);
33void arm_iommu_detach_device(struct device *dev);
34
35#endif /* __KERNEL__ */
36#endif