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

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.

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
On Mon, Mar 2, 2009 at 3:05 PM, Richard Retanubun < RichardRetanubun@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@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

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@ruggedcom.com mailto:RichardRetanubun@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@lists.denx.de <mailto:U-Boot@lists.denx.de> http://lists.denx.de/mailman/listinfo/u-boot
participants (2)
-
Richard Retanubun
-
TC Liew