restart.c 969 Bytes
Newer Older
1 2 3 4 5 6
/*
 * arch/arm/plat-spear/restart.c
 *
 * SPEAr platform specific restart functions
 *
 * Copyright (C) 2009 ST Microelectronics
Viresh Kumar's avatar
Viresh Kumar committed
7
 * Viresh Kumar <viresh.linux@gmail.com>
8 9 10 11 12 13
 *
 * This file is licensed under the terms of the GNU General Public
 * License version 2. This program is licensed "as is" without any
 * warranty of any kind, whether express or implied.
 */
#include <linux/io.h>
14
#include <linux/amba/sp810.h>
15
#include <asm/system_misc.h>
16
#include <mach/spear.h>
17
#include "generic.h"
18

Viresh Kumar's avatar
Viresh Kumar committed
19
#define SPEAR13XX_SYS_SW_RES			(VA_MISC_BASE + 0x204)
20 21 22 23 24 25 26
void spear_restart(char mode, const char *cmd)
{
	if (mode == 's') {
		/* software reset, Jump into ROM at address 0 */
		soft_restart(0);
	} else {
		/* hardware reset, Use on-chip reset capability */
Viresh Kumar's avatar
Viresh Kumar committed
27 28
#ifdef CONFIG_ARCH_SPEAR13XX
		writel_relaxed(0x01, SPEAR13XX_SYS_SW_RES);
29 30
#endif
#if defined(CONFIG_ARCH_SPEAR3XX) || defined(CONFIG_ARCH_SPEAR6XX)
31
		sysctl_soft_reset((void __iomem *)VA_SPEAR_SYS_CTRL_BASE);
Viresh Kumar's avatar
Viresh Kumar committed
32
#endif
33 34
	}
}