Blame view

arch/arm/mach-s3c/sleep-s3c2410.S 1.29 KB
84b217010   Krzysztof Kozlowski   ARM: S3C24XX: Add...
1
2
  /* SPDX-License-Identifier: GPL-2.0+ */
  /*
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
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   Krzysztof Kozlowski   ARM: S3C24XX: Add...
11
   */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
12

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
13
  #include <linux/linkage.h>
334a1c70b   Tushar Behera   ARM: SAMSUNG: Rep...
14
  #include <linux/serial_s3c.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
15
  #include <asm/assembler.h>
c6ff132d4   Arnd Bergmann   ARM: s3c: make he...
16
  #include "map.h"
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
17

c6ff132d4   Arnd Bergmann   ARM: s3c: make he...
18
19
  #include "regs-gpio.h"
  #include "regs-clock.h"
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
20

71b9114d2   Arnd Bergmann   ARM: s3c: move in...
21
  #include "regs-mem-s3c24xx.h"
37c3adca8   Kukjin Kim   ARM: S3C24XX: hea...
22

a21765a70   Ben Dooks   [ARM] 4157/2: S3C...
23
  	/* s3c2410_cpu_suspend
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
24
  	 *
a21765a70   Ben Dooks   [ARM] 4157/2: S3C...
25
  	 * put the cpu into sleep mode
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
26
  	*/
a21765a70   Ben Dooks   [ARM] 4157/2: S3C...
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   Arnd Bergmann   ARM: samsung: fix...
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   Ben Dooks   [ARM] 4157/2: S3C...
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   Matt Reimer   [ARM] 4169/1: S3C...
47
  	.align	5
a21765a70   Ben Dooks   [ARM] 4157/2: S3C...
48
  s3c2410_do_sleep:
2815774bb   Arnd Bergmann   ARM: samsung: fix...
49
50
51
  	streq	r7, [r4]			@ SDRAM sleep command
  	streq	r8, [r5]			@ SDRAM power-down config
  	streq	r9, [r6]			@ CPU sleep
a21765a70   Ben Dooks   [ARM] 4157/2: S3C...
52
  1:	beq	1b
6ebbf2ce4   Russell King   ARM: convert all ...
53
  	ret	lr