[Patch] ARM/MXS/i.MX28: distinguish POR and wake-up event correctly
Sascha Hauer
s.hauer at pengutronix.de
Mon Dec 3 03:50:05 EST 2012
On Fri, Nov 30, 2012 at 12:14:04PM +0100, Juergen Beisert wrote:
> When the built-in RTC in the i.MX28 is programmed to wake-up the SoC, the RTC
> reports two events: RST and WAKE. RST is okay in this case, because the PMIC
> was really powered down. But the real event is the WAKE from the RTC and
> should have precedence over the RST event. So, report the WAKE event for this
> special case.
>
> Signed-off-by: Juergen Beisert <jbe at pengutronix.de>
Applied, thanks
Sascha
>
> diff --git a/drivers/watchdog/im28wd.c b/drivers/watchdog/im28wd.c
> index ca32a72..bc19369 100644
> --- a/drivers/watchdog/im28wd.c
> +++ b/drivers/watchdog/im28wd.c
> @@ -82,6 +82,17 @@ static void __maybe_unused imx28_detect_reset_source(const struct imx28_wd *p)
> if (reg & MXS_RTC_PERSISTENT0_EXT_RST) {
> writel(MXS_RTC_PERSISTENT0_EXT_RST,
> p->regs + MXS_RTC_PERSISTENT0 + MXS_RTC_CLR_ADDR);
> + /*
> + * if the RTC has woken up the SoC, additionally the ALARM_WAKE
> + * bit is set. This bit should have precedence, because it
> + * reports the real event, why we are here.
> + */
> + if (reg & MXS_RTC_PERSISTENT0_ALARM_WAKE) {
> + writel(MXS_RTC_PERSISTENT0_ALARM_WAKE,
> + p->regs + MXS_RTC_PERSISTENT0 + MXS_RTC_CLR_ADDR);
> + set_reset_source(RESET_WKE);
> + return;
> + }
> set_reset_source(RESET_POR);
> return;
> }
>
>
> --
> Pengutronix e.K. | Juergen Beisert |
> Linux Solutions for Science and Industry | http://www.pengutronix.de/ |
>
> _______________________________________________
> barebox mailing list
> barebox at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
>
--
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