Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/m68k/coldfire/reset.c
26424 views
1
/*
2
* reset.c -- common ColdFire SoC reset support
3
*
4
* (C) Copyright 2012, Greg Ungerer <[email protected]>
5
*
6
* This file is subject to the terms and conditions of the GNU General Public
7
* License. See the file COPYING in the main directory of this archive
8
* for more details.
9
*/
10
11
#include <linux/kernel.h>
12
#include <linux/init.h>
13
#include <linux/io.h>
14
#include <asm/machdep.h>
15
#include <asm/coldfire.h>
16
#include <asm/mcfsim.h>
17
18
/*
19
* There are 2 common methods amongst the ColdFure parts for reseting
20
* the CPU. But there are couple of exceptions, the 5272 and the 547x
21
* have something completely special to them, and we let their specific
22
* subarch code handle them.
23
*/
24
25
#ifdef MCFSIM_SYPCR
26
static void mcf_cpu_reset(void)
27
{
28
local_irq_disable();
29
/* Set watchdog to soft reset, and enabled */
30
__raw_writeb(0xc0, MCFSIM_SYPCR);
31
for (;;)
32
/* wait for watchdog to timeout */;
33
}
34
#endif
35
36
#ifdef MCF_RCR
37
static void mcf_cpu_reset(void)
38
{
39
local_irq_disable();
40
__raw_writeb(MCF_RCR_SWRESET, MCF_RCR);
41
}
42
#endif
43
44
static int __init mcf_setup_reset(void)
45
{
46
mach_reset = mcf_cpu_reset;
47
return 0;
48
}
49
50
arch_initcall(mcf_setup_reset);
51
52