[PATCH v2 03/10] ARM: i.MX6: Record reset reason as a part of startup

Jan Lübbe jlu at pengutronix.de
Wed May 2 07:42:33 PDT 2018


There is already code in drivers/watchdog/imxwd.c to handle this. Is
that obsolete now?

On Fri, 2018-04-20 at 18:05 -0700, Andrey Smirnov wrote:
> Signed-off-by: Andrey Smirnov <andrew.smirnov at gmail.com>
> ---
>  arch/arm/mach-imx/imx6.c                      | 13 ++++++++++++-
>  arch/arm/mach-imx/include/mach/reset-reason.h |  2 ++
>  2 files changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/mach-imx/imx6.c b/arch/arm/mach-imx/imx6.c
> index 88165adee..49610bf08 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>
> @@ -173,10 +174,20 @@ int imx6_cpu_revision(void)
>  	return soc_revision;
>  }
>  
> +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();
>  
> @@ -221,7 +232,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 39afc4b28..f2544a303 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;
-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list