m68knommu: move CPU reset code for the 5272 ColdFire into its platform code
Greg Ungerer [Thu, 30 Apr 2009 13:32:52 +0000 (23:32 +1000)]
Signed-off-by: Greg Ungerer <gerg@uclinux.org>

arch/m68knommu/platform/5272/config.c

index e049245..5f95fcd 100644 (file)
@@ -12,7 +12,6 @@
 #include <linux/kernel.h>
 #include <linux/param.h>
 #include <linux/init.h>
-#include <linux/interrupt.h>
 #include <linux/io.h>
 #include <asm/machdep.h>
 #include <asm/coldfire.h>
@@ -21,8 +20,6 @@
 
 /***************************************************************************/
 
-void coldfire_reset(void);
-
 extern unsigned int mcf_timervector;
 extern unsigned int mcf_profilevector;
 extern unsigned int mcf_timerlevel;
@@ -170,6 +167,19 @@ void mcf_settimericr(int timer, int level)
 
 /***************************************************************************/
 
+static void m5272_cpu_reset(void)
+{
+       local_irq_disable();
+       /* Set watchdog to reset, and enabled */
+       __raw_writew(0, MCF_MBAR + MCFSIM_WIRR);
+       __raw_writew(1, MCF_MBAR + MCFSIM_WRRR);
+       __raw_writew(0, MCF_MBAR + MCFSIM_WCR);
+       for (;;)
+               /* wait for watchdog to timeout */;
+}
+
+/***************************************************************************/
+
 void __init config_BSP(char *commandp, int size)
 {
 #if defined (CONFIG_MOD5272)
@@ -194,7 +204,7 @@ void __init config_BSP(char *commandp, int size)
 
        mcf_timervector = 69;
        mcf_profilevector = 70;
-       mach_reset = coldfire_reset;
+       mach_reset = m5272_cpu_reset;
 }
 
 /***************************************************************************/