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)
v7: Fixed remaining checkpatch errors
v8: Also hook __board_restart() from the pre-PQ3 do_reset() code.
    Rebased onto the latest HEAD.
---
 arch/powerpc/cpu/mpc85xx/cpu.c |   32 +++++++++++++++++++++++++++-----
 1 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/cpu/mpc85xx/cpu.c b/arch/powerpc/cpu/mpc85xx/cpu.c
index 49c0551..81a17bc 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu.c
@@ -195,13 +195,24 @@ 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;
 
+       /* Allow boards to override the reset */
+       int err = __board_restart();
+       if (err)
+               return err;
+
        /*
         * Initiate hard reset in debug control register DBCR0
         * Make sure MSR[DE] = 1.  This only resets the core.
@@ -213,14 +224,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.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to