]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
m68knommu: factor more common ColdFire cpu reset code
authorGreg Ungerer <gerg@uclinux.org>
Sun, 19 Feb 2012 06:47:24 +0000 (16:47 +1000)
committerGreg Ungerer <gerg@uclinux.org>
Mon, 5 Mar 2012 00:42:28 +0000 (10:42 +1000)
Most of the more modern ColdFire cores use the same code to reset the CPU
(but it is different to most of the earlier cores). Currently that is
duplicated in each of the sub-arch files. Pull out this common code and
out a single copy of it with the other common reset code.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
arch/m68k/platform/520x/config.c
arch/m68k/platform/523x/config.c
arch/m68k/platform/527x/config.c
arch/m68k/platform/528x/config.c
arch/m68k/platform/532x/config.c
arch/m68k/platform/coldfire/Makefile
arch/m68k/platform/coldfire/reset.c

index 6c318dbe158a8c1510b235e803aca9992a5d56aa..235947844f2713a4480b94b1b5d5a9fe1e71fc02 100644 (file)
@@ -74,17 +74,8 @@ static void __init m520x_fec_init(void)
 
 /***************************************************************************/
 
-static void m520x_cpu_reset(void)
-{
-       local_irq_disable();
-       __raw_writeb(MCF_RCR_SWRESET, MCF_RCR);
-}
-
-/***************************************************************************/
-
 void __init config_BSP(char *commandp, int size)
 {
-       mach_reset = m520x_cpu_reset;
        mach_sched_init = hw_timer_init;
        m520x_uarts_init();
        m520x_fec_init();
index 88de2133f47de79f23dfd02280e8c4ccea891e7a..c8b405d5a9615e577708a7fe3b198ae72237727c 100644 (file)
@@ -54,17 +54,8 @@ static void __init m523x_fec_init(void)
 
 /***************************************************************************/
 
-static void m523x_cpu_reset(void)
-{
-       local_irq_disable();
-       __raw_writeb(MCF_RCR_SWRESET, MCF_RCR);
-}
-
-/***************************************************************************/
-
 void __init config_BSP(char *commandp, int size)
 {
-       mach_reset = m523x_cpu_reset;
        mach_sched_init = hw_timer_init;
        m523x_fec_init();
 #ifdef CONFIG_SPI_COLDFIRE_QSPI
index 38655051bf59f8e40f38d25b128b53081da17fc4..7ed848c3b848784cf4d0067e35889ce4c857a0fd 100644 (file)
@@ -87,17 +87,8 @@ static void __init m527x_fec_init(void)
 
 /***************************************************************************/
 
-static void m527x_cpu_reset(void)
-{
-       local_irq_disable();
-       __raw_writeb(MCF_RCR_SWRESET, MCF_RCR);
-}
-
-/***************************************************************************/
-
 void __init config_BSP(char *commandp, int size)
 {
-       mach_reset = m527x_cpu_reset;
        mach_sched_init = hw_timer_init;
        m527x_uarts_init();
        m527x_fec_init();
index d203b1ba4ebb78d9f7621b6b3c0f49ad9e16d5aa..d4492926614cb3ee74a726aa9b72b0995df0cfa5 100644 (file)
@@ -60,14 +60,6 @@ static void __init m528x_fec_init(void)
 
 /***************************************************************************/
 
-static void m528x_cpu_reset(void)
-{
-       local_irq_disable();
-       __raw_writeb(MCF_RCR_SWRESET, MCF_RCR);
-}
-
-/***************************************************************************/
-
 #ifdef CONFIG_WILDFIRE
 void wildfire_halt(void)
 {
@@ -103,7 +95,6 @@ void __init config_BSP(char *commandp, int size)
 #ifdef CONFIG_WILDFIREMOD
        mach_halt = wildfiremod_halt;
 #endif
-       mach_reset = m528x_cpu_reset;
        mach_sched_init = hw_timer_init;
        m528x_uarts_init();
        m528x_fec_init();
index 56b21fd84b3f2f897675aad7bbb1099bbc0f373e..2bec3477b739db6b1ec6db31eaf048f73caf3e82 100644 (file)
@@ -61,14 +61,6 @@ static void __init m532x_fec_init(void)
 
 /***************************************************************************/
 
-static void m532x_cpu_reset(void)
-{
-       local_irq_disable();
-       __raw_writeb(MCF_RCR_SWRESET, MCF_RCR);
-}
-
-/***************************************************************************/
-
 void __init config_BSP(char *commandp, int size)
 {
 #if !defined(CONFIG_BOOTPARAM)
@@ -83,7 +75,6 @@ void __init config_BSP(char *commandp, int size)
 #endif
 
        mach_sched_init = hw_timer_init;
-       mach_reset = m532x_cpu_reset;
        m532x_uarts_init();
        m532x_fec_init();
 #ifdef CONFIG_SPI_COLDFIRE_QSPI
index bccab9331ee1bf1e7bafdd554e3c1f2e139b5e2f..a0815c61dec1a7b778f82a154ee3a5ca8eab0773 100644 (file)
@@ -17,14 +17,14 @@ asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
 obj-$(CONFIG_COLDFIRE) += cache.o clk.o device.o dma.o entry.o vectors.o
 obj-$(CONFIG_M5206)    += timers.o intc.o reset.o
 obj-$(CONFIG_M5206e)   += timers.o intc.o reset.o
-obj-$(CONFIG_M520x)    += pit.o intc-simr.o
-obj-$(CONFIG_M523x)    += pit.o dma_timer.o intc-2.o
+obj-$(CONFIG_M520x)    += pit.o intc-simr.o reset.o
+obj-$(CONFIG_M523x)    += pit.o dma_timer.o intc-2.o reset.o
 obj-$(CONFIG_M5249)    += timers.o intc.o reset.o
-obj-$(CONFIG_M527x)    += pit.o intc-2.o
+obj-$(CONFIG_M527x)    += pit.o intc-2.o reset.o
 obj-$(CONFIG_M5272)    += timers.o
-obj-$(CONFIG_M528x)    += pit.o intc-2.o
+obj-$(CONFIG_M528x)    += pit.o intc-2.o reset.o
 obj-$(CONFIG_M5307)    += timers.o intc.o reset.o
-obj-$(CONFIG_M532x)    += timers.o intc-simr.o
+obj-$(CONFIG_M532x)    += timers.o intc-simr.o reset.o
 obj-$(CONFIG_M5407)    += timers.o intc.o reset.o
 obj-$(CONFIG_M54xx)    += sltimers.o intc-2.o
 
index 5ed78d3546d228da2c08568d2bad6fe1605aa4aa..933e54eacc691dfc118d7281683c1c2907ed6887 100644 (file)
 #include <asm/coldfire.h>
 #include <asm/mcfsim.h>
 
-void mcf_cpu_reset(void)
+/*
+ *     There are 2 common methods amongst the ColdFure parts for reseting
+ *     the CPU. But there are couple of exceptions, the 5272 and the 547x
+ *     have something completely special to them, and we let their specific
+ *     subarch code handle them.
+ */
+
+#ifdef MCFSIM_SYPCR
+static void mcf_cpu_reset(void)
 {
        local_irq_disable();
        /* Set watchdog to soft reset, and enabled */
@@ -23,6 +31,15 @@ void mcf_cpu_reset(void)
        for (;;)
                /* wait for watchdog to timeout */;
 }
+#endif
+
+#ifdef MCF_RCR
+static void mcf_cpu_reset(void)
+{
+       local_irq_disable();
+       __raw_writeb(MCF_RCR_SWRESET, MCF_RCR);
+}
+#endif
 
 static int __init mcf_setup_reset(void)
 {