Blame view

arch/arm/mach-at91/at91sam9_alt_reset.S 1.17 KB
1345562b4   Nicolas Ferre   AT91: reset routi...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  /*
   * reset AT91SAM9G20 as per errata
   *
   * (C) BitBox Ltd 2010
   *
   * unless the SDRAM is cleanly shutdown before we hit the
   * reset register it can be left driving the data bus and
   * killing the chance of a subsequent boot from NAND
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * the Free Software Foundation; either version 2 of the License, or
   * (at your option) any later version.
   */
  
  #include <linux/linkage.h>
1345562b4   Nicolas Ferre   AT91: reset routi...
17
18
19
20
21
  #include <mach/hardware.h>
  #include <mach/at91sam9_sdramc.h>
  #include <mach/at91_rstc.h>
  
  			.arm
1b2073e77   Russell King   ARM: restart: at9...
22
  			.globl	at91sam9_alt_restart
1345562b4   Nicolas Ferre   AT91: reset routi...
23

1b2073e77   Russell King   ARM: restart: at9...
24
  at91sam9_alt_restart:	ldr	r0, .at91_va_base_sdramc	@ preload constants
1345562b4   Nicolas Ferre   AT91: reset routi...
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  			ldr	r1, .at91_va_base_rstc_cr
  
  			mov	r2, #1
  			mov	r3, #AT91_SDRAMC_LPCB_POWER_DOWN
  			ldr	r4, =AT91_RSTC_KEY | AT91_RSTC_PERRST | AT91_RSTC_PROCRST
  
  			.balign	32				@ align to cache line
  
  			str	r2, [r0, #AT91_SDRAMC_TR]	@ disable SDRAM access
  			str	r3, [r0, #AT91_SDRAMC_LPR]	@ power down SDRAM
  			str	r4, [r1]			@ reset processor
  
  			b	.
  
  .at91_va_base_sdramc:
  	.word AT91_VA_BASE_SYS + AT91_SDRAMC0
  .at91_va_base_rstc_cr:
  	.word AT91_VA_BASE_SYS + AT91_RSTC_CR