On 11/15/18 3:15 PM, Sascha Hauer wrote: > On i.MX6 when the watchdog has resetted the system then the SRSR > register correctly shows that the watchdog has resetted the system. > This is not the desired result though, a "reset" in barebox or "reboot" > in Linux should result in "RST" as reset source. So instead of making > the SRSR register value overwrite the reset source read from the > watchdog registers, interpret the SRSR value corresponding to watchdog > reset as "lookup details in the watchdog registers". > > Signed-off-by: Sascha Hauer <[email protected]> > Cc: Andrey Smirnov <[email protected]> > --- > arch/arm/mach-imx/imx.c | 6 +++--- > drivers/watchdog/imxwd.c | 10 +++++++--- > 2 files changed, 10 insertions(+), 6 deletions(-) > > diff --git a/arch/arm/mach-imx/imx.c b/arch/arm/mach-imx/imx.c > index ad227663dd..f87dd76c75 100644 > --- a/arch/arm/mach-imx/imx.c > +++ b/arch/arm/mach-imx/imx.c > @@ -204,9 +204,9 @@ void imx_set_reset_reason(void __iomem *srsr, > * sure we'll always override info from watchdog driver. > */
With this change, the above comment doesn't describe the reality anymore.
> reset_source_set_priority(type,
> - RESET_SOURCE_DEFAULT_PRIORITY + 1);
> + RESET_SOURCE_DEFAULT_PRIORITY);
> reset_source_set_instance(type, instance);
>
> - pr_info("i.MX reset reason %s (SRSR: 0x%08x)\n",
> - reset_source_name(), reg);
> + pr_debug("i.MX reset reason %s (SRSR: 0x%08x)\n",
> + reset_source_name(), reg);
> }
> diff --git a/drivers/watchdog/imxwd.c b/drivers/watchdog/imxwd.c
> index a66fae400c..8dba662392 100644
> --- a/drivers/watchdog/imxwd.c
> +++ b/drivers/watchdog/imxwd.c
> @@ -162,19 +162,23 @@ static void __noreturn imxwd_force_soc_reset(struct
> restart_handler *rst)
> static void imx_watchdog_detect_reset_source(struct imx_wd *priv)
> {
> u16 val = readw(priv->base + IMX21_WDOG_WSTR);
> + int priority = RESET_SOURCE_DEFAULT_PRIORITY;
> +
> + if (reset_source_get() == RESET_WDG)
> + priority++;
>
> if (val & WSTR_COLDSTART) {
> - reset_source_set(RESET_POR);
> + reset_source_set_priority(RESET_POR, priority);
> return;
> }
>
> if (val & (WSTR_HARDRESET | WSTR_WARMSTART)) {
> - reset_source_set(RESET_RST);
> + reset_source_set_priority(RESET_RST, priority);
> return;
> }
>
> if (val & WSTR_WDOG) {
> - reset_source_set(RESET_WDG);
> + reset_source_set_priority(RESET_WDG, priority);
> return;
> }
>
>
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
signature.asc
Description: OpenPGP digital signature
_______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
