[PATCH RFC v2 0/9] Add System Controller support for RZ/T2H and RZ/N2H SoCs
Prabhakar <[email protected]>
| Newsgroups | org.kernel.vger.linux-watchdog,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-renesas-soc |
|---|---|
| Message-ID | <[email protected]> |
From: Lad Prabhakar <[email protected]> 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. Patches have been rebased on top of next-20260701. v1->v2: - Updated commit message for patch #1 - Made use of for_each_child_of_node_scoped - Moved sysc_init() to the end of the probe function v1: https://lore.kernel.org/all/[email protected]/ 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 | 164 ++++++++++++++++++ drivers/clk/renesas/renesas-cpg-mssr.c | 3 + drivers/clk/renesas/renesas-cpg-mssr.h | 1 + drivers/watchdog/Kconfig | 1 + drivers/watchdog/rzv2h_wdt.c | 104 +++++++++-- 10 files changed, 375 insertions(+), 44 deletions(-) -- 2.54.0