diff options
Diffstat (limited to 'arch/arm/mach-imx')
| -rw-r--r-- | arch/arm/mach-imx/clk-busy.c | 2 | ||||
| -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/pm-imx6q.c | 15 | 
4 files changed, 11 insertions, 26 deletions
diff --git a/arch/arm/mach-imx/clk-busy.c b/arch/arm/mach-imx/clk-busy.c index 1ab91b5209e..85b728cc27a 100644 --- a/arch/arm/mach-imx/clk-busy.c +++ b/arch/arm/mach-imx/clk-busy.c @@ -169,7 +169,7 @@ struct clk *imx_clk_busy_mux(const char *name, void __iomem *reg, u8 shift,  	busy->mux.reg = reg;  	busy->mux.shift = shift; -	busy->mux.width = width; +	busy->mux.mask = BIT(width) - 1;  	busy->mux.lock = &imx_ccm_lock;  	busy->mux_ops = &clk_mux_ops; diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c index 7b025ee528a..2f9ff93a4e6 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];  static struct clk_onecell_data clk_data;  static enum mx6q_clks const clks_init_on[] __initconst = { -	mmdc_ch0_axi, rom, +	mmdc_ch0_axi, rom, pll1_sys,  };  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 921fc155585..a58c8b0527c 100644 --- a/arch/arm/mach-imx/headsmp.S +++ b/arch/arm/mach-imx/headsmp.S @@ -26,16 +26,16 @@ ENDPROC(v7_secondary_startup)  #ifdef CONFIG_PM  /* - * The following code is located into the .data section.  This is to - * allow phys_l2x0_saved_regs to be accessed with a relative load - * as we are running on physical address here. + * The following code must assume it is running from physical address + * where absolute virtual addresses to the data section have to be + * turned into relative ones.   */ -	.data -	.align  #ifdef CONFIG_CACHE_L2X0  	.macro	pl310_resume -	ldr	r2, phys_l2x0_saved_regs +	adr	r0, l2x0_saved_regs_offset +	ldr	r2, [r0] +	add	r2, r2, r0  	ldr	r0, [r2, #L2X0_R_PHY_BASE]	@ get physical base of l2x0  	ldr	r1, [r2, #L2X0_R_AUX_CTRL]	@ get aux_ctrl value  	str	r1, [r0, #L2X0_AUX_CTRL]	@ restore aux_ctrl @@ -43,9 +43,9 @@ ENDPROC(v7_secondary_startup)  	str	r1, [r0, #L2X0_CTRL]		@ re-enable L2  	.endm -	.globl	phys_l2x0_saved_regs -phys_l2x0_saved_regs: -        .long   0 +l2x0_saved_regs_offset: +	.word	l2x0_saved_regs - . +  #else  	.macro	pl310_resume  	.endm diff --git a/arch/arm/mach-imx/pm-imx6q.c b/arch/arm/mach-imx/pm-imx6q.c index ee42d20cba1..5faba7a3c95 100644 --- a/arch/arm/mach-imx/pm-imx6q.c +++ b/arch/arm/mach-imx/pm-imx6q.c @@ -22,8 +22,6 @@  #include "common.h"  #include "hardware.h" -extern unsigned long phys_l2x0_saved_regs; -  static int imx6q_suspend_finish(unsigned long val)  {  	cpu_do_idle(); @@ -57,18 +55,5 @@ static const struct platform_suspend_ops imx6q_pm_ops = {  void __init imx6q_pm_init(void)  { -	/* -	 * The l2x0 core code provides an infrastucture to save and restore -	 * l2x0 registers across suspend/resume cycle.  But because imx6q -	 * retains L2 content during suspend and needs to resume L2 before -	 * MMU is enabled, it can only utilize register saving support and -	 * have to take care of restoring on its own.  So we save physical -	 * address of the data structure used by l2x0 core to save registers, -	 * and later restore the necessary ones in imx6q resume entry. -	 */ -#ifdef CONFIG_CACHE_L2X0 -	phys_l2x0_saved_regs = __pa(&l2x0_saved_regs); -#endif -  	suspend_set_ops(&imx6q_pm_ops);  }  |