Commit | Line | Data |
---|---|---|
1345562b NF |
1 | /* |
2 | * reset AT91SAM9G20 as per errata | |
3 | * | |
4 | * (C) BitBox Ltd 2010 | |
5 | * | |
6 | * unless the SDRAM is cleanly shutdown before we hit the | |
7 | * reset register it can be left driving the data bus and | |
8 | * killing the chance of a subsequent boot from NAND | |
9 | * | |
10 | * This program is free software; you can redistribute it and/or modify | |
11 | * it under the terms of the GNU General Public License as published by | |
12 | * the Free Software Foundation; either version 2 of the License, or | |
13 | * (at your option) any later version. | |
14 | */ | |
15 | ||
16 | #include <linux/linkage.h> | |
1345562b | 17 | #include <mach/hardware.h> |
f363c407 | 18 | #include <mach/at91_ramc.h> |
1345562b NF |
19 | #include <mach/at91_rstc.h> |
20 | ||
21 | .arm | |
22 | ||
1b2073e7 | 23 | .globl at91sam9_alt_restart |
1345562b | 24 | |
f363c407 JCPV |
25 | at91sam9_alt_restart: ldr r0, =at91_ramc_base @ preload constants |
26 | ldr r0, [r0] | |
27 | ldr r4, =at91_rstc_base | |
28 | ldr r1, [r4] | |
1345562b NF |
29 | |
30 | mov r2, #1 | |
31 | mov r3, #AT91_SDRAMC_LPCB_POWER_DOWN | |
32 | ldr r4, =AT91_RSTC_KEY | AT91_RSTC_PERRST | AT91_RSTC_PROCRST | |
33 | ||
34 | .balign 32 @ align to cache line | |
35 | ||
36 | str r2, [r0, #AT91_SDRAMC_TR] @ disable SDRAM access | |
37 | str r3, [r0, #AT91_SDRAMC_LPR] @ power down SDRAM | |
e9f68b5c | 38 | str r4, [r1, #AT91_RSTC_CR] @ reset processor |
1345562b NF |
39 | |
40 | b . |