* [PATCH v4 0/2] Add xSPI support for RZ/T2H and RZ/N2H SoCs
@ 2026-05-15 11:52 Prabhakar
2026-05-15 11:52 ` [PATCH v4 1/2] dt-bindings: memory: renesas,rzg3e-xspi: Add RZ/T2H and RZ/N2H support Prabhakar
2026-05-15 11:52 ` [PATCH v4 2/2] memory: renesas-rpc-if: Fix duplicate device name on multi-instance platforms Prabhakar
0 siblings, 2 replies; 4+ messages in thread
From: Prabhakar @ 2026-05-15 11:52 UTC (permalink / raw)
To: Krzysztof Kozlowski, Rob Herring, Conor Dooley,
Geert Uytterhoeven, Magnus Damm, Biju Das
Cc: linux-kernel, devicetree, linux-renesas-soc, Fabrizio Castro,
Lad Prabhakar
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Hi All,
Add support for the xSPI (Extended SPI) Interface on Renesas RZ/T2H and
RZ/N2H SoCs. The xSPI IP on these SoCs is identical to that found on the
RZ/G3E SoC.
v3->v4:
- Added restriction for resets and reset-names properties to have
maxItems: 1 for RZ/T2H and RZ/N2H SoCs, since they only have a
single reset.
v2->v3:
- Used RZ/G3E comptiable as a fallback compatible for
RZ/T2H and RZ/N2H SoCs since the xSPI IP is identical.
- Updated commit message to reflect that the xSPI IP is
identical between RZ/G3E, RZ/T2H, and RZ/N2H SoCs.
- Dropped RB tag from Rob for patch#1.
- Dropped driver changes for RZ/T2H and RZ/N2H SoCs since
the xSPI IP is compatible to RZ/G3E.
v1->v2:
- Add RB tag from Rob for the dt-bindings patch.
- Add RB tag from Wolfram for the rpc-if duplicate device name patch.
- Added xspi_info_r9a09g077 for RZ/T2H with type XSPI_RZ_T2H instead
of reusing xspi_info_r9a09g047 with type XSPI_RZ_G3E, to allow for
better differentiation in the future if needed.
v2: https://lore.kernel.org/all/20260327174245.3947213-1-prabhakar.mahadev-lad.rj@bp.renesas.com/
v1: https://lore.kernel.org/all/20260310212927.3372410-1-prabhakar.mahadev-lad.rj@bp.renesas.com/
Note, patches are rebased on top of next-20260508.
Cheers,
Prabhakar
Lad Prabhakar (2):
dt-bindings: memory: renesas,rzg3e-xspi: Add RZ/T2H and RZ/N2H support
memory: renesas-rpc-if: Fix duplicate device name on multi-instance
platforms
.../renesas,rzg3e-xspi.yaml | 60 +++++++++++++++----
drivers/memory/renesas-rpc-if.c | 2 +-
2 files changed, 51 insertions(+), 11 deletions(-)
--
2.54.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v4 1/2] dt-bindings: memory: renesas,rzg3e-xspi: Add RZ/T2H and RZ/N2H support
2026-05-15 11:52 [PATCH v4 0/2] Add xSPI support for RZ/T2H and RZ/N2H SoCs Prabhakar
@ 2026-05-15 11:52 ` Prabhakar
2026-05-15 12:10 ` sashiko-bot
2026-05-15 11:52 ` [PATCH v4 2/2] memory: renesas-rpc-if: Fix duplicate device name on multi-instance platforms Prabhakar
1 sibling, 1 reply; 4+ messages in thread
From: Prabhakar @ 2026-05-15 11:52 UTC (permalink / raw)
To: Krzysztof Kozlowski, Rob Herring, Conor Dooley,
Geert Uytterhoeven, Magnus Damm, Biju Das
Cc: linux-kernel, devicetree, linux-renesas-soc, Fabrizio Castro,
Lad Prabhakar
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Document xSPI controller found on the Renesas RZ/T2H and RZ/N2H SoCs.
The xSPI IP on these SoCs is identical to that found on the RZ/G3E SoC.
The RZ/G3E HW manual (Rev.1.15) references bridge channel 1 and its
bits, however the hardware actually supports only a single bridge
channel (channel 0), matching the RZ/T2H design. The references to
channel 1 and its configuration bits will be corrected in a future
revision of the HW manual.
Update clock/reset constraints to handle the SoC differences.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v3->v4:
- Added restriction for resets and reset-names properties to have
maxItems: 1 for RZ/T2H and RZ/N2H SoCs, since they only have a
single reset.
v2->v3:
- Used RZ/G3E comptiable as a fallback compatible for
RZ/T2H and RZ/N2H SoCs since the xSPI IP is identical.
- Updated commit message to reflect that the xSPI IP is
identical between RZ/G3E, RZ/T2H, and RZ/N2H SoCs.
- Dropped RB tag from Rob due to above changes.
v1->v2:
- Add RB tag from Rob for the dt-bindings patch.
---
.../renesas,rzg3e-xspi.yaml | 60 +++++++++++++++----
1 file changed, 50 insertions(+), 10 deletions(-)
diff --git a/Documentation/devicetree/bindings/memory-controllers/renesas,rzg3e-xspi.yaml b/Documentation/devicetree/bindings/memory-controllers/renesas,rzg3e-xspi.yaml
index 7a84f5bb7284..cdeca4c795f3 100644
--- a/Documentation/devicetree/bindings/memory-controllers/renesas,rzg3e-xspi.yaml
+++ b/Documentation/devicetree/bindings/memory-controllers/renesas,rzg3e-xspi.yaml
@@ -30,6 +30,8 @@ properties:
- enum:
- renesas,r9a09g056-xspi # RZ/V2N
- renesas,r9a09g057-xspi # RZ/V2H(P)
+ - renesas,r9a09g077-xspi # RZ/T2H
+ - renesas,r9a09g087-xspi # RZ/N2H
- const: renesas,r9a09g047-xspi
reg:
@@ -53,28 +55,38 @@ properties:
- const: err_pulse
clocks:
- items:
- - description: AHB clock
- - description: AXI clock
- - description: SPI clock
- - description: Double speed SPI clock
+ oneOf:
+ - items:
+ - description: AHB clock
+ - description: AXI clock
+ - description: SPI clock
+ - description: Double speed SPI clock
+ - items:
+ - description: AHB clock
+ - description: SPI clock
clock-names:
- items:
- - const: ahb
- - const: axi
- - const: spi
- - const: spix2
+ oneOf:
+ - items:
+ - const: ahb
+ - const: axi
+ - const: spi
+ - const: spix2
+ - items:
+ - const: ahb
+ - const: spi
power-domains:
maxItems: 1
resets:
+ minItems: 1
items:
- description: Hardware reset
- description: AXI reset
reset-names:
+ minItems: 1
items:
- const: hresetn
- const: aresetn
@@ -109,6 +121,34 @@ required:
- '#address-cells'
- '#size-cells'
+if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - renesas,r9a09g077-xspi
+ - renesas,r9a09g087-xspi
+then:
+ properties:
+ clocks:
+ maxItems: 2
+ clock-names:
+ maxItems: 2
+ resets:
+ maxItems: 1
+ reset-names:
+ maxItems: 1
+else:
+ properties:
+ clocks:
+ minItems: 4
+ clock-names:
+ minItems: 4
+ resets:
+ minItems: 2
+ reset-names:
+ minItems: 2
+
unevaluatedProperties: false
examples:
--
2.54.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v4 2/2] memory: renesas-rpc-if: Fix duplicate device name on multi-instance platforms
2026-05-15 11:52 [PATCH v4 0/2] Add xSPI support for RZ/T2H and RZ/N2H SoCs Prabhakar
2026-05-15 11:52 ` [PATCH v4 1/2] dt-bindings: memory: renesas,rzg3e-xspi: Add RZ/T2H and RZ/N2H support Prabhakar
@ 2026-05-15 11:52 ` Prabhakar
1 sibling, 0 replies; 4+ messages in thread
From: Prabhakar @ 2026-05-15 11:52 UTC (permalink / raw)
To: Krzysztof Kozlowski, Rob Herring, Conor Dooley,
Geert Uytterhoeven, Magnus Damm, Biju Das
Cc: linux-kernel, devicetree, linux-renesas-soc, Fabrizio Castro,
Lad Prabhakar, Wolfram Sang
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
On platforms with multiple xSPI instances, the driver fails to probe
additional instances due to duplicate sysfs entries:
[ 86.878242] sysfs: cannot create duplicate filename '/bus/platform/devices/rpc-if-spi'
This occurs because platform_device_alloc() uses pdev->id for the device
ID, which may be PLATFORM_DEVID_NONE (-1) for multiple instances, causing
all instances to attempt registration with the same name.
Fix this by using PLATFORM_DEVID_AUTO instead, which automatically assigns
unique IDs to each device instance, allowing multiple xSPI controllers to
coexist without naming conflicts.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
v2->v4:
- No change
v1->v2:
- Add RB tag from Wolfram.
---
drivers/memory/renesas-rpc-if.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/memory/renesas-rpc-if.c b/drivers/memory/renesas-rpc-if.c
index 0fb568456164..3755956ae906 100644
--- a/drivers/memory/renesas-rpc-if.c
+++ b/drivers/memory/renesas-rpc-if.c
@@ -1034,7 +1034,7 @@ static int rpcif_probe(struct platform_device *pdev)
return dev_err_probe(dev, PTR_ERR(rpc->spi_clk),
"cannot get enabled spi clk\n");
- vdev = platform_device_alloc(name, pdev->id);
+ vdev = platform_device_alloc(name, PLATFORM_DEVID_AUTO);
if (!vdev)
return -ENOMEM;
vdev->dev.parent = dev;
--
2.54.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v4 1/2] dt-bindings: memory: renesas,rzg3e-xspi: Add RZ/T2H and RZ/N2H support
2026-05-15 11:52 ` [PATCH v4 1/2] dt-bindings: memory: renesas,rzg3e-xspi: Add RZ/T2H and RZ/N2H support Prabhakar
@ 2026-05-15 12:10 ` sashiko-bot
0 siblings, 0 replies; 4+ messages in thread
From: sashiko-bot @ 2026-05-15 12:10 UTC (permalink / raw)
To: Prabhakar; +Cc: robh, krzk+dt, devicetree, conor+dt, wsa+renesas
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] The new SoCs claim fallback compatibility with `renesas,r9a09g047-xspi` but provide strictly fewer hardware resources than the fallback schema previously mandated.
- [Medium] The `else` block enforces a known-incorrect `minItems: 4` constraint on the base `renesas,r9a09g047-xspi` compatible, contradicting the hardware reality described in the commit message.
--
commit 53ce1d0b1afc85c1adf4f55123b53c081bc04767
Author: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
dt-bindings: memory: renesas,rzg3e-xspi: Add RZ/T2H and RZ/N2H support
Document the xSPI controller found on the Renesas RZ/T2H and RZ/N2H SoCs.
The patch updates clock and reset constraints to handle SoC differences,
noting that the RZ/G3E hardware actually only supports a single bridge
channel despite manual references.
> diff --git a/Documentation/devicetree/bindings/memory-controllers/renesas,rzg3e-xspi.yaml b/Documentation/devicetree/bindings/memory-controllers/renesas,rzg3e-xspi.yaml
> index 7a84f5bb7284e..cdeca4c795f3a 100644
> --- a/Documentation/devicetree/bindings/memory-controllers/renesas,rzg3e-xspi.yaml
> +++ b/Documentation/devicetree/bindings/memory-controllers/renesas,rzg3e-xspi.yaml
> @@ -30,6 +30,8 @@ properties:
> - enum:
> - renesas,r9a09g056-xspi # RZ/V2N
> - renesas,r9a09g057-xspi # RZ/V2H(P)
> + - renesas,r9a09g077-xspi # RZ/T2H
> + - renesas,r9a09g087-xspi # RZ/N2H
> - const: renesas,r9a09g047-xspi
Could this cause a regression since the new SoCs claim fallback
compatibility with renesas,r9a09g047-xspi, but provide strictly fewer
hardware resources than the fallback schema previously mandated?
A fallback compatible string asserts that an unmodified legacy OS driver for
the fallback SoC can successfully drive the new hardware. Prior to this patch,
the schema for renesas,r9a09g047-xspi mandated 4 clocks and 2 resets. The new
if/then block restricts the new SoCs to only 2 clocks and 1 reset.
While the current Linux driver handles this gracefully by using
devm_clk_get_optional_enabled(), Device Tree bindings are strictly
OS-agnostic. An older OS driver written strictly to the fallback's original
schema might attempt to acquire the previously mandatory axi/spix2 clocks and
aresetn reset, resulting in a probe failure.
Could the fallback's constraints be relaxed instead, or should SoCs providing
fewer resources avoid claiming fallback compatibility with a more
resource-demanding SoC?
[ ... ]
> @@ -109,6 +121,34 @@ required:
> - '#address-cells'
> - '#size-cells'
>
> +if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - renesas,r9a09g077-xspi
> + - renesas,r9a09g087-xspi
> +then:
> + properties:
> + clocks:
> + maxItems: 2
> + clock-names:
> + maxItems: 2
> + resets:
> + maxItems: 1
> + reset-names:
> + maxItems: 1
> +else:
> + properties:
> + clocks:
> + minItems: 4
> + clock-names:
> + minItems: 4
> + resets:
> + minItems: 2
> + reset-names:
> + minItems: 2
Does this else block introduce a regression by enforcing a known-incorrect
minItems constraint on the base renesas,r9a09g047-xspi compatible?
The commit message explicitly states that the RZ/G3E hardware actually only
supports a single bridge channel, matching the RZ/T2H design. However, the
patch adds an else block that strictly enforces minItems: 4 for clocks and
minItems: 2 for resets on all variants not listed in the if block. This
cements a known-incorrect hardware description into the schema.
When the RZ/G3E devicetrees are eventually corrected to reflect the 2-clock
hardware reality as promised, will they immediately fail schema validation?
Would relaxing the else block correctly allow RZ/G3E to use either the legacy
4-item or the correct 2-item configurations?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260515115202.1515577-1-prabhakar.mahadev-lad.rj@bp.renesas.com?part=1
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-05-15 12:10 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-15 11:52 [PATCH v4 0/2] Add xSPI support for RZ/T2H and RZ/N2H SoCs Prabhakar
2026-05-15 11:52 ` [PATCH v4 1/2] dt-bindings: memory: renesas,rzg3e-xspi: Add RZ/T2H and RZ/N2H support Prabhakar
2026-05-15 12:10 ` sashiko-bot
2026-05-15 11:52 ` [PATCH v4 2/2] memory: renesas-rpc-if: Fix duplicate device name on multi-instance platforms Prabhakar
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox