Explorar o código

ARM: OMAP: fix fault in enter_full_retention()

In omap24xx_cpu_suspend assembly routine, the r2 register which holds
the address of the SDRC_POWER reg is set to zero before the value is
written back triggering a fault due to writing to address zero.

It's hard to tell where this change was introduced since this file
has been moved and merged.

While this fix prevents a crash, suspend on my n810 is broken with
current kernels.  I never come out of suspend.

Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Kevin Hilman %!s(int64=16) %!d(string=hai) anos
pai
achega
0dc23d7048
Modificáronse 1 ficheiros con 1 adicións e 2 borrados
  1. 1 2
      arch/arm/mach-omap2/sleep24xx.S

+ 1 - 2
arch/arm/mach-omap2/sleep24xx.S

@@ -93,9 +93,8 @@ ENTRY(omap24xx_cpu_suspend)
 	orr	r4, r4, #0x40		@ enable self refresh on idle req
 	orr	r4, r4, #0x40		@ enable self refresh on idle req
 	mov	r5, #0x2000		@ set delay (DPLL relock + DLL relock)
 	mov	r5, #0x2000		@ set delay (DPLL relock + DLL relock)
 	str	r4, [r2]		@ make it so
 	str	r4, [r2]		@ make it so
-	mov	r2, #0
 	nop
 	nop
-	mcr	p15, 0, r2, c7, c0, 4	@ wait for interrupt
+	mcr	p15, 0, r3, c7, c0, 4	@ wait for interrupt
 	nop
 	nop
 loop:
 loop:
 	subs	r5, r5, #0x1		@ awake, wait just a bit
 	subs	r5, r5, #0x1		@ awake, wait just a bit