[POWERPC] pasemi: Implement restart
authorOlof Johansson <olof@lixom.net>
Sun, 4 Feb 2007 22:36:52 +0000 (16:36 -0600)
committerPaul Mackerras <paulus@samba.org>
Wed, 7 Feb 2007 03:03:22 +0000 (14:03 +1100)
Implement reset on platforms/pasemi. Default is just to reset the
cpu using the SDC registers.

Signed-off-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/platforms/pasemi/setup.c

index f69f5e76618f6dcdcf056d6c4ee9e617da8dafe6..cabf7017c05eca080ff3c7845f4139c92364916f 100644 (file)
 
 #include "pasemi.h"
 
-static void pas_restart(char *cmd)
-{
-       printk("restart unimplemented, looping...\n");
-       for (;;) ;
-}
-
-static void pas_power_off(void)
-{
-       printk("power off unimplemented, looping...\n");
-       for (;;) ;
-}
+static void __iomem *reset_reg;
 
-static void pas_halt(void)
+static void pas_restart(char *cmd)
 {
-       pas_power_off();
+       printk("Restarting...\n");
+       while (1)
+               out_le32(reset_reg, 0x6000000);
 }
 
 #ifdef CONFIG_SMP
@@ -82,6 +74,10 @@ void __init pas_setup_arch(void)
        conswitchp = &dummy_con;
 #endif
 
+       /* Remap SDC register for doing reset */
+       /* XXXOJN This should maybe come out of the device tree */
+       reset_reg = ioremap(0xfc101100, 4);
+
        pasemi_idle_init();
 }
 
@@ -211,8 +207,6 @@ define_machine(pas) {
        .init_IRQ               = pas_init_IRQ,
        .get_irq                = mpic_get_irq,
        .restart                = pas_restart,
-       .power_off              = pas_power_off,
-       .halt                   = pas_halt,
        .get_boot_time          = pas_get_boot_time,
        .calibrate_decr         = generic_calibrate_decr,
        .check_legacy_ioport    = pas_check_legacy_ioport,