aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Boyd <sboyd@codeaurora.org>2016-03-04 12:36:29 -0500
committerStephen Boyd <sboyd@codeaurora.org>2016-03-04 12:36:29 -0500
commit37655fae0c579315624189a7708d0b688d473876 (patch)
treeb171c2ea6ea1434893cbd0c4de5608486d9b1cc8
parent8626556f259331aac23c0e274aed24420f0e5403 (diff)
parent7af8a26ce7055dd74853ea7c2b9752961e3491da (diff)
Merge tag 'v4.6-rockchip-clk2' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into clk-next
Pull second batch of rockchip clk updates from Heiko Stuebner: Inclusion of the rk3368 fractional dividers into our handling scheme, fixes for missing error-handling in mmc-phase, inverters and cpu-clocks and some more clock-ids. * tag 'v4.6-rockchip-clk2' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip: clk: rockchip: include downstream muxes into fractional dividers on rk3368 clk: rockchip: set the clock ids for RK3228 HDMI clk: rockchip: set the clock ids for RK3228 VOP clk: rockchip: add the tsadc clocks found on rk3228 SoCs clk: rockchip: add the new clock ids for RK3228 HDMI clk: rockchip: add the new clock ids for RK3228 VOP clk: rockchip: add id of the tsadc clock found on rk3228 SoCs clk: rockchip: fix coding style for clk-cpu.c clk: rockchip: don't return NULL when registering mmc branch fails clk: rockchip: don't return NULL when registering inverter fails clk: rockchip: check grf when waiting pll lock clk: rockchip: disable alt_parent clk in err cases when registering cpuclk
-rw-r--r--drivers/clk/rockchip/clk-cpu.c8
-rw-r--r--drivers/clk/rockchip/clk-inverter.c8
-rw-r--r--drivers/clk/rockchip/clk-mmc-phase.c8
-rw-r--r--drivers/clk/rockchip/clk-pll.c5
-rw-r--r--drivers/clk/rockchip/clk-rk3228.c18
-rw-r--r--drivers/clk/rockchip/clk-rk3368.c97
-rw-r--r--include/dt-bindings/clock/rk3228-cru.h12
7 files changed, 95 insertions, 61 deletions
diff --git a/drivers/clk/rockchip/clk-cpu.c b/drivers/clk/rockchip/clk-cpu.c
index d07374f48caf..4e73ed5cab58 100644
--- a/drivers/clk/rockchip/clk-cpu.c
+++ b/drivers/clk/rockchip/clk-cpu.c
@@ -116,7 +116,7 @@ static void rockchip_cpuclk_set_dividers(struct rockchip_cpuclk *cpuclk,
116 116
117 pr_debug("%s: setting reg 0x%x to 0x%x\n", 117 pr_debug("%s: setting reg 0x%x to 0x%x\n",
118 __func__, clksel->reg, clksel->val); 118 __func__, clksel->reg, clksel->val);
119 writel(clksel->val , cpuclk->reg_base + clksel->reg); 119 writel(clksel->val, cpuclk->reg_base + clksel->reg);
120 } 120 }
121} 121}
122 122
@@ -290,14 +290,14 @@ struct clk *rockchip_clk_register_cpuclk(const char *name,
290 pr_err("%s: could not lookup parent clock %s\n", 290 pr_err("%s: could not lookup parent clock %s\n",
291 __func__, parent_names[0]); 291 __func__, parent_names[0]);
292 ret = -EINVAL; 292 ret = -EINVAL;
293 goto free_cpuclk; 293 goto free_alt_parent;
294 } 294 }
295 295
296 ret = clk_notifier_register(clk, &cpuclk->clk_nb); 296 ret = clk_notifier_register(clk, &cpuclk->clk_nb);
297 if (ret) { 297 if (ret) {
298 pr_err("%s: failed to register clock notifier for %s\n", 298 pr_err("%s: failed to register clock notifier for %s\n",
299 __func__, name); 299 __func__, name);
300 goto free_cpuclk; 300 goto free_alt_parent;
301 } 301 }
302 302
303 if (nrates > 0) { 303 if (nrates > 0) {
@@ -326,6 +326,8 @@ free_rate_table:
326 kfree(cpuclk->rate_table); 326 kfree(cpuclk->rate_table);
327unregister_notifier: 327unregister_notifier:
328 clk_notifier_unregister(clk, &cpuclk->clk_nb); 328 clk_notifier_unregister(clk, &cpuclk->clk_nb);
329free_alt_parent:
330 clk_disable_unprepare(cpuclk->alt_parent);
329free_cpuclk: 331free_cpuclk:
330 kfree(cpuclk); 332 kfree(cpuclk);
331 return ERR_PTR(ret); 333 return ERR_PTR(ret);
diff --git a/drivers/clk/rockchip/clk-inverter.c b/drivers/clk/rockchip/clk-inverter.c
index 7cbf43beb3c6..dcb6e37f3da1 100644
--- a/drivers/clk/rockchip/clk-inverter.c
+++ b/drivers/clk/rockchip/clk-inverter.c
@@ -90,7 +90,7 @@ struct clk *rockchip_clk_register_inverter(const char *name,
90 90
91 inv_clock = kmalloc(sizeof(*inv_clock), GFP_KERNEL); 91 inv_clock = kmalloc(sizeof(*inv_clock), GFP_KERNEL);
92 if (!inv_clock) 92 if (!inv_clock)
93 return NULL; 93 return ERR_PTR(-ENOMEM);
94 94
95 init.name = name; 95 init.name = name;
96 init.num_parents = num_parents; 96 init.num_parents = num_parents;
@@ -106,11 +106,7 @@ struct clk *rockchip_clk_register_inverter(const char *name,
106 106
107 clk = clk_register(NULL, &inv_clock->hw); 107 clk = clk_register(NULL, &inv_clock->hw);
108 if (IS_ERR(clk)) 108 if (IS_ERR(clk))
109 goto err_free; 109 kfree(inv_clock);
110 110
111 return clk; 111 return clk;
112
113err_free:
114 kfree(inv_clock);
115 return NULL;
116} 112}
diff --git a/drivers/clk/rockchip/clk-mmc-phase.c b/drivers/clk/rockchip/clk-mmc-phase.c
index 2685644826a0..e0dc7e83403a 100644
--- a/drivers/clk/rockchip/clk-mmc-phase.c
+++ b/drivers/clk/rockchip/clk-mmc-phase.c
@@ -150,7 +150,7 @@ struct clk *rockchip_clk_register_mmc(const char *name,
150 150
151 mmc_clock = kmalloc(sizeof(*mmc_clock), GFP_KERNEL); 151 mmc_clock = kmalloc(sizeof(*mmc_clock), GFP_KERNEL);
152 if (!mmc_clock) 152 if (!mmc_clock)
153 return NULL; 153 return ERR_PTR(-ENOMEM);
154 154
155 init.name = name; 155 init.name = name;
156 init.num_parents = num_parents; 156 init.num_parents = num_parents;
@@ -172,11 +172,7 @@ struct clk *rockchip_clk_register_mmc(const char *name,
172 172
173 clk = clk_register(NULL, &mmc_clock->hw); 173 clk = clk_register(NULL, &mmc_clock->hw);
174 if (IS_ERR(clk)) 174 if (IS_ERR(clk))
175 goto err_free; 175 kfree(mmc_clock);
176 176
177 return clk; 177 return clk;
178
179err_free:
180 kfree(mmc_clock);
181 return NULL;
182} 178}
diff --git a/drivers/clk/rockchip/clk-pll.c b/drivers/clk/rockchip/clk-pll.c
index b7e66c9dd9f2..5de797e34d54 100644
--- a/drivers/clk/rockchip/clk-pll.c
+++ b/drivers/clk/rockchip/clk-pll.c
@@ -94,6 +94,11 @@ static int rockchip_pll_wait_lock(struct rockchip_clk_pll *pll)
94 unsigned int val; 94 unsigned int val;
95 int delay = 24000000, ret; 95 int delay = 24000000, ret;
96 96
97 if (IS_ERR(grf)) {
98 pr_err("%s: grf regmap not available\n", __func__);
99 return PTR_ERR(grf);
100 }
101
97 while (delay > 0) { 102 while (delay > 0) {
98 ret = regmap_read(grf, pll->lock_offset, &val); 103 ret = regmap_read(grf, pll->lock_offset, &val);
99 if (ret) { 104 if (ret) {
diff --git a/drivers/clk/rockchip/clk-rk3228.c b/drivers/clk/rockchip/clk-rk3228.c
index c515915850a1..7702d2855e9c 100644
--- a/drivers/clk/rockchip/clk-rk3228.c
+++ b/drivers/clk/rockchip/clk-rk3228.c
@@ -285,7 +285,7 @@ static struct rockchip_clk_branch rk3228_clk_branches[] __initdata = {
285 RK2928_CLKSEL_CON(23), 14, 2, MFLAGS, 8, 6, DFLAGS, 285 RK2928_CLKSEL_CON(23), 14, 2, MFLAGS, 8, 6, DFLAGS,
286 RK2928_CLKGATE_CON(3), 5, GFLAGS), 286 RK2928_CLKGATE_CON(3), 5, GFLAGS),
287 287
288 GATE(0, "sclk_hdmi_hdcp", "xin24m", 0, 288 GATE(SCLK_HDMI_HDCP, "sclk_hdmi_hdcp", "xin24m", 0,
289 RK2928_CLKGATE_CON(3), 7, GFLAGS), 289 RK2928_CLKGATE_CON(3), 7, GFLAGS),
290 290
291 COMPOSITE(0, "sclk_hdmi_cec", mux_sclk_hdmi_cec_p, 0, 291 COMPOSITE(0, "sclk_hdmi_cec", mux_sclk_hdmi_cec_p, 0,
@@ -364,11 +364,11 @@ static struct rockchip_clk_branch rk3228_clk_branches[] __initdata = {
364 RK2928_CLKGATE_CON(3), 1, GFLAGS), 364 RK2928_CLKGATE_CON(3), 1, GFLAGS),
365 MUX(0, "sclk_vop_src", mux_sclk_vop_src_p, 0, 365 MUX(0, "sclk_vop_src", mux_sclk_vop_src_p, 0,
366 RK2928_CLKSEL_CON(27), 0, 1, MFLAGS), 366 RK2928_CLKSEL_CON(27), 0, 1, MFLAGS),
367 DIV(0, "dclk_hdmiphy", "sclk_vop_src", 0, 367 DIV(DCLK_HDMI_PHY, "dclk_hdmiphy", "sclk_vop_src", 0,
368 RK2928_CLKSEL_CON(29), 0, 3, DFLAGS), 368 RK2928_CLKSEL_CON(29), 0, 3, DFLAGS),
369 DIV(0, "sclk_vop_pre", "sclk_vop_src", 0, 369 DIV(0, "sclk_vop_pre", "sclk_vop_src", 0,
370 RK2928_CLKSEL_CON(27), 8, 8, DFLAGS), 370 RK2928_CLKSEL_CON(27), 8, 8, DFLAGS),
371 MUX(0, "dclk_vop", mux_dclk_vop_p, 0, 371 MUX(DCLK_VOP, "dclk_vop", mux_dclk_vop_p, 0,
372 RK2928_CLKSEL_CON(27), 1, 1, MFLAGS), 372 RK2928_CLKSEL_CON(27), 1, 1, MFLAGS),
373 373
374 FACTOR(0, "xin12m", "xin24m", 0, 1, 2), 374 FACTOR(0, "xin12m", "xin24m", 0, 1, 2),
@@ -424,7 +424,7 @@ static struct rockchip_clk_branch rk3228_clk_branches[] __initdata = {
424 GATE(0, "sclk_otgphy1", "xin24m", 0, 424 GATE(0, "sclk_otgphy1", "xin24m", 0,
425 RK2928_CLKGATE_CON(1), 6, GFLAGS), 425 RK2928_CLKGATE_CON(1), 6, GFLAGS),
426 426
427 COMPOSITE_NOMUX(0, "sclk_tsadc", "xin24m", 0, 427 COMPOSITE_NOMUX(SCLK_TSADC, "sclk_tsadc", "xin24m", 0,
428 RK2928_CLKSEL_CON(24), 6, 10, DFLAGS, 428 RK2928_CLKSEL_CON(24), 6, 10, DFLAGS,
429 RK2928_CLKGATE_CON(2), 8, GFLAGS), 429 RK2928_CLKGATE_CON(2), 8, GFLAGS),
430 430
@@ -505,7 +505,7 @@ static struct rockchip_clk_branch rk3228_clk_branches[] __initdata = {
505 GATE(0, "aclk_iep", "aclk_iep_pre", 0, RK2928_CLKGATE_CON(13), 2, GFLAGS), 505 GATE(0, "aclk_iep", "aclk_iep_pre", 0, RK2928_CLKGATE_CON(13), 2, GFLAGS),
506 GATE(0, "aclk_iep_noc", "aclk_iep_pre", 0, RK2928_CLKGATE_CON(13), 9, GFLAGS), 506 GATE(0, "aclk_iep_noc", "aclk_iep_pre", 0, RK2928_CLKGATE_CON(13), 9, GFLAGS),
507 507
508 GATE(0, "aclk_vop", "aclk_vop_pre", 0, RK2928_CLKGATE_CON(13), 5, GFLAGS), 508 GATE(ACLK_VOP, "aclk_vop", "aclk_vop_pre", 0, RK2928_CLKGATE_CON(13), 5, GFLAGS),
509 GATE(0, "aclk_vop_noc", "aclk_vop_pre", 0, RK2928_CLKGATE_CON(13), 12, GFLAGS), 509 GATE(0, "aclk_vop_noc", "aclk_vop_pre", 0, RK2928_CLKGATE_CON(13), 12, GFLAGS),
510 510
511 GATE(0, "aclk_hdcp", "aclk_hdcp_pre", 0, RK2928_CLKGATE_CON(14), 10, GFLAGS), 511 GATE(0, "aclk_hdcp", "aclk_hdcp_pre", 0, RK2928_CLKGATE_CON(14), 10, GFLAGS),
@@ -513,13 +513,13 @@ static struct rockchip_clk_branch rk3228_clk_branches[] __initdata = {
513 513
514 GATE(0, "hclk_rga", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(13), 1, GFLAGS), 514 GATE(0, "hclk_rga", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(13), 1, GFLAGS),
515 GATE(0, "hclk_iep", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(13), 3, GFLAGS), 515 GATE(0, "hclk_iep", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(13), 3, GFLAGS),
516 GATE(0, "hclk_vop", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(13), 6, GFLAGS), 516 GATE(HCLK_VOP, "hclk_vop", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(13), 6, GFLAGS),
517 GATE(0, "hclk_vio_ahb_arbi", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(13), 7, GFLAGS), 517 GATE(0, "hclk_vio_ahb_arbi", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(13), 7, GFLAGS),
518 GATE(0, "hclk_vio_noc", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(13), 8, GFLAGS), 518 GATE(0, "hclk_vio_noc", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(13), 8, GFLAGS),
519 GATE(0, "hclk_vop_noc", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(13), 13, GFLAGS), 519 GATE(0, "hclk_vop_noc", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(13), 13, GFLAGS),
520 GATE(0, "hclk_vio_h2p", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(14), 7, GFLAGS), 520 GATE(0, "hclk_vio_h2p", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(14), 7, GFLAGS),
521 GATE(0, "hclk_hdcp_mmu", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(14), 12, GFLAGS), 521 GATE(0, "hclk_hdcp_mmu", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(14), 12, GFLAGS),
522 GATE(0, "pclk_hdmi_ctrl", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(14), 6, GFLAGS), 522 GATE(PCLK_HDMI_CTRL, "pclk_hdmi_ctrl", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(14), 6, GFLAGS),
523 GATE(0, "pclk_vio_h2p", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(14), 8, GFLAGS), 523 GATE(0, "pclk_vio_h2p", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(14), 8, GFLAGS),
524 GATE(0, "pclk_hdcp", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(14), 11, GFLAGS), 524 GATE(0, "pclk_hdcp", "hclk_vio_pre", 0, RK2928_CLKGATE_CON(14), 11, GFLAGS),
525 525
@@ -584,7 +584,7 @@ static struct rockchip_clk_branch rk3228_clk_branches[] __initdata = {
584 GATE(PCLK_UART0, "pclk_uart0", "pclk_cpu", 0, RK2928_CLKGATE_CON(9), 12, GFLAGS), 584 GATE(PCLK_UART0, "pclk_uart0", "pclk_cpu", 0, RK2928_CLKGATE_CON(9), 12, GFLAGS),
585 GATE(PCLK_UART1, "pclk_uart1", "pclk_cpu", 0, RK2928_CLKGATE_CON(9), 13, GFLAGS), 585 GATE(PCLK_UART1, "pclk_uart1", "pclk_cpu", 0, RK2928_CLKGATE_CON(9), 13, GFLAGS),
586 GATE(PCLK_UART2, "pclk_uart2", "pclk_cpu", 0, RK2928_CLKGATE_CON(9), 14, GFLAGS), 586 GATE(PCLK_UART2, "pclk_uart2", "pclk_cpu", 0, RK2928_CLKGATE_CON(9), 14, GFLAGS),
587 GATE(0, "pclk_tsadc", "pclk_cpu", 0, RK2928_CLKGATE_CON(9), 15, GFLAGS), 587 GATE(PCLK_TSADC, "pclk_tsadc", "pclk_cpu", 0, RK2928_CLKGATE_CON(9), 15, GFLAGS),
588 GATE(PCLK_GRF, "pclk_grf", "pclk_cpu", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(10), 0, GFLAGS), 588 GATE(PCLK_GRF, "pclk_grf", "pclk_cpu", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(10), 0, GFLAGS),
589 GATE(0, "pclk_cru", "pclk_cpu", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(10), 1, GFLAGS), 589 GATE(0, "pclk_cru", "pclk_cpu", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(10), 1, GFLAGS),
590 GATE(0, "pclk_sgrf", "pclk_cpu", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(10), 2, GFLAGS), 590 GATE(0, "pclk_sgrf", "pclk_cpu", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(10), 2, GFLAGS),
@@ -592,7 +592,7 @@ static struct rockchip_clk_branch rk3228_clk_branches[] __initdata = {
592 592
593 GATE(0, "pclk_ddrphy", "pclk_phy_pre", 0, RK2928_CLKGATE_CON(10), 3, GFLAGS), 593 GATE(0, "pclk_ddrphy", "pclk_phy_pre", 0, RK2928_CLKGATE_CON(10), 3, GFLAGS),
594 GATE(0, "pclk_acodecphy", "pclk_phy_pre", 0, RK2928_CLKGATE_CON(10), 5, GFLAGS), 594 GATE(0, "pclk_acodecphy", "pclk_phy_pre", 0, RK2928_CLKGATE_CON(10), 5, GFLAGS),
595 GATE(0, "pclk_hdmiphy", "pclk_phy_pre", 0, RK2928_CLKGATE_CON(10), 7, GFLAGS), 595 GATE(PCLK_HDMI_PHY, "pclk_hdmiphy", "pclk_phy_pre", 0, RK2928_CLKGATE_CON(10), 7, GFLAGS),
596 GATE(0, "pclk_vdacphy", "pclk_phy_pre", 0, RK2928_CLKGATE_CON(10), 8, GFLAGS), 596 GATE(0, "pclk_vdacphy", "pclk_phy_pre", 0, RK2928_CLKGATE_CON(10), 8, GFLAGS),
597 GATE(0, "pclk_phy_noc", "pclk_phy_pre", 0, RK2928_CLKGATE_CON(10), 9, GFLAGS), 597 GATE(0, "pclk_phy_noc", "pclk_phy_pre", 0, RK2928_CLKGATE_CON(10), 9, GFLAGS),
598 598
diff --git a/drivers/clk/rockchip/clk-rk3368.c b/drivers/clk/rockchip/clk-rk3368.c
index c2b0421f2076..a2bb12200465 100644
--- a/drivers/clk/rockchip/clk-rk3368.c
+++ b/drivers/clk/rockchip/clk-rk3368.c
@@ -243,6 +243,34 @@ static struct rockchip_cpuclk_rate_table rk3368_cpuclkl_rates[] __initdata = {
243 RK3368_CPUCLKL_RATE( 312000000, 1, 1, 1), 243 RK3368_CPUCLKL_RATE( 312000000, 1, 1, 1),
244}; 244};
245 245
246static struct rockchip_clk_branch rk3368_i2s_8ch_fracmux __initdata =
247 MUX(0, "i2s_8ch_pre", mux_i2s_8ch_pre_p, CLK_SET_RATE_PARENT,
248 RK3368_CLKSEL_CON(27), 8, 2, MFLAGS);
249
250static struct rockchip_clk_branch rk3368_spdif_8ch_fracmux __initdata =
251 MUX(0, "spdif_8ch_pre", mux_spdif_8ch_p, CLK_SET_RATE_PARENT,
252 RK3368_CLKSEL_CON(31), 8, 2, MFLAGS);
253
254static struct rockchip_clk_branch rk3368_i2s_2ch_fracmux __initdata =
255 MUX(0, "i2s_2ch_pre", mux_i2s_2ch_p, CLK_SET_RATE_PARENT,
256 RK3368_CLKSEL_CON(53), 8, 2, MFLAGS);
257
258static struct rockchip_clk_branch rk3368_uart0_fracmux __initdata =
259 MUX(SCLK_UART0, "sclk_uart0", mux_uart0_p, CLK_SET_RATE_PARENT,
260 RK3368_CLKSEL_CON(33), 8, 2, MFLAGS);
261
262static struct rockchip_clk_branch rk3368_uart1_fracmux __initdata =
263 MUX(SCLK_UART1, "sclk_uart1", mux_uart1_p, CLK_SET_RATE_PARENT,
264 RK3368_CLKSEL_CON(35), 8, 2, MFLAGS);
265
266static struct rockchip_clk_branch rk3368_uart3_fracmux __initdata =
267 MUX(SCLK_UART3, "sclk_uart3", mux_uart3_p, CLK_SET_RATE_PARENT,
268 RK3368_CLKSEL_CON(39), 8, 2, MFLAGS);
269
270static struct rockchip_clk_branch rk3368_uart4_fracmux __initdata =
271 MUX(SCLK_UART4, "sclk_uart4", mux_uart4_p, CLK_SET_RATE_PARENT,
272 RK3368_CLKSEL_CON(41), 8, 2, MFLAGS);
273
246static struct rockchip_clk_branch rk3368_clk_branches[] __initdata = { 274static struct rockchip_clk_branch rk3368_clk_branches[] __initdata = {
247 /* 275 /*
248 * Clock-Architecture Diagram 2 276 * Clock-Architecture Diagram 2
@@ -339,11 +367,10 @@ static struct rockchip_clk_branch rk3368_clk_branches[] __initdata = {
339 COMPOSITE(0, "i2s_8ch_src", mux_pll_src_cpll_gpll_p, 0, 367 COMPOSITE(0, "i2s_8ch_src", mux_pll_src_cpll_gpll_p, 0,
340 RK3368_CLKSEL_CON(27), 12, 1, MFLAGS, 0, 7, DFLAGS, 368 RK3368_CLKSEL_CON(27), 12, 1, MFLAGS, 0, 7, DFLAGS,
341 RK3368_CLKGATE_CON(6), 1, GFLAGS), 369 RK3368_CLKGATE_CON(6), 1, GFLAGS),
342 COMPOSITE_FRAC(0, "i2s_8ch_frac", "i2s_8ch_src", CLK_SET_RATE_PARENT, 370 COMPOSITE_FRACMUX(0, "i2s_8ch_frac", "i2s_8ch_src", CLK_SET_RATE_PARENT,
343 RK3368_CLKSEL_CON(28), 0, 371 RK3368_CLKSEL_CON(28), 0,
344 RK3368_CLKGATE_CON(6), 2, GFLAGS), 372 RK3368_CLKGATE_CON(6), 2, GFLAGS,
345 MUX(0, "i2s_8ch_pre", mux_i2s_8ch_pre_p, CLK_SET_RATE_PARENT, 373 &rk3368_i2s_8ch_fracmux),
346 RK3368_CLKSEL_CON(27), 8, 2, MFLAGS),
347 COMPOSITE_NODIV(SCLK_I2S_8CH_OUT, "i2s_8ch_clkout", mux_i2s_8ch_clkout_p, 0, 374 COMPOSITE_NODIV(SCLK_I2S_8CH_OUT, "i2s_8ch_clkout", mux_i2s_8ch_clkout_p, 0,
348 RK3368_CLKSEL_CON(27), 15, 1, MFLAGS, 375 RK3368_CLKSEL_CON(27), 15, 1, MFLAGS,
349 RK3368_CLKGATE_CON(6), 0, GFLAGS), 376 RK3368_CLKGATE_CON(6), 0, GFLAGS),
@@ -352,21 +379,21 @@ static struct rockchip_clk_branch rk3368_clk_branches[] __initdata = {
352 COMPOSITE(0, "spdif_8ch_src", mux_pll_src_cpll_gpll_p, 0, 379 COMPOSITE(0, "spdif_8ch_src", mux_pll_src_cpll_gpll_p, 0,
353 RK3368_CLKSEL_CON(31), 12, 1, MFLAGS, 0, 7, DFLAGS, 380 RK3368_CLKSEL_CON(31), 12, 1, MFLAGS, 0, 7, DFLAGS,
354 RK3368_CLKGATE_CON(6), 4, GFLAGS), 381 RK3368_CLKGATE_CON(6), 4, GFLAGS),
355 COMPOSITE_FRAC(0, "spdif_8ch_frac", "spdif_8ch_src", CLK_SET_RATE_PARENT, 382 COMPOSITE_FRACMUX(0, "spdif_8ch_frac", "spdif_8ch_src", CLK_SET_RATE_PARENT,
356 RK3368_CLKSEL_CON(32), 0, 383 RK3368_CLKSEL_CON(32), 0,
357 RK3368_CLKGATE_CON(6), 5, GFLAGS), 384 RK3368_CLKGATE_CON(6), 5, GFLAGS,
358 COMPOSITE_NODIV(SCLK_SPDIF_8CH, "sclk_spdif_8ch", mux_spdif_8ch_p, CLK_SET_RATE_PARENT, 385 &rk3368_spdif_8ch_fracmux),
359 RK3368_CLKSEL_CON(31), 8, 2, MFLAGS, 386 GATE(SCLK_SPDIF_8CH, "sclk_spdif_8ch", "spdif_8ch_pre", CLK_SET_RATE_PARENT,
360 RK3368_CLKGATE_CON(6), 6, GFLAGS), 387 RK3368_CLKGATE_CON(6), 6, GFLAGS),
361 COMPOSITE(0, "i2s_2ch_src", mux_pll_src_cpll_gpll_p, 0, 388 COMPOSITE(0, "i2s_2ch_src", mux_pll_src_cpll_gpll_p, 0,
362 RK3368_CLKSEL_CON(53), 12, 1, MFLAGS, 0, 7, DFLAGS, 389 RK3368_CLKSEL_CON(53), 12, 1, MFLAGS, 0, 7, DFLAGS,
363 RK3368_CLKGATE_CON(5), 13, GFLAGS), 390 RK3368_CLKGATE_CON(5), 13, GFLAGS),
364 COMPOSITE_FRAC(0, "i2s_2ch_frac", "i2s_2ch_src", CLK_SET_RATE_PARENT, 391 COMPOSITE_FRACMUX(0, "i2s_2ch_frac", "i2s_2ch_src", CLK_SET_RATE_PARENT,
365 RK3368_CLKSEL_CON(54), 0, 392 RK3368_CLKSEL_CON(54), 0,
366 RK3368_CLKGATE_CON(5), 14, GFLAGS), 393 RK3368_CLKGATE_CON(5), 14, GFLAGS,
367 COMPOSITE_NODIV(SCLK_I2S_2CH, "sclk_i2s_2ch", mux_i2s_2ch_p, CLK_SET_RATE_PARENT, 394 &rk3368_i2s_2ch_fracmux),
368 RK3368_CLKSEL_CON(53), 8, 2, MFLAGS, 395 GATE(SCLK_I2S_2CH, "sclk_i2s_2ch", "i2s_2ch_pre", CLK_SET_RATE_PARENT,
369 RK3368_CLKGATE_CON(5), 15, GFLAGS), 396 RK3368_CLKGATE_CON(5), 15, GFLAGS),
370 397
371 COMPOSITE(0, "sclk_tsp", mux_pll_src_cpll_gpll_npll_p, 0, 398 COMPOSITE(0, "sclk_tsp", mux_pll_src_cpll_gpll_npll_p, 0,
372 RK3368_CLKSEL_CON(46), 6, 2, MFLAGS, 0, 5, DFLAGS, 399 RK3368_CLKSEL_CON(46), 6, 2, MFLAGS, 0, 5, DFLAGS,
@@ -562,38 +589,34 @@ static struct rockchip_clk_branch rk3368_clk_branches[] __initdata = {
562 COMPOSITE(0, "uart0_src", mux_pll_src_cpll_gpll_usb_usb_p, 0, 589 COMPOSITE(0, "uart0_src", mux_pll_src_cpll_gpll_usb_usb_p, 0,
563 RK3368_CLKSEL_CON(33), 12, 2, MFLAGS, 0, 7, DFLAGS, 590 RK3368_CLKSEL_CON(33), 12, 2, MFLAGS, 0, 7, DFLAGS,
564 RK3368_CLKGATE_CON(2), 0, GFLAGS), 591 RK3368_CLKGATE_CON(2), 0, GFLAGS),
565 COMPOSITE_FRAC(0, "uart0_frac", "uart0_src", CLK_SET_RATE_PARENT, 592 COMPOSITE_FRACMUX(0, "uart0_frac", "uart0_src", CLK_SET_RATE_PARENT,
566 RK3368_CLKSEL_CON(34), 0, 593 RK3368_CLKSEL_CON(34), 0,
567 RK3368_CLKGATE_CON(2), 1, GFLAGS), 594 RK3368_CLKGATE_CON(2), 1, GFLAGS,
568 MUX(SCLK_UART0, "sclk_uart0", mux_uart0_p, CLK_SET_RATE_PARENT, 595 &rk3368_uart0_fracmux),
569 RK3368_CLKSEL_CON(33), 8, 2, MFLAGS),
570 596
571 COMPOSITE_NOMUX(0, "uart1_src", "uart_src", 0, 597 COMPOSITE_NOMUX(0, "uart1_src", "uart_src", 0,
572 RK3368_CLKSEL_CON(35), 0, 7, DFLAGS, 598 RK3368_CLKSEL_CON(35), 0, 7, DFLAGS,
573 RK3368_CLKGATE_CON(2), 2, GFLAGS), 599 RK3368_CLKGATE_CON(2), 2, GFLAGS),
574 COMPOSITE_FRAC(0, "uart1_frac", "uart1_src", CLK_SET_RATE_PARENT, 600 COMPOSITE_FRACMUX(0, "uart1_frac", "uart1_src", CLK_SET_RATE_PARENT,
575 RK3368_CLKSEL_CON(36), 0, 601 RK3368_CLKSEL_CON(36), 0,
576 RK3368_CLKGATE_CON(2), 3, GFLAGS), 602 RK3368_CLKGATE_CON(2), 3, GFLAGS,
577 MUX(SCLK_UART1, "sclk_uart1", mux_uart1_p, CLK_SET_RATE_PARENT, 603 &rk3368_uart1_fracmux),
578 RK3368_CLKSEL_CON(35), 8, 2, MFLAGS),
579 604
580 COMPOSITE_NOMUX(0, "uart3_src", "uart_src", 0, 605 COMPOSITE_NOMUX(0, "uart3_src", "uart_src", 0,
581 RK3368_CLKSEL_CON(39), 0, 7, DFLAGS, 606 RK3368_CLKSEL_CON(39), 0, 7, DFLAGS,
582 RK3368_CLKGATE_CON(2), 6, GFLAGS), 607 RK3368_CLKGATE_CON(2), 6, GFLAGS),
583 COMPOSITE_FRAC(0, "uart3_frac", "uart3_src", CLK_SET_RATE_PARENT, 608 COMPOSITE_FRACMUX(0, "uart3_frac", "uart3_src", CLK_SET_RATE_PARENT,
584 RK3368_CLKSEL_CON(40), 0, 609 RK3368_CLKSEL_CON(40), 0,
585 RK3368_CLKGATE_CON(2), 7, GFLAGS), 610 RK3368_CLKGATE_CON(2), 7, GFLAGS,
586 MUX(SCLK_UART3, "sclk_uart3", mux_uart3_p, CLK_SET_RATE_PARENT, 611 &rk3368_uart3_fracmux),
587 RK3368_CLKSEL_CON(39), 8, 2, MFLAGS),
588 612
589 COMPOSITE_NOMUX(0, "uart4_src", "uart_src", 0, 613 COMPOSITE_NOMUX(0, "uart4_src", "uart_src", 0,
590 RK3368_CLKSEL_CON(41), 0, 7, DFLAGS, 614 RK3368_CLKSEL_CON(41), 0, 7, DFLAGS,
591 RK3368_CLKGATE_CON(2), 8, GFLAGS), 615 RK3368_CLKGATE_CON(2), 8, GFLAGS),
592 COMPOSITE_FRAC(0, "uart4_frac", "uart4_src", CLK_SET_RATE_PARENT, 616 COMPOSITE_FRACMUX(0, "uart4_frac", "uart4_src", CLK_SET_RATE_PARENT,
593 RK3368_CLKSEL_CON(42), 0, 617 RK3368_CLKSEL_CON(42), 0,
594 RK3368_CLKGATE_CON(2), 9, GFLAGS), 618 RK3368_CLKGATE_CON(2), 9, GFLAGS,
595 MUX(SCLK_UART4, "sclk_uart4", mux_uart4_p, CLK_SET_RATE_PARENT, 619 &rk3368_uart4_fracmux),
596 RK3368_CLKSEL_CON(41), 8, 2, MFLAGS),
597 620
598 COMPOSITE(0, "mac_pll_src", mux_pll_src_npll_cpll_gpll_p, 0, 621 COMPOSITE(0, "mac_pll_src", mux_pll_src_npll_cpll_gpll_p, 0,
599 RK3368_CLKSEL_CON(43), 6, 2, MFLAGS, 0, 5, DFLAGS, 622 RK3368_CLKSEL_CON(43), 6, 2, MFLAGS, 0, 5, DFLAGS,
diff --git a/include/dt-bindings/clock/rk3228-cru.h b/include/dt-bindings/clock/rk3228-cru.h
index a78dd891e24a..5d43ed9b05ad 100644
--- a/include/dt-bindings/clock/rk3228-cru.h
+++ b/include/dt-bindings/clock/rk3228-cru.h
@@ -29,6 +29,7 @@
29#define SCLK_SDMMC 68 29#define SCLK_SDMMC 68
30#define SCLK_SDIO 69 30#define SCLK_SDIO 69
31#define SCLK_EMMC 71 31#define SCLK_EMMC 71
32#define SCLK_TSADC 72
32#define SCLK_UART0 77 33#define SCLK_UART0 77
33#define SCLK_UART1 78 34#define SCLK_UART1 78
34#define SCLK_UART2 79 35#define SCLK_UART2 79
@@ -49,10 +50,17 @@
49#define SCLK_SDMMC_SAMPLE 118 50#define SCLK_SDMMC_SAMPLE 118
50#define SCLK_SDIO_SAMPLE 119 51#define SCLK_SDIO_SAMPLE 119
51#define SCLK_EMMC_SAMPLE 121 52#define SCLK_EMMC_SAMPLE 121
53#define SCLK_VOP 122
54#define SCLK_HDMI_HDCP 123
55
56/* dclk gates */
57#define DCLK_VOP 190
58#define DCLK_HDMI_PHY 191
52 59
53/* aclk gates */ 60/* aclk gates */
54#define ACLK_DMAC 194 61#define ACLK_DMAC 194
55#define ACLK_PERI 210 62#define ACLK_PERI 210
63#define ACLK_VOP 211
56 64
57/* pclk gates */ 65/* pclk gates */
58#define PCLK_GPIO0 320 66#define PCLK_GPIO0 320
@@ -68,11 +76,15 @@
68#define PCLK_UART0 341 76#define PCLK_UART0 341
69#define PCLK_UART1 342 77#define PCLK_UART1 342
70#define PCLK_UART2 343 78#define PCLK_UART2 343
79#define PCLK_TSADC 344
71#define PCLK_PWM 350 80#define PCLK_PWM 350
72#define PCLK_TIMER 353 81#define PCLK_TIMER 353
73#define PCLK_PERI 363 82#define PCLK_PERI 363
83#define PCLK_HDMI_CTRL 364
84#define PCLK_HDMI_PHY 365
74 85
75/* hclk gates */ 86/* hclk gates */
87#define HCLK_VOP 452
76#define HCLK_NANDC 453 88#define HCLK_NANDC 453
77#define HCLK_SDMMC 456 89#define HCLK_SDMMC 456
78#define HCLK_SDIO 457 90#define HCLK_SDIO 457