aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-06-11 23:05:08 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-11 23:05:08 -0400
commit875287caa067492779670f5fb3b98ec8dcfe2cb0 (patch)
tree258037cc7678cfaeb738b970b4791ea10e193c96
parentaee74f3bb3f4fb5dbeae8c1947c6d8ebdc19ee01 (diff)
parent193e98401a89707ea374e9c32c1b9a5a9dd87a48 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu: m68knommu: remove unecessary include of thread_info.h in entry.S m68knommu: enumerate INIT_THREAD fields properly headers_check fix: m68k, swab.h arch/m68knommu: Convert #ifdef DEBUG printk(KERN_DEBUG to pr_debug( m68knommu: remove obsolete reset code m68knommu: move CPU reset code for the 5272 ColdFire into its platform code m68knommu: move CPU reset code for the 528x ColdFire into its platform code m68knommu: move CPU reset code for the 527x ColdFire into its platform code m68knommu: move CPU reset code for the 523x ColdFire into its platform code m68knommu: move CPU reset code for the 520x ColdFire into its platform code m68knommu: add CPU reset code for the 532x ColdFire m68knommu: add CPU reset code for the 5249 ColdFire m68knommu: add CPU reset code for the 5206e ColdFire m68knommu: add CPU reset code for the 5206 ColdFire m68knommu: add CPU reset code for the 5407 ColdFire m68knommu: add CPU reset code for the 5307 ColdFire m68knommu: merge system reset for code ColdFire 523x family m68knommu: fix system reset for ColdFire 527x family
-rw-r--r--arch/m68k/include/asm/m520xsim.h9
-rw-r--r--arch/m68k/include/asm/m523xsim.h9
-rw-r--r--arch/m68k/include/asm/m527xsim.h9
-rw-r--r--arch/m68k/include/asm/m528xsim.h8
-rw-r--r--arch/m68k/include/asm/m532xsim.h12
-rw-r--r--arch/m68k/include/asm/processor_no.h8
-rw-r--r--arch/m68k/include/asm/swab.h2
-rw-r--r--arch/m68k/include/asm/system_no.h107
-rw-r--r--arch/m68knommu/kernel/entry.S1
-rw-r--r--arch/m68knommu/kernel/setup.c16
-rw-r--r--arch/m68knommu/mm/init.c4
-rw-r--r--arch/m68knommu/platform/5206/config.c18
-rw-r--r--arch/m68knommu/platform/5206e/config.c18
-rw-r--r--arch/m68knommu/platform/520x/config.c15
-rw-r--r--arch/m68knommu/platform/523x/config.c14
-rw-r--r--arch/m68knommu/platform/5249/config.c18
-rw-r--r--arch/m68knommu/platform/5272/config.c18
-rw-r--r--arch/m68knommu/platform/527x/config.c15
-rw-r--r--arch/m68knommu/platform/528x/config.c13
-rw-r--r--arch/m68knommu/platform/5307/config.c16
-rw-r--r--arch/m68knommu/platform/532x/config.c12
-rw-r--r--arch/m68knommu/platform/5407/config.c16
-rw-r--r--arch/m68knommu/platform/coldfire/vectors.c7
23 files changed, 178 insertions, 187 deletions
diff --git a/arch/m68k/include/asm/m520xsim.h b/arch/m68k/include/asm/m520xsim.h
index 49d016e6391a..83bbcfd6e8f2 100644
--- a/arch/m68k/include/asm/m520xsim.h
+++ b/arch/m68k/include/asm/m520xsim.h
@@ -59,5 +59,14 @@
59#define MCFPIT_IMR MCFINTC_IMRL 59#define MCFPIT_IMR MCFINTC_IMRL
60#define MCFPIT_IMR_IBIT (1 << MCFINT_PIT1) 60#define MCFPIT_IMR_IBIT (1 << MCFINT_PIT1)
61 61
62/*
63 * Reset Controll Unit.
64 */
65#define MCF_RCR 0xFC0A0000
66#define MCF_RSR 0xFC0A0001
67
68#define MCF_RCR_SWRESET 0x80 /* Software reset bit */
69#define MCF_RCR_FRCSTOUT 0x40 /* Force external reset */
70
62/****************************************************************************/ 71/****************************************************************************/
63#endif /* m520xsim_h */ 72#endif /* m520xsim_h */
diff --git a/arch/m68k/include/asm/m523xsim.h b/arch/m68k/include/asm/m523xsim.h
index bf397313e93f..55183b5df1b8 100644
--- a/arch/m68k/include/asm/m523xsim.h
+++ b/arch/m68k/include/asm/m523xsim.h
@@ -41,5 +41,14 @@
41#define MCFSIM_DACR1 0x50 /* SDRAM base address 1 */ 41#define MCFSIM_DACR1 0x50 /* SDRAM base address 1 */
42#define MCFSIM_DMR1 0x54 /* SDRAM address mask 1 */ 42#define MCFSIM_DMR1 0x54 /* SDRAM address mask 1 */
43 43
44/*
45 * Reset Controll Unit (relative to IPSBAR).
46 */
47#define MCF_RCR 0x110000
48#define MCF_RSR 0x110001
49
50#define MCF_RCR_SWRESET 0x80 /* Software reset bit */
51#define MCF_RCR_FRCSTOUT 0x40 /* Force external reset */
52
44/****************************************************************************/ 53/****************************************************************************/
45#endif /* m523xsim_h */ 54#endif /* m523xsim_h */
diff --git a/arch/m68k/include/asm/m527xsim.h b/arch/m68k/include/asm/m527xsim.h
index 1f63ab3fb3e6..95f4f8ee8f7c 100644
--- a/arch/m68k/include/asm/m527xsim.h
+++ b/arch/m68k/include/asm/m527xsim.h
@@ -70,5 +70,14 @@
70#define UART2_ENABLE_MASK 0x3f00 70#define UART2_ENABLE_MASK 0x3f00
71#endif 71#endif
72 72
73/*
74 * Reset Controll Unit (relative to IPSBAR).
75 */
76#define MCF_RCR 0x110000
77#define MCF_RSR 0x110001
78
79#define MCF_RCR_SWRESET 0x80 /* Software reset bit */
80#define MCF_RCR_FRCSTOUT 0x40 /* Force external reset */
81
73/****************************************************************************/ 82/****************************************************************************/
74#endif /* m527xsim_h */ 83#endif /* m527xsim_h */
diff --git a/arch/m68k/include/asm/m528xsim.h b/arch/m68k/include/asm/m528xsim.h
index 28bf783a5d6d..d79c49f8134a 100644
--- a/arch/m68k/include/asm/m528xsim.h
+++ b/arch/m68k/include/asm/m528xsim.h
@@ -56,6 +56,14 @@
56#define MCF5282_INTC0_ICR17 (volatile u8 *) (MCF_IPSBAR + 0x0C51) 56#define MCF5282_INTC0_ICR17 (volatile u8 *) (MCF_IPSBAR + 0x0C51)
57 57
58 58
59/*
60 * Reset Control Unit (relative to IPSBAR).
61 */
62#define MCF_RCR 0x110000
63#define MCF_RSR 0x110001
64
65#define MCF_RCR_SWRESET 0x80 /* Software reset bit */
66#define MCF_RCR_FRCSTOUT 0x40 /* Force external reset */
59 67
60/********************************************************************* 68/*********************************************************************
61* 69*
diff --git a/arch/m68k/include/asm/m532xsim.h b/arch/m68k/include/asm/m532xsim.h
index ce603451b55e..eb7fd4448947 100644
--- a/arch/m68k/include/asm/m532xsim.h
+++ b/arch/m68k/include/asm/m532xsim.h
@@ -127,6 +127,18 @@
127 127
128/********************************************************************* 128/*********************************************************************
129 * 129 *
130 * Reset Controller Module
131 *
132 *********************************************************************/
133
134#define MCF_RCR 0xFC0A0000
135#define MCF_RSR 0xFC0A0001
136
137#define MCF_RCR_SWRESET 0x80 /* Software reset bit */
138#define MCF_RCR_FRCSTOUT 0x40 /* Force external reset */
139
140/*********************************************************************
141 *
130 * Inter-IC (I2C) Module 142 * Inter-IC (I2C) Module
131 * 143 *
132 *********************************************************************/ 144 *********************************************************************/
diff --git a/arch/m68k/include/asm/processor_no.h b/arch/m68k/include/asm/processor_no.h
index 91cba18acdd3..7a1e0ba35f5a 100644
--- a/arch/m68k/include/asm/processor_no.h
+++ b/arch/m68k/include/asm/processor_no.h
@@ -72,10 +72,10 @@ struct thread_struct {
72 unsigned char fpstate[FPSTATESIZE]; /* floating point state */ 72 unsigned char fpstate[FPSTATESIZE]; /* floating point state */
73}; 73};
74 74
75#define INIT_THREAD { \ 75#define INIT_THREAD { \
76 sizeof(init_stack) + (unsigned long) init_stack, 0, \ 76 .ksp = sizeof(init_stack) + (unsigned long) init_stack, \
77 PS_S, __KERNEL_DS, \ 77 .sr = PS_S, \
78 {0, 0}, 0, {0,}, {0, 0, 0}, {0,}, \ 78 .fs = __KERNEL_DS, \
79} 79}
80 80
81/* 81/*
diff --git a/arch/m68k/include/asm/swab.h b/arch/m68k/include/asm/swab.h
index 9e3054ea59e9..5b754aace744 100644
--- a/arch/m68k/include/asm/swab.h
+++ b/arch/m68k/include/asm/swab.h
@@ -1,7 +1,7 @@
1#ifndef _M68K_SWAB_H 1#ifndef _M68K_SWAB_H
2#define _M68K_SWAB_H 2#define _M68K_SWAB_H
3 3
4#include <asm/types.h> 4#include <linux/types.h>
5#include <linux/compiler.h> 5#include <linux/compiler.h>
6 6
7#define __SWAB_64_THRU_32__ 7#define __SWAB_64_THRU_32__
diff --git a/arch/m68k/include/asm/system_no.h b/arch/m68k/include/asm/system_no.h
index 4496c0aa8379..3c0718d74398 100644
--- a/arch/m68k/include/asm/system_no.h
+++ b/arch/m68k/include/asm/system_no.h
@@ -203,113 +203,6 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz
203#include <asm-generic/cmpxchg.h> 203#include <asm-generic/cmpxchg.h>
204#endif 204#endif
205 205
206#if defined( CONFIG_M68328 ) || defined( CONFIG_M68EZ328 ) || \
207 defined (CONFIG_M68360) || defined( CONFIG_M68VZ328 )
208#define HARD_RESET_NOW() ({ \
209 local_irq_disable(); \
210 asm(" \
211 moveal #0x10c00000, %a0; \
212 moveb #0, 0xFFFFF300; \
213 moveal 0(%a0), %sp; \
214 moveal 4(%a0), %a0; \
215 jmp (%a0); \
216 "); \
217})
218#endif
219
220#ifdef CONFIG_COLDFIRE
221#if defined(CONFIG_M5272) && defined(CONFIG_NETtel)
222/*
223 * Need to account for broken early mask of 5272 silicon. So don't
224 * jump through the original start address. Jump strait into the
225 * known start of the FLASH code.
226 */
227#define HARD_RESET_NOW() ({ \
228 asm(" \
229 movew #0x2700, %sr; \
230 jmp 0xf0000400; \
231 "); \
232})
233#elif defined(CONFIG_NETtel) || \
234 defined(CONFIG_SECUREEDGEMP3) || defined(CONFIG_CLEOPATRA)
235#define HARD_RESET_NOW() ({ \
236 asm(" \
237 movew #0x2700, %sr; \
238 moveal #0x10000044, %a0; \
239 movel #0xffffffff, (%a0); \
240 moveal #0x10000001, %a0; \
241 moveb #0x00, (%a0); \
242 moveal #0xf0000004, %a0; \
243 moveal (%a0), %a0; \
244 jmp (%a0); \
245 "); \
246})
247#elif defined(CONFIG_M5272)
248/*
249 * Retrieve the boot address in flash using CSBR0 and CSOR0
250 * find the reset vector at flash_address + 4 (e.g. 0x400)
251 * remap it in the flash's current location (e.g. 0xf0000400)
252 * and jump there.
253 */
254#define HARD_RESET_NOW() ({ \
255 asm(" \
256 movew #0x2700, %%sr; \
257 move.l %0+0x40,%%d0; \
258 and.l %0+0x44,%%d0; \
259 andi.l #0xfffff000,%%d0; \
260 mov.l %%d0,%%a0; \
261 or.l 4(%%a0),%%d0; \
262 mov.l %%d0,%%a0; \
263 jmp (%%a0);" \
264 : /* No output */ \
265 : "o" (*(char *)MCF_MBAR) ); \
266})
267#elif defined(CONFIG_M528x)
268/*
269 * The MCF528x has a bit (SOFTRST) in memory (Reset Control Register RCR),
270 * that when set, resets the MCF528x.
271 */
272#define HARD_RESET_NOW() \
273({ \
274 unsigned char volatile *reset; \
275 asm("move.w #0x2700, %sr"); \
276 reset = ((volatile unsigned char *)(MCF_IPSBAR + 0x110000)); \
277 while(1) \
278 *reset |= (0x01 << 7);\
279})
280#elif defined(CONFIG_M523x)
281#define HARD_RESET_NOW() ({ \
282 asm(" \
283 movew #0x2700, %sr; \
284 movel #0x01000000, %sp; \
285 moveal #0x40110000, %a0; \
286 moveb #0x80, (%a0); \
287 "); \
288})
289#elif defined(CONFIG_M520x)
290 /*
291 * The MCF5208 has a bit (SOFTRST) in memory (Reset Control Register
292 * RCR), that when set, resets the MCF5208.
293 */
294#define HARD_RESET_NOW() \
295({ \
296 unsigned char volatile *reset; \
297 asm("move.w #0x2700, %sr"); \
298 reset = ((volatile unsigned char *)(MCF_IPSBAR + 0xA0000)); \
299 while(1) \
300 *reset |= 0x80; \
301})
302#else
303#define HARD_RESET_NOW() ({ \
304 asm(" \
305 movew #0x2700, %sr; \
306 moveal #0x4, %a0; \
307 moveal (%a0), %a0; \
308 jmp (%a0); \
309 "); \
310})
311#endif
312#endif
313#define arch_align_stack(x) (x) 206#define arch_align_stack(x) (x)
314 207
315 208
diff --git a/arch/m68knommu/kernel/entry.S b/arch/m68knommu/kernel/entry.S
index f4782d2dce8f..f56faa5c9cd9 100644
--- a/arch/m68knommu/kernel/entry.S
+++ b/arch/m68knommu/kernel/entry.S
@@ -26,7 +26,6 @@
26 26
27#include <linux/sys.h> 27#include <linux/sys.h>
28#include <linux/linkage.h> 28#include <linux/linkage.h>
29#include <asm/thread_info.h>
30#include <asm/errno.h> 29#include <asm/errno.h>
31#include <asm/setup.h> 30#include <asm/setup.h>
32#include <asm/segment.h> 31#include <asm/segment.h>
diff --git a/arch/m68knommu/kernel/setup.c b/arch/m68knommu/kernel/setup.c
index 5985f1989021..5c2bb3eeaaa2 100644
--- a/arch/m68knommu/kernel/setup.c
+++ b/arch/m68knommu/kernel/setup.c
@@ -166,15 +166,13 @@ void __init setup_arch(char **cmdline_p)
166 printk(KERN_INFO "Motorola M5235EVB support (C)2005 Syn-tech Systems, Inc. (Jate Sujjavanich)\n"); 166 printk(KERN_INFO "Motorola M5235EVB support (C)2005 Syn-tech Systems, Inc. (Jate Sujjavanich)\n");
167#endif 167#endif
168 168
169#ifdef DEBUG 169 pr_debug("KERNEL -> TEXT=0x%06x-0x%06x DATA=0x%06x-0x%06x "
170 printk(KERN_DEBUG "KERNEL -> TEXT=0x%06x-0x%06x DATA=0x%06x-0x%06x " 170 "BSS=0x%06x-0x%06x\n", (int) &_stext, (int) &_etext,
171 "BSS=0x%06x-0x%06x\n", (int) &_stext, (int) &_etext, 171 (int) &_sdata, (int) &_edata,
172 (int) &_sdata, (int) &_edata, 172 (int) &_sbss, (int) &_ebss);
173 (int) &_sbss, (int) &_ebss); 173 pr_debug("MEMORY -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x\n ",
174 printk(KERN_DEBUG "MEMORY -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x\n ", 174 (int) &_ebss, (int) memory_start,
175 (int) &_ebss, (int) memory_start, 175 (int) memory_start, (int) memory_end);
176 (int) memory_start, (int) memory_end);
177#endif
178 176
179 /* Keep a copy of command line */ 177 /* Keep a copy of command line */
180 *cmdline_p = &command_line[0]; 178 *cmdline_p = &command_line[0];
diff --git a/arch/m68knommu/mm/init.c b/arch/m68knommu/mm/init.c
index 7befc0c357e0..b1703c67a4f1 100644
--- a/arch/m68knommu/mm/init.c
+++ b/arch/m68knommu/mm/init.c
@@ -126,9 +126,7 @@ void __init mem_init(void)
126 unsigned long start_mem = memory_start; /* DAVIDM - these must start at end of kernel */ 126 unsigned long start_mem = memory_start; /* DAVIDM - these must start at end of kernel */
127 unsigned long end_mem = memory_end; /* DAVIDM - this must not include kernel stack at top */ 127 unsigned long end_mem = memory_end; /* DAVIDM - this must not include kernel stack at top */
128 128
129#ifdef DEBUG 129 pr_debug("Mem_init: start=%lx, end=%lx\n", start_mem, end_mem);
130 printk(KERN_DEBUG "Mem_init: start=%lx, end=%lx\n", start_mem, end_mem);
131#endif
132 130
133 end_mem &= PAGE_MASK; 131 end_mem &= PAGE_MASK;
134 high_memory = (void *) end_mem; 132 high_memory = (void *) end_mem;
diff --git a/arch/m68knommu/platform/5206/config.c b/arch/m68knommu/platform/5206/config.c
index 53a5920c2b71..f6f79874e9af 100644
--- a/arch/m68knommu/platform/5206/config.c
+++ b/arch/m68knommu/platform/5206/config.c
@@ -12,7 +12,6 @@
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/param.h> 13#include <linux/param.h>
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/interrupt.h>
16#include <linux/io.h> 15#include <linux/io.h>
17#include <asm/machdep.h> 16#include <asm/machdep.h>
18#include <asm/coldfire.h> 17#include <asm/coldfire.h>
@@ -21,10 +20,6 @@
21 20
22/***************************************************************************/ 21/***************************************************************************/
23 22
24void coldfire_reset(void);
25
26/***************************************************************************/
27
28static struct mcf_platform_uart m5206_uart_platform[] = { 23static struct mcf_platform_uart m5206_uart_platform[] = {
29 { 24 {
30 .mapbase = MCF_MBAR + MCFUART_BASE1, 25 .mapbase = MCF_MBAR + MCFUART_BASE1,
@@ -109,10 +104,21 @@ void mcf_settimericr(unsigned int timer, unsigned int level)
109 104
110/***************************************************************************/ 105/***************************************************************************/
111 106
107void m5206_cpu_reset(void)
108{
109 local_irq_disable();
110 /* Set watchdog to soft reset, and enabled */
111 __raw_writeb(0xc0, MCF_MBAR + MCFSIM_SYPCR);
112 for (;;)
113 /* wait for watchdog to timeout */;
114}
115
116/***************************************************************************/
117
112void __init config_BSP(char *commandp, int size) 118void __init config_BSP(char *commandp, int size)
113{ 119{
114 mcf_setimr(MCFSIM_IMR_MASKALL); 120 mcf_setimr(MCFSIM_IMR_MASKALL);
115 mach_reset = coldfire_reset; 121 mach_reset = m5206_cpu_reset;
116} 122}
117 123
118/***************************************************************************/ 124/***************************************************************************/
diff --git a/arch/m68knommu/platform/5206e/config.c b/arch/m68knommu/platform/5206e/config.c
index db902540bf2c..65887799db81 100644
--- a/arch/m68knommu/platform/5206e/config.c
+++ b/arch/m68knommu/platform/5206e/config.c
@@ -11,7 +11,6 @@
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/param.h> 12#include <linux/param.h>
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/interrupt.h>
15#include <linux/io.h> 14#include <linux/io.h>
16#include <asm/machdep.h> 15#include <asm/machdep.h>
17#include <asm/coldfire.h> 16#include <asm/coldfire.h>
@@ -21,10 +20,6 @@
21 20
22/***************************************************************************/ 21/***************************************************************************/
23 22
24void coldfire_reset(void);
25
26/***************************************************************************/
27
28static struct mcf_platform_uart m5206e_uart_platform[] = { 23static struct mcf_platform_uart m5206e_uart_platform[] = {
29 { 24 {
30 .mapbase = MCF_MBAR + MCFUART_BASE1, 25 .mapbase = MCF_MBAR + MCFUART_BASE1,
@@ -109,6 +104,17 @@ void mcf_settimericr(unsigned int timer, unsigned int level)
109 104
110/***************************************************************************/ 105/***************************************************************************/
111 106
107void m5206e_cpu_reset(void)
108{
109 local_irq_disable();
110 /* Set watchdog to soft reset, and enabled */
111 __raw_writeb(0xc0, MCF_MBAR + MCFSIM_SYPCR);
112 for (;;)
113 /* wait for watchdog to timeout */;
114}
115
116/***************************************************************************/
117
112void __init config_BSP(char *commandp, int size) 118void __init config_BSP(char *commandp, int size)
113{ 119{
114 mcf_setimr(MCFSIM_IMR_MASKALL); 120 mcf_setimr(MCFSIM_IMR_MASKALL);
@@ -119,7 +125,7 @@ void __init config_BSP(char *commandp, int size)
119 commandp[size-1] = 0; 125 commandp[size-1] = 0;
120#endif /* CONFIG_NETtel */ 126#endif /* CONFIG_NETtel */
121 127
122 mach_reset = coldfire_reset; 128 mach_reset = m5206e_cpu_reset;
123} 129}
124 130
125/***************************************************************************/ 131/***************************************************************************/
diff --git a/arch/m68knommu/platform/520x/config.c b/arch/m68knommu/platform/520x/config.c
index 855fc6a79d72..1c43a8aec69b 100644
--- a/arch/m68knommu/platform/520x/config.c
+++ b/arch/m68knommu/platform/520x/config.c
@@ -14,7 +14,6 @@
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/param.h> 15#include <linux/param.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/interrupt.h>
18#include <linux/io.h> 17#include <linux/io.h>
19#include <asm/machdep.h> 18#include <asm/machdep.h>
20#include <asm/coldfire.h> 19#include <asm/coldfire.h>
@@ -23,10 +22,6 @@
23 22
24/***************************************************************************/ 23/***************************************************************************/
25 24
26void coldfire_reset(void);
27
28/***************************************************************************/
29
30static struct mcf_platform_uart m520x_uart_platform[] = { 25static struct mcf_platform_uart m520x_uart_platform[] = {
31 { 26 {
32 .mapbase = MCF_MBAR + MCFUART_BASE1, 27 .mapbase = MCF_MBAR + MCFUART_BASE1,
@@ -169,9 +164,17 @@ void mcf_autovector(unsigned int vec)
169 164
170/***************************************************************************/ 165/***************************************************************************/
171 166
167static void m520x_cpu_reset(void)
168{
169 local_irq_disable();
170 __raw_writeb(MCF_RCR_SWRESET, MCF_RCR);
171}
172
173/***************************************************************************/
174
172void __init config_BSP(char *commandp, int size) 175void __init config_BSP(char *commandp, int size)
173{ 176{
174 mach_reset = coldfire_reset; 177 mach_reset = m520x_cpu_reset;
175 m520x_uarts_init(); 178 m520x_uarts_init();
176 m520x_fec_init(); 179 m520x_fec_init();
177} 180}
diff --git a/arch/m68knommu/platform/523x/config.c b/arch/m68knommu/platform/523x/config.c
index 74133f27b30c..961fefebca14 100644
--- a/arch/m68knommu/platform/523x/config.c
+++ b/arch/m68knommu/platform/523x/config.c
@@ -15,7 +15,6 @@
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/param.h> 16#include <linux/param.h>
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/interrupt.h>
19#include <linux/io.h> 18#include <linux/io.h>
20#include <asm/machdep.h> 19#include <asm/machdep.h>
21#include <asm/coldfire.h> 20#include <asm/coldfire.h>
@@ -24,10 +23,6 @@
24 23
25/***************************************************************************/ 24/***************************************************************************/
26 25
27void coldfire_reset(void);
28
29/***************************************************************************/
30
31static struct mcf_platform_uart m523x_uart_platform[] = { 26static struct mcf_platform_uart m523x_uart_platform[] = {
32 { 27 {
33 .mapbase = MCF_MBAR + MCFUART_BASE1, 28 .mapbase = MCF_MBAR + MCFUART_BASE1,
@@ -145,13 +140,20 @@ void mcf_autovector(unsigned int vec)
145{ 140{
146 /* Everything is auto-vectored on the 523x */ 141 /* Everything is auto-vectored on the 523x */
147} 142}
143/***************************************************************************/
144
145static void m523x_cpu_reset(void)
146{
147 local_irq_disable();
148 __raw_writeb(MCF_RCR_SWRESET, MCF_IPSBAR + MCF_RCR);
149}
148 150
149/***************************************************************************/ 151/***************************************************************************/
150 152
151void __init config_BSP(char *commandp, int size) 153void __init config_BSP(char *commandp, int size)
152{ 154{
153 mcf_disableall(); 155 mcf_disableall();
154 mach_reset = coldfire_reset; 156 mach_reset = m523x_cpu_reset;
155 m523x_uarts_init(); 157 m523x_uarts_init();
156 m523x_fec_init(); 158 m523x_fec_init();
157} 159}
diff --git a/arch/m68knommu/platform/5249/config.c b/arch/m68knommu/platform/5249/config.c
index 9eab19d01eb1..93d998825925 100644
--- a/arch/m68knommu/platform/5249/config.c
+++ b/arch/m68knommu/platform/5249/config.c
@@ -11,7 +11,6 @@
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/param.h> 12#include <linux/param.h>
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/interrupt.h>
15#include <linux/io.h> 14#include <linux/io.h>
16#include <asm/machdep.h> 15#include <asm/machdep.h>
17#include <asm/coldfire.h> 16#include <asm/coldfire.h>
@@ -20,10 +19,6 @@
20 19
21/***************************************************************************/ 20/***************************************************************************/
22 21
23void coldfire_reset(void);
24
25/***************************************************************************/
26
27static struct mcf_platform_uart m5249_uart_platform[] = { 22static struct mcf_platform_uart m5249_uart_platform[] = {
28 { 23 {
29 .mapbase = MCF_MBAR + MCFUART_BASE1, 24 .mapbase = MCF_MBAR + MCFUART_BASE1,
@@ -106,10 +101,21 @@ void mcf_settimericr(unsigned int timer, unsigned int level)
106 101
107/***************************************************************************/ 102/***************************************************************************/
108 103
104void m5249_cpu_reset(void)
105{
106 local_irq_disable();
107 /* Set watchdog to soft reset, and enabled */
108 __raw_writeb(0xc0, MCF_MBAR + MCFSIM_SYPCR);
109 for (;;)
110 /* wait for watchdog to timeout */;
111}
112
113/***************************************************************************/
114
109void __init config_BSP(char *commandp, int size) 115void __init config_BSP(char *commandp, int size)
110{ 116{
111 mcf_setimr(MCFSIM_IMR_MASKALL); 117 mcf_setimr(MCFSIM_IMR_MASKALL);
112 mach_reset = coldfire_reset; 118 mach_reset = m5249_cpu_reset;
113} 119}
114 120
115/***************************************************************************/ 121/***************************************************************************/
diff --git a/arch/m68knommu/platform/5272/config.c b/arch/m68knommu/platform/5272/config.c
index e049245f4092..5f95fcde05fd 100644
--- a/arch/m68knommu/platform/5272/config.c
+++ b/arch/m68knommu/platform/5272/config.c
@@ -12,7 +12,6 @@
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/param.h> 13#include <linux/param.h>
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/interrupt.h>
16#include <linux/io.h> 15#include <linux/io.h>
17#include <asm/machdep.h> 16#include <asm/machdep.h>
18#include <asm/coldfire.h> 17#include <asm/coldfire.h>
@@ -21,8 +20,6 @@
21 20
22/***************************************************************************/ 21/***************************************************************************/
23 22
24void coldfire_reset(void);
25
26extern unsigned int mcf_timervector; 23extern unsigned int mcf_timervector;
27extern unsigned int mcf_profilevector; 24extern unsigned int mcf_profilevector;
28extern unsigned int mcf_timerlevel; 25extern unsigned int mcf_timerlevel;
@@ -170,6 +167,19 @@ void mcf_settimericr(int timer, int level)
170 167
171/***************************************************************************/ 168/***************************************************************************/
172 169
170static void m5272_cpu_reset(void)
171{
172 local_irq_disable();
173 /* Set watchdog to reset, and enabled */
174 __raw_writew(0, MCF_MBAR + MCFSIM_WIRR);
175 __raw_writew(1, MCF_MBAR + MCFSIM_WRRR);
176 __raw_writew(0, MCF_MBAR + MCFSIM_WCR);
177 for (;;)
178 /* wait for watchdog to timeout */;
179}
180
181/***************************************************************************/
182
173void __init config_BSP(char *commandp, int size) 183void __init config_BSP(char *commandp, int size)
174{ 184{
175#if defined (CONFIG_MOD5272) 185#if defined (CONFIG_MOD5272)
@@ -194,7 +204,7 @@ void __init config_BSP(char *commandp, int size)
194 204
195 mcf_timervector = 69; 205 mcf_timervector = 69;
196 mcf_profilevector = 70; 206 mcf_profilevector = 70;
197 mach_reset = coldfire_reset; 207 mach_reset = m5272_cpu_reset;
198} 208}
199 209
200/***************************************************************************/ 210/***************************************************************************/
diff --git a/arch/m68knommu/platform/527x/config.c b/arch/m68knommu/platform/527x/config.c
index 428b15922ef5..f746439cfd3e 100644
--- a/arch/m68knommu/platform/527x/config.c
+++ b/arch/m68knommu/platform/527x/config.c
@@ -15,7 +15,6 @@
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/param.h> 16#include <linux/param.h>
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/interrupt.h>
19#include <linux/io.h> 18#include <linux/io.h>
20#include <asm/machdep.h> 19#include <asm/machdep.h>
21#include <asm/coldfire.h> 20#include <asm/coldfire.h>
@@ -24,10 +23,6 @@
24 23
25/***************************************************************************/ 24/***************************************************************************/
26 25
27void coldfire_reset(void);
28
29/***************************************************************************/
30
31static struct mcf_platform_uart m527x_uart_platform[] = { 26static struct mcf_platform_uart m527x_uart_platform[] = {
32 { 27 {
33 .mapbase = MCF_MBAR + MCFUART_BASE1, 28 .mapbase = MCF_MBAR + MCFUART_BASE1,
@@ -227,10 +222,18 @@ void mcf_autovector(unsigned int vec)
227 222
228/***************************************************************************/ 223/***************************************************************************/
229 224
225static void m527x_cpu_reset(void)
226{
227 local_irq_disable();
228 __raw_writeb(MCF_RCR_SWRESET, MCF_IPSBAR + MCF_RCR);
229}
230
231/***************************************************************************/
232
230void __init config_BSP(char *commandp, int size) 233void __init config_BSP(char *commandp, int size)
231{ 234{
232 mcf_disableall(); 235 mcf_disableall();
233 mach_reset = coldfire_reset; 236 mach_reset = m527x_cpu_reset;
234 m527x_uarts_init(); 237 m527x_uarts_init();
235 m527x_fec_init(); 238 m527x_fec_init();
236} 239}
diff --git a/arch/m68knommu/platform/528x/config.c b/arch/m68knommu/platform/528x/config.c
index bee526f4d1af..a1d1a61c4fe6 100644
--- a/arch/m68knommu/platform/528x/config.c
+++ b/arch/m68knommu/platform/528x/config.c
@@ -31,10 +31,6 @@
31 31
32/***************************************************************************/ 32/***************************************************************************/
33 33
34void coldfire_reset(void);
35
36/***************************************************************************/
37
38static struct mcf_platform_uart m528x_uart_platform[] = { 34static struct mcf_platform_uart m528x_uart_platform[] = {
39 { 35 {
40 .mapbase = MCF_MBAR + MCFUART_BASE1, 36 .mapbase = MCF_MBAR + MCFUART_BASE1,
@@ -171,6 +167,14 @@ void mcf_autovector(unsigned int vec)
171 167
172/***************************************************************************/ 168/***************************************************************************/
173 169
170static void m528x_cpu_reset(void)
171{
172 local_irq_disable();
173 __raw_writeb(MCF_RCR_SWRESET, MCF_IPSBAR + MCF_RCR);
174}
175
176/***************************************************************************/
177
174#ifdef CONFIG_WILDFIRE 178#ifdef CONFIG_WILDFIRE
175void wildfire_halt(void) 179void wildfire_halt(void)
176{ 180{
@@ -214,6 +218,7 @@ void __init config_BSP(char *commandp, int size)
214 218
215static int __init init_BSP(void) 219static int __init init_BSP(void)
216{ 220{
221 mach_reset = m528x_cpu_reset;
217 m528x_uarts_init(); 222 m528x_uarts_init();
218 m528x_fec_init(); 223 m528x_fec_init();
219 platform_add_devices(m528x_devices, ARRAY_SIZE(m528x_devices)); 224 platform_add_devices(m528x_devices, ARRAY_SIZE(m528x_devices));
diff --git a/arch/m68knommu/platform/5307/config.c b/arch/m68knommu/platform/5307/config.c
index 44803bf70a6e..39da9e9ff674 100644
--- a/arch/m68knommu/platform/5307/config.c
+++ b/arch/m68knommu/platform/5307/config.c
@@ -12,7 +12,6 @@
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/param.h> 13#include <linux/param.h>
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/interrupt.h>
16#include <linux/io.h> 15#include <linux/io.h>
17#include <asm/machdep.h> 16#include <asm/machdep.h>
18#include <asm/coldfire.h> 17#include <asm/coldfire.h>
@@ -22,8 +21,6 @@
22 21
23/***************************************************************************/ 22/***************************************************************************/
24 23
25void coldfire_reset(void);
26
27extern unsigned int mcf_timervector; 24extern unsigned int mcf_timervector;
28extern unsigned int mcf_profilevector; 25extern unsigned int mcf_profilevector;
29extern unsigned int mcf_timerlevel; 26extern unsigned int mcf_timerlevel;
@@ -119,6 +116,17 @@ void mcf_settimericr(unsigned int timer, unsigned int level)
119 116
120/***************************************************************************/ 117/***************************************************************************/
121 118
119void m5307_cpu_reset(void)
120{
121 local_irq_disable();
122 /* Set watchdog to soft reset, and enabled */
123 __raw_writeb(0xc0, MCF_MBAR + MCFSIM_SYPCR);
124 for (;;)
125 /* wait for watchdog to timeout */;
126}
127
128/***************************************************************************/
129
122void __init config_BSP(char *commandp, int size) 130void __init config_BSP(char *commandp, int size)
123{ 131{
124 mcf_setimr(MCFSIM_IMR_MASKALL); 132 mcf_setimr(MCFSIM_IMR_MASKALL);
@@ -134,7 +142,7 @@ void __init config_BSP(char *commandp, int size)
134 mcf_timerlevel = 6; 142 mcf_timerlevel = 6;
135#endif 143#endif
136 144
137 mach_reset = coldfire_reset; 145 mach_reset = m5307_cpu_reset;
138 146
139#ifdef CONFIG_BDM_DISABLE 147#ifdef CONFIG_BDM_DISABLE
140 /* 148 /*
diff --git a/arch/m68knommu/platform/532x/config.c b/arch/m68knommu/platform/532x/config.c
index 591f2f801134..cdb761971f7a 100644
--- a/arch/m68knommu/platform/532x/config.c
+++ b/arch/m68knommu/platform/532x/config.c
@@ -31,8 +31,6 @@
31 31
32/***************************************************************************/ 32/***************************************************************************/
33 33
34void coldfire_reset(void);
35
36extern unsigned int mcf_timervector; 34extern unsigned int mcf_timervector;
37extern unsigned int mcf_profilevector; 35extern unsigned int mcf_profilevector;
38extern unsigned int mcf_timerlevel; 36extern unsigned int mcf_timerlevel;
@@ -164,6 +162,14 @@ void mcf_settimericr(unsigned int timer, unsigned int level)
164 162
165/***************************************************************************/ 163/***************************************************************************/
166 164
165static void m532x_cpu_reset(void)
166{
167 local_irq_disable();
168 __raw_writeb(MCF_RCR_SWRESET, MCF_RCR);
169}
170
171/***************************************************************************/
172
167void __init config_BSP(char *commandp, int size) 173void __init config_BSP(char *commandp, int size)
168{ 174{
169 mcf_setimr(MCFSIM_IMR_MASKALL); 175 mcf_setimr(MCFSIM_IMR_MASKALL);
@@ -181,7 +187,7 @@ void __init config_BSP(char *commandp, int size)
181 187
182 mcf_timervector = 64+32; 188 mcf_timervector = 64+32;
183 mcf_profilevector = 64+33; 189 mcf_profilevector = 64+33;
184 mach_reset = coldfire_reset; 190 mach_reset = m532x_cpu_reset;
185 191
186#ifdef CONFIG_BDM_DISABLE 192#ifdef CONFIG_BDM_DISABLE
187 /* 193 /*
diff --git a/arch/m68knommu/platform/5407/config.c b/arch/m68knommu/platform/5407/config.c
index 0ee8c1a200c8..b41d942bf8d0 100644
--- a/arch/m68knommu/platform/5407/config.c
+++ b/arch/m68knommu/platform/5407/config.c
@@ -12,7 +12,6 @@
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/param.h> 13#include <linux/param.h>
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/interrupt.h>
16#include <linux/io.h> 15#include <linux/io.h>
17#include <asm/machdep.h> 16#include <asm/machdep.h>
18#include <asm/coldfire.h> 17#include <asm/coldfire.h>
@@ -21,8 +20,6 @@
21 20
22/***************************************************************************/ 21/***************************************************************************/
23 22
24void coldfire_reset(void);
25
26extern unsigned int mcf_timervector; 23extern unsigned int mcf_timervector;
27extern unsigned int mcf_profilevector; 24extern unsigned int mcf_profilevector;
28extern unsigned int mcf_timerlevel; 25extern unsigned int mcf_timerlevel;
@@ -110,6 +107,17 @@ void mcf_settimericr(unsigned int timer, unsigned int level)
110 107
111/***************************************************************************/ 108/***************************************************************************/
112 109
110void m5407_cpu_reset(void)
111{
112 local_irq_disable();
113 /* set watchdog to soft reset, and enabled */
114 __raw_writeb(0xc0, MCF_MBAR + MCFSIM_SYPCR);
115 for (;;)
116 /* wait for watchdog to timeout */;
117}
118
119/***************************************************************************/
120
113void __init config_BSP(char *commandp, int size) 121void __init config_BSP(char *commandp, int size)
114{ 122{
115 mcf_setimr(MCFSIM_IMR_MASKALL); 123 mcf_setimr(MCFSIM_IMR_MASKALL);
@@ -121,7 +129,7 @@ void __init config_BSP(char *commandp, int size)
121 mcf_timerlevel = 6; 129 mcf_timerlevel = 6;
122#endif 130#endif
123 131
124 mach_reset = coldfire_reset; 132 mach_reset = m5407_cpu_reset;
125} 133}
126 134
127/***************************************************************************/ 135/***************************************************************************/
diff --git a/arch/m68knommu/platform/coldfire/vectors.c b/arch/m68knommu/platform/coldfire/vectors.c
index 6cf894620234..bdca0297fa9a 100644
--- a/arch/m68knommu/platform/coldfire/vectors.c
+++ b/arch/m68knommu/platform/coldfire/vectors.c
@@ -96,10 +96,3 @@ void ack_vector(unsigned int irq)
96} 96}
97 97
98/***************************************************************************/ 98/***************************************************************************/
99
100void coldfire_reset(void)
101{
102 HARD_RESET_NOW();
103}
104
105/***************************************************************************/