diff options
author | Stephen Boyd <sboyd@codeaurora.org> | 2016-03-04 12:36:29 -0500 |
---|---|---|
committer | Stephen Boyd <sboyd@codeaurora.org> | 2016-03-04 12:36:29 -0500 |
commit | 37655fae0c579315624189a7708d0b688d473876 (patch) | |
tree | b171c2ea6ea1434893cbd0c4de5608486d9b1cc8 | |
parent | 8626556f259331aac23c0e274aed24420f0e5403 (diff) | |
parent | 7af8a26ce7055dd74853ea7c2b9752961e3491da (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.c | 8 | ||||
-rw-r--r-- | drivers/clk/rockchip/clk-inverter.c | 8 | ||||
-rw-r--r-- | drivers/clk/rockchip/clk-mmc-phase.c | 8 | ||||
-rw-r--r-- | drivers/clk/rockchip/clk-pll.c | 5 | ||||
-rw-r--r-- | drivers/clk/rockchip/clk-rk3228.c | 18 | ||||
-rw-r--r-- | drivers/clk/rockchip/clk-rk3368.c | 97 | ||||
-rw-r--r-- | include/dt-bindings/clock/rk3228-cru.h | 12 |
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); |
327 | unregister_notifier: | 327 | unregister_notifier: |
328 | clk_notifier_unregister(clk, &cpuclk->clk_nb); | 328 | clk_notifier_unregister(clk, &cpuclk->clk_nb); |
329 | free_alt_parent: | ||
330 | clk_disable_unprepare(cpuclk->alt_parent); | ||
329 | free_cpuclk: | 331 | free_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 | |||
113 | err_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 | |||
179 | err_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 | ||
246 | static 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 | |||
250 | static 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 | |||
254 | static 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 | |||
258 | static 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 | |||
262 | static 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 | |||
266 | static 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 | |||
270 | static 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 | |||
246 | static struct rockchip_clk_branch rk3368_clk_branches[] __initdata = { | 274 | static 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 |