Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp789150pxb; Wed, 29 Sep 2021 09:40:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz1PordeihU41BAUguhsW2+2voocLf3TbcbRdbYNfL0yvIfsGsV2inos7LCFjTrjcq6O3Nw X-Received: by 2002:a17:90b:282:: with SMTP id az2mr884329pjb.215.1632933624795; Wed, 29 Sep 2021 09:40:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632933624; cv=none; d=google.com; s=arc-20160816; b=VqJbH0JNQg9p7hjJOaTGkFwwX9uogQpIbg0orsmCncJw13Jqfp2zJU+Z6xPN8rGXgB Dn6NJUWv/8cB3rAW3p0klvzCuHxpBXSZ5ZEOydb4PTcYPCq36kKfsJgt2JW96VXYnS8T LjdQORYXbgxxuw/XwfT6UOEcKdUXQIh9IsA3vQhhr22x09JnA5tIaVQlqQIuzGytQ762 20Ue4rDKC/dW+Y1+Kj+Hg1iUCucf33FKyojOwYYnMT7vHmL9xxv4EBiYaiipx2nHnIdA pXkvKTnBFanBGWH5l8O8mmd+hkeghfE4iaMy5dzmXZ41yTv7l4qmAcYTOW5RmV3YFUsv v4Fw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=28OZR3nATOs8m6V2xQAgSXYm8ajxtKQwggBr31gemmU=; b=wMpR6P0OuUHR7FlhdmioBYKay0arZ+FoRICurwLGrc5tnkXRjxHvM+bES/dtw0wLuy GuHdmUdwmJ+JRmvFWGUVhpH9FGrcLGWEVyoZCa62G0P4qj7SFb22u1it8zbOFWA4sCU2 Y8eGhc2iVrL3rKCXHT1BmwC/0z5Kvj1AcGKNOigSBjnLSvUBDnuJ6P7qoGUhynniiCP+ KJJqOn3Ct9pV3Q9bWrn+Xro77yQB9qN1KlZO36ErGlf4LYF1UnsyDkU++tVE2m6NnVcv FQfboYf6jaiV3kCRQFSp+3Rh67GlR3bMGj+/YWvnO3nJqk0UAgSQOn6S1yixAXwJI3H2 CJXQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k11si336292pfg.109.2021.09.29.09.40.12; Wed, 29 Sep 2021 09:40:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346104AbhI2Qkq (ORCPT + 99 others); Wed, 29 Sep 2021 12:40:46 -0400 Received: from mail.kernel.org ([198.145.29.99]:40666 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345627AbhI2Qkh (ORCPT ); Wed, 29 Sep 2021 12:40:37 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 7095B61452; Wed, 29 Sep 2021 16:38:56 +0000 (UTC) Received: from sofa.misterjones.org ([185.219.108.64] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1mVcbe-00DmcL-Sg; Wed, 29 Sep 2021 17:38:54 +0100 From: Marc Zyngier To: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org Cc: Bjorn Helgaas , Rob Herring , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Alyssa Rosenzweig , Stan Skowronek , Mark Kettenis , Sven Peter , Hector Martin , Robin Murphy , Joey Gouly , Joerg Roedel , kernel-team@android.com, Rob Herring 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 Message-Id: <20210929163847.2807812-4-maz@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210929163847.2807812-1-maz@kernel.org> References: <20210929163847.2807812-1-maz@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, bhelgaas@google.com, robh+dt@kernel.org, lorenzo.pieralisi@arm.com, kw@linux.com, alyssa@rosenzweig.io, stan@corellium.com, kettenis@openbsd.org, sven@svenpeter.dev, marcan@marcan.st, Robin.Murphy@arm.com, joey.gouly@arm.com, joro@8bytes.org, kernel-team@android.com, robh@kernel.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.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 Acked-by: Bjorn Helgaas Tested-by: Alyssa Rosenzweig Signed-off-by: Marc Zyngier --- 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