Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: qcom: gcc-msm8996: Remove RPM bus clocks

The GCC driver contains clocks that are owned (meaning configured and
scaled) by the RPM core.

Remove them from Linux to stop interjecting the RPM's logic.

Fixes: b1e010c0730a ("clk: qcom: Add MSM8996 Global Clock Control (GCC) driver")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Tested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20230830-topic-rpmbusclocks8996gcc-v1-1-9e99bedcdc3b@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>

authored by

Konrad Dybcio and committed by
Bjorn Andersson
4afda5f6 ccd8ab03

+5 -232
+5 -232
drivers/clk/qcom/gcc-msm8996.c
··· 244 244 { .hw = &gpll0_early_div.hw } 245 245 }; 246 246 247 - static const struct freq_tbl ftbl_system_noc_clk_src[] = { 248 - F(19200000, P_XO, 1, 0, 0), 249 - F(50000000, P_GPLL0_EARLY_DIV, 6, 0, 0), 250 - F(100000000, P_GPLL0, 6, 0, 0), 251 - F(150000000, P_GPLL0, 4, 0, 0), 252 - F(200000000, P_GPLL0, 3, 0, 0), 253 - F(240000000, P_GPLL0, 2.5, 0, 0), 254 - { } 255 - }; 256 - 257 - static struct clk_rcg2 system_noc_clk_src = { 258 - .cmd_rcgr = 0x0401c, 259 - .hid_width = 5, 260 - .parent_map = gcc_xo_gpll0_gpll0_early_div_map, 261 - .freq_tbl = ftbl_system_noc_clk_src, 262 - .clkr.hw.init = &(struct clk_init_data){ 263 - .name = "system_noc_clk_src", 264 - .parent_data = gcc_xo_gpll0_gpll0_early_div, 265 - .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_early_div), 266 - .ops = &clk_rcg2_ops, 267 - }, 268 - }; 269 - 270 - static const struct freq_tbl ftbl_config_noc_clk_src[] = { 271 - F(19200000, P_XO, 1, 0, 0), 272 - F(37500000, P_GPLL0, 16, 0, 0), 273 - F(75000000, P_GPLL0, 8, 0, 0), 274 - { } 275 - }; 276 - 277 - static struct clk_rcg2 config_noc_clk_src = { 278 - .cmd_rcgr = 0x0500c, 279 - .hid_width = 5, 280 - .parent_map = gcc_xo_gpll0_map, 281 - .freq_tbl = ftbl_config_noc_clk_src, 282 - .clkr.hw.init = &(struct clk_init_data){ 283 - .name = "config_noc_clk_src", 284 - .parent_data = gcc_xo_gpll0, 285 - .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 286 - .ops = &clk_rcg2_ops, 287 - }, 288 - }; 289 - 290 - static const struct freq_tbl ftbl_periph_noc_clk_src[] = { 291 - F(19200000, P_XO, 1, 0, 0), 292 - F(37500000, P_GPLL0, 16, 0, 0), 293 - F(50000000, P_GPLL0, 12, 0, 0), 294 - F(75000000, P_GPLL0, 8, 0, 0), 295 - F(100000000, P_GPLL0, 6, 0, 0), 296 - { } 297 - }; 298 - 299 - static struct clk_rcg2 periph_noc_clk_src = { 300 - .cmd_rcgr = 0x06014, 301 - .hid_width = 5, 302 - .parent_map = gcc_xo_gpll0_map, 303 - .freq_tbl = ftbl_periph_noc_clk_src, 304 - .clkr.hw.init = &(struct clk_init_data){ 305 - .name = "periph_noc_clk_src", 306 - .parent_data = gcc_xo_gpll0, 307 - .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 308 - .ops = &clk_rcg2_ops, 309 - }, 310 - }; 311 - 312 247 static const struct freq_tbl ftbl_usb30_master_clk_src[] = { 313 248 F(19200000, P_XO, 1, 0, 0), 314 249 F(120000000, P_GPLL0, 5, 0, 0), ··· 1232 1297 .enable_mask = BIT(0), 1233 1298 .hw.init = &(struct clk_init_data){ 1234 1299 .name = "gcc_mmss_noc_cfg_ahb_clk", 1235 - .parent_hws = (const struct clk_hw*[]){ 1236 - &config_noc_clk_src.clkr.hw, 1237 - }, 1238 - .num_parents = 1, 1239 - .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 1300 + .flags = CLK_IGNORE_UNUSED, 1240 1301 .ops = &clk_branch2_ops, 1241 1302 }, 1242 1303 }, ··· 1395 1464 .enable_mask = BIT(0), 1396 1465 .hw.init = &(struct clk_init_data){ 1397 1466 .name = "gcc_usb_phy_cfg_ahb2phy_clk", 1398 - .parent_hws = (const struct clk_hw*[]){ 1399 - &periph_noc_clk_src.clkr.hw, 1400 - }, 1401 - .num_parents = 1, 1402 - .flags = CLK_SET_RATE_PARENT, 1403 1467 .ops = &clk_branch2_ops, 1404 1468 }, 1405 1469 }, ··· 1424 1498 .enable_mask = BIT(0), 1425 1499 .hw.init = &(struct clk_init_data){ 1426 1500 .name = "gcc_sdcc1_ahb_clk", 1427 - .parent_hws = (const struct clk_hw*[]){ 1428 - &periph_noc_clk_src.clkr.hw, 1429 - }, 1430 - .num_parents = 1, 1431 - .flags = CLK_SET_RATE_PARENT, 1432 1501 .ops = &clk_branch2_ops, 1433 1502 }, 1434 1503 }, ··· 1470 1549 .enable_mask = BIT(0), 1471 1550 .hw.init = &(struct clk_init_data){ 1472 1551 .name = "gcc_sdcc2_ahb_clk", 1473 - .parent_hws = (const struct clk_hw*[]){ 1474 - &periph_noc_clk_src.clkr.hw, 1475 - }, 1476 - .num_parents = 1, 1477 - .flags = CLK_SET_RATE_PARENT, 1478 1552 .ops = &clk_branch2_ops, 1479 1553 }, 1480 1554 }, ··· 1499 1583 .enable_mask = BIT(0), 1500 1584 .hw.init = &(struct clk_init_data){ 1501 1585 .name = "gcc_sdcc3_ahb_clk", 1502 - .parent_hws = (const struct clk_hw*[]){ 1503 - &periph_noc_clk_src.clkr.hw, 1504 - }, 1505 - .num_parents = 1, 1506 - .flags = CLK_SET_RATE_PARENT, 1507 1586 .ops = &clk_branch2_ops, 1508 1587 }, 1509 1588 }, ··· 1528 1617 .enable_mask = BIT(0), 1529 1618 .hw.init = &(struct clk_init_data){ 1530 1619 .name = "gcc_sdcc4_ahb_clk", 1531 - .parent_hws = (const struct clk_hw*[]){ 1532 - &periph_noc_clk_src.clkr.hw, 1533 - }, 1534 - .num_parents = 1, 1535 - .flags = CLK_SET_RATE_PARENT, 1536 1620 .ops = &clk_branch2_ops, 1537 1621 }, 1538 1622 }, ··· 1541 1635 .enable_mask = BIT(17), 1542 1636 .hw.init = &(struct clk_init_data){ 1543 1637 .name = "gcc_blsp1_ahb_clk", 1544 - .parent_hws = (const struct clk_hw*[]){ 1545 - &periph_noc_clk_src.clkr.hw, 1546 - }, 1547 - .num_parents = 1, 1548 - .flags = CLK_SET_RATE_PARENT, 1549 1638 .ops = &clk_branch2_ops, 1550 1639 }, 1551 1640 }, ··· 1878 1977 .enable_mask = BIT(15), 1879 1978 .hw.init = &(struct clk_init_data){ 1880 1979 .name = "gcc_blsp2_ahb_clk", 1881 - .parent_hws = (const struct clk_hw*[]){ 1882 - &periph_noc_clk_src.clkr.hw, 1883 - }, 1884 - .num_parents = 1, 1885 - .flags = CLK_SET_RATE_PARENT, 1886 1980 .ops = &clk_branch2_ops, 1887 1981 }, 1888 1982 }, ··· 2214 2318 .enable_mask = BIT(0), 2215 2319 .hw.init = &(struct clk_init_data){ 2216 2320 .name = "gcc_pdm_ahb_clk", 2217 - .parent_hws = (const struct clk_hw*[]){ 2218 - &periph_noc_clk_src.clkr.hw, 2219 - }, 2220 - .num_parents = 1, 2221 - .flags = CLK_SET_RATE_PARENT, 2222 2321 .ops = &clk_branch2_ops, 2223 2322 }, 2224 2323 }, ··· 2244 2353 .enable_mask = BIT(13), 2245 2354 .hw.init = &(struct clk_init_data){ 2246 2355 .name = "gcc_prng_ahb_clk", 2247 - .parent_hws = (const struct clk_hw*[]){ 2248 - &config_noc_clk_src.clkr.hw, 2249 - }, 2250 - .num_parents = 1, 2251 - .flags = CLK_SET_RATE_PARENT, 2252 2356 .ops = &clk_branch2_ops, 2253 2357 }, 2254 2358 }, ··· 2256 2370 .enable_mask = BIT(0), 2257 2371 .hw.init = &(struct clk_init_data){ 2258 2372 .name = "gcc_tsif_ahb_clk", 2259 - .parent_hws = (const struct clk_hw*[]){ 2260 - &periph_noc_clk_src.clkr.hw, 2261 - }, 2262 - .num_parents = 1, 2263 - .flags = CLK_SET_RATE_PARENT, 2264 2373 .ops = &clk_branch2_ops, 2265 2374 }, 2266 2375 }, ··· 2303 2422 .enable_mask = BIT(10), 2304 2423 .hw.init = &(struct clk_init_data){ 2305 2424 .name = "gcc_boot_rom_ahb_clk", 2306 - .parent_hws = (const struct clk_hw*[]){ 2307 - &config_noc_clk_src.clkr.hw, 2308 - }, 2309 - .num_parents = 1, 2310 - .flags = CLK_SET_RATE_PARENT, 2311 2425 .ops = &clk_branch2_ops, 2312 2426 }, 2313 2427 }, ··· 2396 2520 .enable_mask = BIT(0), 2397 2521 .hw.init = &(struct clk_init_data){ 2398 2522 .name = "gcc_pcie_0_slv_axi_clk", 2399 - .parent_hws = (const struct clk_hw*[]){ 2400 - &system_noc_clk_src.clkr.hw, 2401 - }, 2402 - .num_parents = 1, 2403 - .flags = CLK_SET_RATE_PARENT, 2404 2523 .ops = &clk_branch2_ops, 2405 2524 }, 2406 2525 }, ··· 2408 2537 .enable_mask = BIT(0), 2409 2538 .hw.init = &(struct clk_init_data){ 2410 2539 .name = "gcc_pcie_0_mstr_axi_clk", 2411 - .parent_hws = (const struct clk_hw*[]){ 2412 - &system_noc_clk_src.clkr.hw, 2413 - }, 2414 - .num_parents = 1, 2415 - .flags = CLK_SET_RATE_PARENT, 2416 2540 .ops = &clk_branch2_ops, 2417 2541 }, 2418 2542 }, ··· 2420 2554 .enable_mask = BIT(0), 2421 2555 .hw.init = &(struct clk_init_data){ 2422 2556 .name = "gcc_pcie_0_cfg_ahb_clk", 2423 - .parent_hws = (const struct clk_hw*[]){ 2424 - &config_noc_clk_src.clkr.hw, 2425 - }, 2426 - .num_parents = 1, 2427 - .flags = CLK_SET_RATE_PARENT, 2428 2557 .ops = &clk_branch2_ops, 2429 2558 }, 2430 2559 }, ··· 2467 2606 .enable_mask = BIT(0), 2468 2607 .hw.init = &(struct clk_init_data){ 2469 2608 .name = "gcc_pcie_1_slv_axi_clk", 2470 - .parent_hws = (const struct clk_hw*[]){ 2471 - &system_noc_clk_src.clkr.hw, 2472 - }, 2473 - .num_parents = 1, 2474 - .flags = CLK_SET_RATE_PARENT, 2475 2609 .ops = &clk_branch2_ops, 2476 2610 }, 2477 2611 }, ··· 2479 2623 .enable_mask = BIT(0), 2480 2624 .hw.init = &(struct clk_init_data){ 2481 2625 .name = "gcc_pcie_1_mstr_axi_clk", 2482 - .parent_hws = (const struct clk_hw*[]){ 2483 - &system_noc_clk_src.clkr.hw, 2484 - }, 2485 - .num_parents = 1, 2486 - .flags = CLK_SET_RATE_PARENT, 2487 2626 .ops = &clk_branch2_ops, 2488 2627 }, 2489 2628 }, ··· 2491 2640 .enable_mask = BIT(0), 2492 2641 .hw.init = &(struct clk_init_data){ 2493 2642 .name = "gcc_pcie_1_cfg_ahb_clk", 2494 - .parent_hws = (const struct clk_hw*[]){ 2495 - &config_noc_clk_src.clkr.hw, 2496 - }, 2497 - .num_parents = 1, 2498 - .flags = CLK_SET_RATE_PARENT, 2499 2643 .ops = &clk_branch2_ops, 2500 2644 }, 2501 2645 }, ··· 2538 2692 .enable_mask = BIT(0), 2539 2693 .hw.init = &(struct clk_init_data){ 2540 2694 .name = "gcc_pcie_2_slv_axi_clk", 2541 - .parent_hws = (const struct clk_hw*[]){ 2542 - &system_noc_clk_src.clkr.hw, 2543 - }, 2544 - .num_parents = 1, 2545 - .flags = CLK_SET_RATE_PARENT, 2546 2695 .ops = &clk_branch2_ops, 2547 2696 }, 2548 2697 }, ··· 2550 2709 .enable_mask = BIT(0), 2551 2710 .hw.init = &(struct clk_init_data){ 2552 2711 .name = "gcc_pcie_2_mstr_axi_clk", 2553 - .parent_hws = (const struct clk_hw*[]){ 2554 - &system_noc_clk_src.clkr.hw, 2555 - }, 2556 - .num_parents = 1, 2557 - .flags = CLK_SET_RATE_PARENT, 2558 2712 .ops = &clk_branch2_ops, 2559 2713 }, 2560 2714 }, ··· 2562 2726 .enable_mask = BIT(0), 2563 2727 .hw.init = &(struct clk_init_data){ 2564 2728 .name = "gcc_pcie_2_cfg_ahb_clk", 2565 - .parent_hws = (const struct clk_hw*[]){ 2566 - &config_noc_clk_src.clkr.hw, 2567 - }, 2568 - .num_parents = 1, 2569 - .flags = CLK_SET_RATE_PARENT, 2570 2729 .ops = &clk_branch2_ops, 2571 2730 }, 2572 2731 }, ··· 2609 2778 .enable_mask = BIT(0), 2610 2779 .hw.init = &(struct clk_init_data){ 2611 2780 .name = "gcc_pcie_phy_cfg_ahb_clk", 2612 - .parent_hws = (const struct clk_hw*[]){ 2613 - &config_noc_clk_src.clkr.hw, 2614 - }, 2615 - .num_parents = 1, 2616 - .flags = CLK_SET_RATE_PARENT, 2617 2781 .ops = &clk_branch2_ops, 2618 2782 }, 2619 2783 }, ··· 2655 2829 .enable_mask = BIT(0), 2656 2830 .hw.init = &(struct clk_init_data){ 2657 2831 .name = "gcc_ufs_ahb_clk", 2658 - .parent_hws = (const struct clk_hw*[]){ 2659 - &config_noc_clk_src.clkr.hw, 2660 - }, 2661 - .num_parents = 1, 2662 - .flags = CLK_SET_RATE_PARENT, 2663 2832 .ops = &clk_branch2_ops, 2664 2833 }, 2665 2834 }, ··· 2881 3060 .enable_mask = BIT(0), 2882 3061 .hw.init = &(struct clk_init_data){ 2883 3062 .name = "gcc_aggre0_snoc_axi_clk", 2884 - .parent_hws = (const struct clk_hw*[]){ 2885 - &system_noc_clk_src.clkr.hw, 2886 - }, 2887 - .num_parents = 1, 2888 - .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 3063 + .flags = CLK_IS_CRITICAL, 2889 3064 .ops = &clk_branch2_ops, 2890 3065 }, 2891 3066 }, ··· 2894 3077 .enable_mask = BIT(0), 2895 3078 .hw.init = &(struct clk_init_data){ 2896 3079 .name = "gcc_aggre0_cnoc_ahb_clk", 2897 - .parent_hws = (const struct clk_hw*[]){ 2898 - &config_noc_clk_src.clkr.hw, 2899 - }, 2900 - .num_parents = 1, 2901 - .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 3080 + .flags = CLK_IS_CRITICAL, 2902 3081 .ops = &clk_branch2_ops, 2903 3082 }, 2904 3083 }, ··· 2907 3094 .enable_mask = BIT(0), 2908 3095 .hw.init = &(struct clk_init_data){ 2909 3096 .name = "gcc_smmu_aggre0_axi_clk", 2910 - .parent_hws = (const struct clk_hw*[]){ 2911 - &system_noc_clk_src.clkr.hw, 2912 - }, 2913 - .num_parents = 1, 2914 - .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 3097 + .flags = CLK_IS_CRITICAL, 2915 3098 .ops = &clk_branch2_ops, 2916 3099 }, 2917 3100 }, ··· 2920 3111 .enable_mask = BIT(0), 2921 3112 .hw.init = &(struct clk_init_data){ 2922 3113 .name = "gcc_smmu_aggre0_ahb_clk", 2923 - .parent_hws = (const struct clk_hw*[]){ 2924 - &config_noc_clk_src.clkr.hw, 2925 - }, 2926 - .num_parents = 1, 2927 - .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 3114 + .flags = CLK_IS_CRITICAL, 2928 3115 .ops = &clk_branch2_ops, 2929 3116 }, 2930 3117 }, ··· 2967 3162 .enable_mask = BIT(0), 2968 3163 .hw.init = &(struct clk_init_data){ 2969 3164 .name = "gcc_dcc_ahb_clk", 2970 - .parent_hws = (const struct clk_hw*[]){ 2971 - &config_noc_clk_src.clkr.hw, 2972 - }, 2973 - .num_parents = 1, 2974 3165 .ops = &clk_branch2_ops, 2975 3166 }, 2976 3167 }, ··· 2979 3178 .enable_mask = BIT(0), 2980 3179 .hw.init = &(struct clk_init_data){ 2981 3180 .name = "gcc_aggre0_noc_mpu_cfg_ahb_clk", 2982 - .parent_hws = (const struct clk_hw*[]){ 2983 - &config_noc_clk_src.clkr.hw, 2984 - }, 2985 - .num_parents = 1, 2986 3181 .ops = &clk_branch2_ops, 2987 3182 }, 2988 3183 }, ··· 2991 3194 .enable_mask = BIT(0), 2992 3195 .hw.init = &(struct clk_init_data){ 2993 3196 .name = "gcc_qspi_ahb_clk", 2994 - .parent_hws = (const struct clk_hw*[]){ 2995 - &periph_noc_clk_src.clkr.hw, 2996 - }, 2997 - .num_parents = 1, 2998 - .flags = CLK_SET_RATE_PARENT, 2999 3197 .ops = &clk_branch2_ops, 3000 3198 }, 3001 3199 }, ··· 3139 3347 .enable_mask = BIT(0), 3140 3348 .hw.init = &(struct clk_init_data){ 3141 3349 .name = "gcc_mss_cfg_ahb_clk", 3142 - .parent_hws = (const struct clk_hw*[]){ 3143 - &config_noc_clk_src.clkr.hw, 3144 - }, 3145 - .num_parents = 1, 3146 3350 .ops = &clk_branch2_ops, 3147 3351 }, 3148 3352 }, ··· 3151 3363 .enable_mask = BIT(0), 3152 3364 .hw.init = &(struct clk_init_data){ 3153 3365 .name = "gcc_mss_mnoc_bimc_axi_clk", 3154 - .parent_hws = (const struct clk_hw*[]){ 3155 - &system_noc_clk_src.clkr.hw, 3156 - }, 3157 - .num_parents = 1, 3158 3366 .ops = &clk_branch2_ops, 3159 3367 }, 3160 3368 }, ··· 3163 3379 .enable_mask = BIT(0), 3164 3380 .hw.init = &(struct clk_init_data){ 3165 3381 .name = "gcc_mss_snoc_axi_clk", 3166 - .parent_hws = (const struct clk_hw*[]){ 3167 - &system_noc_clk_src.clkr.hw, 3168 - }, 3169 - .num_parents = 1, 3170 3382 .ops = &clk_branch2_ops, 3171 3383 }, 3172 3384 }, ··· 3175 3395 .enable_mask = BIT(0), 3176 3396 .hw.init = &(struct clk_init_data){ 3177 3397 .name = "gcc_mss_q6_bimc_axi_clk", 3178 - .parent_hws = (const struct clk_hw*[]){ 3179 - &system_noc_clk_src.clkr.hw, 3180 - }, 3181 - .num_parents = 1, 3182 3398 .ops = &clk_branch2_ops, 3183 3399 }, 3184 3400 }, ··· 3271 3495 [GPLL0] = &gpll0.clkr, 3272 3496 [GPLL4_EARLY] = &gpll4_early.clkr, 3273 3497 [GPLL4] = &gpll4.clkr, 3274 - [SYSTEM_NOC_CLK_SRC] = &system_noc_clk_src.clkr, 3275 - [CONFIG_NOC_CLK_SRC] = &config_noc_clk_src.clkr, 3276 - [PERIPH_NOC_CLK_SRC] = &periph_noc_clk_src.clkr, 3277 3498 [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr, 3278 3499 [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr, 3279 3500 [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,