Hi,
Allwinner H6 SoC has two watchdogs.
As we are not sure that both A64 and H6 are stricly identical, I have
introduced the H6 bindings.
After investigation it seems that on some boards the first watchdog doesn't
make it properly reboot. Please see details in the commit log.
I think it's proper to add it with a comment anyway.
The r_watchdog is still available and usable on all the H6 boards.
Thanks,
Clément
Changes since v4:
- Delete specific bindings for r-wdt
Changes since v3:
- Remove A64 compatible
- Introduce specific bindings for r-wdt
Changes since v2:
- Reintroduce H6 bindings
- Add watchdog Maintainters / ML
- Add Martin Ayotte test results
Changes since v1:
- Use A64 compatible instead of H6
- Remove dt-bindings patch
- Change watchdog status to disabled
- Add r_watchdog node patch
- Add enable sunxi watchdog patch
Clément Péron (4):
dt-bindings: watchdog: add Allwinner H6 watchdog
arm64: dts: allwinner: h6: add watchdog node
arm64: dts: allwinner: h6: add r_watchog node
arm64: defconfig: enable sunxi watchdog
.../devicetree/bindings/watchdog/sunxi-wdt.txt | 1 +
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 16 ++++++++++++++++
arch/arm64/configs/defconfig | 1 +
3 files changed, 18 insertions(+)
--
2.20.1
Allwinner H6 has a watchog node which seems broken
on some boards.
Test has been performed on several boards.
Chen-Yu Tsai boards:
Pine H64 - H6448BA 7782 => OK
OrangePi Lite 2 - H8068BA 61C2 => KO
Martin Ayotte boards:
Pine H64 - H8069BA 6892 => OK
OrangePi 3 - HA047BA 69W2 => KO
OrangePi One Plus - H7310BA 6842 => KO
OrangePi Lite2 - H6448BA 6662 => KO
Clément Péron board:
Beelink GS1 - H7309BA 6842 => KO
As it seems not fixable for now, declare the node
but leave it disable with a comment.
Signed-off-by: Clément Péron <[email protected]>
---
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
index 16c5c3d0fd81..13e70aebddbe 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
@@ -208,6 +208,15 @@
reg = <0x03006000 0x400>;
};
+ watchdog: watchdog@30090a0 {
+ compatible = "allwinner,sun50i-h6-wdt",
+ "allwinner,sun6i-a31-wdt";
+ reg = <0x030090a0 0x20>;
+ interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
+ /* Broken on some H6 boards */
+ status = "disabled";
+ };
+
pio: pinctrl@300b000 {
compatible = "allwinner,sun50i-h6-pinctrl";
reg = <0x0300b000 0x400>;
--
2.20.1
The SUNXI_WATCHDOG option is required to make the
watchdog available on Allwinner H6.
Enable this option as a module.
Signed-off-by: Clément Péron <[email protected]>
---
arch/arm64/configs/defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index 4d583514258c..fc51dd4decb1 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -420,6 +420,7 @@ CONFIG_UNIPHIER_THERMAL=y
CONFIG_WATCHDOG=y
CONFIG_ARM_SP805_WATCHDOG=y
CONFIG_S3C2410_WATCHDOG=y
+CONFIG_SUNXI_WATCHDOG=m
CONFIG_IMX2_WDT=y
CONFIG_MESON_GXBB_WATCHDOG=m
CONFIG_MESON_WATCHDOG=m
--
2.20.1
Allwinner H6 has a similar watchdog as the A64 which is already
a compatible of the A31.
This commit add the H6 compatible.
Signed-off-by: Clément Péron <[email protected]>
---
Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt
index 46055254e8dd..e65198d82a2b 100644
--- a/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt
+++ b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt
@@ -6,6 +6,7 @@ Required properties:
"allwinner,sun4i-a10-wdt"
"allwinner,sun6i-a31-wdt"
"allwinner,sun50i-a64-wdt","allwinner,sun6i-a31-wdt"
+ "allwinner,sun50i-h6-wdt","allwinner,sun6i-a31-wdt"
"allwinner,suniv-f1c100s-wdt", "allwinner,sun4i-a10-wdt"
- reg : Specifies base physical address and size of the registers.
--
2.20.1
Allwinner H6 has a r_watchdog similar to A64.
Declare it in the device-tree.
Signed-off-by: Clément Péron <[email protected]>
---
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
index 13e70aebddbe..b9a7dc8d2a40 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
@@ -631,6 +631,13 @@
#reset-cells = <1>;
};
+ r_watchdog: watchdog@7020400 {
+ compatible = "allwinner,sun50i-h6-wdt",
+ "allwinner,sun6i-a31-wdt";
+ reg = <0x07020400 0x20>;
+ interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
r_intc: interrupt-controller@7021000 {
compatible = "allwinner,sun50i-h6-r-intc",
"allwinner,sun6i-a31-r-intc";
--
2.20.1
On Thu, May 23, 2019 at 05:10:46PM +0200, Cl?ment P?ron wrote:
> Hi,
>
> Allwinner H6 SoC has two watchdogs.
>
> As we are not sure that both A64 and H6 are stricly identical, I have
> introduced the H6 bindings.
>
> After investigation it seems that on some boards the first watchdog doesn't
> make it properly reboot. Please see details in the commit log.
>
> I think it's proper to add it with a comment anyway.
>
> The r_watchdog is still available and usable on all the H6 boards.
Applied all 4, thanks!
Maxime
--
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
On Thu, 23 May 2019 17:10:47 +0200, =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= wrote:
> Allwinner H6 has a similar watchdog as the A64 which is already
> a compatible of the A31.
>
> This commit add the H6 compatible.
>
> Signed-off-by: Cl?ment P?ron <[email protected]>
> ---
> Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt | 1 +
> 1 file changed, 1 insertion(+)
>
Reviewed-by: Rob Herring <[email protected]>
On Thu, May 23, 2019 at 05:10:47PM +0200, Cl?ment P?ron wrote:
> Allwinner H6 has a similar watchdog as the A64 which is already
> a compatible of the A31.
>
> This commit add the H6 compatible.
>
> Signed-off-by: Cl?ment P?ron <[email protected]>
> Reviewed-by: Rob Herring <[email protected]>
Reviewed-by: Guenter Roeck <[email protected]>
> ---
> Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt
> index 46055254e8dd..e65198d82a2b 100644
> --- a/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt
> +++ b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt
> @@ -6,6 +6,7 @@ Required properties:
> "allwinner,sun4i-a10-wdt"
> "allwinner,sun6i-a31-wdt"
> "allwinner,sun50i-a64-wdt","allwinner,sun6i-a31-wdt"
> + "allwinner,sun50i-h6-wdt","allwinner,sun6i-a31-wdt"
> "allwinner,suniv-f1c100s-wdt", "allwinner,sun4i-a10-wdt"
> - reg : Specifies base physical address and size of the registers.
>