Index: linux-2.6.39.4/arch/arm/mach-at91/at91sam9x5.c =================================================================== --- linux-2.6.39.4.orig/arch/arm/mach-at91/at91sam9x5.c 2012-06-25 17:00:27.060489533 -0500 +++ linux-2.6.39.4/arch/arm/mach-at91/at91sam9x5.c 2012-06-25 17:00:33.051404086 -0500 @@ -330,7 +330,10 @@ static void at91sam9x5_reset(void) { - at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST); + // MTR: generate an external reset (assert the NRST pin) on soft reset + // set reset duration to 125 ms --> set ERSTL to 0xb (0xb = 11 = 2^12 slow clock cycles = 4096 clocks = 125 ms) + at91_sys_write(AT91_RSTC_MR, AT91_RSTC_KEY | (0xb << 8)); + at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST | AT91_RSTC_EXTRST); } static void at91sam9x5_poweroff(void)