|
29 | 29 | * power, but avoids leaking implementation details into DT or hanging the
|
30 | 30 | * system.
|
31 | 31 | */
|
32 |
| -#define GATE_LINK(_id, cname, pname, linkname, f, o, b, gf) \ |
| 32 | +#define GATE_LINK(_id, cname, pname, linkedclk, f, o, b, gf) \ |
33 | 33 | GATE(_id, cname, pname, f, o, b, gf)
|
34 | 34 | #define RK3588_LINKED_CLK CLK_IS_CRITICAL
|
35 | 35 |
|
@@ -1004,7 +1004,7 @@ static struct rockchip_clk_branch rk3588_clk_branches[] __initdata = {
|
1004 | 1004 | GATE(PCLK_MAILBOX1, "pclk_mailbox1", "pclk_top_root", 0,
|
1005 | 1005 | RK3588_CLKGATE_CON(16), 12, GFLAGS),
|
1006 | 1006 | GATE(PCLK_MAILBOX2, "pclk_mailbox2", "pclk_top_root", 0,
|
1007 |
| - RK3588_CLKGATE_CON(16), 13, GFLAGS), |
| 1007 | + RK3588_CLKGATE_CON(16), 13, GFLAGS), |
1008 | 1008 | GATE(PCLK_PMU2, "pclk_pmu2", "pclk_top_root", CLK_IS_CRITICAL,
|
1009 | 1009 | RK3588_CLKGATE_CON(19), 3, GFLAGS),
|
1010 | 1010 | GATE(PCLK_PMUCM0_INTMUX, "pclk_pmucm0_intmux", "pclk_top_root", CLK_IS_CRITICAL,
|
@@ -1851,8 +1851,6 @@ static struct rockchip_clk_branch rk3588_clk_branches[] __initdata = {
|
1851 | 1851 | RK3588_CLKGATE_CON(56), 0, GFLAGS),
|
1852 | 1852 | GATE(PCLK_TRNG0, "pclk_trng0", "pclk_vo0_root", 0,
|
1853 | 1853 | RK3588_CLKGATE_CON(56), 1, GFLAGS),
|
1854 |
| - GATE(PCLK_VO0GRF, "pclk_vo0grf", "pclk_vo0_root", CLK_IGNORE_UNUSED, |
1855 |
| - RK3588_CLKGATE_CON(55), 10, GFLAGS), |
1856 | 1854 | COMPOSITE(CLK_I2S4_8CH_TX_SRC, "clk_i2s4_8ch_tx_src", gpll_aupll_p, 0,
|
1857 | 1855 | RK3588_CLKSEL_CON(118), 5, 1, MFLAGS, 0, 5, DFLAGS,
|
1858 | 1856 | RK3588_CLKGATE_CON(56), 11, GFLAGS),
|
@@ -1998,8 +1996,6 @@ static struct rockchip_clk_branch rk3588_clk_branches[] __initdata = {
|
1998 | 1996 | RK3588_CLKGATE_CON(60), 9, GFLAGS),
|
1999 | 1997 | GATE(PCLK_TRNG1, "pclk_trng1", "pclk_vo1_root", 0,
|
2000 | 1998 | RK3588_CLKGATE_CON(60), 10, GFLAGS),
|
2001 |
| - GATE(0, "pclk_vo1grf", "pclk_vo1_root", CLK_IGNORE_UNUSED, |
2002 |
| - RK3588_CLKGATE_CON(59), 12, GFLAGS), |
2003 | 1999 | GATE(PCLK_S_EDP0, "pclk_s_edp0", "pclk_vo1_s_root", 0,
|
2004 | 2000 | RK3588_CLKGATE_CON(59), 14, GFLAGS),
|
2005 | 2001 | GATE(PCLK_S_EDP1, "pclk_s_edp1", "pclk_vo1_s_root", 0,
|
@@ -2433,40 +2429,45 @@ static struct rockchip_clk_branch rk3588_clk_branches[] __initdata = {
|
2433 | 2429 | GATE(ACLK_AV1, "aclk_av1", "aclk_av1_pre", 0,
|
2434 | 2430 | RK3588_CLKGATE_CON(68), 2, GFLAGS),
|
2435 | 2431 |
|
2436 |
| - GATE_LINK(ACLK_ISP1_PRE, "aclk_isp1_pre", "aclk_isp1_root", "aclk_vi_root", 0, RK3588_CLKGATE_CON(26), 6, GFLAGS), |
2437 |
| - GATE_LINK(HCLK_ISP1_PRE, "hclk_isp1_pre", "hclk_isp1_root", "hclk_vi_root", 0, RK3588_CLKGATE_CON(26), 8, GFLAGS), |
2438 |
| - GATE_LINK(HCLK_NVM, "hclk_nvm", "hclk_nvm_root", "aclk_nvm_root", RK3588_LINKED_CLK, RK3588_CLKGATE_CON(31), 2, GFLAGS), |
2439 |
| - GATE_LINK(ACLK_USB, "aclk_usb", "aclk_usb_root", "aclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(42), 2, GFLAGS), |
2440 |
| - GATE_LINK(HCLK_USB, "hclk_usb", "hclk_usb_root", "hclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(42), 3, GFLAGS), |
2441 |
| - GATE_LINK(ACLK_JPEG_DECODER_PRE, "aclk_jpeg_decoder_pre", "aclk_jpeg_decoder_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(44), 7, GFLAGS), |
2442 |
| - GATE_LINK(ACLK_VDPU_LOW_PRE, "aclk_vdpu_low_pre", "aclk_vdpu_low_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(44), 5, GFLAGS), |
2443 |
| - GATE_LINK(ACLK_RKVENC1_PRE, "aclk_rkvenc1_pre", "aclk_rkvenc1_root", "aclk_rkvenc0", 0, RK3588_CLKGATE_CON(48), 3, GFLAGS), |
2444 |
| - GATE_LINK(HCLK_RKVENC1_PRE, "hclk_rkvenc1_pre", "hclk_rkvenc1_root", "hclk_rkvenc0", 0, RK3588_CLKGATE_CON(48), 2, GFLAGS), |
2445 |
| - GATE_LINK(HCLK_RKVDEC0_PRE, "hclk_rkvdec0_pre", "hclk_rkvdec0_root", "hclk_vdpu_root", 0, RK3588_CLKGATE_CON(40), 5, GFLAGS), |
2446 |
| - GATE_LINK(ACLK_RKVDEC0_PRE, "aclk_rkvdec0_pre", "aclk_rkvdec0_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(40), 6, GFLAGS), |
2447 |
| - GATE_LINK(HCLK_RKVDEC1_PRE, "hclk_rkvdec1_pre", "hclk_rkvdec1_root", "hclk_vdpu_root", 0, RK3588_CLKGATE_CON(41), 4, GFLAGS), |
2448 |
| - GATE_LINK(ACLK_RKVDEC1_PRE, "aclk_rkvdec1_pre", "aclk_rkvdec1_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(41), 5, GFLAGS), |
2449 |
| - GATE_LINK(ACLK_HDCP0_PRE, "aclk_hdcp0_pre", "aclk_vo0_root", "aclk_vop_low_root", 0, RK3588_CLKGATE_CON(55), 9, GFLAGS), |
2450 |
| - GATE_LINK(HCLK_VO0, "hclk_vo0", "hclk_vo0_root", "hclk_vop_root", 0, RK3588_CLKGATE_CON(55), 5, GFLAGS), |
2451 |
| - GATE_LINK(ACLK_HDCP1_PRE, "aclk_hdcp1_pre", "aclk_hdcp1_root", "aclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(59), 6, GFLAGS), |
2452 |
| - GATE_LINK(HCLK_VO1, "hclk_vo1", "hclk_vo1_root", "hclk_vo1usb_top_root", 0, RK3588_CLKGATE_CON(59), 9, GFLAGS), |
2453 |
| - GATE_LINK(ACLK_AV1_PRE, "aclk_av1_pre", "aclk_av1_root", "aclk_vdpu_root", 0, RK3588_CLKGATE_CON(68), 1, GFLAGS), |
2454 |
| - GATE_LINK(PCLK_AV1_PRE, "pclk_av1_pre", "pclk_av1_root", "hclk_vdpu_root", 0, RK3588_CLKGATE_CON(68), 4, GFLAGS), |
2455 |
| - GATE_LINK(HCLK_SDIO_PRE, "hclk_sdio_pre", "hclk_sdio_root", "hclk_nvm", 0, RK3588_CLKGATE_CON(75), 1, GFLAGS), |
| 2432 | + GATE_LINK(ACLK_ISP1_PRE, "aclk_isp1_pre", "aclk_isp1_root", ACLK_VI_ROOT, 0, RK3588_CLKGATE_CON(26), 6, GFLAGS), |
| 2433 | + GATE_LINK(HCLK_ISP1_PRE, "hclk_isp1_pre", "hclk_isp1_root", HCLK_VI_ROOT, 0, RK3588_CLKGATE_CON(26), 8, GFLAGS), |
| 2434 | + GATE_LINK(HCLK_NVM, "hclk_nvm", "hclk_nvm_root", ACLK_NVM_ROOT, RK3588_LINKED_CLK, RK3588_CLKGATE_CON(31), 2, GFLAGS), |
| 2435 | + GATE_LINK(ACLK_USB, "aclk_usb", "aclk_usb_root", ACLK_VO1USB_TOP_ROOT, 0, RK3588_CLKGATE_CON(42), 2, GFLAGS), |
| 2436 | + GATE_LINK(HCLK_USB, "hclk_usb", "hclk_usb_root", HCLK_VO1USB_TOP_ROOT, 0, RK3588_CLKGATE_CON(42), 3, GFLAGS), |
| 2437 | + GATE_LINK(ACLK_JPEG_DECODER_PRE, "aclk_jpeg_decoder_pre", "aclk_jpeg_decoder_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(44), 7, GFLAGS), |
| 2438 | + GATE_LINK(ACLK_VDPU_LOW_PRE, "aclk_vdpu_low_pre", "aclk_vdpu_low_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(44), 5, GFLAGS), |
| 2439 | + GATE_LINK(ACLK_RKVENC1_PRE, "aclk_rkvenc1_pre", "aclk_rkvenc1_root", ACLK_RKVENC0, 0, RK3588_CLKGATE_CON(48), 3, GFLAGS), |
| 2440 | + GATE_LINK(HCLK_RKVENC1_PRE, "hclk_rkvenc1_pre", "hclk_rkvenc1_root", HCLK_RKVENC0, 0, RK3588_CLKGATE_CON(48), 2, GFLAGS), |
| 2441 | + GATE_LINK(HCLK_RKVDEC0_PRE, "hclk_rkvdec0_pre", "hclk_rkvdec0_root", HCLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(40), 5, GFLAGS), |
| 2442 | + GATE_LINK(ACLK_RKVDEC0_PRE, "aclk_rkvdec0_pre", "aclk_rkvdec0_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(40), 6, GFLAGS), |
| 2443 | + GATE_LINK(HCLK_RKVDEC1_PRE, "hclk_rkvdec1_pre", "hclk_rkvdec1_root", HCLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(41), 4, GFLAGS), |
| 2444 | + GATE_LINK(ACLK_RKVDEC1_PRE, "aclk_rkvdec1_pre", "aclk_rkvdec1_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(41), 5, GFLAGS), |
| 2445 | + GATE_LINK(ACLK_HDCP0_PRE, "aclk_hdcp0_pre", "aclk_vo0_root", ACLK_VOP_LOW_ROOT, 0, RK3588_CLKGATE_CON(55), 9, GFLAGS), |
| 2446 | + GATE_LINK(HCLK_VO0, "hclk_vo0", "hclk_vo0_root", HCLK_VOP_ROOT, RK3588_LINKED_CLK, RK3588_CLKGATE_CON(55), 5, GFLAGS), |
| 2447 | + GATE_LINK(ACLK_HDCP1_PRE, "aclk_hdcp1_pre", "aclk_hdcp1_root", ACLK_VO1USB_TOP_ROOT, 0, RK3588_CLKGATE_CON(59), 6, GFLAGS), |
| 2448 | + GATE_LINK(HCLK_VO1, "hclk_vo1", "hclk_vo1_root", HCLK_VO1USB_TOP_ROOT, RK3588_LINKED_CLK, RK3588_CLKGATE_CON(59), 9, GFLAGS), |
| 2449 | + GATE_LINK(ACLK_AV1_PRE, "aclk_av1_pre", "aclk_av1_root", ACLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(68), 1, GFLAGS), |
| 2450 | + GATE_LINK(PCLK_AV1_PRE, "pclk_av1_pre", "pclk_av1_root", HCLK_VDPU_ROOT, 0, RK3588_CLKGATE_CON(68), 4, GFLAGS), |
| 2451 | + GATE_LINK(HCLK_SDIO_PRE, "hclk_sdio_pre", "hclk_sdio_root", HCLK_NVM, 0, RK3588_CLKGATE_CON(75), 1, GFLAGS), |
| 2452 | + GATE_LINK(PCLK_VO0GRF, "pclk_vo0grf", "pclk_vo0_root", HCLK_VO0, CLK_IGNORE_UNUSED, RK3588_CLKGATE_CON(55), 10, GFLAGS), |
| 2453 | + GATE_LINK(PCLK_VO1GRF, "pclk_vo1grf", "pclk_vo1_root", HCLK_VO1, CLK_IGNORE_UNUSED, RK3588_CLKGATE_CON(59), 12, GFLAGS), |
2456 | 2454 | };
|
2457 | 2455 |
|
2458 | 2456 | static void __init rk3588_clk_init(struct device_node *np)
|
2459 | 2457 | {
|
2460 | 2458 | struct rockchip_clk_provider *ctx;
|
| 2459 | + unsigned long clk_nr_clks; |
2461 | 2460 | void __iomem *reg_base;
|
2462 | 2461 |
|
| 2462 | + clk_nr_clks = rockchip_clk_find_max_clk_id(rk3588_clk_branches, |
| 2463 | + ARRAY_SIZE(rk3588_clk_branches)) + 1; |
2463 | 2464 | reg_base = of_iomap(np, 0);
|
2464 | 2465 | if (!reg_base) {
|
2465 | 2466 | pr_err("%s: could not map cru region\n", __func__);
|
2466 | 2467 | return;
|
2467 | 2468 | }
|
2468 | 2469 |
|
2469 |
| - ctx = rockchip_clk_init(np, reg_base, CLK_NR_CLKS); |
| 2470 | + ctx = rockchip_clk_init(np, reg_base, clk_nr_clks); |
2470 | 2471 | if (IS_ERR(ctx)) {
|
2471 | 2472 | pr_err("%s: rockchip clk init failed\n", __func__);
|
2472 | 2473 | iounmap(reg_base);
|
|
0 commit comments