[PATCH 13/34] sunxi: spl: add support for Allwinner A523 watchdog
Andre Przywara
andre.przywara at arm.com
Sun Mar 23 12:35:23 CET 2025
From: Jernej Skrabec <jernej.skrabec at gmail.com>
The watchdog in the Allwinner A523 SoC differs a bit from the one in the
previous SoCs: it lives in a separate register frame, so no longer
inside some timer device, and it manages to shuffle around some
registers a bit.
Provide a new struct describing the register layout, and adjust the
address calculation in the SPL code accoringly. This is guarded by the
MACH_SUN55I_A523 Kconfig variable.
---
arch/arm/include/asm/arch-sunxi/watchdog.h | 12 ++++++++++++
arch/arm/mach-sunxi/board.c | 6 ++++++
2 files changed, 18 insertions(+)
diff --git a/arch/arm/include/asm/arch-sunxi/watchdog.h b/arch/arm/include/asm/arch-sunxi/watchdog.h
index 38e2ef2aca3..96d5725141e 100644
--- a/arch/arm/include/asm/arch-sunxi/watchdog.h
+++ b/arch/arm/include/asm/arch-sunxi/watchdog.h
@@ -26,6 +26,18 @@ struct sunxi_wdog {
u32 res[2];
};
+#elif defined(CONFIG_MACH_SUN55I_A523)
+
+struct sunxi_wdog {
+ u32 irq_en; /* 0x00 */
+ u32 irq_sta; /* 0x04 */
+ u32 srst; /* 0x08 */
+ u32 ctl; /* 0x0c */
+ u32 cfg; /* 0x10 */
+ u32 mode; /* 0x14 */
+ u32 ocfg; /* 0x18 */
+};
+
#else
#define WDT_CFG_RESET (0x1)
diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
index 701899ee4b2..89aea61e8e8 100644
--- a/arch/arm/mach-sunxi/board.c
+++ b/arch/arm/mach-sunxi/board.c
@@ -495,6 +495,12 @@ void reset_cpu(void)
/* sun5i sometimes gets stuck without this */
writel(WDT_MODE_RESET_EN | WDT_MODE_EN, &wdog->mode);
}
+#elif defined(CONFIG_MACH_SUN55I_A523)
+ static const struct sunxi_wdog *wdog =
+ (struct sunxi_wdog *)SUNXI_TIMER_BASE;
+
+ writel(WDT_CTRL_KEY | WDT_CTRL_RESTART, &wdog->srst);
+ while (1) { }
#elif defined(CONFIG_SUNXI_GEN_SUN6I) || defined(CONFIG_SUN50I_GEN_H6) || defined(CONFIG_SUNXI_GEN_NCAT2)
#if defined(CONFIG_MACH_SUN50I_H6)
/* WDOG is broken for some H6 rev. use the R_WDOG instead */
--
2.46.3
More information about the U-Boot
mailing list