diff options
Diffstat (limited to 'arch/arm/mach-rockchip/core.c')
-rw-r--r-- | arch/arm/mach-rockchip/core.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/arch/arm/mach-rockchip/core.c b/arch/arm/mach-rockchip/core.c index bab06df63c..2428fee349 100644 --- a/arch/arm/mach-rockchip/core.c +++ b/arch/arm/mach-rockchip/core.c @@ -13,16 +13,24 @@ #include <asm/io.h> #include <common.h> +#include <init.h> +#include <restart.h> #include <mach/rockchip-regs.h> -void __noreturn reset_cpu(unsigned long addr) +static void __noreturn rockchip_restart_soc(struct restart_handler *rst) { /* Map bootrom from address 0 */ writel(RK_SOC_CON0_REMAP << 16, RK_GRF_BASE + RK_GRF_SOC_CON0); /* Reset */ writel(0xeca8, RK_CRU_BASE + RK_CRU_GLB_SRST_SND); - while (1) - ; + hang(); } -EXPORT_SYMBOL(reset_cpu); + +static int restart_register_feature(void) +{ + restart_handler_register_fn(rockchip_restart_soc); + + return 0; +} +coredevice_initcall(restart_register_feature); |