diff --git a/arch/powerpc/platforms/83xx/misc.c b/arch/powerpc/platforms/83xx/misc.c index 0eb3d99..d918d45 100644 --- a/arch/powerpc/platforms/83xx/misc.c +++ b/arch/powerpc/platforms/83xx/misc.c @@ -24,6 +24,7 @@ void mpc83xx_restart(char *cmd) #define RST_OFFSET 0x00000900 #define RST_PROT_REG 0x00000018 #define RST_CTRL_REG 0x0000001c +#define RST_ENBL_REG 0x00000020 __be32 __iomem *reg; /* map reset register space */ @@ -34,8 +35,12 @@ void mpc83xx_restart(char *cmd) /* enable software reset "RSTE" */ out_be32(reg + (RST_PROT_REG >> 2), 0x52535445); + /* wait for reset to get enabled */ + while ((in_be32 (reg + (RST_ENBL_REG >> 2)) & 1) == 0 ) + ; + /* set software hard reset */ - out_be32(reg + (RST_CTRL_REG >> 2), 0x52535445); + out_be32(reg + (RST_CTRL_REG >> 2), 3); for (;;) ; }