Merge tag 'pinctrl-v3.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw...
[cascardo/linux.git] / arch / arm / mach-mvebu / pmsu_ll.S
index a945756..8865122 100644 (file)
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 
+
+ENTRY(armada_38x_scu_power_up)
+       mrc     p15, 4, r1, c15, c0     @ get SCU base address
+       orr     r1, r1, #0x8            @ SCU CPU Power Status Register
+       mrc     15, 0, r0, cr0, cr0, 5  @ get the CPU ID
+       and     r0, r0, #15
+       add     r1, r1, r0
+       mov     r0, #0x0
+       strb    r0, [r1]                @ switch SCU power state to Normal mode
+       ret     lr
+ENDPROC(armada_38x_scu_power_up)
+
 /*
  * This is the entry point through which CPUs exiting cpuidle deep
  * idle state are going.
  */
 ENTRY(armada_370_xp_cpu_resume)
 ARM_BE8(setend be )                    @ go BE8 if entered LE
+       /*
+        * Disable the MMU that might have been enabled in BootROM if
+        * this code is used in the resume path of a suspend/resume
+        * cycle.
+        */
+       mrc     p15, 0, r1, c1, c0, 0
+       bic     r1, #1
+       mcr     p15, 0, r1, c1, c0, 0
        bl      ll_add_cpu_to_smp_group
        bl      ll_enable_coherency
        b       cpu_resume
@@ -27,13 +47,7 @@ ENTRY(armada_38x_cpu_resume)
        /* do we need it for Armada 38x*/
 ARM_BE8(setend be )                    @ go BE8 if entered LE
        bl      v7_invalidate_l1
-       mrc     p15, 4, r1, c15, c0     @ get SCU base address
-       orr     r1, r1, #0x8            @ SCU CPU Power Status Register
-       mrc     15, 0, r0, cr0, cr0, 5  @ get the CPU ID
-       and     r0, r0, #15
-       add     r1, r1, r0
-       mov     r0, #0x0
-       strb    r0, [r1]                @ switch SCU power state to Normal mode
+       bl      armada_38x_scu_power_up
        b       cpu_resume
 ENDPROC(armada_38x_cpu_resume)