diff options
author | Tomasz Figa <t.figa@samsung.com> | 2014-06-24 12:08:24 -0400 |
---|---|---|
committer | Tomasz Figa <t.figa@samsung.com> | 2014-07-25 20:42:36 -0400 |
commit | 800c9797ad5b20edf3b9258b83624efdb2b06e02 (patch) | |
tree | fe0005f4f52ca63cbac020d0106434523974c647 /drivers/clk/samsung | |
parent | 17d3f1d27ce2fd377ddb03531b87dd9e96e01b34 (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.c | 50 |
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", }; |
398 | PNAME(mout_mixer_p4210) = { "sclk_dac", "sclk_hdmi", }; | 398 | PNAME(mout_mixer_p4210) = { "sclk_dac", "sclk_hdmi", }; |
399 | PNAME(mout_dac_p4210) = { "sclk_vpll", "sclk_hdmiphy", }; | 399 | PNAME(mout_dac_p4210) = { "sclk_vpll", "sclk_hdmiphy", }; |
400 | PNAME(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 */ |
402 | PNAME(mout_mpll_user_p4x12) = { "fin_pll", "sclk_mpll", }; | 405 | PNAME(mout_mpll_user_p4x12) = { "fin_pll", "sclk_mpll", }; |
403 | PNAME(mout_core_p4x12) = { "mout_apll", "mout_mpll_user_c", }; | 406 | PNAME(mout_core_p4x12) = { "mout_apll", "mout_mpll_user_c", }; |
407 | PNAME(mout_gdl_p4x12) = { "mout_mpll_user_l", "sclk_apll", }; | ||
408 | PNAME(mout_gdr_p4x12) = { "mout_mpll_user_r", "sclk_apll", }; | ||
404 | PNAME(sclk_ampll_p4x12) = { "mout_mpll_user_t", "sclk_apll", }; | 409 | PNAME(sclk_ampll_p4x12) = { "mout_mpll_user_t", "sclk_apll", }; |
405 | PNAME(group1_p4x12) = { "xxti", "xusbxti", "sclk_hdmi24m", "sclk_usbphy0", | 410 | PNAME(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", }; | |||
418 | PNAME(mout_user_aclk400_mcuisp_p4x12) = {"fin_pll", "div_aclk400_mcuisp", }; | 423 | PNAME(mout_user_aclk400_mcuisp_p4x12) = {"fin_pll", "div_aclk400_mcuisp", }; |
419 | PNAME(mout_user_aclk200_p4x12) = {"fin_pll", "div_aclk200", }; | 424 | PNAME(mout_user_aclk200_p4x12) = {"fin_pll", "div_aclk200", }; |
420 | PNAME(mout_user_aclk266_gps_p4x12) = {"fin_pll", "div_aclk266_gps", }; | 425 | PNAME(mout_user_aclk266_gps_p4x12) = {"fin_pll", "div_aclk266_gps", }; |
426 | PNAME(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 */ |
423 | static struct samsung_fixed_rate_clock exynos4_fixed_rate_ext_clks[] __initdata = { | 431 | static 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 | ||
461 | static struct samsung_mux_clock exynos4210_mux_clks[] __initdata = { | 472 | static 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 */ |
509 | static struct samsung_mux_clock exynos4x12_mux_clks[] __initdata = { | 527 | static 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 */ |
574 | static struct samsung_div_clock exynos4_div_clks[] __initdata = { | 601 | static 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 */ |