aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiko Stübner <heiko@sntech.de>2015-12-26 08:07:15 -0500
committerMichael Turquette <mturquette@baylibre.com>2016-01-02 16:40:29 -0500
commit5b73840375e3eebeb7adf957ff64a96abdf4e1a1 (patch)
tree45c9a879220f0583224e1b65d19d673367d30db0
parentb0158bb27c7b6e9843f541c17b24dbd964b76db6 (diff)
clk: rockchip: fix section mismatches with new child-clocks
To model the muxes downstream of fractional dividers we introduced the child property, allowing to describe a direct child clock. The first implementation seems to cause section warnings, as the core clock-tree is marked as initdata while the data pointed to from the child element is not. While there may be some way to also set that missing property in the inline notation I didn't find it, so to actually fix the issue for now move the sub-definitions into separate declarations that can have their own __initdata properties. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Michael Turquette <mturquette@baylibre.com>
-rw-r--r--drivers/clk/rockchip/clk-rk3036.c35
-rw-r--r--drivers/clk/rockchip/clk-rk3188.c70
-rw-r--r--drivers/clk/rockchip/clk-rk3288.c56
-rw-r--r--drivers/clk/rockchip/clk.h2
4 files changed, 116 insertions, 47 deletions
diff --git a/drivers/clk/rockchip/clk-rk3036.c b/drivers/clk/rockchip/clk-rk3036.c
index 42c2003e5eb4..34c78f499ab7 100644
--- a/drivers/clk/rockchip/clk-rk3036.c
+++ b/drivers/clk/rockchip/clk-rk3036.c
@@ -149,6 +149,26 @@ static struct rockchip_pll_clock rk3036_pll_clks[] __initdata = {
149#define DFLAGS CLK_DIVIDER_HIWORD_MASK 149#define DFLAGS CLK_DIVIDER_HIWORD_MASK
150#define GFLAGS (CLK_GATE_HIWORD_MASK | CLK_GATE_SET_TO_DISABLE) 150#define GFLAGS (CLK_GATE_HIWORD_MASK | CLK_GATE_SET_TO_DISABLE)
151 151
152static struct rockchip_clk_branch rk3036_uart0_fracmux __initdata =
153 MUX(SCLK_UART0, "sclk_uart0", mux_uart0_p, CLK_SET_RATE_PARENT,
154 RK2928_CLKSEL_CON(13), 8, 2, MFLAGS);
155
156static struct rockchip_clk_branch rk3036_uart1_fracmux __initdata =
157 MUX(SCLK_UART1, "sclk_uart1", mux_uart1_p, CLK_SET_RATE_PARENT,
158 RK2928_CLKSEL_CON(14), 8, 2, MFLAGS);
159
160static struct rockchip_clk_branch rk3036_uart2_fracmux __initdata =
161 MUX(SCLK_UART2, "sclk_uart2", mux_uart2_p, CLK_SET_RATE_PARENT,
162 RK2928_CLKSEL_CON(15), 8, 2, MFLAGS);
163
164static struct rockchip_clk_branch rk3036_i2s_fracmux __initdata =
165 MUX(0, "i2s_pre", mux_i2s_pre_p, CLK_SET_RATE_PARENT,
166 RK2928_CLKSEL_CON(3), 8, 2, MFLAGS);
167
168static struct rockchip_clk_branch rk3036_spdif_fracmux __initdata =
169 MUX(SCLK_SPDIF, "sclk_spdif", mux_spdif_p, 0,
170 RK2928_CLKSEL_CON(5), 8, 2, MFLAGS);
171
152static struct rockchip_clk_branch rk3036_clk_branches[] __initdata = { 172static struct rockchip_clk_branch rk3036_clk_branches[] __initdata = {
153 /* 173 /*
154 * Clock-Architecture Diagram 1 174 * Clock-Architecture Diagram 1
@@ -230,18 +250,15 @@ static struct rockchip_clk_branch rk3036_clk_branches[] __initdata = {
230 COMPOSITE_FRACMUX(0, "uart0_frac", "uart0_src", CLK_SET_RATE_PARENT, 250 COMPOSITE_FRACMUX(0, "uart0_frac", "uart0_src", CLK_SET_RATE_PARENT,
231 RK2928_CLKSEL_CON(17), 0, 251 RK2928_CLKSEL_CON(17), 0,
232 RK2928_CLKGATE_CON(1), 9, GFLAGS, 252 RK2928_CLKGATE_CON(1), 9, GFLAGS,
233 MUX(SCLK_UART0, "sclk_uart0", mux_uart0_p, CLK_SET_RATE_PARENT, 253 &rk3036_uart0_fracmux),
234 RK2928_CLKSEL_CON(13), 8, 2, MFLAGS)),
235 COMPOSITE_FRACMUX(0, "uart1_frac", "uart1_src", CLK_SET_RATE_PARENT, 254 COMPOSITE_FRACMUX(0, "uart1_frac", "uart1_src", CLK_SET_RATE_PARENT,
236 RK2928_CLKSEL_CON(18), 0, 255 RK2928_CLKSEL_CON(18), 0,
237 RK2928_CLKGATE_CON(1), 11, GFLAGS, 256 RK2928_CLKGATE_CON(1), 11, GFLAGS,
238 MUX(SCLK_UART1, "sclk_uart1", mux_uart1_p, CLK_SET_RATE_PARENT, 257 &rk3036_uart1_fracmux),
239 RK2928_CLKSEL_CON(14), 8, 2, MFLAGS)),
240 COMPOSITE_FRACMUX(0, "uart2_frac", "uart2_src", CLK_SET_RATE_PARENT, 258 COMPOSITE_FRACMUX(0, "uart2_frac", "uart2_src", CLK_SET_RATE_PARENT,
241 RK2928_CLKSEL_CON(19), 0, 259 RK2928_CLKSEL_CON(19), 0,
242 RK2928_CLKGATE_CON(1), 13, GFLAGS, 260 RK2928_CLKGATE_CON(1), 13, GFLAGS,
243 MUX(SCLK_UART2, "sclk_uart2", mux_uart2_p, CLK_SET_RATE_PARENT, 261 &rk3036_uart2_fracmux),
244 RK2928_CLKSEL_CON(15), 8, 2, MFLAGS)),
245 262
246 COMPOSITE(0, "aclk_vcodec", mux_pll_src_3plls_p, 0, 263 COMPOSITE(0, "aclk_vcodec", mux_pll_src_3plls_p, 0,
247 RK2928_CLKSEL_CON(32), 14, 2, MFLAGS, 8, 5, DFLAGS, 264 RK2928_CLKSEL_CON(32), 14, 2, MFLAGS, 8, 5, DFLAGS,
@@ -292,8 +309,7 @@ static struct rockchip_clk_branch rk3036_clk_branches[] __initdata = {
292 COMPOSITE_FRACMUX(0, "i2s_frac", "i2s_src", CLK_SET_RATE_PARENT, 309 COMPOSITE_FRACMUX(0, "i2s_frac", "i2s_src", CLK_SET_RATE_PARENT,
293 RK2928_CLKSEL_CON(7), 0, 310 RK2928_CLKSEL_CON(7), 0,
294 RK2928_CLKGATE_CON(0), 10, GFLAGS, 311 RK2928_CLKGATE_CON(0), 10, GFLAGS,
295 MUX(0, "i2s_pre", mux_i2s_pre_p, CLK_SET_RATE_PARENT, 312 &rk3036_i2s_fracmux),
296 RK2928_CLKSEL_CON(3), 8, 2, MFLAGS)),
297 COMPOSITE_NODIV(SCLK_I2S_OUT, "i2s_clkout", mux_i2s_clkout_p, 0, 313 COMPOSITE_NODIV(SCLK_I2S_OUT, "i2s_clkout", mux_i2s_clkout_p, 0,
298 RK2928_CLKSEL_CON(3), 12, 1, MFLAGS, 314 RK2928_CLKSEL_CON(3), 12, 1, MFLAGS,
299 RK2928_CLKGATE_CON(0), 13, GFLAGS), 315 RK2928_CLKGATE_CON(0), 13, GFLAGS),
@@ -306,8 +322,7 @@ static struct rockchip_clk_branch rk3036_clk_branches[] __initdata = {
306 COMPOSITE_FRACMUX(0, "spdif_frac", "spdif_src", 0, 322 COMPOSITE_FRACMUX(0, "spdif_frac", "spdif_src", 0,
307 RK2928_CLKSEL_CON(9), 0, 323 RK2928_CLKSEL_CON(9), 0,
308 RK2928_CLKGATE_CON(2), 12, GFLAGS, 324 RK2928_CLKGATE_CON(2), 12, GFLAGS,
309 MUX(SCLK_SPDIF, "sclk_spdif", mux_spdif_p, 0, 325 &rk3036_spdif_fracmux),
310 RK2928_CLKSEL_CON(5), 8, 2, MFLAGS)),
311 326
312 GATE(SCLK_OTGPHY0, "sclk_otgphy0", "xin12m", CLK_IGNORE_UNUSED, 327 GATE(SCLK_OTGPHY0, "sclk_otgphy0", "xin12m", CLK_IGNORE_UNUSED,
313 RK2928_CLKGATE_CON(1), 5, GFLAGS), 328 RK2928_CLKGATE_CON(1), 5, GFLAGS),
diff --git a/drivers/clk/rockchip/clk-rk3188.c b/drivers/clk/rockchip/clk-rk3188.c
index c2c5c69d1230..1211af71849d 100644
--- a/drivers/clk/rockchip/clk-rk3188.c
+++ b/drivers/clk/rockchip/clk-rk3188.c
@@ -247,6 +247,30 @@ static struct clk_div_table div_core_peri_t[] = {
247 { /* sentinel */ }, 247 { /* sentinel */ },
248}; 248};
249 249
250static struct rockchip_clk_branch common_hsadc_out_fracmux __initdata =
251 MUX(0, "sclk_hsadc_out", mux_sclk_hsadc_p, 0,
252 RK2928_CLKSEL_CON(22), 4, 2, MFLAGS);
253
254static struct rockchip_clk_branch common_spdif_fracmux __initdata =
255 MUX(SCLK_SPDIF, "sclk_spdif", mux_sclk_spdif_p, CLK_SET_RATE_PARENT,
256 RK2928_CLKSEL_CON(5), 8, 2, MFLAGS);
257
258static struct rockchip_clk_branch common_uart0_fracmux __initdata =
259 MUX(SCLK_UART0, "sclk_uart0", mux_sclk_uart0_p, 0,
260 RK2928_CLKSEL_CON(13), 8, 2, MFLAGS);
261
262static struct rockchip_clk_branch common_uart1_fracmux __initdata =
263 MUX(SCLK_UART1, "sclk_uart1", mux_sclk_uart1_p, 0,
264 RK2928_CLKSEL_CON(14), 8, 2, MFLAGS);
265
266static struct rockchip_clk_branch common_uart2_fracmux __initdata =
267 MUX(SCLK_UART2, "sclk_uart2", mux_sclk_uart2_p, 0,
268 RK2928_CLKSEL_CON(15), 8, 2, MFLAGS);
269
270static struct rockchip_clk_branch common_uart3_fracmux __initdata =
271 MUX(SCLK_UART3, "sclk_uart3", mux_sclk_uart3_p, 0,
272 RK2928_CLKSEL_CON(16), 8, 2, MFLAGS);
273
250static struct rockchip_clk_branch common_clk_branches[] __initdata = { 274static struct rockchip_clk_branch common_clk_branches[] __initdata = {
251 /* 275 /*
252 * Clock-Architecture Diagram 2 276 * Clock-Architecture Diagram 2
@@ -338,8 +362,7 @@ static struct rockchip_clk_branch common_clk_branches[] __initdata = {
338 COMPOSITE_FRACMUX(0, "hsadc_frac", "hsadc_src", 0, 362 COMPOSITE_FRACMUX(0, "hsadc_frac", "hsadc_src", 0,
339 RK2928_CLKSEL_CON(23), 0, 363 RK2928_CLKSEL_CON(23), 0,
340 RK2928_CLKGATE_CON(2), 7, GFLAGS, 364 RK2928_CLKGATE_CON(2), 7, GFLAGS,
341 MUX(0, "sclk_hsadc_out", mux_sclk_hsadc_p, 0, 365 &common_hsadc_out_fracmux),
342 RK2928_CLKSEL_CON(22), 4, 2, MFLAGS)),
343 INVERTER(SCLK_HSADC, "sclk_hsadc", "sclk_hsadc_out", 366 INVERTER(SCLK_HSADC, "sclk_hsadc", "sclk_hsadc_out",
344 RK2928_CLKSEL_CON(22), 7, IFLAGS), 367 RK2928_CLKSEL_CON(22), 7, IFLAGS),
345 368
@@ -353,8 +376,7 @@ static struct rockchip_clk_branch common_clk_branches[] __initdata = {
353 COMPOSITE_FRACMUX(0, "spdif_frac", "spdif_pll", CLK_SET_RATE_PARENT, 376 COMPOSITE_FRACMUX(0, "spdif_frac", "spdif_pll", CLK_SET_RATE_PARENT,
354 RK2928_CLKSEL_CON(9), 0, 377 RK2928_CLKSEL_CON(9), 0,
355 RK2928_CLKGATE_CON(0), 14, GFLAGS, 378 RK2928_CLKGATE_CON(0), 14, GFLAGS,
356 MUX(SCLK_SPDIF, "sclk_spdif", mux_sclk_spdif_p, CLK_SET_RATE_PARENT, 379 &common_spdif_fracmux),
357 RK2928_CLKSEL_CON(5), 8, 2, MFLAGS)),
358 380
359 /* 381 /*
360 * Clock-Architecture Diagram 4 382 * Clock-Architecture Diagram 4
@@ -388,32 +410,28 @@ static struct rockchip_clk_branch common_clk_branches[] __initdata = {
388 COMPOSITE_FRACMUX(0, "uart0_frac", "uart0_pre", 0, 410 COMPOSITE_FRACMUX(0, "uart0_frac", "uart0_pre", 0,
389 RK2928_CLKSEL_CON(17), 0, 411 RK2928_CLKSEL_CON(17), 0,
390 RK2928_CLKGATE_CON(1), 9, GFLAGS, 412 RK2928_CLKGATE_CON(1), 9, GFLAGS,
391 MUX(SCLK_UART0, "sclk_uart0", mux_sclk_uart0_p, 0, 413 &common_uart0_fracmux),
392 RK2928_CLKSEL_CON(13), 8, 2, MFLAGS)),
393 COMPOSITE_NOMUX(0, "uart1_pre", "uart_src", 0, 414 COMPOSITE_NOMUX(0, "uart1_pre", "uart_src", 0,
394 RK2928_CLKSEL_CON(14), 0, 7, DFLAGS, 415 RK2928_CLKSEL_CON(14), 0, 7, DFLAGS,
395 RK2928_CLKGATE_CON(1), 10, GFLAGS), 416 RK2928_CLKGATE_CON(1), 10, GFLAGS),
396 COMPOSITE_FRACMUX(0, "uart1_frac", "uart1_pre", 0, 417 COMPOSITE_FRACMUX(0, "uart1_frac", "uart1_pre", 0,
397 RK2928_CLKSEL_CON(18), 0, 418 RK2928_CLKSEL_CON(18), 0,
398 RK2928_CLKGATE_CON(1), 11, GFLAGS, 419 RK2928_CLKGATE_CON(1), 11, GFLAGS,
399 MUX(SCLK_UART1, "sclk_uart1", mux_sclk_uart1_p, 0, 420 &common_uart1_fracmux),
400 RK2928_CLKSEL_CON(14), 8, 2, MFLAGS)),
401 COMPOSITE_NOMUX(0, "uart2_pre", "uart_src", 0, 421 COMPOSITE_NOMUX(0, "uart2_pre", "uart_src", 0,
402 RK2928_CLKSEL_CON(15), 0, 7, DFLAGS, 422 RK2928_CLKSEL_CON(15), 0, 7, DFLAGS,
403 RK2928_CLKGATE_CON(1), 12, GFLAGS), 423 RK2928_CLKGATE_CON(1), 12, GFLAGS),
404 COMPOSITE_FRACMUX(0, "uart2_frac", "uart2_pre", 0, 424 COMPOSITE_FRACMUX(0, "uart2_frac", "uart2_pre", 0,
405 RK2928_CLKSEL_CON(19), 0, 425 RK2928_CLKSEL_CON(19), 0,
406 RK2928_CLKGATE_CON(1), 13, GFLAGS, 426 RK2928_CLKGATE_CON(1), 13, GFLAGS,
407 MUX(SCLK_UART2, "sclk_uart2", mux_sclk_uart2_p, 0, 427 &common_uart2_fracmux),
408 RK2928_CLKSEL_CON(15), 8, 2, MFLAGS)),
409 COMPOSITE_NOMUX(0, "uart3_pre", "uart_src", 0, 428 COMPOSITE_NOMUX(0, "uart3_pre", "uart_src", 0,
410 RK2928_CLKSEL_CON(16), 0, 7, DFLAGS, 429 RK2928_CLKSEL_CON(16), 0, 7, DFLAGS,
411 RK2928_CLKGATE_CON(1), 14, GFLAGS), 430 RK2928_CLKGATE_CON(1), 14, GFLAGS),
412 COMPOSITE_FRACMUX(0, "uart3_frac", "uart3_pre", 0, 431 COMPOSITE_FRACMUX(0, "uart3_frac", "uart3_pre", 0,
413 RK2928_CLKSEL_CON(20), 0, 432 RK2928_CLKSEL_CON(20), 0,
414 RK2928_CLKGATE_CON(1), 15, GFLAGS, 433 RK2928_CLKGATE_CON(1), 15, GFLAGS,
415 MUX(SCLK_UART3, "sclk_uart3", mux_sclk_uart3_p, 0, 434 &common_uart3_fracmux),
416 RK2928_CLKSEL_CON(16), 8, 2, MFLAGS)),
417 435
418 GATE(SCLK_JTAG, "jtag", "ext_jtag", 0, RK2928_CLKGATE_CON(1), 3, GFLAGS), 436 GATE(SCLK_JTAG, "jtag", "ext_jtag", 0, RK2928_CLKGATE_CON(1), 3, GFLAGS),
419 437
@@ -523,6 +541,18 @@ static struct clk_div_table div_aclk_cpu_t[] = {
523 { /* sentinel */ }, 541 { /* sentinel */ },
524}; 542};
525 543
544static struct rockchip_clk_branch rk3066a_i2s0_fracmux __initdata =
545 MUX(SCLK_I2S0, "sclk_i2s0", mux_sclk_i2s0_p, 0,
546 RK2928_CLKSEL_CON(2), 8, 2, MFLAGS);
547
548static struct rockchip_clk_branch rk3066a_i2s1_fracmux __initdata =
549 MUX(SCLK_I2S1, "sclk_i2s1", mux_sclk_i2s1_p, 0,
550 RK2928_CLKSEL_CON(3), 8, 2, MFLAGS);
551
552static struct rockchip_clk_branch rk3066a_i2s2_fracmux __initdata =
553 MUX(SCLK_I2S2, "sclk_i2s2", mux_sclk_i2s2_p, 0,
554 RK2928_CLKSEL_CON(4), 8, 2, MFLAGS);
555
526static struct rockchip_clk_branch rk3066a_clk_branches[] __initdata = { 556static struct rockchip_clk_branch rk3066a_clk_branches[] __initdata = {
527 DIVTBL(0, "aclk_cpu_pre", "armclk", 0, 557 DIVTBL(0, "aclk_cpu_pre", "armclk", 0,
528 RK2928_CLKSEL_CON(1), 0, 3, DFLAGS | CLK_DIVIDER_READ_ONLY, div_aclk_cpu_t), 558 RK2928_CLKSEL_CON(1), 0, 3, DFLAGS | CLK_DIVIDER_READ_ONLY, div_aclk_cpu_t),
@@ -587,24 +617,21 @@ static struct rockchip_clk_branch rk3066a_clk_branches[] __initdata = {
587 COMPOSITE_FRACMUX(0, "i2s0_frac", "i2s0_pre", 0, 617 COMPOSITE_FRACMUX(0, "i2s0_frac", "i2s0_pre", 0,
588 RK2928_CLKSEL_CON(6), 0, 618 RK2928_CLKSEL_CON(6), 0,
589 RK2928_CLKGATE_CON(0), 8, GFLAGS, 619 RK2928_CLKGATE_CON(0), 8, GFLAGS,
590 MUX(SCLK_I2S0, "sclk_i2s0", mux_sclk_i2s0_p, 0, 620 &rk3066a_i2s0_fracmux),
591 RK2928_CLKSEL_CON(2), 8, 2, MFLAGS)),
592 COMPOSITE_NOMUX(0, "i2s1_pre", "i2s_src", 0, 621 COMPOSITE_NOMUX(0, "i2s1_pre", "i2s_src", 0,
593 RK2928_CLKSEL_CON(3), 0, 7, DFLAGS, 622 RK2928_CLKSEL_CON(3), 0, 7, DFLAGS,
594 RK2928_CLKGATE_CON(0), 9, GFLAGS), 623 RK2928_CLKGATE_CON(0), 9, GFLAGS),
595 COMPOSITE_FRACMUX(0, "i2s1_frac", "i2s1_pre", 0, 624 COMPOSITE_FRACMUX(0, "i2s1_frac", "i2s1_pre", 0,
596 RK2928_CLKSEL_CON(7), 0, 625 RK2928_CLKSEL_CON(7), 0,
597 RK2928_CLKGATE_CON(0), 10, GFLAGS, 626 RK2928_CLKGATE_CON(0), 10, GFLAGS,
598 MUX(SCLK_I2S1, "sclk_i2s1", mux_sclk_i2s1_p, 0, 627 &rk3066a_i2s1_fracmux),
599 RK2928_CLKSEL_CON(3), 8, 2, MFLAGS)),
600 COMPOSITE_NOMUX(0, "i2s2_pre", "i2s_src", 0, 628 COMPOSITE_NOMUX(0, "i2s2_pre", "i2s_src", 0,
601 RK2928_CLKSEL_CON(4), 0, 7, DFLAGS, 629 RK2928_CLKSEL_CON(4), 0, 7, DFLAGS,
602 RK2928_CLKGATE_CON(0), 11, GFLAGS), 630 RK2928_CLKGATE_CON(0), 11, GFLAGS),
603 COMPOSITE_FRACMUX(0, "i2s2_frac", "i2s2_pre", 0, 631 COMPOSITE_FRACMUX(0, "i2s2_frac", "i2s2_pre", 0,
604 RK2928_CLKSEL_CON(8), 0, 632 RK2928_CLKSEL_CON(8), 0,
605 RK2928_CLKGATE_CON(0), 12, GFLAGS, 633 RK2928_CLKGATE_CON(0), 12, GFLAGS,
606 MUX(SCLK_I2S2, "sclk_i2s2", mux_sclk_i2s2_p, 0, 634 &rk3066a_i2s2_fracmux),
607 RK2928_CLKSEL_CON(4), 8, 2, MFLAGS)),
608 635
609 GATE(HCLK_I2S1, "hclk_i2s1", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 3, GFLAGS), 636 GATE(HCLK_I2S1, "hclk_i2s1", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 3, GFLAGS),
610 GATE(HCLK_I2S2, "hclk_i2s2", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 4, GFLAGS), 637 GATE(HCLK_I2S2, "hclk_i2s2", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 4, GFLAGS),
@@ -638,6 +665,10 @@ static struct clk_div_table div_rk3188_aclk_core_t[] = {
638PNAME(mux_hsicphy_p) = { "sclk_otgphy0", "sclk_otgphy1", 665PNAME(mux_hsicphy_p) = { "sclk_otgphy0", "sclk_otgphy1",
639 "gpll", "cpll" }; 666 "gpll", "cpll" };
640 667
668static struct rockchip_clk_branch rk3188_i2s0_fracmux __initdata =
669 MUX(SCLK_I2S0, "sclk_i2s0", mux_sclk_i2s0_p, 0,
670 RK2928_CLKSEL_CON(3), 8, 2, MFLAGS);
671
641static struct rockchip_clk_branch rk3188_clk_branches[] __initdata = { 672static struct rockchip_clk_branch rk3188_clk_branches[] __initdata = {
642 COMPOSITE_NOMUX_DIVTBL(0, "aclk_core", "armclk", CLK_IGNORE_UNUSED, 673 COMPOSITE_NOMUX_DIVTBL(0, "aclk_core", "armclk", CLK_IGNORE_UNUSED,
643 RK2928_CLKSEL_CON(1), 3, 3, DFLAGS | CLK_DIVIDER_READ_ONLY, 674 RK2928_CLKSEL_CON(1), 3, 3, DFLAGS | CLK_DIVIDER_READ_ONLY,
@@ -694,8 +725,7 @@ static struct rockchip_clk_branch rk3188_clk_branches[] __initdata = {
694 COMPOSITE_FRACMUX(0, "i2s0_frac", "i2s0_pre", 0, 725 COMPOSITE_FRACMUX(0, "i2s0_frac", "i2s0_pre", 0,
695 RK2928_CLKSEL_CON(7), 0, 726 RK2928_CLKSEL_CON(7), 0,
696 RK2928_CLKGATE_CON(0), 10, GFLAGS, 727 RK2928_CLKGATE_CON(0), 10, GFLAGS,
697 MUX(SCLK_I2S0, "sclk_i2s0", mux_sclk_i2s0_p, 0, 728 &rk3188_i2s0_fracmux),
698 RK2928_CLKSEL_CON(3), 8, 2, MFLAGS)),
699 729
700 GATE(0, "hclk_imem0", "hclk_cpu", 0, RK2928_CLKGATE_CON(4), 14, GFLAGS), 730 GATE(0, "hclk_imem0", "hclk_cpu", 0, RK2928_CLKGATE_CON(4), 14, GFLAGS),
701 GATE(0, "hclk_imem1", "hclk_cpu", 0, RK2928_CLKGATE_CON(4), 15, GFLAGS), 731 GATE(0, "hclk_imem1", "hclk_cpu", 0, RK2928_CLKGATE_CON(4), 15, GFLAGS),
diff --git a/drivers/clk/rockchip/clk-rk3288.c b/drivers/clk/rockchip/clk-rk3288.c
index 074550c0cb90..8abd827deaf4 100644
--- a/drivers/clk/rockchip/clk-rk3288.c
+++ b/drivers/clk/rockchip/clk-rk3288.c
@@ -225,6 +225,38 @@ static struct clk_div_table div_hclk_cpu_t[] = {
225#define GFLAGS (CLK_GATE_HIWORD_MASK | CLK_GATE_SET_TO_DISABLE) 225#define GFLAGS (CLK_GATE_HIWORD_MASK | CLK_GATE_SET_TO_DISABLE)
226#define IFLAGS ROCKCHIP_INVERTER_HIWORD_MASK 226#define IFLAGS ROCKCHIP_INVERTER_HIWORD_MASK
227 227
228static struct rockchip_clk_branch rk3288_i2s_fracmux __initdata =
229 MUX(0, "i2s_pre", mux_i2s_pre_p, CLK_SET_RATE_PARENT,
230 RK3288_CLKSEL_CON(4), 8, 2, MFLAGS);
231
232static struct rockchip_clk_branch rk3288_spdif_fracmux __initdata =
233 MUX(0, "spdif_mux", mux_spdif_p, CLK_SET_RATE_PARENT,
234 RK3288_CLKSEL_CON(5), 8, 2, MFLAGS);
235
236static struct rockchip_clk_branch rk3288_spdif_8ch_fracmux __initdata =
237 MUX(0, "spdif_8ch_mux", mux_spdif_8ch_p, CLK_SET_RATE_PARENT,
238 RK3288_CLKSEL_CON(40), 8, 2, MFLAGS);
239
240static struct rockchip_clk_branch rk3288_uart0_fracmux __initdata =
241 MUX(SCLK_UART0, "sclk_uart0", mux_uart0_p, CLK_SET_RATE_PARENT,
242 RK3288_CLKSEL_CON(13), 8, 2, MFLAGS);
243
244static struct rockchip_clk_branch rk3288_uart1_fracmux __initdata =
245 MUX(SCLK_UART1, "sclk_uart1", mux_uart1_p, CLK_SET_RATE_PARENT,
246 RK3288_CLKSEL_CON(14), 8, 2, MFLAGS);
247
248static struct rockchip_clk_branch rk3288_uart2_fracmux __initdata =
249 MUX(SCLK_UART2, "sclk_uart2", mux_uart2_p, CLK_SET_RATE_PARENT,
250 RK3288_CLKSEL_CON(15), 8, 2, MFLAGS);
251
252static struct rockchip_clk_branch rk3288_uart3_fracmux __initdata =
253 MUX(SCLK_UART3, "sclk_uart3", mux_uart3_p, CLK_SET_RATE_PARENT,
254 RK3288_CLKSEL_CON(16), 8, 2, MFLAGS);
255
256static struct rockchip_clk_branch rk3288_uart4_fracmux __initdata =
257 MUX(SCLK_UART4, "sclk_uart4", mux_uart4_p, CLK_SET_RATE_PARENT,
258 RK3288_CLKSEL_CON(3), 8, 2, MFLAGS);
259
228static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = { 260static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = {
229 /* 261 /*
230 * Clock-Architecture Diagram 1 262 * Clock-Architecture Diagram 1
@@ -307,8 +339,7 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = {
307 COMPOSITE_FRACMUX(0, "i2s_frac", "i2s_src", CLK_SET_RATE_PARENT, 339 COMPOSITE_FRACMUX(0, "i2s_frac", "i2s_src", CLK_SET_RATE_PARENT,
308 RK3288_CLKSEL_CON(8), 0, 340 RK3288_CLKSEL_CON(8), 0,
309 RK3288_CLKGATE_CON(4), 2, GFLAGS, 341 RK3288_CLKGATE_CON(4), 2, GFLAGS,
310 MUX(0, "i2s_pre", mux_i2s_pre_p, CLK_SET_RATE_PARENT, 342 &rk3288_i2s_fracmux),
311 RK3288_CLKSEL_CON(4), 8, 2, MFLAGS)),
312 COMPOSITE_NODIV(SCLK_I2S0_OUT, "i2s0_clkout", mux_i2s_clkout_p, 0, 343 COMPOSITE_NODIV(SCLK_I2S0_OUT, "i2s0_clkout", mux_i2s_clkout_p, 0,
313 RK3288_CLKSEL_CON(4), 12, 1, MFLAGS, 344 RK3288_CLKSEL_CON(4), 12, 1, MFLAGS,
314 RK3288_CLKGATE_CON(4), 0, GFLAGS), 345 RK3288_CLKGATE_CON(4), 0, GFLAGS),
@@ -323,8 +354,7 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = {
323 COMPOSITE_FRACMUX(0, "spdif_frac", "spdif_src", CLK_SET_RATE_PARENT, 354 COMPOSITE_FRACMUX(0, "spdif_frac", "spdif_src", CLK_SET_RATE_PARENT,
324 RK3288_CLKSEL_CON(9), 0, 355 RK3288_CLKSEL_CON(9), 0,
325 RK3288_CLKGATE_CON(4), 5, GFLAGS, 356 RK3288_CLKGATE_CON(4), 5, GFLAGS,
326 MUX(0, "spdif_mux", mux_spdif_p, CLK_SET_RATE_PARENT, 357 &rk3288_spdif_fracmux),
327 RK3288_CLKSEL_CON(5), 8, 2, MFLAGS)),
328 GATE(SCLK_SPDIF, "sclk_spdif", "spdif_mux", CLK_SET_RATE_PARENT, 358 GATE(SCLK_SPDIF, "sclk_spdif", "spdif_mux", CLK_SET_RATE_PARENT,
329 RK3288_CLKGATE_CON(4), 6, GFLAGS), 359 RK3288_CLKGATE_CON(4), 6, GFLAGS),
330 COMPOSITE_NOMUX(0, "spdif_8ch_pre", "spdif_src", CLK_SET_RATE_PARENT, 360 COMPOSITE_NOMUX(0, "spdif_8ch_pre", "spdif_src", CLK_SET_RATE_PARENT,
@@ -333,8 +363,7 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = {
333 COMPOSITE_FRACMUX(0, "spdif_8ch_frac", "spdif_8ch_pre", CLK_SET_RATE_PARENT, 363 COMPOSITE_FRACMUX(0, "spdif_8ch_frac", "spdif_8ch_pre", CLK_SET_RATE_PARENT,
334 RK3288_CLKSEL_CON(41), 0, 364 RK3288_CLKSEL_CON(41), 0,
335 RK3288_CLKGATE_CON(4), 8, GFLAGS, 365 RK3288_CLKGATE_CON(4), 8, GFLAGS,
336 MUX(0, "spdif_8ch_mux", mux_spdif_8ch_p, CLK_SET_RATE_PARENT, 366 &rk3288_spdif_8ch_fracmux),
337 RK3288_CLKSEL_CON(40), 8, 2, MFLAGS)),
338 GATE(SCLK_SPDIF8CH, "sclk_spdif_8ch", "spdif_8ch_mux", CLK_SET_RATE_PARENT, 367 GATE(SCLK_SPDIF8CH, "sclk_spdif_8ch", "spdif_8ch_mux", CLK_SET_RATE_PARENT,
339 RK3288_CLKGATE_CON(4), 9, GFLAGS), 368 RK3288_CLKGATE_CON(4), 9, GFLAGS),
340 369
@@ -541,8 +570,7 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = {
541 COMPOSITE_FRACMUX(0, "uart0_frac", "uart0_src", CLK_SET_RATE_PARENT, 570 COMPOSITE_FRACMUX(0, "uart0_frac", "uart0_src", CLK_SET_RATE_PARENT,
542 RK3288_CLKSEL_CON(17), 0, 571 RK3288_CLKSEL_CON(17), 0,
543 RK3288_CLKGATE_CON(1), 9, GFLAGS, 572 RK3288_CLKGATE_CON(1), 9, GFLAGS,
544 MUX(SCLK_UART0, "sclk_uart0", mux_uart0_p, CLK_SET_RATE_PARENT, 573 &rk3288_uart0_fracmux),
545 RK3288_CLKSEL_CON(13), 8, 2, MFLAGS)),
546 MUX(0, "uart_src", mux_pll_src_cpll_gpll_p, 0, 574 MUX(0, "uart_src", mux_pll_src_cpll_gpll_p, 0,
547 RK3288_CLKSEL_CON(13), 15, 1, MFLAGS), 575 RK3288_CLKSEL_CON(13), 15, 1, MFLAGS),
548 COMPOSITE_NOMUX(0, "uart1_src", "uart_src", 0, 576 COMPOSITE_NOMUX(0, "uart1_src", "uart_src", 0,
@@ -551,32 +579,28 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = {
551 COMPOSITE_FRACMUX(0, "uart1_frac", "uart1_src", CLK_SET_RATE_PARENT, 579 COMPOSITE_FRACMUX(0, "uart1_frac", "uart1_src", CLK_SET_RATE_PARENT,
552 RK3288_CLKSEL_CON(18), 0, 580 RK3288_CLKSEL_CON(18), 0,
553 RK3288_CLKGATE_CON(1), 11, GFLAGS, 581 RK3288_CLKGATE_CON(1), 11, GFLAGS,
554 MUX(SCLK_UART1, "sclk_uart1", mux_uart1_p, CLK_SET_RATE_PARENT, 582 &rk3288_uart1_fracmux),
555 RK3288_CLKSEL_CON(14), 8, 2, MFLAGS)),
556 COMPOSITE_NOMUX(0, "uart2_src", "uart_src", 0, 583 COMPOSITE_NOMUX(0, "uart2_src", "uart_src", 0,
557 RK3288_CLKSEL_CON(15), 0, 7, DFLAGS, 584 RK3288_CLKSEL_CON(15), 0, 7, DFLAGS,
558 RK3288_CLKGATE_CON(1), 12, GFLAGS), 585 RK3288_CLKGATE_CON(1), 12, GFLAGS),
559 COMPOSITE_FRACMUX(0, "uart2_frac", "uart2_src", CLK_SET_RATE_PARENT, 586 COMPOSITE_FRACMUX(0, "uart2_frac", "uart2_src", CLK_SET_RATE_PARENT,
560 RK3288_CLKSEL_CON(19), 0, 587 RK3288_CLKSEL_CON(19), 0,
561 RK3288_CLKGATE_CON(1), 13, GFLAGS, 588 RK3288_CLKGATE_CON(1), 13, GFLAGS,
562 MUX(SCLK_UART2, "sclk_uart2", mux_uart2_p, CLK_SET_RATE_PARENT, 589 &rk3288_uart2_fracmux),
563 RK3288_CLKSEL_CON(15), 8, 2, MFLAGS)),
564 COMPOSITE_NOMUX(0, "uart3_src", "uart_src", 0, 590 COMPOSITE_NOMUX(0, "uart3_src", "uart_src", 0,
565 RK3288_CLKSEL_CON(16), 0, 7, DFLAGS, 591 RK3288_CLKSEL_CON(16), 0, 7, DFLAGS,
566 RK3288_CLKGATE_CON(1), 14, GFLAGS), 592 RK3288_CLKGATE_CON(1), 14, GFLAGS),
567 COMPOSITE_FRACMUX(0, "uart3_frac", "uart3_src", CLK_SET_RATE_PARENT, 593 COMPOSITE_FRACMUX(0, "uart3_frac", "uart3_src", CLK_SET_RATE_PARENT,
568 RK3288_CLKSEL_CON(20), 0, 594 RK3288_CLKSEL_CON(20), 0,
569 RK3288_CLKGATE_CON(1), 15, GFLAGS, 595 RK3288_CLKGATE_CON(1), 15, GFLAGS,
570 MUX(SCLK_UART3, "sclk_uart3", mux_uart3_p, CLK_SET_RATE_PARENT, 596 &rk3288_uart3_fracmux),
571 RK3288_CLKSEL_CON(16), 8, 2, MFLAGS)),
572 COMPOSITE_NOMUX(0, "uart4_src", "uart_src", 0, 597 COMPOSITE_NOMUX(0, "uart4_src", "uart_src", 0,
573 RK3288_CLKSEL_CON(3), 0, 7, DFLAGS, 598 RK3288_CLKSEL_CON(3), 0, 7, DFLAGS,
574 RK3288_CLKGATE_CON(2), 12, GFLAGS), 599 RK3288_CLKGATE_CON(2), 12, GFLAGS),
575 COMPOSITE_FRACMUX(0, "uart4_frac", "uart4_src", CLK_SET_RATE_PARENT, 600 COMPOSITE_FRACMUX(0, "uart4_frac", "uart4_src", CLK_SET_RATE_PARENT,
576 RK3288_CLKSEL_CON(7), 0, 601 RK3288_CLKSEL_CON(7), 0,
577 RK3288_CLKGATE_CON(2), 13, GFLAGS, 602 RK3288_CLKGATE_CON(2), 13, GFLAGS,
578 MUX(SCLK_UART4, "sclk_uart4", mux_uart4_p, CLK_SET_RATE_PARENT, 603 &rk3288_uart4_fracmux),
579 RK3288_CLKSEL_CON(3), 8, 2, MFLAGS)),
580 604
581 COMPOSITE(0, "mac_pll_src", mux_pll_src_npll_cpll_gpll_p, 0, 605 COMPOSITE(0, "mac_pll_src", mux_pll_src_npll_cpll_gpll_p, 0,
582 RK3288_CLKSEL_CON(21), 0, 2, MFLAGS, 8, 5, DFLAGS, 606 RK3288_CLKSEL_CON(21), 0, 2, MFLAGS, 8, 5, DFLAGS,
diff --git a/drivers/clk/rockchip/clk.h b/drivers/clk/rockchip/clk.h
index 176a3eb52ef4..c5274548dc6f 100644
--- a/drivers/clk/rockchip/clk.h
+++ b/drivers/clk/rockchip/clk.h
@@ -415,7 +415,7 @@ struct rockchip_clk_branch {
415 .gate_offset = go, \ 415 .gate_offset = go, \
416 .gate_shift = gs, \ 416 .gate_shift = gs, \
417 .gate_flags = gf, \ 417 .gate_flags = gf, \
418 .child = &(struct rockchip_clk_branch)ch, \ 418 .child = ch, \
419 } 419 }
420 420
421#define MUX(_id, cname, pnames, f, o, s, w, mf) \ 421#define MUX(_id, cname, pnames, f, o, s, w, mf) \