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.
master
wdenk 20 years ago
parent 931da93e0f
commit ed16fefcba
  1. 4
      CHANGELOG
  2. 3
      Makefile
  3. 31
      cpu/mpc8xx/cpu.c

@ -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)

@ -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…
Cancel
Save