aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-imx/mach-imx6q.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-imx/mach-imx6q.c')
-rw-r--r--arch/arm/mach-imx/mach-imx6q.c35
1 files changed, 3 insertions, 32 deletions
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c
index 049e36edc143..0f9f24116daa 100644
--- a/arch/arm/mach-imx/mach-imx6q.c
+++ b/arch/arm/mach-imx/mach-imx6q.c
@@ -13,7 +13,6 @@
13#include <linux/clk.h> 13#include <linux/clk.h>
14#include <linux/clkdev.h> 14#include <linux/clkdev.h>
15#include <linux/cpu.h> 15#include <linux/cpu.h>
16#include <linux/delay.h>
17#include <linux/export.h> 16#include <linux/export.h>
18#include <linux/init.h> 17#include <linux/init.h>
19#include <linux/io.h> 18#include <linux/io.h>
@@ -38,36 +37,6 @@
38#include "cpuidle.h" 37#include "cpuidle.h"
39#include "hardware.h" 38#include "hardware.h"
40 39
41static void imx6q_restart(enum reboot_mode mode, const char *cmd)
42{
43 struct device_node *np;
44 void __iomem *wdog_base;
45
46 np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-wdt");
47 wdog_base = of_iomap(np, 0);
48 if (!wdog_base)
49 goto soft;
50
51 imx_src_prepare_restart();
52
53 /* enable wdog */
54 writew_relaxed(1 << 2, wdog_base);
55 /* write twice to ensure the request will not get ignored */
56 writew_relaxed(1 << 2, wdog_base);
57
58 /* wait for reset to assert ... */
59 mdelay(500);
60
61 pr_err("Watchdog reset failed to assert reset\n");
62
63 /* delay to allow the serial port to show the message */
64 mdelay(50);
65
66soft:
67 /* we'll take a jump through zero as a poor second */
68 soft_restart(0);
69}
70
71/* For imx6q sabrelite board: set KSZ9021RN RGMII pad skew */ 40/* For imx6q sabrelite board: set KSZ9021RN RGMII pad skew */
72static int ksz9021rn_phy_fixup(struct phy_device *phydev) 41static int ksz9021rn_phy_fixup(struct phy_device *phydev)
73{ 42{
@@ -167,6 +136,8 @@ static void __init imx6q_init_machine(void)
167 imx_print_silicon_rev(cpu_is_imx6dl() ? "i.MX6DL" : "i.MX6Q", 136 imx_print_silicon_rev(cpu_is_imx6dl() ? "i.MX6DL" : "i.MX6Q",
168 imx_get_soc_revision()); 137 imx_get_soc_revision());
169 138
139 mxc_arch_reset_init_dt();
140
170 parent = imx_soc_device_init(); 141 parent = imx_soc_device_init();
171 if (parent == NULL) 142 if (parent == NULL)
172 pr_warn("failed to initialize soc device\n"); 143 pr_warn("failed to initialize soc device\n");
@@ -285,5 +256,5 @@ DT_MACHINE_START(IMX6Q, "Freescale i.MX6 Quad/DualLite (Device Tree)")
285 .init_machine = imx6q_init_machine, 256 .init_machine = imx6q_init_machine,
286 .init_late = imx6q_init_late, 257 .init_late = imx6q_init_late,
287 .dt_compat = imx6q_dt_compat, 258 .dt_compat = imx6q_dt_compat,
288 .restart = imx6q_restart, 259 .restart = mxc_restart,
289MACHINE_END 260MACHINE_END