Lines Matching refs:apc

55 static inline bool ar724x_pci_check_link(struct ar724x_pci_controller *apc)  in ar724x_pci_check_link()  argument
59 reset = __raw_readl(apc->ctrl_base + AR724X_PCI_REG_RESET); in ar724x_pci_check_link()
72 static int ar724x_pci_local_write(struct ar724x_pci_controller *apc, in ar724x_pci_local_write() argument
81 if (!apc->link_up) in ar724x_pci_local_write()
84 base = apc->crp_base; in ar724x_pci_local_write()
115 struct ar724x_pci_controller *apc; in ar724x_pci_read() local
119 apc = pci_bus_to_ar724x_controller(bus); in ar724x_pci_read()
120 if (!apc->link_up) in ar724x_pci_read()
126 base = apc->devcfg_base; in ar724x_pci_read()
149 apc->bar0_is_cached) { in ar724x_pci_read()
151 *value = apc->bar0_value; in ar724x_pci_read()
162 struct ar724x_pci_controller *apc; in ar724x_pci_write() local
167 apc = pci_bus_to_ar724x_controller(bus); in ar724x_pci_write()
168 if (!apc->link_up) in ar724x_pci_write()
186 apc->bar0_is_cached = true; in ar724x_pci_write()
187 apc->bar0_value = value; in ar724x_pci_write()
191 apc->bar0_is_cached = false; in ar724x_pci_write()
195 base = apc->devcfg_base; in ar724x_pci_write()
230 struct ar724x_pci_controller *apc; in ar724x_pci_irq_handler() local
234 apc = irq_desc_get_handler_data(desc); in ar724x_pci_irq_handler()
235 base = apc->ctrl_base; in ar724x_pci_irq_handler()
241 generic_handle_irq(apc->irq_base + 0); in ar724x_pci_irq_handler()
249 struct ar724x_pci_controller *apc; in ar724x_pci_irq_unmask() local
254 apc = irq_data_get_irq_chip_data(d); in ar724x_pci_irq_unmask()
255 base = apc->ctrl_base; in ar724x_pci_irq_unmask()
256 offset = apc->irq_base - d->irq; in ar724x_pci_irq_unmask()
270 struct ar724x_pci_controller *apc; in ar724x_pci_irq_mask() local
275 apc = irq_data_get_irq_chip_data(d); in ar724x_pci_irq_mask()
276 base = apc->ctrl_base; in ar724x_pci_irq_mask()
277 offset = apc->irq_base - d->irq; in ar724x_pci_irq_mask()
304 static void ar724x_pci_irq_init(struct ar724x_pci_controller *apc, in ar724x_pci_irq_init() argument
310 base = apc->ctrl_base; in ar724x_pci_irq_init()
315 apc->irq_base = ATH79_PCI_IRQ_BASE + (id * AR724X_PCI_IRQ_COUNT); in ar724x_pci_irq_init()
317 for (i = apc->irq_base; in ar724x_pci_irq_init()
318 i < apc->irq_base + AR724X_PCI_IRQ_COUNT; i++) { in ar724x_pci_irq_init()
321 irq_set_chip_data(i, apc); in ar724x_pci_irq_init()
324 irq_set_chained_handler_and_data(apc->irq, ar724x_pci_irq_handler, in ar724x_pci_irq_init()
325 apc); in ar724x_pci_irq_init()
330 struct ar724x_pci_controller *apc; in ar724x_pci_probe() local
338 apc = devm_kzalloc(&pdev->dev, sizeof(struct ar724x_pci_controller), in ar724x_pci_probe()
340 if (!apc) in ar724x_pci_probe()
344 apc->ctrl_base = devm_ioremap_resource(&pdev->dev, res); in ar724x_pci_probe()
345 if (IS_ERR(apc->ctrl_base)) in ar724x_pci_probe()
346 return PTR_ERR(apc->ctrl_base); in ar724x_pci_probe()
349 apc->devcfg_base = devm_ioremap_resource(&pdev->dev, res); in ar724x_pci_probe()
350 if (IS_ERR(apc->devcfg_base)) in ar724x_pci_probe()
351 return PTR_ERR(apc->devcfg_base); in ar724x_pci_probe()
354 apc->crp_base = devm_ioremap_resource(&pdev->dev, res); in ar724x_pci_probe()
355 if (IS_ERR(apc->crp_base)) in ar724x_pci_probe()
356 return PTR_ERR(apc->crp_base); in ar724x_pci_probe()
358 apc->irq = platform_get_irq(pdev, 0); in ar724x_pci_probe()
359 if (apc->irq < 0) in ar724x_pci_probe()
366 apc->io_res.parent = res; in ar724x_pci_probe()
367 apc->io_res.name = "PCI IO space"; in ar724x_pci_probe()
368 apc->io_res.start = res->start; in ar724x_pci_probe()
369 apc->io_res.end = res->end; in ar724x_pci_probe()
370 apc->io_res.flags = IORESOURCE_IO; in ar724x_pci_probe()
376 apc->mem_res.parent = res; in ar724x_pci_probe()
377 apc->mem_res.name = "PCI memory space"; in ar724x_pci_probe()
378 apc->mem_res.start = res->start; in ar724x_pci_probe()
379 apc->mem_res.end = res->end; in ar724x_pci_probe()
380 apc->mem_res.flags = IORESOURCE_MEM; in ar724x_pci_probe()
382 apc->pci_controller.pci_ops = &ar724x_pci_ops; in ar724x_pci_probe()
383 apc->pci_controller.io_resource = &apc->io_res; in ar724x_pci_probe()
384 apc->pci_controller.mem_resource = &apc->mem_res; in ar724x_pci_probe()
386 apc->link_up = ar724x_pci_check_link(apc); in ar724x_pci_probe()
387 if (!apc->link_up) in ar724x_pci_probe()
390 ar724x_pci_irq_init(apc, id); in ar724x_pci_probe()
392 ar724x_pci_local_write(apc, PCI_COMMAND, 4, AR724X_PCI_CMD_INIT); in ar724x_pci_probe()
394 register_pci_controller(&apc->pci_controller); in ar724x_pci_probe()