diff options
author | Michael Turquette <mturquette@linaro.org> | 2015-01-19 11:36:52 -0500 |
---|---|---|
committer | Michael Turquette <mturquette@linaro.org> | 2015-01-20 13:09:09 -0500 |
commit | 11144283123355d232e3565b224730315b8c3c72 (patch) | |
tree | 324903a6474a092dc1d2eaaa934ce4970f2859b7 | |
parent | 1a34275d347fd4602443417d11031b77d368cae9 (diff) | |
parent | 9f930a39e135d370d17e7a1ab73ddebcfb896f98 (diff) |
Merge tag 'for-v3.20-exynos7-clk' of git://linuxtv.org/snawrocki/samsung into clk-next
- Clock definitions for Exynos7 SoC peripheral devices:
video scaler, USB, DMA, SPI and the audio subsystem.
-rw-r--r-- | Documentation/devicetree/bindings/clock/exynos7-clock.txt | 15 | ||||
-rw-r--r-- | drivers/clk/samsung/clk-exynos7.c | 408 | ||||
-rw-r--r-- | include/dt-bindings/clock/exynos7-clk.h | 88 |
3 files changed, 505 insertions, 6 deletions
diff --git a/Documentation/devicetree/bindings/clock/exynos7-clock.txt b/Documentation/devicetree/bindings/clock/exynos7-clock.txt index 6d3d5f80c1c3..6bf1e7493f61 100644 --- a/Documentation/devicetree/bindings/clock/exynos7-clock.txt +++ b/Documentation/devicetree/bindings/clock/exynos7-clock.txt | |||
@@ -34,6 +34,8 @@ Required Properties for Clock Controller: | |||
34 | - "samsung,exynos7-clock-peris" | 34 | - "samsung,exynos7-clock-peris" |
35 | - "samsung,exynos7-clock-fsys0" | 35 | - "samsung,exynos7-clock-fsys0" |
36 | - "samsung,exynos7-clock-fsys1" | 36 | - "samsung,exynos7-clock-fsys1" |
37 | - "samsung,exynos7-clock-mscl" | ||
38 | - "samsung,exynos7-clock-aud" | ||
37 | 39 | ||
38 | - reg: physical base address of the controller and the length of | 40 | - reg: physical base address of the controller and the length of |
39 | memory mapped region. | 41 | memory mapped region. |
@@ -53,6 +55,7 @@ Input clocks for top0 clock controller: | |||
53 | - dout_sclk_bus1_pll | 55 | - dout_sclk_bus1_pll |
54 | - dout_sclk_cc_pll | 56 | - dout_sclk_cc_pll |
55 | - dout_sclk_mfc_pll | 57 | - dout_sclk_mfc_pll |
58 | - dout_sclk_aud_pll | ||
56 | 59 | ||
57 | Input clocks for top1 clock controller: | 60 | Input clocks for top1 clock controller: |
58 | - fin_pll | 61 | - fin_pll |
@@ -76,6 +79,14 @@ Input clocks for peric1 clock controller: | |||
76 | - sclk_uart1 | 79 | - sclk_uart1 |
77 | - sclk_uart2 | 80 | - sclk_uart2 |
78 | - sclk_uart3 | 81 | - sclk_uart3 |
82 | - sclk_spi0 | ||
83 | - sclk_spi1 | ||
84 | - sclk_spi2 | ||
85 | - sclk_spi3 | ||
86 | - sclk_spi4 | ||
87 | - sclk_i2s1 | ||
88 | - sclk_pcm1 | ||
89 | - sclk_spdif | ||
79 | 90 | ||
80 | Input clocks for peris clock controller: | 91 | Input clocks for peris clock controller: |
81 | - fin_pll | 92 | - fin_pll |
@@ -91,3 +102,7 @@ Input clocks for fsys1 clock controller: | |||
91 | - dout_aclk_fsys1_200 | 102 | - dout_aclk_fsys1_200 |
92 | - dout_sclk_mmc0 | 103 | - dout_sclk_mmc0 |
93 | - dout_sclk_mmc1 | 104 | - dout_sclk_mmc1 |
105 | |||
106 | Input clocks for aud clock controller: | ||
107 | - fin_pll | ||
108 | - fout_aud_pll | ||
diff --git a/drivers/clk/samsung/clk-exynos7.c b/drivers/clk/samsung/clk-exynos7.c index ea4483b8d62e..03d36e847b78 100644 --- a/drivers/clk/samsung/clk-exynos7.c +++ b/drivers/clk/samsung/clk-exynos7.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #define DIV_TOPC0 0x0600 | 34 | #define DIV_TOPC0 0x0600 |
35 | #define DIV_TOPC1 0x0604 | 35 | #define DIV_TOPC1 0x0604 |
36 | #define DIV_TOPC3 0x060C | 36 | #define DIV_TOPC3 0x060C |
37 | #define ENABLE_ACLK_TOPC1 0x0804 | ||
37 | 38 | ||
38 | static struct samsung_fixed_factor_clock topc_fixed_factor_clks[] __initdata = { | 39 | static struct samsung_fixed_factor_clock topc_fixed_factor_clks[] __initdata = { |
39 | FFACTOR(0, "ffac_topc_bus0_pll_div2", "mout_bus0_pll_ctrl", 1, 2, 0), | 40 | FFACTOR(0, "ffac_topc_bus0_pll_div2", "mout_bus0_pll_ctrl", 1, 2, 0), |
@@ -45,6 +46,7 @@ static struct samsung_fixed_factor_clock topc_fixed_factor_clks[] __initdata = { | |||
45 | }; | 46 | }; |
46 | 47 | ||
47 | /* List of parent clocks for Muxes in CMU_TOPC */ | 48 | /* List of parent clocks for Muxes in CMU_TOPC */ |
49 | PNAME(mout_aud_pll_ctrl_p) = { "fin_pll", "fout_aud_pll" }; | ||
48 | PNAME(mout_bus0_pll_ctrl_p) = { "fin_pll", "fout_bus0_pll" }; | 50 | PNAME(mout_bus0_pll_ctrl_p) = { "fin_pll", "fout_bus0_pll" }; |
49 | PNAME(mout_bus1_pll_ctrl_p) = { "fin_pll", "fout_bus1_pll" }; | 51 | PNAME(mout_bus1_pll_ctrl_p) = { "fin_pll", "fout_bus1_pll" }; |
50 | PNAME(mout_cc_pll_ctrl_p) = { "fin_pll", "fout_cc_pll" }; | 52 | PNAME(mout_cc_pll_ctrl_p) = { "fin_pll", "fout_cc_pll" }; |
@@ -104,9 +106,11 @@ static struct samsung_mux_clock topc_mux_clks[] __initdata = { | |||
104 | 106 | ||
105 | MUX(0, "mout_sclk_bus0_pll_out", mout_sclk_bus0_pll_out_p, | 107 | MUX(0, "mout_sclk_bus0_pll_out", mout_sclk_bus0_pll_out_p, |
106 | MUX_SEL_TOPC1, 16, 1), | 108 | MUX_SEL_TOPC1, 16, 1), |
109 | MUX(0, "mout_aud_pll_ctrl", mout_aud_pll_ctrl_p, MUX_SEL_TOPC1, 0, 1), | ||
107 | 110 | ||
108 | MUX(0, "mout_aclk_ccore_133", mout_topc_group2, MUX_SEL_TOPC2, 4, 2), | 111 | MUX(0, "mout_aclk_ccore_133", mout_topc_group2, MUX_SEL_TOPC2, 4, 2), |
109 | 112 | ||
113 | MUX(0, "mout_aclk_mscl_532", mout_topc_group2, MUX_SEL_TOPC3, 20, 2), | ||
110 | MUX(0, "mout_aclk_peris_66", mout_topc_group2, MUX_SEL_TOPC3, 24, 2), | 114 | MUX(0, "mout_aclk_peris_66", mout_topc_group2, MUX_SEL_TOPC3, 24, 2), |
111 | }; | 115 | }; |
112 | 116 | ||
@@ -114,6 +118,8 @@ static struct samsung_div_clock topc_div_clks[] __initdata = { | |||
114 | DIV(DOUT_ACLK_CCORE_133, "dout_aclk_ccore_133", "mout_aclk_ccore_133", | 118 | DIV(DOUT_ACLK_CCORE_133, "dout_aclk_ccore_133", "mout_aclk_ccore_133", |
115 | DIV_TOPC0, 4, 4), | 119 | DIV_TOPC0, 4, 4), |
116 | 120 | ||
121 | DIV(DOUT_ACLK_MSCL_532, "dout_aclk_mscl_532", "mout_aclk_mscl_532", | ||
122 | DIV_TOPC1, 20, 4), | ||
117 | DIV(DOUT_ACLK_PERIS, "dout_aclk_peris_66", "mout_aclk_peris_66", | 123 | DIV(DOUT_ACLK_PERIS, "dout_aclk_peris_66", "mout_aclk_peris_66", |
118 | DIV_TOPC1, 24, 4), | 124 | DIV_TOPC1, 24, 4), |
119 | 125 | ||
@@ -125,6 +131,18 @@ static struct samsung_div_clock topc_div_clks[] __initdata = { | |||
125 | DIV_TOPC3, 12, 3), | 131 | DIV_TOPC3, 12, 3), |
126 | DIV(DOUT_SCLK_MFC_PLL, "dout_sclk_mfc_pll", "mout_mfc_pll_ctrl", | 132 | DIV(DOUT_SCLK_MFC_PLL, "dout_sclk_mfc_pll", "mout_mfc_pll_ctrl", |
127 | DIV_TOPC3, 16, 3), | 133 | DIV_TOPC3, 16, 3), |
134 | DIV(DOUT_SCLK_AUD_PLL, "dout_sclk_aud_pll", "mout_aud_pll_ctrl", | ||
135 | DIV_TOPC3, 28, 3), | ||
136 | }; | ||
137 | |||
138 | static struct samsung_pll_rate_table pll1460x_24mhz_tbl[] __initdata = { | ||
139 | PLL_36XX_RATE(491520000, 20, 1, 0, 31457), | ||
140 | {}, | ||
141 | }; | ||
142 | |||
143 | static struct samsung_gate_clock topc_gate_clks[] __initdata = { | ||
144 | GATE(ACLK_MSCL_532, "aclk_mscl_532", "dout_aclk_mscl_532", | ||
145 | ENABLE_ACLK_TOPC1, 20, 0, 0), | ||
128 | }; | 146 | }; |
129 | 147 | ||
130 | static struct samsung_pll_clock topc_pll_clks[] __initdata = { | 148 | static struct samsung_pll_clock topc_pll_clks[] __initdata = { |
@@ -136,8 +154,8 @@ static struct samsung_pll_clock topc_pll_clks[] __initdata = { | |||
136 | BUS1_DPLL_CON0, NULL), | 154 | BUS1_DPLL_CON0, NULL), |
137 | PLL(pll_1452x, 0, "fout_mfc_pll", "fin_pll", MFC_PLL_LOCK, | 155 | PLL(pll_1452x, 0, "fout_mfc_pll", "fin_pll", MFC_PLL_LOCK, |
138 | MFC_PLL_CON0, NULL), | 156 | MFC_PLL_CON0, NULL), |
139 | PLL(pll_1460x, 0, "fout_aud_pll", "fin_pll", AUD_PLL_LOCK, | 157 | PLL(pll_1460x, FOUT_AUD_PLL, "fout_aud_pll", "fin_pll", AUD_PLL_LOCK, |
140 | AUD_PLL_CON0, NULL), | 158 | AUD_PLL_CON0, pll1460x_24mhz_tbl), |
141 | }; | 159 | }; |
142 | 160 | ||
143 | static struct samsung_cmu_info topc_cmu_info __initdata = { | 161 | static struct samsung_cmu_info topc_cmu_info __initdata = { |
@@ -147,6 +165,8 @@ static struct samsung_cmu_info topc_cmu_info __initdata = { | |||
147 | .nr_mux_clks = ARRAY_SIZE(topc_mux_clks), | 165 | .nr_mux_clks = ARRAY_SIZE(topc_mux_clks), |
148 | .div_clks = topc_div_clks, | 166 | .div_clks = topc_div_clks, |
149 | .nr_div_clks = ARRAY_SIZE(topc_div_clks), | 167 | .nr_div_clks = ARRAY_SIZE(topc_div_clks), |
168 | .gate_clks = topc_gate_clks, | ||
169 | .nr_gate_clks = ARRAY_SIZE(topc_gate_clks), | ||
150 | .fixed_factor_clks = topc_fixed_factor_clks, | 170 | .fixed_factor_clks = topc_fixed_factor_clks, |
151 | .nr_fixed_factor_clks = ARRAY_SIZE(topc_fixed_factor_clks), | 171 | .nr_fixed_factor_clks = ARRAY_SIZE(topc_fixed_factor_clks), |
152 | .nr_clk_ids = TOPC_NR_CLK, | 172 | .nr_clk_ids = TOPC_NR_CLK, |
@@ -166,9 +186,18 @@ CLK_OF_DECLARE(exynos7_clk_topc, "samsung,exynos7-clock-topc", | |||
166 | #define MUX_SEL_TOP00 0x0200 | 186 | #define MUX_SEL_TOP00 0x0200 |
167 | #define MUX_SEL_TOP01 0x0204 | 187 | #define MUX_SEL_TOP01 0x0204 |
168 | #define MUX_SEL_TOP03 0x020C | 188 | #define MUX_SEL_TOP03 0x020C |
189 | #define MUX_SEL_TOP0_PERIC0 0x0230 | ||
190 | #define MUX_SEL_TOP0_PERIC1 0x0234 | ||
191 | #define MUX_SEL_TOP0_PERIC2 0x0238 | ||
169 | #define MUX_SEL_TOP0_PERIC3 0x023C | 192 | #define MUX_SEL_TOP0_PERIC3 0x023C |
170 | #define DIV_TOP03 0x060C | 193 | #define DIV_TOP03 0x060C |
194 | #define DIV_TOP0_PERIC0 0x0630 | ||
195 | #define DIV_TOP0_PERIC1 0x0634 | ||
196 | #define DIV_TOP0_PERIC2 0x0638 | ||
171 | #define DIV_TOP0_PERIC3 0x063C | 197 | #define DIV_TOP0_PERIC3 0x063C |
198 | #define ENABLE_SCLK_TOP0_PERIC0 0x0A30 | ||
199 | #define ENABLE_SCLK_TOP0_PERIC1 0x0A34 | ||
200 | #define ENABLE_SCLK_TOP0_PERIC2 0x0A38 | ||
172 | #define ENABLE_SCLK_TOP0_PERIC3 0x0A3C | 201 | #define ENABLE_SCLK_TOP0_PERIC3 0x0A3C |
173 | 202 | ||
174 | /* List of parent clocks for Muxes in CMU_TOP0 */ | 203 | /* List of parent clocks for Muxes in CMU_TOP0 */ |
@@ -176,6 +205,7 @@ PNAME(mout_bus0_pll_p) = { "fin_pll", "dout_sclk_bus0_pll" }; | |||
176 | PNAME(mout_bus1_pll_p) = { "fin_pll", "dout_sclk_bus1_pll" }; | 205 | PNAME(mout_bus1_pll_p) = { "fin_pll", "dout_sclk_bus1_pll" }; |
177 | PNAME(mout_cc_pll_p) = { "fin_pll", "dout_sclk_cc_pll" }; | 206 | PNAME(mout_cc_pll_p) = { "fin_pll", "dout_sclk_cc_pll" }; |
178 | PNAME(mout_mfc_pll_p) = { "fin_pll", "dout_sclk_mfc_pll" }; | 207 | PNAME(mout_mfc_pll_p) = { "fin_pll", "dout_sclk_mfc_pll" }; |
208 | PNAME(mout_aud_pll_p) = { "fin_pll", "dout_sclk_aud_pll" }; | ||
179 | 209 | ||
180 | PNAME(mout_top0_half_bus0_pll_p) = {"mout_top0_bus0_pll", | 210 | PNAME(mout_top0_half_bus0_pll_p) = {"mout_top0_bus0_pll", |
181 | "ffac_top0_bus0_pll_div2"}; | 211 | "ffac_top0_bus0_pll_div2"}; |
@@ -189,18 +219,34 @@ PNAME(mout_top0_half_mfc_pll_p) = {"mout_top0_mfc_pll", | |||
189 | PNAME(mout_top0_group1) = {"mout_top0_half_bus0_pll", | 219 | PNAME(mout_top0_group1) = {"mout_top0_half_bus0_pll", |
190 | "mout_top0_half_bus1_pll", "mout_top0_half_cc_pll", | 220 | "mout_top0_half_bus1_pll", "mout_top0_half_cc_pll", |
191 | "mout_top0_half_mfc_pll"}; | 221 | "mout_top0_half_mfc_pll"}; |
222 | PNAME(mout_top0_group3) = {"ioclk_audiocdclk0", | ||
223 | "ioclk_audiocdclk1", "ioclk_spdif_extclk", | ||
224 | "mout_top0_aud_pll", "mout_top0_half_bus0_pll", | ||
225 | "mout_top0_half_bus1_pll"}; | ||
226 | PNAME(mout_top0_group4) = {"ioclk_audiocdclk1", "mout_top0_aud_pll", | ||
227 | "mout_top0_half_bus0_pll", "mout_top0_half_bus1_pll"}; | ||
192 | 228 | ||
193 | static unsigned long top0_clk_regs[] __initdata = { | 229 | static unsigned long top0_clk_regs[] __initdata = { |
194 | MUX_SEL_TOP00, | 230 | MUX_SEL_TOP00, |
195 | MUX_SEL_TOP01, | 231 | MUX_SEL_TOP01, |
196 | MUX_SEL_TOP03, | 232 | MUX_SEL_TOP03, |
233 | MUX_SEL_TOP0_PERIC0, | ||
234 | MUX_SEL_TOP0_PERIC1, | ||
235 | MUX_SEL_TOP0_PERIC2, | ||
197 | MUX_SEL_TOP0_PERIC3, | 236 | MUX_SEL_TOP0_PERIC3, |
198 | DIV_TOP03, | 237 | DIV_TOP03, |
238 | DIV_TOP0_PERIC0, | ||
239 | DIV_TOP0_PERIC1, | ||
240 | DIV_TOP0_PERIC2, | ||
199 | DIV_TOP0_PERIC3, | 241 | DIV_TOP0_PERIC3, |
242 | ENABLE_SCLK_TOP0_PERIC0, | ||
243 | ENABLE_SCLK_TOP0_PERIC1, | ||
244 | ENABLE_SCLK_TOP0_PERIC2, | ||
200 | ENABLE_SCLK_TOP0_PERIC3, | 245 | ENABLE_SCLK_TOP0_PERIC3, |
201 | }; | 246 | }; |
202 | 247 | ||
203 | static struct samsung_mux_clock top0_mux_clks[] __initdata = { | 248 | static struct samsung_mux_clock top0_mux_clks[] __initdata = { |
249 | MUX(0, "mout_top0_aud_pll", mout_aud_pll_p, MUX_SEL_TOP00, 0, 1), | ||
204 | MUX(0, "mout_top0_mfc_pll", mout_mfc_pll_p, MUX_SEL_TOP00, 4, 1), | 250 | MUX(0, "mout_top0_mfc_pll", mout_mfc_pll_p, MUX_SEL_TOP00, 4, 1), |
205 | MUX(0, "mout_top0_cc_pll", mout_cc_pll_p, MUX_SEL_TOP00, 8, 1), | 251 | MUX(0, "mout_top0_cc_pll", mout_cc_pll_p, MUX_SEL_TOP00, 8, 1), |
206 | MUX(0, "mout_top0_bus1_pll", mout_bus1_pll_p, MUX_SEL_TOP00, 12, 1), | 252 | MUX(0, "mout_top0_bus1_pll", mout_bus1_pll_p, MUX_SEL_TOP00, 12, 1), |
@@ -218,10 +264,20 @@ static struct samsung_mux_clock top0_mux_clks[] __initdata = { | |||
218 | MUX(0, "mout_aclk_peric1_66", mout_top0_group1, MUX_SEL_TOP03, 12, 2), | 264 | MUX(0, "mout_aclk_peric1_66", mout_top0_group1, MUX_SEL_TOP03, 12, 2), |
219 | MUX(0, "mout_aclk_peric0_66", mout_top0_group1, MUX_SEL_TOP03, 20, 2), | 265 | MUX(0, "mout_aclk_peric0_66", mout_top0_group1, MUX_SEL_TOP03, 20, 2), |
220 | 266 | ||
267 | MUX(0, "mout_sclk_spdif", mout_top0_group3, MUX_SEL_TOP0_PERIC0, 4, 3), | ||
268 | MUX(0, "mout_sclk_pcm1", mout_top0_group4, MUX_SEL_TOP0_PERIC0, 8, 2), | ||
269 | MUX(0, "mout_sclk_i2s1", mout_top0_group4, MUX_SEL_TOP0_PERIC0, 20, 2), | ||
270 | |||
271 | MUX(0, "mout_sclk_spi1", mout_top0_group1, MUX_SEL_TOP0_PERIC1, 8, 2), | ||
272 | MUX(0, "mout_sclk_spi0", mout_top0_group1, MUX_SEL_TOP0_PERIC1, 20, 2), | ||
273 | |||
274 | MUX(0, "mout_sclk_spi3", mout_top0_group1, MUX_SEL_TOP0_PERIC2, 8, 2), | ||
275 | MUX(0, "mout_sclk_spi2", mout_top0_group1, MUX_SEL_TOP0_PERIC2, 20, 2), | ||
221 | MUX(0, "mout_sclk_uart3", mout_top0_group1, MUX_SEL_TOP0_PERIC3, 4, 2), | 276 | MUX(0, "mout_sclk_uart3", mout_top0_group1, MUX_SEL_TOP0_PERIC3, 4, 2), |
222 | MUX(0, "mout_sclk_uart2", mout_top0_group1, MUX_SEL_TOP0_PERIC3, 8, 2), | 277 | MUX(0, "mout_sclk_uart2", mout_top0_group1, MUX_SEL_TOP0_PERIC3, 8, 2), |
223 | MUX(0, "mout_sclk_uart1", mout_top0_group1, MUX_SEL_TOP0_PERIC3, 12, 2), | 278 | MUX(0, "mout_sclk_uart1", mout_top0_group1, MUX_SEL_TOP0_PERIC3, 12, 2), |
224 | MUX(0, "mout_sclk_uart0", mout_top0_group1, MUX_SEL_TOP0_PERIC3, 16, 2), | 279 | MUX(0, "mout_sclk_uart0", mout_top0_group1, MUX_SEL_TOP0_PERIC3, 16, 2), |
280 | MUX(0, "mout_sclk_spi4", mout_top0_group1, MUX_SEL_TOP0_PERIC3, 20, 2), | ||
225 | }; | 281 | }; |
226 | 282 | ||
227 | static struct samsung_div_clock top0_div_clks[] __initdata = { | 283 | static struct samsung_div_clock top0_div_clks[] __initdata = { |
@@ -230,13 +286,40 @@ static struct samsung_div_clock top0_div_clks[] __initdata = { | |||
230 | DIV(DOUT_ACLK_PERIC0, "dout_aclk_peric0_66", "mout_aclk_peric0_66", | 286 | DIV(DOUT_ACLK_PERIC0, "dout_aclk_peric0_66", "mout_aclk_peric0_66", |
231 | DIV_TOP03, 20, 6), | 287 | DIV_TOP03, 20, 6), |
232 | 288 | ||
289 | DIV(0, "dout_sclk_spdif", "mout_sclk_spdif", DIV_TOP0_PERIC0, 4, 4), | ||
290 | DIV(0, "dout_sclk_pcm1", "mout_sclk_pcm1", DIV_TOP0_PERIC0, 8, 12), | ||
291 | DIV(0, "dout_sclk_i2s1", "mout_sclk_i2s1", DIV_TOP0_PERIC0, 20, 10), | ||
292 | |||
293 | DIV(0, "dout_sclk_spi1", "mout_sclk_spi1", DIV_TOP0_PERIC1, 8, 12), | ||
294 | DIV(0, "dout_sclk_spi0", "mout_sclk_spi0", DIV_TOP0_PERIC1, 20, 12), | ||
295 | |||
296 | DIV(0, "dout_sclk_spi3", "mout_sclk_spi3", DIV_TOP0_PERIC2, 8, 12), | ||
297 | DIV(0, "dout_sclk_spi2", "mout_sclk_spi2", DIV_TOP0_PERIC2, 20, 12), | ||
298 | |||
233 | DIV(0, "dout_sclk_uart3", "mout_sclk_uart3", DIV_TOP0_PERIC3, 4, 4), | 299 | DIV(0, "dout_sclk_uart3", "mout_sclk_uart3", DIV_TOP0_PERIC3, 4, 4), |
234 | DIV(0, "dout_sclk_uart2", "mout_sclk_uart2", DIV_TOP0_PERIC3, 8, 4), | 300 | DIV(0, "dout_sclk_uart2", "mout_sclk_uart2", DIV_TOP0_PERIC3, 8, 4), |
235 | DIV(0, "dout_sclk_uart1", "mout_sclk_uart1", DIV_TOP0_PERIC3, 12, 4), | 301 | DIV(0, "dout_sclk_uart1", "mout_sclk_uart1", DIV_TOP0_PERIC3, 12, 4), |
236 | DIV(0, "dout_sclk_uart0", "mout_sclk_uart0", DIV_TOP0_PERIC3, 16, 4), | 302 | DIV(0, "dout_sclk_uart0", "mout_sclk_uart0", DIV_TOP0_PERIC3, 16, 4), |
303 | DIV(0, "dout_sclk_spi4", "mout_sclk_spi4", DIV_TOP0_PERIC3, 20, 12), | ||
237 | }; | 304 | }; |
238 | 305 | ||
239 | static struct samsung_gate_clock top0_gate_clks[] __initdata = { | 306 | static struct samsung_gate_clock top0_gate_clks[] __initdata = { |
307 | GATE(CLK_SCLK_SPDIF, "sclk_spdif", "dout_sclk_spdif", | ||
308 | ENABLE_SCLK_TOP0_PERIC0, 4, CLK_SET_RATE_PARENT, 0), | ||
309 | GATE(CLK_SCLK_PCM1, "sclk_pcm1", "dout_sclk_pcm1", | ||
310 | ENABLE_SCLK_TOP0_PERIC0, 8, CLK_SET_RATE_PARENT, 0), | ||
311 | GATE(CLK_SCLK_I2S1, "sclk_i2s1", "dout_sclk_i2s1", | ||
312 | ENABLE_SCLK_TOP0_PERIC0, 20, CLK_SET_RATE_PARENT, 0), | ||
313 | |||
314 | GATE(CLK_SCLK_SPI1, "sclk_spi1", "dout_sclk_spi1", | ||
315 | ENABLE_SCLK_TOP0_PERIC1, 8, CLK_SET_RATE_PARENT, 0), | ||
316 | GATE(CLK_SCLK_SPI0, "sclk_spi0", "dout_sclk_spi0", | ||
317 | ENABLE_SCLK_TOP0_PERIC1, 20, CLK_SET_RATE_PARENT, 0), | ||
318 | |||
319 | GATE(CLK_SCLK_SPI3, "sclk_spi3", "dout_sclk_spi3", | ||
320 | ENABLE_SCLK_TOP0_PERIC2, 8, CLK_SET_RATE_PARENT, 0), | ||
321 | GATE(CLK_SCLK_SPI2, "sclk_spi2", "dout_sclk_spi2", | ||
322 | ENABLE_SCLK_TOP0_PERIC2, 20, CLK_SET_RATE_PARENT, 0), | ||
240 | GATE(CLK_SCLK_UART3, "sclk_uart3", "dout_sclk_uart3", | 323 | GATE(CLK_SCLK_UART3, "sclk_uart3", "dout_sclk_uart3", |
241 | ENABLE_SCLK_TOP0_PERIC3, 4, 0, 0), | 324 | ENABLE_SCLK_TOP0_PERIC3, 4, 0, 0), |
242 | GATE(CLK_SCLK_UART2, "sclk_uart2", "dout_sclk_uart2", | 325 | GATE(CLK_SCLK_UART2, "sclk_uart2", "dout_sclk_uart2", |
@@ -245,6 +328,8 @@ static struct samsung_gate_clock top0_gate_clks[] __initdata = { | |||
245 | ENABLE_SCLK_TOP0_PERIC3, 12, 0, 0), | 328 | ENABLE_SCLK_TOP0_PERIC3, 12, 0, 0), |
246 | GATE(CLK_SCLK_UART0, "sclk_uart0", "dout_sclk_uart0", | 329 | GATE(CLK_SCLK_UART0, "sclk_uart0", "dout_sclk_uart0", |
247 | ENABLE_SCLK_TOP0_PERIC3, 16, 0, 0), | 330 | ENABLE_SCLK_TOP0_PERIC3, 16, 0, 0), |
331 | GATE(CLK_SCLK_SPI4, "sclk_spi4", "dout_sclk_spi4", | ||
332 | ENABLE_SCLK_TOP0_PERIC3, 20, CLK_SET_RATE_PARENT, 0), | ||
248 | }; | 333 | }; |
249 | 334 | ||
250 | static struct samsung_fixed_factor_clock top0_fixed_factor_clks[] __initdata = { | 335 | static struct samsung_fixed_factor_clock top0_fixed_factor_clks[] __initdata = { |
@@ -343,6 +428,8 @@ static struct samsung_mux_clock top1_mux_clks[] __initdata = { | |||
343 | MUX(0, "mout_aclk_fsys0_200", mout_top1_group1, MUX_SEL_TOP13, 28, 2), | 428 | MUX(0, "mout_aclk_fsys0_200", mout_top1_group1, MUX_SEL_TOP13, 28, 2), |
344 | 429 | ||
345 | MUX(0, "mout_sclk_mmc2", mout_top1_group1, MUX_SEL_TOP1_FSYS0, 24, 2), | 430 | MUX(0, "mout_sclk_mmc2", mout_top1_group1, MUX_SEL_TOP1_FSYS0, 24, 2), |
431 | MUX(0, "mout_sclk_usbdrd300", mout_top1_group1, | ||
432 | MUX_SEL_TOP1_FSYS0, 28, 2), | ||
346 | 433 | ||
347 | MUX(0, "mout_sclk_mmc1", mout_top1_group1, MUX_SEL_TOP1_FSYS1, 24, 2), | 434 | MUX(0, "mout_sclk_mmc1", mout_top1_group1, MUX_SEL_TOP1_FSYS1, 24, 2), |
348 | MUX(0, "mout_sclk_mmc0", mout_top1_group1, MUX_SEL_TOP1_FSYS1, 28, 2), | 435 | MUX(0, "mout_sclk_mmc0", mout_top1_group1, MUX_SEL_TOP1_FSYS1, 28, 2), |
@@ -356,6 +443,8 @@ static struct samsung_div_clock top1_div_clks[] __initdata = { | |||
356 | 443 | ||
357 | DIV(DOUT_SCLK_MMC2, "dout_sclk_mmc2", "mout_sclk_mmc2", | 444 | DIV(DOUT_SCLK_MMC2, "dout_sclk_mmc2", "mout_sclk_mmc2", |
358 | DIV_TOP1_FSYS0, 24, 4), | 445 | DIV_TOP1_FSYS0, 24, 4), |
446 | DIV(0, "dout_sclk_usbdrd300", "mout_sclk_usbdrd300", | ||
447 | DIV_TOP1_FSYS0, 28, 4), | ||
359 | 448 | ||
360 | DIV(DOUT_SCLK_MMC1, "dout_sclk_mmc1", "mout_sclk_mmc1", | 449 | DIV(DOUT_SCLK_MMC1, "dout_sclk_mmc1", "mout_sclk_mmc1", |
361 | DIV_TOP1_FSYS1, 24, 4), | 450 | DIV_TOP1_FSYS1, 24, 4), |
@@ -366,6 +455,8 @@ static struct samsung_div_clock top1_div_clks[] __initdata = { | |||
366 | static struct samsung_gate_clock top1_gate_clks[] __initdata = { | 455 | static struct samsung_gate_clock top1_gate_clks[] __initdata = { |
367 | GATE(CLK_SCLK_MMC2, "sclk_mmc2", "dout_sclk_mmc2", | 456 | GATE(CLK_SCLK_MMC2, "sclk_mmc2", "dout_sclk_mmc2", |
368 | ENABLE_SCLK_TOP1_FSYS0, 24, CLK_SET_RATE_PARENT, 0), | 457 | ENABLE_SCLK_TOP1_FSYS0, 24, CLK_SET_RATE_PARENT, 0), |
458 | GATE(0, "sclk_usbdrd300", "dout_sclk_usbdrd300", | ||
459 | ENABLE_SCLK_TOP1_FSYS0, 28, 0, 0), | ||
369 | 460 | ||
370 | GATE(CLK_SCLK_MMC1, "sclk_mmc1", "dout_sclk_mmc1", | 461 | GATE(CLK_SCLK_MMC1, "sclk_mmc1", "dout_sclk_mmc1", |
371 | ENABLE_SCLK_TOP1_FSYS1, 24, CLK_SET_RATE_PARENT, 0), | 462 | ENABLE_SCLK_TOP1_FSYS1, 24, CLK_SET_RATE_PARENT, 0), |
@@ -514,6 +605,7 @@ static void __init exynos7_clk_peric0_init(struct device_node *np) | |||
514 | /* Register Offset definitions for CMU_PERIC1 (0x14C80000) */ | 605 | /* Register Offset definitions for CMU_PERIC1 (0x14C80000) */ |
515 | #define MUX_SEL_PERIC10 0x0200 | 606 | #define MUX_SEL_PERIC10 0x0200 |
516 | #define MUX_SEL_PERIC11 0x0204 | 607 | #define MUX_SEL_PERIC11 0x0204 |
608 | #define MUX_SEL_PERIC12 0x0208 | ||
517 | #define ENABLE_PCLK_PERIC1 0x0900 | 609 | #define ENABLE_PCLK_PERIC1 0x0900 |
518 | #define ENABLE_SCLK_PERIC10 0x0A00 | 610 | #define ENABLE_SCLK_PERIC10 0x0A00 |
519 | 611 | ||
@@ -525,10 +617,16 @@ PNAME(mout_aclk_peric1_66_p) = { "fin_pll", "dout_aclk_peric1_66" }; | |||
525 | PNAME(mout_sclk_uart1_p) = { "fin_pll", "sclk_uart1" }; | 617 | PNAME(mout_sclk_uart1_p) = { "fin_pll", "sclk_uart1" }; |
526 | PNAME(mout_sclk_uart2_p) = { "fin_pll", "sclk_uart2" }; | 618 | PNAME(mout_sclk_uart2_p) = { "fin_pll", "sclk_uart2" }; |
527 | PNAME(mout_sclk_uart3_p) = { "fin_pll", "sclk_uart3" }; | 619 | PNAME(mout_sclk_uart3_p) = { "fin_pll", "sclk_uart3" }; |
620 | PNAME(mout_sclk_spi0_p) = { "fin_pll", "sclk_spi0" }; | ||
621 | PNAME(mout_sclk_spi1_p) = { "fin_pll", "sclk_spi1" }; | ||
622 | PNAME(mout_sclk_spi2_p) = { "fin_pll", "sclk_spi2" }; | ||
623 | PNAME(mout_sclk_spi3_p) = { "fin_pll", "sclk_spi3" }; | ||
624 | PNAME(mout_sclk_spi4_p) = { "fin_pll", "sclk_spi4" }; | ||
528 | 625 | ||
529 | static unsigned long peric1_clk_regs[] __initdata = { | 626 | static unsigned long peric1_clk_regs[] __initdata = { |
530 | MUX_SEL_PERIC10, | 627 | MUX_SEL_PERIC10, |
531 | MUX_SEL_PERIC11, | 628 | MUX_SEL_PERIC11, |
629 | MUX_SEL_PERIC12, | ||
532 | ENABLE_PCLK_PERIC1, | 630 | ENABLE_PCLK_PERIC1, |
533 | ENABLE_SCLK_PERIC10, | 631 | ENABLE_SCLK_PERIC10, |
534 | }; | 632 | }; |
@@ -537,6 +635,16 @@ static struct samsung_mux_clock peric1_mux_clks[] __initdata = { | |||
537 | MUX(0, "mout_aclk_peric1_66_user", mout_aclk_peric1_66_p, | 635 | MUX(0, "mout_aclk_peric1_66_user", mout_aclk_peric1_66_p, |
538 | MUX_SEL_PERIC10, 0, 1), | 636 | MUX_SEL_PERIC10, 0, 1), |
539 | 637 | ||
638 | MUX_F(0, "mout_sclk_spi0_user", mout_sclk_spi0_p, | ||
639 | MUX_SEL_PERIC11, 0, 1, CLK_SET_RATE_PARENT, 0), | ||
640 | MUX_F(0, "mout_sclk_spi1_user", mout_sclk_spi1_p, | ||
641 | MUX_SEL_PERIC11, 4, 1, CLK_SET_RATE_PARENT, 0), | ||
642 | MUX_F(0, "mout_sclk_spi2_user", mout_sclk_spi2_p, | ||
643 | MUX_SEL_PERIC11, 8, 1, CLK_SET_RATE_PARENT, 0), | ||
644 | MUX_F(0, "mout_sclk_spi3_user", mout_sclk_spi3_p, | ||
645 | MUX_SEL_PERIC11, 12, 1, CLK_SET_RATE_PARENT, 0), | ||
646 | MUX_F(0, "mout_sclk_spi4_user", mout_sclk_spi4_p, | ||
647 | MUX_SEL_PERIC11, 16, 1, CLK_SET_RATE_PARENT, 0), | ||
540 | MUX(0, "mout_sclk_uart1_user", mout_sclk_uart1_p, | 648 | MUX(0, "mout_sclk_uart1_user", mout_sclk_uart1_p, |
541 | MUX_SEL_PERIC11, 20, 1), | 649 | MUX_SEL_PERIC11, 20, 1), |
542 | MUX(0, "mout_sclk_uart2_user", mout_sclk_uart2_p, | 650 | MUX(0, "mout_sclk_uart2_user", mout_sclk_uart2_p, |
@@ -562,6 +670,22 @@ static struct samsung_gate_clock peric1_gate_clks[] __initdata = { | |||
562 | ENABLE_PCLK_PERIC1, 10, 0, 0), | 670 | ENABLE_PCLK_PERIC1, 10, 0, 0), |
563 | GATE(PCLK_UART3, "pclk_uart3", "mout_aclk_peric1_66_user", | 671 | GATE(PCLK_UART3, "pclk_uart3", "mout_aclk_peric1_66_user", |
564 | ENABLE_PCLK_PERIC1, 11, 0, 0), | 672 | ENABLE_PCLK_PERIC1, 11, 0, 0), |
673 | GATE(PCLK_SPI0, "pclk_spi0", "mout_aclk_peric1_66_user", | ||
674 | ENABLE_PCLK_PERIC1, 12, 0, 0), | ||
675 | GATE(PCLK_SPI1, "pclk_spi1", "mout_aclk_peric1_66_user", | ||
676 | ENABLE_PCLK_PERIC1, 13, 0, 0), | ||
677 | GATE(PCLK_SPI2, "pclk_spi2", "mout_aclk_peric1_66_user", | ||
678 | ENABLE_PCLK_PERIC1, 14, 0, 0), | ||
679 | GATE(PCLK_SPI3, "pclk_spi3", "mout_aclk_peric1_66_user", | ||
680 | ENABLE_PCLK_PERIC1, 15, 0, 0), | ||
681 | GATE(PCLK_SPI4, "pclk_spi4", "mout_aclk_peric1_66_user", | ||
682 | ENABLE_PCLK_PERIC1, 16, 0, 0), | ||
683 | GATE(PCLK_I2S1, "pclk_i2s1", "mout_aclk_peric1_66_user", | ||
684 | ENABLE_PCLK_PERIC1, 17, CLK_SET_RATE_PARENT, 0), | ||
685 | GATE(PCLK_PCM1, "pclk_pcm1", "mout_aclk_peric1_66_user", | ||
686 | ENABLE_PCLK_PERIC1, 18, 0, 0), | ||
687 | GATE(PCLK_SPDIF, "pclk_spdif", "mout_aclk_peric1_66_user", | ||
688 | ENABLE_PCLK_PERIC1, 19, 0, 0), | ||
565 | 689 | ||
566 | GATE(SCLK_UART1, "sclk_uart1_user", "mout_sclk_uart1_user", | 690 | GATE(SCLK_UART1, "sclk_uart1_user", "mout_sclk_uart1_user", |
567 | ENABLE_SCLK_PERIC10, 9, 0, 0), | 691 | ENABLE_SCLK_PERIC10, 9, 0, 0), |
@@ -569,6 +693,22 @@ static struct samsung_gate_clock peric1_gate_clks[] __initdata = { | |||
569 | ENABLE_SCLK_PERIC10, 10, 0, 0), | 693 | ENABLE_SCLK_PERIC10, 10, 0, 0), |
570 | GATE(SCLK_UART3, "sclk_uart3_user", "mout_sclk_uart3_user", | 694 | GATE(SCLK_UART3, "sclk_uart3_user", "mout_sclk_uart3_user", |
571 | ENABLE_SCLK_PERIC10, 11, 0, 0), | 695 | ENABLE_SCLK_PERIC10, 11, 0, 0), |
696 | GATE(SCLK_SPI0, "sclk_spi0_user", "mout_sclk_spi0_user", | ||
697 | ENABLE_SCLK_PERIC10, 12, CLK_SET_RATE_PARENT, 0), | ||
698 | GATE(SCLK_SPI1, "sclk_spi1_user", "mout_sclk_spi1_user", | ||
699 | ENABLE_SCLK_PERIC10, 13, CLK_SET_RATE_PARENT, 0), | ||
700 | GATE(SCLK_SPI2, "sclk_spi2_user", "mout_sclk_spi2_user", | ||
701 | ENABLE_SCLK_PERIC10, 14, CLK_SET_RATE_PARENT, 0), | ||
702 | GATE(SCLK_SPI3, "sclk_spi3_user", "mout_sclk_spi3_user", | ||
703 | ENABLE_SCLK_PERIC10, 15, CLK_SET_RATE_PARENT, 0), | ||
704 | GATE(SCLK_SPI4, "sclk_spi4_user", "mout_sclk_spi4_user", | ||
705 | ENABLE_SCLK_PERIC10, 16, CLK_SET_RATE_PARENT, 0), | ||
706 | GATE(SCLK_I2S1, "sclk_i2s1_user", "sclk_i2s1", | ||
707 | ENABLE_SCLK_PERIC10, 17, CLK_SET_RATE_PARENT, 0), | ||
708 | GATE(SCLK_PCM1, "sclk_pcm1_user", "sclk_pcm1", | ||
709 | ENABLE_SCLK_PERIC10, 18, CLK_SET_RATE_PARENT, 0), | ||
710 | GATE(SCLK_SPDIF, "sclk_spdif_user", "sclk_spdif", | ||
711 | ENABLE_SCLK_PERIC10, 19, CLK_SET_RATE_PARENT, 0), | ||
572 | }; | 712 | }; |
573 | 713 | ||
574 | static struct samsung_cmu_info peric1_cmu_info __initdata = { | 714 | static struct samsung_cmu_info peric1_cmu_info __initdata = { |
@@ -647,7 +787,12 @@ CLK_OF_DECLARE(exynos7_clk_peris, "samsung,exynos7-clock-peris", | |||
647 | /* Register Offset definitions for CMU_FSYS0 (0x10E90000) */ | 787 | /* Register Offset definitions for CMU_FSYS0 (0x10E90000) */ |
648 | #define MUX_SEL_FSYS00 0x0200 | 788 | #define MUX_SEL_FSYS00 0x0200 |
649 | #define MUX_SEL_FSYS01 0x0204 | 789 | #define MUX_SEL_FSYS01 0x0204 |
790 | #define MUX_SEL_FSYS02 0x0208 | ||
791 | #define ENABLE_ACLK_FSYS00 0x0800 | ||
650 | #define ENABLE_ACLK_FSYS01 0x0804 | 792 | #define ENABLE_ACLK_FSYS01 0x0804 |
793 | #define ENABLE_SCLK_FSYS01 0x0A04 | ||
794 | #define ENABLE_SCLK_FSYS02 0x0A08 | ||
795 | #define ENABLE_SCLK_FSYS04 0x0A10 | ||
651 | 796 | ||
652 | /* | 797 | /* |
653 | * List of parent clocks for Muxes in CMU_FSYS0 | 798 | * List of parent clocks for Muxes in CMU_FSYS0 |
@@ -655,10 +800,29 @@ CLK_OF_DECLARE(exynos7_clk_peris, "samsung,exynos7-clock-peris", | |||
655 | PNAME(mout_aclk_fsys0_200_p) = { "fin_pll", "dout_aclk_fsys0_200" }; | 800 | PNAME(mout_aclk_fsys0_200_p) = { "fin_pll", "dout_aclk_fsys0_200" }; |
656 | PNAME(mout_sclk_mmc2_p) = { "fin_pll", "sclk_mmc2" }; | 801 | PNAME(mout_sclk_mmc2_p) = { "fin_pll", "sclk_mmc2" }; |
657 | 802 | ||
803 | PNAME(mout_sclk_usbdrd300_p) = { "fin_pll", "sclk_usbdrd300" }; | ||
804 | PNAME(mout_phyclk_usbdrd300_udrd30_phyclk_p) = { "fin_pll", | ||
805 | "phyclk_usbdrd300_udrd30_phyclock" }; | ||
806 | PNAME(mout_phyclk_usbdrd300_udrd30_pipe_pclk_p) = { "fin_pll", | ||
807 | "phyclk_usbdrd300_udrd30_pipe_pclk" }; | ||
808 | |||
809 | /* fixed rate clocks used in the FSYS0 block */ | ||
810 | struct samsung_fixed_rate_clock fixed_rate_clks_fsys0[] __initdata = { | ||
811 | FRATE(0, "phyclk_usbdrd300_udrd30_phyclock", NULL, | ||
812 | CLK_IS_ROOT, 60000000), | ||
813 | FRATE(0, "phyclk_usbdrd300_udrd30_pipe_pclk", NULL, | ||
814 | CLK_IS_ROOT, 125000000), | ||
815 | }; | ||
816 | |||
658 | static unsigned long fsys0_clk_regs[] __initdata = { | 817 | static unsigned long fsys0_clk_regs[] __initdata = { |
659 | MUX_SEL_FSYS00, | 818 | MUX_SEL_FSYS00, |
660 | MUX_SEL_FSYS01, | 819 | MUX_SEL_FSYS01, |
820 | MUX_SEL_FSYS02, | ||
821 | ENABLE_ACLK_FSYS00, | ||
661 | ENABLE_ACLK_FSYS01, | 822 | ENABLE_ACLK_FSYS01, |
823 | ENABLE_SCLK_FSYS01, | ||
824 | ENABLE_SCLK_FSYS02, | ||
825 | ENABLE_SCLK_FSYS04, | ||
662 | }; | 826 | }; |
663 | 827 | ||
664 | static struct samsung_mux_clock fsys0_mux_clks[] __initdata = { | 828 | static struct samsung_mux_clock fsys0_mux_clks[] __initdata = { |
@@ -666,11 +830,49 @@ static struct samsung_mux_clock fsys0_mux_clks[] __initdata = { | |||
666 | MUX_SEL_FSYS00, 24, 1), | 830 | MUX_SEL_FSYS00, 24, 1), |
667 | 831 | ||
668 | MUX(0, "mout_sclk_mmc2_user", mout_sclk_mmc2_p, MUX_SEL_FSYS01, 24, 1), | 832 | MUX(0, "mout_sclk_mmc2_user", mout_sclk_mmc2_p, MUX_SEL_FSYS01, 24, 1), |
833 | MUX(0, "mout_sclk_usbdrd300_user", mout_sclk_usbdrd300_p, | ||
834 | MUX_SEL_FSYS01, 28, 1), | ||
835 | |||
836 | MUX(0, "mout_phyclk_usbdrd300_udrd30_pipe_pclk_user", | ||
837 | mout_phyclk_usbdrd300_udrd30_pipe_pclk_p, | ||
838 | MUX_SEL_FSYS02, 24, 1), | ||
839 | MUX(0, "mout_phyclk_usbdrd300_udrd30_phyclk_user", | ||
840 | mout_phyclk_usbdrd300_udrd30_phyclk_p, | ||
841 | MUX_SEL_FSYS02, 28, 1), | ||
669 | }; | 842 | }; |
670 | 843 | ||
671 | static struct samsung_gate_clock fsys0_gate_clks[] __initdata = { | 844 | static struct samsung_gate_clock fsys0_gate_clks[] __initdata = { |
845 | GATE(ACLK_AXIUS_USBDRD30X_FSYS0X, "aclk_axius_usbdrd30x_fsys0x", | ||
846 | "mout_aclk_fsys0_200_user", | ||
847 | ENABLE_ACLK_FSYS00, 19, 0, 0), | ||
848 | GATE(ACLK_PDMA1, "aclk_pdma1", "mout_aclk_fsys0_200_user", | ||
849 | ENABLE_ACLK_FSYS00, 3, 0, 0), | ||
850 | GATE(ACLK_PDMA0, "aclk_pdma0", "mout_aclk_fsys0_200_user", | ||
851 | ENABLE_ACLK_FSYS00, 4, 0, 0), | ||
852 | |||
853 | GATE(ACLK_USBDRD300, "aclk_usbdrd300", "mout_aclk_fsys0_200_user", | ||
854 | ENABLE_ACLK_FSYS01, 29, 0, 0), | ||
672 | GATE(ACLK_MMC2, "aclk_mmc2", "mout_aclk_fsys0_200_user", | 855 | GATE(ACLK_MMC2, "aclk_mmc2", "mout_aclk_fsys0_200_user", |
673 | ENABLE_ACLK_FSYS01, 31, 0, 0), | 856 | ENABLE_ACLK_FSYS01, 31, 0, 0), |
857 | |||
858 | GATE(SCLK_USBDRD300_SUSPENDCLK, "sclk_usbdrd300_suspendclk", | ||
859 | "mout_sclk_usbdrd300_user", | ||
860 | ENABLE_SCLK_FSYS01, 4, 0, 0), | ||
861 | GATE(SCLK_USBDRD300_REFCLK, "sclk_usbdrd300_refclk", "fin_pll", | ||
862 | ENABLE_SCLK_FSYS01, 8, 0, 0), | ||
863 | |||
864 | GATE(PHYCLK_USBDRD300_UDRD30_PIPE_PCLK_USER, | ||
865 | "phyclk_usbdrd300_udrd30_pipe_pclk_user", | ||
866 | "mout_phyclk_usbdrd300_udrd30_pipe_pclk_user", | ||
867 | ENABLE_SCLK_FSYS02, 24, 0, 0), | ||
868 | GATE(PHYCLK_USBDRD300_UDRD30_PHYCLK_USER, | ||
869 | "phyclk_usbdrd300_udrd30_phyclk_user", | ||
870 | "mout_phyclk_usbdrd300_udrd30_phyclk_user", | ||
871 | ENABLE_SCLK_FSYS02, 28, 0, 0), | ||
872 | |||
873 | GATE(OSCCLK_PHY_CLKOUT_USB30_PHY, "oscclk_phy_clkout_usb30_phy", | ||
874 | "fin_pll", | ||
875 | ENABLE_SCLK_FSYS04, 28, 0, 0), | ||
674 | }; | 876 | }; |
675 | 877 | ||
676 | static struct samsung_cmu_info fsys0_cmu_info __initdata = { | 878 | static struct samsung_cmu_info fsys0_cmu_info __initdata = { |
@@ -741,3 +943,205 @@ static void __init exynos7_clk_fsys1_init(struct device_node *np) | |||
741 | 943 | ||
742 | CLK_OF_DECLARE(exynos7_clk_fsys1, "samsung,exynos7-clock-fsys1", | 944 | CLK_OF_DECLARE(exynos7_clk_fsys1, "samsung,exynos7-clock-fsys1", |
743 | exynos7_clk_fsys1_init); | 945 | exynos7_clk_fsys1_init); |
946 | |||
947 | #define MUX_SEL_MSCL 0x0200 | ||
948 | #define DIV_MSCL 0x0600 | ||
949 | #define ENABLE_ACLK_MSCL 0x0800 | ||
950 | #define ENABLE_PCLK_MSCL 0x0900 | ||
951 | |||
952 | /* List of parent clocks for Muxes in CMU_MSCL */ | ||
953 | PNAME(mout_aclk_mscl_532_user_p) = { "fin_pll", "aclk_mscl_532" }; | ||
954 | |||
955 | static unsigned long mscl_clk_regs[] __initdata = { | ||
956 | MUX_SEL_MSCL, | ||
957 | DIV_MSCL, | ||
958 | ENABLE_ACLK_MSCL, | ||
959 | ENABLE_PCLK_MSCL, | ||
960 | }; | ||
961 | |||
962 | static struct samsung_mux_clock mscl_mux_clks[] __initdata = { | ||
963 | MUX(USERMUX_ACLK_MSCL_532, "usermux_aclk_mscl_532", | ||
964 | mout_aclk_mscl_532_user_p, MUX_SEL_MSCL, 0, 1), | ||
965 | }; | ||
966 | static struct samsung_div_clock mscl_div_clks[] __initdata = { | ||
967 | DIV(DOUT_PCLK_MSCL, "dout_pclk_mscl", "usermux_aclk_mscl_532", | ||
968 | DIV_MSCL, 0, 3), | ||
969 | }; | ||
970 | static struct samsung_gate_clock mscl_gate_clks[] __initdata = { | ||
971 | |||
972 | GATE(ACLK_MSCL_0, "aclk_mscl_0", "usermux_aclk_mscl_532", | ||
973 | ENABLE_ACLK_MSCL, 31, 0, 0), | ||
974 | GATE(ACLK_MSCL_1, "aclk_mscl_1", "usermux_aclk_mscl_532", | ||
975 | ENABLE_ACLK_MSCL, 30, 0, 0), | ||
976 | GATE(ACLK_JPEG, "aclk_jpeg", "usermux_aclk_mscl_532", | ||
977 | ENABLE_ACLK_MSCL, 29, 0, 0), | ||
978 | GATE(ACLK_G2D, "aclk_g2d", "usermux_aclk_mscl_532", | ||
979 | ENABLE_ACLK_MSCL, 28, 0, 0), | ||
980 | GATE(ACLK_LH_ASYNC_SI_MSCL_0, "aclk_lh_async_si_mscl_0", | ||
981 | "usermux_aclk_mscl_532", | ||
982 | ENABLE_ACLK_MSCL, 27, 0, 0), | ||
983 | GATE(ACLK_LH_ASYNC_SI_MSCL_1, "aclk_lh_async_si_mscl_1", | ||
984 | "usermux_aclk_mscl_532", | ||
985 | ENABLE_ACLK_MSCL, 26, 0, 0), | ||
986 | GATE(ACLK_XIU_MSCLX_0, "aclk_xiu_msclx_0", "usermux_aclk_mscl_532", | ||
987 | ENABLE_ACLK_MSCL, 25, 0, 0), | ||
988 | GATE(ACLK_XIU_MSCLX_1, "aclk_xiu_msclx_1", "usermux_aclk_mscl_532", | ||
989 | ENABLE_ACLK_MSCL, 24, 0, 0), | ||
990 | GATE(ACLK_AXI2ACEL_BRIDGE, "aclk_axi2acel_bridge", | ||
991 | "usermux_aclk_mscl_532", | ||
992 | ENABLE_ACLK_MSCL, 23, 0, 0), | ||
993 | GATE(ACLK_QE_MSCL_0, "aclk_qe_mscl_0", "usermux_aclk_mscl_532", | ||
994 | ENABLE_ACLK_MSCL, 22, 0, 0), | ||
995 | GATE(ACLK_QE_MSCL_1, "aclk_qe_mscl_1", "usermux_aclk_mscl_532", | ||
996 | ENABLE_ACLK_MSCL, 21, 0, 0), | ||
997 | GATE(ACLK_QE_JPEG, "aclk_qe_jpeg", "usermux_aclk_mscl_532", | ||
998 | ENABLE_ACLK_MSCL, 20, 0, 0), | ||
999 | GATE(ACLK_QE_G2D, "aclk_qe_g2d", "usermux_aclk_mscl_532", | ||
1000 | ENABLE_ACLK_MSCL, 19, 0, 0), | ||
1001 | GATE(ACLK_PPMU_MSCL_0, "aclk_ppmu_mscl_0", "usermux_aclk_mscl_532", | ||
1002 | ENABLE_ACLK_MSCL, 18, 0, 0), | ||
1003 | GATE(ACLK_PPMU_MSCL_1, "aclk_ppmu_mscl_1", "usermux_aclk_mscl_532", | ||
1004 | ENABLE_ACLK_MSCL, 17, 0, 0), | ||
1005 | GATE(ACLK_MSCLNP_133, "aclk_msclnp_133", "usermux_aclk_mscl_532", | ||
1006 | ENABLE_ACLK_MSCL, 16, 0, 0), | ||
1007 | GATE(ACLK_AHB2APB_MSCL0P, "aclk_ahb2apb_mscl0p", | ||
1008 | "usermux_aclk_mscl_532", | ||
1009 | ENABLE_ACLK_MSCL, 15, 0, 0), | ||
1010 | GATE(ACLK_AHB2APB_MSCL1P, "aclk_ahb2apb_mscl1p", | ||
1011 | "usermux_aclk_mscl_532", | ||
1012 | ENABLE_ACLK_MSCL, 14, 0, 0), | ||
1013 | |||
1014 | GATE(PCLK_MSCL_0, "pclk_mscl_0", "dout_pclk_mscl", | ||
1015 | ENABLE_PCLK_MSCL, 31, 0, 0), | ||
1016 | GATE(PCLK_MSCL_1, "pclk_mscl_1", "dout_pclk_mscl", | ||
1017 | ENABLE_PCLK_MSCL, 30, 0, 0), | ||
1018 | GATE(PCLK_JPEG, "pclk_jpeg", "dout_pclk_mscl", | ||
1019 | ENABLE_PCLK_MSCL, 29, 0, 0), | ||
1020 | GATE(PCLK_G2D, "pclk_g2d", "dout_pclk_mscl", | ||
1021 | ENABLE_PCLK_MSCL, 28, 0, 0), | ||
1022 | GATE(PCLK_QE_MSCL_0, "pclk_qe_mscl_0", "dout_pclk_mscl", | ||
1023 | ENABLE_PCLK_MSCL, 27, 0, 0), | ||
1024 | GATE(PCLK_QE_MSCL_1, "pclk_qe_mscl_1", "dout_pclk_mscl", | ||
1025 | ENABLE_PCLK_MSCL, 26, 0, 0), | ||
1026 | GATE(PCLK_QE_JPEG, "pclk_qe_jpeg", "dout_pclk_mscl", | ||
1027 | ENABLE_PCLK_MSCL, 25, 0, 0), | ||
1028 | GATE(PCLK_QE_G2D, "pclk_qe_g2d", "dout_pclk_mscl", | ||
1029 | ENABLE_PCLK_MSCL, 24, 0, 0), | ||
1030 | GATE(PCLK_PPMU_MSCL_0, "pclk_ppmu_mscl_0", "dout_pclk_mscl", | ||
1031 | ENABLE_PCLK_MSCL, 23, 0, 0), | ||
1032 | GATE(PCLK_PPMU_MSCL_1, "pclk_ppmu_mscl_1", "dout_pclk_mscl", | ||
1033 | ENABLE_PCLK_MSCL, 22, 0, 0), | ||
1034 | GATE(PCLK_AXI2ACEL_BRIDGE, "pclk_axi2acel_bridge", "dout_pclk_mscl", | ||
1035 | ENABLE_PCLK_MSCL, 21, 0, 0), | ||
1036 | GATE(PCLK_PMU_MSCL, "pclk_pmu_mscl", "dout_pclk_mscl", | ||
1037 | ENABLE_PCLK_MSCL, 20, 0, 0), | ||
1038 | }; | ||
1039 | |||
1040 | static struct samsung_cmu_info mscl_cmu_info __initdata = { | ||
1041 | .mux_clks = mscl_mux_clks, | ||
1042 | .nr_mux_clks = ARRAY_SIZE(mscl_mux_clks), | ||
1043 | .div_clks = mscl_div_clks, | ||
1044 | .nr_div_clks = ARRAY_SIZE(mscl_div_clks), | ||
1045 | .gate_clks = mscl_gate_clks, | ||
1046 | .nr_gate_clks = ARRAY_SIZE(mscl_gate_clks), | ||
1047 | .nr_clk_ids = MSCL_NR_CLK, | ||
1048 | .clk_regs = mscl_clk_regs, | ||
1049 | .nr_clk_regs = ARRAY_SIZE(mscl_clk_regs), | ||
1050 | }; | ||
1051 | |||
1052 | static void __init exynos7_clk_mscl_init(struct device_node *np) | ||
1053 | { | ||
1054 | samsung_cmu_register_one(np, &mscl_cmu_info); | ||
1055 | } | ||
1056 | |||
1057 | CLK_OF_DECLARE(exynos7_clk_mscl, "samsung,exynos7-clock-mscl", | ||
1058 | exynos7_clk_mscl_init); | ||
1059 | |||
1060 | /* Register Offset definitions for CMU_AUD (0x114C0000) */ | ||
1061 | #define MUX_SEL_AUD 0x0200 | ||
1062 | #define DIV_AUD0 0x0600 | ||
1063 | #define DIV_AUD1 0x0604 | ||
1064 | #define ENABLE_ACLK_AUD 0x0800 | ||
1065 | #define ENABLE_PCLK_AUD 0x0900 | ||
1066 | #define ENABLE_SCLK_AUD 0x0A00 | ||
1067 | |||
1068 | /* | ||
1069 | * List of parent clocks for Muxes in CMU_AUD | ||
1070 | */ | ||
1071 | PNAME(mout_aud_pll_user_p) = { "fin_pll", "fout_aud_pll" }; | ||
1072 | PNAME(mout_aud_group_p) = { "dout_aud_cdclk", "ioclk_audiocdclk0" }; | ||
1073 | |||
1074 | static unsigned long aud_clk_regs[] __initdata = { | ||
1075 | MUX_SEL_AUD, | ||
1076 | DIV_AUD0, | ||
1077 | DIV_AUD1, | ||
1078 | ENABLE_ACLK_AUD, | ||
1079 | ENABLE_PCLK_AUD, | ||
1080 | ENABLE_SCLK_AUD, | ||
1081 | }; | ||
1082 | |||
1083 | static struct samsung_mux_clock aud_mux_clks[] __initdata = { | ||
1084 | MUX(0, "mout_sclk_i2s", mout_aud_group_p, MUX_SEL_AUD, 12, 1), | ||
1085 | MUX(0, "mout_sclk_pcm", mout_aud_group_p, MUX_SEL_AUD, 16, 1), | ||
1086 | MUX(0, "mout_aud_pll_user", mout_aud_pll_user_p, MUX_SEL_AUD, 20, 1), | ||
1087 | }; | ||
1088 | |||
1089 | static struct samsung_div_clock aud_div_clks[] __initdata = { | ||
1090 | DIV(0, "dout_aud_ca5", "mout_aud_pll_user", DIV_AUD0, 0, 4), | ||
1091 | DIV(0, "dout_aclk_aud", "dout_aud_ca5", DIV_AUD0, 4, 4), | ||
1092 | DIV(0, "dout_aud_pclk_dbg", "dout_aud_ca5", DIV_AUD0, 8, 4), | ||
1093 | |||
1094 | DIV(0, "dout_sclk_i2s", "mout_sclk_i2s", DIV_AUD1, 0, 4), | ||
1095 | DIV(0, "dout_sclk_pcm", "mout_sclk_pcm", DIV_AUD1, 4, 8), | ||
1096 | DIV(0, "dout_sclk_uart", "dout_aud_cdclk", DIV_AUD1, 12, 4), | ||
1097 | DIV(0, "dout_sclk_slimbus", "dout_aud_cdclk", DIV_AUD1, 16, 5), | ||
1098 | DIV(0, "dout_aud_cdclk", "mout_aud_pll_user", DIV_AUD1, 24, 4), | ||
1099 | }; | ||
1100 | |||
1101 | static struct samsung_gate_clock aud_gate_clks[] __initdata = { | ||
1102 | GATE(SCLK_PCM, "sclk_pcm", "dout_sclk_pcm", | ||
1103 | ENABLE_SCLK_AUD, 27, CLK_SET_RATE_PARENT, 0), | ||
1104 | GATE(SCLK_I2S, "sclk_i2s", "dout_sclk_i2s", | ||
1105 | ENABLE_SCLK_AUD, 28, CLK_SET_RATE_PARENT, 0), | ||
1106 | GATE(0, "sclk_uart", "dout_sclk_uart", ENABLE_SCLK_AUD, 29, 0, 0), | ||
1107 | GATE(0, "sclk_slimbus", "dout_sclk_slimbus", | ||
1108 | ENABLE_SCLK_AUD, 30, 0, 0), | ||
1109 | |||
1110 | GATE(0, "pclk_dbg_aud", "dout_aud_pclk_dbg", ENABLE_PCLK_AUD, 19, 0, 0), | ||
1111 | GATE(0, "pclk_gpio_aud", "dout_aclk_aud", ENABLE_PCLK_AUD, 20, 0, 0), | ||
1112 | GATE(0, "pclk_wdt1", "dout_aclk_aud", ENABLE_PCLK_AUD, 22, 0, 0), | ||
1113 | GATE(0, "pclk_wdt0", "dout_aclk_aud", ENABLE_PCLK_AUD, 23, 0, 0), | ||
1114 | GATE(0, "pclk_slimbus", "dout_aclk_aud", ENABLE_PCLK_AUD, 24, 0, 0), | ||
1115 | GATE(0, "pclk_uart", "dout_aclk_aud", ENABLE_PCLK_AUD, 25, 0, 0), | ||
1116 | GATE(PCLK_PCM, "pclk_pcm", "dout_aclk_aud", | ||
1117 | ENABLE_PCLK_AUD, 26, CLK_SET_RATE_PARENT, 0), | ||
1118 | GATE(PCLK_I2S, "pclk_i2s", "dout_aclk_aud", | ||
1119 | ENABLE_PCLK_AUD, 27, CLK_SET_RATE_PARENT, 0), | ||
1120 | GATE(0, "pclk_timer", "dout_aclk_aud", ENABLE_PCLK_AUD, 28, 0, 0), | ||
1121 | GATE(0, "pclk_smmu_aud", "dout_aclk_aud", ENABLE_PCLK_AUD, 31, 0, 0), | ||
1122 | |||
1123 | GATE(0, "aclk_smmu_aud", "dout_aclk_aud", ENABLE_ACLK_AUD, 27, 0, 0), | ||
1124 | GATE(0, "aclk_acel_lh_async_si_top", "dout_aclk_aud", | ||
1125 | ENABLE_ACLK_AUD, 28, 0, 0), | ||
1126 | GATE(ACLK_ADMA, "aclk_dmac", "dout_aclk_aud", ENABLE_ACLK_AUD, 31, 0, 0), | ||
1127 | }; | ||
1128 | |||
1129 | static struct samsung_cmu_info aud_cmu_info __initdata = { | ||
1130 | .mux_clks = aud_mux_clks, | ||
1131 | .nr_mux_clks = ARRAY_SIZE(aud_mux_clks), | ||
1132 | .div_clks = aud_div_clks, | ||
1133 | .nr_div_clks = ARRAY_SIZE(aud_div_clks), | ||
1134 | .gate_clks = aud_gate_clks, | ||
1135 | .nr_gate_clks = ARRAY_SIZE(aud_gate_clks), | ||
1136 | .nr_clk_ids = AUD_NR_CLK, | ||
1137 | .clk_regs = aud_clk_regs, | ||
1138 | .nr_clk_regs = ARRAY_SIZE(aud_clk_regs), | ||
1139 | }; | ||
1140 | |||
1141 | static void __init exynos7_clk_aud_init(struct device_node *np) | ||
1142 | { | ||
1143 | samsung_cmu_register_one(np, &aud_cmu_info); | ||
1144 | } | ||
1145 | |||
1146 | CLK_OF_DECLARE(exynos7_clk_aud, "samsung,exynos7-clock-aud", | ||
1147 | exynos7_clk_aud_init); | ||
diff --git a/include/dt-bindings/clock/exynos7-clk.h b/include/dt-bindings/clock/exynos7-clk.h index 8e4681b07ae7..e33c75a3c09d 100644 --- a/include/dt-bindings/clock/exynos7-clk.h +++ b/include/dt-bindings/clock/exynos7-clk.h | |||
@@ -17,7 +17,11 @@ | |||
17 | #define DOUT_SCLK_CC_PLL 4 | 17 | #define DOUT_SCLK_CC_PLL 4 |
18 | #define DOUT_SCLK_MFC_PLL 5 | 18 | #define DOUT_SCLK_MFC_PLL 5 |
19 | #define DOUT_ACLK_CCORE_133 6 | 19 | #define DOUT_ACLK_CCORE_133 6 |
20 | #define TOPC_NR_CLK 7 | 20 | #define DOUT_ACLK_MSCL_532 7 |
21 | #define ACLK_MSCL_532 8 | ||
22 | #define DOUT_SCLK_AUD_PLL 9 | ||
23 | #define FOUT_AUD_PLL 10 | ||
24 | #define TOPC_NR_CLK 11 | ||
21 | 25 | ||
22 | /* TOP0 */ | 26 | /* TOP0 */ |
23 | #define DOUT_ACLK_PERIC1 1 | 27 | #define DOUT_ACLK_PERIC1 1 |
@@ -26,7 +30,15 @@ | |||
26 | #define CLK_SCLK_UART1 4 | 30 | #define CLK_SCLK_UART1 4 |
27 | #define CLK_SCLK_UART2 5 | 31 | #define CLK_SCLK_UART2 5 |
28 | #define CLK_SCLK_UART3 6 | 32 | #define CLK_SCLK_UART3 6 |
29 | #define TOP0_NR_CLK 7 | 33 | #define CLK_SCLK_SPI0 7 |
34 | #define CLK_SCLK_SPI1 8 | ||
35 | #define CLK_SCLK_SPI2 9 | ||
36 | #define CLK_SCLK_SPI3 10 | ||
37 | #define CLK_SCLK_SPI4 11 | ||
38 | #define CLK_SCLK_SPDIF 12 | ||
39 | #define CLK_SCLK_PCM1 13 | ||
40 | #define CLK_SCLK_I2S1 14 | ||
41 | #define TOP0_NR_CLK 15 | ||
30 | 42 | ||
31 | /* TOP1 */ | 43 | /* TOP1 */ |
32 | #define DOUT_ACLK_FSYS1_200 1 | 44 | #define DOUT_ACLK_FSYS1_200 1 |
@@ -70,7 +82,23 @@ | |||
70 | #define PCLK_HSI2C6 9 | 82 | #define PCLK_HSI2C6 9 |
71 | #define PCLK_HSI2C7 10 | 83 | #define PCLK_HSI2C7 10 |
72 | #define PCLK_HSI2C8 11 | 84 | #define PCLK_HSI2C8 11 |
73 | #define PERIC1_NR_CLK 12 | 85 | #define PCLK_SPI0 12 |
86 | #define PCLK_SPI1 13 | ||
87 | #define PCLK_SPI2 14 | ||
88 | #define PCLK_SPI3 15 | ||
89 | #define PCLK_SPI4 16 | ||
90 | #define SCLK_SPI0 17 | ||
91 | #define SCLK_SPI1 18 | ||
92 | #define SCLK_SPI2 19 | ||
93 | #define SCLK_SPI3 20 | ||
94 | #define SCLK_SPI4 21 | ||
95 | #define PCLK_I2S1 22 | ||
96 | #define PCLK_PCM1 23 | ||
97 | #define PCLK_SPDIF 24 | ||
98 | #define SCLK_I2S1 25 | ||
99 | #define SCLK_PCM1 26 | ||
100 | #define SCLK_SPDIF 27 | ||
101 | #define PERIC1_NR_CLK 28 | ||
74 | 102 | ||
75 | /* PERIS */ | 103 | /* PERIS */ |
76 | #define PCLK_CHIPID 1 | 104 | #define PCLK_CHIPID 1 |
@@ -82,11 +110,63 @@ | |||
82 | 110 | ||
83 | /* FSYS0 */ | 111 | /* FSYS0 */ |
84 | #define ACLK_MMC2 1 | 112 | #define ACLK_MMC2 1 |
85 | #define FSYS0_NR_CLK 2 | 113 | #define ACLK_AXIUS_USBDRD30X_FSYS0X 2 |
114 | #define ACLK_USBDRD300 3 | ||
115 | #define SCLK_USBDRD300_SUSPENDCLK 4 | ||
116 | #define SCLK_USBDRD300_REFCLK 5 | ||
117 | #define PHYCLK_USBDRD300_UDRD30_PIPE_PCLK_USER 6 | ||
118 | #define PHYCLK_USBDRD300_UDRD30_PHYCLK_USER 7 | ||
119 | #define OSCCLK_PHY_CLKOUT_USB30_PHY 8 | ||
120 | #define ACLK_PDMA0 9 | ||
121 | #define ACLK_PDMA1 10 | ||
122 | #define FSYS0_NR_CLK 11 | ||
86 | 123 | ||
87 | /* FSYS1 */ | 124 | /* FSYS1 */ |
88 | #define ACLK_MMC1 1 | 125 | #define ACLK_MMC1 1 |
89 | #define ACLK_MMC0 2 | 126 | #define ACLK_MMC0 2 |
90 | #define FSYS1_NR_CLK 3 | 127 | #define FSYS1_NR_CLK 3 |
91 | 128 | ||
129 | /* MSCL */ | ||
130 | #define USERMUX_ACLK_MSCL_532 1 | ||
131 | #define DOUT_PCLK_MSCL 2 | ||
132 | #define ACLK_MSCL_0 3 | ||
133 | #define ACLK_MSCL_1 4 | ||
134 | #define ACLK_JPEG 5 | ||
135 | #define ACLK_G2D 6 | ||
136 | #define ACLK_LH_ASYNC_SI_MSCL_0 7 | ||
137 | #define ACLK_LH_ASYNC_SI_MSCL_1 8 | ||
138 | #define ACLK_AXI2ACEL_BRIDGE 9 | ||
139 | #define ACLK_XIU_MSCLX_0 10 | ||
140 | #define ACLK_XIU_MSCLX_1 11 | ||
141 | #define ACLK_QE_MSCL_0 12 | ||
142 | #define ACLK_QE_MSCL_1 13 | ||
143 | #define ACLK_QE_JPEG 14 | ||
144 | #define ACLK_QE_G2D 15 | ||
145 | #define ACLK_PPMU_MSCL_0 16 | ||
146 | #define ACLK_PPMU_MSCL_1 17 | ||
147 | #define ACLK_MSCLNP_133 18 | ||
148 | #define ACLK_AHB2APB_MSCL0P 19 | ||
149 | #define ACLK_AHB2APB_MSCL1P 20 | ||
150 | |||
151 | #define PCLK_MSCL_0 21 | ||
152 | #define PCLK_MSCL_1 22 | ||
153 | #define PCLK_JPEG 23 | ||
154 | #define PCLK_G2D 24 | ||
155 | #define PCLK_QE_MSCL_0 25 | ||
156 | #define PCLK_QE_MSCL_1 26 | ||
157 | #define PCLK_QE_JPEG 27 | ||
158 | #define PCLK_QE_G2D 28 | ||
159 | #define PCLK_PPMU_MSCL_0 29 | ||
160 | #define PCLK_PPMU_MSCL_1 30 | ||
161 | #define PCLK_AXI2ACEL_BRIDGE 31 | ||
162 | #define PCLK_PMU_MSCL 32 | ||
163 | #define MSCL_NR_CLK 33 | ||
164 | |||
165 | /* AUD */ | ||
166 | #define SCLK_I2S 1 | ||
167 | #define SCLK_PCM 2 | ||
168 | #define PCLK_I2S 3 | ||
169 | #define PCLK_PCM 4 | ||
170 | #define ACLK_ADMA 5 | ||
171 | #define AUD_NR_CLK 6 | ||
92 | #endif /* _DT_BINDINGS_CLOCK_EXYNOS7_H */ | 172 | #endif /* _DT_BINDINGS_CLOCK_EXYNOS7_H */ |