提交 aa96a18d 编写于 作者: R Robert Lee 提交者: Sascha Hauer

ARM: imx: Enable imx53 low power idle

Add various functionality needed to enable a imx53 low power idle
state.  This includes adding the imx53 gpc_dvfs clock and making a
common imx5_late_init function and initializing all imx53
 MACHINE_STATE late_init calls to imx5_late_init.
Signed-off-by: NRobert Lee <rob.lee@linaro.org>
Signed-off-by: NSascha Hauer <s.hauer@pengutronix.de>
上级 565fa91f
...@@ -279,6 +279,7 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil, ...@@ -279,6 +279,7 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil,
clk_register_clkdev(clk[dummy], NULL, "imx-keypad"); clk_register_clkdev(clk[dummy], NULL, "imx-keypad");
clk_register_clkdev(clk[tve_gate], NULL, "imx-tve.0"); clk_register_clkdev(clk[tve_gate], NULL, "imx-tve.0");
clk_register_clkdev(clk[ipu_di1_gate], "di1", "imx-tve.0"); clk_register_clkdev(clk[ipu_di1_gate], "di1", "imx-tve.0");
clk_register_clkdev(clk[gpc_dvfs], "gpc_dvfs", NULL);
/* Set SDHC parents to be PLL2 */ /* Set SDHC parents to be PLL2 */
clk_set_parent(clk[esdhc_a_sel], clk[pll2_sw]); clk_set_parent(clk[esdhc_a_sel], clk[pll2_sw]);
...@@ -336,7 +337,6 @@ int __init mx51_clocks_init(unsigned long rate_ckil, unsigned long rate_osc, ...@@ -336,7 +337,6 @@ int __init mx51_clocks_init(unsigned long rate_ckil, unsigned long rate_osc,
clk_register_clkdev(clk[mx51_mipi], "mipi_hsp", NULL); clk_register_clkdev(clk[mx51_mipi], "mipi_hsp", NULL);
clk_register_clkdev(clk[vpu_gate], NULL, "imx51-vpu.0"); clk_register_clkdev(clk[vpu_gate], NULL, "imx51-vpu.0");
clk_register_clkdev(clk[fec_gate], NULL, "imx27-fec.0"); clk_register_clkdev(clk[fec_gate], NULL, "imx27-fec.0");
clk_register_clkdev(clk[gpc_dvfs], "gpc_dvfs", NULL);
clk_register_clkdev(clk[ipu_gate], "bus", "imx51-ipu"); clk_register_clkdev(clk[ipu_gate], "bus", "imx51-ipu");
clk_register_clkdev(clk[ipu_di0_gate], "di0", "imx51-ipu"); clk_register_clkdev(clk[ipu_di0_gate], "di0", "imx51-ipu");
clk_register_clkdev(clk[ipu_di1_gate], "di1", "imx51-ipu"); clk_register_clkdev(clk[ipu_di1_gate], "di1", "imx51-ipu");
......
...@@ -147,6 +147,7 @@ DT_MACHINE_START(IMX53_DT, "Freescale i.MX53 (Device Tree Support)") ...@@ -147,6 +147,7 @@ DT_MACHINE_START(IMX53_DT, "Freescale i.MX53 (Device Tree Support)")
.handle_irq = imx53_handle_irq, .handle_irq = imx53_handle_irq,
.timer = &imx53_timer, .timer = &imx53_timer,
.init_machine = imx53_dt_init, .init_machine = imx53_dt_init,
.init_late = imx53_init_late,
.dt_compat = imx53_dt_board_compat, .dt_compat = imx53_dt_board_compat,
.restart = mxc_restart, .restart = mxc_restart,
MACHINE_END MACHINE_END
...@@ -266,5 +266,6 @@ MACHINE_START(MX53_ARD, "Freescale MX53 ARD Board") ...@@ -266,5 +266,6 @@ MACHINE_START(MX53_ARD, "Freescale MX53 ARD Board")
.handle_irq = imx53_handle_irq, .handle_irq = imx53_handle_irq,
.timer = &mx53_ard_timer, .timer = &mx53_ard_timer,
.init_machine = mx53_ard_board_init, .init_machine = mx53_ard_board_init,
.init_late = imx53_init_late,
.restart = mxc_restart, .restart = mxc_restart,
MACHINE_END MACHINE_END
...@@ -174,5 +174,6 @@ MACHINE_START(MX53_EVK, "Freescale MX53 EVK Board") ...@@ -174,5 +174,6 @@ MACHINE_START(MX53_EVK, "Freescale MX53 EVK Board")
.handle_irq = imx53_handle_irq, .handle_irq = imx53_handle_irq,
.timer = &mx53_evk_timer, .timer = &mx53_evk_timer,
.init_machine = mx53_evk_board_init, .init_machine = mx53_evk_board_init,
.init_late = imx53_init_late,
.restart = mxc_restart, .restart = mxc_restart,
MACHINE_END MACHINE_END
...@@ -316,5 +316,6 @@ MACHINE_START(MX53_LOCO, "Freescale MX53 LOCO Board") ...@@ -316,5 +316,6 @@ MACHINE_START(MX53_LOCO, "Freescale MX53 LOCO Board")
.handle_irq = imx53_handle_irq, .handle_irq = imx53_handle_irq,
.timer = &mx53_loco_timer, .timer = &mx53_loco_timer,
.init_machine = mx53_loco_board_init, .init_machine = mx53_loco_board_init,
.init_late = imx53_init_late,
.restart = mxc_restart, .restart = mxc_restart,
MACHINE_END MACHINE_END
...@@ -163,5 +163,6 @@ MACHINE_START(MX53_SMD, "Freescale MX53 SMD Board") ...@@ -163,5 +163,6 @@ MACHINE_START(MX53_SMD, "Freescale MX53 SMD Board")
.handle_irq = imx53_handle_irq, .handle_irq = imx53_handle_irq,
.timer = &mx53_smd_timer, .timer = &mx53_smd_timer,
.init_machine = mx53_smd_board_init, .init_machine = mx53_smd_board_init,
.init_late = imx53_init_late,
.restart = mxc_restart, .restart = mxc_restart,
MACHINE_END MACHINE_END
...@@ -223,3 +223,8 @@ void __init imx51_init_late(void) ...@@ -223,3 +223,8 @@ void __init imx51_init_late(void)
mx51_neon_fixup(); mx51_neon_fixup();
imx51_pm_init(); imx51_pm_init();
} }
void __init imx53_init_late(void)
{
imx53_pm_init();
}
...@@ -166,3 +166,8 @@ void __init imx51_pm_init(void) ...@@ -166,3 +166,8 @@ void __init imx51_pm_init(void)
if (!ret) if (!ret)
suspend_set_ops(&mx5_suspend_ops); suspend_set_ops(&mx5_suspend_ops);
} }
void __init imx53_pm_init(void)
{
imx5_pm_common_init();
}
...@@ -54,6 +54,7 @@ extern void imx50_soc_init(void); ...@@ -54,6 +54,7 @@ extern void imx50_soc_init(void);
extern void imx51_soc_init(void); extern void imx51_soc_init(void);
extern void imx53_soc_init(void); extern void imx53_soc_init(void);
extern void imx51_init_late(void); extern void imx51_init_late(void);
extern void imx53_init_late(void);
extern void epit_timer_init(struct clk *timer_clk, void __iomem *base, int irq); extern void epit_timer_init(struct clk *timer_clk, void __iomem *base, int irq);
extern void mxc_timer_init(struct clk *timer_clk, void __iomem *, int); extern void mxc_timer_init(struct clk *timer_clk, void __iomem *, int);
extern int mx1_clocks_init(unsigned long fref); extern int mx1_clocks_init(unsigned long fref);
...@@ -146,9 +147,11 @@ extern void imx6q_clock_map_io(void); ...@@ -146,9 +147,11 @@ extern void imx6q_clock_map_io(void);
#ifdef CONFIG_PM #ifdef CONFIG_PM
extern void imx6q_pm_init(void); extern void imx6q_pm_init(void);
extern void imx51_pm_init(void); extern void imx51_pm_init(void);
extern void imx53_pm_init(void);
#else #else
static inline void imx6q_pm_init(void) {} static inline void imx6q_pm_init(void) {}
static inline void imx51_pm_init(void) {} static inline void imx51_pm_init(void) {}
static inline void imx53_pm_init(void) {}
#endif #endif
#ifdef CONFIG_NEON #ifdef CONFIG_NEON
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册