Blame view
arch/arm/mach-s3c/sleep-s3c2410.S
1.29 KB
84b217010
|
1 2 |
/* SPDX-License-Identifier: GPL-2.0+ */ /* |
1da177e4c
|
3 4 5 6 7 8 9 10 |
* Copyright (c) 2004 Simtec Electronics * Ben Dooks <ben@simtec.co.uk> * * S3C2410 Power Manager (Suspend-To-RAM) support * * Based on PXA/SA1100 sleep code by: * Nicolas Pitre, (c) 2002 Monta Vista Software Inc * Cliff Brake, (c) 2001 |
84b217010
|
11 |
*/ |
1da177e4c
|
12 |
|
1da177e4c
|
13 |
#include <linux/linkage.h> |
334a1c70b
|
14 |
#include <linux/serial_s3c.h> |
1da177e4c
|
15 |
#include <asm/assembler.h> |
c6ff132d4
|
16 |
#include "map.h" |
1da177e4c
|
17 |
|
c6ff132d4
|
18 19 |
#include "regs-gpio.h" #include "regs-clock.h" |
1da177e4c
|
20 |
|
71b9114d2
|
21 |
#include "regs-mem-s3c24xx.h" |
37c3adca8
|
22 |
|
a21765a70
|
23 |
/* s3c2410_cpu_suspend |
1da177e4c
|
24 |
* |
a21765a70
|
25 |
* put the cpu into sleep mode |
1da177e4c
|
26 |
*/ |
a21765a70
|
27 28 29 30 31 32 |
ENTRY(s3c2410_cpu_suspend) @@ prepare cpu to sleep ldr r4, =S3C2410_REFRESH ldr r5, =S3C24XX_MISCCR ldr r6, =S3C2410_CLKCON |
2815774bb
|
33 34 35 |
ldr r7, [r4] @ get REFRESH (and ensure in TLB) ldr r8, [r5] @ get MISCCR (and ensure in TLB) ldr r9, [r6] @ get CLKCON (and ensure in TLB) |
a21765a70
|
36 37 38 39 40 41 42 43 44 45 46 |
orr r7, r7, #S3C2410_REFRESH_SELF @ SDRAM sleep command orr r8, r8, #S3C2410_MISCCR_SDSLEEP @ SDRAM power-down signals orr r9, r9, #S3C2410_CLKCON_POWER @ power down command teq pc, #0 @ first as a trial-run to load cache bl s3c2410_do_sleep teq r0, r0 @ now do it for real b s3c2410_do_sleep @ @@ align next bit of code to cache line |
4b210faf0
|
47 |
.align 5 |
a21765a70
|
48 |
s3c2410_do_sleep: |
2815774bb
|
49 50 51 |
streq r7, [r4] @ SDRAM sleep command streq r8, [r5] @ SDRAM power-down config streq r9, [r6] @ CPU sleep |
a21765a70
|
52 |
1: beq 1b |
6ebbf2ce4
|
53 |
ret lr |