Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / arch / sh / boards / mach-migor / sdram.S
1 /* SPDX-License-Identifier: GPL-2.0
2  *
3  * Migo-R sdram self/auto-refresh setup code
4  *
5  *  Copyright (C) 2009 Magnus Damm
6  */
7
8 #include <linux/sys.h>
9 #include <linux/errno.h>
10 #include <linux/linkage.h>
11 #include <asm/asm-offsets.h>
12 #include <asm/suspend.h>
13 #include <asm/romimage-macros.h>
14
15 /* code to enter and leave self-refresh. must be self-contained.
16  * this code will be copied to on-chip memory and executed from there.
17  */
18         .balign 4
19 ENTRY(migor_sdram_enter_start)
20
21         /* SBSC: disable power down and put in self-refresh mode */
22         mov.l   1f, r4
23         mov.l   2f, r1
24         mov.l   @r4, r2
25         or      r1, r2
26         mov.l   3f, r3
27         and     r3, r2
28         mov.l   r2, @r4
29
30         rts
31          nop
32
33         .balign 4
34 1:      .long   0xfe400008 /* SDCR0 */
35 2:      .long   0x00000400
36 3:      .long   0xffff7fff
37 ENTRY(migor_sdram_enter_end)
38
39         .balign 4
40 ENTRY(migor_sdram_leave_start)
41
42         /* SBSC: set auto-refresh mode */
43         mov.l   1f, r4
44         mov.l   @r4, r0
45         mov.l   4f, r1
46         and     r1, r0
47         mov.l   r0, @r4
48         mov.l   6f, r4
49         mov.l   8f, r0
50         mov.l   @r4, r1
51         mov     #-1, r4
52         add     r4, r1
53         or      r1, r0
54         mov.l   7f, r1
55         mov.l   r0, @r1
56
57         rts
58          nop
59
60         .balign 4
61 1:      .long   0xfe400008 /* SDCR0 */
62 4:      .long   0xfffffbff
63 6:      .long   0xfe40001c /* RTCOR */
64 7:      .long   0xfe400018 /* RTCNT */
65 8:      .long   0xa55a0000
66 ENTRY(migor_sdram_leave_end)