* [PATCH 6.1.y-cip 1/8] dt-bindings: watchdog: renesas,wdt: Document RZ/V2H(P) SoC
2025-06-23 10:27 [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT Tommaso Merciai
@ 2025-06-23 10:27 ` Tommaso Merciai
2025-06-23 10:27 ` [PATCH 6.1.y-cip 2/8] watchdog: Add Watchdog Timer driver for RZ/V2H(P) Tommaso Merciai
` (8 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: Tommaso Merciai @ 2025-06-23 10:27 UTC (permalink / raw)
To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek
Cc: Biju Das, Lad Prabhakar, tomm.merciai
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
commit 892067cda23d02e1d5c4d90e504e9c8caff6f21c upstream.
Add support for the Watchdog Timer (WDT) hardware found in the Renesas
RZ/V2H(P) SoC to the `renesas,wdt` device tree bindings.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20240829193831.80768-2-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
---
.../bindings/watchdog/renesas,wdt.yaml | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml b/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
index 26b1815a6753..62ffba8545f9 100644
--- a/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
+++ b/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
@@ -73,6 +73,8 @@ properties:
- renesas,r8a779g0-wdt # R-Car V4H
- const: renesas,rcar-gen4-wdt # R-Car Gen4
+ - const: renesas,r9a09g057-wdt # RZ/V2H(P)
+
reg:
maxItems: 1
@@ -111,7 +113,6 @@ properties:
required:
- compatible
- reg
- - interrupts
- clocks
allOf:
@@ -135,6 +136,7 @@ allOf:
compatible:
contains:
enum:
+ - renesas,r9a09g057-wdt
- renesas,rzg2l-wdt
- renesas,rzv2m-wdt
then:
@@ -169,6 +171,19 @@ allOf:
interrupts:
maxItems: 1
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: renesas,r9a09g057-wdt
+ then:
+ properties:
+ interrupts: false
+ interrupt-names: false
+ else:
+ required:
+ - interrupts
+
additionalProperties: false
examples:
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* [PATCH 6.1.y-cip 2/8] watchdog: Add Watchdog Timer driver for RZ/V2H(P)
2025-06-23 10:27 [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT Tommaso Merciai
2025-06-23 10:27 ` [PATCH 6.1.y-cip 1/8] dt-bindings: watchdog: renesas,wdt: Document RZ/V2H(P) SoC Tommaso Merciai
@ 2025-06-23 10:27 ` Tommaso Merciai
2025-06-23 10:27 ` [PATCH 6.1.y-cip 3/8] clk: renesas: r9a09g047: Add WDT clocks and resets Tommaso Merciai
` (7 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: Tommaso Merciai @ 2025-06-23 10:27 UTC (permalink / raw)
To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek
Cc: Biju Das, Lad Prabhakar, tomm.merciai
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
commit f6febd0a30b6e299a08076116256e3b36c24eada upstream.
Add Watchdog Timer driver for RZ/V2H(P) SoC.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20240829193831.80768-3-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
[tommaso: Squashed the commits 95c588f69ee5("watchdog: rzv2h_wdt: Add
missing MODULE_LICENSE tag to fix modpost error") and
1f2b24a524fc("watchdog: rzv2h_wdt: Use local `dev` pointer
in probe")]
Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
---
drivers/watchdog/Kconfig | 9 ++
drivers/watchdog/Makefile | 1 +
drivers/watchdog/rzv2h_wdt.c | 273 +++++++++++++++++++++++++++++++++++
3 files changed, 283 insertions(+)
create mode 100644 drivers/watchdog/rzv2h_wdt.c
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index b64bc49c7f30..a98a4078e51a 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -899,6 +899,15 @@ config RENESAS_RZG2LWDT
This driver adds watchdog support for the integrated watchdogs in the
Renesas RZ/G2L SoCs. These watchdogs can be used to reset a system.
+config RENESAS_RZV2HWDT
+ tristate "Renesas RZ/V2H(P) WDT Watchdog"
+ depends on ARCH_R9A09G057 || COMPILE_TEST
+ depends on PM || COMPILE_TEST
+ select WATCHDOG_CORE
+ help
+ This driver adds watchdog support for the integrated watchdogs in the
+ Renesas RZ/V2H(P) SoCs. These watchdogs can be used to reset a system.
+
config ASPEED_WATCHDOG
tristate "Aspeed BMC watchdog support"
depends on ARCH_ASPEED || COMPILE_TEST
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index d41e5f830ae7..93bebbe4cf2d 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -86,6 +86,7 @@ obj-$(CONFIG_RENESAS_WDT) += renesas_wdt.o
obj-$(CONFIG_RENESAS_RZAWDT) += rza_wdt.o
obj-$(CONFIG_RENESAS_RZN1WDT) += rzn1_wdt.o
obj-$(CONFIG_RENESAS_RZG2LWDT) += rzg2l_wdt.o
+obj-$(CONFIG_RENESAS_RZV2HWDT) += rzv2h_wdt.o
obj-$(CONFIG_ASPEED_WATCHDOG) += aspeed_wdt.o
obj-$(CONFIG_STM32_WATCHDOG) += stm32_iwdg.o
obj-$(CONFIG_UNIPHIER_WATCHDOG) += uniphier_wdt.o
diff --git a/drivers/watchdog/rzv2h_wdt.c b/drivers/watchdog/rzv2h_wdt.c
new file mode 100644
index 000000000000..8defd0241213
--- /dev/null
+++ b/drivers/watchdog/rzv2h_wdt.c
@@ -0,0 +1,273 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Renesas RZ/V2H(P) WDT Watchdog Driver
+ *
+ * Copyright (C) 2024 Renesas Electronics Corporation.
+ */
+#include <linux/clk.h>
+#include <linux/delay.h>
+#include <linux/io.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/pm_runtime.h>
+#include <linux/reset.h>
+#include <linux/units.h>
+#include <linux/watchdog.h>
+
+#define WDTRR 0x00 /* WDT Refresh Register RW, 8 */
+#define WDTCR 0x02 /* WDT Control Register RW, 16 */
+#define WDTSR 0x04 /* WDT Status Register RW, 16 */
+#define WDTRCR 0x06 /* WDT Reset Control Register RW, 8 */
+
+#define WDTCR_TOPS_1024 0x00
+#define WDTCR_TOPS_16384 0x03
+
+#define WDTCR_CKS_CLK_1 0x00
+#define WDTCR_CKS_CLK_256 0x50
+
+#define WDTCR_RPES_0 0x300
+#define WDTCR_RPES_75 0x000
+
+#define WDTCR_RPSS_25 0x00
+#define WDTCR_RPSS_100 0x3000
+
+#define WDTRCR_RSTIRQS BIT(7)
+
+#define MAX_TIMEOUT_CYCLES 16384
+#define CLOCK_DIV_BY_256 256
+
+#define WDT_DEFAULT_TIMEOUT 60U
+
+static bool nowayout = WATCHDOG_NOWAYOUT;
+module_param(nowayout, bool, 0);
+MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="
+ __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
+
+struct rzv2h_wdt_priv {
+ void __iomem *base;
+ struct clk *pclk;
+ struct clk *oscclk;
+ struct reset_control *rstc;
+ struct watchdog_device wdev;
+};
+
+static int rzv2h_wdt_ping(struct watchdog_device *wdev)
+{
+ struct rzv2h_wdt_priv *priv = watchdog_get_drvdata(wdev);
+
+ /*
+ * The down-counter is refreshed and starts counting operation on
+ * a write of the values 00h and FFh to the WDTRR register.
+ */
+ writeb(0x0, priv->base + WDTRR);
+ writeb(0xFF, priv->base + WDTRR);
+
+ return 0;
+}
+
+static void rzv2h_wdt_setup(struct watchdog_device *wdev, u16 wdtcr)
+{
+ struct rzv2h_wdt_priv *priv = watchdog_get_drvdata(wdev);
+
+ /* Configure the timeout, clock division ratio, and window start and end positions. */
+ writew(wdtcr, priv->base + WDTCR);
+
+ /* Enable interrupt output to the ICU. */
+ writeb(0, priv->base + WDTRCR);
+
+ /* Clear underflow flag and refresh error flag. */
+ writew(0, priv->base + WDTSR);
+}
+
+static int rzv2h_wdt_start(struct watchdog_device *wdev)
+{
+ struct rzv2h_wdt_priv *priv = watchdog_get_drvdata(wdev);
+ int ret;
+
+ ret = pm_runtime_resume_and_get(wdev->parent);
+ if (ret)
+ return ret;
+
+ ret = reset_control_deassert(priv->rstc);
+ if (ret) {
+ pm_runtime_put(wdev->parent);
+ return ret;
+ }
+
+ /* delay to handle clock halt after de-assert operation */
+ udelay(3);
+
+ /*
+ * WDTCR
+ * - CKS[7:4] - Clock Division Ratio Select - 0101b: oscclk/256
+ * - RPSS[13:12] - Window Start Position Select - 11b: 100%
+ * - RPES[9:8] - Window End Position Select - 11b: 0%
+ * - TOPS[1:0] - Timeout Period Select - 11b: 16384 cycles (3FFFh)
+ */
+ rzv2h_wdt_setup(wdev, WDTCR_CKS_CLK_256 | WDTCR_RPSS_100 |
+ WDTCR_RPES_0 | WDTCR_TOPS_16384);
+
+ /*
+ * Down counting starts after writing the sequence 00h -> FFh to the
+ * WDTRR register. Hence, call the ping operation after loading the counter.
+ */
+ rzv2h_wdt_ping(wdev);
+
+ return 0;
+}
+
+static int rzv2h_wdt_stop(struct watchdog_device *wdev)
+{
+ struct rzv2h_wdt_priv *priv = watchdog_get_drvdata(wdev);
+ int ret;
+
+ ret = reset_control_assert(priv->rstc);
+ if (ret)
+ return ret;
+
+ ret = pm_runtime_put(wdev->parent);
+ if (ret < 0)
+ return ret;
+
+ return 0;
+}
+
+static const struct watchdog_info rzv2h_wdt_ident = {
+ .options = WDIOF_MAGICCLOSE | WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT,
+ .identity = "Renesas RZ/V2H WDT Watchdog",
+};
+
+static int rzv2h_wdt_restart(struct watchdog_device *wdev,
+ unsigned long action, void *data)
+{
+ struct rzv2h_wdt_priv *priv = watchdog_get_drvdata(wdev);
+ int ret;
+
+ if (!watchdog_active(wdev)) {
+ ret = clk_enable(priv->pclk);
+ if (ret)
+ return ret;
+
+ ret = clk_enable(priv->oscclk);
+ if (ret) {
+ clk_disable(priv->pclk);
+ return ret;
+ }
+
+ ret = reset_control_deassert(priv->rstc);
+ if (ret) {
+ clk_disable(priv->oscclk);
+ clk_disable(priv->pclk);
+ return ret;
+ }
+ } else {
+ /*
+ * Writing to the WDT Control Register (WDTCR) or WDT Reset
+ * Control Register (WDTRCR) is possible once between the
+ * release from the reset state and the first refresh operation.
+ * Therefore, issue a reset if the watchdog is active.
+ */
+ ret = reset_control_reset(priv->rstc);
+ if (ret)
+ return ret;
+ }
+
+ /* delay to handle clock halt after de-assert operation */
+ udelay(3);
+
+ /*
+ * WDTCR
+ * - CKS[7:4] - Clock Division Ratio Select - 0000b: oscclk/1
+ * - RPSS[13:12] - Window Start Position Select - 00b: 25%
+ * - RPES[9:8] - Window End Position Select - 00b: 75%
+ * - TOPS[1:0] - Timeout Period Select - 00b: 1024 cycles (03FFh)
+ */
+ rzv2h_wdt_setup(wdev, WDTCR_CKS_CLK_1 | WDTCR_RPSS_25 |
+ WDTCR_RPES_75 | WDTCR_TOPS_1024);
+
+ rzv2h_wdt_ping(wdev);
+
+ /* wait for underflow to trigger... */
+ udelay(5);
+
+ return 0;
+}
+
+static const struct watchdog_ops rzv2h_wdt_ops = {
+ .owner = THIS_MODULE,
+ .start = rzv2h_wdt_start,
+ .stop = rzv2h_wdt_stop,
+ .ping = rzv2h_wdt_ping,
+ .restart = rzv2h_wdt_restart,
+};
+
+static int rzv2h_wdt_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct rzv2h_wdt_priv *priv;
+ int ret;
+
+ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
+ if (!priv)
+ return -ENOMEM;
+
+ priv->base = devm_platform_ioremap_resource(pdev, 0);
+ if (IS_ERR(priv->base))
+ return PTR_ERR(priv->base);
+
+ priv->pclk = devm_clk_get_prepared(dev, "pclk");
+ if (IS_ERR(priv->pclk))
+ return dev_err_probe(dev, PTR_ERR(priv->pclk), "no pclk");
+
+ priv->oscclk = devm_clk_get_prepared(dev, "oscclk");
+ if (IS_ERR(priv->oscclk))
+ return dev_err_probe(dev, PTR_ERR(priv->oscclk), "no oscclk");
+
+ priv->rstc = devm_reset_control_get_exclusive(dev, NULL);
+ if (IS_ERR(priv->rstc))
+ return dev_err_probe(dev, PTR_ERR(priv->rstc),
+ "failed to get cpg reset");
+
+ priv->wdev.max_hw_heartbeat_ms = (MILLI * MAX_TIMEOUT_CYCLES * CLOCK_DIV_BY_256) /
+ clk_get_rate(priv->oscclk);
+ dev_dbg(dev, "max hw timeout of %dms\n", priv->wdev.max_hw_heartbeat_ms);
+
+ ret = devm_pm_runtime_enable(dev);
+ if (ret)
+ return ret;
+
+ priv->wdev.min_timeout = 1;
+ priv->wdev.timeout = WDT_DEFAULT_TIMEOUT;
+ priv->wdev.info = &rzv2h_wdt_ident;
+ priv->wdev.ops = &rzv2h_wdt_ops;
+ priv->wdev.parent = dev;
+ watchdog_set_drvdata(&priv->wdev, priv);
+ watchdog_set_nowayout(&priv->wdev, nowayout);
+ watchdog_stop_on_unregister(&priv->wdev);
+
+ ret = watchdog_init_timeout(&priv->wdev, 0, dev);
+ if (ret)
+ dev_warn(dev, "Specified timeout invalid, using default");
+
+ return devm_watchdog_register_device(dev, &priv->wdev);
+}
+
+static const struct of_device_id rzv2h_wdt_ids[] = {
+ { .compatible = "renesas,r9a09g057-wdt", },
+ { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, rzv2h_wdt_ids);
+
+static struct platform_driver rzv2h_wdt_driver = {
+ .driver = {
+ .name = "rzv2h_wdt",
+ .of_match_table = rzv2h_wdt_ids,
+ },
+ .probe = rzv2h_wdt_probe,
+};
+module_platform_driver(rzv2h_wdt_driver);
+MODULE_AUTHOR("Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>");
+MODULE_DESCRIPTION("Renesas RZ/V2H(P) WDT Watchdog Driver");
+MODULE_LICENSE("GPL");
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* [PATCH 6.1.y-cip 3/8] clk: renesas: r9a09g047: Add WDT clocks and resets
2025-06-23 10:27 [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT Tommaso Merciai
2025-06-23 10:27 ` [PATCH 6.1.y-cip 1/8] dt-bindings: watchdog: renesas,wdt: Document RZ/V2H(P) SoC Tommaso Merciai
2025-06-23 10:27 ` [PATCH 6.1.y-cip 2/8] watchdog: Add Watchdog Timer driver for RZ/V2H(P) Tommaso Merciai
@ 2025-06-23 10:27 ` Tommaso Merciai
2025-06-23 10:27 ` [PATCH 6.1.y-cip 4/8] dt-bindings: watchdog: renesas,wdt: Document RZ/G3E support Tommaso Merciai
` (6 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: Tommaso Merciai @ 2025-06-23 10:27 UTC (permalink / raw)
To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek
Cc: Biju Das, Lad Prabhakar, tomm.merciai
From: Biju Das <biju.das.jz@bp.renesas.com>
commit 3c437d906f997a4e1495f59773b9a2544fff69ce upstream.
WDT0 reset is for CM33. Add WDT[1-3] clock and reset entries.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20250115103858.104709-3-biju.das.jz@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
---
drivers/clk/renesas/r9a09g047-cpg.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/drivers/clk/renesas/r9a09g047-cpg.c b/drivers/clk/renesas/r9a09g047-cpg.c
index 536d922bed70..1886eab9ef9e 100644
--- a/drivers/clk/renesas/r9a09g047-cpg.c
+++ b/drivers/clk/renesas/r9a09g047-cpg.c
@@ -92,6 +92,18 @@ static const struct cpg_core_clk r9a09g047_core_clks[] __initconst = {
static const struct rzv2h_mod_clk r9a09g047_mod_clks[] __initconst = {
DEF_MOD_CRITICAL("gic_0_gicclk", CLK_PLLDTY_ACPU_DIV4, 1, 3, 0, 19,
BUS_MSTOP(3, BIT(5))),
+ DEF_MOD("wdt_1_clkp", CLK_PLLCLN_DIV16, 4, 13, 2, 13,
+ BUS_MSTOP(1, BIT(0))),
+ DEF_MOD("wdt_1_clk_loco", CLK_QEXTAL, 4, 14, 2, 14,
+ BUS_MSTOP(1, BIT(0))),
+ DEF_MOD("wdt_2_clkp", CLK_PLLCLN_DIV16, 4, 15, 2, 15,
+ BUS_MSTOP(5, BIT(12))),
+ DEF_MOD("wdt_2_clk_loco", CLK_QEXTAL, 5, 0, 2, 16,
+ BUS_MSTOP(5, BIT(12))),
+ DEF_MOD("wdt_3_clkp", CLK_PLLCLN_DIV16, 5, 1, 2, 17,
+ BUS_MSTOP(5, BIT(13))),
+ DEF_MOD("wdt_3_clk_loco", CLK_QEXTAL, 5, 2, 2, 18,
+ BUS_MSTOP(5, BIT(13))),
DEF_MOD("scif_0_clk_pck", CLK_PLLCM33_DIV16, 8, 15, 4, 15,
BUS_MSTOP(3, BIT(14))),
DEF_MOD("riic_8_ckm", CLK_PLLCM33_DIV16, 9, 3, 4, 19,
@@ -118,6 +130,9 @@ static const struct rzv2h_reset r9a09g047_resets[] __initconst = {
DEF_RST(3, 0, 1, 1), /* SYS_0_PRESETN */
DEF_RST(3, 8, 1, 9), /* GIC_0_GICRESET_N */
DEF_RST(3, 9, 1, 10), /* GIC_0_DBG_GICRESET_N */
+ DEF_RST(7, 6, 3, 7), /* WDT_1_RESET */
+ DEF_RST(7, 7, 3, 8), /* WDT_2_RESET */
+ DEF_RST(7, 8, 3, 9), /* WDT_3_RESET */
DEF_RST(9, 5, 4, 6), /* SCIF_0_RST_SYSTEM_N */
DEF_RST(9, 8, 4, 9), /* RIIC_0_MRST */
DEF_RST(9, 9, 4, 10), /* RIIC_1_MRST */
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* [PATCH 6.1.y-cip 4/8] dt-bindings: watchdog: renesas,wdt: Document RZ/G3E support
2025-06-23 10:27 [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT Tommaso Merciai
` (2 preceding siblings ...)
2025-06-23 10:27 ` [PATCH 6.1.y-cip 3/8] clk: renesas: r9a09g047: Add WDT clocks and resets Tommaso Merciai
@ 2025-06-23 10:27 ` Tommaso Merciai
2025-06-23 10:27 ` [PATCH 6.1.y-cip 5/8] watchdog: Enable RZV2HWDT driver depend on ARCH_RENESAS Tommaso Merciai
` (5 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: Tommaso Merciai @ 2025-06-23 10:27 UTC (permalink / raw)
To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek
Cc: Biju Das, Lad Prabhakar, tomm.merciai
From: Biju Das <biju.das.jz@bp.renesas.com>
commit c40524d1615a72548adc30dbfb15c981fd03dacb upstream.
Document the support for the watchdog IP available on RZ/G3E SoC. The
watchdog IP available on RZ/G3E SoC is identical to the one found on
RZ/V2H SoC.
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Link: https://lore.kernel.org/r/20250126132633.31956-2-biju.das.jz@bp.renesas.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
---
Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml b/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
index 62ffba8545f9..b8dddcafdc54 100644
--- a/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
+++ b/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
@@ -73,6 +73,10 @@ properties:
- renesas,r8a779g0-wdt # R-Car V4H
- const: renesas,rcar-gen4-wdt # R-Car Gen4
+ - items:
+ - const: renesas,r9a09g047-wdt # RZ/G3E
+ - const: renesas,r9a09g057-wdt # RZ/V2H(P)
+
- const: renesas,r9a09g057-wdt # RZ/V2H(P)
reg:
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* [PATCH 6.1.y-cip 5/8] watchdog: Enable RZV2HWDT driver depend on ARCH_RENESAS
2025-06-23 10:27 [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT Tommaso Merciai
` (3 preceding siblings ...)
2025-06-23 10:27 ` [PATCH 6.1.y-cip 4/8] dt-bindings: watchdog: renesas,wdt: Document RZ/G3E support Tommaso Merciai
@ 2025-06-23 10:27 ` Tommaso Merciai
2025-06-23 10:27 ` [PATCH 6.1.y-cip 6/8] arm64: dts: renesas: r9a09g047: Add WDT1-WDT3 nodes Tommaso Merciai
` (4 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: Tommaso Merciai @ 2025-06-23 10:27 UTC (permalink / raw)
To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek
Cc: Biju Das, Lad Prabhakar, tomm.merciai
From: Biju Das <biju.das.jz@bp.renesas.com>
commit 331c8349605c8fa2f9040c39fe8c40afe3fdc3c3 upstream.
RZ/G3E watchdog timer IP is similar to the one found on RZ/V2H. Both these
SoCs belong to the ARCH_RENESAS family. So, it makes sense to use
ARCH_RENESAS rather than ARCH_R9A09G057 to enable the RZV2HWDT driver.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20250126132633.31956-3-biju.das.jz@bp.renesas.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
---
drivers/watchdog/Kconfig | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index a98a4078e51a..f839132e8130 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -900,13 +900,14 @@ config RENESAS_RZG2LWDT
Renesas RZ/G2L SoCs. These watchdogs can be used to reset a system.
config RENESAS_RZV2HWDT
- tristate "Renesas RZ/V2H(P) WDT Watchdog"
- depends on ARCH_R9A09G057 || COMPILE_TEST
+ tristate "Renesas RZ/{G3E,V2H(P)} WDT Watchdog"
+ depends on ARCH_RENESAS || COMPILE_TEST
depends on PM || COMPILE_TEST
select WATCHDOG_CORE
help
This driver adds watchdog support for the integrated watchdogs in the
- Renesas RZ/V2H(P) SoCs. These watchdogs can be used to reset a system.
+ Renesas RZ/{G3E,V2H(P)} SoCs. These watchdogs can be used to reset a
+ system.
config ASPEED_WATCHDOG
tristate "Aspeed BMC watchdog support"
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* [PATCH 6.1.y-cip 6/8] arm64: dts: renesas: r9a09g047: Add WDT1-WDT3 nodes
2025-06-23 10:27 [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT Tommaso Merciai
` (4 preceding siblings ...)
2025-06-23 10:27 ` [PATCH 6.1.y-cip 5/8] watchdog: Enable RZV2HWDT driver depend on ARCH_RENESAS Tommaso Merciai
@ 2025-06-23 10:27 ` Tommaso Merciai
2025-06-23 10:27 ` [PATCH 6.1.y-cip 7/8] arm64: dts: renesas: rzg3e-smarc-som: Enable watchdog Tommaso Merciai
` (3 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: Tommaso Merciai @ 2025-06-23 10:27 UTC (permalink / raw)
To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek
Cc: Biju Das, Lad Prabhakar, tomm.merciai
From: Biju Das <biju.das.jz@bp.renesas.com>
commit 146a9b058ec780581f580b0de9bbc0264b59d701 upstream.
Add WDT1-WDT3 nodes to RZ/G3E ("R9A09G047") SoC DTSI.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20250115103858.104709-5-biju.das.jz@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
---
arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 30 ++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi
index 200e9ea89193..133aa3272d3a 100644
--- a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi
+++ b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi
@@ -175,6 +175,36 @@ scif0: serial@11c01400 {
status = "disabled";
};
+ wdt1: watchdog@14400000 {
+ compatible = "renesas,r9a09g047-wdt", "renesas,r9a09g057-wdt";
+ reg = <0 0x14400000 0 0x400>;
+ clocks = <&cpg CPG_MOD 0x4d>, <&cpg CPG_MOD 0x4e>;
+ clock-names = "pclk", "oscclk";
+ resets = <&cpg 0x76>;
+ power-domains = <&cpg>;
+ status = "disabled";
+ };
+
+ wdt2: watchdog@13000000 {
+ compatible = "renesas,r9a09g047-wdt", "renesas,r9a09g057-wdt";
+ reg = <0 0x13000000 0 0x400>;
+ clocks = <&cpg CPG_MOD 0x4f>, <&cpg CPG_MOD 0x50>;
+ clock-names = "pclk", "oscclk";
+ resets = <&cpg 0x77>;
+ power-domains = <&cpg>;
+ status = "disabled";
+ };
+
+ wdt3: watchdog@13000400 {
+ compatible = "renesas,r9a09g047-wdt", "renesas,r9a09g057-wdt";
+ reg = <0 0x13000400 0 0x400>;
+ clocks = <&cpg CPG_MOD 0x51>, <&cpg CPG_MOD 0x52>;
+ clock-names = "pclk", "oscclk";
+ resets = <&cpg 0x78>;
+ power-domains = <&cpg>;
+ status = "disabled";
+ };
+
i2c0: i2c@14400400 {
compatible = "renesas,riic-r9a09g047", "renesas,riic-r9a09g057";
reg = <0 0x14400400 0 0x400>;
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* [PATCH 6.1.y-cip 7/8] arm64: dts: renesas: rzg3e-smarc-som: Enable watchdog
2025-06-23 10:27 [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT Tommaso Merciai
` (5 preceding siblings ...)
2025-06-23 10:27 ` [PATCH 6.1.y-cip 6/8] arm64: dts: renesas: r9a09g047: Add WDT1-WDT3 nodes Tommaso Merciai
@ 2025-06-23 10:27 ` Tommaso Merciai
2025-06-23 10:27 ` [PATCH 6.1.y-cip 8/8] arm64: defconfig: Enable Renesas RZ/V2H(P) Watchdog driver Tommaso Merciai
` (2 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: Tommaso Merciai @ 2025-06-23 10:27 UTC (permalink / raw)
To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek
Cc: Biju Das, Lad Prabhakar, tomm.merciai
From: Biju Das <biju.das.jz@bp.renesas.com>
commit db2bbe1e6c48f03ed1f5ac57f5614d02351dcb4c upstream.
Enable WDT1 watchdog on RZ/G3E SMARC SoM platform.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20250115103858.104709-6-biju.das.jz@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
---
arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi
index 6b583ae2ac52..f4ba050beb0d 100644
--- a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi
+++ b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi
@@ -26,3 +26,7 @@ &qextal_clk {
&rtxin_clk {
clock-frequency = <32768>;
};
+
+&wdt1 {
+ status = "okay";
+};
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* [PATCH 6.1.y-cip 8/8] arm64: defconfig: Enable Renesas RZ/V2H(P) Watchdog driver
2025-06-23 10:27 [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT Tommaso Merciai
` (6 preceding siblings ...)
2025-06-23 10:27 ` [PATCH 6.1.y-cip 7/8] arm64: dts: renesas: rzg3e-smarc-som: Enable watchdog Tommaso Merciai
@ 2025-06-23 10:27 ` Tommaso Merciai
2025-06-23 11:16 ` [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT Pavel Machek
2025-06-24 4:02 ` nobuhiro1.iwamatsu
9 siblings, 0 replies; 12+ messages in thread
From: Tommaso Merciai @ 2025-06-23 10:27 UTC (permalink / raw)
To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek
Cc: Biju Das, Lad Prabhakar, tomm.merciai
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
commit 5ad0a0c7917dc434ee28da765186dabc81172e3c upstream.
Enable the watchdog driver for the Renesas RZ/V2H(P) SoC.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20241112093412.20093-1-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
---
arch/arm64/configs/defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index e99fc8006025..b65eb4e67244 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -636,6 +636,7 @@ CONFIG_MESON_WATCHDOG=m
CONFIG_ARM_SMC_WATCHDOG=y
CONFIG_RENESAS_WDT=y
CONFIG_RENESAS_RZG2LWDT=y
+CONFIG_RENESAS_RZV2HWDT=y
CONFIG_UNIPHIER_WATCHDOG=y
CONFIG_PM8916_WATCHDOG=m
CONFIG_BCM2835_WDT=y
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT
2025-06-23 10:27 [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT Tommaso Merciai
` (7 preceding siblings ...)
2025-06-23 10:27 ` [PATCH 6.1.y-cip 8/8] arm64: defconfig: Enable Renesas RZ/V2H(P) Watchdog driver Tommaso Merciai
@ 2025-06-23 11:16 ` Pavel Machek
2025-06-24 4:02 ` nobuhiro1.iwamatsu
9 siblings, 0 replies; 12+ messages in thread
From: Pavel Machek @ 2025-06-23 11:16 UTC (permalink / raw)
To: Tommaso Merciai
Cc: cip-dev, Nobuhiro Iwamatsu, Biju Das, Lad Prabhakar, tomm.merciai
[-- Attachment #1: Type: text/plain, Size: 726 bytes --]
Hi!
> This patch series aims to add Watchdog Timer (WDT) support for the
> Renesas RZ/G3E SoCs.
>
> The RZ/G3E WDT IP is similar to RZ/V2H WDT. WDT0 can be used for CM33 cold
> reset, system reset and asserting WDTUDFCM pin where as WDT1 can be used
> for CA55 cold reset, system reset and asserting WDTUDFCA pin. Other 2
> watchdogs can be used for system reset. So define WDT{1..3} in SoC
> dtsi.
Looks good to me. I can apply it if it passes testing and there are no
other comments.
Reviewed-by: Pavel Machek <pavel@denx.de>
Best regards,
Pavel
--
DENX Software Engineering GmbH, Managing Director: Erika Unter
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread* RE: [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT
2025-06-23 10:27 [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT Tommaso Merciai
` (8 preceding siblings ...)
2025-06-23 11:16 ` [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT Pavel Machek
@ 2025-06-24 4:02 ` nobuhiro1.iwamatsu
2025-06-24 6:59 ` nobuhiro1.iwamatsu
9 siblings, 1 reply; 12+ messages in thread
From: nobuhiro1.iwamatsu @ 2025-06-24 4:02 UTC (permalink / raw)
To: tommaso.merciai.xr, cip-dev, pavel
Cc: biju.das.jz, prabhakar.mahadev-lad.rj, tomm.merciai
Hi all,
> -----Original Message-----
> From: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
> Sent: Monday, June 23, 2025 7:27 PM
> To: cip-dev@lists.cip-project.org; iwamatsu nobuhiro(岩松 信洋 □DITC○
> CPT) <nobuhiro1.iwamatsu@toshiba.co.jp>; Pavel Machek
> <pavel@denx.de>
> Cc: Biju Das <biju.das.jz@bp.renesas.com>; Lad Prabhakar
> <prabhakar.mahadev-lad.rj@bp.renesas.com>; tomm.merciai@gmail.com
> Subject: [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT
>
> Hi All,
>
> This patch series aims to add Watchdog Timer (WDT) support for the Renesas
> RZ/G3E SoCs.
>
> The RZ/G3E WDT IP is similar to RZ/V2H WDT. WDT0 can be used for CM33
> cold reset, system reset and asserting WDTUDFCM pin where as WDT1 can be
> used for CA55 cold reset, system reset and asserting WDTUDFCA pin. Other 2
> watchdogs can be used for system reset. So define WDT{1..3} in SoC dtsi.
>
> Thanks & Regards,
> Tommaso
>
> Biju Das (5):
> clk: renesas: r9a09g047: Add WDT clocks and resets
> dt-bindings: watchdog: renesas,wdt: Document RZ/G3E support
> watchdog: Enable RZV2HWDT driver depend on ARCH_RENESAS
> arm64: dts: renesas: r9a09g047: Add WDT1-WDT3 nodes
> arm64: dts: renesas: rzg3e-smarc-som: Enable watchdog
>
> Lad Prabhakar (3):
> dt-bindings: watchdog: renesas,wdt: Document RZ/V2H(P) SoC
> watchdog: Add Watchdog Timer driver for RZ/V2H(P)
> arm64: defconfig: Enable Renesas RZ/V2H(P) Watchdog driver
>
> .../bindings/watchdog/renesas,wdt.yaml | 21 +-
> arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 30 ++
> .../boot/dts/renesas/rzg3e-smarc-som.dtsi | 4 +
> arch/arm64/configs/defconfig | 1 +
> drivers/clk/renesas/r9a09g047-cpg.c | 15 +
> drivers/watchdog/Kconfig | 10 +
> drivers/watchdog/Makefile | 1 +
> drivers/watchdog/rzv2h_wdt.c | 273
> ++++++++++++++++++
> 8 files changed, 354 insertions(+), 1 deletion(-) create mode 100644
> drivers/watchdog/rzv2h_wdt.c
I reviewed this series, looks good to me.
I can apply, if there are no other comments.
Reviewed-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
Best regards,
Nobuhiro
^ permalink raw reply [flat|nested] 12+ messages in thread* RE: [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT
2025-06-24 4:02 ` nobuhiro1.iwamatsu
@ 2025-06-24 6:59 ` nobuhiro1.iwamatsu
0 siblings, 0 replies; 12+ messages in thread
From: nobuhiro1.iwamatsu @ 2025-06-24 6:59 UTC (permalink / raw)
To: tommaso.merciai.xr, cip-dev, pavel
Cc: biju.das.jz, prabhakar.mahadev-lad.rj, tomm.merciai
Hi all,
> -----Original Message-----
> From: iwamatsu nobuhiro(岩松 信洋 □DITC○CPT)
> Sent: Tuesday, June 24, 2025 1:03 PM
> To: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>;
> cip-dev@lists.cip-project.org; Pavel Machek <pavel@denx.de>
> Cc: Biju Das <biju.das.jz@bp.renesas.com>; Lad Prabhakar
> <prabhakar.mahadev-lad.rj@bp.renesas.com>; tomm.merciai@gmail.com
> Subject: RE: [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT
>
> Hi all,
>
> > -----Original Message-----
> > From: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
> > Sent: Monday, June 23, 2025 7:27 PM
> > To: cip-dev@lists.cip-project.org; iwamatsu nobuhiro(岩松 信洋 □DITC○
> > CPT) <nobuhiro1.iwamatsu@toshiba.co.jp>; Pavel Machek
> <pavel@denx.de>
> > Cc: Biju Das <biju.das.jz@bp.renesas.com>; Lad Prabhakar
> > <prabhakar.mahadev-lad.rj@bp.renesas.com>; tomm.merciai@gmail.com
> > Subject: [PATCH 6.1.y-cip 0/8] Add support for RZ/G3E WDT
> >
> > Hi All,
> >
> > This patch series aims to add Watchdog Timer (WDT) support for the
> > Renesas RZ/G3E SoCs.
> >
> > The RZ/G3E WDT IP is similar to RZ/V2H WDT. WDT0 can be used for CM33
> > cold reset, system reset and asserting WDTUDFCM pin where as WDT1 can
> > be used for CA55 cold reset, system reset and asserting WDTUDFCA pin.
> > Other 2 watchdogs can be used for system reset. So define WDT{1..3} in SoC
> dtsi.
> >
> > Thanks & Regards,
> > Tommaso
> >
> > Biju Das (5):
> > clk: renesas: r9a09g047: Add WDT clocks and resets
> > dt-bindings: watchdog: renesas,wdt: Document RZ/G3E support
> > watchdog: Enable RZV2HWDT driver depend on ARCH_RENESAS
> > arm64: dts: renesas: r9a09g047: Add WDT1-WDT3 nodes
> > arm64: dts: renesas: rzg3e-smarc-som: Enable watchdog
> >
> > Lad Prabhakar (3):
> > dt-bindings: watchdog: renesas,wdt: Document RZ/V2H(P) SoC
> > watchdog: Add Watchdog Timer driver for RZ/V2H(P)
> > arm64: defconfig: Enable Renesas RZ/V2H(P) Watchdog driver
> >
> > .../bindings/watchdog/renesas,wdt.yaml | 21 +-
> > arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 30 ++
> > .../boot/dts/renesas/rzg3e-smarc-som.dtsi | 4 +
> > arch/arm64/configs/defconfig | 1 +
> > drivers/clk/renesas/r9a09g047-cpg.c | 15 +
> > drivers/watchdog/Kconfig | 10 +
> > drivers/watchdog/Makefile | 1 +
> > drivers/watchdog/rzv2h_wdt.c | 273
> > ++++++++++++++++++
> > 8 files changed, 354 insertions(+), 1 deletion(-) create mode 100644
> > drivers/watchdog/rzv2h_wdt.c
>
> I reviewed this series, looks good to me.
> I can apply, if there are no other comments.
>
> Reviewed-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
>
I applied with Pavel's Reviewed-by tag.
Best regards,
Nobuhiro
^ permalink raw reply [flat|nested] 12+ messages in thread