diff options
author | Juha Yrjola <juha.yrjola@solidboot.com> | 2009-03-09 17:21:01 -0400 |
---|---|---|
committer | Kevin Hilman <khilman@deeprootsystems.com> | 2009-11-11 17:42:26 -0500 |
commit | 692ec4abb96174c0e4b3aef6d2b71f36a4a14c8b (patch) | |
tree | f275fefea1182e46d8a8de9c3288149c6557ca01 /arch/arm/mach-omap2/prcm.c | |
parent | bf07c9f2d869077cc918b4cda861eadac6df6283 (diff) |
OMAP: Store reboot mode in scratchpad on OMAP34xx
The reboot mode can be communicated to a bootloader (or the
kernel itself) with a scratchpad register. This functionality
is especially useful, if userspace is allowed to change
the reboot mode.
Signed-off-by: Juha Yrjola <juha.yrjola@solidboot.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm/mach-omap2/prcm.c')
-rw-r--r-- | arch/arm/mach-omap2/prcm.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c index 221eed11b73f..029d376198d4 100644 --- a/arch/arm/mach-omap2/prcm.c +++ b/arch/arm/mach-omap2/prcm.c | |||
@@ -135,9 +135,18 @@ void omap_prcm_arch_reset(char mode) | |||
135 | 135 | ||
136 | if (cpu_is_omap24xx()) | 136 | if (cpu_is_omap24xx()) |
137 | prcm_offs = WKUP_MOD; | 137 | prcm_offs = WKUP_MOD; |
138 | else if (cpu_is_omap34xx()) | 138 | else if (cpu_is_omap34xx()) { |
139 | u32 l; | ||
140 | |||
139 | prcm_offs = OMAP3430_GR_MOD; | 141 | prcm_offs = OMAP3430_GR_MOD; |
140 | else | 142 | l = ('B' << 24) | ('M' << 16) | mode; |
143 | /* Reserve the first word in scratchpad for communicating | ||
144 | * with the boot ROM. A pointer to a data structure | ||
145 | * describing the boot process can be stored there, | ||
146 | * cf. OMAP34xx TRM, Initialization / Software Booting | ||
147 | * Configuration. */ | ||
148 | omap_writel(l, OMAP343X_SCRATCHPAD + 4); | ||
149 | } else | ||
141 | WARN_ON(1); | 150 | WARN_ON(1); |
142 | 151 | ||
143 | prm_set_mod_reg_bits(OMAP_RST_DPLL3, prcm_offs, RM_RSTCTRL); | 152 | prm_set_mod_reg_bits(OMAP_RST_DPLL3, prcm_offs, RM_RSTCTRL); |