1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 262011840SMasahiro Yamada /* 362011840SMasahiro Yamada * (C) Copyright 2002 462011840SMasahiro Yamada * Lineo, Inc. <www.lineo.com> 562011840SMasahiro Yamada * Bernhard Kuhn <bkuhn@lineo.com> 662011840SMasahiro Yamada * 762011840SMasahiro Yamada * (C) Copyright 2002 862011840SMasahiro Yamada * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 962011840SMasahiro Yamada * Marius Groeger <mgroeger@sysgo.de> 1062011840SMasahiro Yamada * 1162011840SMasahiro Yamada * (C) Copyright 2002 1262011840SMasahiro Yamada * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 1362011840SMasahiro Yamada * Alex Zuepke <azu@sysgo.de> 1462011840SMasahiro Yamada */ 1562011840SMasahiro Yamada 1662011840SMasahiro Yamada #include <common.h> 1762011840SMasahiro Yamada #include <asm/io.h> 1862011840SMasahiro Yamada #include <asm/arch/hardware.h> 1962011840SMasahiro Yamada #include <asm/arch/at91_st.h> 2062011840SMasahiro Yamada board_reset(void)2162011840SMasahiro Yamadavoid __attribute__((weak)) board_reset(void) 2262011840SMasahiro Yamada { 2362011840SMasahiro Yamada /* true empty function for defining weak symbol */ 2462011840SMasahiro Yamada } 2562011840SMasahiro Yamada reset_cpu(ulong ignored)2662011840SMasahiro Yamadavoid reset_cpu(ulong ignored) 2762011840SMasahiro Yamada { 2862011840SMasahiro Yamada at91_st_t *st = (at91_st_t *) ATMEL_BASE_ST; 2962011840SMasahiro Yamada 3062011840SMasahiro Yamada board_reset(); 3162011840SMasahiro Yamada 3262011840SMasahiro Yamada /* Reset the cpu by setting up the watchdog timer */ 3362011840SMasahiro Yamada writel(AT91_ST_WDMR_RSTEN | AT91_ST_WDMR_EXTEN | AT91_ST_WDMR_WDV(2), 3462011840SMasahiro Yamada &st->wdmr); 3562011840SMasahiro Yamada writel(AT91_ST_CR_WDRST, &st->cr); 3662011840SMasahiro Yamada /* and let it timeout */ 3762011840SMasahiro Yamada while (1) 3862011840SMasahiro Yamada ; 3962011840SMasahiro Yamada /* Never reached */ 4062011840SMasahiro Yamada } 41