Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[deliverable/linux.git] / arch / mips / mti-malta / malta-reset.c
index d627d4b2b47f4f456addef452e77c16513238bd7..2fd2cc2c5034fbf1ddd59ffec163fab76187aa4a 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/pm.h>
 
 #include <asm/reboot.h>
+#include <asm/mach-malta/malta-pm.h>
 
 #define SOFTRES_REG    0x1f000500
 #define GORESET                0x42
@@ -24,17 +25,22 @@ static void mips_machine_restart(char *command)
 
 static void mips_machine_halt(void)
 {
-       unsigned int __iomem *softres_reg =
-               ioremap(SOFTRES_REG, sizeof(unsigned int));
+       while (true);
+}
 
-       __raw_writel(GORESET, softres_reg);
+static void mips_machine_power_off(void)
+{
+       mips_pm_suspend(PIIX4_FUNC3IO_PMCNTRL_SUS_TYP_SOFF);
+
+       pr_info("Failed to power down, resetting\n");
+       mips_machine_restart(NULL);
 }
 
 static int __init mips_reboot_setup(void)
 {
        _machine_restart = mips_machine_restart;
        _machine_halt = mips_machine_halt;
-       pm_power_off = mips_machine_halt;
+       pm_power_off = mips_machine_power_off;
 
        return 0;
 }
This page took 0.023865 seconds and 5 git commands to generate.