diff options
author | Dirk Behme <dirk.behme@de.bosch.com> | 2015-03-09 14:48:48 +0100 |
---|---|---|
committer | Stefano Babic <sbabic@denx.de> | 2015-03-13 13:29:42 +0100 |
commit | 9d16c52f62a4cd017ac3530002ccc8ea9ffde58f (patch) | |
tree | fb247e644b34899ef4718281dfe107cda1b0b8d7 | |
parent | 0c1842a01f2b5383064b81862fcbc438146497fa (diff) | |
download | u-boot-imx-9d16c52f62a4cd017ac3530002ccc8ea9ffde58f.zip u-boot-imx-9d16c52f62a4cd017ac3530002ccc8ea9ffde58f.tar.gz u-boot-imx-9d16c52f62a4cd017ac3530002ccc8ea9ffde58f.tar.bz2 |
mx6: soc: Switch to cold reset
Disable the warm reset and enable the cold reset for a more reliable
restart ('reset'). This is taken from the Linux kernel, see imx_src_init()
in arch/arm/mach-imx/src.c.
Signed-off-by: Dirk Behme <dirk.behme@de.bosch.com>
-rw-r--r-- | arch/arm/cpu/armv7/mx6/soc.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c index b354f70..dd34138 100644 --- a/arch/arm/cpu/armv7/mx6/soc.c +++ b/arch/arm/cpu/armv7/mx6/soc.c @@ -288,6 +288,22 @@ static void set_preclk_from_osc(void) } #endif +#define SRC_SCR_WARM_RESET_ENABLE 0 + +static void init_src(void) +{ + struct src *src_regs = (struct src *)SRC_BASE_ADDR; + u32 val; + + /* + * force warm reset sources to generate cold reset + * for a more reliable restart + */ + val = readl(&src_regs->scr); + val &= ~(1 << SRC_SCR_WARM_RESET_ENABLE); + writel(val, &src_regs->scr); +} + int arch_cpu_init(void) { init_aips(); @@ -322,6 +338,8 @@ int arch_cpu_init(void) mxs_dma_init(); #endif + init_src(); + return 0; } |