| .. | .. |
|---|
| 136 | 136 | |
|---|
| 137 | 137 | PNAME(mux_pll_p) = { "xin24m" }; |
|---|
| 138 | 138 | PNAME(mux_24m_32k_p) = { "xin24m", "clk_32k" }; |
|---|
| 139 | | -PNAME(mux_apll_gpll_p) = { "apll", "gpll" }; |
|---|
| 140 | 139 | PNAME(mux_gpll_cpll_p) = { "gpll", "cpll" }; |
|---|
| 141 | 140 | PNAME(mux_gpll_cpll_xin24m_p) = { "gpll", "cpll", "xin24m" }; |
|---|
| 142 | 141 | PNAME(mux_100m_50m_24m_p) = { "clk_100m_src", "clk_50m_src", "xin24m" }; |
|---|
| .. | .. |
|---|
| 197 | 196 | #define MFLAGS CLK_MUX_HIWORD_MASK |
|---|
| 198 | 197 | #define DFLAGS CLK_DIVIDER_HIWORD_MASK |
|---|
| 199 | 198 | #define GFLAGS (CLK_GATE_HIWORD_MASK | CLK_GATE_SET_TO_DISABLE) |
|---|
| 200 | | - |
|---|
| 201 | | -#define RK3528_FRAC_MAX_PRATE 1188000000 |
|---|
| 202 | 199 | |
|---|
| 203 | 200 | static struct rockchip_clk_branch rk3528_uart0_fracmux __initdata = |
|---|
| 204 | 201 | MUX(CLK_UART0, "clk_uart0", sclk_uart0_src_p, CLK_SET_RATE_PARENT, |
|---|
| .. | .. |
|---|
| 304 | 301 | RK3528_CLKGATE_CON(0), 12, GFLAGS), |
|---|
| 305 | 302 | COMPOSITE_FRACMUX(CLK_UART0_FRAC, "clk_uart0_frac", "clk_uart0_src", CLK_SET_RATE_PARENT, |
|---|
| 306 | 303 | RK3528_CLKSEL_CON(5), 0, |
|---|
| 307 | | - RK3528_CLKGATE_CON(0), 13, GFLAGS, &rk3528_uart0_fracmux, RK3528_FRAC_MAX_PRATE), |
|---|
| 304 | + RK3528_CLKGATE_CON(0), 13, GFLAGS, &rk3528_uart0_fracmux), |
|---|
| 308 | 305 | GATE(SCLK_UART0, "sclk_uart0", "clk_uart0", 0, |
|---|
| 309 | 306 | RK3528_CLKGATE_CON(0), 14, GFLAGS), |
|---|
| 310 | 307 | |
|---|
| .. | .. |
|---|
| 313 | 310 | RK3528_CLKGATE_CON(0), 15, GFLAGS), |
|---|
| 314 | 311 | COMPOSITE_FRACMUX(CLK_UART1_FRAC, "clk_uart1_frac", "clk_uart1_src", CLK_SET_RATE_PARENT, |
|---|
| 315 | 312 | RK3528_CLKSEL_CON(7), 0, |
|---|
| 316 | | - RK3528_CLKGATE_CON(1), 0, GFLAGS, &rk3528_uart1_fracmux, RK3528_FRAC_MAX_PRATE), |
|---|
| 313 | + RK3528_CLKGATE_CON(1), 0, GFLAGS, &rk3528_uart1_fracmux), |
|---|
| 317 | 314 | GATE(SCLK_UART1, "sclk_uart1", "clk_uart1", 0, |
|---|
| 318 | 315 | RK3528_CLKGATE_CON(1), 1, GFLAGS), |
|---|
| 319 | 316 | |
|---|
| .. | .. |
|---|
| 322 | 319 | RK3528_CLKGATE_CON(1), 2, GFLAGS), |
|---|
| 323 | 320 | COMPOSITE_FRACMUX(CLK_UART2_FRAC, "clk_uart2_frac", "clk_uart2_src", CLK_SET_RATE_PARENT, |
|---|
| 324 | 321 | RK3528_CLKSEL_CON(9), 0, |
|---|
| 325 | | - RK3528_CLKGATE_CON(1), 3, GFLAGS, &rk3528_uart2_fracmux, RK3528_FRAC_MAX_PRATE), |
|---|
| 322 | + RK3528_CLKGATE_CON(1), 3, GFLAGS, &rk3528_uart2_fracmux), |
|---|
| 326 | 323 | GATE(SCLK_UART2, "sclk_uart2", "clk_uart2", 0, |
|---|
| 327 | 324 | RK3528_CLKGATE_CON(1), 4, GFLAGS), |
|---|
| 328 | 325 | |
|---|
| .. | .. |
|---|
| 331 | 328 | RK3528_CLKGATE_CON(1), 5, GFLAGS), |
|---|
| 332 | 329 | COMPOSITE_FRACMUX(CLK_UART3_FRAC, "clk_uart3_frac", "clk_uart3_src", CLK_SET_RATE_PARENT, |
|---|
| 333 | 330 | RK3528_CLKSEL_CON(11), 0, |
|---|
| 334 | | - RK3528_CLKGATE_CON(1), 6, GFLAGS, &rk3528_uart3_fracmux, RK3528_FRAC_MAX_PRATE), |
|---|
| 331 | + RK3528_CLKGATE_CON(1), 6, GFLAGS, &rk3528_uart3_fracmux), |
|---|
| 335 | 332 | GATE(SCLK_UART3, "sclk_uart3", "clk_uart3", 0, |
|---|
| 336 | 333 | RK3528_CLKGATE_CON(1), 7, GFLAGS), |
|---|
| 337 | 334 | |
|---|
| .. | .. |
|---|
| 340 | 337 | RK3528_CLKGATE_CON(1), 8, GFLAGS), |
|---|
| 341 | 338 | COMPOSITE_FRACMUX(CLK_UART4_FRAC, "clk_uart4_frac", "clk_uart4_src", CLK_SET_RATE_PARENT, |
|---|
| 342 | 339 | RK3528_CLKSEL_CON(13), 0, |
|---|
| 343 | | - RK3528_CLKGATE_CON(1), 9, GFLAGS, &rk3528_uart4_fracmux, RK3528_FRAC_MAX_PRATE), |
|---|
| 340 | + RK3528_CLKGATE_CON(1), 9, GFLAGS, &rk3528_uart4_fracmux), |
|---|
| 344 | 341 | GATE(SCLK_UART4, "sclk_uart4", "clk_uart4", 0, |
|---|
| 345 | 342 | RK3528_CLKGATE_CON(1), 10, GFLAGS), |
|---|
| 346 | 343 | |
|---|
| .. | .. |
|---|
| 349 | 346 | RK3528_CLKGATE_CON(1), 11, GFLAGS), |
|---|
| 350 | 347 | COMPOSITE_FRACMUX(CLK_UART5_FRAC, "clk_uart5_frac", "clk_uart5_src", CLK_SET_RATE_PARENT, |
|---|
| 351 | 348 | RK3528_CLKSEL_CON(15), 0, |
|---|
| 352 | | - RK3528_CLKGATE_CON(1), 12, GFLAGS, &rk3528_uart5_fracmux, RK3528_FRAC_MAX_PRATE), |
|---|
| 349 | + RK3528_CLKGATE_CON(1), 12, GFLAGS, &rk3528_uart5_fracmux), |
|---|
| 353 | 350 | GATE(SCLK_UART5, "sclk_uart5", "clk_uart5", 0, |
|---|
| 354 | 351 | RK3528_CLKGATE_CON(1), 13, GFLAGS), |
|---|
| 355 | 352 | |
|---|
| .. | .. |
|---|
| 358 | 355 | RK3528_CLKGATE_CON(1), 14, GFLAGS), |
|---|
| 359 | 356 | COMPOSITE_FRACMUX(CLK_UART6_FRAC, "clk_uart6_frac", "clk_uart6_src", CLK_SET_RATE_PARENT, |
|---|
| 360 | 357 | RK3528_CLKSEL_CON(17), 0, |
|---|
| 361 | | - RK3528_CLKGATE_CON(1), 15, GFLAGS, &rk3528_uart6_fracmux, RK3528_FRAC_MAX_PRATE), |
|---|
| 358 | + RK3528_CLKGATE_CON(1), 15, GFLAGS, &rk3528_uart6_fracmux), |
|---|
| 362 | 359 | GATE(SCLK_UART6, "sclk_uart6", "clk_uart6", 0, |
|---|
| 363 | 360 | RK3528_CLKGATE_CON(2), 0, GFLAGS), |
|---|
| 364 | 361 | |
|---|
| .. | .. |
|---|
| 367 | 364 | RK3528_CLKGATE_CON(2), 1, GFLAGS), |
|---|
| 368 | 365 | COMPOSITE_FRACMUX(CLK_UART7_FRAC, "clk_uart7_frac", "clk_uart7_src", CLK_SET_RATE_PARENT, |
|---|
| 369 | 366 | RK3528_CLKSEL_CON(19), 0, |
|---|
| 370 | | - RK3528_CLKGATE_CON(2), 2, GFLAGS, &rk3528_uart7_fracmux, RK3528_FRAC_MAX_PRATE), |
|---|
| 367 | + RK3528_CLKGATE_CON(2), 2, GFLAGS, &rk3528_uart7_fracmux), |
|---|
| 371 | 368 | GATE(SCLK_UART7, "sclk_uart7", "clk_uart7", 0, |
|---|
| 372 | 369 | RK3528_CLKGATE_CON(2), 3, GFLAGS), |
|---|
| 373 | 370 | |
|---|
| .. | .. |
|---|
| 376 | 373 | RK3528_CLKGATE_CON(2), 5, GFLAGS), |
|---|
| 377 | 374 | COMPOSITE_FRACMUX(CLK_I2S0_2CH_FRAC, "clk_i2s0_2ch_frac", "clk_i2s0_2ch_src", CLK_SET_RATE_PARENT, |
|---|
| 378 | 375 | RK3528_CLKSEL_CON(21), 0, |
|---|
| 379 | | - RK3528_CLKGATE_CON(2), 6, GFLAGS, &mclk_i2s0_2ch_sai_src_fracmux, RK3528_FRAC_MAX_PRATE), |
|---|
| 376 | + RK3528_CLKGATE_CON(2), 6, GFLAGS, &mclk_i2s0_2ch_sai_src_fracmux), |
|---|
| 380 | 377 | GATE(MCLK_I2S0_2CH_SAI_SRC, "mclk_i2s0_2ch_sai_src", "mclk_i2s0_2ch_sai_src_pre", 0, |
|---|
| 381 | 378 | RK3528_CLKGATE_CON(2), 7, GFLAGS), |
|---|
| 382 | 379 | |
|---|
| .. | .. |
|---|
| 385 | 382 | RK3528_CLKGATE_CON(2), 11, GFLAGS), |
|---|
| 386 | 383 | COMPOSITE_FRACMUX(CLK_I2S1_8CH_FRAC, "clk_i2s1_8ch_frac", "clk_i2s1_8ch_src", CLK_SET_RATE_PARENT, |
|---|
| 387 | 384 | RK3528_CLKSEL_CON(25), 0, |
|---|
| 388 | | - RK3528_CLKGATE_CON(2), 12, GFLAGS, &mclk_i2s1_8ch_sai_src_fracmux, RK3528_FRAC_MAX_PRATE), |
|---|
| 385 | + RK3528_CLKGATE_CON(2), 12, GFLAGS, &mclk_i2s1_8ch_sai_src_fracmux), |
|---|
| 389 | 386 | GATE(MCLK_I2S1_8CH_SAI_SRC, "mclk_i2s1_8ch_sai_src", "mclk_i2s1_8ch_sai_src_pre", 0, |
|---|
| 390 | 387 | RK3528_CLKGATE_CON(2), 13, GFLAGS), |
|---|
| 391 | 388 | |
|---|
| .. | .. |
|---|
| 394 | 391 | RK3528_CLKGATE_CON(2), 14, GFLAGS), |
|---|
| 395 | 392 | COMPOSITE_FRACMUX(CLK_I2S2_2CH_FRAC, "clk_i2s2_2ch_frac", "clk_i2s2_2ch_src", CLK_SET_RATE_PARENT, |
|---|
| 396 | 393 | RK3528_CLKSEL_CON(27), 0, |
|---|
| 397 | | - RK3528_CLKGATE_CON(2), 15, GFLAGS, &mclk_i2s2_2ch_sai_src_fracmux, RK3528_FRAC_MAX_PRATE), |
|---|
| 394 | + RK3528_CLKGATE_CON(2), 15, GFLAGS, &mclk_i2s2_2ch_sai_src_fracmux), |
|---|
| 398 | 395 | GATE(MCLK_I2S2_2CH_SAI_SRC, "mclk_i2s2_2ch_sai_src", "mclk_i2s2_2ch_sai_src_pre", 0, |
|---|
| 399 | 396 | RK3528_CLKGATE_CON(3), 0, GFLAGS), |
|---|
| 400 | 397 | |
|---|
| .. | .. |
|---|
| 403 | 400 | RK3528_CLKGATE_CON(2), 8, GFLAGS), |
|---|
| 404 | 401 | COMPOSITE_FRACMUX(CLK_I2S3_8CH_FRAC, "clk_i2s3_8ch_frac", "clk_i2s3_8ch_src", CLK_SET_RATE_PARENT, |
|---|
| 405 | 402 | RK3528_CLKSEL_CON(23), 0, |
|---|
| 406 | | - RK3528_CLKGATE_CON(2), 9, GFLAGS, &mclk_i2s3_8ch_sai_src_fracmux, RK3528_FRAC_MAX_PRATE), |
|---|
| 403 | + RK3528_CLKGATE_CON(2), 9, GFLAGS, &mclk_i2s3_8ch_sai_src_fracmux), |
|---|
| 407 | 404 | GATE(MCLK_I2S3_8CH_SAI_SRC, "mclk_i2s3_8ch_sai_src", "mclk_i2s3_8ch_sai_src_pre", 0, |
|---|
| 408 | 405 | RK3528_CLKGATE_CON(2), 10, GFLAGS), |
|---|
| 409 | 406 | |
|---|
| .. | .. |
|---|
| 412 | 409 | RK3528_CLKGATE_CON(3), 4, GFLAGS), |
|---|
| 413 | 410 | COMPOSITE_FRACMUX(CLK_SPDIF_FRAC, "clk_spdif_frac", "clk_spdif_src", CLK_SET_RATE_PARENT, |
|---|
| 414 | 411 | RK3528_CLKSEL_CON(31), 0, |
|---|
| 415 | | - RK3528_CLKGATE_CON(3), 5, GFLAGS, &mclk_spdif_src_fracmux, RK3528_FRAC_MAX_PRATE), |
|---|
| 412 | + RK3528_CLKGATE_CON(3), 5, GFLAGS, &mclk_spdif_src_fracmux), |
|---|
| 416 | 413 | GATE(MCLK_SPDIF_SRC, "mclk_spdif_src", "mclk_spdif_src_pre", 0, |
|---|
| 417 | 414 | RK3528_CLKGATE_CON(3), 6, GFLAGS), |
|---|
| 418 | 415 | |
|---|
| .. | .. |
|---|
| 550 | 547 | |
|---|
| 551 | 548 | COMPOSITE_FRAC(XIN_OSC0_DIV, "xin_osc0_div", "xin24m", 0, |
|---|
| 552 | 549 | RK3528_PMU_CLKSEL_CON(1), 0, |
|---|
| 553 | | - RK3528_PMU_CLKGATE_CON(1), 0, GFLAGS, 0), |
|---|
| 550 | + RK3528_PMU_CLKGATE_CON(1), 0, GFLAGS), |
|---|
| 554 | 551 | /* clk_32k: internal! No path from external osc 32k */ |
|---|
| 555 | 552 | MUX(CLK_DEEPSLOW, "clk_32k", clk_32k_p, CLK_IS_CRITICAL, |
|---|
| 556 | 553 | RK3528_PMU_CLKSEL_CON(2), 0, 1, MFLAGS), |
|---|
| .. | .. |
|---|
| 803 | 800 | COMPOSITE_NODIV(ACLK_VO_ROOT, "aclk_vo_root", mux_339m_200m_100m_24m_p, CLK_IS_CRITICAL, |
|---|
| 804 | 801 | RK3528_CLKSEL_CON(83), 0, 2, MFLAGS, |
|---|
| 805 | 802 | RK3528_CLKGATE_CON(39), 0, GFLAGS), |
|---|
| 806 | | - GATE(ACLK_RGA2E, "aclk_rga2e", "aclk_vo_root", 0, |
|---|
| 807 | | - RK3528_CLKGATE_CON(39), 8, GFLAGS | CLK_GATE_NO_SET_RATE), |
|---|
| 808 | | - GATE(ACLK_VDPP, "aclk_vdpp", "aclk_vo_root", 0, |
|---|
| 809 | | - RK3528_CLKGATE_CON(39), 11, GFLAGS | CLK_GATE_NO_SET_RATE), |
|---|
| 810 | | - GATE(ACLK_HDCP, "aclk_hdcp", "aclk_vo_root", 0, |
|---|
| 811 | | - RK3528_CLKGATE_CON(41), 0, GFLAGS | CLK_GATE_NO_SET_RATE), |
|---|
| 803 | + GATE_NO_SET_RATE(ACLK_RGA2E, "aclk_rga2e", "aclk_vo_root", 0, |
|---|
| 804 | + RK3528_CLKGATE_CON(39), 8, GFLAGS), |
|---|
| 805 | + GATE_NO_SET_RATE(ACLK_VDPP, "aclk_vdpp", "aclk_vo_root", 0, |
|---|
| 806 | + RK3528_CLKGATE_CON(39), 11, GFLAGS), |
|---|
| 807 | + GATE_NO_SET_RATE(ACLK_HDCP, "aclk_hdcp", "aclk_vo_root", 0, |
|---|
| 808 | + RK3528_CLKGATE_CON(41), 0, GFLAGS), |
|---|
| 812 | 809 | |
|---|
| 813 | 810 | COMPOSITE(CCLK_SRC_SDMMC0, "cclk_src_sdmmc0", mux_gpll_cpll_xin24m_p, 0, |
|---|
| 814 | 811 | RK3528_CLKSEL_CON(85), 6, 2, MFLAGS, 0, 6, DFLAGS, |
|---|
| .. | .. |
|---|
| 938 | 935 | COMPOSITE_NODIV(ACLK_VPU_L_ROOT, "aclk_vpu_l_root", mux_200m_100m_24m_p, CLK_IS_CRITICAL, |
|---|
| 939 | 936 | RK3528_CLKSEL_CON(60), 0, 2, MFLAGS, |
|---|
| 940 | 937 | RK3528_CLKGATE_CON(25), 0, GFLAGS), |
|---|
| 941 | | - GATE(ACLK_EMMC, "aclk_emmc", "aclk_vpu_l_root", 0, |
|---|
| 942 | | - RK3528_CLKGATE_CON(26), 1, GFLAGS | CLK_GATE_NO_SET_RATE), |
|---|
| 943 | | - GATE(ACLK_MAC_VPU, "aclk_gmac1", "aclk_vpu_l_root", 0, |
|---|
| 944 | | - RK3528_CLKGATE_CON(28), 5, GFLAGS | CLK_GATE_NO_SET_RATE), |
|---|
| 945 | | - GATE(ACLK_PCIE, "aclk_pcie", "aclk_vpu_l_root", 0, |
|---|
| 946 | | - RK3528_CLKGATE_CON(30), 3, GFLAGS | CLK_GATE_NO_SET_RATE), |
|---|
| 938 | + GATE_NO_SET_RATE(ACLK_EMMC, "aclk_emmc", "aclk_vpu_l_root", 0, |
|---|
| 939 | + RK3528_CLKGATE_CON(26), 1, GFLAGS), |
|---|
| 940 | + GATE_NO_SET_RATE(ACLK_MAC_VPU, "aclk_gmac1", "aclk_vpu_l_root", 0, |
|---|
| 941 | + RK3528_CLKGATE_CON(28), 5, GFLAGS), |
|---|
| 942 | + GATE_NO_SET_RATE(ACLK_PCIE, "aclk_pcie", "aclk_vpu_l_root", 0, |
|---|
| 943 | + RK3528_CLKGATE_CON(30), 3, GFLAGS), |
|---|
| 947 | 944 | |
|---|
| 948 | | - GATE(ACLK_USB3OTG, "aclk_usb3otg", "aclk_vpu_l_root", 0, |
|---|
| 949 | | - RK3528_CLKGATE_CON(33), 1, GFLAGS | CLK_GATE_NO_SET_RATE), |
|---|
| 945 | + GATE_NO_SET_RATE(ACLK_USB3OTG, "aclk_usb3otg", "aclk_vpu_l_root", 0, |
|---|
| 946 | + RK3528_CLKGATE_CON(33), 1, GFLAGS), |
|---|
| 950 | 947 | |
|---|
| 951 | 948 | COMPOSITE_NODIV(HCLK_VPU_ROOT, "hclk_vpu_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL, |
|---|
| 952 | 949 | RK3528_CLKSEL_CON(61), 2, 2, MFLAGS, |
|---|
| .. | .. |
|---|
| 996 | 993 | RK3528_CLKSEL_CON(61), 0, 2, MFLAGS, |
|---|
| 997 | 994 | RK3528_CLKGATE_CON(25), 3, GFLAGS), |
|---|
| 998 | 995 | GATE(ACLK_VPU, "aclk_vpu", "aclk_vpu_root", 0, |
|---|
| 999 | | - RK3528_CLKGATE_CON(25), 9, GFLAGS | CLK_GATE_NO_SET_RATE), |
|---|
| 996 | + RK3528_CLKGATE_CON(25), 9, GFLAGS), |
|---|
| 1000 | 997 | |
|---|
| 1001 | 998 | COMPOSITE_NODIV(CLK_SPI1, "clk_spi1", mux_200m_100m_50m_24m_p, 0, |
|---|
| 1002 | 999 | RK3528_CLKSEL_CON(63), 10, 2, MFLAGS, |
|---|
| .. | .. |
|---|
| 1108 | 1105 | { |
|---|
| 1109 | 1106 | struct rockchip_clk_provider *ctx; |
|---|
| 1110 | 1107 | void __iomem *reg_base; |
|---|
| 1108 | + struct clk **clks; |
|---|
| 1111 | 1109 | |
|---|
| 1112 | 1110 | reg_base = of_iomap(np, 0); |
|---|
| 1113 | 1111 | if (!reg_base) { |
|---|
| .. | .. |
|---|
| 1123 | 1121 | iounmap(reg_base); |
|---|
| 1124 | 1122 | return; |
|---|
| 1125 | 1123 | } |
|---|
| 1124 | + clks = ctx->clk_data.clks; |
|---|
| 1126 | 1125 | |
|---|
| 1127 | 1126 | rockchip_clk_register_plls(ctx, rk3528_pll_clks, |
|---|
| 1128 | 1127 | ARRAY_SIZE(rk3528_pll_clks), |
|---|
| 1129 | 1128 | RK3528_GRF_SOC_STATUS0); |
|---|
| 1130 | 1129 | |
|---|
| 1131 | 1130 | rockchip_clk_register_armclk(ctx, ARMCLK, "armclk", |
|---|
| 1132 | | - mux_apll_gpll_p, ARRAY_SIZE(mux_apll_gpll_p), |
|---|
| 1131 | + 2, clks[PLL_APLL], clks[PLL_GPLL], |
|---|
| 1133 | 1132 | &rk3528_cpuclk_data, rk3528_cpuclk_rates, |
|---|
| 1134 | 1133 | ARRAY_SIZE(rk3528_cpuclk_rates)); |
|---|
| 1135 | 1134 | rockchip_clk_register_branches(ctx, rk3528_clk_branches, |
|---|