Lines Matching refs:apc

59 static inline bool ar724x_pci_check_link(struct ar724x_pci_controller *apc)  in ar724x_pci_check_link()  argument
63 reset = __raw_readl(apc->ctrl_base + AR724X_PCI_REG_RESET); in ar724x_pci_check_link()
76 static int ar724x_pci_local_write(struct ar724x_pci_controller *apc, in ar724x_pci_local_write() argument
85 if (!apc->link_up) in ar724x_pci_local_write()
88 base = apc->crp_base; in ar724x_pci_local_write()
119 struct ar724x_pci_controller *apc; in ar724x_pci_read() local
123 apc = pci_bus_to_ar724x_controller(bus); in ar724x_pci_read()
124 if (!apc->link_up) in ar724x_pci_read()
130 base = apc->devcfg_base; in ar724x_pci_read()
153 apc->bar0_is_cached) { in ar724x_pci_read()
155 *value = apc->bar0_value; in ar724x_pci_read()
166 struct ar724x_pci_controller *apc; in ar724x_pci_write() local
171 apc = pci_bus_to_ar724x_controller(bus); in ar724x_pci_write()
172 if (!apc->link_up) in ar724x_pci_write()
190 apc->bar0_is_cached = true; in ar724x_pci_write()
191 apc->bar0_value = value; in ar724x_pci_write()
195 apc->bar0_is_cached = false; in ar724x_pci_write()
199 base = apc->devcfg_base; in ar724x_pci_write()
234 struct ar724x_pci_controller *apc; in ar724x_pci_irq_handler() local
238 apc = irq_desc_get_handler_data(desc); in ar724x_pci_irq_handler()
239 base = apc->ctrl_base; in ar724x_pci_irq_handler()
245 generic_handle_irq(apc->irq_base + 0); in ar724x_pci_irq_handler()
253 struct ar724x_pci_controller *apc; in ar724x_pci_irq_unmask() local
258 apc = irq_data_get_irq_chip_data(d); in ar724x_pci_irq_unmask()
259 base = apc->ctrl_base; in ar724x_pci_irq_unmask()
260 offset = apc->irq_base - d->irq; in ar724x_pci_irq_unmask()
274 struct ar724x_pci_controller *apc; in ar724x_pci_irq_mask() local
279 apc = irq_data_get_irq_chip_data(d); in ar724x_pci_irq_mask()
280 base = apc->ctrl_base; in ar724x_pci_irq_mask()
281 offset = apc->irq_base - d->irq; in ar724x_pci_irq_mask()
308 static void ar724x_pci_irq_init(struct ar724x_pci_controller *apc, in ar724x_pci_irq_init() argument
314 base = apc->ctrl_base; in ar724x_pci_irq_init()
319 apc->irq_base = ATH79_PCI_IRQ_BASE + (id * AR724X_PCI_IRQ_COUNT); in ar724x_pci_irq_init()
321 for (i = apc->irq_base; in ar724x_pci_irq_init()
322 i < apc->irq_base + AR724X_PCI_IRQ_COUNT; i++) { in ar724x_pci_irq_init()
325 irq_set_chip_data(i, apc); in ar724x_pci_irq_init()
328 irq_set_chained_handler_and_data(apc->irq, ar724x_pci_irq_handler, in ar724x_pci_irq_init()
329 apc); in ar724x_pci_irq_init()
332 static void ar724x_pci_hw_init(struct ar724x_pci_controller *apc) in ar724x_pci_hw_init() argument
352 app = __raw_readl(apc->ctrl_base + AR724X_PCI_REG_APP); in ar724x_pci_hw_init()
354 __raw_writel(app, apc->ctrl_base + AR724X_PCI_REG_APP); in ar724x_pci_hw_init()
360 } while (wait < 10 && !ar724x_pci_check_link(apc)); in ar724x_pci_hw_init()
365 struct ar724x_pci_controller *apc; in ar724x_pci_probe() local
373 apc = devm_kzalloc(&pdev->dev, sizeof(struct ar724x_pci_controller), in ar724x_pci_probe()
375 if (!apc) in ar724x_pci_probe()
379 apc->ctrl_base = devm_ioremap_resource(&pdev->dev, res); in ar724x_pci_probe()
380 if (IS_ERR(apc->ctrl_base)) in ar724x_pci_probe()
381 return PTR_ERR(apc->ctrl_base); in ar724x_pci_probe()
384 apc->devcfg_base = devm_ioremap_resource(&pdev->dev, res); in ar724x_pci_probe()
385 if (IS_ERR(apc->devcfg_base)) in ar724x_pci_probe()
386 return PTR_ERR(apc->devcfg_base); in ar724x_pci_probe()
389 apc->crp_base = devm_ioremap_resource(&pdev->dev, res); in ar724x_pci_probe()
390 if (IS_ERR(apc->crp_base)) in ar724x_pci_probe()
391 return PTR_ERR(apc->crp_base); in ar724x_pci_probe()
393 apc->irq = platform_get_irq(pdev, 0); in ar724x_pci_probe()
394 if (apc->irq < 0) in ar724x_pci_probe()
401 apc->io_res.parent = res; in ar724x_pci_probe()
402 apc->io_res.name = "PCI IO space"; in ar724x_pci_probe()
403 apc->io_res.start = res->start; in ar724x_pci_probe()
404 apc->io_res.end = res->end; in ar724x_pci_probe()
405 apc->io_res.flags = IORESOURCE_IO; in ar724x_pci_probe()
411 apc->mem_res.parent = res; in ar724x_pci_probe()
412 apc->mem_res.name = "PCI memory space"; in ar724x_pci_probe()
413 apc->mem_res.start = res->start; in ar724x_pci_probe()
414 apc->mem_res.end = res->end; in ar724x_pci_probe()
415 apc->mem_res.flags = IORESOURCE_MEM; in ar724x_pci_probe()
417 apc->pci_controller.pci_ops = &ar724x_pci_ops; in ar724x_pci_probe()
418 apc->pci_controller.io_resource = &apc->io_res; in ar724x_pci_probe()
419 apc->pci_controller.mem_resource = &apc->mem_res; in ar724x_pci_probe()
426 ar724x_pci_hw_init(apc); in ar724x_pci_probe()
428 apc->link_up = ar724x_pci_check_link(apc); in ar724x_pci_probe()
429 if (!apc->link_up) in ar724x_pci_probe()
432 ar724x_pci_irq_init(apc, id); in ar724x_pci_probe()
434 ar724x_pci_local_write(apc, PCI_COMMAND, 4, AR724X_PCI_CMD_INIT); in ar724x_pci_probe()
436 register_pci_controller(&apc->pci_controller); in ar724x_pci_probe()