Lines Matching full:dart
13 * Dynamic DMA mapping support, Apple U3, U4 & IBM CPC925 "DART" iommu.
35 #include "dart.h"
37 /* DART table address and size */
41 /* Mapped base address for the dart */
42 static unsigned int __iomem *dart; variable
67 DBG("dart: flush\n"); in dart_tlb_invalidate_all()
69 /* To invalidate the DART, set the DARTCNTL_FLUSHTLB bit in the in dart_tlb_invalidate_all()
72 * Gotcha: Sometimes, the DART won't detect that the bit gets in dart_tlb_invalidate_all()
95 panic("DART: TLB did not flush after waiting a long " in dart_tlb_invalidate_all()
127 panic("DART: TLB did not flush after waiting a long " in dart_tlb_invalidate_one()
151 * DART hardware will see. in dart_cache_sync()
180 DBG("dart: build at: %lx, %lx, addr: %x\n", index, npages, uaddr); in dart_build()
218 DBG("dart: free at: %lx, %lx\n", index, npages); in dart_free()
232 /* 512 pages (2MB) is max DART tablesize. */ in allocate_dart()
243 panic("Failed to allocate 16MB below 2GB for DART table\n"); in allocate_dart()
245 /* Allocate a spare page to map all invalid DART pages. We need to do in allocate_dart()
251 panic("DART: table allocation failed\n"); in allocate_dart()
256 printk(KERN_INFO "DART table allocated at: %p\n", dart_tablebase); in allocate_dart()
270 * Only use the DART if the machine has more than 1GB of RAM in dart_init()
280 /* Get DART registers */ in dart_init()
282 panic("DART: can't get register base ! "); in dart_init()
284 /* Map in DART registers */ in dart_init()
285 dart = ioremap(r.start, resource_size(&r)); in dart_init()
286 if (dart == NULL) in dart_init()
287 panic("DART: Cannot map registers!"); in dart_init()
289 /* Allocate the DART and dummy page */ in dart_init()
299 /* Initialize DART with table base and enable it. */ in dart_init()
315 /* Invalidate DART to get rid of possible stale TLBs */ in dart_init()
318 printk(KERN_INFO "DART IOMMU initialized for %s type chipset\n", in dart_init()
346 /* Reserve the last page of the DART to avoid possible prefetch in iommu_table_dart_setup()
347 * past the DART mapped area in iommu_table_dart_setup()
393 /* Find the DART in the device-tree */ in iommu_init_early_dart()
394 dn = of_find_compatible_node(NULL, "dart", "u3-dart"); in iommu_init_early_dart()
396 dn = of_find_compatible_node(NULL, "dart", "u4-dart"); in iommu_init_early_dart()
402 /* Initialize the DART HW */ in iommu_init_early_dart()
408 * U4 supports a DART bypass, we use it for 64-bit capable devices to in iommu_init_early_dart()