linux/arch/arm/include/asm/dma-iommu.h
<<
>>
Prefs
   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/dma-debug.h>
  10#include <linux/kref.h>
  11
  12struct dma_iommu_mapping {
  13        /* iommu specific data */
  14        struct iommu_domain     *domain;
  15
  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 */
  21        dma_addr_t              base;
  22
  23        spinlock_t              lock;
  24        struct kref             kref;
  25};
  26
  27struct dma_iommu_mapping *
  28arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, u64 size);
  29
  30void arm_iommu_release_mapping(struct dma_iommu_mapping *mapping);
  31
  32int arm_iommu_attach_device(struct device *dev,
  33                                        struct dma_iommu_mapping *mapping);
  34void arm_iommu_detach_device(struct device *dev);
  35
  36int arm_dma_supported(struct device *dev, u64 mask);
  37
  38#endif /* __KERNEL__ */
  39#endif
  40