The HWW-1U-1A board needs to be able to override the "reset" command due to hardware design limitations.
Signed-off-by: Kyle Moffett <kyle.d.moff...@boeing.com> Cc: Andy Fleming <aflem...@gmail.com> Cc: Kumar Gala <kumar.g...@freescale.com> --- Changelog: v2: Removed in favor of more involved reset rework v6: Resurrected again (the more involved rework was NAKed) arch/powerpc/cpu/mpc85xx/cpu.c | 27 ++++++++++++++++++++++----- 1 files changed, 22 insertions(+), 5 deletions(-) diff --git a/arch/powerpc/cpu/mpc85xx/cpu.c b/arch/powerpc/cpu/mpc85xx/cpu.c index 49ea6cc..75e4aab 100644 --- a/arch/powerpc/cpu/mpc85xx/cpu.c +++ b/arch/powerpc/cpu/mpc85xx/cpu.c @@ -203,11 +203,17 @@ int checkcpu (void) /* ------------------------------------------------------------------------- */ -int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +/* Board-specific reset stub */ +__attribute__((__weak__)) +int __board_restart(void) { -/* Everything after the first generation of PQ3 parts has RSTCR */ + return 0; +} + #if defined(CONFIG_MPC8540) || defined(CONFIG_MPC8541) || \ defined(CONFIG_MPC8555) || defined(CONFIG_MPC8560) +int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ unsigned long val, msr; /* @@ -221,14 +227,25 @@ int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) val = mfspr(DBCR0); val |= 0x70000000; mtspr(DBCR0,val); +} #else - volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); +int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + /* Everything after the first generation of PQ3 parts has RSTCR */ + ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); + + /* Allow boards to override the reset */ + int err = __board_restart(); + if (err) + return err; + out_be32(&gur->rstcr, 0x2); /* HRESET_REQ */ udelay(100); -#endif - return 1; } +#endif + + /* -- 1.7.2.3 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot