diff options
author | Stefan Agner <stefan@agner.ch> | 2016-03-09 21:16:48 -0500 |
---|---|---|
committer | Shawn Guo <shawnguo@kernel.org> | 2016-03-31 05:01:58 -0400 |
commit | 0da15d36a90f405541773e884b3264e0f94debd3 (patch) | |
tree | 98503df06ed250f4277bb4bf3437fe37829125dc | |
parent | 456829228f96702ca281b65e11d11e8c09ca9da0 (diff) |
clk: imx: vf610: leave DDR clock on
To use STOP mode without putting DDR3 into self-refresh mode, we
need to keep the DDR clock enabled. Use the new gate configuration
with a value of 2 to make sure that the clock is enabled in RUN,
WAIT and STOP mode.
Signed-off-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
-rw-r--r-- | drivers/clk/imx/clk-vf610.c | 3 | ||||
-rw-r--r-- | include/dt-bindings/clock/vf610-clock.h | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/drivers/clk/imx/clk-vf610.c b/drivers/clk/imx/clk-vf610.c index 0a94d9661d91..f0ff45811e76 100644 --- a/drivers/clk/imx/clk-vf610.c +++ b/drivers/clk/imx/clk-vf610.c | |||
@@ -119,6 +119,7 @@ static unsigned int const clks_init_on[] __initconst = { | |||
119 | VF610_CLK_SYS_BUS, | 119 | VF610_CLK_SYS_BUS, |
120 | VF610_CLK_DDR_SEL, | 120 | VF610_CLK_DDR_SEL, |
121 | VF610_CLK_DAP, | 121 | VF610_CLK_DAP, |
122 | VF610_CLK_DDRMC, | ||
122 | }; | 123 | }; |
123 | 124 | ||
124 | static struct clk * __init vf610_get_fixed_clock( | 125 | static struct clk * __init vf610_get_fixed_clock( |
@@ -233,6 +234,8 @@ static void __init vf610_clocks_init(struct device_node *ccm_node) | |||
233 | clk[VF610_CLK_PLL4_MAIN_DIV] = clk_register_divider_table(NULL, "pll4_audio_div", "pll4_audio", 0, CCM_CACRR, 6, 3, 0, pll4_audio_div_table, &imx_ccm_lock); | 234 | clk[VF610_CLK_PLL4_MAIN_DIV] = clk_register_divider_table(NULL, "pll4_audio_div", "pll4_audio", 0, CCM_CACRR, 6, 3, 0, pll4_audio_div_table, &imx_ccm_lock); |
234 | clk[VF610_CLK_PLL6_MAIN_DIV] = imx_clk_divider("pll6_video_div", "pll6_video", CCM_CACRR, 21, 1); | 235 | clk[VF610_CLK_PLL6_MAIN_DIV] = imx_clk_divider("pll6_video_div", "pll6_video", CCM_CACRR, 21, 1); |
235 | 236 | ||
237 | clk[VF610_CLK_DDRMC] = imx_clk_gate2_cgr("ddrmc", "ddr_sel", CCM_CCGR6, CCM_CCGRx_CGn(14), 0x2); | ||
238 | |||
236 | clk[VF610_CLK_USBPHY0] = imx_clk_gate("usbphy0", "pll3_usb_otg", PLL3_CTRL, 6); | 239 | clk[VF610_CLK_USBPHY0] = imx_clk_gate("usbphy0", "pll3_usb_otg", PLL3_CTRL, 6); |
237 | clk[VF610_CLK_USBPHY1] = imx_clk_gate("usbphy1", "pll7_usb_host", PLL7_CTRL, 6); | 240 | clk[VF610_CLK_USBPHY1] = imx_clk_gate("usbphy1", "pll7_usb_host", PLL7_CTRL, 6); |
238 | 241 | ||
diff --git a/include/dt-bindings/clock/vf610-clock.h b/include/dt-bindings/clock/vf610-clock.h index 56c16aaea112..cf2c00a06d10 100644 --- a/include/dt-bindings/clock/vf610-clock.h +++ b/include/dt-bindings/clock/vf610-clock.h | |||
@@ -195,6 +195,7 @@ | |||
195 | #define VF610_CLK_SNVS 182 | 195 | #define VF610_CLK_SNVS 182 |
196 | #define VF610_CLK_DAP 183 | 196 | #define VF610_CLK_DAP 183 |
197 | #define VF610_CLK_OCOTP 184 | 197 | #define VF610_CLK_OCOTP 184 |
198 | #define VF610_CLK_END 185 | 198 | #define VF610_CLK_DDRMC 185 |
199 | #define VF610_CLK_END 186 | ||
199 | 200 | ||
200 | #endif /* __DT_BINDINGS_CLOCK_VF610_H */ | 201 | #endif /* __DT_BINDINGS_CLOCK_VF610_H */ |