* [PATCH v2 0/2] Add PCIe support to RZ/V2H SoC and EVK @ 2026-07-08 16:33 Prabhakar 2026-07-08 16:33 ` [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes Prabhakar 2026-07-08 16:33 ` [PATCH v2 2/2] arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable PCIe Prabhakar 0 siblings, 2 replies; 6+ messages in thread From: Prabhakar @ 2026-07-08 16:33 UTC (permalink / raw) To: Geert Uytterhoeven, Magnus Damm, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das, Fabrizio Castro, Lad Prabhakar From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Hi all, This patch series adds PCIe support to the Renesas RZ/V2H SoC and enables PCIe on the RZ/V2H EVK. The first patch adds the necessary device tree nodes for the PCIe controller, while the second patch enables the PCIe slot on the RZ/V2H EVK. v1->v2: - Formatted the ranges property so that the new line entries are aligned. - Corrected the flag values for dma-ranges property for pcie0/1 nodes. - Renamed the node name from pcie to pcie0. v1: https://lore.kernel.org/all/20260602204707.1920839-1-prabhakar.mahadev-lad.rj@bp.renesas.com/ Note, the driver and binding patches have landed in linux-next. Cheers, Prabhakar Lad Prabhakar (2): arm64: dts: renesas: r9a09g057: Add PCIe nodes arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable PCIe arch/arm64/boot/dts/renesas/r9a09g057.dtsi | 140 ++++++++++++++++++ .../dts/renesas/r9a09g057h44-rzv2h-evk.dts | 18 +++ 2 files changed, 158 insertions(+) -- 2.54.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes 2026-07-08 16:33 [PATCH v2 0/2] Add PCIe support to RZ/V2H SoC and EVK Prabhakar @ 2026-07-08 16:33 ` Prabhakar 2026-07-08 16:49 ` sashiko-bot 2026-07-09 15:02 ` Geert Uytterhoeven 2026-07-08 16:33 ` [PATCH v2 2/2] arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable PCIe Prabhakar 1 sibling, 2 replies; 6+ messages in thread From: Prabhakar @ 2026-07-08 16:33 UTC (permalink / raw) To: Geert Uytterhoeven, Magnus Damm, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das, Fabrizio Castro, Lad Prabhakar From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Add PCIe nodes to Renesas RZ/V2H(P) ("R9A09G057") SoC DTSI. Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> --- v1->v2: - Formatted the ranges property so that the new line entries are aligned. - Corrected the flag values for dma-ranges property for pcie0/1 nodes. --- arch/arm64/boot/dts/renesas/r9a09g057.dtsi | 140 +++++++++++++++++++++ 1 file changed, 140 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi index 8af0f0f2f2f7..639693d464a7 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi @@ -1041,6 +1041,146 @@ rsci9: serial@12803000 { status = "disabled"; }; + pcie0: pcie@13400000 { + compatible = "renesas,r9a09g057-pcie"; + reg = <0 0x13400000 0 0x10000>; + ranges = <0x02000000 0x0 0x30000000 0x0 0x30000000 0x0 0x08000000>, + <0x43000000 0x4 0x40000000 0x4 0x40000000 0x6 0x00000000>; + dma-ranges = <0x43000000 0x0 0x40000000 0x0 0x40000000 0x4 0x00000000>; + bus-range = <0x0 0xff>; + interrupts = <GIC_SPI 800 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 801 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 802 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 803 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 806 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 792 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 793 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 794 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 795 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 796 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 797 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 799 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 804 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 805 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 807 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 791 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 798 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 808 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 809 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 810 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 811 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 812 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 813 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "serr", "serr_cor", "serr_nonfatal", + "serr_fatal", "axi_err", "inta", + "intb", "intc", "intd", "msi", + "link_bandwidth", "pm_pme", "dma", + "pcie_evt", "msg", "all", + "link_equalization_request", + "turn_off_event", "pmu_poweroff", + "d3_event_f0", "d3_event_f1", + "cfg_pmcsr_writeclear_f0", + "cfg_pmcsr_writeclear_f1"; + #interrupt-cells = <1>; + interrupt-controller; + interrupt-map-mask = <0 0 0 7>; + interrupt-map = <0 0 0 1 &pcie0 0 0 0 0>, /* INTA */ + <0 0 0 2 &pcie0 0 0 0 1>, /* INTB */ + <0 0 0 3 &pcie0 0 0 0 2>, /* INTC */ + <0 0 0 4 &pcie0 0 0 0 3>; /* INTD */ + clocks = <&cpg CPG_MOD 0xc4>, <&cpg CPG_MOD 0xc5>; + clock-names = "aclk", "pmu"; + resets = <&cpg 0xb2>; + reset-names = "aresetn"; + power-domains = <&cpg>; + device_type = "pci"; + #address-cells = <3>; + #size-cells = <2>; + num-lanes = <2>; + renesas,sysc = <&sys 0>; + status = "disabled"; + + pcie_port0: pcie@0,0 { + reg = <0x0 0x0 0x0 0x0 0x0>; + ranges; + device_type = "pci"; + vendor-id = <0x1912>; + device-id = <0x003b>; + #address-cells = <3>; + #size-cells = <2>; + }; + }; + + pcie1: pcie@13410000 { + compatible = "renesas,r9a09g057-pcie"; + reg = <0 0x13410000 0 0x10000>; + ranges = <0x02000000 0x0 0x38000000 0x0 0x38000000 0x0 0x08000000>, + <0x43000000 0xa 0x40000000 0xa 0x40000000 0x5 0xc0000000>; + dma-ranges = <0x43000000 0x0 0x40000000 0x0 0x40000000 0x4 0x00000000>; + bus-range = <0x0 0xff>; + interrupts = <GIC_SPI 823 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 824 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 825 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 826 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 829 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 815 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 816 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 817 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 818 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 819 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 820 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 822 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 827 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 828 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 830 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 814 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 821 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 831 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 832 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 833 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 834 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 835 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 836 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "serr", "serr_cor", "serr_nonfatal", + "serr_fatal", "axi_err", "inta", + "intb", "intc", "intd", "msi", + "link_bandwidth", "pm_pme", "dma", + "pcie_evt", "msg", "all", + "link_equalization_request", + "turn_off_event", "pmu_poweroff", + "d3_event_f0", "d3_event_f1", + "cfg_pmcsr_writeclear_f0", + "cfg_pmcsr_writeclear_f1"; + #interrupt-cells = <1>; + interrupt-controller; + interrupt-map-mask = <0 0 0 7>; + interrupt-map = <0 0 0 1 &pcie1 0 0 0 0>, /* INTA */ + <0 0 0 2 &pcie1 0 0 0 1>, /* INTB */ + <0 0 0 3 &pcie1 0 0 0 2>, /* INTC */ + <0 0 0 4 &pcie1 0 0 0 3>; /* INTD */ + clocks = <&cpg CPG_MOD 0xc4>, <&cpg CPG_MOD 0xc5>; + clock-names = "aclk", "pmu"; + resets = <&cpg 0xb2>; + reset-names = "aresetn"; + power-domains = <&cpg>; + device_type = "pci"; + #address-cells = <3>; + #size-cells = <2>; + num-lanes = <2>; + renesas,sysc = <&sys 1>; + status = "disabled"; + + pcie_port1: pcie@0,0 { + reg = <0x0 0x0 0x0 0x0 0x0>; + ranges; + device_type = "pci"; + vendor-id = <0x1912>; + device-id = <0x003b>; + #address-cells = <3>; + #size-cells = <2>; + }; + }; + i2c0: i2c@14400400 { compatible = "renesas,riic-r9a09g057"; reg = <0 0x14400400 0 0x400>; -- 2.54.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes 2026-07-08 16:33 ` [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes Prabhakar @ 2026-07-08 16:49 ` sashiko-bot 2026-07-09 15:02 ` Geert Uytterhoeven 1 sibling, 0 replies; 6+ messages in thread From: sashiko-bot @ 2026-07-08 16:49 UTC (permalink / raw) To: Prabhakar; +Cc: robh, devicetree, wsa+renesas, conor+dt Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [High] The pcie1 node incorrectly re-uses the exact same clocks and resets properties as pcie0, causing a hardware resource conflict. - [Medium] The `renesas,sysc` property passes an argument to a phandle, but the target `sys` node lacks a `#cells` property. -- --- Patch [1]: [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes --- commit 146b102b21fdb6341d75564293e25310c00c5056 Author: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> arm64: dts: renesas: r9a09g057: Add PCIe nodes Add PCIe nodes to Renesas RZ/V2H(P) ("R9A09G057") SoC DTSI. > diff --git a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi > index 9581af58024ed..f3199c32423e5 100644 > --- a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi > +++ b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi > @@ -1024,6 +1024,146 @@ rsci9: serial@12803000 { [ ... ] > + pcie0: pcie@13400000 { > + compatible = "renesas,r9a09g057-pcie"; [ ... ] > + #size-cells = <2>; > + num-lanes = <2>; > + renesas,sysc = <&sys 0>; ^^^^ [Severity: Medium] Does the target sys node have a #sysc-cells property defined? If the driver relies on standard of_parse_phandle_with_args() to read the controller ID (0), the parsing will fail at runtime because the target node lacks #sysc-cells. If the driver uses of_parse_phandle(), the argument is simply ignored. > + status = "disabled"; > + > + pcie_port0: pcie@0,0 { [ ... ] > + pcie1: pcie@13410000 { > + compatible = "renesas,r9a09g057-pcie"; [ ... ] > + interrupt-map = <0 0 0 1 &pcie1 0 0 0 0>, /* INTA */ > + <0 0 0 2 &pcie1 0 0 0 1>, /* INTB */ > + <0 0 0 3 &pcie1 0 0 0 2>, /* INTC */ > + <0 0 0 4 &pcie1 0 0 0 3>; /* INTD */ > + clocks = <&cpg CPG_MOD 0xc4>, <&cpg CPG_MOD 0xc5>; > + clock-names = "aclk", "pmu"; > + resets = <&cpg 0xb2>; ^^^^ [Severity: High] Are these the correct clocks and resets for pcie1? The pcie1 node re-uses the exact same indices (0xc4, 0xc5, and 0xb2) as pcie0. The CPG driver (drivers/clk/renesas/r9a09g057-cpg.c) explicitly maps these to pcie_0_aclk, pcie_0_clk_pmu, and PCIE_0_ARESETN. Probing pcie1 will request the exact same exclusive reset and clock lines as pcie0. This will cause the pcie1 probe to fail with -EBUSY due to exclusive reset acquisition. Alternatively, if the reset is handled as shared, asserting the reset during pcie1 initialization will unexpectedly reset the active pcie0 hardware, dropping any attached devices. > + reset-names = "aresetn"; > + power-domains = <&cpg>; > + device_type = "pci"; > + #address-cells = <3>; > + #size-cells = <2>; > + num-lanes = <2>; > + renesas,sysc = <&sys 1>; ^^^^ [Severity: Medium] Does the target sys node have a #sysc-cells property defined? Similar to pcie0, if the target node lacks #sysc-cells, parsing this property with of_parse_phandle_with_args() will fail at runtime. > + status = "disabled"; -- Sashiko AI review · https://sashiko.dev/#/patchset/20260708163311.222176-1-prabhakar.mahadev-lad.rj@bp.renesas.com?part=1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes 2026-07-08 16:33 ` [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes Prabhakar 2026-07-08 16:49 ` sashiko-bot @ 2026-07-09 15:02 ` Geert Uytterhoeven 1 sibling, 0 replies; 6+ messages in thread From: Geert Uytterhoeven @ 2026-07-09 15:02 UTC (permalink / raw) To: Prabhakar Cc: Magnus Damm, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das, Fabrizio Castro, Lad Prabhakar On Wed, 8 Jul 2026 at 18:33, Prabhakar <prabhakar.csengg@gmail.com> wrote: > From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > > Add PCIe nodes to Renesas RZ/V2H(P) ("R9A09G057") SoC DTSI. > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > --- > v1->v2: > - Formatted the ranges property so that the new line entries are aligned. > - Corrected the flag values for dma-ranges property for pcie0/1 nodes. Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> i.e. will queue in renesas-devel for v7.3. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable PCIe 2026-07-08 16:33 [PATCH v2 0/2] Add PCIe support to RZ/V2H SoC and EVK Prabhakar 2026-07-08 16:33 ` [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes Prabhakar @ 2026-07-08 16:33 ` Prabhakar 2026-07-09 15:02 ` Geert Uytterhoeven 1 sibling, 1 reply; 6+ messages in thread From: Prabhakar @ 2026-07-08 16:33 UTC (permalink / raw) To: Geert Uytterhoeven, Magnus Damm, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das, Fabrizio Castro, Lad Prabhakar From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Enable the PCIE1 slot which is connected to PCIe0 channel. Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> --- v1->v2: - Renamed the node name from pcie to pcie0. --- .../dts/renesas/r9a09g057h44-rzv2h-evk.dts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts b/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts index 3c1ddacc0944..637fc92dcc26 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts +++ b/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts @@ -384,6 +384,18 @@ &ostm7 { status = "okay"; }; +&pcie0 { + pinctrl-0 = <&pcie0_pins>; + pinctrl-names = "default"; + num-lanes = <4>; + status = "okay"; +}; + +&pcie_port0 { + clocks = <&versa3 5>; + clock-names = "ref"; +}; + &pinctrl { eth0_pins: eth0 { pins = "ET0_TXC_TXCLK"; @@ -430,6 +442,12 @@ i2c8_pins: i2c8 { <RZV2H_PORT_PINMUX(0, 7, 1)>; /* I2C8_SCL */ }; + pcie0_pins: pcie0 { + pins = "PCIE0_RSTOUTB"; + slew-rate = <0>; + renesas,output-impedance = <2>; + }; + scif_pins: scif { pins = "SCIF_TXD", "SCIF_RXD"; renesas,output-impedance = <1>; -- 2.54.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable PCIe 2026-07-08 16:33 ` [PATCH v2 2/2] arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable PCIe Prabhakar @ 2026-07-09 15:02 ` Geert Uytterhoeven 0 siblings, 0 replies; 6+ messages in thread From: Geert Uytterhoeven @ 2026-07-09 15:02 UTC (permalink / raw) To: Prabhakar Cc: Magnus Damm, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das, Fabrizio Castro, Lad Prabhakar On Wed, 8 Jul 2026 at 18:33, Prabhakar <prabhakar.csengg@gmail.com> wrote: > From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > > Enable the PCIE1 slot which is connected to PCIe0 channel. > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > --- > v1->v2: > - Renamed the node name from pcie to pcie0. Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> i.e. will queue in renesas-devel for v7.3. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-07-09 15:02 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-07-08 16:33 [PATCH v2 0/2] Add PCIe support to RZ/V2H SoC and EVK Prabhakar 2026-07-08 16:33 ` [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes Prabhakar 2026-07-08 16:49 ` sashiko-bot 2026-07-09 15:02 ` Geert Uytterhoeven 2026-07-08 16:33 ` [PATCH v2 2/2] arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable PCIe Prabhakar 2026-07-09 15:02 ` Geert Uytterhoeven
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.