diff options
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r-- | arch/arm/mach-imx/clk-imx35.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-imx/clk-imx6q.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/headsmp.S | 18 | ||||
-rw-r--r-- | arch/arm/mach-imx/imx25-dt.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-imx/pm-imx6q.c | 15 |
5 files changed, 16 insertions, 25 deletions
diff --git a/arch/arm/mach-imx/clk-imx35.c b/arch/arm/mach-imx/clk-imx35.c index 74e3a34d78b8..e13a8fa5e62c 100644 --- a/arch/arm/mach-imx/clk-imx35.c +++ b/arch/arm/mach-imx/clk-imx35.c | |||
@@ -264,6 +264,7 @@ int __init mx35_clocks_init(void) | |||
264 | clk_prepare_enable(clk[gpio3_gate]); | 264 | clk_prepare_enable(clk[gpio3_gate]); |
265 | clk_prepare_enable(clk[iim_gate]); | 265 | clk_prepare_enable(clk[iim_gate]); |
266 | clk_prepare_enable(clk[emi_gate]); | 266 | clk_prepare_enable(clk[emi_gate]); |
267 | clk_prepare_enable(clk[max_gate]); | ||
267 | 268 | ||
268 | /* | 269 | /* |
269 | * SCC is needed to boot via mmc after a watchdog reset. The clock code | 270 | * SCC is needed to boot via mmc after a watchdog reset. The clock code |
diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c index 7b025ee528a5..2f9ff93a4e61 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c | |||
@@ -172,7 +172,7 @@ static struct clk *clk[clk_max]; | |||
172 | static struct clk_onecell_data clk_data; | 172 | static struct clk_onecell_data clk_data; |
173 | 173 | ||
174 | static enum mx6q_clks const clks_init_on[] __initconst = { | 174 | static enum mx6q_clks const clks_init_on[] __initconst = { |
175 | mmdc_ch0_axi, rom, | 175 | mmdc_ch0_axi, rom, pll1_sys, |
176 | }; | 176 | }; |
177 | 177 | ||
178 | static struct clk_div_table clk_enet_ref_table[] = { | 178 | static struct clk_div_table clk_enet_ref_table[] = { |
diff --git a/arch/arm/mach-imx/headsmp.S b/arch/arm/mach-imx/headsmp.S index 921fc1555854..a58c8b0527cc 100644 --- a/arch/arm/mach-imx/headsmp.S +++ b/arch/arm/mach-imx/headsmp.S | |||
@@ -26,16 +26,16 @@ ENDPROC(v7_secondary_startup) | |||
26 | 26 | ||
27 | #ifdef CONFIG_PM | 27 | #ifdef CONFIG_PM |
28 | /* | 28 | /* |
29 | * The following code is located into the .data section. This is to | 29 | * The following code must assume it is running from physical address |
30 | * allow phys_l2x0_saved_regs to be accessed with a relative load | 30 | * where absolute virtual addresses to the data section have to be |
31 | * as we are running on physical address here. | 31 | * turned into relative ones. |
32 | */ | 32 | */ |
33 | .data | ||
34 | .align | ||
35 | 33 | ||
36 | #ifdef CONFIG_CACHE_L2X0 | 34 | #ifdef CONFIG_CACHE_L2X0 |
37 | .macro pl310_resume | 35 | .macro pl310_resume |
38 | ldr r2, phys_l2x0_saved_regs | 36 | adr r0, l2x0_saved_regs_offset |
37 | ldr r2, [r0] | ||
38 | add r2, r2, r0 | ||
39 | ldr r0, [r2, #L2X0_R_PHY_BASE] @ get physical base of l2x0 | 39 | ldr r0, [r2, #L2X0_R_PHY_BASE] @ get physical base of l2x0 |
40 | ldr r1, [r2, #L2X0_R_AUX_CTRL] @ get aux_ctrl value | 40 | ldr r1, [r2, #L2X0_R_AUX_CTRL] @ get aux_ctrl value |
41 | str r1, [r0, #L2X0_AUX_CTRL] @ restore aux_ctrl | 41 | str r1, [r0, #L2X0_AUX_CTRL] @ restore aux_ctrl |
@@ -43,9 +43,9 @@ ENDPROC(v7_secondary_startup) | |||
43 | str r1, [r0, #L2X0_CTRL] @ re-enable L2 | 43 | str r1, [r0, #L2X0_CTRL] @ re-enable L2 |
44 | .endm | 44 | .endm |
45 | 45 | ||
46 | .globl phys_l2x0_saved_regs | 46 | l2x0_saved_regs_offset: |
47 | phys_l2x0_saved_regs: | 47 | .word l2x0_saved_regs - . |
48 | .long 0 | 48 | |
49 | #else | 49 | #else |
50 | .macro pl310_resume | 50 | .macro pl310_resume |
51 | .endm | 51 | .endm |
diff --git a/arch/arm/mach-imx/imx25-dt.c b/arch/arm/mach-imx/imx25-dt.c index 03b65e5ea541..82348391582a 100644 --- a/arch/arm/mach-imx/imx25-dt.c +++ b/arch/arm/mach-imx/imx25-dt.c | |||
@@ -27,6 +27,11 @@ static const char * const imx25_dt_board_compat[] __initconst = { | |||
27 | NULL | 27 | NULL |
28 | }; | 28 | }; |
29 | 29 | ||
30 | static void __init imx25_timer_init(void) | ||
31 | { | ||
32 | mx25_clocks_init_dt(); | ||
33 | } | ||
34 | |||
30 | DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)") | 35 | DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)") |
31 | .map_io = mx25_map_io, | 36 | .map_io = mx25_map_io, |
32 | .init_early = imx25_init_early, | 37 | .init_early = imx25_init_early, |
diff --git a/arch/arm/mach-imx/pm-imx6q.c b/arch/arm/mach-imx/pm-imx6q.c index ee42d20cba19..5faba7a3c95f 100644 --- a/arch/arm/mach-imx/pm-imx6q.c +++ b/arch/arm/mach-imx/pm-imx6q.c | |||
@@ -22,8 +22,6 @@ | |||
22 | #include "common.h" | 22 | #include "common.h" |
23 | #include "hardware.h" | 23 | #include "hardware.h" |
24 | 24 | ||
25 | extern unsigned long phys_l2x0_saved_regs; | ||
26 | |||
27 | static int imx6q_suspend_finish(unsigned long val) | 25 | static int imx6q_suspend_finish(unsigned long val) |
28 | { | 26 | { |
29 | cpu_do_idle(); | 27 | cpu_do_idle(); |
@@ -57,18 +55,5 @@ static const struct platform_suspend_ops imx6q_pm_ops = { | |||
57 | 55 | ||
58 | void __init imx6q_pm_init(void) | 56 | void __init imx6q_pm_init(void) |
59 | { | 57 | { |
60 | /* | ||
61 | * The l2x0 core code provides an infrastucture to save and restore | ||
62 | * l2x0 registers across suspend/resume cycle. But because imx6q | ||
63 | * retains L2 content during suspend and needs to resume L2 before | ||
64 | * MMU is enabled, it can only utilize register saving support and | ||
65 | * have to take care of restoring on its own. So we save physical | ||
66 | * address of the data structure used by l2x0 core to save registers, | ||
67 | * and later restore the necessary ones in imx6q resume entry. | ||
68 | */ | ||
69 | #ifdef CONFIG_CACHE_L2X0 | ||
70 | phys_l2x0_saved_regs = __pa(&l2x0_saved_regs); | ||
71 | #endif | ||
72 | |||
73 | suspend_set_ops(&imx6q_pm_ops); | 58 | suspend_set_ops(&imx6q_pm_ops); |
74 | } | 59 | } |