diff options
Diffstat (limited to 'arch/arm/mach-orion5x/common.c')
| -rw-r--r-- | arch/arm/mach-orion5x/common.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c index 22ace0bf2f9..41127e80cc1 100644 --- a/arch/arm/mach-orion5x/common.c +++ b/arch/arm/mach-orion5x/common.c @@ -18,6 +18,7 @@  #include <linux/mbus.h>  #include <linux/mv643xx_i2c.h>  #include <linux/ata_platform.h> +#include <linux/delay.h>  #include <net/dsa.h>  #include <asm/page.h>  #include <asm/setup.h> @@ -304,6 +305,17 @@ void __init orion5x_init(void)  	orion5x_wdt_init();  } +void orion5x_restart(char mode, const char *cmd) +{ +	/* +	 * Enable and issue soft reset +	 */ +	orion5x_setbits(RSTOUTn_MASK, (1 << 2)); +	orion5x_setbits(CPU_SOFT_RESET, 1); +	mdelay(200); +	orion5x_clrbits(CPU_SOFT_RESET, 1); +} +  /*   * Many orion-based systems have buggy bootloader implementations.   * This is a common fixup for bogus memory tags.  |