diff options
| author | Lorenzo Pieralisi <lpieralisi@kernel.org> | 2026-01-15 10:50:48 +0100 |
|---|---|---|
| committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2026-01-27 15:31:42 +0100 |
| commit | a08df2fbba47be20b5769b054d9a19ddee567bdc (patch) | |
| tree | e44f6d46bd1e650e805b7c1814e3778ce8e2ce52 /drivers/irqchip | |
| parent | 0323897a88afd4ddb3d44cd6b1b33ccd6a4b76cb (diff) | |
PCI/MSI: Make the pci_msi_map_rid_ctlr_node() interface firmware agnostic
To support booting with OF and ACPI seamlessly, GIC ITS parent code
requires the PCI/MSI irqdomain layer to implement a function to retrieve
an MSI controller fwnode and map an RID in a firmware agnostic way
(ie pci_msi_map_rid_ctlr_node()).
Convert pci_msi_map_rid_ctlr_node() to an OF agnostic interface
(fwnode_handle based) and update the GIC ITS MSI parent code to reflect
the pci_msi_map_rid_ctlr_node() change.
Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Thomas Gleixner <tglx@kernel.org>
Link: https://patch.msgid.link/20260115-gicv5-host-acpi-v3-2-c13a9a150388@kernel.org
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/irqchip')
| -rw-r--r-- | drivers/irqchip/irq-gic-its-msi-parent.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/irqchip/irq-gic-its-msi-parent.c b/drivers/irqchip/irq-gic-its-msi-parent.c index 12f45228c867..4d1ad1ee005d 100644 --- a/drivers/irqchip/irq-gic-its-msi-parent.c +++ b/drivers/irqchip/irq-gic-its-msi-parent.c @@ -104,7 +104,7 @@ static int its_pci_msi_prepare(struct irq_domain *domain, struct device *dev, static int its_v5_pci_msi_prepare(struct irq_domain *domain, struct device *dev, int nvec, msi_alloc_info_t *info) { - struct device_node *msi_node = NULL; + struct fwnode_handle *msi_node = NULL; struct msi_domain_info *msi_info; struct pci_dev *pdev; phys_addr_t pa; @@ -116,15 +116,15 @@ static int its_v5_pci_msi_prepare(struct irq_domain *domain, struct device *dev, pdev = to_pci_dev(dev); - rid = pci_msi_map_rid_ctlr_node(pdev, &msi_node); + rid = pci_msi_map_rid_ctlr_node(domain->parent, pdev, &msi_node); if (!msi_node) return -ENODEV; - ret = its_translate_frame_address(msi_node, &pa); + ret = its_translate_frame_address(to_of_node(msi_node), &pa); if (ret) return -ENODEV; - of_node_put(msi_node); + fwnode_handle_put(msi_node); /* ITS specific DeviceID */ info->scratchpad[0].ul = rid; |
