summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAlexander Stein <alexander.stein@systec-electronic.com>2016-03-21 08:47:56 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2016-03-29 09:07:14 +0200
commit3d32c620f629b85bcbac27f0e0cade41e39d1383 (patch)
treea18910ec31d4429e916d491597612d51a3207984 /arch
parent12728df9471265db38ca3a9bf597d11870568afd (diff)
downloadbarebox-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.c20
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);