[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230208111645.3863534-3-mmaddireddy@nvidia.com>
Date: Wed, 8 Feb 2023 16:46:42 +0530
From: Manikanta Maddireddy <mmaddireddy@...dia.com>
To: <bhelgaas@...gle.com>, <thierry.reding@...il.com>,
<petlozup@...dia.com>, <rafael.j.wysocki@...el.com>,
<lpieralisi@...nel.org>, <robh@...nel.org>,
<jeffy.chen@...k-chips.com>
CC: <krzysztof.kozlowski+dt@...aro.org>, <jonathanh@...dia.com>,
<dmitry.osipenko@...labora.com>, <viresh.kumar@...aro.org>,
<gregkh@...uxfoundation.org>, <steven.price@....com>,
<kw@...ux.com>, <linux-pci@...r.kernel.org>,
<devicetree@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
<linux-tegra@...r.kernel.org>, <linux-pm@...r.kernel.org>,
<vidyas@...dia.com>, Manikanta Maddireddy <mmaddireddy@...dia.com>
Subject: [RFC,v14 2/5] of/irq: Adjust of_pci_irq parsing for multiple interrupts
From: Jeffy Chen <jeffy.chen@...k-chips.com>
Currently we are considering the first irq as the PCI interrupt pin,
but a PCI device may have multiple interrupts(e.g. PCIe WAKE# pin).
Only parse the PCI interrupt pin when the irq is unnamed or named as
"pci".
Signed-off-by: Jeffy Chen <jeffy.chen@...k-chips.com>
Signed-off-by: Manikanta Maddireddy <mmaddireddy@...dia.com>
---
Changes in v14:
Address Rob's comment on using of_property_match_string().
Changes in v13: None
Changes in v12: None
Changes in v11:
Address Brian's comments.
Changes in v10: None
Changes in v9: None
Changes in v8: None
Changes in v7: None
Changes in v6: None
Changes in v5: None
Changes in v3: None
Changes in v2: None
drivers/pci/of.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/of.c b/drivers/pci/of.c
index 196834ed44fe..ff897c40ed71 100644
--- a/drivers/pci/of.c
+++ b/drivers/pci/of.c
@@ -429,9 +429,17 @@ static int of_irq_parse_pci(const struct pci_dev *pdev, struct of_phandle_args *
*/
dn = pci_device_to_OF_node(pdev);
if (dn) {
- rc = of_irq_parse_one(dn, 0, out_irq);
- if (!rc)
- return rc;
+ int index = 0;
+
+ index = of_property_match_string(dn, "interrupt-names", "pci");
+ if (index == -EINVAL) /* Property doesn't exist */
+ index = 0;
+
+ if (index >= 0) {
+ rc = of_irq_parse_one(dn, index, out_irq);
+ if (!rc)
+ return rc;
+ }
}
/*
--
2.25.1
Powered by blists - more mailing lists