diff options
author | Arun Kumar K <arun.kk@samsung.com> | 2014-04-28 05:37:01 -0400 |
---|---|---|
committer | Tomasz Figa <t.figa@samsung.com> | 2014-05-14 13:40:15 -0400 |
commit | 20b82ae27e89739ed8740323913d58efe593ef91 (patch) | |
tree | f14d6b22d3b2a15e80c914720ce54384ffef4d7d /drivers/clk/samsung | |
parent | 04bc7d96fbbbd7c379a8351db9f2466b47c74ec2 (diff) |
clk: samsung: exynos5250: Add clocks for G3D
This patch adds the required clocks for ARM Mali IP
in Exynos5250.
Signed-off-by: Arun Kumar K <arun.kk@samsung.com>
[t.figa: Changed clock ID to avoid conflict with CLK_SSS]
Signed-off-by: Tomasz Figa <t.figa@samsung.com>
Diffstat (limited to 'drivers/clk/samsung')
-rw-r--r-- | drivers/clk/samsung/clk-exynos5250.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/clk/samsung/clk-exynos5250.c b/drivers/clk/samsung/clk-exynos5250.c index d1d53ca45e20..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" }; | |||
189 | PNAME(mout_vpll_p) = { "mout_vpllsrc", "fout_vpll" }; | 193 | PNAME(mout_vpll_p) = { "mout_vpllsrc", "fout_vpll" }; |
190 | PNAME(mout_cpll_p) = { "fin_pll", "fout_cpll" }; | 194 | PNAME(mout_cpll_p) = { "fin_pll", "fout_cpll" }; |
191 | PNAME(mout_epll_p) = { "fin_pll", "fout_epll" }; | 195 | PNAME(mout_epll_p) = { "fin_pll", "fout_epll" }; |
196 | PNAME(mout_gpll_p) = { "fin_pll", "fout_gpll" }; | ||
192 | PNAME(mout_mpll_user_p) = { "fin_pll", "mout_mpll" }; | 197 | PNAME(mout_mpll_user_p) = { "fin_pll", "mout_mpll" }; |
193 | PNAME(mout_bpll_user_p) = { "fin_pll", "mout_bpll" }; | 198 | PNAME(mout_bpll_user_p) = { "fin_pll", "mout_bpll" }; |
194 | PNAME(mout_aclk166_p) = { "mout_cpll", "mout_mpll_user" }; | 199 | PNAME(mout_aclk166_p) = { "mout_cpll", "mout_mpll_user" }; |
195 | PNAME(mout_aclk200_p) = { "mout_mpll_user", "mout_bpll_user" }; | 200 | PNAME(mout_aclk200_p) = { "mout_mpll_user", "mout_bpll_user" }; |
201 | PNAME(mout_aclk400_p) = { "mout_aclk400_g3d_mid", "mout_gpll" }; | ||
196 | PNAME(mout_aclk200_sub_p) = { "fin_pll", "div_aclk200" }; | 202 | PNAME(mout_aclk200_sub_p) = { "fin_pll", "div_aclk200" }; |
197 | PNAME(mout_aclk266_sub_p) = { "fin_pll", "div_aclk266" }; | 203 | PNAME(mout_aclk266_sub_p) = { "fin_pll", "div_aclk266" }; |
198 | PNAME(mout_aclk333_sub_p) = { "fin_pll", "div_aclk333" }; | 204 | PNAME(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 | ||
@@ -534,7 +546,8 @@ static struct samsung_gate_clock exynos5250_gate_clks[] __initdata = { | |||
534 | 0), | 546 | 0), |
535 | 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, |
536 | 0), | 548 | 0), |
537 | 549 | GATE(CLK_G3D, "g3d", "div_aclk400_g3d", GATE_IP_G3D, 0, | |
550 | CLK_SET_RATE_PARENT, 0), | ||
538 | 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), |
539 | 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), |
540 | 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), |