summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Smirnov <andrew.smirnov@gmail.com>2018-04-20 18:05:31 -0700
committerSascha Hauer <s.hauer@pengutronix.de>2018-04-26 13:46:43 +0200
commitf0b6b837a438a41a58c196dbc5cdda7c57076f51 (patch)
treeb1472f39fbe8efc3f1e642e3c7d1aeb17d67a7d9
parent3375252d35eb74ad3e867809aac06ec1ab4446fa (diff)
downloadbarebox-f0b6b837a438a41a58c196dbc5cdda7c57076f51.tar.gz
barebox-f0b6b837a438a41a58c196dbc5cdda7c57076f51.tar.xz
ARM: i.MX6: Record reset reason as a part of startup
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/mach-imx/imx6.c13
-rw-r--r--arch/arm/mach-imx/include/mach/reset-reason.h2
2 files changed, 14 insertions, 1 deletions
diff --git a/arch/arm/mach-imx/imx6.c b/arch/arm/mach-imx/imx6.c
index 14a1cba5a4..8d2788c59d 100644
--- a/arch/arm/mach-imx/imx6.c
+++ b/arch/arm/mach-imx/imx6.c
@@ -19,6 +19,7 @@
#include <mach/imx6.h>
#include <mach/generic.h>
#include <mach/revision.h>
+#include <mach/reset-reason.h>
#include <mach/imx6-anadig.h>
#include <mach/imx6-regs.h>
#include <mach/generic.h>
@@ -147,10 +148,20 @@ static void imx6ul_enet_clk_init(void)
writel(val, gprbase + IOMUXC_GPR1);
}
+static const struct imx_reset_reason imx6_reset_reasons[] = {
+ { IMX_SRC_SRSR_IPP_RESET, RESET_POR, 0 },
+ { IMX_SRC_SRSR_WDOG1_RESET, RESET_WDG, 0 },
+ { IMX_SRC_SRSR_JTAG_RESET, RESET_JTAG, 0 },
+ { IMX_SRC_SRSR_JTAG_SW_RESET, RESET_JTAG, 0 },
+ { IMX_SRC_SRSR_WARM_BOOT, RESET_RST, 0 },
+ { /* sentinel */ }
+};
+
int imx6_init(void)
{
const char *cputypestr;
u32 mx6_silicon_revision;
+ void __iomem *src = IOMEM(MX6_SRC_BASE_ADDR);
imx6_init_lowlevel();
@@ -195,7 +206,7 @@ int imx6_init(void)
}
imx_set_silicon_revision(cputypestr, mx6_silicon_revision);
-
+ imx_set_reset_reason(src + IMX6_SRC_SRSR, imx6_reset_reasons);
imx6_setup_ipu_qos();
imx6ul_enet_clk_init();
diff --git a/arch/arm/mach-imx/include/mach/reset-reason.h b/arch/arm/mach-imx/include/mach/reset-reason.h
index 39afc4b287..f2544a303c 100644
--- a/arch/arm/mach-imx/include/mach/reset-reason.h
+++ b/arch/arm/mach-imx/include/mach/reset-reason.h
@@ -14,6 +14,8 @@
#define IMX_SRC_SRSR_TEMPSENSE_RESET BIT(9)
#define IMX_SRC_SRSR_WARM_BOOT BIT(16)
+#define IMX6_SRC_SRSR 0x008
+
struct imx_reset_reason {
uint32_t mask;
enum reset_src_type type;