diff mbox

[RESEND] ARM: ep93xx: Disable TS-72xx watchdog before uncompressing

Message ID 20170202201226.29631-1-f.fainelli@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Florian Fainelli Feb. 2, 2017, 8:12 p.m. UTC
The TS-72xx/73xx boards have a CPLD watchdog which is configured to
reset the board after 8 seconds, if the kernel is large enough that this
takes about this time to decompress the kernel, we will encounter a
spurious reboot.

Do not pull ts72xx.h, but instead locally define what we need to disable
the watchdog.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
Arnd, this is a recent, so you can queue this up, thanks!

 arch/arm/mach-ep93xx/include/mach/uncompress.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Hartley Sweeten Feb. 2, 2017, 8:43 p.m. UTC | #1
On Thursday, February 02, 2017 1:12 PM, Florian Fainelli wrote:
> The TS-72xx/73xx boards have a CPLD watchdog which is configured to
> reset the board after 8 seconds, if the kernel is large enough that this
> takes about this time to decompress the kernel, we will encounter a
> spurious reboot.
>
> Do not pull ts72xx.h, but instead locally define what we need to disable
> the watchdog.
>
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> ---
> Arnd, this is a recent, so you can queue this up, thanks!

Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com>

or Tested-by/Acked-by as appropriate...

Hartley
Arnd Bergmann Feb. 7, 2017, 3:05 p.m. UTC | #2
On Thursday, February 2, 2017 8:43:52 PM CET Hartley Sweeten wrote:
> On Thursday, February 02, 2017 1:12 PM, Florian Fainelli wrote:
> > The TS-72xx/73xx boards have a CPLD watchdog which is configured to
> > reset the board after 8 seconds, if the kernel is large enough that this
> > takes about this time to decompress the kernel, we will encounter a
> > spurious reboot.
> >
> > Do not pull ts72xx.h, but instead locally define what we need to disable
> > the watchdog.
> >
> > Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> > ---
> > Arnd, this is a recent, so you can queue this up, thanks!
> 
> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com>
> 
> or Tested-by/Acked-by as appropriate...
> 

Too bad, this really gets in the way of a future multiplatform
ep93xx configuration as that doesn't easily allow us to have
board specific hacks in the decompressor.

Applied to next/soc with Hartley's reviewed-by tag.

It's not clear from your description if this is needed for stable
backports. If it is, please write to stable@vger.kernel.org
once it is merged upstream.

	Arnd
afzal mohammed Feb. 8, 2017, 12:23 p.m. UTC | #3
Hi,

On Thu, Feb 02, 2017 at 12:12:26PM -0800, Florian Fainelli wrote:
> The TS-72xx/73xx boards have a CPLD watchdog which is configured to
> reset the board after 8 seconds, if the kernel is large enough that this
> takes about this time to decompress the kernel, we will encounter a
> spurious reboot.

so once it reaches Kernel proper, that dog is being killed, right ?

iirc, TI AM335x's & AM43x's ROM code too leaves the on-chip watchdog
enabled & the bootloader disables it (else once it boots to prompt, it
reboots always unless watchdog driver [if present] takes care of it),
Lokesh, right ?

But yes, that brings a bootloader dependency.

Regards
afzal
Lokesh Vutla Feb. 13, 2017, 3:38 a.m. UTC | #4
On Wednesday 08 February 2017 05:53 PM, Afzal Mohammed wrote:
> Hi,
> 
> On Thu, Feb 02, 2017 at 12:12:26PM -0800, Florian Fainelli wrote:
>> The TS-72xx/73xx boards have a CPLD watchdog which is configured to
>> reset the board after 8 seconds, if the kernel is large enough that this
>> takes about this time to decompress the kernel, we will encounter a
>> spurious reboot.
> 
> so once it reaches Kernel proper, that dog is being killed, right ?
> 
> iirc, TI AM335x's & AM43x's ROM code too leaves the on-chip watchdog
> enabled & the bootloader disables it (else once it boots to prompt, it
> reboots always unless watchdog driver [if present] takes care of it),
> Lokesh, right ?

Yes, that's right. Watchdog is disabled in U-Boot.

Thanks and regards,
Lokesh
diff mbox

Patch

diff --git a/arch/arm/mach-ep93xx/include/mach/uncompress.h b/arch/arm/mach-ep93xx/include/mach/uncompress.h
index 03c42e5400d2..b0cf2de77f81 100644
--- a/arch/arm/mach-ep93xx/include/mach/uncompress.h
+++ b/arch/arm/mach-ep93xx/include/mach/uncompress.h
@@ -10,6 +10,7 @@ 
  */
 
 #include <mach/ep93xx-regs.h>
+#include <asm/mach-types.h>
 
 static unsigned char __raw_readb(unsigned int ptr)
 {
@@ -75,8 +76,19 @@  static void ethernet_reset(void)
 		;
 }
 
+#define TS72XX_WDT_CONTROL_PHYS_BASE	0x23800000
+#define TS72XX_WDT_FEED_PHYS_BASE	0x23c00000
+#define TS72XX_WDT_FEED_VAL		0x05
+
+static void __maybe_unused ts72xx_watchdog_disable(void)
+{
+	__raw_writeb(TS72XX_WDT_FEED_VAL, TS72XX_WDT_FEED_PHYS_BASE);
+	__raw_writeb(0, TS72XX_WDT_CONTROL_PHYS_BASE);
+}
 
 static void arch_decomp_setup(void)
 {
+	if (machine_is_ts72xx())
+		ts72xx_watchdog_disable();
 	ethernet_reset();
 }