Lines Matching refs:tioca_kern
38 tioca_gart_init(struct tioca_kernel *tioca_kern) in tioca_gart_init() argument
46 tioca_common = tioca_kern->ca_common; in tioca_gart_init()
49 if (list_empty(tioca_kern->ca_devices)) in tioca_gart_init()
103 tioca_kern->ca_ap_pagesize = 16384; in tioca_gart_init()
106 tioca_kern->ca_ap_pagesize = 4096; in tioca_gart_init()
109 tioca_kern->ca_ap_size = CA_APERATURE_SIZE; in tioca_gart_init()
110 tioca_kern->ca_ap_bus_base = CA_APERATURE_BASE; in tioca_gart_init()
111 tioca_kern->ca_gart_entries = in tioca_gart_init()
112 tioca_kern->ca_ap_size / tioca_kern->ca_ap_pagesize; in tioca_gart_init()
115 ap_reg |= tioca_kern->ca_ap_bus_base; in tioca_gart_init()
121 tioca_kern->ca_gart_size = tioca_kern->ca_gart_entries * sizeof(u64); in tioca_gart_init()
123 alloc_pages_node(tioca_kern->ca_closest_node, in tioca_gart_init()
125 get_order(tioca_kern->ca_gart_size)); in tioca_gart_init()
131 tioca_kern->ca_gart_size, in tioca_gart_init()
132 get_order(tioca_kern->ca_gart_size)); in tioca_gart_init()
136 tioca_kern->ca_gart = page_address(tmp); in tioca_gart_init()
137 tioca_kern->ca_gart_coretalk_addr = in tioca_gart_init()
138 PHYS_TO_TIODMA(virt_to_phys(tioca_kern->ca_gart)); in tioca_gart_init()
145 tioca_kern->ca_pciap_base = CA_PCI32_MAPPED_BASE; in tioca_gart_init()
146 tioca_kern->ca_pciap_size = CA_PCI32_MAPPED_SIZE; in tioca_gart_init()
147 tioca_kern->ca_pcigart_start = offset / tioca_kern->ca_ap_pagesize; in tioca_gart_init()
148 tioca_kern->ca_pcigart_base = in tioca_gart_init()
149 tioca_kern->ca_gart_coretalk_addr + offset; in tioca_gart_init()
150 tioca_kern->ca_pcigart = in tioca_gart_init()
151 &tioca_kern->ca_gart[tioca_kern->ca_pcigart_start]; in tioca_gart_init()
152 tioca_kern->ca_pcigart_entries = in tioca_gart_init()
153 tioca_kern->ca_pciap_size / tioca_kern->ca_ap_pagesize; in tioca_gart_init()
154 tioca_kern->ca_pcigart_pagemap = in tioca_gart_init()
155 kzalloc(tioca_kern->ca_pcigart_entries / 8, GFP_KERNEL); in tioca_gart_init()
156 if (!tioca_kern->ca_pcigart_pagemap) { in tioca_gart_init()
157 free_pages((unsigned long)tioca_kern->ca_gart, in tioca_gart_init()
158 get_order(tioca_kern->ca_gart_size)); in tioca_gart_init()
163 tioca_kern->ca_gfxap_base = CA_AGP_MAPPED_BASE; in tioca_gart_init()
164 tioca_kern->ca_gfxap_size = CA_AGP_MAPPED_SIZE; in tioca_gart_init()
165 tioca_kern->ca_gfxgart_start = offset / tioca_kern->ca_ap_pagesize; in tioca_gart_init()
166 tioca_kern->ca_gfxgart_base = in tioca_gart_init()
167 tioca_kern->ca_gart_coretalk_addr + offset; in tioca_gart_init()
168 tioca_kern->ca_gfxgart = in tioca_gart_init()
169 &tioca_kern->ca_gart[tioca_kern->ca_gfxgart_start]; in tioca_gart_init()
170 tioca_kern->ca_gfxgart_entries = in tioca_gart_init()
171 tioca_kern->ca_gfxap_size / tioca_kern->ca_ap_pagesize; in tioca_gart_init()
186 tioca_kern->ca_gart_iscoherent = 1; in tioca_gart_init()
203 writeq(tioca_kern->ca_gart_coretalk_addr|1, &ca_base->ca_gart_ptr_table); in tioca_gart_init()
217 tioca_fastwrite_enable(struct tioca_kernel *tioca_kern) in tioca_fastwrite_enable() argument
225 common = tioca_kern->ca_common; in tioca_fastwrite_enable()
232 list_for_each_entry(pdev, tioca_kern->ca_devices, bus_list) { in tioca_fastwrite_enable()
249 list_for_each_entry(pdev, tioca_kern->ca_devices, bus_list) { in tioca_fastwrite_enable()
378 struct tioca_kernel *tioca_kern; in tioca_dma_mapped() local
386 tioca_kern = (struct tioca_kernel *)tioca_common->ca_kernel_private; in tioca_dma_mapped()
392 spin_lock_irqsave(&tioca_kern->ca_lock, flags); in tioca_dma_mapped()
407 ps = tioca_kern->ca_ap_pagesize; /* will be power of 2 */ in tioca_dma_mapped()
413 map = tioca_kern->ca_pcigart_pagemap; in tioca_dma_mapped()
414 mapsize = tioca_kern->ca_pcigart_entries; in tioca_dma_mapped()
424 bus_addr = tioca_kern->ca_pciap_base + (entry * ps); in tioca_dma_mapped()
429 list_add(&ca_dmamap->cad_list, &tioca_kern->ca_dmamaps); in tioca_dma_mapped()
432 tioca_kern->ca_pcigart[entry] = tioca_paddr_to_gart(xio_addr); in tioca_dma_mapped()
440 tioca_kern->ca_pcigart[entry] = tioca_paddr_to_gart(xio_addr); in tioca_dma_mapped()
445 tioca_tlbflush(tioca_kern); in tioca_dma_mapped()
448 spin_unlock_irqrestore(&tioca_kern->ca_lock, flags); in tioca_dma_mapped()
467 struct tioca_kernel *tioca_kern; in tioca_dma_unmap() local
473 tioca_kern = (struct tioca_kernel *)tioca_common->ca_kernel_private; in tioca_dma_unmap()
477 if (bus_addr < tioca_kern->ca_pciap_base || in tioca_dma_unmap()
478 bus_addr >= (tioca_kern->ca_pciap_base + tioca_kern->ca_pciap_size)) in tioca_dma_unmap()
481 spin_lock_irqsave(&tioca_kern->ca_lock, flags); in tioca_dma_unmap()
483 list_for_each_entry(map, &tioca_kern->ca_dmamaps, cad_list) in tioca_dma_unmap()
492 clear_bit(entry, tioca_kern->ca_pcigart_pagemap); in tioca_dma_unmap()
493 tioca_kern->ca_pcigart[entry] = 0; in tioca_dma_unmap()
495 tioca_tlbflush(tioca_kern); in tioca_dma_unmap()
498 spin_unlock_irqrestore(&tioca_kern->ca_lock, flags); in tioca_dma_unmap()
587 struct tioca_kernel *tioca_kern; in tioca_bus_fixup() local
614 tioca_kern = kzalloc(sizeof(struct tioca_kernel), GFP_KERNEL); in tioca_bus_fixup()
615 if (!tioca_kern) { in tioca_bus_fixup()
620 tioca_kern->ca_common = tioca_common; in tioca_bus_fixup()
621 spin_lock_init(&tioca_kern->ca_lock); in tioca_bus_fixup()
622 INIT_LIST_HEAD(&tioca_kern->ca_dmamaps); in tioca_bus_fixup()
623 tioca_kern->ca_closest_node = in tioca_bus_fixup()
625 tioca_common->ca_kernel_private = (u64) tioca_kern; in tioca_bus_fixup()
630 tioca_kern->ca_devices = &bus->devices; in tioca_bus_fixup()
634 if (tioca_gart_init(tioca_kern) < 0) { in tioca_bus_fixup()
635 kfree(tioca_kern); in tioca_bus_fixup()
641 list_add(&tioca_kern->ca_list, &tioca_list); in tioca_bus_fixup()
656 controller->node = tioca_kern->ca_closest_node; in tioca_bus_fixup()