diff options
author | Alexander Stein <alexander.stein@systec-electronic.com> | 2016-03-21 08:47:56 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-03-29 09:07:14 +0200 |
commit | 3d32c620f629b85bcbac27f0e0cade41e39d1383 (patch) | |
tree | a18910ec31d4429e916d491597612d51a3207984 /arch | |
parent | 12728df9471265db38ca3a9bf597d11870568afd (diff) | |
download | barebox-3d32c620f629b85bcbac27f0e0cade41e39d1383.tar.gz barebox-3d32c620f629b85bcbac27f0e0cade41e39d1383.tar.xz |
ARM i.MX35: Read reset source from CCM
CCM has reset status bits with more detailed information than the
watchdog. Set reset source with higher priority.
Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-imx/clk-imx35.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/clk-imx35.c b/arch/arm/mach-imx/clk-imx35.c index 2433d73cb6..af6c4058d7 100644 --- a/arch/arm/mach-imx/clk-imx35.c +++ b/arch/arm/mach-imx/clk-imx35.c @@ -14,6 +14,7 @@ #include <linux/clkdev.h> #include <linux/err.h> #include <mach/imx35-regs.h> +#include <reset_source.h> #include "clk.h" @@ -95,12 +96,31 @@ static int imx35_ccm_probe(struct device_d *dev) struct arm_ahb_div *aad; unsigned char *hsp_div; void __iomem *base; + u32 reg; iores = dev_request_mem_resource(dev, 0); if (IS_ERR(iores)) return PTR_ERR(iores); base = IOMEM(iores->start); + /* Check reset source */ + reg = readl(base + CCM_RCSR); + + switch (reg & 0x0F) { + case 0x00: + reset_source_set_priority(RESET_POR, 200); + break; + case 0x02: + reset_source_set_priority(RESET_JTAG, 200); + break; + case 0x04: + reset_source_set_priority(RESET_RST, 200); + break; + case 0x08: + reset_source_set_priority(RESET_WDG, 200); + break; + } + writel(0xffffffff, base + CCM_CGR0); writel(0xffffffff, base + CCM_CGR1); writel(0xfbffffff, base + CCM_CGR2); |