diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2015-03-19 19:42:56 +0900 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2015-03-28 09:03:09 -0400 |
commit | ddf6bd4876a1838bdf3202b34f5a36f165c279b1 (patch) | |
tree | f21be52675252fd4e942130a3336556b9b970a6a /arch/arm/mach-bcm283x/reset.c | |
parent | 326a682358c16afcf2c7a9617e9811e72a1f0929 (diff) |
ARM: bcm283x: merge BCM2835/BCM2836 directories into mach-bcm283x
BCM2835 (used on Raspberry Pi) and BCM2836 (used on Raspberry Pi 2)
are similar enough. One of the biggest differences is the ARM
processor. It is reasonable to collect the source files into a
single place, arch/arm/mach-bcm283x/.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Stephen Warren <swarren@wwwdotorg.org>
Diffstat (limited to 'arch/arm/mach-bcm283x/reset.c')
-rw-r--r-- | arch/arm/mach-bcm283x/reset.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/arch/arm/mach-bcm283x/reset.c b/arch/arm/mach-bcm283x/reset.c new file mode 100644 index 0000000000..8c37ad9fd4 --- /dev/null +++ b/arch/arm/mach-bcm283x/reset.c @@ -0,0 +1,35 @@ +/* + * (C) Copyright 2012 Stephen Warren + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <common.h> +#include <asm/io.h> +#include <asm/arch/wdog.h> + +#define RESET_TIMEOUT 10 + +void reset_cpu(ulong addr) +{ + struct bcm2835_wdog_regs *regs = + (struct bcm2835_wdog_regs *)BCM2835_WDOG_PHYSADDR; + uint32_t rstc; + + rstc = readl(®s->rstc); + rstc &= ~BCM2835_WDOG_RSTC_WRCFG_MASK; + rstc |= BCM2835_WDOG_RSTC_WRCFG_FULL_RESET; + + writel(BCM2835_WDOG_PASSWORD | RESET_TIMEOUT, ®s->wdog); + writel(BCM2835_WDOG_PASSWORD | rstc, ®s->rstc); +} |