.. | .. |
---|
110 | 110 | #define RK3568_MUX_CLK_PVTPLL_MASK 0x1 |
---|
111 | 111 | #define RK3568_MUX_CLK_PVTPLL_SHIFT 15 |
---|
112 | 112 | |
---|
113 | | -#define RK3568_CLKSEL0(_apllcore, _pvtpll) \ |
---|
114 | | -{ \ |
---|
115 | | - .reg = RK3568_CLKSEL_CON(0), \ |
---|
116 | | - .val = HIWORD_UPDATE(_apllcore, RK3568_MUX_CLK_CORE_APLL_MASK, \ |
---|
117 | | - RK3568_MUX_CLK_CORE_APLL_SHIFT) | \ |
---|
118 | | - HIWORD_UPDATE(_pvtpll, RK3568_MUX_CLK_PVTPLL_MASK, \ |
---|
119 | | - RK3568_MUX_CLK_PVTPLL_SHIFT), \ |
---|
120 | | -} |
---|
121 | | - |
---|
122 | 113 | #define RK3568_CLKSEL1(_sclk_core) \ |
---|
123 | 114 | { \ |
---|
124 | 115 | .reg = RK3568_CLKSEL_CON(2), \ |
---|
.. | .. |
---|
155 | 146 | RK3568_DIV_PERIPHCLK_CORE_SHIFT), \ |
---|
156 | 147 | } |
---|
157 | 148 | |
---|
158 | | -#define RK3568_CLKSEL5(_sclk_core_src) \ |
---|
159 | | -{ \ |
---|
160 | | - .reg = RK3568_CLKSEL_CON(2), \ |
---|
161 | | - .val = HIWORD_UPDATE(_sclk_core_src, RK3568_MUX_SCLK_CORE_MASK, \ |
---|
162 | | - RK3568_MUX_SCLK_CORE_SHIFT), \ |
---|
163 | | -} |
---|
164 | | - |
---|
165 | | -#define RK3568_CPUCLK_RATE(_prate, _pvtpll, _apllcore, _sclk, _acore, _atcore, _gicclk, _pclk, _periph) \ |
---|
| 149 | +#define RK3568_CPUCLK_RATE(_prate, _sclk, _acore, _atcore, _gicclk, _pclk, _periph) \ |
---|
166 | 150 | { \ |
---|
167 | 151 | .prate = _prate##U, \ |
---|
168 | 152 | .divs = { \ |
---|
| 153 | + RK3568_CLKSEL1(_sclk), \ |
---|
169 | 154 | RK3568_CLKSEL2(_acore), \ |
---|
170 | 155 | RK3568_CLKSEL3(_atcore, _gicclk), \ |
---|
171 | 156 | RK3568_CLKSEL4(_pclk, _periph), \ |
---|
172 | 157 | }, \ |
---|
173 | | - .pre_muxs = { \ |
---|
174 | | - RK3568_CLKSEL0(0, _pvtpll), \ |
---|
175 | | - RK3568_CLKSEL5(1), \ |
---|
176 | | - }, \ |
---|
177 | | - .post_muxs = { \ |
---|
178 | | - RK3568_CLKSEL0(_apllcore, _pvtpll), \ |
---|
179 | | - RK3568_CLKSEL1(_sclk), \ |
---|
180 | | - }, \ |
---|
181 | 158 | } |
---|
182 | 159 | |
---|
183 | 160 | static struct rockchip_cpuclk_rate_table rk3568_cpuclk_rates[] __initdata = { |
---|
184 | | - RK3568_CPUCLK_RATE(2208000000, 1, 1, 1, 1, 9, 9, 9, 9), |
---|
185 | | - RK3568_CPUCLK_RATE(2184000000, 1, 1, 1, 1, 9, 9, 9, 9), |
---|
186 | | - RK3568_CPUCLK_RATE(2088000000, 1, 1, 1, 1, 9, 9, 9, 9), |
---|
187 | | - RK3568_CPUCLK_RATE(2040000000, 1, 1, 1, 1, 9, 9, 9, 9), |
---|
188 | | - RK3568_CPUCLK_RATE(2016000000, 1, 1, 1, 1, 7, 7, 7, 7), |
---|
189 | | - RK3568_CPUCLK_RATE(1992000000, 1, 1, 1, 1, 7, 7, 7, 7), |
---|
190 | | - RK3568_CPUCLK_RATE(1896000000, 1, 1, 1, 1, 7, 7, 7, 7), |
---|
191 | | - RK3568_CPUCLK_RATE(1800000000, 1, 1, 1, 1, 7, 7, 7, 7), |
---|
192 | | - RK3568_CPUCLK_RATE(1704000000, 0, 1, 1, 1, 7, 7, 7, 7), |
---|
193 | | - RK3568_CPUCLK_RATE(1608000000, 0, 1, 1, 1, 5, 5, 5, 5), |
---|
194 | | - RK3568_CPUCLK_RATE(1584000000, 0, 1, 1, 1, 5, 5, 5, 5), |
---|
195 | | - RK3568_CPUCLK_RATE(1560000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
196 | | - RK3568_CPUCLK_RATE(1536000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
197 | | - RK3568_CPUCLK_RATE(1512000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
198 | | - RK3568_CPUCLK_RATE(1488000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
199 | | - RK3568_CPUCLK_RATE(1464000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
200 | | - RK3568_CPUCLK_RATE(1440000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
201 | | - RK3568_CPUCLK_RATE(1416000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
202 | | - RK3568_CPUCLK_RATE(1392000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
203 | | - RK3568_CPUCLK_RATE(1368000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
204 | | - RK3568_CPUCLK_RATE(1344000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
205 | | - RK3568_CPUCLK_RATE(1320000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
206 | | - RK3568_CPUCLK_RATE(1296000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
207 | | - RK3568_CPUCLK_RATE(1272000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
208 | | - RK3568_CPUCLK_RATE(1248000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
209 | | - RK3568_CPUCLK_RATE(1224000000, 0, 0, 0, 1, 5, 5, 5, 5), |
---|
210 | | - RK3568_CPUCLK_RATE(1200000000, 0, 0, 0, 1, 3, 3, 3, 3), |
---|
211 | | - RK3568_CPUCLK_RATE(1104000000, 0, 0, 0, 1, 3, 3, 3, 3), |
---|
212 | | - RK3568_CPUCLK_RATE(1008000000, 0, 0, 0, 1, 3, 3, 3, 3), |
---|
213 | | - RK3568_CPUCLK_RATE(912000000, 0, 0, 0, 1, 3, 3, 3, 3), |
---|
214 | | - RK3568_CPUCLK_RATE(816000000, 0, 0, 0, 1, 3, 3, 3, 3), |
---|
215 | | - RK3568_CPUCLK_RATE(696000000, 0, 0, 0, 1, 3, 3, 3, 3), |
---|
216 | | - RK3568_CPUCLK_RATE(600000000, 0, 0, 0, 1, 3, 3, 3, 3), |
---|
217 | | - RK3568_CPUCLK_RATE(408000000, 0, 0, 0, 1, 3, 3, 3, 3), |
---|
218 | | - RK3568_CPUCLK_RATE(312000000, 0, 0, 0, 1, 3, 3, 3, 3), |
---|
219 | | - RK3568_CPUCLK_RATE(216000000, 0, 0, 0, 1, 3, 3, 3, 3), |
---|
220 | | - RK3568_CPUCLK_RATE(96000000, 0, 0, 0, 1, 3, 3, 3, 3), |
---|
| 161 | + RK3568_CPUCLK_RATE(1800000000, 0, 1, 7, 7, 7, 7), |
---|
| 162 | + RK3568_CPUCLK_RATE(1704000000, 0, 1, 7, 7, 7, 7), |
---|
| 163 | + RK3568_CPUCLK_RATE(1608000000, 0, 1, 5, 5, 5, 5), |
---|
| 164 | + RK3568_CPUCLK_RATE(1584000000, 0, 1, 5, 5, 5, 5), |
---|
| 165 | + RK3568_CPUCLK_RATE(1560000000, 0, 1, 5, 5, 5, 5), |
---|
| 166 | + RK3568_CPUCLK_RATE(1536000000, 0, 1, 5, 5, 5, 5), |
---|
| 167 | + RK3568_CPUCLK_RATE(1512000000, 0, 1, 5, 5, 5, 5), |
---|
| 168 | + RK3568_CPUCLK_RATE(1488000000, 0, 1, 5, 5, 5, 5), |
---|
| 169 | + RK3568_CPUCLK_RATE(1464000000, 0, 1, 5, 5, 5, 5), |
---|
| 170 | + RK3568_CPUCLK_RATE(1440000000, 0, 1, 5, 5, 5, 5), |
---|
| 171 | + RK3568_CPUCLK_RATE(1416000000, 0, 1, 5, 5, 5, 5), |
---|
| 172 | + RK3568_CPUCLK_RATE(1392000000, 0, 1, 5, 5, 5, 5), |
---|
| 173 | + RK3568_CPUCLK_RATE(1368000000, 0, 1, 5, 5, 5, 5), |
---|
| 174 | + RK3568_CPUCLK_RATE(1344000000, 0, 1, 5, 5, 5, 5), |
---|
| 175 | + RK3568_CPUCLK_RATE(1320000000, 0, 1, 5, 5, 5, 5), |
---|
| 176 | + RK3568_CPUCLK_RATE(1296000000, 0, 1, 5, 5, 5, 5), |
---|
| 177 | + RK3568_CPUCLK_RATE(1272000000, 0, 1, 5, 5, 5, 5), |
---|
| 178 | + RK3568_CPUCLK_RATE(1248000000, 0, 1, 5, 5, 5, 5), |
---|
| 179 | + RK3568_CPUCLK_RATE(1224000000, 0, 1, 5, 5, 5, 5), |
---|
| 180 | + RK3568_CPUCLK_RATE(1200000000, 0, 1, 3, 3, 3, 3), |
---|
| 181 | + RK3568_CPUCLK_RATE(1104000000, 0, 1, 3, 3, 3, 3), |
---|
| 182 | + RK3568_CPUCLK_RATE(1008000000, 0, 1, 3, 3, 3, 3), |
---|
| 183 | + RK3568_CPUCLK_RATE(912000000, 0, 1, 3, 3, 3, 3), |
---|
| 184 | + RK3568_CPUCLK_RATE(816000000, 0, 1, 3, 3, 3, 3), |
---|
| 185 | + RK3568_CPUCLK_RATE(696000000, 0, 1, 3, 3, 3, 3), |
---|
| 186 | + RK3568_CPUCLK_RATE(600000000, 0, 1, 3, 3, 3, 3), |
---|
| 187 | + RK3568_CPUCLK_RATE(408000000, 0, 1, 3, 3, 3, 3), |
---|
| 188 | + RK3568_CPUCLK_RATE(312000000, 0, 1, 3, 3, 3, 3), |
---|
| 189 | + RK3568_CPUCLK_RATE(216000000, 0, 1, 3, 3, 3, 3), |
---|
| 190 | + RK3568_CPUCLK_RATE(96000000, 0, 1, 3, 3, 3, 3), |
---|
221 | 191 | }; |
---|
222 | 192 | |
---|
223 | 193 | static const struct rockchip_cpuclk_reg_data rk3568_cpuclk_data = { |
---|
.. | .. |
---|
242 | 212 | |
---|
243 | 213 | PNAME(mux_pll_p) = { "xin24m" }; |
---|
244 | 214 | PNAME(mux_usb480m_p) = { "xin24m", "usb480m_phy", "clk_rtc_32k" }; |
---|
245 | | -PNAME(mux_armclk_p) = { "apll", "gpll" }; |
---|
246 | 215 | PNAME(clk_i2s0_8ch_tx_p) = { "clk_i2s0_8ch_tx_src", "clk_i2s0_8ch_tx_frac", "i2s0_mclkin", "xin_osc0_half" }; |
---|
247 | 216 | PNAME(clk_i2s0_8ch_rx_p) = { "clk_i2s0_8ch_rx_src", "clk_i2s0_8ch_rx_frac", "i2s0_mclkin", "xin_osc0_half" }; |
---|
248 | 217 | PNAME(clk_i2s1_8ch_tx_p) = { "clk_i2s1_8ch_tx_src", "clk_i2s1_8ch_tx_frac", "i2s1_mclkin", "xin_osc0_half" }; |
---|
.. | .. |
---|
370 | 339 | 0, RK3568_PLL_CON(16), |
---|
371 | 340 | RK3568_MODE_CON0, 6, 3, 0, rk3568_pll_rates), |
---|
372 | 341 | [npll] = PLL(pll_rk3328, PLL_NPLL, "npll", mux_pll_p, |
---|
373 | | - 0, RK3568_PLL_CON(32), |
---|
| 342 | + CLK_IS_CRITICAL, RK3568_PLL_CON(32), |
---|
374 | 343 | RK3568_MODE_CON0, 10, 5, 0, rk3568_pll_rates), |
---|
375 | 344 | [vpll] = PLL(pll_rk3328, PLL_VPLL, "vpll", mux_pll_p, |
---|
376 | 345 | 0, RK3568_PLL_CON(40), |
---|
.. | .. |
---|
461 | 430 | MUX(CLK_RTC_32K, "clk_rtc_32k", clk_rtc32k_pmu_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, |
---|
462 | 431 | RK3568_PMU_CLKSEL_CON(0), 6, 2, MFLAGS); |
---|
463 | 432 | |
---|
464 | | -static struct rockchip_clk_branch rk3568_clk_npu_np5 __initdata = |
---|
465 | | - COMPOSITE_HALFDIV(CLK_NPU_NP5, "clk_npu_np5", npll_gpll_p, 0, |
---|
466 | | - RK3568_CLKSEL_CON(7), 7, 1, MFLAGS, 4, 2, DFLAGS, |
---|
467 | | - RK3568_CLKGATE_CON(3), 1, GFLAGS); |
---|
468 | | - |
---|
469 | 433 | static struct rockchip_clk_branch rk3568_clk_branches[] __initdata = { |
---|
470 | 434 | /* |
---|
471 | 435 | * Clock-Architecture Diagram 1 |
---|
.. | .. |
---|
525 | 489 | RK3568_MODE_CON0, 14, 2, MFLAGS), |
---|
526 | 490 | |
---|
527 | 491 | /* PD_CORE */ |
---|
528 | | - COMPOSITE(0, "sclk_core_src", apll_gpll_npll_p, CLK_IGNORE_UNUSED, |
---|
| 492 | + COMPOSITE(0, "sclk_core_src", apll_gpll_npll_p, CLK_IS_CRITICAL, |
---|
529 | 493 | RK3568_CLKSEL_CON(2), 8, 2, MFLAGS, 0, 4, DFLAGS | CLK_DIVIDER_READ_ONLY, |
---|
530 | 494 | RK3568_CLKGATE_CON(0), 5, GFLAGS), |
---|
531 | | - COMPOSITE_NODIV(0, "sclk_core", sclk_core_pre_p, CLK_IGNORE_UNUSED, |
---|
| 495 | + COMPOSITE_NODIV(0, "sclk_core", sclk_core_pre_p, CLK_IS_CRITICAL, |
---|
532 | 496 | RK3568_CLKSEL_CON(2), 15, 1, MFLAGS, |
---|
533 | 497 | RK3568_CLKGATE_CON(0), 7, GFLAGS), |
---|
534 | 498 | |
---|
535 | | - COMPOSITE_NOMUX(0, "atclk_core", "armclk", CLK_IGNORE_UNUSED, |
---|
| 499 | + COMPOSITE_NOMUX(0, "atclk_core", "armclk", CLK_IS_CRITICAL, |
---|
536 | 500 | RK3568_CLKSEL_CON(3), 0, 5, DFLAGS | CLK_DIVIDER_READ_ONLY, |
---|
537 | 501 | RK3568_CLKGATE_CON(0), 8, GFLAGS), |
---|
538 | | - COMPOSITE_NOMUX(0, "gicclk_core", "armclk", CLK_IGNORE_UNUSED, |
---|
| 502 | + COMPOSITE_NOMUX(0, "gicclk_core", "armclk", CLK_IS_CRITICAL, |
---|
539 | 503 | RK3568_CLKSEL_CON(3), 8, 5, DFLAGS | CLK_DIVIDER_READ_ONLY, |
---|
540 | 504 | RK3568_CLKGATE_CON(0), 9, GFLAGS), |
---|
541 | | - COMPOSITE_NOMUX(0, "pclk_core_pre", "armclk", CLK_IGNORE_UNUSED, |
---|
| 505 | + COMPOSITE_NOMUX(0, "pclk_core_pre", "armclk", CLK_IS_CRITICAL, |
---|
542 | 506 | RK3568_CLKSEL_CON(4), 0, 5, DFLAGS | CLK_DIVIDER_READ_ONLY, |
---|
543 | 507 | RK3568_CLKGATE_CON(0), 10, GFLAGS), |
---|
544 | | - COMPOSITE_NOMUX(0, "periphclk_core_pre", "armclk", CLK_IGNORE_UNUSED, |
---|
| 508 | + COMPOSITE_NOMUX(0, "periphclk_core_pre", "armclk", CLK_IS_CRITICAL, |
---|
545 | 509 | RK3568_CLKSEL_CON(4), 8, 5, DFLAGS | CLK_DIVIDER_READ_ONLY, |
---|
546 | 510 | RK3568_CLKGATE_CON(0), 11, GFLAGS), |
---|
547 | | - COMPOSITE_NOMUX(0, "tsclk_core", "periphclk_core_pre", CLK_IGNORE_UNUSED, |
---|
| 511 | + COMPOSITE_NOMUX(0, "tsclk_core", "periphclk_core_pre", CLK_IS_CRITICAL, |
---|
548 | 512 | RK3568_CLKSEL_CON(5), 0, 4, DFLAGS | CLK_DIVIDER_READ_ONLY, |
---|
549 | 513 | RK3568_CLKGATE_CON(0), 14, GFLAGS), |
---|
550 | | - COMPOSITE_NOMUX(0, "cntclk_core", "periphclk_core_pre", CLK_IGNORE_UNUSED, |
---|
| 514 | + COMPOSITE_NOMUX(0, "cntclk_core", "periphclk_core_pre", CLK_IS_CRITICAL, |
---|
551 | 515 | RK3568_CLKSEL_CON(5), 4, 4, DFLAGS | CLK_DIVIDER_READ_ONLY, |
---|
552 | 516 | RK3568_CLKGATE_CON(0), 15, GFLAGS), |
---|
553 | | - COMPOSITE_NOMUX(0, "aclk_core", "sclk_core", CLK_IGNORE_UNUSED, |
---|
| 517 | + COMPOSITE_NOMUX(0, "aclk_core", "sclk_core", CLK_IS_CRITICAL, |
---|
554 | 518 | RK3568_CLKSEL_CON(5), 8, 5, DFLAGS | CLK_DIVIDER_READ_ONLY, |
---|
555 | 519 | RK3568_CLKGATE_CON(1), 0, GFLAGS), |
---|
556 | 520 | |
---|
557 | | - COMPOSITE_NODIV(ACLK_CORE_NIU2BUS, "aclk_core_niu2bus", gpll150_gpll100_gpll75_xin24m_p, CLK_IGNORE_UNUSED, |
---|
| 521 | + COMPOSITE_NODIV(ACLK_CORE_NIU2BUS, "aclk_core_niu2bus", gpll150_gpll100_gpll75_xin24m_p, CLK_IS_CRITICAL, |
---|
558 | 522 | RK3568_CLKSEL_CON(5), 14, 2, MFLAGS, |
---|
559 | 523 | RK3568_CLKGATE_CON(1), 2, GFLAGS), |
---|
560 | 524 | |
---|
.. | .. |
---|
590 | 554 | RK3568_CLKGATE_CON(2), 9, GFLAGS), |
---|
591 | 555 | |
---|
592 | 556 | /* PD_NPU */ |
---|
593 | | - COMPOSITE_BROTHER(CLK_NPU_SRC, "clk_npu_src", npll_gpll_p, 0, |
---|
| 557 | + COMPOSITE(CLK_NPU_SRC, "clk_npu_src", npll_gpll_p, 0, |
---|
594 | 558 | RK3568_CLKSEL_CON(7), 6, 1, MFLAGS, 0, 4, DFLAGS, |
---|
595 | | - RK3568_CLKGATE_CON(3), 0, GFLAGS, |
---|
596 | | - &rk3568_clk_npu_np5), |
---|
| 559 | + RK3568_CLKGATE_CON(3), 0, GFLAGS), |
---|
| 560 | + COMPOSITE_HALFDIV(CLK_NPU_NP5, "clk_npu_np5", npll_gpll_p, 0, |
---|
| 561 | + RK3568_CLKSEL_CON(7), 7, 1, MFLAGS, 4, 2, DFLAGS, |
---|
| 562 | + RK3568_CLKGATE_CON(3), 1, GFLAGS), |
---|
597 | 563 | MUX(CLK_NPU_PRE_NDFT, "clk_npu_pre_ndft", clk_npu_pre_ndft_p, CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, |
---|
598 | 564 | RK3568_CLKSEL_CON(7), 8, 1, MFLAGS), |
---|
599 | 565 | MUX(CLK_NPU, "clk_npu", clk_npu_p, CLK_SET_RATE_PARENT, |
---|
.. | .. |
---|
664 | 630 | COMPOSITE_FRACMUX(CLK_I2S0_8CH_TX_FRAC, "clk_i2s0_8ch_tx_frac", "clk_i2s0_8ch_tx_src", CLK_SET_RATE_PARENT, |
---|
665 | 631 | RK3568_CLKSEL_CON(12), 0, |
---|
666 | 632 | RK3568_CLKGATE_CON(6), 1, GFLAGS, |
---|
667 | | - &rk3568_i2s0_8ch_tx_fracmux, RK3568_FRAC_MAX_PRATE), |
---|
| 633 | + &rk3568_i2s0_8ch_tx_fracmux), |
---|
668 | 634 | GATE(MCLK_I2S0_8CH_TX, "mclk_i2s0_8ch_tx", "clk_i2s0_8ch_tx", 0, |
---|
669 | 635 | RK3568_CLKGATE_CON(6), 2, GFLAGS), |
---|
670 | 636 | COMPOSITE_NODIV(I2S0_MCLKOUT_TX, "i2s0_mclkout_tx", i2s0_mclkout_tx_p, CLK_SET_RATE_PARENT, |
---|
.. | .. |
---|
677 | 643 | COMPOSITE_FRACMUX(CLK_I2S0_8CH_RX_FRAC, "clk_i2s0_8ch_rx_frac", "clk_i2s0_8ch_rx_src", CLK_SET_RATE_PARENT, |
---|
678 | 644 | RK3568_CLKSEL_CON(14), 0, |
---|
679 | 645 | RK3568_CLKGATE_CON(6), 5, GFLAGS, |
---|
680 | | - &rk3568_i2s0_8ch_rx_fracmux, RK3568_FRAC_MAX_PRATE), |
---|
| 646 | + &rk3568_i2s0_8ch_rx_fracmux), |
---|
681 | 647 | GATE(MCLK_I2S0_8CH_RX, "mclk_i2s0_8ch_rx", "clk_i2s0_8ch_rx", 0, |
---|
682 | 648 | RK3568_CLKGATE_CON(6), 6, GFLAGS), |
---|
683 | 649 | COMPOSITE_NODIV(I2S0_MCLKOUT_RX, "i2s0_mclkout_rx", i2s0_mclkout_rx_p, CLK_SET_RATE_PARENT, |
---|
.. | .. |
---|
690 | 656 | COMPOSITE_FRACMUX(CLK_I2S1_8CH_TX_FRAC, "clk_i2s1_8ch_tx_frac", "clk_i2s1_8ch_tx_src", CLK_SET_RATE_PARENT, |
---|
691 | 657 | RK3568_CLKSEL_CON(16), 0, |
---|
692 | 658 | RK3568_CLKGATE_CON(6), 9, GFLAGS, |
---|
693 | | - &rk3568_i2s1_8ch_tx_fracmux, RK3568_FRAC_MAX_PRATE), |
---|
| 659 | + &rk3568_i2s1_8ch_tx_fracmux), |
---|
694 | 660 | GATE(MCLK_I2S1_8CH_TX, "mclk_i2s1_8ch_tx", "clk_i2s1_8ch_tx", 0, |
---|
695 | 661 | RK3568_CLKGATE_CON(6), 10, GFLAGS), |
---|
696 | 662 | COMPOSITE_NODIV(I2S1_MCLKOUT_TX, "i2s1_mclkout_tx", i2s1_mclkout_tx_p, CLK_SET_RATE_PARENT, |
---|
.. | .. |
---|
703 | 669 | COMPOSITE_FRACMUX(CLK_I2S1_8CH_RX_FRAC, "clk_i2s1_8ch_rx_frac", "clk_i2s1_8ch_rx_src", CLK_SET_RATE_PARENT, |
---|
704 | 670 | RK3568_CLKSEL_CON(18), 0, |
---|
705 | 671 | RK3568_CLKGATE_CON(6), 13, GFLAGS, |
---|
706 | | - &rk3568_i2s1_8ch_rx_fracmux, RK3568_FRAC_MAX_PRATE), |
---|
| 672 | + &rk3568_i2s1_8ch_rx_fracmux), |
---|
707 | 673 | GATE(MCLK_I2S1_8CH_RX, "mclk_i2s1_8ch_rx", "clk_i2s1_8ch_rx", 0, |
---|
708 | 674 | RK3568_CLKGATE_CON(6), 14, GFLAGS), |
---|
709 | 675 | COMPOSITE_NODIV(I2S1_MCLKOUT_RX, "i2s1_mclkout_rx", i2s1_mclkout_rx_p, CLK_SET_RATE_PARENT, |
---|
.. | .. |
---|
716 | 682 | COMPOSITE_FRACMUX(CLK_I2S2_2CH_FRAC, "clk_i2s2_2ch_frac", "clk_i2s2_2ch_src", CLK_SET_RATE_PARENT, |
---|
717 | 683 | RK3568_CLKSEL_CON(20), 0, |
---|
718 | 684 | RK3568_CLKGATE_CON(7), 1, GFLAGS, |
---|
719 | | - &rk3568_i2s2_2ch_fracmux, RK3568_FRAC_MAX_PRATE), |
---|
| 685 | + &rk3568_i2s2_2ch_fracmux), |
---|
720 | 686 | GATE(MCLK_I2S2_2CH, "mclk_i2s2_2ch", "clk_i2s2_2ch", 0, |
---|
721 | 687 | RK3568_CLKGATE_CON(7), 2, GFLAGS), |
---|
722 | 688 | COMPOSITE_NODIV(I2S2_MCLKOUT, "i2s2_mclkout", i2s2_mclkout_p, CLK_SET_RATE_PARENT, |
---|
.. | .. |
---|
729 | 695 | COMPOSITE_FRACMUX(CLK_I2S3_2CH_TX_FRAC, "clk_i2s3_2ch_tx_frac", "clk_i2s3_2ch_tx_src", CLK_SET_RATE_PARENT, |
---|
730 | 696 | RK3568_CLKSEL_CON(22), 0, |
---|
731 | 697 | RK3568_CLKGATE_CON(7), 5, GFLAGS, |
---|
732 | | - &rk3568_i2s3_2ch_tx_fracmux, RK3568_FRAC_MAX_PRATE), |
---|
| 698 | + &rk3568_i2s3_2ch_tx_fracmux), |
---|
733 | 699 | GATE(MCLK_I2S3_2CH_TX, "mclk_i2s3_2ch_tx", "clk_i2s3_2ch_tx", 0, |
---|
734 | 700 | RK3568_CLKGATE_CON(7), 6, GFLAGS), |
---|
735 | 701 | COMPOSITE_NODIV(I2S3_MCLKOUT_TX, "i2s3_mclkout_tx", i2s3_mclkout_tx_p, CLK_SET_RATE_PARENT, |
---|
.. | .. |
---|
742 | 708 | COMPOSITE_FRACMUX(CLK_I2S3_2CH_RX_FRAC, "clk_i2s3_2ch_rx_frac", "clk_i2s3_2ch_rx_src", CLK_SET_RATE_PARENT, |
---|
743 | 709 | RK3568_CLKSEL_CON(84), 0, |
---|
744 | 710 | RK3568_CLKGATE_CON(7), 9, GFLAGS, |
---|
745 | | - &rk3568_i2s3_2ch_rx_fracmux, RK3568_FRAC_MAX_PRATE), |
---|
| 711 | + &rk3568_i2s3_2ch_rx_fracmux), |
---|
746 | 712 | GATE(MCLK_I2S3_2CH_RX, "mclk_i2s3_2ch_rx", "clk_i2s3_2ch_rx", 0, |
---|
747 | 713 | RK3568_CLKGATE_CON(7), 10, GFLAGS), |
---|
748 | 714 | COMPOSITE_NODIV(I2S3_MCLKOUT_RX, "i2s3_mclkout_rx", i2s3_mclkout_rx_p, CLK_SET_RATE_PARENT, |
---|
.. | .. |
---|
778 | 744 | COMPOSITE_FRACMUX(MCLK_SPDIF_8CH_FRAC, "mclk_spdif_8ch_frac", "mclk_spdif_8ch_src", CLK_SET_RATE_PARENT, |
---|
779 | 745 | RK3568_CLKSEL_CON(24), 0, |
---|
780 | 746 | RK3568_CLKGATE_CON(7), 15, GFLAGS, |
---|
781 | | - &rk3568_spdif_8ch_fracmux, RK3568_SPDIF_FRAC_MAX_PRATE), |
---|
| 747 | + &rk3568_spdif_8ch_fracmux), |
---|
782 | 748 | |
---|
783 | 749 | GATE(HCLK_AUDPWM, "hclk_audpwm", "hclk_gic_audio", 0, |
---|
784 | 750 | RK3568_CLKGATE_CON(8), 0, GFLAGS), |
---|
.. | .. |
---|
788 | 754 | COMPOSITE_FRACMUX(SCLK_AUDPWM_FRAC, "sclk_audpwm_frac", "sclk_audpwm_src", CLK_SET_RATE_PARENT, |
---|
789 | 755 | RK3568_CLKSEL_CON(26), 0, |
---|
790 | 756 | RK3568_CLKGATE_CON(8), 2, GFLAGS, |
---|
791 | | - &rk3568_audpwm_fracmux, RK3568_FRAC_MAX_PRATE), |
---|
| 757 | + &rk3568_audpwm_fracmux), |
---|
792 | 758 | |
---|
793 | 759 | GATE(HCLK_ACDCDIG, "hclk_acdcdig", "hclk_gic_audio", 0, |
---|
794 | 760 | RK3568_CLKGATE_CON(8), 3, GFLAGS), |
---|
.. | .. |
---|
801 | 767 | RK3568_CLKGATE_CON(8), 6, GFLAGS), |
---|
802 | 768 | |
---|
803 | 769 | /* PD_SECURE_FLASH */ |
---|
804 | | - COMPOSITE_NODIV(ACLK_SECURE_FLASH, "aclk_secure_flash", gpll200_gpll150_gpll100_xin24m_p, 0, |
---|
| 770 | + COMPOSITE_NODIV(ACLK_SECURE_FLASH, "aclk_secure_flash", gpll200_gpll150_gpll100_xin24m_p, CLK_IS_CRITICAL, |
---|
805 | 771 | RK3568_CLKSEL_CON(27), 0, 2, MFLAGS, |
---|
806 | 772 | RK3568_CLKGATE_CON(8), 7, GFLAGS), |
---|
807 | | - COMPOSITE_NODIV(HCLK_SECURE_FLASH, "hclk_secure_flash", gpll150_gpll100_gpll75_xin24m_p, 0, |
---|
| 773 | + COMPOSITE_NODIV(HCLK_SECURE_FLASH, "hclk_secure_flash", gpll150_gpll100_gpll75_xin24m_p, CLK_IS_CRITICAL, |
---|
808 | 774 | RK3568_CLKSEL_CON(27), 2, 2, MFLAGS, |
---|
809 | 775 | RK3568_CLKGATE_CON(8), 8, GFLAGS), |
---|
810 | 776 | GATE(ACLK_CRYPTO_NS, "aclk_crypto_ns", "aclk_secure_flash", 0, |
---|
.. | .. |
---|
935 | 901 | COMPOSITE_NODIV(ACLK_PHP, "aclk_php", gpll300_gpll200_gpll100_xin24m_p, 0, |
---|
936 | 902 | RK3568_CLKSEL_CON(30), 0, 2, MFLAGS, |
---|
937 | 903 | RK3568_CLKGATE_CON(14), 8, GFLAGS), |
---|
938 | | - COMPOSITE_NODIV(HCLK_PHP, "hclk_php", gpll150_gpll100_gpll75_xin24m_p, 0, |
---|
| 904 | + COMPOSITE_NODIV(HCLK_PHP, "hclk_php", gpll150_gpll100_gpll75_xin24m_p, CLK_IS_CRITICAL, |
---|
939 | 905 | RK3568_CLKSEL_CON(30), 2, 2, MFLAGS, |
---|
940 | 906 | RK3568_CLKGATE_CON(14), 9, GFLAGS), |
---|
941 | | - COMPOSITE_NOMUX(PCLK_PHP, "pclk_php", "aclk_php", 0, |
---|
| 907 | + COMPOSITE_NOMUX(PCLK_PHP, "pclk_php", "aclk_php", CLK_IS_CRITICAL, |
---|
942 | 908 | RK3568_CLKSEL_CON(30), 4, 4, DFLAGS, |
---|
943 | 909 | RK3568_CLKGATE_CON(14), 10, GFLAGS), |
---|
944 | 910 | GATE(HCLK_SDMMC0, "hclk_sdmmc0", "hclk_php", 0, |
---|
.. | .. |
---|
982 | 948 | RK3568_CLKSEL_CON(31), 4, 2, MFLAGS), |
---|
983 | 949 | MUX(SCLK_GMAC0_RMII_SPEED, "clk_gmac0_rmii_speed", mux_gmac0_rmii_speed_p, 0, |
---|
984 | 950 | RK3568_CLKSEL_CON(31), 3, 1, MFLAGS), |
---|
985 | | - MUX(SCLK_GMAC0_RX_TX, "clk_gmac0_rx_tx", mux_gmac0_rx_tx_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, |
---|
| 951 | + MUX(SCLK_GMAC0_RX_TX, "clk_gmac0_rx_tx", mux_gmac0_rx_tx_p, CLK_SET_RATE_PARENT, |
---|
986 | 952 | RK3568_CLKSEL_CON(31), 0, 2, MFLAGS), |
---|
987 | 953 | |
---|
988 | 954 | /* PD_USB */ |
---|
989 | 955 | COMPOSITE_NODIV(ACLK_USB, "aclk_usb", gpll300_gpll200_gpll100_xin24m_p, 0, |
---|
990 | 956 | RK3568_CLKSEL_CON(32), 0, 2, MFLAGS, |
---|
991 | 957 | RK3568_CLKGATE_CON(16), 0, GFLAGS), |
---|
992 | | - COMPOSITE_NODIV(HCLK_USB, "hclk_usb", gpll150_gpll100_gpll75_xin24m_p, 0, |
---|
| 958 | + COMPOSITE_NODIV(HCLK_USB, "hclk_usb", gpll150_gpll100_gpll75_xin24m_p, CLK_IS_CRITICAL, |
---|
993 | 959 | RK3568_CLKSEL_CON(32), 2, 2, MFLAGS, |
---|
994 | 960 | RK3568_CLKGATE_CON(16), 1, GFLAGS), |
---|
995 | | - COMPOSITE_NOMUX(PCLK_USB, "pclk_usb", "aclk_usb", 0, |
---|
| 961 | + COMPOSITE_NOMUX(PCLK_USB, "pclk_usb", "aclk_usb", CLK_IS_CRITICAL, |
---|
996 | 962 | RK3568_CLKSEL_CON(32), 4, 4, DFLAGS, |
---|
997 | 963 | RK3568_CLKGATE_CON(16), 2, GFLAGS), |
---|
998 | 964 | GATE(HCLK_USB2HOST0, "hclk_usb2host0", "hclk_usb", 0, |
---|
.. | .. |
---|
1036 | 1002 | RK3568_CLKSEL_CON(33), 4, 2, MFLAGS), |
---|
1037 | 1003 | MUX(SCLK_GMAC1_RMII_SPEED, "clk_gmac1_rmii_speed", mux_gmac1_rmii_speed_p, 0, |
---|
1038 | 1004 | RK3568_CLKSEL_CON(33), 3, 1, MFLAGS), |
---|
1039 | | - MUX(SCLK_GMAC1_RX_TX, "clk_gmac1_rx_tx", mux_gmac1_rx_tx_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, |
---|
| 1005 | + MUX(SCLK_GMAC1_RX_TX, "clk_gmac1_rx_tx", mux_gmac1_rx_tx_p, CLK_SET_RATE_PARENT, |
---|
1040 | 1006 | RK3568_CLKSEL_CON(33), 0, 2, MFLAGS), |
---|
1041 | 1007 | |
---|
1042 | 1008 | /* PD_PERI */ |
---|
1043 | | - COMPOSITE_NODIV(ACLK_PERIMID, "aclk_perimid", gpll300_gpll200_gpll100_xin24m_p, CLK_IGNORE_UNUSED, |
---|
| 1009 | + COMPOSITE_NODIV(ACLK_PERIMID, "aclk_perimid", gpll300_gpll200_gpll100_xin24m_p, CLK_IS_CRITICAL, |
---|
1044 | 1010 | RK3568_CLKSEL_CON(10), 4, 2, MFLAGS, |
---|
1045 | 1011 | RK3568_CLKGATE_CON(14), 0, GFLAGS), |
---|
1046 | | - COMPOSITE_NODIV(HCLK_PERIMID, "hclk_perimid", gpll150_gpll100_gpll75_xin24m_p, CLK_IGNORE_UNUSED, |
---|
| 1012 | + COMPOSITE_NODIV(HCLK_PERIMID, "hclk_perimid", gpll150_gpll100_gpll75_xin24m_p, CLK_IS_CRITICAL, |
---|
1047 | 1013 | RK3568_CLKSEL_CON(10), 6, 2, MFLAGS, |
---|
1048 | 1014 | RK3568_CLKGATE_CON(14), 1, GFLAGS), |
---|
1049 | 1015 | |
---|
.. | .. |
---|
1102 | 1068 | RK3568_CLKGATE_CON(20), 8, GFLAGS), |
---|
1103 | 1069 | GATE(HCLK_VOP, "hclk_vop", "hclk_vo", 0, |
---|
1104 | 1070 | RK3568_CLKGATE_CON(20), 9, GFLAGS), |
---|
1105 | | - COMPOSITE(DCLK_VOP0, "dclk_vop0", hpll_vpll_gpll_cpll_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, |
---|
| 1071 | + COMPOSITE(DCLK_VOP0, "dclk_vop0", hpll_vpll_gpll_cpll_p, CLK_SET_RATE_NO_REPARENT, |
---|
1106 | 1072 | RK3568_CLKSEL_CON(39), 10, 2, MFLAGS, 0, 8, DFLAGS, |
---|
1107 | 1073 | RK3568_CLKGATE_CON(20), 10, GFLAGS), |
---|
1108 | | - COMPOSITE_DCLK(DCLK_VOP1, "dclk_vop1", hpll_vpll_gpll_cpll_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, |
---|
| 1074 | + COMPOSITE(DCLK_VOP1, "dclk_vop1", hpll_vpll_gpll_cpll_p, CLK_SET_RATE_NO_REPARENT, |
---|
1109 | 1075 | RK3568_CLKSEL_CON(40), 10, 2, MFLAGS, 0, 8, DFLAGS, |
---|
1110 | | - RK3568_CLKGATE_CON(20), 11, GFLAGS, RK3568_DCLK_PARENT_MAX_PRATE), |
---|
1111 | | - COMPOSITE(DCLK_VOP2, "dclk_vop2", hpll_vpll_gpll_cpll_p, 0, |
---|
| 1076 | + RK3568_CLKGATE_CON(20), 11, GFLAGS), |
---|
| 1077 | + COMPOSITE(DCLK_VOP2, "dclk_vop2", hpll_vpll_gpll_cpll_p, CLK_SET_RATE_NO_REPARENT, |
---|
1112 | 1078 | RK3568_CLKSEL_CON(41), 10, 2, MFLAGS, 0, 8, DFLAGS, |
---|
1113 | 1079 | RK3568_CLKGATE_CON(20), 12, GFLAGS), |
---|
1114 | 1080 | GATE(CLK_VOP_PWM, "clk_vop_pwm", "xin24m", 0, |
---|
.. | .. |
---|
1158 | 1124 | RK3568_CLKSEL_CON(43), 12, 4, DFLAGS, |
---|
1159 | 1125 | RK3568_CLKGATE_CON(22), 12, GFLAGS), |
---|
1160 | 1126 | GATE(ACLK_RGA, "aclk_rga", "aclk_rga_pre", 0, |
---|
1161 | | - RK3568_CLKGATE_CON(23), 4, GFLAGS | CLK_GATE_NO_SET_RATE), |
---|
| 1127 | + RK3568_CLKGATE_CON(23), 4, GFLAGS), |
---|
1162 | 1128 | GATE(HCLK_RGA, "hclk_rga", "hclk_rga_pre", 0, |
---|
1163 | | - RK3568_CLKGATE_CON(23), 5, GFLAGS | CLK_GATE_NO_SET_RATE), |
---|
| 1129 | + RK3568_CLKGATE_CON(23), 5, GFLAGS), |
---|
1164 | 1130 | COMPOSITE_NODIV(CLK_RGA_CORE, "clk_rga_core", gpll300_gpll200_gpll100_p, 0, |
---|
1165 | 1131 | RK3568_CLKSEL_CON(43), 2, 2, MFLAGS, |
---|
1166 | 1132 | RK3568_CLKGATE_CON(23), 6, GFLAGS), |
---|
1167 | 1133 | GATE(ACLK_IEP, "aclk_iep", "aclk_rga_pre", 0, |
---|
1168 | | - RK3568_CLKGATE_CON(23), 7, GFLAGS | CLK_GATE_NO_SET_RATE), |
---|
| 1134 | + RK3568_CLKGATE_CON(23), 7, GFLAGS), |
---|
1169 | 1135 | GATE(HCLK_IEP, "hclk_iep", "hclk_rga_pre", 0, |
---|
1170 | | - RK3568_CLKGATE_CON(23), 8, GFLAGS | CLK_GATE_NO_SET_RATE), |
---|
| 1136 | + RK3568_CLKGATE_CON(23), 8, GFLAGS), |
---|
1171 | 1137 | COMPOSITE_NODIV(CLK_IEP_CORE, "clk_iep_core", gpll300_gpll200_gpll100_p, 0, |
---|
1172 | 1138 | RK3568_CLKSEL_CON(43), 4, 2, MFLAGS, |
---|
1173 | 1139 | RK3568_CLKGATE_CON(23), 9, GFLAGS), |
---|
1174 | | - GATE(HCLK_EBC, "hclk_ebc", "hclk_rga_pre", 0, RK3568_CLKGATE_CON(23), 10, GFLAGS | CLK_GATE_NO_SET_RATE), |
---|
| 1140 | + GATE(HCLK_EBC, "hclk_ebc", "hclk_rga_pre", 0, RK3568_CLKGATE_CON(23), 10, GFLAGS), |
---|
1175 | 1141 | COMPOSITE_NODIV(DCLK_EBC, "dclk_ebc", gpll400_cpll333_gpll200_p, 0, |
---|
1176 | 1142 | RK3568_CLKSEL_CON(43), 6, 2, MFLAGS, |
---|
1177 | 1143 | RK3568_CLKGATE_CON(23), 11, GFLAGS), |
---|
1178 | 1144 | GATE(ACLK_JDEC, "aclk_jdec", "aclk_rga_pre", 0, |
---|
1179 | | - RK3568_CLKGATE_CON(23), 12, GFLAGS | CLK_GATE_NO_SET_RATE), |
---|
| 1145 | + RK3568_CLKGATE_CON(23), 12, GFLAGS), |
---|
1180 | 1146 | GATE(HCLK_JDEC, "hclk_jdec", "hclk_rga_pre", 0, |
---|
1181 | | - RK3568_CLKGATE_CON(23), 13, GFLAGS | CLK_GATE_NO_SET_RATE), |
---|
| 1147 | + RK3568_CLKGATE_CON(23), 13, GFLAGS), |
---|
1182 | 1148 | GATE(ACLK_JENC, "aclk_jenc", "aclk_rga_pre", 0, |
---|
1183 | | - RK3568_CLKGATE_CON(23), 14, GFLAGS | CLK_GATE_NO_SET_RATE), |
---|
| 1149 | + RK3568_CLKGATE_CON(23), 14, GFLAGS), |
---|
1184 | 1150 | GATE(HCLK_JENC, "hclk_jenc", "hclk_rga_pre", 0, |
---|
1185 | 1151 | RK3568_CLKGATE_CON(23), 15, GFLAGS), |
---|
1186 | 1152 | GATE(PCLK_EINK, "pclk_eink", "pclk_rga_pre", 0, |
---|
1187 | | - RK3568_CLKGATE_CON(22), 14, GFLAGS | CLK_GATE_NO_SET_RATE), |
---|
| 1153 | + RK3568_CLKGATE_CON(22), 14, GFLAGS), |
---|
1188 | 1154 | GATE(HCLK_EINK, "hclk_eink", "hclk_rga_pre", 0, |
---|
1189 | | - RK3568_CLKGATE_CON(22), 15, GFLAGS | CLK_GATE_NO_SET_RATE), |
---|
| 1155 | + RK3568_CLKGATE_CON(22), 15, GFLAGS), |
---|
1190 | 1156 | |
---|
1191 | 1157 | /* PD_RKVENC */ |
---|
1192 | 1158 | COMPOSITE(ACLK_RKVENC_PRE, "aclk_rkvenc_pre", gpll_cpll_npll_p, 0, |
---|
.. | .. |
---|
1223 | 1189 | RK3568_CLKGATE_CON(25), 8, GFLAGS), |
---|
1224 | 1190 | |
---|
1225 | 1191 | /* PD_BUS */ |
---|
1226 | | - COMPOSITE_NODIV(ACLK_BUS, "aclk_bus", gpll200_gpll150_gpll100_xin24m_p, 0, |
---|
| 1192 | + COMPOSITE_NODIV(ACLK_BUS, "aclk_bus", gpll200_gpll150_gpll100_xin24m_p, CLK_IS_CRITICAL, |
---|
1227 | 1193 | RK3568_CLKSEL_CON(50), 0, 2, MFLAGS, |
---|
1228 | 1194 | RK3568_CLKGATE_CON(26), 0, GFLAGS), |
---|
1229 | | - COMPOSITE_NODIV(PCLK_BUS, "pclk_bus", gpll100_gpll75_cpll50_xin24m_p, 0, |
---|
| 1195 | + COMPOSITE_NODIV(PCLK_BUS, "pclk_bus", gpll100_gpll75_cpll50_xin24m_p, CLK_IS_CRITICAL, |
---|
1230 | 1196 | RK3568_CLKSEL_CON(50), 4, 2, MFLAGS, |
---|
1231 | 1197 | RK3568_CLKGATE_CON(26), 1, GFLAGS), |
---|
1232 | 1198 | GATE(PCLK_TSADC, "pclk_tsadc", "pclk_bus", 0, |
---|
.. | .. |
---|
1262 | 1228 | COMPOSITE_FRACMUX(CLK_UART1_FRAC, "clk_uart1_frac", "clk_uart1_src", CLK_SET_RATE_PARENT, |
---|
1263 | 1229 | RK3568_CLKSEL_CON(53), CLK_FRAC_DIVIDER_NO_LIMIT, |
---|
1264 | 1230 | RK3568_CLKGATE_CON(27), 14, GFLAGS, |
---|
1265 | | - &rk3568_uart1_fracmux, RK3568_UART_FRAC_MAX_PRATE), |
---|
| 1231 | + &rk3568_uart1_fracmux), |
---|
1266 | 1232 | GATE(SCLK_UART1, "sclk_uart1", "sclk_uart1_mux", 0, |
---|
1267 | 1233 | RK3568_CLKGATE_CON(27), 15, GFLAGS), |
---|
1268 | 1234 | |
---|
.. | .. |
---|
1274 | 1240 | COMPOSITE_FRACMUX(CLK_UART2_FRAC, "clk_uart2_frac", "clk_uart2_src", CLK_SET_RATE_PARENT, |
---|
1275 | 1241 | RK3568_CLKSEL_CON(55), CLK_FRAC_DIVIDER_NO_LIMIT, |
---|
1276 | 1242 | RK3568_CLKGATE_CON(28), 2, GFLAGS, |
---|
1277 | | - &rk3568_uart2_fracmux, RK3568_UART_FRAC_MAX_PRATE), |
---|
| 1243 | + &rk3568_uart2_fracmux), |
---|
1278 | 1244 | GATE(SCLK_UART2, "sclk_uart2", "sclk_uart2_mux", 0, |
---|
1279 | 1245 | RK3568_CLKGATE_CON(28), 3, GFLAGS), |
---|
1280 | 1246 | |
---|
.. | .. |
---|
1286 | 1252 | COMPOSITE_FRACMUX(CLK_UART3_FRAC, "clk_uart3_frac", "clk_uart3_src", CLK_SET_RATE_PARENT, |
---|
1287 | 1253 | RK3568_CLKSEL_CON(57), CLK_FRAC_DIVIDER_NO_LIMIT, |
---|
1288 | 1254 | RK3568_CLKGATE_CON(28), 6, GFLAGS, |
---|
1289 | | - &rk3568_uart3_fracmux, RK3568_UART_FRAC_MAX_PRATE), |
---|
| 1255 | + &rk3568_uart3_fracmux), |
---|
1290 | 1256 | GATE(SCLK_UART3, "sclk_uart3", "sclk_uart3_mux", 0, |
---|
1291 | 1257 | RK3568_CLKGATE_CON(28), 7, GFLAGS), |
---|
1292 | 1258 | |
---|
.. | .. |
---|
1298 | 1264 | COMPOSITE_FRACMUX(CLK_UART4_FRAC, "clk_uart4_frac", "clk_uart4_src", CLK_SET_RATE_PARENT, |
---|
1299 | 1265 | RK3568_CLKSEL_CON(59), CLK_FRAC_DIVIDER_NO_LIMIT, |
---|
1300 | 1266 | RK3568_CLKGATE_CON(28), 10, GFLAGS, |
---|
1301 | | - &rk3568_uart4_fracmux, RK3568_UART_FRAC_MAX_PRATE), |
---|
| 1267 | + &rk3568_uart4_fracmux), |
---|
1302 | 1268 | GATE(SCLK_UART4, "sclk_uart4", "sclk_uart4_mux", 0, |
---|
1303 | 1269 | RK3568_CLKGATE_CON(28), 11, GFLAGS), |
---|
1304 | 1270 | |
---|
.. | .. |
---|
1310 | 1276 | COMPOSITE_FRACMUX(CLK_UART5_FRAC, "clk_uart5_frac", "clk_uart5_src", CLK_SET_RATE_PARENT, |
---|
1311 | 1277 | RK3568_CLKSEL_CON(61), CLK_FRAC_DIVIDER_NO_LIMIT, |
---|
1312 | 1278 | RK3568_CLKGATE_CON(28), 14, GFLAGS, |
---|
1313 | | - &rk3568_uart5_fracmux, RK3568_UART_FRAC_MAX_PRATE), |
---|
| 1279 | + &rk3568_uart5_fracmux), |
---|
1314 | 1280 | GATE(SCLK_UART5, "sclk_uart5", "sclk_uart5_mux", 0, |
---|
1315 | 1281 | RK3568_CLKGATE_CON(28), 15, GFLAGS), |
---|
1316 | 1282 | |
---|
.. | .. |
---|
1322 | 1288 | COMPOSITE_FRACMUX(CLK_UART6_FRAC, "clk_uart6_frac", "clk_uart6_src", CLK_SET_RATE_PARENT, |
---|
1323 | 1289 | RK3568_CLKSEL_CON(63), CLK_FRAC_DIVIDER_NO_LIMIT, |
---|
1324 | 1290 | RK3568_CLKGATE_CON(29), 2, GFLAGS, |
---|
1325 | | - &rk3568_uart6_fracmux, RK3568_UART_FRAC_MAX_PRATE), |
---|
| 1291 | + &rk3568_uart6_fracmux), |
---|
1326 | 1292 | GATE(SCLK_UART6, "sclk_uart6", "sclk_uart6_mux", 0, |
---|
1327 | 1293 | RK3568_CLKGATE_CON(29), 3, GFLAGS), |
---|
1328 | 1294 | |
---|
.. | .. |
---|
1334 | 1300 | COMPOSITE_FRACMUX(CLK_UART7_FRAC, "clk_uart7_frac", "clk_uart7_src", CLK_SET_RATE_PARENT, |
---|
1335 | 1301 | RK3568_CLKSEL_CON(65), CLK_FRAC_DIVIDER_NO_LIMIT, |
---|
1336 | 1302 | RK3568_CLKGATE_CON(29), 6, GFLAGS, |
---|
1337 | | - &rk3568_uart7_fracmux, RK3568_UART_FRAC_MAX_PRATE), |
---|
| 1303 | + &rk3568_uart7_fracmux), |
---|
1338 | 1304 | GATE(SCLK_UART7, "sclk_uart7", "sclk_uart7_mux", 0, |
---|
1339 | 1305 | RK3568_CLKGATE_CON(29), 7, GFLAGS), |
---|
1340 | 1306 | |
---|
.. | .. |
---|
1346 | 1312 | COMPOSITE_FRACMUX(CLK_UART8_FRAC, "clk_uart8_frac", "clk_uart8_src", CLK_SET_RATE_PARENT, |
---|
1347 | 1313 | RK3568_CLKSEL_CON(67), CLK_FRAC_DIVIDER_NO_LIMIT, |
---|
1348 | 1314 | RK3568_CLKGATE_CON(29), 10, GFLAGS, |
---|
1349 | | - &rk3568_uart8_fracmux, RK3568_UART_FRAC_MAX_PRATE), |
---|
| 1315 | + &rk3568_uart8_fracmux), |
---|
1350 | 1316 | GATE(SCLK_UART8, "sclk_uart8", "sclk_uart8_mux", 0, |
---|
1351 | 1317 | RK3568_CLKGATE_CON(29), 11, GFLAGS), |
---|
1352 | 1318 | |
---|
.. | .. |
---|
1358 | 1324 | COMPOSITE_FRACMUX(CLK_UART9_FRAC, "clk_uart9_frac", "clk_uart9_src", CLK_SET_RATE_PARENT, |
---|
1359 | 1325 | RK3568_CLKSEL_CON(69), CLK_FRAC_DIVIDER_NO_LIMIT, |
---|
1360 | 1326 | RK3568_CLKGATE_CON(29), 14, GFLAGS, |
---|
1361 | | - &rk3568_uart9_fracmux, RK3568_UART_FRAC_MAX_PRATE), |
---|
| 1327 | + &rk3568_uart9_fracmux), |
---|
1362 | 1328 | GATE(SCLK_UART9, "sclk_uart9", "sclk_uart9_mux", 0, |
---|
1363 | 1329 | RK3568_CLKGATE_CON(29), 15, GFLAGS), |
---|
1364 | 1330 | |
---|
.. | .. |
---|
1421 | 1387 | RK3568_CLKSEL_CON(72), 6, 1, MFLAGS, RK3568_CLKGATE_CON(31), 1, GFLAGS), |
---|
1422 | 1388 | GATE(PCLK_PWM1, "pclk_pwm1", "pclk_bus", 0, RK3568_CLKGATE_CON(31), 10, GFLAGS), |
---|
1423 | 1389 | COMPOSITE_NODIV(CLK_PWM1, "clk_pwm1", gpll100_xin24m_cpll100_p, 0, |
---|
1424 | | - RK3568_CLKSEL_CON(72), 8, 1, MFLAGS, |
---|
| 1390 | + RK3568_CLKSEL_CON(72), 8, 2, MFLAGS, |
---|
1425 | 1391 | RK3568_CLKGATE_CON(31), 11, GFLAGS), |
---|
1426 | 1392 | GATE(CLK_PWM1_CAPTURE, "clk_pwm1_capture", "xin24m", 0, |
---|
1427 | 1393 | RK3568_CLKGATE_CON(31), 12, GFLAGS), |
---|
1428 | 1394 | GATE(PCLK_PWM2, "pclk_pwm2", "pclk_bus", 0, |
---|
1429 | 1395 | RK3568_CLKGATE_CON(31), 13, GFLAGS), |
---|
1430 | 1396 | COMPOSITE_NODIV(CLK_PWM2, "clk_pwm2", gpll100_xin24m_cpll100_p, 0, |
---|
1431 | | - RK3568_CLKSEL_CON(72), 10, 1, MFLAGS, |
---|
| 1397 | + RK3568_CLKSEL_CON(72), 10, 2, MFLAGS, |
---|
1432 | 1398 | RK3568_CLKGATE_CON(31), 14, GFLAGS), |
---|
1433 | 1399 | GATE(CLK_PWM2_CAPTURE, "clk_pwm2_capture", "xin24m", 0, |
---|
1434 | 1400 | RK3568_CLKGATE_CON(31), 15, GFLAGS), |
---|
1435 | 1401 | GATE(PCLK_PWM3, "pclk_pwm3", "pclk_bus", 0, |
---|
1436 | 1402 | RK3568_CLKGATE_CON(32), 0, GFLAGS), |
---|
1437 | 1403 | COMPOSITE_NODIV(CLK_PWM3, "clk_pwm3", gpll100_xin24m_cpll100_p, 0, |
---|
1438 | | - RK3568_CLKSEL_CON(72), 12, 1, MFLAGS, |
---|
| 1404 | + RK3568_CLKSEL_CON(72), 12, 2, MFLAGS, |
---|
1439 | 1405 | RK3568_CLKGATE_CON(32), 1, GFLAGS), |
---|
1440 | 1406 | GATE(CLK_PWM3_CAPTURE, "clk_pwm3_capture", "xin24m", 0, |
---|
1441 | 1407 | RK3568_CLKGATE_CON(32), 2, GFLAGS), |
---|
.. | .. |
---|
1474 | 1440 | RK3568_CLKGATE_CON(32), 9, GFLAGS), |
---|
1475 | 1441 | |
---|
1476 | 1442 | /* PD_TOP */ |
---|
1477 | | - COMPOSITE_NODIV(ACLK_TOP_HIGH, "aclk_top_high", cpll500_gpll400_gpll300_xin24m_p, 0, |
---|
| 1443 | + COMPOSITE_NODIV(ACLK_TOP_HIGH, "aclk_top_high", cpll500_gpll400_gpll300_xin24m_p, CLK_IS_CRITICAL, |
---|
1478 | 1444 | RK3568_CLKSEL_CON(73), 0, 2, MFLAGS, |
---|
1479 | 1445 | RK3568_CLKGATE_CON(33), 0, GFLAGS), |
---|
1480 | | - COMPOSITE_NODIV(ACLK_TOP_LOW, "aclk_top_low", gpll400_gpll300_gpll200_xin24m_p, 0, |
---|
| 1446 | + COMPOSITE_NODIV(ACLK_TOP_LOW, "aclk_top_low", gpll400_gpll300_gpll200_xin24m_p, CLK_IS_CRITICAL, |
---|
1481 | 1447 | RK3568_CLKSEL_CON(73), 4, 2, MFLAGS, |
---|
1482 | 1448 | RK3568_CLKGATE_CON(33), 1, GFLAGS), |
---|
1483 | | - COMPOSITE_NODIV(HCLK_TOP, "hclk_top", gpll150_gpll100_gpll75_xin24m_p, 0, |
---|
| 1449 | + COMPOSITE_NODIV(HCLK_TOP, "hclk_top", gpll150_gpll100_gpll75_xin24m_p, CLK_IS_CRITICAL, |
---|
1484 | 1450 | RK3568_CLKSEL_CON(73), 8, 2, MFLAGS, |
---|
1485 | 1451 | RK3568_CLKGATE_CON(33), 2, GFLAGS), |
---|
1486 | | - COMPOSITE_NODIV(PCLK_TOP, "pclk_top", gpll100_gpll75_cpll50_xin24m_p, 0, |
---|
| 1452 | + COMPOSITE_NODIV(PCLK_TOP, "pclk_top", gpll100_gpll75_cpll50_xin24m_p, CLK_IS_CRITICAL, |
---|
1487 | 1453 | RK3568_CLKSEL_CON(73), 12, 2, MFLAGS, |
---|
1488 | 1454 | RK3568_CLKGATE_CON(33), 3, GFLAGS), |
---|
1489 | 1455 | GATE(PCLK_PCIE30PHY, "pclk_pcie30phy", "pclk_top", 0, |
---|
1490 | 1456 | RK3568_CLKGATE_CON(33), 8, GFLAGS), |
---|
1491 | | - COMPOSITE_NODIV(CLK_OPTC_ARB, "clk_optc_arb", xin24m_cpll100_p, 0, |
---|
| 1457 | + COMPOSITE_NODIV(CLK_OPTC_ARB, "clk_optc_arb", xin24m_cpll100_p, CLK_IS_CRITICAL, |
---|
1492 | 1458 | RK3568_CLKSEL_CON(73), 15, 1, MFLAGS, |
---|
1493 | 1459 | RK3568_CLKGATE_CON(33), 9, GFLAGS), |
---|
1494 | 1460 | GATE(PCLK_MIPICSIPHY, "pclk_mipicsiphy", "pclk_top", 0, |
---|
.. | .. |
---|
1521 | 1487 | |
---|
1522 | 1488 | MUX(CLK_PDPMU, "clk_pdpmu", clk_pdpmu_p, 0, |
---|
1523 | 1489 | RK3568_PMU_CLKSEL_CON(2), 15, 1, MFLAGS), |
---|
1524 | | - COMPOSITE_NOMUX(PCLK_PDPMU, "pclk_pdpmu", "clk_pdpmu", 0, |
---|
| 1490 | + COMPOSITE_NOMUX(PCLK_PDPMU, "pclk_pdpmu", "clk_pdpmu", CLK_IS_CRITICAL, |
---|
1525 | 1491 | RK3568_PMU_CLKSEL_CON(2), 0, 5, DFLAGS, |
---|
1526 | 1492 | RK3568_PMU_CLKGATE_CON(0), 2, GFLAGS), |
---|
1527 | | - GATE(PCLK_PMU, "pclk_pmu", "pclk_pdpmu", 0, |
---|
| 1493 | + GATE(PCLK_PMU, "pclk_pmu", "pclk_pdpmu", CLK_IS_CRITICAL, |
---|
1528 | 1494 | RK3568_PMU_CLKGATE_CON(0), 6, GFLAGS), |
---|
1529 | | - GATE(CLK_PMU, "clk_pmu", "xin24m", 0, |
---|
| 1495 | + GATE(CLK_PMU, "clk_pmu", "xin24m", CLK_IS_CRITICAL, |
---|
1530 | 1496 | RK3568_PMU_CLKGATE_CON(0), 7, GFLAGS), |
---|
1531 | 1497 | GATE(PCLK_I2C0, "pclk_i2c0", "pclk_pdpmu", 0, |
---|
1532 | 1498 | RK3568_PMU_CLKGATE_CON(1), 0, GFLAGS), |
---|
.. | .. |
---|
1539 | 1505 | COMPOSITE_FRACMUX(CLK_RTC32K_FRAC, "clk_rtc32k_frac", "xin24m", CLK_IGNORE_UNUSED, |
---|
1540 | 1506 | RK3568_PMU_CLKSEL_CON(1), 0, |
---|
1541 | 1507 | RK3568_PMU_CLKGATE_CON(0), 1, GFLAGS, |
---|
1542 | | - &rk3568_rtc32k_pmu_fracmux, 0), |
---|
| 1508 | + &rk3568_rtc32k_pmu_fracmux), |
---|
1543 | 1509 | |
---|
1544 | 1510 | COMPOSITE_NOMUX(XIN_OSC0_DIV, "xin_osc0_div", "xin24m", CLK_IGNORE_UNUSED, |
---|
1545 | 1511 | RK3568_PMU_CLKSEL_CON(0), 0, 5, DFLAGS, |
---|
.. | .. |
---|
1551 | 1517 | COMPOSITE_FRACMUX(CLK_UART0_FRAC, "sclk_uart0_frac", "sclk_uart0_div", CLK_SET_RATE_PARENT, |
---|
1552 | 1518 | RK3568_PMU_CLKSEL_CON(5), CLK_FRAC_DIVIDER_NO_LIMIT, |
---|
1553 | 1519 | RK3568_PMU_CLKGATE_CON(1), 4, GFLAGS, |
---|
1554 | | - &rk3568_uart0_fracmux, RK3568_UART_FRAC_MAX_PRATE), |
---|
| 1520 | + &rk3568_uart0_fracmux), |
---|
1555 | 1521 | GATE(SCLK_UART0, "sclk_uart0", "sclk_uart0_mux", 0, |
---|
1556 | 1522 | RK3568_PMU_CLKGATE_CON(1), 5, GFLAGS), |
---|
1557 | 1523 | |
---|
.. | .. |
---|
1633 | 1599 | RK3568_PMU_GRF_SOC_CON0, 0, 1, MFLAGS) |
---|
1634 | 1600 | }; |
---|
1635 | 1601 | |
---|
1636 | | -static const char *const rk3568_cru_critical_clocks[] __initconst = { |
---|
1637 | | - "armclk", |
---|
1638 | | - "pclk_core_pre", |
---|
1639 | | - "aclk_bus", |
---|
1640 | | - "pclk_bus", |
---|
1641 | | - "aclk_top_high", |
---|
1642 | | - "aclk_top_low", |
---|
1643 | | - "hclk_top", |
---|
1644 | | - "pclk_top", |
---|
1645 | | - "aclk_perimid", |
---|
1646 | | - "hclk_perimid", |
---|
1647 | | - "aclk_secure_flash", |
---|
1648 | | - "hclk_secure_flash", |
---|
1649 | | - "aclk_core_niu2bus", |
---|
1650 | | - "npll", |
---|
1651 | | - "clk_optc_arb", |
---|
1652 | | - "hclk_php", |
---|
1653 | | - "pclk_php", |
---|
1654 | | - "hclk_usb", |
---|
1655 | | - "pclk_usb", |
---|
1656 | | -}; |
---|
1657 | | - |
---|
1658 | | -static const char *const rk3568_pmucru_critical_clocks[] __initconst = { |
---|
1659 | | - "pclk_pdpmu", |
---|
1660 | | - "pclk_pmu", |
---|
1661 | | - "clk_pmu", |
---|
1662 | | -}; |
---|
1663 | | - |
---|
1664 | 1602 | static void __iomem *rk3568_cru_base; |
---|
1665 | 1603 | static void __iomem *rk3568_pmucru_base; |
---|
1666 | 1604 | |
---|
.. | .. |
---|
1679 | 1617 | 0x588, false); |
---|
1680 | 1618 | } |
---|
1681 | 1619 | } |
---|
| 1620 | + |
---|
| 1621 | +static int protect_clocks[] = { |
---|
| 1622 | + ACLK_VO, |
---|
| 1623 | + HCLK_VO, |
---|
| 1624 | + ACLK_VOP, |
---|
| 1625 | + HCLK_VOP, |
---|
| 1626 | + DCLK_VOP0, |
---|
| 1627 | + DCLK_VOP1, |
---|
| 1628 | + DCLK_VOP2, |
---|
| 1629 | +}; |
---|
1682 | 1630 | |
---|
1683 | 1631 | static void __init rk3568_pmu_clk_init(struct device_node *np) |
---|
1684 | 1632 | { |
---|
.. | .. |
---|
1709 | 1657 | rockchip_register_softrst(np, 1, reg_base + RK3568_PMU_SOFTRST_CON(0), |
---|
1710 | 1658 | ROCKCHIP_SOFTRST_HIWORD_MASK); |
---|
1711 | 1659 | |
---|
1712 | | - rockchip_clk_protect_critical(rk3568_pmucru_critical_clocks, |
---|
1713 | | - ARRAY_SIZE(rk3568_pmucru_critical_clocks)); |
---|
1714 | | - |
---|
1715 | 1660 | rockchip_clk_of_add_provider(np, ctx); |
---|
1716 | 1661 | } |
---|
1717 | 1662 | |
---|
.. | .. |
---|
1721 | 1666 | { |
---|
1722 | 1667 | struct rockchip_clk_provider *ctx; |
---|
1723 | 1668 | void __iomem *reg_base; |
---|
| 1669 | + struct clk **clks; |
---|
1724 | 1670 | |
---|
1725 | 1671 | reg_base = of_iomap(np, 0); |
---|
1726 | 1672 | if (!reg_base) { |
---|
.. | .. |
---|
1736 | 1682 | iounmap(reg_base); |
---|
1737 | 1683 | return; |
---|
1738 | 1684 | } |
---|
| 1685 | + clks = ctx->clk_data.clks; |
---|
1739 | 1686 | |
---|
1740 | 1687 | rockchip_clk_register_plls(ctx, rk3568_pll_clks, |
---|
1741 | 1688 | ARRAY_SIZE(rk3568_pll_clks), |
---|
1742 | 1689 | RK3568_GRF_SOC_STATUS0); |
---|
1743 | 1690 | |
---|
1744 | 1691 | rockchip_clk_register_armclk(ctx, ARMCLK, "armclk", |
---|
1745 | | - mux_armclk_p, ARRAY_SIZE(mux_armclk_p), |
---|
| 1692 | + 2, clks[PLL_APLL], clks[PLL_GPLL], |
---|
1746 | 1693 | &rk3568_cpuclk_data, rk3568_cpuclk_rates, |
---|
1747 | 1694 | ARRAY_SIZE(rk3568_cpuclk_rates)); |
---|
1748 | 1695 | |
---|
.. | .. |
---|
1754 | 1701 | |
---|
1755 | 1702 | rockchip_register_restart_notifier(ctx, RK3568_GLB_SRST_FST, NULL); |
---|
1756 | 1703 | |
---|
1757 | | - rockchip_clk_protect_critical(rk3568_cru_critical_clocks, |
---|
1758 | | - ARRAY_SIZE(rk3568_cru_critical_clocks)); |
---|
1759 | | - |
---|
1760 | 1704 | rockchip_clk_of_add_provider(np, ctx); |
---|
1761 | 1705 | |
---|
1762 | 1706 | if (!rk_dump_cru) |
---|
1763 | 1707 | rk_dump_cru = rk3568_dump_cru; |
---|
| 1708 | + |
---|
| 1709 | + rockchip_clk_protect(ctx, protect_clocks, ARRAY_SIZE(protect_clocks)); |
---|
1764 | 1710 | } |
---|
1765 | 1711 | |
---|
1766 | 1712 | CLK_OF_DECLARE(rk3568_cru, "rockchip,rk3568-cru", rk3568_clk_init); |
---|
1767 | 1713 | |
---|
| 1714 | +#ifdef MODULE |
---|
1768 | 1715 | struct clk_rk3568_inits { |
---|
1769 | 1716 | void (*inits)(struct device_node *np); |
---|
1770 | 1717 | }; |
---|
.. | .. |
---|
1789 | 1736 | }; |
---|
1790 | 1737 | MODULE_DEVICE_TABLE(of, clk_rk3568_match_table); |
---|
1791 | 1738 | |
---|
1792 | | -static int __init clk_rk3568_probe(struct platform_device *pdev) |
---|
| 1739 | +static int clk_rk3568_probe(struct platform_device *pdev) |
---|
1793 | 1740 | { |
---|
1794 | 1741 | struct device_node *np = pdev->dev.of_node; |
---|
1795 | 1742 | const struct of_device_id *match; |
---|
.. | .. |
---|
1807 | 1754 | } |
---|
1808 | 1755 | |
---|
1809 | 1756 | static struct platform_driver clk_rk3568_driver = { |
---|
| 1757 | + .probe = clk_rk3568_probe, |
---|
1810 | 1758 | .driver = { |
---|
1811 | 1759 | .name = "clk-rk3568", |
---|
1812 | 1760 | .of_match_table = clk_rk3568_match_table, |
---|
1813 | 1761 | .suppress_bind_attrs = true, |
---|
1814 | 1762 | }, |
---|
1815 | 1763 | }; |
---|
1816 | | -builtin_platform_driver_probe(clk_rk3568_driver, clk_rk3568_probe); |
---|
| 1764 | +module_platform_driver(clk_rk3568_driver); |
---|
1817 | 1765 | |
---|
1818 | 1766 | MODULE_DESCRIPTION("Rockchip RK3568 Clock Driver"); |
---|
1819 | 1767 | MODULE_LICENSE("GPL"); |
---|
1820 | 1768 | MODULE_ALIAS("platform:clk-rk3568"); |
---|
| 1769 | +#endif /* MODULE */ |
---|