summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/common.c
diff options
context:
space:
mode:
authorGaurav Sarode <gsarode@nvidia.com>2012-03-02 18:30:19 +0530
committerSimone Willett <swillett@nvidia.com>2012-03-06 18:01:47 -0800
commitc2723e948f91cac068fe9f6b473270e97829915e (patch)
treea8980aea372d45241e3c31f01215495aad13d900 /arch/arm/mach-tegra/common.c
parent2308e53839eb95c14e2fff2f6750893cdb456109 (diff)
ARM: tegra: Add forced-recovery support for bootloader.
Set SCRATCH0 bit 1 when forced-recovery is set. Bootrom will check this and put device into nvflash mode. Bug 948326 Signed-off-by: Gaurav Sarode <gsarode@nvidia.com> Change-Id: I78108021dffda681d63ddc6760e07cb563ba2eac Reviewed-on: http://git-master/r/87238 Reviewed-by: Vivek Kumar <vivekk@nvidia.com> Reviewed-by: Hon Fei Chong <hchong@nvidia.com> Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/common.c')
-rw-r--r--arch/arm/mach-tegra/common.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/arm/mach-tegra/common.c b/arch/arm/mach-tegra/common.c
index ac19626e02d6..7d4703f1129d 100644
--- a/arch/arm/mach-tegra/common.c
+++ b/arch/arm/mach-tegra/common.c
@@ -61,6 +61,7 @@
#define RECOVERY_MODE BIT(31)
#define BOOTLOADER_MODE BIT(30)
+#define FORCED_RECOVERY_MODE BIT(1)
#define AHB_GIZMO_USB 0x1c
#define AHB_GIZMO_USB2 0x78
@@ -117,16 +118,20 @@ void tegra_assert_system_reset(char mode, const char *cmd)
u32 reg;
reg = readl_relaxed(reset + PMC_SCRATCH0);
- /* Writing recovery kernel or Bootloader mode in SCRATCH0 31:30 */
+ /* Writing recovery kernel or Bootloader mode in SCRATCH0 31:30:1 */
if (cmd) {
if (!strcmp(cmd, "recovery"))
reg |= RECOVERY_MODE;
else if (!strcmp(cmd, "bootloader"))
reg |= BOOTLOADER_MODE;
+ else if (!strcmp(cmd, "forced-recovery"))
+ reg |= FORCED_RECOVERY_MODE;
+ else
+ reg &= ~(BOOTLOADER_MODE | RECOVERY_MODE | FORCED_RECOVERY_MODE);
}
else {
- /* Clearing SCRATCH0 31:30 on default reboot */
- reg &= ~(BOOTLOADER_MODE | RECOVERY_MODE);
+ /* Clearing SCRATCH0 31:30:1 on default reboot */
+ reg &= ~(BOOTLOADER_MODE | RECOVERY_MODE | FORCED_RECOVERY_MODE);
}
writel_relaxed(reg, reset + PMC_SCRATCH0);
/* use *_related to avoid spinlock since caches are off */