Commit ae909ea4 authored by Greg Ungerer's avatar Greg Ungerer

m68knommu: factor more common ColdFire cpu reset code

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: default avatarGreg Ungerer <gerg@uclinux.org>
parent 645e5333
...@@ -74,17 +74,8 @@ static void __init m520x_fec_init(void) ...@@ -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) void __init config_BSP(char *commandp, int size)
{ {
mach_reset = m520x_cpu_reset;
mach_sched_init = hw_timer_init; mach_sched_init = hw_timer_init;
m520x_uarts_init(); m520x_uarts_init();
m520x_fec_init(); m520x_fec_init();
......
...@@ -54,17 +54,8 @@ static void __init m523x_fec_init(void) ...@@ -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) void __init config_BSP(char *commandp, int size)
{ {
mach_reset = m523x_cpu_reset;
mach_sched_init = hw_timer_init; mach_sched_init = hw_timer_init;
m523x_fec_init(); m523x_fec_init();
#ifdef CONFIG_SPI_COLDFIRE_QSPI #ifdef CONFIG_SPI_COLDFIRE_QSPI
......
...@@ -87,17 +87,8 @@ static void __init m527x_fec_init(void) ...@@ -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) void __init config_BSP(char *commandp, int size)
{ {
mach_reset = m527x_cpu_reset;
mach_sched_init = hw_timer_init; mach_sched_init = hw_timer_init;
m527x_uarts_init(); m527x_uarts_init();
m527x_fec_init(); m527x_fec_init();
......
...@@ -60,14 +60,6 @@ static void __init m528x_fec_init(void) ...@@ -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 #ifdef CONFIG_WILDFIRE
void wildfire_halt(void) void wildfire_halt(void)
{ {
...@@ -103,7 +95,6 @@ void __init config_BSP(char *commandp, int size) ...@@ -103,7 +95,6 @@ void __init config_BSP(char *commandp, int size)
#ifdef CONFIG_WILDFIREMOD #ifdef CONFIG_WILDFIREMOD
mach_halt = wildfiremod_halt; mach_halt = wildfiremod_halt;
#endif #endif
mach_reset = m528x_cpu_reset;
mach_sched_init = hw_timer_init; mach_sched_init = hw_timer_init;
m528x_uarts_init(); m528x_uarts_init();
m528x_fec_init(); m528x_fec_init();
......
...@@ -61,14 +61,6 @@ static void __init m532x_fec_init(void) ...@@ -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) void __init config_BSP(char *commandp, int size)
{ {
#if !defined(CONFIG_BOOTPARAM) #if !defined(CONFIG_BOOTPARAM)
...@@ -83,7 +75,6 @@ void __init config_BSP(char *commandp, int size) ...@@ -83,7 +75,6 @@ void __init config_BSP(char *commandp, int size)
#endif #endif
mach_sched_init = hw_timer_init; mach_sched_init = hw_timer_init;
mach_reset = m532x_cpu_reset;
m532x_uarts_init(); m532x_uarts_init();
m532x_fec_init(); m532x_fec_init();
#ifdef CONFIG_SPI_COLDFIRE_QSPI #ifdef CONFIG_SPI_COLDFIRE_QSPI
......
...@@ -17,14 +17,14 @@ asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1 ...@@ -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_COLDFIRE) += cache.o clk.o device.o dma.o entry.o vectors.o
obj-$(CONFIG_M5206) += timers.o intc.o reset.o obj-$(CONFIG_M5206) += timers.o intc.o reset.o
obj-$(CONFIG_M5206e) += 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_M520x) += pit.o intc-simr.o reset.o
obj-$(CONFIG_M523x) += pit.o dma_timer.o intc-2.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_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_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_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_M5407) += timers.o intc.o reset.o
obj-$(CONFIG_M54xx) += sltimers.o intc-2.o obj-$(CONFIG_M54xx) += sltimers.o intc-2.o
......
...@@ -15,7 +15,15 @@ ...@@ -15,7 +15,15 @@
#include <asm/coldfire.h> #include <asm/coldfire.h>
#include <asm/mcfsim.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(); local_irq_disable();
/* Set watchdog to soft reset, and enabled */ /* Set watchdog to soft reset, and enabled */
...@@ -23,6 +31,15 @@ void mcf_cpu_reset(void) ...@@ -23,6 +31,15 @@ void mcf_cpu_reset(void)
for (;;) for (;;)
/* wait for watchdog to timeout */; /* 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) static int __init mcf_setup_reset(void)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment