Merge tag 'for-f2fs-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk...
[cascardo/linux.git] / arch / arm / mach-tegra / sleep.S
index 9daaef2..8d06213 100644 (file)
@@ -56,7 +56,9 @@ ENTRY(tegra_disable_clean_inv_dcache)
        isb
 
        /* Flush the D-cache */
-       bl      v7_flush_dcache_louis
+       cmp     r0, #TEGRA_FLUSH_CACHE_ALL
+       blne    v7_flush_dcache_louis
+       bleq    v7_flush_dcache_all
 
        /* Trun off coherency */
        exit_smp r4, r5
@@ -66,6 +68,28 @@ ENDPROC(tegra_disable_clean_inv_dcache)
 #endif
 
 #ifdef CONFIG_PM_SLEEP
+/*
+ * tegra_init_l2_for_a15
+ *
+ * set up the correct L2 cache data RAM latency
+ */
+ENTRY(tegra_init_l2_for_a15)
+       mrc     p15, 0, r0, c0, c0, 5
+       ubfx    r0, r0, #8, #4
+       tst     r0, #1                          @ only need for cluster 0
+       bne     _exit_init_l2_a15
+
+       mrc     p15, 0x1, r0, c9, c0, 2
+       and     r0, r0, #7
+       cmp     r0, #2
+       bicne   r0, r0, #7
+       orrne   r0, r0, #2
+       mcrne   p15, 0x1, r0, c9, c0, 2
+_exit_init_l2_a15:
+
+       mov     pc, lr
+ENDPROC(tegra_init_l2_for_a15)
+
 /*
  * tegra_sleep_cpu_finish(unsigned long v2p)
  *
@@ -73,9 +97,12 @@ ENDPROC(tegra_disable_clean_inv_dcache)
  * tegra?_tear_down_cpu
  */
 ENTRY(tegra_sleep_cpu_finish)
+       mov     r4, r0
        /* Flush and disable the L1 data cache */
+       mov     r0, #TEGRA_FLUSH_CACHE_ALL
        bl      tegra_disable_clean_inv_dcache
 
+       mov     r0, r4
        mov32   r6, tegra_tear_down_cpu
        ldr     r1, [r6]
        add     r1, r1, r0
@@ -107,10 +134,10 @@ ENTRY(tegra_shut_off_mmu)
 #ifdef CONFIG_CACHE_L2X0
        /* Disable L2 cache */
        check_cpu_part_num 0xc09, r9, r10
-       movweq  r4, #:lower16:(TEGRA_ARM_PERIF_BASE + 0x3000)
-       movteq  r4, #:upper16:(TEGRA_ARM_PERIF_BASE + 0x3000)
-       moveq   r5, #0
-       streq   r5, [r4, #L2X0_CTRL]
+       movweq  r2, #:lower16:(TEGRA_ARM_PERIF_BASE + 0x3000)
+       movteq  r2, #:upper16:(TEGRA_ARM_PERIF_BASE + 0x3000)
+       moveq   r3, #0
+       streq   r3, [r2, #L2X0_CTRL]
 #endif
        mov     pc, r0
 ENDPROC(tegra_shut_off_mmu)