devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-pci@vger.kernel.org
Cc: "Bjorn Helgaas" <bhelgaas@google.com>,
	"Rob Herring" <robh+dt@kernel.org>,
	"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
	"Krzysztof Wilczyński" <kw@linux.com>,
	"Alyssa Rosenzweig" <alyssa@rosenzweig.io>,
	"Stan Skowronek" <stan@corellium.com>,
	"Mark Kettenis" <kettenis@openbsd.org>,
	"Sven Peter" <sven@svenpeter.dev>,
	"Hector Martin" <marcan@marcan.st>,
	"Robin Murphy" <Robin.Murphy@arm.com>,
	"Joey Gouly" <joey.gouly@arm.com>,
	"Joerg Roedel" <joro@8bytes.org>,
	kernel-team@android.com, "Rob Herring" <robh@kernel.org>
Subject: [PATCH v5 03/14] PCI: of: Allow matching of an interrupt-map local to a PCI device
Date: Wed, 29 Sep 2021 17:38:36 +0100	[thread overview]
Message-ID: <20210929163847.2807812-4-maz@kernel.org> (raw)
In-Reply-To: <20210929163847.2807812-1-maz@kernel.org>

Just as we now allow an interrupt map to be parsed when part of an
interrupt controller, there is no reason to ignore an interrupt map that
would be part of a pci device node such as a root port since we already
allow interrupt specifiers.

Allow the matching of such property when local to the node of a PCI
device, which allows the device itself to use the interrupt map for for
its own purpose.

Reviewed-by: Rob Herring <robh@kernel.org>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Tested-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
 drivers/pci/of.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/of.c b/drivers/pci/of.c
index d84381ce82b5..0b1237cff239 100644
--- a/drivers/pci/of.c
+++ b/drivers/pci/of.c
@@ -423,7 +423,7 @@ static int devm_of_pci_get_host_bridge_resources(struct device *dev,
  */
 static int of_irq_parse_pci(const struct pci_dev *pdev, struct of_phandle_args *out_irq)
 {
-	struct device_node *dn, *ppnode;
+	struct device_node *dn, *ppnode = NULL;
 	struct pci_dev *ppdev;
 	__be32 laddr[3];
 	u8 pin;
@@ -452,8 +452,14 @@ static int of_irq_parse_pci(const struct pci_dev *pdev, struct of_phandle_args *
 	if (pin == 0)
 		return -ENODEV;
 
+	/* Local interrupt-map in the device node? Use it! */
+	if (of_get_property(dn, "interrupt-map", NULL)) {
+		pin = pci_swizzle_interrupt_pin(pdev, pin);
+		ppnode = dn;
+	}
+
 	/* Now we walk up the PCI tree */
-	for (;;) {
+	while (!ppnode) {
 		/* Get the pci_dev of our parent */
 		ppdev = pdev->bus->self;
 
-- 
2.30.2


  parent reply	other threads:[~2021-09-29 16:39 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-29 16:38 [PATCH v5 00/14] PCI: Add support for Apple M1 Marc Zyngier
2021-09-29 16:38 ` [PATCH v5 01/14] irqdomain: Make of_phandle_args_to_fwspec generally available Marc Zyngier
2021-09-29 16:38 ` [PATCH v5 02/14] of/irq: Allow matching of an interrupt-map local to an interrupt controller Marc Zyngier
2021-09-29 16:38 ` Marc Zyngier [this message]
2021-09-29 16:38 ` [PATCH v5 04/14] PCI: apple: Add initial hardware bring-up Marc Zyngier
2021-09-29 16:38 ` [PATCH v5 05/14] PCI: apple: Set up reference clocks when probing Marc Zyngier
2021-09-29 16:38 ` [PATCH v5 06/14] PCI: apple: Add INTx and per-port interrupt support Marc Zyngier
2021-09-29 16:38 ` [PATCH v5 07/14] PCI: apple: Implement MSI support Marc Zyngier
2021-09-29 16:38 ` [PATCH v5 08/14] iommu/dart: Exclude MSI doorbell from PCIe device IOVA range Marc Zyngier
2021-09-29 16:38 ` [PATCH v5 09/14] PCI: apple: Configure RID to SID mapper on device addition Marc Zyngier
2021-09-29 16:38 ` [PATCH v5 10/14] arm64: apple: Add pinctrl nodes Marc Zyngier
2021-09-29 19:05   ` Linus Walleij
2021-09-30  8:00     ` Marc Zyngier
2021-09-30  9:20       ` Mark Kettenis
2021-09-30 15:46       ` Linus Walleij
2021-10-07 16:00   ` Hector Martin
2021-09-29 16:38 ` [PATCH v5 11/14] arm64: apple: Add PCIe node Marc Zyngier
2021-10-07 16:01   ` Hector Martin
2021-09-29 16:38 ` [PATCH v5 12/14] arm64: dts: apple: t8103: Add PCIe DARTs Marc Zyngier
2021-10-07 16:02   ` Hector Martin
2021-09-29 16:38 ` [PATCH v5 13/14] arm64: dts: apple: t8103: Add root port interrupt routing Marc Zyngier
2021-10-07 16:03   ` Hector Martin
2021-09-29 16:38 ` [PATCH v5 14/14] arm64: dts: apple: j274: Expose PCI node for the Ethernet MAC address Marc Zyngier
2021-10-07 16:03   ` Hector Martin
2021-10-04  8:38 ` [PATCH v5 00/14] PCI: Add support for Apple M1 Lorenzo Pieralisi
2021-10-04  9:05   ` Marc Zyngier
2021-10-04 18:30     ` Linus Walleij
2021-10-07 15:43       ` Hector Martin
2021-10-04 19:51   ` Rob Herring
2021-10-04 20:42     ` Linus Walleij
2021-10-05  9:57       ` Marc Zyngier
2021-10-06  5:56       ` Michael Ellerman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210929163847.2807812-4-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=Robin.Murphy@arm.com \
    --cc=alyssa@rosenzweig.io \
    --cc=bhelgaas@google.com \
    --cc=devicetree@vger.kernel.org \
    --cc=joey.gouly@arm.com \
    --cc=joro@8bytes.org \
    --cc=kernel-team@android.com \
    --cc=kettenis@openbsd.org \
    --cc=kw@linux.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=marcan@marcan.st \
    --cc=robh+dt@kernel.org \
    --cc=robh@kernel.org \
    --cc=stan@corellium.com \
    --cc=sven@svenpeter.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).