From 0f63ba15dde8748ed3818fa6553c81b5296318f1 Mon Sep 17 00:00:00 2001 From: Wolfram Sang Date: Thu, 2 Apr 2026 13:27:05 +0200 Subject: [PATCH 01/56] dt-bindings: soc: renesas: Document MFIS IP core Document the Renesas Multifunctional Interface (MFIS) as found on the Renesas R-Car X5H (r8a78000) SoC. MFIS includes features like Mailbox/HW Spinlock/Product Register/Error Injection/Error Detection and the likes. Family-compatible values are not introduced here because MFIS is usually very different per SoC. Signed-off-by: Wolfram Sang Reviewed-by: Krzysztof Kozlowski Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260402112709.13002-2-wsa+renesas@sang-engineering.com Signed-off-by: Geert Uytterhoeven --- .../soc/renesas/renesas,r8a78000-mfis.yaml | 187 ++++++++++++++++++ .../dt-bindings/soc/renesas,r8a78000-mfis.h | 28 +++ 2 files changed, 215 insertions(+) create mode 100644 Documentation/devicetree/bindings/soc/renesas/renesas,r8a78000-mfis.yaml create mode 100644 include/dt-bindings/soc/renesas,r8a78000-mfis.h diff --git a/Documentation/devicetree/bindings/soc/renesas/renesas,r8a78000-mfis.yaml b/Documentation/devicetree/bindings/soc/renesas/renesas,r8a78000-mfis.yaml new file mode 100644 index 000000000000..eef8c0a59e9c --- /dev/null +++ b/Documentation/devicetree/bindings/soc/renesas/renesas,r8a78000-mfis.yaml @@ -0,0 +1,187 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/soc/renesas/renesas,r8a78000-mfis.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Renesas MFIS (Multifunctional Interface) controller + +maintainers: + - Wolfram Sang + +description: + The Renesas Multifunctional Interface (MFIS) provides various functionality + like mailboxes, hardware spinlocks, product identification, error injection, + error detection and such. Parts of it can be used for communication between + different CPU cores. Those cores can be in various domains like AP, RT, or + SCP. Often multiple domain-specific MFIS instances exist in one SoC. + +properties: + compatible: + enum: + - renesas,r8a78000-mfis # R-Car X5H (AP<->AP, with PRR) + - renesas,r8a78000-mfis-scp # R-Car X5H (AP<->SCP, without PRR) + + reg: + maxItems: 2 + + reg-names: + items: + - const: common + - const: mboxes + + interrupts: + minItems: 32 + maxItems: 128 + description: + The interrupts raised by the remote doorbells. + + interrupt-names: + minItems: 32 + maxItems: 128 + description: + An interrupt name is constructed with the prefix 'ch'. Then, the + channel number as specified in the documentation of the SoC. Finally, + the letter 'i' if the interrupt is raised by the IICR register. Or 'e' + if it is raised by the EICR register. + + "#hwlock-cells": + const: 1 + + "#mbox-cells": + const: 2 + description: + The first cell is the channel number as specified in the documentation + of the SoC. The second cell may specify flags as described in the file + . + +allOf: + - if: + properties: + compatible: + contains: + const: renesas,r8a78000-mfis + then: + properties: + interrupts: + minItems: 128 + interrupt-names: + minItems: 128 + items: + pattern: "^ch[0-9]+[ie]$" + + - if: + properties: + compatible: + contains: + const: renesas,r8a78000-mfis-scp + then: + properties: + interrupts: + maxItems: 32 + interrupt-names: + maxItems: 32 + items: + pattern: "^ch[0-9]+i$" + +required: + - compatible + - reg + - reg-names + - interrupts + - interrupt-names + - "#hwlock-cells" + - "#mbox-cells" + +additionalProperties: false + +examples: + - | + #include + system-controller@189e0000 { + compatible = "renesas,r8a78000-mfis"; + reg = <0x189e0000 0x1000>, <0x18800000 0x40000>; + reg-names = "common", "mboxes"; + interrupts = , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , ; + interrupt-names = "ch0i", "ch0e", "ch1i", "ch1e", "ch2i", "ch2e", "ch3i", "ch3e", + "ch4i", "ch4e", "ch5i", "ch5e", "ch6i", "ch6e", "ch7i", "ch7e", + "ch8i", "ch8e", "ch9i", "ch9e", "ch10i", "ch10e", "ch11i", "ch11e", + "ch12i", "ch12e", "ch13i", "ch13e", "ch14i", "ch14e", "ch15i", "ch15e", + "ch16i", "ch16e", "ch17i", "ch17e", "ch18i", "ch18e", "ch19i", "ch19e", + "ch20i", "ch20e", "ch21i", "ch21e", "ch22i", "ch22e", "ch23i", "ch23e", + "ch24i", "ch24e", "ch25i", "ch25e", "ch26i", "ch26e", "ch27i", "ch27e", + "ch28i", "ch28e", "ch29i", "ch29e", "ch30i", "ch30e", "ch31i", "ch31e", + "ch32i", "ch32e", "ch33i", "ch33e", "ch34i", "ch34e", "ch35i", "ch35e", + "ch36i", "ch36e", "ch37i", "ch37e", "ch38i", "ch38e", "ch39i", "ch39e", + "ch40i", "ch40e", "ch41i", "ch41e", "ch42i", "ch42e", "ch43i", "ch43e", + "ch44i", "ch44e", "ch45i", "ch45e", "ch46i", "ch46e", "ch47i", "ch47e", + "ch48i", "ch48e", "ch49i", "ch49e", "ch50i", "ch50e", "ch51i", "ch51e", + "ch52i", "ch52e", "ch53i", "ch53e", "ch54i", "ch54e", "ch55i", "ch55e", + "ch56i", "ch56e", "ch57i", "ch57e", "ch58i", "ch58e", "ch59i", "ch59e", + "ch60i", "ch60e", "ch61i", "ch61e", "ch62i", "ch62e", "ch63i", "ch63e"; + #hwlock-cells = <1>; + #mbox-cells = <2>; + }; diff --git a/include/dt-bindings/soc/renesas,r8a78000-mfis.h b/include/dt-bindings/soc/renesas,r8a78000-mfis.h new file mode 100644 index 000000000000..147a8aefc643 --- /dev/null +++ b/include/dt-bindings/soc/renesas,r8a78000-mfis.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ +#ifndef _DT_BINDINGS_SOC_RENESAS_R8A78000_MFIS_H +#define _DT_BINDINGS_SOC_RENESAS_R8A78000_MFIS_H + +/* + * Constants for the second mbox-cell of the Renesas MFIS IP core. To be treated + * as bit flags which can be ORed. + */ + +/* + * MFIS HW design before r8a78001 requires a channel to be marked as either + * TX or RX. + */ +#define MFIS_CHANNEL_TX (0 << 0) +#define MFIS_CHANNEL_RX (1 << 0) + +/* + * MFIS variants before r8a78001 work with pairs of IICR and EICR registers. + * Usually, it is specified in the datasheets which of the two a specific core + * should use. Then, it does not need extra description in DT. For plain MFIS + * of r8a78000, this is selectable, though. According to the system design and + * the firmware in use, these channels need to be marked. This is not needed + * with other versions of the MFIS, not even with MFIS-SCP of r8a78000. + */ +#define MFIS_CHANNEL_IICR (0 << 1) +#define MFIS_CHANNEL_EICR (1 << 1) + +#endif /* _DT_BINDINGS_SOC_RENESAS_R8A78000_MFIS_H */ From 1e25ddddfa1e39300fa5e339275e0a469aa41899 Mon Sep 17 00:00:00 2001 From: Tommaso Merciai Date: Wed, 8 Apr 2026 12:37:03 +0200 Subject: [PATCH 02/56] arm64: dts: renesas: r9a09g047: Add fcpvd{0,1} nodes Add fcpvd{0,1} nodes to the RZ/G3E SoC DTSI. Reviewed-by: Geert Uytterhoeven Signed-off-by: Tommaso Merciai Reviewed-by: Laurent Pinchart Link: https://patch.msgid.link/1ba6a98ace4ad9525d054cbaa308d3aeeecfa22a.1775636898.git.tommaso.merciai.xr@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi index 4267b10937f3..92a3491fb7ea 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi @@ -1585,6 +1585,30 @@ csi2cru: endpoint@0 { }; }; }; + + fcpvd0: fcp@16470000 { + compatible = "renesas,r9a09g047-fcpvd", + "renesas,fcpv"; + reg = <0 0x16470000 0 0x10000>; + clocks = <&cpg CPG_MOD 0xed>, + <&cpg CPG_MOD 0xee>, + <&cpg CPG_MOD 0xef>; + clock-names = "aclk", "pclk", "vclk"; + resets = <&cpg 0xdc>; + power-domains = <&cpg>; + }; + + fcpvd1: fcp@164a0000 { + compatible = "renesas,r9a09g047-fcpvd", + "renesas,fcpv"; + reg = <0 0x164a0000 0 0x10000>; + clocks = <&cpg CPG_MOD 0x1a8>, + <&cpg CPG_MOD 0x1a9>, + <&cpg CPG_MOD 0x1aa>; + clock-names = "aclk", "pclk", "vclk"; + resets = <&cpg 0x11e>; + power-domains = <&cpg>; + }; }; stmmac_axi_setup: stmmac-axi-config { From b6f8dd27e9c5721d84e8e6235065ef094fb3bdd3 Mon Sep 17 00:00:00 2001 From: Tommaso Merciai Date: Wed, 8 Apr 2026 12:37:04 +0200 Subject: [PATCH 03/56] arm64: dts: renesas: r9a09g047: Add vspd{0,1} nodes Add vspd{0,1} nodes to the RZ/G3E SoC DTSI. Reviewed-by: Geert Uytterhoeven Signed-off-by: Tommaso Merciai Reviewed-by: Laurent Pinchart Link: https://patch.msgid.link/46547aaff3cdb8ea6e17cf1fdec699d83a1cd71b.1775636898.git.tommaso.merciai.xr@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi index 92a3491fb7ea..b48da8534a3d 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi @@ -1609,6 +1609,34 @@ fcpvd1: fcp@164a0000 { resets = <&cpg 0x11e>; power-domains = <&cpg>; }; + + vspd0: vsp@16480000 { + compatible = "renesas,r9a09g047-vsp2", + "renesas,r9a07g044-vsp2"; + reg = <0 0x16480000 0 0x10000>; + interrupts = ; + clocks = <&cpg CPG_MOD 0xed>, + <&cpg CPG_MOD 0xee>, + <&cpg CPG_MOD 0xef>; + clock-names = "aclk", "pclk", "vclk"; + resets = <&cpg 0xdc>; + power-domains = <&cpg>; + renesas,fcp = <&fcpvd0>; + }; + + vspd1: vsp@164b0000 { + compatible = "renesas,r9a09g047-vsp2", + "renesas,r9a07g044-vsp2"; + reg = <0 0x164b0000 0 0x10000>; + interrupts = ; + clocks = <&cpg CPG_MOD 0x1a8>, + <&cpg CPG_MOD 0x1a9>, + <&cpg CPG_MOD 0x1aa>; + clock-names = "aclk", "pclk", "vclk"; + resets = <&cpg 0x11e>; + power-domains = <&cpg>; + renesas,fcp = <&fcpvd1>; + }; }; stmmac_axi_setup: stmmac-axi-config { From 5c63f3e78e9483bcd6109f744073f51b55251ce3 Mon Sep 17 00:00:00 2001 From: Cosmin Tanislav Date: Fri, 10 Apr 2026 19:35:28 +0300 Subject: [PATCH 04/56] arm64: dts: renesas: r9a07g0{43,44,54}: Remove TCIU8 interrupt from MTU3 The TCIU8 interrupt used to be documented in earlier revisions of the user manuals, but has since been removed. The corresponding entry is now marked as reserved in the interrupt mapping tables of all supported SoCs. - Page 486, Table 8.2 Interrupt mapping (7/13) in the Renesas RZ/G2UL Rev.1.40 User Manual - Page 363, Table 8.2 Interrupt Mapping (6/13) in the Renesas RZ/Five Rev.1.30 User Manual - Page 528, Table 8.2 Interrupt mapping (7/13) in the Renesas RZ/G2L and RZ/G2LC Rev.1.50 User Manual - Page 540, Table 8.2 Interrupt mapping (7/13) in the Renesas RZ/V2L Rev.1.50 User Manual Remove the TCIU8 interrupt. This does not cause any breakage as the driver does not make use of the interrupts. Signed-off-by: Cosmin Tanislav Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260410163530.383818-9-cosmin-gabriel.tanislav.xa@renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a07g043.dtsi | 5 ++--- arch/arm64/boot/dts/renesas/r9a07g044.dtsi | 5 ++--- arch/arm64/boot/dts/renesas/r9a07g054.dtsi | 5 ++--- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/arch/arm64/boot/dts/renesas/r9a07g043.dtsi b/arch/arm64/boot/dts/renesas/r9a07g043.dtsi index ded4f1f11d60..38aebeeea464 100644 --- a/arch/arm64/boot/dts/renesas/r9a07g043.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a07g043.dtsi @@ -120,8 +120,7 @@ mtu3: timer@10001200 { , , , - , - ; + ; interrupt-names = "tgia0", "tgib0", "tgic0", "tgid0", "tciv0", "tgie0", "tgif0", "tgia1", "tgib1", "tciv1", "tciu1", @@ -136,7 +135,7 @@ mtu3: timer@10001200 { "tgia7", "tgib7", "tgic7", "tgid7", "tciv7", "tgia8", "tgib8", "tgic8", "tgid8", - "tciv8", "tciu8"; + "tciv8"; clocks = <&cpg CPG_MOD R9A07G043_MTU_X_MCK_MTU3>; power-domains = <&cpg>; resets = <&cpg R9A07G043_MTU_X_PRESET_MTU3>; diff --git a/arch/arm64/boot/dts/renesas/r9a07g044.dtsi b/arch/arm64/boot/dts/renesas/r9a07g044.dtsi index cb0c9550aa03..873b52b168bc 100644 --- a/arch/arm64/boot/dts/renesas/r9a07g044.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a07g044.dtsi @@ -220,8 +220,7 @@ mtu3: timer@10001200 { , , , - , - ; + ; interrupt-names = "tgia0", "tgib0", "tgic0", "tgid0", "tciv0", "tgie0", "tgif0", "tgia1", "tgib1", "tciv1", "tciu1", @@ -236,7 +235,7 @@ mtu3: timer@10001200 { "tgia7", "tgib7", "tgic7", "tgid7", "tciv7", "tgia8", "tgib8", "tgic8", "tgid8", - "tciv8", "tciu8"; + "tciv8"; clocks = <&cpg CPG_MOD R9A07G044_MTU_X_MCK_MTU3>; power-domains = <&cpg>; resets = <&cpg R9A07G044_MTU_X_PRESET_MTU3>; diff --git a/arch/arm64/boot/dts/renesas/r9a07g054.dtsi b/arch/arm64/boot/dts/renesas/r9a07g054.dtsi index 7a3e5b6a685f..587fab0ceb3f 100644 --- a/arch/arm64/boot/dts/renesas/r9a07g054.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a07g054.dtsi @@ -220,8 +220,7 @@ mtu3: timer@10001200 { , , , - , - ; + ; interrupt-names = "tgia0", "tgib0", "tgic0", "tgid0", "tciv0", "tgie0", "tgif0", "tgia1", "tgib1", "tciv1", "tciu1", @@ -236,7 +235,7 @@ mtu3: timer@10001200 { "tgia7", "tgib7", "tgic7", "tgid7", "tciv7", "tgia8", "tgib8", "tgic8", "tgid8", - "tciv8", "tciu8"; + "tciv8"; clocks = <&cpg CPG_MOD R9A07G054_MTU_X_MCK_MTU3>; power-domains = <&cpg>; resets = <&cpg R9A07G054_MTU_X_PRESET_MTU3>; From f7abc1cf249fce5e9a7e1a7263c03cae55ffba39 Mon Sep 17 00:00:00 2001 From: Cosmin Tanislav Date: Fri, 10 Apr 2026 19:35:29 +0300 Subject: [PATCH 05/56] arm64: dts: renesas: r9a09g077: Add MTU3 support The Renesas RZ/T2H (R9A09G077) SoC has an MTU3 block. Add support for it. Signed-off-by: Cosmin Tanislav Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260410163530.383818-10-cosmin-gabriel.tanislav.xa@renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a09g077.dtsi | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g077.dtsi b/arch/arm64/boot/dts/renesas/r9a09g077.dtsi index 3761551c9647..fe5d206d4def 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g077.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g077.dtsi @@ -1116,6 +1116,74 @@ gic: interrupt-controller@83000000 { interrupts = ; }; + mtu3: timer@90001200 { + compatible = "renesas,r9a09g077-mtu3", + "renesas,rz-mtu3"; + reg = <0 0x90001200 0 0xb00>; + interrupts = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + interrupt-names = "tgia0", "tgib0", "tgic0", "tgid0", + "tciv0", "tgie0", "tgif0", + "tgia1", "tgib1", "tciv1", "tciu1", + "tgia2", "tgib2", "tciv2", "tciu2", + "tgia3", "tgib3", "tgic3", "tgid3", + "tciv3", + "tgia4", "tgib4", "tgic4", "tgid4", + "tciv4", + "tgiu5", "tgiv5", "tgiw5", + "tgia6", "tgib6", "tgic6", "tgid6", + "tciv6", + "tgia7", "tgib7", "tgic7", "tgid7", + "tciv7", + "tgia8", "tgib8", "tgic8", "tgid8", + "tciv8"; + clocks = <&cpg CPG_MOD 200>; + power-domains = <&cpg>; + #pwm-cells = <3>; + status = "disabled"; + }; + adc0: adc@90014000 { compatible = "renesas,r9a09g077-adc"; reg = <0 0x90014000 0 0x400>; From 893227dea79e57f43588080ca3f95abcc1d9c703 Mon Sep 17 00:00:00 2001 From: Cosmin Tanislav Date: Fri, 10 Apr 2026 19:35:30 +0300 Subject: [PATCH 06/56] arm64: dts: renesas: r9a09g087: Add MTU3 support The Renesas RZ/N2H (R9A09G087) SoC has an MTU3 block. Add support for it. Signed-off-by: Cosmin Tanislav Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260410163530.383818-11-cosmin-gabriel.tanislav.xa@renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a09g087.dtsi | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g087.dtsi b/arch/arm64/boot/dts/renesas/r9a09g087.dtsi index f697e9698ed3..c64b532f3d23 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g087.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g087.dtsi @@ -1119,6 +1119,74 @@ gic: interrupt-controller@83000000 { interrupts = ; }; + mtu3: timer@90001200 { + compatible = "renesas,r9a09g087-mtu3", + "renesas,rz-mtu3"; + reg = <0 0x90001200 0 0xb00>; + interrupts = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + interrupt-names = "tgia0", "tgib0", "tgic0", "tgid0", + "tciv0", "tgie0", "tgif0", + "tgia1", "tgib1", "tciv1", "tciu1", + "tgia2", "tgib2", "tciv2", "tciu2", + "tgia3", "tgib3", "tgic3", "tgid3", + "tciv3", + "tgia4", "tgib4", "tgic4", "tgid4", + "tciv4", + "tgiu5", "tgiv5", "tgiw5", + "tgia6", "tgib6", "tgic6", "tgid6", + "tciv6", + "tgia7", "tgib7", "tgic7", "tgid7", + "tciv7", + "tgia8", "tgib8", "tgic8", "tgid8", + "tciv8"; + clocks = <&cpg CPG_MOD 200>; + power-domains = <&cpg>; + #pwm-cells = <3>; + status = "disabled"; + }; + adc0: adc@90014000 { compatible = "renesas,r9a09g087-adc", "renesas,r9a09g077-adc"; reg = <0 0x90014000 0 0x400>; From 85759e0e74751c1feaf245532856eb7565a00a02 Mon Sep 17 00:00:00 2001 From: Lad Prabhakar Date: Mon, 20 Apr 2026 14:22:11 +0100 Subject: [PATCH 07/56] arm64: dts: renesas: rz-smarc-du-adv7513: Simplify DU port configuration The SoC dtsi already defines the du node with its ports hierarchy, including the du_out_rgb endpoint node under port@0. There is no need to redefine the entire ports/port@0 structure in the board-level dtsi. Signed-off-by: Lad Prabhakar Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260420132211.1350656-1-prabhakar.mahadev-lad.rj@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- .../boot/dts/renesas/rz-smarc-du-adv7513.dtsi | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/arch/arm64/boot/dts/renesas/rz-smarc-du-adv7513.dtsi b/arch/arm64/boot/dts/renesas/rz-smarc-du-adv7513.dtsi index f5412578ee65..dbe16908b260 100644 --- a/arch/arm64/boot/dts/renesas/rz-smarc-du-adv7513.dtsi +++ b/arch/arm64/boot/dts/renesas/rz-smarc-du-adv7513.dtsi @@ -24,19 +24,10 @@ &du { pinctrl-names = "default"; status = "okay"; +}; - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@0 { - reg = <0>; - - du_out_rgb: endpoint { - remote-endpoint = <&adv7513_in>; - }; - }; - }; +&du_out_rgb { + remote-endpoint = <&adv7513_in>; }; &ADV7513_PARENT_I2C { From 4c443296ff17f5670ce926f47de8ec5a1f50f857 Mon Sep 17 00:00:00 2001 From: Lad Prabhakar Date: Fri, 1 May 2026 11:51:15 +0100 Subject: [PATCH 08/56] arm64: dts: renesas: r9a09g056: Add PCIe node Add PCIe node to Renesas RZ/V2N ("R9A09G056") SoC DTSI. Signed-off-by: Lad Prabhakar Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260501105116.33452-2-prabhakar.mahadev-lad.rj@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a09g056.dtsi | 69 ++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g056.dtsi b/arch/arm64/boot/dts/renesas/r9a09g056.dtsi index dc5b116679c0..d6c8c39df2a4 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g056.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g056.dtsi @@ -1044,6 +1044,75 @@ rsci9: serial@12803000 { status = "disabled"; }; + pcie: pcie@13400000 { + compatible = "renesas,r9a09g056-pcie", "renesas,r9a09g047-pcie"; + reg = <0 0x13400000 0 0x10000>; + ranges = <0x02000000 0 0x30000000 0 0x30000000 0 0x8000000>, + <0x43000000 4 0x40000000 4 0x40000000 6 0x00000000>; + dma-ranges = <0x42000000 0 0x40000000 0 0x40000000 2 0x00000000>; + bus-range = <0x0 0xff>; + interrupts = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + 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 &pcie 0 0 0 0>, /* INTA */ + <0 0 0 2 &pcie 0 0 0 1>, /* INTB */ + <0 0 0 3 &pcie 0 0 0 2>, /* INTC */ + <0 0 0 4 &pcie 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>; + renesas,sysc = <&sys>; + 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>; + }; + }; + i2c0: i2c@14400400 { compatible = "renesas,riic-r9a09g056", "renesas,riic-r9a09g057"; reg = <0 0x14400400 0 0x400>; From 62169c13d85c143174b61876ff60328b838e02b9 Mon Sep 17 00:00:00 2001 From: Lad Prabhakar Date: Fri, 1 May 2026 11:51:16 +0100 Subject: [PATCH 09/56] arm64: dts: renesas: r9a09g056n48-rzv2n-evk: Enable PCIe Enable the PCIE1 slot available on the RZ/V2N EVK. Note, the PCIE_REFCLK comes from 5L35023B versa clock generator, once the support for this clock generator is added, the fixed clock node can be removed and can be replaced with a reference to the clock generator. Signed-off-by: Lad Prabhakar Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260501105116.33452-3-prabhakar.mahadev-lad.rj@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- .../dts/renesas/r9a09g056n48-rzv2n-evk.dts | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g056n48-rzv2n-evk.dts b/arch/arm64/boot/dts/renesas/r9a09g056n48-rzv2n-evk.dts index 00e5455ea5ab..43ffde419d91 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g056n48-rzv2n-evk.dts +++ b/arch/arm64/boot/dts/renesas/r9a09g056n48-rzv2n-evk.dts @@ -63,6 +63,12 @@ memory@48000000 { reg = <0x0 0x48000000 0x1 0xf8000000>; }; + pcie_refclk: clock-pcie-ref { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <100000000>; + }; + reg_0p8v: regulator-0p8v { compatible = "regulator-fixed"; regulator-name = "fixed-0.8V"; @@ -333,6 +339,17 @@ &ostm7 { status = "okay"; }; +&pcie { + pinctrl-0 = <&pcie_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&pcie_port0 { + clocks = <&pcie_refclk>; + clock-names = "ref"; +}; + &pinctrl { eth0_pins: eth0 { pins = "ET0_TXC_TXCLK"; @@ -383,6 +400,12 @@ i2c8_pins: i2c8 { ; /* I2C8_SCL */ }; + pcie_pins: pcie { + pins = "PCIE0_RSTOUTB"; + slew-rate = <0>; + renesas,output-impedance = <2>; + }; + scif_pins: scif { pins = "SCIF_TXD", "SCIF_RXD"; renesas,output-impedance = <1>; From 5f10bbf91ea2e733ba8c5e88b1515217eb41c772 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Mon, 4 May 2026 16:37:15 +0200 Subject: [PATCH 10/56] arm64: dts: renesas: Simplify AA1024XD12 display DTO Move all differences into panel-aa104xd12.dtsi, rename OF_GRAPH links to generic lvds_panel_out and lvds_panel_in names, and parametrize the LVDS output in use using RENESAS_LVDS_OUTPUT macro. No functional change. Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260504143751.42753-1-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- .../renesas/draak-ebisu-panel-aa104xd12.dtso | 33 +--------- .../boot/dts/renesas/panel-aa104xd12.dtsi | 62 +++++++++++++------ .../dts/renesas/salvator-panel-aa104xd12.dtso | 33 +--------- 3 files changed, 46 insertions(+), 82 deletions(-) diff --git a/arch/arm64/boot/dts/renesas/draak-ebisu-panel-aa104xd12.dtso b/arch/arm64/boot/dts/renesas/draak-ebisu-panel-aa104xd12.dtso index 90767d74e21b..2ab7e947a05b 100644 --- a/arch/arm64/boot/dts/renesas/draak-ebisu-panel-aa104xd12.dtso +++ b/arch/arm64/boot/dts/renesas/draak-ebisu-panel-aa104xd12.dtso @@ -6,36 +6,5 @@ * Copyright 2021 Ideas on Board Oy */ -/dts-v1/; -/plugin/; - -&{/} { +#define RENESAS_LVDS_OUTPUT lvds1 #include "panel-aa104xd12.dtsi" -}; - -&{/panel} { - backlight = <&backlight>; - - port { - panel_in: endpoint { - remote-endpoint = <&lvds1_out>; - }; - }; -}; - -&lvds1 { - status = "okay"; - - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@1 { - reg = <1>; - - lvds1_out: endpoint { - remote-endpoint = <&panel_in>; - }; - }; - }; -}; diff --git a/arch/arm64/boot/dts/renesas/panel-aa104xd12.dtsi b/arch/arm64/boot/dts/renesas/panel-aa104xd12.dtsi index 4b1f0982b9e4..11113a13a337 100644 --- a/arch/arm64/boot/dts/renesas/panel-aa104xd12.dtsi +++ b/arch/arm64/boot/dts/renesas/panel-aa104xd12.dtsi @@ -5,26 +5,52 @@ * Copyright (C) 2014 Renesas Electronics Corp. */ -panel { - compatible = "mitsubishi,aa104xd12", "panel-lvds"; +/dts-v1/; +/plugin/; - width-mm = <210>; - height-mm = <158>; - data-mapping = "jeida-18"; +&{/} { + panel { + compatible = "mitsubishi,aa104xd12", "panel-lvds"; + backlight = <&backlight>; - panel-timing { - /* 1024x768 @65Hz */ - clock-frequency = <65000000>; - hactive = <1024>; - vactive = <768>; - hsync-len = <136>; - hfront-porch = <20>; - hback-porch = <160>; - vfront-porch = <3>; - vback-porch = <29>; - vsync-len = <6>; - }; + width-mm = <210>; + height-mm = <158>; + data-mapping = "jeida-18"; - port { + panel-timing { + /* 1024x768 @65Hz */ + clock-frequency = <65000000>; + hactive = <1024>; + vactive = <768>; + hsync-len = <136>; + hfront-porch = <20>; + hback-porch = <160>; + vfront-porch = <3>; + vback-porch = <29>; + vsync-len = <6>; + }; + + port { + lvds_panel_in: endpoint { + remote-endpoint = <&lvds_panel_out>; + }; + }; + }; +}; + +&RENESAS_LVDS_OUTPUT { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@1 { + reg = <1>; + + lvds_panel_out: endpoint { + remote-endpoint = <&lvds_panel_in>; + }; + }; }; }; diff --git a/arch/arm64/boot/dts/renesas/salvator-panel-aa104xd12.dtso b/arch/arm64/boot/dts/renesas/salvator-panel-aa104xd12.dtso index 7807c3f80409..4eb3e06ce52b 100644 --- a/arch/arm64/boot/dts/renesas/salvator-panel-aa104xd12.dtso +++ b/arch/arm64/boot/dts/renesas/salvator-panel-aa104xd12.dtso @@ -6,36 +6,5 @@ * Copyright 2021 Ideas on Board Oy */ -/dts-v1/; -/plugin/; - -&{/} { +#define RENESAS_LVDS_OUTPUT lvds0 #include "panel-aa104xd12.dtsi" -}; - -&{/panel} { - backlight = <&backlight>; - - port { - panel_in: endpoint { - remote-endpoint = <&lvds0_out>; - }; - }; -}; - -&lvds0 { - status = "okay"; - - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@1 { - reg = <1>; - - lvds0_out: endpoint { - remote-endpoint = <&panel_in>; - }; - }; - }; -}; From e8a97edd672a5114ad50740d3c3b00f908aa6f74 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Mon, 4 May 2026 16:43:25 +0200 Subject: [PATCH 11/56] dt-bindings: clock: cirrus,cs2000-cp: Document CS2500 Document backward compatibility support for the CS2500 chip, which is a drop-in replacement for the CS2000 chip. Acked-by: Conor Dooley Acked-by: Stephen Boyd Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260504144534.43745-4-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- .../devicetree/bindings/clock/cirrus,cs2000-cp.yaml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/clock/cirrus,cs2000-cp.yaml b/Documentation/devicetree/bindings/clock/cirrus,cs2000-cp.yaml index d416c374e853..ceeaa8f9fb08 100644 --- a/Documentation/devicetree/bindings/clock/cirrus,cs2000-cp.yaml +++ b/Documentation/devicetree/bindings/clock/cirrus,cs2000-cp.yaml @@ -11,14 +11,19 @@ maintainers: description: | The CS2000-CP is an extremely versatile system clocking device that - utilizes a programmable phase lock loop. + utilizes a programmable phase lock loop. CS2500 is a compatible + drop-in replacement for CS2000-CP. Link: https://www.cirrus.com/products/cs2000/ + Link: https://www.cirrus.com/products/cs2500/ properties: compatible: - enum: - - cirrus,cs2000-cp + oneOf: + - items: + - const: cirrus,cs2500 + - const: cirrus,cs2000-cp + - const: cirrus,cs2000-cp clocks: description: From 2cba284c0c8d115453766325a3a879aa06fe0900 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Mon, 4 May 2026 16:43:26 +0200 Subject: [PATCH 12/56] dt-bindings: soc: renesas: Document R-Car R8A779MD Geist Document the compatible value for the Renesas R-Car M3Le (R8A779MD) SoC and the Renesas Geist development board. The Renesas M3Le SoC is a register-compatible variant of the R8A77965 (M3-N) with reduced set of peripherals. The Geist board is derived from Renesas Salvator-X/XS boards, with adjustment for the R8A779MD SoC. Acked-by: Conor Dooley Reviewed-by: Geert Uytterhoeven Signed-off-by: Marek Vasut Link: https://patch.msgid.link/20260504144534.43745-5-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- Documentation/devicetree/bindings/soc/renesas/renesas.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/devicetree/bindings/soc/renesas/renesas.yaml b/Documentation/devicetree/bindings/soc/renesas/renesas.yaml index 5c22c51b1533..eeef34e3d7d0 100644 --- a/Documentation/devicetree/bindings/soc/renesas/renesas.yaml +++ b/Documentation/devicetree/bindings/soc/renesas/renesas.yaml @@ -473,6 +473,12 @@ properties: - const: renesas,r8a779mb - const: renesas,r8a7795 + - description: R-Car M3Le (R8A779MD) + items: + - const: renesas,geist # M3Le Geist (RTP8A779MDASKB0F10S) + - const: renesas,r8a779md + - const: renesas,r8a77965 + - description: R-Car X5H (R8A78000) items: - enum: From ad9d44ddeefd20e351a37a86e73e2667f55daa79 Mon Sep 17 00:00:00 2001 From: Nguyen Tran Date: Mon, 4 May 2026 16:43:28 +0200 Subject: [PATCH 13/56] arm64: dts: renesas: r8a779md: Add Renesas R-Car R8A779MD M3Le DTs Add support for the Renesas R-Car M3Le (R8A779MD) SoC, a variant of the R-Car M3-N (R8A77965) SoC. The Renesas M3Le SoC is a register-compatible variant of the R8A77965 (M3-N) with reduced set of peripherals. Signed-off-by: Nguyen Tran Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260504144534.43745-7-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r8a779md.dtsi | 59 +++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 arch/arm64/boot/dts/renesas/r8a779md.dtsi diff --git a/arch/arm64/boot/dts/renesas/r8a779md.dtsi b/arch/arm64/boot/dts/renesas/r8a779md.dtsi new file mode 100644 index 000000000000..f30654141341 --- /dev/null +++ b/arch/arm64/boot/dts/renesas/r8a779md.dtsi @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +/* + * Device Tree Source for the R-Car M3Le (R8A779MD) SoC + * + * Copyright (C) 2025-2026 Renesas Electronics Corp. + */ + +#include "r8a77965.dtsi" + +/ { + compatible = "renesas,r8a779md", "renesas,r8a77965"; +}; + +/delete-node/ &csi20; +/delete-node/ &drif00; +/delete-node/ &drif01; +/delete-node/ &drif10; +/delete-node/ &drif11; +/delete-node/ &drif20; +/delete-node/ &drif21; +/delete-node/ &drif30; +/delete-node/ &drif31; +/delete-node/ &du; +/delete-node/ &ehci1; +/delete-node/ &hdmi0; +/delete-node/ &lvds0; +/delete-node/ &mlp; +/delete-node/ &ohci1; +/delete-node/ &pciec1; +/delete-node/ &sata; +/delete-node/ &usb2_phy1; +/delete-node/ &usb3_peri0; +/delete-node/ &usb3_phy0; +/delete-node/ &vin0csi20; +/delete-node/ &vin1csi20; +/delete-node/ &vin2csi20; +/delete-node/ &vin3csi20; +/delete-node/ &vin4csi20; +/delete-node/ &vin5csi20; +/delete-node/ &vin6csi20; +/delete-node/ &vin7csi20; +/delete-node/ &xhci0; + +&sdhi0 { + compatible = "renesas,sdhi-r8a779md", "renesas,rcar-gen3-sdhi"; +}; + +&sdhi1 { + compatible = "renesas,sdhi-r8a779md", "renesas,rcar-gen3-sdhi"; +}; + +&sdhi2 { + compatible = "renesas,sdhi-r8a779md", "renesas,rcar-gen3-sdhi"; +}; + +&sdhi3 { + compatible = "renesas,sdhi-r8a779md", "renesas,rcar-gen3-sdhi"; + no-mmc; +}; From 9f763ef2a3fb54d65570937223de327575725001 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 00:56:51 +0200 Subject: [PATCH 14/56] arm64: dts: renesas: draak: Rename clk-multiplier to clock-controller Use standard clock-controller node name for the CS2000-CP. No functional change. Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260504225704.115125-1-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/draak.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/renesas/draak.dtsi b/arch/arm64/boot/dts/renesas/draak.dtsi index c83c97d99113..c9c5c3ab06c3 100644 --- a/arch/arm64/boot/dts/renesas/draak.dtsi +++ b/arch/arm64/boot/dts/renesas/draak.dtsi @@ -435,7 +435,7 @@ adv7612_out: endpoint { }; }; - cs2000: clk-multiplier@4f { + cs2000: clock-controller@4f { #clock-cells = <0>; compatible = "cirrus,cs2000-cp"; reg = <0x4f>; From decb897f06d58434db642d695755219533fbff9f Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 00:56:52 +0200 Subject: [PATCH 15/56] arm64: dts: renesas: ebisu: Rename clk-multiplier to clock-controller Use standard clock-controller node name for the CS2000-CP. No functional change. Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260504225704.115125-2-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/ebisu.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/renesas/ebisu.dtsi b/arch/arm64/boot/dts/renesas/ebisu.dtsi index ba564aa09866..add60324e0e4 100644 --- a/arch/arm64/boot/dts/renesas/ebisu.dtsi +++ b/arch/arm64/boot/dts/renesas/ebisu.dtsi @@ -512,7 +512,7 @@ ak4613: codec@10 { asahi-kasei,out6-single-end; }; - cs2000: clk-multiplier@4f { + cs2000: clock-controller@4f { #clock-cells = <0>; compatible = "cirrus,cs2000-cp"; reg = <0x4f>; From cced1504d2c2505a97caa03ce6aa8016de00bc24 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 00:56:53 +0200 Subject: [PATCH 16/56] arm64: dts: renesas: hihope: Rename clk-multiplier to clock-controller Use standard clock-controller node name for the CS2000-CP. No functional change. Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260504225704.115125-3-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/hihope-rev4.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/renesas/hihope-rev4.dtsi b/arch/arm64/boot/dts/renesas/hihope-rev4.dtsi index 8bfc66b8ef86..acce3c0452f4 100644 --- a/arch/arm64/boot/dts/renesas/hihope-rev4.dtsi +++ b/arch/arm64/boot/dts/renesas/hihope-rev4.dtsi @@ -50,7 +50,7 @@ &i2c2 { pinctrl-names = "default"; status = "okay"; - cs2000: clk-multiplier@4f { + cs2000: clock-controller@4f { #clock-cells = <0>; compatible = "cirrus,cs2000-cp"; reg = <0x4f>; From b008ad40670b67e1cf6cfaa0692d830fc70dd94a Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 00:56:54 +0200 Subject: [PATCH 17/56] arm64: dts: renesas: salvator-common: Rename clk-multiplier to clock-controller Use standard clock-controller node name for the CS2000-CP. No functional change. Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260504225704.115125-4-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/salvator-common.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/renesas/salvator-common.dtsi b/arch/arm64/boot/dts/renesas/salvator-common.dtsi index 0b29bf9564eb..b1f56efe25d9 100644 --- a/arch/arm64/boot/dts/renesas/salvator-common.dtsi +++ b/arch/arm64/boot/dts/renesas/salvator-common.dtsi @@ -507,7 +507,7 @@ ak4613_endpoint: endpoint { }; }; - cs2000: clk-multiplier@4f { + cs2000: clock-controller@4f { #clock-cells = <0>; compatible = "cirrus,cs2000-cp"; reg = <0x4f>; From 5acc8d529a2980e43126ae0091b45310ead9036d Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 00:56:55 +0200 Subject: [PATCH 18/56] arm64: dts: renesas: ulcb: Rename clk-multiplier to clock-controller Use standard clock-controller node name for the CS2000-CP. No functional change. Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260504225704.115125-5-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/ulcb.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/renesas/ulcb.dtsi b/arch/arm64/boot/dts/renesas/ulcb.dtsi index 67fd6a65db89..ae36a2e66948 100644 --- a/arch/arm64/boot/dts/renesas/ulcb.dtsi +++ b/arch/arm64/boot/dts/renesas/ulcb.dtsi @@ -221,7 +221,7 @@ ak4613: codec@10 { asahi-kasei,out6-single-end; }; - cs2000: clk-multiplier@4f { + cs2000: clock-controller@4f { #clock-cells = <0>; compatible = "cirrus,cs2000-cp"; reg = <0x4f>; From 131009c3fe7108c9b1c0bd5dfdbb12ff3224202e Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 05:42:42 +0200 Subject: [PATCH 19/56] arm64: dts: renesas: salvator-common: Specify ethernet PHY reset timings The KSZ9031RNX reference manual [1] DS00002117K page 62 FIGURE 7-5: POWER-UP/POWER-DOWN/RESET TIMING Note 2 states, that after the de-assertion of reset, wait a minimum of 100 us before starting programming on the MIIM (MDC/MDIO) interface. Set DT property reset-deassert-us to three times that, 300 us, to provide ample time between reset deassertion and MDIO access. The KSZ9031RNX reference manual [1] DS00002117K page 62 TABLE 7-4: POWER-UP/POWER-DOWN/RESET TIMING PARAMETERS row tSR Stable supply voltages to de-assertion of reset is at minimum 10 ms. Set DT property reset-assert-us to 10ms because the KSZ9031RNX RM does not explicitly spell out how long the reset has to be asserted, but this at least covers the worst case scenario. [1] https://ww1.microchip.com/downloads/aemDocuments/documents/UNG/ProductDocuments/DataSheets/KSZ9031RNX-Data-Sheet-DS00002117.pdf Signed-off-by: Marek Vasut Tested-by: Geert Uytterhoeven Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505034325.167797-2-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/salvator-common.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/salvator-common.dtsi b/arch/arm64/boot/dts/renesas/salvator-common.dtsi index b1f56efe25d9..1317ede2f719 100644 --- a/arch/arm64/boot/dts/renesas/salvator-common.dtsi +++ b/arch/arm64/boot/dts/renesas/salvator-common.dtsi @@ -361,6 +361,8 @@ phy0: ethernet-phy@0 { reg = <0>; interrupts-extended = <&gpio2 11 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>; + reset-assert-us = <10000>; + reset-deassert-us = <300>; }; }; From fb798ae948ddde64ad9a4adc92ad185a80dc72dc Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 05:42:43 +0200 Subject: [PATCH 20/56] arm64: dts: renesas: ulcb: Specify ethernet PHY reset timings The KSZ9031RNX reference manual [1] DS00002117K page 62 FIGURE 7-5: POWER-UP/POWER-DOWN/RESET TIMING Note 2 states, that after the de-assertion of reset, wait a minimum of 100 us before starting programming on the MIIM (MDC/MDIO) interface. Set DT property reset-deassert-us to three times that, 300 us, to provide ample time between reset deassertion and MDIO access. The KSZ9031RNX reference manual [1] DS00002117K page 62 TABLE 7-4: POWER-UP/POWER-DOWN/RESET TIMING PARAMETERS row tSR Stable supply voltages to de-assertion of reset is at minimum 10 ms. Set DT property reset-assert-us to 10ms because the KSZ9031RNX RM does not explicitly spell out how long the reset has to be asserted, but this at least covers the worst case scenario. [1] https://ww1.microchip.com/downloads/aemDocuments/documents/UNG/ProductDocuments/DataSheets/KSZ9031RNX-Data-Sheet-DS00002117.pdf Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505034325.167797-3-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/ulcb.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/ulcb.dtsi b/arch/arm64/boot/dts/renesas/ulcb.dtsi index ae36a2e66948..119f2b5024b3 100644 --- a/arch/arm64/boot/dts/renesas/ulcb.dtsi +++ b/arch/arm64/boot/dts/renesas/ulcb.dtsi @@ -163,6 +163,8 @@ phy0: ethernet-phy@0 { reg = <0>; interrupts-extended = <&gpio2 11 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>; + reset-assert-us = <10000>; + reset-deassert-us = <300>; }; }; From 67c2dd78f43f129f6c92ea4aca00035139ecea1e Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 05:42:44 +0200 Subject: [PATCH 21/56] arm64: dts: renesas: eagle: Specify ethernet PHY reset timings The KSZ9031RNX reference manual [1] DS00002117K page 62 FIGURE 7-5: POWER-UP/POWER-DOWN/RESET TIMING Note 2 states, that after the de-assertion of reset, wait a minimum of 100 us before starting programming on the MIIM (MDC/MDIO) interface. Set DT property reset-deassert-us to three times that, 300 us, to provide ample time between reset deassertion and MDIO access. The KSZ9031RNX reference manual [1] DS00002117K page 62 TABLE 7-4: POWER-UP/POWER-DOWN/RESET TIMING PARAMETERS row tSR Stable supply voltages to de-assertion of reset is at minimum 10 ms. Set DT property reset-assert-us to 10ms because the KSZ9031RNX RM does not explicitly spell out how long the reset has to be asserted, but this at least covers the worst case scenario. [1] https://ww1.microchip.com/downloads/aemDocuments/documents/UNG/ProductDocuments/DataSheets/KSZ9031RNX-Data-Sheet-DS00002117.pdf Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505034325.167797-4-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r8a77970-eagle.dts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r8a77970-eagle.dts b/arch/arm64/boot/dts/renesas/r8a77970-eagle.dts index b26c5a709777..a2ad79ddf73d 100644 --- a/arch/arm64/boot/dts/renesas/r8a77970-eagle.dts +++ b/arch/arm64/boot/dts/renesas/r8a77970-eagle.dts @@ -113,6 +113,8 @@ phy0: ethernet-phy@0 { reg = <0>; interrupts-extended = <&gpio1 17 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio1 16 GPIO_ACTIVE_LOW>; + reset-assert-us = <10000>; + reset-deassert-us = <300>; }; }; From ae49d5842944d4b5af80f5ec44f29c1909dac913 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 05:42:45 +0200 Subject: [PATCH 22/56] arm64: dts: renesas: v3msk: Specify ethernet PHY reset timings The KSZ9031RNX reference manual [1] DS00002117K page 62 FIGURE 7-5: POWER-UP/POWER-DOWN/RESET TIMING Note 2 states, that after the de-assertion of reset, wait a minimum of 100 us before starting programming on the MIIM (MDC/MDIO) interface. Set DT property reset-deassert-us to three times that, 300 us, to provide ample time between reset deassertion and MDIO access. The KSZ9031RNX reference manual [1] DS00002117K page 62 TABLE 7-4: POWER-UP/POWER-DOWN/RESET TIMING PARAMETERS row tSR Stable supply voltages to de-assertion of reset is at minimum 10 ms. Set DT property reset-assert-us to 10ms because the KSZ9031RNX RM does not explicitly spell out how long the reset has to be asserted, but this at least covers the worst case scenario. [1] https://ww1.microchip.com/downloads/aemDocuments/documents/UNG/ProductDocuments/DataSheets/KSZ9031RNX-Data-Sheet-DS00002117.pdf Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505034325.167797-5-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r8a77970-v3msk.dts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r8a77970-v3msk.dts b/arch/arm64/boot/dts/renesas/r8a77970-v3msk.dts index 343f9610f892..10c9a2e9ed18 100644 --- a/arch/arm64/boot/dts/renesas/r8a77970-v3msk.dts +++ b/arch/arm64/boot/dts/renesas/r8a77970-v3msk.dts @@ -119,6 +119,8 @@ phy0: ethernet-phy@0 { reg = <0>; interrupts-extended = <&gpio1 17 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio1 16 GPIO_ACTIVE_LOW>; + reset-assert-us = <10000>; + reset-deassert-us = <300>; }; }; From feef18ea6e86b26b6c80d09b1e93a33b3606646f Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 05:42:46 +0200 Subject: [PATCH 23/56] arm64: dts: renesas: condor-common: Specify ethernet PHY reset timings The KSZ9031RNX reference manual [1] DS00002117K page 62 FIGURE 7-5: POWER-UP/POWER-DOWN/RESET TIMING Note 2 states, that after the de-assertion of reset, wait a minimum of 100 us before starting programming on the MIIM (MDC/MDIO) interface. Set DT property reset-deassert-us to three times that, 300 us, to provide ample time between reset deassertion and MDIO access. The KSZ9031RNX reference manual [1] DS00002117K page 62 TABLE 7-4: POWER-UP/POWER-DOWN/RESET TIMING PARAMETERS row tSR Stable supply voltages to de-assertion of reset is at minimum 10 ms. Set DT property reset-assert-us to 10ms because the KSZ9031RNX RM does not explicitly spell out how long the reset has to be asserted, but this at least covers the worst case scenario. [1] https://ww1.microchip.com/downloads/aemDocuments/documents/UNG/ProductDocuments/DataSheets/KSZ9031RNX-Data-Sheet-DS00002117.pdf Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505034325.167797-6-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/condor-common.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/condor-common.dtsi b/arch/arm64/boot/dts/renesas/condor-common.dtsi index 6b22cc0b05b1..9d55509b00b1 100644 --- a/arch/arm64/boot/dts/renesas/condor-common.dtsi +++ b/arch/arm64/boot/dts/renesas/condor-common.dtsi @@ -168,6 +168,8 @@ phy0: ethernet-phy@0 { reg = <0>; interrupts-extended = <&gpio4 23 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>; + reset-assert-us = <10000>; + reset-deassert-us = <300>; }; }; From c5c95e512b1afdd72865703bf6056b8b7b149fcb Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 05:42:47 +0200 Subject: [PATCH 24/56] arm64: dts: renesas: v3hsk: Specify ethernet PHY reset timings The KSZ9031RNX reference manual [1] DS00002117K page 62 FIGURE 7-5: POWER-UP/POWER-DOWN/RESET TIMING Note 2 states, that after the de-assertion of reset, wait a minimum of 100 us before starting programming on the MIIM (MDC/MDIO) interface. Set DT property reset-deassert-us to three times that, 300 us, to provide ample time between reset deassertion and MDIO access. The KSZ9031RNX reference manual [1] DS00002117K page 62 TABLE 7-4: POWER-UP/POWER-DOWN/RESET TIMING PARAMETERS row tSR Stable supply voltages to de-assertion of reset is at minimum 10 ms. Set DT property reset-assert-us to 10ms because the KSZ9031RNX RM does not explicitly spell out how long the reset has to be asserted, but this at least covers the worst case scenario. [1] https://ww1.microchip.com/downloads/aemDocuments/documents/UNG/ProductDocuments/DataSheets/KSZ9031RNX-Data-Sheet-DS00002117.pdf Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505034325.167797-7-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r8a77980-v3hsk.dts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r8a77980-v3hsk.dts b/arch/arm64/boot/dts/renesas/r8a77980-v3hsk.dts index e3725304fed0..52462e61b719 100644 --- a/arch/arm64/boot/dts/renesas/r8a77980-v3hsk.dts +++ b/arch/arm64/boot/dts/renesas/r8a77980-v3hsk.dts @@ -126,6 +126,8 @@ phy0: ethernet-phy@0 { reg = <0>; interrupts-extended = <&gpio4 23 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>; + reset-assert-us = <10000>; + reset-deassert-us = <300>; }; }; From 1978e91b4c74b42067b19848d1dc28fd3da4e0f4 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 05:42:48 +0200 Subject: [PATCH 25/56] arm64: dts: renesas: ebisu: Specify ethernet PHY reset timings The KSZ9031RNX reference manual [1] DS00002117K page 62 FIGURE 7-5: POWER-UP/POWER-DOWN/RESET TIMING Note 2 states, that after the de-assertion of reset, wait a minimum of 100 us before starting programming on the MIIM (MDC/MDIO) interface. Set DT property reset-deassert-us to three times that, 300 us, to provide ample time between reset deassertion and MDIO access. The KSZ9031RNX reference manual [1] DS00002117K page 62 TABLE 7-4: POWER-UP/POWER-DOWN/RESET TIMING PARAMETERS row tSR Stable supply voltages to de-assertion of reset is at minimum 10 ms. Set DT property reset-assert-us to 10ms because the KSZ9031RNX RM does not explicitly spell out how long the reset has to be asserted, but this at least covers the worst case scenario. [1] https://ww1.microchip.com/downloads/aemDocuments/documents/UNG/ProductDocuments/DataSheets/KSZ9031RNX-Data-Sheet-DS00002117.pdf Signed-off-by: Marek Vasut Tested-by: Geert Uytterhoeven Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505034325.167797-8-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/ebisu.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/ebisu.dtsi b/arch/arm64/boot/dts/renesas/ebisu.dtsi index add60324e0e4..4b3775afcb01 100644 --- a/arch/arm64/boot/dts/renesas/ebisu.dtsi +++ b/arch/arm64/boot/dts/renesas/ebisu.dtsi @@ -322,6 +322,8 @@ phy0: ethernet-phy@0 { reg = <0>; interrupts-extended = <&gpio2 21 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; + reset-assert-us = <10000>; + reset-deassert-us = <300>; /* * TX clock internal delay mode is required for reliable * 1Gbps communication using the KSZ9031RNX phy present on From bbde39085f70dbe822fb6d826eca127518273f07 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 05:42:49 +0200 Subject: [PATCH 26/56] arm64: dts: renesas: draak: Specify ethernet PHY reset timings The KSZ9031RNX reference manual [1] DS00002117K page 62 FIGURE 7-5: POWER-UP/POWER-DOWN/RESET TIMING Note 2 states, that after the de-assertion of reset, wait a minimum of 100 us before starting programming on the MIIM (MDC/MDIO) interface. Set DT property reset-deassert-us to three times that, 300 us, to provide ample time between reset deassertion and MDIO access. The KSZ9031RNX reference manual [1] DS00002117K page 62 TABLE 7-4: POWER-UP/POWER-DOWN/RESET TIMING PARAMETERS row tSR Stable supply voltages to de-assertion of reset is at minimum 10 ms. Set DT property reset-assert-us to 10ms because the KSZ9031RNX RM does not explicitly spell out how long the reset has to be asserted, but this at least covers the worst case scenario. [1] https://ww1.microchip.com/downloads/aemDocuments/documents/UNG/ProductDocuments/DataSheets/KSZ9031RNX-Data-Sheet-DS00002117.pdf Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505034325.167797-9-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/draak.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/draak.dtsi b/arch/arm64/boot/dts/renesas/draak.dtsi index c9c5c3ab06c3..f2f25fe5d778 100644 --- a/arch/arm64/boot/dts/renesas/draak.dtsi +++ b/arch/arm64/boot/dts/renesas/draak.dtsi @@ -249,6 +249,8 @@ phy0: ethernet-phy@0 { reg = <0>; interrupts-extended = <&gpio5 19 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio5 18 GPIO_ACTIVE_LOW>; + reset-assert-us = <10000>; + reset-deassert-us = <300>; /* * TX clock internal delay mode is required for reliable * 1Gbps communication using the KSZ9031RNX phy present on From 5bff12f97b73a4278b1c54f5db019ccc608901b8 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 05:42:50 +0200 Subject: [PATCH 27/56] arm64: dts: renesas: falcon: Specify ethernet PHY reset timings The KSZ9031RNX reference manual [1] DS00002117K page 62 FIGURE 7-5: POWER-UP/POWER-DOWN/RESET TIMING Note 2 states, that after the de-assertion of reset, wait a minimum of 100 us before starting programming on the MIIM (MDC/MDIO) interface. Set DT property reset-deassert-us to three times that, 300 us, to provide ample time between reset deassertion and MDIO access. The KSZ9031RNX reference manual [1] DS00002117K page 62 TABLE 7-4: POWER-UP/POWER-DOWN/RESET TIMING PARAMETERS row tSR Stable supply voltages to de-assertion of reset is at minimum 10 ms. Set DT property reset-assert-us to 10ms because the KSZ9031RNX RM does not explicitly spell out how long the reset has to be asserted, but this at least covers the worst case scenario. [1] https://ww1.microchip.com/downloads/aemDocuments/documents/UNG/ProductDocuments/DataSheets/KSZ9031RNX-Data-Sheet-DS00002117.pdf Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505034325.167797-10-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts b/arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts index 6bd580737f25..ea5dcee73658 100644 --- a/arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts +++ b/arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts @@ -33,6 +33,8 @@ phy0: ethernet-phy@0 { reg = <0>; interrupts-extended = <&gpio4 16 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>; + reset-assert-us = <10000>; + reset-deassert-us = <300>; }; }; From 0a5e30c062da53053f5ac7b55a6b1993df8f5fe4 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 05:42:51 +0200 Subject: [PATCH 28/56] arm64: dts: renesas: white-hawk: Specify ethernet PHY reset timings The KSZ9031RNX reference manual [1] DS00002117K page 62 FIGURE 7-5: POWER-UP/POWER-DOWN/RESET TIMING Note 2 states, that after the de-assertion of reset, wait a minimum of 100 us before starting programming on the MIIM (MDC/MDIO) interface. Set DT property reset-deassert-us to three times that, 300 us, to provide ample time between reset deassertion and MDIO access. The KSZ9031RNX reference manual [1] DS00002117K page 62 TABLE 7-4: POWER-UP/POWER-DOWN/RESET TIMING PARAMETERS row tSR Stable supply voltages to de-assertion of reset is at minimum 10 ms. Set DT property reset-assert-us to 10ms because the KSZ9031RNX RM does not explicitly spell out how long the reset has to be asserted, but this at least covers the worst case scenario. [1] https://ww1.microchip.com/downloads/aemDocuments/documents/UNG/ProductDocuments/DataSheets/KSZ9031RNX-Data-Sheet-DS00002117.pdf Signed-off-by: Marek Vasut Tested-by: Geert Uytterhoeven Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505034325.167797-11-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/white-hawk-cpu-common.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/white-hawk-cpu-common.dtsi b/arch/arm64/boot/dts/renesas/white-hawk-cpu-common.dtsi index b4024e85ae5a..c5045bda45c3 100644 --- a/arch/arm64/boot/dts/renesas/white-hawk-cpu-common.dtsi +++ b/arch/arm64/boot/dts/renesas/white-hawk-cpu-common.dtsi @@ -169,6 +169,8 @@ avb0_phy: ethernet-phy@0 { reg = <0>; interrupts-extended = <&gpio7 5 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio7 10 GPIO_ACTIVE_LOW>; + reset-assert-us = <10000>; + reset-deassert-us = <300>; }; }; }; From 0b99c3aa40e7fa98f28a966d96967b5e50946f91 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 5 May 2026 05:42:52 +0200 Subject: [PATCH 29/56] arm64: dts: renesas: gray-hawk: Specify ethernet PHY reset timings The KSZ9031RNX reference manual [1] DS00002117K page 62 FIGURE 7-5: POWER-UP/POWER-DOWN/RESET TIMING Note 2 states, that after the de-assertion of reset, wait a minimum of 100 us before starting programming on the MIIM (MDC/MDIO) interface. Set DT property reset-deassert-us to three times that, 300 us, to provide ample time between reset deassertion and MDIO access. The KSZ9031RNX reference manual [1] DS00002117K page 62 TABLE 7-4: POWER-UP/POWER-DOWN/RESET TIMING PARAMETERS row tSR Stable supply voltages to de-assertion of reset is at minimum 10 ms. Set DT property reset-assert-us to 10ms because the KSZ9031RNX RM does not explicitly spell out how long the reset has to be asserted, but this at least covers the worst case scenario. [1] https://ww1.microchip.com/downloads/aemDocuments/documents/UNG/ProductDocuments/DataSheets/KSZ9031RNX-Data-Sheet-DS00002117.pdf Signed-off-by: Marek Vasut Tested-by: Geert Uytterhoeven Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505034325.167797-12-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/gray-hawk-single.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/gray-hawk-single.dtsi b/arch/arm64/boot/dts/renesas/gray-hawk-single.dtsi index 792a4aa8f4a9..274493720b14 100644 --- a/arch/arm64/boot/dts/renesas/gray-hawk-single.dtsi +++ b/arch/arm64/boot/dts/renesas/gray-hawk-single.dtsi @@ -213,6 +213,8 @@ avb0_phy: ethernet-phy@0 { reg = <0>; interrupts-extended = <&gpio7 5 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio7 10 GPIO_ACTIVE_LOW>; + reset-assert-us = <10000>; + reset-deassert-us = <300>; }; }; }; From 141853e48860bc4aa74e312ae56bb72ff06107b1 Mon Sep 17 00:00:00 2001 From: Biju Das Date: Tue, 5 May 2026 08:01:54 +0100 Subject: [PATCH 30/56] arm64: dts: renesas: r9a08g046: Add scif{1..5} device nodes Add scif{1..5} device nodes to RZ/G3L ("R9A08G046") SoC DTSI. Signed-off-by: Biju Das Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505070206.7932-2-biju.das.jz@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a08g046.dtsi | 90 ++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi index 02a3029c058e..19f2c9f29f5c 100644 --- a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi @@ -166,6 +166,96 @@ scif0: serial@100ac000 { status = "disabled"; }; + scif1: serial@100ac400 { + compatible = "renesas,scif-r9a08g046", "renesas,scif-r9a07g044"; + reg = <0 0x100ac400 0 0x400>; + interrupts = , + , + , + , + , + ; + interrupt-names = "eri", "rxi", "txi", + "bri", "dri", "tei"; + clocks = <&cpg CPG_MOD R9A08G046_SCIF1_CLK_PCK>; + clock-names = "fck"; + power-domains = <&cpg>; + resets = <&cpg R9A08G046_SCIF1_RST_SYSTEM_N>; + status = "disabled"; + }; + + scif2: serial@1004c000 { + compatible = "renesas,scif-r9a08g046", "renesas,scif-r9a07g044"; + reg = <0 0x1004c000 0 0x400>; + interrupts = , + , + , + , + , + ; + interrupt-names = "eri", "rxi", "txi", + "bri", "dri", "tei"; + clocks = <&cpg CPG_MOD R9A08G046_SCIF2_CLK_PCK>; + clock-names = "fck"; + power-domains = <&cpg>; + resets = <&cpg R9A08G046_SCIF2_RST_SYSTEM_N>; + status = "disabled"; + }; + + scif3: serial@1004c400 { + compatible = "renesas,scif-r9a08g046", "renesas,scif-r9a07g044"; + reg = <0 0x1004c400 0 0x400>; + interrupts = , + , + , + , + , + ; + interrupt-names = "eri", "rxi", "txi", + "bri", "dri", "tei"; + clocks = <&cpg CPG_MOD R9A08G046_SCIF3_CLK_PCK>; + clock-names = "fck"; + power-domains = <&cpg>; + resets = <&cpg R9A08G046_SCIF3_RST_SYSTEM_N>; + status = "disabled"; + }; + + scif4: serial@1004c800 { + compatible = "renesas,scif-r9a08g046", "renesas,scif-r9a07g044"; + reg = <0 0x1004c800 0 0x400>; + interrupts = , + , + , + , + , + ; + interrupt-names = "eri", "rxi", "txi", + "bri", "dri", "tei"; + clocks = <&cpg CPG_MOD R9A08G046_SCIF4_CLK_PCK>; + clock-names = "fck"; + power-domains = <&cpg>; + resets = <&cpg R9A08G046_SCIF4_RST_SYSTEM_N>; + status = "disabled"; + }; + + scif5: serial@1004e000 { + compatible = "renesas,scif-r9a08g046", "renesas,scif-r9a07g044"; + reg = <0 0x1004e000 0 0x400>; + interrupts = , + , + , + , + , + ; + interrupt-names = "eri", "rxi", "txi", + "bri", "dri", "tei"; + clocks = <&cpg CPG_MOD R9A08G046_SCIF5_CLK_PCK>; + clock-names = "fck"; + power-domains = <&cpg>; + resets = <&cpg R9A08G046_SCIF5_RST_SYSTEM_N>; + status = "disabled"; + }; + i2c0: i2c@100ae000 { reg = <0 0x100ae000 0 0x400>; #address-cells = <1>; From bee6b1251fd2e91de6221bb3e23d2ae1384ffb4f Mon Sep 17 00:00:00 2001 From: Biju Das Date: Tue, 5 May 2026 08:01:55 +0100 Subject: [PATCH 31/56] arm64: dts: renesas: r9a08g046: Add i2c{0..3} device nodes Add i2c{0..3} device nodes to RZ/G3L ("R9A08G046") SoC DTSI. As the place holders for i2c0 is removed, add the pincontrol device nodes to make it functional on the board DTS. Signed-off-by: Biju Das Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505070206.7932-3-biju.das.jz@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a08g046.dtsi | 83 ++++++++++++++++++- .../boot/dts/renesas/rzg3l-smarc-som.dtsi | 11 +++ 2 files changed, 93 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi index 19f2c9f29f5c..323e7d107a19 100644 --- a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi @@ -257,10 +257,91 @@ scif5: serial@1004e000 { }; i2c0: i2c@100ae000 { + compatible = "renesas,riic-r9a08g046", "renesas,riic-r9a09g057"; reg = <0 0x100ae000 0 0x400>; + interrupts = , + , + , + , + , + , + , + ; + interrupt-names = "tei", "ri", "ti", "spi", "sti", + "naki", "ali", "tmoi"; + clocks = <&cpg CPG_MOD R9A08G046_I2C0_PCLK>; + clock-frequency = <100000>; + resets = <&cpg R9A08G046_I2C0_MRST>; + power-domains = <&cpg>; #address-cells = <1>; #size-cells = <0>; - /* placeholder */ + status = "disabled"; + }; + + i2c1: i2c@10090400 { + compatible = "renesas,riic-r9a08g046", "renesas,riic-r9a09g057"; + reg = <0 0x10090400 0 0x400>; + interrupts = , + , + , + , + , + , + , + ; + interrupt-names = "tei", "ri", "ti", "spi", "sti", + "naki", "ali", "tmoi"; + clocks = <&cpg CPG_MOD R9A08G046_I2C1_PCLK>; + clock-frequency = <100000>; + resets = <&cpg R9A08G046_I2C1_MRST>; + power-domains = <&cpg>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c2: i2c@10090800 { + compatible = "renesas,riic-r9a08g046", "renesas,riic-r9a09g057"; + reg = <0 0x10090800 0 0x400>; + interrupts = , + , + , + , + , + , + , + ; + interrupt-names = "tei", "ri", "ti", "spi", "sti", + "naki", "ali", "tmoi"; + clocks = <&cpg CPG_MOD R9A08G046_I2C2_PCLK>; + clock-frequency = <100000>; + resets = <&cpg R9A08G046_I2C2_MRST>; + power-domains = <&cpg>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c3: i2c@10090c00 { + compatible = "renesas,riic-r9a08g046", "renesas,riic-r9a09g057"; + reg = <0 0x10090c00 0 0x400>; + interrupts = , + , + , + , + , + , + , + ; + interrupt-names = "tei", "ri", "ti", "spi", "sti", + "naki", "ali", "tmoi"; + clocks = <&cpg CPG_MOD R9A08G046_I2C3_PCLK>; + clock-frequency = <100000>; + resets = <&cpg R9A08G046_I2C3_MRST>; + power-domains = <&cpg>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; }; canfd: can@100c0000 { diff --git a/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi index b28e59a65259..7770de2064d9 100644 --- a/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi +++ b/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi @@ -11,6 +11,7 @@ / { aliases { ethernet0 = ð0; ethernet1 = ð1; + i2c0 = &i2c0; }; memory@48000000 { @@ -50,6 +51,11 @@ &extal_clk { clock-frequency = <24000000>; }; +&i2c0 { + pinctrl-0 = <&i2c0_pins>; + pinctrl-names = "default"; +}; + &mdio0 { phy0: ethernet-phy@7 { compatible = "ethernet-phy-id0022.1640"; @@ -144,6 +150,11 @@ ctrl { power-source = <1800>; }; }; + + i2c0_pins: i2c0 { + pinmux = , /* RIIC0_SCL */ + ; /* RIIC0_SDA */ + }; }; &wdt0 { From 0df7429fcb8360caa6d2b05c9efa217daa966279 Mon Sep 17 00:00:00 2001 From: Biju Das Date: Tue, 5 May 2026 13:36:59 +0100 Subject: [PATCH 32/56] arm64: dts: renesas: r9a08g046: Add DMAC node Add the DMA controller device tree node for the RZ/G3L (r9a08g046) SoC. Signed-off-by: Biju Das Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505123708.134069-2-biju.das.jz@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a08g046.dtsi | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi index 323e7d107a19..5f8eb93da3c1 100644 --- a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi @@ -482,6 +482,43 @@ icu: interrupt-controller@11050000 { resets = <&cpg R9A08G046_IA55_RESETN>; }; + dmac: dma-controller@11820000 { + compatible = "renesas,r9a08g046-dmac", "renesas,rz-dmac"; + reg = <0 0x11820000 0 0x10000>, + <0 0x11830000 0 0x10000>; + interrupts = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + interrupt-names = "error", + "ch0", "ch1", "ch2", "ch3", + "ch4", "ch5", "ch6", "ch7", + "ch8", "ch9", "ch10", "ch11", + "ch12", "ch13", "ch14", "ch15"; + clocks = <&cpg CPG_MOD R9A08G046_DMAC_ACLK>, + <&cpg CPG_MOD R9A08G046_DMAC_PCLK>; + clock-names = "main", "register"; + power-domains = <&cpg>; + resets = <&cpg R9A08G046_DMAC_ARESETN>, + <&cpg R9A08G046_DMAC_RST_ASYNC>; + reset-names = "arst", "rst_async"; + #dma-cells = <1>; + dma-channels = <16>; + }; + sdhi1: mmc@11c10000 { reg = <0x0 0x11c10000 0 0x10000>; /* placeholder */ From 17dc49f44c33cff7133fd48d5bc18bb0f625503a Mon Sep 17 00:00:00 2001 From: Biju Das Date: Tue, 5 May 2026 13:37:00 +0100 Subject: [PATCH 33/56] arm64: dts: renesas: r9a08g046: Add SSI support Add SSI{0,1,2,3} nodes to RZ/G3L SoC DTSI. Signed-off-by: Biju Das Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505123708.134069-3-biju.das.jz@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a08g046.dtsi | 76 ++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi index 5f8eb93da3c1..70f820f14335 100644 --- a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi @@ -349,6 +349,82 @@ canfd: can@100c0000 { /* placeholder */ }; + ssi0: ssi@100e4000 { + compatible = "renesas,r9a08g046-ssi", "renesas,rz-ssi"; + reg = <0 0x100e4000 0 0x400>; + interrupts = , + , + ; + interrupt-names = "int_req", "dma_rx", "dma_tx"; + clocks = <&cpg CPG_MOD R9A08G046_SSI0_PCLK2>, + <&cpg CPG_MOD R9A08G046_SSI0_PCLK_SFR>, + <&audio_clk1>, <&audio_clk2>; + clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2"; + resets = <&cpg R9A08G046_SSI0_RST_M2_REG>; + dmas = <&dmac 0x2665>, <&dmac 0x2666>; + dma-names = "tx", "rx"; + power-domains = <&cpg>; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + ssi1: ssi@100e4400 { + compatible = "renesas,r9a08g046-ssi", "renesas,rz-ssi"; + reg = <0 0x100e4400 0 0x400>; + interrupts = , + , + ; + interrupt-names = "int_req", "dma_rx", "dma_tx"; + clocks = <&cpg CPG_MOD R9A08G046_SSI1_PCLK2>, + <&cpg CPG_MOD R9A08G046_SSI1_PCLK_SFR>, + <&audio_clk1>, <&audio_clk2>; + clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2"; + resets = <&cpg R9A08G046_SSI1_RST_M2_REG>; + dmas = <&dmac 0x2669>, <&dmac 0x266a>; + dma-names = "tx", "rx"; + power-domains = <&cpg>; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + ssi2: ssi@100e4800 { + compatible = "renesas,r9a08g046-ssi", "renesas,rz-ssi"; + reg = <0 0x100e4800 0 0x400>; + interrupts = , + , + ; + interrupt-names = "int_req", "dma_rx", "dma_tx"; + clocks = <&cpg CPG_MOD R9A08G046_SSI2_PCLK2>, + <&cpg CPG_MOD R9A08G046_SSI2_PCLK_SFR>, + <&audio_clk1>, <&audio_clk2>; + clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2"; + resets = <&cpg R9A08G046_SSI2_RST_M2_REG>; + dmas = <&dmac 0x266d>, <&dmac 0x266e>; + dma-names = "tx", "rx"; + power-domains = <&cpg>; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + ssi3: ssi@100e4c00 { + compatible = "renesas,r9a08g046-ssi", "renesas,rz-ssi"; + reg = <0 0x100e4c00 0 0x400>; + interrupts = , + , + ; + interrupt-names = "int_req", "dma_rx", "dma_tx"; + clocks = <&cpg CPG_MOD R9A08G046_SSI3_PCLK2>, + <&cpg CPG_MOD R9A08G046_SSI3_PCLK_SFR>, + <&audio_clk1>, <&audio_clk2>; + clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2"; + resets = <&cpg R9A08G046_SSI3_RST_M2_REG>; + dmas = <&dmac 0x2671>, <&dmac 0x2672>; + dma-names = "tx", "rx"; + power-domains = <&cpg>; + #sound-dai-cells = <0>; + status = "disabled"; + }; + cpg: clock-controller@11010000 { compatible = "renesas,r9a08g046-cpg"; reg = <0 0x11010000 0 0x10000>; From e014a2299806b8724358f7e13579c9384a19435c Mon Sep 17 00:00:00 2001 From: Biju Das Date: Tue, 5 May 2026 13:37:01 +0100 Subject: [PATCH 34/56] arm64: dts: renesas: r9a08g046: Add audio clock nodes Add audio_clk1 and audio_clk2 fixed-clock nodes to the RZ/G3L (r9a08g046) SoC DTSI. These clocks are external to the SoC and their frequencies are board-dependent, so they are defined with clock-frequency = <0> as placeholders that must be overridden in board-level DTS files. Signed-off-by: Biju Das Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260505123708.134069-4-biju.das.jz@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a08g046.dtsi | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi index 70f820f14335..4bb156dc3b23 100644 --- a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi @@ -14,6 +14,20 @@ / { #size-cells = <2>; interrupt-parent = <&gic>; + audio_clk1: audio1-clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overridden by boards that provide it. */ + clock-frequency = <0>; + }; + + audio_clk2: audio2-clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overridden by boards that provide it. */ + clock-frequency = <0>; + }; + cluster0_opp: opp-table-0 { compatible = "operating-points-v2"; From 87e8d5ef4500e5f27e84d4c2052b40bd8790172d Mon Sep 17 00:00:00 2001 From: Lad Prabhakar Date: Wed, 6 May 2026 16:58:03 +0100 Subject: [PATCH 35/56] arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Add alias for on-SoC RTC The RZ/V2H SoC provides an internal RTC, which is enabled in the DT. The RZ/V2H EVK board also includes an external RTC in the RAA215300 PMIC. Add an "rtc0" alias pointing to the on-SoC RTC node to ensure a stable device numbering. Signed-off-by: Lad Prabhakar Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260506155804.3984418-2-prabhakar.mahadev-lad.rj@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts b/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts index bd69109a5086..3c1ddacc0944 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts +++ b/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts @@ -27,6 +27,7 @@ aliases { i2c7 = &i2c7; i2c8 = &i2c8; mmc1 = &sdhi1; + rtc0 = &rtc; serial0 = &scif; }; From 8fdfbe0f114fd406a1e98d185a8f9e1d193a6526 Mon Sep 17 00:00:00 2001 From: Lad Prabhakar Date: Wed, 6 May 2026 16:58:04 +0100 Subject: [PATCH 36/56] arm64: dts: renesas: r9a09g056n48-rzv2n-evk: Add alias for on-SoC RTC The RZ/V2N SoC provides an internal RTC, which is enabled in the DT. The RZ/V2N EVK board also includes an external RTC in the RAA215300 PMIC. Add an "rtc0" alias pointing to the on-SoC RTC node to ensure a stable device numbering. Signed-off-by: Lad Prabhakar Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260506155804.3984418-3-prabhakar.mahadev-lad.rj@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a09g056n48-rzv2n-evk.dts | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g056n48-rzv2n-evk.dts b/arch/arm64/boot/dts/renesas/r9a09g056n48-rzv2n-evk.dts index 43ffde419d91..c43325dd1c55 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g056n48-rzv2n-evk.dts +++ b/arch/arm64/boot/dts/renesas/r9a09g056n48-rzv2n-evk.dts @@ -26,6 +26,7 @@ aliases { i2c7 = &i2c7; i2c8 = &i2c8; mmc1 = &sdhi1; + rtc0 = &rtc; serial0 = &scif; }; From 7cf0a16bdbea1ae52356ddf1c4d85e6c364d8a07 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Thu, 14 May 2026 00:50:24 +0200 Subject: [PATCH 37/56] arm64: dts: renesas: r8a78000: Add PSCI node Describe SMC based PSCI access in SoC DT. The system can interact with TFA BL31 PSCI provider running on the Cortex-A cores via SMC calls. Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260513225037.49803-1-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r8a78000.dtsi | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r8a78000.dtsi b/arch/arm64/boot/dts/renesas/r8a78000.dtsi index 3ec1b53d2782..5e8fdc818256 100644 --- a/arch/arm64/boot/dts/renesas/r8a78000.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a78000.dtsi @@ -665,6 +665,11 @@ extalr_clk: extalr-clk { /* clock-frequency must be set on board */ }; + psci { + compatible = "arm,psci-1.0"; + method = "smc"; + }; + /* External SCIF clock - to be overridden by boards that provide it */ scif_clk: scif-clk { compatible = "fixed-clock"; From 54613573ff1495b928e2841b257c081a58566901 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Thu, 14 May 2026 14:53:06 +0200 Subject: [PATCH 38/56] arm64: dts: renesas: r8a78000: Fix GIC-720AE View 1 Redistributor description MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Renesas R-Car X5H (R8A78000) SoC contains Arm CoreLink GIC-720AE Generic Interrupt Controller with Multi View capability. Firmware has access to configuration View 0, Linux kernel has access to View 1. The Arm CoreLink GIC-720AE Generic Interrupt Controller Technical Reference Manual, currently latest r2p1 [1], chapter "5. Programmers model for GIC-720AE", subchapter "5.4 Redistributor registers for control and physical LPIs summary", part "5.4.3 GICR_TYPER, Redistributor Type Register", "Table 5-50: GICR_TYPER bit descriptions" on page 200, clarifies register "GICR_TYPER" bit 4 "Last" behavior in Multi View setup as follows: Last Last Redistributor: 0 ... This Redistributor is not the last Redistributor on the chip. 1 ... This Redistributor is the last Redistributor on the chip. When GICD_CFGID.VIEW == 1, for views 1, 2, or 3 this bit always returns 1. On this SoC, GICD_CFGID.VIEW is 1 and the Linux kernel has access to View 1, therefore Linux kernel GICv3 driver will interpret register "GICR_TYPER" bit 4 "Last" = 1 in the first Redistributor in continuous Redistributor page as that first Redistributor being the one and only Redistributor and will stop processing the continuous Redistributor page further. This will prevent the other Redistributors from being recognized by the system and used for other PEs. Because the hardware indicates that the continuous Redistributor page is not continuous for View 1, 2, or 3, describe every Redistributor separately in the DT. This makes all Redistributors for all cores accessible in Linux. [1] https://documentation-service.arm.com/static/69ef3c1cd35efd294e335c43 Arm® CoreLinkâ„¢ GIC-720AE Generic Interrupt Controller Revision: r2p1 / Issue 12 / 102666_0201_12_en Fixes: 63500d12cf76 ("arm64: dts: renesas: Add R8A78000 SoC support") Acked-by: Marc Zyngier Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260514125328.20954-1-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r8a78000.dtsi | 36 +++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/renesas/r8a78000.dtsi b/arch/arm64/boot/dts/renesas/r8a78000.dtsi index 5e8fdc818256..d14f0cc0ad36 100644 --- a/arch/arm64/boot/dts/renesas/r8a78000.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a78000.dtsi @@ -694,8 +694,40 @@ gic: interrupt-controller@39000000 { #interrupt-cells = <3>; #address-cells = <0>; interrupt-controller; - reg = <0 0x39000000 0 0x10000>, - <0 0x39080000 0 0x800000>; + #redistributor-regions = <32>; + reg = <0x0 0x39000000 0x0 0x10000>, + <0x0 0x39080000 0x0 0x40000>, + <0x0 0x390c0000 0x0 0x40000>, + <0x0 0x39100000 0x0 0x40000>, + <0x0 0x39140000 0x0 0x40000>, + <0x0 0x39180000 0x0 0x40000>, + <0x0 0x391c0000 0x0 0x40000>, + <0x0 0x39200000 0x0 0x40000>, + <0x0 0x39240000 0x0 0x40000>, + <0x0 0x39280000 0x0 0x40000>, + <0x0 0x392c0000 0x0 0x40000>, + <0x0 0x39300000 0x0 0x40000>, + <0x0 0x39340000 0x0 0x40000>, + <0x0 0x39380000 0x0 0x40000>, + <0x0 0x393c0000 0x0 0x40000>, + <0x0 0x39400000 0x0 0x40000>, + <0x0 0x39440000 0x0 0x40000>, + <0x0 0x39480000 0x0 0x40000>, + <0x0 0x394c0000 0x0 0x40000>, + <0x0 0x39500000 0x0 0x40000>, + <0x0 0x39540000 0x0 0x40000>, + <0x0 0x39580000 0x0 0x40000>, + <0x0 0x395c0000 0x0 0x40000>, + <0x0 0x39600000 0x0 0x40000>, + <0x0 0x39640000 0x0 0x40000>, + <0x0 0x39680000 0x0 0x40000>, + <0x0 0x396c0000 0x0 0x40000>, + <0x0 0x39700000 0x0 0x40000>, + <0x0 0x39740000 0x0 0x40000>, + <0x0 0x39780000 0x0 0x40000>, + <0x0 0x397c0000 0x0 0x40000>, + <0x0 0x39800000 0x0 0x40000>, + <0x0 0x39840000 0x0 0x40000>; interrupts = ; }; From a6c4c7114b5b4ffe3685fe26002eccd40eb11f3c Mon Sep 17 00:00:00 2001 From: Fabrizio Castro Date: Thu, 14 May 2026 22:02:17 +0100 Subject: [PATCH 39/56] arm64: dts: renesas: rzt2h-n2h-evk: Configure eMMC/SDHI pins The HW user manual for the Renesas RZ/T2H and the RZ/N2H states that for SDR104, SDR50, and HS200 to work properly the eMMC/SDHI interface pins have to be configured as specified below: - SDn_CLK pin - drive strength: Ultra High, slew rate: Fast, - Other SDn_* pins: drive strength: High, slew rate: Fast, Schmitt trigger: disabled (not applicable to SDn_RST pins). HS DDR and DDR50 are currently not supported, and for every other bus mode the eMMC/SDHI interface pins should be configured as specified below: - SDn_CLK pin - drive strength: High, slew rate: Fast, - Other SDn_* pins: drive strength: Middle, slew rate: Fast, Schmitt trigger: disabled (not applicable to SDn_RST pins). Adjust the pin definitions accordingly. Signed-off-by: Fabrizio Castro Reviewed-by: Geert Uytterhoeven Reviewed-by: Lad Prabhakar Link: https://patch.msgid.link/20260514210220.7616-1-fabrizio.castro.jz@renesas.com Signed-off-by: Geert Uytterhoeven --- .../dts/renesas/rzt2h-n2h-evk-common.dtsi | 147 ++++++++++++++++-- 1 file changed, 136 insertions(+), 11 deletions(-) diff --git a/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi b/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi index f87c2492f414..ba0f5d12772c 100644 --- a/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi +++ b/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi @@ -275,12 +275,63 @@ data-pins { , /* SD0_DATA5 */ , /* SD0_DATA6 */ ; /* SD0_DATA7 */ + drive-strength-microamp = <5000>; + slew-rate = <1>; + input-schmitt-disable; }; - ctrl-pins { - pinmux = , /* SD0_CLK */ - , /* SD0_CMD */ - ; /* SD0_RST# */ + clk-pins { + pinmux = ; /* SD0_CLK */ + drive-strength-microamp = <9000>; + slew-rate = <1>; + }; + + cmd-pins { + pinmux = ; /* SD0_CMD */ + drive-strength-microamp = <5000>; + slew-rate = <1>; + input-schmitt-disable; + }; + + rst-pins { + pinmux = ; /* SD0_RST# */ + drive-strength-microamp = <5000>; + slew-rate = <1>; + }; + }; + + sdhi0_emmc_uhs_pins: sd0-emmc-uhs-group { + data-pins { + pinmux = , /* SD0_DATA0 */ + , /* SD0_DATA1 */ + , /* SD0_DATA2 */ + , /* SD0_DATA3 */ + , /* SD0_DATA4 */ + , /* SD0_DATA5 */ + , /* SD0_DATA6 */ + ; /* SD0_DATA7 */ + drive-strength-microamp = <9000>; + slew-rate = <1>; + input-schmitt-disable; + }; + + clk-pins { + pinmux = ; /* SD0_CLK */ + drive-strength-microamp = <11800>; + slew-rate = <1>; + }; + + cmd-pins { + pinmux = ; /* SD0_CMD */ + drive-strength-microamp = <9000>; + slew-rate = <1>; + input-schmitt-disable; + }; + + rst-pins { + pinmux = ; /* SD0_RST# */ + drive-strength-microamp = <9000>; + slew-rate = <1>; }; }; @@ -299,12 +350,49 @@ data-pins { , /* SD0_DATA1 */ , /* SD0_DATA2 */ ; /* SD0_DATA3 */ + drive-strength-microamp = <5000>; + slew-rate = <1>; + input-schmitt-disable; + }; + + clk-pins { + pinmux = ; /* SD0_CLK */ + drive-strength-microamp = <9000>; + slew-rate = <1>; }; ctrl-pins { - pinmux = , /* SD0_CLK */ - , /* SD0_CMD */ + pinmux = , /* SD0_CMD */ ; /* SD0_CD */ + drive-strength-microamp = <5000>; + slew-rate = <1>; + input-schmitt-disable; + }; + }; + + sdhi0_sd_uhs_pins: sd0-sd-uhs-group { + data-pins { + pinmux = , /* SD0_DATA0 */ + , /* SD0_DATA1 */ + , /* SD0_DATA2 */ + ; /* SD0_DATA3 */ + drive-strength-microamp = <9000>; + slew-rate = <1>; + input-schmitt-disable; + }; + + clk-pins { + pinmux = ; /* SD0_CLK */ + drive-strength-microamp = <11800>; + slew-rate = <1>; + }; + + ctrl-pins { + pinmux = , /* SD0_CMD */ + ; /* SD0_CD */ + drive-strength-microamp = <9000>; + slew-rate = <1>; + input-schmitt-disable; }; }; @@ -323,12 +411,49 @@ data-pins { , /* SD1_DATA1 */ , /* SD1_DATA2 */ ; /* SD1_DATA3 */ + drive-strength-microamp = <5000>; + slew-rate = <1>; + input-schmitt-disable; + }; + + clk-pins { + pinmux = ; /* SD1_CLK */ + drive-strength-microamp = <9000>; + slew-rate = <1>; }; ctrl-pins { - pinmux = , /* SD1_CLK */ - , /* SD1_CMD */ + pinmux = , /* SD1_CMD */ ; /* SD1_CD */ + drive-strength-microamp = <5000>; + slew-rate = <1>; + input-schmitt-disable; + }; + }; + + sdhi1_uhs_pins: sd1-uhs-group { + data-pins { + pinmux = , /* SD1_DATA0 */ + , /* SD1_DATA1 */ + , /* SD1_DATA2 */ + ; /* SD1_DATA3 */ + drive-strength-microamp = <9000>; + slew-rate = <1>; + input-schmitt-disable; + }; + + clk-pins { + pinmux = ; /* SD1_CLK */ + drive-strength-microamp = <11800>; + slew-rate = <1>; + }; + + ctrl-pins { + pinmux = , /* SD1_CMD */ + ; /* SD1_CD */ + drive-strength-microamp = <9000>; + slew-rate = <1>; + input-schmitt-disable; }; }; }; @@ -342,7 +467,7 @@ &sci0 { #if SD0_EMMC &sdhi0 { pinctrl-0 = <&sdhi0_emmc_pins>; - pinctrl-1 = <&sdhi0_emmc_pins>; + pinctrl-1 = <&sdhi0_emmc_uhs_pins>; pinctrl-names = "default", "state_uhs"; vmmc-supply = <®_3p3v>; vqmmc-supply = <®_1p8v>; @@ -357,7 +482,7 @@ &sdhi0 { #if SD0_SD &sdhi0 { pinctrl-0 = <&sdhi0_sd_pins>; - pinctrl-1 = <&sdhi0_sd_pins>; + pinctrl-1 = <&sdhi0_sd_uhs_pins>; pinctrl-names = "default", "state_uhs"; vmmc-supply = <®_3p3v>; vqmmc-supply = <&vqmmc_sdhi0>; @@ -372,7 +497,7 @@ &sdhi0 { #if SD1_MICRO_SD &sdhi1 { pinctrl-0 = <&sdhi1_pins>; - pinctrl-1 = <&sdhi1_pins>; + pinctrl-1 = <&sdhi1_uhs_pins>; pinctrl-names = "default", "state_uhs"; vmmc-supply = <®_3p3v>; vqmmc-supply = <&vccq_sdhi1>; From 5250b3b1ad99d216b31c98b2b321f1dee362a1b5 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Sun, 17 May 2026 18:31:25 +0200 Subject: [PATCH 40/56] arm64: dts: renesas: ironhide: Describe all reserved memory Fully describe all available DRAM in the DT, and describe regions which are not accessible because they are used by firmware in reserved-memory nodes. Replace the first memory bank memory@60600000 with memory@40000000 and a 518 MiB long reserved-memory no-map subnode. This memory region is used by other cores in the system. Reserve 32 kiB of memory at 0x8c100000 for parameters shared by IPL, SCP, TFA BL31 and TEE. Reserve 512 kiB of memory at 0x8c200000 for TFA BL31. The upcoming upstream TFA 2.15 BL31 uses memory from 0x8c200000..0x8c242fff; rounding up to 512 kiB is slight future-proofing. Reserve 32 MiB of memory at 0x8c400000 for OPTEE-OS, which is the entire OPTEE-OS TZ protected DRAM area. Neither TFA BL31 nor OPTEE-OS modify the DT passed to Linux in any way with any new reserved-memory {} nodes to reserve memory areas used by the TFA BL31 or OPTEE-OS to prevent the next stage from using those areas, which lets Linux use all of the available DRAM as it is described in the DT that was passed in by U-Boot, including the areas that are newly utilized by TFA BL31 or OPTEE-OS. In case of high DRAM utilization, unless the memory used by TFA BL31 or OPTEE-OS is properly reserved, Linux may use and corrupt the memory used by TFA BL31 or OPTEE-OS, which would lead to the system becoming unresponsive. Fixes: ad142a4ef710 ("arm64: dts: renesas: r8a78000: Add initial Ironhide board support") Signed-off-by: Marek Vasut Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260517163212.18016-1-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- .../boot/dts/renesas/r8a78000-ironhide.dts | 35 +++++++++++++++++-- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/arch/arm64/boot/dts/renesas/r8a78000-ironhide.dts b/arch/arm64/boot/dts/renesas/r8a78000-ironhide.dts index a721734fbd5d..ed027a6c356e 100644 --- a/arch/arm64/boot/dts/renesas/r8a78000-ironhide.dts +++ b/arch/arm64/boot/dts/renesas/r8a78000-ironhide.dts @@ -20,10 +20,9 @@ chosen { stdout-path = "serial0:1843200n8"; }; - memory@60600000 { + memory@40000000 { device_type = "memory"; - /* first 518MiB is reserved for other purposes. */ - reg = <0x0 0x60600000 0x0 0x5fa00000>; + reg = <0x0 0x40000000 0x0 0x80000000>; }; memory@1080000000 { @@ -65,6 +64,36 @@ memory@1e00000000 { device_type = "memory"; reg = <0x1e 0x00000000 0x1 0x00000000>; }; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + /* First 518 MiB is reserved for other purposes. */ + firmware@40000000 { + reg = <0x0 0x40000000 0x0 0x20600000>; + no-map; + }; + + /* Parameters set by IPL. */ + parameters@8c100000 { + reg = <0x0 0x8c100000 0x0 0x00008000>; + no-map; + }; + + /* TFA BL31. */ + tfa-bl31@8c200000 { + reg = <0x0 0x8c200000 0x0 0x00080000>; + no-map; + }; + + /* TEE TZ DRAM. */ + tee@8c400000 { + reg = <0x0 0x8c400000 0x0 0x02000000>; + no-map; + }; + }; }; &extal_clk { From a3904c5a6e59e3454c268a43da800cd46fa36523 Mon Sep 17 00:00:00 2001 From: Kuninori Morimoto Date: Tue, 19 May 2026 09:47:03 +0200 Subject: [PATCH 41/56] arm64: dts: renesas: r8a78000: Add MFIS, MFIS-SCP, and transport nodes Describe the MFIS and MFIS SCP instances which are used for various tasks including inter-processor communication. Remove the PRR node because it is part of MFIS on R-Car X5H and should be handled using the MFIS compatible. Also, describe the S-TCM transport area used for shared memory mailboxing. Signed-off-by: Vinh Nguyen Signed-off-by: Hai Pham Signed-off-by: Kuninori Morimoto Signed-off-by: Wolfram Sang Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260519074702.3308-5-wsa+renesas@sang-engineering.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r8a78000.dtsi | 129 +++++++++++++++++++++- 1 file changed, 126 insertions(+), 3 deletions(-) diff --git a/arch/arm64/boot/dts/renesas/r8a78000.dtsi b/arch/arm64/boot/dts/renesas/r8a78000.dtsi index d14f0cc0ad36..7780fb4e8351 100644 --- a/arch/arm64/boot/dts/renesas/r8a78000.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a78000.dtsi @@ -683,9 +683,123 @@ soc: soc { #size-cells = <2>; ranges; - prr: chipid@189e0044 { - compatible = "renesas,prr"; - reg = <0 0x189e0044 0 4>; + mfis: system-controller@189e0000 { + compatible = "renesas,r8a78000-mfis"; + reg = <0 0x189e0000 0 0x1000>, <0 0x18800000 0 0x40000>; + reg-names = "common", "mboxes"; + interrupts = , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , ; + interrupt-names = "ch0i", "ch0e", "ch1i", "ch1e", "ch2i", "ch2e", "ch3i", "ch3e", + "ch4i", "ch4e", "ch5i", "ch5e", "ch6i", "ch6e", "ch7i", "ch7e", + "ch8i", "ch8e", "ch9i", "ch9e", "ch10i", "ch10e", "ch11i", "ch11e", + "ch12i", "ch12e", "ch13i", "ch13e", "ch14i", "ch14e", "ch15i", "ch15e", + "ch16i", "ch16e", "ch17i", "ch17e", "ch18i", "ch18e", "ch19i", "ch19e", + "ch20i", "ch20e", "ch21i", "ch21e", "ch22i", "ch22e", "ch23i", "ch23e", + "ch24i", "ch24e", "ch25i", "ch25e", "ch26i", "ch26e", "ch27i", "ch27e", + "ch28i", "ch28e", "ch29i", "ch29e", "ch30i", "ch30e", "ch31i", "ch31e", + "ch32i", "ch32e", "ch33i", "ch33e", "ch34i", "ch34e", "ch35i", "ch35e", + "ch36i", "ch36e", "ch37i", "ch37e", "ch38i", "ch38e", "ch39i", "ch39e", + "ch40i", "ch40e", "ch41i", "ch41e", "ch42i", "ch42e", "ch43i", "ch43e", + "ch44i", "ch44e", "ch45i", "ch45e", "ch46i", "ch46e", "ch47i", "ch47e", + "ch48i", "ch48e", "ch49i", "ch49e", "ch50i", "ch50e", "ch51i", "ch51e", + "ch52i", "ch52e", "ch53i", "ch53e", "ch54i", "ch54e", "ch55i", "ch55e", + "ch56i", "ch56e", "ch57i", "ch57e", "ch58i", "ch58e", "ch59i", "ch59e", + "ch60i", "ch60e", "ch61i", "ch61e", "ch62i", "ch62e", "ch63i", "ch63e"; + #mbox-cells = <2>; + #hwlock-cells = <1>; + status = "disabled"; + }; + + mfis_scp: system-controller@189e1000 { + compatible = "renesas,r8a78000-mfis-scp"; + reg = <0 0x189e1000 0 0x1000>, <0 0x18840000 0 0x2c000>; + reg-names = "common", "mboxes"; + interrupts = , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , , + , ; + /* SCP uses I side IRQ only */ + interrupt-names = "ch0i", "ch1i", "ch2i", "ch3i", "ch4i", "ch5i", "ch6i", "ch7i", + "ch8i", "ch9i", "ch10i", "ch11i", "ch12i", "ch13i", "ch14i", "ch15i", + "ch16i", "ch17i", "ch18i", "ch19i", "ch20i", "ch21i", "ch22i", "ch23i", + "ch24i", "ch25i", "ch26i", "ch27i", "ch28i", "ch29i", "ch30i", "ch31i"; + #mbox-cells = <2>; + #hwlock-cells = <1>; + status = "disabled"; }; /* Application Processors manage View-1 of a GIC-720AE */ @@ -810,6 +924,15 @@ hscif3: serial@c071c000 { clock-names = "fck", "brg_int", "scif_clk"; status = "disabled"; }; + + stcm_transport: sram@c1060000 { + compatible = "mmio-sram"; + reg = <0x0 0xc1060000 0x0 0x1c00>; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x0 0xc1060000 0x1c00>; + /* actual transport nodes must be set per board file */ + }; }; timer { From 1b6a230750ee66b9ca8cb5675cc7eca802657570 Mon Sep 17 00:00:00 2001 From: Kuninori Morimoto Date: Tue, 19 May 2026 09:47:04 +0200 Subject: [PATCH 42/56] arm64: dts: renesas: ironhide: Enable to use SCMI Enable SCMI via MFIS-SCP and S-TCM transport area. Signed-off-by: Kuninori Morimoto Signed-off-by: Wolfram Sang Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260519074702.3308-6-wsa+renesas@sang-engineering.com [geert: Drop scmi_clk node] Signed-off-by: Geert Uytterhoeven --- .../boot/dts/renesas/r8a78000-ironhide.dts | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r8a78000-ironhide.dts b/arch/arm64/boot/dts/renesas/r8a78000-ironhide.dts index ed027a6c356e..d2b3fc08954a 100644 --- a/arch/arm64/boot/dts/renesas/r8a78000-ironhide.dts +++ b/arch/arm64/boot/dts/renesas/r8a78000-ironhide.dts @@ -6,6 +6,7 @@ */ /dts-v1/; +#include #include "r8a78000.dtsi" / { @@ -20,6 +21,19 @@ chosen { stdout-path = "serial0:1843200n8"; }; + firmware { + scmi: scmi { + compatible = "arm,scmi"; + mboxes = <&mfis_scp 2 MFIS_CHANNEL_TX>, + <&mfis_scp 2 MFIS_CHANNEL_RX>; + mbox-names = "tx", "rx"; + shmem = <&scmi_tx_shmem>, <&scmi_rx_shmem>; + arm,no-completion-irq; + #address-cells = <1>; + #size-cells = <0>; + }; + }; + memory@40000000 { device_type = "memory"; reg = <0x0 0x40000000 0x0 0x80000000>; @@ -109,6 +123,22 @@ &hscif0 { status = "okay"; }; +&mfis_scp { + status = "okay"; +}; + &scif_clk { clock-frequency = <26000000>; }; + +&stcm_transport { + scmi_tx_shmem: sram@1200 { + compatible = "arm,scmi-shmem"; + reg = <0x1200 0x0100>; + }; + + scmi_rx_shmem: sram@1300 { + compatible = "arm,scmi-shmem"; + reg = <0x1300 0x100>; + }; +}; From daae3ecaeb1b14ba06fe7c0ca1c1d88bdf094d07 Mon Sep 17 00:00:00 2001 From: Biju Das Date: Tue, 19 May 2026 11:00:17 +0100 Subject: [PATCH 43/56] arm64: dts: renesas: r9a08g046: Add rsci{0..3} device nodes Add rsci{0..3} device nodes to the RZ/G3L ("R9A08G046") SoC DTSI. Signed-off-by: Biju Das Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260519100022.116318-2-biju.das.jz@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a08g046.dtsi | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi index 4bb156dc3b23..03bdee870528 100644 --- a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi @@ -358,6 +358,90 @@ i2c3: i2c@10090c00 { status = "disabled"; }; + rsci0: serial@100b8000 { + compatible = "renesas,r9a08g046-rsci"; + reg = <0 0x100b8000 0 0x1000>; + interrupts = , + , + , + , + , + ; + interrupt-names = "eri", "rxi", "txi", "tei", + "aed", "bfd"; + clocks = <&cpg CPG_MOD R9A08G046_RSCI0_TCLK>, + <&cpg CPG_MOD R9A08G046_RSCI0_PCLK>; + clock-names = "operation", "bus"; + power-domains = <&cpg>; + resets = <&cpg R9A08G046_RSCI0_PRESETN>, + <&cpg R9A08G046_RSCI0_TRESETN>; + reset-names = "presetn", "tresetn"; + status = "disabled"; + }; + + rsci1: serial@100f1000 { + compatible = "renesas,r9a08g046-rsci"; + reg = <0 0x100f1000 0 0x1000>; + interrupts = , + , + , + , + , + ; + interrupt-names = "eri", "rxi", "txi", "tei", + "aed", "bfd"; + clocks = <&cpg CPG_MOD R9A08G046_RSCI1_TCLK>, + <&cpg CPG_MOD R9A08G046_RSCI1_PCLK>; + clock-names = "operation", "bus"; + power-domains = <&cpg>; + resets = <&cpg R9A08G046_RSCI1_PRESETN>, + <&cpg R9A08G046_RSCI1_TRESETN>; + reset-names = "presetn", "tresetn"; + status = "disabled"; + }; + + rsci2: serial@100f2000 { + compatible = "renesas,r9a08g046-rsci"; + reg = <0 0x100f2000 0 0x1000>; + interrupts = , + , + , + , + , + ; + interrupt-names = "eri", "rxi", "txi", "tei", + "aed", "bfd"; + clocks = <&cpg CPG_MOD R9A08G046_RSCI2_TCLK>, + <&cpg CPG_MOD R9A08G046_RSCI2_PCLK>; + clock-names = "operation", "bus"; + power-domains = <&cpg>; + resets = <&cpg R9A08G046_RSCI2_PRESETN>, + <&cpg R9A08G046_RSCI2_TRESETN>; + reset-names = "presetn", "tresetn"; + status = "disabled"; + }; + + rsci3: serial@100f3000 { + compatible = "renesas,r9a08g046-rsci"; + reg = <0 0x100f3000 0 0x1000>; + interrupts = , + , + , + , + , + ; + interrupt-names = "eri", "rxi", "txi", "tei", + "aed", "bfd"; + clocks = <&cpg CPG_MOD R9A08G046_RSCI3_TCLK>, + <&cpg CPG_MOD R9A08G046_RSCI3_PCLK>; + clock-names = "operation", "bus"; + power-domains = <&cpg>; + resets = <&cpg R9A08G046_RSCI3_PRESETN>, + <&cpg R9A08G046_RSCI3_TRESETN>; + reset-names = "presetn", "tresetn"; + status = "disabled"; + }; + canfd: can@100c0000 { reg = <0 0x100c0000 0 0x20000>; /* placeholder */ From f82892de7f4878f54a4035be06f3acc6e6449616 Mon Sep 17 00:00:00 2001 From: Biju Das Date: Wed, 20 May 2026 12:51:39 +0100 Subject: [PATCH 44/56] arm64: dts: renesas: r9a07g043: Add max-frequency to SDHI nodes Add the max-frequency property set to 133333333 Hz (133.33 MHz) to both SDHI0 and SDHI1 MMC controller nodes in the RZ/{G2UL,Five} (r9a07g043) device tree, increasing performance by ca. 33%. Signed-off-by: Biju Das Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260520115144.60067-2-biju.das.jz@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a07g043.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a07g043.dtsi b/arch/arm64/boot/dts/renesas/r9a07g043.dtsi index 38aebeeea464..6c4b2dad1550 100644 --- a/arch/arm64/boot/dts/renesas/r9a07g043.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a07g043.dtsi @@ -655,6 +655,7 @@ sdhi0: mmc@11c00000 { <&cpg CPG_MOD R9A07G043_SDHI0_IMCLK2>, <&cpg CPG_MOD R9A07G043_SDHI0_ACLK>; clock-names = "core", "clkh", "cd", "aclk"; + max-frequency = <133333333>; resets = <&cpg R9A07G043_SDHI0_IXRST>; power-domains = <&cpg>; status = "disabled"; @@ -671,6 +672,7 @@ sdhi1: mmc@11c10000 { <&cpg CPG_MOD R9A07G043_SDHI1_IMCLK2>, <&cpg CPG_MOD R9A07G043_SDHI1_ACLK>; clock-names = "core", "clkh", "cd", "aclk"; + max-frequency = <133333333>; resets = <&cpg R9A07G043_SDHI1_IXRST>; power-domains = <&cpg>; status = "disabled"; From 1b3c392bd655af31a414fc82382cec13e090a997 Mon Sep 17 00:00:00 2001 From: Biju Das Date: Wed, 20 May 2026 12:51:40 +0100 Subject: [PATCH 45/56] arm64: dts: renesas: r9a07g044: Add max-frequency to SDHI nodes Add the max-frequency property set to 133333333 Hz (133.33 MHz) to both SDHI0 and SDHI1 MMC controller nodes in the RZ/{G2L,G2LC} (r9a07g044) device tree, increasing performance by ca. 33%. Signed-off-by: Biju Das Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260520115144.60067-3-biju.das.jz@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a07g044.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a07g044.dtsi b/arch/arm64/boot/dts/renesas/r9a07g044.dtsi index 873b52b168bc..f40315a707d1 100644 --- a/arch/arm64/boot/dts/renesas/r9a07g044.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a07g044.dtsi @@ -1174,6 +1174,7 @@ sdhi0: mmc@11c00000 { <&cpg CPG_MOD R9A07G044_SDHI0_IMCLK2>, <&cpg CPG_MOD R9A07G044_SDHI0_ACLK>; clock-names = "core", "clkh", "cd", "aclk"; + max-frequency = <133333333>; resets = <&cpg R9A07G044_SDHI0_IXRST>; power-domains = <&cpg>; status = "disabled"; @@ -1190,6 +1191,7 @@ sdhi1: mmc@11c10000 { <&cpg CPG_MOD R9A07G044_SDHI1_IMCLK2>, <&cpg CPG_MOD R9A07G044_SDHI1_ACLK>; clock-names = "core", "clkh", "cd", "aclk"; + max-frequency = <133333333>; resets = <&cpg R9A07G044_SDHI1_IXRST>; power-domains = <&cpg>; status = "disabled"; From dcbbb1266043d1d7ca1f129d2ca58a6ce8e04cbb Mon Sep 17 00:00:00 2001 From: Biju Das Date: Wed, 20 May 2026 12:51:41 +0100 Subject: [PATCH 46/56] arm64: dts: renesas: r9a07g054: Add max-frequency to SDHI nodes Add the max-frequency property set to 133333333 Hz (133.33 MHz) to both SDHI0 and SDHI1 MMC controller nodes in the RZ/V2L (r9a07g054) device tree, increasing performance by ca. 33%. Signed-off-by: Biju Das Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260520115144.60067-4-biju.das.jz@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a07g054.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a07g054.dtsi b/arch/arm64/boot/dts/renesas/r9a07g054.dtsi index 587fab0ceb3f..f689996b5808 100644 --- a/arch/arm64/boot/dts/renesas/r9a07g054.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a07g054.dtsi @@ -1182,6 +1182,7 @@ sdhi0: mmc@11c00000 { <&cpg CPG_MOD R9A07G054_SDHI0_IMCLK2>, <&cpg CPG_MOD R9A07G054_SDHI0_ACLK>; clock-names = "core", "clkh", "cd", "aclk"; + max-frequency = <133333333>; resets = <&cpg R9A07G054_SDHI0_IXRST>; power-domains = <&cpg>; status = "disabled"; @@ -1198,6 +1199,7 @@ sdhi1: mmc@11c10000 { <&cpg CPG_MOD R9A07G054_SDHI1_IMCLK2>, <&cpg CPG_MOD R9A07G054_SDHI1_ACLK>; clock-names = "core", "clkh", "cd", "aclk"; + max-frequency = <133333333>; resets = <&cpg R9A07G054_SDHI1_IXRST>; power-domains = <&cpg>; status = "disabled"; From d61a35b0a3e43ea91781c41e02046b7d73fb3f1e Mon Sep 17 00:00:00 2001 From: Claudiu Beznea Date: Wed, 20 May 2026 16:23:15 +0300 Subject: [PATCH 47/56] arm64: dts: renesas: r9a07g044: Add DMA properties to serial nodes Add DMA properties to the serial nodes on the RZ/G2L SoC. Signed-off-by: Claudiu Beznea Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260520132315.944117-1-claudiu.beznea@kernel.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a07g044.dtsi | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a07g044.dtsi b/arch/arm64/boot/dts/renesas/r9a07g044.dtsi index f40315a707d1..2ced800713fc 100644 --- a/arch/arm64/boot/dts/renesas/r9a07g044.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a07g044.dtsi @@ -504,6 +504,8 @@ scif0: serial@1004b800 { "bri", "dri", "tei"; clocks = <&cpg CPG_MOD R9A07G044_SCIF0_CLK_PCK>; clock-names = "fck"; + dmas = <&dmac 0x4e79>, <&dmac 0x4e7a>; + dma-names = "tx", "rx"; power-domains = <&cpg>; resets = <&cpg R9A07G044_SCIF0_RST_SYSTEM_N>; status = "disabled"; @@ -522,6 +524,8 @@ scif1: serial@1004bc00 { "bri", "dri", "tei"; clocks = <&cpg CPG_MOD R9A07G044_SCIF1_CLK_PCK>; clock-names = "fck"; + dmas = <&dmac 0x4e7d>, <&dmac 0x4e7e>; + dma-names = "tx", "rx"; power-domains = <&cpg>; resets = <&cpg R9A07G044_SCIF1_RST_SYSTEM_N>; status = "disabled"; @@ -540,6 +544,8 @@ scif2: serial@1004c000 { "bri", "dri", "tei"; clocks = <&cpg CPG_MOD R9A07G044_SCIF2_CLK_PCK>; clock-names = "fck"; + dmas = <&dmac 0x4e81>, <&dmac 0x4e82>; + dma-names = "tx", "rx"; power-domains = <&cpg>; resets = <&cpg R9A07G044_SCIF2_RST_SYSTEM_N>; status = "disabled"; @@ -558,6 +564,8 @@ scif3: serial@1004c400 { "bri", "dri", "tei"; clocks = <&cpg CPG_MOD R9A07G044_SCIF3_CLK_PCK>; clock-names = "fck"; + dmas = <&dmac 0x4e85>, <&dmac 0x4e86>; + dma-names = "tx", "rx"; power-domains = <&cpg>; resets = <&cpg R9A07G044_SCIF3_RST_SYSTEM_N>; status = "disabled"; @@ -576,6 +584,8 @@ scif4: serial@1004c800 { "bri", "dri", "tei"; clocks = <&cpg CPG_MOD R9A07G044_SCIF4_CLK_PCK>; clock-names = "fck"; + dmas = <&dmac 0x4e89>, <&dmac 0x4e8a>; + dma-names = "tx", "rx"; power-domains = <&cpg>; resets = <&cpg R9A07G044_SCIF4_RST_SYSTEM_N>; status = "disabled"; From 71e900344ada84fc55fb103950a0d4819f6c6e1c Mon Sep 17 00:00:00 2001 From: Nguyen Tran Date: Fri, 22 May 2026 19:19:57 +0200 Subject: [PATCH 48/56] arm64: dts: renesas: r8a779md: Add support for R-Car M3Le R8A779MD Geist Add support for the Geist board based on the Renesas R-Car R8A779MD (M3Le) SoC, a register-compatible variant of the R8A77965 (M3-N) with reduced set of peripherals. Reviewed-by: Geert Uytterhoeven Signed-off-by: Nguyen Tran Signed-off-by: Marek Vasut Link: https://patch.msgid.link/20260522172000.15096-1-marek.vasut+renesas@mailbox.org Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/Makefile | 1 + .../arm64/boot/dts/renesas/r8a779md-geist.dts | 720 ++++++++++++++++++ 2 files changed, 721 insertions(+) create mode 100644 arch/arm64/boot/dts/renesas/r8a779md-geist.dts diff --git a/arch/arm64/boot/dts/renesas/Makefile b/arch/arm64/boot/dts/renesas/Makefile index ca45d2857ea7..8bf155badd11 100644 --- a/arch/arm64/boot/dts/renesas/Makefile +++ b/arch/arm64/boot/dts/renesas/Makefile @@ -60,6 +60,7 @@ r8a77965-salvator-xs-panel-aa104xd12-dtbs := r8a77965-salvator-xs.dtb salvator-p dtb-$(CONFIG_ARCH_R8A77965) += r8a77965-salvator-xs-panel-aa104xd12.dtb dtb-$(CONFIG_ARCH_R8A77965) += r8a77965-ulcb.dtb dtb-$(CONFIG_ARCH_R8A77965) += r8a77965-ulcb-kf.dtb +dtb-$(CONFIG_ARCH_R8A77965) += r8a779md-geist.dtb dtb-$(CONFIG_ARCH_R8A77970) += r8a77970-eagle.dtb dtb-$(CONFIG_ARCH_R8A77970) += r8a77970-eagle-function-expansion.dtbo diff --git a/arch/arm64/boot/dts/renesas/r8a779md-geist.dts b/arch/arm64/boot/dts/renesas/r8a779md-geist.dts new file mode 100644 index 000000000000..0e4724336e73 --- /dev/null +++ b/arch/arm64/boot/dts/renesas/r8a779md-geist.dts @@ -0,0 +1,720 @@ +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +/* + * Device Tree Source for the Geist board with R-Car M3Le + * + * Copyright (C) 2025-2026 Renesas Electronics Corp. + */ + +/dts-v1/; +#include +#include +#include "r8a779md.dtsi" + +/ { + model = "Renesas Geist board based on r8a779md"; + compatible = "renesas,geist", "renesas,r8a779md", "renesas,r8a77965"; + + aliases { + serial0 = &scif2; + serial1 = &hscif1; + ethernet0 = &avb; + mmc0 = &sdhi2; + mmc1 = &sdhi0; + }; + + audio_clkout: audio-clkout { + /* + * This is same as <&rcar_sound 0> + * but needed to avoid cs2500/rcar_sound probe dead-lock + */ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <12288000>; + }; + + backlight: backlight { + compatible = "pwm-backlight"; + pwms = <&pwm1 0 50000>; + + brightness-levels = <256 128 64 16 8 4 0>; + default-brightness-level = <6>; + + power-supply = <®_12v>; + enable-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>; + }; + + chosen { + bootargs = "ignore_loglevel rw root=/dev/nfs ip=on"; + stdout-path = "serial0:115200n8"; + }; + + cvbs-in { + compatible = "composite-video-connector"; + label = "CVBS IN"; + + port { + cvbs_con: endpoint { + remote-endpoint = <&adv7482_ain7>; + }; + }; + }; + + hdmi-in { + compatible = "hdmi-connector"; + label = "HDMI IN"; + type = "a"; + + port { + hdmi_in_con: endpoint { + remote-endpoint = <&adv7482_hdmi>; + }; + }; + }; + + keys { + compatible = "gpio-keys"; + + pinctrl-0 = <&keys_pins>; + pinctrl-names = "default"; + + key-1 { + gpios = <&gpio5 17 GPIO_ACTIVE_LOW>; + linux,code = ; + label = "SW4-1"; + wakeup-source; + debounce-interval = <20>; + }; + + key-2 { + gpios = <&gpio5 20 GPIO_ACTIVE_LOW>; + linux,code = ; + label = "SW4-2"; + wakeup-source; + debounce-interval = <20>; + }; + + key-3 { + gpios = <&gpio5 22 GPIO_ACTIVE_LOW>; + linux,code = ; + label = "SW4-3"; + wakeup-source; + debounce-interval = <20>; + }; + + key-4 { + gpios = <&gpio5 23 GPIO_ACTIVE_LOW>; + linux,code = ; + label = "SW4-4"; + wakeup-source; + debounce-interval = <20>; + }; + + key-a { + gpios = <&gpio6 11 GPIO_ACTIVE_LOW>; + linux,code = ; + label = "TSW0"; + wakeup-source; + debounce-interval = <20>; + }; + + key-b { + gpios = <&gpio6 12 GPIO_ACTIVE_LOW>; + linux,code = ; + label = "TSW1"; + wakeup-source; + debounce-interval = <20>; + }; + + key-c { + gpios = <&gpio6 13 GPIO_ACTIVE_LOW>; + linux,code = ; + label = "TSW2"; + wakeup-source; + debounce-interval = <20>; + }; + }; + + memory@48000000 { + device_type = "memory"; + /* first 128MB is reserved for secure area. */ + reg = <0x0 0x48000000 0x0 0x78000000>; + }; + + memory@480000000 { + device_type = "memory"; + reg = <0x4 0x80000000 0x0 0x80000000>; + }; + + reg_1p8v: regulator-1p8v { + compatible = "regulator-fixed"; + regulator-name = "fixed-1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + regulator-always-on; + }; + + reg_3p3v: regulator-3p3v { + compatible = "regulator-fixed"; + regulator-name = "fixed-3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + reg_12v: regulator-12v { + compatible = "regulator-fixed"; + regulator-name = "fixed-12V"; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + regulator-boot-on; + regulator-always-on; + }; + + vbus0_usb2: regulator-vbus0-usb2 { + compatible = "regulator-fixed"; + + regulator-name = "USB20_VBUS0"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + + gpio = <&gpio6 16 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + vcc_sdhi0: regulator-vcc-sdhi0 { + compatible = "regulator-fixed"; + + regulator-name = "SDHI0 Vcc"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&gpio5 2 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + vccq_sdhi0: regulator-vccq-sdhi0 { + compatible = "regulator-gpio"; + + regulator-name = "SDHI0 VccQ"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + + gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>; + gpios-states = <1>; + states = <3300000 1>, <1800000 0>; + }; + + sound_card: sound { + compatible = "audio-graph-card"; + + label = "rcar-sound"; + dais = <&rsnd_port0>; /* AK4619 Audio Codec */ + }; + + x12_clk: x12-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24576000>; + }; + + /* External DU dot clocks */ + x21_clk: x21-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <33000000>; + }; + + x22_clk: x22-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <33000000>; + }; + + x23_clk: x23-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <25000000>; + }; + + x3013_clk: x3013-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <25000000>; + }; +}; + +&audio_clk_a { + clock-frequency = <22579200>; +}; + +&avb { + pinctrl-0 = <&avb_pins>; + pinctrl-names = "default"; + phy-handle = <&phy0>; + tx-internal-delay-ps = <2000>; + status = "okay"; + + phy0: ethernet-phy@0 { + compatible = "ethernet-phy-id0022.1622"; + rxc-skew-ps = <1500>; + reg = <0>; + interrupts-extended = <&gpio2 11 IRQ_TYPE_LEVEL_LOW>; + reset-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>; + reset-assert-us = <10000>; + reset-deassert-us = <300>; + }; +}; + +&csi40 { + status = "okay"; + + ports { + port@0 { + csi40_in: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&adv7482_txa>; + }; + }; + }; +}; + +&ehci0 { + dr_mode = "otg"; + status = "okay"; +}; + +&extalr_clk { + clock-frequency = <32768>; +}; + +&extal_clk { + clock-frequency = <16666666>; +}; + +&hscif1 { + pinctrl-0 = <&hscif1_pins>; + pinctrl-names = "default"; + + uart-has-rtscts; + /* Please only enable hscif1 or scif1 */ + status = "okay"; +}; + +&hsusb { + dr_mode = "otg"; + status = "okay"; +}; + +&i2c2 { + pinctrl-0 = <&i2c2_pins>; + pinctrl-names = "default"; + clock-frequency = <100000>; + status = "okay"; + + ak4619: codec@10 { + compatible = "asahi-kasei,ak4619"; + reg = <0x10>; + clocks = <&rcar_sound 3>; + clock-names = "mclk"; + #sound-dai-cells = <0>; + + port { + ak4619_endpoint: endpoint { + remote-endpoint = <&rsnd_endpoint0>; + }; + }; + }; + + /* Pin-to-pin, register map, and control compatible with CS2000 and CS2200 */ + cs2500: clock-controller@4f { + #clock-cells = <0>; + compatible = "cirrus,cs2500", "cirrus,cs2000-cp"; + reg = <0x4f>; + clocks = <&audio_clkout>, <&x12_clk>; + clock-names = "clk_in", "ref_clk"; + + assigned-clocks = <&cs2500>; + assigned-clock-rates = <24576000>; /* 1/1 divide */ + }; +}; + +&i2c4 { + clock-frequency = <400000>; + status = "okay"; + + versaclock3: clock-controller@68 { + compatible = "renesas,5p35023"; + reg = <0x68>; + #clock-cells = <1>; + clocks = <&x3013_clk>; + assigned-clocks = <&versaclock3 4>, <&versaclock3 5>; + assigned-clock-rates = <100000000>, <100000000>; + }; + + versaclock5: clock-controller@6a { + compatible = "idt,5p49v5923"; + reg = <0x6a>; + #clock-cells = <1>; + clocks = <&x23_clk>; + clock-names = "xin"; + }; + + video-receiver@70 { + compatible = "adi,adv7482"; + reg = <0x70 0x71 0x72 0x73 0x74 0x75 + 0x60 0x61 0x62 0x63 0x64 0x65>; + reg-names = "main", "dpll", "cp", "hdmi", "edid", "repeater", + "infoframe", "cbus", "cec", "sdp", "txa", "txb" ; + + interrupts-extended = <&gpio6 30 IRQ_TYPE_LEVEL_LOW>, + <&gpio6 31 IRQ_TYPE_LEVEL_LOW>; + interrupt-names = "intrq1", "intrq2"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@7 { + reg = <7>; + + adv7482_ain7: endpoint { + remote-endpoint = <&cvbs_con>; + }; + }; + + port@8 { + reg = <8>; + + adv7482_hdmi: endpoint { + remote-endpoint = <&hdmi_in_con>; + }; + }; + + port@a { + reg = <10>; + + adv7482_txa: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&csi40_in>; + }; + }; + }; + }; + + csa_vdd: adc@7c { + compatible = "maxim,max9611"; + reg = <0x7c>; + + shunt-resistor-micro-ohms = <5000>; + }; + + csa_dvfs: adc@7f { + compatible = "maxim,max9611"; + reg = <0x7f>; + + shunt-resistor-micro-ohms = <5000>; + }; +}; + +&i2c_dvfs { + status = "okay"; + + clock-frequency = <400000>; + + eeprom@50 { + compatible = "rohm,br24t01", "atmel,24c01"; + reg = <0x50>; + pagesize = <8>; + }; +}; + +&ohci0 { + dr_mode = "otg"; + status = "okay"; +}; + +&pcie_bus_clk { + status = "disabled"; +}; + +&pciec0 { + clocks = <&cpg CPG_MOD 319>, <&versaclock3 4>; + status = "okay"; +}; + +&pciec0_rp { + clocks = <&versaclock3 5>; +}; + +&pfc { + pinctrl-0 = <&scif_clk_pins>; + pinctrl-names = "default"; + + avb_pins: avb { + mux { + groups = "avb_link", "avb_mdio", "avb_mii"; + function = "avb"; + }; + + pins_mdio { + groups = "avb_mdio"; + drive-strength = <24>; + }; + + pins_mii_tx { + pins = "PIN_AVB_TX_CTL", "PIN_AVB_TXC", "PIN_AVB_TD0", + "PIN_AVB_TD1", "PIN_AVB_TD2", "PIN_AVB_TD3"; + drive-strength = <12>; + }; + }; + + hscif1_pins: hscif1 { + groups = "hscif1_data_a", "hscif1_ctrl_a"; + function = "hscif1"; + }; + + i2c2_pins: i2c2 { + groups = "i2c2_a"; + function = "i2c2"; + }; + + irq0_pins: irq0 { + groups = "intc_ex_irq0"; + function = "intc_ex"; + }; + + keys_pins: keys { + pins = "GP_5_17", "GP_5_20", "GP_5_22"; + bias-pull-up; + }; + + pwm1_pins: pwm1 { + groups = "pwm1_a"; + function = "pwm1"; + }; + + scif1_pins: scif1 { + groups = "scif1_data_a", "scif1_ctrl"; + function = "scif1"; + }; + + scif2_pins: scif2 { + groups = "scif2_data_a"; + function = "scif2"; + }; + + scif_clk_pins: scif_clk { + groups = "scif_clk_a"; + function = "scif_clk"; + }; + + sdhi0_pins: sd0 { + groups = "sdhi0_data4", "sdhi0_ctrl"; + function = "sdhi0"; + power-source = <3300>; + }; + + sdhi0_pins_uhs: sd0_uhs { + groups = "sdhi0_data4", "sdhi0_ctrl"; + function = "sdhi0"; + power-source = <1800>; + }; + + sdhi2_pins: sd2 { + groups = "sdhi2_data8", "sdhi2_ctrl", "sdhi2_ds"; + function = "sdhi2"; + power-source = <1800>; + }; + + sound_pins: sound { + groups = "ssi01239_ctrl", "ssi0_data", "ssi1_data_a"; + function = "ssi"; + }; + + sound_clk_pins: sound_clk { + groups = "audio_clk_a_a", "audio_clk_b_a", "audio_clk_c_a", + "audio_clkout_a", "audio_clkout3_a"; + function = "audio_clk"; + }; + + usb0_pins: usb0 { + groups = "usb0"; + function = "usb0"; + }; +}; + +&pwm1 { + pinctrl-0 = <&pwm1_pins>; + pinctrl-names = "default"; + + status = "okay"; +}; + +&rcar_sound { + pinctrl-0 = <&sound_pins>, <&sound_clk_pins>; + pinctrl-names = "default"; + + /* Single DAI */ + #sound-dai-cells = <0>; + + /* audio_clkout0/1/2/3 */ + #clock-cells = <1>; + clock-frequency = <12288000 11289600>; + + status = "okay"; + + /* update to */ + clocks = <&cpg CPG_MOD 1005>, + <&cpg CPG_MOD 1006>, <&cpg CPG_MOD 1007>, + <&cpg CPG_MOD 1008>, <&cpg CPG_MOD 1009>, + <&cpg CPG_MOD 1010>, <&cpg CPG_MOD 1011>, + <&cpg CPG_MOD 1012>, <&cpg CPG_MOD 1013>, + <&cpg CPG_MOD 1014>, <&cpg CPG_MOD 1015>, + <&cpg CPG_MOD 1022>, <&cpg CPG_MOD 1023>, + <&cpg CPG_MOD 1024>, <&cpg CPG_MOD 1025>, + <&cpg CPG_MOD 1026>, <&cpg CPG_MOD 1027>, + <&cpg CPG_MOD 1028>, <&cpg CPG_MOD 1029>, + <&cpg CPG_MOD 1030>, <&cpg CPG_MOD 1031>, + <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>, + <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>, + <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>, + <&audio_clk_a>, <&cs2500>, + <&audio_clk_c>, + <&cpg CPG_MOD 922>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + rsnd_port0: port@0 { + reg = <0>; + + rsnd_endpoint0: endpoint { + remote-endpoint = <&ak4619_endpoint>; + dai-format = "left_j"; + bitclock-master = <&rsnd_endpoint0>; + frame-master = <&rsnd_endpoint0>; + playback = <&ssi0>, <&src0>, <&dvc0>; + capture = <&ssi1>, <&src1>, <&dvc1>; + }; + }; + }; +}; + +&rwdt { + timeout-sec = <60>; + status = "okay"; +}; + +&scif1 { + pinctrl-0 = <&scif1_pins>; + pinctrl-names = "default"; + + uart-has-rtscts; + /* Please only enable hscif1 or scif1 */ + /* status = "okay"; */ +}; + +&scif2 { + pinctrl-0 = <&scif2_pins>; + pinctrl-names = "default"; + + status = "okay"; +}; + +&scif_clk { + clock-frequency = <14745600>; +}; + +&sdhi0 { + pinctrl-0 = <&sdhi0_pins>; + pinctrl-1 = <&sdhi0_pins_uhs>; + pinctrl-names = "default", "state_uhs"; + + vmmc-supply = <&vcc_sdhi0>; + vqmmc-supply = <&vccq_sdhi0>; + cd-gpios = <&gpio3 12 GPIO_ACTIVE_LOW>; + wp-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>; + bus-width = <4>; + sd-uhs-sdr50; + sd-uhs-sdr104; + status = "okay"; +}; + +&sdhi2 { + /* used for on-board 8bit eMMC */ + pinctrl-0 = <&sdhi2_pins>; + pinctrl-1 = <&sdhi2_pins>; + pinctrl-names = "default", "state_uhs"; + + vmmc-supply = <®_3p3v>; + vqmmc-supply = <®_1p8v>; + bus-width = <8>; + mmc-hs200-1_8v; + no-sd; + no-sdio; + non-removable; + fixed-emmc-driver-type = <1>; + full-pwr-cycle-in-suspend; + status = "okay"; +}; + +&ssi1 { + shared-pin; +}; + +&usb_extal_clk { + clock-frequency = <50000000>; +}; + +&usb2_phy0 { + pinctrl-0 = <&usb0_pins>; + pinctrl-names = "default"; + + vbus-supply = <&vbus0_usb2>; + status = "okay"; +}; + +&vin0 { + status = "okay"; +}; + +&vin1 { + status = "okay"; +}; + +&vin2 { + status = "okay"; +}; + +&vin3 { + status = "okay"; +}; + +&vin4 { + status = "okay"; +}; + +&vin5 { + status = "okay"; +}; + +&vin6 { + status = "okay"; +}; + +&vin7 { + status = "okay"; +}; + +&vspb { + status = "okay"; +}; + +&vspi0 { + status = "okay"; +}; From 0bbc248fa2cc834392f128bfd127a03f6dbe9d55 Mon Sep 17 00:00:00 2001 From: Biju Das Date: Sun, 24 May 2026 10:20:11 +0100 Subject: [PATCH 49/56] arm64: dts: renesas: rzg3e-smarc-som: Sort GMAC pinmux entries Sort the pinmux entries for both GMAC ctrl nodes in port order (A/B/C and D/E/F respectively) and remove the extra blank line before the second pinmux assignment. Signed-off-by: Biju Das Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260524092016.46346-1-biju.das.jz@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- .../boot/dts/renesas/rzg3e-smarc-som.dtsi | 49 +++++++++---------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi index d978619155d2..2e1d9686df88 100644 --- a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi +++ b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi @@ -193,20 +193,20 @@ clk { }; ctrl { - pinmux = , /* MDC */ - , /* MDIO */ - , /* PHY_INTR (IRQ2) */ - , /* RXD3 */ - , /* RXD2 */ - , /* RXD1 */ - , /* RXD0 */ - , /* RXC */ + pinmux = , /* MDIO */ + , /* MDC */ , /* RX_CTL */ - , /* TXD3 */ - , /* TXD2 */ - , /* TXD1 */ + , /* TX_CTL */ + , /* RXC */ , /* TXD0 */ - ; /* TX_CTL */ + , /* TXD1 */ + , /* TXD2 */ + , /* TXD3 */ + , /* RXD0 */ + , /* RXD1 */ + , /* RXD2 */ + , /* RXD3 */ + ; /* PHY_INTR (IRQ2) */ }; }; @@ -217,21 +217,20 @@ clk { }; ctrl { - - pinmux = , /* MDC */ - , /* MDIO */ - , /* PHY_INTR (IRQ15) */ - , /* RXD3 */ - , /* RXD2 */ - , /* RXD1 */ - , /* RXD0 */ - , /* RXC */ + pinmux = , /* MDIO */ + , /* MDC */ , /* RX_CTL */ - , /* TXD3 */ - , /* TXD2 */ - , /* TXD1 */ + , /* TX_CTL */ + , /* RXC */ , /* TXD0 */ - ; /* TX_CTL */ + , /* TXD1 */ + , /* TXD2 */ + , /* TXD3 */ + , /* RXD0 */ + , /* RXD1 */ + , /* RXD2 */ + , /* RXD3 */ + ; /* PHY_INTR (IRQ15) */ }; }; From f0b0d1658a23560efb9e0aef012898c5c59dc447 Mon Sep 17 00:00:00 2001 From: Lad Prabhakar Date: Tue, 26 May 2026 21:40:43 +0100 Subject: [PATCH 50/56] arm64: dts: renesas: r9a09g077: Add xSPI nodes Add device tree nodes for the two xSPI (Expanded SPI) controllers integrated into the RZ/T2H (R9A09G077) SoC. Signed-off-by: Lad Prabhakar Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260526204045.3481604-2-prabhakar.mahadev-lad.rj@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a09g077.dtsi | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g077.dtsi b/arch/arm64/boot/dts/renesas/r9a09g077.dtsi index fe5d206d4def..40494159831d 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g077.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g077.dtsi @@ -1006,6 +1006,46 @@ mii_conv3: mii-conv@3 { }; }; + xspi0: spi@801c0000 { + compatible = "renesas,r9a09g077-xspi", + "renesas,r9a09g047-xspi"; + reg = <0 0x801c0000 0 0x1000>, + <0 0x40000000 0 0x10000000>; + reg-names = "regs", "dirmap"; + interrupts = , + ; + interrupt-names = "pulse", "err_pulse"; + clocks = <&cpg CPG_MOD 4>, + <&cpg CPG_CORE R9A09G077_XSPI_CLK0>; + clock-names = "ahb", "spi"; + resets = <&cpg 4>; + reset-names = "hresetn"; + power-domains = <&cpg>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + xspi1: spi@801c1000 { + compatible = "renesas,r9a09g077-xspi", + "renesas,r9a09g047-xspi"; + reg = <0 0x801c1000 0 0x1000>, + <0 0x50000000 0 0x10000000>; + reg-names = "regs", "dirmap"; + interrupts = , + ; + interrupt-names = "pulse", "err_pulse"; + clocks = <&cpg CPG_MOD 5>, + <&cpg CPG_CORE R9A09G077_XSPI_CLK1>; + clock-names = "ahb", "spi"; + resets = <&cpg 5>; + reset-names = "hresetn"; + power-domains = <&cpg>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + cpg: clock-controller@80280000 { compatible = "renesas,r9a09g077-cpg-mssr"; reg = <0 0x80280000 0 0x10000>, From 8fa0a1ae4f434be1b8ea6223636c065c8e39d09b Mon Sep 17 00:00:00 2001 From: Lad Prabhakar Date: Tue, 26 May 2026 21:40:44 +0100 Subject: [PATCH 51/56] arm64: dts: renesas: r9a09g087: Add xSPI nodes Add device tree nodes for the two xSPI (Expanded SPI) controllers integrated into the RZ/N2H (R9A09G087) SoC. Signed-off-by: Lad Prabhakar Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260526204045.3481604-3-prabhakar.mahadev-lad.rj@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- arch/arm64/boot/dts/renesas/r9a09g087.dtsi | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g087.dtsi b/arch/arm64/boot/dts/renesas/r9a09g087.dtsi index c64b532f3d23..e8d4f76949cc 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g087.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g087.dtsi @@ -1009,6 +1009,46 @@ mii_conv3: mii-conv@3 { }; }; + xspi0: spi@801c0000 { + compatible = "renesas,r9a09g087-xspi", + "renesas,r9a09g047-xspi"; + reg = <0 0x801c0000 0 0x1000>, + <0 0x40000000 0 0x10000000>; + reg-names = "regs", "dirmap"; + interrupts = , + ; + interrupt-names = "pulse", "err_pulse"; + clocks = <&cpg CPG_MOD 4>, + <&cpg CPG_CORE R9A09G087_XSPI_CLK0>; + clock-names = "ahb", "spi"; + resets = <&cpg 4>; + reset-names = "hresetn"; + power-domains = <&cpg>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + xspi1: spi@801c1000 { + compatible = "renesas,r9a09g087-xspi", + "renesas,r9a09g047-xspi"; + reg = <0 0x801c1000 0 0x1000>, + <0 0x50000000 0 0x10000000>; + reg-names = "regs", "dirmap"; + interrupts = , + ; + interrupt-names = "pulse", "err_pulse"; + clocks = <&cpg CPG_MOD 5>, + <&cpg CPG_CORE R9A09G087_XSPI_CLK1>; + clock-names = "ahb", "spi"; + resets = <&cpg 5>; + reset-names = "hresetn"; + power-domains = <&cpg>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + cpg: clock-controller@80280000 { compatible = "renesas,r9a09g087-cpg-mssr"; reg = <0 0x80280000 0 0x10000>, From f4418ce75760e5f546a1bdd0876056febc430b1f Mon Sep 17 00:00:00 2001 From: Lad Prabhakar Date: Wed, 27 May 2026 21:24:30 +0100 Subject: [PATCH 52/56] arm64: dts: renesas: rzt2h-n2h-evk: Enable xSPI nodes Enable the xSPI0 and xSPI1 controllers on the RZ/T2H N2H EVK board. Configure the xSPI0 controller interface to 1-bit (x1) mode, even though the connected MX25LW51245 octal flash device supports octal mode. Add a corresponding inline hardware comment detailing this restriction; operating in octal mode causes the BootROM to fail loading the first-stage bootloader following a Watchdog Timer (WDT) reset. Configure the xSPI1 controller interface connected to the AT25SF128A flash device for 4-bit (x4) mode to utilize all available data lines. Signed-off-by: Lad Prabhakar Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260527202430.606341-1-prabhakar.mahadev-lad.rj@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- .../dts/renesas/r9a09g077m44-rzt2h-evk.dts | 15 +++ .../dts/renesas/rzt2h-n2h-evk-common.dtsi | 127 ++++++++++++++++++ 2 files changed, 142 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts b/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts index 4c0e52850ca9..e9ed2de128f6 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts +++ b/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts @@ -345,3 +345,18 @@ usb_pins: usb-pins { }; }; +/* + * XSPI0 Pin Configuration: + * ------------------------ + * Signal | Pin | SW5 + * -----------|---------|--------------- + * XSPI0_ECS | P07_5 | 5: OFF, 6: ON + */ +&xspi0_pins { + ecs-pins { + pinmux = ; /* XSPI0_ECS0 */ + drive-strength-microamp = <2500>; + input-schmitt-disable; + slew-rate = <0>; + }; +}; diff --git a/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi b/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi index ba0f5d12772c..e86e6d3aa8a3 100644 --- a/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi +++ b/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi @@ -5,6 +5,7 @@ * Copyright (C) 2025 Renesas Electronics Corp. */ +#include #include #include #include @@ -20,6 +21,8 @@ aliases { mmc0 = &sdhi0; mmc1 = &sdhi1; serial0 = &sci0; + spi0 = &xspi0; + spi1 = &xspi1; }; chosen { @@ -456,6 +459,45 @@ ctrl-pins { input-schmitt-disable; }; }; + + xspi0_pins: xspi0-group { + ctrl-data-pins { + pinmux = , /* XSPI0_CKP */ + , /* XSPI0_CS0 */ + , /* XSPI0_DS */ + , /* XSPI0_IO0 */ + , /* XSPI0_IO1 */ + , /* XSPI0_IO2 */ + , /* XSPI0_IO3 */ + , /* XSPI0_IO4 */ + , /* XSPI0_IO5 */ + , /* XSPI0_IO6 */ + , /* XSPI0_IO7 */ + ; /* XSPI0_RESET0 */ + drive-strength-microamp = <9000>; + input-schmitt-disable; + slew-rate = <1>; + }; + }; + + /* + * XSPI1 Pin Configuration: + * ------------------------ + * Signal | Pin | RZ/T2H (SW1) | RZ/N2H (DSW2) + * -----------|----------|---------------|--------------- + * ALL | Multiple | 6: ON | 6: ON + */ + xspi1_pins: xspi1-pins { + pinmux = , /* XSPI1_CKP */ + , /* XSPI1_CS0 */ + , /* XSPI1_IO0 */ + , /* XSPI1_IO1 */ + , /* XSPI1_IO2 */ + ; /* XSPI1_IO3 */ + drive-strength-microamp = <9000>; + input-schmitt-enable; + slew-rate = <1>; + }; }; &sci0 { @@ -520,3 +562,88 @@ &wdt2 { timeout-sec = <60>; }; +&xspi0 { + pinctrl-0 = <&xspi0_pins>; + pinctrl-names = "default"; + status = "okay"; + + assigned-clocks = <&cpg CPG_CORE R9A09G077_XSPI_CLK0>; + assigned-clock-rates = <50000000>; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + vcc-supply = <®_3p3v>; + m25p,fast-read; + /* + * Configure for 1-bit mode to prevent the BootROM from failing + * to load the first-stage bootloader following a watchdog reset. + */ + spi-tx-bus-width = <1>; + spi-rx-bus-width = <1>; + spi-max-frequency = <50000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "bl2-0"; + reg = <0x00000000 0x00060000>; + read-only; + }; + + partition@60000 { + label = "fip-0"; + reg = <0x00060000 0x007a0000>; + read-only; + }; + + partition@800000 { + label = "user-0"; + reg = <0x800000 0x003800000>; + }; + }; + }; +}; + +&xspi1 { + pinctrl-0 = <&xspi1_pins>; + pinctrl-names = "default"; + status = "okay"; + + assigned-clocks = <&cpg CPG_CORE R9A09G077_XSPI_CLK1>; + assigned-clock-rates = <50000000>; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + vcc-supply = <®_3p3v>; + m25p,fast-read; + spi-tx-bus-width = <4>; + spi-rx-bus-width = <4>; + spi-max-frequency = <50000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "bl2-1"; + reg = <0x00000000 0x00060000>; + }; + + partition@60000 { + label = "fip-1"; + reg = <0x00060000 0x007a0000>; + }; + + partition@800000 { + label = "user-1"; + reg = <0x800000 0x800000>; + }; + }; + }; +}; From 662ce0d73322d17614b86b641aa0ff27a254c87b Mon Sep 17 00:00:00 2001 From: Biju Das Date: Thu, 28 May 2026 08:02:34 +0100 Subject: [PATCH 53/56] arm64: dts: renesas: r9a08g046l48-smarc: Add gpio keys RZ/G3L SMARC EVK has 3 user buttons called USER_SW1, USER_SW2 and USER_SW3. Instantiate the gpio-keys driver for these buttons by removing place holders and replacing proper pins for the buttons. USER_SW{1,2,3} are configured as wakeup-sources, so they can wake up the system during s2idle. Signed-off-by: Biju Das Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260528070239.33352-2-biju.das.jz@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- .../boot/dts/renesas/r9a08g046l48-smarc.dts | 26 ++++++++++++++----- .../boot/dts/renesas/rzg3l-smarc-som.dtsi | 17 ++++++++++++ 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts b/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts index 0ae052238b3b..ef00e316fbde 100644 --- a/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts +++ b/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts @@ -7,10 +7,18 @@ /dts-v1/; -/* Add place holder to avoid compilation error with renesas-smarc2.dtsi */ -#define KEY_1_GPIO 1 -#define KEY_2_GPIO 2 -#define KEY_3_GPIO 3 +/* Switch selection settings */ +#define RZ_BOOT_MODE3 1 +#define SW_DPI_EN 0 +#define SW_GPIO4 1 + +#define PMOD_GPIO4 0 +#define PMOD_GPIO6 0 +#define PMOD_GPIO7 0 + +#define KEY_1_GPIO RZG3L_GPIO(J, 3) +#define KEY_2_GPIO RZG3L_GPIO(6, 4) +#define KEY_3_GPIO RZG3L_GPIO(6, 5) #include #include @@ -30,11 +38,17 @@ aliases { }; &keys { - status = "disabled"; - +#if !RZ_BOOT_MODE3 || !SW_GPIO4 || PMOD_GPIO4 /delete-node/ key-1; +#endif + +#if SW_DPI_EN || PMOD_GPIO6 /delete-node/ key-2; +#endif + +#if SW_DPI_EN || PMOD_GPIO7 /delete-node/ key-3; +#endif }; &pinctrl { diff --git a/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi index 7770de2064d9..06c6ccac5ad2 100644 --- a/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi +++ b/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi @@ -5,6 +5,23 @@ * Copyright (C) 2026 Renesas Electronics Corp. */ +/* + * Please set the below switch position on the SoM and the corresponding macro + * on the board DTS: + * + * Switch position SYS.5, Macro SW_DPI_EN: + * 0 - Select multiple SMARC signals active + * 1 - Select LCD + * + * Switch position BOOT.1, Macro RZ_BOOT_MODE3: + * 0 - Select JTAG enabled + * 1 - Select SDIO {CD,IOVS,PWEN} and GPIO4 Active + * + * Switch position SW_GPIO4, Macro SW_GPIO4: + * 0 - Select RZ_VBAT_TAMPER (position 2-1) + * 1 - Select GPIO4 (position 2-3) + */ + / { compatible = "renesas,rzg3l-smarcm", "renesas,r9a08g046l48", "renesas,r9a08g046"; From 3f9c7afdfa60eb726c7f8fb8529ab6519a104db8 Mon Sep 17 00:00:00 2001 From: Biju Das Date: Thu, 28 May 2026 08:02:35 +0100 Subject: [PATCH 54/56] arm64: dts: renesas: r9a08g046l48-smarc: Enable I2C{2,3} devices Enable I2C{2,3} on the RZ/G3L SMARC EVK board. I2C3 is enabled by setting SW SYS.2 to the OFF position. Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das Link: https://patch.msgid.link/20260528070239.33352-3-biju.das.jz@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- .../boot/dts/renesas/r9a08g046l48-smarc.dts | 29 +++++++++++++++++++ .../boot/dts/renesas/rzg3l-smarc-som.dtsi | 4 +++ 2 files changed, 33 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts b/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts index ef00e316fbde..1512b7df39bd 100644 --- a/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts +++ b/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts @@ -11,6 +11,7 @@ #define RZ_BOOT_MODE3 1 #define SW_DPI_EN 0 #define SW_GPIO4 1 +#define SW_I3C_EN 0 #define PMOD_GPIO4 0 #define PMOD_GPIO6 0 @@ -33,10 +34,28 @@ / { "renesas,r9a08g046l48", "renesas,r9a08g046"; aliases { + i2c2 = &i2c2; + i2c3 = &i2c3; serial3 = &scif0; }; }; +&i2c2 { + pinctrl-0 = <&i2c2_pins>; + pinctrl-names = "default"; + + status = "okay"; +}; + +#if !SW_I3C_EN +&i2c3 { + pinctrl-0 = <&i2c3_pins>; + pinctrl-names = "default"; + + status = "okay"; +}; +#endif + &keys { #if !RZ_BOOT_MODE3 || !SW_GPIO4 || PMOD_GPIO4 /delete-node/ key-1; @@ -52,6 +71,16 @@ &keys { }; &pinctrl { + i2c2_pins: i2c2 { + pinmux = , /* RIIC2_SCL */ + ; /* RIIC2_SDA */ + }; + + i2c3_pins: i2c3 { + pinmux = , /* RIIC3_SCL */ + ; /* RIIC3_SDA */ + }; + scif0_pins: scif0 { pins = "SCIF0_TXD", "SCIF0_RXD"; power-source = <1800>; diff --git a/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi index 06c6ccac5ad2..17bf44778398 100644 --- a/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi +++ b/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi @@ -9,6 +9,10 @@ * Please set the below switch position on the SoM and the corresponding macro * on the board DTS: * + * Switch position SYS.2, Macro SW_I3C_EN: + * 0 - SMARC_I2C_GP is enabled + * 1 - I3C is enabled + * * Switch position SYS.5, Macro SW_DPI_EN: * 0 - Select multiple SMARC signals active * 1 - Select LCD From 80e32321c3df7bec3029725c526935493939f34c Mon Sep 17 00:00:00 2001 From: Biju Das Date: Thu, 28 May 2026 08:45:44 +0100 Subject: [PATCH 55/56] arm64: dts: renesas: rzg3l-smarc-som: Enable Versa clock generator The RZ/G3L SMARC SoM has a Versa 5P35023B clock generator to generate the following clocks: - ref: Not connected, - se1: AUDIO_MCK (11.2896 or 12.2880 MHz), - se2: RZ_AUDIO_CLK_B (11.2896 MHz), - se3: RZ_AUDIO_CLK_C (12.2880 MHz), - diff{1,1B}: ET{0,1}_PHY_CLK (25 MHz), - diff2{2,2B}: Not connected. Enable the Vversa 5P35023B clock generator on the RZ/G3L SoM DTSI. Signed-off-by: Biju Das Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260528074615.91110-2-biju.das.jz@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- .../boot/dts/renesas/rzg3l-smarc-som.dtsi | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi index 17bf44778398..5e58e08e7fad 100644 --- a/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi +++ b/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi @@ -40,6 +40,12 @@ memory@48000000 { /* First 128MiB is reserved for secure area. */ reg = <0x0 0x48000000 0x0 0x78000000>; }; + + x2_clk: x2-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24000000>; + }; }; ð0 { @@ -75,6 +81,18 @@ &extal_clk { &i2c0 { pinctrl-0 = <&i2c0_pins>; pinctrl-names = "default"; + + versa3: clock-generator@68 { + compatible = "renesas,5p35023"; + reg = <0x68>; + #clock-cells = <1>; + clocks = <&x2_clk>; + + assigned-clocks = <&versa3 1>, <&versa3 2>, + <&versa3 3>, <&versa3 4>; + assigned-clock-rates = <12288000>, <11289600>, + <12288000>, <25000000>; + }; }; &mdio0 { From 0d4ed954061efc3e47fa889d3de0675f933f438f Mon Sep 17 00:00:00 2001 From: Biju Das Date: Thu, 28 May 2026 08:45:45 +0100 Subject: [PATCH 56/56] arm64: dts: renesas: r9a08g046l48-smarc: Enable audio Enable audio on the RZ/G3L SMARC EVK by linking SSI0 with the DA7212 audio CODEC. The SSI0 signals are multiplexed with SD2 and are selected by switch SW_SD2_EN#. Add regulator nodes regulator-{1p8v,3p3v} to the SoM DTSI for reuse by eMMC. Signed-off-by: Biju Das Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260528074615.91110-3-biju.das.jz@bp.renesas.com Signed-off-by: Geert Uytterhoeven --- .../boot/dts/renesas/r9a08g046l48-smarc.dts | 72 +++++++++++++++++++ .../boot/dts/renesas/rzg3l-smarc-som.dtsi | 22 ++++++ 2 files changed, 94 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts b/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts index 1512b7df39bd..32d3b08a3cf3 100644 --- a/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts +++ b/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts @@ -9,6 +9,7 @@ /* Switch selection settings */ #define RZ_BOOT_MODE3 1 +#define SW_SD2_EN 0 #define SW_DPI_EN 0 #define SW_GPIO4 1 #define SW_I3C_EN 0 @@ -38,6 +39,32 @@ aliases { i2c3 = &i2c3; serial3 = &scif0; }; + +#if !SW_SD2_EN && !SW_I3C_EN + snd_rzg3l: sound { + compatible = "simple-audio-card"; + simple-audio-card,name = "snd_rzg3l"; + #address-cells = <1>; + #size-cells = <0>; + + ssi_link_play: simple-audio-card,dai-link@0 { + reg = <0>; + format = "i2s"; + bitclock-master = <&cpu_dai>; + frame-master = <&cpu_dai>; + mclk-fs = <256>; + + cpu_dai: cpu { + sound-dai = <&ssi0>; + }; + + codec_dai: codec { + sound-dai = <&da7212>; + clocks = <&versa3 1>; + }; + }; + }; +#endif }; &i2c2 { @@ -53,6 +80,27 @@ &i2c3 { pinctrl-names = "default"; status = "okay"; + + da7212: codec@1a { + compatible = "dlg,da7212"; + reg = <0x1a>; + + clocks = <&versa3 1>; + clock-names = "mclk"; + + #sound-dai-cells = <0>; + + dlg,micbias1-lvl = <2500>; + dlg,micbias2-lvl = <2500>; + dlg,dmic-data-sel = "lrise_rfall"; + dlg,dmic-samplephase = "between_clkedge"; + dlg,dmic-clkrate = <3000000>; + + VDDA-supply = <®_1p8v>; + VDDSP-supply = <®_3p3v>; + VDDMIC-supply = <®_3p3v>; + VDDIO-supply = <®_1p8v>; + }; }; #endif @@ -71,6 +119,11 @@ &keys { }; &pinctrl { + audio_clk_pins: audio-clock { + pinmux = , /* AUDIO_CLK_B */ + ; /* AUDIO_CLK_C */ + }; + i2c2_pins: i2c2 { pinmux = , /* RIIC2_SCL */ ; /* RIIC2_SDA */ @@ -85,9 +138,28 @@ scif0_pins: scif0 { pins = "SCIF0_TXD", "SCIF0_RXD"; power-source = <1800>; }; + + ssi0_pins: ssi0 { + pinmux = , /* SSIF0_RXD */ + , /* SSIF0_BCK */ + , /* SSIF0_RCK */ + ; /* SSIF0_TXD */ + }; }; &scif0 { pinctrl-0 = <&scif0_pins>; pinctrl-names = "default"; }; + +#if !SW_SD2_EN +&ssi0 { + clocks = <&cpg CPG_MOD R9A08G046_SSI0_PCLK2>, + <&cpg CPG_MOD R9A08G046_SSI0_PCLK_SFR>, + <&versa3 2>, <&versa3 3>; + pinctrl-0 = <&audio_clk_pins>, <&ssi0_pins>; + pinctrl-names = "default"; + + status = "okay"; +}; +#endif diff --git a/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi index 5e58e08e7fad..091a227233cb 100644 --- a/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi +++ b/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi @@ -13,6 +13,10 @@ * 0 - SMARC_I2C_GP is enabled * 1 - I3C is enabled * + * Switch position SYS.4, Macro SW_SD2_EN: + * 0 - Select I2S0 + * 1 - Select SD2 + * * Switch position SYS.5, Macro SW_DPI_EN: * 0 - Select multiple SMARC signals active * 1 - Select LCD @@ -41,6 +45,24 @@ memory@48000000 { reg = <0x0 0x48000000 0x0 0x78000000>; }; + reg_1p8v: regulator-1p8v { + compatible = "regulator-fixed"; + regulator-name = "fixed-1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + regulator-always-on; + }; + + reg_3p3v: regulator-3p3v { + compatible = "regulator-fixed"; + regulator-name = "fixed-3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + x2_clk: x2-clock { compatible = "fixed-clock"; #clock-cells = <0>;