On Thu, Sep 30, 2010 at 03:48:36PM -0500, Timur Tabi wrote:
> On Thu, Sep 30, 2010 at 3:15 PM, ame <ay...@phx1-ss-2-lb.cnet.com> wrote:
> > On my 460ex board, i've tried to add CONFIG_WATCHDOG to the config and it 
> > appears to
> > work until the board tries to boot. ?At that point I can count down about 
> > 10 seconds
> > and the reboot happens. ?The 10s correlates with what I think the watchdog 
> > is being
> > set to. ?I've inserted some WATCHDOG_RESET() invocations wrapping 
> > memmove_wd (which
> > admittedly should not be needed), but it does not have an effect.
> 
> Looks to me like your implementation of WATCHDOG_RESET() is broken.
> It's not actually resetting the watchdog.  That's what you should
> debug.
> 

I suspect that that is the case, but trawling through the u-boot code it 
appears that
WATCHDOG_RESET is a macro that eventually does one of two things:
a) if asm, bl watchdog_reset  
b) if c, watchdog_reset()

watchdog_reset in turn saves the interrupt state, disables interrupts, invokes 
reset_4xx_watchdog, then restores the interrupt state.

Finally reset_4xx_watchdog does mtspr(tsr, 0xc0000000) where tsr is 0x150 IIRC.

All of this is in the u-boot source, mostly in cpu.c and watchdog.h (i.e. none 
of this is
custom for my board, it is part of the ppc44x code).

I've dumped the binary to make sure the methods are actually in the code, 
manipulating
the spr, and getting called.  

ame

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to