Linux 6.13-rc4
[linux.git] / arch / sh / boards / mach-ap325rxa / sdram.S
blob541c82cc30b1127229d864ddb55b88934f8fc336
1 /* SPDX-License-Identifier: GPL-2.0
2  *
3  * AP325RXA sdram self/auto-refresh setup code
4  *
5  *  Copyright (C) 2009 Magnus Damm
6  */
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>
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(ap325rxa_sdram_enter_start)
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
30         rts
31          nop
33         .balign 4
34 1:      .long   0xfe400008 /* SDCR0 */
35 2:      .long   0x00000400
36 3:      .long   0xffff7fff
37 ENTRY(ap325rxa_sdram_enter_end)
39         .balign 4
40 ENTRY(ap325rxa_sdram_leave_start)
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
57         rts
58          nop
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(ap325rxa_sdram_leave_end)