[U-Boot] [PATCH 3/4] arm: sunxi: h6: fix reset using r_wdog

Clément Péron
2019-04-08T16:47:45Z

+Chen-Yu.

I would like to fix the reset using the R_WDOG instead of WDOG.

What do you think?

If it's acceptable I will propose a similar patch on ATF.

Regards,
Clement

On Mon, 8 Apr 2019 at 18:41, Clément Péron <peron.clem@gmail.com> wrote:
>
> WDOG in H6 is broken so the reset is actually not working.
>
> Use the R_WDOG instead.
>
> Signed-off-by: Clément Péron <peron.clem@gmail.com>
> ---
> arch/arm/include/asm/arch-sunxi/cpu_sun50i_h6.h | 1 +
> arch/arm/mach-sunxi/board.c | 9 +++++++--
> 2 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-sunxi/cpu_sun50i_h6.h b/arch/arm/include/asm/arch-sunxi/cpu_sun50i_h6.h
> index 41a9b0fc47..6392cb07b4 100644
> --- a/arch/arm/include/asm/arch-sunxi/cpu_sun50i_h6.h
> +++ b/arch/arm/include/asm/arch-sunxi/cpu_sun50i_h6.h
> @@ -60,6 +60,7 @@
> #define SUNXI_RTC_BASE 0x07000000
> #define SUNXI_R_CPUCFG_BASE 0x07000400
> #define SUNXI_PRCM_BASE 0x07010000
> +#define SUNXI_R_WDOG_BASE 0x07020400
> #define SUNXI_R_PIO_BASE 0x07022000
> #define SUNXI_R_UART_BASE 0x07080000
> #define SUNXI_R_TWI_BASE 0x07081400
> diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
> index b74eaf2a0e..3f8128fbf4 100644
> --- a/arch/arm/mach-sunxi/board.c
> +++ b/arch/arm/mach-sunxi/board.c
> @@ -287,9 +287,14 @@ void reset_cpu(ulong addr)
> writel(WDT_MODE_RESET_EN | WDT_MODE_EN, &wdog->mode);
> }
> #elif defined(CONFIG_SUNXI_GEN_SUN6I) || defined(CONFIG_MACH_SUN50I_H6)
> +#if defined(CONFIG_MACH_SUN50I_H6)
> + /* WDOG is broken for H6 use the R_WDOG instead */
> static const struct sunxi_wdog *wdog =
> - ((struct sunxi_timer_reg *)SUNXI_TIMER_BASE)->wdog;
> -
> + (struct sunxi_wdog *)SUNXI_R_WDOG_BASE;
> +#else
> + static const struct sunxi_wdog *wdog =
> + ((struct sunxi_timer_reg *)SUNXI_TIMER_BASE)->wdog;
> +#endif
> /* Set the watchdog for its shortest interval (.5s) and wait */
> writel(WDT_CFG_RESET, &wdog->cfg);
> writel(WDT_MODE_EN, &wdog->mode);
> --
> 2.17.1
>