[U-Boot] Coldfire: MCF5271: Periodic HW watchdog petting and sleep function does not work.

Richard Retanubun RichardRetanubun at RuggedCom.com
Wed Mar 4 14:14:00 CET 2009


TC Liew wrote:
> Richard,
>  
> Can you be more specific on how the MAX6369 WDO and WDI connects to 
> MCF5271's signal? Is it GPIO? ResetIn? Others?
>  
> Regards,
> TsiChung

Hi TC,

Thanks for responding,

WDI is connected to a CPU GPIO, PTIMER[3] on our board and WDO is connected to the active low RESETIn of the CPU.

In case it matters, my hw_watchdog_reset function looks like this:

/*
  * In <watchdog.h> this function is MACRO-ed to WATCHDOG_RESET
  * The watchdog control pins are as follows:
  * WDI         = PTIMER[3] (DT1IN)
  * WD_SET[2:0] = PTIMER[2:0] (DT1OUT, DT1IN, DT0OUT)
  */
void hw_watchdog_reset(void)
{
	/* Setup the value first, then make it a GPO to avoid glitches */

	/* Any edge is ok to reset watchdog (Bit is XORed each time) */
	mbar_writeByte(MCF_GPIO_PODR_TIMER,
		       (mbar_readByte(MCF_GPIO_PODR_TIMER) ^ 0x08));

	/*
	 * While it is true that seting the WDI as a GPO is only needed once,
	 * it is so critical for operation, hence it is enforced each time.
	 */

	/* Setup WDI direction as an output */
	mbar_writeByte(MCF_GPIO_PDDR_TIMER,
		       (mbar_readByte(MCF_GPIO_PDDR_TIMER) | 0x08));

	/* Set the pins as GPIO */
	mbar_writeShort(MCF_GPIO_PAR_TIMER,
			(mbar_readShort(MCF_GPIO_PAR_TIMER) & 0xF3FF));
}

Thanks for your time.

- Richard Retanubun
> 
> On Mon, Mar 2, 2009 at 3:05 PM, Richard Retanubun 
> <RichardRetanubun at ruggedcom.com <mailto:RichardRetanubun at ruggedcom.com>> 
> wrote:
> 
>     Hi Guys,
> 
>     I am using u-boot 2009.03-rc1 and a board based on Coldfire
>     MC5271EVB eval platform.
>     Our external watchdog is a MAX6369.
> 
>     I have #define CONFIG_HW_WATCHDOG and #undef CONFIG_WATCHDOG in our
>     board's config file and
>     have created the hw_watchdog_reset function to toggle the WDI line
>     to pet the watchdog.
> 
>     However, my board keeps resetting at the watchdog timeout. Upon
>     probing, I found out that
>     the watchdog toggle line in not being toggled periodically by
>     u-boot. Which means a regular call
>     to WATCHDOG_RESET() is not happening. If I execute commands, the WDI
>     will get toggled and the watchdog
>     will not timeout, which means that the WATCHDOG_RESET() mapping to
>     hw_watchdog_reset function is working, it is
>     just not being called periodically.
> 
>     I am looking at the programmable interrupt timer that the
>     get_timer() function uses, and so far everything checks out.
> 
>     I'm also stuck at using u-boot's sleep command, e.g. "sleep 1" will
>     never return. Which I suspect may be the same root cause.
>     (this can also be observed on the M5271EVB board).
> 
>     What am I missing here?
> 
>     Thank you for all your time.
> 
>     Regards,
> 
>     - Richard Retanubun.
> 
> 
>     _______________________________________________
>     U-Boot mailing list
>     U-Boot at lists.denx.de <mailto:U-Boot at lists.denx.de>
>     http://lists.denx.de/mailman/listinfo/u-boot
> 
> 



More information about the U-Boot mailing list