1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * (C) Copyright 2009
4  * Vipin Kumar, ST Micoelectronics, vipin.kumar@st.com.
5  */
6 
7 #include <common.h>
8 #include <cpu_func.h>
9 #include <asm/io.h>
10 #include <asm/arch/hardware.h>
11 #include <asm/arch/spr_syscntl.h>
12 #include <linux/delay.h>
13 
reset_cpu(void)14 void reset_cpu(void)
15 {
16 	struct syscntl_regs *syscntl_regs_p =
17 	    (struct syscntl_regs *)CONFIG_SPEAR_SYSCNTLBASE;
18 
19 	printf("System is going to reboot ...\n");
20 
21 	/*
22 	 * This 1 second delay will allow the above message
23 	 * to be printed before reset
24 	 */
25 	udelay((1000 * 1000));
26 
27 	/* Going into slow mode before resetting SOC */
28 	writel(0x02, &syscntl_regs_p->scctrl);
29 
30 	/*
31 	 * Writing any value to the system status register will
32 	 * reset the SoC
33 	 */
34 	writel(0x00, &syscntl_regs_p->scsysstat);
35 
36 	/* system will restart */
37 	while (1)
38 		;
39 }
40