Skip to content

Commit

Permalink
m68knommu: factor more common ColdFire cpu reset code
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Greg Ungerer committed Mar 5, 2012
1 parent 645e533 commit ae909ea
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 51 deletions.
9 changes: 0 additions & 9 deletions arch/m68k/platform/520x/config.c
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
9 changes: 0 additions & 9 deletions arch/m68k/platform/523x/config.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
9 changes: 0 additions & 9 deletions arch/m68k/platform/527x/config.c
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
9 changes: 0 additions & 9 deletions arch/m68k/platform/528x/config.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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();
Expand Down
9 changes: 0 additions & 9 deletions arch/m68k/platform/532x/config.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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
Expand Down
10 changes: 5 additions & 5 deletions arch/m68k/platform/coldfire/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
19 changes: 18 additions & 1 deletion arch/m68k/platform/coldfire/reset.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,31 @@
#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 */
__raw_writeb(0xc0, MCF_MBAR + MCFSIM_SYPCR);
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)
{
Expand Down

0 comments on commit ae909ea

Please sign in to comment.