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

Configure Feed

Select the types of activity you want to include in your feed.

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