aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu.vizoso@collabora.com>2015-10-15 06:31:23 -0400
committerKukjin Kim <kgene@kernel.org>2015-10-23 15:31:18 -0400
commitb4dc272b60fd7b43ff5b9ef89714d38c65db2cdb (patch)
treeb764e97729c81e63a659b970ac8966c98479b7d9
parentb29dd5fa56141365ab7e72fd73e5e0e02d62dd6e (diff)
clk: samsung: exynos5250: Add DISP1 clocks
When the DISP1 power domain is powered off, there's two clocks that need to be temporarily reparented to OSC, and back to their original parents when the domain is powered on again. We expose these two clocks in the DT bindings so that the DT node of the power domain can reference them. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Acked-by: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Signed-off-by: Kukjin Kim <kgene@kernel.org>
-rw-r--r--drivers/clk/samsung/clk-exynos5250.c14
-rw-r--r--include/dt-bindings/clock/exynos5250.h4
2 files changed, 16 insertions, 2 deletions
diff --git a/drivers/clk/samsung/clk-exynos5250.c b/drivers/clk/samsung/clk-exynos5250.c
index 55b83c7ef878..5bebf8cb0d70 100644
--- a/drivers/clk/samsung/clk-exynos5250.c
+++ b/drivers/clk/samsung/clk-exynos5250.c
@@ -222,9 +222,13 @@ PNAME(mout_mpll_user_p) = { "fin_pll", "mout_mpll" };
222PNAME(mout_bpll_user_p) = { "fin_pll", "mout_bpll" }; 222PNAME(mout_bpll_user_p) = { "fin_pll", "mout_bpll" };
223PNAME(mout_aclk166_p) = { "mout_cpll", "mout_mpll_user" }; 223PNAME(mout_aclk166_p) = { "mout_cpll", "mout_mpll_user" };
224PNAME(mout_aclk200_p) = { "mout_mpll_user", "mout_bpll_user" }; 224PNAME(mout_aclk200_p) = { "mout_mpll_user", "mout_bpll_user" };
225PNAME(mout_aclk300_p) = { "mout_aclk300_disp1_mid",
226 "mout_aclk300_disp1_mid1" };
225PNAME(mout_aclk400_p) = { "mout_aclk400_g3d_mid", "mout_gpll" }; 227PNAME(mout_aclk400_p) = { "mout_aclk400_g3d_mid", "mout_gpll" };
226PNAME(mout_aclk200_sub_p) = { "fin_pll", "div_aclk200" }; 228PNAME(mout_aclk200_sub_p) = { "fin_pll", "div_aclk200" };
227PNAME(mout_aclk266_sub_p) = { "fin_pll", "div_aclk266" }; 229PNAME(mout_aclk266_sub_p) = { "fin_pll", "div_aclk266" };
230PNAME(mout_aclk300_sub_p) = { "fin_pll", "div_aclk300_disp" };
231PNAME(mout_aclk300_disp1_mid1_p) = { "mout_vpll", "mout_cpll" };
228PNAME(mout_aclk333_sub_p) = { "fin_pll", "div_aclk333" }; 232PNAME(mout_aclk333_sub_p) = { "fin_pll", "div_aclk333" };
229PNAME(mout_aclk400_isp_sub_p) = { "fin_pll", "div_aclk400_isp" }; 233PNAME(mout_aclk400_isp_sub_p) = { "fin_pll", "div_aclk400_isp" };
230PNAME(mout_hdmi_p) = { "div_hdmi_pixel", "sclk_hdmiphy" }; 234PNAME(mout_hdmi_p) = { "div_hdmi_pixel", "sclk_hdmiphy" };
@@ -303,9 +307,13 @@ static struct samsung_mux_clock exynos5250_mux_clks[] __initdata = {
303 */ 307 */
304 MUX(0, "mout_aclk166", mout_aclk166_p, SRC_TOP0, 8, 1), 308 MUX(0, "mout_aclk166", mout_aclk166_p, SRC_TOP0, 8, 1),
305 MUX(0, "mout_aclk200", mout_aclk200_p, SRC_TOP0, 12, 1), 309 MUX(0, "mout_aclk200", mout_aclk200_p, SRC_TOP0, 12, 1),
310 MUX(0, "mout_aclk300_disp1_mid", mout_aclk200_p, SRC_TOP0, 14, 1),
311 MUX(0, "mout_aclk300", mout_aclk300_p, SRC_TOP0, 15, 1),
306 MUX(0, "mout_aclk333", mout_aclk166_p, SRC_TOP0, 16, 1), 312 MUX(0, "mout_aclk333", mout_aclk166_p, SRC_TOP0, 16, 1),
307 MUX(0, "mout_aclk400_g3d_mid", mout_aclk200_p, SRC_TOP0, 20, 1), 313 MUX(0, "mout_aclk400_g3d_mid", mout_aclk200_p, SRC_TOP0, 20, 1),
308 314
315 MUX(0, "mout_aclk300_disp1_mid1", mout_aclk300_disp1_mid1_p, SRC_TOP1,
316 8, 1),
309 MUX(0, "mout_aclk400_isp", mout_aclk200_p, SRC_TOP1, 24, 1), 317 MUX(0, "mout_aclk400_isp", mout_aclk200_p, SRC_TOP1, 24, 1),
310 MUX(0, "mout_aclk400_g3d", mout_aclk400_p, SRC_TOP1, 28, 1), 318 MUX(0, "mout_aclk400_g3d", mout_aclk400_p, SRC_TOP1, 28, 1),
311 319
@@ -316,7 +324,10 @@ static struct samsung_mux_clock exynos5250_mux_clks[] __initdata = {
316 MUX(0, "mout_bpll_user", mout_bpll_user_p, SRC_TOP2, 24, 1), 324 MUX(0, "mout_bpll_user", mout_bpll_user_p, SRC_TOP2, 24, 1),
317 MUX(CLK_MOUT_GPLL, "mout_gpll", mout_gpll_p, SRC_TOP2, 28, 1), 325 MUX(CLK_MOUT_GPLL, "mout_gpll", mout_gpll_p, SRC_TOP2, 28, 1),
318 326
319 MUX(0, "mout_aclk200_disp1_sub", mout_aclk200_sub_p, SRC_TOP3, 4, 1), 327 MUX(CLK_MOUT_ACLK200_DISP1_SUB, "mout_aclk200_disp1_sub",
328 mout_aclk200_sub_p, SRC_TOP3, 4, 1),
329 MUX(CLK_MOUT_ACLK300_DISP1_SUB, "mout_aclk300_disp1_sub",
330 mout_aclk300_sub_p, SRC_TOP3, 6, 1),
320 MUX(0, "mout_aclk266_gscl_sub", mout_aclk266_sub_p, SRC_TOP3, 8, 1), 331 MUX(0, "mout_aclk266_gscl_sub", mout_aclk266_sub_p, SRC_TOP3, 8, 1),
321 MUX(0, "mout_aclk_266_isp_sub", mout_aclk266_sub_p, SRC_TOP3, 16, 1), 332 MUX(0, "mout_aclk_266_isp_sub", mout_aclk266_sub_p, SRC_TOP3, 16, 1),
322 MUX(0, "mout_aclk_400_isp_sub", mout_aclk400_isp_sub_p, 333 MUX(0, "mout_aclk_400_isp_sub", mout_aclk400_isp_sub_p,
@@ -392,6 +403,7 @@ static struct samsung_div_clock exynos5250_div_clks[] __initdata = {
392 DIV(0, "div_aclk333", "mout_aclk333", DIV_TOP0, 20, 3), 403 DIV(0, "div_aclk333", "mout_aclk333", DIV_TOP0, 20, 3),
393 DIV(0, "div_aclk400_g3d", "mout_aclk400_g3d", DIV_TOP0, 404 DIV(0, "div_aclk400_g3d", "mout_aclk400_g3d", DIV_TOP0,
394 24, 3), 405 24, 3),
406 DIV(0, "div_aclk300_disp", "mout_aclk300", DIV_TOP0, 28, 3),
395 407
396 DIV(0, "div_aclk400_isp", "mout_aclk400_isp", DIV_TOP1, 20, 3), 408 DIV(0, "div_aclk400_isp", "mout_aclk400_isp", DIV_TOP1, 20, 3),
397 DIV(0, "div_aclk66_pre", "mout_mpll_user", DIV_TOP1, 24, 3), 409 DIV(0, "div_aclk66_pre", "mout_mpll_user", DIV_TOP1, 24, 3),
diff --git a/include/dt-bindings/clock/exynos5250.h b/include/dt-bindings/clock/exynos5250.h
index 8183d1c237d9..15508adcdfde 100644
--- a/include/dt-bindings/clock/exynos5250.h
+++ b/include/dt-bindings/clock/exynos5250.h
@@ -173,8 +173,10 @@
173/* mux clocks */ 173/* mux clocks */
174#define CLK_MOUT_HDMI 1024 174#define CLK_MOUT_HDMI 1024
175#define CLK_MOUT_GPLL 1025 175#define CLK_MOUT_GPLL 1025
176#define CLK_MOUT_ACLK200_DISP1_SUB 1026
177#define CLK_MOUT_ACLK300_DISP1_SUB 1027
176 178
177/* must be greater than maximal clock id */ 179/* must be greater than maximal clock id */
178#define CLK_NR_CLKS 1026 180#define CLK_NR_CLKS 1028
179 181
180#endif /* _DT_BINDINGS_CLOCK_EXYNOS_5250_H */ 182#endif /* _DT_BINDINGS_CLOCK_EXYNOS_5250_H */