mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
On LWMON we must use the watchdog to reset the board as the CPU
genereated HRESET pulse is too short to reset the external circuitry.
This commit is contained in:
parent
931da93e0f
commit
ed16fefcba
3 changed files with 37 additions and 1 deletions
|
@ -2,6 +2,10 @@
|
|||
Changes for U-Boot 1.1.3:
|
||||
======================================================================
|
||||
|
||||
* On LWMON we must use the watchdog to reset the board as the CPU
|
||||
genereated HRESET pulse is too short to reset the external
|
||||
circuitry.
|
||||
|
||||
* Add test tool to exercise SDRAM accesses in burst mode
|
||||
(as standalone program, MPC8xx/PowerPC only)
|
||||
|
||||
|
|
3
Makefile
3
Makefile
|
@ -1651,7 +1651,8 @@ clean:
|
|||
| xargs rm -f
|
||||
rm -f examples/hello_world examples/timer \
|
||||
examples/eepro100_eeprom examples/sched \
|
||||
examples/mem_to_mem_idma2intr examples/82559_eeprom
|
||||
examples/mem_to_mem_idma2intr examples/82559_eeprom \
|
||||
examples/test_burst
|
||||
rm -f tools/img2srec tools/mkimage tools/envcrc tools/gen_eth_addr
|
||||
rm -f tools/mpc86x_clk tools/ncb
|
||||
rm -f tools/easylogo/easylogo tools/bmp_logo
|
||||
|
|
|
@ -463,6 +463,8 @@ void upmconfig (uint upm, uint * table, uint size)
|
|||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef CONFIG_LWMON
|
||||
|
||||
int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
ulong msr, addr;
|
||||
|
@ -497,6 +499,32 @@ int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 1;
|
||||
}
|
||||
|
||||
#else /* CONFIG_LWMON */
|
||||
|
||||
/*
|
||||
* On the LWMON board, the MCLR reset input of the PIC's on the board
|
||||
* uses a 47K/1n RC combination which has a 47us time constant. The
|
||||
* low signal on the HRESET pin of the CPU is only 512 clocks = 8 us
|
||||
* and thus too short to reset the external hardware. So we use the
|
||||
* watchdog to reset the board.
|
||||
*/
|
||||
int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
/* prevent triggering the watchdog */
|
||||
disable_interrupts ();
|
||||
|
||||
/* make sure the watchdog is running */
|
||||
reset_8xx_watchdog ((immap_t *) CFG_IMMR);
|
||||
|
||||
/* wait for watchdog reset */
|
||||
while (1) {};
|
||||
|
||||
/* NOTREACHED */
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_LWMON */
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
|
@ -558,6 +586,9 @@ void watchdog_reset (void)
|
|||
if (re_enable)
|
||||
enable_interrupts ();
|
||||
}
|
||||
#endif /* CONFIG_WATCHDOG */
|
||||
|
||||
#if defined(CONFIG_WATCHDOG) || defined(CONFIG_LWMON)
|
||||
|
||||
void reset_8xx_watchdog (volatile immap_t * immr)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue