diff options
author | Maxime Ripard <maxime.ripard@free-electrons.com> | 2014-08-29 13:19:47 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2014-09-11 15:01:47 -0400 |
commit | 17fa6e4ecf1ccab5e90db7025cfc9d459774cd3f (patch) | |
tree | 7e44a42f3522c24e72a5fea7f30591128557c329 /arch/arm/mach-sunxi | |
parent | 9136ce889254ed51a00a41194befee8ecb2eda36 (diff) |
ARM: sunxi: Remove sun4i reboot code from mach directory
Now that the restart code has been merged in the watchdog driver, we don't need
the restart code in the mach-sunxi directory anymore.
Remove it entirely.
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch/arm/mach-sunxi')
-rw-r--r-- | arch/arm/mach-sunxi/sunxi.c | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/arch/arm/mach-sunxi/sunxi.c b/arch/arm/mach-sunxi/sunxi.c index 42d4753683ce..d7598aeed803 100644 --- a/arch/arm/mach-sunxi/sunxi.c +++ b/arch/arm/mach-sunxi/sunxi.c | |||
@@ -12,81 +12,9 @@ | |||
12 | 12 | ||
13 | #include <linux/clk-provider.h> | 13 | #include <linux/clk-provider.h> |
14 | #include <linux/clocksource.h> | 14 | #include <linux/clocksource.h> |
15 | #include <linux/delay.h> | ||
16 | #include <linux/kernel.h> | ||
17 | #include <linux/init.h> | 15 | #include <linux/init.h> |
18 | #include <linux/of_address.h> | ||
19 | #include <linux/of_irq.h> | ||
20 | #include <linux/of_platform.h> | ||
21 | #include <linux/io.h> | ||
22 | #include <linux/reboot.h> | ||
23 | 16 | ||
24 | #include <asm/mach/arch.h> | 17 | #include <asm/mach/arch.h> |
25 | #include <asm/mach/map.h> | ||
26 | #include <asm/system_misc.h> | ||
27 | |||
28 | #define SUN4I_WATCHDOG_CTRL_REG 0x00 | ||
29 | #define SUN4I_WATCHDOG_CTRL_RESTART BIT(0) | ||
30 | #define SUN4I_WATCHDOG_MODE_REG 0x04 | ||
31 | #define SUN4I_WATCHDOG_MODE_ENABLE BIT(0) | ||
32 | #define SUN4I_WATCHDOG_MODE_RESET_ENABLE BIT(1) | ||
33 | |||
34 | #define SUN6I_WATCHDOG1_IRQ_REG 0x00 | ||
35 | #define SUN6I_WATCHDOG1_CTRL_REG 0x10 | ||
36 | #define SUN6I_WATCHDOG1_CTRL_RESTART BIT(0) | ||
37 | #define SUN6I_WATCHDOG1_CONFIG_REG 0x14 | ||
38 | #define SUN6I_WATCHDOG1_CONFIG_RESTART BIT(0) | ||
39 | #define SUN6I_WATCHDOG1_CONFIG_IRQ BIT(1) | ||
40 | #define SUN6I_WATCHDOG1_MODE_REG 0x18 | ||
41 | #define SUN6I_WATCHDOG1_MODE_ENABLE BIT(0) | ||
42 | |||
43 | static void __iomem *wdt_base; | ||
44 | |||
45 | static void sun4i_restart(enum reboot_mode mode, const char *cmd) | ||
46 | { | ||
47 | if (!wdt_base) | ||
48 | return; | ||
49 | |||
50 | /* Enable timer and set reset bit in the watchdog */ | ||
51 | writel(SUN4I_WATCHDOG_MODE_ENABLE | SUN4I_WATCHDOG_MODE_RESET_ENABLE, | ||
52 | wdt_base + SUN4I_WATCHDOG_MODE_REG); | ||
53 | |||
54 | /* | ||
55 | * Restart the watchdog. The default (and lowest) interval | ||
56 | * value for the watchdog is 0.5s. | ||
57 | */ | ||
58 | writel(SUN4I_WATCHDOG_CTRL_RESTART, wdt_base + SUN4I_WATCHDOG_CTRL_REG); | ||
59 | |||
60 | while (1) { | ||
61 | mdelay(5); | ||
62 | writel(SUN4I_WATCHDOG_MODE_ENABLE | SUN4I_WATCHDOG_MODE_RESET_ENABLE, | ||
63 | wdt_base + SUN4I_WATCHDOG_MODE_REG); | ||
64 | } | ||
65 | } | ||
66 | |||
67 | static struct of_device_id sunxi_restart_ids[] = { | ||
68 | { .compatible = "allwinner,sun4i-a10-wdt" }, | ||
69 | { /*sentinel*/ } | ||
70 | }; | ||
71 | |||
72 | static void sunxi_setup_restart(void) | ||
73 | { | ||
74 | struct device_node *np; | ||
75 | |||
76 | np = of_find_matching_node(NULL, sunxi_restart_ids); | ||
77 | if (WARN(!np, "unable to setup watchdog restart")) | ||
78 | return; | ||
79 | |||
80 | wdt_base = of_iomap(np, 0); | ||
81 | WARN(!wdt_base, "failed to map watchdog base address"); | ||
82 | } | ||
83 | |||
84 | static void __init sunxi_dt_init(void) | ||
85 | { | ||
86 | sunxi_setup_restart(); | ||
87 | |||
88 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | ||
89 | } | ||
90 | 18 | ||
91 | static const char * const sunxi_board_dt_compat[] = { | 19 | static const char * const sunxi_board_dt_compat[] = { |
92 | "allwinner,sun4i-a10", | 20 | "allwinner,sun4i-a10", |
@@ -96,9 +24,7 @@ static const char * const sunxi_board_dt_compat[] = { | |||
96 | }; | 24 | }; |
97 | 25 | ||
98 | DT_MACHINE_START(SUNXI_DT, "Allwinner A1X (Device Tree)") | 26 | DT_MACHINE_START(SUNXI_DT, "Allwinner A1X (Device Tree)") |
99 | .init_machine = sunxi_dt_init, | ||
100 | .dt_compat = sunxi_board_dt_compat, | 27 | .dt_compat = sunxi_board_dt_compat, |
101 | .restart = sun4i_restart, | ||
102 | MACHINE_END | 28 | MACHINE_END |
103 | 29 | ||
104 | static const char * const sun6i_board_dt_compat[] = { | 30 | static const char * const sun6i_board_dt_compat[] = { |
@@ -126,9 +52,7 @@ static const char * const sun7i_board_dt_compat[] = { | |||
126 | }; | 52 | }; |
127 | 53 | ||
128 | DT_MACHINE_START(SUN7I_DT, "Allwinner sun7i (A20) Family") | 54 | DT_MACHINE_START(SUN7I_DT, "Allwinner sun7i (A20) Family") |
129 | .init_machine = sunxi_dt_init, | ||
130 | .dt_compat = sun7i_board_dt_compat, | 55 | .dt_compat = sun7i_board_dt_compat, |
131 | .restart = sun4i_restart, | ||
132 | MACHINE_END | 56 | MACHINE_END |
133 | 57 | ||
134 | static const char * const sun8i_board_dt_compat[] = { | 58 | static const char * const sun8i_board_dt_compat[] = { |