[RFC PATCH 0/9] Add System Controller support for RZ/T2H and RZ/N2H SoCs
From: Prabhakar
Date: Mon May 11 2026 - 14:51:26 EST
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
Hi All,
This series adds support for the System Controller (SYSC) blocks found on
the Renesas RZ/T2H and RZ/N2H SoCs. These blocks handle critical low-power
management and access control functions.
Hardware Architecture & Dependency Challenges:
----------------------------------------------
The SYSC in these SoCs is a multi-functional block responsible for:
- Clock & Reset Control
- Low Power Management
- Clock Monitor (CLMA)
- Access Control
A key architectural detail is that these SYSC blocks are physically located
within the CPG/MSSR (Clock Pulse Generator / Module Standby Software Reset)
address space. While the CPG/MSSR driver is already implemented and
functional for these SoCs, the integration of SYSC adds a layer of
complexity due to a cyclic dependency:
- SYSC requires CPG: The system controller needs a clock to operate.
- CPG requires SYSC: Access control registers within the SYSC contain
bits necessary to control the PLLs managed by the CPG.
If implemented as a completely separate top-level system controller node, we
would face a cyclic dependency between the CPG and SYSC drivers during the
boot process.
Proposed Implementation
----------------------------
To resolve this, the SYSC blocks are represented as child nodes of the
CPG/MSSR controller in the device tree. The SYSC regmap is registered
directly against the CPG device node. This hierarchy correctly models the
hardware address space while allowing the drivers to share resources
without deadlock.
I am sending this as an RFC specifically to get feedback on the
implementation of the SYSC as child nodes of the CPG to resolve the
dependency cycle.
I have also included patches which updates the WDT driver to use
the SYS syscon for register access.
Cheers,
Prabhakar
Lad Prabhakar (9):
dt-bindings: clock: renesas,cpg-mssr: Support RZ/T2H system
controllers
clk: renesas: r9a09g077: Add SYSC regmap support
arm64: dts: renesas: r9a09g077: Add system controller child nodes
arm64: dts: renesas: r9a09g087: Add system controller child nodes
dt-bindings: watchdog: renesas,r9a09g057-wdt: Add SYS syscon support
watchdog: rzv2h: Refactor WDTDCR start/stop handling
watchdog: rzv2h: Add syscon support for RZ/T2H and RZ/N2H WDT control
register
arm64: dts: renesas: r9a09g077: Use SYS syscon for WDTDCR access
arm64: dts: renesas: r9a09g087: Use SYS syscon for WDTDCR access
.../bindings/clock/renesas,cpg-mssr.yaml | 39 ++++
.../watchdog/renesas,r9a09g057-wdt.yaml | 29 ++-
arch/arm64/boot/dts/renesas/r9a09g077.dtsi | 38 ++--
arch/arm64/boot/dts/renesas/r9a09g087.dtsi | 38 ++--
drivers/clk/renesas/Kconfig | 2 +
drivers/clk/renesas/r9a09g077-cpg.c | 180 ++++++++++++++++++
drivers/clk/renesas/renesas-cpg-mssr.c | 6 +
drivers/clk/renesas/renesas-cpg-mssr.h | 1 +
drivers/watchdog/Kconfig | 1 +
drivers/watchdog/rzv2h_wdt.c | 104 ++++++++--
10 files changed, 394 insertions(+), 44 deletions(-)
--
2.54.0