diff mbox series

[LOCAL,v2] soc: renesas: rcar-rst: Allow WDT reset on R-Car Gen4

Message ID 39005cf749a99afc6d3ba96ff155fd2a231418a8.1642524743.git.geert+renesas@glider.be (mailing list archive)
State Not Applicable
Delegated to: Geert Uytterhoeven
Headers show
Series [LOCAL,v2] soc: renesas: rcar-rst: Allow WDT reset on R-Car Gen4 | expand

Commit Message

Geert Uytterhoeven Jan. 18, 2022, 4:54 p.m. UTC
From: Wolfram Sang <wsa+renesas@sang-engineering.com>

Other Gen3 SoCs do this in the bootloader. Maybe R-Car V3U and S4-8 will
also later?  For now, add it so we can properly reboot via remote.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
[geert: Generalize for R-Car Gen4]
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
Not intended for upstream merge.

v2:
  - Generalize for R-Car Gen4
---
 drivers/soc/renesas/rcar-rst.c | 8 ++++++++
 1 file changed, 8 insertions(+)
diff mbox series

Patch

diff --git a/drivers/soc/renesas/rcar-rst.c b/drivers/soc/renesas/rcar-rst.c
index 4d293eb2d8f315d9..c9f2910361255fc5 100644
--- a/drivers/soc/renesas/rcar-rst.c
+++ b/drivers/soc/renesas/rcar-rst.c
@@ -12,6 +12,7 @@ 
 
 #define WDTRSTCR_RESET		0xA55A0002
 #define WDTRSTCR		0x0054
+#define GEN4_WDTRSTCR		0x0010
 
 #define CR7BAR			0x0070
 #define CR7BAREN		BIT(4)
@@ -27,6 +28,12 @@  static int rcar_rst_enable_wdt_reset(void __iomem *base)
 	return 0;
 }
 
+static int rcar_rst_gen4_enable_wdt_reset(void __iomem *base)
+{
+	iowrite32(WDTRSTCR_RESET, base + GEN4_WDTRSTCR);
+	return 0;
+}
+
 /*
  * Most of the R-Car Gen3 SoCs have an ARM Realtime Core.
  * Firmware boot address has to be set in CR7BAR before
@@ -68,6 +75,7 @@  static const struct rst_config rcar_rst_gen3 __initconst = {
 
 static const struct rst_config rcar_rst_gen4 __initconst = {
 	.modemr = 0x00,		/* MODEMR0 and it has CPG related bits */
+	.configure = rcar_rst_gen4_enable_wdt_reset,
 };
 
 static const struct of_device_id rcar_rst_matches[] __initconst = {