Lines Matching full:dart
13 * Dynamic DMA mapping support, Apple U3, U4 & IBM CPC925 "DART" iommu.
36 #include "dart.h"
38 /* DART table address and size */
42 /* Mapped base address for the dart */
43 static unsigned int __iomem *dart; variable
68 DBG("dart: flush\n"); in dart_tlb_invalidate_all()
70 /* To invalidate the DART, set the DARTCNTL_FLUSHTLB bit in the in dart_tlb_invalidate_all()
73 * Gotcha: Sometimes, the DART won't detect that the bit gets in dart_tlb_invalidate_all()
96 panic("DART: TLB did not flush after waiting a long " in dart_tlb_invalidate_all()
128 panic("DART: TLB did not flush after waiting a long " in dart_tlb_invalidate_one()
152 * DART hardware will see. in dart_cache_sync()
181 DBG("dart: build at: %lx, %lx, addr: %x\n", index, npages, uaddr); in dart_build()
219 DBG("dart: free at: %lx, %lx\n", index, npages); in dart_free()
233 /* 512 pages (2MB) is max DART tablesize. */ in allocate_dart()
244 panic("Failed to allocate 16MB below 2GB for DART table\n"); in allocate_dart()
246 /* There is no point scanning the DART space for leaks*/ in allocate_dart()
249 /* Allocate a spare page to map all invalid DART pages. We need to do in allocate_dart()
255 panic("DART: table allocation failed\n"); in allocate_dart()
260 printk(KERN_INFO "DART table allocated at: %p\n", dart_tablebase); in allocate_dart()
274 * Only use the DART if the machine has more than 1GB of RAM in dart_init()
284 /* Get DART registers */ in dart_init()
286 panic("DART: can't get register base ! "); in dart_init()
288 /* Map in DART registers */ in dart_init()
289 dart = ioremap(r.start, resource_size(&r)); in dart_init()
290 if (dart == NULL) in dart_init()
291 panic("DART: Cannot map registers!"); in dart_init()
293 /* Allocate the DART and dummy page */ in dart_init()
303 /* Initialize DART with table base and enable it. */ in dart_init()
319 /* Invalidate DART to get rid of possible stale TLBs */ in dart_init()
322 printk(KERN_INFO "DART IOMMU initialized for %s type chipset\n", in dart_init()
350 /* Reserve the last page of the DART to avoid possible prefetch in iommu_table_dart_setup()
351 * past the DART mapped area in iommu_table_dart_setup()
397 /* Find the DART in the device-tree */ in iommu_init_early_dart()
398 dn = of_find_compatible_node(NULL, "dart", "u3-dart"); in iommu_init_early_dart()
400 dn = of_find_compatible_node(NULL, "dart", "u4-dart"); in iommu_init_early_dart()
406 /* Initialize the DART HW */ in iommu_init_early_dart()
412 * U4 supports a DART bypass, we use it for 64-bit capable devices to in iommu_init_early_dart()