aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk/samsung
diff options
context:
space:
mode:
authorTomasz Figa <t.figa@samsung.com>2014-06-24 12:08:24 -0400
committerTomasz Figa <t.figa@samsung.com>2014-07-25 20:42:36 -0400
commit800c9797ad5b20edf3b9258b83624efdb2b06e02 (patch)
treefe0005f4f52ca63cbac020d0106434523974c647 /drivers/clk/samsung
parent17d3f1d27ce2fd377ddb03531b87dd9e96e01b34 (diff)
clk: samsung: exynos4: Add missing CPU/DMC clock hierarchy
This patch adds missing definitions of clocks from CPU and DMC clock domains, which are necessary to properly represent CLKOUT clock hierarchy added in further patch. Signed-off-by: Tomasz Figa <t.figa@samsung.com>
Diffstat (limited to 'drivers/clk/samsung')
-rw-r--r--drivers/clk/samsung/clk-exynos4.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/drivers/clk/samsung/clk-exynos4.c b/drivers/clk/samsung/clk-exynos4.c
index 75573a4c9674..70bca8d81de6 100644
--- a/drivers/clk/samsung/clk-exynos4.c
+++ b/drivers/clk/samsung/clk-exynos4.c
@@ -397,10 +397,15 @@ PNAME(mout_audio2_p4210) = { "cdclk2", "none", "sclk_hdmi24m",
397 "sclk_epll", "sclk_vpll", }; 397 "sclk_epll", "sclk_vpll", };
398PNAME(mout_mixer_p4210) = { "sclk_dac", "sclk_hdmi", }; 398PNAME(mout_mixer_p4210) = { "sclk_dac", "sclk_hdmi", };
399PNAME(mout_dac_p4210) = { "sclk_vpll", "sclk_hdmiphy", }; 399PNAME(mout_dac_p4210) = { "sclk_vpll", "sclk_hdmiphy", };
400PNAME(mout_pwi_p4210) = { "xxti", "xusbxti", "sclk_hdmi24m", "sclk_usbphy0",
401 "sclk_usbphy1", "sclk_hdmiphy", "none",
402 "sclk_epll", "sclk_vpll" };
400 403
401/* Exynos 4x12-specific parent groups */ 404/* Exynos 4x12-specific parent groups */
402PNAME(mout_mpll_user_p4x12) = { "fin_pll", "sclk_mpll", }; 405PNAME(mout_mpll_user_p4x12) = { "fin_pll", "sclk_mpll", };
403PNAME(mout_core_p4x12) = { "mout_apll", "mout_mpll_user_c", }; 406PNAME(mout_core_p4x12) = { "mout_apll", "mout_mpll_user_c", };
407PNAME(mout_gdl_p4x12) = { "mout_mpll_user_l", "sclk_apll", };
408PNAME(mout_gdr_p4x12) = { "mout_mpll_user_r", "sclk_apll", };
404PNAME(sclk_ampll_p4x12) = { "mout_mpll_user_t", "sclk_apll", }; 409PNAME(sclk_ampll_p4x12) = { "mout_mpll_user_t", "sclk_apll", };
405PNAME(group1_p4x12) = { "xxti", "xusbxti", "sclk_hdmi24m", "sclk_usbphy0", 410PNAME(group1_p4x12) = { "xxti", "xusbxti", "sclk_hdmi24m", "sclk_usbphy0",
406 "none", "sclk_hdmiphy", "mout_mpll_user_t", 411 "none", "sclk_hdmiphy", "mout_mpll_user_t",
@@ -418,6 +423,9 @@ PNAME(aclk_p4412) = { "mout_mpll_user_t", "sclk_apll", };
418PNAME(mout_user_aclk400_mcuisp_p4x12) = {"fin_pll", "div_aclk400_mcuisp", }; 423PNAME(mout_user_aclk400_mcuisp_p4x12) = {"fin_pll", "div_aclk400_mcuisp", };
419PNAME(mout_user_aclk200_p4x12) = {"fin_pll", "div_aclk200", }; 424PNAME(mout_user_aclk200_p4x12) = {"fin_pll", "div_aclk200", };
420PNAME(mout_user_aclk266_gps_p4x12) = {"fin_pll", "div_aclk266_gps", }; 425PNAME(mout_user_aclk266_gps_p4x12) = {"fin_pll", "div_aclk266_gps", };
426PNAME(mout_pwi_p4x12) = { "xxti", "xusbxti", "sclk_hdmi24m", "sclk_usbphy0",
427 "none", "sclk_hdmiphy", "sclk_mpll",
428 "sclk_epll", "sclk_vpll" };
421 429
422/* fixed rate clocks generated outside the soc */ 430/* fixed rate clocks generated outside the soc */
423static struct samsung_fixed_rate_clock exynos4_fixed_rate_ext_clks[] __initdata = { 431static struct samsung_fixed_rate_clock exynos4_fixed_rate_ext_clks[] __initdata = {
@@ -451,6 +459,9 @@ static struct samsung_mux_clock exynos4_mux_clks[] __initdata = {
451 MUX(0, "mout_onenand1", mout_onenand1_p, SRC_TOP0, 0, 1), 459 MUX(0, "mout_onenand1", mout_onenand1_p, SRC_TOP0, 0, 1),
452 MUX(CLK_SCLK_EPLL, "sclk_epll", mout_epll_p, SRC_TOP0, 4, 1), 460 MUX(CLK_SCLK_EPLL, "sclk_epll", mout_epll_p, SRC_TOP0, 4, 1),
453 MUX(0, "mout_onenand", mout_onenand_p, SRC_TOP0, 28, 1), 461 MUX(0, "mout_onenand", mout_onenand_p, SRC_TOP0, 28, 1),
462
463 MUX(0, "mout_dmc_bus", sclk_ampll_p4210, SRC_DMC, 4, 1),
464 MUX(0, "mout_dphy", sclk_ampll_p4210, SRC_DMC, 8, 1),
454}; 465};
455 466
456/* list of mux clocks supported in exynos4210 soc */ 467/* list of mux clocks supported in exynos4210 soc */
@@ -459,6 +470,10 @@ static struct samsung_mux_clock exynos4210_mux_early[] __initdata = {
459}; 470};
460 471
461static struct samsung_mux_clock exynos4210_mux_clks[] __initdata = { 472static struct samsung_mux_clock exynos4210_mux_clks[] __initdata = {
473 MUX(0, "mout_gdl", sclk_ampll_p4210, SRC_LEFTBUS, 0, 1),
474
475 MUX(0, "mout_gdr", sclk_ampll_p4210, SRC_RIGHTBUS, 0, 1),
476
462 MUX(0, "mout_aclk200", sclk_ampll_p4210, SRC_TOP0, 12, 1), 477 MUX(0, "mout_aclk200", sclk_ampll_p4210, SRC_TOP0, 12, 1),
463 MUX(0, "mout_aclk100", sclk_ampll_p4210, SRC_TOP0, 16, 1), 478 MUX(0, "mout_aclk100", sclk_ampll_p4210, SRC_TOP0, 16, 1),
464 MUX(0, "mout_aclk160", sclk_ampll_p4210, SRC_TOP0, 20, 1), 479 MUX(0, "mout_aclk160", sclk_ampll_p4210, SRC_TOP0, 20, 1),
@@ -472,6 +487,7 @@ static struct samsung_mux_clock exynos4210_mux_clks[] __initdata = {
472 MUX(0, "mout_mipi1", group1_p4210, E4210_SRC_LCD1, 12, 4), 487 MUX(0, "mout_mipi1", group1_p4210, E4210_SRC_LCD1, 12, 4),
473 MUX(CLK_SCLK_MPLL, "sclk_mpll", mout_mpll_p, SRC_CPU, 8, 1), 488 MUX(CLK_SCLK_MPLL, "sclk_mpll", mout_mpll_p, SRC_CPU, 8, 1),
474 MUX(CLK_MOUT_CORE, "mout_core", mout_core_p4210, SRC_CPU, 16, 1), 489 MUX(CLK_MOUT_CORE, "mout_core", mout_core_p4210, SRC_CPU, 16, 1),
490 MUX(0, "mout_hpm", mout_core_p4210, SRC_CPU, 20, 1),
475 MUX(CLK_SCLK_VPLL, "sclk_vpll", sclk_vpll_p4210, SRC_TOP0, 8, 1), 491 MUX(CLK_SCLK_VPLL, "sclk_vpll", sclk_vpll_p4210, SRC_TOP0, 8, 1),
476 MUX(CLK_MOUT_FIMC0, "mout_fimc0", group1_p4210, SRC_CAM, 0, 4), 492 MUX(CLK_MOUT_FIMC0, "mout_fimc0", group1_p4210, SRC_CAM, 0, 4),
477 MUX(CLK_MOUT_FIMC1, "mout_fimc1", group1_p4210, SRC_CAM, 4, 4), 493 MUX(CLK_MOUT_FIMC1, "mout_fimc1", group1_p4210, SRC_CAM, 4, 4),
@@ -503,10 +519,18 @@ static struct samsung_mux_clock exynos4210_mux_clks[] __initdata = {
503 MUX(0, "mout_spi0", group1_p4210, SRC_PERIL1, 16, 4), 519 MUX(0, "mout_spi0", group1_p4210, SRC_PERIL1, 16, 4),
504 MUX(0, "mout_spi1", group1_p4210, SRC_PERIL1, 20, 4), 520 MUX(0, "mout_spi1", group1_p4210, SRC_PERIL1, 20, 4),
505 MUX(0, "mout_spi2", group1_p4210, SRC_PERIL1, 24, 4), 521 MUX(0, "mout_spi2", group1_p4210, SRC_PERIL1, 24, 4),
522
523 MUX(0, "mout_pwi", mout_pwi_p4210, SRC_DMC, 16, 4),
506}; 524};
507 525
508/* list of mux clocks supported in exynos4x12 soc */ 526/* list of mux clocks supported in exynos4x12 soc */
509static struct samsung_mux_clock exynos4x12_mux_clks[] __initdata = { 527static struct samsung_mux_clock exynos4x12_mux_clks[] __initdata = {
528 MUX(0, "mout_mpll_user_l", mout_mpll_p, SRC_LEFTBUS, 4, 1),
529 MUX(0, "mout_gdl", mout_gdl_p4x12, SRC_LEFTBUS, 0, 1),
530
531 MUX(0, "mout_mpll_user_r", mout_mpll_p, SRC_RIGHTBUS, 4, 1),
532 MUX(0, "mout_gdr", mout_gdr_p4x12, SRC_RIGHTBUS, 0, 1),
533
510 MUX(CLK_MOUT_MPLL_USER_C, "mout_mpll_user_c", mout_mpll_user_p4x12, 534 MUX(CLK_MOUT_MPLL_USER_C, "mout_mpll_user_c", mout_mpll_user_p4x12,
511 SRC_CPU, 24, 1), 535 SRC_CPU, 24, 1),
512 MUX(0, "mout_aclk266_gps", aclk_p4412, SRC_TOP1, 4, 1), 536 MUX(0, "mout_aclk266_gps", aclk_p4412, SRC_TOP1, 4, 1),
@@ -531,6 +555,7 @@ static struct samsung_mux_clock exynos4x12_mux_clks[] __initdata = {
531 MUX(CLK_SCLK_MPLL, "sclk_mpll", mout_mpll_p, SRC_DMC, 12, 1), 555 MUX(CLK_SCLK_MPLL, "sclk_mpll", mout_mpll_p, SRC_DMC, 12, 1),
532 MUX(CLK_SCLK_VPLL, "sclk_vpll", mout_vpll_p, SRC_TOP0, 8, 1), 556 MUX(CLK_SCLK_VPLL, "sclk_vpll", mout_vpll_p, SRC_TOP0, 8, 1),
533 MUX(CLK_MOUT_CORE, "mout_core", mout_core_p4x12, SRC_CPU, 16, 1), 557 MUX(CLK_MOUT_CORE, "mout_core", mout_core_p4x12, SRC_CPU, 16, 1),
558 MUX(0, "mout_hpm", mout_core_p4x12, SRC_CPU, 20, 1),
534 MUX(CLK_MOUT_FIMC0, "mout_fimc0", group1_p4x12, SRC_CAM, 0, 4), 559 MUX(CLK_MOUT_FIMC0, "mout_fimc0", group1_p4x12, SRC_CAM, 0, 4),
535 MUX(CLK_MOUT_FIMC1, "mout_fimc1", group1_p4x12, SRC_CAM, 4, 4), 560 MUX(CLK_MOUT_FIMC1, "mout_fimc1", group1_p4x12, SRC_CAM, 4, 4),
536 MUX(CLK_MOUT_FIMC2, "mout_fimc2", group1_p4x12, SRC_CAM, 8, 4), 561 MUX(CLK_MOUT_FIMC2, "mout_fimc2", group1_p4x12, SRC_CAM, 8, 4),
@@ -565,6 +590,8 @@ static struct samsung_mux_clock exynos4x12_mux_clks[] __initdata = {
565 MUX(0, "mout_spi0_isp", group1_p4x12, E4X12_SRC_ISP, 4, 4), 590 MUX(0, "mout_spi0_isp", group1_p4x12, E4X12_SRC_ISP, 4, 4),
566 MUX(0, "mout_spi1_isp", group1_p4x12, E4X12_SRC_ISP, 8, 4), 591 MUX(0, "mout_spi1_isp", group1_p4x12, E4X12_SRC_ISP, 8, 4),
567 MUX(0, "mout_uart_isp", group1_p4x12, E4X12_SRC_ISP, 12, 4), 592 MUX(0, "mout_uart_isp", group1_p4x12, E4X12_SRC_ISP, 12, 4),
593 MUX(0, "mout_c2c", sclk_ampll_p4210, SRC_DMC, 0, 1),
594 MUX(0, "mout_pwi", mout_pwi_p4x12, SRC_DMC, 16, 4),
568 MUX(0, "mout_g2d0", sclk_ampll_p4210, SRC_DMC, 20, 1), 595 MUX(0, "mout_g2d0", sclk_ampll_p4210, SRC_DMC, 20, 1),
569 MUX(0, "mout_g2d1", sclk_evpll_p, SRC_DMC, 24, 1), 596 MUX(0, "mout_g2d1", sclk_evpll_p, SRC_DMC, 24, 1),
570 MUX(0, "mout_g2d", mout_g2d_p, SRC_DMC, 28, 1), 597 MUX(0, "mout_g2d", mout_g2d_p, SRC_DMC, 28, 1),
@@ -572,8 +599,21 @@ static struct samsung_mux_clock exynos4x12_mux_clks[] __initdata = {
572 599
573/* list of divider clocks supported in all exynos4 soc's */ 600/* list of divider clocks supported in all exynos4 soc's */
574static struct samsung_div_clock exynos4_div_clks[] __initdata = { 601static struct samsung_div_clock exynos4_div_clks[] __initdata = {
602 DIV(0, "div_gdl", "mout_gdl", DIV_LEFTBUS, 0, 3),
603 DIV(0, "div_gpl", "div_gdl", DIV_LEFTBUS, 4, 3),
604
605 DIV(0, "div_gdr", "mout_gdr", DIV_RIGHTBUS, 0, 3),
606 DIV(0, "div_gpr", "div_gdr", DIV_RIGHTBUS, 4, 3),
607
575 DIV(0, "div_core", "mout_core", DIV_CPU0, 0, 3), 608 DIV(0, "div_core", "mout_core", DIV_CPU0, 0, 3),
609 DIV(0, "div_corem0", "div_core2", DIV_CPU0, 4, 3),
610 DIV(0, "div_corem1", "div_core2", DIV_CPU0, 8, 3),
611 DIV(0, "div_periph", "div_core2", DIV_CPU0, 12, 3),
612 DIV(0, "div_atb", "mout_core", DIV_CPU0, 16, 3),
613 DIV(0, "div_pclk_dbg", "div_atb", DIV_CPU0, 20, 3),
576 DIV(0, "div_core2", "div_core", DIV_CPU0, 28, 3), 614 DIV(0, "div_core2", "div_core", DIV_CPU0, 28, 3),
615 DIV(0, "div_copy", "mout_hpm", DIV_CPU1, 0, 3),
616 DIV(0, "div_hpm", "div_copy", DIV_CPU1, 4, 3),
577 DIV(0, "div_fimc0", "mout_fimc0", DIV_CAM, 0, 4), 617 DIV(0, "div_fimc0", "mout_fimc0", DIV_CAM, 0, 4),
578 DIV(0, "div_fimc1", "mout_fimc1", DIV_CAM, 4, 4), 618 DIV(0, "div_fimc1", "mout_fimc1", DIV_CAM, 4, 4),
579 DIV(0, "div_fimc2", "mout_fimc2", DIV_CAM, 8, 4), 619 DIV(0, "div_fimc2", "mout_fimc2", DIV_CAM, 8, 4),
@@ -631,6 +671,14 @@ static struct samsung_div_clock exynos4_div_clks[] __initdata = {
631 CLK_SET_RATE_PARENT, 0), 671 CLK_SET_RATE_PARENT, 0),
632 DIV_F(0, "div_mmc_pre3", "div_mmc3", DIV_FSYS2, 24, 8, 672 DIV_F(0, "div_mmc_pre3", "div_mmc3", DIV_FSYS2, 24, 8,
633 CLK_SET_RATE_PARENT, 0), 673 CLK_SET_RATE_PARENT, 0),
674
675 DIV(0, "div_acp", "mout_dmc_bus", DIV_DMC0, 0, 3),
676 DIV(0, "div_acp_pclk", "div_acp", DIV_DMC0, 4, 3),
677 DIV(0, "div_dphy", "mout_dphy", DIV_DMC0, 8, 3),
678 DIV(0, "div_dmc", "mout_dmc_bus", DIV_DMC0, 12, 3),
679 DIV(0, "div_dmcd", "div_dmc", DIV_DMC0, 16, 3),
680 DIV(0, "div_dmcp", "div_dmcd", DIV_DMC0, 20, 3),
681 DIV(0, "div_pwi", "mout_pwi", DIV_DMC1, 8, 4),
634}; 682};
635 683
636/* list of divider clocks supported in exynos4210 soc */ 684/* list of divider clocks supported in exynos4210 soc */
@@ -671,6 +719,8 @@ static struct samsung_div_clock exynos4x12_div_clks[] __initdata = {
671 DIV_F(CLK_DIV_MCUISP1, "div_mcuisp1", "div_mcuisp0", E4X12_DIV_ISP1, 719 DIV_F(CLK_DIV_MCUISP1, "div_mcuisp1", "div_mcuisp0", E4X12_DIV_ISP1,
672 8, 3, CLK_GET_RATE_NOCACHE, 0), 720 8, 3, CLK_GET_RATE_NOCACHE, 0),
673 DIV(CLK_SCLK_FIMG2D, "sclk_fimg2d", "mout_g2d", DIV_DMC1, 0, 4), 721 DIV(CLK_SCLK_FIMG2D, "sclk_fimg2d", "mout_g2d", DIV_DMC1, 0, 4),
722 DIV(0, "div_c2c", "mout_c2c", DIV_DMC1, 4, 3),
723 DIV(0, "div_c2c_aclk", "div_c2c", DIV_DMC1, 12, 3),
674}; 724};
675 725
676/* list of gate clocks supported in all exynos4 soc's */ 726/* list of gate clocks supported in all exynos4 soc's */