xref: /rk3399_rockchip-uboot/arch/arm/mach-at91/arm920t/reset.c (revision b9cb64825b5e6efeb715abd8b48d9b12f98973e9)
1*62011840SMasahiro Yamada /*
2*62011840SMasahiro Yamada  * (C) Copyright 2002
3*62011840SMasahiro Yamada  * Lineo, Inc. <www.lineo.com>
4*62011840SMasahiro Yamada  * Bernhard Kuhn <bkuhn@lineo.com>
5*62011840SMasahiro Yamada  *
6*62011840SMasahiro Yamada  * (C) Copyright 2002
7*62011840SMasahiro Yamada  * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
8*62011840SMasahiro Yamada  * Marius Groeger <mgroeger@sysgo.de>
9*62011840SMasahiro Yamada  *
10*62011840SMasahiro Yamada  * (C) Copyright 2002
11*62011840SMasahiro Yamada  * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
12*62011840SMasahiro Yamada  * Alex Zuepke <azu@sysgo.de>
13*62011840SMasahiro Yamada  *
14*62011840SMasahiro Yamada  * SPDX-License-Identifier:	GPL-2.0+
15*62011840SMasahiro Yamada  */
16*62011840SMasahiro Yamada 
17*62011840SMasahiro Yamada #include <common.h>
18*62011840SMasahiro Yamada #include <asm/io.h>
19*62011840SMasahiro Yamada #include <asm/arch/hardware.h>
20*62011840SMasahiro Yamada #include <asm/arch/at91_st.h>
21*62011840SMasahiro Yamada 
board_reset(void)22*62011840SMasahiro Yamada void  __attribute__((weak)) board_reset(void)
23*62011840SMasahiro Yamada {
24*62011840SMasahiro Yamada 	/* true empty function for defining weak symbol */
25*62011840SMasahiro Yamada }
26*62011840SMasahiro Yamada 
reset_cpu(ulong ignored)27*62011840SMasahiro Yamada void reset_cpu(ulong ignored)
28*62011840SMasahiro Yamada {
29*62011840SMasahiro Yamada 	at91_st_t *st = (at91_st_t *) ATMEL_BASE_ST;
30*62011840SMasahiro Yamada 
31*62011840SMasahiro Yamada 	board_reset();
32*62011840SMasahiro Yamada 
33*62011840SMasahiro Yamada 	/* Reset the cpu by setting up the watchdog timer */
34*62011840SMasahiro Yamada 	writel(AT91_ST_WDMR_RSTEN | AT91_ST_WDMR_EXTEN | AT91_ST_WDMR_WDV(2),
35*62011840SMasahiro Yamada 		&st->wdmr);
36*62011840SMasahiro Yamada 	writel(AT91_ST_CR_WDRST, &st->cr);
37*62011840SMasahiro Yamada 	/* and let it timeout */
38*62011840SMasahiro Yamada 	while (1)
39*62011840SMasahiro Yamada 		;
40*62011840SMasahiro Yamada 	/* Never reached */
41*62011840SMasahiro Yamada }
42