From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Date: Sat, 11 Oct 2014 16:33:48 +0100 Subject: [U-Boot] [PATCH 3/3] ARM: sunxi: Fix reset command on sun6i/sun8i In-Reply-To: <1412426248-20050-4-git-send-email-wens@csie.org> References: <1412426248-20050-1-git-send-email-wens@csie.org> <1412426248-20050-4-git-send-email-wens@csie.org> Message-ID: <1413041628.11505.26.camel@hellion.org.uk> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Sat, 2014-10-04 at 20:37 +0800, Chen-Yu Tsai wrote: > +#else /* CONFIG_SUN6I || CONFIG_SUN8I || .. */ > + static const struct sunxi_wdog *wdog = > + ((struct sunxi_timer_reg *)SUNXI_TIMER_BASE)->wdog; > + > + /* Set the watchdog for its shortest interval (.5s) and wait */ > + writel(WDT_CFG_RESET, &wdog->cfg); > + writel(WDT_MODE_EN, &wdog->mode); > + writel(WDT_CTRL_KEY | WDT_CTRL_RESTART, &wdog->ctl); That's annoyingly close to the 4/5/7i version, but not quite close enough to allow any meaningful sharing :-/ > + while (1) { > + /* sun5i sometimes gets stuck without this */ Is this not therefore unnecessary on 6i/8i? > + writel(WDT_MODE_EN, &wdog->mode); > + } > +#endif > } > > /* do some early init */ > diff --git a/arch/arm/include/asm/arch-sunxi/watchdog.h b/arch/arm/include/asm/arch-sunxi/watchdog.h > index 5b755e3..ccc8fa3 100644 > --- a/arch/arm/include/asm/arch-sunxi/watchdog.h > +++ b/arch/arm/include/asm/arch-sunxi/watchdog.h > @@ -12,6 +12,9 @@ > > #define WDT_CTRL_RESTART (0x1 << 0) > #define WDT_CTRL_KEY (0x0a57 << 1) > + > +#if defined(CONFIG_SUN4I) || defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I) > + > #define WDT_MODE_EN (0x1 << 0) > #define WDT_MODE_RESET_EN (0x1 << 1) > > @@ -21,4 +24,21 @@ struct sunxi_wdog { > u32 res[2]; > }; > > +#else > + > +#define WDT_CFG_RESET (0x1) > +#define WDT_MODE_EN (0x1) > + > +struct sunxi_wdog { > + u32 irq_en; /* 0x00 */ > + u32 irq_sta; /* 0x04 */ > + u32 res1[2]; > + u32 ctl; /* 0x10 */ > + u32 cfg; /* 0x14 */ > + u32 mode; /* 0x18 */ > + u32 res2; > +}; > + > +#endif > + > #endif /* _SUNXI_WATCHDOG_H_ */