summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShaik Ameer Basha <shaik.ameer@samsung.com>2014-05-08 07:27:52 -0400
committerTomasz Figa <t.figa@samsung.com>2014-05-14 13:40:18 -0400
commit02932381ca1d9ab894c893b28fed288d6bae011b (patch)
tree434f55d439c3d1a3319d29ecb119c7e9ffc6a86a
parent3a767b35c6c2f2e5f75e22a429b4d6d8c6736626 (diff)
clk: samsung: exynos5420: update clocks for GSCL and MSCL blocks
This patch adds the missing GSCL and MSCL block clocks and corrects some wrong parent-child relationships. 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>
-rw-r--r--drivers/clk/samsung/clk-exynos5420.c71
-rw-r--r--include/dt-bindings/clock/exynos5420.h4
2 files changed, 47 insertions, 28 deletions
diff --git a/drivers/clk/samsung/clk-exynos5420.c b/drivers/clk/samsung/clk-exynos5420.c
index c7e66219434f..cb7a63913e18 100644
--- a/drivers/clk/samsung/clk-exynos5420.c
+++ b/drivers/clk/samsung/clk-exynos5420.c
@@ -80,6 +80,7 @@
80#define DIV_PERIC4 0x10568 80#define DIV_PERIC4 0x10568
81#define SCLK_DIV_ISP0 0x10580 81#define SCLK_DIV_ISP0 0x10580
82#define SCLK_DIV_ISP1 0x10584 82#define SCLK_DIV_ISP1 0x10584
83#define DIV2_RATIO0 0x10590
83#define GATE_BUS_TOP 0x10700 84#define GATE_BUS_TOP 0x10700
84#define GATE_BUS_FSYS0 0x10740 85#define GATE_BUS_FSYS0 0x10740
85#define GATE_BUS_PERIC 0x10750 86#define GATE_BUS_PERIC 0x10750
@@ -165,6 +166,7 @@ static unsigned long exynos5420_clk_regs[] __initdata = {
165 DIV_PERIC4, 166 DIV_PERIC4,
166 SCLK_DIV_ISP0, 167 SCLK_DIV_ISP0,
167 SCLK_DIV_ISP1, 168 SCLK_DIV_ISP1,
169 DIV2_RATIO0,
168 GATE_BUS_TOP, 170 GATE_BUS_TOP,
169 GATE_BUS_FSYS0, 171 GATE_BUS_FSYS0,
170 GATE_BUS_PERIC, 172 GATE_BUS_PERIC,
@@ -576,6 +578,11 @@ static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
576 DIV(0, "dout_pre_spi1", "dout_spi1", DIV_PERIC4, 16, 8), 578 DIV(0, "dout_pre_spi1", "dout_spi1", DIV_PERIC4, 16, 8),
577 DIV(0, "dout_pre_spi2", "dout_spi2", DIV_PERIC4, 24, 8), 579 DIV(0, "dout_pre_spi2", "dout_spi2", DIV_PERIC4, 24, 8),
578 580
581 /* GSCL Block */
582 DIV(0, "dout_gscl_blk_300", "mout_user_aclk300_gscl",
583 DIV2_RATIO0, 4, 2),
584 DIV(0, "dout_gscl_blk_333", "aclk333_432_gscl", DIV2_RATIO0, 6, 2),
585
579 /* ISP Block */ 586 /* ISP Block */
580 DIV(0, "dout_isp_sensor0", "mout_isp_sensor", SCLK_DIV_ISP0, 8, 8), 587 DIV(0, "dout_isp_sensor0", "mout_isp_sensor", SCLK_DIV_ISP0, 8, 8),
581 DIV(0, "dout_isp_sensor1", "mout_isp_sensor", SCLK_DIV_ISP0, 16, 8), 588 DIV(0, "dout_isp_sensor1", "mout_isp_sensor", SCLK_DIV_ISP0, 16, 8),
@@ -631,6 +638,8 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
631 GATE_BUS_TOP, 15, CLK_IGNORE_UNUSED, 0), 638 GATE_BUS_TOP, 15, CLK_IGNORE_UNUSED, 0),
632 GATE(0, "aclk400_isp", "mout_user_aclk400_isp", 639 GATE(0, "aclk400_isp", "mout_user_aclk400_isp",
633 GATE_BUS_TOP, 16, 0, 0), 640 GATE_BUS_TOP, 16, 0, 0),
641 GATE(0, "aclk400_mscl", "mout_user_aclk400_mscl",
642 GATE_BUS_TOP, 17, 0, 0),
634 643
635 /* sclk */ 644 /* sclk */
636 GATE(CLK_SCLK_UART0, "sclk_uart0", "dout_uart0", 645 GATE(CLK_SCLK_UART0, "sclk_uart0", "dout_uart0",
@@ -678,11 +687,6 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
678 GATE(CLK_SCLK_USBD301, "sclk_unipro", "dout_unipro", 687 GATE(CLK_SCLK_USBD301, "sclk_unipro", "dout_unipro",
679 SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0), 688 SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0),
680 689
681 GATE(CLK_SCLK_GSCL_WA, "sclk_gscl_wa", "aclK333_432_gscl",
682 GATE_TOP_SCLK_GSCL, 6, CLK_SET_RATE_PARENT, 0),
683 GATE(CLK_SCLK_GSCL_WB, "sclk_gscl_wb", "aclk333_432_gscl",
684 GATE_TOP_SCLK_GSCL, 7, CLK_SET_RATE_PARENT, 0),
685
686 /* Display */ 690 /* Display */
687 GATE(CLK_SCLK_FIMD1, "sclk_fimd1", "dout_fimd1", 691 GATE(CLK_SCLK_FIMD1, "sclk_fimd1", "dout_fimd1",
688 GATE_TOP_SCLK_DISP1, 0, CLK_SET_RATE_PARENT, 0), 692 GATE_TOP_SCLK_DISP1, 0, CLK_SET_RATE_PARENT, 0),
@@ -776,27 +780,49 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
776 GATE(CLK_TMU, "tmu", "aclk66_psgen", GATE_BUS_PERIS1, 5, 0, 0), 780 GATE(CLK_TMU, "tmu", "aclk66_psgen", GATE_BUS_PERIS1, 5, 0, 0),
777 GATE(CLK_TMU_GPU, "tmu_gpu", "aclk66_psgen", GATE_BUS_PERIS1, 6, 0, 0), 781 GATE(CLK_TMU_GPU, "tmu_gpu", "aclk66_psgen", GATE_BUS_PERIS1, 6, 0, 0),
778 782
783 /* GSCL Block */
784 GATE(CLK_SCLK_GSCL_WA, "sclk_gscl_wa", "mout_user_aclk333_432_gscl",
785 GATE_TOP_SCLK_GSCL, 6, 0, 0),
786 GATE(CLK_SCLK_GSCL_WB, "sclk_gscl_wb", "mout_user_aclk333_432_gscl",
787 GATE_TOP_SCLK_GSCL, 7, 0, 0),
788
779 GATE(CLK_GSCL0, "gscl0", "aclk300_gscl", GATE_IP_GSCL0, 0, 0, 0), 789 GATE(CLK_GSCL0, "gscl0", "aclk300_gscl", GATE_IP_GSCL0, 0, 0, 0),
780 GATE(CLK_GSCL1, "gscl1", "aclk300_gscl", GATE_IP_GSCL0, 1, 0, 0), 790 GATE(CLK_GSCL1, "gscl1", "aclk300_gscl", GATE_IP_GSCL0, 1, 0, 0),
781 GATE(CLK_CLK_3AA, "clk_3aa", "aclk300_gscl", GATE_IP_GSCL0, 4, 0, 0), 791 GATE(CLK_FIMC_3AA, "fimc_3aa", "aclk333_432_gscl",
782 792 GATE_IP_GSCL0, 4, 0, 0),
783 GATE(CLK_SMMU_3AA, "smmu_3aa", "aclk333_432_gscl", GATE_IP_GSCL1, 2, 0, 793 GATE(CLK_FIMC_LITE0, "fimc_lite0", "aclk333_432_gscl",
784 0), 794 GATE_IP_GSCL0, 5, 0, 0),
785 GATE(CLK_SMMU_FIMCL0, "smmu_fimcl0", "aclk333_432_gscl", 795 GATE(CLK_FIMC_LITE1, "fimc_lite1", "aclk333_432_gscl",
796 GATE_IP_GSCL0, 6, 0, 0),
797
798 GATE(CLK_SMMU_3AA, "smmu_3aa", "dout_gscl_blk_333",
799 GATE_IP_GSCL1, 2, 0, 0),
800 GATE(CLK_SMMU_FIMCL0, "smmu_fimcl0", "dout_gscl_blk_333",
786 GATE_IP_GSCL1, 3, 0, 0), 801 GATE_IP_GSCL1, 3, 0, 0),
787 GATE(CLK_SMMU_FIMCL1, "smmu_fimcl1", "aclk333_432_gscl", 802 GATE(CLK_SMMU_FIMCL1, "smmu_fimcl1", "dout_gscl_blk_333",
788 GATE_IP_GSCL1, 4, 0, 0), 803 GATE_IP_GSCL1, 4, 0, 0),
789 GATE(CLK_SMMU_GSCL0, "smmu_gscl0", "aclk300_gscl", GATE_IP_GSCL1, 6, 0, 804 GATE(CLK_SMMU_GSCL0, "smmu_gscl0", "dout_gscl_blk_300",
790 0), 805 GATE_IP_GSCL1, 6, 0, 0),
791 GATE(CLK_SMMU_GSCL1, "smmu_gscl1", "aclk300_gscl", GATE_IP_GSCL1, 7, 0, 806 GATE(CLK_SMMU_GSCL1, "smmu_gscl1", "dout_gscl_blk_300",
792 0), 807 GATE_IP_GSCL1, 7, 0, 0),
793 GATE(CLK_GSCL_WA, "gscl_wa", "aclk300_gscl", GATE_IP_GSCL1, 12, 0, 0), 808 GATE(CLK_GSCL_WA, "gscl_wa", "sclk_gscl_wa", GATE_IP_GSCL1, 12, 0, 0),
794 GATE(CLK_GSCL_WB, "gscl_wb", "aclk300_gscl", GATE_IP_GSCL1, 13, 0, 0), 809 GATE(CLK_GSCL_WB, "gscl_wb", "sclk_gscl_wb", GATE_IP_GSCL1, 13, 0, 0),
795 GATE(CLK_SMMU_FIMCL3, "smmu_fimcl3,", "aclk333_432_gscl", 810 GATE(CLK_SMMU_FIMCL3, "smmu_fimcl3,", "dout_gscl_blk_333",
796 GATE_IP_GSCL1, 16, 0, 0), 811 GATE_IP_GSCL1, 16, 0, 0),
797 GATE(CLK_FIMC_LITE3, "fimc_lite3", "aclk333_432_gscl", 812 GATE(CLK_FIMC_LITE3, "fimc_lite3", "aclk333_432_gscl",
798 GATE_IP_GSCL1, 17, 0, 0), 813 GATE_IP_GSCL1, 17, 0, 0),
799 814
815 /* MSCL Block */
816 GATE(CLK_MSCL0, "mscl0", "aclk400_mscl", GATE_IP_MSCL, 0, 0, 0),
817 GATE(CLK_MSCL1, "mscl1", "aclk400_mscl", GATE_IP_MSCL, 1, 0, 0),
818 GATE(CLK_MSCL2, "mscl2", "aclk400_mscl", GATE_IP_MSCL, 2, 0, 0),
819 GATE(CLK_SMMU_MSCL0, "smmu_mscl0", "aclk400_mscl",
820 GATE_IP_MSCL, 8, 0, 0),
821 GATE(CLK_SMMU_MSCL1, "smmu_mscl1", "aclk400_mscl",
822 GATE_IP_MSCL, 9, 0, 0),
823 GATE(CLK_SMMU_MSCL2, "smmu_mscl2", "aclk400_mscl",
824 GATE_IP_MSCL, 10, 0, 0),
825
800 GATE(CLK_FIMD1, "fimd1", "aclk300_disp1", GATE_IP_DISP1, 0, 0, 0), 826 GATE(CLK_FIMD1, "fimd1", "aclk300_disp1", GATE_IP_DISP1, 0, 0, 0),
801 GATE(CLK_DSIM1, "dsim1", "aclk200_disp1", GATE_IP_DISP1, 3, 0, 0), 827 GATE(CLK_DSIM1, "dsim1", "aclk200_disp1", GATE_IP_DISP1, 3, 0, 0),
802 GATE(CLK_DP1, "dp1", "aclk200_disp1", GATE_IP_DISP1, 4, 0, 0), 828 GATE(CLK_DP1, "dp1", "aclk200_disp1", GATE_IP_DISP1, 4, 0, 0),
@@ -835,15 +861,6 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
835 GATE(CLK_SMMU_JPEG, "smmu_jpeg", "aclk300_jpeg", GATE_IP_GEN, 7, 0, 0), 861 GATE(CLK_SMMU_JPEG, "smmu_jpeg", "aclk300_jpeg", GATE_IP_GEN, 7, 0, 0),
836 GATE(CLK_SMMU_MDMA1, "smmu_mdma1", "aclk266", GATE_IP_GEN, 9, 0, 0), 862 GATE(CLK_SMMU_MDMA1, "smmu_mdma1", "aclk266", GATE_IP_GEN, 9, 0, 0),
837 863
838 GATE(CLK_MSCL0, "mscl0", "aclk400_mscl", GATE_IP_MSCL, 0, 0, 0),
839 GATE(CLK_MSCL1, "mscl1", "aclk400_mscl", GATE_IP_MSCL, 1, 0, 0),
840 GATE(CLK_MSCL2, "mscl2", "aclk400_mscl", GATE_IP_MSCL, 2, 0, 0),
841 GATE(CLK_SMMU_MSCL0, "smmu_mscl0", "aclk400_mscl", GATE_IP_MSCL, 8, 0,
842 0),
843 GATE(CLK_SMMU_MSCL1, "smmu_mscl1", "aclk400_mscl", GATE_IP_MSCL, 9, 0,
844 0),
845 GATE(CLK_SMMU_MSCL2, "smmu_mscl2", "aclk400_mscl", GATE_IP_MSCL, 10, 0,
846 0),
847 GATE(CLK_SMMU_MIXER, "smmu_mixer", "aclk200_disp1", GATE_IP_DISP1, 9, 0, 864 GATE(CLK_SMMU_MIXER, "smmu_mixer", "aclk200_disp1", GATE_IP_DISP1, 9, 0,
848 0), 865 0),
849}; 866};
diff --git a/include/dt-bindings/clock/exynos5420.h b/include/dt-bindings/clock/exynos5420.h
index bddf5496fef2..6e22fddb0134 100644
--- a/include/dt-bindings/clock/exynos5420.h
+++ b/include/dt-bindings/clock/exynos5420.h
@@ -159,7 +159,7 @@
159#define CLK_GSCL_WB 464 159#define CLK_GSCL_WB 464
160#define CLK_GSCL0 465 160#define CLK_GSCL0 465
161#define CLK_GSCL1 466 161#define CLK_GSCL1 466
162#define CLK_CLK_3AA 467 162#define CLK_FIMC_3AA 467
163#define CLK_ACLK266_G2D 470 163#define CLK_ACLK266_G2D 470
164#define CLK_SSS 471 164#define CLK_SSS 471
165#define CLK_SLIM_SSS 472 165#define CLK_SLIM_SSS 472
@@ -172,6 +172,8 @@
172#define CLK_SMMU_FIMCL1 493 172#define CLK_SMMU_FIMCL1 493
173#define CLK_SMMU_FIMCL3 494 173#define CLK_SMMU_FIMCL3 494
174#define CLK_FIMC_LITE3 495 174#define CLK_FIMC_LITE3 495
175#define CLK_FIMC_LITE0 496
176#define CLK_FIMC_LITE1 497
175#define CLK_ACLK_G3D 500 177#define CLK_ACLK_G3D 500
176#define CLK_G3D 501 178#define CLK_G3D 501
177#define CLK_SMMU_MIXER 502 179#define CLK_SMMU_MIXER 502