[PATCH] PCI: apple: use fwnode_irq_get() for port IRQ lookup
Rosen Penev <[email protected]> Wed, 22 Jul 2026 16:12:14 -0700
| Newsgroups | dev.linux.lists.llvm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci |
|---|---|
| Message-ID | <[email protected]> |
Replace irq_of_parse_and_map() with fwnode_irq_get() on the PCIe controller device's fwnode, indexed by port->idx. This is equivalent for an OF-backed fwnode but uses the generic firmware-node API. Unlike irq_of_parse_and_map(), fwnode_irq_get() returns a positive IRQ or a negative errno and never 0 (it rewrites 0 to -EINVAL). So store the result in an int and check for irq < 0, propagating the error (including -EPROBE_DEFER) instead of the previous unsigned int with an `if (!irq)` check that could never catch a negative failure. Built for arm64 (defconfig + CONFIG_PCIE_APPLE) with LLVM=1; drivers/pci/controller/pcie-apple.o compiles cleanly. Assisted-by: opencode:hy3-free Signed-off-by: Rosen Penev <[email protected]> --- drivers/pci/controller/pcie-apple.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c index c2cffc0659f4..535acf274b78 100644 --- a/drivers/pci/controller/pcie-apple.c +++ b/drivers/pci/controller/pcie-apple.c @@ -400,14 +400,13 @@ static int apple_pcie_port_setup_irq(struct apple_pcie_port *port) { struct fwnode_handle *fwnode = &port->np->fwnode; struct apple_pcie *pcie = port->pcie; - unsigned int irq; + int irq; u32 val = 0; /* FIXME: consider moving each interrupt under each port */ - irq = irq_of_parse_and_map(to_of_node(dev_fwnode(port->pcie->dev)), - port->idx); - if (!irq) - return -ENXIO; + irq = fwnode_irq_get(dev_fwnode(pcie->dev), port->idx); + if (irq < 0) + return irq; port->domain = irq_domain_create_linear(fwnode, 32, &apple_port_irq_domain_ops, -- 2.55.0