aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKukjin Kim <kgene.kim@samsung.com>2014-05-16 18:30:32 -0400
committerKukjin Kim <kgene.kim@samsung.com>2014-05-16 18:30:32 -0400
commit6b262bf1dbe287ce12752da96f77c365985d6f3b (patch)
tree107fdb6fbff575731ce16c06a68e10bf01b58056
parent4b2f5cd0ec19b70305dbe87cb9388804b6ac6162 (diff)
parent773424326b51cc851b6e28ff22447ba5fcc5f429 (diff)
Merge branch 'for_3.16/clk_fixes_non_critical' of git://git.kernel.org/pub/scm/linux/kernel/git/tfiga/samsung-clk into v3.16-next/clk-samsung
Pull Samsung clock non-critical fixes from Tomasz Figa: "This pull requests contains a number of non-critical fixes for Samsung clock framework and drivers, including: 1) a series of fixes for Exynos5420 to correct clock definitions and make the driver closer to the documentation, 2) several missing clocks and clock IDs added to Exynos4, Exynos5250 and Exynos5420 drivers, 3) fix for incorrect initialization of clock table with NULL, 4) compiler warning fix." Acked-by: Mike Turquette <mturquette@linaro.org> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
-rw-r--r--arch/arm/boot/dts/exynos5420.dtsi14
-rw-r--r--drivers/clk/samsung/clk-exynos4.c4
-rw-r--r--drivers/clk/samsung/clk-exynos5250.c16
-rw-r--r--drivers/clk/samsung/clk-exynos5420.c854
-rw-r--r--drivers/clk/samsung/clk.c9
-rw-r--r--include/dt-bindings/clock/exynos4.h2
-rw-r--r--include/dt-bindings/clock/exynos5250.h5
-rw-r--r--include/dt-bindings/clock/exynos5420.h39
8 files changed, 608 insertions, 335 deletions
diff --git a/arch/arm/boot/dts/exynos5420.dtsi b/arch/arm/boot/dts/exynos5420.dtsi
index c3a9a66c5767..67ba2c56fa8e 100644
--- a/arch/arm/boot/dts/exynos5420.dtsi
+++ b/arch/arm/boot/dts/exynos5420.dtsi
@@ -549,7 +549,7 @@
549 #size-cells = <0>; 549 #size-cells = <0>;
550 pinctrl-names = "default"; 550 pinctrl-names = "default";
551 pinctrl-0 = <&i2c4_hs_bus>; 551 pinctrl-0 = <&i2c4_hs_bus>;
552 clocks = <&clock CLK_I2C4>; 552 clocks = <&clock CLK_USI0>;
553 clock-names = "hsi2c"; 553 clock-names = "hsi2c";
554 status = "disabled"; 554 status = "disabled";
555 }; 555 };
@@ -562,7 +562,7 @@
562 #size-cells = <0>; 562 #size-cells = <0>;
563 pinctrl-names = "default"; 563 pinctrl-names = "default";
564 pinctrl-0 = <&i2c5_hs_bus>; 564 pinctrl-0 = <&i2c5_hs_bus>;
565 clocks = <&clock CLK_I2C5>; 565 clocks = <&clock CLK_USI1>;
566 clock-names = "hsi2c"; 566 clock-names = "hsi2c";
567 status = "disabled"; 567 status = "disabled";
568 }; 568 };
@@ -575,7 +575,7 @@
575 #size-cells = <0>; 575 #size-cells = <0>;
576 pinctrl-names = "default"; 576 pinctrl-names = "default";
577 pinctrl-0 = <&i2c6_hs_bus>; 577 pinctrl-0 = <&i2c6_hs_bus>;
578 clocks = <&clock CLK_I2C6>; 578 clocks = <&clock CLK_USI2>;
579 clock-names = "hsi2c"; 579 clock-names = "hsi2c";
580 status = "disabled"; 580 status = "disabled";
581 }; 581 };
@@ -588,7 +588,7 @@
588 #size-cells = <0>; 588 #size-cells = <0>;
589 pinctrl-names = "default"; 589 pinctrl-names = "default";
590 pinctrl-0 = <&i2c7_hs_bus>; 590 pinctrl-0 = <&i2c7_hs_bus>;
591 clocks = <&clock CLK_I2C7>; 591 clocks = <&clock CLK_USI3>;
592 clock-names = "hsi2c"; 592 clock-names = "hsi2c";
593 status = "disabled"; 593 status = "disabled";
594 }; 594 };
@@ -601,7 +601,7 @@
601 #size-cells = <0>; 601 #size-cells = <0>;
602 pinctrl-names = "default"; 602 pinctrl-names = "default";
603 pinctrl-0 = <&i2c8_hs_bus>; 603 pinctrl-0 = <&i2c8_hs_bus>;
604 clocks = <&clock CLK_I2C8>; 604 clocks = <&clock CLK_USI4>;
605 clock-names = "hsi2c"; 605 clock-names = "hsi2c";
606 status = "disabled"; 606 status = "disabled";
607 }; 607 };
@@ -614,7 +614,7 @@
614 #size-cells = <0>; 614 #size-cells = <0>;
615 pinctrl-names = "default"; 615 pinctrl-names = "default";
616 pinctrl-0 = <&i2c9_hs_bus>; 616 pinctrl-0 = <&i2c9_hs_bus>;
617 clocks = <&clock CLK_I2C9>; 617 clocks = <&clock CLK_USI5>;
618 clock-names = "hsi2c"; 618 clock-names = "hsi2c";
619 status = "disabled"; 619 status = "disabled";
620 }; 620 };
@@ -627,7 +627,7 @@
627 #size-cells = <0>; 627 #size-cells = <0>;
628 pinctrl-names = "default"; 628 pinctrl-names = "default";
629 pinctrl-0 = <&i2c10_hs_bus>; 629 pinctrl-0 = <&i2c10_hs_bus>;
630 clocks = <&clock CLK_I2C10>; 630 clocks = <&clock CLK_USI6>;
631 clock-names = "hsi2c"; 631 clock-names = "hsi2c";
632 status = "disabled"; 632 status = "disabled";
633 }; 633 };
diff --git a/drivers/clk/samsung/clk-exynos4.c b/drivers/clk/samsung/clk-exynos4.c
index 57ed5a8fb052..c4df294bb7fb 100644
--- a/drivers/clk/samsung/clk-exynos4.c
+++ b/drivers/clk/samsung/clk-exynos4.c
@@ -428,7 +428,7 @@ static struct samsung_fixed_rate_clock exynos4_fixed_rate_ext_clks[] __initdata
428/* fixed rate clocks generated inside the soc */ 428/* fixed rate clocks generated inside the soc */
429static struct samsung_fixed_rate_clock exynos4_fixed_rate_clks[] __initdata = { 429static struct samsung_fixed_rate_clock exynos4_fixed_rate_clks[] __initdata = {
430 FRATE(0, "sclk_hdmi24m", NULL, CLK_IS_ROOT, 24000000), 430 FRATE(0, "sclk_hdmi24m", NULL, CLK_IS_ROOT, 24000000),
431 FRATE(0, "sclk_hdmiphy", NULL, CLK_IS_ROOT, 27000000), 431 FRATE(CLK_SCLK_HDMIPHY, "sclk_hdmiphy", NULL, CLK_IS_ROOT, 27000000),
432 FRATE(0, "sclk_usbphy0", NULL, CLK_IS_ROOT, 48000000), 432 FRATE(0, "sclk_usbphy0", NULL, CLK_IS_ROOT, 48000000),
433}; 433};
434 434
@@ -903,7 +903,7 @@ static struct samsung_gate_clock exynos4x12_gate_clks[] __initdata = {
903 GATE(CLK_AUDSS, "audss", "sclk_epll", E4X12_GATE_IP_MAUDIO, 0, 0, 0), 903 GATE(CLK_AUDSS, "audss", "sclk_epll", E4X12_GATE_IP_MAUDIO, 0, 0, 0),
904 GATE(CLK_MDNIE0, "mdnie0", "aclk160", GATE_IP_LCD0, 2, 0, 0), 904 GATE(CLK_MDNIE0, "mdnie0", "aclk160", GATE_IP_LCD0, 2, 0, 0),
905 GATE(CLK_ROTATOR, "rotator", "aclk200", E4X12_GATE_IP_IMAGE, 1, 0, 0), 905 GATE(CLK_ROTATOR, "rotator", "aclk200", E4X12_GATE_IP_IMAGE, 1, 0, 0),
906 GATE(CLK_MDMA2, "mdma2", "aclk200", E4X12_GATE_IP_IMAGE, 2, 0, 0), 906 GATE(CLK_MDMA, "mdma", "aclk200", E4X12_GATE_IP_IMAGE, 2, 0, 0),
907 GATE(CLK_SMMU_MDMA, "smmu_mdma", "aclk200", E4X12_GATE_IP_IMAGE, 5, 0, 907 GATE(CLK_SMMU_MDMA, "smmu_mdma", "aclk200", E4X12_GATE_IP_IMAGE, 5, 0,
908 0), 908 0),
909 GATE(CLK_MIPI_HSI, "mipi_hsi", "aclk133", GATE_IP_FSYS, 10, 0, 0), 909 GATE(CLK_MIPI_HSI, "mipi_hsi", "aclk133", GATE_IP_FSYS, 10, 0, 0),
diff --git a/drivers/clk/samsung/clk-exynos5250.c b/drivers/clk/samsung/clk-exynos5250.c
index e549e862524a..88488596c00b 100644
--- a/drivers/clk/samsung/clk-exynos5250.c
+++ b/drivers/clk/samsung/clk-exynos5250.c
@@ -37,6 +37,7 @@
37#define VPLL_CON0 0x10140 37#define VPLL_CON0 0x10140
38#define GPLL_CON0 0x10150 38#define GPLL_CON0 0x10150
39#define SRC_TOP0 0x10210 39#define SRC_TOP0 0x10210
40#define SRC_TOP1 0x10214
40#define SRC_TOP2 0x10218 41#define SRC_TOP2 0x10218
41#define SRC_TOP3 0x1021c 42#define SRC_TOP3 0x1021c
42#define SRC_GSCL 0x10220 43#define SRC_GSCL 0x10220
@@ -71,6 +72,7 @@
71#define GATE_IP_GSCL 0x10920 72#define GATE_IP_GSCL 0x10920
72#define GATE_IP_DISP1 0x10928 73#define GATE_IP_DISP1 0x10928
73#define GATE_IP_MFC 0x1092c 74#define GATE_IP_MFC 0x1092c
75#define GATE_IP_G3D 0x10930
74#define GATE_IP_GEN 0x10934 76#define GATE_IP_GEN 0x10934
75#define GATE_IP_FSYS 0x10944 77#define GATE_IP_FSYS 0x10944
76#define GATE_IP_PERIC 0x10950 78#define GATE_IP_PERIC 0x10950
@@ -100,6 +102,7 @@ static unsigned long exynos5250_clk_regs[] __initdata = {
100 DIV_CPU0, 102 DIV_CPU0,
101 SRC_CORE1, 103 SRC_CORE1,
102 SRC_TOP0, 104 SRC_TOP0,
105 SRC_TOP1,
103 SRC_TOP2, 106 SRC_TOP2,
104 SRC_TOP3, 107 SRC_TOP3,
105 SRC_GSCL, 108 SRC_GSCL,
@@ -133,6 +136,7 @@ static unsigned long exynos5250_clk_regs[] __initdata = {
133 DIV_PERIC5, 136 DIV_PERIC5,
134 GATE_IP_GSCL, 137 GATE_IP_GSCL,
135 GATE_IP_MFC, 138 GATE_IP_MFC,
139 GATE_IP_G3D,
136 GATE_IP_GEN, 140 GATE_IP_GEN,
137 GATE_IP_FSYS, 141 GATE_IP_FSYS,
138 GATE_IP_PERIC, 142 GATE_IP_PERIC,
@@ -189,10 +193,12 @@ PNAME(mout_vpllsrc_p) = { "fin_pll", "sclk_hdmi27m" };
189PNAME(mout_vpll_p) = { "mout_vpllsrc", "fout_vpll" }; 193PNAME(mout_vpll_p) = { "mout_vpllsrc", "fout_vpll" };
190PNAME(mout_cpll_p) = { "fin_pll", "fout_cpll" }; 194PNAME(mout_cpll_p) = { "fin_pll", "fout_cpll" };
191PNAME(mout_epll_p) = { "fin_pll", "fout_epll" }; 195PNAME(mout_epll_p) = { "fin_pll", "fout_epll" };
196PNAME(mout_gpll_p) = { "fin_pll", "fout_gpll" };
192PNAME(mout_mpll_user_p) = { "fin_pll", "mout_mpll" }; 197PNAME(mout_mpll_user_p) = { "fin_pll", "mout_mpll" };
193PNAME(mout_bpll_user_p) = { "fin_pll", "mout_bpll" }; 198PNAME(mout_bpll_user_p) = { "fin_pll", "mout_bpll" };
194PNAME(mout_aclk166_p) = { "mout_cpll", "mout_mpll_user" }; 199PNAME(mout_aclk166_p) = { "mout_cpll", "mout_mpll_user" };
195PNAME(mout_aclk200_p) = { "mout_mpll_user", "mout_bpll_user" }; 200PNAME(mout_aclk200_p) = { "mout_mpll_user", "mout_bpll_user" };
201PNAME(mout_aclk400_p) = { "mout_aclk400_g3d_mid", "mout_gpll" };
196PNAME(mout_aclk200_sub_p) = { "fin_pll", "div_aclk200" }; 202PNAME(mout_aclk200_sub_p) = { "fin_pll", "div_aclk200" };
197PNAME(mout_aclk266_sub_p) = { "fin_pll", "div_aclk266" }; 203PNAME(mout_aclk266_sub_p) = { "fin_pll", "div_aclk266" };
198PNAME(mout_aclk333_sub_p) = { "fin_pll", "div_aclk333" }; 204PNAME(mout_aclk333_sub_p) = { "fin_pll", "div_aclk333" };
@@ -273,12 +279,16 @@ static struct samsung_mux_clock exynos5250_mux_clks[] __initdata = {
273 MUX(0, "mout_aclk166", mout_aclk166_p, SRC_TOP0, 8, 1), 279 MUX(0, "mout_aclk166", mout_aclk166_p, SRC_TOP0, 8, 1),
274 MUX(0, "mout_aclk200", mout_aclk200_p, SRC_TOP0, 12, 1), 280 MUX(0, "mout_aclk200", mout_aclk200_p, SRC_TOP0, 12, 1),
275 MUX(0, "mout_aclk333", mout_aclk166_p, SRC_TOP0, 16, 1), 281 MUX(0, "mout_aclk333", mout_aclk166_p, SRC_TOP0, 16, 1),
282 MUX(0, "mout_aclk400_g3d_mid", mout_aclk200_p, SRC_TOP0, 20, 1),
283
284 MUX(0, "mout_aclk400_g3d", mout_aclk400_p, SRC_TOP1, 28, 1),
276 285
277 MUX(0, "mout_cpll", mout_cpll_p, SRC_TOP2, 8, 1), 286 MUX(0, "mout_cpll", mout_cpll_p, SRC_TOP2, 8, 1),
278 MUX(0, "mout_epll", mout_epll_p, SRC_TOP2, 12, 1), 287 MUX(0, "mout_epll", mout_epll_p, SRC_TOP2, 12, 1),
279 MUX(0, "mout_vpll", mout_vpll_p, SRC_TOP2, 16, 1), 288 MUX(0, "mout_vpll", mout_vpll_p, SRC_TOP2, 16, 1),
280 MUX(0, "mout_mpll_user", mout_mpll_user_p, SRC_TOP2, 20, 1), 289 MUX(0, "mout_mpll_user", mout_mpll_user_p, SRC_TOP2, 20, 1),
281 MUX(0, "mout_bpll_user", mout_bpll_user_p, SRC_TOP2, 24, 1), 290 MUX(0, "mout_bpll_user", mout_bpll_user_p, SRC_TOP2, 24, 1),
291 MUX(CLK_MOUT_GPLL, "mout_gpll", mout_gpll_p, SRC_TOP2, 28, 1),
282 292
283 MUX(0, "mout_aclk200_disp1_sub", mout_aclk200_sub_p, SRC_TOP3, 4, 1), 293 MUX(0, "mout_aclk200_disp1_sub", mout_aclk200_sub_p, SRC_TOP3, 4, 1),
284 MUX(0, "mout_aclk266_gscl_sub", mout_aclk266_sub_p, SRC_TOP3, 8, 1), 294 MUX(0, "mout_aclk266_gscl_sub", mout_aclk266_sub_p, SRC_TOP3, 8, 1),
@@ -351,6 +361,8 @@ static struct samsung_div_clock exynos5250_div_clks[] __initdata = {
351 DIV(0, "div_aclk200", "mout_aclk200", DIV_TOP0, 12, 3), 361 DIV(0, "div_aclk200", "mout_aclk200", DIV_TOP0, 12, 3),
352 DIV(0, "div_aclk266", "mout_mpll_user", DIV_TOP0, 16, 3), 362 DIV(0, "div_aclk266", "mout_mpll_user", DIV_TOP0, 16, 3),
353 DIV(0, "div_aclk333", "mout_aclk333", DIV_TOP0, 20, 3), 363 DIV(0, "div_aclk333", "mout_aclk333", DIV_TOP0, 20, 3),
364 DIV(0, "div_aclk400_g3d", "mout_aclk400_g3d", DIV_TOP0,
365 24, 3),
354 366
355 DIV(0, "div_aclk66_pre", "mout_mpll_user", DIV_TOP1, 24, 3), 367 DIV(0, "div_aclk66_pre", "mout_mpll_user", DIV_TOP1, 24, 3),
356 368
@@ -428,6 +440,7 @@ static struct samsung_gate_clock exynos5250_gate_clks[] __initdata = {
428 * CMU_ACP 440 * CMU_ACP
429 */ 441 */
430 GATE(CLK_MDMA0, "mdma0", "div_aclk266", GATE_IP_ACP, 1, 0, 0), 442 GATE(CLK_MDMA0, "mdma0", "div_aclk266", GATE_IP_ACP, 1, 0, 0),
443 GATE(CLK_SSS, "sss", "div_aclk266", GATE_IP_ACP, 2, 0, 0),
431 GATE(CLK_G2D, "g2d", "div_aclk200", GATE_IP_ACP, 3, 0, 0), 444 GATE(CLK_G2D, "g2d", "div_aclk200", GATE_IP_ACP, 3, 0, 0),
432 GATE(CLK_SMMU_MDMA0, "smmu_mdma0", "div_aclk266", GATE_IP_ACP, 5, 0, 0), 445 GATE(CLK_SMMU_MDMA0, "smmu_mdma0", "div_aclk266", GATE_IP_ACP, 5, 0, 0),
433 446
@@ -533,7 +546,8 @@ static struct samsung_gate_clock exynos5250_gate_clks[] __initdata = {
533 0), 546 0),
534 GATE(CLK_SMMU_MFCL, "smmu_mfcl", "mout_aclk333_sub", GATE_IP_MFC, 2, 0, 547 GATE(CLK_SMMU_MFCL, "smmu_mfcl", "mout_aclk333_sub", GATE_IP_MFC, 2, 0,
535 0), 548 0),
536 549 GATE(CLK_G3D, "g3d", "div_aclk400_g3d", GATE_IP_G3D, 0,
550 CLK_SET_RATE_PARENT, 0),
537 GATE(CLK_ROTATOR, "rotator", "div_aclk266", GATE_IP_GEN, 1, 0, 0), 551 GATE(CLK_ROTATOR, "rotator", "div_aclk266", GATE_IP_GEN, 1, 0, 0),
538 GATE(CLK_JPEG, "jpeg", "div_aclk166", GATE_IP_GEN, 2, 0, 0), 552 GATE(CLK_JPEG, "jpeg", "div_aclk166", GATE_IP_GEN, 2, 0, 0),
539 GATE(CLK_MDMA1, "mdma1", "div_aclk266", GATE_IP_GEN, 4, 0, 0), 553 GATE(CLK_MDMA1, "mdma1", "div_aclk266", GATE_IP_GEN, 4, 0, 0),
diff --git a/drivers/clk/samsung/clk-exynos5420.c b/drivers/clk/samsung/clk-exynos5420.c
index c3e0894d0279..1c3674ecc0dc 100644
--- a/drivers/clk/samsung/clk-exynos5420.c
+++ b/drivers/clk/samsung/clk-exynos5420.c
@@ -27,18 +27,24 @@
27#define DIV_CPU1 0x504 27#define DIV_CPU1 0x504
28#define GATE_BUS_CPU 0x700 28#define GATE_BUS_CPU 0x700
29#define GATE_SCLK_CPU 0x800 29#define GATE_SCLK_CPU 0x800
30#define CLKOUT_CMU_CPU 0xa00
31#define GATE_IP_G2D 0x8800
30#define CPLL_LOCK 0x10020 32#define CPLL_LOCK 0x10020
31#define DPLL_LOCK 0x10030 33#define DPLL_LOCK 0x10030
32#define EPLL_LOCK 0x10040 34#define EPLL_LOCK 0x10040
33#define RPLL_LOCK 0x10050 35#define RPLL_LOCK 0x10050
34#define IPLL_LOCK 0x10060 36#define IPLL_LOCK 0x10060
35#define SPLL_LOCK 0x10070 37#define SPLL_LOCK 0x10070
36#define VPLL_LOCK 0x10070 38#define VPLL_LOCK 0x10080
37#define MPLL_LOCK 0x10090 39#define MPLL_LOCK 0x10090
38#define CPLL_CON0 0x10120 40#define CPLL_CON0 0x10120
39#define DPLL_CON0 0x10128 41#define DPLL_CON0 0x10128
40#define EPLL_CON0 0x10130 42#define EPLL_CON0 0x10130
43#define EPLL_CON1 0x10134
44#define EPLL_CON2 0x10138
41#define RPLL_CON0 0x10140 45#define RPLL_CON0 0x10140
46#define RPLL_CON1 0x10144
47#define RPLL_CON2 0x10148
42#define IPLL_CON0 0x10150 48#define IPLL_CON0 0x10150
43#define SPLL_CON0 0x10160 49#define SPLL_CON0 0x10160
44#define VPLL_CON0 0x10170 50#define VPLL_CON0 0x10170
@@ -56,10 +62,14 @@
56#define SRC_FSYS 0x10244 62#define SRC_FSYS 0x10244
57#define SRC_PERIC0 0x10250 63#define SRC_PERIC0 0x10250
58#define SRC_PERIC1 0x10254 64#define SRC_PERIC1 0x10254
65#define SRC_ISP 0x10270
59#define SRC_TOP10 0x10280 66#define SRC_TOP10 0x10280
60#define SRC_TOP11 0x10284 67#define SRC_TOP11 0x10284
61#define SRC_TOP12 0x10288 68#define SRC_TOP12 0x10288
62#define SRC_MASK_DISP10 0x1032c 69#define SRC_MASK_TOP2 0x10308
70#define SRC_MASK_TOP7 0x1031c
71#define SRC_MASK_DISP10 0x1032c
72#define SRC_MASK_MAU 0x10334
63#define SRC_MASK_FSYS 0x10340 73#define SRC_MASK_FSYS 0x10340
64#define SRC_MASK_PERIC0 0x10350 74#define SRC_MASK_PERIC0 0x10350
65#define SRC_MASK_PERIC1 0x10354 75#define SRC_MASK_PERIC1 0x10354
@@ -76,27 +86,38 @@
76#define DIV_PERIC2 0x10560 86#define DIV_PERIC2 0x10560
77#define DIV_PERIC3 0x10564 87#define DIV_PERIC3 0x10564
78#define DIV_PERIC4 0x10568 88#define DIV_PERIC4 0x10568
89#define SCLK_DIV_ISP0 0x10580
90#define SCLK_DIV_ISP1 0x10584
91#define DIV2_RATIO0 0x10590
92#define DIV4_RATIO 0x105a0
79#define GATE_BUS_TOP 0x10700 93#define GATE_BUS_TOP 0x10700
94#define GATE_BUS_GEN 0x1073c
80#define GATE_BUS_FSYS0 0x10740 95#define GATE_BUS_FSYS0 0x10740
96#define GATE_BUS_FSYS2 0x10748
81#define GATE_BUS_PERIC 0x10750 97#define GATE_BUS_PERIC 0x10750
82#define GATE_BUS_PERIC1 0x10754 98#define GATE_BUS_PERIC1 0x10754
83#define GATE_BUS_PERIS0 0x10760 99#define GATE_BUS_PERIS0 0x10760
84#define GATE_BUS_PERIS1 0x10764 100#define GATE_BUS_PERIS1 0x10764
101#define GATE_BUS_NOC 0x10770
102#define GATE_TOP_SCLK_ISP 0x10870
85#define GATE_IP_GSCL0 0x10910 103#define GATE_IP_GSCL0 0x10910
86#define GATE_IP_GSCL1 0x10920 104#define GATE_IP_GSCL1 0x10920
87#define GATE_IP_MFC 0x1092c 105#define GATE_IP_MFC 0x1092c
88#define GATE_IP_DISP1 0x10928 106#define GATE_IP_DISP1 0x10928
89#define GATE_IP_G3D 0x10930 107#define GATE_IP_G3D 0x10930
90#define GATE_IP_GEN 0x10934 108#define GATE_IP_GEN 0x10934
109#define GATE_IP_FSYS 0x10944
110#define GATE_IP_PERIC 0x10950
111#define GATE_IP_PERIS 0x10960
91#define GATE_IP_MSCL 0x10970 112#define GATE_IP_MSCL 0x10970
92#define GATE_TOP_SCLK_GSCL 0x10820 113#define GATE_TOP_SCLK_GSCL 0x10820
93#define GATE_TOP_SCLK_DISP1 0x10828 114#define GATE_TOP_SCLK_DISP1 0x10828
94#define GATE_TOP_SCLK_MAU 0x1083c 115#define GATE_TOP_SCLK_MAU 0x1083c
95#define GATE_TOP_SCLK_FSYS 0x10840 116#define GATE_TOP_SCLK_FSYS 0x10840
96#define GATE_TOP_SCLK_PERIC 0x10850 117#define GATE_TOP_SCLK_PERIC 0x10850
118#define TOP_SPARE2 0x10b08
97#define BPLL_LOCK 0x20010 119#define BPLL_LOCK 0x20010
98#define BPLL_CON0 0x20110 120#define BPLL_CON0 0x20110
99#define SRC_CDREX 0x20200
100#define KPLL_LOCK 0x28000 121#define KPLL_LOCK 0x28000
101#define KPLL_CON0 0x28100 122#define KPLL_CON0 0x28100
102#define SRC_KFC 0x28200 123#define SRC_KFC 0x28200
@@ -124,6 +145,13 @@ static unsigned long exynos5420_clk_regs[] __initdata = {
124 DIV_CPU1, 145 DIV_CPU1,
125 GATE_BUS_CPU, 146 GATE_BUS_CPU,
126 GATE_SCLK_CPU, 147 GATE_SCLK_CPU,
148 CLKOUT_CMU_CPU,
149 EPLL_CON0,
150 EPLL_CON1,
151 EPLL_CON2,
152 RPLL_CON0,
153 RPLL_CON1,
154 RPLL_CON2,
127 SRC_TOP0, 155 SRC_TOP0,
128 SRC_TOP1, 156 SRC_TOP1,
129 SRC_TOP2, 157 SRC_TOP2,
@@ -140,10 +168,13 @@ static unsigned long exynos5420_clk_regs[] __initdata = {
140 SRC_TOP10, 168 SRC_TOP10,
141 SRC_TOP11, 169 SRC_TOP11,
142 SRC_TOP12, 170 SRC_TOP12,
171 SRC_MASK_TOP2,
172 SRC_MASK_TOP7,
143 SRC_MASK_DISP10, 173 SRC_MASK_DISP10,
144 SRC_MASK_FSYS, 174 SRC_MASK_FSYS,
145 SRC_MASK_PERIC0, 175 SRC_MASK_PERIC0,
146 SRC_MASK_PERIC1, 176 SRC_MASK_PERIC1,
177 SRC_ISP,
147 DIV_TOP0, 178 DIV_TOP0,
148 DIV_TOP1, 179 DIV_TOP1,
149 DIV_TOP2, 180 DIV_TOP2,
@@ -157,25 +188,36 @@ static unsigned long exynos5420_clk_regs[] __initdata = {
157 DIV_PERIC2, 188 DIV_PERIC2,
158 DIV_PERIC3, 189 DIV_PERIC3,
159 DIV_PERIC4, 190 DIV_PERIC4,
191 SCLK_DIV_ISP0,
192 SCLK_DIV_ISP1,
193 DIV2_RATIO0,
194 DIV4_RATIO,
160 GATE_BUS_TOP, 195 GATE_BUS_TOP,
196 GATE_BUS_GEN,
161 GATE_BUS_FSYS0, 197 GATE_BUS_FSYS0,
198 GATE_BUS_FSYS2,
162 GATE_BUS_PERIC, 199 GATE_BUS_PERIC,
163 GATE_BUS_PERIC1, 200 GATE_BUS_PERIC1,
164 GATE_BUS_PERIS0, 201 GATE_BUS_PERIS0,
165 GATE_BUS_PERIS1, 202 GATE_BUS_PERIS1,
203 GATE_BUS_NOC,
204 GATE_TOP_SCLK_ISP,
166 GATE_IP_GSCL0, 205 GATE_IP_GSCL0,
167 GATE_IP_GSCL1, 206 GATE_IP_GSCL1,
168 GATE_IP_MFC, 207 GATE_IP_MFC,
169 GATE_IP_DISP1, 208 GATE_IP_DISP1,
170 GATE_IP_G3D, 209 GATE_IP_G3D,
171 GATE_IP_GEN, 210 GATE_IP_GEN,
211 GATE_IP_FSYS,
212 GATE_IP_PERIC,
213 GATE_IP_PERIS,
172 GATE_IP_MSCL, 214 GATE_IP_MSCL,
173 GATE_TOP_SCLK_GSCL, 215 GATE_TOP_SCLK_GSCL,
174 GATE_TOP_SCLK_DISP1, 216 GATE_TOP_SCLK_DISP1,
175 GATE_TOP_SCLK_MAU, 217 GATE_TOP_SCLK_MAU,
176 GATE_TOP_SCLK_FSYS, 218 GATE_TOP_SCLK_FSYS,
177 GATE_TOP_SCLK_PERIC, 219 GATE_TOP_SCLK_PERIC,
178 SRC_CDREX, 220 TOP_SPARE2,
179 SRC_KFC, 221 SRC_KFC,
180 DIV_KFC0, 222 DIV_KFC0,
181}; 223};
@@ -216,85 +258,117 @@ static void exynos5420_clk_sleep_init(void) {}
216#endif 258#endif
217 259
218/* list of all parent clocks */ 260/* list of all parent clocks */
219PNAME(mspll_cpu_p) = { "sclk_cpll", "sclk_dpll", 261PNAME(mout_mspll_cpu_p) = {"mout_sclk_cpll", "mout_sclk_dpll",
220 "sclk_mpll", "sclk_spll" }; 262 "mout_sclk_mpll", "mout_sclk_spll"};
221PNAME(cpu_p) = { "mout_apll" , "mout_mspll_cpu" }; 263PNAME(mout_cpu_p) = {"mout_apll" , "mout_mspll_cpu"};
222PNAME(kfc_p) = { "mout_kpll" , "mout_mspll_kfc" }; 264PNAME(mout_kfc_p) = {"mout_kpll" , "mout_mspll_kfc"};
223PNAME(apll_p) = { "fin_pll", "fout_apll", }; 265PNAME(mout_apll_p) = {"fin_pll", "fout_apll"};
224PNAME(bpll_p) = { "fin_pll", "fout_bpll", }; 266PNAME(mout_bpll_p) = {"fin_pll", "fout_bpll"};
225PNAME(cpll_p) = { "fin_pll", "fout_cpll", }; 267PNAME(mout_cpll_p) = {"fin_pll", "fout_cpll"};
226PNAME(dpll_p) = { "fin_pll", "fout_dpll", }; 268PNAME(mout_dpll_p) = {"fin_pll", "fout_dpll"};
227PNAME(epll_p) = { "fin_pll", "fout_epll", }; 269PNAME(mout_epll_p) = {"fin_pll", "fout_epll"};
228PNAME(ipll_p) = { "fin_pll", "fout_ipll", }; 270PNAME(mout_ipll_p) = {"fin_pll", "fout_ipll"};
229PNAME(kpll_p) = { "fin_pll", "fout_kpll", }; 271PNAME(mout_kpll_p) = {"fin_pll", "fout_kpll"};
230PNAME(mpll_p) = { "fin_pll", "fout_mpll", }; 272PNAME(mout_mpll_p) = {"fin_pll", "fout_mpll"};
231PNAME(rpll_p) = { "fin_pll", "fout_rpll", }; 273PNAME(mout_rpll_p) = {"fin_pll", "fout_rpll"};
232PNAME(spll_p) = { "fin_pll", "fout_spll", }; 274PNAME(mout_spll_p) = {"fin_pll", "fout_spll"};
233PNAME(vpll_p) = { "fin_pll", "fout_vpll", }; 275PNAME(mout_vpll_p) = {"fin_pll", "fout_vpll"};
234 276
235PNAME(group1_p) = { "sclk_cpll", "sclk_dpll", "sclk_mpll" }; 277PNAME(mout_group1_p) = {"mout_sclk_cpll", "mout_sclk_dpll",
236PNAME(group2_p) = { "fin_pll", "sclk_cpll", "sclk_dpll", "sclk_mpll", 278 "mout_sclk_mpll"};
237 "sclk_spll", "sclk_ipll", "sclk_epll", "sclk_rpll" }; 279PNAME(mout_group2_p) = {"fin_pll", "mout_sclk_cpll",
238PNAME(group3_p) = { "sclk_rpll", "sclk_spll" }; 280 "mout_sclk_dpll", "mout_sclk_mpll", "mout_sclk_spll",
239PNAME(group4_p) = { "sclk_ipll", "sclk_dpll", "sclk_mpll" }; 281 "mout_sclk_ipll", "mout_sclk_epll", "mout_sclk_rpll"};
240PNAME(group5_p) = { "sclk_vpll", "sclk_dpll" }; 282PNAME(mout_group3_p) = {"mout_sclk_rpll", "mout_sclk_spll"};
241 283PNAME(mout_group4_p) = {"mout_sclk_ipll", "mout_sclk_dpll", "mout_sclk_mpll"};
242PNAME(sw_aclk66_p) = { "dout_aclk66", "sclk_spll" }; 284PNAME(mout_group5_p) = {"mout_sclk_vpll", "mout_sclk_dpll"};
243PNAME(aclk66_peric_p) = { "fin_pll", "mout_sw_aclk66" }; 285
244 286PNAME(mout_fimd1_final_p) = {"mout_fimd1", "mout_fimd1_opt"};
245PNAME(sw_aclk200_fsys_p) = { "dout_aclk200_fsys", "sclk_spll"}; 287PNAME(mout_sw_aclk66_p) = {"dout_aclk66", "mout_sclk_spll"};
246PNAME(user_aclk200_fsys_p) = { "fin_pll", "mout_sw_aclk200_fsys" }; 288PNAME(mout_user_aclk66_peric_p) = { "fin_pll", "mout_sw_aclk66"};
247 289PNAME(mout_user_pclk66_gpio_p) = {"mout_sw_aclk66", "ff_sw_aclk66"};
248PNAME(sw_aclk200_fsys2_p) = { "dout_aclk200_fsys2", "sclk_spll"}; 290
249PNAME(user_aclk200_fsys2_p) = { "fin_pll", "mout_sw_aclk200_fsys2" }; 291PNAME(mout_sw_aclk200_fsys_p) = {"dout_aclk200_fsys", "mout_sclk_spll"};
250 292PNAME(mout_sw_pclk200_fsys_p) = {"dout_pclk200_fsys", "mout_sclk_spll"};
251PNAME(sw_aclk200_p) = { "dout_aclk200", "sclk_spll"}; 293PNAME(mout_user_pclk200_fsys_p) = {"fin_pll", "mout_sw_pclk200_fsys"};
252PNAME(aclk200_disp1_p) = { "fin_pll", "mout_sw_aclk200" }; 294PNAME(mout_user_aclk200_fsys_p) = {"fin_pll", "mout_sw_aclk200_fsys"};
253 295
254PNAME(sw_aclk400_mscl_p) = { "dout_aclk400_mscl", "sclk_spll"}; 296PNAME(mout_sw_aclk200_fsys2_p) = {"dout_aclk200_fsys2", "mout_sclk_spll"};
255PNAME(user_aclk400_mscl_p) = { "fin_pll", "mout_sw_aclk400_mscl" }; 297PNAME(mout_user_aclk200_fsys2_p) = {"fin_pll", "mout_sw_aclk200_fsys2"};
256 298PNAME(mout_sw_aclk100_noc_p) = {"dout_aclk100_noc", "mout_sclk_spll"};
257PNAME(sw_aclk333_p) = { "dout_aclk333", "sclk_spll"}; 299PNAME(mout_user_aclk100_noc_p) = {"fin_pll", "mout_sw_aclk100_noc"};
258PNAME(user_aclk333_p) = { "fin_pll", "mout_sw_aclk333" }; 300
259 301PNAME(mout_sw_aclk400_wcore_p) = {"dout_aclk400_wcore", "mout_sclk_spll"};
260PNAME(sw_aclk166_p) = { "dout_aclk166", "sclk_spll"}; 302PNAME(mout_aclk400_wcore_bpll_p) = {"mout_aclk400_wcore", "sclk_bpll"};
261PNAME(user_aclk166_p) = { "fin_pll", "mout_sw_aclk166" }; 303PNAME(mout_user_aclk400_wcore_p) = {"fin_pll", "mout_sw_aclk400_wcore"};
262 304
263PNAME(sw_aclk266_p) = { "dout_aclk266", "sclk_spll"}; 305PNAME(mout_sw_aclk400_isp_p) = {"dout_aclk400_isp", "mout_sclk_spll"};
264PNAME(user_aclk266_p) = { "fin_pll", "mout_sw_aclk266" }; 306PNAME(mout_user_aclk400_isp_p) = {"fin_pll", "mout_sw_aclk400_isp"};
265 307
266PNAME(sw_aclk333_432_gscl_p) = { "dout_aclk333_432_gscl", "sclk_spll"}; 308PNAME(mout_sw_aclk333_432_isp0_p) = {"dout_aclk333_432_isp0",
267PNAME(user_aclk333_432_gscl_p) = { "fin_pll", "mout_sw_aclk333_432_gscl" }; 309 "mout_sclk_spll"};
268 310PNAME(mout_user_aclk333_432_isp0_p) = {"fin_pll", "mout_sw_aclk333_432_isp0"};
269PNAME(sw_aclk300_gscl_p) = { "dout_aclk300_gscl", "sclk_spll"}; 311
270PNAME(user_aclk300_gscl_p) = { "fin_pll", "mout_sw_aclk300_gscl" }; 312PNAME(mout_sw_aclk333_432_isp_p) = {"dout_aclk333_432_isp", "mout_sclk_spll"};
271 313PNAME(mout_user_aclk333_432_isp_p) = {"fin_pll", "mout_sw_aclk333_432_isp"};
272PNAME(sw_aclk300_disp1_p) = { "dout_aclk300_disp1", "sclk_spll"}; 314
273PNAME(user_aclk300_disp1_p) = { "fin_pll", "mout_sw_aclk300_disp1" }; 315PNAME(mout_sw_aclk200_p) = {"dout_aclk200", "mout_sclk_spll"};
274 316PNAME(mout_user_aclk200_disp1_p) = {"fin_pll", "mout_sw_aclk200"};
275PNAME(sw_aclk300_jpeg_p) = { "dout_aclk300_jpeg", "sclk_spll"}; 317
276PNAME(user_aclk300_jpeg_p) = { "fin_pll", "mout_sw_aclk300_jpeg" }; 318PNAME(mout_sw_aclk400_mscl_p) = {"dout_aclk400_mscl", "mout_sclk_spll"};
277 319PNAME(mout_user_aclk400_mscl_p) = {"fin_pll", "mout_sw_aclk400_mscl"};
278PNAME(sw_aclk_g3d_p) = { "dout_aclk_g3d", "sclk_spll"}; 320
279PNAME(user_aclk_g3d_p) = { "fin_pll", "mout_sw_aclk_g3d" }; 321PNAME(mout_sw_aclk333_p) = {"dout_aclk333", "mout_sclk_spll"};
280 322PNAME(mout_user_aclk333_p) = {"fin_pll", "mout_sw_aclk333"};
281PNAME(sw_aclk266_g2d_p) = { "dout_aclk266_g2d", "sclk_spll"}; 323
282PNAME(user_aclk266_g2d_p) = { "fin_pll", "mout_sw_aclk266_g2d" }; 324PNAME(mout_sw_aclk166_p) = {"dout_aclk166", "mout_sclk_spll"};
283 325PNAME(mout_user_aclk166_p) = {"fin_pll", "mout_sw_aclk166"};
284PNAME(sw_aclk333_g2d_p) = { "dout_aclk333_g2d", "sclk_spll"}; 326
285PNAME(user_aclk333_g2d_p) = { "fin_pll", "mout_sw_aclk333_g2d" }; 327PNAME(mout_sw_aclk266_p) = {"dout_aclk266", "mout_sclk_spll"};
286 328PNAME(mout_user_aclk266_p) = {"fin_pll", "mout_sw_aclk266"};
287PNAME(audio0_p) = { "fin_pll", "cdclk0", "sclk_dpll", "sclk_mpll", 329PNAME(mout_user_aclk266_isp_p) = {"fin_pll", "mout_sw_aclk266"};
288 "sclk_spll", "sclk_ipll", "sclk_epll", "sclk_rpll" }; 330
289PNAME(audio1_p) = { "fin_pll", "cdclk1", "sclk_dpll", "sclk_mpll", 331PNAME(mout_sw_aclk333_432_gscl_p) = {"dout_aclk333_432_gscl", "mout_sclk_spll"};
290 "sclk_spll", "sclk_ipll", "sclk_epll", "sclk_rpll" }; 332PNAME(mout_user_aclk333_432_gscl_p) = {"fin_pll", "mout_sw_aclk333_432_gscl"};
291PNAME(audio2_p) = { "fin_pll", "cdclk2", "sclk_dpll", "sclk_mpll", 333
292 "sclk_spll", "sclk_ipll", "sclk_epll", "sclk_rpll" }; 334PNAME(mout_sw_aclk300_gscl_p) = {"dout_aclk300_gscl", "mout_sclk_spll"};
293PNAME(spdif_p) = { "fin_pll", "dout_audio0", "dout_audio1", "dout_audio2", 335PNAME(mout_user_aclk300_gscl_p) = {"fin_pll", "mout_sw_aclk300_gscl"};
294 "spdif_extclk", "sclk_ipll", "sclk_epll", "sclk_rpll" }; 336
295PNAME(hdmi_p) = { "dout_hdmi_pixel", "sclk_hdmiphy" }; 337PNAME(mout_sw_aclk300_disp1_p) = {"dout_aclk300_disp1", "mout_sclk_spll"};
296PNAME(maudio0_p) = { "fin_pll", "maudio_clk", "sclk_dpll", "sclk_mpll", 338PNAME(mout_sw_aclk400_disp1_p) = {"dout_aclk400_disp1", "mout_sclk_spll"};
297 "sclk_spll", "sclk_ipll", "sclk_epll", "sclk_rpll" }; 339PNAME(mout_user_aclk300_disp1_p) = {"fin_pll", "mout_sw_aclk300_disp1"};
340PNAME(mout_user_aclk400_disp1_p) = {"fin_pll", "mout_sw_aclk400_disp1"};
341
342PNAME(mout_sw_aclk300_jpeg_p) = {"dout_aclk300_jpeg", "mout_sclk_spll"};
343PNAME(mout_user_aclk300_jpeg_p) = {"fin_pll", "mout_sw_aclk300_jpeg"};
344
345PNAME(mout_sw_aclk_g3d_p) = {"dout_aclk_g3d", "mout_sclk_spll"};
346PNAME(mout_user_aclk_g3d_p) = {"fin_pll", "mout_sw_aclk_g3d"};
347
348PNAME(mout_sw_aclk266_g2d_p) = {"dout_aclk266_g2d", "mout_sclk_spll"};
349PNAME(mout_user_aclk266_g2d_p) = {"fin_pll", "mout_sw_aclk266_g2d"};
350
351PNAME(mout_sw_aclk333_g2d_p) = {"dout_aclk333_g2d", "mout_sclk_spll"};
352PNAME(mout_user_aclk333_g2d_p) = {"fin_pll", "mout_sw_aclk333_g2d"};
353
354PNAME(mout_audio0_p) = {"fin_pll", "cdclk0", "mout_sclk_dpll",
355 "mout_sclk_mpll", "mout_sclk_spll", "mout_sclk_ipll",
356 "mout_sclk_epll", "mout_sclk_rpll"};
357PNAME(mout_audio1_p) = {"fin_pll", "cdclk1", "mout_sclk_dpll",
358 "mout_sclk_mpll", "mout_sclk_spll", "mout_sclk_ipll",
359 "mout_sclk_epll", "mout_sclk_rpll"};
360PNAME(mout_audio2_p) = {"fin_pll", "cdclk2", "mout_sclk_dpll",
361 "mout_sclk_mpll", "mout_sclk_spll", "mout_sclk_ipll",
362 "mout_sclk_epll", "mout_sclk_rpll"};
363PNAME(mout_spdif_p) = {"fin_pll", "dout_audio0", "dout_audio1",
364 "dout_audio2", "spdif_extclk", "mout_sclk_ipll",
365 "mout_sclk_epll", "mout_sclk_rpll"};
366PNAME(mout_hdmi_p) = {"dout_hdmi_pixel", "sclk_hdmiphy"};
367PNAME(mout_maudio0_p) = {"fin_pll", "maudio_clk", "mout_sclk_dpll",
368 "mout_sclk_mpll", "mout_sclk_spll", "mout_sclk_ipll",
369 "mout_sclk_epll", "mout_sclk_rpll"};
370PNAME(mout_mau_epll_clk_p) = {"mout_sclk_epll", "mout_sclk_dpll",
371 "mout_sclk_mpll", "mout_sclk_spll"};
298 372
299/* fixed rate clocks generated outside the soc */ 373/* fixed rate clocks generated outside the soc */
300static struct samsung_fixed_rate_clock exynos5420_fixed_rate_ext_clks[] __initdata = { 374static struct samsung_fixed_rate_clock exynos5420_fixed_rate_ext_clks[] __initdata = {
@@ -311,145 +385,219 @@ static struct samsung_fixed_rate_clock exynos5420_fixed_rate_clks[] __initdata =
311}; 385};
312 386
313static struct samsung_fixed_factor_clock exynos5420_fixed_factor_clks[] __initdata = { 387static struct samsung_fixed_factor_clock exynos5420_fixed_factor_clks[] __initdata = {
314 FFACTOR(0, "sclk_hsic_12m", "fin_pll", 1, 2, 0), 388 FFACTOR(0, "ff_hsic_12m", "fin_pll", 1, 2, 0),
389 FFACTOR(0, "ff_sw_aclk66", "mout_sw_aclk66", 1, 2, 0),
315}; 390};
316 391
317static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = { 392static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = {
318 MUX(0, "mout_mspll_kfc", mspll_cpu_p, SRC_TOP7, 8, 2), 393 MUX(0, "mout_user_pclk66_gpio", mout_user_pclk66_gpio_p,
319 MUX(0, "mout_mspll_cpu", mspll_cpu_p, SRC_TOP7, 12, 2), 394 SRC_TOP7, 4, 1),
320 MUX(0, "mout_apll", apll_p, SRC_CPU, 0, 1), 395 MUX(0, "mout_mspll_kfc", mout_mspll_cpu_p, SRC_TOP7, 8, 2),
321 MUX(0, "mout_cpu", cpu_p, SRC_CPU, 16, 1), 396 MUX(0, "mout_mspll_cpu", mout_mspll_cpu_p, SRC_TOP7, 12, 2),
322 MUX(0, "mout_kpll", kpll_p, SRC_KFC, 0, 1), 397 MUX(0, "mout_mau_epll_clk", mout_mau_epll_clk_p, SRC_TOP7, 20, 2),
323 MUX(0, "mout_cpu_kfc", kfc_p, SRC_KFC, 16, 1),
324 398
325 MUX(0, "sclk_bpll", bpll_p, SRC_CDREX, 0, 1), 399 MUX(0, "mout_apll", mout_apll_p, SRC_CPU, 0, 1),
400 MUX(0, "mout_cpu", mout_cpu_p, SRC_CPU, 16, 1),
401 MUX(0, "mout_kpll", mout_kpll_p, SRC_KFC, 0, 1),
402 MUX(0, "mout_kfc", mout_kfc_p, SRC_KFC, 16, 1),
326 403
327 MUX_A(0, "mout_aclk400_mscl", group1_p, 404 MUX(0, "sclk_bpll", mout_bpll_p, TOP_SPARE2, 0, 1),
405
406 MUX(0, "mout_aclk400_isp", mout_group1_p, SRC_TOP0, 0, 2),
407 MUX_A(0, "mout_aclk400_mscl", mout_group1_p,
328 SRC_TOP0, 4, 2, "aclk400_mscl"), 408 SRC_TOP0, 4, 2, "aclk400_mscl"),
329 MUX(0, "mout_aclk200", group1_p, SRC_TOP0, 8, 2), 409 MUX(0, "mout_aclk200", mout_group1_p, SRC_TOP0, 8, 2),
330 MUX(0, "mout_aclk200_fsys2", group1_p, SRC_TOP0, 12, 2), 410 MUX(0, "mout_aclk200_fsys2", mout_group1_p, SRC_TOP0, 12, 2),
331 MUX(0, "mout_aclk200_fsys", group1_p, SRC_TOP0, 28, 2), 411 MUX(0, "mout_aclk400_wcore", mout_group1_p, SRC_TOP0, 16, 2),
332 412 MUX(0, "mout_aclk100_noc", mout_group1_p, SRC_TOP0, 20, 2),
333 MUX(0, "mout_aclk333_432_gscl", group4_p, SRC_TOP1, 0, 2), 413 MUX(0, "mout_pclk200_fsys", mout_group1_p, SRC_TOP0, 24, 2),
334 MUX(0, "mout_aclk66", group1_p, SRC_TOP1, 8, 2), 414 MUX(0, "mout_aclk200_fsys", mout_group1_p, SRC_TOP0, 28, 2),
335 MUX(0, "mout_aclk266", group1_p, SRC_TOP1, 20, 2), 415
336 MUX(0, "mout_aclk166", group1_p, SRC_TOP1, 24, 2), 416 MUX(0, "mout_aclk333_432_gscl", mout_group4_p, SRC_TOP1, 0, 2),
337 MUX(0, "mout_aclk333", group1_p, SRC_TOP1, 28, 2), 417 MUX(0, "mout_aclk333_432_isp", mout_group4_p,
338 418 SRC_TOP1, 4, 2),
339 MUX(0, "mout_aclk333_g2d", group1_p, SRC_TOP2, 8, 2), 419 MUX(0, "mout_aclk66", mout_group1_p, SRC_TOP1, 8, 2),
340 MUX(0, "mout_aclk266_g2d", group1_p, SRC_TOP2, 12, 2), 420 MUX(0, "mout_aclk333_432_isp0", mout_group4_p, SRC_TOP1, 12, 2),
341 MUX(0, "mout_aclk_g3d", group5_p, SRC_TOP2, 16, 1), 421 MUX(0, "mout_aclk266", mout_group1_p, SRC_TOP1, 20, 2),
342 MUX(0, "mout_aclk300_jpeg", group1_p, SRC_TOP2, 20, 2), 422 MUX(0, "mout_aclk166", mout_group1_p, SRC_TOP1, 24, 2),
343 MUX(0, "mout_aclk300_disp1", group1_p, SRC_TOP2, 24, 2), 423 MUX(0, "mout_aclk333", mout_group1_p, SRC_TOP1, 28, 2),
344 MUX(0, "mout_aclk300_gscl", group1_p, SRC_TOP2, 28, 2), 424
345 425 MUX(0, "mout_aclk400_disp1", mout_group1_p, SRC_TOP2, 4, 2),
346 MUX(0, "mout_user_aclk400_mscl", user_aclk400_mscl_p, 426 MUX(0, "mout_aclk333_g2d", mout_group1_p, SRC_TOP2, 8, 2),
427 MUX(0, "mout_aclk266_g2d", mout_group1_p, SRC_TOP2, 12, 2),
428 MUX(0, "mout_aclk_g3d", mout_group5_p, SRC_TOP2, 16, 1),
429 MUX(0, "mout_aclk300_jpeg", mout_group1_p, SRC_TOP2, 20, 2),
430 MUX(0, "mout_aclk300_disp1", mout_group1_p, SRC_TOP2, 24, 2),
431 MUX(0, "mout_aclk300_gscl", mout_group1_p, SRC_TOP2, 28, 2),
432
433 MUX(0, "mout_user_aclk400_isp", mout_user_aclk400_isp_p,
434 SRC_TOP3, 0, 1),
435 MUX(0, "mout_user_aclk400_mscl", mout_user_aclk400_mscl_p,
347 SRC_TOP3, 4, 1), 436 SRC_TOP3, 4, 1),
348 MUX_A(0, "mout_aclk200_disp1", aclk200_disp1_p, 437 MUX(0, "mout_user_aclk200_disp1", mout_user_aclk200_disp1_p,
349 SRC_TOP3, 8, 1, "aclk200_disp1"), 438 SRC_TOP3, 8, 1),
350 MUX(0, "mout_user_aclk200_fsys2", user_aclk200_fsys2_p, 439 MUX(0, "mout_user_aclk200_fsys2", mout_user_aclk200_fsys2_p,
351 SRC_TOP3, 12, 1), 440 SRC_TOP3, 12, 1),
352 MUX(0, "mout_user_aclk200_fsys", user_aclk200_fsys_p, 441 MUX(0, "mout_user_aclk400_wcore", mout_user_aclk400_wcore_p,
442 SRC_TOP3, 16, 1),
443 MUX(0, "mout_user_aclk100_noc", mout_user_aclk100_noc_p,
444 SRC_TOP3, 20, 1),
445 MUX(0, "mout_user_pclk200_fsys", mout_user_pclk200_fsys_p,
446 SRC_TOP3, 24, 1),
447 MUX(0, "mout_user_aclk200_fsys", mout_user_aclk200_fsys_p,
353 SRC_TOP3, 28, 1), 448 SRC_TOP3, 28, 1),
354 449
355 MUX(0, "mout_user_aclk333_432_gscl", user_aclk333_432_gscl_p, 450 MUX(0, "mout_user_aclk333_432_gscl", mout_user_aclk333_432_gscl_p,
356 SRC_TOP4, 0, 1), 451 SRC_TOP4, 0, 1),
357 MUX(0, "mout_aclk66_peric", aclk66_peric_p, SRC_TOP4, 8, 1), 452 MUX(0, "mout_user_aclk333_432_isp", mout_user_aclk333_432_isp_p,
358 MUX(0, "mout_user_aclk266", user_aclk266_p, SRC_TOP4, 20, 1), 453 SRC_TOP4, 4, 1),
359 MUX(0, "mout_user_aclk166", user_aclk166_p, SRC_TOP4, 24, 1), 454 MUX(0, "mout_user_aclk66_peric", mout_user_aclk66_peric_p,
360 MUX(0, "mout_user_aclk333", user_aclk333_p, SRC_TOP4, 28, 1), 455 SRC_TOP4, 8, 1),
361 456 MUX(0, "mout_user_aclk333_432_isp0", mout_user_aclk333_432_isp0_p,
362 MUX(0, "mout_aclk66_psgen", aclk66_peric_p, SRC_TOP5, 4, 1), 457 SRC_TOP4, 12, 1),
363 MUX(0, "mout_user_aclk333_g2d", user_aclk333_g2d_p, SRC_TOP5, 8, 1), 458 MUX(0, "mout_user_aclk266_isp", mout_user_aclk266_isp_p,
364 MUX(0, "mout_user_aclk266_g2d", user_aclk266_g2d_p, SRC_TOP5, 12, 1), 459 SRC_TOP4, 16, 1),
365 MUX_A(0, "mout_user_aclk_g3d", user_aclk_g3d_p, 460 MUX(0, "mout_user_aclk266", mout_user_aclk266_p, SRC_TOP4, 20, 1),
366 SRC_TOP5, 16, 1, "aclkg3d"), 461 MUX(0, "mout_user_aclk166", mout_user_aclk166_p, SRC_TOP4, 24, 1),
367 MUX(0, "mout_user_aclk300_jpeg", user_aclk300_jpeg_p, 462 MUX(0, "mout_user_aclk333", mout_user_aclk333_p, SRC_TOP4, 28, 1),
463
464 MUX(0, "mout_user_aclk400_disp1", mout_user_aclk400_disp1_p,
465 SRC_TOP5, 0, 1),
466 MUX(0, "mout_user_aclk66_psgen", mout_user_aclk66_peric_p,
467 SRC_TOP5, 4, 1),
468 MUX(0, "mout_user_aclk333_g2d", mout_user_aclk333_g2d_p,
469 SRC_TOP5, 8, 1),
470 MUX(0, "mout_user_aclk266_g2d", mout_user_aclk266_g2d_p,
471 SRC_TOP5, 12, 1),
472 MUX(CLK_MOUT_G3D, "mout_user_aclk_g3d", mout_user_aclk_g3d_p,
473 SRC_TOP5, 16, 1),
474 MUX(0, "mout_user_aclk300_jpeg", mout_user_aclk300_jpeg_p,
368 SRC_TOP5, 20, 1), 475 SRC_TOP5, 20, 1),
369 MUX(0, "mout_user_aclk300_disp1", user_aclk300_disp1_p, 476 MUX(0, "mout_user_aclk300_disp1", mout_user_aclk300_disp1_p,
370 SRC_TOP5, 24, 1), 477 SRC_TOP5, 24, 1),
371 MUX(0, "mout_user_aclk300_gscl", user_aclk300_gscl_p, 478 MUX(0, "mout_user_aclk300_gscl", mout_user_aclk300_gscl_p,
372 SRC_TOP5, 28, 1), 479 SRC_TOP5, 28, 1),
373 480
374 MUX(0, "sclk_mpll", mpll_p, SRC_TOP6, 0, 1), 481 MUX(0, "mout_sclk_mpll", mout_mpll_p, SRC_TOP6, 0, 1),
375 MUX(0, "sclk_vpll", vpll_p, SRC_TOP6, 4, 1), 482 MUX(CLK_MOUT_VPLL, "mout_sclk_vpll", mout_vpll_p, SRC_TOP6, 4, 1),
376 MUX(0, "sclk_spll", spll_p, SRC_TOP6, 8, 1), 483 MUX(0, "mout_sclk_spll", mout_spll_p, SRC_TOP6, 8, 1),
377 MUX(0, "sclk_ipll", ipll_p, SRC_TOP6, 12, 1), 484 MUX(0, "mout_sclk_ipll", mout_ipll_p, SRC_TOP6, 12, 1),
378 MUX(0, "sclk_rpll", rpll_p, SRC_TOP6, 16, 1), 485 MUX(0, "mout_sclk_rpll", mout_rpll_p, SRC_TOP6, 16, 1),
379 MUX(0, "sclk_epll", epll_p, SRC_TOP6, 20, 1), 486 MUX(0, "mout_sclk_epll", mout_epll_p, SRC_TOP6, 20, 1),
380 MUX(0, "sclk_dpll", dpll_p, SRC_TOP6, 24, 1), 487 MUX(0, "mout_sclk_dpll", mout_dpll_p, SRC_TOP6, 24, 1),
381 MUX(0, "sclk_cpll", cpll_p, SRC_TOP6, 28, 1), 488 MUX(0, "mout_sclk_cpll", mout_cpll_p, SRC_TOP6, 28, 1),
382 489
383 MUX(0, "mout_sw_aclk400_mscl", sw_aclk400_mscl_p, SRC_TOP10, 4, 1), 490 MUX(0, "mout_sw_aclk400_isp", mout_sw_aclk400_isp_p,
384 MUX(0, "mout_sw_aclk200", sw_aclk200_p, SRC_TOP10, 8, 1), 491 SRC_TOP10, 0, 1),
385 MUX(0, "mout_sw_aclk200_fsys2", sw_aclk200_fsys2_p, 492 MUX(0, "mout_sw_aclk400_mscl", mout_sw_aclk400_mscl_p,
493 SRC_TOP10, 4, 1),
494 MUX(0, "mout_sw_aclk200", mout_sw_aclk200_p, SRC_TOP10, 8, 1),
495 MUX(0, "mout_sw_aclk200_fsys2", mout_sw_aclk200_fsys2_p,
386 SRC_TOP10, 12, 1), 496 SRC_TOP10, 12, 1),
387 MUX(0, "mout_sw_aclk200_fsys", sw_aclk200_fsys_p, SRC_TOP10, 28, 1), 497 MUX(0, "mout_sw_aclk400_wcore", mout_sw_aclk400_wcore_p,
388 498 SRC_TOP10, 16, 1),
389 MUX(0, "mout_sw_aclk333_432_gscl", sw_aclk333_432_gscl_p, 499 MUX(0, "mout_sw_aclk100_noc", mout_sw_aclk100_noc_p,
500 SRC_TOP10, 20, 1),
501 MUX(0, "mout_sw_pclk200_fsys", mout_sw_pclk200_fsys_p,
502 SRC_TOP10, 24, 1),
503 MUX(0, "mout_sw_aclk200_fsys", mout_sw_aclk200_fsys_p,
504 SRC_TOP10, 28, 1),
505
506 MUX(0, "mout_sw_aclk333_432_gscl", mout_sw_aclk333_432_gscl_p,
390 SRC_TOP11, 0, 1), 507 SRC_TOP11, 0, 1),
391 MUX(0, "mout_sw_aclk66", sw_aclk66_p, SRC_TOP11, 8, 1), 508 MUX(0, "mout_sw_aclk333_432_isp", mout_sw_aclk333_432_isp_p,
392 MUX(0, "mout_sw_aclk266", sw_aclk266_p, SRC_TOP11, 20, 1), 509 SRC_TOP11, 4, 1),
393 MUX(0, "mout_sw_aclk166", sw_aclk166_p, SRC_TOP11, 24, 1), 510 MUX(0, "mout_sw_aclk66", mout_sw_aclk66_p, SRC_TOP11, 8, 1),
394 MUX(0, "mout_sw_aclk333", sw_aclk333_p, SRC_TOP11, 28, 1), 511 MUX(0, "mout_sw_aclk333_432_isp0", mout_sw_aclk333_432_isp0_p,
395 512 SRC_TOP11, 12, 1),
396 MUX(0, "mout_sw_aclk333_g2d", sw_aclk333_g2d_p, SRC_TOP12, 8, 1), 513 MUX(0, "mout_sw_aclk266", mout_sw_aclk266_p, SRC_TOP11, 20, 1),
397 MUX(0, "mout_sw_aclk266_g2d", sw_aclk266_g2d_p, SRC_TOP12, 12, 1), 514 MUX(0, "mout_sw_aclk166", mout_sw_aclk166_p, SRC_TOP11, 24, 1),
398 MUX(0, "mout_sw_aclk_g3d", sw_aclk_g3d_p, SRC_TOP12, 16, 1), 515 MUX(0, "mout_sw_aclk333", mout_sw_aclk333_p, SRC_TOP11, 28, 1),
399 MUX(0, "mout_sw_aclk300_jpeg", sw_aclk300_jpeg_p, SRC_TOP12, 20, 1), 516
400 MUX(0, "mout_sw_aclk300_disp1", sw_aclk300_disp1_p, 517 MUX(0, "mout_sw_aclk400_disp1", mout_sw_aclk400_disp1_p,
518 SRC_TOP12, 4, 1),
519 MUX(0, "mout_sw_aclk333_g2d", mout_sw_aclk333_g2d_p,
520 SRC_TOP12, 8, 1),
521 MUX(0, "mout_sw_aclk266_g2d", mout_sw_aclk266_g2d_p,
522 SRC_TOP12, 12, 1),
523 MUX(0, "mout_sw_aclk_g3d", mout_sw_aclk_g3d_p, SRC_TOP12, 16, 1),
524 MUX(0, "mout_sw_aclk300_jpeg", mout_sw_aclk300_jpeg_p,
525 SRC_TOP12, 20, 1),
526 MUX(0, "mout_sw_aclk300_disp1", mout_sw_aclk300_disp1_p,
401 SRC_TOP12, 24, 1), 527 SRC_TOP12, 24, 1),
402 MUX(0, "mout_sw_aclk300_gscl", sw_aclk300_gscl_p, SRC_TOP12, 28, 1), 528 MUX(0, "mout_sw_aclk300_gscl", mout_sw_aclk300_gscl_p,
529 SRC_TOP12, 28, 1),
403 530
404 /* DISP1 Block */ 531 /* DISP1 Block */
405 MUX(0, "mout_fimd1", group3_p, SRC_DISP10, 4, 1), 532 MUX(0, "mout_fimd1", mout_group3_p, SRC_DISP10, 4, 1),
406 MUX(0, "mout_mipi1", group2_p, SRC_DISP10, 16, 3), 533 MUX(0, "mout_mipi1", mout_group2_p, SRC_DISP10, 16, 3),
407 MUX(0, "mout_dp1", group2_p, SRC_DISP10, 20, 3), 534 MUX(0, "mout_dp1", mout_group2_p, SRC_DISP10, 20, 3),
408 MUX(0, "mout_pixel", group2_p, SRC_DISP10, 24, 3), 535 MUX(0, "mout_pixel", mout_group2_p, SRC_DISP10, 24, 3),
409 MUX(CLK_MOUT_HDMI, "mout_hdmi", hdmi_p, SRC_DISP10, 28, 1), 536 MUX(CLK_MOUT_HDMI, "mout_hdmi", mout_hdmi_p, SRC_DISP10, 28, 1),
537 MUX(0, "mout_fimd1_opt", mout_group2_p, SRC_DISP10, 8, 3),
538
539 MUX(0, "mout_aclk400_wcore_bpll", mout_aclk400_wcore_bpll_p,
540 TOP_SPARE2, 4, 1),
541 MUX(0, "mout_fimd1_final", mout_fimd1_final_p, TOP_SPARE2, 8, 1),
410 542
411 /* MAU Block */ 543 /* MAU Block */
412 MUX(0, "mout_maudio0", maudio0_p, SRC_MAU, 28, 3), 544 MUX(CLK_MOUT_MAUDIO0, "mout_maudio0", mout_maudio0_p, SRC_MAU, 28, 3),
413 545
414 /* FSYS Block */ 546 /* FSYS Block */
415 MUX(0, "mout_usbd301", group2_p, SRC_FSYS, 4, 3), 547 MUX(0, "mout_usbd301", mout_group2_p, SRC_FSYS, 4, 3),
416 MUX(0, "mout_mmc0", group2_p, SRC_FSYS, 8, 3), 548 MUX(0, "mout_mmc0", mout_group2_p, SRC_FSYS, 8, 3),
417 MUX(0, "mout_mmc1", group2_p, SRC_FSYS, 12, 3), 549 MUX(0, "mout_mmc1", mout_group2_p, SRC_FSYS, 12, 3),
418 MUX(0, "mout_mmc2", group2_p, SRC_FSYS, 16, 3), 550 MUX(0, "mout_mmc2", mout_group2_p, SRC_FSYS, 16, 3),
419 MUX(0, "mout_usbd300", group2_p, SRC_FSYS, 20, 3), 551 MUX(0, "mout_usbd300", mout_group2_p, SRC_FSYS, 20, 3),
420 MUX(0, "mout_unipro", group2_p, SRC_FSYS, 24, 3), 552 MUX(0, "mout_unipro", mout_group2_p, SRC_FSYS, 24, 3),
553 MUX(0, "mout_mphy_refclk", mout_group2_p, SRC_FSYS, 28, 3),
421 554
422 /* PERIC Block */ 555 /* PERIC Block */
423 MUX(0, "mout_uart0", group2_p, SRC_PERIC0, 4, 3), 556 MUX(0, "mout_uart0", mout_group2_p, SRC_PERIC0, 4, 3),
424 MUX(0, "mout_uart1", group2_p, SRC_PERIC0, 8, 3), 557 MUX(0, "mout_uart1", mout_group2_p, SRC_PERIC0, 8, 3),
425 MUX(0, "mout_uart2", group2_p, SRC_PERIC0, 12, 3), 558 MUX(0, "mout_uart2", mout_group2_p, SRC_PERIC0, 12, 3),
426 MUX(0, "mout_uart3", group2_p, SRC_PERIC0, 16, 3), 559 MUX(0, "mout_uart3", mout_group2_p, SRC_PERIC0, 16, 3),
427 MUX(0, "mout_pwm", group2_p, SRC_PERIC0, 24, 3), 560 MUX(0, "mout_pwm", mout_group2_p, SRC_PERIC0, 24, 3),
428 MUX(0, "mout_spdif", spdif_p, SRC_PERIC0, 28, 3), 561 MUX(0, "mout_spdif", mout_spdif_p, SRC_PERIC0, 28, 3),
429 MUX(0, "mout_audio0", audio0_p, SRC_PERIC1, 8, 3), 562 MUX(0, "mout_audio0", mout_audio0_p, SRC_PERIC1, 8, 3),
430 MUX(0, "mout_audio1", audio1_p, SRC_PERIC1, 12, 3), 563 MUX(0, "mout_audio1", mout_audio1_p, SRC_PERIC1, 12, 3),
431 MUX(0, "mout_audio2", audio2_p, SRC_PERIC1, 16, 3), 564 MUX(0, "mout_audio2", mout_audio2_p, SRC_PERIC1, 16, 3),
432 MUX(0, "mout_spi0", group2_p, SRC_PERIC1, 20, 3), 565 MUX(0, "mout_spi0", mout_group2_p, SRC_PERIC1, 20, 3),
433 MUX(0, "mout_spi1", group2_p, SRC_PERIC1, 24, 3), 566 MUX(0, "mout_spi1", mout_group2_p, SRC_PERIC1, 24, 3),
434 MUX(0, "mout_spi2", group2_p, SRC_PERIC1, 28, 3), 567 MUX(0, "mout_spi2", mout_group2_p, SRC_PERIC1, 28, 3),
568
569 /* ISP Block */
570 MUX(0, "mout_pwm_isp", mout_group2_p, SRC_ISP, 24, 3),
571 MUX(0, "mout_uart_isp", mout_group2_p, SRC_ISP, 20, 3),
572 MUX(0, "mout_spi0_isp", mout_group2_p, SRC_ISP, 12, 3),
573 MUX(0, "mout_spi1_isp", mout_group2_p, SRC_ISP, 16, 3),
574 MUX(0, "mout_isp_sensor", mout_group2_p, SRC_ISP, 28, 3),
435}; 575};
436 576
437static struct samsung_div_clock exynos5420_div_clks[] __initdata = { 577static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
438 DIV(0, "div_arm", "mout_cpu", DIV_CPU0, 0, 3), 578 DIV(0, "div_arm", "mout_cpu", DIV_CPU0, 0, 3),
439 DIV(0, "sclk_apll", "mout_apll", DIV_CPU0, 24, 3), 579 DIV(0, "sclk_apll", "mout_apll", DIV_CPU0, 24, 3),
440 DIV(0, "armclk2", "div_arm", DIV_CPU0, 28, 3), 580 DIV(0, "armclk2", "div_arm", DIV_CPU0, 28, 3),
441 DIV(0, "div_kfc", "mout_cpu_kfc", DIV_KFC0, 0, 3), 581 DIV(0, "div_kfc", "mout_kfc", DIV_KFC0, 0, 3),
442 DIV(0, "sclk_kpll", "mout_kpll", DIV_KFC0, 24, 3), 582 DIV(0, "sclk_kpll", "mout_kpll", DIV_KFC0, 24, 3),
443 583
584 DIV(0, "dout_aclk400_isp", "mout_aclk400_isp", DIV_TOP0, 0, 3),
444 DIV(0, "dout_aclk400_mscl", "mout_aclk400_mscl", DIV_TOP0, 4, 3), 585 DIV(0, "dout_aclk400_mscl", "mout_aclk400_mscl", DIV_TOP0, 4, 3),
445 DIV(0, "dout_aclk200", "mout_aclk200", DIV_TOP0, 8, 3), 586 DIV(0, "dout_aclk200", "mout_aclk200", DIV_TOP0, 8, 3),
446 DIV(0, "dout_aclk200_fsys2", "mout_aclk200_fsys2", DIV_TOP0, 12, 3), 587 DIV(0, "dout_aclk200_fsys2", "mout_aclk200_fsys2", DIV_TOP0, 12, 3),
588 DIV(0, "dout_aclk400_wcore", "mout_aclk400_wcore_bpll",
589 DIV_TOP0, 16, 3),
590 DIV(0, "dout_aclk100_noc", "mout_aclk100_noc", DIV_TOP0, 20, 3),
447 DIV(0, "dout_pclk200_fsys", "mout_pclk200_fsys", DIV_TOP0, 24, 3), 591 DIV(0, "dout_pclk200_fsys", "mout_pclk200_fsys", DIV_TOP0, 24, 3),
448 DIV(0, "dout_aclk200_fsys", "mout_aclk200_fsys", DIV_TOP0, 28, 3), 592 DIV(0, "dout_aclk200_fsys", "mout_aclk200_fsys", DIV_TOP0, 28, 3),
449 593
450 DIV(0, "dout_aclk333_432_gscl", "mout_aclk333_432_gscl", 594 DIV(0, "dout_aclk333_432_gscl", "mout_aclk333_432_gscl",
451 DIV_TOP1, 0, 3), 595 DIV_TOP1, 0, 3),
596 DIV(0, "dout_aclk333_432_isp", "mout_aclk333_432_isp",
597 DIV_TOP1, 4, 3),
452 DIV(0, "dout_aclk66", "mout_aclk66", DIV_TOP1, 8, 6), 598 DIV(0, "dout_aclk66", "mout_aclk66", DIV_TOP1, 8, 6),
599 DIV(0, "dout_aclk333_432_isp0", "mout_aclk333_432_isp0",
600 DIV_TOP1, 16, 3),
453 DIV(0, "dout_aclk266", "mout_aclk266", DIV_TOP1, 20, 3), 601 DIV(0, "dout_aclk266", "mout_aclk266", DIV_TOP1, 20, 3),
454 DIV(0, "dout_aclk166", "mout_aclk166", DIV_TOP1, 24, 3), 602 DIV(0, "dout_aclk166", "mout_aclk166", DIV_TOP1, 24, 3),
455 DIV(0, "dout_aclk333", "mout_aclk333", DIV_TOP1, 28, 3), 603 DIV(0, "dout_aclk333", "mout_aclk333", DIV_TOP1, 28, 3),
@@ -458,15 +606,16 @@ static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
458 DIV(0, "dout_aclk266_g2d", "mout_aclk266_g2d", DIV_TOP2, 12, 3), 606 DIV(0, "dout_aclk266_g2d", "mout_aclk266_g2d", DIV_TOP2, 12, 3),
459 DIV(0, "dout_aclk_g3d", "mout_aclk_g3d", DIV_TOP2, 16, 3), 607 DIV(0, "dout_aclk_g3d", "mout_aclk_g3d", DIV_TOP2, 16, 3),
460 DIV(0, "dout_aclk300_jpeg", "mout_aclk300_jpeg", DIV_TOP2, 20, 3), 608 DIV(0, "dout_aclk300_jpeg", "mout_aclk300_jpeg", DIV_TOP2, 20, 3),
461 DIV_A(0, "dout_aclk300_disp1", "mout_aclk300_disp1", 609 DIV(0, "dout_aclk300_disp1", "mout_aclk300_disp1", DIV_TOP2, 24, 3),
462 DIV_TOP2, 24, 3, "aclk300_disp1"),
463 DIV(0, "dout_aclk300_gscl", "mout_aclk300_gscl", DIV_TOP2, 28, 3), 610 DIV(0, "dout_aclk300_gscl", "mout_aclk300_gscl", DIV_TOP2, 28, 3),
464 611
465 /* DISP1 Block */ 612 /* DISP1 Block */
466 DIV(0, "dout_fimd1", "mout_fimd1", DIV_DISP10, 0, 4), 613 DIV(0, "dout_fimd1", "mout_fimd1_final", DIV_DISP10, 0, 4),
467 DIV(0, "dout_mipi1", "mout_mipi1", DIV_DISP10, 16, 8), 614 DIV(0, "dout_mipi1", "mout_mipi1", DIV_DISP10, 16, 8),
468 DIV(0, "dout_dp1", "mout_dp1", DIV_DISP10, 24, 4), 615 DIV(0, "dout_dp1", "mout_dp1", DIV_DISP10, 24, 4),
469 DIV(CLK_DOUT_PIXEL, "dout_hdmi_pixel", "mout_pixel", DIV_DISP10, 28, 4), 616 DIV(CLK_DOUT_PIXEL, "dout_hdmi_pixel", "mout_pixel", DIV_DISP10, 28, 4),
617 DIV(0, "dout_disp1_blk", "aclk200_disp1", DIV2_RATIO0, 16, 2),
618 DIV(0, "dout_aclk400_disp1", "mout_aclk400_disp1", DIV_TOP2, 4, 3),
470 619
471 /* Audio Block */ 620 /* Audio Block */
472 DIV(0, "dout_maudio0", "mout_maudio0", DIV_MAU, 20, 4), 621 DIV(0, "dout_maudio0", "mout_maudio0", DIV_MAU, 20, 4),
@@ -484,6 +633,7 @@ static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
484 DIV(0, "dout_mmc2", "mout_mmc2", DIV_FSYS1, 20, 10), 633 DIV(0, "dout_mmc2", "mout_mmc2", DIV_FSYS1, 20, 10),
485 634
486 DIV(0, "dout_unipro", "mout_unipro", DIV_FSYS2, 24, 8), 635 DIV(0, "dout_unipro", "mout_unipro", DIV_FSYS2, 24, 8),
636 DIV(0, "dout_mphy_refclk", "mout_mphy_refclk", DIV_FSYS2, 16, 8),
487 637
488 /* UART and PWM */ 638 /* UART and PWM */
489 DIV(0, "dout_uart0", "mout_uart0", DIV_PERIC0, 8, 4), 639 DIV(0, "dout_uart0", "mout_uart0", DIV_PERIC0, 8, 4),
@@ -497,6 +647,9 @@ static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
497 DIV(0, "dout_spi1", "mout_spi1", DIV_PERIC1, 24, 4), 647 DIV(0, "dout_spi1", "mout_spi1", DIV_PERIC1, 24, 4),
498 DIV(0, "dout_spi2", "mout_spi2", DIV_PERIC1, 28, 4), 648 DIV(0, "dout_spi2", "mout_spi2", DIV_PERIC1, 28, 4),
499 649
650 /* Mfc Block */
651 DIV(0, "dout_mfc_blk", "mout_user_aclk333", DIV4_RATIO, 0, 2),
652
500 /* PCM */ 653 /* PCM */
501 DIV(0, "dout_pcm1", "dout_audio1", DIV_PERIC2, 16, 8), 654 DIV(0, "dout_pcm1", "dout_audio1", DIV_PERIC2, 16, 8),
502 DIV(0, "dout_pcm2", "dout_audio2", DIV_PERIC2, 24, 8), 655 DIV(0, "dout_pcm2", "dout_audio2", DIV_PERIC2, 24, 8),
@@ -509,15 +662,43 @@ static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
509 DIV(0, "dout_audio2", "mout_audio2", DIV_PERIC3, 28, 4), 662 DIV(0, "dout_audio2", "mout_audio2", DIV_PERIC3, 28, 4),
510 663
511 /* SPI Pre-Ratio */ 664 /* SPI Pre-Ratio */
512 DIV(0, "dout_pre_spi0", "dout_spi0", DIV_PERIC4, 8, 8), 665 DIV(0, "dout_spi0_pre", "dout_spi0", DIV_PERIC4, 8, 8),
513 DIV(0, "dout_pre_spi1", "dout_spi1", DIV_PERIC4, 16, 8), 666 DIV(0, "dout_spi1_pre", "dout_spi1", DIV_PERIC4, 16, 8),
514 DIV(0, "dout_pre_spi2", "dout_spi2", DIV_PERIC4, 24, 8), 667 DIV(0, "dout_spi2_pre", "dout_spi2", DIV_PERIC4, 24, 8),
668
669 /* GSCL Block */
670 DIV(0, "dout_gscl_blk_300", "mout_user_aclk300_gscl",
671 DIV2_RATIO0, 4, 2),
672 DIV(0, "dout_gscl_blk_333", "aclk333_432_gscl", DIV2_RATIO0, 6, 2),
673
674 /* MSCL Block */
675 DIV(0, "dout_mscl_blk", "aclk400_mscl", DIV2_RATIO0, 28, 2),
676
677 /* PSGEN */
678 DIV(0, "dout_gen_blk", "mout_user_aclk266", DIV2_RATIO0, 8, 1),
679 DIV(0, "dout_jpg_blk", "aclk166", DIV2_RATIO0, 20, 1),
680
681 /* ISP Block */
682 DIV(0, "dout_isp_sensor0", "mout_isp_sensor", SCLK_DIV_ISP0, 8, 8),
683 DIV(0, "dout_isp_sensor1", "mout_isp_sensor", SCLK_DIV_ISP0, 16, 8),
684 DIV(0, "dout_isp_sensor2", "mout_isp_sensor", SCLK_DIV_ISP0, 24, 8),
685 DIV(0, "dout_pwm_isp", "mout_pwm_isp", SCLK_DIV_ISP1, 28, 4),
686 DIV(0, "dout_uart_isp", "mout_uart_isp", SCLK_DIV_ISP1, 24, 4),
687 DIV(0, "dout_spi0_isp", "mout_spi0_isp", SCLK_DIV_ISP1, 16, 4),
688 DIV(0, "dout_spi1_isp", "mout_spi1_isp", SCLK_DIV_ISP1, 20, 4),
689 DIV_F(0, "dout_spi0_isp_pre", "dout_spi0_isp", SCLK_DIV_ISP1, 0, 8,
690 CLK_SET_RATE_PARENT, 0),
691 DIV_F(0, "dout_spi1_isp_pre", "dout_spi1_isp", SCLK_DIV_ISP1, 8, 8,
692 CLK_SET_RATE_PARENT, 0),
515}; 693};
516 694
517static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = { 695static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
518 /* TODO: Re-verify the CG bits for all the gate clocks */ 696 /* G2D */
519 GATE_A(CLK_MCT, "pclk_st", "aclk66_psgen", GATE_BUS_PERIS1, 2, 0, 0, 697 GATE(CLK_MDMA0, "mdma0", "aclk266_g2d", GATE_IP_G2D, 1, 0, 0),
520 "mct"), 698 GATE(CLK_SSS, "sss", "aclk266_g2d", GATE_IP_G2D, 2, 0, 0),
699 GATE(CLK_G2D, "g2d", "aclk333_g2d", GATE_IP_G2D, 3, 0, 0),
700 GATE(CLK_SMMU_MDMA0, "smmu_mdma0", "aclk266_g2d", GATE_IP_G2D, 5, 0, 0),
701 GATE(CLK_SMMU_G2D, "smmu_g2d", "aclk333_g2d", GATE_IP_G2D, 7, 0, 0),
521 702
522 GATE(0, "aclk200_fsys", "mout_user_aclk200_fsys", 703 GATE(0, "aclk200_fsys", "mout_user_aclk200_fsys",
523 GATE_BUS_FSYS0, 9, CLK_IGNORE_UNUSED, 0), 704 GATE_BUS_FSYS0, 9, CLK_IGNORE_UNUSED, 0),
@@ -530,20 +711,42 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
530 GATE_BUS_TOP, 1, CLK_IGNORE_UNUSED, 0), 711 GATE_BUS_TOP, 1, CLK_IGNORE_UNUSED, 0),
531 GATE(0, "aclk300_jpeg", "mout_user_aclk300_jpeg", 712 GATE(0, "aclk300_jpeg", "mout_user_aclk300_jpeg",
532 GATE_BUS_TOP, 4, CLK_IGNORE_UNUSED, 0), 713 GATE_BUS_TOP, 4, CLK_IGNORE_UNUSED, 0),
714 GATE(0, "aclk333_432_isp0", "mout_user_aclk333_432_isp0",
715 GATE_BUS_TOP, 5, 0, 0),
533 GATE(0, "aclk300_gscl", "mout_user_aclk300_gscl", 716 GATE(0, "aclk300_gscl", "mout_user_aclk300_gscl",
534 GATE_BUS_TOP, 6, CLK_IGNORE_UNUSED, 0), 717 GATE_BUS_TOP, 6, CLK_IGNORE_UNUSED, 0),
535 GATE(0, "aclk333_432_gscl", "mout_user_aclk333_432_gscl", 718 GATE(0, "aclk333_432_gscl", "mout_user_aclk333_432_gscl",
536 GATE_BUS_TOP, 7, CLK_IGNORE_UNUSED, 0), 719 GATE_BUS_TOP, 7, CLK_IGNORE_UNUSED, 0),
537 GATE(0, "pclk66_gpio", "mout_sw_aclk66", 720 GATE(0, "aclk333_432_isp", "mout_user_aclk333_432_isp",
721 GATE_BUS_TOP, 8, 0, 0),
722 GATE(CLK_PCLK66_GPIO, "pclk66_gpio", "mout_user_pclk66_gpio",
538 GATE_BUS_TOP, 9, CLK_IGNORE_UNUSED, 0), 723 GATE_BUS_TOP, 9, CLK_IGNORE_UNUSED, 0),
539 GATE(0, "aclk66_psgen", "mout_aclk66_psgen", 724 GATE(0, "aclk66_psgen", "mout_user_aclk66_psgen",
540 GATE_BUS_TOP, 10, CLK_IGNORE_UNUSED, 0), 725 GATE_BUS_TOP, 10, CLK_IGNORE_UNUSED, 0),
541 GATE(0, "aclk66_peric", "mout_aclk66_peric", 726 GATE(CLK_ACLK66_PERIC, "aclk66_peric", "mout_user_aclk66_peric",
542 GATE_BUS_TOP, 11, 0, 0), 727 GATE_BUS_TOP, 11, CLK_IGNORE_UNUSED, 0),
728 GATE(0, "aclk266_isp", "mout_user_aclk266_isp",
729 GATE_BUS_TOP, 13, 0, 0),
543 GATE(0, "aclk166", "mout_user_aclk166", 730 GATE(0, "aclk166", "mout_user_aclk166",
544 GATE_BUS_TOP, 14, CLK_IGNORE_UNUSED, 0), 731 GATE_BUS_TOP, 14, CLK_IGNORE_UNUSED, 0),
545 GATE(0, "aclk333", "mout_aclk333", 732 GATE(0, "aclk333", "mout_aclk333",
546 GATE_BUS_TOP, 15, CLK_IGNORE_UNUSED, 0), 733 GATE_BUS_TOP, 15, CLK_IGNORE_UNUSED, 0),
734 GATE(0, "aclk400_isp", "mout_user_aclk400_isp",
735 GATE_BUS_TOP, 16, 0, 0),
736 GATE(0, "aclk400_mscl", "mout_user_aclk400_mscl",
737 GATE_BUS_TOP, 17, 0, 0),
738 GATE(0, "aclk200_disp1", "mout_user_aclk200_disp1",
739 GATE_BUS_TOP, 18, 0, 0),
740 GATE(CLK_SCLK_MPHY_IXTAL24, "sclk_mphy_ixtal24", "mphy_refclk_ixtal24",
741 GATE_BUS_TOP, 28, 0, 0),
742 GATE(CLK_SCLK_HSIC_12M, "sclk_hsic_12m", "ff_hsic_12m",
743 GATE_BUS_TOP, 29, 0, 0),
744
745 GATE(0, "aclk300_disp1", "mout_user_aclk300_disp1",
746 SRC_MASK_TOP2, 24, 0, 0),
747
748 GATE(CLK_MAU_EPLL, "mau_epll", "mout_mau_epll_clk",
749 SRC_MASK_TOP7, 20, 0, 0),
547 750
548 /* sclk */ 751 /* sclk */
549 GATE(CLK_SCLK_UART0, "sclk_uart0", "dout_uart0", 752 GATE(CLK_SCLK_UART0, "sclk_uart0", "dout_uart0",
@@ -554,11 +757,11 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
554 GATE_TOP_SCLK_PERIC, 2, CLK_SET_RATE_PARENT, 0), 757 GATE_TOP_SCLK_PERIC, 2, CLK_SET_RATE_PARENT, 0),
555 GATE(CLK_SCLK_UART3, "sclk_uart3", "dout_uart3", 758 GATE(CLK_SCLK_UART3, "sclk_uart3", "dout_uart3",
556 GATE_TOP_SCLK_PERIC, 3, CLK_SET_RATE_PARENT, 0), 759 GATE_TOP_SCLK_PERIC, 3, CLK_SET_RATE_PARENT, 0),
557 GATE(CLK_SCLK_SPI0, "sclk_spi0", "dout_pre_spi0", 760 GATE(CLK_SCLK_SPI0, "sclk_spi0", "dout_spi0_pre",
558 GATE_TOP_SCLK_PERIC, 6, CLK_SET_RATE_PARENT, 0), 761 GATE_TOP_SCLK_PERIC, 6, CLK_SET_RATE_PARENT, 0),
559 GATE(CLK_SCLK_SPI1, "sclk_spi1", "dout_pre_spi1", 762 GATE(CLK_SCLK_SPI1, "sclk_spi1", "dout_spi1_pre",
560 GATE_TOP_SCLK_PERIC, 7, CLK_SET_RATE_PARENT, 0), 763 GATE_TOP_SCLK_PERIC, 7, CLK_SET_RATE_PARENT, 0),
561 GATE(CLK_SCLK_SPI2, "sclk_spi2", "dout_pre_spi2", 764 GATE(CLK_SCLK_SPI2, "sclk_spi2", "dout_spi2_pre",
562 GATE_TOP_SCLK_PERIC, 8, CLK_SET_RATE_PARENT, 0), 765 GATE_TOP_SCLK_PERIC, 8, CLK_SET_RATE_PARENT, 0),
563 GATE(CLK_SCLK_SPDIF, "sclk_spdif", "mout_spdif", 766 GATE(CLK_SCLK_SPDIF, "sclk_spdif", "mout_spdif",
564 GATE_TOP_SCLK_PERIC, 9, CLK_SET_RATE_PARENT, 0), 767 GATE_TOP_SCLK_PERIC, 9, CLK_SET_RATE_PARENT, 0),
@@ -588,161 +791,188 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
588 GATE(CLK_SCLK_USBD301, "sclk_usbd301", "dout_usbd301", 791 GATE(CLK_SCLK_USBD301, "sclk_usbd301", "dout_usbd301",
589 GATE_TOP_SCLK_FSYS, 10, CLK_SET_RATE_PARENT, 0), 792 GATE_TOP_SCLK_FSYS, 10, CLK_SET_RATE_PARENT, 0),
590 793
591 GATE(CLK_SCLK_USBD301, "sclk_unipro", "dout_unipro",
592 SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0),
593
594 GATE(CLK_SCLK_GSCL_WA, "sclk_gscl_wa", "aclK333_432_gscl",
595 GATE_TOP_SCLK_GSCL, 6, CLK_SET_RATE_PARENT, 0),
596 GATE(CLK_SCLK_GSCL_WB, "sclk_gscl_wb", "aclk333_432_gscl",
597 GATE_TOP_SCLK_GSCL, 7, CLK_SET_RATE_PARENT, 0),
598
599 /* Display */ 794 /* Display */
600 GATE(CLK_SCLK_FIMD1, "sclk_fimd1", "dout_fimd1", 795 GATE(CLK_SCLK_FIMD1, "sclk_fimd1", "dout_fimd1",
601 GATE_TOP_SCLK_DISP1, 0, CLK_SET_RATE_PARENT, 0), 796 GATE_TOP_SCLK_DISP1, 0, CLK_SET_RATE_PARENT, 0),
602 GATE(CLK_SCLK_MIPI1, "sclk_mipi1", "dout_mipi1", 797 GATE(CLK_SCLK_MIPI1, "sclk_mipi1", "dout_mipi1",
603 GATE_TOP_SCLK_DISP1, 3, CLK_SET_RATE_PARENT, 0), 798 GATE_TOP_SCLK_DISP1, 3, CLK_SET_RATE_PARENT, 0),
604 GATE(CLK_SCLK_HDMI, "sclk_hdmi", "mout_hdmi", 799 GATE(CLK_SCLK_HDMI, "sclk_hdmi", "mout_hdmi",
605 GATE_TOP_SCLK_DISP1, 9, CLK_SET_RATE_PARENT, 0), 800 GATE_TOP_SCLK_DISP1, 9, 0, 0),
606 GATE(CLK_SCLK_PIXEL, "sclk_pixel", "dout_hdmi_pixel", 801 GATE(CLK_SCLK_PIXEL, "sclk_pixel", "dout_hdmi_pixel",
607 GATE_TOP_SCLK_DISP1, 10, CLK_SET_RATE_PARENT, 0), 802 GATE_TOP_SCLK_DISP1, 10, CLK_SET_RATE_PARENT, 0),
608 GATE(CLK_SCLK_DP1, "sclk_dp1", "dout_dp1", 803 GATE(CLK_SCLK_DP1, "sclk_dp1", "dout_dp1",
609 GATE_TOP_SCLK_DISP1, 20, CLK_SET_RATE_PARENT, 0), 804 GATE_TOP_SCLK_DISP1, 20, CLK_SET_RATE_PARENT, 0),
610 805
611 /* Maudio Block */ 806 /* Maudio Block */
612 GATE(CLK_SCLK_MAUDIO0, "sclk_maudio0", "dout_maudio0", 807 GATE(CLK_SCLK_MAUDIO0, "sclk_maudio0", "dout_maudio0",
613 GATE_TOP_SCLK_MAU, 0, CLK_SET_RATE_PARENT, 0), 808 GATE_TOP_SCLK_MAU, 0, CLK_SET_RATE_PARENT, 0),
614 GATE(CLK_SCLK_MAUPCM0, "sclk_maupcm0", "dout_maupcm0", 809 GATE(CLK_SCLK_MAUPCM0, "sclk_maupcm0", "dout_maupcm0",
615 GATE_TOP_SCLK_MAU, 1, CLK_SET_RATE_PARENT, 0), 810 GATE_TOP_SCLK_MAU, 1, CLK_SET_RATE_PARENT, 0),
616 /* FSYS */ 811
812 /* FSYS Block */
617 GATE(CLK_TSI, "tsi", "aclk200_fsys", GATE_BUS_FSYS0, 0, 0, 0), 813 GATE(CLK_TSI, "tsi", "aclk200_fsys", GATE_BUS_FSYS0, 0, 0, 0),
618 GATE(CLK_PDMA0, "pdma0", "aclk200_fsys", GATE_BUS_FSYS0, 1, 0, 0), 814 GATE(CLK_PDMA0, "pdma0", "aclk200_fsys", GATE_BUS_FSYS0, 1, 0, 0),
619 GATE(CLK_PDMA1, "pdma1", "aclk200_fsys", GATE_BUS_FSYS0, 2, 0, 0), 815 GATE(CLK_PDMA1, "pdma1", "aclk200_fsys", GATE_BUS_FSYS0, 2, 0, 0),
620 GATE(CLK_UFS, "ufs", "aclk200_fsys2", GATE_BUS_FSYS0, 3, 0, 0), 816 GATE(CLK_UFS, "ufs", "aclk200_fsys2", GATE_BUS_FSYS0, 3, 0, 0),
621 GATE(CLK_RTIC, "rtic", "aclk200_fsys", GATE_BUS_FSYS0, 5, 0, 0), 817 GATE(CLK_RTIC, "rtic", "aclk200_fsys", GATE_IP_FSYS, 9, 0, 0),
622 GATE(CLK_MMC0, "mmc0", "aclk200_fsys2", GATE_BUS_FSYS0, 12, 0, 0), 818 GATE(CLK_MMC0, "mmc0", "aclk200_fsys2", GATE_IP_FSYS, 12, 0, 0),
623 GATE(CLK_MMC1, "mmc1", "aclk200_fsys2", GATE_BUS_FSYS0, 13, 0, 0), 819 GATE(CLK_MMC1, "mmc1", "aclk200_fsys2", GATE_IP_FSYS, 13, 0, 0),
624 GATE(CLK_MMC2, "mmc2", "aclk200_fsys2", GATE_BUS_FSYS0, 14, 0, 0), 820 GATE(CLK_MMC2, "mmc2", "aclk200_fsys2", GATE_IP_FSYS, 14, 0, 0),
625 GATE(CLK_SROMC, "sromc", "aclk200_fsys2", 821 GATE(CLK_SROMC, "sromc", "aclk200_fsys2",
626 GATE_BUS_FSYS0, 19, CLK_IGNORE_UNUSED, 0), 822 GATE_IP_FSYS, 17, CLK_IGNORE_UNUSED, 0),
627 GATE(CLK_USBH20, "usbh20", "aclk200_fsys", GATE_BUS_FSYS0, 20, 0, 0), 823 GATE(CLK_USBH20, "usbh20", "aclk200_fsys", GATE_IP_FSYS, 18, 0, 0),
628 GATE(CLK_USBD300, "usbd300", "aclk200_fsys", GATE_BUS_FSYS0, 21, 0, 0), 824 GATE(CLK_USBD300, "usbd300", "aclk200_fsys", GATE_IP_FSYS, 19, 0, 0),
629 GATE(CLK_USBD301, "usbd301", "aclk200_fsys", GATE_BUS_FSYS0, 28, 0, 0), 825 GATE(CLK_USBD301, "usbd301", "aclk200_fsys", GATE_IP_FSYS, 20, 0, 0),
630 826 GATE(CLK_SCLK_UNIPRO, "sclk_unipro", "dout_unipro",
631 /* UART */ 827 SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0),
632 GATE(CLK_UART0, "uart0", "aclk66_peric", GATE_BUS_PERIC, 4, 0, 0),
633 GATE(CLK_UART1, "uart1", "aclk66_peric", GATE_BUS_PERIC, 5, 0, 0),
634 GATE_A(CLK_UART2, "uart2", "aclk66_peric",
635 GATE_BUS_PERIC, 6, CLK_IGNORE_UNUSED, 0, "uart2"),
636 GATE(CLK_UART3, "uart3", "aclk66_peric", GATE_BUS_PERIC, 7, 0, 0),
637 /* I2C */
638 GATE(CLK_I2C0, "i2c0", "aclk66_peric", GATE_BUS_PERIC, 9, 0, 0),
639 GATE(CLK_I2C1, "i2c1", "aclk66_peric", GATE_BUS_PERIC, 10, 0, 0),
640 GATE(CLK_I2C2, "i2c2", "aclk66_peric", GATE_BUS_PERIC, 11, 0, 0),
641 GATE(CLK_I2C3, "i2c3", "aclk66_peric", GATE_BUS_PERIC, 12, 0, 0),
642 GATE(CLK_I2C4, "i2c4", "aclk66_peric", GATE_BUS_PERIC, 13, 0, 0),
643 GATE(CLK_I2C5, "i2c5", "aclk66_peric", GATE_BUS_PERIC, 14, 0, 0),
644 GATE(CLK_I2C6, "i2c6", "aclk66_peric", GATE_BUS_PERIC, 15, 0, 0),
645 GATE(CLK_I2C7, "i2c7", "aclk66_peric", GATE_BUS_PERIC, 16, 0, 0),
646 GATE(CLK_I2C_HDMI, "i2c_hdmi", "aclk66_peric", GATE_BUS_PERIC, 17, 0,
647 0),
648 GATE(CLK_TSADC, "tsadc", "aclk66_peric", GATE_BUS_PERIC, 18, 0, 0),
649 /* SPI */
650 GATE(CLK_SPI0, "spi0", "aclk66_peric", GATE_BUS_PERIC, 19, 0, 0),
651 GATE(CLK_SPI1, "spi1", "aclk66_peric", GATE_BUS_PERIC, 20, 0, 0),
652 GATE(CLK_SPI2, "spi2", "aclk66_peric", GATE_BUS_PERIC, 21, 0, 0),
653 GATE(CLK_KEYIF, "keyif", "aclk66_peric", GATE_BUS_PERIC, 22, 0, 0),
654 /* I2S */
655 GATE(CLK_I2S1, "i2s1", "aclk66_peric", GATE_BUS_PERIC, 23, 0, 0),
656 GATE(CLK_I2S2, "i2s2", "aclk66_peric", GATE_BUS_PERIC, 24, 0, 0),
657 /* PCM */
658 GATE(CLK_PCM1, "pcm1", "aclk66_peric", GATE_BUS_PERIC, 25, 0, 0),
659 GATE(CLK_PCM2, "pcm2", "aclk66_peric", GATE_BUS_PERIC, 26, 0, 0),
660 /* PWM */
661 GATE(CLK_PWM, "pwm", "aclk66_peric", GATE_BUS_PERIC, 27, 0, 0),
662 /* SPDIF */
663 GATE(CLK_SPDIF, "spdif", "aclk66_peric", GATE_BUS_PERIC, 29, 0, 0),
664 828
665 GATE(CLK_I2C8, "i2c8", "aclk66_peric", GATE_BUS_PERIC1, 0, 0, 0), 829 /* PERIC Block */
666 GATE(CLK_I2C9, "i2c9", "aclk66_peric", GATE_BUS_PERIC1, 1, 0, 0), 830 GATE(CLK_UART0, "uart0", "aclk66_peric", GATE_IP_PERIC, 0, 0, 0),
667 GATE(CLK_I2C10, "i2c10", "aclk66_peric", GATE_BUS_PERIC1, 2, 0, 0), 831 GATE(CLK_UART1, "uart1", "aclk66_peric", GATE_IP_PERIC, 1, 0, 0),
832 GATE(CLK_UART2, "uart2", "aclk66_peric", GATE_IP_PERIC, 2, 0, 0),
833 GATE(CLK_UART3, "uart3", "aclk66_peric", GATE_IP_PERIC, 3, 0, 0),
834 GATE(CLK_I2C0, "i2c0", "aclk66_peric", GATE_IP_PERIC, 6, 0, 0),
835 GATE(CLK_I2C1, "i2c1", "aclk66_peric", GATE_IP_PERIC, 7, 0, 0),
836 GATE(CLK_I2C2, "i2c2", "aclk66_peric", GATE_IP_PERIC, 8, 0, 0),
837 GATE(CLK_I2C3, "i2c3", "aclk66_peric", GATE_IP_PERIC, 9, 0, 0),
838 GATE(CLK_USI0, "usi0", "aclk66_peric", GATE_IP_PERIC, 10, 0, 0),
839 GATE(CLK_USI1, "usi1", "aclk66_peric", GATE_IP_PERIC, 11, 0, 0),
840 GATE(CLK_USI2, "usi2", "aclk66_peric", GATE_IP_PERIC, 12, 0, 0),
841 GATE(CLK_USI3, "usi3", "aclk66_peric", GATE_IP_PERIC, 13, 0, 0),
842 GATE(CLK_I2C_HDMI, "i2c_hdmi", "aclk66_peric", GATE_IP_PERIC, 14, 0, 0),
843 GATE(CLK_TSADC, "tsadc", "aclk66_peric", GATE_IP_PERIC, 15, 0, 0),
844 GATE(CLK_SPI0, "spi0", "aclk66_peric", GATE_IP_PERIC, 16, 0, 0),
845 GATE(CLK_SPI1, "spi1", "aclk66_peric", GATE_IP_PERIC, 17, 0, 0),
846 GATE(CLK_SPI2, "spi2", "aclk66_peric", GATE_IP_PERIC, 18, 0, 0),
847 GATE(CLK_I2S1, "i2s1", "aclk66_peric", GATE_IP_PERIC, 20, 0, 0),
848 GATE(CLK_I2S2, "i2s2", "aclk66_peric", GATE_IP_PERIC, 21, 0, 0),
849 GATE(CLK_PCM1, "pcm1", "aclk66_peric", GATE_IP_PERIC, 22, 0, 0),
850 GATE(CLK_PCM2, "pcm2", "aclk66_peric", GATE_IP_PERIC, 23, 0, 0),
851 GATE(CLK_PWM, "pwm", "aclk66_peric", GATE_IP_PERIC, 24, 0, 0),
852 GATE(CLK_SPDIF, "spdif", "aclk66_peric", GATE_IP_PERIC, 26, 0, 0),
853 GATE(CLK_USI4, "usi4", "aclk66_peric", GATE_IP_PERIC, 28, 0, 0),
854 GATE(CLK_USI5, "usi5", "aclk66_peric", GATE_IP_PERIC, 30, 0, 0),
855 GATE(CLK_USI6, "usi6", "aclk66_peric", GATE_IP_PERIC, 31, 0, 0),
668 856
857 GATE(CLK_KEYIF, "keyif", "aclk66_peric", GATE_BUS_PERIC, 22, 0, 0),
858
859 /* PERIS Block */
669 GATE(CLK_CHIPID, "chipid", "aclk66_psgen", 860 GATE(CLK_CHIPID, "chipid", "aclk66_psgen",
670 GATE_BUS_PERIS0, 12, CLK_IGNORE_UNUSED, 0), 861 GATE_IP_PERIS, 0, CLK_IGNORE_UNUSED, 0),
671 GATE(CLK_SYSREG, "sysreg", "aclk66_psgen", 862 GATE(CLK_SYSREG, "sysreg", "aclk66_psgen",
672 GATE_BUS_PERIS0, 13, CLK_IGNORE_UNUSED, 0), 863 GATE_IP_PERIS, 1, CLK_IGNORE_UNUSED, 0),
673 GATE(CLK_TZPC0, "tzpc0", "aclk66_psgen", GATE_BUS_PERIS0, 18, 0, 0), 864 GATE(CLK_TZPC0, "tzpc0", "aclk66_psgen", GATE_IP_PERIS, 6, 0, 0),
674 GATE(CLK_TZPC1, "tzpc1", "aclk66_psgen", GATE_BUS_PERIS0, 19, 0, 0), 865 GATE(CLK_TZPC1, "tzpc1", "aclk66_psgen", GATE_IP_PERIS, 7, 0, 0),
675 GATE(CLK_TZPC2, "tzpc2", "aclk66_psgen", GATE_BUS_PERIS0, 20, 0, 0), 866 GATE(CLK_TZPC2, "tzpc2", "aclk66_psgen", GATE_IP_PERIS, 8, 0, 0),
676 GATE(CLK_TZPC3, "tzpc3", "aclk66_psgen", GATE_BUS_PERIS0, 21, 0, 0), 867 GATE(CLK_TZPC3, "tzpc3", "aclk66_psgen", GATE_IP_PERIS, 9, 0, 0),
677 GATE(CLK_TZPC4, "tzpc4", "aclk66_psgen", GATE_BUS_PERIS0, 22, 0, 0), 868 GATE(CLK_TZPC4, "tzpc4", "aclk66_psgen", GATE_IP_PERIS, 10, 0, 0),
678 GATE(CLK_TZPC5, "tzpc5", "aclk66_psgen", GATE_BUS_PERIS0, 23, 0, 0), 869 GATE(CLK_TZPC5, "tzpc5", "aclk66_psgen", GATE_IP_PERIS, 11, 0, 0),
679 GATE(CLK_TZPC6, "tzpc6", "aclk66_psgen", GATE_BUS_PERIS0, 24, 0, 0), 870 GATE(CLK_TZPC6, "tzpc6", "aclk66_psgen", GATE_IP_PERIS, 12, 0, 0),
680 GATE(CLK_TZPC7, "tzpc7", "aclk66_psgen", GATE_BUS_PERIS0, 25, 0, 0), 871 GATE(CLK_TZPC7, "tzpc7", "aclk66_psgen", GATE_IP_PERIS, 13, 0, 0),
681 GATE(CLK_TZPC8, "tzpc8", "aclk66_psgen", GATE_BUS_PERIS0, 26, 0, 0), 872 GATE(CLK_TZPC8, "tzpc8", "aclk66_psgen", GATE_IP_PERIS, 14, 0, 0),
682 GATE(CLK_TZPC9, "tzpc9", "aclk66_psgen", GATE_BUS_PERIS0, 27, 0, 0), 873 GATE(CLK_TZPC9, "tzpc9", "aclk66_psgen", GATE_IP_PERIS, 15, 0, 0),
683 874 GATE(CLK_HDMI_CEC, "hdmi_cec", "aclk66_psgen", GATE_IP_PERIS, 16, 0, 0),
684 GATE(CLK_HDMI_CEC, "hdmi_cec", "aclk66_psgen", GATE_BUS_PERIS1, 0, 0, 875 GATE(CLK_MCT, "mct", "aclk66_psgen", GATE_IP_PERIS, 18, 0, 0),
685 0), 876 GATE(CLK_WDT, "wdt", "aclk66_psgen", GATE_IP_PERIS, 19, 0, 0),
877 GATE(CLK_RTC, "rtc", "aclk66_psgen", GATE_IP_PERIS, 20, 0, 0),
878 GATE(CLK_TMU, "tmu", "aclk66_psgen", GATE_IP_PERIS, 21, 0, 0),
879 GATE(CLK_TMU_GPU, "tmu_gpu", "aclk66_psgen", GATE_IP_PERIS, 22, 0, 0),
880
686 GATE(CLK_SECKEY, "seckey", "aclk66_psgen", GATE_BUS_PERIS1, 1, 0, 0), 881 GATE(CLK_SECKEY, "seckey", "aclk66_psgen", GATE_BUS_PERIS1, 1, 0, 0),
687 GATE(CLK_WDT, "wdt", "aclk66_psgen", GATE_BUS_PERIS1, 3, 0, 0), 882
688 GATE(CLK_RTC, "rtc", "aclk66_psgen", GATE_BUS_PERIS1, 4, 0, 0), 883 /* GEN Block */
689 GATE(CLK_TMU, "tmu", "aclk66_psgen", GATE_BUS_PERIS1, 5, 0, 0), 884 GATE(CLK_ROTATOR, "rotator", "mout_user_aclk266", GATE_IP_GEN, 1, 0, 0),
690 GATE(CLK_TMU_GPU, "tmu_gpu", "aclk66_psgen", GATE_BUS_PERIS1, 6, 0, 0), 885 GATE(CLK_JPEG, "jpeg", "aclk300_jpeg", GATE_IP_GEN, 2, 0, 0),
886 GATE(CLK_JPEG2, "jpeg2", "aclk300_jpeg", GATE_IP_GEN, 3, 0, 0),
887 GATE(CLK_MDMA1, "mdma1", "mout_user_aclk266", GATE_IP_GEN, 4, 0, 0),
888 GATE(CLK_TOP_RTC, "top_rtc", "aclk66_psgen", GATE_IP_GEN, 5, 0, 0),
889 GATE(CLK_SMMU_ROTATOR, "smmu_rotator", "dout_gen_blk",
890 GATE_IP_GEN, 6, 0, 0),
891 GATE(CLK_SMMU_JPEG, "smmu_jpeg", "dout_jpg_blk", GATE_IP_GEN, 7, 0, 0),
892 GATE(CLK_SMMU_MDMA1, "smmu_mdma1", "dout_gen_blk",
893 GATE_IP_GEN, 9, 0, 0),
894
895 /* GATE_IP_GEN doesn't list gates for smmu_jpeg2 and mc */
896 GATE(CLK_SMMU_JPEG2, "smmu_jpeg2", "dout_jpg_blk",
897 GATE_BUS_GEN, 28, 0, 0),
898 GATE(CLK_MC, "mc", "aclk66_psgen", GATE_BUS_GEN, 12, 0, 0),
899
900 /* GSCL Block */
901 GATE(CLK_SCLK_GSCL_WA, "sclk_gscl_wa", "mout_user_aclk333_432_gscl",
902 GATE_TOP_SCLK_GSCL, 6, 0, 0),
903 GATE(CLK_SCLK_GSCL_WB, "sclk_gscl_wb", "mout_user_aclk333_432_gscl",
904 GATE_TOP_SCLK_GSCL, 7, 0, 0),
691 905
692 GATE(CLK_GSCL0, "gscl0", "aclk300_gscl", GATE_IP_GSCL0, 0, 0, 0), 906 GATE(CLK_GSCL0, "gscl0", "aclk300_gscl", GATE_IP_GSCL0, 0, 0, 0),
693 GATE(CLK_GSCL1, "gscl1", "aclk300_gscl", GATE_IP_GSCL0, 1, 0, 0), 907 GATE(CLK_GSCL1, "gscl1", "aclk300_gscl", GATE_IP_GSCL0, 1, 0, 0),
694 GATE(CLK_CLK_3AA, "clk_3aa", "aclk300_gscl", GATE_IP_GSCL0, 4, 0, 0), 908 GATE(CLK_FIMC_3AA, "fimc_3aa", "aclk333_432_gscl",
695 909 GATE_IP_GSCL0, 4, 0, 0),
696 GATE(CLK_SMMU_3AA, "smmu_3aa", "aclk333_432_gscl", GATE_IP_GSCL1, 2, 0, 910 GATE(CLK_FIMC_LITE0, "fimc_lite0", "aclk333_432_gscl",
697 0), 911 GATE_IP_GSCL0, 5, 0, 0),
698 GATE(CLK_SMMU_FIMCL0, "smmu_fimcl0", "aclk333_432_gscl", 912 GATE(CLK_FIMC_LITE1, "fimc_lite1", "aclk333_432_gscl",
913 GATE_IP_GSCL0, 6, 0, 0),
914
915 GATE(CLK_SMMU_3AA, "smmu_3aa", "dout_gscl_blk_333",
916 GATE_IP_GSCL1, 2, 0, 0),
917 GATE(CLK_SMMU_FIMCL0, "smmu_fimcl0", "dout_gscl_blk_333",
699 GATE_IP_GSCL1, 3, 0, 0), 918 GATE_IP_GSCL1, 3, 0, 0),
700 GATE(CLK_SMMU_FIMCL1, "smmu_fimcl1", "aclk333_432_gscl", 919 GATE(CLK_SMMU_FIMCL1, "smmu_fimcl1", "dout_gscl_blk_333",
701 GATE_IP_GSCL1, 4, 0, 0), 920 GATE_IP_GSCL1, 4, 0, 0),
702 GATE(CLK_SMMU_GSCL0, "smmu_gscl0", "aclk300_gscl", GATE_IP_GSCL1, 6, 0, 921 GATE(CLK_SMMU_GSCL0, "smmu_gscl0", "dout_gscl_blk_300",
703 0), 922 GATE_IP_GSCL1, 6, 0, 0),
704 GATE(CLK_SMMU_GSCL1, "smmu_gscl1", "aclk300_gscl", GATE_IP_GSCL1, 7, 0, 923 GATE(CLK_SMMU_GSCL1, "smmu_gscl1", "dout_gscl_blk_300",
705 0), 924 GATE_IP_GSCL1, 7, 0, 0),
706 GATE(CLK_GSCL_WA, "gscl_wa", "aclk300_gscl", GATE_IP_GSCL1, 12, 0, 0), 925 GATE(CLK_GSCL_WA, "gscl_wa", "sclk_gscl_wa", GATE_IP_GSCL1, 12, 0, 0),
707 GATE(CLK_GSCL_WB, "gscl_wb", "aclk300_gscl", GATE_IP_GSCL1, 13, 0, 0), 926 GATE(CLK_GSCL_WB, "gscl_wb", "sclk_gscl_wb", GATE_IP_GSCL1, 13, 0, 0),
708 GATE(CLK_SMMU_FIMCL3, "smmu_fimcl3,", "aclk333_432_gscl", 927 GATE(CLK_SMMU_FIMCL3, "smmu_fimcl3,", "dout_gscl_blk_333",
709 GATE_IP_GSCL1, 16, 0, 0), 928 GATE_IP_GSCL1, 16, 0, 0),
710 GATE(CLK_FIMC_LITE3, "fimc_lite3", "aclk333_432_gscl", 929 GATE(CLK_FIMC_LITE3, "fimc_lite3", "aclk333_432_gscl",
711 GATE_IP_GSCL1, 17, 0, 0), 930 GATE_IP_GSCL1, 17, 0, 0),
712 931
932 /* MSCL Block */
933 GATE(CLK_MSCL0, "mscl0", "aclk400_mscl", GATE_IP_MSCL, 0, 0, 0),
934 GATE(CLK_MSCL1, "mscl1", "aclk400_mscl", GATE_IP_MSCL, 1, 0, 0),
935 GATE(CLK_MSCL2, "mscl2", "aclk400_mscl", GATE_IP_MSCL, 2, 0, 0),
936 GATE(CLK_SMMU_MSCL0, "smmu_mscl0", "dout_mscl_blk",
937 GATE_IP_MSCL, 8, 0, 0),
938 GATE(CLK_SMMU_MSCL1, "smmu_mscl1", "dout_mscl_blk",
939 GATE_IP_MSCL, 9, 0, 0),
940 GATE(CLK_SMMU_MSCL2, "smmu_mscl2", "dout_mscl_blk",
941 GATE_IP_MSCL, 10, 0, 0),
942
713 GATE(CLK_FIMD1, "fimd1", "aclk300_disp1", GATE_IP_DISP1, 0, 0, 0), 943 GATE(CLK_FIMD1, "fimd1", "aclk300_disp1", GATE_IP_DISP1, 0, 0, 0),
714 GATE(CLK_DSIM1, "dsim1", "aclk200_disp1", GATE_IP_DISP1, 3, 0, 0), 944 GATE(CLK_DSIM1, "dsim1", "aclk200_disp1", GATE_IP_DISP1, 3, 0, 0),
715 GATE(CLK_DP1, "dp1", "aclk200_disp1", GATE_IP_DISP1, 4, 0, 0), 945 GATE(CLK_DP1, "dp1", "aclk200_disp1", GATE_IP_DISP1, 4, 0, 0),
716 GATE(CLK_MIXER, "mixer", "aclk166", GATE_IP_DISP1, 5, 0, 0), 946 GATE(CLK_MIXER, "mixer", "aclk200_disp1", GATE_IP_DISP1, 5, 0, 0),
717 GATE(CLK_HDMI, "hdmi", "aclk200_disp1", GATE_IP_DISP1, 6, 0, 0), 947 GATE(CLK_HDMI, "hdmi", "aclk200_disp1", GATE_IP_DISP1, 6, 0, 0),
718 GATE(CLK_SMMU_FIMD1, "smmu_fimd1", "aclk300_disp1", GATE_IP_DISP1, 8, 0, 948 GATE(CLK_SMMU_FIMD1M0, "smmu_fimd1m0", "dout_disp1_blk",
719 0), 949 GATE_IP_DISP1, 7, 0, 0),
950 GATE(CLK_SMMU_FIMD1M1, "smmu_fimd1m1", "dout_disp1_blk",
951 GATE_IP_DISP1, 8, 0, 0),
952 GATE(CLK_SMMU_MIXER, "smmu_mixer", "aclk200_disp1",
953 GATE_IP_DISP1, 9, 0, 0),
954
955 /* ISP */
956 GATE(CLK_SCLK_UART_ISP, "sclk_uart_isp", "dout_uart_isp",
957 GATE_TOP_SCLK_ISP, 0, CLK_SET_RATE_PARENT, 0),
958 GATE(CLK_SCLK_SPI0_ISP, "sclk_spi0_isp", "dout_spi0_isp_pre",
959 GATE_TOP_SCLK_ISP, 1, CLK_SET_RATE_PARENT, 0),
960 GATE(CLK_SCLK_SPI1_ISP, "sclk_spi1_isp", "dout_spi1_isp_pre",
961 GATE_TOP_SCLK_ISP, 2, CLK_SET_RATE_PARENT, 0),
962 GATE(CLK_SCLK_PWM_ISP, "sclk_pwm_isp", "dout_pwm_isp",
963 GATE_TOP_SCLK_ISP, 3, CLK_SET_RATE_PARENT, 0),
964 GATE(CLK_SCLK_ISP_SENSOR0, "sclk_isp_sensor0", "dout_isp_sensor0",
965 GATE_TOP_SCLK_ISP, 4, CLK_SET_RATE_PARENT, 0),
966 GATE(CLK_SCLK_ISP_SENSOR1, "sclk_isp_sensor1", "dout_isp_sensor1",
967 GATE_TOP_SCLK_ISP, 8, CLK_SET_RATE_PARENT, 0),
968 GATE(CLK_SCLK_ISP_SENSOR2, "sclk_isp_sensor2", "dout_isp_sensor2",
969 GATE_TOP_SCLK_ISP, 12, CLK_SET_RATE_PARENT, 0),
720 970
721 GATE(CLK_MFC, "mfc", "aclk333", GATE_IP_MFC, 0, 0, 0), 971 GATE(CLK_MFC, "mfc", "aclk333", GATE_IP_MFC, 0, 0, 0),
722 GATE(CLK_SMMU_MFCL, "smmu_mfcl", "aclk333", GATE_IP_MFC, 1, 0, 0), 972 GATE(CLK_SMMU_MFCL, "smmu_mfcl", "dout_mfc_blk", GATE_IP_MFC, 1, 0, 0),
723 GATE(CLK_SMMU_MFCR, "smmu_mfcr", "aclk333", GATE_IP_MFC, 2, 0, 0), 973 GATE(CLK_SMMU_MFCR, "smmu_mfcr", "dout_mfc_blk", GATE_IP_MFC, 2, 0, 0),
724 974
725 GATE(CLK_G3D, "g3d", "aclkg3d", GATE_IP_G3D, 9, 0, 0), 975 GATE(CLK_G3D, "g3d", "mout_user_aclk_g3d", GATE_IP_G3D, 9, 0, 0),
726
727 GATE(CLK_ROTATOR, "rotator", "aclk266", GATE_IP_GEN, 1, 0, 0),
728 GATE(CLK_JPEG, "jpeg", "aclk300_jpeg", GATE_IP_GEN, 2, 0, 0),
729 GATE(CLK_JPEG2, "jpeg2", "aclk300_jpeg", GATE_IP_GEN, 3, 0, 0),
730 GATE(CLK_MDMA1, "mdma1", "aclk266", GATE_IP_GEN, 4, 0, 0),
731 GATE(CLK_SMMU_ROTATOR, "smmu_rotator", "aclk266", GATE_IP_GEN, 6, 0, 0),
732 GATE(CLK_SMMU_JPEG, "smmu_jpeg", "aclk300_jpeg", GATE_IP_GEN, 7, 0, 0),
733 GATE(CLK_SMMU_MDMA1, "smmu_mdma1", "aclk266", GATE_IP_GEN, 9, 0, 0),
734
735 GATE(CLK_MSCL0, "mscl0", "aclk400_mscl", GATE_IP_MSCL, 0, 0, 0),
736 GATE(CLK_MSCL1, "mscl1", "aclk400_mscl", GATE_IP_MSCL, 1, 0, 0),
737 GATE(CLK_MSCL2, "mscl2", "aclk400_mscl", GATE_IP_MSCL, 2, 0, 0),
738 GATE(CLK_SMMU_MSCL0, "smmu_mscl0", "aclk400_mscl", GATE_IP_MSCL, 8, 0,
739 0),
740 GATE(CLK_SMMU_MSCL1, "smmu_mscl1", "aclk400_mscl", GATE_IP_MSCL, 9, 0,
741 0),
742 GATE(CLK_SMMU_MSCL2, "smmu_mscl2", "aclk400_mscl", GATE_IP_MSCL, 10, 0,
743 0),
744 GATE(CLK_SMMU_MIXER, "smmu_mixer", "aclk200_disp1", GATE_IP_DISP1, 9, 0,
745 0),
746}; 976};
747 977
748static struct samsung_pll_clock exynos5420_plls[nr_plls] __initdata = { 978static struct samsung_pll_clock exynos5420_plls[nr_plls] __initdata = {
diff --git a/drivers/clk/samsung/clk.c b/drivers/clk/samsung/clk.c
index 41c1461d2f58..49629c71c9e7 100644
--- a/drivers/clk/samsung/clk.c
+++ b/drivers/clk/samsung/clk.c
@@ -54,14 +54,19 @@ struct samsung_clk_provider *__init samsung_clk_init(struct device_node *np,
54 struct samsung_clk_provider *ctx; 54 struct samsung_clk_provider *ctx;
55 struct clk **clk_table; 55 struct clk **clk_table;
56 int ret; 56 int ret;
57 int i;
58
57 ctx = kzalloc(sizeof(struct samsung_clk_provider), GFP_KERNEL); 59 ctx = kzalloc(sizeof(struct samsung_clk_provider), GFP_KERNEL);
58 if (!ctx) 60 if (!ctx)
59 panic("could not allocate clock provider context.\n"); 61 panic("could not allocate clock provider context.\n");
60 62
61 clk_table = kzalloc(sizeof(struct clk *) * nr_clks, GFP_KERNEL); 63 clk_table = kcalloc(nr_clks, sizeof(struct clk *), GFP_KERNEL);
62 if (!clk_table) 64 if (!clk_table)
63 panic("could not allocate clock lookup table\n"); 65 panic("could not allocate clock lookup table\n");
64 66
67 for (i = 0; i < nr_clks; ++i)
68 clk_table[i] = ERR_PTR(-ENOENT);
69
65 ctx->reg_base = base; 70 ctx->reg_base = base;
66 ctx->clk_data.clks = clk_table; 71 ctx->clk_data.clks = clk_table;
67 ctx->clk_data.clk_num = nr_clks; 72 ctx->clk_data.clk_num = nr_clks;
@@ -288,7 +293,7 @@ void __init samsung_clk_of_register_fixed_ext(struct samsung_clk_provider *ctx,
288 for_each_matching_node_and_match(clk_np, clk_matches, &match) { 293 for_each_matching_node_and_match(clk_np, clk_matches, &match) {
289 if (of_property_read_u32(clk_np, "clock-frequency", &freq)) 294 if (of_property_read_u32(clk_np, "clock-frequency", &freq))
290 continue; 295 continue;
291 fixed_rate_clk[(u32)match->data].fixed_rate = freq; 296 fixed_rate_clk[(unsigned long)match->data].fixed_rate = freq;
292 } 297 }
293 samsung_clk_register_fixed_rate(ctx, fixed_rate_clk, nr_fixed_rate_clk); 298 samsung_clk_register_fixed_rate(ctx, fixed_rate_clk, nr_fixed_rate_clk);
294} 299}
diff --git a/include/dt-bindings/clock/exynos4.h b/include/dt-bindings/clock/exynos4.h
index 75aff336dfb0..1106ca540a96 100644
--- a/include/dt-bindings/clock/exynos4.h
+++ b/include/dt-bindings/clock/exynos4.h
@@ -33,6 +33,7 @@
33#define CLK_MOUT_MPLL_USER_C 18 /* Exynos4x12 only */ 33#define CLK_MOUT_MPLL_USER_C 18 /* Exynos4x12 only */
34#define CLK_MOUT_CORE 19 34#define CLK_MOUT_CORE 19
35#define CLK_MOUT_APLL 20 35#define CLK_MOUT_APLL 20
36#define CLK_SCLK_HDMIPHY 22
36 37
37/* gate for special clocks (sclk) */ 38/* gate for special clocks (sclk) */
38#define CLK_SCLK_FIMC0 128 39#define CLK_SCLK_FIMC0 128
@@ -181,7 +182,6 @@
181#define CLK_KEYIF 347 182#define CLK_KEYIF 347
182#define CLK_AUDSS 348 183#define CLK_AUDSS 348
183#define CLK_MIPI_HSI 349 /* Exynos4210 only */ 184#define CLK_MIPI_HSI 349 /* Exynos4210 only */
184#define CLK_MDMA2 350 /* Exynos4210 only */
185#define CLK_PIXELASYNCM0 351 185#define CLK_PIXELASYNCM0 351
186#define CLK_PIXELASYNCM1 352 186#define CLK_PIXELASYNCM1 352
187#define CLK_FIMC_LITE0 353 /* Exynos4x12 only */ 187#define CLK_FIMC_LITE0 353 /* Exynos4x12 only */
diff --git a/include/dt-bindings/clock/exynos5250.h b/include/dt-bindings/clock/exynos5250.h
index 922f2dca9bf0..415d447e6e29 100644
--- a/include/dt-bindings/clock/exynos5250.h
+++ b/include/dt-bindings/clock/exynos5250.h
@@ -150,11 +150,14 @@
150#define CLK_G2D 345 150#define CLK_G2D 345
151#define CLK_MDMA0 346 151#define CLK_MDMA0 346
152#define CLK_SMMU_MDMA0 347 152#define CLK_SMMU_MDMA0 347
153#define CLK_SSS 348
154#define CLK_G3D 349
153 155
154/* mux clocks */ 156/* mux clocks */
155#define CLK_MOUT_HDMI 1024 157#define CLK_MOUT_HDMI 1024
158#define CLK_MOUT_GPLL 1025
156 159
157/* must be greater than maximal clock id */ 160/* must be greater than maximal clock id */
158#define CLK_NR_CLKS 1025 161#define CLK_NR_CLKS 1026
159 162
160#endif /* _DT_BINDINGS_CLOCK_EXYNOS_5250_H */ 163#endif /* _DT_BINDINGS_CLOCK_EXYNOS_5250_H */
diff --git a/include/dt-bindings/clock/exynos5420.h b/include/dt-bindings/clock/exynos5420.h
index 5eefd8813f02..7dd1cc3b5c57 100644
--- a/include/dt-bindings/clock/exynos5420.h
+++ b/include/dt-bindings/clock/exynos5420.h
@@ -58,6 +58,9 @@
58#define CLK_SCLK_GSCL_WA 156 58#define CLK_SCLK_GSCL_WA 156
59#define CLK_SCLK_GSCL_WB 157 59#define CLK_SCLK_GSCL_WB 157
60#define CLK_SCLK_HDMIPHY 158 60#define CLK_SCLK_HDMIPHY 158
61#define CLK_MAU_EPLL 159
62#define CLK_SCLK_HSIC_12M 160
63#define CLK_SCLK_MPHY_IXTAL24 161
61 64
62/* gate clocks */ 65/* gate clocks */
63#define CLK_ACLK66_PERIC 256 66#define CLK_ACLK66_PERIC 256
@@ -69,10 +72,10 @@
69#define CLK_I2C1 262 72#define CLK_I2C1 262
70#define CLK_I2C2 263 73#define CLK_I2C2 263
71#define CLK_I2C3 264 74#define CLK_I2C3 264
72#define CLK_I2C4 265 75#define CLK_USI0 265
73#define CLK_I2C5 266 76#define CLK_USI1 266
74#define CLK_I2C6 267 77#define CLK_USI2 267
75#define CLK_I2C7 268 78#define CLK_USI3 268
76#define CLK_I2C_HDMI 269 79#define CLK_I2C_HDMI 269
77#define CLK_TSADC 270 80#define CLK_TSADC 270
78#define CLK_SPI0 271 81#define CLK_SPI0 271
@@ -85,9 +88,9 @@
85#define CLK_PCM2 278 88#define CLK_PCM2 278
86#define CLK_PWM 279 89#define CLK_PWM 279
87#define CLK_SPDIF 280 90#define CLK_SPDIF 280
88#define CLK_I2C8 281 91#define CLK_USI4 281
89#define CLK_I2C9 282 92#define CLK_USI5 282
90#define CLK_I2C10 283 93#define CLK_USI6 283
91#define CLK_ACLK66_PSGEN 300 94#define CLK_ACLK66_PSGEN 300
92#define CLK_CHIPID 301 95#define CLK_CHIPID 301
93#define CLK_SYSREG 302 96#define CLK_SYSREG 302
@@ -140,7 +143,8 @@
140#define CLK_HDMI 413 143#define CLK_HDMI 413
141#define CLK_ACLK300_DISP1 420 144#define CLK_ACLK300_DISP1 420
142#define CLK_FIMD1 421 145#define CLK_FIMD1 421
143#define CLK_SMMU_FIMD1 422 146#define CLK_SMMU_FIMD1M0 422
147#define CLK_SMMU_FIMD1M1 423
144#define CLK_ACLK166 430 148#define CLK_ACLK166 430
145#define CLK_MIXER 431 149#define CLK_MIXER 431
146#define CLK_ACLK266 440 150#define CLK_ACLK266 440
@@ -152,6 +156,7 @@
152#define CLK_JPEG 451 156#define CLK_JPEG 451
153#define CLK_JPEG2 452 157#define CLK_JPEG2 452
154#define CLK_SMMU_JPEG 453 158#define CLK_SMMU_JPEG 453
159#define CLK_SMMU_JPEG2 454
155#define CLK_ACLK300_GSCL 460 160#define CLK_ACLK300_GSCL 460
156#define CLK_SMMU_GSCL0 461 161#define CLK_SMMU_GSCL0 461
157#define CLK_SMMU_GSCL1 462 162#define CLK_SMMU_GSCL1 462
@@ -159,7 +164,7 @@
159#define CLK_GSCL_WB 464 164#define CLK_GSCL_WB 464
160#define CLK_GSCL0 465 165#define CLK_GSCL0 465
161#define CLK_GSCL1 466 166#define CLK_GSCL1 466
162#define CLK_CLK_3AA 467 167#define CLK_FIMC_3AA 467
163#define CLK_ACLK266_G2D 470 168#define CLK_ACLK266_G2D 470
164#define CLK_SSS 471 169#define CLK_SSS 471
165#define CLK_SLIM_SSS 472 170#define CLK_SLIM_SSS 472
@@ -172,12 +177,28 @@
172#define CLK_SMMU_FIMCL1 493 177#define CLK_SMMU_FIMCL1 493
173#define CLK_SMMU_FIMCL3 494 178#define CLK_SMMU_FIMCL3 494
174#define CLK_FIMC_LITE3 495 179#define CLK_FIMC_LITE3 495
180#define CLK_FIMC_LITE0 496
181#define CLK_FIMC_LITE1 497
175#define CLK_ACLK_G3D 500 182#define CLK_ACLK_G3D 500
176#define CLK_G3D 501 183#define CLK_G3D 501
177#define CLK_SMMU_MIXER 502 184#define CLK_SMMU_MIXER 502
185#define CLK_SMMU_G2D 503
186#define CLK_SMMU_MDMA0 504
187#define CLK_MC 505
188#define CLK_TOP_RTC 506
189#define CLK_SCLK_UART_ISP 510
190#define CLK_SCLK_SPI0_ISP 511
191#define CLK_SCLK_SPI1_ISP 512
192#define CLK_SCLK_PWM_ISP 513
193#define CLK_SCLK_ISP_SENSOR0 514
194#define CLK_SCLK_ISP_SENSOR1 515
195#define CLK_SCLK_ISP_SENSOR2 516
178 196
179/* mux clocks */ 197/* mux clocks */
180#define CLK_MOUT_HDMI 640 198#define CLK_MOUT_HDMI 640
199#define CLK_MOUT_G3D 641
200#define CLK_MOUT_VPLL 642
201#define CLK_MOUT_MAUDIO0 643
181 202
182/* divider clocks */ 203/* divider clocks */
183#define CLK_DOUT_PIXEL 768 204#define CLK_DOUT_PIXEL 768