summaryrefslogtreecommitdiff
path: root/drivers/clk
diff options
context:
space:
mode:
authorAnson Huang <b20788@freescale.com>2014-10-20 16:16:20 +0800
committerOctavian Purdila <octavian.purdila@nxp.com>2017-02-23 14:21:42 +0200
commit816978f83b1d8dd6ce3bd5dd62223dbfdf74bdd3 (patch)
treed8b365e343cbf5080afaa6e414968d931cc341d4 /drivers/clk
parent1e3e0b4d9babd974e7d79f581f465d3a6effbfc2 (diff)
MLK-9708 arm: imx: add low power idle support for i.mx6sx
Enable low power idle for i.MX6SX: WFI -> first level idle; WAIT mode -> second level idle; Low power idle -> third level idle, only when system is in low bus mode. In low powe idle mode, below operations will be done: ARM power off; AHB freq lower to 3MHz; PERCLK freq lower to 6MHz; MMDC freq lower to 1MHz; Anatop will be put into low power mode, and regular band-gap will be off and low power band-gap will be enabled instead. Also, in low power idle mode, 24MHz XTAL power will be off and 24MHz clk source will be switched to RC-OSC to save power, this feature is only enabled on i.MX6SX TO1.2. This patch is cherry-picked from L3.14.y, it is the latest version, below conflicts are fixed. Signed-off-by: Anson Huang <b20788@freescale.com> Conflicts: arch/arm/mach-imx/Makefile arch/arm/mach-imx/common.h arch/arm/mach-imx/cpuidle-imx6sx.c arch/arm/mach-imx/cpuidle.h arch/arm/mach-imx/mach-imx6sx.c arch/arm/mach-imx/pm-imx6.c
Diffstat (limited to 'drivers/clk')
-rw-r--r--drivers/clk/imx/clk-imx6sx.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/clk/imx/clk-imx6sx.c b/drivers/clk/imx/clk-imx6sx.c
index 890b29237af2..e045ca91a680 100644
--- a/drivers/clk/imx/clk-imx6sx.c
+++ b/drivers/clk/imx/clk-imx6sx.c
@@ -503,6 +503,8 @@ static void __init imx6sx_clocks_init(struct device_node *ccm_node)
clk_data.clk_num = ARRAY_SIZE(clks);
of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
+ clk_set_parent(clks[IMX6SX_CLK_PERCLK_SEL], clks[IMX6SX_CLK_OSC]);
+
for (i = 0; i < ARRAY_SIZE(clks_init_on); i++)
clk_prepare_enable(clks[clks_init_on[i]]);