1 #include <linux/prefetch.h>
13 static inline unsigned int
16 void (*iommu_io_pdir_entry)(
u64 *,
space_t,
unsigned long,
20 unsigned int n_mappings = 0;
21 unsigned long dma_offset = 0, dma_len = 0;
33 DBG_RUN_SG(
" %d : %08lx/%05x %08lx/%05x\n", nents,
54 #if defined(ZX1_SUPPORT)
71 size = startsg->
length + dma_offset;
73 #ifdef IOMMU_MAP_STATS
99 static inline unsigned int
100 iommu_coalesce_chunks(
struct ioc *ioc,
struct device *
dev,
102 int (*iommu_alloc_range)(
struct ioc *,
struct device *,
size_t))
105 unsigned long dma_offset, dma_len;
106 unsigned int n_mappings = 0;
107 unsigned int max_seg_size = dma_get_max_seg_size(dev);
115 dma_len = startsg->
length;
127 unsigned long prevstartsg_end, startsg_end;
149 if (startsg->
length + dma_len > max_seg_size)
159 dma_len += startsg->
length;
171 | (iommu_alloc_range(ioc, dev, dma_len) <<
IOVP_SHIFT)