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> 17#include <mach/hardware.h> 18#include <mach/at91sam9_sdramc.h> 19#include <mach/at91_rstc.h> 20 21 .arm 22 23 .globl at91sam9_alt_restart 24 25at91sam9_alt_restart: ldr r0, .at91_va_base_sdramc @ preload constants 26 ldr r1, =at91_rstc_base 27 ldr r1, [r1] 28 29 mov r2, #1 30 mov r3, #AT91_SDRAMC_LPCB_POWER_DOWN 31 ldr r4, =AT91_RSTC_KEY | AT91_RSTC_PERRST | AT91_RSTC_PROCRST 32 33 .balign 32 @ align to cache line 34 35 str r2, [r0, #AT91_SDRAMC_TR] @ disable SDRAM access 36 str r3, [r0, #AT91_SDRAMC_LPR] @ power down SDRAM 37 str r4, [r1, #AT91_RSTC_CR] @ reset processor 38 39 b . 40 41.at91_va_base_sdramc: 42 .word AT91_VA_BASE_SYS + AT91_SDRAMC0 43