Add and enable the Realtek Otto WDT peripheral found on these SoCs.
Default all devices to use standard (cold) reboot and "soc" resets.
Devices that require the PLL value fixup before restarting, should pick
the "cpu" or "software" reset mode. These devices also need to provide a
custom reboot mode, by adding the reboot argument to the kernel command
line:
WDT reset mode | kernel reboot mode
----------------+---------------------------------------
soc | reboot=cold (default if not specified)
cpu | reboot=warm
software | reboot=software
Preferrably, these devices should use an alternative restart method like
gpio-restart to provide reliable restarts.
Note that watchdog restarts are not yet exposed, since the
_machine_restart override is still present.
Signed-off-by: Sander Vanheule <[email protected]>
--
v4:
- Also default to soc/cold reset on RTL838x
v2:
- Add Kconfig update to patch
- Fix 'clocks' property, change reference to lx_clk
- Add WDT phase interrupt routing
---
target/linux/realtek/config-5.10 | 2 ++
target/linux/realtek/dts-5.10/rtl838x.dtsi | 14 ++++++++++++++
target/linux/realtek/dts-5.10/rtl930x.dtsi | 18 +++++++++++++++++-
3 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/target/linux/realtek/config-5.10 b/target/linux/realtek/config-5.10
index 2c5ab1706a2c..00f2a6af13ba 100644
--- a/target/linux/realtek/config-5.10
+++ b/target/linux/realtek/config-5.10
@@ -160,6 +160,7 @@ CONFIG_PINCTRL=y
CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_SYSCON=y
CONFIG_RATIONAL=y
+CONFIG_REALTEK_OTTO_WDT=y
CONFIG_REALTEK_PHY=y
CONFIG_REALTEK_SOC_PHY=y
CONFIG_REGMAP=y
@@ -190,5 +191,6 @@ CONFIG_TIMER_PROBE=y
CONFIG_TINY_SRCU=y
CONFIG_USE_GENERIC_EARLY_PRINTK_8250=y
CONFIG_USE_OF=y
+CONFIG_WATCHDOG_CORE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_ZLIB_INFLATE=y
diff --git a/target/linux/realtek/dts-5.10/rtl838x.dtsi
b/target/linux/realtek/dts-5.10/rtl838x.dtsi
index dc60e12bad0b..f356f8fcde09 100644
--- a/target/linux/realtek/dts-5.10/rtl838x.dtsi
+++ b/target/linux/realtek/dts-5.10/rtl838x.dtsi
@@ -153,6 +153,20 @@
status = "disabled";
};
+ watchdog0: watchdog@3150 {
+ compatible = "realtek,rtl8380-wdt";
+ reg = <0x3150 0xc>;
+
+ realtek,reset-mode = "soc";
+
+ clocks = <&lx_clk>;
+ timeout-sec = <30>;
+
+ interrupt-parent = <&intc>;
+ interrupt-names = "phase1", "phase2";
+ interrupts = <19>, <18>;
+ };
+
gpio0: gpio-controller@3500 {
compatible = "realtek,rtl8380-gpio",
"realtek,otto-gpio";
reg = <0x3500 0x20>;
diff --git a/target/linux/realtek/dts-5.10/rtl930x.dtsi
b/target/linux/realtek/dts-5.10/rtl930x.dtsi
index 9e9501d51ad5..a4c9757505f5 100644
--- a/target/linux/realtek/dts-5.10/rtl930x.dtsi
+++ b/target/linux/realtek/dts-5.10/rtl930x.dtsi
@@ -109,7 +109,9 @@
<10 &cpuintc 1>, /* TC3 */
<9 &cpuintc 1>, /* TC2 */
<8 &cpuintc 1>, /* TC1 */
- <7 &cpuintc 5>; /* TC0 */
+ <7 &cpuintc 5>, /* TC0 */
+ <6 &cpuintc 5>, /* WDT_IP2 */
+ <5 &cpuintc 4>; /* WDT_IP1 */
};
timer: timer@3200 {
@@ -161,6 +163,20 @@
status = "disabled";
};
+ watchdog0: watchdog@3260 {
+ compatible = "realtek,rtl9300-wdt";
+ reg = <0x3260 0xc>;
+
+ realtek,reset-mode = "soc";
+
+ clocks = <&lx_clk>;
+ timeout-sec = <30>;
+
+ interrupt-parent = <&intc>;
+ interrupt-names = "phase1", "phase2";
+ interrupts = <5>, <6>;
+ };
+
gpio0: gpio-controller@3500 {
compatible = "realtek,rtl8380-gpio",
"realtek,otto-gpio";
reg = <0x3500 0x20>;
--
2.33.1
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel