Skip to content

Commit

Permalink
ARM: i.MX7: Record reset reason as a part of startup
Browse files Browse the repository at this point in the history
Signed-off-by: Andrey Smirnov <[email protected]>
Signed-off-by: Sascha Hauer <[email protected]>
  • Loading branch information
ndreys authored and saschahauer committed Apr 26, 2018
1 parent f0b6b83 commit ccdc6ba
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
14 changes: 14 additions & 0 deletions arch/arm/mach-imx/imx7.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include <mach/imx7.h>
#include <mach/generic.h>
#include <mach/revision.h>
#include <mach/reset-reason.h>
#include <mach/imx7-regs.h>

void imx7_init_lowlevel(void)
Expand Down Expand Up @@ -167,10 +168,22 @@ static struct psci_ops imx7_psci_ops = {
.cpu_off = imx7_cpu_off,
};

static const struct imx_reset_reason imx7_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_WDOG3_RESET, RESET_WDG, 1 },
{ IMX_SRC_SRSR_WDOG4_RESET, RESET_WDG, 2 },
{ IMX_SRC_SRSR_TEMPSENSE_RESET, RESET_THERM, 0 },
{ /* sentinel */ }
};

int imx7_init(void)
{
const char *cputypestr;
u32 imx7_silicon_revision;
void __iomem *src = IOMEM(MX7_SRC_BASE_ADDR);

imx7_init_lowlevel();

Expand All @@ -197,6 +210,7 @@ int imx7_init(void)
}

imx_set_silicon_revision(cputypestr, imx7_silicon_revision);
imx_set_reset_reason(src + IMX7_SRC_SRSR, imx7_reset_reasons);

return 0;
}
1 change: 1 addition & 0 deletions arch/arm/mach-imx/include/mach/reset-reason.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#define IMX_SRC_SRSR_WARM_BOOT BIT(16)

#define IMX6_SRC_SRSR 0x008
#define IMX7_SRC_SRSR 0x05c

struct imx_reset_reason {
uint32_t mask;
Expand Down

0 comments on commit ccdc6ba

Please sign in to comment.