• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/arch/sparc64/kernel/

Lines Matching defs:iommu

30 	struct iommu	iommu;
47 static void __iommu_flushall(struct iommu *iommu)
52 tag = iommu->iommu_control + (IOMMU_TAGDIAG - IOMMU_CONTROL);
57 upa_readq(iommu->write_complete_reg);
72 static void sbus_strbuf_flush(struct iommu *iommu, struct strbuf *strbuf, u32 base, unsigned long npages, int direction)
92 upa_readq(iommu->write_complete_reg);
108 /* Based largely upon the ppc64 iommu allocator. */
109 static long sbus_arena_alloc(struct iommu *iommu, unsigned long npages)
111 struct iommu_arena *arena = &iommu->arena;
126 __iommu_flushall(iommu);
158 static void sbus_iommu_table_init(struct iommu *iommu, unsigned int tsbsize)
165 spin_lock_init(&iommu->lock);
166 iommu->page_table_map_base = MAP_BASE;
171 iommu->arena.map = kzalloc(sz, GFP_KERNEL);
172 if (!iommu->arena.map) {
176 iommu->arena.limit = num_tsb_entries;
185 iommu->page_table = (iopte_t *)tsbbase;
186 memset(iommu->page_table, 0, tsbsize);
189 static inline iopte_t *alloc_npages(struct iommu *iommu, unsigned long npages)
193 entry = sbus_arena_alloc(iommu, npages);
197 return iommu->page_table + entry;
200 static inline void free_npages(struct iommu *iommu, dma_addr_t base, unsigned long npages)
202 sbus_arena_free(&iommu->arena, base >> IO_PAGE_SHIFT, npages);
208 struct iommu *iommu;
224 info = sdev->bus->iommu;
225 iommu = &info->iommu;
227 spin_lock_irqsave(&iommu->lock, flags);
228 iopte = alloc_npages(iommu, size >> IO_PAGE_SHIFT);
229 spin_unlock_irqrestore(&iommu->lock, flags);
236 *dvma_addr = (iommu->page_table_map_base +
237 ((iopte - iommu->page_table) << IO_PAGE_SHIFT));
255 struct iommu *iommu;
260 info = sdev->bus->iommu;
261 iommu = &info->iommu;
262 iopte = iommu->page_table +
263 ((dvma - iommu->page_table_map_base) >> IO_PAGE_SHIFT);
265 spin_lock_irqsave(&iommu->lock, flags);
267 free_npages(iommu, dvma - iommu->page_table_map_base, npages);
269 spin_unlock_irqrestore(&iommu->lock, flags);
279 struct iommu *iommu;
286 info = sdev->bus->iommu;
287 iommu = &info->iommu;
296 spin_lock_irqsave(&iommu->lock, flags);
297 base = alloc_npages(iommu, npages);
298 spin_unlock_irqrestore(&iommu->lock, flags);
303 bus_addr = (iommu->page_table_map_base +
304 ((base - iommu->page_table) << IO_PAGE_SHIFT));
320 struct sbus_info *info = sdev->bus->iommu;
321 struct iommu *iommu = &info->iommu;
331 base = iommu->page_table +
332 ((bus_addr - iommu->page_table_map_base) >> IO_PAGE_SHIFT);
336 spin_lock_irqsave(&iommu->lock, flags);
337 sbus_strbuf_flush(iommu, strbuf, bus_addr, npages, direction);
340 free_npages(iommu, bus_addr - iommu->page_table_map_base, npages);
341 spin_unlock_irqrestore(&iommu->lock, flags);
423 struct iommu *iommu;
440 info = sdev->bus->iommu;
441 iommu = &info->iommu;
448 spin_lock_irqsave(&iommu->lock, flags);
449 base = alloc_npages(iommu, npages);
450 spin_unlock_irqrestore(&iommu->lock, flags);
455 dma_base = iommu->page_table_map_base +
456 ((base - iommu->page_table) << IO_PAGE_SHIFT);
485 struct iommu *iommu;
494 info = sdev->bus->iommu;
495 iommu = &info->iommu;
507 base = iommu->page_table +
508 ((bus_addr - iommu->page_table_map_base) >> IO_PAGE_SHIFT);
510 spin_lock_irqsave(&iommu->lock, flags);
511 sbus_strbuf_flush(iommu, strbuf, bus_addr, npages, direction);
514 free_npages(iommu, bus_addr - iommu->page_table_map_base, npages);
515 spin_unlock_irqrestore(&iommu->lock, flags);
521 struct iommu *iommu;
525 info = sdev->bus->iommu;
526 iommu = &info->iommu;
533 spin_lock_irqsave(&iommu->lock, flags);
534 sbus_strbuf_flush(iommu, strbuf, bus_addr, npages, direction);
535 spin_unlock_irqrestore(&iommu->lock, flags);
545 struct iommu *iommu;
550 info = sdev->bus->iommu;
551 iommu = &info->iommu;
563 spin_lock_irqsave(&iommu->lock, flags);
564 sbus_strbuf_flush(iommu, strbuf, bus_addr, npages, direction);
565 spin_unlock_irqrestore(&iommu->lock, flags);
575 struct sbus_info *info = sdev->bus->iommu;
576 struct iommu *iommu = &info->iommu;
581 cfg_reg = iommu->write_complete_reg;
716 struct sbus_info *info = sbus->iommu;
717 struct iommu *iommu = &info->iommu;
718 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL;
779 struct sbus_info *info = sbus->iommu;
780 struct iommu *iommu = &info->iommu;
781 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL;
852 struct sbus_info *info = sbus->iommu;
853 struct iommu *iommu = &info->iommu;
854 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL;
927 struct sbus_info *info = sbus->iommu;
928 struct iommu *iommu = &info->iommu;
933 reg_base = iommu->write_complete_reg - 0x2000UL;
994 struct sbus_info *info = sbus->iommu;
995 struct iommu *iommu = &info->iommu;
996 unsigned long reg_base = iommu->write_complete_reg - 0x2000UL;
1030 control = upa_readq(iommu->write_complete_reg);
1032 upa_writeq(control, iommu->write_complete_reg);
1041 struct iommu *iommu;
1065 iommu = &info->iommu;
1069 iommu->iommu_control = reg_base + IOMMU_CONTROL;
1070 iommu->iommu_tsbbase = reg_base + IOMMU_TSBBASE;
1071 iommu->iommu_flush = reg_base + IOMMU_FLUSH;
1090 iommu->write_complete_reg = regs + 0x2000UL;
1093 sbus->iommu = info;
1099 sbus_iommu_table_init(iommu, IO_TSB_SIZE);
1101 control = upa_readq(iommu->iommu_control);
1106 upa_writeq(control, iommu->iommu_control);
1114 dram = iommu->iommu_control + (IOMMU_DRAMDIAG - IOMMU_CONTROL);
1115 tag = iommu->iommu_control + (IOMMU_TAGDIAG - IOMMU_CONTROL);
1122 upa_readq(iommu->write_complete_reg);
1125 upa_writeq(__pa(iommu->page_table), iommu->iommu_tsbbase);
1147 control = upa_readq(iommu->write_complete_reg);
1149 upa_writeq(control, iommu->write_complete_reg);