Lines Matching +full:broken +full:- +full:turn +full:- +full:around
1 // SPDX-License-Identifier: GPL-2.0-only
41 A_SIZE_32(agp_bridge->driver->aperture_sizes); in uninorth_fetch_size()
49 for (i = 0; i < agp_bridge->driver->num_aperture_sizes; i++) in uninorth_fetch_size()
53 if (i == agp_bridge->driver->num_aperture_sizes) { in uninorth_fetch_size()
54 dev_err(&agp_bridge->dev->dev, "invalid aperture size, " in uninorth_fetch_size()
62 for (i = 0; i < agp_bridge->driver->num_aperture_sizes; i++) in uninorth_fetch_size()
67 agp_bridge->previous_size = in uninorth_fetch_size()
68 agp_bridge->current_size = (void *)(values + i); in uninorth_fetch_size()
69 agp_bridge->aperture_size_idx = i; in uninorth_fetch_size()
79 pci_write_config_dword(agp_bridge->dev, UNI_N_CFG_GART_CTRL, in uninorth_tlbflush()
81 pci_write_config_dword(agp_bridge->dev, UNI_N_CFG_GART_CTRL, ctrl); in uninorth_tlbflush()
84 pci_write_config_dword(agp_bridge->dev, UNI_N_CFG_GART_CTRL, in uninorth_tlbflush()
86 pci_write_config_dword(agp_bridge->dev, UNI_N_CFG_GART_CTRL, in uninorth_tlbflush()
95 pci_read_config_dword(agp_bridge->dev, UNI_N_CFG_GART_CTRL, &tmp); in uninorth_cleanup()
99 pci_write_config_dword(agp_bridge->dev, UNI_N_CFG_GART_CTRL, tmp); in uninorth_cleanup()
100 pci_write_config_dword(agp_bridge->dev, UNI_N_CFG_GART_CTRL, 0); in uninorth_cleanup()
103 pci_write_config_dword(agp_bridge->dev, UNI_N_CFG_GART_CTRL, in uninorth_cleanup()
105 pci_write_config_dword(agp_bridge->dev, UNI_N_CFG_GART_CTRL, in uninorth_cleanup()
114 current_size = A_SIZE_32(agp_bridge->current_size); in uninorth_configure()
116 dev_info(&agp_bridge->dev->dev, "configuring for size idx: %d\n", in uninorth_configure()
117 current_size->size_value); in uninorth_configure()
120 pci_write_config_dword(agp_bridge->dev, in uninorth_configure()
122 (agp_bridge->gatt_bus_addr & 0xfffff000) in uninorth_configure()
123 | current_size->size_value); in uninorth_configure()
129 agp_bridge->gart_bus_addr = 0; in uninorth_configure()
133 pci_write_config_dword(agp_bridge->dev, UNI_N_CFG_AGP_BASE, in uninorth_configure()
134 (agp_bridge->gatt_bus_addr >> 32) & 0xf); in uninorth_configure()
136 pci_write_config_dword(agp_bridge->dev, in uninorth_configure()
137 UNI_N_CFG_AGP_BASE, agp_bridge->gart_bus_addr); in uninorth_configure()
141 pci_write_config_dword(agp_bridge->dev, in uninorth_configure()
143 page_to_phys(agp_bridge->scratch_page_page) >> 12); in uninorth_configure()
156 if (type != mem->type) in uninorth_insert_memory()
157 return -EINVAL; in uninorth_insert_memory()
159 mask_type = agp_bridge->driver->agp_type_to_mask_type(agp_bridge, type); in uninorth_insert_memory()
162 return -EINVAL; in uninorth_insert_memory()
165 if (mem->page_count == 0) in uninorth_insert_memory()
168 temp = agp_bridge->current_size; in uninorth_insert_memory()
169 num_entries = A_SIZE_32(temp)->num_entries; in uninorth_insert_memory()
171 if ((pg_start + mem->page_count) > num_entries) in uninorth_insert_memory()
172 return -EINVAL; in uninorth_insert_memory()
174 gp = (u32 *) &agp_bridge->gatt_table[pg_start]; in uninorth_insert_memory()
175 for (i = 0; i < mem->page_count; ++i) { in uninorth_insert_memory()
177 dev_info(&agp_bridge->dev->dev, in uninorth_insert_memory()
180 return -EBUSY; in uninorth_insert_memory()
184 for (i = 0; i < mem->page_count; i++) { in uninorth_insert_memory()
186 gp[i] = (page_to_phys(mem->pages[i]) >> PAGE_SHIFT) | 0x80000000UL; in uninorth_insert_memory()
188 gp[i] = cpu_to_le32((page_to_phys(mem->pages[i]) & 0xFFFFF000UL) | in uninorth_insert_memory()
190 flush_dcache_range((unsigned long)__va(page_to_phys(mem->pages[i])), in uninorth_insert_memory()
191 (unsigned long)__va(page_to_phys(mem->pages[i]))+0x1000); in uninorth_insert_memory()
205 if (type != mem->type) in uninorth_remove_memory()
206 return -EINVAL; in uninorth_remove_memory()
208 mask_type = agp_bridge->driver->agp_type_to_mask_type(agp_bridge, type); in uninorth_remove_memory()
211 return -EINVAL; in uninorth_remove_memory()
214 if (mem->page_count == 0) in uninorth_remove_memory()
217 gp = (u32 *) &agp_bridge->gatt_table[pg_start]; in uninorth_remove_memory()
218 for (i = 0; i < mem->page_count; ++i) { in uninorth_remove_memory()
232 pci_read_config_dword(bridge->dev, in uninorth_agp_enable()
233 bridge->capndx + PCI_AGP_STATUS, in uninorth_agp_enable()
242 * may assume it's broken. This is an AGP2 controller. in uninorth_agp_enable()
261 pci_write_config_dword(bridge->dev, in uninorth_agp_enable()
262 bridge->capndx + PCI_AGP_COMMAND, in uninorth_agp_enable()
264 pci_read_config_dword(bridge->dev, in uninorth_agp_enable()
265 bridge->capndx + PCI_AGP_COMMAND, in uninorth_agp_enable()
269 dev_err(&bridge->dev->dev, "can't write UniNorth AGP " in uninorth_agp_enable()
298 return -ENODEV; in agp_uninorth_suspend()
301 if (bridge->dev_private_data) in agp_uninorth_suspend()
304 /* turn off AGP on the video chip, if it was enabled */ in agp_uninorth_suspend()
310 * bridge on the AGP port, and mucking around the entire PCI in agp_uninorth_suspend()
315 if (device->bus != pdev->bus) in agp_uninorth_suspend()
323 dev_info(&pdev->dev, "disabling AGP on device %s\n", in agp_uninorth_suspend()
329 /* turn off AGP on the bridge */ in agp_uninorth_suspend()
332 bridge->dev_private_data = (void *)(long)cmd; in agp_uninorth_suspend()
334 dev_info(&pdev->dev, "disabling AGP on bridge\n"); in agp_uninorth_suspend()
338 /* turn off the GART */ in agp_uninorth_suspend()
351 return -ENODEV; in agp_uninorth_resume()
353 command = (long)bridge->dev_private_data; in agp_uninorth_resume()
354 bridge->dev_private_data = NULL; in agp_uninorth_resume()
380 if (bridge->driver->size_type == LVL2_APER_SIZE) in uninorth_create_gatt_table()
381 return -EINVAL; in uninorth_create_gatt_table()
384 i = bridge->aperture_size_idx; in uninorth_create_gatt_table()
385 temp = bridge->current_size; in uninorth_create_gatt_table()
389 size = A_SIZE_32(temp)->size; in uninorth_create_gatt_table()
390 page_order = A_SIZE_32(temp)->page_order; in uninorth_create_gatt_table()
391 num_entries = A_SIZE_32(temp)->num_entries; in uninorth_create_gatt_table()
397 bridge->current_size = A_IDX32(bridge); in uninorth_create_gatt_table()
399 bridge->aperture_size_idx = i; in uninorth_create_gatt_table()
401 } while (!table && (i < bridge->driver->num_aperture_sizes)); in uninorth_create_gatt_table()
404 return -ENOMEM; in uninorth_create_gatt_table()
412 table_end = table + ((PAGE_SIZE * (1 << page_order)) - 1); in uninorth_create_gatt_table()
420 bridge->gatt_table_real = (u32 *) table; in uninorth_create_gatt_table()
424 bridge->gatt_table = vmap(uninorth_priv.pages_arr, (1 << page_order), 0, PAGE_KERNEL_NCG); in uninorth_create_gatt_table()
426 if (bridge->gatt_table == NULL) in uninorth_create_gatt_table()
429 bridge->gatt_bus_addr = virt_to_phys(table); in uninorth_create_gatt_table()
432 scratch_value = (page_to_phys(agp_bridge->scratch_page_page) >> PAGE_SHIFT) | 0x80000000UL; in uninorth_create_gatt_table()
434 scratch_value = cpu_to_le32((page_to_phys(agp_bridge->scratch_page_page) & 0xFFFFF000UL) | in uninorth_create_gatt_table()
437 bridge->gatt_table[i] = scratch_value; in uninorth_create_gatt_table()
445 return -ENOMEM; in uninorth_create_gatt_table()
455 temp = bridge->current_size; in uninorth_free_gatt_table()
456 page_order = A_SIZE_32(temp)->page_order; in uninorth_free_gatt_table()
463 vunmap(bridge->gatt_table); in uninorth_free_gatt_table()
465 table = (char *) bridge->gatt_table_real; in uninorth_free_gatt_table()
466 table_end = table + ((PAGE_SIZE * (1 << page_order)) - 1); in uninorth_free_gatt_table()
471 free_pages((unsigned long) bridge->gatt_table_real, page_order); in uninorth_free_gatt_table()
612 return -ENODEV; in agp_uninorth_probe()
616 if (pdev->device == devs[j].device_id) { in agp_uninorth_probe()
617 dev_info(&pdev->dev, "Apple %s chipset\n", in agp_uninorth_probe()
623 dev_err(&pdev->dev, "unsupported Apple chipset [%04x/%04x]\n", in agp_uninorth_probe()
624 pdev->vendor, pdev->device); in agp_uninorth_probe()
625 return -ENODEV; in agp_uninorth_probe()
631 /* Locate core99 Uni-N */ in agp_uninorth_probe()
632 uninorth_node = of_find_node_by_name(NULL, "uni-n"); in agp_uninorth_probe()
640 "device-rev", NULL); in agp_uninorth_probe()
654 return -ENOMEM; in agp_uninorth_probe()
657 bridge->driver = &u3_agp_driver; in agp_uninorth_probe()
659 bridge->driver = &uninorth_agp_driver; in agp_uninorth_probe()
661 bridge->dev = pdev; in agp_uninorth_probe()
662 bridge->capndx = cap_ptr; in agp_uninorth_probe()
663 bridge->flags = AGP_ERRATA_FASTWRITES; in agp_uninorth_probe()
666 pci_read_config_dword(pdev, cap_ptr+PCI_AGP_STATUS, &bridge->mode); in agp_uninorth_probe()
700 .name = "agpgart-uninorth",
709 return -EINVAL; in agp_uninorth_init()