diff options
author | Gaurav Sarode <gsarode@nvidia.com> | 2012-03-02 18:30:19 +0530 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-03-06 18:01:47 -0800 |
commit | c2723e948f91cac068fe9f6b473270e97829915e (patch) | |
tree | a8980aea372d45241e3c31f01215495aad13d900 /arch/arm/mach-tegra/common.c | |
parent | 2308e53839eb95c14e2fff2f6750893cdb456109 (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.c | 11 |
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 */ |