.. | .. |
---|
5 | 5 | */ |
---|
6 | 6 | |
---|
7 | 7 | #include <linux/clk-provider.h> |
---|
| 8 | +#include <linux/module.h> |
---|
8 | 9 | #include <linux/of.h> |
---|
9 | 10 | #include <linux/of_address.h> |
---|
| 11 | +#include <linux/of_device.h> |
---|
10 | 12 | #include <linux/syscore_ops.h> |
---|
11 | 13 | #include <dt-bindings/clock/rv1126-cru.h> |
---|
12 | 14 | #include "clk.h" |
---|
.. | .. |
---|
30 | 32 | static struct rockchip_pll_rate_table rv1126_pll_rates[] = { |
---|
31 | 33 | /* _mhz, _refdiv, _fbdiv, _postdiv1, _postdiv2, _dsmpd, _frac */ |
---|
32 | 34 | RK3036_PLL_RATE(1608000000, 1, 67, 1, 1, 1, 0), |
---|
| 35 | + RK3036_PLL_RATE(1600000000, 3, 200, 1, 1, 1, 0), |
---|
| 36 | + RK3036_PLL_RATE(1584000000, 1, 132, 2, 1, 1, 0), |
---|
| 37 | + RK3036_PLL_RATE(1560000000, 1, 130, 2, 1, 1, 0), |
---|
| 38 | + RK3036_PLL_RATE(1536000000, 1, 128, 2, 1, 1, 0), |
---|
33 | 39 | RK3036_PLL_RATE(1512000000, 1, 126, 2, 1, 1, 0), |
---|
| 40 | + RK3036_PLL_RATE(1488000000, 1, 124, 2, 1, 1, 0), |
---|
| 41 | + RK3036_PLL_RATE(1464000000, 1, 122, 2, 1, 1, 0), |
---|
| 42 | + RK3036_PLL_RATE(1440000000, 1, 120, 2, 1, 1, 0), |
---|
34 | 43 | RK3036_PLL_RATE(1416000000, 1, 118, 2, 1, 1, 0), |
---|
| 44 | + RK3036_PLL_RATE(1400000000, 3, 350, 2, 1, 1, 0), |
---|
| 45 | + RK3036_PLL_RATE(1392000000, 1, 116, 2, 1, 1, 0), |
---|
| 46 | + RK3036_PLL_RATE(1368000000, 1, 114, 2, 1, 1, 0), |
---|
| 47 | + RK3036_PLL_RATE(1344000000, 1, 112, 2, 1, 1, 0), |
---|
| 48 | + RK3036_PLL_RATE(1320000000, 1, 110, 2, 1, 1, 0), |
---|
35 | 49 | RK3036_PLL_RATE(1296000000, 1, 108, 2, 1, 1, 0), |
---|
| 50 | + RK3036_PLL_RATE(1272000000, 1, 106, 2, 1, 1, 0), |
---|
| 51 | + RK3036_PLL_RATE(1248000000, 1, 104, 2, 1, 1, 0), |
---|
36 | 52 | RK3036_PLL_RATE(1200000000, 1, 100, 2, 1, 1, 0), |
---|
37 | 53 | RK3036_PLL_RATE(1188000000, 1, 99, 2, 1, 1, 0), |
---|
| 54 | + RK3036_PLL_RATE(1104000000, 1, 92, 2, 1, 1, 0), |
---|
| 55 | + RK3036_PLL_RATE(1100000000, 3, 275, 2, 1, 1, 0), |
---|
38 | 56 | RK3036_PLL_RATE(1008000000, 1, 84, 2, 1, 1, 0), |
---|
39 | 57 | RK3036_PLL_RATE(1000000000, 3, 250, 2, 1, 1, 0), |
---|
| 58 | + RK3036_PLL_RATE(984000000, 1, 82, 2, 1, 1, 0), |
---|
| 59 | + RK3036_PLL_RATE(960000000, 1, 80, 2, 1, 1, 0), |
---|
| 60 | + RK3036_PLL_RATE(936000000, 1, 78, 2, 1, 1, 0), |
---|
| 61 | + RK3036_PLL_RATE(912000000, 1, 76, 2, 1, 1, 0), |
---|
| 62 | + RK3036_PLL_RATE(900000000, 1, 75, 2, 1, 1, 0), |
---|
| 63 | + RK3036_PLL_RATE(888000000, 1, 74, 2, 1, 1, 0), |
---|
| 64 | + RK3036_PLL_RATE(864000000, 1, 72, 2, 1, 1, 0), |
---|
| 65 | + RK3036_PLL_RATE(840000000, 1, 70, 2, 1, 1, 0), |
---|
40 | 66 | RK3036_PLL_RATE(816000000, 1, 68, 2, 1, 1, 0), |
---|
41 | 67 | RK3036_PLL_RATE(800000000, 3, 200, 2, 1, 1, 0), |
---|
| 68 | + RK3036_PLL_RATE(700000000, 3, 350, 4, 1, 1, 0), |
---|
42 | 69 | RK3036_PLL_RATE(696000000, 1, 116, 4, 1, 1, 0), |
---|
| 70 | + RK3036_PLL_RATE(624000000, 1, 104, 4, 1, 1, 0), |
---|
43 | 71 | #ifdef CONFIG_ROCKCHIP_LOW_PERFORMANCE |
---|
44 | 72 | RK3036_PLL_RATE(600000000, 1, 50, 2, 1, 1, 0), |
---|
45 | 73 | #else |
---|
46 | 74 | RK3036_PLL_RATE(600000000, 1, 100, 4, 1, 1, 0), |
---|
47 | 75 | #endif |
---|
48 | 76 | RK3036_PLL_RATE(594000000, 1, 99, 4, 1, 1, 0), |
---|
| 77 | + RK3036_PLL_RATE(504000000, 1, 84, 4, 1, 1, 0), |
---|
49 | 78 | RK3036_PLL_RATE(500000000, 1, 125, 6, 1, 1, 0), |
---|
50 | 79 | RK3036_PLL_RATE(496742400, 1, 124, 6, 1, 0, 3113851), |
---|
51 | 80 | RK3036_PLL_RATE(491520000, 1, 40, 2, 1, 0, 16106127), |
---|
52 | 81 | RK3036_PLL_RATE(408000000, 1, 68, 2, 2, 1, 0), |
---|
| 82 | + RK3036_PLL_RATE(312000000, 1, 78, 6, 1, 1, 0), |
---|
| 83 | + RK3036_PLL_RATE(216000000, 1, 72, 4, 2, 1, 0), |
---|
| 84 | + RK3036_PLL_RATE(96000000, 1, 96, 6, 4, 1, 0), |
---|
53 | 85 | { /* sentinel */ }, |
---|
54 | 86 | }; |
---|
55 | 87 | |
---|
.. | .. |
---|
77 | 109 | |
---|
78 | 110 | static struct rockchip_cpuclk_rate_table rv1126_cpuclk_rates[] __initdata = { |
---|
79 | 111 | RV1126_CPUCLK_RATE(1608000000, 1, 7), |
---|
| 112 | + RV1126_CPUCLK_RATE(1584000000, 1, 7), |
---|
| 113 | + RV1126_CPUCLK_RATE(1560000000, 1, 7), |
---|
| 114 | + RV1126_CPUCLK_RATE(1536000000, 1, 7), |
---|
80 | 115 | RV1126_CPUCLK_RATE(1512000000, 1, 7), |
---|
| 116 | + RV1126_CPUCLK_RATE(1488000000, 1, 5), |
---|
| 117 | + RV1126_CPUCLK_RATE(1464000000, 1, 5), |
---|
| 118 | + RV1126_CPUCLK_RATE(1440000000, 1, 5), |
---|
81 | 119 | RV1126_CPUCLK_RATE(1416000000, 1, 5), |
---|
| 120 | + RV1126_CPUCLK_RATE(1392000000, 1, 5), |
---|
| 121 | + RV1126_CPUCLK_RATE(1368000000, 1, 5), |
---|
| 122 | + RV1126_CPUCLK_RATE(1344000000, 1, 5), |
---|
| 123 | + RV1126_CPUCLK_RATE(1320000000, 1, 5), |
---|
| 124 | + RV1126_CPUCLK_RATE(1296000000, 1, 5), |
---|
| 125 | + RV1126_CPUCLK_RATE(1272000000, 1, 5), |
---|
| 126 | + RV1126_CPUCLK_RATE(1248000000, 1, 5), |
---|
| 127 | + RV1126_CPUCLK_RATE(1224000000, 1, 5), |
---|
82 | 128 | RV1126_CPUCLK_RATE(1200000000, 1, 5), |
---|
| 129 | + RV1126_CPUCLK_RATE(1104000000, 1, 5), |
---|
83 | 130 | RV1126_CPUCLK_RATE(1008000000, 1, 5), |
---|
| 131 | + RV1126_CPUCLK_RATE(912000000, 1, 5), |
---|
84 | 132 | RV1126_CPUCLK_RATE(816000000, 1, 3), |
---|
| 133 | + RV1126_CPUCLK_RATE(696000000, 1, 3), |
---|
85 | 134 | RV1126_CPUCLK_RATE(600000000, 1, 3), |
---|
86 | 135 | RV1126_CPUCLK_RATE(408000000, 1, 1), |
---|
| 136 | + RV1126_CPUCLK_RATE(312000000, 1, 1), |
---|
| 137 | + RV1126_CPUCLK_RATE(216000000, 1, 1), |
---|
| 138 | + RV1126_CPUCLK_RATE(96000000, 1, 1), |
---|
87 | 139 | }; |
---|
88 | 140 | |
---|
89 | 141 | static const struct rockchip_cpuclk_reg_data rv1126_cpuclk_data = { |
---|
.. | .. |
---|
146 | 198 | |
---|
147 | 199 | #ifndef CONFIG_ROCKCHIP_LOW_PERFORMANCE |
---|
148 | 200 | PNAME(mux_gpll_usb480m_cpll_xin24m_p) = { "gpll", "usb480m", "cpll", "xin24m" }; |
---|
149 | | -PNAME(mux_armclk_p) = { "gpll", "cpll", "apll" }; |
---|
150 | 201 | PNAME(mux_gpll_cpll_dpll_p) = { "gpll", "cpll", "dummy_dpll" }; |
---|
151 | 202 | PNAME(mux_gpll_cpll_p) = { "gpll", "cpll" }; |
---|
152 | 203 | PNAME(mux_gpll_cpll_usb480m_xin24m_p) = { "gpll", "cpll", "usb480m", "xin24m" }; |
---|
.. | .. |
---|
158 | 209 | PNAME(mux_gpll_cpll_apll_hpll_p) = { "gpll", "cpll", "dummy_apll", "hpll" }; |
---|
159 | 210 | #else |
---|
160 | 211 | PNAME(mux_gpll_usb480m_cpll_xin24m_p) = { "gpll", "usb480m", "dummy_cpll", "xin24m" }; |
---|
161 | | -PNAME(mux_armclk_p) = { "gpll", "dummy_cpll", "apll" }; |
---|
162 | 212 | PNAME(mux_gpll_cpll_dpll_p) = { "gpll", "dummy_cpll", "dummy_dpll" }; |
---|
163 | 213 | PNAME(mux_gpll_cpll_p) = { "gpll", "dummy_cpll" }; |
---|
164 | 214 | PNAME(mux_gpll_cpll_usb480m_xin24m_p) = { "gpll", "dummy_cpll", "usb480m", "xin24m" }; |
---|
.. | .. |
---|
174 | 224 | |
---|
175 | 225 | static struct rockchip_pll_clock rv1126_pmu_pll_clks[] __initdata = { |
---|
176 | 226 | [gpll] = PLL(pll_rk3328, PLL_GPLL, "gpll", mux_pll_p, |
---|
177 | | - CLK_IGNORE_UNUSED, RV1126_PMU_PLL_CON(0), |
---|
| 227 | + CLK_IS_CRITICAL, RV1126_PMU_PLL_CON(0), |
---|
178 | 228 | RV1126_PMU_MODE, 0, 3, 0, rv1126_pll_rates), |
---|
179 | 229 | }; |
---|
180 | 230 | |
---|
.. | .. |
---|
185 | 235 | [dpll] = PLL(pll_rk3328, PLL_DPLL, "dpll", mux_pll_p, |
---|
186 | 236 | CLK_IGNORE_UNUSED, RV1126_PLL_CON(8), |
---|
187 | 237 | RV1126_MODE_CON, 2, 1, 0, NULL), |
---|
| 238 | +#ifndef CONFIG_ROCKCHIP_LOW_PERFORMANCE |
---|
| 239 | + [cpll] = PLL(pll_rk3328, PLL_CPLL, "cpll", mux_pll_p, |
---|
| 240 | + CLK_IS_CRITICAL, RV1126_PLL_CON(16), |
---|
| 241 | + RV1126_MODE_CON, 4, 2, 0, rv1126_pll_rates), |
---|
| 242 | + [hpll] = PLL(pll_rk3328, PLL_HPLL, "hpll", mux_pll_p, |
---|
| 243 | + CLK_IS_CRITICAL, RV1126_PLL_CON(24), |
---|
| 244 | + RV1126_MODE_CON, 6, 4, 0, rv1126_pll_rates), |
---|
| 245 | +#else |
---|
188 | 246 | [cpll] = PLL(pll_rk3328, PLL_CPLL, "cpll", mux_pll_p, |
---|
189 | 247 | 0, RV1126_PLL_CON(16), |
---|
190 | 248 | RV1126_MODE_CON, 4, 2, 0, rv1126_pll_rates), |
---|
191 | 249 | [hpll] = PLL(pll_rk3328, PLL_HPLL, "hpll", mux_pll_p, |
---|
192 | 250 | 0, RV1126_PLL_CON(24), |
---|
193 | 251 | RV1126_MODE_CON, 6, 4, 0, rv1126_pll_rates), |
---|
| 252 | +#endif |
---|
194 | 253 | }; |
---|
195 | 254 | |
---|
196 | 255 | #define MFLAGS CLK_MUX_HIWORD_MASK |
---|
.. | .. |
---|
257 | 316 | MUX(CLK_MIPICSI_OUT_MUX, "clk_mipicsi_out2io_mux", mux_mipicsi_out2io_p, CLK_SET_RATE_PARENT, |
---|
258 | 317 | RV1126_CLKSEL_CON(73), 10, 2, MFLAGS); |
---|
259 | 318 | |
---|
260 | | -static struct rockchip_clk_branch rv1126_aclk_pdvi_np5 __initdata = |
---|
261 | | - COMPOSITE_HALFDIV_OFFSET(ACLK_PDVI_NP5, "aclk_pdvi_np5", mux_cpll_gpll_hpll_p, 0, |
---|
262 | | - RV1126_CLKSEL_CON(49), 6, 2, MFLAGS, |
---|
263 | | - RV1126_CLKSEL_CON(76), 0, 5, DFLAGS, |
---|
264 | | - RV1126_CLKGATE_CON(16), 13, GFLAGS); |
---|
265 | | - |
---|
266 | | -static struct rockchip_clk_branch rv1126_clk_isp_np5 __initdata = |
---|
267 | | - COMPOSITE_HALFDIV_OFFSET(CLK_ISP_NP5, "clk_isp_np5", mux_gpll_cpll_hpll_p, 0, |
---|
268 | | - RV1126_CLKSEL_CON(50), 6, 2, MFLAGS, |
---|
269 | | - RV1126_CLKSEL_CON(76), 8, 5, DFLAGS, |
---|
270 | | - RV1126_CLKGATE_CON(16), 14, GFLAGS); |
---|
271 | | - |
---|
272 | | -static struct rockchip_clk_branch rv1126_aclk_pdispp_np5 __initdata = |
---|
273 | | - COMPOSITE_HALFDIV_OFFSET(ACLK_PDISPP_NP5, "aclk_pdispp_np5", mux_cpll_gpll_hpll_p, 0, |
---|
274 | | - RV1126_CLKSEL_CON(68), 6, 2, MFLAGS, |
---|
275 | | - RV1126_CLKSEL_CON(77), 0, 5, DFLAGS, |
---|
276 | | - RV1126_CLKGATE_CON(16), 8, GFLAGS); |
---|
277 | | - |
---|
278 | | -static struct rockchip_clk_branch rv1126_clk_ispp_np5 __initdata = |
---|
279 | | - COMPOSITE_HALFDIV_OFFSET(CLK_ISPP_NP5, "clk_ispp_np5", mux_cpll_gpll_hpll_p, 0, |
---|
280 | | - RV1126_CLKSEL_CON(69), 6, 2, MFLAGS, |
---|
281 | | - RV1126_CLKSEL_CON(77), 8, 5, DFLAGS, |
---|
282 | | - RV1126_CLKGATE_CON(16), 7, GFLAGS); |
---|
283 | | - |
---|
284 | | -static struct rockchip_clk_branch rv1126_aclk_pdnpu_npu5 __initdata = |
---|
285 | | - COMPOSITE_HALFDIV(ACLK_PDNPU_NP5, "aclk_pdnpu_np5", mux_gpll_cpll_apll_hpll_p, 0, |
---|
286 | | - RV1126_CLKSEL_CON(65), 8, 2, MFLAGS, 4, 4, DFLAGS, |
---|
287 | | - RV1126_CLKGATE_CON(22), 1, GFLAGS); |
---|
288 | | - |
---|
289 | | -static struct rockchip_clk_branch rv1126_clk_npu_np5 __initdata = |
---|
290 | | - COMPOSITE_HALFDIV(CLK_NPU_NP5, "clk_npu_np5", mux_gpll_cpll_apll_hpll_p, 0, |
---|
291 | | - RV1126_CLKSEL_CON(67), 8, 2, MFLAGS, 4, 4, DFLAGS, |
---|
292 | | - RV1126_CLKGATE_CON(22), 10, GFLAGS); |
---|
293 | | - |
---|
294 | 319 | static struct rockchip_clk_branch rv1126_clk_pmu_branches[] __initdata = { |
---|
295 | 320 | /* |
---|
296 | 321 | * Clock-Architecture Diagram 2 |
---|
297 | 322 | */ |
---|
298 | 323 | /* PD_PMU */ |
---|
299 | | - COMPOSITE_NOMUX(PCLK_PDPMU, "pclk_pdpmu", "gpll", CLK_IGNORE_UNUSED, |
---|
| 324 | + COMPOSITE_NOMUX(PCLK_PDPMU, "pclk_pdpmu", "gpll", CLK_IS_CRITICAL, |
---|
300 | 325 | RV1126_PMU_CLKSEL_CON(1), 0, 5, DFLAGS, |
---|
301 | 326 | RV1126_PMU_CLKGATE_CON(0), 0, GFLAGS), |
---|
302 | 327 | |
---|
303 | 328 | COMPOSITE_FRACMUX(CLK_OSC0_DIV32K, "clk_osc0_div32k", "xin24m", CLK_IGNORE_UNUSED, |
---|
304 | 329 | RV1126_PMU_CLKSEL_CON(13), 0, |
---|
305 | 330 | RV1126_PMU_CLKGATE_CON(2), 9, GFLAGS, |
---|
306 | | - &rv1126_rtc32k_fracmux, 0), |
---|
| 331 | + &rv1126_rtc32k_fracmux), |
---|
307 | 332 | |
---|
308 | 333 | MUXPMUGRF(CLK_32K_IOE, "clk_32k_ioe", mux_clk_32k_ioe_p, 0, |
---|
309 | 334 | RV1126_PMUGRF_SOC_CON0, 0, 1, MFLAGS), |
---|
.. | .. |
---|
327 | 352 | COMPOSITE_FRACMUX(SCLK_UART1_FRACDIV, "sclk_uart1_fracdiv", "sclk_uart1_div", CLK_SET_RATE_PARENT, |
---|
328 | 353 | RV1126_PMU_CLKSEL_CON(5), 0, |
---|
329 | 354 | RV1126_PMU_CLKGATE_CON(0), 13, GFLAGS, |
---|
330 | | - &rv1126_uart1_fracmux, RV1126_FRAC_MAX_PRATE), |
---|
| 355 | + &rv1126_uart1_fracmux), |
---|
331 | 356 | GATE(SCLK_UART1, "sclk_uart1", "sclk_uart1_mux", 0, |
---|
332 | 357 | RV1126_PMU_CLKGATE_CON(0), 14, GFLAGS), |
---|
333 | 358 | |
---|
.. | .. |
---|
398 | 423 | MUX(CLK_MIPIDSIPHY_REF, "clk_mipidsiphy_ref", mux_mipidsiphy_ref_p, CLK_SET_RATE_PARENT, |
---|
399 | 424 | RV1126_PMU_CLKSEL_CON(7), 15, 1, MFLAGS), |
---|
400 | 425 | |
---|
| 426 | +#ifndef CONFIG_ROCKCHIP_LOW_PERFORMANCE |
---|
| 427 | + GATE(CLK_PMU, "clk_pmu", "xin24m", CLK_IGNORE_UNUSED, |
---|
| 428 | + RV1126_PMU_CLKGATE_CON(0), 15, GFLAGS), |
---|
| 429 | + |
---|
| 430 | + GATE(PCLK_PMUSGRF, "pclk_pmusgrf", "pclk_pdpmu", CLK_IGNORE_UNUSED, |
---|
| 431 | + RV1126_PMU_CLKGATE_CON(0), 4, GFLAGS), |
---|
| 432 | + GATE(PCLK_PMUGRF, "pclk_pmugrf", "pclk_pdpmu", CLK_IGNORE_UNUSED, |
---|
| 433 | + RV1126_PMU_CLKGATE_CON(1), 13, GFLAGS), |
---|
| 434 | + GATE(PCLK_PMUCRU, "pclk_pmucru", "pclk_pdpmu", CLK_IGNORE_UNUSED, |
---|
| 435 | + RV1126_PMU_CLKGATE_CON(2), 4, GFLAGS), |
---|
| 436 | + GATE(PCLK_CHIPVEROTP, "pclk_chipverotp", "pclk_pdpmu", CLK_IGNORE_UNUSED, |
---|
| 437 | + RV1126_PMU_CLKGATE_CON(2), 0, GFLAGS), |
---|
| 438 | + GATE(PCLK_PDPMU_NIU, "pclk_pdpmu_niu", "pclk_pdpmu", CLK_IGNORE_UNUSED, |
---|
| 439 | + RV1126_PMU_CLKGATE_CON(0), 2, GFLAGS), |
---|
| 440 | + |
---|
| 441 | + GATE(PCLK_SCRKEYGEN, "pclk_scrkeygen", "pclk_pdpmu", 0, |
---|
| 442 | + RV1126_PMU_CLKGATE_CON(0), 7, GFLAGS), |
---|
| 443 | +#endif |
---|
401 | 444 | }; |
---|
402 | 445 | |
---|
403 | 446 | static struct rockchip_clk_branch rv1126_clk_branches[] __initdata = { |
---|
.. | .. |
---|
412 | 455 | * Clock-Architecture Diagram 3 |
---|
413 | 456 | */ |
---|
414 | 457 | /* PD_CORE */ |
---|
415 | | - COMPOSITE_NOMUX(0, "pclk_dbg", "armclk", CLK_IGNORE_UNUSED, |
---|
| 458 | + COMPOSITE_NOMUX(0, "pclk_dbg", "armclk", CLK_IS_CRITICAL, |
---|
416 | 459 | RV1126_CLKSEL_CON(1), 0, 3, DFLAGS | CLK_DIVIDER_READ_ONLY, |
---|
417 | 460 | RV1126_CLKGATE_CON(0), 6, GFLAGS), |
---|
418 | 461 | GATE(CLK_CORE_CPUPVTM, "clk_core_cpupvtm", "armclk", 0, |
---|
.. | .. |
---|
429 | 472 | * Clock-Architecture Diagram 4 |
---|
430 | 473 | */ |
---|
431 | 474 | /* PD_BUS */ |
---|
432 | | - COMPOSITE(0, "aclk_pdbus_pre", mux_gpll_cpll_dpll_p, CLK_IGNORE_UNUSED, |
---|
| 475 | + COMPOSITE(0, "aclk_pdbus_pre", mux_gpll_cpll_dpll_p, CLK_IS_CRITICAL, |
---|
433 | 476 | RV1126_CLKSEL_CON(2), 6, 2, MFLAGS, 0, 5, DFLAGS, |
---|
434 | 477 | RV1126_CLKGATE_CON(2), 0, GFLAGS), |
---|
435 | | - GATE(ACLK_PDBUS, "aclk_pdbus", "aclk_pdbus_pre", CLK_IGNORE_UNUSED, |
---|
| 478 | + GATE(ACLK_PDBUS, "aclk_pdbus", "aclk_pdbus_pre", CLK_IS_CRITICAL, |
---|
436 | 479 | RV1126_CLKGATE_CON(2), 11, GFLAGS), |
---|
437 | | - COMPOSITE(0, "hclk_pdbus_pre", mux_hclk_pclk_pdbus_p, CLK_IGNORE_UNUSED, |
---|
| 480 | + COMPOSITE(0, "hclk_pdbus_pre", mux_hclk_pclk_pdbus_p, CLK_IS_CRITICAL, |
---|
438 | 481 | RV1126_CLKSEL_CON(2), 15, 1, MFLAGS, 8, 5, DFLAGS, |
---|
439 | 482 | RV1126_CLKGATE_CON(2), 1, GFLAGS), |
---|
440 | | - GATE(HCLK_PDBUS, "hclk_pdbus", "hclk_pdbus_pre", CLK_IGNORE_UNUSED, |
---|
| 483 | + GATE(HCLK_PDBUS, "hclk_pdbus", "hclk_pdbus_pre", CLK_IS_CRITICAL, |
---|
441 | 484 | RV1126_CLKGATE_CON(2), 12, GFLAGS), |
---|
442 | | - COMPOSITE(0, "pclk_pdbus_pre", mux_hclk_pclk_pdbus_p, CLK_IGNORE_UNUSED, |
---|
| 485 | + COMPOSITE(0, "pclk_pdbus_pre", mux_hclk_pclk_pdbus_p, CLK_IS_CRITICAL, |
---|
443 | 486 | RV1126_CLKSEL_CON(3), 7, 1, MFLAGS, 0, 5, DFLAGS, |
---|
444 | 487 | RV1126_CLKGATE_CON(2), 2, GFLAGS), |
---|
445 | | - GATE(PCLK_PDBUS, "pclk_pdbus", "pclk_pdbus_pre", CLK_IGNORE_UNUSED, |
---|
| 488 | + GATE(PCLK_PDBUS, "pclk_pdbus", "pclk_pdbus_pre", CLK_IS_CRITICAL, |
---|
446 | 489 | RV1126_CLKGATE_CON(2), 13, GFLAGS), |
---|
447 | 490 | /* aclk_dmac is controlled by sgrf_clkgat_con. */ |
---|
448 | 491 | SGRF_GATE(ACLK_DMAC, "aclk_dmac", "hclk_pdbus"), |
---|
.. | .. |
---|
475 | 518 | COMPOSITE_FRACMUX(SCLK_UART0_FRAC, "sclk_uart0_frac", "sclk_uart0_div", CLK_SET_RATE_PARENT, |
---|
476 | 519 | RV1126_CLKSEL_CON(11), 0, |
---|
477 | 520 | RV1126_CLKGATE_CON(5), 2, GFLAGS, |
---|
478 | | - &rv1126_uart0_fracmux, RV1126_FRAC_MAX_PRATE), |
---|
| 521 | + &rv1126_uart0_fracmux), |
---|
479 | 522 | GATE(SCLK_UART0, "sclk_uart0", "sclk_uart0_mux", 0, |
---|
480 | 523 | RV1126_CLKGATE_CON(5), 3, GFLAGS), |
---|
481 | 524 | GATE(PCLK_UART2, "pclk_uart2", "pclk_pdbus", 0, |
---|
.. | .. |
---|
486 | 529 | COMPOSITE_FRACMUX(SCLK_UART2_FRAC, "sclk_uart2_frac", "sclk_uart2_div", CLK_SET_RATE_PARENT, |
---|
487 | 530 | RV1126_CLKSEL_CON(13), 0, |
---|
488 | 531 | RV1126_CLKGATE_CON(5), 6, GFLAGS, |
---|
489 | | - &rv1126_uart2_fracmux, RV1126_FRAC_MAX_PRATE), |
---|
| 532 | + &rv1126_uart2_fracmux), |
---|
490 | 533 | GATE(SCLK_UART2, "sclk_uart2", "sclk_uart2_mux", 0, |
---|
491 | 534 | RV1126_CLKGATE_CON(5), 7, GFLAGS), |
---|
492 | 535 | GATE(PCLK_UART3, "pclk_uart3", "pclk_pdbus", 0, |
---|
.. | .. |
---|
497 | 540 | COMPOSITE_FRACMUX(SCLK_UART3_FRAC, "sclk_uart3_frac", "sclk_uart3_div", CLK_SET_RATE_PARENT, |
---|
498 | 541 | RV1126_CLKSEL_CON(15), 0, |
---|
499 | 542 | RV1126_CLKGATE_CON(5), 10, GFLAGS, |
---|
500 | | - &rv1126_uart3_fracmux, RV1126_FRAC_MAX_PRATE), |
---|
| 543 | + &rv1126_uart3_fracmux), |
---|
501 | 544 | GATE(SCLK_UART3, "sclk_uart3", "sclk_uart3_mux", 0, |
---|
502 | 545 | RV1126_CLKGATE_CON(5), 11, GFLAGS), |
---|
503 | 546 | GATE(PCLK_UART4, "pclk_uart4", "pclk_pdbus", 0, |
---|
.. | .. |
---|
508 | 551 | COMPOSITE_FRACMUX(SCLK_UART4_FRAC, "sclk_uart4_frac", "sclk_uart4_div", CLK_SET_RATE_PARENT, |
---|
509 | 552 | RV1126_CLKSEL_CON(17), 0, |
---|
510 | 553 | RV1126_CLKGATE_CON(5), 14, GFLAGS, |
---|
511 | | - &rv1126_uart4_fracmux, RV1126_FRAC_MAX_PRATE), |
---|
| 554 | + &rv1126_uart4_fracmux), |
---|
512 | 555 | GATE(SCLK_UART4, "sclk_uart4", "sclk_uart4_mux", 0, |
---|
513 | 556 | RV1126_CLKGATE_CON(5), 15, GFLAGS), |
---|
514 | 557 | GATE(PCLK_UART5, "pclk_uart5", "pclk_pdbus", 0, |
---|
.. | .. |
---|
519 | 562 | COMPOSITE_FRACMUX(SCLK_UART5_FRAC, "sclk_uart5_frac", "sclk_uart5_div", CLK_SET_RATE_PARENT, |
---|
520 | 563 | RV1126_CLKSEL_CON(19), 0, |
---|
521 | 564 | RV1126_CLKGATE_CON(6), 2, GFLAGS, |
---|
522 | | - &rv1126_uart5_fracmux, RV1126_FRAC_MAX_PRATE), |
---|
| 565 | + &rv1126_uart5_fracmux), |
---|
523 | 566 | GATE(SCLK_UART5, "sclk_uart5", "sclk_uart5_mux", 0, |
---|
524 | 567 | RV1126_CLKGATE_CON(6), 3, GFLAGS), |
---|
525 | 568 | |
---|
.. | .. |
---|
672 | 715 | COMPOSITE_FRACMUX(MCLK_I2S0_TX_FRACDIV, "mclk_i2s0_tx_fracdiv", "mclk_i2s0_tx_div", CLK_SET_RATE_PARENT, |
---|
673 | 716 | RV1126_CLKSEL_CON(28), 0, |
---|
674 | 717 | RV1126_CLKGATE_CON(9), 6, GFLAGS, |
---|
675 | | - &rv1126_i2s0_tx_fracmux, RV1126_FRAC_MAX_PRATE), |
---|
| 718 | + &rv1126_i2s0_tx_fracmux), |
---|
676 | 719 | GATE(MCLK_I2S0_TX, "mclk_i2s0_tx", "mclk_i2s0_tx_mux", 0, |
---|
677 | 720 | RV1126_CLKGATE_CON(9), 9, GFLAGS), |
---|
678 | 721 | COMPOSITE(MCLK_I2S0_RX_DIV, "mclk_i2s0_rx_div", mux_cpll_gpll_p, 0, |
---|
.. | .. |
---|
681 | 724 | COMPOSITE_FRACMUX(MCLK_I2S0_RX_FRACDIV, "mclk_i2s0_rx_fracdiv", "mclk_i2s0_rx_div", CLK_SET_RATE_PARENT, |
---|
682 | 725 | RV1126_CLKSEL_CON(29), 0, |
---|
683 | 726 | RV1126_CLKGATE_CON(9), 8, GFLAGS, |
---|
684 | | - &rv1126_i2s0_rx_fracmux, RV1126_FRAC_MAX_PRATE), |
---|
| 727 | + &rv1126_i2s0_rx_fracmux), |
---|
685 | 728 | GATE(MCLK_I2S0_RX, "mclk_i2s0_rx", "mclk_i2s0_rx_mux", 0, |
---|
686 | 729 | RV1126_CLKGATE_CON(9), 10, GFLAGS), |
---|
687 | 730 | COMPOSITE_NODIV(MCLK_I2S0_TX_OUT2IO, "mclk_i2s0_tx_out2io", mux_i2s0_tx_out2io_p, CLK_SET_RATE_PARENT, |
---|
.. | .. |
---|
699 | 742 | COMPOSITE_FRACMUX(MCLK_I2S1_FRACDIV, "mclk_i2s1_fracdiv", "mclk_i2s1_div", CLK_SET_RATE_PARENT, |
---|
700 | 743 | RV1126_CLKSEL_CON(32), 0, |
---|
701 | 744 | RV1126_CLKGATE_CON(10), 2, GFLAGS, |
---|
702 | | - &rv1126_i2s1_fracmux, RV1126_FRAC_MAX_PRATE), |
---|
| 745 | + &rv1126_i2s1_fracmux), |
---|
703 | 746 | GATE(MCLK_I2S1, "mclk_i2s1", "mclk_i2s1_mux", 0, |
---|
704 | 747 | RV1126_CLKGATE_CON(10), 3, GFLAGS), |
---|
705 | 748 | COMPOSITE_NODIV(MCLK_I2S1_OUT2IO, "mclk_i2s1_out2io", mux_i2s1_out2io_p, CLK_SET_RATE_PARENT, |
---|
.. | .. |
---|
713 | 756 | COMPOSITE_FRACMUX(MCLK_I2S2_FRACDIV, "mclk_i2s2_fracdiv", "mclk_i2s2_div", CLK_SET_RATE_PARENT, |
---|
714 | 757 | RV1126_CLKSEL_CON(34), 0, |
---|
715 | 758 | RV1126_CLKGATE_CON(10), 7, GFLAGS, |
---|
716 | | - &rv1126_i2s2_fracmux, RV1126_FRAC_MAX_PRATE), |
---|
| 759 | + &rv1126_i2s2_fracmux), |
---|
717 | 760 | GATE(MCLK_I2S2, "mclk_i2s2", "mclk_i2s2_mux", 0, |
---|
718 | 761 | RV1126_CLKGATE_CON(10), 8, GFLAGS), |
---|
719 | 762 | COMPOSITE_NODIV(MCLK_I2S2_OUT2IO, "mclk_i2s2_out2io", mux_i2s2_out2io_p, CLK_SET_RATE_PARENT, |
---|
.. | .. |
---|
734 | 777 | COMPOSITE_FRACMUX(SCLK_AUDPWM_FRACDIV, "sclk_audpwm_fracdiv", "sclk_audpwm_div", CLK_SET_RATE_PARENT, |
---|
735 | 778 | RV1126_CLKSEL_CON(37), 0, |
---|
736 | 779 | RV1126_CLKGATE_CON(10), 14, GFLAGS, |
---|
737 | | - &rv1126_audpwm_fracmux, RV1126_FRAC_MAX_PRATE), |
---|
| 780 | + &rv1126_audpwm_fracmux), |
---|
738 | 781 | GATE(SCLK_AUDPWM, "sclk_audpwm", "mclk_audpwm_mux", 0, |
---|
739 | 782 | RV1126_CLKGATE_CON(10), 15, GFLAGS), |
---|
740 | 783 | |
---|
.. | .. |
---|
770 | 813 | * Clock-Architecture Diagram 8 |
---|
771 | 814 | */ |
---|
772 | 815 | /* PD_VDPU */ |
---|
| 816 | +#if IS_ENABLED(CONFIG_ROCKCHIP_MPP_VDPU2) || IS_ENABLED(CONFIG_ROCKCHIP_MPP_RKVDEC) |
---|
| 817 | + COMPOSITE(ACLK_PDVDEC, "aclk_pdvdec", mux_cpll_hpll_gpll_p, CLK_IS_CRITICAL, |
---|
| 818 | + RV1126_CLKSEL_CON(42), 6, 2, MFLAGS, 0, 5, DFLAGS, |
---|
| 819 | + RV1126_CLKGATE_CON(13), 0, GFLAGS), |
---|
| 820 | + COMPOSITE_NOMUX(HCLK_PDVDEC, "hclk_pdvdec", "aclk_pdvdec", CLK_IS_CRITICAL, |
---|
| 821 | + RV1126_CLKSEL_CON(41), 8, 5, DFLAGS, |
---|
| 822 | + RV1126_CLKGATE_CON(13), 4, GFLAGS), |
---|
| 823 | + GATE(0, "aclk_pdvdec_niu", "aclk_pdvdec", CLK_IS_CRITICAL, |
---|
| 824 | + RV1126_CLKGATE_CON(13), 5, GFLAGS), |
---|
| 825 | + GATE(0, "hclk_pdvdec_niu", "hclk_pdvdec", CLK_IS_CRITICAL, |
---|
| 826 | + RV1126_CLKGATE_CON(13), 6, GFLAGS), |
---|
| 827 | + COMPOSITE(ACLK_PDJPEG, "aclk_pdjpeg", mux_cpll_hpll_gpll_p, CLK_IS_CRITICAL, |
---|
| 828 | + RV1126_CLKSEL_CON(44), 6, 2, MFLAGS, 0, 5, DFLAGS, |
---|
| 829 | + RV1126_CLKGATE_CON(13), 9, GFLAGS), |
---|
| 830 | + COMPOSITE_NOMUX(HCLK_PDJPEG, "hclk_pdjpeg", "aclk_pdjpeg", CLK_IS_CRITICAL, |
---|
| 831 | + RV1126_CLKSEL_CON(44), 8, 5, DFLAGS, |
---|
| 832 | + RV1126_CLKGATE_CON(13), 10, GFLAGS), |
---|
| 833 | + GATE(0, "aclk_pdjpeg_niu", "aclk_pdjpeg", CLK_IS_CRITICAL, |
---|
| 834 | + RV1126_CLKGATE_CON(13), 11, GFLAGS), |
---|
| 835 | + GATE(0, "hclk_pdjpeg_niu", "hclk_pdjpeg", CLK_IS_CRITICAL, |
---|
| 836 | + RV1126_CLKGATE_CON(13), 12, GFLAGS), |
---|
| 837 | +#else |
---|
773 | 838 | COMPOSITE(ACLK_PDVDEC, "aclk_pdvdec", mux_cpll_hpll_gpll_p, 0, |
---|
774 | 839 | RV1126_CLKSEL_CON(42), 6, 2, MFLAGS, 0, 5, DFLAGS, |
---|
775 | 840 | RV1126_CLKGATE_CON(13), 0, GFLAGS), |
---|
776 | 841 | COMPOSITE_NOMUX(HCLK_PDVDEC, "hclk_pdvdec", "aclk_pdvdec", 0, |
---|
777 | 842 | RV1126_CLKSEL_CON(41), 8, 5, DFLAGS, |
---|
778 | 843 | RV1126_CLKGATE_CON(13), 4, GFLAGS), |
---|
| 844 | + GATE(0, "aclk_pdvdec_niu", "aclk_pdvdec", CLK_IGNORE_UNUSED, |
---|
| 845 | + RV1126_CLKGATE_CON(13), 5, GFLAGS), |
---|
| 846 | + GATE(0, "hclk_pdvdec_niu", "hclk_pdvdec", CLK_IGNORE_UNUSED, |
---|
| 847 | + RV1126_CLKGATE_CON(13), 6, GFLAGS), |
---|
779 | 848 | COMPOSITE(ACLK_PDJPEG, "aclk_pdjpeg", mux_cpll_hpll_gpll_p, 0, |
---|
780 | 849 | RV1126_CLKSEL_CON(44), 6, 2, MFLAGS, 0, 5, DFLAGS, |
---|
781 | 850 | RV1126_CLKGATE_CON(13), 9, GFLAGS), |
---|
782 | 851 | COMPOSITE_NOMUX(HCLK_PDJPEG, "hclk_pdjpeg", "aclk_pdjpeg", 0, |
---|
783 | 852 | RV1126_CLKSEL_CON(44), 8, 5, DFLAGS, |
---|
784 | 853 | RV1126_CLKGATE_CON(13), 10, GFLAGS), |
---|
| 854 | + GATE(0, "aclk_pdjpeg_niu", "aclk_pdjpeg", CLK_IGNORE_UNUSED, |
---|
| 855 | + RV1126_CLKGATE_CON(13), 11, GFLAGS), |
---|
| 856 | + GATE(0, "hclk_pdjpeg_niu", "hclk_pdjpeg", CLK_IGNORE_UNUSED, |
---|
| 857 | + RV1126_CLKGATE_CON(13), 12, GFLAGS), |
---|
| 858 | +#endif |
---|
785 | 859 | GATE(ACLK_VDEC, "aclk_vdec", "aclk_pdvdec", 0, |
---|
786 | 860 | RV1126_CLKGATE_CON(13), 7, GFLAGS), |
---|
787 | 861 | GATE(HCLK_VDEC, "hclk_vdec", "hclk_pdvdec", 0, |
---|
.. | .. |
---|
830 | 904 | COMPOSITE_FRACMUX(DCLK_VOP_FRACDIV, "dclk_vop_fracdiv", "dclk_vop_div", CLK_SET_RATE_PARENT, |
---|
831 | 905 | RV1126_CLKSEL_CON(48), 0, |
---|
832 | 906 | RV1126_CLKGATE_CON(14), 12, GFLAGS, |
---|
833 | | - &rv1126_dclk_vop_fracmux, RV1126_FRAC_MAX_PRATE), |
---|
| 907 | + &rv1126_dclk_vop_fracmux), |
---|
834 | 908 | GATE(DCLK_VOP, "dclk_vop", "dclk_vop_mux", 0, |
---|
835 | 909 | RV1126_CLKGATE_CON(14), 13, GFLAGS), |
---|
836 | 910 | GATE(PCLK_DSIHOST, "pclk_dsihost", "pclk_pdvo", 0, |
---|
.. | .. |
---|
847 | 921 | * Clock-Architecture Diagram 10 |
---|
848 | 922 | */ |
---|
849 | 923 | /* PD_VI */ |
---|
850 | | - COMPOSITE_BROTHER(ACLK_PDVI_DIV, "aclk_pdvi_div", mux_cpll_gpll_hpll_p, 0, |
---|
| 924 | + COMPOSITE(ACLK_PDVI_DIV, "aclk_pdvi_div", mux_cpll_gpll_hpll_p, 0, |
---|
851 | 925 | RV1126_CLKSEL_CON(49), 6, 2, MFLAGS, 0, 5, DFLAGS, |
---|
852 | | - RV1126_CLKGATE_CON(15), 0, GFLAGS, |
---|
853 | | - &rv1126_aclk_pdvi_np5), |
---|
| 926 | + RV1126_CLKGATE_CON(15), 0, GFLAGS), |
---|
| 927 | + COMPOSITE_HALFDIV_OFFSET(ACLK_PDVI_NP5, "aclk_pdvi_np5", mux_cpll_gpll_hpll_p, 0, |
---|
| 928 | + RV1126_CLKSEL_CON(49), 6, 2, MFLAGS, |
---|
| 929 | + RV1126_CLKSEL_CON(76), 0, 5, DFLAGS, |
---|
| 930 | + RV1126_CLKGATE_CON(16), 13, GFLAGS), |
---|
854 | 931 | MUX(ACLK_PDVI, "aclk_pdvi", mux_aclk_pdvi_p, CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, |
---|
855 | 932 | RV1126_CLKSEL_CON(76), 5, 1, MFLAGS), |
---|
856 | 933 | COMPOSITE_NOMUX(HCLK_PDVI, "hclk_pdvi", "aclk_pdvi", 0, |
---|
.. | .. |
---|
863 | 940 | RV1126_CLKGATE_CON(15), 6, GFLAGS), |
---|
864 | 941 | GATE(HCLK_ISP, "hclk_isp", "hclk_pdvi", 0, |
---|
865 | 942 | RV1126_CLKGATE_CON(15), 7, GFLAGS), |
---|
866 | | - COMPOSITE_BROTHER(CLK_ISP_DIV, "clk_isp_div", mux_gpll_cpll_hpll_p, 0, |
---|
| 943 | + COMPOSITE(CLK_ISP_DIV, "clk_isp_div", mux_gpll_cpll_hpll_p, 0, |
---|
867 | 944 | RV1126_CLKSEL_CON(50), 6, 2, MFLAGS, 0, 5, DFLAGS, |
---|
868 | | - RV1126_CLKGATE_CON(15), 8, GFLAGS, |
---|
869 | | - &rv1126_clk_isp_np5), |
---|
| 945 | + RV1126_CLKGATE_CON(15), 8, GFLAGS), |
---|
| 946 | + COMPOSITE_HALFDIV_OFFSET(CLK_ISP_NP5, "clk_isp_np5", mux_gpll_cpll_hpll_p, 0, |
---|
| 947 | + RV1126_CLKSEL_CON(50), 6, 2, MFLAGS, |
---|
| 948 | + RV1126_CLKSEL_CON(76), 8, 5, DFLAGS, |
---|
| 949 | + RV1126_CLKGATE_CON(16), 14, GFLAGS), |
---|
870 | 950 | MUX(CLK_ISP, "clk_isp", mux_clk_isp_p, CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, |
---|
871 | 951 | RV1126_CLKSEL_CON(76), 13, 1, MFLAGS), |
---|
872 | 952 | GATE(ACLK_CIF, "aclk_cif", "aclk_pdvi", 0, |
---|
.. | .. |
---|
882 | 962 | COMPOSITE_FRACMUX(CLK_CIF_OUT_FRACDIV, "clk_cif_out2io_fracdiv", "clk_cif_out2io_div", CLK_SET_RATE_PARENT, |
---|
883 | 963 | RV1126_CLKSEL_CON(52), 0, |
---|
884 | 964 | RV1126_CLKGATE_CON(15), 13, GFLAGS, |
---|
885 | | - &rv1126_cif_out2io_fracmux, RV1126_FRAC_MAX_PRATE), |
---|
| 965 | + &rv1126_cif_out2io_fracmux), |
---|
886 | 966 | GATE(CLK_CIF_OUT, "clk_cif_out2io", "clk_cif_out2io_mux", 0, |
---|
887 | 967 | RV1126_CLKGATE_CON(15), 14, GFLAGS), |
---|
888 | 968 | COMPOSITE(CLK_MIPICSI_OUT_DIV, "clk_mipicsi_out2io_div", mux_gpll_usb480m_p, 0, |
---|
.. | .. |
---|
891 | 971 | COMPOSITE_FRACMUX(CLK_MIPICSI_OUT_FRACDIV, "clk_mipicsi_out2io_fracdiv", "clk_mipicsi_out2io_div", CLK_SET_RATE_PARENT, |
---|
892 | 972 | RV1126_CLKSEL_CON(74), 0, |
---|
893 | 973 | RV1126_CLKGATE_CON(23), 6, GFLAGS, |
---|
894 | | - &rv1126_mipicsi_out2io_fracmux, RV1126_CSIOUT_FRAC_MAX_PRATE), |
---|
| 974 | + &rv1126_mipicsi_out2io_fracmux), |
---|
895 | 975 | GATE(CLK_MIPICSI_OUT, "clk_mipicsi_out2io", "clk_mipicsi_out2io_mux", 0, |
---|
896 | 976 | RV1126_CLKGATE_CON(23), 7, GFLAGS), |
---|
897 | 977 | GATE(PCLK_CSIHOST, "pclk_csihost", "pclk_pdvi", 0, |
---|
.. | .. |
---|
908 | 988 | * Clock-Architecture Diagram 11 |
---|
909 | 989 | */ |
---|
910 | 990 | /* PD_ISPP */ |
---|
911 | | - COMPOSITE_BROTHER(ACLK_PDISPP_DIV, "aclk_pdispp_div", mux_cpll_gpll_hpll_p, 0, |
---|
| 991 | + COMPOSITE(ACLK_PDISPP_DIV, "aclk_pdispp_div", mux_cpll_gpll_hpll_p, 0, |
---|
912 | 992 | RV1126_CLKSEL_CON(68), 6, 2, MFLAGS, 0, 5, DFLAGS, |
---|
913 | | - RV1126_CLKGATE_CON(16), 0, GFLAGS, |
---|
914 | | - &rv1126_aclk_pdispp_np5), |
---|
| 993 | + RV1126_CLKGATE_CON(16), 0, GFLAGS), |
---|
| 994 | + COMPOSITE_HALFDIV_OFFSET(ACLK_PDISPP_NP5, "aclk_pdispp_np5", mux_cpll_gpll_hpll_p, 0, |
---|
| 995 | + RV1126_CLKSEL_CON(68), 6, 2, MFLAGS, |
---|
| 996 | + RV1126_CLKSEL_CON(77), 0, 5, DFLAGS, |
---|
| 997 | + RV1126_CLKGATE_CON(16), 8, GFLAGS), |
---|
915 | 998 | MUX(ACLK_PDISPP, "aclk_pdispp", mux_aclk_pdispp_p, CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, |
---|
916 | 999 | RV1126_CLKSEL_CON(77), 5, 1, MFLAGS), |
---|
917 | 1000 | COMPOSITE_NOMUX(HCLK_PDISPP, "hclk_pdispp", "aclk_pdispp", 0, |
---|
.. | .. |
---|
921 | 1004 | RV1126_CLKGATE_CON(16), 4, GFLAGS), |
---|
922 | 1005 | GATE(HCLK_ISPP, "hclk_ispp", "hclk_pdispp", 0, |
---|
923 | 1006 | RV1126_CLKGATE_CON(16), 5, GFLAGS), |
---|
924 | | - COMPOSITE_BROTHER(CLK_ISPP_DIV, "clk_ispp_div", mux_cpll_gpll_hpll_p, 0, |
---|
| 1007 | + COMPOSITE(CLK_ISPP_DIV, "clk_ispp_div", mux_cpll_gpll_hpll_p, 0, |
---|
925 | 1008 | RV1126_CLKSEL_CON(69), 6, 2, MFLAGS, 0, 5, DFLAGS, |
---|
926 | | - RV1126_CLKGATE_CON(16), 6, GFLAGS, |
---|
927 | | - &rv1126_clk_ispp_np5), |
---|
| 1009 | + RV1126_CLKGATE_CON(16), 6, GFLAGS), |
---|
| 1010 | + COMPOSITE_HALFDIV_OFFSET(CLK_ISPP_NP5, "clk_ispp_np5", mux_cpll_gpll_hpll_p, 0, |
---|
| 1011 | + RV1126_CLKSEL_CON(69), 6, 2, MFLAGS, |
---|
| 1012 | + RV1126_CLKSEL_CON(77), 8, 5, DFLAGS, |
---|
| 1013 | + RV1126_CLKGATE_CON(16), 7, GFLAGS), |
---|
928 | 1014 | MUX(CLK_ISPP, "clk_ispp", mux_clk_ispp_p, CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, |
---|
929 | 1015 | RV1126_CLKSEL_CON(77), 13, 1, MFLAGS), |
---|
930 | 1016 | |
---|
.. | .. |
---|
932 | 1018 | * Clock-Architecture Diagram 12 |
---|
933 | 1019 | */ |
---|
934 | 1020 | /* PD_PHP */ |
---|
935 | | - COMPOSITE(ACLK_PDPHP, "aclk_pdphp", mux_gpll_cpll_p, CLK_IGNORE_UNUSED, |
---|
| 1021 | + COMPOSITE(ACLK_PDPHP, "aclk_pdphp", mux_gpll_cpll_p, CLK_IS_CRITICAL, |
---|
936 | 1022 | RV1126_CLKSEL_CON(53), 7, 1, MFLAGS, 0, 5, DFLAGS, |
---|
937 | 1023 | RV1126_CLKGATE_CON(17), 0, GFLAGS), |
---|
938 | | - COMPOSITE_NOMUX(HCLK_PDPHP, "hclk_pdphp", "gpll", CLK_IGNORE_UNUSED, |
---|
| 1024 | + COMPOSITE_NOMUX(HCLK_PDPHP, "hclk_pdphp", "gpll", CLK_IS_CRITICAL, |
---|
939 | 1025 | RV1126_CLKSEL_CON(53), 8, 5, DFLAGS, |
---|
940 | 1026 | RV1126_CLKGATE_CON(17), 1, GFLAGS), |
---|
941 | 1027 | /* PD_SDCARD */ |
---|
.. | .. |
---|
992 | 1078 | RV1126_CLKGATE_CON(19), 4, GFLAGS), |
---|
993 | 1079 | GATE(HCLK_USBHOST_ARB, "hclk_usbhost_arb", "hclk_pdusb", 0, |
---|
994 | 1080 | RV1126_CLKGATE_CON(19), 5, GFLAGS), |
---|
| 1081 | +#if IS_ENABLED(CONFIG_USB_EHCI_HCD_PLATFORM) || IS_ENABLED(CONFIG_USB_OHCI_HCD_PLATFORM) |
---|
| 1082 | + COMPOSITE(CLK_USBHOST_UTMI_OHCI, "clk_usbhost_utmi_ohci", mux_usb480m_gpll_p, CLK_IS_CRITICAL, |
---|
| 1083 | + RV1126_CLKSEL_CON(61), 7, 1, MFLAGS, 0, 5, DFLAGS, |
---|
| 1084 | + RV1126_CLKGATE_CON(19), 6, GFLAGS), |
---|
| 1085 | +#else |
---|
995 | 1086 | COMPOSITE(CLK_USBHOST_UTMI_OHCI, "clk_usbhost_utmi_ohci", mux_usb480m_gpll_p, 0, |
---|
996 | 1087 | RV1126_CLKSEL_CON(61), 7, 1, MFLAGS, 0, 5, DFLAGS, |
---|
997 | 1088 | RV1126_CLKGATE_CON(19), 6, GFLAGS), |
---|
| 1089 | +#endif |
---|
998 | 1090 | GATE(ACLK_USBOTG, "aclk_usbotg", "aclk_pdusb", 0, |
---|
999 | 1091 | RV1126_CLKGATE_CON(19), 7, GFLAGS), |
---|
1000 | 1092 | GATE(CLK_USBOTG_REF, "clk_usbotg_ref", "xin24m", 0, |
---|
.. | .. |
---|
1053 | 1145 | * Clock-Architecture Diagram 14 |
---|
1054 | 1146 | */ |
---|
1055 | 1147 | /* PD_NPU */ |
---|
1056 | | - COMPOSITE_BROTHER(ACLK_PDNPU_DIV, "aclk_pdnpu_div", mux_gpll_cpll_apll_hpll_p, 0, |
---|
| 1148 | + COMPOSITE(ACLK_PDNPU_DIV, "aclk_pdnpu_div", mux_gpll_cpll_apll_hpll_p, 0, |
---|
1057 | 1149 | RV1126_CLKSEL_CON(65), 8, 2, MFLAGS, 0, 4, DFLAGS, |
---|
1058 | | - RV1126_CLKGATE_CON(22), 0, GFLAGS, |
---|
1059 | | - &rv1126_aclk_pdnpu_npu5), |
---|
| 1150 | + RV1126_CLKGATE_CON(22), 0, GFLAGS), |
---|
| 1151 | + COMPOSITE_HALFDIV(ACLK_PDNPU_NP5, "aclk_pdnpu_np5", mux_gpll_cpll_apll_hpll_p, 0, |
---|
| 1152 | + RV1126_CLKSEL_CON(65), 8, 2, MFLAGS, 4, 4, DFLAGS, |
---|
| 1153 | + RV1126_CLKGATE_CON(22), 1, GFLAGS), |
---|
1060 | 1154 | MUX(ACLK_PDNPU, "aclk_pdnpu", mux_aclk_pdnpu_p, CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, |
---|
1061 | 1155 | RV1126_CLKSEL_CON(65), 12, 1, MFLAGS), |
---|
1062 | 1156 | COMPOSITE_NOMUX(HCLK_PDNPU, "hclk_pdnpu", "gpll", 0, |
---|
.. | .. |
---|
1069 | 1163 | RV1126_CLKGATE_CON(22), 7, GFLAGS), |
---|
1070 | 1164 | GATE(HCLK_NPU, "hclk_npu", "hclk_pdnpu", 0, |
---|
1071 | 1165 | RV1126_CLKGATE_CON(22), 8, GFLAGS), |
---|
1072 | | - COMPOSITE_BROTHER(CLK_NPU_DIV, "clk_npu_div", mux_gpll_cpll_apll_hpll_p, 0, |
---|
| 1166 | + COMPOSITE(CLK_NPU_DIV, "clk_npu_div", mux_gpll_cpll_apll_hpll_p, 0, |
---|
1073 | 1167 | RV1126_CLKSEL_CON(67), 8, 2, MFLAGS, 0, 4, DFLAGS, |
---|
1074 | | - RV1126_CLKGATE_CON(22), 9, GFLAGS, |
---|
1075 | | - &rv1126_clk_npu_np5), |
---|
| 1168 | + RV1126_CLKGATE_CON(22), 9, GFLAGS), |
---|
| 1169 | + COMPOSITE_HALFDIV(CLK_NPU_NP5, "clk_npu_np5", mux_gpll_cpll_apll_hpll_p, 0, |
---|
| 1170 | + RV1126_CLKSEL_CON(67), 8, 2, MFLAGS, 4, 4, DFLAGS, |
---|
| 1171 | + RV1126_CLKGATE_CON(22), 10, GFLAGS), |
---|
1076 | 1172 | MUX(CLK_CORE_NPU, "clk_core_npu", mux_clk_npu_p, CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, |
---|
1077 | 1173 | RV1126_CLKSEL_CON(67), 12, 1, MFLAGS), |
---|
1078 | 1174 | GATE(CLK_CORE_NPUPVTM, "clk_core_npupvtm", "clk_core_npu", CLK_IGNORE_UNUSED, |
---|
.. | .. |
---|
1085 | 1181 | /* |
---|
1086 | 1182 | * Clock-Architecture Diagram 15 |
---|
1087 | 1183 | */ |
---|
1088 | | - GATE(PCLK_PDTOP, "pclk_pdtop", "pclk_pdbus", CLK_IGNORE_UNUSED, |
---|
| 1184 | + GATE(PCLK_PDTOP, "pclk_pdtop", "pclk_pdbus", CLK_IS_CRITICAL, |
---|
1089 | 1185 | RV1126_CLKGATE_CON(23), 8, GFLAGS), |
---|
1090 | 1186 | GATE(PCLK_DSIPHY, "pclk_dsiphy", "pclk_pdtop", 0, |
---|
1091 | 1187 | RV1126_CLKGATE_CON(23), 4, GFLAGS), |
---|
.. | .. |
---|
1103 | 1199 | * Clock-Architecture Diagram 3 |
---|
1104 | 1200 | */ |
---|
1105 | 1201 | /* PD_CORE */ |
---|
1106 | | - COMPOSITE_NOMUX(0, "aclk_core", "armclk", CLK_IGNORE_UNUSED, |
---|
| 1202 | + COMPOSITE_NOMUX(0, "aclk_core", "armclk", CLK_IS_CRITICAL, |
---|
1107 | 1203 | RV1126_CLKSEL_CON(1), 4, 4, DFLAGS | CLK_DIVIDER_READ_ONLY, |
---|
1108 | 1204 | RV1126_CLKGATE_CON(0), 2, GFLAGS), |
---|
1109 | 1205 | GATE(0, "pclk_dbg_daplite", "pclk_dbg", CLK_IGNORE_UNUSED, |
---|
1110 | 1206 | RV1126_CLKGATE_CON(0), 5, GFLAGS), |
---|
1111 | 1207 | GATE(0, "clk_a7_jtag", "clk_jtag_ori", CLK_IGNORE_UNUSED, |
---|
1112 | 1208 | RV1126_CLKGATE_CON(0), 9, GFLAGS), |
---|
| 1209 | + GATE(0, "aclk_core_niu", "aclk_core", CLK_IGNORE_UNUSED, |
---|
| 1210 | + RV1126_CLKGATE_CON(0), 3, GFLAGS), |
---|
| 1211 | + GATE(0, "pclk_dbg_niu", "pclk_dbg", CLK_IGNORE_UNUSED, |
---|
| 1212 | + RV1126_CLKGATE_CON(0), 4, GFLAGS), |
---|
1113 | 1213 | /* |
---|
1114 | 1214 | * Clock-Architecture Diagram 4 |
---|
1115 | 1215 | */ |
---|
1116 | 1216 | /* PD_BUS */ |
---|
| 1217 | + GATE(0, "aclk_pdbus_hold_niu1", "aclk_pdbus", CLK_IGNORE_UNUSED, |
---|
| 1218 | + RV1126_CLKGATE_CON(2), 10, GFLAGS), |
---|
| 1219 | + GATE(0, "aclk_pdbus_niu1", "aclk_pdbus", CLK_IGNORE_UNUSED, |
---|
| 1220 | + RV1126_CLKGATE_CON(2), 3, GFLAGS), |
---|
| 1221 | + GATE(0, "hclk_pdbus_niu1", "hclk_pdbus", CLK_IGNORE_UNUSED, |
---|
| 1222 | + RV1126_CLKGATE_CON(2), 4, GFLAGS), |
---|
| 1223 | + GATE(0, "pclk_pdbus_niu1", "pclk_pdbus", CLK_IGNORE_UNUSED, |
---|
| 1224 | + RV1126_CLKGATE_CON(2), 5, GFLAGS), |
---|
| 1225 | + GATE(0, "aclk_pdbus_niu2", "aclk_pdbus", CLK_IGNORE_UNUSED, |
---|
| 1226 | + RV1126_CLKGATE_CON(2), 6, GFLAGS), |
---|
| 1227 | + GATE(0, "hclk_pdbus_niu2", "hclk_pdbus", CLK_IGNORE_UNUSED, |
---|
| 1228 | + RV1126_CLKGATE_CON(2), 7, GFLAGS), |
---|
| 1229 | + GATE(0, "aclk_pdbus_niu3", "aclk_pdbus", CLK_IGNORE_UNUSED, |
---|
| 1230 | + RV1126_CLKGATE_CON(2), 8, GFLAGS), |
---|
| 1231 | + GATE(0, "hclk_pdbus_niu3", "hclk_pdbus", CLK_IGNORE_UNUSED, |
---|
| 1232 | + RV1126_CLKGATE_CON(2), 9, GFLAGS), |
---|
| 1233 | + GATE(0, "pclk_grf", "pclk_pdbus", CLK_IGNORE_UNUSED, |
---|
| 1234 | + RV1126_CLKGATE_CON(6), 15, GFLAGS), |
---|
| 1235 | + GATE(0, "pclk_sgrf", "pclk_pdbus", CLK_IGNORE_UNUSED, |
---|
| 1236 | + RV1126_CLKGATE_CON(8), 4, GFLAGS), |
---|
| 1237 | + GATE(0, "aclk_sysram", "hclk_pdbus", CLK_IGNORE_UNUSED, |
---|
| 1238 | + RV1126_CLKGATE_CON(3), 9, GFLAGS), |
---|
| 1239 | + GATE(0, "pclk_intmux", "pclk_pdbus", CLK_IGNORE_UNUSED, |
---|
| 1240 | + RV1126_CLKGATE_CON(7), 14, GFLAGS), |
---|
1117 | 1241 | |
---|
1118 | 1242 | /* |
---|
1119 | 1243 | * Clock-Architecture Diagram 5 |
---|
1120 | 1244 | */ |
---|
1121 | 1245 | /* PD_CRYPTO */ |
---|
| 1246 | + GATE(0, "aclk_pdcrypto_niu", "aclk_pdcrypto", CLK_IGNORE_UNUSED, |
---|
| 1247 | + RV1126_CLKGATE_CON(4), 13, GFLAGS), |
---|
| 1248 | + GATE(0, "hclk_pdcrypto_niu", "hclk_pdcrypto", CLK_IGNORE_UNUSED, |
---|
| 1249 | + RV1126_CLKGATE_CON(4), 14, GFLAGS), |
---|
1122 | 1250 | |
---|
1123 | 1251 | /* |
---|
1124 | 1252 | * Clock-Architecture Diagram 6 |
---|
1125 | 1253 | */ |
---|
1126 | 1254 | /* PD_AUDIO */ |
---|
| 1255 | + GATE(0, "hclk_pdaudio_niu", "hclk_pdaudio", CLK_IGNORE_UNUSED, |
---|
| 1256 | + RV1126_CLKGATE_CON(9), 2, GFLAGS), |
---|
| 1257 | + GATE(0, "pclk_pdaudio_niu", "hclk_pdaudio", CLK_IGNORE_UNUSED, |
---|
| 1258 | + RV1126_CLKGATE_CON(9), 3, GFLAGS), |
---|
1127 | 1259 | |
---|
1128 | 1260 | /* |
---|
1129 | 1261 | * Clock-Architecture Diagram 7 |
---|
1130 | 1262 | */ |
---|
1131 | 1263 | /* PD_VEPU */ |
---|
| 1264 | + GATE(0, "aclk_pdvepu_niu", "aclk_pdvepu", CLK_IGNORE_UNUSED, |
---|
| 1265 | + RV1126_CLKGATE_CON(12), 3, GFLAGS), |
---|
| 1266 | + GATE(0, "hclk_pdvepu_niu", "hclk_pdvepu", CLK_IGNORE_UNUSED, |
---|
| 1267 | + RV1126_CLKGATE_CON(12), 4, GFLAGS), |
---|
1132 | 1268 | |
---|
1133 | 1269 | /* |
---|
1134 | 1270 | * Clock-Architecture Diagram 9 |
---|
1135 | 1271 | */ |
---|
1136 | 1272 | /* PD_VO */ |
---|
| 1273 | + GATE(0, "aclk_pdvo_niu", "aclk_pdvo", CLK_IGNORE_UNUSED, |
---|
| 1274 | + RV1126_CLKGATE_CON(14), 3, GFLAGS), |
---|
| 1275 | + GATE(0, "hclk_pdvo_niu", "hclk_pdvo", CLK_IGNORE_UNUSED, |
---|
| 1276 | + RV1126_CLKGATE_CON(14), 4, GFLAGS), |
---|
| 1277 | + GATE(0, "pclk_pdvo_niu", "pclk_pdvo", CLK_IGNORE_UNUSED, |
---|
| 1278 | + RV1126_CLKGATE_CON(14), 5, GFLAGS), |
---|
1137 | 1279 | |
---|
1138 | 1280 | /* |
---|
1139 | 1281 | * Clock-Architecture Diagram 10 |
---|
1140 | 1282 | */ |
---|
1141 | 1283 | /* PD_VI */ |
---|
| 1284 | + GATE(0, "aclk_pdvi_niu", "aclk_pdvi", CLK_IGNORE_UNUSED, |
---|
| 1285 | + RV1126_CLKGATE_CON(15), 3, GFLAGS), |
---|
| 1286 | + GATE(0, "hclk_pdvi_niu", "hclk_pdvi", CLK_IGNORE_UNUSED, |
---|
| 1287 | + RV1126_CLKGATE_CON(15), 4, GFLAGS), |
---|
| 1288 | + GATE(0, "pclk_pdvi_niu", "pclk_pdvi", CLK_IGNORE_UNUSED, |
---|
| 1289 | + RV1126_CLKGATE_CON(15), 5, GFLAGS), |
---|
1142 | 1290 | /* |
---|
1143 | 1291 | * Clock-Architecture Diagram 11 |
---|
1144 | 1292 | */ |
---|
1145 | 1293 | /* PD_ISPP */ |
---|
| 1294 | + GATE(0, "aclk_pdispp_niu", "aclk_pdispp", CLK_IGNORE_UNUSED, |
---|
| 1295 | + RV1126_CLKGATE_CON(16), 2, GFLAGS), |
---|
| 1296 | + GATE(0, "hclk_pdispp_niu", "hclk_pdispp", CLK_IGNORE_UNUSED, |
---|
| 1297 | + RV1126_CLKGATE_CON(16), 3, GFLAGS), |
---|
1146 | 1298 | |
---|
1147 | 1299 | /* |
---|
1148 | 1300 | * Clock-Architecture Diagram 12 |
---|
.. | .. |
---|
1152 | 1304 | RV1126_CLKGATE_CON(17), 2, GFLAGS), |
---|
1153 | 1305 | GATE(0, "hclk_pdphpmid", "hclk_pdphp", CLK_IGNORE_UNUSED, |
---|
1154 | 1306 | RV1126_CLKGATE_CON(17), 3, GFLAGS), |
---|
| 1307 | + GATE(0, "aclk_pdphpmid_niu", "aclk_pdphpmid", CLK_IGNORE_UNUSED, |
---|
| 1308 | + RV1126_CLKGATE_CON(17), 4, GFLAGS), |
---|
| 1309 | + GATE(0, "hclk_pdphpmid_niu", "hclk_pdphpmid", CLK_IGNORE_UNUSED, |
---|
| 1310 | + RV1126_CLKGATE_CON(17), 5, GFLAGS), |
---|
1155 | 1311 | |
---|
1156 | 1312 | /* PD_SDCARD */ |
---|
| 1313 | + GATE(0, "hclk_pdsdmmc_niu", "hclk_pdsdmmc", CLK_IGNORE_UNUSED, |
---|
| 1314 | + RV1126_CLKGATE_CON(17), 7, GFLAGS), |
---|
1157 | 1315 | |
---|
1158 | 1316 | /* PD_SDIO */ |
---|
| 1317 | + GATE(0, "hclk_pdsdio_niu", "hclk_pdsdio", CLK_IGNORE_UNUSED, |
---|
| 1318 | + RV1126_CLKGATE_CON(17), 9, GFLAGS), |
---|
1159 | 1319 | |
---|
1160 | 1320 | /* PD_NVM */ |
---|
| 1321 | + GATE(0, "hclk_pdnvm_niu", "hclk_pdnvm", CLK_IGNORE_UNUSED, |
---|
| 1322 | + RV1126_CLKGATE_CON(18), 3, GFLAGS), |
---|
1161 | 1323 | |
---|
1162 | 1324 | /* PD_USB */ |
---|
| 1325 | + GATE(0, "aclk_pdusb_niu", "aclk_pdusb", CLK_IGNORE_UNUSED, |
---|
| 1326 | + RV1126_CLKGATE_CON(19), 2, GFLAGS), |
---|
| 1327 | + GATE(0, "hclk_pdusb_niu", "hclk_pdusb", CLK_IGNORE_UNUSED, |
---|
| 1328 | + RV1126_CLKGATE_CON(19), 3, GFLAGS), |
---|
1163 | 1329 | |
---|
1164 | 1330 | /* PD_GMAC */ |
---|
| 1331 | + GATE(0, "aclk_pdgmac_niu", "aclk_pdgmac", CLK_IGNORE_UNUSED, |
---|
| 1332 | + RV1126_CLKGATE_CON(20), 2, GFLAGS), |
---|
| 1333 | + GATE(0, "pclk_pdgmac_niu", "pclk_pdgmac", CLK_IGNORE_UNUSED, |
---|
| 1334 | + RV1126_CLKGATE_CON(20), 3, GFLAGS), |
---|
1165 | 1335 | |
---|
1166 | 1336 | /* |
---|
1167 | 1337 | * Clock-Architecture Diagram 13 |
---|
1168 | 1338 | */ |
---|
1169 | 1339 | /* PD_DDR */ |
---|
1170 | | - COMPOSITE_NOMUX(0, "pclk_pdddr_pre", "gpll", CLK_IGNORE_UNUSED, |
---|
| 1340 | + COMPOSITE_NOMUX(0, "pclk_pdddr_pre", "gpll", CLK_IS_CRITICAL, |
---|
1171 | 1341 | RV1126_CLKSEL_CON(64), 0, 5, DFLAGS, |
---|
1172 | 1342 | RV1126_CLKGATE_CON(21), 0, GFLAGS), |
---|
1173 | | - GATE(PCLK_PDDDR, "pclk_pdddr", "pclk_pdddr_pre", CLK_IGNORE_UNUSED, |
---|
| 1343 | + GATE(PCLK_PDDDR, "pclk_pdddr", "pclk_pdddr_pre", CLK_IS_CRITICAL, |
---|
1174 | 1344 | RV1126_CLKGATE_CON(21), 15, GFLAGS), |
---|
1175 | 1345 | GATE(0, "pclk_ddr_msch", "pclk_pdddr", CLK_IGNORE_UNUSED, |
---|
1176 | 1346 | RV1126_CLKGATE_CON(21), 6, GFLAGS), |
---|
1177 | | - COMPOSITE_DDRCLK(SCLK_DDRCLK, "sclk_ddrc", mux_dpll_gpll_p, |
---|
1178 | | - CLK_IGNORE_UNUSED, RV1126_CLKSEL_CON(64), 15, 1, 8, 5, |
---|
1179 | | - ROCKCHIP_DDRCLK_SIP_V2), |
---|
1180 | | - COMPOSITE(CLK_DDRPHY, "clk_ddrphy", mux_dpll_gpll_p, CLK_IGNORE_UNUSED, |
---|
| 1347 | + COMPOSITE_NOGATE(SCLK_DDRCLK, "sclk_ddrc", mux_dpll_gpll_p, CLK_IS_CRITICAL, |
---|
| 1348 | + RV1126_CLKSEL_CON(64), 15, 1, MFLAGS, 8, 5, DFLAGS), |
---|
| 1349 | + COMPOSITE(CLK_DDRPHY, "clk_ddrphy", mux_dpll_gpll_p, CLK_IS_CRITICAL, |
---|
1181 | 1350 | RV1126_CLKSEL_CON(64), 15, 1, MFLAGS, 8, 5, DFLAGS, |
---|
1182 | 1351 | RV1126_CLKGATE_CON(21), 8, GFLAGS), |
---|
1183 | 1352 | GATE(0, "clk1x_phy", "clk_ddrphy", CLK_IGNORE_UNUSED, |
---|
.. | .. |
---|
1207 | 1376 | * Clock-Architecture Diagram 14 |
---|
1208 | 1377 | */ |
---|
1209 | 1378 | /* PD_NPU */ |
---|
| 1379 | + GATE(0, "aclk_pdnpu_niu", "aclk_pdnpu", CLK_IGNORE_UNUSED, |
---|
| 1380 | + RV1126_CLKGATE_CON(22), 4, GFLAGS), |
---|
| 1381 | + GATE(0, "hclk_pdnpu_niu", "hclk_pdnpu", CLK_IGNORE_UNUSED, |
---|
| 1382 | + RV1126_CLKGATE_CON(22), 5, GFLAGS), |
---|
| 1383 | + GATE(0, "pclk_pdnpu_niu", "pclk_pdnpu", CLK_IGNORE_UNUSED, |
---|
| 1384 | + RV1126_CLKGATE_CON(22), 6, GFLAGS), |
---|
| 1385 | + |
---|
1210 | 1386 | /* |
---|
1211 | 1387 | * Clock-Architecture Diagram 15 |
---|
1212 | 1388 | */ |
---|
| 1389 | + GATE(0, "pclk_topniu", "pclk_pdtop", CLK_IGNORE_UNUSED, |
---|
| 1390 | + RV1126_CLKGATE_CON(23), 9, GFLAGS), |
---|
| 1391 | + GATE(PCLK_TOPCRU, "pclk_topcru", "pclk_pdtop", CLK_IGNORE_UNUSED, |
---|
| 1392 | + RV1126_CLKGATE_CON(23), 10, GFLAGS), |
---|
| 1393 | + GATE(PCLK_TOPGRF, "pclk_topgrf", "pclk_pdtop", CLK_IGNORE_UNUSED, |
---|
| 1394 | + RV1126_CLKGATE_CON(23), 11, GFLAGS), |
---|
1213 | 1395 | GATE(PCLK_CPUEMADET, "pclk_cpuemadet", "pclk_pdtop", CLK_IGNORE_UNUSED, |
---|
1214 | 1396 | RV1126_CLKGATE_CON(23), 12, GFLAGS), |
---|
1215 | 1397 | GATE(PCLK_DDRPHY, "pclk_ddrphy", "pclk_pdtop", CLK_IGNORE_UNUSED, |
---|
1216 | 1398 | RV1126_CLKGATE_CON(23), 0, GFLAGS), |
---|
1217 | | -#endif |
---|
1218 | | -}; |
---|
1219 | | - |
---|
1220 | | -static const char *const rv1126_cru_critical_clocks[] __initconst = { |
---|
1221 | | - "gpll", |
---|
1222 | | -#ifndef CONFIG_ROCKCHIP_LOW_PERFORMANCE |
---|
1223 | | - "cpll", |
---|
1224 | | - "hpll", |
---|
1225 | | -#endif |
---|
1226 | | - "armclk", |
---|
1227 | | - "pclk_dbg", |
---|
1228 | | - "pclk_pdpmu", |
---|
1229 | | - "aclk_pdbus", |
---|
1230 | | - "hclk_pdbus", |
---|
1231 | | - "pclk_pdbus", |
---|
1232 | | - "aclk_pdphp", |
---|
1233 | | - "hclk_pdphp", |
---|
1234 | | - "clk_ddrphy", |
---|
1235 | | - "pclk_pdddr", |
---|
1236 | | - "pclk_pdtop", |
---|
1237 | | -#if IS_ENABLED(CONFIG_USB_EHCI_HCD_PLATFORM) || IS_ENABLED(CONFIG_USB_OHCI_HCD_PLATFORM) |
---|
1238 | | - "clk_usbhost_utmi_ohci", |
---|
1239 | | -#endif |
---|
1240 | | -#if IS_ENABLED(CONFIG_ROCKCHIP_MPP_VDPU2) || \ |
---|
1241 | | - IS_ENABLED(CONFIG_ROCKCHIP_MPP_RKVDEC) || \ |
---|
1242 | | - IS_ENABLED(CONFIG_ROCKCHIP_MPP_VEPU2) |
---|
1243 | | - "aclk_pdjpeg", |
---|
1244 | | - "hclk_pdjpeg", |
---|
1245 | | - "aclk_pdvdec", |
---|
1246 | | - "hclk_pdvdec", |
---|
1247 | 1399 | #endif |
---|
1248 | 1400 | }; |
---|
1249 | 1401 | |
---|
.. | .. |
---|
1278 | 1430 | .notifier_call = rv1126_clk_panic, |
---|
1279 | 1431 | }; |
---|
1280 | 1432 | |
---|
| 1433 | +static struct rockchip_clk_provider *pmucru_ctx; |
---|
1281 | 1434 | static void __init rv1126_pmu_clk_init(struct device_node *np) |
---|
1282 | 1435 | { |
---|
1283 | 1436 | struct rockchip_clk_provider *ctx; |
---|
.. | .. |
---|
1308 | 1461 | ROCKCHIP_SOFTRST_HIWORD_MASK); |
---|
1309 | 1462 | |
---|
1310 | 1463 | rockchip_clk_of_add_provider(np, ctx); |
---|
| 1464 | + |
---|
| 1465 | + pmucru_ctx = ctx; |
---|
1311 | 1466 | } |
---|
1312 | 1467 | |
---|
1313 | 1468 | CLK_OF_DECLARE(rv1126_cru_pmu, "rockchip,rv1126-pmucru", rv1126_pmu_clk_init); |
---|
.. | .. |
---|
1316 | 1471 | { |
---|
1317 | 1472 | struct rockchip_clk_provider *ctx; |
---|
1318 | 1473 | void __iomem *reg_base; |
---|
| 1474 | + struct clk **cru_clks, **pmucru_clks; |
---|
1319 | 1475 | |
---|
1320 | 1476 | reg_base = of_iomap(np, 0); |
---|
1321 | 1477 | if (!reg_base) { |
---|
.. | .. |
---|
1331 | 1487 | iounmap(reg_base); |
---|
1332 | 1488 | return; |
---|
1333 | 1489 | } |
---|
| 1490 | + cru_clks = ctx->clk_data.clks; |
---|
| 1491 | + pmucru_clks = pmucru_ctx->clk_data.clks; |
---|
1334 | 1492 | |
---|
1335 | 1493 | rockchip_clk_register_plls(ctx, rv1126_pll_clks, |
---|
1336 | 1494 | ARRAY_SIZE(rv1126_pll_clks), |
---|
1337 | 1495 | RV1126_GRF_SOC_STATUS0); |
---|
1338 | 1496 | |
---|
1339 | 1497 | rockchip_clk_register_armclk(ctx, ARMCLK, "armclk", |
---|
1340 | | - mux_armclk_p, ARRAY_SIZE(mux_armclk_p), |
---|
| 1498 | + 3, cru_clks[PLL_APLL], pmucru_clks[PLL_GPLL], |
---|
1341 | 1499 | &rv1126_cpuclk_data, rv1126_cpuclk_rates, |
---|
1342 | 1500 | ARRAY_SIZE(rv1126_cpuclk_rates)); |
---|
1343 | 1501 | |
---|
.. | .. |
---|
1349 | 1507 | |
---|
1350 | 1508 | rockchip_register_restart_notifier(ctx, RV1126_GLB_SRST_FST, NULL); |
---|
1351 | 1509 | |
---|
1352 | | - rockchip_clk_protect_critical(rv1126_cru_critical_clocks, |
---|
1353 | | - ARRAY_SIZE(rv1126_cru_critical_clocks)); |
---|
1354 | | - |
---|
1355 | 1510 | rockchip_clk_of_add_provider(np, ctx); |
---|
1356 | 1511 | |
---|
1357 | 1512 | atomic_notifier_chain_register(&panic_notifier_list, |
---|
.. | .. |
---|
1359 | 1514 | } |
---|
1360 | 1515 | |
---|
1361 | 1516 | CLK_OF_DECLARE(rv1126_cru, "rockchip,rv1126-cru", rv1126_clk_init); |
---|
| 1517 | + |
---|
| 1518 | +struct clk_rv1126_inits { |
---|
| 1519 | + void (*inits)(struct device_node *np); |
---|
| 1520 | +}; |
---|
| 1521 | + |
---|
| 1522 | +static const struct clk_rv1126_inits clk_rv1126_pmu_init = { |
---|
| 1523 | + .inits = rv1126_pmu_clk_init, |
---|
| 1524 | +}; |
---|
| 1525 | + |
---|
| 1526 | +static const struct clk_rv1126_inits clk_rv1126_init = { |
---|
| 1527 | + .inits = rv1126_clk_init, |
---|
| 1528 | +}; |
---|
| 1529 | + |
---|
| 1530 | +static const struct of_device_id clk_rv1126_match_table[] = { |
---|
| 1531 | + { |
---|
| 1532 | + .compatible = "rockchip,rv1126-cru", |
---|
| 1533 | + .data = &clk_rv1126_init, |
---|
| 1534 | + }, { |
---|
| 1535 | + .compatible = "rockchip,rv1126-pmucru", |
---|
| 1536 | + .data = &clk_rv1126_pmu_init, |
---|
| 1537 | + }, |
---|
| 1538 | + { } |
---|
| 1539 | +}; |
---|
| 1540 | +MODULE_DEVICE_TABLE(of, clk_rv1126_match_table); |
---|
| 1541 | + |
---|
| 1542 | +static int __init clk_rv1126_probe(struct platform_device *pdev) |
---|
| 1543 | +{ |
---|
| 1544 | + struct device_node *np = pdev->dev.of_node; |
---|
| 1545 | + const struct of_device_id *match; |
---|
| 1546 | + const struct clk_rv1126_inits *init_data; |
---|
| 1547 | + |
---|
| 1548 | + match = of_match_device(clk_rv1126_match_table, &pdev->dev); |
---|
| 1549 | + if (!match || !match->data) |
---|
| 1550 | + return -EINVAL; |
---|
| 1551 | + |
---|
| 1552 | + init_data = match->data; |
---|
| 1553 | + if (init_data->inits) |
---|
| 1554 | + init_data->inits(np); |
---|
| 1555 | + |
---|
| 1556 | + return 0; |
---|
| 1557 | +} |
---|
| 1558 | + |
---|
| 1559 | +static struct platform_driver clk_rv1126_driver = { |
---|
| 1560 | + .driver = { |
---|
| 1561 | + .name = "clk-rv1126", |
---|
| 1562 | + .of_match_table = clk_rv1126_match_table, |
---|
| 1563 | + }, |
---|
| 1564 | +}; |
---|
| 1565 | +builtin_platform_driver_probe(clk_rv1126_driver, clk_rv1126_probe); |
---|
| 1566 | + |
---|
| 1567 | +MODULE_DESCRIPTION("Rockchip RV1126 Clock Driver"); |
---|
| 1568 | +MODULE_LICENSE("GPL"); |
---|