diff options
Diffstat (limited to 'roms/u-boot/arch/arm/mach-uniphier/reset.c')
-rw-r--r-- | roms/u-boot/arch/arm/mach-uniphier/reset.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/roms/u-boot/arch/arm/mach-uniphier/reset.c b/roms/u-boot/arch/arm/mach-uniphier/reset.c new file mode 100644 index 000000000..dddb48ec4 --- /dev/null +++ b/roms/u-boot/arch/arm/mach-uniphier/reset.c @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2012-2014 Panasonic Corporation + * Copyright (C) 2015-2016 Socionext Inc. + * Author: Masahiro Yamada <yamada.masahiro@socionext.com> + */ + +#include <cpu_func.h> +#include <linux/io.h> +#include <asm/secure.h> + +#include "sc-regs.h" + +/* If PSCI is enabled, this is used for SYSTEM_RESET function */ +#ifdef CONFIG_ARMV7_PSCI +#define __SECURE __secure +#else +#define __SECURE +#endif + +void __SECURE reset_cpu(void) +{ + u32 tmp; + + writel(5, sc_base + SC_IRQTIMSET); /* default value */ + + tmp = readl(sc_base + SC_SLFRSTSEL); + tmp &= ~0x3; /* mask [1:0] */ + tmp |= 0x0; /* XRST reboot */ + writel(tmp, sc_base + SC_SLFRSTSEL); + + tmp = readl(sc_base + SC_SLFRSTCTL); + tmp |= 0x1; + writel(tmp, sc_base + SC_SLFRSTCTL); +} |