aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk/samsung
diff options
context:
space:
mode:
authorShaik Ameer Basha <shaik.ameer@samsung.com>2014-05-08 07:27:55 -0400
committerTomasz Figa <t.figa@samsung.com>2014-05-14 13:40:19 -0400
commit424b673a0557693fdc2ac6cff5289153d6fb8903 (patch)
treeb4a8dbcb638769df449c8735407fc1ee347d5ed1 /drivers/clk/samsung
parent3fac5941da6c3afacabf3cc01914583e5689622b (diff)
clk: samsung: exynos5420: update clocks for DISP1 block
This patch corrects some child-parent clock relationships, and updates the clocks according to the latest datasheet. Signed-off-by: Rahul Sharma <rahul.sharma@samsung.com> Signed-off-by: Shaik Ameer Basha <shaik.ameer@samsung.com> Signed-off-by: Tomasz Figa <t.figa@samsung.com>
Diffstat (limited to 'drivers/clk/samsung')
-rw-r--r--drivers/clk/samsung/clk-exynos5420.c56
1 files changed, 39 insertions, 17 deletions
diff --git a/drivers/clk/samsung/clk-exynos5420.c b/drivers/clk/samsung/clk-exynos5420.c
index e263b7be5059..32d16f5cff53 100644
--- a/drivers/clk/samsung/clk-exynos5420.c
+++ b/drivers/clk/samsung/clk-exynos5420.c
@@ -61,7 +61,8 @@
61#define SRC_TOP10 0x10280 61#define SRC_TOP10 0x10280
62#define SRC_TOP11 0x10284 62#define SRC_TOP11 0x10284
63#define SRC_TOP12 0x10288 63#define SRC_TOP12 0x10288
64#define SRC_MASK_DISP10 0x1032c 64#define SRC_MASK_TOP2 0x10308
65#define SRC_MASK_DISP10 0x1032c
65#define SRC_MASK_FSYS 0x10340 66#define SRC_MASK_FSYS 0x10340
66#define SRC_MASK_PERIC0 0x10350 67#define SRC_MASK_PERIC0 0x10350
67#define SRC_MASK_PERIC1 0x10354 68#define SRC_MASK_PERIC1 0x10354
@@ -100,6 +101,7 @@
100#define GATE_TOP_SCLK_MAU 0x1083c 101#define GATE_TOP_SCLK_MAU 0x1083c
101#define GATE_TOP_SCLK_FSYS 0x10840 102#define GATE_TOP_SCLK_FSYS 0x10840
102#define GATE_TOP_SCLK_PERIC 0x10850 103#define GATE_TOP_SCLK_PERIC 0x10850
104#define TOP_SPARE2 0x10b08
103#define BPLL_LOCK 0x20010 105#define BPLL_LOCK 0x20010
104#define BPLL_CON0 0x20110 106#define BPLL_CON0 0x20110
105#define SRC_CDREX 0x20200 107#define SRC_CDREX 0x20200
@@ -146,6 +148,7 @@ static unsigned long exynos5420_clk_regs[] __initdata = {
146 SRC_TOP10, 148 SRC_TOP10,
147 SRC_TOP11, 149 SRC_TOP11,
148 SRC_TOP12, 150 SRC_TOP12,
151 SRC_MASK_TOP2,
149 SRC_MASK_DISP10, 152 SRC_MASK_DISP10,
150 SRC_MASK_FSYS, 153 SRC_MASK_FSYS,
151 SRC_MASK_PERIC0, 154 SRC_MASK_PERIC0,
@@ -186,6 +189,7 @@ static unsigned long exynos5420_clk_regs[] __initdata = {
186 GATE_TOP_SCLK_MAU, 189 GATE_TOP_SCLK_MAU,
187 GATE_TOP_SCLK_FSYS, 190 GATE_TOP_SCLK_FSYS,
188 GATE_TOP_SCLK_PERIC, 191 GATE_TOP_SCLK_PERIC,
192 TOP_SPARE2,
189 SRC_CDREX, 193 SRC_CDREX,
190 SRC_KFC, 194 SRC_KFC,
191 DIV_KFC0, 195 DIV_KFC0,
@@ -252,6 +256,7 @@ PNAME(mout_group3_p) = {"mout_sclk_rpll", "mout_sclk_spll"};
252PNAME(mout_group4_p) = {"mout_sclk_ipll", "mout_sclk_dpll", "mout_sclk_mpll"}; 256PNAME(mout_group4_p) = {"mout_sclk_ipll", "mout_sclk_dpll", "mout_sclk_mpll"};
253PNAME(mout_group5_p) = {"mout_sclk_vpll", "mout_sclk_dpll"}; 257PNAME(mout_group5_p) = {"mout_sclk_vpll", "mout_sclk_dpll"};
254 258
259PNAME(mout_fimd1_final_p) = {"mout_fimd1", "mout_fimd1_opt"};
255PNAME(mout_sw_aclk66_p) = {"dout_aclk66", "mout_sclk_spll"}; 260PNAME(mout_sw_aclk66_p) = {"dout_aclk66", "mout_sclk_spll"};
256PNAME(mout_aclk66_peric_p) = { "fin_pll", "mout_sw_aclk66" }; 261PNAME(mout_aclk66_peric_p) = { "fin_pll", "mout_sw_aclk66" };
257 262
@@ -271,7 +276,7 @@ PNAME(mout_sw_aclk333_432_isp_p) = {"dout_aclk333_432_isp", "mout_sclk_spll"};
271PNAME(mout_user_aclk333_432_isp_p) = {"fin_pll", "mout_sw_aclk333_432_isp"}; 276PNAME(mout_user_aclk333_432_isp_p) = {"fin_pll", "mout_sw_aclk333_432_isp"};
272 277
273PNAME(mout_sw_aclk200_p) = {"dout_aclk200", "mout_sclk_spll"}; 278PNAME(mout_sw_aclk200_p) = {"dout_aclk200", "mout_sclk_spll"};
274PNAME(mout_aclk200_disp1_p) = {"fin_pll", "mout_sw_aclk200"}; 279PNAME(mout_user_aclk200_disp1_p) = {"fin_pll", "mout_sw_aclk200"};
275 280
276PNAME(mout_sw_aclk400_mscl_p) = {"dout_aclk400_mscl", "mout_sclk_spll"}; 281PNAME(mout_sw_aclk400_mscl_p) = {"dout_aclk400_mscl", "mout_sclk_spll"};
277PNAME(mout_user_aclk400_mscl_p) = {"fin_pll", "mout_sw_aclk400_mscl"}; 282PNAME(mout_user_aclk400_mscl_p) = {"fin_pll", "mout_sw_aclk400_mscl"};
@@ -293,7 +298,9 @@ PNAME(mout_sw_aclk300_gscl_p) = {"dout_aclk300_gscl", "mout_sclk_spll"};
293PNAME(mout_user_aclk300_gscl_p) = {"fin_pll", "mout_sw_aclk300_gscl"}; 298PNAME(mout_user_aclk300_gscl_p) = {"fin_pll", "mout_sw_aclk300_gscl"};
294 299
295PNAME(mout_sw_aclk300_disp1_p) = {"dout_aclk300_disp1", "mout_sclk_spll"}; 300PNAME(mout_sw_aclk300_disp1_p) = {"dout_aclk300_disp1", "mout_sclk_spll"};
301PNAME(mout_sw_aclk400_disp1_p) = {"dout_aclk400_disp1", "mout_sclk_spll"};
296PNAME(mout_user_aclk300_disp1_p) = {"fin_pll", "mout_sw_aclk300_disp1"}; 302PNAME(mout_user_aclk300_disp1_p) = {"fin_pll", "mout_sw_aclk300_disp1"};
303PNAME(mout_user_aclk400_disp1_p) = {"fin_pll", "mout_sw_aclk400_disp1"};
297 304
298PNAME(mout_sw_aclk300_jpeg_p) = {"dout_aclk300_jpeg", "mout_sclk_spll"}; 305PNAME(mout_sw_aclk300_jpeg_p) = {"dout_aclk300_jpeg", "mout_sclk_spll"};
299PNAME(mout_user_aclk300_jpeg_p) = {"fin_pll", "mout_sw_aclk300_jpeg"}; 306PNAME(mout_user_aclk300_jpeg_p) = {"fin_pll", "mout_sw_aclk300_jpeg"};
@@ -368,6 +375,7 @@ static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = {
368 MUX(0, "mout_aclk166", mout_group1_p, SRC_TOP1, 24, 2), 375 MUX(0, "mout_aclk166", mout_group1_p, SRC_TOP1, 24, 2),
369 MUX(0, "mout_aclk333", mout_group1_p, SRC_TOP1, 28, 2), 376 MUX(0, "mout_aclk333", mout_group1_p, SRC_TOP1, 28, 2),
370 377
378 MUX(0, "mout_aclk400_disp1", mout_group1_p, SRC_TOP2, 4, 2),
371 MUX(0, "mout_aclk333_g2d", mout_group1_p, SRC_TOP2, 8, 2), 379 MUX(0, "mout_aclk333_g2d", mout_group1_p, SRC_TOP2, 8, 2),
372 MUX(0, "mout_aclk266_g2d", mout_group1_p, SRC_TOP2, 12, 2), 380 MUX(0, "mout_aclk266_g2d", mout_group1_p, SRC_TOP2, 12, 2),
373 MUX(0, "mout_aclk_g3d", mout_group5_p, SRC_TOP2, 16, 1), 381 MUX(0, "mout_aclk_g3d", mout_group5_p, SRC_TOP2, 16, 1),
@@ -379,7 +387,8 @@ static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = {
379 SRC_TOP3, 0, 1), 387 SRC_TOP3, 0, 1),
380 MUX(0, "mout_user_aclk400_mscl", mout_user_aclk400_mscl_p, 388 MUX(0, "mout_user_aclk400_mscl", mout_user_aclk400_mscl_p,
381 SRC_TOP3, 4, 1), 389 SRC_TOP3, 4, 1),
382 MUX(0, "mout_aclk200_disp1", mout_aclk200_disp1_p, SRC_TOP3, 8, 1), 390 MUX(0, "mout_user_aclk200_disp1", mout_user_aclk200_disp1_p,
391 SRC_TOP3, 8, 1),
383 MUX(0, "mout_user_aclk200_fsys2", mout_user_aclk200_fsys2_p, 392 MUX(0, "mout_user_aclk200_fsys2", mout_user_aclk200_fsys2_p,
384 SRC_TOP3, 12, 1), 393 SRC_TOP3, 12, 1),
385 MUX(0, "mout_user_aclk200_fsys", mout_user_aclk200_fsys_p, 394 MUX(0, "mout_user_aclk200_fsys", mout_user_aclk200_fsys_p,
@@ -398,6 +407,8 @@ static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = {
398 MUX(0, "mout_user_aclk166", mout_user_aclk166_p, SRC_TOP4, 24, 1), 407 MUX(0, "mout_user_aclk166", mout_user_aclk166_p, SRC_TOP4, 24, 1),
399 MUX(0, "mout_user_aclk333", mout_user_aclk333_p, SRC_TOP4, 28, 1), 408 MUX(0, "mout_user_aclk333", mout_user_aclk333_p, SRC_TOP4, 28, 1),
400 409
410 MUX(0, "mout_user_aclk400_disp1", mout_user_aclk400_disp1_p,
411 SRC_TOP5, 0, 1),
401 MUX(0, "mout_aclk66_psgen", mout_aclk66_peric_p, SRC_TOP5, 4, 1), 412 MUX(0, "mout_aclk66_psgen", mout_aclk66_peric_p, SRC_TOP5, 4, 1),
402 MUX(0, "mout_user_aclk333_g2d", mout_user_aclk333_g2d_p, 413 MUX(0, "mout_user_aclk333_g2d", mout_user_aclk333_g2d_p,
403 SRC_TOP5, 8, 1), 414 SRC_TOP5, 8, 1),
@@ -442,6 +453,8 @@ static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = {
442 MUX(0, "mout_sw_aclk166", mout_sw_aclk166_p, SRC_TOP11, 24, 1), 453 MUX(0, "mout_sw_aclk166", mout_sw_aclk166_p, SRC_TOP11, 24, 1),
443 MUX(0, "mout_sw_aclk333", mout_sw_aclk333_p, SRC_TOP11, 28, 1), 454 MUX(0, "mout_sw_aclk333", mout_sw_aclk333_p, SRC_TOP11, 28, 1),
444 455
456 MUX(0, "mout_sw_aclk400_disp1", mout_sw_aclk400_disp1_p,
457 SRC_TOP12, 4, 1),
445 MUX(0, "mout_sw_aclk333_g2d", mout_sw_aclk333_g2d_p, 458 MUX(0, "mout_sw_aclk333_g2d", mout_sw_aclk333_g2d_p,
446 SRC_TOP12, 8, 1), 459 SRC_TOP12, 8, 1),
447 MUX(0, "mout_sw_aclk266_g2d", mout_sw_aclk266_g2d_p, 460 MUX(0, "mout_sw_aclk266_g2d", mout_sw_aclk266_g2d_p,
@@ -460,6 +473,8 @@ static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = {
460 MUX(0, "mout_dp1", mout_group2_p, SRC_DISP10, 20, 3), 473 MUX(0, "mout_dp1", mout_group2_p, SRC_DISP10, 20, 3),
461 MUX(0, "mout_pixel", mout_group2_p, SRC_DISP10, 24, 3), 474 MUX(0, "mout_pixel", mout_group2_p, SRC_DISP10, 24, 3),
462 MUX(CLK_MOUT_HDMI, "mout_hdmi", mout_hdmi_p, SRC_DISP10, 28, 1), 475 MUX(CLK_MOUT_HDMI, "mout_hdmi", mout_hdmi_p, SRC_DISP10, 28, 1),
476 MUX(0, "mout_fimd1_opt", mout_group2_p, SRC_DISP10, 8, 3),
477 MUX(0, "mout_fimd1_final", mout_fimd1_final_p, TOP_SPARE2, 8, 1),
463 478
464 /* MAU Block */ 479 /* MAU Block */
465 MUX(0, "mout_maudio0", mout_maudio0_p, SRC_MAU, 28, 3), 480 MUX(0, "mout_maudio0", mout_maudio0_p, SRC_MAU, 28, 3),
@@ -523,15 +538,16 @@ static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
523 DIV(0, "dout_aclk266_g2d", "mout_aclk266_g2d", DIV_TOP2, 12, 3), 538 DIV(0, "dout_aclk266_g2d", "mout_aclk266_g2d", DIV_TOP2, 12, 3),
524 DIV(0, "dout_aclk_g3d", "mout_aclk_g3d", DIV_TOP2, 16, 3), 539 DIV(0, "dout_aclk_g3d", "mout_aclk_g3d", DIV_TOP2, 16, 3),
525 DIV(0, "dout_aclk300_jpeg", "mout_aclk300_jpeg", DIV_TOP2, 20, 3), 540 DIV(0, "dout_aclk300_jpeg", "mout_aclk300_jpeg", DIV_TOP2, 20, 3),
526 DIV_A(0, "dout_aclk300_disp1", "mout_aclk300_disp1", 541 DIV(0, "dout_aclk300_disp1", "mout_aclk300_disp1", DIV_TOP2, 24, 3),
527 DIV_TOP2, 24, 3, "aclk300_disp1"),
528 DIV(0, "dout_aclk300_gscl", "mout_aclk300_gscl", DIV_TOP2, 28, 3), 542 DIV(0, "dout_aclk300_gscl", "mout_aclk300_gscl", DIV_TOP2, 28, 3),
529 543
530 /* DISP1 Block */ 544 /* DISP1 Block */
531 DIV(0, "dout_fimd1", "mout_fimd1", DIV_DISP10, 0, 4), 545 DIV(0, "dout_fimd1", "mout_fimd1_final", DIV_DISP10, 0, 4),
532 DIV(0, "dout_mipi1", "mout_mipi1", DIV_DISP10, 16, 8), 546 DIV(0, "dout_mipi1", "mout_mipi1", DIV_DISP10, 16, 8),
533 DIV(0, "dout_dp1", "mout_dp1", DIV_DISP10, 24, 4), 547 DIV(0, "dout_dp1", "mout_dp1", DIV_DISP10, 24, 4),
534 DIV(CLK_DOUT_PIXEL, "dout_hdmi_pixel", "mout_pixel", DIV_DISP10, 28, 4), 548 DIV(CLK_DOUT_PIXEL, "dout_hdmi_pixel", "mout_pixel", DIV_DISP10, 28, 4),
549 DIV(0, "dout_disp1_blk", "aclk200_disp1", DIV2_RATIO0, 16, 2),
550 DIV(0, "dout_aclk400_disp1", "mout_aclk400_disp1", DIV_TOP2, 4, 3),
535 551
536 /* Audio Block */ 552 /* Audio Block */
537 DIV(0, "dout_maudio0", "mout_maudio0", DIV_MAU, 20, 4), 553 DIV(0, "dout_maudio0", "mout_maudio0", DIV_MAU, 20, 4),
@@ -647,6 +663,11 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
647 GATE_BUS_TOP, 16, 0, 0), 663 GATE_BUS_TOP, 16, 0, 0),
648 GATE(0, "aclk400_mscl", "mout_user_aclk400_mscl", 664 GATE(0, "aclk400_mscl", "mout_user_aclk400_mscl",
649 GATE_BUS_TOP, 17, 0, 0), 665 GATE_BUS_TOP, 17, 0, 0),
666 GATE(0, "aclk200_disp1", "mout_user_aclk200_disp1",
667 GATE_BUS_TOP, 18, 0, 0),
668
669 GATE(0, "aclk300_disp1", "mout_user_aclk300_disp1",
670 SRC_MASK_TOP2, 24, 0, 0),
650 671
651 /* sclk */ 672 /* sclk */
652 GATE(CLK_SCLK_UART0, "sclk_uart0", "dout_uart0", 673 GATE(CLK_SCLK_UART0, "sclk_uart0", "dout_uart0",
@@ -696,15 +717,15 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
696 717
697 /* Display */ 718 /* Display */
698 GATE(CLK_SCLK_FIMD1, "sclk_fimd1", "dout_fimd1", 719 GATE(CLK_SCLK_FIMD1, "sclk_fimd1", "dout_fimd1",
699 GATE_TOP_SCLK_DISP1, 0, CLK_SET_RATE_PARENT, 0), 720 GATE_TOP_SCLK_DISP1, 0, CLK_SET_RATE_PARENT, 0),
700 GATE(CLK_SCLK_MIPI1, "sclk_mipi1", "dout_mipi1", 721 GATE(CLK_SCLK_MIPI1, "sclk_mipi1", "dout_mipi1",
701 GATE_TOP_SCLK_DISP1, 3, CLK_SET_RATE_PARENT, 0), 722 GATE_TOP_SCLK_DISP1, 3, CLK_SET_RATE_PARENT, 0),
702 GATE(CLK_SCLK_HDMI, "sclk_hdmi", "mout_hdmi", 723 GATE(CLK_SCLK_HDMI, "sclk_hdmi", "mout_hdmi",
703 GATE_TOP_SCLK_DISP1, 9, CLK_SET_RATE_PARENT, 0), 724 GATE_TOP_SCLK_DISP1, 9, 0, 0),
704 GATE(CLK_SCLK_PIXEL, "sclk_pixel", "dout_hdmi_pixel", 725 GATE(CLK_SCLK_PIXEL, "sclk_pixel", "dout_hdmi_pixel",
705 GATE_TOP_SCLK_DISP1, 10, CLK_SET_RATE_PARENT, 0), 726 GATE_TOP_SCLK_DISP1, 10, CLK_SET_RATE_PARENT, 0),
706 GATE(CLK_SCLK_DP1, "sclk_dp1", "dout_dp1", 727 GATE(CLK_SCLK_DP1, "sclk_dp1", "dout_dp1",
707 GATE_TOP_SCLK_DISP1, 20, CLK_SET_RATE_PARENT, 0), 728 GATE_TOP_SCLK_DISP1, 20, CLK_SET_RATE_PARENT, 0),
708 729
709 /* Maudio Block */ 730 /* Maudio Block */
710 GATE(CLK_SCLK_MAUDIO0, "sclk_maudio0", "dout_maudio0", 731 GATE(CLK_SCLK_MAUDIO0, "sclk_maudio0", "dout_maudio0",
@@ -833,10 +854,14 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
833 GATE(CLK_FIMD1, "fimd1", "aclk300_disp1", GATE_IP_DISP1, 0, 0, 0), 854 GATE(CLK_FIMD1, "fimd1", "aclk300_disp1", GATE_IP_DISP1, 0, 0, 0),
834 GATE(CLK_DSIM1, "dsim1", "aclk200_disp1", GATE_IP_DISP1, 3, 0, 0), 855 GATE(CLK_DSIM1, "dsim1", "aclk200_disp1", GATE_IP_DISP1, 3, 0, 0),
835 GATE(CLK_DP1, "dp1", "aclk200_disp1", GATE_IP_DISP1, 4, 0, 0), 856 GATE(CLK_DP1, "dp1", "aclk200_disp1", GATE_IP_DISP1, 4, 0, 0),
836 GATE(CLK_MIXER, "mixer", "aclk166", GATE_IP_DISP1, 5, 0, 0), 857 GATE(CLK_MIXER, "mixer", "aclk200_disp1", GATE_IP_DISP1, 5, 0, 0),
837 GATE(CLK_HDMI, "hdmi", "aclk200_disp1", GATE_IP_DISP1, 6, 0, 0), 858 GATE(CLK_HDMI, "hdmi", "aclk200_disp1", GATE_IP_DISP1, 6, 0, 0),
838 GATE(CLK_SMMU_FIMD1, "smmu_fimd1", "aclk300_disp1", GATE_IP_DISP1, 8, 0, 859 GATE(CLK_SMMU_FIMD1M0, "smmu_fimd1m0", "dout_disp1_blk",
839 0), 860 GATE_IP_DISP1, 7, 0, 0),
861 GATE(CLK_SMMU_FIMD1M1, "smmu_fimd1m1", "dout_disp1_blk",
862 GATE_IP_DISP1, 8, 0, 0),
863 GATE(CLK_SMMU_MIXER, "smmu_mixer", "aclk200_disp1",
864 GATE_IP_DISP1, 9, 0, 0),
840 865
841 /* ISP */ 866 /* ISP */
842 GATE(CLK_SCLK_UART_ISP, "sclk_uart_isp", "dout_uart_isp", 867 GATE(CLK_SCLK_UART_ISP, "sclk_uart_isp", "dout_uart_isp",
@@ -867,9 +892,6 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
867 GATE(CLK_SMMU_ROTATOR, "smmu_rotator", "aclk266", GATE_IP_GEN, 6, 0, 0), 892 GATE(CLK_SMMU_ROTATOR, "smmu_rotator", "aclk266", GATE_IP_GEN, 6, 0, 0),
868 GATE(CLK_SMMU_JPEG, "smmu_jpeg", "aclk300_jpeg", GATE_IP_GEN, 7, 0, 0), 893 GATE(CLK_SMMU_JPEG, "smmu_jpeg", "aclk300_jpeg", GATE_IP_GEN, 7, 0, 0),
869 GATE(CLK_SMMU_MDMA1, "smmu_mdma1", "aclk266", GATE_IP_GEN, 9, 0, 0), 894 GATE(CLK_SMMU_MDMA1, "smmu_mdma1", "aclk266", GATE_IP_GEN, 9, 0, 0),
870
871 GATE(CLK_SMMU_MIXER, "smmu_mixer", "aclk200_disp1", GATE_IP_DISP1, 9, 0,
872 0),
873}; 895};
874 896
875static struct samsung_pll_clock exynos5420_plls[nr_plls] __initdata = { 897static struct samsung_pll_clock exynos5420_plls[nr_plls] __initdata = {