[PATCH] arm64: dts: ti: k3-j722s-main: add legacy PCIe interrupts

Michael Walle posted 1 patch 1 month, 2 weeks ago
arch/arm64/boot/dts/ti/k3-j722s-main.dtsi | 13 +++++++++++++
1 file changed, 13 insertions(+)
[PATCH] arm64: dts: ti: k3-j722s-main: add legacy PCIe interrupts
Posted by Michael Walle 1 month, 2 weeks ago
The kernel will try to map the legacy interrupt pins, but the
interrupt mapping is missing from the device tree and thus that
fails with:

   pcieport 0000:00:00.0: of_irq_parse_pci: failed with rc=-22

Add the node for the legacy PCIe interrupts to fix that. This is just
compile-time tested.

Signed-off-by: Michael Walle <mwalle@kernel.org>
---
 arch/arm64/boot/dts/ti/k3-j722s-main.dtsi | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-j722s-main.dtsi b/arch/arm64/boot/dts/ti/k3-j722s-main.dtsi
index ab2e7b6eb98e..3e10b78d5bf3 100644
--- a/arch/arm64/boot/dts/ti/k3-j722s-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j722s-main.dtsi
@@ -119,7 +119,20 @@ pcie0_rc: pcie@f102000 {
 		cdns,no-bar-match-nbits = <64>;
 		ti,syscon-pcie-ctrl = <&pcie0_ctrl 0x0>;
 		msi-map = <0x0 &gic_its 0x0 0x10000>;
+		#interrupt-cells = <1>;
+		interrupt-map-mask = <0 0 0 7>;
+		interrupt-map = <0 0 0 1 &pcie0_intc 0>, /* INT A */
+				<0 0 0 2 &pcie0_intc 0>, /* INT B */
+				<0 0 0 3 &pcie0_intc 0>, /* INT C */
+				<0 0 0 4 &pcie0_intc 0>; /* INT D */
 		status = "disabled";
+
+		pcie0_intc: interrupt-controller {
+			interrupt-controller;
+			#interrupt-cells = <1>;
+			interrupt-parent = <&gic500>;
+			interrupts = <GIC_SPI 95 IRQ_TYPE_EDGE_RISING>;
+		};
 	};
 
 	usbss1: usb@f920000 {
-- 
2.39.5
Re: [PATCH] arm64: dts: ti: k3-j722s-main: add legacy PCIe interrupts
Posted by s-vadapalli 1 month, 2 weeks ago
On Tue, Aug 19, 2025 at 01:13:17PM +0200, Michael Walle wrote:

Hello Michael,

> The kernel will try to map the legacy interrupt pins, but the
> interrupt mapping is missing from the device tree and thus that
> fails with:
> 
>    pcieport 0000:00:00.0: of_irq_parse_pci: failed with rc=-22
> 
> Add the node for the legacy PCIe interrupts to fix that. This is just
> compile-time tested.

INTx is not supported by the driver as explained at:
https://lore.kernel.org/r/be3e3c5f-0d48-41b0-87f4-2210f13b9460@ti.com/

The patch to fix the error displayed in the logs was posted at:
https://lore.kernel.org/r/20240726135903.1255825-1-s-vadapalli@ti.com/
but wasn't accepted as-is. A different approach will be required to fix
of_irq_parse_pci() instead as pointed out at:
https://lore.kernel.org/r/20240729080006.GA8698@thinkpad/

[Trimmed]

Regards,
Siddharth.
Re: [PATCH] arm64: dts: ti: k3-j722s-main: add legacy PCIe interrupts
Posted by Michael Walle 1 month, 2 weeks ago
Hi Siddharth,

On Wed Aug 20, 2025 at 3:52 PM CEST, s-vadapalli wrote:
> On Tue, Aug 19, 2025 at 01:13:17PM +0200, Michael Walle wrote:
>
> Hello Michael,
>
>> The kernel will try to map the legacy interrupt pins, but the
>> interrupt mapping is missing from the device tree and thus that
>> fails with:
>> 
>>    pcieport 0000:00:00.0: of_irq_parse_pci: failed with rc=-22
>> 
>> Add the node for the legacy PCIe interrupts to fix that. This is just
>> compile-time tested.
>
> INTx is not supported by the driver as explained at:
> https://lore.kernel.org/r/be3e3c5f-0d48-41b0-87f4-2210f13b9460@ti.com/
>
> The patch to fix the error displayed in the logs was posted at:
> https://lore.kernel.org/r/20240726135903.1255825-1-s-vadapalli@ti.com/
> but wasn't accepted as-is. A different approach will be required to fix
> of_irq_parse_pci() instead as pointed out at:
> https://lore.kernel.org/r/20240729080006.GA8698@thinkpad/

Thanks for the pointers.

I've just checked the J722S errata sheet and there is no such
erratum. So, is that sheet outdated or was it fixed?

-michael
Re: [PATCH] arm64: dts: ti: k3-j722s-main: add legacy PCIe interrupts
Posted by s-vadapalli 1 month, 1 week ago
On Wed, Aug 20, 2025 at 04:00:45PM +0200, Michael Walle wrote:
> Hi Siddharth,
> 
> On Wed Aug 20, 2025 at 3:52 PM CEST, s-vadapalli wrote:
> > On Tue, Aug 19, 2025 at 01:13:17PM +0200, Michael Walle wrote:
> >
> > Hello Michael,
> >
> >> The kernel will try to map the legacy interrupt pins, but the
> >> interrupt mapping is missing from the device tree and thus that
> >> fails with:
> >> 
> >>    pcieport 0000:00:00.0: of_irq_parse_pci: failed with rc=-22
> >> 
> >> Add the node for the legacy PCIe interrupts to fix that. This is just
> >> compile-time tested.
> >
> > INTx is not supported by the driver as explained at:
> > https://lore.kernel.org/r/be3e3c5f-0d48-41b0-87f4-2210f13b9460@ti.com/
> >
> > The patch to fix the error displayed in the logs was posted at:
> > https://lore.kernel.org/r/20240726135903.1255825-1-s-vadapalli@ti.com/
> > but wasn't accepted as-is. A different approach will be required to fix
> > of_irq_parse_pci() instead as pointed out at:
> > https://lore.kernel.org/r/20240729080006.GA8698@thinkpad/
> 
> Thanks for the pointers.
> 
> I've just checked the J722S errata sheet and there is no such
> erratum. So, is that sheet outdated or was it fixed?

According to the Errata documents, the errata only affects J721E SoC.
The procedure to enable the INTx support is the following:
1. Update DT bindings to indicate that INTx is valid only for SoCs other
   than J721E SoCs on the basis of the compatible.
2. Add support in the pci-j721e.c driver for INTx.
3. Finally, the current patch or patches for other SoCs to add INTx can
   be posted and merged.

The following series which was posted in 2021 corresponds to 1 and 2
above:
https://lore.kernel.org/r/20210811123846.31921-1-kishon@ti.com/

Please note that the above series was included in the downstream (TI)
Linux in the past. It was observed that despite the Errata not affecting
the AM64 SoC (contains a Cadence PCIe Controller and is programmed by the
same pci-j721e.c driver), legacy interrupts were missed and resulted in the
PCIe Endpoint device becoming non-functional. Resolving this issue
required retriggering the interrupt following which the device became
functional.

Therefore, it is encouraged that MSI/MSI-X are used instead. If INTx is a
necessity (unlike the current patch which only aims to prevent error logs
from showing up), then the aforementioned series can be used with the
disclaimer that it may still lead to interrupts being missed.

Regards,
Siddharth.