Lines Matching defs:iommu

3  * iommu.c:  IOMMU specific routines for memory management.
25 #include <asm/iommu.h>
59 struct iommu_struct *iommu;
66 iommu = kmalloc(sizeof(struct iommu_struct), GFP_KERNEL);
67 if (!iommu) {
68 prom_printf("Unable to allocate iommu structure\n");
72 iommu->regs = of_ioremap(&op->resource[0], 0, PAGE_SIZE * 3,
74 if (!iommu->regs) {
79 control = sbus_readl(&iommu->regs->control);
84 sbus_writel(control, &iommu->regs->control);
86 iommu_invalidate(iommu->regs);
87 iommu->start = IOMMU_START;
88 iommu->end = 0xffffffff;
97 prom_printf("Unable to allocate iommu table [0x%lx]\n",
101 iommu->page_table = (iopte_t *)tmp;
104 memset(iommu->page_table, 0, IOMMU_NPTES*sizeof(iopte_t));
108 base = __pa((unsigned long)iommu->page_table) >> 4;
109 sbus_writel(base, &iommu->regs->base);
110 iommu_invalidate(iommu->regs);
114 prom_printf("Unable to allocate iommu bitmap [%d]\n",
118 bit_map_init(&iommu->usemap, bitmap, IOMMU_NPTES);
123 iommu->usemap.num_colors = vac_cache_size >> PAGE_SHIFT;
125 iommu->usemap.num_colors = 1;
128 impl, vers, iommu->page_table,
131 op->dev.archdata.iommu = iommu;
143 for_each_node_by_name(dp, "iommu") {
186 struct iommu_struct *iommu = dev->archdata.iommu;
213 ioptex = bit_map_string_get(&iommu->usemap, npages, pfn);
215 panic("iommu out");
216 busa0 = iommu->start + (ioptex << PAGE_SHIFT);
217 iopte0 = &iommu->page_table[ioptex];
223 iommu_invalidate_page(iommu->regs, busa);
282 struct iommu_struct *iommu = dev->archdata.iommu;
286 unsigned int ioptex = (busa - iommu->start) >> PAGE_SHIFT;
289 BUG_ON(busa < iommu->start);
291 iopte_val(iommu->page_table[ioptex + i]) = 0;
292 iommu_invalidate_page(iommu->regs, busa);
295 bit_map_clear(&iommu->usemap, ioptex, npages);
315 struct iommu_struct *iommu = dev->archdata.iommu;
317 iopte_t *iopte = iommu->page_table;
339 ioptex = bit_map_string_get(&iommu->usemap, len >> PAGE_SHIFT,
342 panic("iommu out");
384 iommu_invalidate(iommu->regs);
386 *dma_handle = iommu->start + (ioptex << PAGE_SHIFT);
397 struct iommu_struct *iommu = dev->archdata.iommu;
398 iopte_t *iopte = iommu->page_table;
400 int ioptex = (busa - iommu->start) >> PAGE_SHIFT;
416 iommu_invalidate(iommu->regs);
417 bit_map_clear(&iommu->usemap, ioptex, len >> PAGE_SHIFT);