From 4e65760d46d878da3f9c0ca0a05c933b4db20d6d Mon Sep 17 00:00:00 2001 From: Kumar Gala Date: Fri, 26 Jan 2007 00:37:11 -0600 Subject: [PATCH] --- yaml --- r: 46806 b: refs/heads/master c: c75f902b93724ab9ba161f7dfab0fd09c7a8854d h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/powerpc/platforms/83xx/misc.c | 29 +++++++++++++++++------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index ba10864a2885..1608906cf880 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4d52719a767455d319263d598e0f59e027895e00 +refs/heads/master: c75f902b93724ab9ba161f7dfab0fd09c7a8854d diff --git a/trunk/arch/powerpc/platforms/83xx/misc.c b/trunk/arch/powerpc/platforms/83xx/misc.c index f0c6df61faa9..f01806c940e1 100644 --- a/trunk/arch/powerpc/platforms/83xx/misc.c +++ b/trunk/arch/powerpc/platforms/83xx/misc.c @@ -18,23 +18,36 @@ #include "mpc83xx.h" +static __be32 __iomem *restart_reg_base; + +static int __init mpc83xx_restart_init(void) +{ + /* map reset restart_reg_baseister space */ + restart_reg_base = ioremap(get_immrbase() + 0x900, 0xff); + + return 0; +} + +arch_initcall(mpc83xx_restart_init); + void mpc83xx_restart(char *cmd) { #define RST_OFFSET 0x00000900 #define RST_PROT_REG 0x00000018 #define RST_CTRL_REG 0x0000001c - __be32 __iomem *reg; - - /* map reset register space */ - reg = ioremap(get_immrbase() + 0x900, 0xff); local_irq_disable(); - /* enable software reset "RSTE" */ - out_be32(reg + (RST_PROT_REG >> 2), 0x52535445); + if (restart_reg_base) { + /* enable software reset "RSTE" */ + out_be32(restart_reg_base + (RST_PROT_REG >> 2), 0x52535445); + + /* set software hard reset */ + out_be32(restart_reg_base + (RST_CTRL_REG >> 2), 0x2); + } else { + printk (KERN_EMERG "Error: Restart registers not mapped, spinning!\n"); + } - /* set software hard reset */ - out_be32(reg + (RST_CTRL_REG >> 2), 0x2); for (;;) ; }