#include <linux/config.h>
 #include <asm/mach-types.h>
 #include <asm/arch/hardware.h>
-#include <asm/mach-types.h>
+
+#ifndef CONFIG_MACH_VOICEBLUE
+#define voiceblue_reset()              do {} while (0)
+#endif
+
+#define OMAP24XX_PM_RSTCTRL_WKUP       (OMAP24XX_PRCM_BASE + 0x450)
 
 static inline void arch_idle(void)
 {
 static inline void arch_reset(char mode)
 {
 
-#ifdef CONFIG_ARCH_OMAP16XX
+       if (cpu_is_omap24xx()) {
+               omap_writew(0x3, OMAP24XX_PM_RSTCTRL_WKUP);
+               return;                 /* Should never get here */
+       }
+
        /*
         * Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28
         * "Global Software Reset Affects Traffic Controller Frequency".
                                 DPLL_CTL);
                omap_writew(0x8, ARM_RSTCT1);
        }
-#endif
-#ifdef CONFIG_MACH_VOICEBLUE
+
        if (machine_is_voiceblue())
                voiceblue_reset();
        else
-#endif
                omap_writew(1, ARM_RSTCT1);
+                       
 }
 
 #endif