diff options
Diffstat (limited to 'arch/riscv/lib')
-rw-r--r-- | arch/riscv/lib/reset.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/riscv/lib/reset.c b/arch/riscv/lib/reset.c index 5c6f89cc..f7b3ff5f 100644 --- a/arch/riscv/lib/reset.c +++ b/arch/riscv/lib/reset.c @@ -5,9 +5,21 @@ #include <common.h> #include <command.h> +#include <asm/io.h> + +#define AONSYS_RSTGEN_BASE ((void __iomem *)0xFFFFF44000UL) +#define REG_RST_REQ_EN_0 (AONSYS_RSTGEN_BASE + 0x140) +#define WDT0_SYS_RST_REQ (1 << 8) static __attribute__((naked))void sys_wdt_reset(void) { + uint32_t data; + + /* wdt0 reset enable */ + data = readl(REG_RST_REQ_EN_0); + data |= WDT0_SYS_RST_REQ; + writel(data, REG_RST_REQ_EN_0); + asm volatile ( "1: \n\r" "li a0, 0xFFEFC30000 \n\r" @@ -21,7 +33,7 @@ static __attribute__((naked))void sys_wdt_reset(void) int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { - printf("resetting ...\n"); + printf("resetting ...\n"); sys_wdt_reset(); hang(); |