diff options
author | Anson Huang <Anson.Huang@nxp.com> | 2016-05-31 00:34:55 +0800 |
---|---|---|
committer | Leonard Crestez <leonard.crestez@nxp.com> | 2018-08-24 12:41:33 +0300 |
commit | 40bff27a27fb6c993953a1155b25603703c9833f (patch) | |
tree | 6d283855cb36cc840e1728c3730bcb6dc810a8bf | |
parent | b81a249c8bbeb2d62c14a2a0cbb406ea125666a5 (diff) |
MLK-12861-1 ARM: imx: support runtime clock management on i.mx7d when M4 is enabled
For i.MX7D, current runtime clock management code will skip all
PLL/PFD/GATE enable/disable when M4 is enabled, this is NOT good
for power number in low power idle and audio playback, as M4 only
uses one high speed PFD which is from system PLL, it is never
disabled runtimely, so we can just enable the hardware operation of
PLL/PFD/GATE for A7.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
(cherry picked from commit 02a2e8d73bcb8d2b8362b4328976dfcdc502a19c)
-rw-r--r-- | drivers/clk/imx/clk-gate2.c | 2 | ||||
-rw-r--r-- | drivers/clk/imx/clk-pfd.c | 2 | ||||
-rw-r--r-- | drivers/clk/imx/clk-pllv3.c | 2 | ||||
-rw-r--r-- | drivers/clk/imx/clk.h | 5 |
4 files changed, 8 insertions, 3 deletions
diff --git a/drivers/clk/imx/clk-gate2.c b/drivers/clk/imx/clk-gate2.c index effcd482b82c..b9bd5938d44a 100644 --- a/drivers/clk/imx/clk-gate2.c +++ b/drivers/clk/imx/clk-gate2.c @@ -59,7 +59,7 @@ static void clk_gate2_do_shared_clks(struct clk_hw *hw, bool enable) { struct clk_gate2 *gate = to_clk_gate2(hw); - if (imx_src_is_m4_enabled()) { + if (imx_src_is_m4_enabled() && clk_on_imx6sx()) { #ifdef CONFIG_SOC_IMX6SX if (!amp_power_mutex || !shared_mem) { if (enable) diff --git a/drivers/clk/imx/clk-pfd.c b/drivers/clk/imx/clk-pfd.c index 613a0d521f81..e29bd792522f 100644 --- a/drivers/clk/imx/clk-pfd.c +++ b/drivers/clk/imx/clk-pfd.c @@ -53,7 +53,7 @@ static void clk_pfd_do_shared_clks(struct clk_hw *hw, bool enable) { struct clk_pfd *pfd = to_clk_pfd(hw); - if (imx_src_is_m4_enabled()) { + if (imx_src_is_m4_enabled() && clk_on_imx6sx()) { #ifdef CONFIG_SOC_IMX6SX if (!amp_power_mutex || !shared_mem) { if (enable) diff --git a/drivers/clk/imx/clk-pllv3.c b/drivers/clk/imx/clk-pllv3.c index fff7e72108ac..764cea13b3f9 100644 --- a/drivers/clk/imx/clk-pllv3.c +++ b/drivers/clk/imx/clk-pllv3.c @@ -106,7 +106,7 @@ static int clk_pllv3_do_hardware(struct clk_hw *hw, bool enable) static void clk_pllv3_do_shared_clks(struct clk_hw *hw, bool enable) { - if (imx_src_is_m4_enabled()) { + if (imx_src_is_m4_enabled() && clk_on_imx6sx()) { #ifdef CONFIG_SOC_IMX6SX if (!amp_power_mutex || !shared_mem) { if (enable) diff --git a/drivers/clk/imx/clk.h b/drivers/clk/imx/clk.h index f7b2c2327aaa..2150b6dddea7 100644 --- a/drivers/clk/imx/clk.h +++ b/drivers/clk/imx/clk.h @@ -306,4 +306,9 @@ struct clk *imx_clk_cpu(const char *name, const char *parent_name, int imx_update_shared_mem(struct clk_hw *hw, bool enable); +static inline int clk_on_imx6sx(void) +{ + return of_machine_is_compatible("fsl,imx6sx"); +} + #endif |