1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * Copyright (c) 2018, 2020, The Linux Foundation. All rights reserved. 4 */ 5 6 #include <linux/kernel.h> 7 #include <linux/bitops.h> 8 #include <linux/err.h> 9 #include <linux/platform_device.h> 10 #include <linux/module.h> 11 #include <linux/of.h> 12 #include <linux/clk-provider.h> 13 #include <linux/regmap.h> 14 #include <linux/reset-controller.h> 15 16 #include <dt-bindings/clock/qcom,gcc-sdm845.h> 17 18 #include "common.h" 19 #include "clk-regmap.h" 20 #include "clk-pll.h" 21 #include "clk-rcg.h" 22 #include "clk-branch.h" 23 #include "clk-alpha-pll.h" 24 #include "gdsc.h" 25 #include "reset.h" 26 27 enum { 28 P_BI_TCXO, 29 P_AUD_REF_CLK, 30 P_GPLL0_OUT_EVEN, 31 P_GPLL0_OUT_MAIN, 32 P_GPLL4_OUT_MAIN, 33 P_GPLL6_OUT_MAIN, 34 P_SLEEP_CLK, 35 }; 36 37 static struct clk_alpha_pll gpll0 = { 38 .offset = 0x0, 39 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 40 .clkr = { 41 .enable_reg = 0x52000, 42 .enable_mask = BIT(0), 43 .hw.init = &(struct clk_init_data){ 44 .name = "gpll0", 45 .parent_data = &(const struct clk_parent_data){ 46 .fw_name = "bi_tcxo", .name = "bi_tcxo", 47 }, 48 .num_parents = 1, 49 .ops = &clk_alpha_pll_fixed_fabia_ops, 50 }, 51 }, 52 }; 53 54 static struct clk_alpha_pll gpll4 = { 55 .offset = 0x76000, 56 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 57 .clkr = { 58 .enable_reg = 0x52000, 59 .enable_mask = BIT(4), 60 .hw.init = &(struct clk_init_data){ 61 .name = "gpll4", 62 .parent_data = &(const struct clk_parent_data){ 63 .fw_name = "bi_tcxo", .name = "bi_tcxo", 64 }, 65 .num_parents = 1, 66 .ops = &clk_alpha_pll_fixed_fabia_ops, 67 }, 68 }, 69 }; 70 71 static struct clk_alpha_pll gpll6 = { 72 .offset = 0x13000, 73 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 74 .clkr = { 75 .enable_reg = 0x52000, 76 .enable_mask = BIT(6), 77 .hw.init = &(struct clk_init_data){ 78 .name = "gpll6", 79 .parent_data = &(const struct clk_parent_data){ 80 .fw_name = "bi_tcxo", .name = "bi_tcxo", 81 }, 82 .num_parents = 1, 83 .ops = &clk_alpha_pll_fixed_fabia_ops, 84 }, 85 }, 86 }; 87 88 static const struct clk_div_table post_div_table_fabia_even[] = { 89 { 0x0, 1 }, 90 { 0x1, 2 }, 91 { 0x3, 4 }, 92 { 0x7, 8 }, 93 { } 94 }; 95 96 static struct clk_alpha_pll_postdiv gpll0_out_even = { 97 .offset = 0x0, 98 .post_div_shift = 8, 99 .post_div_table = post_div_table_fabia_even, 100 .num_post_div = ARRAY_SIZE(post_div_table_fabia_even), 101 .width = 4, 102 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 103 .clkr.hw.init = &(struct clk_init_data){ 104 .name = "gpll0_out_even", 105 .parent_hws = (const struct clk_hw*[]){ 106 &gpll0.clkr.hw, 107 }, 108 .num_parents = 1, 109 .ops = &clk_alpha_pll_postdiv_fabia_ops, 110 }, 111 }; 112 113 static const struct parent_map gcc_parent_map_0[] = { 114 { P_BI_TCXO, 0 }, 115 { P_GPLL0_OUT_MAIN, 1 }, 116 { P_GPLL0_OUT_EVEN, 6 }, 117 }; 118 119 static const struct clk_parent_data gcc_parent_data_0[] = { 120 { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 121 { .hw = &gpll0.clkr.hw }, 122 { .hw = &gpll0_out_even.clkr.hw }, 123 }; 124 125 static const struct parent_map gcc_parent_map_1[] = { 126 { P_BI_TCXO, 0 }, 127 { P_GPLL0_OUT_MAIN, 1 }, 128 { P_SLEEP_CLK, 5 }, 129 { P_GPLL0_OUT_EVEN, 6 }, 130 }; 131 132 static const struct clk_parent_data gcc_parent_data_1[] = { 133 { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 134 { .hw = &gpll0.clkr.hw }, 135 { .fw_name = "sleep_clk", .name = "core_pi_sleep_clk" }, 136 { .hw = &gpll0_out_even.clkr.hw }, 137 }; 138 139 static const struct parent_map gcc_parent_map_2[] = { 140 { P_BI_TCXO, 0 }, 141 { P_SLEEP_CLK, 5 }, 142 }; 143 144 static const struct clk_parent_data gcc_parent_data_2[] = { 145 { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 146 { .fw_name = "sleep_clk", .name = "core_pi_sleep_clk" }, 147 }; 148 149 static const struct parent_map gcc_parent_map_3[] = { 150 { P_BI_TCXO, 0 }, 151 { P_GPLL0_OUT_MAIN, 1 }, 152 }; 153 154 static const struct clk_parent_data gcc_parent_data_3[] = { 155 { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 156 { .hw = &gpll0.clkr.hw }, 157 }; 158 159 static const struct parent_map gcc_parent_map_4[] = { 160 { P_BI_TCXO, 0 }, 161 }; 162 163 static const struct clk_parent_data gcc_parent_data_4[] = { 164 { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 165 }; 166 167 static const struct parent_map gcc_parent_map_6[] = { 168 { P_BI_TCXO, 0 }, 169 { P_GPLL0_OUT_MAIN, 1 }, 170 { P_AUD_REF_CLK, 2 }, 171 { P_GPLL0_OUT_EVEN, 6 }, 172 }; 173 174 static const struct clk_parent_data gcc_parent_data_6[] = { 175 { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 176 { .hw = &gpll0.clkr.hw }, 177 { .fw_name = "aud_ref_clk", .name = "aud_ref_clk" }, 178 { .hw = &gpll0_out_even.clkr.hw }, 179 }; 180 181 static const struct clk_parent_data gcc_parent_data_7_ao[] = { 182 { .fw_name = "bi_tcxo_ao", .name = "bi_tcxo_ao" }, 183 { .hw = &gpll0.clkr.hw }, 184 { .hw = &gpll0_out_even.clkr.hw }, 185 { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 186 }; 187 188 static const struct clk_parent_data gcc_parent_data_8[] = { 189 { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 190 { .hw = &gpll0.clkr.hw }, 191 { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 192 }; 193 194 static const struct clk_parent_data gcc_parent_data_8_ao[] = { 195 { .fw_name = "bi_tcxo_ao", .name = "bi_tcxo_ao" }, 196 { .hw = &gpll0.clkr.hw }, 197 { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 198 }; 199 200 static const struct parent_map gcc_parent_map_10[] = { 201 { P_BI_TCXO, 0 }, 202 { P_GPLL0_OUT_MAIN, 1 }, 203 { P_GPLL4_OUT_MAIN, 5 }, 204 { P_GPLL0_OUT_EVEN, 6 }, 205 }; 206 207 static const struct clk_parent_data gcc_parent_data_10[] = { 208 { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 209 { .hw = &gpll0.clkr.hw }, 210 { .hw = &gpll4.clkr.hw }, 211 { .hw = &gpll0_out_even.clkr.hw }, 212 }; 213 214 static const struct parent_map gcc_parent_map_11[] = { 215 { P_BI_TCXO, 0 }, 216 { P_GPLL0_OUT_MAIN, 1 }, 217 { P_GPLL6_OUT_MAIN, 2 }, 218 { P_GPLL0_OUT_EVEN, 6 }, 219 }; 220 221 static const struct clk_parent_data gcc_parent_data_11[] = { 222 { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 223 { .hw = &gpll0.clkr.hw }, 224 { .hw = &gpll6.clkr.hw }, 225 { .hw = &gpll0_out_even.clkr.hw }, 226 }; 227 228 static const struct freq_tbl ftbl_gcc_cpuss_ahb_clk_src[] = { 229 F(19200000, P_BI_TCXO, 1, 0, 0), 230 { } 231 }; 232 233 static struct clk_rcg2 gcc_cpuss_ahb_clk_src = { 234 .cmd_rcgr = 0x48014, 235 .mnd_width = 0, 236 .hid_width = 5, 237 .parent_map = gcc_parent_map_0, 238 .freq_tbl = ftbl_gcc_cpuss_ahb_clk_src, 239 .clkr.hw.init = &(struct clk_init_data){ 240 .name = "gcc_cpuss_ahb_clk_src", 241 .parent_data = gcc_parent_data_7_ao, 242 .num_parents = ARRAY_SIZE(gcc_parent_data_7_ao), 243 .ops = &clk_rcg2_ops, 244 }, 245 }; 246 247 static const struct freq_tbl ftbl_gcc_cpuss_rbcpr_clk_src[] = { 248 F(19200000, P_BI_TCXO, 1, 0, 0), 249 { } 250 }; 251 252 static struct clk_rcg2 gcc_cpuss_rbcpr_clk_src = { 253 .cmd_rcgr = 0x4815c, 254 .mnd_width = 0, 255 .hid_width = 5, 256 .parent_map = gcc_parent_map_3, 257 .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src, 258 .clkr.hw.init = &(struct clk_init_data){ 259 .name = "gcc_cpuss_rbcpr_clk_src", 260 .parent_data = gcc_parent_data_8_ao, 261 .num_parents = ARRAY_SIZE(gcc_parent_data_8_ao), 262 .ops = &clk_rcg2_ops, 263 }, 264 }; 265 266 static const struct freq_tbl ftbl_gcc_sdm670_cpuss_rbcpr_clk_src[] = { 267 F(19200000, P_BI_TCXO, 1, 0, 0), 268 F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0), 269 { } 270 }; 271 272 static struct clk_rcg2 gcc_sdm670_cpuss_rbcpr_clk_src = { 273 .cmd_rcgr = 0x4815c, 274 .mnd_width = 0, 275 .hid_width = 5, 276 .parent_map = gcc_parent_map_3, 277 .freq_tbl = ftbl_gcc_sdm670_cpuss_rbcpr_clk_src, 278 .clkr.hw.init = &(struct clk_init_data){ 279 .name = "gcc_cpuss_rbcpr_clk_src", 280 .parent_data = gcc_parent_data_8_ao, 281 .num_parents = ARRAY_SIZE(gcc_parent_data_8_ao), 282 .ops = &clk_rcg2_ops, 283 }, 284 }; 285 286 static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = { 287 F(19200000, P_BI_TCXO, 1, 0, 0), 288 F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0), 289 F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0), 290 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0), 291 F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0), 292 { } 293 }; 294 295 static struct clk_rcg2 gcc_gp1_clk_src = { 296 .cmd_rcgr = 0x64004, 297 .mnd_width = 8, 298 .hid_width = 5, 299 .parent_map = gcc_parent_map_1, 300 .freq_tbl = ftbl_gcc_gp1_clk_src, 301 .clkr.hw.init = &(struct clk_init_data){ 302 .name = "gcc_gp1_clk_src", 303 .parent_data = gcc_parent_data_1, 304 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 305 .ops = &clk_rcg2_ops, 306 }, 307 }; 308 309 static struct clk_rcg2 gcc_gp2_clk_src = { 310 .cmd_rcgr = 0x65004, 311 .mnd_width = 8, 312 .hid_width = 5, 313 .parent_map = gcc_parent_map_1, 314 .freq_tbl = ftbl_gcc_gp1_clk_src, 315 .clkr.hw.init = &(struct clk_init_data){ 316 .name = "gcc_gp2_clk_src", 317 .parent_data = gcc_parent_data_1, 318 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 319 .ops = &clk_rcg2_ops, 320 }, 321 }; 322 323 static struct clk_rcg2 gcc_gp3_clk_src = { 324 .cmd_rcgr = 0x66004, 325 .mnd_width = 8, 326 .hid_width = 5, 327 .parent_map = gcc_parent_map_1, 328 .freq_tbl = ftbl_gcc_gp1_clk_src, 329 .clkr.hw.init = &(struct clk_init_data){ 330 .name = "gcc_gp3_clk_src", 331 .parent_data = gcc_parent_data_1, 332 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 333 .ops = &clk_rcg2_ops, 334 }, 335 }; 336 337 static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = { 338 F(9600000, P_BI_TCXO, 2, 0, 0), 339 F(19200000, P_BI_TCXO, 1, 0, 0), 340 { } 341 }; 342 343 static struct clk_rcg2 gcc_pcie_0_aux_clk_src = { 344 .cmd_rcgr = 0x6b028, 345 .mnd_width = 16, 346 .hid_width = 5, 347 .parent_map = gcc_parent_map_2, 348 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 349 .clkr.hw.init = &(struct clk_init_data){ 350 .name = "gcc_pcie_0_aux_clk_src", 351 .parent_data = gcc_parent_data_2, 352 .num_parents = ARRAY_SIZE(gcc_parent_data_2), 353 .ops = &clk_rcg2_ops, 354 }, 355 }; 356 357 static struct clk_rcg2 gcc_pcie_1_aux_clk_src = { 358 .cmd_rcgr = 0x8d028, 359 .mnd_width = 16, 360 .hid_width = 5, 361 .parent_map = gcc_parent_map_2, 362 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 363 .clkr.hw.init = &(struct clk_init_data){ 364 .name = "gcc_pcie_1_aux_clk_src", 365 .parent_data = gcc_parent_data_2, 366 .num_parents = ARRAY_SIZE(gcc_parent_data_2), 367 .ops = &clk_rcg2_ops, 368 }, 369 }; 370 371 static const struct freq_tbl ftbl_gcc_pcie_phy_refgen_clk_src[] = { 372 F(19200000, P_BI_TCXO, 1, 0, 0), 373 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0), 374 { } 375 }; 376 377 static struct clk_rcg2 gcc_pcie_phy_refgen_clk_src = { 378 .cmd_rcgr = 0x6f014, 379 .mnd_width = 0, 380 .hid_width = 5, 381 .parent_map = gcc_parent_map_0, 382 .freq_tbl = ftbl_gcc_pcie_phy_refgen_clk_src, 383 .clkr.hw.init = &(struct clk_init_data){ 384 .name = "gcc_pcie_phy_refgen_clk_src", 385 .parent_data = gcc_parent_data_0, 386 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 387 .ops = &clk_rcg2_ops, 388 }, 389 }; 390 391 static const struct freq_tbl ftbl_gcc_qspi_core_clk_src[] = { 392 F(19200000, P_BI_TCXO, 1, 0, 0), 393 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0), 394 F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0), 395 F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0), 396 { } 397 }; 398 399 static struct clk_rcg2 gcc_qspi_core_clk_src = { 400 .cmd_rcgr = 0x4b008, 401 .mnd_width = 0, 402 .hid_width = 5, 403 .parent_map = gcc_parent_map_0, 404 .freq_tbl = ftbl_gcc_qspi_core_clk_src, 405 .clkr.hw.init = &(struct clk_init_data){ 406 .name = "gcc_qspi_core_clk_src", 407 .parent_data = gcc_parent_data_0, 408 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 409 .ops = &clk_rcg2_floor_ops, 410 }, 411 }; 412 413 static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = { 414 F(9600000, P_BI_TCXO, 2, 0, 0), 415 F(19200000, P_BI_TCXO, 1, 0, 0), 416 F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0), 417 { } 418 }; 419 420 static struct clk_rcg2 gcc_pdm2_clk_src = { 421 .cmd_rcgr = 0x33010, 422 .mnd_width = 0, 423 .hid_width = 5, 424 .parent_map = gcc_parent_map_0, 425 .freq_tbl = ftbl_gcc_pdm2_clk_src, 426 .clkr.hw.init = &(struct clk_init_data){ 427 .name = "gcc_pdm2_clk_src", 428 .parent_data = gcc_parent_data_0, 429 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 430 .ops = &clk_rcg2_ops, 431 }, 432 }; 433 434 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = { 435 F(7372800, P_GPLL0_OUT_EVEN, 1, 384, 15625), 436 F(14745600, P_GPLL0_OUT_EVEN, 1, 768, 15625), 437 F(19200000, P_BI_TCXO, 1, 0, 0), 438 F(29491200, P_GPLL0_OUT_EVEN, 1, 1536, 15625), 439 F(32000000, P_GPLL0_OUT_EVEN, 1, 8, 75), 440 F(48000000, P_GPLL0_OUT_EVEN, 1, 4, 25), 441 F(64000000, P_GPLL0_OUT_EVEN, 1, 16, 75), 442 F(80000000, P_GPLL0_OUT_EVEN, 1, 4, 15), 443 F(96000000, P_GPLL0_OUT_EVEN, 1, 8, 25), 444 F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0), 445 F(102400000, P_GPLL0_OUT_EVEN, 1, 128, 375), 446 F(112000000, P_GPLL0_OUT_EVEN, 1, 28, 75), 447 F(117964800, P_GPLL0_OUT_EVEN, 1, 6144, 15625), 448 F(120000000, P_GPLL0_OUT_EVEN, 2.5, 0, 0), 449 F(128000000, P_GPLL0_OUT_MAIN, 1, 16, 75), 450 { } 451 }; 452 453 static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = { 454 .name = "gcc_qupv3_wrap0_s0_clk_src", 455 .parent_data = gcc_parent_data_0, 456 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 457 .ops = &clk_rcg2_shared_ops, 458 }; 459 460 static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = { 461 .cmd_rcgr = 0x17034, 462 .mnd_width = 16, 463 .hid_width = 5, 464 .parent_map = gcc_parent_map_0, 465 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 466 .clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init, 467 }; 468 469 static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = { 470 .name = "gcc_qupv3_wrap0_s1_clk_src", 471 .parent_data = gcc_parent_data_0, 472 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 473 .ops = &clk_rcg2_shared_ops, 474 }; 475 476 static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = { 477 .cmd_rcgr = 0x17164, 478 .mnd_width = 16, 479 .hid_width = 5, 480 .parent_map = gcc_parent_map_0, 481 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 482 .clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init, 483 }; 484 485 static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = { 486 .name = "gcc_qupv3_wrap0_s2_clk_src", 487 .parent_data = gcc_parent_data_0, 488 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 489 .ops = &clk_rcg2_shared_ops, 490 }; 491 492 static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = { 493 .cmd_rcgr = 0x17294, 494 .mnd_width = 16, 495 .hid_width = 5, 496 .parent_map = gcc_parent_map_0, 497 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 498 .clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init, 499 }; 500 501 static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = { 502 .name = "gcc_qupv3_wrap0_s3_clk_src", 503 .parent_data = gcc_parent_data_0, 504 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 505 .ops = &clk_rcg2_shared_ops, 506 }; 507 508 static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = { 509 .cmd_rcgr = 0x173c4, 510 .mnd_width = 16, 511 .hid_width = 5, 512 .parent_map = gcc_parent_map_0, 513 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 514 .clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init, 515 }; 516 517 static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = { 518 .name = "gcc_qupv3_wrap0_s4_clk_src", 519 .parent_data = gcc_parent_data_0, 520 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 521 .ops = &clk_rcg2_shared_ops, 522 }; 523 524 static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = { 525 .cmd_rcgr = 0x174f4, 526 .mnd_width = 16, 527 .hid_width = 5, 528 .parent_map = gcc_parent_map_0, 529 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 530 .clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init, 531 }; 532 533 static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = { 534 .name = "gcc_qupv3_wrap0_s5_clk_src", 535 .parent_data = gcc_parent_data_0, 536 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 537 .ops = &clk_rcg2_shared_ops, 538 }; 539 540 static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = { 541 .cmd_rcgr = 0x17624, 542 .mnd_width = 16, 543 .hid_width = 5, 544 .parent_map = gcc_parent_map_0, 545 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 546 .clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init, 547 }; 548 549 static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = { 550 .name = "gcc_qupv3_wrap0_s6_clk_src", 551 .parent_data = gcc_parent_data_0, 552 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 553 .ops = &clk_rcg2_shared_ops, 554 }; 555 556 static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = { 557 .cmd_rcgr = 0x17754, 558 .mnd_width = 16, 559 .hid_width = 5, 560 .parent_map = gcc_parent_map_0, 561 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 562 .clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init, 563 }; 564 565 static struct clk_init_data gcc_qupv3_wrap0_s7_clk_src_init = { 566 .name = "gcc_qupv3_wrap0_s7_clk_src", 567 .parent_data = gcc_parent_data_0, 568 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 569 .ops = &clk_rcg2_shared_ops, 570 }; 571 572 static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = { 573 .cmd_rcgr = 0x17884, 574 .mnd_width = 16, 575 .hid_width = 5, 576 .parent_map = gcc_parent_map_0, 577 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 578 .clkr.hw.init = &gcc_qupv3_wrap0_s7_clk_src_init, 579 }; 580 581 static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = { 582 .name = "gcc_qupv3_wrap1_s0_clk_src", 583 .parent_data = gcc_parent_data_0, 584 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 585 .ops = &clk_rcg2_shared_ops, 586 }; 587 588 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = { 589 .cmd_rcgr = 0x18018, 590 .mnd_width = 16, 591 .hid_width = 5, 592 .parent_map = gcc_parent_map_0, 593 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 594 .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init, 595 }; 596 597 static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = { 598 .name = "gcc_qupv3_wrap1_s1_clk_src", 599 .parent_data = gcc_parent_data_0, 600 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 601 .ops = &clk_rcg2_shared_ops, 602 }; 603 604 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = { 605 .cmd_rcgr = 0x18148, 606 .mnd_width = 16, 607 .hid_width = 5, 608 .parent_map = gcc_parent_map_0, 609 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 610 .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init, 611 }; 612 613 static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = { 614 .name = "gcc_qupv3_wrap1_s2_clk_src", 615 .parent_data = gcc_parent_data_0, 616 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 617 .ops = &clk_rcg2_shared_ops, 618 }; 619 620 static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = { 621 .cmd_rcgr = 0x18278, 622 .mnd_width = 16, 623 .hid_width = 5, 624 .parent_map = gcc_parent_map_0, 625 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 626 .clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init, 627 }; 628 629 static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = { 630 .name = "gcc_qupv3_wrap1_s3_clk_src", 631 .parent_data = gcc_parent_data_0, 632 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 633 .ops = &clk_rcg2_shared_ops, 634 }; 635 636 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = { 637 .cmd_rcgr = 0x183a8, 638 .mnd_width = 16, 639 .hid_width = 5, 640 .parent_map = gcc_parent_map_0, 641 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 642 .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init, 643 }; 644 645 static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = { 646 .name = "gcc_qupv3_wrap1_s4_clk_src", 647 .parent_data = gcc_parent_data_0, 648 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 649 .ops = &clk_rcg2_shared_ops, 650 }; 651 652 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = { 653 .cmd_rcgr = 0x184d8, 654 .mnd_width = 16, 655 .hid_width = 5, 656 .parent_map = gcc_parent_map_0, 657 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 658 .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init, 659 }; 660 661 static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = { 662 .name = "gcc_qupv3_wrap1_s5_clk_src", 663 .parent_data = gcc_parent_data_0, 664 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 665 .ops = &clk_rcg2_shared_ops, 666 }; 667 668 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = { 669 .cmd_rcgr = 0x18608, 670 .mnd_width = 16, 671 .hid_width = 5, 672 .parent_map = gcc_parent_map_0, 673 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 674 .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init, 675 }; 676 677 static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = { 678 .name = "gcc_qupv3_wrap1_s6_clk_src", 679 .parent_data = gcc_parent_data_0, 680 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 681 .ops = &clk_rcg2_shared_ops, 682 }; 683 684 static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = { 685 .cmd_rcgr = 0x18738, 686 .mnd_width = 16, 687 .hid_width = 5, 688 .parent_map = gcc_parent_map_0, 689 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 690 .clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init, 691 }; 692 693 static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = { 694 .name = "gcc_qupv3_wrap1_s7_clk_src", 695 .parent_data = gcc_parent_data_0, 696 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 697 .ops = &clk_rcg2_shared_ops, 698 }; 699 700 static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = { 701 .cmd_rcgr = 0x18868, 702 .mnd_width = 16, 703 .hid_width = 5, 704 .parent_map = gcc_parent_map_0, 705 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 706 .clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init, 707 }; 708 709 static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = { 710 F(144000, P_BI_TCXO, 16, 3, 25), 711 F(400000, P_BI_TCXO, 12, 1, 4), 712 F(20000000, P_GPLL0_OUT_EVEN, 5, 1, 3), 713 F(25000000, P_GPLL0_OUT_EVEN, 6, 1, 2), 714 F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0), 715 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0), 716 F(192000000, P_GPLL6_OUT_MAIN, 2, 0, 0), 717 F(384000000, P_GPLL6_OUT_MAIN, 1, 0, 0), 718 { } 719 }; 720 721 static struct clk_rcg2 gcc_sdcc1_apps_clk_src = { 722 .cmd_rcgr = 0x26028, 723 .mnd_width = 8, 724 .hid_width = 5, 725 .parent_map = gcc_parent_map_11, 726 .freq_tbl = ftbl_gcc_sdcc1_apps_clk_src, 727 .clkr.hw.init = &(struct clk_init_data){ 728 .name = "gcc_sdcc1_apps_clk_src", 729 .parent_data = gcc_parent_data_11, 730 .num_parents = ARRAY_SIZE(gcc_parent_data_11), 731 .ops = &clk_rcg2_floor_ops, 732 }, 733 }; 734 735 static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = { 736 F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0), 737 F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0), 738 F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0), 739 F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0), 740 { } 741 }; 742 743 static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = { 744 .cmd_rcgr = 0x26010, 745 .mnd_width = 8, 746 .hid_width = 5, 747 .parent_map = gcc_parent_map_0, 748 .freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src, 749 .clkr.hw.init = &(struct clk_init_data){ 750 .name = "gcc_sdcc1_ice_core_clk_src", 751 .parent_data = gcc_parent_data_0, 752 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 753 .ops = &clk_rcg2_ops, 754 }, 755 }; 756 757 static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = { 758 F(400000, P_BI_TCXO, 12, 1, 4), 759 F(9600000, P_BI_TCXO, 2, 0, 0), 760 F(19200000, P_BI_TCXO, 1, 0, 0), 761 F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0), 762 F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0), 763 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0), 764 F(201500000, P_GPLL4_OUT_MAIN, 4, 0, 0), 765 { } 766 }; 767 768 static struct clk_rcg2 gcc_sdcc2_apps_clk_src = { 769 .cmd_rcgr = 0x1400c, 770 .mnd_width = 8, 771 .hid_width = 5, 772 .parent_map = gcc_parent_map_10, 773 .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src, 774 .clkr.hw.init = &(struct clk_init_data){ 775 .name = "gcc_sdcc2_apps_clk_src", 776 .parent_data = gcc_parent_data_10, 777 .num_parents = ARRAY_SIZE(gcc_parent_data_10), 778 .ops = &clk_rcg2_floor_ops, 779 }, 780 }; 781 782 static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = { 783 F(400000, P_BI_TCXO, 12, 1, 4), 784 F(9600000, P_BI_TCXO, 2, 0, 0), 785 F(19200000, P_BI_TCXO, 1, 0, 0), 786 F(25000000, P_GPLL0_OUT_MAIN, 12, 1, 2), 787 F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0), 788 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0), 789 { } 790 }; 791 792 static struct clk_rcg2 gcc_sdcc4_apps_clk_src = { 793 .cmd_rcgr = 0x1600c, 794 .mnd_width = 8, 795 .hid_width = 5, 796 .parent_map = gcc_parent_map_0, 797 .freq_tbl = ftbl_gcc_sdcc4_apps_clk_src, 798 .clkr.hw.init = &(struct clk_init_data){ 799 .name = "gcc_sdcc4_apps_clk_src", 800 .parent_data = gcc_parent_data_0, 801 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 802 .ops = &clk_rcg2_floor_ops, 803 }, 804 }; 805 806 static const struct freq_tbl ftbl_gcc_sdm670_sdcc4_apps_clk_src[] = { 807 F(400000, P_BI_TCXO, 12, 1, 4), 808 F(9600000, P_BI_TCXO, 2, 0, 0), 809 F(19200000, P_BI_TCXO, 1, 0, 0), 810 F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0), 811 F(33333333, P_GPLL0_OUT_EVEN, 9, 0, 0), 812 F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0), 813 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0), 814 { } 815 }; 816 817 static struct clk_rcg2 gcc_sdm670_sdcc4_apps_clk_src = { 818 .cmd_rcgr = 0x1600c, 819 .mnd_width = 8, 820 .hid_width = 5, 821 .parent_map = gcc_parent_map_0, 822 .freq_tbl = ftbl_gcc_sdm670_sdcc4_apps_clk_src, 823 .clkr.hw.init = &(struct clk_init_data){ 824 .name = "gcc_sdcc4_apps_clk_src", 825 .parent_data = gcc_parent_data_0, 826 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 827 .ops = &clk_rcg2_floor_ops, 828 }, 829 }; 830 831 static const struct freq_tbl ftbl_gcc_tsif_ref_clk_src[] = { 832 F(105495, P_BI_TCXO, 2, 1, 91), 833 { } 834 }; 835 836 static struct clk_rcg2 gcc_tsif_ref_clk_src = { 837 .cmd_rcgr = 0x36010, 838 .mnd_width = 8, 839 .hid_width = 5, 840 .parent_map = gcc_parent_map_6, 841 .freq_tbl = ftbl_gcc_tsif_ref_clk_src, 842 .clkr.hw.init = &(struct clk_init_data){ 843 .name = "gcc_tsif_ref_clk_src", 844 .parent_data = gcc_parent_data_6, 845 .num_parents = ARRAY_SIZE(gcc_parent_data_6), 846 .ops = &clk_rcg2_ops, 847 }, 848 }; 849 850 static const struct freq_tbl ftbl_gcc_ufs_card_axi_clk_src[] = { 851 F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0), 852 F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0), 853 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0), 854 F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0), 855 F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0), 856 { } 857 }; 858 859 static struct clk_rcg2 gcc_ufs_card_axi_clk_src = { 860 .cmd_rcgr = 0x7501c, 861 .mnd_width = 8, 862 .hid_width = 5, 863 .parent_map = gcc_parent_map_0, 864 .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src, 865 .clkr.hw.init = &(struct clk_init_data){ 866 .name = "gcc_ufs_card_axi_clk_src", 867 .parent_data = gcc_parent_data_0, 868 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 869 .ops = &clk_rcg2_shared_ops, 870 }, 871 }; 872 873 static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src[] = { 874 F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0), 875 F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0), 876 F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0), 877 F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0), 878 { } 879 }; 880 881 static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = { 882 .cmd_rcgr = 0x7505c, 883 .mnd_width = 0, 884 .hid_width = 5, 885 .parent_map = gcc_parent_map_0, 886 .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src, 887 .clkr.hw.init = &(struct clk_init_data){ 888 .name = "gcc_ufs_card_ice_core_clk_src", 889 .parent_data = gcc_parent_data_0, 890 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 891 .ops = &clk_rcg2_shared_ops, 892 }, 893 }; 894 895 static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = { 896 .cmd_rcgr = 0x75090, 897 .mnd_width = 0, 898 .hid_width = 5, 899 .parent_map = gcc_parent_map_4, 900 .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src, 901 .clkr.hw.init = &(struct clk_init_data){ 902 .name = "gcc_ufs_card_phy_aux_clk_src", 903 .parent_data = gcc_parent_data_4, 904 .num_parents = ARRAY_SIZE(gcc_parent_data_4), 905 .ops = &clk_rcg2_ops, 906 }, 907 }; 908 909 static const struct freq_tbl ftbl_gcc_ufs_card_unipro_core_clk_src[] = { 910 F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0), 911 F(75000000, P_GPLL0_OUT_MAIN, 8, 0, 0), 912 F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0), 913 { } 914 }; 915 916 static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = { 917 .cmd_rcgr = 0x75074, 918 .mnd_width = 0, 919 .hid_width = 5, 920 .parent_map = gcc_parent_map_0, 921 .freq_tbl = ftbl_gcc_ufs_card_unipro_core_clk_src, 922 .clkr.hw.init = &(struct clk_init_data){ 923 .name = "gcc_ufs_card_unipro_core_clk_src", 924 .parent_data = gcc_parent_data_0, 925 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 926 .ops = &clk_rcg2_shared_ops, 927 }, 928 }; 929 930 static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = { 931 F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0), 932 F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0), 933 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0), 934 F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0), 935 F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0), 936 { } 937 }; 938 939 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = { 940 .cmd_rcgr = 0x7701c, 941 .mnd_width = 8, 942 .hid_width = 5, 943 .parent_map = gcc_parent_map_0, 944 .freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src, 945 .clkr.hw.init = &(struct clk_init_data){ 946 .name = "gcc_ufs_phy_axi_clk_src", 947 .parent_data = gcc_parent_data_0, 948 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 949 .ops = &clk_rcg2_shared_ops, 950 }, 951 }; 952 953 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = { 954 .cmd_rcgr = 0x7705c, 955 .mnd_width = 0, 956 .hid_width = 5, 957 .parent_map = gcc_parent_map_0, 958 .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src, 959 .clkr.hw.init = &(struct clk_init_data){ 960 .name = "gcc_ufs_phy_ice_core_clk_src", 961 .parent_data = gcc_parent_data_0, 962 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 963 .ops = &clk_rcg2_shared_ops, 964 }, 965 }; 966 967 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = { 968 .cmd_rcgr = 0x77090, 969 .mnd_width = 0, 970 .hid_width = 5, 971 .parent_map = gcc_parent_map_4, 972 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 973 .clkr.hw.init = &(struct clk_init_data){ 974 .name = "gcc_ufs_phy_phy_aux_clk_src", 975 .parent_data = gcc_parent_data_4, 976 .num_parents = ARRAY_SIZE(gcc_parent_data_4), 977 .ops = &clk_rcg2_shared_ops, 978 }, 979 }; 980 981 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = { 982 .cmd_rcgr = 0x77074, 983 .mnd_width = 0, 984 .hid_width = 5, 985 .parent_map = gcc_parent_map_0, 986 .freq_tbl = ftbl_gcc_ufs_card_unipro_core_clk_src, 987 .clkr.hw.init = &(struct clk_init_data){ 988 .name = "gcc_ufs_phy_unipro_core_clk_src", 989 .parent_data = gcc_parent_data_0, 990 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 991 .ops = &clk_rcg2_shared_ops, 992 }, 993 }; 994 995 static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = { 996 F(33333333, P_GPLL0_OUT_EVEN, 9, 0, 0), 997 F(66666667, P_GPLL0_OUT_EVEN, 4.5, 0, 0), 998 F(133333333, P_GPLL0_OUT_MAIN, 4.5, 0, 0), 999 F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0), 1000 F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0), 1001 { } 1002 }; 1003 1004 static struct clk_rcg2 gcc_usb30_prim_master_clk_src = { 1005 .cmd_rcgr = 0xf018, 1006 .mnd_width = 8, 1007 .hid_width = 5, 1008 .parent_map = gcc_parent_map_0, 1009 .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src, 1010 .clkr.hw.init = &(struct clk_init_data){ 1011 .name = "gcc_usb30_prim_master_clk_src", 1012 .parent_data = gcc_parent_data_0, 1013 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1014 .ops = &clk_rcg2_shared_ops, 1015 }, 1016 }; 1017 1018 static const struct freq_tbl ftbl_gcc_usb30_prim_mock_utmi_clk_src[] = { 1019 F(19200000, P_BI_TCXO, 1, 0, 0), 1020 F(20000000, P_GPLL0_OUT_EVEN, 15, 0, 0), 1021 F(40000000, P_GPLL0_OUT_EVEN, 7.5, 0, 0), 1022 F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0), 1023 { } 1024 }; 1025 1026 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = { 1027 .cmd_rcgr = 0xf030, 1028 .mnd_width = 0, 1029 .hid_width = 5, 1030 .parent_map = gcc_parent_map_0, 1031 .freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src, 1032 .clkr.hw.init = &(struct clk_init_data){ 1033 .name = "gcc_usb30_prim_mock_utmi_clk_src", 1034 .parent_data = gcc_parent_data_0, 1035 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1036 .ops = &clk_rcg2_shared_ops, 1037 }, 1038 }; 1039 1040 static struct clk_rcg2 gcc_usb30_sec_master_clk_src = { 1041 .cmd_rcgr = 0x10018, 1042 .mnd_width = 8, 1043 .hid_width = 5, 1044 .parent_map = gcc_parent_map_0, 1045 .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src, 1046 .clkr.hw.init = &(struct clk_init_data){ 1047 .name = "gcc_usb30_sec_master_clk_src", 1048 .parent_data = gcc_parent_data_0, 1049 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1050 .ops = &clk_rcg2_ops, 1051 }, 1052 }; 1053 1054 static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = { 1055 .cmd_rcgr = 0x10030, 1056 .mnd_width = 0, 1057 .hid_width = 5, 1058 .parent_map = gcc_parent_map_0, 1059 .freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src, 1060 .clkr.hw.init = &(struct clk_init_data){ 1061 .name = "gcc_usb30_sec_mock_utmi_clk_src", 1062 .parent_data = gcc_parent_data_0, 1063 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1064 .ops = &clk_rcg2_ops, 1065 }, 1066 }; 1067 1068 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = { 1069 .cmd_rcgr = 0xf05c, 1070 .mnd_width = 0, 1071 .hid_width = 5, 1072 .parent_map = gcc_parent_map_2, 1073 .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src, 1074 .clkr.hw.init = &(struct clk_init_data){ 1075 .name = "gcc_usb3_prim_phy_aux_clk_src", 1076 .parent_data = gcc_parent_data_2, 1077 .num_parents = ARRAY_SIZE(gcc_parent_data_2), 1078 .ops = &clk_rcg2_ops, 1079 }, 1080 }; 1081 1082 static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = { 1083 .cmd_rcgr = 0x1005c, 1084 .mnd_width = 0, 1085 .hid_width = 5, 1086 .parent_map = gcc_parent_map_2, 1087 .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src, 1088 .clkr.hw.init = &(struct clk_init_data){ 1089 .name = "gcc_usb3_sec_phy_aux_clk_src", 1090 .parent_data = gcc_parent_data_2, 1091 .num_parents = ARRAY_SIZE(gcc_parent_data_2), 1092 .ops = &clk_rcg2_shared_ops, 1093 }, 1094 }; 1095 1096 static struct clk_rcg2 gcc_vs_ctrl_clk_src = { 1097 .cmd_rcgr = 0x7a030, 1098 .mnd_width = 0, 1099 .hid_width = 5, 1100 .parent_map = gcc_parent_map_3, 1101 .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src, 1102 .clkr.hw.init = &(struct clk_init_data){ 1103 .name = "gcc_vs_ctrl_clk_src", 1104 .parent_data = gcc_parent_data_3, 1105 .num_parents = ARRAY_SIZE(gcc_parent_data_3), 1106 .ops = &clk_rcg2_ops, 1107 }, 1108 }; 1109 1110 static const struct freq_tbl ftbl_gcc_vsensor_clk_src[] = { 1111 F(19200000, P_BI_TCXO, 1, 0, 0), 1112 F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0), 1113 F(600000000, P_GPLL0_OUT_MAIN, 1, 0, 0), 1114 { } 1115 }; 1116 1117 static struct clk_rcg2 gcc_vsensor_clk_src = { 1118 .cmd_rcgr = 0x7a018, 1119 .mnd_width = 0, 1120 .hid_width = 5, 1121 .parent_map = gcc_parent_map_3, 1122 .freq_tbl = ftbl_gcc_vsensor_clk_src, 1123 .clkr.hw.init = &(struct clk_init_data){ 1124 .name = "gcc_vsensor_clk_src", 1125 .parent_data = gcc_parent_data_8, 1126 .num_parents = ARRAY_SIZE(gcc_parent_data_8), 1127 .ops = &clk_rcg2_ops, 1128 }, 1129 }; 1130 1131 static struct clk_branch gcc_aggre_noc_pcie_tbu_clk = { 1132 .halt_reg = 0x90014, 1133 .halt_check = BRANCH_HALT, 1134 .clkr = { 1135 .enable_reg = 0x90014, 1136 .enable_mask = BIT(0), 1137 .hw.init = &(struct clk_init_data){ 1138 .name = "gcc_aggre_noc_pcie_tbu_clk", 1139 .ops = &clk_branch2_ops, 1140 }, 1141 }, 1142 }; 1143 1144 static struct clk_branch gcc_aggre_ufs_card_axi_clk = { 1145 .halt_reg = 0x82028, 1146 .halt_check = BRANCH_HALT, 1147 .hwcg_reg = 0x82028, 1148 .hwcg_bit = 1, 1149 .clkr = { 1150 .enable_reg = 0x82028, 1151 .enable_mask = BIT(0), 1152 .hw.init = &(struct clk_init_data){ 1153 .name = "gcc_aggre_ufs_card_axi_clk", 1154 .parent_hws = (const struct clk_hw*[]){ 1155 &gcc_ufs_card_axi_clk_src.clkr.hw, 1156 }, 1157 .num_parents = 1, 1158 .flags = CLK_SET_RATE_PARENT, 1159 .ops = &clk_branch2_ops, 1160 }, 1161 }, 1162 }; 1163 1164 static struct clk_branch gcc_aggre_ufs_phy_axi_clk = { 1165 .halt_reg = 0x82024, 1166 .halt_check = BRANCH_HALT, 1167 .hwcg_reg = 0x82024, 1168 .hwcg_bit = 1, 1169 .clkr = { 1170 .enable_reg = 0x82024, 1171 .enable_mask = BIT(0), 1172 .hw.init = &(struct clk_init_data){ 1173 .name = "gcc_aggre_ufs_phy_axi_clk", 1174 .parent_hws = (const struct clk_hw*[]){ 1175 &gcc_ufs_phy_axi_clk_src.clkr.hw, 1176 }, 1177 .num_parents = 1, 1178 .flags = CLK_SET_RATE_PARENT, 1179 .ops = &clk_branch2_ops, 1180 }, 1181 }, 1182 }; 1183 1184 static struct clk_branch gcc_aggre_usb3_prim_axi_clk = { 1185 .halt_reg = 0x8201c, 1186 .halt_check = BRANCH_HALT, 1187 .clkr = { 1188 .enable_reg = 0x8201c, 1189 .enable_mask = BIT(0), 1190 .hw.init = &(struct clk_init_data){ 1191 .name = "gcc_aggre_usb3_prim_axi_clk", 1192 .parent_hws = (const struct clk_hw*[]){ 1193 &gcc_usb30_prim_master_clk_src.clkr.hw, 1194 }, 1195 .num_parents = 1, 1196 .flags = CLK_SET_RATE_PARENT, 1197 .ops = &clk_branch2_ops, 1198 }, 1199 }, 1200 }; 1201 1202 static struct clk_branch gcc_aggre_usb3_sec_axi_clk = { 1203 .halt_reg = 0x82020, 1204 .halt_check = BRANCH_HALT, 1205 .clkr = { 1206 .enable_reg = 0x82020, 1207 .enable_mask = BIT(0), 1208 .hw.init = &(struct clk_init_data){ 1209 .name = "gcc_aggre_usb3_sec_axi_clk", 1210 .parent_hws = (const struct clk_hw*[]){ 1211 &gcc_usb30_sec_master_clk_src.clkr.hw, 1212 }, 1213 .num_parents = 1, 1214 .flags = CLK_SET_RATE_PARENT, 1215 .ops = &clk_branch2_ops, 1216 }, 1217 }, 1218 }; 1219 1220 static struct clk_branch gcc_apc_vs_clk = { 1221 .halt_reg = 0x7a050, 1222 .halt_check = BRANCH_HALT, 1223 .clkr = { 1224 .enable_reg = 0x7a050, 1225 .enable_mask = BIT(0), 1226 .hw.init = &(struct clk_init_data){ 1227 .name = "gcc_apc_vs_clk", 1228 .parent_hws = (const struct clk_hw*[]){ 1229 &gcc_vsensor_clk_src.clkr.hw, 1230 }, 1231 .num_parents = 1, 1232 .flags = CLK_SET_RATE_PARENT, 1233 .ops = &clk_branch2_ops, 1234 }, 1235 }, 1236 }; 1237 1238 static struct clk_branch gcc_boot_rom_ahb_clk = { 1239 .halt_reg = 0x38004, 1240 .halt_check = BRANCH_HALT_VOTED, 1241 .hwcg_reg = 0x38004, 1242 .hwcg_bit = 1, 1243 .clkr = { 1244 .enable_reg = 0x52004, 1245 .enable_mask = BIT(10), 1246 .hw.init = &(struct clk_init_data){ 1247 .name = "gcc_boot_rom_ahb_clk", 1248 .ops = &clk_branch2_ops, 1249 }, 1250 }, 1251 }; 1252 1253 static struct clk_branch gcc_camera_ahb_clk = { 1254 .halt_reg = 0xb008, 1255 .halt_check = BRANCH_HALT, 1256 .hwcg_reg = 0xb008, 1257 .hwcg_bit = 1, 1258 .clkr = { 1259 .enable_reg = 0xb008, 1260 .enable_mask = BIT(0), 1261 .hw.init = &(struct clk_init_data){ 1262 .name = "gcc_camera_ahb_clk", 1263 .flags = CLK_IS_CRITICAL, 1264 .ops = &clk_branch2_ops, 1265 }, 1266 }, 1267 }; 1268 1269 static struct clk_branch gcc_camera_axi_clk = { 1270 .halt_reg = 0xb020, 1271 .halt_check = BRANCH_VOTED, 1272 .clkr = { 1273 .enable_reg = 0xb020, 1274 .enable_mask = BIT(0), 1275 .hw.init = &(struct clk_init_data){ 1276 .name = "gcc_camera_axi_clk", 1277 .ops = &clk_branch2_ops, 1278 }, 1279 }, 1280 }; 1281 1282 static struct clk_branch gcc_camera_xo_clk = { 1283 .halt_reg = 0xb02c, 1284 .halt_check = BRANCH_HALT, 1285 .clkr = { 1286 .enable_reg = 0xb02c, 1287 .enable_mask = BIT(0), 1288 .hw.init = &(struct clk_init_data){ 1289 .name = "gcc_camera_xo_clk", 1290 .flags = CLK_IS_CRITICAL, 1291 .ops = &clk_branch2_ops, 1292 }, 1293 }, 1294 }; 1295 1296 static struct clk_branch gcc_ce1_ahb_clk = { 1297 .halt_reg = 0x4100c, 1298 .halt_check = BRANCH_HALT_VOTED, 1299 .hwcg_reg = 0x4100c, 1300 .hwcg_bit = 1, 1301 .clkr = { 1302 .enable_reg = 0x52004, 1303 .enable_mask = BIT(3), 1304 .hw.init = &(struct clk_init_data){ 1305 .name = "gcc_ce1_ahb_clk", 1306 .ops = &clk_branch2_ops, 1307 }, 1308 }, 1309 }; 1310 1311 static struct clk_branch gcc_ce1_axi_clk = { 1312 .halt_reg = 0x41008, 1313 .halt_check = BRANCH_HALT_VOTED, 1314 .clkr = { 1315 .enable_reg = 0x52004, 1316 .enable_mask = BIT(4), 1317 .hw.init = &(struct clk_init_data){ 1318 .name = "gcc_ce1_axi_clk", 1319 .ops = &clk_branch2_ops, 1320 }, 1321 }, 1322 }; 1323 1324 static struct clk_branch gcc_ce1_clk = { 1325 .halt_reg = 0x41004, 1326 .halt_check = BRANCH_HALT_VOTED, 1327 .clkr = { 1328 .enable_reg = 0x52004, 1329 .enable_mask = BIT(5), 1330 .hw.init = &(struct clk_init_data){ 1331 .name = "gcc_ce1_clk", 1332 .ops = &clk_branch2_ops, 1333 }, 1334 }, 1335 }; 1336 1337 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = { 1338 .halt_reg = 0x502c, 1339 .halt_check = BRANCH_HALT, 1340 .clkr = { 1341 .enable_reg = 0x502c, 1342 .enable_mask = BIT(0), 1343 .hw.init = &(struct clk_init_data){ 1344 .name = "gcc_cfg_noc_usb3_prim_axi_clk", 1345 .parent_hws = (const struct clk_hw*[]){ 1346 &gcc_usb30_prim_master_clk_src.clkr.hw, 1347 }, 1348 .num_parents = 1, 1349 .flags = CLK_SET_RATE_PARENT, 1350 .ops = &clk_branch2_ops, 1351 }, 1352 }, 1353 }; 1354 1355 static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = { 1356 .halt_reg = 0x5030, 1357 .halt_check = BRANCH_HALT, 1358 .clkr = { 1359 .enable_reg = 0x5030, 1360 .enable_mask = BIT(0), 1361 .hw.init = &(struct clk_init_data){ 1362 .name = "gcc_cfg_noc_usb3_sec_axi_clk", 1363 .parent_hws = (const struct clk_hw*[]){ 1364 &gcc_usb30_sec_master_clk_src.clkr.hw, 1365 }, 1366 .num_parents = 1, 1367 .flags = CLK_SET_RATE_PARENT, 1368 .ops = &clk_branch2_ops, 1369 }, 1370 }, 1371 }; 1372 1373 static struct clk_branch gcc_cpuss_ahb_clk = { 1374 .halt_reg = 0x48000, 1375 .halt_check = BRANCH_HALT_VOTED, 1376 .clkr = { 1377 .enable_reg = 0x52004, 1378 .enable_mask = BIT(21), 1379 .hw.init = &(struct clk_init_data){ 1380 .name = "gcc_cpuss_ahb_clk", 1381 .parent_hws = (const struct clk_hw*[]){ 1382 &gcc_cpuss_ahb_clk_src.clkr.hw, 1383 }, 1384 .num_parents = 1, 1385 .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 1386 .ops = &clk_branch2_ops, 1387 }, 1388 }, 1389 }; 1390 1391 static struct clk_branch gcc_cpuss_rbcpr_clk = { 1392 .halt_reg = 0x48008, 1393 .halt_check = BRANCH_HALT, 1394 .clkr = { 1395 .enable_reg = 0x48008, 1396 .enable_mask = BIT(0), 1397 .hw.init = &(struct clk_init_data){ 1398 .name = "gcc_cpuss_rbcpr_clk", 1399 .parent_hws = (const struct clk_hw*[]){ 1400 &gcc_cpuss_rbcpr_clk_src.clkr.hw, 1401 }, 1402 .num_parents = 1, 1403 .flags = CLK_SET_RATE_PARENT, 1404 .ops = &clk_branch2_ops, 1405 }, 1406 }, 1407 }; 1408 1409 /* 1410 * The source clock frequencies are different for SDM670; define a child clock 1411 * pointing to the source clock that uses SDM670 frequencies. 1412 */ 1413 static struct clk_branch gcc_sdm670_cpuss_rbcpr_clk = { 1414 .halt_reg = 0x48008, 1415 .halt_check = BRANCH_HALT, 1416 .clkr = { 1417 .enable_reg = 0x48008, 1418 .enable_mask = BIT(0), 1419 .hw.init = &(struct clk_init_data){ 1420 .name = "gcc_cpuss_rbcpr_clk", 1421 .parent_hws = (const struct clk_hw*[]){ 1422 &gcc_sdm670_cpuss_rbcpr_clk_src.clkr.hw, 1423 }, 1424 .num_parents = 1, 1425 .flags = CLK_SET_RATE_PARENT, 1426 .ops = &clk_branch2_ops, 1427 }, 1428 }, 1429 }; 1430 1431 static struct clk_branch gcc_ddrss_gpu_axi_clk = { 1432 .halt_reg = 0x44038, 1433 .halt_check = BRANCH_VOTED, 1434 .clkr = { 1435 .enable_reg = 0x44038, 1436 .enable_mask = BIT(0), 1437 .hw.init = &(struct clk_init_data){ 1438 .name = "gcc_ddrss_gpu_axi_clk", 1439 .ops = &clk_branch2_ops, 1440 }, 1441 }, 1442 }; 1443 1444 static struct clk_branch gcc_disp_ahb_clk = { 1445 .halt_reg = 0xb00c, 1446 .halt_check = BRANCH_HALT, 1447 .hwcg_reg = 0xb00c, 1448 .hwcg_bit = 1, 1449 .clkr = { 1450 .enable_reg = 0xb00c, 1451 .enable_mask = BIT(0), 1452 .hw.init = &(struct clk_init_data){ 1453 .name = "gcc_disp_ahb_clk", 1454 .flags = CLK_IS_CRITICAL, 1455 .ops = &clk_branch2_ops, 1456 }, 1457 }, 1458 }; 1459 1460 static struct clk_branch gcc_disp_axi_clk = { 1461 .halt_reg = 0xb024, 1462 .halt_check = BRANCH_VOTED, 1463 .clkr = { 1464 .enable_reg = 0xb024, 1465 .enable_mask = BIT(0), 1466 .hw.init = &(struct clk_init_data){ 1467 .name = "gcc_disp_axi_clk", 1468 .ops = &clk_branch2_ops, 1469 }, 1470 }, 1471 }; 1472 1473 static struct clk_branch gcc_disp_gpll0_clk_src = { 1474 .halt_check = BRANCH_HALT_DELAY, 1475 .clkr = { 1476 .enable_reg = 0x52004, 1477 .enable_mask = BIT(18), 1478 .hw.init = &(struct clk_init_data){ 1479 .name = "gcc_disp_gpll0_clk_src", 1480 .parent_hws = (const struct clk_hw*[]){ 1481 &gpll0.clkr.hw, 1482 }, 1483 .num_parents = 1, 1484 .ops = &clk_branch2_aon_ops, 1485 }, 1486 }, 1487 }; 1488 1489 static struct clk_branch gcc_disp_gpll0_div_clk_src = { 1490 .halt_check = BRANCH_HALT_DELAY, 1491 .clkr = { 1492 .enable_reg = 0x52004, 1493 .enable_mask = BIT(19), 1494 .hw.init = &(struct clk_init_data){ 1495 .name = "gcc_disp_gpll0_div_clk_src", 1496 .parent_hws = (const struct clk_hw*[]){ 1497 &gpll0_out_even.clkr.hw, 1498 }, 1499 .num_parents = 1, 1500 .ops = &clk_branch2_ops, 1501 }, 1502 }, 1503 }; 1504 1505 static struct clk_branch gcc_disp_xo_clk = { 1506 .halt_reg = 0xb030, 1507 .halt_check = BRANCH_HALT, 1508 .clkr = { 1509 .enable_reg = 0xb030, 1510 .enable_mask = BIT(0), 1511 .hw.init = &(struct clk_init_data){ 1512 .name = "gcc_disp_xo_clk", 1513 .flags = CLK_IS_CRITICAL, 1514 .ops = &clk_branch2_ops, 1515 }, 1516 }, 1517 }; 1518 1519 static struct clk_branch gcc_gp1_clk = { 1520 .halt_reg = 0x64000, 1521 .halt_check = BRANCH_HALT, 1522 .clkr = { 1523 .enable_reg = 0x64000, 1524 .enable_mask = BIT(0), 1525 .hw.init = &(struct clk_init_data){ 1526 .name = "gcc_gp1_clk", 1527 .parent_hws = (const struct clk_hw*[]){ 1528 &gcc_gp1_clk_src.clkr.hw, 1529 }, 1530 .num_parents = 1, 1531 .flags = CLK_SET_RATE_PARENT, 1532 .ops = &clk_branch2_ops, 1533 }, 1534 }, 1535 }; 1536 1537 static struct clk_branch gcc_gp2_clk = { 1538 .halt_reg = 0x65000, 1539 .halt_check = BRANCH_HALT, 1540 .clkr = { 1541 .enable_reg = 0x65000, 1542 .enable_mask = BIT(0), 1543 .hw.init = &(struct clk_init_data){ 1544 .name = "gcc_gp2_clk", 1545 .parent_hws = (const struct clk_hw*[]){ 1546 &gcc_gp2_clk_src.clkr.hw, 1547 }, 1548 .num_parents = 1, 1549 .flags = CLK_SET_RATE_PARENT, 1550 .ops = &clk_branch2_ops, 1551 }, 1552 }, 1553 }; 1554 1555 static struct clk_branch gcc_gp3_clk = { 1556 .halt_reg = 0x66000, 1557 .halt_check = BRANCH_HALT, 1558 .clkr = { 1559 .enable_reg = 0x66000, 1560 .enable_mask = BIT(0), 1561 .hw.init = &(struct clk_init_data){ 1562 .name = "gcc_gp3_clk", 1563 .parent_hws = (const struct clk_hw*[]){ 1564 &gcc_gp3_clk_src.clkr.hw, 1565 }, 1566 .num_parents = 1, 1567 .flags = CLK_SET_RATE_PARENT, 1568 .ops = &clk_branch2_ops, 1569 }, 1570 }, 1571 }; 1572 1573 static struct clk_branch gcc_gpu_cfg_ahb_clk = { 1574 .halt_reg = 0x71004, 1575 .halt_check = BRANCH_HALT, 1576 .hwcg_reg = 0x71004, 1577 .hwcg_bit = 1, 1578 .clkr = { 1579 .enable_reg = 0x71004, 1580 .enable_mask = BIT(0), 1581 .hw.init = &(struct clk_init_data){ 1582 .name = "gcc_gpu_cfg_ahb_clk", 1583 .flags = CLK_IS_CRITICAL, 1584 .ops = &clk_branch2_ops, 1585 }, 1586 }, 1587 }; 1588 1589 static struct clk_branch gcc_gpu_gpll0_clk_src = { 1590 .halt_check = BRANCH_HALT_DELAY, 1591 .clkr = { 1592 .enable_reg = 0x52004, 1593 .enable_mask = BIT(15), 1594 .hw.init = &(struct clk_init_data){ 1595 .name = "gcc_gpu_gpll0_clk_src", 1596 .parent_hws = (const struct clk_hw*[]){ 1597 &gpll0.clkr.hw, 1598 }, 1599 .num_parents = 1, 1600 .ops = &clk_branch2_ops, 1601 }, 1602 }, 1603 }; 1604 1605 static struct clk_branch gcc_gpu_gpll0_div_clk_src = { 1606 .halt_check = BRANCH_HALT_DELAY, 1607 .clkr = { 1608 .enable_reg = 0x52004, 1609 .enable_mask = BIT(16), 1610 .hw.init = &(struct clk_init_data){ 1611 .name = "gcc_gpu_gpll0_div_clk_src", 1612 .parent_hws = (const struct clk_hw*[]){ 1613 &gpll0_out_even.clkr.hw, 1614 }, 1615 .num_parents = 1, 1616 .ops = &clk_branch2_ops, 1617 }, 1618 }, 1619 }; 1620 1621 static struct clk_branch gcc_gpu_iref_clk = { 1622 .halt_reg = 0x8c010, 1623 .halt_check = BRANCH_HALT, 1624 .clkr = { 1625 .enable_reg = 0x8c010, 1626 .enable_mask = BIT(0), 1627 .hw.init = &(struct clk_init_data){ 1628 .name = "gcc_gpu_iref_clk", 1629 .ops = &clk_branch2_ops, 1630 }, 1631 }, 1632 }; 1633 1634 static struct clk_branch gcc_gpu_memnoc_gfx_clk = { 1635 .halt_reg = 0x7100c, 1636 .halt_check = BRANCH_VOTED, 1637 .clkr = { 1638 .enable_reg = 0x7100c, 1639 .enable_mask = BIT(0), 1640 .hw.init = &(struct clk_init_data){ 1641 .name = "gcc_gpu_memnoc_gfx_clk", 1642 .ops = &clk_branch2_ops, 1643 }, 1644 }, 1645 }; 1646 1647 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = { 1648 .halt_reg = 0x71018, 1649 .halt_check = BRANCH_HALT, 1650 .clkr = { 1651 .enable_reg = 0x71018, 1652 .enable_mask = BIT(0), 1653 .hw.init = &(struct clk_init_data){ 1654 .name = "gcc_gpu_snoc_dvm_gfx_clk", 1655 .ops = &clk_branch2_ops, 1656 }, 1657 }, 1658 }; 1659 1660 static struct clk_branch gcc_gpu_vs_clk = { 1661 .halt_reg = 0x7a04c, 1662 .halt_check = BRANCH_HALT, 1663 .clkr = { 1664 .enable_reg = 0x7a04c, 1665 .enable_mask = BIT(0), 1666 .hw.init = &(struct clk_init_data){ 1667 .name = "gcc_gpu_vs_clk", 1668 .parent_hws = (const struct clk_hw*[]){ 1669 &gcc_vsensor_clk_src.clkr.hw, 1670 }, 1671 .num_parents = 1, 1672 .flags = CLK_SET_RATE_PARENT, 1673 .ops = &clk_branch2_ops, 1674 }, 1675 }, 1676 }; 1677 1678 static struct clk_branch gcc_mss_axis2_clk = { 1679 .halt_reg = 0x8a008, 1680 .halt_check = BRANCH_HALT, 1681 .clkr = { 1682 .enable_reg = 0x8a008, 1683 .enable_mask = BIT(0), 1684 .hw.init = &(struct clk_init_data){ 1685 .name = "gcc_mss_axis2_clk", 1686 .ops = &clk_branch2_ops, 1687 }, 1688 }, 1689 }; 1690 1691 static struct clk_branch gcc_mss_cfg_ahb_clk = { 1692 .halt_reg = 0x8a000, 1693 .halt_check = BRANCH_HALT, 1694 .hwcg_reg = 0x8a000, 1695 .hwcg_bit = 1, 1696 .clkr = { 1697 .enable_reg = 0x8a000, 1698 .enable_mask = BIT(0), 1699 .hw.init = &(struct clk_init_data){ 1700 .name = "gcc_mss_cfg_ahb_clk", 1701 .ops = &clk_branch2_ops, 1702 }, 1703 }, 1704 }; 1705 1706 static struct clk_branch gcc_mss_gpll0_div_clk_src = { 1707 .halt_check = BRANCH_HALT_DELAY, 1708 .clkr = { 1709 .enable_reg = 0x52004, 1710 .enable_mask = BIT(17), 1711 .hw.init = &(struct clk_init_data){ 1712 .name = "gcc_mss_gpll0_div_clk_src", 1713 .ops = &clk_branch2_ops, 1714 }, 1715 }, 1716 }; 1717 1718 static struct clk_branch gcc_mss_mfab_axis_clk = { 1719 .halt_reg = 0x8a004, 1720 .halt_check = BRANCH_VOTED, 1721 .hwcg_reg = 0x8a004, 1722 .hwcg_bit = 1, 1723 .clkr = { 1724 .enable_reg = 0x8a004, 1725 .enable_mask = BIT(0), 1726 .hw.init = &(struct clk_init_data){ 1727 .name = "gcc_mss_mfab_axis_clk", 1728 .ops = &clk_branch2_ops, 1729 }, 1730 }, 1731 }; 1732 1733 static struct clk_branch gcc_mss_q6_memnoc_axi_clk = { 1734 .halt_reg = 0x8a154, 1735 .halt_check = BRANCH_VOTED, 1736 .clkr = { 1737 .enable_reg = 0x8a154, 1738 .enable_mask = BIT(0), 1739 .hw.init = &(struct clk_init_data){ 1740 .name = "gcc_mss_q6_memnoc_axi_clk", 1741 .ops = &clk_branch2_ops, 1742 }, 1743 }, 1744 }; 1745 1746 static struct clk_branch gcc_mss_snoc_axi_clk = { 1747 .halt_reg = 0x8a150, 1748 .halt_check = BRANCH_HALT, 1749 .clkr = { 1750 .enable_reg = 0x8a150, 1751 .enable_mask = BIT(0), 1752 .hw.init = &(struct clk_init_data){ 1753 .name = "gcc_mss_snoc_axi_clk", 1754 .ops = &clk_branch2_ops, 1755 }, 1756 }, 1757 }; 1758 1759 static struct clk_branch gcc_mss_vs_clk = { 1760 .halt_reg = 0x7a048, 1761 .halt_check = BRANCH_HALT, 1762 .clkr = { 1763 .enable_reg = 0x7a048, 1764 .enable_mask = BIT(0), 1765 .hw.init = &(struct clk_init_data){ 1766 .name = "gcc_mss_vs_clk", 1767 .parent_hws = (const struct clk_hw*[]){ 1768 &gcc_vsensor_clk_src.clkr.hw, 1769 }, 1770 .num_parents = 1, 1771 .flags = CLK_SET_RATE_PARENT, 1772 .ops = &clk_branch2_ops, 1773 }, 1774 }, 1775 }; 1776 1777 static struct clk_branch gcc_pcie_0_aux_clk = { 1778 .halt_reg = 0x6b01c, 1779 .halt_check = BRANCH_HALT_VOTED, 1780 .clkr = { 1781 .enable_reg = 0x5200c, 1782 .enable_mask = BIT(3), 1783 .hw.init = &(struct clk_init_data){ 1784 .name = "gcc_pcie_0_aux_clk", 1785 .parent_hws = (const struct clk_hw*[]){ 1786 &gcc_pcie_0_aux_clk_src.clkr.hw, 1787 }, 1788 .num_parents = 1, 1789 .flags = CLK_SET_RATE_PARENT, 1790 .ops = &clk_branch2_ops, 1791 }, 1792 }, 1793 }; 1794 1795 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = { 1796 .halt_reg = 0x6b018, 1797 .halt_check = BRANCH_HALT_VOTED, 1798 .hwcg_reg = 0x6b018, 1799 .hwcg_bit = 1, 1800 .clkr = { 1801 .enable_reg = 0x5200c, 1802 .enable_mask = BIT(2), 1803 .hw.init = &(struct clk_init_data){ 1804 .name = "gcc_pcie_0_cfg_ahb_clk", 1805 .ops = &clk_branch2_ops, 1806 }, 1807 }, 1808 }; 1809 1810 static struct clk_branch gcc_pcie_0_clkref_clk = { 1811 .halt_reg = 0x8c00c, 1812 .halt_check = BRANCH_HALT, 1813 .clkr = { 1814 .enable_reg = 0x8c00c, 1815 .enable_mask = BIT(0), 1816 .hw.init = &(struct clk_init_data){ 1817 .name = "gcc_pcie_0_clkref_clk", 1818 .ops = &clk_branch2_ops, 1819 }, 1820 }, 1821 }; 1822 1823 static struct clk_branch gcc_pcie_0_mstr_axi_clk = { 1824 .halt_reg = 0x6b014, 1825 .halt_check = BRANCH_HALT_VOTED, 1826 .clkr = { 1827 .enable_reg = 0x5200c, 1828 .enable_mask = BIT(1), 1829 .hw.init = &(struct clk_init_data){ 1830 .name = "gcc_pcie_0_mstr_axi_clk", 1831 .ops = &clk_branch2_ops, 1832 }, 1833 }, 1834 }; 1835 1836 static struct clk_branch gcc_pcie_0_pipe_clk = { 1837 .halt_check = BRANCH_HALT_SKIP, 1838 .clkr = { 1839 .enable_reg = 0x5200c, 1840 .enable_mask = BIT(4), 1841 .hw.init = &(struct clk_init_data){ 1842 .name = "gcc_pcie_0_pipe_clk", 1843 .parent_data = &(const struct clk_parent_data){ 1844 .fw_name = "pcie_0_pipe_clk", .name = "pcie_0_pipe_clk", 1845 }, 1846 .num_parents = 1, 1847 .flags = CLK_SET_RATE_PARENT, 1848 .ops = &clk_branch2_ops, 1849 }, 1850 }, 1851 }; 1852 1853 static struct clk_branch gcc_pcie_0_slv_axi_clk = { 1854 .halt_reg = 0x6b010, 1855 .halt_check = BRANCH_HALT_VOTED, 1856 .hwcg_reg = 0x6b010, 1857 .hwcg_bit = 1, 1858 .clkr = { 1859 .enable_reg = 0x5200c, 1860 .enable_mask = BIT(0), 1861 .hw.init = &(struct clk_init_data){ 1862 .name = "gcc_pcie_0_slv_axi_clk", 1863 .ops = &clk_branch2_ops, 1864 }, 1865 }, 1866 }; 1867 1868 static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = { 1869 .halt_reg = 0x6b00c, 1870 .halt_check = BRANCH_HALT_VOTED, 1871 .clkr = { 1872 .enable_reg = 0x5200c, 1873 .enable_mask = BIT(5), 1874 .hw.init = &(struct clk_init_data){ 1875 .name = "gcc_pcie_0_slv_q2a_axi_clk", 1876 .ops = &clk_branch2_ops, 1877 }, 1878 }, 1879 }; 1880 1881 static struct clk_branch gcc_pcie_1_aux_clk = { 1882 .halt_reg = 0x8d01c, 1883 .halt_check = BRANCH_HALT_VOTED, 1884 .clkr = { 1885 .enable_reg = 0x52004, 1886 .enable_mask = BIT(29), 1887 .hw.init = &(struct clk_init_data){ 1888 .name = "gcc_pcie_1_aux_clk", 1889 .parent_hws = (const struct clk_hw*[]){ 1890 &gcc_pcie_1_aux_clk_src.clkr.hw, 1891 }, 1892 .num_parents = 1, 1893 .flags = CLK_SET_RATE_PARENT, 1894 .ops = &clk_branch2_ops, 1895 }, 1896 }, 1897 }; 1898 1899 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = { 1900 .halt_reg = 0x8d018, 1901 .halt_check = BRANCH_HALT_VOTED, 1902 .hwcg_reg = 0x8d018, 1903 .hwcg_bit = 1, 1904 .clkr = { 1905 .enable_reg = 0x52004, 1906 .enable_mask = BIT(28), 1907 .hw.init = &(struct clk_init_data){ 1908 .name = "gcc_pcie_1_cfg_ahb_clk", 1909 .ops = &clk_branch2_ops, 1910 }, 1911 }, 1912 }; 1913 1914 static struct clk_branch gcc_pcie_1_clkref_clk = { 1915 .halt_reg = 0x8c02c, 1916 .halt_check = BRANCH_HALT, 1917 .clkr = { 1918 .enable_reg = 0x8c02c, 1919 .enable_mask = BIT(0), 1920 .hw.init = &(struct clk_init_data){ 1921 .name = "gcc_pcie_1_clkref_clk", 1922 .ops = &clk_branch2_ops, 1923 }, 1924 }, 1925 }; 1926 1927 static struct clk_branch gcc_pcie_1_mstr_axi_clk = { 1928 .halt_reg = 0x8d014, 1929 .halt_check = BRANCH_HALT_VOTED, 1930 .clkr = { 1931 .enable_reg = 0x52004, 1932 .enable_mask = BIT(27), 1933 .hw.init = &(struct clk_init_data){ 1934 .name = "gcc_pcie_1_mstr_axi_clk", 1935 .ops = &clk_branch2_ops, 1936 }, 1937 }, 1938 }; 1939 1940 static struct clk_branch gcc_pcie_1_pipe_clk = { 1941 .halt_check = BRANCH_HALT_SKIP, 1942 .clkr = { 1943 .enable_reg = 0x52004, 1944 .enable_mask = BIT(30), 1945 .hw.init = &(struct clk_init_data){ 1946 .name = "gcc_pcie_1_pipe_clk", 1947 .parent_data = &(const struct clk_parent_data){ 1948 .fw_name = "pcie_1_pipe_clk", .name = "pcie_1_pipe_clk", 1949 }, 1950 .num_parents = 1, 1951 .ops = &clk_branch2_ops, 1952 }, 1953 }, 1954 }; 1955 1956 static struct clk_branch gcc_pcie_1_slv_axi_clk = { 1957 .halt_reg = 0x8d010, 1958 .halt_check = BRANCH_HALT_VOTED, 1959 .hwcg_reg = 0x8d010, 1960 .hwcg_bit = 1, 1961 .clkr = { 1962 .enable_reg = 0x52004, 1963 .enable_mask = BIT(26), 1964 .hw.init = &(struct clk_init_data){ 1965 .name = "gcc_pcie_1_slv_axi_clk", 1966 .ops = &clk_branch2_ops, 1967 }, 1968 }, 1969 }; 1970 1971 static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = { 1972 .halt_reg = 0x8d00c, 1973 .halt_check = BRANCH_HALT_VOTED, 1974 .clkr = { 1975 .enable_reg = 0x52004, 1976 .enable_mask = BIT(25), 1977 .hw.init = &(struct clk_init_data){ 1978 .name = "gcc_pcie_1_slv_q2a_axi_clk", 1979 .ops = &clk_branch2_ops, 1980 }, 1981 }, 1982 }; 1983 1984 static struct clk_branch gcc_pcie_phy_aux_clk = { 1985 .halt_reg = 0x6f004, 1986 .halt_check = BRANCH_HALT, 1987 .clkr = { 1988 .enable_reg = 0x6f004, 1989 .enable_mask = BIT(0), 1990 .hw.init = &(struct clk_init_data){ 1991 .name = "gcc_pcie_phy_aux_clk", 1992 .parent_hws = (const struct clk_hw*[]){ 1993 &gcc_pcie_0_aux_clk_src.clkr.hw, 1994 }, 1995 .num_parents = 1, 1996 .flags = CLK_SET_RATE_PARENT, 1997 .ops = &clk_branch2_ops, 1998 }, 1999 }, 2000 }; 2001 2002 static struct clk_branch gcc_pcie_phy_refgen_clk = { 2003 .halt_reg = 0x6f02c, 2004 .halt_check = BRANCH_HALT, 2005 .clkr = { 2006 .enable_reg = 0x6f02c, 2007 .enable_mask = BIT(0), 2008 .hw.init = &(struct clk_init_data){ 2009 .name = "gcc_pcie_phy_refgen_clk", 2010 .parent_hws = (const struct clk_hw*[]){ 2011 &gcc_pcie_phy_refgen_clk_src.clkr.hw, 2012 }, 2013 .num_parents = 1, 2014 .flags = CLK_SET_RATE_PARENT, 2015 .ops = &clk_branch2_ops, 2016 }, 2017 }, 2018 }; 2019 2020 static struct clk_branch gcc_pdm2_clk = { 2021 .halt_reg = 0x3300c, 2022 .halt_check = BRANCH_HALT, 2023 .clkr = { 2024 .enable_reg = 0x3300c, 2025 .enable_mask = BIT(0), 2026 .hw.init = &(struct clk_init_data){ 2027 .name = "gcc_pdm2_clk", 2028 .parent_hws = (const struct clk_hw*[]){ 2029 &gcc_pdm2_clk_src.clkr.hw, 2030 }, 2031 .num_parents = 1, 2032 .flags = CLK_SET_RATE_PARENT, 2033 .ops = &clk_branch2_ops, 2034 }, 2035 }, 2036 }; 2037 2038 static struct clk_branch gcc_pdm_ahb_clk = { 2039 .halt_reg = 0x33004, 2040 .halt_check = BRANCH_HALT, 2041 .hwcg_reg = 0x33004, 2042 .hwcg_bit = 1, 2043 .clkr = { 2044 .enable_reg = 0x33004, 2045 .enable_mask = BIT(0), 2046 .hw.init = &(struct clk_init_data){ 2047 .name = "gcc_pdm_ahb_clk", 2048 .ops = &clk_branch2_ops, 2049 }, 2050 }, 2051 }; 2052 2053 static struct clk_branch gcc_pdm_xo4_clk = { 2054 .halt_reg = 0x33008, 2055 .halt_check = BRANCH_HALT, 2056 .clkr = { 2057 .enable_reg = 0x33008, 2058 .enable_mask = BIT(0), 2059 .hw.init = &(struct clk_init_data){ 2060 .name = "gcc_pdm_xo4_clk", 2061 .ops = &clk_branch2_ops, 2062 }, 2063 }, 2064 }; 2065 2066 static struct clk_branch gcc_prng_ahb_clk = { 2067 .halt_reg = 0x34004, 2068 .halt_check = BRANCH_HALT_VOTED, 2069 .hwcg_reg = 0x34004, 2070 .hwcg_bit = 1, 2071 .clkr = { 2072 .enable_reg = 0x52004, 2073 .enable_mask = BIT(13), 2074 .hw.init = &(struct clk_init_data){ 2075 .name = "gcc_prng_ahb_clk", 2076 .ops = &clk_branch2_ops, 2077 }, 2078 }, 2079 }; 2080 2081 static struct clk_branch gcc_qmip_camera_ahb_clk = { 2082 .halt_reg = 0xb014, 2083 .halt_check = BRANCH_HALT, 2084 .hwcg_reg = 0xb014, 2085 .hwcg_bit = 1, 2086 .clkr = { 2087 .enable_reg = 0xb014, 2088 .enable_mask = BIT(0), 2089 .hw.init = &(struct clk_init_data){ 2090 .name = "gcc_qmip_camera_ahb_clk", 2091 .ops = &clk_branch2_ops, 2092 }, 2093 }, 2094 }; 2095 2096 static struct clk_branch gcc_qmip_disp_ahb_clk = { 2097 .halt_reg = 0xb018, 2098 .halt_check = BRANCH_HALT, 2099 .hwcg_reg = 0xb018, 2100 .hwcg_bit = 1, 2101 .clkr = { 2102 .enable_reg = 0xb018, 2103 .enable_mask = BIT(0), 2104 .hw.init = &(struct clk_init_data){ 2105 .name = "gcc_qmip_disp_ahb_clk", 2106 .ops = &clk_branch2_ops, 2107 }, 2108 }, 2109 }; 2110 2111 static struct clk_branch gcc_qmip_video_ahb_clk = { 2112 .halt_reg = 0xb010, 2113 .halt_check = BRANCH_HALT, 2114 .hwcg_reg = 0xb010, 2115 .hwcg_bit = 1, 2116 .clkr = { 2117 .enable_reg = 0xb010, 2118 .enable_mask = BIT(0), 2119 .hw.init = &(struct clk_init_data){ 2120 .name = "gcc_qmip_video_ahb_clk", 2121 .ops = &clk_branch2_ops, 2122 }, 2123 }, 2124 }; 2125 2126 static struct clk_branch gcc_qspi_cnoc_periph_ahb_clk = { 2127 .halt_reg = 0x4b000, 2128 .halt_check = BRANCH_HALT, 2129 .clkr = { 2130 .enable_reg = 0x4b000, 2131 .enable_mask = BIT(0), 2132 .hw.init = &(struct clk_init_data){ 2133 .name = "gcc_qspi_cnoc_periph_ahb_clk", 2134 .ops = &clk_branch2_ops, 2135 }, 2136 }, 2137 }; 2138 2139 static struct clk_branch gcc_qspi_core_clk = { 2140 .halt_reg = 0x4b004, 2141 .halt_check = BRANCH_HALT, 2142 .clkr = { 2143 .enable_reg = 0x4b004, 2144 .enable_mask = BIT(0), 2145 .hw.init = &(struct clk_init_data){ 2146 .name = "gcc_qspi_core_clk", 2147 .parent_hws = (const struct clk_hw*[]){ 2148 &gcc_qspi_core_clk_src.clkr.hw, 2149 }, 2150 .num_parents = 1, 2151 .flags = CLK_SET_RATE_PARENT, 2152 .ops = &clk_branch2_ops, 2153 }, 2154 }, 2155 }; 2156 2157 static struct clk_branch gcc_qupv3_wrap0_s0_clk = { 2158 .halt_reg = 0x17030, 2159 .halt_check = BRANCH_HALT_VOTED, 2160 .clkr = { 2161 .enable_reg = 0x5200c, 2162 .enable_mask = BIT(10), 2163 .hw.init = &(struct clk_init_data){ 2164 .name = "gcc_qupv3_wrap0_s0_clk", 2165 .parent_hws = (const struct clk_hw*[]){ 2166 &gcc_qupv3_wrap0_s0_clk_src.clkr.hw, 2167 }, 2168 .num_parents = 1, 2169 .flags = CLK_SET_RATE_PARENT, 2170 .ops = &clk_branch2_ops, 2171 }, 2172 }, 2173 }; 2174 2175 static struct clk_branch gcc_qupv3_wrap0_s1_clk = { 2176 .halt_reg = 0x17160, 2177 .halt_check = BRANCH_HALT_VOTED, 2178 .clkr = { 2179 .enable_reg = 0x5200c, 2180 .enable_mask = BIT(11), 2181 .hw.init = &(struct clk_init_data){ 2182 .name = "gcc_qupv3_wrap0_s1_clk", 2183 .parent_hws = (const struct clk_hw*[]){ 2184 &gcc_qupv3_wrap0_s1_clk_src.clkr.hw, 2185 }, 2186 .num_parents = 1, 2187 .flags = CLK_SET_RATE_PARENT, 2188 .ops = &clk_branch2_ops, 2189 }, 2190 }, 2191 }; 2192 2193 static struct clk_branch gcc_qupv3_wrap0_s2_clk = { 2194 .halt_reg = 0x17290, 2195 .halt_check = BRANCH_HALT_VOTED, 2196 .clkr = { 2197 .enable_reg = 0x5200c, 2198 .enable_mask = BIT(12), 2199 .hw.init = &(struct clk_init_data){ 2200 .name = "gcc_qupv3_wrap0_s2_clk", 2201 .parent_hws = (const struct clk_hw*[]){ 2202 &gcc_qupv3_wrap0_s2_clk_src.clkr.hw, 2203 }, 2204 .num_parents = 1, 2205 .flags = CLK_SET_RATE_PARENT, 2206 .ops = &clk_branch2_ops, 2207 }, 2208 }, 2209 }; 2210 2211 static struct clk_branch gcc_qupv3_wrap0_s3_clk = { 2212 .halt_reg = 0x173c0, 2213 .halt_check = BRANCH_HALT_VOTED, 2214 .clkr = { 2215 .enable_reg = 0x5200c, 2216 .enable_mask = BIT(13), 2217 .hw.init = &(struct clk_init_data){ 2218 .name = "gcc_qupv3_wrap0_s3_clk", 2219 .parent_hws = (const struct clk_hw*[]){ 2220 &gcc_qupv3_wrap0_s3_clk_src.clkr.hw, 2221 }, 2222 .num_parents = 1, 2223 .flags = CLK_SET_RATE_PARENT, 2224 .ops = &clk_branch2_ops, 2225 }, 2226 }, 2227 }; 2228 2229 static struct clk_branch gcc_qupv3_wrap0_s4_clk = { 2230 .halt_reg = 0x174f0, 2231 .halt_check = BRANCH_HALT_VOTED, 2232 .clkr = { 2233 .enable_reg = 0x5200c, 2234 .enable_mask = BIT(14), 2235 .hw.init = &(struct clk_init_data){ 2236 .name = "gcc_qupv3_wrap0_s4_clk", 2237 .parent_hws = (const struct clk_hw*[]){ 2238 &gcc_qupv3_wrap0_s4_clk_src.clkr.hw, 2239 }, 2240 .num_parents = 1, 2241 .flags = CLK_SET_RATE_PARENT, 2242 .ops = &clk_branch2_ops, 2243 }, 2244 }, 2245 }; 2246 2247 static struct clk_branch gcc_qupv3_wrap0_s5_clk = { 2248 .halt_reg = 0x17620, 2249 .halt_check = BRANCH_HALT_VOTED, 2250 .clkr = { 2251 .enable_reg = 0x5200c, 2252 .enable_mask = BIT(15), 2253 .hw.init = &(struct clk_init_data){ 2254 .name = "gcc_qupv3_wrap0_s5_clk", 2255 .parent_hws = (const struct clk_hw*[]){ 2256 &gcc_qupv3_wrap0_s5_clk_src.clkr.hw, 2257 }, 2258 .num_parents = 1, 2259 .flags = CLK_SET_RATE_PARENT, 2260 .ops = &clk_branch2_ops, 2261 }, 2262 }, 2263 }; 2264 2265 static struct clk_branch gcc_qupv3_wrap0_s6_clk = { 2266 .halt_reg = 0x17750, 2267 .halt_check = BRANCH_HALT_VOTED, 2268 .clkr = { 2269 .enable_reg = 0x5200c, 2270 .enable_mask = BIT(16), 2271 .hw.init = &(struct clk_init_data){ 2272 .name = "gcc_qupv3_wrap0_s6_clk", 2273 .parent_hws = (const struct clk_hw*[]){ 2274 &gcc_qupv3_wrap0_s6_clk_src.clkr.hw, 2275 }, 2276 .num_parents = 1, 2277 .flags = CLK_SET_RATE_PARENT, 2278 .ops = &clk_branch2_ops, 2279 }, 2280 }, 2281 }; 2282 2283 static struct clk_branch gcc_qupv3_wrap0_s7_clk = { 2284 .halt_reg = 0x17880, 2285 .halt_check = BRANCH_HALT_VOTED, 2286 .clkr = { 2287 .enable_reg = 0x5200c, 2288 .enable_mask = BIT(17), 2289 .hw.init = &(struct clk_init_data){ 2290 .name = "gcc_qupv3_wrap0_s7_clk", 2291 .parent_hws = (const struct clk_hw*[]){ 2292 &gcc_qupv3_wrap0_s7_clk_src.clkr.hw, 2293 }, 2294 .num_parents = 1, 2295 .flags = CLK_SET_RATE_PARENT, 2296 .ops = &clk_branch2_ops, 2297 }, 2298 }, 2299 }; 2300 2301 static struct clk_branch gcc_qupv3_wrap1_s0_clk = { 2302 .halt_reg = 0x18014, 2303 .halt_check = BRANCH_HALT_VOTED, 2304 .clkr = { 2305 .enable_reg = 0x5200c, 2306 .enable_mask = BIT(22), 2307 .hw.init = &(struct clk_init_data){ 2308 .name = "gcc_qupv3_wrap1_s0_clk", 2309 .parent_hws = (const struct clk_hw*[]){ 2310 &gcc_qupv3_wrap1_s0_clk_src.clkr.hw, 2311 }, 2312 .num_parents = 1, 2313 .flags = CLK_SET_RATE_PARENT, 2314 .ops = &clk_branch2_ops, 2315 }, 2316 }, 2317 }; 2318 2319 static struct clk_branch gcc_qupv3_wrap1_s1_clk = { 2320 .halt_reg = 0x18144, 2321 .halt_check = BRANCH_HALT_VOTED, 2322 .clkr = { 2323 .enable_reg = 0x5200c, 2324 .enable_mask = BIT(23), 2325 .hw.init = &(struct clk_init_data){ 2326 .name = "gcc_qupv3_wrap1_s1_clk", 2327 .parent_hws = (const struct clk_hw*[]){ 2328 &gcc_qupv3_wrap1_s1_clk_src.clkr.hw, 2329 }, 2330 .num_parents = 1, 2331 .flags = CLK_SET_RATE_PARENT, 2332 .ops = &clk_branch2_ops, 2333 }, 2334 }, 2335 }; 2336 2337 static struct clk_branch gcc_qupv3_wrap1_s2_clk = { 2338 .halt_reg = 0x18274, 2339 .halt_check = BRANCH_HALT_VOTED, 2340 .clkr = { 2341 .enable_reg = 0x5200c, 2342 .enable_mask = BIT(24), 2343 .hw.init = &(struct clk_init_data){ 2344 .name = "gcc_qupv3_wrap1_s2_clk", 2345 .parent_hws = (const struct clk_hw*[]){ 2346 &gcc_qupv3_wrap1_s2_clk_src.clkr.hw, 2347 }, 2348 .num_parents = 1, 2349 .flags = CLK_SET_RATE_PARENT, 2350 .ops = &clk_branch2_ops, 2351 }, 2352 }, 2353 }; 2354 2355 static struct clk_branch gcc_qupv3_wrap1_s3_clk = { 2356 .halt_reg = 0x183a4, 2357 .halt_check = BRANCH_HALT_VOTED, 2358 .clkr = { 2359 .enable_reg = 0x5200c, 2360 .enable_mask = BIT(25), 2361 .hw.init = &(struct clk_init_data){ 2362 .name = "gcc_qupv3_wrap1_s3_clk", 2363 .parent_hws = (const struct clk_hw*[]){ 2364 &gcc_qupv3_wrap1_s3_clk_src.clkr.hw, 2365 }, 2366 .num_parents = 1, 2367 .flags = CLK_SET_RATE_PARENT, 2368 .ops = &clk_branch2_ops, 2369 }, 2370 }, 2371 }; 2372 2373 static struct clk_branch gcc_qupv3_wrap1_s4_clk = { 2374 .halt_reg = 0x184d4, 2375 .halt_check = BRANCH_HALT_VOTED, 2376 .clkr = { 2377 .enable_reg = 0x5200c, 2378 .enable_mask = BIT(26), 2379 .hw.init = &(struct clk_init_data){ 2380 .name = "gcc_qupv3_wrap1_s4_clk", 2381 .parent_hws = (const struct clk_hw*[]){ 2382 &gcc_qupv3_wrap1_s4_clk_src.clkr.hw, 2383 }, 2384 .num_parents = 1, 2385 .flags = CLK_SET_RATE_PARENT, 2386 .ops = &clk_branch2_ops, 2387 }, 2388 }, 2389 }; 2390 2391 static struct clk_branch gcc_qupv3_wrap1_s5_clk = { 2392 .halt_reg = 0x18604, 2393 .halt_check = BRANCH_HALT_VOTED, 2394 .clkr = { 2395 .enable_reg = 0x5200c, 2396 .enable_mask = BIT(27), 2397 .hw.init = &(struct clk_init_data){ 2398 .name = "gcc_qupv3_wrap1_s5_clk", 2399 .parent_hws = (const struct clk_hw*[]){ 2400 &gcc_qupv3_wrap1_s5_clk_src.clkr.hw, 2401 }, 2402 .num_parents = 1, 2403 .flags = CLK_SET_RATE_PARENT, 2404 .ops = &clk_branch2_ops, 2405 }, 2406 }, 2407 }; 2408 2409 static struct clk_branch gcc_qupv3_wrap1_s6_clk = { 2410 .halt_reg = 0x18734, 2411 .halt_check = BRANCH_HALT_VOTED, 2412 .clkr = { 2413 .enable_reg = 0x5200c, 2414 .enable_mask = BIT(28), 2415 .hw.init = &(struct clk_init_data){ 2416 .name = "gcc_qupv3_wrap1_s6_clk", 2417 .parent_hws = (const struct clk_hw*[]){ 2418 &gcc_qupv3_wrap1_s6_clk_src.clkr.hw, 2419 }, 2420 .num_parents = 1, 2421 .flags = CLK_SET_RATE_PARENT, 2422 .ops = &clk_branch2_ops, 2423 }, 2424 }, 2425 }; 2426 2427 static struct clk_branch gcc_qupv3_wrap1_s7_clk = { 2428 .halt_reg = 0x18864, 2429 .halt_check = BRANCH_HALT_VOTED, 2430 .clkr = { 2431 .enable_reg = 0x5200c, 2432 .enable_mask = BIT(29), 2433 .hw.init = &(struct clk_init_data){ 2434 .name = "gcc_qupv3_wrap1_s7_clk", 2435 .parent_hws = (const struct clk_hw*[]){ 2436 &gcc_qupv3_wrap1_s7_clk_src.clkr.hw, 2437 }, 2438 .num_parents = 1, 2439 .flags = CLK_SET_RATE_PARENT, 2440 .ops = &clk_branch2_ops, 2441 }, 2442 }, 2443 }; 2444 2445 static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = { 2446 .halt_reg = 0x17004, 2447 .halt_check = BRANCH_HALT_VOTED, 2448 .clkr = { 2449 .enable_reg = 0x5200c, 2450 .enable_mask = BIT(6), 2451 .hw.init = &(struct clk_init_data){ 2452 .name = "gcc_qupv3_wrap_0_m_ahb_clk", 2453 .ops = &clk_branch2_ops, 2454 }, 2455 }, 2456 }; 2457 2458 static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = { 2459 .halt_reg = 0x17008, 2460 .halt_check = BRANCH_HALT_VOTED, 2461 .hwcg_reg = 0x17008, 2462 .hwcg_bit = 1, 2463 .clkr = { 2464 .enable_reg = 0x5200c, 2465 .enable_mask = BIT(7), 2466 .hw.init = &(struct clk_init_data){ 2467 .name = "gcc_qupv3_wrap_0_s_ahb_clk", 2468 .ops = &clk_branch2_ops, 2469 }, 2470 }, 2471 }; 2472 2473 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = { 2474 .halt_reg = 0x1800c, 2475 .halt_check = BRANCH_HALT_VOTED, 2476 .clkr = { 2477 .enable_reg = 0x5200c, 2478 .enable_mask = BIT(20), 2479 .hw.init = &(struct clk_init_data){ 2480 .name = "gcc_qupv3_wrap_1_m_ahb_clk", 2481 .ops = &clk_branch2_ops, 2482 }, 2483 }, 2484 }; 2485 2486 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = { 2487 .halt_reg = 0x18010, 2488 .halt_check = BRANCH_HALT_VOTED, 2489 .hwcg_reg = 0x18010, 2490 .hwcg_bit = 1, 2491 .clkr = { 2492 .enable_reg = 0x5200c, 2493 .enable_mask = BIT(21), 2494 .hw.init = &(struct clk_init_data){ 2495 .name = "gcc_qupv3_wrap_1_s_ahb_clk", 2496 .ops = &clk_branch2_ops, 2497 }, 2498 }, 2499 }; 2500 2501 static struct clk_branch gcc_sdcc1_ahb_clk = { 2502 .halt_reg = 0x26008, 2503 .halt_check = BRANCH_HALT, 2504 .clkr = { 2505 .enable_reg = 0x26008, 2506 .enable_mask = BIT(0), 2507 .hw.init = &(struct clk_init_data){ 2508 .name = "gcc_sdcc1_ahb_clk", 2509 .ops = &clk_branch2_ops, 2510 }, 2511 }, 2512 }; 2513 2514 static struct clk_branch gcc_sdcc1_apps_clk = { 2515 .halt_reg = 0x26004, 2516 .halt_check = BRANCH_HALT, 2517 .clkr = { 2518 .enable_reg = 0x26004, 2519 .enable_mask = BIT(0), 2520 .hw.init = &(struct clk_init_data){ 2521 .name = "gcc_sdcc1_apps_clk", 2522 .parent_hws = (const struct clk_hw*[]){ 2523 &gcc_sdcc1_apps_clk_src.clkr.hw, 2524 }, 2525 .num_parents = 1, 2526 .flags = CLK_SET_RATE_PARENT, 2527 .ops = &clk_branch2_ops, 2528 }, 2529 }, 2530 }; 2531 2532 static struct clk_branch gcc_sdcc1_ice_core_clk = { 2533 .halt_reg = 0x2600c, 2534 .halt_check = BRANCH_HALT, 2535 .clkr = { 2536 .enable_reg = 0x2600c, 2537 .enable_mask = BIT(0), 2538 .hw.init = &(struct clk_init_data){ 2539 .name = "gcc_sdcc1_ice_core_clk", 2540 .parent_hws = (const struct clk_hw*[]){ 2541 &gcc_sdcc1_ice_core_clk_src.clkr.hw, 2542 }, 2543 .num_parents = 1, 2544 .flags = CLK_SET_RATE_PARENT, 2545 .ops = &clk_branch2_ops, 2546 }, 2547 }, 2548 }; 2549 2550 static struct clk_branch gcc_sdcc2_ahb_clk = { 2551 .halt_reg = 0x14008, 2552 .halt_check = BRANCH_HALT, 2553 .clkr = { 2554 .enable_reg = 0x14008, 2555 .enable_mask = BIT(0), 2556 .hw.init = &(struct clk_init_data){ 2557 .name = "gcc_sdcc2_ahb_clk", 2558 .ops = &clk_branch2_ops, 2559 }, 2560 }, 2561 }; 2562 2563 static struct clk_branch gcc_sdcc2_apps_clk = { 2564 .halt_reg = 0x14004, 2565 .halt_check = BRANCH_HALT, 2566 .clkr = { 2567 .enable_reg = 0x14004, 2568 .enable_mask = BIT(0), 2569 .hw.init = &(struct clk_init_data){ 2570 .name = "gcc_sdcc2_apps_clk", 2571 .parent_hws = (const struct clk_hw*[]){ 2572 &gcc_sdcc2_apps_clk_src.clkr.hw, 2573 }, 2574 .num_parents = 1, 2575 .flags = CLK_SET_RATE_PARENT, 2576 .ops = &clk_branch2_ops, 2577 }, 2578 }, 2579 }; 2580 2581 static struct clk_branch gcc_sdcc4_ahb_clk = { 2582 .halt_reg = 0x16008, 2583 .halt_check = BRANCH_HALT, 2584 .clkr = { 2585 .enable_reg = 0x16008, 2586 .enable_mask = BIT(0), 2587 .hw.init = &(struct clk_init_data){ 2588 .name = "gcc_sdcc4_ahb_clk", 2589 .ops = &clk_branch2_ops, 2590 }, 2591 }, 2592 }; 2593 2594 static struct clk_branch gcc_sdcc4_apps_clk = { 2595 .halt_reg = 0x16004, 2596 .halt_check = BRANCH_HALT, 2597 .clkr = { 2598 .enable_reg = 0x16004, 2599 .enable_mask = BIT(0), 2600 .hw.init = &(struct clk_init_data){ 2601 .name = "gcc_sdcc4_apps_clk", 2602 .parent_hws = (const struct clk_hw*[]){ 2603 &gcc_sdcc4_apps_clk_src.clkr.hw, 2604 }, 2605 .num_parents = 1, 2606 .flags = CLK_SET_RATE_PARENT, 2607 .ops = &clk_branch2_ops, 2608 }, 2609 }, 2610 }; 2611 2612 /* 2613 * The source clock frequencies are different for SDM670; define a child clock 2614 * pointing to the source clock that uses SDM670 frequencies. 2615 */ 2616 static struct clk_branch gcc_sdm670_sdcc4_apps_clk = { 2617 .halt_reg = 0x16004, 2618 .halt_check = BRANCH_HALT, 2619 .clkr = { 2620 .enable_reg = 0x16004, 2621 .enable_mask = BIT(0), 2622 .hw.init = &(struct clk_init_data){ 2623 .name = "gcc_sdcc4_apps_clk", 2624 .parent_hws = (const struct clk_hw*[]){ 2625 &gcc_sdm670_sdcc4_apps_clk_src.clkr.hw, 2626 }, 2627 .num_parents = 1, 2628 .flags = CLK_SET_RATE_PARENT, 2629 .ops = &clk_branch2_ops, 2630 }, 2631 }, 2632 }; 2633 2634 static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = { 2635 .halt_reg = 0x414c, 2636 .halt_check = BRANCH_HALT_VOTED, 2637 .clkr = { 2638 .enable_reg = 0x52004, 2639 .enable_mask = BIT(0), 2640 .hw.init = &(struct clk_init_data){ 2641 .name = "gcc_sys_noc_cpuss_ahb_clk", 2642 .parent_hws = (const struct clk_hw*[]){ 2643 &gcc_cpuss_ahb_clk_src.clkr.hw, 2644 }, 2645 .num_parents = 1, 2646 .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 2647 .ops = &clk_branch2_ops, 2648 }, 2649 }, 2650 }; 2651 2652 static struct clk_branch gcc_tsif_ahb_clk = { 2653 .halt_reg = 0x36004, 2654 .halt_check = BRANCH_HALT, 2655 .clkr = { 2656 .enable_reg = 0x36004, 2657 .enable_mask = BIT(0), 2658 .hw.init = &(struct clk_init_data){ 2659 .name = "gcc_tsif_ahb_clk", 2660 .ops = &clk_branch2_ops, 2661 }, 2662 }, 2663 }; 2664 2665 static struct clk_branch gcc_tsif_inactivity_timers_clk = { 2666 .halt_reg = 0x3600c, 2667 .halt_check = BRANCH_HALT, 2668 .clkr = { 2669 .enable_reg = 0x3600c, 2670 .enable_mask = BIT(0), 2671 .hw.init = &(struct clk_init_data){ 2672 .name = "gcc_tsif_inactivity_timers_clk", 2673 .ops = &clk_branch2_ops, 2674 }, 2675 }, 2676 }; 2677 2678 static struct clk_branch gcc_tsif_ref_clk = { 2679 .halt_reg = 0x36008, 2680 .halt_check = BRANCH_HALT, 2681 .clkr = { 2682 .enable_reg = 0x36008, 2683 .enable_mask = BIT(0), 2684 .hw.init = &(struct clk_init_data){ 2685 .name = "gcc_tsif_ref_clk", 2686 .parent_hws = (const struct clk_hw*[]){ 2687 &gcc_tsif_ref_clk_src.clkr.hw, 2688 }, 2689 .num_parents = 1, 2690 .flags = CLK_SET_RATE_PARENT, 2691 .ops = &clk_branch2_ops, 2692 }, 2693 }, 2694 }; 2695 2696 static struct clk_branch gcc_ufs_card_ahb_clk = { 2697 .halt_reg = 0x75010, 2698 .halt_check = BRANCH_HALT, 2699 .hwcg_reg = 0x75010, 2700 .hwcg_bit = 1, 2701 .clkr = { 2702 .enable_reg = 0x75010, 2703 .enable_mask = BIT(0), 2704 .hw.init = &(struct clk_init_data){ 2705 .name = "gcc_ufs_card_ahb_clk", 2706 .ops = &clk_branch2_ops, 2707 }, 2708 }, 2709 }; 2710 2711 static struct clk_branch gcc_ufs_card_axi_clk = { 2712 .halt_reg = 0x7500c, 2713 .halt_check = BRANCH_HALT, 2714 .hwcg_reg = 0x7500c, 2715 .hwcg_bit = 1, 2716 .clkr = { 2717 .enable_reg = 0x7500c, 2718 .enable_mask = BIT(0), 2719 .hw.init = &(struct clk_init_data){ 2720 .name = "gcc_ufs_card_axi_clk", 2721 .parent_hws = (const struct clk_hw*[]){ 2722 &gcc_ufs_card_axi_clk_src.clkr.hw, 2723 }, 2724 .num_parents = 1, 2725 .flags = CLK_SET_RATE_PARENT, 2726 .ops = &clk_branch2_ops, 2727 }, 2728 }, 2729 }; 2730 2731 static struct clk_branch gcc_ufs_card_clkref_clk = { 2732 .halt_reg = 0x8c004, 2733 .halt_check = BRANCH_HALT, 2734 .clkr = { 2735 .enable_reg = 0x8c004, 2736 .enable_mask = BIT(0), 2737 .hw.init = &(struct clk_init_data){ 2738 .name = "gcc_ufs_card_clkref_clk", 2739 .ops = &clk_branch2_ops, 2740 }, 2741 }, 2742 }; 2743 2744 static struct clk_branch gcc_ufs_card_ice_core_clk = { 2745 .halt_reg = 0x75058, 2746 .halt_check = BRANCH_HALT, 2747 .hwcg_reg = 0x75058, 2748 .hwcg_bit = 1, 2749 .clkr = { 2750 .enable_reg = 0x75058, 2751 .enable_mask = BIT(0), 2752 .hw.init = &(struct clk_init_data){ 2753 .name = "gcc_ufs_card_ice_core_clk", 2754 .parent_hws = (const struct clk_hw*[]){ 2755 &gcc_ufs_card_ice_core_clk_src.clkr.hw, 2756 }, 2757 .num_parents = 1, 2758 .flags = CLK_SET_RATE_PARENT, 2759 .ops = &clk_branch2_ops, 2760 }, 2761 }, 2762 }; 2763 2764 static struct clk_branch gcc_ufs_card_phy_aux_clk = { 2765 .halt_reg = 0x7508c, 2766 .halt_check = BRANCH_HALT, 2767 .hwcg_reg = 0x7508c, 2768 .hwcg_bit = 1, 2769 .clkr = { 2770 .enable_reg = 0x7508c, 2771 .enable_mask = BIT(0), 2772 .hw.init = &(struct clk_init_data){ 2773 .name = "gcc_ufs_card_phy_aux_clk", 2774 .parent_hws = (const struct clk_hw*[]){ 2775 &gcc_ufs_card_phy_aux_clk_src.clkr.hw, 2776 }, 2777 .num_parents = 1, 2778 .flags = CLK_SET_RATE_PARENT, 2779 .ops = &clk_branch2_ops, 2780 }, 2781 }, 2782 }; 2783 2784 static struct clk_branch gcc_ufs_card_rx_symbol_0_clk = { 2785 .halt_check = BRANCH_HALT_SKIP, 2786 .clkr = { 2787 .enable_reg = 0x75018, 2788 .enable_mask = BIT(0), 2789 .hw.init = &(struct clk_init_data){ 2790 .name = "gcc_ufs_card_rx_symbol_0_clk", 2791 .ops = &clk_branch2_ops, 2792 }, 2793 }, 2794 }; 2795 2796 static struct clk_branch gcc_ufs_card_rx_symbol_1_clk = { 2797 .halt_check = BRANCH_HALT_SKIP, 2798 .clkr = { 2799 .enable_reg = 0x750a8, 2800 .enable_mask = BIT(0), 2801 .hw.init = &(struct clk_init_data){ 2802 .name = "gcc_ufs_card_rx_symbol_1_clk", 2803 .ops = &clk_branch2_ops, 2804 }, 2805 }, 2806 }; 2807 2808 static struct clk_branch gcc_ufs_card_tx_symbol_0_clk = { 2809 .halt_check = BRANCH_HALT_SKIP, 2810 .clkr = { 2811 .enable_reg = 0x75014, 2812 .enable_mask = BIT(0), 2813 .hw.init = &(struct clk_init_data){ 2814 .name = "gcc_ufs_card_tx_symbol_0_clk", 2815 .ops = &clk_branch2_ops, 2816 }, 2817 }, 2818 }; 2819 2820 static struct clk_branch gcc_ufs_card_unipro_core_clk = { 2821 .halt_reg = 0x75054, 2822 .halt_check = BRANCH_HALT, 2823 .hwcg_reg = 0x75054, 2824 .hwcg_bit = 1, 2825 .clkr = { 2826 .enable_reg = 0x75054, 2827 .enable_mask = BIT(0), 2828 .hw.init = &(struct clk_init_data){ 2829 .name = "gcc_ufs_card_unipro_core_clk", 2830 .parent_hws = (const struct clk_hw*[]){ 2831 &gcc_ufs_card_unipro_core_clk_src.clkr.hw, 2832 }, 2833 .num_parents = 1, 2834 .flags = CLK_SET_RATE_PARENT, 2835 .ops = &clk_branch2_ops, 2836 }, 2837 }, 2838 }; 2839 2840 static struct clk_branch gcc_ufs_mem_clkref_clk = { 2841 .halt_reg = 0x8c000, 2842 .halt_check = BRANCH_HALT, 2843 .clkr = { 2844 .enable_reg = 0x8c000, 2845 .enable_mask = BIT(0), 2846 .hw.init = &(struct clk_init_data){ 2847 .name = "gcc_ufs_mem_clkref_clk", 2848 .ops = &clk_branch2_ops, 2849 }, 2850 }, 2851 }; 2852 2853 static struct clk_branch gcc_ufs_phy_ahb_clk = { 2854 .halt_reg = 0x77010, 2855 .halt_check = BRANCH_HALT, 2856 .hwcg_reg = 0x77010, 2857 .hwcg_bit = 1, 2858 .clkr = { 2859 .enable_reg = 0x77010, 2860 .enable_mask = BIT(0), 2861 .hw.init = &(struct clk_init_data){ 2862 .name = "gcc_ufs_phy_ahb_clk", 2863 .ops = &clk_branch2_ops, 2864 }, 2865 }, 2866 }; 2867 2868 static struct clk_branch gcc_ufs_phy_axi_clk = { 2869 .halt_reg = 0x7700c, 2870 .halt_check = BRANCH_HALT, 2871 .hwcg_reg = 0x7700c, 2872 .hwcg_bit = 1, 2873 .clkr = { 2874 .enable_reg = 0x7700c, 2875 .enable_mask = BIT(0), 2876 .hw.init = &(struct clk_init_data){ 2877 .name = "gcc_ufs_phy_axi_clk", 2878 .parent_hws = (const struct clk_hw*[]){ 2879 &gcc_ufs_phy_axi_clk_src.clkr.hw, 2880 }, 2881 .num_parents = 1, 2882 .flags = CLK_SET_RATE_PARENT, 2883 .ops = &clk_branch2_ops, 2884 }, 2885 }, 2886 }; 2887 2888 static struct clk_branch gcc_ufs_phy_ice_core_clk = { 2889 .halt_reg = 0x77058, 2890 .halt_check = BRANCH_HALT, 2891 .hwcg_reg = 0x77058, 2892 .hwcg_bit = 1, 2893 .clkr = { 2894 .enable_reg = 0x77058, 2895 .enable_mask = BIT(0), 2896 .hw.init = &(struct clk_init_data){ 2897 .name = "gcc_ufs_phy_ice_core_clk", 2898 .parent_hws = (const struct clk_hw*[]){ 2899 &gcc_ufs_phy_ice_core_clk_src.clkr.hw, 2900 }, 2901 .num_parents = 1, 2902 .flags = CLK_SET_RATE_PARENT, 2903 .ops = &clk_branch2_ops, 2904 }, 2905 }, 2906 }; 2907 2908 static struct clk_branch gcc_ufs_phy_phy_aux_clk = { 2909 .halt_reg = 0x7708c, 2910 .halt_check = BRANCH_HALT, 2911 .hwcg_reg = 0x7708c, 2912 .hwcg_bit = 1, 2913 .clkr = { 2914 .enable_reg = 0x7708c, 2915 .enable_mask = BIT(0), 2916 .hw.init = &(struct clk_init_data){ 2917 .name = "gcc_ufs_phy_phy_aux_clk", 2918 .parent_hws = (const struct clk_hw*[]){ 2919 &gcc_ufs_phy_phy_aux_clk_src.clkr.hw, 2920 }, 2921 .num_parents = 1, 2922 .flags = CLK_SET_RATE_PARENT, 2923 .ops = &clk_branch2_ops, 2924 }, 2925 }, 2926 }; 2927 2928 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = { 2929 .halt_check = BRANCH_HALT_SKIP, 2930 .clkr = { 2931 .enable_reg = 0x77018, 2932 .enable_mask = BIT(0), 2933 .hw.init = &(struct clk_init_data){ 2934 .name = "gcc_ufs_phy_rx_symbol_0_clk", 2935 .ops = &clk_branch2_ops, 2936 }, 2937 }, 2938 }; 2939 2940 static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = { 2941 .halt_check = BRANCH_HALT_SKIP, 2942 .clkr = { 2943 .enable_reg = 0x770a8, 2944 .enable_mask = BIT(0), 2945 .hw.init = &(struct clk_init_data){ 2946 .name = "gcc_ufs_phy_rx_symbol_1_clk", 2947 .ops = &clk_branch2_ops, 2948 }, 2949 }, 2950 }; 2951 2952 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = { 2953 .halt_check = BRANCH_HALT_SKIP, 2954 .clkr = { 2955 .enable_reg = 0x77014, 2956 .enable_mask = BIT(0), 2957 .hw.init = &(struct clk_init_data){ 2958 .name = "gcc_ufs_phy_tx_symbol_0_clk", 2959 .ops = &clk_branch2_ops, 2960 }, 2961 }, 2962 }; 2963 2964 static struct clk_branch gcc_ufs_phy_unipro_core_clk = { 2965 .halt_reg = 0x77054, 2966 .halt_check = BRANCH_HALT, 2967 .hwcg_reg = 0x77054, 2968 .hwcg_bit = 1, 2969 .clkr = { 2970 .enable_reg = 0x77054, 2971 .enable_mask = BIT(0), 2972 .hw.init = &(struct clk_init_data){ 2973 .name = "gcc_ufs_phy_unipro_core_clk", 2974 .parent_hws = (const struct clk_hw*[]){ 2975 &gcc_ufs_phy_unipro_core_clk_src.clkr.hw, 2976 }, 2977 .num_parents = 1, 2978 .flags = CLK_SET_RATE_PARENT, 2979 .ops = &clk_branch2_ops, 2980 }, 2981 }, 2982 }; 2983 2984 static struct clk_branch gcc_usb30_prim_master_clk = { 2985 .halt_reg = 0xf00c, 2986 .halt_check = BRANCH_HALT, 2987 .clkr = { 2988 .enable_reg = 0xf00c, 2989 .enable_mask = BIT(0), 2990 .hw.init = &(struct clk_init_data){ 2991 .name = "gcc_usb30_prim_master_clk", 2992 .parent_hws = (const struct clk_hw*[]){ 2993 &gcc_usb30_prim_master_clk_src.clkr.hw, 2994 }, 2995 .num_parents = 1, 2996 .flags = CLK_SET_RATE_PARENT, 2997 .ops = &clk_branch2_ops, 2998 }, 2999 }, 3000 }; 3001 3002 static struct clk_branch gcc_usb30_prim_mock_utmi_clk = { 3003 .halt_reg = 0xf014, 3004 .halt_check = BRANCH_HALT, 3005 .clkr = { 3006 .enable_reg = 0xf014, 3007 .enable_mask = BIT(0), 3008 .hw.init = &(struct clk_init_data){ 3009 .name = "gcc_usb30_prim_mock_utmi_clk", 3010 .parent_hws = (const struct clk_hw*[]){ 3011 &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw, 3012 }, 3013 .num_parents = 1, 3014 .flags = CLK_SET_RATE_PARENT, 3015 .ops = &clk_branch2_ops, 3016 }, 3017 }, 3018 }; 3019 3020 static struct clk_branch gcc_usb30_prim_sleep_clk = { 3021 .halt_reg = 0xf010, 3022 .halt_check = BRANCH_HALT, 3023 .clkr = { 3024 .enable_reg = 0xf010, 3025 .enable_mask = BIT(0), 3026 .hw.init = &(struct clk_init_data){ 3027 .name = "gcc_usb30_prim_sleep_clk", 3028 .ops = &clk_branch2_ops, 3029 }, 3030 }, 3031 }; 3032 3033 static struct clk_branch gcc_usb30_sec_master_clk = { 3034 .halt_reg = 0x1000c, 3035 .halt_check = BRANCH_HALT, 3036 .clkr = { 3037 .enable_reg = 0x1000c, 3038 .enable_mask = BIT(0), 3039 .hw.init = &(struct clk_init_data){ 3040 .name = "gcc_usb30_sec_master_clk", 3041 .parent_hws = (const struct clk_hw*[]){ 3042 &gcc_usb30_sec_master_clk_src.clkr.hw, 3043 }, 3044 .num_parents = 1, 3045 .flags = CLK_SET_RATE_PARENT, 3046 .ops = &clk_branch2_ops, 3047 }, 3048 }, 3049 }; 3050 3051 static struct clk_branch gcc_usb30_sec_mock_utmi_clk = { 3052 .halt_reg = 0x10014, 3053 .halt_check = BRANCH_HALT, 3054 .clkr = { 3055 .enable_reg = 0x10014, 3056 .enable_mask = BIT(0), 3057 .hw.init = &(struct clk_init_data){ 3058 .name = "gcc_usb30_sec_mock_utmi_clk", 3059 .parent_hws = (const struct clk_hw*[]){ 3060 &gcc_usb30_sec_mock_utmi_clk_src.clkr.hw, 3061 }, 3062 .num_parents = 1, 3063 .flags = CLK_SET_RATE_PARENT, 3064 .ops = &clk_branch2_ops, 3065 }, 3066 }, 3067 }; 3068 3069 static struct clk_branch gcc_usb30_sec_sleep_clk = { 3070 .halt_reg = 0x10010, 3071 .halt_check = BRANCH_HALT, 3072 .clkr = { 3073 .enable_reg = 0x10010, 3074 .enable_mask = BIT(0), 3075 .hw.init = &(struct clk_init_data){ 3076 .name = "gcc_usb30_sec_sleep_clk", 3077 .ops = &clk_branch2_ops, 3078 }, 3079 }, 3080 }; 3081 3082 static struct clk_branch gcc_usb3_prim_clkref_clk = { 3083 .halt_reg = 0x8c008, 3084 .halt_check = BRANCH_HALT, 3085 .clkr = { 3086 .enable_reg = 0x8c008, 3087 .enable_mask = BIT(0), 3088 .hw.init = &(struct clk_init_data){ 3089 .name = "gcc_usb3_prim_clkref_clk", 3090 .ops = &clk_branch2_ops, 3091 }, 3092 }, 3093 }; 3094 3095 static struct clk_branch gcc_usb3_prim_phy_aux_clk = { 3096 .halt_reg = 0xf04c, 3097 .halt_check = BRANCH_HALT, 3098 .clkr = { 3099 .enable_reg = 0xf04c, 3100 .enable_mask = BIT(0), 3101 .hw.init = &(struct clk_init_data){ 3102 .name = "gcc_usb3_prim_phy_aux_clk", 3103 .parent_hws = (const struct clk_hw*[]){ 3104 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw, 3105 }, 3106 .num_parents = 1, 3107 .flags = CLK_SET_RATE_PARENT, 3108 .ops = &clk_branch2_ops, 3109 }, 3110 }, 3111 }; 3112 3113 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = { 3114 .halt_reg = 0xf050, 3115 .halt_check = BRANCH_HALT, 3116 .clkr = { 3117 .enable_reg = 0xf050, 3118 .enable_mask = BIT(0), 3119 .hw.init = &(struct clk_init_data){ 3120 .name = "gcc_usb3_prim_phy_com_aux_clk", 3121 .parent_hws = (const struct clk_hw*[]){ 3122 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw, 3123 }, 3124 .num_parents = 1, 3125 .flags = CLK_SET_RATE_PARENT, 3126 .ops = &clk_branch2_ops, 3127 }, 3128 }, 3129 }; 3130 3131 static struct clk_branch gcc_usb3_prim_phy_pipe_clk = { 3132 .halt_check = BRANCH_HALT_SKIP, 3133 .clkr = { 3134 .enable_reg = 0xf054, 3135 .enable_mask = BIT(0), 3136 .hw.init = &(struct clk_init_data){ 3137 .name = "gcc_usb3_prim_phy_pipe_clk", 3138 .ops = &clk_branch2_ops, 3139 }, 3140 }, 3141 }; 3142 3143 static struct clk_branch gcc_usb3_sec_clkref_clk = { 3144 .halt_reg = 0x8c028, 3145 .halt_check = BRANCH_HALT, 3146 .clkr = { 3147 .enable_reg = 0x8c028, 3148 .enable_mask = BIT(0), 3149 .hw.init = &(struct clk_init_data){ 3150 .name = "gcc_usb3_sec_clkref_clk", 3151 .ops = &clk_branch2_ops, 3152 }, 3153 }, 3154 }; 3155 3156 static struct clk_branch gcc_usb3_sec_phy_aux_clk = { 3157 .halt_reg = 0x1004c, 3158 .halt_check = BRANCH_HALT, 3159 .clkr = { 3160 .enable_reg = 0x1004c, 3161 .enable_mask = BIT(0), 3162 .hw.init = &(struct clk_init_data){ 3163 .name = "gcc_usb3_sec_phy_aux_clk", 3164 .parent_hws = (const struct clk_hw*[]){ 3165 &gcc_usb3_sec_phy_aux_clk_src.clkr.hw, 3166 }, 3167 .num_parents = 1, 3168 .flags = CLK_SET_RATE_PARENT, 3169 .ops = &clk_branch2_ops, 3170 }, 3171 }, 3172 }; 3173 3174 static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = { 3175 .halt_reg = 0x10050, 3176 .halt_check = BRANCH_HALT, 3177 .clkr = { 3178 .enable_reg = 0x10050, 3179 .enable_mask = BIT(0), 3180 .hw.init = &(struct clk_init_data){ 3181 .name = "gcc_usb3_sec_phy_com_aux_clk", 3182 .parent_hws = (const struct clk_hw*[]){ 3183 &gcc_usb3_sec_phy_aux_clk_src.clkr.hw, 3184 }, 3185 .num_parents = 1, 3186 .flags = CLK_SET_RATE_PARENT, 3187 .ops = &clk_branch2_ops, 3188 }, 3189 }, 3190 }; 3191 3192 static struct clk_branch gcc_usb3_sec_phy_pipe_clk = { 3193 .halt_check = BRANCH_HALT_SKIP, 3194 .clkr = { 3195 .enable_reg = 0x10054, 3196 .enable_mask = BIT(0), 3197 .hw.init = &(struct clk_init_data){ 3198 .name = "gcc_usb3_sec_phy_pipe_clk", 3199 .ops = &clk_branch2_ops, 3200 }, 3201 }, 3202 }; 3203 3204 static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = { 3205 .halt_reg = 0x6a004, 3206 .halt_check = BRANCH_HALT, 3207 .hwcg_reg = 0x6a004, 3208 .hwcg_bit = 1, 3209 .clkr = { 3210 .enable_reg = 0x6a004, 3211 .enable_mask = BIT(0), 3212 .hw.init = &(struct clk_init_data){ 3213 .name = "gcc_usb_phy_cfg_ahb2phy_clk", 3214 .ops = &clk_branch2_ops, 3215 }, 3216 }, 3217 }; 3218 3219 static struct clk_branch gcc_vdda_vs_clk = { 3220 .halt_reg = 0x7a00c, 3221 .halt_check = BRANCH_HALT, 3222 .clkr = { 3223 .enable_reg = 0x7a00c, 3224 .enable_mask = BIT(0), 3225 .hw.init = &(struct clk_init_data){ 3226 .name = "gcc_vdda_vs_clk", 3227 .parent_hws = (const struct clk_hw*[]){ 3228 &gcc_vsensor_clk_src.clkr.hw, 3229 }, 3230 .num_parents = 1, 3231 .flags = CLK_SET_RATE_PARENT, 3232 .ops = &clk_branch2_ops, 3233 }, 3234 }, 3235 }; 3236 3237 static struct clk_branch gcc_vddcx_vs_clk = { 3238 .halt_reg = 0x7a004, 3239 .halt_check = BRANCH_HALT, 3240 .clkr = { 3241 .enable_reg = 0x7a004, 3242 .enable_mask = BIT(0), 3243 .hw.init = &(struct clk_init_data){ 3244 .name = "gcc_vddcx_vs_clk", 3245 .parent_hws = (const struct clk_hw*[]){ 3246 &gcc_vsensor_clk_src.clkr.hw, 3247 }, 3248 .num_parents = 1, 3249 .flags = CLK_SET_RATE_PARENT, 3250 .ops = &clk_branch2_ops, 3251 }, 3252 }, 3253 }; 3254 3255 static struct clk_branch gcc_vddmx_vs_clk = { 3256 .halt_reg = 0x7a008, 3257 .halt_check = BRANCH_HALT, 3258 .clkr = { 3259 .enable_reg = 0x7a008, 3260 .enable_mask = BIT(0), 3261 .hw.init = &(struct clk_init_data){ 3262 .name = "gcc_vddmx_vs_clk", 3263 .parent_hws = (const struct clk_hw*[]){ 3264 &gcc_vsensor_clk_src.clkr.hw, 3265 }, 3266 .num_parents = 1, 3267 .flags = CLK_SET_RATE_PARENT, 3268 .ops = &clk_branch2_ops, 3269 }, 3270 }, 3271 }; 3272 3273 static struct clk_branch gcc_video_ahb_clk = { 3274 .halt_reg = 0xb004, 3275 .halt_check = BRANCH_HALT, 3276 .hwcg_reg = 0xb004, 3277 .hwcg_bit = 1, 3278 .clkr = { 3279 .enable_reg = 0xb004, 3280 .enable_mask = BIT(0), 3281 .hw.init = &(struct clk_init_data){ 3282 .name = "gcc_video_ahb_clk", 3283 .flags = CLK_IS_CRITICAL, 3284 .ops = &clk_branch2_ops, 3285 }, 3286 }, 3287 }; 3288 3289 static struct clk_branch gcc_video_axi_clk = { 3290 .halt_reg = 0xb01c, 3291 .halt_check = BRANCH_VOTED, 3292 .clkr = { 3293 .enable_reg = 0xb01c, 3294 .enable_mask = BIT(0), 3295 .hw.init = &(struct clk_init_data){ 3296 .name = "gcc_video_axi_clk", 3297 .ops = &clk_branch2_ops, 3298 }, 3299 }, 3300 }; 3301 3302 static struct clk_branch gcc_video_xo_clk = { 3303 .halt_reg = 0xb028, 3304 .halt_check = BRANCH_HALT, 3305 .clkr = { 3306 .enable_reg = 0xb028, 3307 .enable_mask = BIT(0), 3308 .hw.init = &(struct clk_init_data){ 3309 .name = "gcc_video_xo_clk", 3310 .flags = CLK_IS_CRITICAL, 3311 .ops = &clk_branch2_ops, 3312 }, 3313 }, 3314 }; 3315 3316 static struct clk_branch gcc_vs_ctrl_ahb_clk = { 3317 .halt_reg = 0x7a014, 3318 .halt_check = BRANCH_HALT, 3319 .hwcg_reg = 0x7a014, 3320 .hwcg_bit = 1, 3321 .clkr = { 3322 .enable_reg = 0x7a014, 3323 .enable_mask = BIT(0), 3324 .hw.init = &(struct clk_init_data){ 3325 .name = "gcc_vs_ctrl_ahb_clk", 3326 .ops = &clk_branch2_ops, 3327 }, 3328 }, 3329 }; 3330 3331 static struct clk_branch gcc_vs_ctrl_clk = { 3332 .halt_reg = 0x7a010, 3333 .halt_check = BRANCH_HALT, 3334 .clkr = { 3335 .enable_reg = 0x7a010, 3336 .enable_mask = BIT(0), 3337 .hw.init = &(struct clk_init_data){ 3338 .name = "gcc_vs_ctrl_clk", 3339 .parent_hws = (const struct clk_hw*[]){ 3340 &gcc_vs_ctrl_clk_src.clkr.hw, 3341 }, 3342 .num_parents = 1, 3343 .flags = CLK_SET_RATE_PARENT, 3344 .ops = &clk_branch2_ops, 3345 }, 3346 }, 3347 }; 3348 3349 static struct clk_branch gcc_cpuss_dvm_bus_clk = { 3350 .halt_reg = 0x48190, 3351 .halt_check = BRANCH_HALT, 3352 .clkr = { 3353 .enable_reg = 0x48190, 3354 .enable_mask = BIT(0), 3355 .hw.init = &(struct clk_init_data){ 3356 .name = "gcc_cpuss_dvm_bus_clk", 3357 .flags = CLK_IS_CRITICAL, 3358 .ops = &clk_branch2_ops, 3359 }, 3360 }, 3361 }; 3362 3363 static struct clk_branch gcc_cpuss_gnoc_clk = { 3364 .halt_reg = 0x48004, 3365 .halt_check = BRANCH_HALT_VOTED, 3366 .hwcg_reg = 0x48004, 3367 .hwcg_bit = 1, 3368 .clkr = { 3369 .enable_reg = 0x52004, 3370 .enable_mask = BIT(22), 3371 .hw.init = &(struct clk_init_data){ 3372 .name = "gcc_cpuss_gnoc_clk", 3373 .flags = CLK_IS_CRITICAL, 3374 .ops = &clk_branch2_ops, 3375 }, 3376 }, 3377 }; 3378 3379 /* TODO: Remove after DTS updated to protect these */ 3380 #ifdef CONFIG_SDM_LPASSCC_845 3381 static struct clk_branch gcc_lpass_q6_axi_clk = { 3382 .halt_reg = 0x47000, 3383 .halt_check = BRANCH_HALT, 3384 .clkr = { 3385 .enable_reg = 0x47000, 3386 .enable_mask = BIT(0), 3387 .hw.init = &(struct clk_init_data){ 3388 .name = "gcc_lpass_q6_axi_clk", 3389 .flags = CLK_IS_CRITICAL, 3390 .ops = &clk_branch2_ops, 3391 }, 3392 }, 3393 }; 3394 3395 static struct clk_branch gcc_lpass_sway_clk = { 3396 .halt_reg = 0x47008, 3397 .halt_check = BRANCH_HALT, 3398 .clkr = { 3399 .enable_reg = 0x47008, 3400 .enable_mask = BIT(0), 3401 .hw.init = &(struct clk_init_data){ 3402 .name = "gcc_lpass_sway_clk", 3403 .flags = CLK_IS_CRITICAL, 3404 .ops = &clk_branch2_ops, 3405 }, 3406 }, 3407 }; 3408 #endif 3409 3410 static struct gdsc pcie_0_gdsc = { 3411 .gdscr = 0x6b004, 3412 .pd = { 3413 .name = "pcie_0_gdsc", 3414 }, 3415 .pwrsts = PWRSTS_OFF_ON, 3416 .flags = POLL_CFG_GDSCR, 3417 }; 3418 3419 static struct gdsc pcie_1_gdsc = { 3420 .gdscr = 0x8d004, 3421 .pd = { 3422 .name = "pcie_1_gdsc", 3423 }, 3424 .pwrsts = PWRSTS_OFF_ON, 3425 .flags = POLL_CFG_GDSCR, 3426 }; 3427 3428 static struct gdsc ufs_card_gdsc = { 3429 .gdscr = 0x75004, 3430 .pd = { 3431 .name = "ufs_card_gdsc", 3432 }, 3433 .pwrsts = PWRSTS_OFF_ON, 3434 .flags = POLL_CFG_GDSCR, 3435 }; 3436 3437 static struct gdsc ufs_phy_gdsc = { 3438 .gdscr = 0x77004, 3439 .pd = { 3440 .name = "ufs_phy_gdsc", 3441 }, 3442 .pwrsts = PWRSTS_OFF_ON, 3443 .flags = POLL_CFG_GDSCR, 3444 }; 3445 3446 static struct gdsc usb30_prim_gdsc = { 3447 .gdscr = 0xf004, 3448 .pd = { 3449 .name = "usb30_prim_gdsc", 3450 }, 3451 .pwrsts = PWRSTS_OFF_ON, 3452 .flags = POLL_CFG_GDSCR, 3453 }; 3454 3455 static struct gdsc usb30_sec_gdsc = { 3456 .gdscr = 0x10004, 3457 .pd = { 3458 .name = "usb30_sec_gdsc", 3459 }, 3460 .pwrsts = PWRSTS_OFF_ON, 3461 .flags = POLL_CFG_GDSCR, 3462 }; 3463 3464 static struct gdsc hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc = { 3465 .gdscr = 0x7d030, 3466 .pd = { 3467 .name = "hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc", 3468 }, 3469 .pwrsts = PWRSTS_OFF_ON, 3470 .flags = VOTABLE, 3471 }; 3472 3473 static struct gdsc hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc = { 3474 .gdscr = 0x7d03c, 3475 .pd = { 3476 .name = "hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc", 3477 }, 3478 .pwrsts = PWRSTS_OFF_ON, 3479 .flags = VOTABLE, 3480 }; 3481 3482 static struct gdsc hlos1_vote_aggre_noc_mmu_tbu1_gdsc = { 3483 .gdscr = 0x7d034, 3484 .pd = { 3485 .name = "hlos1_vote_aggre_noc_mmu_tbu1_gdsc", 3486 }, 3487 .pwrsts = PWRSTS_OFF_ON, 3488 .flags = VOTABLE, 3489 }; 3490 3491 static struct gdsc hlos1_vote_aggre_noc_mmu_tbu2_gdsc = { 3492 .gdscr = 0x7d038, 3493 .pd = { 3494 .name = "hlos1_vote_aggre_noc_mmu_tbu2_gdsc", 3495 }, 3496 .pwrsts = PWRSTS_OFF_ON, 3497 .flags = VOTABLE, 3498 }; 3499 3500 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = { 3501 .gdscr = 0x7d040, 3502 .pd = { 3503 .name = "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc", 3504 }, 3505 .pwrsts = PWRSTS_OFF_ON, 3506 .flags = VOTABLE, 3507 }; 3508 3509 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc = { 3510 .gdscr = 0x7d048, 3511 .pd = { 3512 .name = "hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc", 3513 }, 3514 .pwrsts = PWRSTS_OFF_ON, 3515 .flags = VOTABLE, 3516 }; 3517 3518 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf_gdsc = { 3519 .gdscr = 0x7d044, 3520 .pd = { 3521 .name = "hlos1_vote_mmnoc_mmu_tbu_sf_gdsc", 3522 }, 3523 .pwrsts = PWRSTS_OFF_ON, 3524 .flags = VOTABLE, 3525 }; 3526 3527 static struct clk_regmap *gcc_sdm670_clocks[] = { 3528 [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr, 3529 [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr, 3530 [GCC_APC_VS_CLK] = &gcc_apc_vs_clk.clkr, 3531 [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 3532 [GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr, 3533 [GCC_CAMERA_AXI_CLK] = &gcc_camera_axi_clk.clkr, 3534 [GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr, 3535 [GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr, 3536 [GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr, 3537 [GCC_CE1_CLK] = &gcc_ce1_clk.clkr, 3538 [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr, 3539 [GCC_CPUSS_AHB_CLK] = &gcc_cpuss_ahb_clk.clkr, 3540 [GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr, 3541 [GCC_CPUSS_RBCPR_CLK] = &gcc_sdm670_cpuss_rbcpr_clk.clkr, 3542 [GCC_CPUSS_RBCPR_CLK_SRC] = &gcc_sdm670_cpuss_rbcpr_clk_src.clkr, 3543 [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr, 3544 [GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr, 3545 [GCC_DISP_AXI_CLK] = &gcc_disp_axi_clk.clkr, 3546 [GCC_DISP_GPLL0_CLK_SRC] = &gcc_disp_gpll0_clk_src.clkr, 3547 [GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr, 3548 [GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr, 3549 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 3550 [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr, 3551 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 3552 [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr, 3553 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 3554 [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr, 3555 [GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr, 3556 [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr, 3557 [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr, 3558 [GCC_GPU_IREF_CLK] = &gcc_gpu_iref_clk.clkr, 3559 [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr, 3560 [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr, 3561 [GCC_GPU_VS_CLK] = &gcc_gpu_vs_clk.clkr, 3562 [GCC_MSS_AXIS2_CLK] = &gcc_mss_axis2_clk.clkr, 3563 [GCC_MSS_CFG_AHB_CLK] = &gcc_mss_cfg_ahb_clk.clkr, 3564 [GCC_MSS_GPLL0_DIV_CLK_SRC] = &gcc_mss_gpll0_div_clk_src.clkr, 3565 [GCC_MSS_MFAB_AXIS_CLK] = &gcc_mss_mfab_axis_clk.clkr, 3566 [GCC_MSS_Q6_MEMNOC_AXI_CLK] = &gcc_mss_q6_memnoc_axi_clk.clkr, 3567 [GCC_MSS_SNOC_AXI_CLK] = &gcc_mss_snoc_axi_clk.clkr, 3568 [GCC_MSS_VS_CLK] = &gcc_mss_vs_clk.clkr, 3569 [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 3570 [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr, 3571 [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 3572 [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr, 3573 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr, 3574 [GCC_QMIP_CAMERA_AHB_CLK] = &gcc_qmip_camera_ahb_clk.clkr, 3575 [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr, 3576 [GCC_QMIP_VIDEO_AHB_CLK] = &gcc_qmip_video_ahb_clk.clkr, 3577 [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr, 3578 [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr, 3579 [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr, 3580 [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr, 3581 [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr, 3582 [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr, 3583 [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr, 3584 [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr, 3585 [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr, 3586 [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr, 3587 [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr, 3588 [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr, 3589 [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr, 3590 [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr, 3591 [GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr, 3592 [GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr, 3593 [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr, 3594 [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr, 3595 [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr, 3596 [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr, 3597 [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr, 3598 [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr, 3599 [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr, 3600 [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr, 3601 [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr, 3602 [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr, 3603 [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr, 3604 [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr, 3605 [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr, 3606 [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr, 3607 [GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr, 3608 [GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr, 3609 [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr, 3610 [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr, 3611 [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr, 3612 [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr, 3613 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 3614 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 3615 [GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr, 3616 [GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr, 3617 [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr, 3618 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 3619 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 3620 [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr, 3621 [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr, 3622 [GCC_SDCC4_APPS_CLK] = &gcc_sdm670_sdcc4_apps_clk.clkr, 3623 [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdm670_sdcc4_apps_clk_src.clkr, 3624 [GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr, 3625 [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr, 3626 [GCC_TSIF_INACTIVITY_TIMERS_CLK] = 3627 &gcc_tsif_inactivity_timers_clk.clkr, 3628 [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr, 3629 [GCC_TSIF_REF_CLK_SRC] = &gcc_tsif_ref_clk_src.clkr, 3630 [GCC_UFS_MEM_CLKREF_CLK] = &gcc_ufs_mem_clkref_clk.clkr, 3631 [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr, 3632 [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr, 3633 [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr, 3634 [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr, 3635 [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr, 3636 [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr, 3637 [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr, 3638 [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr, 3639 [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr, 3640 [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr, 3641 [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = 3642 &gcc_ufs_phy_unipro_core_clk_src.clkr, 3643 [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr, 3644 [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr, 3645 [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr, 3646 [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = 3647 &gcc_usb30_prim_mock_utmi_clk_src.clkr, 3648 [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr, 3649 [GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr, 3650 [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr, 3651 [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr, 3652 [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr, 3653 [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr, 3654 [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr, 3655 [GCC_VDDA_VS_CLK] = &gcc_vdda_vs_clk.clkr, 3656 [GCC_VDDCX_VS_CLK] = &gcc_vddcx_vs_clk.clkr, 3657 [GCC_VDDMX_VS_CLK] = &gcc_vddmx_vs_clk.clkr, 3658 [GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr, 3659 [GCC_VIDEO_AXI_CLK] = &gcc_video_axi_clk.clkr, 3660 [GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr, 3661 [GCC_VS_CTRL_AHB_CLK] = &gcc_vs_ctrl_ahb_clk.clkr, 3662 [GCC_VS_CTRL_CLK] = &gcc_vs_ctrl_clk.clkr, 3663 [GCC_VS_CTRL_CLK_SRC] = &gcc_vs_ctrl_clk_src.clkr, 3664 [GCC_VSENSOR_CLK_SRC] = &gcc_vsensor_clk_src.clkr, 3665 [GPLL0] = &gpll0.clkr, 3666 [GPLL0_OUT_EVEN] = &gpll0_out_even.clkr, 3667 [GPLL4] = &gpll4.clkr, 3668 [GPLL6] = &gpll6.clkr, 3669 [GCC_CPUSS_DVM_BUS_CLK] = &gcc_cpuss_dvm_bus_clk.clkr, 3670 [GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr, 3671 [GCC_QSPI_CORE_CLK_SRC] = &gcc_qspi_core_clk_src.clkr, 3672 [GCC_QSPI_CORE_CLK] = &gcc_qspi_core_clk.clkr, 3673 [GCC_QSPI_CNOC_PERIPH_AHB_CLK] = &gcc_qspi_cnoc_periph_ahb_clk.clkr, 3674 }; 3675 3676 static struct clk_regmap *gcc_sdm845_clocks[] = { 3677 [GCC_AGGRE_NOC_PCIE_TBU_CLK] = &gcc_aggre_noc_pcie_tbu_clk.clkr, 3678 [GCC_AGGRE_UFS_CARD_AXI_CLK] = &gcc_aggre_ufs_card_axi_clk.clkr, 3679 [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr, 3680 [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr, 3681 [GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr, 3682 [GCC_APC_VS_CLK] = &gcc_apc_vs_clk.clkr, 3683 [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 3684 [GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr, 3685 [GCC_CAMERA_AXI_CLK] = &gcc_camera_axi_clk.clkr, 3686 [GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr, 3687 [GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr, 3688 [GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr, 3689 [GCC_CE1_CLK] = &gcc_ce1_clk.clkr, 3690 [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr, 3691 [GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr, 3692 [GCC_CPUSS_AHB_CLK] = &gcc_cpuss_ahb_clk.clkr, 3693 [GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr, 3694 [GCC_CPUSS_RBCPR_CLK] = &gcc_cpuss_rbcpr_clk.clkr, 3695 [GCC_CPUSS_RBCPR_CLK_SRC] = &gcc_cpuss_rbcpr_clk_src.clkr, 3696 [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr, 3697 [GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr, 3698 [GCC_DISP_AXI_CLK] = &gcc_disp_axi_clk.clkr, 3699 [GCC_DISP_GPLL0_CLK_SRC] = &gcc_disp_gpll0_clk_src.clkr, 3700 [GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr, 3701 [GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr, 3702 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 3703 [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr, 3704 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 3705 [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr, 3706 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 3707 [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr, 3708 [GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr, 3709 [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr, 3710 [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr, 3711 [GCC_GPU_IREF_CLK] = &gcc_gpu_iref_clk.clkr, 3712 [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr, 3713 [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr, 3714 [GCC_GPU_VS_CLK] = &gcc_gpu_vs_clk.clkr, 3715 [GCC_MSS_AXIS2_CLK] = &gcc_mss_axis2_clk.clkr, 3716 [GCC_MSS_CFG_AHB_CLK] = &gcc_mss_cfg_ahb_clk.clkr, 3717 [GCC_MSS_GPLL0_DIV_CLK_SRC] = &gcc_mss_gpll0_div_clk_src.clkr, 3718 [GCC_MSS_MFAB_AXIS_CLK] = &gcc_mss_mfab_axis_clk.clkr, 3719 [GCC_MSS_Q6_MEMNOC_AXI_CLK] = &gcc_mss_q6_memnoc_axi_clk.clkr, 3720 [GCC_MSS_SNOC_AXI_CLK] = &gcc_mss_snoc_axi_clk.clkr, 3721 [GCC_MSS_VS_CLK] = &gcc_mss_vs_clk.clkr, 3722 [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr, 3723 [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr, 3724 [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr, 3725 [GCC_PCIE_0_CLKREF_CLK] = &gcc_pcie_0_clkref_clk.clkr, 3726 [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr, 3727 [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr, 3728 [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr, 3729 [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr, 3730 [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr, 3731 [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr, 3732 [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr, 3733 [GCC_PCIE_1_CLKREF_CLK] = &gcc_pcie_1_clkref_clk.clkr, 3734 [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr, 3735 [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr, 3736 [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr, 3737 [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr, 3738 [GCC_PCIE_PHY_AUX_CLK] = &gcc_pcie_phy_aux_clk.clkr, 3739 [GCC_PCIE_PHY_REFGEN_CLK] = &gcc_pcie_phy_refgen_clk.clkr, 3740 [GCC_PCIE_PHY_REFGEN_CLK_SRC] = &gcc_pcie_phy_refgen_clk_src.clkr, 3741 [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 3742 [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr, 3743 [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 3744 [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr, 3745 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr, 3746 [GCC_QMIP_CAMERA_AHB_CLK] = &gcc_qmip_camera_ahb_clk.clkr, 3747 [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr, 3748 [GCC_QMIP_VIDEO_AHB_CLK] = &gcc_qmip_video_ahb_clk.clkr, 3749 [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr, 3750 [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr, 3751 [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr, 3752 [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr, 3753 [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr, 3754 [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr, 3755 [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr, 3756 [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr, 3757 [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr, 3758 [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr, 3759 [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr, 3760 [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr, 3761 [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr, 3762 [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr, 3763 [GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr, 3764 [GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr, 3765 [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr, 3766 [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr, 3767 [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr, 3768 [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr, 3769 [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr, 3770 [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr, 3771 [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr, 3772 [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr, 3773 [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr, 3774 [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr, 3775 [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr, 3776 [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr, 3777 [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr, 3778 [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr, 3779 [GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr, 3780 [GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr, 3781 [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr, 3782 [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr, 3783 [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr, 3784 [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr, 3785 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 3786 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 3787 [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr, 3788 [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr, 3789 [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr, 3790 [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr, 3791 [GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr, 3792 [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr, 3793 [GCC_TSIF_INACTIVITY_TIMERS_CLK] = 3794 &gcc_tsif_inactivity_timers_clk.clkr, 3795 [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr, 3796 [GCC_TSIF_REF_CLK_SRC] = &gcc_tsif_ref_clk_src.clkr, 3797 [GCC_UFS_CARD_AHB_CLK] = &gcc_ufs_card_ahb_clk.clkr, 3798 [GCC_UFS_CARD_AXI_CLK] = &gcc_ufs_card_axi_clk.clkr, 3799 [GCC_UFS_CARD_AXI_CLK_SRC] = &gcc_ufs_card_axi_clk_src.clkr, 3800 [GCC_UFS_CARD_CLKREF_CLK] = &gcc_ufs_card_clkref_clk.clkr, 3801 [GCC_UFS_CARD_ICE_CORE_CLK] = &gcc_ufs_card_ice_core_clk.clkr, 3802 [GCC_UFS_CARD_ICE_CORE_CLK_SRC] = &gcc_ufs_card_ice_core_clk_src.clkr, 3803 [GCC_UFS_CARD_PHY_AUX_CLK] = &gcc_ufs_card_phy_aux_clk.clkr, 3804 [GCC_UFS_CARD_PHY_AUX_CLK_SRC] = &gcc_ufs_card_phy_aux_clk_src.clkr, 3805 [GCC_UFS_CARD_RX_SYMBOL_0_CLK] = &gcc_ufs_card_rx_symbol_0_clk.clkr, 3806 [GCC_UFS_CARD_RX_SYMBOL_1_CLK] = &gcc_ufs_card_rx_symbol_1_clk.clkr, 3807 [GCC_UFS_CARD_TX_SYMBOL_0_CLK] = &gcc_ufs_card_tx_symbol_0_clk.clkr, 3808 [GCC_UFS_CARD_UNIPRO_CORE_CLK] = &gcc_ufs_card_unipro_core_clk.clkr, 3809 [GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC] = 3810 &gcc_ufs_card_unipro_core_clk_src.clkr, 3811 [GCC_UFS_MEM_CLKREF_CLK] = &gcc_ufs_mem_clkref_clk.clkr, 3812 [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr, 3813 [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr, 3814 [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr, 3815 [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr, 3816 [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr, 3817 [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr, 3818 [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr, 3819 [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr, 3820 [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr, 3821 [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr, 3822 [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr, 3823 [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = 3824 &gcc_ufs_phy_unipro_core_clk_src.clkr, 3825 [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr, 3826 [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr, 3827 [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr, 3828 [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = 3829 &gcc_usb30_prim_mock_utmi_clk_src.clkr, 3830 [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr, 3831 [GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr, 3832 [GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr, 3833 [GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr, 3834 [GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] = 3835 &gcc_usb30_sec_mock_utmi_clk_src.clkr, 3836 [GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr, 3837 [GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr, 3838 [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr, 3839 [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr, 3840 [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr, 3841 [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr, 3842 [GCC_USB3_SEC_CLKREF_CLK] = &gcc_usb3_sec_clkref_clk.clkr, 3843 [GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr, 3844 [GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr, 3845 [GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr, 3846 [GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr, 3847 [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr, 3848 [GCC_VDDA_VS_CLK] = &gcc_vdda_vs_clk.clkr, 3849 [GCC_VDDCX_VS_CLK] = &gcc_vddcx_vs_clk.clkr, 3850 [GCC_VDDMX_VS_CLK] = &gcc_vddmx_vs_clk.clkr, 3851 [GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr, 3852 [GCC_VIDEO_AXI_CLK] = &gcc_video_axi_clk.clkr, 3853 [GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr, 3854 [GCC_VS_CTRL_AHB_CLK] = &gcc_vs_ctrl_ahb_clk.clkr, 3855 [GCC_VS_CTRL_CLK] = &gcc_vs_ctrl_clk.clkr, 3856 [GCC_VS_CTRL_CLK_SRC] = &gcc_vs_ctrl_clk_src.clkr, 3857 [GCC_VSENSOR_CLK_SRC] = &gcc_vsensor_clk_src.clkr, 3858 [GPLL0] = &gpll0.clkr, 3859 [GPLL0_OUT_EVEN] = &gpll0_out_even.clkr, 3860 [GPLL4] = &gpll4.clkr, 3861 [GCC_CPUSS_DVM_BUS_CLK] = &gcc_cpuss_dvm_bus_clk.clkr, 3862 [GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr, 3863 [GCC_QSPI_CORE_CLK_SRC] = &gcc_qspi_core_clk_src.clkr, 3864 [GCC_QSPI_CORE_CLK] = &gcc_qspi_core_clk.clkr, 3865 [GCC_QSPI_CNOC_PERIPH_AHB_CLK] = &gcc_qspi_cnoc_periph_ahb_clk.clkr, 3866 #ifdef CONFIG_SDM_LPASSCC_845 3867 [GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr, 3868 [GCC_LPASS_SWAY_CLK] = &gcc_lpass_sway_clk.clkr, 3869 #endif 3870 }; 3871 3872 static const struct qcom_reset_map gcc_sdm845_resets[] = { 3873 [GCC_MMSS_BCR] = { 0xb000 }, 3874 [GCC_PCIE_0_BCR] = { 0x6b000 }, 3875 [GCC_PCIE_1_BCR] = { 0x8d000 }, 3876 [GCC_PCIE_PHY_BCR] = { 0x6f000 }, 3877 [GCC_PDM_BCR] = { 0x33000 }, 3878 [GCC_PRNG_BCR] = { 0x34000 }, 3879 [GCC_QUPV3_WRAPPER_0_BCR] = { 0x17000 }, 3880 [GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 }, 3881 [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 }, 3882 [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 }, 3883 [GCC_SDCC2_BCR] = { 0x14000 }, 3884 [GCC_SDCC4_BCR] = { 0x16000 }, 3885 [GCC_TSIF_BCR] = { 0x36000 }, 3886 [GCC_UFS_CARD_BCR] = { 0x75000 }, 3887 [GCC_UFS_PHY_BCR] = { 0x77000 }, 3888 [GCC_USB30_PRIM_BCR] = { 0xf000 }, 3889 [GCC_USB30_SEC_BCR] = { 0x10000 }, 3890 [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 }, 3891 [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 }, 3892 [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 }, 3893 [GCC_USB3_PHY_SEC_BCR] = { 0x5000c }, 3894 [GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 }, 3895 [GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 }, 3896 [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 }, 3897 [GCC_PCIE_0_PHY_BCR] = { 0x6c01c }, 3898 [GCC_PCIE_1_PHY_BCR] = { 0x8e01c }, 3899 }; 3900 3901 static struct gdsc *gcc_sdm670_gdscs[] = { 3902 [UFS_PHY_GDSC] = &ufs_phy_gdsc, 3903 [USB30_PRIM_GDSC] = &usb30_prim_gdsc, 3904 [HLOS1_VOTE_AGGRE_NOC_MMU_AUDIO_TBU_GDSC] = 3905 &hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc, 3906 [HLOS1_VOTE_AGGRE_NOC_MMU_TBU1_GDSC] = 3907 &hlos1_vote_aggre_noc_mmu_tbu1_gdsc, 3908 [HLOS1_VOTE_AGGRE_NOC_MMU_TBU2_GDSC] = 3909 &hlos1_vote_aggre_noc_mmu_tbu2_gdsc, 3910 [HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC] = 3911 &hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc, 3912 [HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC] = 3913 &hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc, 3914 [HLOS1_VOTE_MMNOC_MMU_TBU_SF_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf_gdsc, 3915 }; 3916 3917 static struct gdsc *gcc_sdm845_gdscs[] = { 3918 [PCIE_0_GDSC] = &pcie_0_gdsc, 3919 [PCIE_1_GDSC] = &pcie_1_gdsc, 3920 [UFS_CARD_GDSC] = &ufs_card_gdsc, 3921 [UFS_PHY_GDSC] = &ufs_phy_gdsc, 3922 [USB30_PRIM_GDSC] = &usb30_prim_gdsc, 3923 [USB30_SEC_GDSC] = &usb30_sec_gdsc, 3924 [HLOS1_VOTE_AGGRE_NOC_MMU_AUDIO_TBU_GDSC] = 3925 &hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc, 3926 [HLOS1_VOTE_AGGRE_NOC_MMU_PCIE_TBU_GDSC] = 3927 &hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc, 3928 [HLOS1_VOTE_AGGRE_NOC_MMU_TBU1_GDSC] = 3929 &hlos1_vote_aggre_noc_mmu_tbu1_gdsc, 3930 [HLOS1_VOTE_AGGRE_NOC_MMU_TBU2_GDSC] = 3931 &hlos1_vote_aggre_noc_mmu_tbu2_gdsc, 3932 [HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC] = 3933 &hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc, 3934 [HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC] = 3935 &hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc, 3936 [HLOS1_VOTE_MMNOC_MMU_TBU_SF_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf_gdsc, 3937 }; 3938 3939 static const struct regmap_config gcc_sdm845_regmap_config = { 3940 .reg_bits = 32, 3941 .reg_stride = 4, 3942 .val_bits = 32, 3943 .max_register = 0x182090, 3944 .fast_io = true, 3945 }; 3946 3947 static const struct qcom_cc_desc gcc_sdm670_desc = { 3948 .config = &gcc_sdm845_regmap_config, 3949 .clks = gcc_sdm670_clocks, 3950 .num_clks = ARRAY_SIZE(gcc_sdm670_clocks), 3951 /* Snapdragon 670 can function without its own exclusive resets. */ 3952 .resets = gcc_sdm845_resets, 3953 .num_resets = ARRAY_SIZE(gcc_sdm845_resets), 3954 .gdscs = gcc_sdm670_gdscs, 3955 .num_gdscs = ARRAY_SIZE(gcc_sdm670_gdscs), 3956 }; 3957 3958 static const struct qcom_cc_desc gcc_sdm845_desc = { 3959 .config = &gcc_sdm845_regmap_config, 3960 .clks = gcc_sdm845_clocks, 3961 .num_clks = ARRAY_SIZE(gcc_sdm845_clocks), 3962 .resets = gcc_sdm845_resets, 3963 .num_resets = ARRAY_SIZE(gcc_sdm845_resets), 3964 .gdscs = gcc_sdm845_gdscs, 3965 .num_gdscs = ARRAY_SIZE(gcc_sdm845_gdscs), 3966 }; 3967 3968 static const struct of_device_id gcc_sdm845_match_table[] = { 3969 { .compatible = "qcom,gcc-sdm670", .data = &gcc_sdm670_desc }, 3970 { .compatible = "qcom,gcc-sdm845", .data = &gcc_sdm845_desc }, 3971 { } 3972 }; 3973 MODULE_DEVICE_TABLE(of, gcc_sdm845_match_table); 3974 3975 static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = { 3976 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src), 3977 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src), 3978 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src), 3979 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src), 3980 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src), 3981 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src), 3982 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src), 3983 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src), 3984 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src), 3985 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src), 3986 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src), 3987 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src), 3988 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src), 3989 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src), 3990 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src), 3991 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src), 3992 }; 3993 3994 static int gcc_sdm845_probe(struct platform_device *pdev) 3995 { 3996 const struct qcom_cc_desc *gcc_desc; 3997 struct regmap *regmap; 3998 int ret; 3999 4000 regmap = qcom_cc_map(pdev, &gcc_sdm845_desc); 4001 if (IS_ERR(regmap)) 4002 return PTR_ERR(regmap); 4003 4004 /* Disable the GPLL0 active input to MMSS and GPU via MISC registers */ 4005 regmap_update_bits(regmap, 0x09ffc, 0x3, 0x3); 4006 regmap_update_bits(regmap, 0x71028, 0x3, 0x3); 4007 4008 ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks, 4009 ARRAY_SIZE(gcc_dfs_clocks)); 4010 if (ret) 4011 return ret; 4012 4013 gcc_desc = of_device_get_match_data(&pdev->dev); 4014 return qcom_cc_really_probe(pdev, gcc_desc, regmap); 4015 } 4016 4017 static struct platform_driver gcc_sdm845_driver = { 4018 .probe = gcc_sdm845_probe, 4019 .driver = { 4020 .name = "gcc-sdm845", 4021 .of_match_table = gcc_sdm845_match_table, 4022 }, 4023 }; 4024 4025 static int __init gcc_sdm845_init(void) 4026 { 4027 return platform_driver_register(&gcc_sdm845_driver); 4028 } 4029 core_initcall(gcc_sdm845_init); 4030 4031 static void __exit gcc_sdm845_exit(void) 4032 { 4033 platform_driver_unregister(&gcc_sdm845_driver); 4034 } 4035 module_exit(gcc_sdm845_exit); 4036 4037 MODULE_DESCRIPTION("QTI GCC SDM845 Driver"); 4038 MODULE_LICENSE("GPL v2"); 4039 MODULE_ALIAS("platform:gcc-sdm845"); 4040