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