Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp826598pxb; Wed, 22 Sep 2021 13:57:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwEmGXDG+GaKjACAANGc0n/9wywV9c9jkU8L3DoyE9fBqWRNHWo5mOVU5ucZ+5RY1qWfzZy X-Received: by 2002:a50:cf83:: with SMTP id h3mr1578233edk.63.1632344277290; Wed, 22 Sep 2021 13:57:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632344277; cv=none; d=google.com; s=arc-20160816; b=oB5dVBpZnfKoGQF53peLYF0AJYunKgh8bQCSSkNG9NbQ8Epo3NUI4crtP/u9ICvwPW v2HWInIYMwmXWvI0VOwtnwx5PDFnjtNt0O7iTb3dqSncbGvmkL4VtemzSsVMun3jX+fm I/3vKCjR13/M0oq1gCUsiZx+JrLQosCMbdt4hrKqbyQB7rPbXSBbXSjXlUmcX/vEG4Ad q+eJMMerbjXWfRziimtW5qf/Jpe9sWgCxN6DvDvTPze9Y+b9L0zsTM+XREotPmaEs4R0 P45+u4ApZBxQDtlsEUC/+mJEZmtCTQCeSC72owOZD9Rw1LHlF+PyOGys5v/FlEXn74Dx L6mg== 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=czwiofIqwaJh1p43hGsNtENLtp39XJiVtj2vhv2JMUBKlcV0ZfB8WVwSQxDzVCLNoD MJ8GdarqjID22gYSxZ0RLP6OZVJAXYgavs/utntZ/eLaJ6D6PXo7gZT5kOy3eCsnQ/vS TMuGw77jqk539J6sgoGU7Pe82O/LD0hANM0nsnkBOMi/F3QquV2qaXBPAPUS0aaZfc5W t2QMkhEP8yJiY3DAnDyF1SAnuKmRKnlWbLGLnBYcRuPspeP2Pl1hj/ofERZ6hEBDmsI/ 4JLKi5/JknlVdNLWSJVQiplKSZyD+SfXpszTjshueIh52nYDEThDfoKjwEQ8eNPOAi4t bc3Q== 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 bu11si3817481ejb.202.2021.09.22.13.57.33; Wed, 22 Sep 2021 13:57:57 -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 S237944AbhIVU5G (ORCPT + 99 others); Wed, 22 Sep 2021 16:57:06 -0400 Received: from mail.kernel.org ([198.145.29.99]:55512 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237917AbhIVU4u (ORCPT ); Wed, 22 Sep 2021 16:56:50 -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 EC04A611C6; Wed, 22 Sep 2021 20:55:19 +0000 (UTC) Received: from sofa.misterjones.org ([185.219.108.64] helo=wait-a-minute.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 1mT9Gw-00CP8z-9O; Wed, 22 Sep 2021 21:55:18 +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 , kernel-team@android.com, Rob Herring Subject: [PATCH v4 03/10] PCI: of: Allow matching of an interrupt-map local to a PCI device Date: Wed, 22 Sep 2021 21:54:51 +0100 Message-Id: <20210922205458.358517-4-maz@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210922205458.358517-1-maz@kernel.org> References: <20210922205458.358517-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, 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