1 /* 2 * Copyright (c) 2017, The Linux Foundation. All rights reserved. 3 * 4 * This software is licensed under the terms of the GNU General Public 5 * License version 2, as published by the Free Software Foundation, and 6 * may be copied, distributed, and modified under those terms. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 */ 13 14 #include <linux/kernel.h> 15 #include <linux/err.h> 16 #include <linux/platform_device.h> 17 #include <linux/module.h> 18 #include <linux/of.h> 19 #include <linux/of_device.h> 20 #include <linux/clk-provider.h> 21 #include <linux/regmap.h> 22 23 #include <dt-bindings/clock/qcom,gcc-ipq8074.h> 24 25 #include "common.h" 26 #include "clk-regmap.h" 27 #include "clk-pll.h" 28 #include "clk-rcg.h" 29 #include "clk-branch.h" 30 #include "clk-alpha-pll.h" 31 #include "clk-regmap-divider.h" 32 #include "clk-regmap-mux.h" 33 #include "reset.h" 34 35 #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) } 36 37 enum { 38 P_XO, 39 P_GPLL0, 40 P_GPLL0_DIV2, 41 P_GPLL2, 42 P_GPLL4, 43 P_GPLL6, 44 P_SLEEP_CLK, 45 P_PCIE20_PHY0_PIPE, 46 P_PCIE20_PHY1_PIPE, 47 P_USB3PHY_0_PIPE, 48 P_USB3PHY_1_PIPE, 49 P_UBI32_PLL, 50 P_NSS_CRYPTO_PLL, 51 P_BIAS_PLL, 52 P_BIAS_PLL_NSS_NOC, 53 P_UNIPHY0_RX, 54 P_UNIPHY0_TX, 55 P_UNIPHY1_RX, 56 P_UNIPHY1_TX, 57 P_UNIPHY2_RX, 58 P_UNIPHY2_TX, 59 }; 60 61 static const char * const gcc_xo_gpll0_gpll0_out_main_div2[] = { 62 "xo", 63 "gpll0", 64 "gpll0_out_main_div2", 65 }; 66 67 static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = { 68 { P_XO, 0 }, 69 { P_GPLL0, 1 }, 70 { P_GPLL0_DIV2, 4 }, 71 }; 72 73 static const char * const gcc_xo_gpll0[] = { 74 "xo", 75 "gpll0", 76 }; 77 78 static const struct parent_map gcc_xo_gpll0_map[] = { 79 { P_XO, 0 }, 80 { P_GPLL0, 1 }, 81 }; 82 83 static const char * const gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = { 84 "xo", 85 "gpll0", 86 "gpll2", 87 "gpll0_out_main_div2", 88 }; 89 90 static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = { 91 { P_XO, 0 }, 92 { P_GPLL0, 1 }, 93 { P_GPLL2, 2 }, 94 { P_GPLL0_DIV2, 4 }, 95 }; 96 97 static const char * const gcc_xo_gpll0_sleep_clk[] = { 98 "xo", 99 "gpll0", 100 "sleep_clk", 101 }; 102 103 static const struct parent_map gcc_xo_gpll0_sleep_clk_map[] = { 104 { P_XO, 0 }, 105 { P_GPLL0, 2 }, 106 { P_SLEEP_CLK, 6 }, 107 }; 108 109 static const char * const gcc_xo_gpll6_gpll0_gpll0_out_main_div2[] = { 110 "xo", 111 "gpll6", 112 "gpll0", 113 "gpll0_out_main_div2", 114 }; 115 116 static const struct parent_map gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map[] = { 117 { P_XO, 0 }, 118 { P_GPLL6, 1 }, 119 { P_GPLL0, 3 }, 120 { P_GPLL0_DIV2, 4 }, 121 }; 122 123 static const char * const gcc_xo_gpll0_out_main_div2_gpll0[] = { 124 "xo", 125 "gpll0_out_main_div2", 126 "gpll0", 127 }; 128 129 static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = { 130 { P_XO, 0 }, 131 { P_GPLL0_DIV2, 2 }, 132 { P_GPLL0, 1 }, 133 }; 134 135 static const char * const gcc_usb3phy_0_cc_pipe_clk_xo[] = { 136 "usb3phy_0_cc_pipe_clk", 137 "xo", 138 }; 139 140 static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = { 141 { P_USB3PHY_0_PIPE, 0 }, 142 { P_XO, 2 }, 143 }; 144 145 static const char * const gcc_usb3phy_1_cc_pipe_clk_xo[] = { 146 "usb3phy_1_cc_pipe_clk", 147 "xo", 148 }; 149 150 static const struct parent_map gcc_usb3phy_1_cc_pipe_clk_xo_map[] = { 151 { P_USB3PHY_1_PIPE, 0 }, 152 { P_XO, 2 }, 153 }; 154 155 static const char * const gcc_pcie20_phy0_pipe_clk_xo[] = { 156 "pcie20_phy0_pipe_clk", 157 "xo", 158 }; 159 160 static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = { 161 { P_PCIE20_PHY0_PIPE, 0 }, 162 { P_XO, 2 }, 163 }; 164 165 static const char * const gcc_pcie20_phy1_pipe_clk_xo[] = { 166 "pcie20_phy1_pipe_clk", 167 "xo", 168 }; 169 170 static const struct parent_map gcc_pcie20_phy1_pipe_clk_xo_map[] = { 171 { P_PCIE20_PHY1_PIPE, 0 }, 172 { P_XO, 2 }, 173 }; 174 175 static const char * const gcc_xo_gpll0_gpll6_gpll0_div2[] = { 176 "xo", 177 "gpll0", 178 "gpll6", 179 "gpll0_out_main_div2", 180 }; 181 182 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_div2_map[] = { 183 { P_XO, 0 }, 184 { P_GPLL0, 1 }, 185 { P_GPLL6, 2 }, 186 { P_GPLL0_DIV2, 4 }, 187 }; 188 189 static const char * const gcc_xo_gpll0_gpll6_gpll0_out_main_div2[] = { 190 "xo", 191 "gpll0", 192 "gpll6", 193 "gpll0_out_main_div2", 194 }; 195 196 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map[] = { 197 { P_XO, 0 }, 198 { P_GPLL0, 1 }, 199 { P_GPLL6, 2 }, 200 { P_GPLL0_DIV2, 3 }, 201 }; 202 203 static const char * const gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2[] = { 204 "xo", 205 "bias_pll_nss_noc_clk", 206 "gpll0", 207 "gpll2", 208 }; 209 210 static const struct parent_map gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2_map[] = { 211 { P_XO, 0 }, 212 { P_BIAS_PLL_NSS_NOC, 1 }, 213 { P_GPLL0, 2 }, 214 { P_GPLL2, 3 }, 215 }; 216 217 static const char * const gcc_xo_nss_crypto_pll_gpll0[] = { 218 "xo", 219 "nss_crypto_pll", 220 "gpll0", 221 }; 222 223 static const struct parent_map gcc_xo_nss_crypto_pll_gpll0_map[] = { 224 { P_XO, 0 }, 225 { P_NSS_CRYPTO_PLL, 1 }, 226 { P_GPLL0, 2 }, 227 }; 228 229 static const char * const gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6[] = { 230 "xo", 231 "ubi32_pll", 232 "gpll0", 233 "gpll2", 234 "gpll4", 235 "gpll6", 236 }; 237 238 static const struct parent_map gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map[] = { 239 { P_XO, 0 }, 240 { P_UBI32_PLL, 1 }, 241 { P_GPLL0, 2 }, 242 { P_GPLL2, 3 }, 243 { P_GPLL4, 4 }, 244 { P_GPLL6, 5 }, 245 }; 246 247 static const char * const gcc_xo_gpll0_out_main_div2[] = { 248 "xo", 249 "gpll0_out_main_div2", 250 }; 251 252 static const struct parent_map gcc_xo_gpll0_out_main_div2_map[] = { 253 { P_XO, 0 }, 254 { P_GPLL0_DIV2, 1 }, 255 }; 256 257 static const char * const gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = { 258 "xo", 259 "bias_pll_cc_clk", 260 "gpll0", 261 "gpll4", 262 "nss_crypto_pll", 263 "ubi32_pll", 264 }; 265 266 static const struct parent_map gcc_xo_bias_gpll0_gpll4_nss_ubi32_map[] = { 267 { P_XO, 0 }, 268 { P_BIAS_PLL, 1 }, 269 { P_GPLL0, 2 }, 270 { P_GPLL4, 3 }, 271 { P_NSS_CRYPTO_PLL, 4 }, 272 { P_UBI32_PLL, 5 }, 273 }; 274 275 static const char * const gcc_xo_gpll0_gpll4[] = { 276 "xo", 277 "gpll0", 278 "gpll4", 279 }; 280 281 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = { 282 { P_XO, 0 }, 283 { P_GPLL0, 1 }, 284 { P_GPLL4, 2 }, 285 }; 286 287 static const char * const gcc_xo_uniphy0_rx_tx_ubi32_bias[] = { 288 "xo", 289 "uniphy0_gcc_rx_clk", 290 "uniphy0_gcc_tx_clk", 291 "ubi32_pll", 292 "bias_pll_cc_clk", 293 }; 294 295 static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = { 296 { P_XO, 0 }, 297 { P_UNIPHY0_RX, 1 }, 298 { P_UNIPHY0_TX, 2 }, 299 { P_UBI32_PLL, 5 }, 300 { P_BIAS_PLL, 6 }, 301 }; 302 303 static const char * const gcc_xo_uniphy0_tx_rx_ubi32_bias[] = { 304 "xo", 305 "uniphy0_gcc_tx_clk", 306 "uniphy0_gcc_rx_clk", 307 "ubi32_pll", 308 "bias_pll_cc_clk", 309 }; 310 311 static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = { 312 { P_XO, 0 }, 313 { P_UNIPHY0_TX, 1 }, 314 { P_UNIPHY0_RX, 2 }, 315 { P_UBI32_PLL, 5 }, 316 { P_BIAS_PLL, 6 }, 317 }; 318 319 static const char * const gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = { 320 "xo", 321 "uniphy0_gcc_rx_clk", 322 "uniphy0_gcc_tx_clk", 323 "uniphy1_gcc_rx_clk", 324 "uniphy1_gcc_tx_clk", 325 "ubi32_pll", 326 "bias_pll_cc_clk", 327 }; 328 329 static const struct parent_map 330 gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map[] = { 331 { P_XO, 0 }, 332 { P_UNIPHY0_RX, 1 }, 333 { P_UNIPHY0_TX, 2 }, 334 { P_UNIPHY1_RX, 3 }, 335 { P_UNIPHY1_TX, 4 }, 336 { P_UBI32_PLL, 5 }, 337 { P_BIAS_PLL, 6 }, 338 }; 339 340 static const char * const gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = { 341 "xo", 342 "uniphy0_gcc_tx_clk", 343 "uniphy0_gcc_rx_clk", 344 "uniphy1_gcc_tx_clk", 345 "uniphy1_gcc_rx_clk", 346 "ubi32_pll", 347 "bias_pll_cc_clk", 348 }; 349 350 static const struct parent_map 351 gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map[] = { 352 { P_XO, 0 }, 353 { P_UNIPHY0_TX, 1 }, 354 { P_UNIPHY0_RX, 2 }, 355 { P_UNIPHY1_TX, 3 }, 356 { P_UNIPHY1_RX, 4 }, 357 { P_UBI32_PLL, 5 }, 358 { P_BIAS_PLL, 6 }, 359 }; 360 361 static const char * const gcc_xo_uniphy2_rx_tx_ubi32_bias[] = { 362 "xo", 363 "uniphy2_gcc_rx_clk", 364 "uniphy2_gcc_tx_clk", 365 "ubi32_pll", 366 "bias_pll_cc_clk", 367 }; 368 369 static const struct parent_map gcc_xo_uniphy2_rx_tx_ubi32_bias_map[] = { 370 { P_XO, 0 }, 371 { P_UNIPHY2_RX, 1 }, 372 { P_UNIPHY2_TX, 2 }, 373 { P_UBI32_PLL, 5 }, 374 { P_BIAS_PLL, 6 }, 375 }; 376 377 static const char * const gcc_xo_uniphy2_tx_rx_ubi32_bias[] = { 378 "xo", 379 "uniphy2_gcc_tx_clk", 380 "uniphy2_gcc_rx_clk", 381 "ubi32_pll", 382 "bias_pll_cc_clk", 383 }; 384 385 static const struct parent_map gcc_xo_uniphy2_tx_rx_ubi32_bias_map[] = { 386 { P_XO, 0 }, 387 { P_UNIPHY2_TX, 1 }, 388 { P_UNIPHY2_RX, 2 }, 389 { P_UBI32_PLL, 5 }, 390 { P_BIAS_PLL, 6 }, 391 }; 392 393 static const char * const gcc_xo_gpll0_gpll6_gpll0_sleep_clk[] = { 394 "xo", 395 "gpll0", 396 "gpll6", 397 "gpll0_out_main_div2", 398 "sleep_clk", 399 }; 400 401 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map[] = { 402 { P_XO, 0 }, 403 { P_GPLL0, 1 }, 404 { P_GPLL6, 2 }, 405 { P_GPLL0_DIV2, 4 }, 406 { P_SLEEP_CLK, 6 }, 407 }; 408 409 static struct clk_alpha_pll gpll0_main = { 410 .offset = 0x21000, 411 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 412 .clkr = { 413 .enable_reg = 0x0b000, 414 .enable_mask = BIT(0), 415 .hw.init = &(struct clk_init_data){ 416 .name = "gpll0_main", 417 .parent_names = (const char *[]){ 418 "xo" 419 }, 420 .num_parents = 1, 421 .ops = &clk_alpha_pll_ops, 422 }, 423 }, 424 }; 425 426 static struct clk_fixed_factor gpll0_out_main_div2 = { 427 .mult = 1, 428 .div = 2, 429 .hw.init = &(struct clk_init_data){ 430 .name = "gpll0_out_main_div2", 431 .parent_names = (const char *[]){ 432 "gpll0_main" 433 }, 434 .num_parents = 1, 435 .ops = &clk_fixed_factor_ops, 436 .flags = CLK_SET_RATE_PARENT, 437 }, 438 }; 439 440 static struct clk_alpha_pll_postdiv gpll0 = { 441 .offset = 0x21000, 442 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 443 .width = 4, 444 .clkr.hw.init = &(struct clk_init_data){ 445 .name = "gpll0", 446 .parent_names = (const char *[]){ 447 "gpll0_main" 448 }, 449 .num_parents = 1, 450 .ops = &clk_alpha_pll_postdiv_ro_ops, 451 }, 452 }; 453 454 static struct clk_alpha_pll gpll2_main = { 455 .offset = 0x4a000, 456 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 457 .clkr = { 458 .enable_reg = 0x0b000, 459 .enable_mask = BIT(2), 460 .hw.init = &(struct clk_init_data){ 461 .name = "gpll2_main", 462 .parent_names = (const char *[]){ 463 "xo" 464 }, 465 .num_parents = 1, 466 .ops = &clk_alpha_pll_ops, 467 .flags = CLK_IS_CRITICAL, 468 }, 469 }, 470 }; 471 472 static struct clk_alpha_pll_postdiv gpll2 = { 473 .offset = 0x4a000, 474 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 475 .width = 4, 476 .clkr.hw.init = &(struct clk_init_data){ 477 .name = "gpll2", 478 .parent_names = (const char *[]){ 479 "gpll2_main" 480 }, 481 .num_parents = 1, 482 .ops = &clk_alpha_pll_postdiv_ro_ops, 483 .flags = CLK_SET_RATE_PARENT, 484 }, 485 }; 486 487 static struct clk_alpha_pll gpll4_main = { 488 .offset = 0x24000, 489 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 490 .clkr = { 491 .enable_reg = 0x0b000, 492 .enable_mask = BIT(5), 493 .hw.init = &(struct clk_init_data){ 494 .name = "gpll4_main", 495 .parent_names = (const char *[]){ 496 "xo" 497 }, 498 .num_parents = 1, 499 .ops = &clk_alpha_pll_ops, 500 .flags = CLK_IS_CRITICAL, 501 }, 502 }, 503 }; 504 505 static struct clk_alpha_pll_postdiv gpll4 = { 506 .offset = 0x24000, 507 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 508 .width = 4, 509 .clkr.hw.init = &(struct clk_init_data){ 510 .name = "gpll4", 511 .parent_names = (const char *[]){ 512 "gpll4_main" 513 }, 514 .num_parents = 1, 515 .ops = &clk_alpha_pll_postdiv_ro_ops, 516 .flags = CLK_SET_RATE_PARENT, 517 }, 518 }; 519 520 static struct clk_alpha_pll gpll6_main = { 521 .offset = 0x37000, 522 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO], 523 .flags = SUPPORTS_DYNAMIC_UPDATE, 524 .clkr = { 525 .enable_reg = 0x0b000, 526 .enable_mask = BIT(7), 527 .hw.init = &(struct clk_init_data){ 528 .name = "gpll6_main", 529 .parent_names = (const char *[]){ 530 "xo" 531 }, 532 .num_parents = 1, 533 .ops = &clk_alpha_pll_ops, 534 .flags = CLK_IS_CRITICAL, 535 }, 536 }, 537 }; 538 539 static struct clk_alpha_pll_postdiv gpll6 = { 540 .offset = 0x37000, 541 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO], 542 .width = 2, 543 .clkr.hw.init = &(struct clk_init_data){ 544 .name = "gpll6", 545 .parent_names = (const char *[]){ 546 "gpll6_main" 547 }, 548 .num_parents = 1, 549 .ops = &clk_alpha_pll_postdiv_ro_ops, 550 .flags = CLK_SET_RATE_PARENT, 551 }, 552 }; 553 554 static struct clk_fixed_factor gpll6_out_main_div2 = { 555 .mult = 1, 556 .div = 2, 557 .hw.init = &(struct clk_init_data){ 558 .name = "gpll6_out_main_div2", 559 .parent_names = (const char *[]){ 560 "gpll6_main" 561 }, 562 .num_parents = 1, 563 .ops = &clk_fixed_factor_ops, 564 .flags = CLK_SET_RATE_PARENT, 565 }, 566 }; 567 568 static struct clk_alpha_pll ubi32_pll_main = { 569 .offset = 0x25000, 570 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA], 571 .flags = SUPPORTS_DYNAMIC_UPDATE, 572 .clkr = { 573 .enable_reg = 0x0b000, 574 .enable_mask = BIT(6), 575 .hw.init = &(struct clk_init_data){ 576 .name = "ubi32_pll_main", 577 .parent_names = (const char *[]){ 578 "xo" 579 }, 580 .num_parents = 1, 581 .ops = &clk_alpha_pll_huayra_ops, 582 }, 583 }, 584 }; 585 586 static struct clk_alpha_pll_postdiv ubi32_pll = { 587 .offset = 0x25000, 588 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA], 589 .width = 2, 590 .clkr.hw.init = &(struct clk_init_data){ 591 .name = "ubi32_pll", 592 .parent_names = (const char *[]){ 593 "ubi32_pll_main" 594 }, 595 .num_parents = 1, 596 .ops = &clk_alpha_pll_postdiv_ro_ops, 597 .flags = CLK_SET_RATE_PARENT, 598 }, 599 }; 600 601 static struct clk_alpha_pll nss_crypto_pll_main = { 602 .offset = 0x22000, 603 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 604 .clkr = { 605 .enable_reg = 0x0b000, 606 .enable_mask = BIT(4), 607 .hw.init = &(struct clk_init_data){ 608 .name = "nss_crypto_pll_main", 609 .parent_names = (const char *[]){ 610 "xo" 611 }, 612 .num_parents = 1, 613 .ops = &clk_alpha_pll_ops, 614 }, 615 }, 616 }; 617 618 static struct clk_alpha_pll_postdiv nss_crypto_pll = { 619 .offset = 0x22000, 620 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 621 .width = 4, 622 .clkr.hw.init = &(struct clk_init_data){ 623 .name = "nss_crypto_pll", 624 .parent_names = (const char *[]){ 625 "nss_crypto_pll_main" 626 }, 627 .num_parents = 1, 628 .ops = &clk_alpha_pll_postdiv_ro_ops, 629 .flags = CLK_SET_RATE_PARENT, 630 }, 631 }; 632 633 static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src[] = { 634 F(19200000, P_XO, 1, 0, 0), 635 F(50000000, P_GPLL0, 16, 0, 0), 636 F(100000000, P_GPLL0, 8, 0, 0), 637 { } 638 }; 639 640 static struct clk_rcg2 pcnoc_bfdcd_clk_src = { 641 .cmd_rcgr = 0x27000, 642 .freq_tbl = ftbl_pcnoc_bfdcd_clk_src, 643 .hid_width = 5, 644 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 645 .clkr.hw.init = &(struct clk_init_data){ 646 .name = "pcnoc_bfdcd_clk_src", 647 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 648 .num_parents = 3, 649 .ops = &clk_rcg2_ops, 650 .flags = CLK_IS_CRITICAL, 651 }, 652 }; 653 654 static struct clk_fixed_factor pcnoc_clk_src = { 655 .mult = 1, 656 .div = 1, 657 .hw.init = &(struct clk_init_data){ 658 .name = "pcnoc_clk_src", 659 .parent_names = (const char *[]){ 660 "pcnoc_bfdcd_clk_src" 661 }, 662 .num_parents = 1, 663 .ops = &clk_fixed_factor_ops, 664 .flags = CLK_SET_RATE_PARENT, 665 }, 666 }; 667 668 static struct clk_branch gcc_sleep_clk_src = { 669 .halt_reg = 0x30000, 670 .clkr = { 671 .enable_reg = 0x30000, 672 .enable_mask = BIT(1), 673 .hw.init = &(struct clk_init_data){ 674 .name = "gcc_sleep_clk_src", 675 .parent_names = (const char *[]){ 676 "sleep_clk" 677 }, 678 .num_parents = 1, 679 .ops = &clk_branch2_ops, 680 }, 681 }, 682 }; 683 684 static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src[] = { 685 F(19200000, P_XO, 1, 0, 0), 686 F(25000000, P_GPLL0_DIV2, 16, 0, 0), 687 F(50000000, P_GPLL0, 16, 0, 0), 688 { } 689 }; 690 691 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = { 692 .cmd_rcgr = 0x0200c, 693 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src, 694 .hid_width = 5, 695 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 696 .clkr.hw.init = &(struct clk_init_data){ 697 .name = "blsp1_qup1_i2c_apps_clk_src", 698 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 699 .num_parents = 3, 700 .ops = &clk_rcg2_ops, 701 }, 702 }; 703 704 static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src[] = { 705 F(960000, P_XO, 10, 1, 2), 706 F(4800000, P_XO, 4, 0, 0), 707 F(9600000, P_XO, 2, 0, 0), 708 F(12500000, P_GPLL0_DIV2, 16, 1, 2), 709 F(16000000, P_GPLL0, 10, 1, 5), 710 F(19200000, P_XO, 1, 0, 0), 711 F(25000000, P_GPLL0, 16, 1, 2), 712 F(50000000, P_GPLL0, 16, 0, 0), 713 { } 714 }; 715 716 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = { 717 .cmd_rcgr = 0x02024, 718 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src, 719 .mnd_width = 8, 720 .hid_width = 5, 721 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 722 .clkr.hw.init = &(struct clk_init_data){ 723 .name = "blsp1_qup1_spi_apps_clk_src", 724 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 725 .num_parents = 3, 726 .ops = &clk_rcg2_ops, 727 }, 728 }; 729 730 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = { 731 .cmd_rcgr = 0x03000, 732 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src, 733 .hid_width = 5, 734 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 735 .clkr.hw.init = &(struct clk_init_data){ 736 .name = "blsp1_qup2_i2c_apps_clk_src", 737 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 738 .num_parents = 3, 739 .ops = &clk_rcg2_ops, 740 }, 741 }; 742 743 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = { 744 .cmd_rcgr = 0x03014, 745 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src, 746 .mnd_width = 8, 747 .hid_width = 5, 748 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 749 .clkr.hw.init = &(struct clk_init_data){ 750 .name = "blsp1_qup2_spi_apps_clk_src", 751 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 752 .num_parents = 3, 753 .ops = &clk_rcg2_ops, 754 }, 755 }; 756 757 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = { 758 .cmd_rcgr = 0x04000, 759 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src, 760 .hid_width = 5, 761 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 762 .clkr.hw.init = &(struct clk_init_data){ 763 .name = "blsp1_qup3_i2c_apps_clk_src", 764 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 765 .num_parents = 3, 766 .ops = &clk_rcg2_ops, 767 }, 768 }; 769 770 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = { 771 .cmd_rcgr = 0x04014, 772 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src, 773 .mnd_width = 8, 774 .hid_width = 5, 775 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 776 .clkr.hw.init = &(struct clk_init_data){ 777 .name = "blsp1_qup3_spi_apps_clk_src", 778 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 779 .num_parents = 3, 780 .ops = &clk_rcg2_ops, 781 }, 782 }; 783 784 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = { 785 .cmd_rcgr = 0x05000, 786 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src, 787 .hid_width = 5, 788 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 789 .clkr.hw.init = &(struct clk_init_data){ 790 .name = "blsp1_qup4_i2c_apps_clk_src", 791 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 792 .num_parents = 3, 793 .ops = &clk_rcg2_ops, 794 }, 795 }; 796 797 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = { 798 .cmd_rcgr = 0x05014, 799 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src, 800 .mnd_width = 8, 801 .hid_width = 5, 802 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 803 .clkr.hw.init = &(struct clk_init_data){ 804 .name = "blsp1_qup4_spi_apps_clk_src", 805 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 806 .num_parents = 3, 807 .ops = &clk_rcg2_ops, 808 }, 809 }; 810 811 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = { 812 .cmd_rcgr = 0x06000, 813 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src, 814 .hid_width = 5, 815 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 816 .clkr.hw.init = &(struct clk_init_data){ 817 .name = "blsp1_qup5_i2c_apps_clk_src", 818 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 819 .num_parents = 3, 820 .ops = &clk_rcg2_ops, 821 }, 822 }; 823 824 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = { 825 .cmd_rcgr = 0x06014, 826 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src, 827 .mnd_width = 8, 828 .hid_width = 5, 829 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 830 .clkr.hw.init = &(struct clk_init_data){ 831 .name = "blsp1_qup5_spi_apps_clk_src", 832 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 833 .num_parents = 3, 834 .ops = &clk_rcg2_ops, 835 }, 836 }; 837 838 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = { 839 .cmd_rcgr = 0x07000, 840 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src, 841 .hid_width = 5, 842 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 843 .clkr.hw.init = &(struct clk_init_data){ 844 .name = "blsp1_qup6_i2c_apps_clk_src", 845 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 846 .num_parents = 3, 847 .ops = &clk_rcg2_ops, 848 }, 849 }; 850 851 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = { 852 .cmd_rcgr = 0x07014, 853 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src, 854 .mnd_width = 8, 855 .hid_width = 5, 856 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 857 .clkr.hw.init = &(struct clk_init_data){ 858 .name = "blsp1_qup6_spi_apps_clk_src", 859 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 860 .num_parents = 3, 861 .ops = &clk_rcg2_ops, 862 }, 863 }; 864 865 static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src[] = { 866 F(3686400, P_GPLL0_DIV2, 1, 144, 15625), 867 F(7372800, P_GPLL0_DIV2, 1, 288, 15625), 868 F(14745600, P_GPLL0_DIV2, 1, 576, 15625), 869 F(16000000, P_GPLL0_DIV2, 5, 1, 5), 870 F(19200000, P_XO, 1, 0, 0), 871 F(24000000, P_GPLL0, 1, 3, 100), 872 F(25000000, P_GPLL0, 16, 1, 2), 873 F(32000000, P_GPLL0, 1, 1, 25), 874 F(40000000, P_GPLL0, 1, 1, 20), 875 F(46400000, P_GPLL0, 1, 29, 500), 876 F(48000000, P_GPLL0, 1, 3, 50), 877 F(51200000, P_GPLL0, 1, 8, 125), 878 F(56000000, P_GPLL0, 1, 7, 100), 879 F(58982400, P_GPLL0, 1, 1152, 15625), 880 F(60000000, P_GPLL0, 1, 3, 40), 881 F(64000000, P_GPLL0, 12.5, 1, 1), 882 { } 883 }; 884 885 static struct clk_rcg2 blsp1_uart1_apps_clk_src = { 886 .cmd_rcgr = 0x02044, 887 .freq_tbl = ftbl_blsp1_uart_apps_clk_src, 888 .mnd_width = 16, 889 .hid_width = 5, 890 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 891 .clkr.hw.init = &(struct clk_init_data){ 892 .name = "blsp1_uart1_apps_clk_src", 893 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 894 .num_parents = 3, 895 .ops = &clk_rcg2_ops, 896 }, 897 }; 898 899 static struct clk_rcg2 blsp1_uart2_apps_clk_src = { 900 .cmd_rcgr = 0x03034, 901 .freq_tbl = ftbl_blsp1_uart_apps_clk_src, 902 .mnd_width = 16, 903 .hid_width = 5, 904 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 905 .clkr.hw.init = &(struct clk_init_data){ 906 .name = "blsp1_uart2_apps_clk_src", 907 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 908 .num_parents = 3, 909 .ops = &clk_rcg2_ops, 910 }, 911 }; 912 913 static struct clk_rcg2 blsp1_uart3_apps_clk_src = { 914 .cmd_rcgr = 0x04034, 915 .freq_tbl = ftbl_blsp1_uart_apps_clk_src, 916 .mnd_width = 16, 917 .hid_width = 5, 918 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 919 .clkr.hw.init = &(struct clk_init_data){ 920 .name = "blsp1_uart3_apps_clk_src", 921 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 922 .num_parents = 3, 923 .ops = &clk_rcg2_ops, 924 }, 925 }; 926 927 static struct clk_rcg2 blsp1_uart4_apps_clk_src = { 928 .cmd_rcgr = 0x05034, 929 .freq_tbl = ftbl_blsp1_uart_apps_clk_src, 930 .mnd_width = 16, 931 .hid_width = 5, 932 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 933 .clkr.hw.init = &(struct clk_init_data){ 934 .name = "blsp1_uart4_apps_clk_src", 935 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 936 .num_parents = 3, 937 .ops = &clk_rcg2_ops, 938 }, 939 }; 940 941 static struct clk_rcg2 blsp1_uart5_apps_clk_src = { 942 .cmd_rcgr = 0x06034, 943 .freq_tbl = ftbl_blsp1_uart_apps_clk_src, 944 .mnd_width = 16, 945 .hid_width = 5, 946 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 947 .clkr.hw.init = &(struct clk_init_data){ 948 .name = "blsp1_uart5_apps_clk_src", 949 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 950 .num_parents = 3, 951 .ops = &clk_rcg2_ops, 952 }, 953 }; 954 955 static struct clk_rcg2 blsp1_uart6_apps_clk_src = { 956 .cmd_rcgr = 0x07034, 957 .freq_tbl = ftbl_blsp1_uart_apps_clk_src, 958 .mnd_width = 16, 959 .hid_width = 5, 960 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 961 .clkr.hw.init = &(struct clk_init_data){ 962 .name = "blsp1_uart6_apps_clk_src", 963 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 964 .num_parents = 3, 965 .ops = &clk_rcg2_ops, 966 }, 967 }; 968 969 static const struct freq_tbl ftbl_pcie_axi_clk_src[] = { 970 F(19200000, P_XO, 1, 0, 0), 971 F(200000000, P_GPLL0, 4, 0, 0), 972 { } 973 }; 974 975 static struct clk_rcg2 pcie0_axi_clk_src = { 976 .cmd_rcgr = 0x75054, 977 .freq_tbl = ftbl_pcie_axi_clk_src, 978 .hid_width = 5, 979 .parent_map = gcc_xo_gpll0_map, 980 .clkr.hw.init = &(struct clk_init_data){ 981 .name = "pcie0_axi_clk_src", 982 .parent_names = gcc_xo_gpll0, 983 .num_parents = 2, 984 .ops = &clk_rcg2_ops, 985 }, 986 }; 987 988 static const struct freq_tbl ftbl_pcie_aux_clk_src[] = { 989 F(19200000, P_XO, 1, 0, 0), 990 }; 991 992 static struct clk_rcg2 pcie0_aux_clk_src = { 993 .cmd_rcgr = 0x75024, 994 .freq_tbl = ftbl_pcie_aux_clk_src, 995 .mnd_width = 16, 996 .hid_width = 5, 997 .parent_map = gcc_xo_gpll0_sleep_clk_map, 998 .clkr.hw.init = &(struct clk_init_data){ 999 .name = "pcie0_aux_clk_src", 1000 .parent_names = gcc_xo_gpll0_sleep_clk, 1001 .num_parents = 3, 1002 .ops = &clk_rcg2_ops, 1003 }, 1004 }; 1005 1006 static struct clk_regmap_mux pcie0_pipe_clk_src = { 1007 .reg = 0x7501c, 1008 .shift = 8, 1009 .width = 2, 1010 .parent_map = gcc_pcie20_phy0_pipe_clk_xo_map, 1011 .clkr = { 1012 .hw.init = &(struct clk_init_data){ 1013 .name = "pcie0_pipe_clk_src", 1014 .parent_names = gcc_pcie20_phy0_pipe_clk_xo, 1015 .num_parents = 2, 1016 .ops = &clk_regmap_mux_closest_ops, 1017 .flags = CLK_SET_RATE_PARENT, 1018 }, 1019 }, 1020 }; 1021 1022 static struct clk_rcg2 pcie1_axi_clk_src = { 1023 .cmd_rcgr = 0x76054, 1024 .freq_tbl = ftbl_pcie_axi_clk_src, 1025 .hid_width = 5, 1026 .parent_map = gcc_xo_gpll0_map, 1027 .clkr.hw.init = &(struct clk_init_data){ 1028 .name = "pcie1_axi_clk_src", 1029 .parent_names = gcc_xo_gpll0, 1030 .num_parents = 2, 1031 .ops = &clk_rcg2_ops, 1032 }, 1033 }; 1034 1035 static struct clk_rcg2 pcie1_aux_clk_src = { 1036 .cmd_rcgr = 0x76024, 1037 .freq_tbl = ftbl_pcie_aux_clk_src, 1038 .mnd_width = 16, 1039 .hid_width = 5, 1040 .parent_map = gcc_xo_gpll0_sleep_clk_map, 1041 .clkr.hw.init = &(struct clk_init_data){ 1042 .name = "pcie1_aux_clk_src", 1043 .parent_names = gcc_xo_gpll0_sleep_clk, 1044 .num_parents = 3, 1045 .ops = &clk_rcg2_ops, 1046 }, 1047 }; 1048 1049 static struct clk_regmap_mux pcie1_pipe_clk_src = { 1050 .reg = 0x7601c, 1051 .shift = 8, 1052 .width = 2, 1053 .parent_map = gcc_pcie20_phy1_pipe_clk_xo_map, 1054 .clkr = { 1055 .hw.init = &(struct clk_init_data){ 1056 .name = "pcie1_pipe_clk_src", 1057 .parent_names = gcc_pcie20_phy1_pipe_clk_xo, 1058 .num_parents = 2, 1059 .ops = &clk_regmap_mux_closest_ops, 1060 .flags = CLK_SET_RATE_PARENT, 1061 }, 1062 }, 1063 }; 1064 1065 static const struct freq_tbl ftbl_sdcc_apps_clk_src[] = { 1066 F(144000, P_XO, 16, 3, 25), 1067 F(400000, P_XO, 12, 1, 4), 1068 F(24000000, P_GPLL2, 12, 1, 4), 1069 F(48000000, P_GPLL2, 12, 1, 2), 1070 F(96000000, P_GPLL2, 12, 0, 0), 1071 F(177777778, P_GPLL0, 4.5, 0, 0), 1072 F(192000000, P_GPLL2, 6, 0, 0), 1073 F(384000000, P_GPLL2, 3, 0, 0), 1074 { } 1075 }; 1076 1077 static struct clk_rcg2 sdcc1_apps_clk_src = { 1078 .cmd_rcgr = 0x42004, 1079 .freq_tbl = ftbl_sdcc_apps_clk_src, 1080 .mnd_width = 8, 1081 .hid_width = 5, 1082 .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map, 1083 .clkr.hw.init = &(struct clk_init_data){ 1084 .name = "sdcc1_apps_clk_src", 1085 .parent_names = gcc_xo_gpll0_gpll2_gpll0_out_main_div2, 1086 .num_parents = 4, 1087 .ops = &clk_rcg2_ops, 1088 }, 1089 }; 1090 1091 static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = { 1092 F(19200000, P_XO, 1, 0, 0), 1093 F(160000000, P_GPLL0, 5, 0, 0), 1094 F(308570000, P_GPLL6, 3.5, 0, 0), 1095 }; 1096 1097 static struct clk_rcg2 sdcc1_ice_core_clk_src = { 1098 .cmd_rcgr = 0x5d000, 1099 .freq_tbl = ftbl_sdcc_ice_core_clk_src, 1100 .mnd_width = 8, 1101 .hid_width = 5, 1102 .parent_map = gcc_xo_gpll0_gpll6_gpll0_div2_map, 1103 .clkr.hw.init = &(struct clk_init_data){ 1104 .name = "sdcc1_ice_core_clk_src", 1105 .parent_names = gcc_xo_gpll0_gpll6_gpll0_div2, 1106 .num_parents = 4, 1107 .ops = &clk_rcg2_ops, 1108 }, 1109 }; 1110 1111 static struct clk_rcg2 sdcc2_apps_clk_src = { 1112 .cmd_rcgr = 0x43004, 1113 .freq_tbl = ftbl_sdcc_apps_clk_src, 1114 .mnd_width = 8, 1115 .hid_width = 5, 1116 .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map, 1117 .clkr.hw.init = &(struct clk_init_data){ 1118 .name = "sdcc2_apps_clk_src", 1119 .parent_names = gcc_xo_gpll0_gpll2_gpll0_out_main_div2, 1120 .num_parents = 4, 1121 .ops = &clk_rcg2_ops, 1122 }, 1123 }; 1124 1125 static const struct freq_tbl ftbl_usb_master_clk_src[] = { 1126 F(80000000, P_GPLL0_DIV2, 5, 0, 0), 1127 F(100000000, P_GPLL0, 8, 0, 0), 1128 F(133330000, P_GPLL0, 6, 0, 0), 1129 { } 1130 }; 1131 1132 static struct clk_rcg2 usb0_master_clk_src = { 1133 .cmd_rcgr = 0x3e00c, 1134 .freq_tbl = ftbl_usb_master_clk_src, 1135 .mnd_width = 8, 1136 .hid_width = 5, 1137 .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map, 1138 .clkr.hw.init = &(struct clk_init_data){ 1139 .name = "usb0_master_clk_src", 1140 .parent_names = gcc_xo_gpll0_out_main_div2_gpll0, 1141 .num_parents = 3, 1142 .ops = &clk_rcg2_ops, 1143 }, 1144 }; 1145 1146 static const struct freq_tbl ftbl_usb_aux_clk_src[] = { 1147 F(19200000, P_XO, 1, 0, 0), 1148 { } 1149 }; 1150 1151 static struct clk_rcg2 usb0_aux_clk_src = { 1152 .cmd_rcgr = 0x3e05c, 1153 .freq_tbl = ftbl_usb_aux_clk_src, 1154 .mnd_width = 16, 1155 .hid_width = 5, 1156 .parent_map = gcc_xo_gpll0_sleep_clk_map, 1157 .clkr.hw.init = &(struct clk_init_data){ 1158 .name = "usb0_aux_clk_src", 1159 .parent_names = gcc_xo_gpll0_sleep_clk, 1160 .num_parents = 3, 1161 .ops = &clk_rcg2_ops, 1162 }, 1163 }; 1164 1165 static const struct freq_tbl ftbl_usb_mock_utmi_clk_src[] = { 1166 F(19200000, P_XO, 1, 0, 0), 1167 F(20000000, P_GPLL6, 6, 1, 9), 1168 F(60000000, P_GPLL6, 6, 1, 3), 1169 { } 1170 }; 1171 1172 static struct clk_rcg2 usb0_mock_utmi_clk_src = { 1173 .cmd_rcgr = 0x3e020, 1174 .freq_tbl = ftbl_usb_mock_utmi_clk_src, 1175 .mnd_width = 8, 1176 .hid_width = 5, 1177 .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map, 1178 .clkr.hw.init = &(struct clk_init_data){ 1179 .name = "usb0_mock_utmi_clk_src", 1180 .parent_names = gcc_xo_gpll6_gpll0_gpll0_out_main_div2, 1181 .num_parents = 4, 1182 .ops = &clk_rcg2_ops, 1183 }, 1184 }; 1185 1186 static struct clk_regmap_mux usb0_pipe_clk_src = { 1187 .reg = 0x3e048, 1188 .shift = 8, 1189 .width = 2, 1190 .parent_map = gcc_usb3phy_0_cc_pipe_clk_xo_map, 1191 .clkr = { 1192 .hw.init = &(struct clk_init_data){ 1193 .name = "usb0_pipe_clk_src", 1194 .parent_names = gcc_usb3phy_0_cc_pipe_clk_xo, 1195 .num_parents = 2, 1196 .ops = &clk_regmap_mux_closest_ops, 1197 .flags = CLK_SET_RATE_PARENT, 1198 }, 1199 }, 1200 }; 1201 1202 static struct clk_rcg2 usb1_master_clk_src = { 1203 .cmd_rcgr = 0x3f00c, 1204 .freq_tbl = ftbl_usb_master_clk_src, 1205 .mnd_width = 8, 1206 .hid_width = 5, 1207 .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map, 1208 .clkr.hw.init = &(struct clk_init_data){ 1209 .name = "usb1_master_clk_src", 1210 .parent_names = gcc_xo_gpll0_out_main_div2_gpll0, 1211 .num_parents = 3, 1212 .ops = &clk_rcg2_ops, 1213 }, 1214 }; 1215 1216 static struct clk_rcg2 usb1_aux_clk_src = { 1217 .cmd_rcgr = 0x3f05c, 1218 .freq_tbl = ftbl_usb_aux_clk_src, 1219 .mnd_width = 16, 1220 .hid_width = 5, 1221 .parent_map = gcc_xo_gpll0_sleep_clk_map, 1222 .clkr.hw.init = &(struct clk_init_data){ 1223 .name = "usb1_aux_clk_src", 1224 .parent_names = gcc_xo_gpll0_sleep_clk, 1225 .num_parents = 3, 1226 .ops = &clk_rcg2_ops, 1227 }, 1228 }; 1229 1230 static struct clk_rcg2 usb1_mock_utmi_clk_src = { 1231 .cmd_rcgr = 0x3f020, 1232 .freq_tbl = ftbl_usb_mock_utmi_clk_src, 1233 .mnd_width = 8, 1234 .hid_width = 5, 1235 .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map, 1236 .clkr.hw.init = &(struct clk_init_data){ 1237 .name = "usb1_mock_utmi_clk_src", 1238 .parent_names = gcc_xo_gpll6_gpll0_gpll0_out_main_div2, 1239 .num_parents = 4, 1240 .ops = &clk_rcg2_ops, 1241 }, 1242 }; 1243 1244 static struct clk_regmap_mux usb1_pipe_clk_src = { 1245 .reg = 0x3f048, 1246 .shift = 8, 1247 .width = 2, 1248 .parent_map = gcc_usb3phy_1_cc_pipe_clk_xo_map, 1249 .clkr = { 1250 .hw.init = &(struct clk_init_data){ 1251 .name = "usb1_pipe_clk_src", 1252 .parent_names = gcc_usb3phy_1_cc_pipe_clk_xo, 1253 .num_parents = 2, 1254 .ops = &clk_regmap_mux_closest_ops, 1255 .flags = CLK_SET_RATE_PARENT, 1256 }, 1257 }, 1258 }; 1259 1260 static struct clk_branch gcc_xo_clk_src = { 1261 .halt_reg = 0x30018, 1262 .clkr = { 1263 .enable_reg = 0x30018, 1264 .enable_mask = BIT(1), 1265 .hw.init = &(struct clk_init_data){ 1266 .name = "gcc_xo_clk_src", 1267 .parent_names = (const char *[]){ 1268 "xo" 1269 }, 1270 .num_parents = 1, 1271 .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 1272 .ops = &clk_branch2_ops, 1273 }, 1274 }, 1275 }; 1276 1277 static struct clk_fixed_factor gcc_xo_div4_clk_src = { 1278 .mult = 1, 1279 .div = 4, 1280 .hw.init = &(struct clk_init_data){ 1281 .name = "gcc_xo_div4_clk_src", 1282 .parent_names = (const char *[]){ 1283 "gcc_xo_clk_src" 1284 }, 1285 .num_parents = 1, 1286 .ops = &clk_fixed_factor_ops, 1287 .flags = CLK_SET_RATE_PARENT, 1288 }, 1289 }; 1290 1291 static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src[] = { 1292 F(19200000, P_XO, 1, 0, 0), 1293 F(50000000, P_GPLL0_DIV2, 8, 0, 0), 1294 F(100000000, P_GPLL0, 8, 0, 0), 1295 F(133333333, P_GPLL0, 6, 0, 0), 1296 F(160000000, P_GPLL0, 5, 0, 0), 1297 F(200000000, P_GPLL0, 4, 0, 0), 1298 F(266666667, P_GPLL0, 3, 0, 0), 1299 { } 1300 }; 1301 1302 static struct clk_rcg2 system_noc_bfdcd_clk_src = { 1303 .cmd_rcgr = 0x26004, 1304 .freq_tbl = ftbl_system_noc_bfdcd_clk_src, 1305 .hid_width = 5, 1306 .parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map, 1307 .clkr.hw.init = &(struct clk_init_data){ 1308 .name = "system_noc_bfdcd_clk_src", 1309 .parent_names = gcc_xo_gpll0_gpll6_gpll0_out_main_div2, 1310 .num_parents = 4, 1311 .ops = &clk_rcg2_ops, 1312 .flags = CLK_IS_CRITICAL, 1313 }, 1314 }; 1315 1316 static struct clk_fixed_factor system_noc_clk_src = { 1317 .mult = 1, 1318 .div = 1, 1319 .hw.init = &(struct clk_init_data){ 1320 .name = "system_noc_clk_src", 1321 .parent_names = (const char *[]){ 1322 "system_noc_bfdcd_clk_src" 1323 }, 1324 .num_parents = 1, 1325 .ops = &clk_fixed_factor_ops, 1326 .flags = CLK_SET_RATE_PARENT, 1327 }, 1328 }; 1329 1330 static const struct freq_tbl ftbl_nss_ce_clk_src[] = { 1331 F(19200000, P_XO, 1, 0, 0), 1332 F(200000000, P_GPLL0, 4, 0, 0), 1333 { } 1334 }; 1335 1336 static struct clk_rcg2 nss_ce_clk_src = { 1337 .cmd_rcgr = 0x68098, 1338 .freq_tbl = ftbl_nss_ce_clk_src, 1339 .hid_width = 5, 1340 .parent_map = gcc_xo_gpll0_map, 1341 .clkr.hw.init = &(struct clk_init_data){ 1342 .name = "nss_ce_clk_src", 1343 .parent_names = gcc_xo_gpll0, 1344 .num_parents = 2, 1345 .ops = &clk_rcg2_ops, 1346 }, 1347 }; 1348 1349 static const struct freq_tbl ftbl_nss_noc_bfdcd_clk_src[] = { 1350 F(19200000, P_XO, 1, 0, 0), 1351 F(461500000, P_BIAS_PLL_NSS_NOC, 1, 0, 0), 1352 { } 1353 }; 1354 1355 static struct clk_rcg2 nss_noc_bfdcd_clk_src = { 1356 .cmd_rcgr = 0x68088, 1357 .freq_tbl = ftbl_nss_noc_bfdcd_clk_src, 1358 .hid_width = 5, 1359 .parent_map = gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2_map, 1360 .clkr.hw.init = &(struct clk_init_data){ 1361 .name = "nss_noc_bfdcd_clk_src", 1362 .parent_names = gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2, 1363 .num_parents = 4, 1364 .ops = &clk_rcg2_ops, 1365 }, 1366 }; 1367 1368 static struct clk_fixed_factor nss_noc_clk_src = { 1369 .mult = 1, 1370 .div = 1, 1371 .hw.init = &(struct clk_init_data){ 1372 .name = "nss_noc_clk_src", 1373 .parent_names = (const char *[]){ 1374 "nss_noc_bfdcd_clk_src" 1375 }, 1376 .num_parents = 1, 1377 .ops = &clk_fixed_factor_ops, 1378 .flags = CLK_SET_RATE_PARENT, 1379 }, 1380 }; 1381 1382 static const struct freq_tbl ftbl_nss_crypto_clk_src[] = { 1383 F(19200000, P_XO, 1, 0, 0), 1384 F(600000000, P_NSS_CRYPTO_PLL, 1, 0, 0), 1385 { } 1386 }; 1387 1388 static struct clk_rcg2 nss_crypto_clk_src = { 1389 .cmd_rcgr = 0x68144, 1390 .freq_tbl = ftbl_nss_crypto_clk_src, 1391 .mnd_width = 16, 1392 .hid_width = 5, 1393 .parent_map = gcc_xo_nss_crypto_pll_gpll0_map, 1394 .clkr.hw.init = &(struct clk_init_data){ 1395 .name = "nss_crypto_clk_src", 1396 .parent_names = gcc_xo_nss_crypto_pll_gpll0, 1397 .num_parents = 3, 1398 .ops = &clk_rcg2_ops, 1399 }, 1400 }; 1401 1402 static const struct freq_tbl ftbl_nss_ubi_clk_src[] = { 1403 F(19200000, P_XO, 1, 0, 0), 1404 F(187200000, P_UBI32_PLL, 8, 0, 0), 1405 F(748800000, P_UBI32_PLL, 2, 0, 0), 1406 F(1497600000, P_UBI32_PLL, 1, 0, 0), 1407 F(1689600000, P_UBI32_PLL, 1, 0, 0), 1408 { } 1409 }; 1410 1411 static struct clk_rcg2 nss_ubi0_clk_src = { 1412 .cmd_rcgr = 0x68104, 1413 .freq_tbl = ftbl_nss_ubi_clk_src, 1414 .hid_width = 5, 1415 .parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map, 1416 .clkr.hw.init = &(struct clk_init_data){ 1417 .name = "nss_ubi0_clk_src", 1418 .parent_names = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6, 1419 .num_parents = 6, 1420 .ops = &clk_rcg2_ops, 1421 .flags = CLK_SET_RATE_PARENT, 1422 }, 1423 }; 1424 1425 static struct clk_regmap_div nss_ubi0_div_clk_src = { 1426 .reg = 0x68118, 1427 .shift = 0, 1428 .width = 4, 1429 .clkr = { 1430 .hw.init = &(struct clk_init_data){ 1431 .name = "nss_ubi0_div_clk_src", 1432 .parent_names = (const char *[]){ 1433 "nss_ubi0_clk_src" 1434 }, 1435 .num_parents = 1, 1436 .ops = &clk_regmap_div_ro_ops, 1437 .flags = CLK_SET_RATE_PARENT, 1438 }, 1439 }, 1440 }; 1441 1442 static struct clk_rcg2 nss_ubi1_clk_src = { 1443 .cmd_rcgr = 0x68124, 1444 .freq_tbl = ftbl_nss_ubi_clk_src, 1445 .hid_width = 5, 1446 .parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map, 1447 .clkr.hw.init = &(struct clk_init_data){ 1448 .name = "nss_ubi1_clk_src", 1449 .parent_names = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6, 1450 .num_parents = 6, 1451 .ops = &clk_rcg2_ops, 1452 .flags = CLK_SET_RATE_PARENT, 1453 }, 1454 }; 1455 1456 static struct clk_regmap_div nss_ubi1_div_clk_src = { 1457 .reg = 0x68138, 1458 .shift = 0, 1459 .width = 4, 1460 .clkr = { 1461 .hw.init = &(struct clk_init_data){ 1462 .name = "nss_ubi1_div_clk_src", 1463 .parent_names = (const char *[]){ 1464 "nss_ubi1_clk_src" 1465 }, 1466 .num_parents = 1, 1467 .ops = &clk_regmap_div_ro_ops, 1468 .flags = CLK_SET_RATE_PARENT, 1469 }, 1470 }, 1471 }; 1472 1473 static const struct freq_tbl ftbl_ubi_mpt_clk_src[] = { 1474 F(19200000, P_XO, 1, 0, 0), 1475 F(25000000, P_GPLL0_DIV2, 16, 0, 0), 1476 { } 1477 }; 1478 1479 static struct clk_rcg2 ubi_mpt_clk_src = { 1480 .cmd_rcgr = 0x68090, 1481 .freq_tbl = ftbl_ubi_mpt_clk_src, 1482 .hid_width = 5, 1483 .parent_map = gcc_xo_gpll0_out_main_div2_map, 1484 .clkr.hw.init = &(struct clk_init_data){ 1485 .name = "ubi_mpt_clk_src", 1486 .parent_names = gcc_xo_gpll0_out_main_div2, 1487 .num_parents = 2, 1488 .ops = &clk_rcg2_ops, 1489 }, 1490 }; 1491 1492 static const struct freq_tbl ftbl_nss_imem_clk_src[] = { 1493 F(19200000, P_XO, 1, 0, 0), 1494 F(400000000, P_GPLL0, 2, 0, 0), 1495 { } 1496 }; 1497 1498 static struct clk_rcg2 nss_imem_clk_src = { 1499 .cmd_rcgr = 0x68158, 1500 .freq_tbl = ftbl_nss_imem_clk_src, 1501 .hid_width = 5, 1502 .parent_map = gcc_xo_gpll0_gpll4_map, 1503 .clkr.hw.init = &(struct clk_init_data){ 1504 .name = "nss_imem_clk_src", 1505 .parent_names = gcc_xo_gpll0_gpll4, 1506 .num_parents = 3, 1507 .ops = &clk_rcg2_ops, 1508 }, 1509 }; 1510 1511 static const struct freq_tbl ftbl_nss_ppe_clk_src[] = { 1512 F(19200000, P_XO, 1, 0, 0), 1513 F(300000000, P_BIAS_PLL, 1, 0, 0), 1514 { } 1515 }; 1516 1517 static struct clk_rcg2 nss_ppe_clk_src = { 1518 .cmd_rcgr = 0x68080, 1519 .freq_tbl = ftbl_nss_ppe_clk_src, 1520 .hid_width = 5, 1521 .parent_map = gcc_xo_bias_gpll0_gpll4_nss_ubi32_map, 1522 .clkr.hw.init = &(struct clk_init_data){ 1523 .name = "nss_ppe_clk_src", 1524 .parent_names = gcc_xo_bias_gpll0_gpll4_nss_ubi32, 1525 .num_parents = 6, 1526 .ops = &clk_rcg2_ops, 1527 }, 1528 }; 1529 1530 static struct clk_fixed_factor nss_ppe_cdiv_clk_src = { 1531 .mult = 1, 1532 .div = 4, 1533 .hw.init = &(struct clk_init_data){ 1534 .name = "nss_ppe_cdiv_clk_src", 1535 .parent_names = (const char *[]){ 1536 "nss_ppe_clk_src" 1537 }, 1538 .num_parents = 1, 1539 .ops = &clk_fixed_factor_ops, 1540 .flags = CLK_SET_RATE_PARENT, 1541 }, 1542 }; 1543 1544 static const struct freq_tbl ftbl_nss_port1_rx_clk_src[] = { 1545 F(19200000, P_XO, 1, 0, 0), 1546 F(25000000, P_UNIPHY0_RX, 5, 0, 0), 1547 F(125000000, P_UNIPHY0_RX, 1, 0, 0), 1548 { } 1549 }; 1550 1551 static struct clk_rcg2 nss_port1_rx_clk_src = { 1552 .cmd_rcgr = 0x68020, 1553 .freq_tbl = ftbl_nss_port1_rx_clk_src, 1554 .hid_width = 5, 1555 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map, 1556 .clkr.hw.init = &(struct clk_init_data){ 1557 .name = "nss_port1_rx_clk_src", 1558 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias, 1559 .num_parents = 5, 1560 .ops = &clk_rcg2_ops, 1561 }, 1562 }; 1563 1564 static struct clk_regmap_div nss_port1_rx_div_clk_src = { 1565 .reg = 0x68400, 1566 .shift = 0, 1567 .width = 4, 1568 .clkr = { 1569 .hw.init = &(struct clk_init_data){ 1570 .name = "nss_port1_rx_div_clk_src", 1571 .parent_names = (const char *[]){ 1572 "nss_port1_rx_clk_src" 1573 }, 1574 .num_parents = 1, 1575 .ops = &clk_regmap_div_ops, 1576 .flags = CLK_SET_RATE_PARENT, 1577 }, 1578 }, 1579 }; 1580 1581 static const struct freq_tbl ftbl_nss_port1_tx_clk_src[] = { 1582 F(19200000, P_XO, 1, 0, 0), 1583 F(25000000, P_UNIPHY0_TX, 5, 0, 0), 1584 F(125000000, P_UNIPHY0_TX, 1, 0, 0), 1585 { } 1586 }; 1587 1588 static struct clk_rcg2 nss_port1_tx_clk_src = { 1589 .cmd_rcgr = 0x68028, 1590 .freq_tbl = ftbl_nss_port1_tx_clk_src, 1591 .hid_width = 5, 1592 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map, 1593 .clkr.hw.init = &(struct clk_init_data){ 1594 .name = "nss_port1_tx_clk_src", 1595 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias, 1596 .num_parents = 5, 1597 .ops = &clk_rcg2_ops, 1598 }, 1599 }; 1600 1601 static struct clk_regmap_div nss_port1_tx_div_clk_src = { 1602 .reg = 0x68404, 1603 .shift = 0, 1604 .width = 4, 1605 .clkr = { 1606 .hw.init = &(struct clk_init_data){ 1607 .name = "nss_port1_tx_div_clk_src", 1608 .parent_names = (const char *[]){ 1609 "nss_port1_tx_clk_src" 1610 }, 1611 .num_parents = 1, 1612 .ops = &clk_regmap_div_ops, 1613 .flags = CLK_SET_RATE_PARENT, 1614 }, 1615 }, 1616 }; 1617 1618 static struct clk_rcg2 nss_port2_rx_clk_src = { 1619 .cmd_rcgr = 0x68030, 1620 .freq_tbl = ftbl_nss_port1_rx_clk_src, 1621 .hid_width = 5, 1622 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map, 1623 .clkr.hw.init = &(struct clk_init_data){ 1624 .name = "nss_port2_rx_clk_src", 1625 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias, 1626 .num_parents = 5, 1627 .ops = &clk_rcg2_ops, 1628 }, 1629 }; 1630 1631 static struct clk_regmap_div nss_port2_rx_div_clk_src = { 1632 .reg = 0x68410, 1633 .shift = 0, 1634 .width = 4, 1635 .clkr = { 1636 .hw.init = &(struct clk_init_data){ 1637 .name = "nss_port2_rx_div_clk_src", 1638 .parent_names = (const char *[]){ 1639 "nss_port2_rx_clk_src" 1640 }, 1641 .num_parents = 1, 1642 .ops = &clk_regmap_div_ops, 1643 .flags = CLK_SET_RATE_PARENT, 1644 }, 1645 }, 1646 }; 1647 1648 static struct clk_rcg2 nss_port2_tx_clk_src = { 1649 .cmd_rcgr = 0x68038, 1650 .freq_tbl = ftbl_nss_port1_tx_clk_src, 1651 .hid_width = 5, 1652 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map, 1653 .clkr.hw.init = &(struct clk_init_data){ 1654 .name = "nss_port2_tx_clk_src", 1655 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias, 1656 .num_parents = 5, 1657 .ops = &clk_rcg2_ops, 1658 }, 1659 }; 1660 1661 static struct clk_regmap_div nss_port2_tx_div_clk_src = { 1662 .reg = 0x68414, 1663 .shift = 0, 1664 .width = 4, 1665 .clkr = { 1666 .hw.init = &(struct clk_init_data){ 1667 .name = "nss_port2_tx_div_clk_src", 1668 .parent_names = (const char *[]){ 1669 "nss_port2_tx_clk_src" 1670 }, 1671 .num_parents = 1, 1672 .ops = &clk_regmap_div_ops, 1673 .flags = CLK_SET_RATE_PARENT, 1674 }, 1675 }, 1676 }; 1677 1678 static struct clk_rcg2 nss_port3_rx_clk_src = { 1679 .cmd_rcgr = 0x68040, 1680 .freq_tbl = ftbl_nss_port1_rx_clk_src, 1681 .hid_width = 5, 1682 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map, 1683 .clkr.hw.init = &(struct clk_init_data){ 1684 .name = "nss_port3_rx_clk_src", 1685 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias, 1686 .num_parents = 5, 1687 .ops = &clk_rcg2_ops, 1688 }, 1689 }; 1690 1691 static struct clk_regmap_div nss_port3_rx_div_clk_src = { 1692 .reg = 0x68420, 1693 .shift = 0, 1694 .width = 4, 1695 .clkr = { 1696 .hw.init = &(struct clk_init_data){ 1697 .name = "nss_port3_rx_div_clk_src", 1698 .parent_names = (const char *[]){ 1699 "nss_port3_rx_clk_src" 1700 }, 1701 .num_parents = 1, 1702 .ops = &clk_regmap_div_ops, 1703 .flags = CLK_SET_RATE_PARENT, 1704 }, 1705 }, 1706 }; 1707 1708 static struct clk_rcg2 nss_port3_tx_clk_src = { 1709 .cmd_rcgr = 0x68048, 1710 .freq_tbl = ftbl_nss_port1_tx_clk_src, 1711 .hid_width = 5, 1712 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map, 1713 .clkr.hw.init = &(struct clk_init_data){ 1714 .name = "nss_port3_tx_clk_src", 1715 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias, 1716 .num_parents = 5, 1717 .ops = &clk_rcg2_ops, 1718 }, 1719 }; 1720 1721 static struct clk_regmap_div nss_port3_tx_div_clk_src = { 1722 .reg = 0x68424, 1723 .shift = 0, 1724 .width = 4, 1725 .clkr = { 1726 .hw.init = &(struct clk_init_data){ 1727 .name = "nss_port3_tx_div_clk_src", 1728 .parent_names = (const char *[]){ 1729 "nss_port3_tx_clk_src" 1730 }, 1731 .num_parents = 1, 1732 .ops = &clk_regmap_div_ops, 1733 .flags = CLK_SET_RATE_PARENT, 1734 }, 1735 }, 1736 }; 1737 1738 static struct clk_rcg2 nss_port4_rx_clk_src = { 1739 .cmd_rcgr = 0x68050, 1740 .freq_tbl = ftbl_nss_port1_rx_clk_src, 1741 .hid_width = 5, 1742 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map, 1743 .clkr.hw.init = &(struct clk_init_data){ 1744 .name = "nss_port4_rx_clk_src", 1745 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias, 1746 .num_parents = 5, 1747 .ops = &clk_rcg2_ops, 1748 }, 1749 }; 1750 1751 static struct clk_regmap_div nss_port4_rx_div_clk_src = { 1752 .reg = 0x68430, 1753 .shift = 0, 1754 .width = 4, 1755 .clkr = { 1756 .hw.init = &(struct clk_init_data){ 1757 .name = "nss_port4_rx_div_clk_src", 1758 .parent_names = (const char *[]){ 1759 "nss_port4_rx_clk_src" 1760 }, 1761 .num_parents = 1, 1762 .ops = &clk_regmap_div_ops, 1763 .flags = CLK_SET_RATE_PARENT, 1764 }, 1765 }, 1766 }; 1767 1768 static struct clk_rcg2 nss_port4_tx_clk_src = { 1769 .cmd_rcgr = 0x68058, 1770 .freq_tbl = ftbl_nss_port1_tx_clk_src, 1771 .hid_width = 5, 1772 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map, 1773 .clkr.hw.init = &(struct clk_init_data){ 1774 .name = "nss_port4_tx_clk_src", 1775 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias, 1776 .num_parents = 5, 1777 .ops = &clk_rcg2_ops, 1778 }, 1779 }; 1780 1781 static struct clk_regmap_div nss_port4_tx_div_clk_src = { 1782 .reg = 0x68434, 1783 .shift = 0, 1784 .width = 4, 1785 .clkr = { 1786 .hw.init = &(struct clk_init_data){ 1787 .name = "nss_port4_tx_div_clk_src", 1788 .parent_names = (const char *[]){ 1789 "nss_port4_tx_clk_src" 1790 }, 1791 .num_parents = 1, 1792 .ops = &clk_regmap_div_ops, 1793 .flags = CLK_SET_RATE_PARENT, 1794 }, 1795 }, 1796 }; 1797 1798 static const struct freq_tbl ftbl_nss_port5_rx_clk_src[] = { 1799 F(19200000, P_XO, 1, 0, 0), 1800 F(25000000, P_UNIPHY1_RX, 12.5, 0, 0), 1801 F(78125000, P_UNIPHY1_RX, 4, 0, 0), 1802 F(125000000, P_UNIPHY1_RX, 2.5, 0, 0), 1803 F(156250000, P_UNIPHY1_RX, 2, 0, 0), 1804 F(312500000, P_UNIPHY1_RX, 1, 0, 0), 1805 { } 1806 }; 1807 1808 static struct clk_rcg2 nss_port5_rx_clk_src = { 1809 .cmd_rcgr = 0x68060, 1810 .freq_tbl = ftbl_nss_port5_rx_clk_src, 1811 .hid_width = 5, 1812 .parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map, 1813 .clkr.hw.init = &(struct clk_init_data){ 1814 .name = "nss_port5_rx_clk_src", 1815 .parent_names = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias, 1816 .num_parents = 7, 1817 .ops = &clk_rcg2_ops, 1818 }, 1819 }; 1820 1821 static struct clk_regmap_div nss_port5_rx_div_clk_src = { 1822 .reg = 0x68440, 1823 .shift = 0, 1824 .width = 4, 1825 .clkr = { 1826 .hw.init = &(struct clk_init_data){ 1827 .name = "nss_port5_rx_div_clk_src", 1828 .parent_names = (const char *[]){ 1829 "nss_port5_rx_clk_src" 1830 }, 1831 .num_parents = 1, 1832 .ops = &clk_regmap_div_ops, 1833 .flags = CLK_SET_RATE_PARENT, 1834 }, 1835 }, 1836 }; 1837 1838 static const struct freq_tbl ftbl_nss_port5_tx_clk_src[] = { 1839 F(19200000, P_XO, 1, 0, 0), 1840 F(25000000, P_UNIPHY1_TX, 12.5, 0, 0), 1841 F(78125000, P_UNIPHY1_TX, 4, 0, 0), 1842 F(125000000, P_UNIPHY1_TX, 2.5, 0, 0), 1843 F(156250000, P_UNIPHY1_TX, 2, 0, 0), 1844 F(312500000, P_UNIPHY1_TX, 1, 0, 0), 1845 { } 1846 }; 1847 1848 static struct clk_rcg2 nss_port5_tx_clk_src = { 1849 .cmd_rcgr = 0x68068, 1850 .freq_tbl = ftbl_nss_port5_tx_clk_src, 1851 .hid_width = 5, 1852 .parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map, 1853 .clkr.hw.init = &(struct clk_init_data){ 1854 .name = "nss_port5_tx_clk_src", 1855 .parent_names = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias, 1856 .num_parents = 7, 1857 .ops = &clk_rcg2_ops, 1858 }, 1859 }; 1860 1861 static struct clk_regmap_div nss_port5_tx_div_clk_src = { 1862 .reg = 0x68444, 1863 .shift = 0, 1864 .width = 4, 1865 .clkr = { 1866 .hw.init = &(struct clk_init_data){ 1867 .name = "nss_port5_tx_div_clk_src", 1868 .parent_names = (const char *[]){ 1869 "nss_port5_tx_clk_src" 1870 }, 1871 .num_parents = 1, 1872 .ops = &clk_regmap_div_ops, 1873 .flags = CLK_SET_RATE_PARENT, 1874 }, 1875 }, 1876 }; 1877 1878 static const struct freq_tbl ftbl_nss_port6_rx_clk_src[] = { 1879 F(19200000, P_XO, 1, 0, 0), 1880 F(25000000, P_UNIPHY2_RX, 12.5, 0, 0), 1881 F(78125000, P_UNIPHY2_RX, 4, 0, 0), 1882 F(125000000, P_UNIPHY2_RX, 2.5, 0, 0), 1883 F(156250000, P_UNIPHY2_RX, 2, 0, 0), 1884 F(312500000, P_UNIPHY2_RX, 1, 0, 0), 1885 { } 1886 }; 1887 1888 static struct clk_rcg2 nss_port6_rx_clk_src = { 1889 .cmd_rcgr = 0x68070, 1890 .freq_tbl = ftbl_nss_port6_rx_clk_src, 1891 .hid_width = 5, 1892 .parent_map = gcc_xo_uniphy2_rx_tx_ubi32_bias_map, 1893 .clkr.hw.init = &(struct clk_init_data){ 1894 .name = "nss_port6_rx_clk_src", 1895 .parent_names = gcc_xo_uniphy2_rx_tx_ubi32_bias, 1896 .num_parents = 5, 1897 .ops = &clk_rcg2_ops, 1898 }, 1899 }; 1900 1901 static struct clk_regmap_div nss_port6_rx_div_clk_src = { 1902 .reg = 0x68450, 1903 .shift = 0, 1904 .width = 4, 1905 .clkr = { 1906 .hw.init = &(struct clk_init_data){ 1907 .name = "nss_port6_rx_div_clk_src", 1908 .parent_names = (const char *[]){ 1909 "nss_port6_rx_clk_src" 1910 }, 1911 .num_parents = 1, 1912 .ops = &clk_regmap_div_ops, 1913 .flags = CLK_SET_RATE_PARENT, 1914 }, 1915 }, 1916 }; 1917 1918 static const struct freq_tbl ftbl_nss_port6_tx_clk_src[] = { 1919 F(19200000, P_XO, 1, 0, 0), 1920 F(25000000, P_UNIPHY2_TX, 12.5, 0, 0), 1921 F(78125000, P_UNIPHY2_TX, 4, 0, 0), 1922 F(125000000, P_UNIPHY2_TX, 2.5, 0, 0), 1923 F(156250000, P_UNIPHY2_TX, 2, 0, 0), 1924 F(312500000, P_UNIPHY2_TX, 1, 0, 0), 1925 { } 1926 }; 1927 1928 static struct clk_rcg2 nss_port6_tx_clk_src = { 1929 .cmd_rcgr = 0x68078, 1930 .freq_tbl = ftbl_nss_port6_tx_clk_src, 1931 .hid_width = 5, 1932 .parent_map = gcc_xo_uniphy2_tx_rx_ubi32_bias_map, 1933 .clkr.hw.init = &(struct clk_init_data){ 1934 .name = "nss_port6_tx_clk_src", 1935 .parent_names = gcc_xo_uniphy2_tx_rx_ubi32_bias, 1936 .num_parents = 5, 1937 .ops = &clk_rcg2_ops, 1938 }, 1939 }; 1940 1941 static struct clk_regmap_div nss_port6_tx_div_clk_src = { 1942 .reg = 0x68454, 1943 .shift = 0, 1944 .width = 4, 1945 .clkr = { 1946 .hw.init = &(struct clk_init_data){ 1947 .name = "nss_port6_tx_div_clk_src", 1948 .parent_names = (const char *[]){ 1949 "nss_port6_tx_clk_src" 1950 }, 1951 .num_parents = 1, 1952 .ops = &clk_regmap_div_ops, 1953 .flags = CLK_SET_RATE_PARENT, 1954 }, 1955 }, 1956 }; 1957 1958 static struct freq_tbl ftbl_crypto_clk_src[] = { 1959 F(40000000, P_GPLL0_DIV2, 10, 0, 0), 1960 F(80000000, P_GPLL0, 10, 0, 0), 1961 F(100000000, P_GPLL0, 8, 0, 0), 1962 F(160000000, P_GPLL0, 5, 0, 0), 1963 { } 1964 }; 1965 1966 static struct clk_rcg2 crypto_clk_src = { 1967 .cmd_rcgr = 0x16004, 1968 .freq_tbl = ftbl_crypto_clk_src, 1969 .hid_width = 5, 1970 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1971 .clkr.hw.init = &(struct clk_init_data){ 1972 .name = "crypto_clk_src", 1973 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2, 1974 .num_parents = 3, 1975 .ops = &clk_rcg2_ops, 1976 }, 1977 }; 1978 1979 static struct freq_tbl ftbl_gp_clk_src[] = { 1980 F(19200000, P_XO, 1, 0, 0), 1981 { } 1982 }; 1983 1984 static struct clk_rcg2 gp1_clk_src = { 1985 .cmd_rcgr = 0x08004, 1986 .freq_tbl = ftbl_gp_clk_src, 1987 .mnd_width = 8, 1988 .hid_width = 5, 1989 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map, 1990 .clkr.hw.init = &(struct clk_init_data){ 1991 .name = "gp1_clk_src", 1992 .parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk, 1993 .num_parents = 5, 1994 .ops = &clk_rcg2_ops, 1995 }, 1996 }; 1997 1998 static struct clk_rcg2 gp2_clk_src = { 1999 .cmd_rcgr = 0x09004, 2000 .freq_tbl = ftbl_gp_clk_src, 2001 .mnd_width = 8, 2002 .hid_width = 5, 2003 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map, 2004 .clkr.hw.init = &(struct clk_init_data){ 2005 .name = "gp2_clk_src", 2006 .parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk, 2007 .num_parents = 5, 2008 .ops = &clk_rcg2_ops, 2009 }, 2010 }; 2011 2012 static struct clk_rcg2 gp3_clk_src = { 2013 .cmd_rcgr = 0x0a004, 2014 .freq_tbl = ftbl_gp_clk_src, 2015 .mnd_width = 8, 2016 .hid_width = 5, 2017 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map, 2018 .clkr.hw.init = &(struct clk_init_data){ 2019 .name = "gp3_clk_src", 2020 .parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk, 2021 .num_parents = 5, 2022 .ops = &clk_rcg2_ops, 2023 }, 2024 }; 2025 2026 static struct clk_branch gcc_blsp1_ahb_clk = { 2027 .halt_reg = 0x01008, 2028 .clkr = { 2029 .enable_reg = 0x01008, 2030 .enable_mask = BIT(0), 2031 .hw.init = &(struct clk_init_data){ 2032 .name = "gcc_blsp1_ahb_clk", 2033 .parent_names = (const char *[]){ 2034 "pcnoc_clk_src" 2035 }, 2036 .num_parents = 1, 2037 .flags = CLK_SET_RATE_PARENT, 2038 .ops = &clk_branch2_ops, 2039 }, 2040 }, 2041 }; 2042 2043 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = { 2044 .halt_reg = 0x02008, 2045 .clkr = { 2046 .enable_reg = 0x02008, 2047 .enable_mask = BIT(0), 2048 .hw.init = &(struct clk_init_data){ 2049 .name = "gcc_blsp1_qup1_i2c_apps_clk", 2050 .parent_names = (const char *[]){ 2051 "blsp1_qup1_i2c_apps_clk_src" 2052 }, 2053 .num_parents = 1, 2054 .flags = CLK_SET_RATE_PARENT, 2055 .ops = &clk_branch2_ops, 2056 }, 2057 }, 2058 }; 2059 2060 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = { 2061 .halt_reg = 0x02004, 2062 .clkr = { 2063 .enable_reg = 0x02004, 2064 .enable_mask = BIT(0), 2065 .hw.init = &(struct clk_init_data){ 2066 .name = "gcc_blsp1_qup1_spi_apps_clk", 2067 .parent_names = (const char *[]){ 2068 "blsp1_qup1_spi_apps_clk_src" 2069 }, 2070 .num_parents = 1, 2071 .flags = CLK_SET_RATE_PARENT, 2072 .ops = &clk_branch2_ops, 2073 }, 2074 }, 2075 }; 2076 2077 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = { 2078 .halt_reg = 0x03010, 2079 .clkr = { 2080 .enable_reg = 0x03010, 2081 .enable_mask = BIT(0), 2082 .hw.init = &(struct clk_init_data){ 2083 .name = "gcc_blsp1_qup2_i2c_apps_clk", 2084 .parent_names = (const char *[]){ 2085 "blsp1_qup2_i2c_apps_clk_src" 2086 }, 2087 .num_parents = 1, 2088 .flags = CLK_SET_RATE_PARENT, 2089 .ops = &clk_branch2_ops, 2090 }, 2091 }, 2092 }; 2093 2094 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = { 2095 .halt_reg = 0x0300c, 2096 .clkr = { 2097 .enable_reg = 0x0300c, 2098 .enable_mask = BIT(0), 2099 .hw.init = &(struct clk_init_data){ 2100 .name = "gcc_blsp1_qup2_spi_apps_clk", 2101 .parent_names = (const char *[]){ 2102 "blsp1_qup2_spi_apps_clk_src" 2103 }, 2104 .num_parents = 1, 2105 .flags = CLK_SET_RATE_PARENT, 2106 .ops = &clk_branch2_ops, 2107 }, 2108 }, 2109 }; 2110 2111 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = { 2112 .halt_reg = 0x04010, 2113 .clkr = { 2114 .enable_reg = 0x04010, 2115 .enable_mask = BIT(0), 2116 .hw.init = &(struct clk_init_data){ 2117 .name = "gcc_blsp1_qup3_i2c_apps_clk", 2118 .parent_names = (const char *[]){ 2119 "blsp1_qup3_i2c_apps_clk_src" 2120 }, 2121 .num_parents = 1, 2122 .flags = CLK_SET_RATE_PARENT, 2123 .ops = &clk_branch2_ops, 2124 }, 2125 }, 2126 }; 2127 2128 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = { 2129 .halt_reg = 0x0400c, 2130 .clkr = { 2131 .enable_reg = 0x0400c, 2132 .enable_mask = BIT(0), 2133 .hw.init = &(struct clk_init_data){ 2134 .name = "gcc_blsp1_qup3_spi_apps_clk", 2135 .parent_names = (const char *[]){ 2136 "blsp1_qup3_spi_apps_clk_src" 2137 }, 2138 .num_parents = 1, 2139 .flags = CLK_SET_RATE_PARENT, 2140 .ops = &clk_branch2_ops, 2141 }, 2142 }, 2143 }; 2144 2145 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = { 2146 .halt_reg = 0x05010, 2147 .clkr = { 2148 .enable_reg = 0x05010, 2149 .enable_mask = BIT(0), 2150 .hw.init = &(struct clk_init_data){ 2151 .name = "gcc_blsp1_qup4_i2c_apps_clk", 2152 .parent_names = (const char *[]){ 2153 "blsp1_qup4_i2c_apps_clk_src" 2154 }, 2155 .num_parents = 1, 2156 .flags = CLK_SET_RATE_PARENT, 2157 .ops = &clk_branch2_ops, 2158 }, 2159 }, 2160 }; 2161 2162 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = { 2163 .halt_reg = 0x0500c, 2164 .clkr = { 2165 .enable_reg = 0x0500c, 2166 .enable_mask = BIT(0), 2167 .hw.init = &(struct clk_init_data){ 2168 .name = "gcc_blsp1_qup4_spi_apps_clk", 2169 .parent_names = (const char *[]){ 2170 "blsp1_qup4_spi_apps_clk_src" 2171 }, 2172 .num_parents = 1, 2173 .flags = CLK_SET_RATE_PARENT, 2174 .ops = &clk_branch2_ops, 2175 }, 2176 }, 2177 }; 2178 2179 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = { 2180 .halt_reg = 0x06010, 2181 .clkr = { 2182 .enable_reg = 0x06010, 2183 .enable_mask = BIT(0), 2184 .hw.init = &(struct clk_init_data){ 2185 .name = "gcc_blsp1_qup5_i2c_apps_clk", 2186 .parent_names = (const char *[]){ 2187 "blsp1_qup5_i2c_apps_clk_src" 2188 }, 2189 .num_parents = 1, 2190 .flags = CLK_SET_RATE_PARENT, 2191 .ops = &clk_branch2_ops, 2192 }, 2193 }, 2194 }; 2195 2196 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = { 2197 .halt_reg = 0x0600c, 2198 .clkr = { 2199 .enable_reg = 0x0600c, 2200 .enable_mask = BIT(0), 2201 .hw.init = &(struct clk_init_data){ 2202 .name = "gcc_blsp1_qup5_spi_apps_clk", 2203 .parent_names = (const char *[]){ 2204 "blsp1_qup5_spi_apps_clk_src" 2205 }, 2206 .num_parents = 1, 2207 .flags = CLK_SET_RATE_PARENT, 2208 .ops = &clk_branch2_ops, 2209 }, 2210 }, 2211 }; 2212 2213 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = { 2214 .halt_reg = 0x07010, 2215 .clkr = { 2216 .enable_reg = 0x07010, 2217 .enable_mask = BIT(0), 2218 .hw.init = &(struct clk_init_data){ 2219 .name = "gcc_blsp1_qup6_i2c_apps_clk", 2220 .parent_names = (const char *[]){ 2221 "blsp1_qup6_i2c_apps_clk_src" 2222 }, 2223 .num_parents = 1, 2224 .flags = CLK_SET_RATE_PARENT, 2225 .ops = &clk_branch2_ops, 2226 }, 2227 }, 2228 }; 2229 2230 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = { 2231 .halt_reg = 0x0700c, 2232 .clkr = { 2233 .enable_reg = 0x0700c, 2234 .enable_mask = BIT(0), 2235 .hw.init = &(struct clk_init_data){ 2236 .name = "gcc_blsp1_qup6_spi_apps_clk", 2237 .parent_names = (const char *[]){ 2238 "blsp1_qup6_spi_apps_clk_src" 2239 }, 2240 .num_parents = 1, 2241 .flags = CLK_SET_RATE_PARENT, 2242 .ops = &clk_branch2_ops, 2243 }, 2244 }, 2245 }; 2246 2247 static struct clk_branch gcc_blsp1_uart1_apps_clk = { 2248 .halt_reg = 0x0203c, 2249 .clkr = { 2250 .enable_reg = 0x0203c, 2251 .enable_mask = BIT(0), 2252 .hw.init = &(struct clk_init_data){ 2253 .name = "gcc_blsp1_uart1_apps_clk", 2254 .parent_names = (const char *[]){ 2255 "blsp1_uart1_apps_clk_src" 2256 }, 2257 .num_parents = 1, 2258 .flags = CLK_SET_RATE_PARENT, 2259 .ops = &clk_branch2_ops, 2260 }, 2261 }, 2262 }; 2263 2264 static struct clk_branch gcc_blsp1_uart2_apps_clk = { 2265 .halt_reg = 0x0302c, 2266 .clkr = { 2267 .enable_reg = 0x0302c, 2268 .enable_mask = BIT(0), 2269 .hw.init = &(struct clk_init_data){ 2270 .name = "gcc_blsp1_uart2_apps_clk", 2271 .parent_names = (const char *[]){ 2272 "blsp1_uart2_apps_clk_src" 2273 }, 2274 .num_parents = 1, 2275 .flags = CLK_SET_RATE_PARENT, 2276 .ops = &clk_branch2_ops, 2277 }, 2278 }, 2279 }; 2280 2281 static struct clk_branch gcc_blsp1_uart3_apps_clk = { 2282 .halt_reg = 0x0402c, 2283 .clkr = { 2284 .enable_reg = 0x0402c, 2285 .enable_mask = BIT(0), 2286 .hw.init = &(struct clk_init_data){ 2287 .name = "gcc_blsp1_uart3_apps_clk", 2288 .parent_names = (const char *[]){ 2289 "blsp1_uart3_apps_clk_src" 2290 }, 2291 .num_parents = 1, 2292 .flags = CLK_SET_RATE_PARENT, 2293 .ops = &clk_branch2_ops, 2294 }, 2295 }, 2296 }; 2297 2298 static struct clk_branch gcc_blsp1_uart4_apps_clk = { 2299 .halt_reg = 0x0502c, 2300 .clkr = { 2301 .enable_reg = 0x0502c, 2302 .enable_mask = BIT(0), 2303 .hw.init = &(struct clk_init_data){ 2304 .name = "gcc_blsp1_uart4_apps_clk", 2305 .parent_names = (const char *[]){ 2306 "blsp1_uart4_apps_clk_src" 2307 }, 2308 .num_parents = 1, 2309 .flags = CLK_SET_RATE_PARENT, 2310 .ops = &clk_branch2_ops, 2311 }, 2312 }, 2313 }; 2314 2315 static struct clk_branch gcc_blsp1_uart5_apps_clk = { 2316 .halt_reg = 0x0602c, 2317 .clkr = { 2318 .enable_reg = 0x0602c, 2319 .enable_mask = BIT(0), 2320 .hw.init = &(struct clk_init_data){ 2321 .name = "gcc_blsp1_uart5_apps_clk", 2322 .parent_names = (const char *[]){ 2323 "blsp1_uart5_apps_clk_src" 2324 }, 2325 .num_parents = 1, 2326 .flags = CLK_SET_RATE_PARENT, 2327 .ops = &clk_branch2_ops, 2328 }, 2329 }, 2330 }; 2331 2332 static struct clk_branch gcc_blsp1_uart6_apps_clk = { 2333 .halt_reg = 0x0702c, 2334 .clkr = { 2335 .enable_reg = 0x0702c, 2336 .enable_mask = BIT(0), 2337 .hw.init = &(struct clk_init_data){ 2338 .name = "gcc_blsp1_uart6_apps_clk", 2339 .parent_names = (const char *[]){ 2340 "blsp1_uart6_apps_clk_src" 2341 }, 2342 .num_parents = 1, 2343 .flags = CLK_SET_RATE_PARENT, 2344 .ops = &clk_branch2_ops, 2345 }, 2346 }, 2347 }; 2348 2349 static struct clk_branch gcc_prng_ahb_clk = { 2350 .halt_reg = 0x13004, 2351 .halt_check = BRANCH_HALT_VOTED, 2352 .clkr = { 2353 .enable_reg = 0x0b004, 2354 .enable_mask = BIT(8), 2355 .hw.init = &(struct clk_init_data){ 2356 .name = "gcc_prng_ahb_clk", 2357 .parent_names = (const char *[]){ 2358 "pcnoc_clk_src" 2359 }, 2360 .num_parents = 1, 2361 .flags = CLK_SET_RATE_PARENT, 2362 .ops = &clk_branch2_ops, 2363 }, 2364 }, 2365 }; 2366 2367 static struct clk_branch gcc_qpic_ahb_clk = { 2368 .halt_reg = 0x57024, 2369 .clkr = { 2370 .enable_reg = 0x57024, 2371 .enable_mask = BIT(0), 2372 .hw.init = &(struct clk_init_data){ 2373 .name = "gcc_qpic_ahb_clk", 2374 .parent_names = (const char *[]){ 2375 "pcnoc_clk_src" 2376 }, 2377 .num_parents = 1, 2378 .flags = CLK_SET_RATE_PARENT, 2379 .ops = &clk_branch2_ops, 2380 }, 2381 }, 2382 }; 2383 2384 static struct clk_branch gcc_qpic_clk = { 2385 .halt_reg = 0x57020, 2386 .clkr = { 2387 .enable_reg = 0x57020, 2388 .enable_mask = BIT(0), 2389 .hw.init = &(struct clk_init_data){ 2390 .name = "gcc_qpic_clk", 2391 .parent_names = (const char *[]){ 2392 "pcnoc_clk_src" 2393 }, 2394 .num_parents = 1, 2395 .flags = CLK_SET_RATE_PARENT, 2396 .ops = &clk_branch2_ops, 2397 }, 2398 }, 2399 }; 2400 2401 static struct clk_branch gcc_pcie0_ahb_clk = { 2402 .halt_reg = 0x75010, 2403 .clkr = { 2404 .enable_reg = 0x75010, 2405 .enable_mask = BIT(0), 2406 .hw.init = &(struct clk_init_data){ 2407 .name = "gcc_pcie0_ahb_clk", 2408 .parent_names = (const char *[]){ 2409 "pcnoc_clk_src" 2410 }, 2411 .num_parents = 1, 2412 .flags = CLK_SET_RATE_PARENT, 2413 .ops = &clk_branch2_ops, 2414 }, 2415 }, 2416 }; 2417 2418 static struct clk_branch gcc_pcie0_aux_clk = { 2419 .halt_reg = 0x75014, 2420 .clkr = { 2421 .enable_reg = 0x75014, 2422 .enable_mask = BIT(0), 2423 .hw.init = &(struct clk_init_data){ 2424 .name = "gcc_pcie0_aux_clk", 2425 .parent_names = (const char *[]){ 2426 "pcie0_aux_clk_src" 2427 }, 2428 .num_parents = 1, 2429 .flags = CLK_SET_RATE_PARENT, 2430 .ops = &clk_branch2_ops, 2431 }, 2432 }, 2433 }; 2434 2435 static struct clk_branch gcc_pcie0_axi_m_clk = { 2436 .halt_reg = 0x75008, 2437 .clkr = { 2438 .enable_reg = 0x75008, 2439 .enable_mask = BIT(0), 2440 .hw.init = &(struct clk_init_data){ 2441 .name = "gcc_pcie0_axi_m_clk", 2442 .parent_names = (const char *[]){ 2443 "pcie0_axi_clk_src" 2444 }, 2445 .num_parents = 1, 2446 .flags = CLK_SET_RATE_PARENT, 2447 .ops = &clk_branch2_ops, 2448 }, 2449 }, 2450 }; 2451 2452 static struct clk_branch gcc_pcie0_axi_s_clk = { 2453 .halt_reg = 0x7500c, 2454 .clkr = { 2455 .enable_reg = 0x7500c, 2456 .enable_mask = BIT(0), 2457 .hw.init = &(struct clk_init_data){ 2458 .name = "gcc_pcie0_axi_s_clk", 2459 .parent_names = (const char *[]){ 2460 "pcie0_axi_clk_src" 2461 }, 2462 .num_parents = 1, 2463 .flags = CLK_SET_RATE_PARENT, 2464 .ops = &clk_branch2_ops, 2465 }, 2466 }, 2467 }; 2468 2469 static struct clk_branch gcc_pcie0_pipe_clk = { 2470 .halt_reg = 0x75018, 2471 .halt_check = BRANCH_HALT_DELAY, 2472 .clkr = { 2473 .enable_reg = 0x75018, 2474 .enable_mask = BIT(0), 2475 .hw.init = &(struct clk_init_data){ 2476 .name = "gcc_pcie0_pipe_clk", 2477 .parent_names = (const char *[]){ 2478 "pcie0_pipe_clk_src" 2479 }, 2480 .num_parents = 1, 2481 .flags = CLK_SET_RATE_PARENT, 2482 .ops = &clk_branch2_ops, 2483 }, 2484 }, 2485 }; 2486 2487 static struct clk_branch gcc_sys_noc_pcie0_axi_clk = { 2488 .halt_reg = 0x26048, 2489 .clkr = { 2490 .enable_reg = 0x26048, 2491 .enable_mask = BIT(0), 2492 .hw.init = &(struct clk_init_data){ 2493 .name = "gcc_sys_noc_pcie0_axi_clk", 2494 .parent_names = (const char *[]){ 2495 "pcie0_axi_clk_src" 2496 }, 2497 .num_parents = 1, 2498 .flags = CLK_SET_RATE_PARENT, 2499 .ops = &clk_branch2_ops, 2500 }, 2501 }, 2502 }; 2503 2504 static struct clk_branch gcc_pcie1_ahb_clk = { 2505 .halt_reg = 0x76010, 2506 .clkr = { 2507 .enable_reg = 0x76010, 2508 .enable_mask = BIT(0), 2509 .hw.init = &(struct clk_init_data){ 2510 .name = "gcc_pcie1_ahb_clk", 2511 .parent_names = (const char *[]){ 2512 "pcnoc_clk_src" 2513 }, 2514 .num_parents = 1, 2515 .flags = CLK_SET_RATE_PARENT, 2516 .ops = &clk_branch2_ops, 2517 }, 2518 }, 2519 }; 2520 2521 static struct clk_branch gcc_pcie1_aux_clk = { 2522 .halt_reg = 0x76014, 2523 .clkr = { 2524 .enable_reg = 0x76014, 2525 .enable_mask = BIT(0), 2526 .hw.init = &(struct clk_init_data){ 2527 .name = "gcc_pcie1_aux_clk", 2528 .parent_names = (const char *[]){ 2529 "pcie1_aux_clk_src" 2530 }, 2531 .num_parents = 1, 2532 .flags = CLK_SET_RATE_PARENT, 2533 .ops = &clk_branch2_ops, 2534 }, 2535 }, 2536 }; 2537 2538 static struct clk_branch gcc_pcie1_axi_m_clk = { 2539 .halt_reg = 0x76008, 2540 .clkr = { 2541 .enable_reg = 0x76008, 2542 .enable_mask = BIT(0), 2543 .hw.init = &(struct clk_init_data){ 2544 .name = "gcc_pcie1_axi_m_clk", 2545 .parent_names = (const char *[]){ 2546 "pcie1_axi_clk_src" 2547 }, 2548 .num_parents = 1, 2549 .flags = CLK_SET_RATE_PARENT, 2550 .ops = &clk_branch2_ops, 2551 }, 2552 }, 2553 }; 2554 2555 static struct clk_branch gcc_pcie1_axi_s_clk = { 2556 .halt_reg = 0x7600c, 2557 .clkr = { 2558 .enable_reg = 0x7600c, 2559 .enable_mask = BIT(0), 2560 .hw.init = &(struct clk_init_data){ 2561 .name = "gcc_pcie1_axi_s_clk", 2562 .parent_names = (const char *[]){ 2563 "pcie1_axi_clk_src" 2564 }, 2565 .num_parents = 1, 2566 .flags = CLK_SET_RATE_PARENT, 2567 .ops = &clk_branch2_ops, 2568 }, 2569 }, 2570 }; 2571 2572 static struct clk_branch gcc_pcie1_pipe_clk = { 2573 .halt_reg = 0x76018, 2574 .halt_check = BRANCH_HALT_DELAY, 2575 .clkr = { 2576 .enable_reg = 0x76018, 2577 .enable_mask = BIT(0), 2578 .hw.init = &(struct clk_init_data){ 2579 .name = "gcc_pcie1_pipe_clk", 2580 .parent_names = (const char *[]){ 2581 "pcie1_pipe_clk_src" 2582 }, 2583 .num_parents = 1, 2584 .flags = CLK_SET_RATE_PARENT, 2585 .ops = &clk_branch2_ops, 2586 }, 2587 }, 2588 }; 2589 2590 static struct clk_branch gcc_sys_noc_pcie1_axi_clk = { 2591 .halt_reg = 0x2604c, 2592 .clkr = { 2593 .enable_reg = 0x2604c, 2594 .enable_mask = BIT(0), 2595 .hw.init = &(struct clk_init_data){ 2596 .name = "gcc_sys_noc_pcie1_axi_clk", 2597 .parent_names = (const char *[]){ 2598 "pcie1_axi_clk_src" 2599 }, 2600 .num_parents = 1, 2601 .flags = CLK_SET_RATE_PARENT, 2602 .ops = &clk_branch2_ops, 2603 }, 2604 }, 2605 }; 2606 2607 static struct clk_branch gcc_usb0_aux_clk = { 2608 .halt_reg = 0x3e044, 2609 .clkr = { 2610 .enable_reg = 0x3e044, 2611 .enable_mask = BIT(0), 2612 .hw.init = &(struct clk_init_data){ 2613 .name = "gcc_usb0_aux_clk", 2614 .parent_names = (const char *[]){ 2615 "usb0_aux_clk_src" 2616 }, 2617 .num_parents = 1, 2618 .flags = CLK_SET_RATE_PARENT, 2619 .ops = &clk_branch2_ops, 2620 }, 2621 }, 2622 }; 2623 2624 static struct clk_branch gcc_sys_noc_usb0_axi_clk = { 2625 .halt_reg = 0x26040, 2626 .clkr = { 2627 .enable_reg = 0x26040, 2628 .enable_mask = BIT(0), 2629 .hw.init = &(struct clk_init_data){ 2630 .name = "gcc_sys_noc_usb0_axi_clk", 2631 .parent_names = (const char *[]){ 2632 "usb0_master_clk_src" 2633 }, 2634 .num_parents = 1, 2635 .flags = CLK_SET_RATE_PARENT, 2636 .ops = &clk_branch2_ops, 2637 }, 2638 }, 2639 }; 2640 2641 static struct clk_branch gcc_usb0_master_clk = { 2642 .halt_reg = 0x3e000, 2643 .clkr = { 2644 .enable_reg = 0x3e000, 2645 .enable_mask = BIT(0), 2646 .hw.init = &(struct clk_init_data){ 2647 .name = "gcc_usb0_master_clk", 2648 .parent_names = (const char *[]){ 2649 "usb0_master_clk_src" 2650 }, 2651 .num_parents = 1, 2652 .flags = CLK_SET_RATE_PARENT, 2653 .ops = &clk_branch2_ops, 2654 }, 2655 }, 2656 }; 2657 2658 static struct clk_branch gcc_usb0_mock_utmi_clk = { 2659 .halt_reg = 0x3e008, 2660 .clkr = { 2661 .enable_reg = 0x3e008, 2662 .enable_mask = BIT(0), 2663 .hw.init = &(struct clk_init_data){ 2664 .name = "gcc_usb0_mock_utmi_clk", 2665 .parent_names = (const char *[]){ 2666 "usb0_mock_utmi_clk_src" 2667 }, 2668 .num_parents = 1, 2669 .flags = CLK_SET_RATE_PARENT, 2670 .ops = &clk_branch2_ops, 2671 }, 2672 }, 2673 }; 2674 2675 static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = { 2676 .halt_reg = 0x3e080, 2677 .clkr = { 2678 .enable_reg = 0x3e080, 2679 .enable_mask = BIT(0), 2680 .hw.init = &(struct clk_init_data){ 2681 .name = "gcc_usb0_phy_cfg_ahb_clk", 2682 .parent_names = (const char *[]){ 2683 "pcnoc_clk_src" 2684 }, 2685 .num_parents = 1, 2686 .flags = CLK_SET_RATE_PARENT, 2687 .ops = &clk_branch2_ops, 2688 }, 2689 }, 2690 }; 2691 2692 static struct clk_branch gcc_usb0_pipe_clk = { 2693 .halt_reg = 0x3e040, 2694 .halt_check = BRANCH_HALT_DELAY, 2695 .clkr = { 2696 .enable_reg = 0x3e040, 2697 .enable_mask = BIT(0), 2698 .hw.init = &(struct clk_init_data){ 2699 .name = "gcc_usb0_pipe_clk", 2700 .parent_names = (const char *[]){ 2701 "usb0_pipe_clk_src" 2702 }, 2703 .num_parents = 1, 2704 .flags = CLK_SET_RATE_PARENT, 2705 .ops = &clk_branch2_ops, 2706 }, 2707 }, 2708 }; 2709 2710 static struct clk_branch gcc_usb0_sleep_clk = { 2711 .halt_reg = 0x3e004, 2712 .clkr = { 2713 .enable_reg = 0x3e004, 2714 .enable_mask = BIT(0), 2715 .hw.init = &(struct clk_init_data){ 2716 .name = "gcc_usb0_sleep_clk", 2717 .parent_names = (const char *[]){ 2718 "gcc_sleep_clk_src" 2719 }, 2720 .num_parents = 1, 2721 .flags = CLK_SET_RATE_PARENT, 2722 .ops = &clk_branch2_ops, 2723 }, 2724 }, 2725 }; 2726 2727 static struct clk_branch gcc_usb1_aux_clk = { 2728 .halt_reg = 0x3f044, 2729 .clkr = { 2730 .enable_reg = 0x3f044, 2731 .enable_mask = BIT(0), 2732 .hw.init = &(struct clk_init_data){ 2733 .name = "gcc_usb1_aux_clk", 2734 .parent_names = (const char *[]){ 2735 "usb1_aux_clk_src" 2736 }, 2737 .num_parents = 1, 2738 .flags = CLK_SET_RATE_PARENT, 2739 .ops = &clk_branch2_ops, 2740 }, 2741 }, 2742 }; 2743 2744 static struct clk_branch gcc_sys_noc_usb1_axi_clk = { 2745 .halt_reg = 0x26044, 2746 .clkr = { 2747 .enable_reg = 0x26044, 2748 .enable_mask = BIT(0), 2749 .hw.init = &(struct clk_init_data){ 2750 .name = "gcc_sys_noc_usb1_axi_clk", 2751 .parent_names = (const char *[]){ 2752 "usb1_master_clk_src" 2753 }, 2754 .num_parents = 1, 2755 .flags = CLK_SET_RATE_PARENT, 2756 .ops = &clk_branch2_ops, 2757 }, 2758 }, 2759 }; 2760 2761 static struct clk_branch gcc_usb1_master_clk = { 2762 .halt_reg = 0x3f000, 2763 .clkr = { 2764 .enable_reg = 0x3f000, 2765 .enable_mask = BIT(0), 2766 .hw.init = &(struct clk_init_data){ 2767 .name = "gcc_usb1_master_clk", 2768 .parent_names = (const char *[]){ 2769 "usb1_master_clk_src" 2770 }, 2771 .num_parents = 1, 2772 .flags = CLK_SET_RATE_PARENT, 2773 .ops = &clk_branch2_ops, 2774 }, 2775 }, 2776 }; 2777 2778 static struct clk_branch gcc_usb1_mock_utmi_clk = { 2779 .halt_reg = 0x3f008, 2780 .clkr = { 2781 .enable_reg = 0x3f008, 2782 .enable_mask = BIT(0), 2783 .hw.init = &(struct clk_init_data){ 2784 .name = "gcc_usb1_mock_utmi_clk", 2785 .parent_names = (const char *[]){ 2786 "usb1_mock_utmi_clk_src" 2787 }, 2788 .num_parents = 1, 2789 .flags = CLK_SET_RATE_PARENT, 2790 .ops = &clk_branch2_ops, 2791 }, 2792 }, 2793 }; 2794 2795 static struct clk_branch gcc_usb1_phy_cfg_ahb_clk = { 2796 .halt_reg = 0x3f080, 2797 .clkr = { 2798 .enable_reg = 0x3f080, 2799 .enable_mask = BIT(0), 2800 .hw.init = &(struct clk_init_data){ 2801 .name = "gcc_usb1_phy_cfg_ahb_clk", 2802 .parent_names = (const char *[]){ 2803 "pcnoc_clk_src" 2804 }, 2805 .num_parents = 1, 2806 .flags = CLK_SET_RATE_PARENT, 2807 .ops = &clk_branch2_ops, 2808 }, 2809 }, 2810 }; 2811 2812 static struct clk_branch gcc_usb1_pipe_clk = { 2813 .halt_reg = 0x3f040, 2814 .halt_check = BRANCH_HALT_DELAY, 2815 .clkr = { 2816 .enable_reg = 0x3f040, 2817 .enable_mask = BIT(0), 2818 .hw.init = &(struct clk_init_data){ 2819 .name = "gcc_usb1_pipe_clk", 2820 .parent_names = (const char *[]){ 2821 "usb1_pipe_clk_src" 2822 }, 2823 .num_parents = 1, 2824 .flags = CLK_SET_RATE_PARENT, 2825 .ops = &clk_branch2_ops, 2826 }, 2827 }, 2828 }; 2829 2830 static struct clk_branch gcc_usb1_sleep_clk = { 2831 .halt_reg = 0x3f004, 2832 .clkr = { 2833 .enable_reg = 0x3f004, 2834 .enable_mask = BIT(0), 2835 .hw.init = &(struct clk_init_data){ 2836 .name = "gcc_usb1_sleep_clk", 2837 .parent_names = (const char *[]){ 2838 "gcc_sleep_clk_src" 2839 }, 2840 .num_parents = 1, 2841 .flags = CLK_SET_RATE_PARENT, 2842 .ops = &clk_branch2_ops, 2843 }, 2844 }, 2845 }; 2846 2847 static struct clk_branch gcc_sdcc1_ahb_clk = { 2848 .halt_reg = 0x4201c, 2849 .clkr = { 2850 .enable_reg = 0x4201c, 2851 .enable_mask = BIT(0), 2852 .hw.init = &(struct clk_init_data){ 2853 .name = "gcc_sdcc1_ahb_clk", 2854 .parent_names = (const char *[]){ 2855 "pcnoc_clk_src" 2856 }, 2857 .num_parents = 1, 2858 .flags = CLK_SET_RATE_PARENT, 2859 .ops = &clk_branch2_ops, 2860 }, 2861 }, 2862 }; 2863 2864 static struct clk_branch gcc_sdcc1_apps_clk = { 2865 .halt_reg = 0x42018, 2866 .clkr = { 2867 .enable_reg = 0x42018, 2868 .enable_mask = BIT(0), 2869 .hw.init = &(struct clk_init_data){ 2870 .name = "gcc_sdcc1_apps_clk", 2871 .parent_names = (const char *[]){ 2872 "sdcc1_apps_clk_src" 2873 }, 2874 .num_parents = 1, 2875 .flags = CLK_SET_RATE_PARENT, 2876 .ops = &clk_branch2_ops, 2877 }, 2878 }, 2879 }; 2880 2881 static struct clk_branch gcc_sdcc1_ice_core_clk = { 2882 .halt_reg = 0x5d014, 2883 .clkr = { 2884 .enable_reg = 0x5d014, 2885 .enable_mask = BIT(0), 2886 .hw.init = &(struct clk_init_data){ 2887 .name = "gcc_sdcc1_ice_core_clk", 2888 .parent_names = (const char *[]){ 2889 "sdcc1_ice_core_clk_src" 2890 }, 2891 .num_parents = 1, 2892 .flags = CLK_SET_RATE_PARENT, 2893 .ops = &clk_branch2_ops, 2894 }, 2895 }, 2896 }; 2897 2898 static struct clk_branch gcc_sdcc2_ahb_clk = { 2899 .halt_reg = 0x4301c, 2900 .clkr = { 2901 .enable_reg = 0x4301c, 2902 .enable_mask = BIT(0), 2903 .hw.init = &(struct clk_init_data){ 2904 .name = "gcc_sdcc2_ahb_clk", 2905 .parent_names = (const char *[]){ 2906 "pcnoc_clk_src" 2907 }, 2908 .num_parents = 1, 2909 .flags = CLK_SET_RATE_PARENT, 2910 .ops = &clk_branch2_ops, 2911 }, 2912 }, 2913 }; 2914 2915 static struct clk_branch gcc_sdcc2_apps_clk = { 2916 .halt_reg = 0x43018, 2917 .clkr = { 2918 .enable_reg = 0x43018, 2919 .enable_mask = BIT(0), 2920 .hw.init = &(struct clk_init_data){ 2921 .name = "gcc_sdcc2_apps_clk", 2922 .parent_names = (const char *[]){ 2923 "sdcc2_apps_clk_src" 2924 }, 2925 .num_parents = 1, 2926 .flags = CLK_SET_RATE_PARENT, 2927 .ops = &clk_branch2_ops, 2928 }, 2929 }, 2930 }; 2931 2932 static struct clk_branch gcc_mem_noc_nss_axi_clk = { 2933 .halt_reg = 0x1d03c, 2934 .clkr = { 2935 .enable_reg = 0x1d03c, 2936 .enable_mask = BIT(0), 2937 .hw.init = &(struct clk_init_data){ 2938 .name = "gcc_mem_noc_nss_axi_clk", 2939 .parent_names = (const char *[]){ 2940 "nss_noc_clk_src" 2941 }, 2942 .num_parents = 1, 2943 .flags = CLK_SET_RATE_PARENT, 2944 .ops = &clk_branch2_ops, 2945 }, 2946 }, 2947 }; 2948 2949 static struct clk_branch gcc_nss_ce_apb_clk = { 2950 .halt_reg = 0x68174, 2951 .clkr = { 2952 .enable_reg = 0x68174, 2953 .enable_mask = BIT(0), 2954 .hw.init = &(struct clk_init_data){ 2955 .name = "gcc_nss_ce_apb_clk", 2956 .parent_names = (const char *[]){ 2957 "nss_ce_clk_src" 2958 }, 2959 .num_parents = 1, 2960 .flags = CLK_SET_RATE_PARENT, 2961 .ops = &clk_branch2_ops, 2962 }, 2963 }, 2964 }; 2965 2966 static struct clk_branch gcc_nss_ce_axi_clk = { 2967 .halt_reg = 0x68170, 2968 .clkr = { 2969 .enable_reg = 0x68170, 2970 .enable_mask = BIT(0), 2971 .hw.init = &(struct clk_init_data){ 2972 .name = "gcc_nss_ce_axi_clk", 2973 .parent_names = (const char *[]){ 2974 "nss_ce_clk_src" 2975 }, 2976 .num_parents = 1, 2977 .flags = CLK_SET_RATE_PARENT, 2978 .ops = &clk_branch2_ops, 2979 }, 2980 }, 2981 }; 2982 2983 static struct clk_branch gcc_nss_cfg_clk = { 2984 .halt_reg = 0x68160, 2985 .clkr = { 2986 .enable_reg = 0x68160, 2987 .enable_mask = BIT(0), 2988 .hw.init = &(struct clk_init_data){ 2989 .name = "gcc_nss_cfg_clk", 2990 .parent_names = (const char *[]){ 2991 "pcnoc_clk_src" 2992 }, 2993 .num_parents = 1, 2994 .flags = CLK_SET_RATE_PARENT, 2995 .ops = &clk_branch2_ops, 2996 }, 2997 }, 2998 }; 2999 3000 static struct clk_branch gcc_nss_crypto_clk = { 3001 .halt_reg = 0x68164, 3002 .clkr = { 3003 .enable_reg = 0x68164, 3004 .enable_mask = BIT(0), 3005 .hw.init = &(struct clk_init_data){ 3006 .name = "gcc_nss_crypto_clk", 3007 .parent_names = (const char *[]){ 3008 "nss_crypto_clk_src" 3009 }, 3010 .num_parents = 1, 3011 .flags = CLK_SET_RATE_PARENT, 3012 .ops = &clk_branch2_ops, 3013 }, 3014 }, 3015 }; 3016 3017 static struct clk_branch gcc_nss_csr_clk = { 3018 .halt_reg = 0x68318, 3019 .clkr = { 3020 .enable_reg = 0x68318, 3021 .enable_mask = BIT(0), 3022 .hw.init = &(struct clk_init_data){ 3023 .name = "gcc_nss_csr_clk", 3024 .parent_names = (const char *[]){ 3025 "nss_ce_clk_src" 3026 }, 3027 .num_parents = 1, 3028 .flags = CLK_SET_RATE_PARENT, 3029 .ops = &clk_branch2_ops, 3030 }, 3031 }, 3032 }; 3033 3034 static struct clk_branch gcc_nss_edma_cfg_clk = { 3035 .halt_reg = 0x6819c, 3036 .clkr = { 3037 .enable_reg = 0x6819c, 3038 .enable_mask = BIT(0), 3039 .hw.init = &(struct clk_init_data){ 3040 .name = "gcc_nss_edma_cfg_clk", 3041 .parent_names = (const char *[]){ 3042 "nss_ppe_clk_src" 3043 }, 3044 .num_parents = 1, 3045 .flags = CLK_SET_RATE_PARENT, 3046 .ops = &clk_branch2_ops, 3047 }, 3048 }, 3049 }; 3050 3051 static struct clk_branch gcc_nss_edma_clk = { 3052 .halt_reg = 0x68198, 3053 .clkr = { 3054 .enable_reg = 0x68198, 3055 .enable_mask = BIT(0), 3056 .hw.init = &(struct clk_init_data){ 3057 .name = "gcc_nss_edma_clk", 3058 .parent_names = (const char *[]){ 3059 "nss_ppe_clk_src" 3060 }, 3061 .num_parents = 1, 3062 .flags = CLK_SET_RATE_PARENT, 3063 .ops = &clk_branch2_ops, 3064 }, 3065 }, 3066 }; 3067 3068 static struct clk_branch gcc_nss_imem_clk = { 3069 .halt_reg = 0x68178, 3070 .clkr = { 3071 .enable_reg = 0x68178, 3072 .enable_mask = BIT(0), 3073 .hw.init = &(struct clk_init_data){ 3074 .name = "gcc_nss_imem_clk", 3075 .parent_names = (const char *[]){ 3076 "nss_imem_clk_src" 3077 }, 3078 .num_parents = 1, 3079 .flags = CLK_SET_RATE_PARENT, 3080 .ops = &clk_branch2_ops, 3081 }, 3082 }, 3083 }; 3084 3085 static struct clk_branch gcc_nss_noc_clk = { 3086 .halt_reg = 0x68168, 3087 .clkr = { 3088 .enable_reg = 0x68168, 3089 .enable_mask = BIT(0), 3090 .hw.init = &(struct clk_init_data){ 3091 .name = "gcc_nss_noc_clk", 3092 .parent_names = (const char *[]){ 3093 "nss_noc_clk_src" 3094 }, 3095 .num_parents = 1, 3096 .flags = CLK_SET_RATE_PARENT, 3097 .ops = &clk_branch2_ops, 3098 }, 3099 }, 3100 }; 3101 3102 static struct clk_branch gcc_nss_ppe_btq_clk = { 3103 .halt_reg = 0x6833c, 3104 .clkr = { 3105 .enable_reg = 0x6833c, 3106 .enable_mask = BIT(0), 3107 .hw.init = &(struct clk_init_data){ 3108 .name = "gcc_nss_ppe_btq_clk", 3109 .parent_names = (const char *[]){ 3110 "nss_ppe_clk_src" 3111 }, 3112 .num_parents = 1, 3113 .flags = CLK_SET_RATE_PARENT, 3114 .ops = &clk_branch2_ops, 3115 }, 3116 }, 3117 }; 3118 3119 static struct clk_branch gcc_nss_ppe_cfg_clk = { 3120 .halt_reg = 0x68194, 3121 .clkr = { 3122 .enable_reg = 0x68194, 3123 .enable_mask = BIT(0), 3124 .hw.init = &(struct clk_init_data){ 3125 .name = "gcc_nss_ppe_cfg_clk", 3126 .parent_names = (const char *[]){ 3127 "nss_ppe_clk_src" 3128 }, 3129 .num_parents = 1, 3130 .flags = CLK_SET_RATE_PARENT, 3131 .ops = &clk_branch2_ops, 3132 }, 3133 }, 3134 }; 3135 3136 static struct clk_branch gcc_nss_ppe_clk = { 3137 .halt_reg = 0x68190, 3138 .clkr = { 3139 .enable_reg = 0x68190, 3140 .enable_mask = BIT(0), 3141 .hw.init = &(struct clk_init_data){ 3142 .name = "gcc_nss_ppe_clk", 3143 .parent_names = (const char *[]){ 3144 "nss_ppe_clk_src" 3145 }, 3146 .num_parents = 1, 3147 .flags = CLK_SET_RATE_PARENT, 3148 .ops = &clk_branch2_ops, 3149 }, 3150 }, 3151 }; 3152 3153 static struct clk_branch gcc_nss_ppe_ipe_clk = { 3154 .halt_reg = 0x68338, 3155 .clkr = { 3156 .enable_reg = 0x68338, 3157 .enable_mask = BIT(0), 3158 .hw.init = &(struct clk_init_data){ 3159 .name = "gcc_nss_ppe_ipe_clk", 3160 .parent_names = (const char *[]){ 3161 "nss_ppe_clk_src" 3162 }, 3163 .num_parents = 1, 3164 .flags = CLK_SET_RATE_PARENT, 3165 .ops = &clk_branch2_ops, 3166 }, 3167 }, 3168 }; 3169 3170 static struct clk_branch gcc_nss_ptp_ref_clk = { 3171 .halt_reg = 0x6816c, 3172 .clkr = { 3173 .enable_reg = 0x6816c, 3174 .enable_mask = BIT(0), 3175 .hw.init = &(struct clk_init_data){ 3176 .name = "gcc_nss_ptp_ref_clk", 3177 .parent_names = (const char *[]){ 3178 "nss_ppe_cdiv_clk_src" 3179 }, 3180 .num_parents = 1, 3181 .flags = CLK_SET_RATE_PARENT, 3182 .ops = &clk_branch2_ops, 3183 }, 3184 }, 3185 }; 3186 3187 static struct clk_branch gcc_nssnoc_ce_apb_clk = { 3188 .halt_reg = 0x6830c, 3189 .clkr = { 3190 .enable_reg = 0x6830c, 3191 .enable_mask = BIT(0), 3192 .hw.init = &(struct clk_init_data){ 3193 .name = "gcc_nssnoc_ce_apb_clk", 3194 .parent_names = (const char *[]){ 3195 "nss_ce_clk_src" 3196 }, 3197 .num_parents = 1, 3198 .flags = CLK_SET_RATE_PARENT, 3199 .ops = &clk_branch2_ops, 3200 }, 3201 }, 3202 }; 3203 3204 static struct clk_branch gcc_nssnoc_ce_axi_clk = { 3205 .halt_reg = 0x68308, 3206 .clkr = { 3207 .enable_reg = 0x68308, 3208 .enable_mask = BIT(0), 3209 .hw.init = &(struct clk_init_data){ 3210 .name = "gcc_nssnoc_ce_axi_clk", 3211 .parent_names = (const char *[]){ 3212 "nss_ce_clk_src" 3213 }, 3214 .num_parents = 1, 3215 .flags = CLK_SET_RATE_PARENT, 3216 .ops = &clk_branch2_ops, 3217 }, 3218 }, 3219 }; 3220 3221 static struct clk_branch gcc_nssnoc_crypto_clk = { 3222 .halt_reg = 0x68314, 3223 .clkr = { 3224 .enable_reg = 0x68314, 3225 .enable_mask = BIT(0), 3226 .hw.init = &(struct clk_init_data){ 3227 .name = "gcc_nssnoc_crypto_clk", 3228 .parent_names = (const char *[]){ 3229 "nss_crypto_clk_src" 3230 }, 3231 .num_parents = 1, 3232 .flags = CLK_SET_RATE_PARENT, 3233 .ops = &clk_branch2_ops, 3234 }, 3235 }, 3236 }; 3237 3238 static struct clk_branch gcc_nssnoc_ppe_cfg_clk = { 3239 .halt_reg = 0x68304, 3240 .clkr = { 3241 .enable_reg = 0x68304, 3242 .enable_mask = BIT(0), 3243 .hw.init = &(struct clk_init_data){ 3244 .name = "gcc_nssnoc_ppe_cfg_clk", 3245 .parent_names = (const char *[]){ 3246 "nss_ppe_clk_src" 3247 }, 3248 .num_parents = 1, 3249 .flags = CLK_SET_RATE_PARENT, 3250 .ops = &clk_branch2_ops, 3251 }, 3252 }, 3253 }; 3254 3255 static struct clk_branch gcc_nssnoc_ppe_clk = { 3256 .halt_reg = 0x68300, 3257 .clkr = { 3258 .enable_reg = 0x68300, 3259 .enable_mask = BIT(0), 3260 .hw.init = &(struct clk_init_data){ 3261 .name = "gcc_nssnoc_ppe_clk", 3262 .parent_names = (const char *[]){ 3263 "nss_ppe_clk_src" 3264 }, 3265 .num_parents = 1, 3266 .flags = CLK_SET_RATE_PARENT, 3267 .ops = &clk_branch2_ops, 3268 }, 3269 }, 3270 }; 3271 3272 static struct clk_branch gcc_nssnoc_qosgen_ref_clk = { 3273 .halt_reg = 0x68180, 3274 .clkr = { 3275 .enable_reg = 0x68180, 3276 .enable_mask = BIT(0), 3277 .hw.init = &(struct clk_init_data){ 3278 .name = "gcc_nssnoc_qosgen_ref_clk", 3279 .parent_names = (const char *[]){ 3280 "gcc_xo_clk_src" 3281 }, 3282 .num_parents = 1, 3283 .flags = CLK_SET_RATE_PARENT, 3284 .ops = &clk_branch2_ops, 3285 }, 3286 }, 3287 }; 3288 3289 static struct clk_branch gcc_nssnoc_snoc_clk = { 3290 .halt_reg = 0x68188, 3291 .clkr = { 3292 .enable_reg = 0x68188, 3293 .enable_mask = BIT(0), 3294 .hw.init = &(struct clk_init_data){ 3295 .name = "gcc_nssnoc_snoc_clk", 3296 .parent_names = (const char *[]){ 3297 "system_noc_clk_src" 3298 }, 3299 .num_parents = 1, 3300 .flags = CLK_SET_RATE_PARENT, 3301 .ops = &clk_branch2_ops, 3302 }, 3303 }, 3304 }; 3305 3306 static struct clk_branch gcc_nssnoc_timeout_ref_clk = { 3307 .halt_reg = 0x68184, 3308 .clkr = { 3309 .enable_reg = 0x68184, 3310 .enable_mask = BIT(0), 3311 .hw.init = &(struct clk_init_data){ 3312 .name = "gcc_nssnoc_timeout_ref_clk", 3313 .parent_names = (const char *[]){ 3314 "gcc_xo_div4_clk_src" 3315 }, 3316 .num_parents = 1, 3317 .flags = CLK_SET_RATE_PARENT, 3318 .ops = &clk_branch2_ops, 3319 }, 3320 }, 3321 }; 3322 3323 static struct clk_branch gcc_nssnoc_ubi0_ahb_clk = { 3324 .halt_reg = 0x68270, 3325 .clkr = { 3326 .enable_reg = 0x68270, 3327 .enable_mask = BIT(0), 3328 .hw.init = &(struct clk_init_data){ 3329 .name = "gcc_nssnoc_ubi0_ahb_clk", 3330 .parent_names = (const char *[]){ 3331 "nss_ce_clk_src" 3332 }, 3333 .num_parents = 1, 3334 .flags = CLK_SET_RATE_PARENT, 3335 .ops = &clk_branch2_ops, 3336 }, 3337 }, 3338 }; 3339 3340 static struct clk_branch gcc_nssnoc_ubi1_ahb_clk = { 3341 .halt_reg = 0x68274, 3342 .clkr = { 3343 .enable_reg = 0x68274, 3344 .enable_mask = BIT(0), 3345 .hw.init = &(struct clk_init_data){ 3346 .name = "gcc_nssnoc_ubi1_ahb_clk", 3347 .parent_names = (const char *[]){ 3348 "nss_ce_clk_src" 3349 }, 3350 .num_parents = 1, 3351 .flags = CLK_SET_RATE_PARENT, 3352 .ops = &clk_branch2_ops, 3353 }, 3354 }, 3355 }; 3356 3357 static struct clk_branch gcc_ubi0_ahb_clk = { 3358 .halt_reg = 0x6820c, 3359 .clkr = { 3360 .enable_reg = 0x6820c, 3361 .enable_mask = BIT(0), 3362 .hw.init = &(struct clk_init_data){ 3363 .name = "gcc_ubi0_ahb_clk", 3364 .parent_names = (const char *[]){ 3365 "nss_ce_clk_src" 3366 }, 3367 .num_parents = 1, 3368 .flags = CLK_SET_RATE_PARENT, 3369 .ops = &clk_branch2_ops, 3370 }, 3371 }, 3372 }; 3373 3374 static struct clk_branch gcc_ubi0_axi_clk = { 3375 .halt_reg = 0x68200, 3376 .clkr = { 3377 .enable_reg = 0x68200, 3378 .enable_mask = BIT(0), 3379 .hw.init = &(struct clk_init_data){ 3380 .name = "gcc_ubi0_axi_clk", 3381 .parent_names = (const char *[]){ 3382 "nss_noc_clk_src" 3383 }, 3384 .num_parents = 1, 3385 .flags = CLK_SET_RATE_PARENT, 3386 .ops = &clk_branch2_ops, 3387 }, 3388 }, 3389 }; 3390 3391 static struct clk_branch gcc_ubi0_nc_axi_clk = { 3392 .halt_reg = 0x68204, 3393 .clkr = { 3394 .enable_reg = 0x68204, 3395 .enable_mask = BIT(0), 3396 .hw.init = &(struct clk_init_data){ 3397 .name = "gcc_ubi0_nc_axi_clk", 3398 .parent_names = (const char *[]){ 3399 "nss_noc_clk_src" 3400 }, 3401 .num_parents = 1, 3402 .flags = CLK_SET_RATE_PARENT, 3403 .ops = &clk_branch2_ops, 3404 }, 3405 }, 3406 }; 3407 3408 static struct clk_branch gcc_ubi0_core_clk = { 3409 .halt_reg = 0x68210, 3410 .clkr = { 3411 .enable_reg = 0x68210, 3412 .enable_mask = BIT(0), 3413 .hw.init = &(struct clk_init_data){ 3414 .name = "gcc_ubi0_core_clk", 3415 .parent_names = (const char *[]){ 3416 "nss_ubi0_div_clk_src" 3417 }, 3418 .num_parents = 1, 3419 .flags = CLK_SET_RATE_PARENT, 3420 .ops = &clk_branch2_ops, 3421 }, 3422 }, 3423 }; 3424 3425 static struct clk_branch gcc_ubi0_mpt_clk = { 3426 .halt_reg = 0x68208, 3427 .clkr = { 3428 .enable_reg = 0x68208, 3429 .enable_mask = BIT(0), 3430 .hw.init = &(struct clk_init_data){ 3431 .name = "gcc_ubi0_mpt_clk", 3432 .parent_names = (const char *[]){ 3433 "ubi_mpt_clk_src" 3434 }, 3435 .num_parents = 1, 3436 .flags = CLK_SET_RATE_PARENT, 3437 .ops = &clk_branch2_ops, 3438 }, 3439 }, 3440 }; 3441 3442 static struct clk_branch gcc_ubi1_ahb_clk = { 3443 .halt_reg = 0x6822c, 3444 .clkr = { 3445 .enable_reg = 0x6822c, 3446 .enable_mask = BIT(0), 3447 .hw.init = &(struct clk_init_data){ 3448 .name = "gcc_ubi1_ahb_clk", 3449 .parent_names = (const char *[]){ 3450 "nss_ce_clk_src" 3451 }, 3452 .num_parents = 1, 3453 .flags = CLK_SET_RATE_PARENT, 3454 .ops = &clk_branch2_ops, 3455 }, 3456 }, 3457 }; 3458 3459 static struct clk_branch gcc_ubi1_axi_clk = { 3460 .halt_reg = 0x68220, 3461 .clkr = { 3462 .enable_reg = 0x68220, 3463 .enable_mask = BIT(0), 3464 .hw.init = &(struct clk_init_data){ 3465 .name = "gcc_ubi1_axi_clk", 3466 .parent_names = (const char *[]){ 3467 "nss_noc_clk_src" 3468 }, 3469 .num_parents = 1, 3470 .flags = CLK_SET_RATE_PARENT, 3471 .ops = &clk_branch2_ops, 3472 }, 3473 }, 3474 }; 3475 3476 static struct clk_branch gcc_ubi1_nc_axi_clk = { 3477 .halt_reg = 0x68224, 3478 .clkr = { 3479 .enable_reg = 0x68224, 3480 .enable_mask = BIT(0), 3481 .hw.init = &(struct clk_init_data){ 3482 .name = "gcc_ubi1_nc_axi_clk", 3483 .parent_names = (const char *[]){ 3484 "nss_noc_clk_src" 3485 }, 3486 .num_parents = 1, 3487 .flags = CLK_SET_RATE_PARENT, 3488 .ops = &clk_branch2_ops, 3489 }, 3490 }, 3491 }; 3492 3493 static struct clk_branch gcc_ubi1_core_clk = { 3494 .halt_reg = 0x68230, 3495 .clkr = { 3496 .enable_reg = 0x68230, 3497 .enable_mask = BIT(0), 3498 .hw.init = &(struct clk_init_data){ 3499 .name = "gcc_ubi1_core_clk", 3500 .parent_names = (const char *[]){ 3501 "nss_ubi1_div_clk_src" 3502 }, 3503 .num_parents = 1, 3504 .flags = CLK_SET_RATE_PARENT, 3505 .ops = &clk_branch2_ops, 3506 }, 3507 }, 3508 }; 3509 3510 static struct clk_branch gcc_ubi1_mpt_clk = { 3511 .halt_reg = 0x68228, 3512 .clkr = { 3513 .enable_reg = 0x68228, 3514 .enable_mask = BIT(0), 3515 .hw.init = &(struct clk_init_data){ 3516 .name = "gcc_ubi1_mpt_clk", 3517 .parent_names = (const char *[]){ 3518 "ubi_mpt_clk_src" 3519 }, 3520 .num_parents = 1, 3521 .flags = CLK_SET_RATE_PARENT, 3522 .ops = &clk_branch2_ops, 3523 }, 3524 }, 3525 }; 3526 3527 static struct clk_branch gcc_cmn_12gpll_ahb_clk = { 3528 .halt_reg = 0x56308, 3529 .clkr = { 3530 .enable_reg = 0x56308, 3531 .enable_mask = BIT(0), 3532 .hw.init = &(struct clk_init_data){ 3533 .name = "gcc_cmn_12gpll_ahb_clk", 3534 .parent_names = (const char *[]){ 3535 "pcnoc_clk_src" 3536 }, 3537 .num_parents = 1, 3538 .flags = CLK_SET_RATE_PARENT, 3539 .ops = &clk_branch2_ops, 3540 }, 3541 }, 3542 }; 3543 3544 static struct clk_branch gcc_cmn_12gpll_sys_clk = { 3545 .halt_reg = 0x5630c, 3546 .clkr = { 3547 .enable_reg = 0x5630c, 3548 .enable_mask = BIT(0), 3549 .hw.init = &(struct clk_init_data){ 3550 .name = "gcc_cmn_12gpll_sys_clk", 3551 .parent_names = (const char *[]){ 3552 "gcc_xo_clk_src" 3553 }, 3554 .num_parents = 1, 3555 .flags = CLK_SET_RATE_PARENT, 3556 .ops = &clk_branch2_ops, 3557 }, 3558 }, 3559 }; 3560 3561 static struct clk_branch gcc_mdio_ahb_clk = { 3562 .halt_reg = 0x58004, 3563 .clkr = { 3564 .enable_reg = 0x58004, 3565 .enable_mask = BIT(0), 3566 .hw.init = &(struct clk_init_data){ 3567 .name = "gcc_mdio_ahb_clk", 3568 .parent_names = (const char *[]){ 3569 "pcnoc_clk_src" 3570 }, 3571 .num_parents = 1, 3572 .flags = CLK_SET_RATE_PARENT, 3573 .ops = &clk_branch2_ops, 3574 }, 3575 }, 3576 }; 3577 3578 static struct clk_branch gcc_uniphy0_ahb_clk = { 3579 .halt_reg = 0x56008, 3580 .clkr = { 3581 .enable_reg = 0x56008, 3582 .enable_mask = BIT(0), 3583 .hw.init = &(struct clk_init_data){ 3584 .name = "gcc_uniphy0_ahb_clk", 3585 .parent_names = (const char *[]){ 3586 "pcnoc_clk_src" 3587 }, 3588 .num_parents = 1, 3589 .flags = CLK_SET_RATE_PARENT, 3590 .ops = &clk_branch2_ops, 3591 }, 3592 }, 3593 }; 3594 3595 static struct clk_branch gcc_uniphy0_sys_clk = { 3596 .halt_reg = 0x5600c, 3597 .clkr = { 3598 .enable_reg = 0x5600c, 3599 .enable_mask = BIT(0), 3600 .hw.init = &(struct clk_init_data){ 3601 .name = "gcc_uniphy0_sys_clk", 3602 .parent_names = (const char *[]){ 3603 "gcc_xo_clk_src" 3604 }, 3605 .num_parents = 1, 3606 .flags = CLK_SET_RATE_PARENT, 3607 .ops = &clk_branch2_ops, 3608 }, 3609 }, 3610 }; 3611 3612 static struct clk_branch gcc_uniphy1_ahb_clk = { 3613 .halt_reg = 0x56108, 3614 .clkr = { 3615 .enable_reg = 0x56108, 3616 .enable_mask = BIT(0), 3617 .hw.init = &(struct clk_init_data){ 3618 .name = "gcc_uniphy1_ahb_clk", 3619 .parent_names = (const char *[]){ 3620 "pcnoc_clk_src" 3621 }, 3622 .num_parents = 1, 3623 .flags = CLK_SET_RATE_PARENT, 3624 .ops = &clk_branch2_ops, 3625 }, 3626 }, 3627 }; 3628 3629 static struct clk_branch gcc_uniphy1_sys_clk = { 3630 .halt_reg = 0x5610c, 3631 .clkr = { 3632 .enable_reg = 0x5610c, 3633 .enable_mask = BIT(0), 3634 .hw.init = &(struct clk_init_data){ 3635 .name = "gcc_uniphy1_sys_clk", 3636 .parent_names = (const char *[]){ 3637 "gcc_xo_clk_src" 3638 }, 3639 .num_parents = 1, 3640 .flags = CLK_SET_RATE_PARENT, 3641 .ops = &clk_branch2_ops, 3642 }, 3643 }, 3644 }; 3645 3646 static struct clk_branch gcc_uniphy2_ahb_clk = { 3647 .halt_reg = 0x56208, 3648 .clkr = { 3649 .enable_reg = 0x56208, 3650 .enable_mask = BIT(0), 3651 .hw.init = &(struct clk_init_data){ 3652 .name = "gcc_uniphy2_ahb_clk", 3653 .parent_names = (const char *[]){ 3654 "pcnoc_clk_src" 3655 }, 3656 .num_parents = 1, 3657 .flags = CLK_SET_RATE_PARENT, 3658 .ops = &clk_branch2_ops, 3659 }, 3660 }, 3661 }; 3662 3663 static struct clk_branch gcc_uniphy2_sys_clk = { 3664 .halt_reg = 0x5620c, 3665 .clkr = { 3666 .enable_reg = 0x5620c, 3667 .enable_mask = BIT(0), 3668 .hw.init = &(struct clk_init_data){ 3669 .name = "gcc_uniphy2_sys_clk", 3670 .parent_names = (const char *[]){ 3671 "gcc_xo_clk_src" 3672 }, 3673 .num_parents = 1, 3674 .flags = CLK_SET_RATE_PARENT, 3675 .ops = &clk_branch2_ops, 3676 }, 3677 }, 3678 }; 3679 3680 static struct clk_branch gcc_nss_port1_rx_clk = { 3681 .halt_reg = 0x68240, 3682 .clkr = { 3683 .enable_reg = 0x68240, 3684 .enable_mask = BIT(0), 3685 .hw.init = &(struct clk_init_data){ 3686 .name = "gcc_nss_port1_rx_clk", 3687 .parent_names = (const char *[]){ 3688 "nss_port1_rx_div_clk_src" 3689 }, 3690 .num_parents = 1, 3691 .flags = CLK_SET_RATE_PARENT, 3692 .ops = &clk_branch2_ops, 3693 }, 3694 }, 3695 }; 3696 3697 static struct clk_branch gcc_nss_port1_tx_clk = { 3698 .halt_reg = 0x68244, 3699 .clkr = { 3700 .enable_reg = 0x68244, 3701 .enable_mask = BIT(0), 3702 .hw.init = &(struct clk_init_data){ 3703 .name = "gcc_nss_port1_tx_clk", 3704 .parent_names = (const char *[]){ 3705 "nss_port1_tx_div_clk_src" 3706 }, 3707 .num_parents = 1, 3708 .flags = CLK_SET_RATE_PARENT, 3709 .ops = &clk_branch2_ops, 3710 }, 3711 }, 3712 }; 3713 3714 static struct clk_branch gcc_nss_port2_rx_clk = { 3715 .halt_reg = 0x68248, 3716 .clkr = { 3717 .enable_reg = 0x68248, 3718 .enable_mask = BIT(0), 3719 .hw.init = &(struct clk_init_data){ 3720 .name = "gcc_nss_port2_rx_clk", 3721 .parent_names = (const char *[]){ 3722 "nss_port2_rx_div_clk_src" 3723 }, 3724 .num_parents = 1, 3725 .flags = CLK_SET_RATE_PARENT, 3726 .ops = &clk_branch2_ops, 3727 }, 3728 }, 3729 }; 3730 3731 static struct clk_branch gcc_nss_port2_tx_clk = { 3732 .halt_reg = 0x6824c, 3733 .clkr = { 3734 .enable_reg = 0x6824c, 3735 .enable_mask = BIT(0), 3736 .hw.init = &(struct clk_init_data){ 3737 .name = "gcc_nss_port2_tx_clk", 3738 .parent_names = (const char *[]){ 3739 "nss_port2_tx_div_clk_src" 3740 }, 3741 .num_parents = 1, 3742 .flags = CLK_SET_RATE_PARENT, 3743 .ops = &clk_branch2_ops, 3744 }, 3745 }, 3746 }; 3747 3748 static struct clk_branch gcc_nss_port3_rx_clk = { 3749 .halt_reg = 0x68250, 3750 .clkr = { 3751 .enable_reg = 0x68250, 3752 .enable_mask = BIT(0), 3753 .hw.init = &(struct clk_init_data){ 3754 .name = "gcc_nss_port3_rx_clk", 3755 .parent_names = (const char *[]){ 3756 "nss_port3_rx_div_clk_src" 3757 }, 3758 .num_parents = 1, 3759 .flags = CLK_SET_RATE_PARENT, 3760 .ops = &clk_branch2_ops, 3761 }, 3762 }, 3763 }; 3764 3765 static struct clk_branch gcc_nss_port3_tx_clk = { 3766 .halt_reg = 0x68254, 3767 .clkr = { 3768 .enable_reg = 0x68254, 3769 .enable_mask = BIT(0), 3770 .hw.init = &(struct clk_init_data){ 3771 .name = "gcc_nss_port3_tx_clk", 3772 .parent_names = (const char *[]){ 3773 "nss_port3_tx_div_clk_src" 3774 }, 3775 .num_parents = 1, 3776 .flags = CLK_SET_RATE_PARENT, 3777 .ops = &clk_branch2_ops, 3778 }, 3779 }, 3780 }; 3781 3782 static struct clk_branch gcc_nss_port4_rx_clk = { 3783 .halt_reg = 0x68258, 3784 .clkr = { 3785 .enable_reg = 0x68258, 3786 .enable_mask = BIT(0), 3787 .hw.init = &(struct clk_init_data){ 3788 .name = "gcc_nss_port4_rx_clk", 3789 .parent_names = (const char *[]){ 3790 "nss_port4_rx_div_clk_src" 3791 }, 3792 .num_parents = 1, 3793 .flags = CLK_SET_RATE_PARENT, 3794 .ops = &clk_branch2_ops, 3795 }, 3796 }, 3797 }; 3798 3799 static struct clk_branch gcc_nss_port4_tx_clk = { 3800 .halt_reg = 0x6825c, 3801 .clkr = { 3802 .enable_reg = 0x6825c, 3803 .enable_mask = BIT(0), 3804 .hw.init = &(struct clk_init_data){ 3805 .name = "gcc_nss_port4_tx_clk", 3806 .parent_names = (const char *[]){ 3807 "nss_port4_tx_div_clk_src" 3808 }, 3809 .num_parents = 1, 3810 .flags = CLK_SET_RATE_PARENT, 3811 .ops = &clk_branch2_ops, 3812 }, 3813 }, 3814 }; 3815 3816 static struct clk_branch gcc_nss_port5_rx_clk = { 3817 .halt_reg = 0x68260, 3818 .clkr = { 3819 .enable_reg = 0x68260, 3820 .enable_mask = BIT(0), 3821 .hw.init = &(struct clk_init_data){ 3822 .name = "gcc_nss_port5_rx_clk", 3823 .parent_names = (const char *[]){ 3824 "nss_port5_rx_div_clk_src" 3825 }, 3826 .num_parents = 1, 3827 .flags = CLK_SET_RATE_PARENT, 3828 .ops = &clk_branch2_ops, 3829 }, 3830 }, 3831 }; 3832 3833 static struct clk_branch gcc_nss_port5_tx_clk = { 3834 .halt_reg = 0x68264, 3835 .clkr = { 3836 .enable_reg = 0x68264, 3837 .enable_mask = BIT(0), 3838 .hw.init = &(struct clk_init_data){ 3839 .name = "gcc_nss_port5_tx_clk", 3840 .parent_names = (const char *[]){ 3841 "nss_port5_tx_div_clk_src" 3842 }, 3843 .num_parents = 1, 3844 .flags = CLK_SET_RATE_PARENT, 3845 .ops = &clk_branch2_ops, 3846 }, 3847 }, 3848 }; 3849 3850 static struct clk_branch gcc_nss_port6_rx_clk = { 3851 .halt_reg = 0x68268, 3852 .clkr = { 3853 .enable_reg = 0x68268, 3854 .enable_mask = BIT(0), 3855 .hw.init = &(struct clk_init_data){ 3856 .name = "gcc_nss_port6_rx_clk", 3857 .parent_names = (const char *[]){ 3858 "nss_port6_rx_div_clk_src" 3859 }, 3860 .num_parents = 1, 3861 .flags = CLK_SET_RATE_PARENT, 3862 .ops = &clk_branch2_ops, 3863 }, 3864 }, 3865 }; 3866 3867 static struct clk_branch gcc_nss_port6_tx_clk = { 3868 .halt_reg = 0x6826c, 3869 .clkr = { 3870 .enable_reg = 0x6826c, 3871 .enable_mask = BIT(0), 3872 .hw.init = &(struct clk_init_data){ 3873 .name = "gcc_nss_port6_tx_clk", 3874 .parent_names = (const char *[]){ 3875 "nss_port6_tx_div_clk_src" 3876 }, 3877 .num_parents = 1, 3878 .flags = CLK_SET_RATE_PARENT, 3879 .ops = &clk_branch2_ops, 3880 }, 3881 }, 3882 }; 3883 3884 static struct clk_branch gcc_port1_mac_clk = { 3885 .halt_reg = 0x68320, 3886 .clkr = { 3887 .enable_reg = 0x68320, 3888 .enable_mask = BIT(0), 3889 .hw.init = &(struct clk_init_data){ 3890 .name = "gcc_port1_mac_clk", 3891 .parent_names = (const char *[]){ 3892 "nss_ppe_clk_src" 3893 }, 3894 .num_parents = 1, 3895 .flags = CLK_SET_RATE_PARENT, 3896 .ops = &clk_branch2_ops, 3897 }, 3898 }, 3899 }; 3900 3901 static struct clk_branch gcc_port2_mac_clk = { 3902 .halt_reg = 0x68324, 3903 .clkr = { 3904 .enable_reg = 0x68324, 3905 .enable_mask = BIT(0), 3906 .hw.init = &(struct clk_init_data){ 3907 .name = "gcc_port2_mac_clk", 3908 .parent_names = (const char *[]){ 3909 "nss_ppe_clk_src" 3910 }, 3911 .num_parents = 1, 3912 .flags = CLK_SET_RATE_PARENT, 3913 .ops = &clk_branch2_ops, 3914 }, 3915 }, 3916 }; 3917 3918 static struct clk_branch gcc_port3_mac_clk = { 3919 .halt_reg = 0x68328, 3920 .clkr = { 3921 .enable_reg = 0x68328, 3922 .enable_mask = BIT(0), 3923 .hw.init = &(struct clk_init_data){ 3924 .name = "gcc_port3_mac_clk", 3925 .parent_names = (const char *[]){ 3926 "nss_ppe_clk_src" 3927 }, 3928 .num_parents = 1, 3929 .flags = CLK_SET_RATE_PARENT, 3930 .ops = &clk_branch2_ops, 3931 }, 3932 }, 3933 }; 3934 3935 static struct clk_branch gcc_port4_mac_clk = { 3936 .halt_reg = 0x6832c, 3937 .clkr = { 3938 .enable_reg = 0x6832c, 3939 .enable_mask = BIT(0), 3940 .hw.init = &(struct clk_init_data){ 3941 .name = "gcc_port4_mac_clk", 3942 .parent_names = (const char *[]){ 3943 "nss_ppe_clk_src" 3944 }, 3945 .num_parents = 1, 3946 .flags = CLK_SET_RATE_PARENT, 3947 .ops = &clk_branch2_ops, 3948 }, 3949 }, 3950 }; 3951 3952 static struct clk_branch gcc_port5_mac_clk = { 3953 .halt_reg = 0x68330, 3954 .clkr = { 3955 .enable_reg = 0x68330, 3956 .enable_mask = BIT(0), 3957 .hw.init = &(struct clk_init_data){ 3958 .name = "gcc_port5_mac_clk", 3959 .parent_names = (const char *[]){ 3960 "nss_ppe_clk_src" 3961 }, 3962 .num_parents = 1, 3963 .flags = CLK_SET_RATE_PARENT, 3964 .ops = &clk_branch2_ops, 3965 }, 3966 }, 3967 }; 3968 3969 static struct clk_branch gcc_port6_mac_clk = { 3970 .halt_reg = 0x68334, 3971 .clkr = { 3972 .enable_reg = 0x68334, 3973 .enable_mask = BIT(0), 3974 .hw.init = &(struct clk_init_data){ 3975 .name = "gcc_port6_mac_clk", 3976 .parent_names = (const char *[]){ 3977 "nss_ppe_clk_src" 3978 }, 3979 .num_parents = 1, 3980 .flags = CLK_SET_RATE_PARENT, 3981 .ops = &clk_branch2_ops, 3982 }, 3983 }, 3984 }; 3985 3986 static struct clk_branch gcc_uniphy0_port1_rx_clk = { 3987 .halt_reg = 0x56010, 3988 .clkr = { 3989 .enable_reg = 0x56010, 3990 .enable_mask = BIT(0), 3991 .hw.init = &(struct clk_init_data){ 3992 .name = "gcc_uniphy0_port1_rx_clk", 3993 .parent_names = (const char *[]){ 3994 "nss_port1_rx_div_clk_src" 3995 }, 3996 .num_parents = 1, 3997 .flags = CLK_SET_RATE_PARENT, 3998 .ops = &clk_branch2_ops, 3999 }, 4000 }, 4001 }; 4002 4003 static struct clk_branch gcc_uniphy0_port1_tx_clk = { 4004 .halt_reg = 0x56014, 4005 .clkr = { 4006 .enable_reg = 0x56014, 4007 .enable_mask = BIT(0), 4008 .hw.init = &(struct clk_init_data){ 4009 .name = "gcc_uniphy0_port1_tx_clk", 4010 .parent_names = (const char *[]){ 4011 "nss_port1_tx_div_clk_src" 4012 }, 4013 .num_parents = 1, 4014 .flags = CLK_SET_RATE_PARENT, 4015 .ops = &clk_branch2_ops, 4016 }, 4017 }, 4018 }; 4019 4020 static struct clk_branch gcc_uniphy0_port2_rx_clk = { 4021 .halt_reg = 0x56018, 4022 .clkr = { 4023 .enable_reg = 0x56018, 4024 .enable_mask = BIT(0), 4025 .hw.init = &(struct clk_init_data){ 4026 .name = "gcc_uniphy0_port2_rx_clk", 4027 .parent_names = (const char *[]){ 4028 "nss_port2_rx_div_clk_src" 4029 }, 4030 .num_parents = 1, 4031 .flags = CLK_SET_RATE_PARENT, 4032 .ops = &clk_branch2_ops, 4033 }, 4034 }, 4035 }; 4036 4037 static struct clk_branch gcc_uniphy0_port2_tx_clk = { 4038 .halt_reg = 0x5601c, 4039 .clkr = { 4040 .enable_reg = 0x5601c, 4041 .enable_mask = BIT(0), 4042 .hw.init = &(struct clk_init_data){ 4043 .name = "gcc_uniphy0_port2_tx_clk", 4044 .parent_names = (const char *[]){ 4045 "nss_port2_tx_div_clk_src" 4046 }, 4047 .num_parents = 1, 4048 .flags = CLK_SET_RATE_PARENT, 4049 .ops = &clk_branch2_ops, 4050 }, 4051 }, 4052 }; 4053 4054 static struct clk_branch gcc_uniphy0_port3_rx_clk = { 4055 .halt_reg = 0x56020, 4056 .clkr = { 4057 .enable_reg = 0x56020, 4058 .enable_mask = BIT(0), 4059 .hw.init = &(struct clk_init_data){ 4060 .name = "gcc_uniphy0_port3_rx_clk", 4061 .parent_names = (const char *[]){ 4062 "nss_port3_rx_div_clk_src" 4063 }, 4064 .num_parents = 1, 4065 .flags = CLK_SET_RATE_PARENT, 4066 .ops = &clk_branch2_ops, 4067 }, 4068 }, 4069 }; 4070 4071 static struct clk_branch gcc_uniphy0_port3_tx_clk = { 4072 .halt_reg = 0x56024, 4073 .clkr = { 4074 .enable_reg = 0x56024, 4075 .enable_mask = BIT(0), 4076 .hw.init = &(struct clk_init_data){ 4077 .name = "gcc_uniphy0_port3_tx_clk", 4078 .parent_names = (const char *[]){ 4079 "nss_port3_tx_div_clk_src" 4080 }, 4081 .num_parents = 1, 4082 .flags = CLK_SET_RATE_PARENT, 4083 .ops = &clk_branch2_ops, 4084 }, 4085 }, 4086 }; 4087 4088 static struct clk_branch gcc_uniphy0_port4_rx_clk = { 4089 .halt_reg = 0x56028, 4090 .clkr = { 4091 .enable_reg = 0x56028, 4092 .enable_mask = BIT(0), 4093 .hw.init = &(struct clk_init_data){ 4094 .name = "gcc_uniphy0_port4_rx_clk", 4095 .parent_names = (const char *[]){ 4096 "nss_port4_rx_div_clk_src" 4097 }, 4098 .num_parents = 1, 4099 .flags = CLK_SET_RATE_PARENT, 4100 .ops = &clk_branch2_ops, 4101 }, 4102 }, 4103 }; 4104 4105 static struct clk_branch gcc_uniphy0_port4_tx_clk = { 4106 .halt_reg = 0x5602c, 4107 .clkr = { 4108 .enable_reg = 0x5602c, 4109 .enable_mask = BIT(0), 4110 .hw.init = &(struct clk_init_data){ 4111 .name = "gcc_uniphy0_port4_tx_clk", 4112 .parent_names = (const char *[]){ 4113 "nss_port4_tx_div_clk_src" 4114 }, 4115 .num_parents = 1, 4116 .flags = CLK_SET_RATE_PARENT, 4117 .ops = &clk_branch2_ops, 4118 }, 4119 }, 4120 }; 4121 4122 static struct clk_branch gcc_uniphy0_port5_rx_clk = { 4123 .halt_reg = 0x56030, 4124 .clkr = { 4125 .enable_reg = 0x56030, 4126 .enable_mask = BIT(0), 4127 .hw.init = &(struct clk_init_data){ 4128 .name = "gcc_uniphy0_port5_rx_clk", 4129 .parent_names = (const char *[]){ 4130 "nss_port5_rx_div_clk_src" 4131 }, 4132 .num_parents = 1, 4133 .flags = CLK_SET_RATE_PARENT, 4134 .ops = &clk_branch2_ops, 4135 }, 4136 }, 4137 }; 4138 4139 static struct clk_branch gcc_uniphy0_port5_tx_clk = { 4140 .halt_reg = 0x56034, 4141 .clkr = { 4142 .enable_reg = 0x56034, 4143 .enable_mask = BIT(0), 4144 .hw.init = &(struct clk_init_data){ 4145 .name = "gcc_uniphy0_port5_tx_clk", 4146 .parent_names = (const char *[]){ 4147 "nss_port5_tx_div_clk_src" 4148 }, 4149 .num_parents = 1, 4150 .flags = CLK_SET_RATE_PARENT, 4151 .ops = &clk_branch2_ops, 4152 }, 4153 }, 4154 }; 4155 4156 static struct clk_branch gcc_uniphy1_port5_rx_clk = { 4157 .halt_reg = 0x56110, 4158 .clkr = { 4159 .enable_reg = 0x56110, 4160 .enable_mask = BIT(0), 4161 .hw.init = &(struct clk_init_data){ 4162 .name = "gcc_uniphy1_port5_rx_clk", 4163 .parent_names = (const char *[]){ 4164 "nss_port5_rx_div_clk_src" 4165 }, 4166 .num_parents = 1, 4167 .flags = CLK_SET_RATE_PARENT, 4168 .ops = &clk_branch2_ops, 4169 }, 4170 }, 4171 }; 4172 4173 static struct clk_branch gcc_uniphy1_port5_tx_clk = { 4174 .halt_reg = 0x56114, 4175 .clkr = { 4176 .enable_reg = 0x56114, 4177 .enable_mask = BIT(0), 4178 .hw.init = &(struct clk_init_data){ 4179 .name = "gcc_uniphy1_port5_tx_clk", 4180 .parent_names = (const char *[]){ 4181 "nss_port5_tx_div_clk_src" 4182 }, 4183 .num_parents = 1, 4184 .flags = CLK_SET_RATE_PARENT, 4185 .ops = &clk_branch2_ops, 4186 }, 4187 }, 4188 }; 4189 4190 static struct clk_branch gcc_uniphy2_port6_rx_clk = { 4191 .halt_reg = 0x56210, 4192 .clkr = { 4193 .enable_reg = 0x56210, 4194 .enable_mask = BIT(0), 4195 .hw.init = &(struct clk_init_data){ 4196 .name = "gcc_uniphy2_port6_rx_clk", 4197 .parent_names = (const char *[]){ 4198 "nss_port6_rx_div_clk_src" 4199 }, 4200 .num_parents = 1, 4201 .flags = CLK_SET_RATE_PARENT, 4202 .ops = &clk_branch2_ops, 4203 }, 4204 }, 4205 }; 4206 4207 static struct clk_branch gcc_uniphy2_port6_tx_clk = { 4208 .halt_reg = 0x56214, 4209 .clkr = { 4210 .enable_reg = 0x56214, 4211 .enable_mask = BIT(0), 4212 .hw.init = &(struct clk_init_data){ 4213 .name = "gcc_uniphy2_port6_tx_clk", 4214 .parent_names = (const char *[]){ 4215 "nss_port6_tx_div_clk_src" 4216 }, 4217 .num_parents = 1, 4218 .flags = CLK_SET_RATE_PARENT, 4219 .ops = &clk_branch2_ops, 4220 }, 4221 }, 4222 }; 4223 4224 static struct clk_branch gcc_crypto_ahb_clk = { 4225 .halt_reg = 0x16024, 4226 .halt_check = BRANCH_HALT_VOTED, 4227 .clkr = { 4228 .enable_reg = 0x0b004, 4229 .enable_mask = BIT(0), 4230 .hw.init = &(struct clk_init_data){ 4231 .name = "gcc_crypto_ahb_clk", 4232 .parent_names = (const char *[]){ 4233 "pcnoc_clk_src" 4234 }, 4235 .num_parents = 1, 4236 .flags = CLK_SET_RATE_PARENT, 4237 .ops = &clk_branch2_ops, 4238 }, 4239 }, 4240 }; 4241 4242 static struct clk_branch gcc_crypto_axi_clk = { 4243 .halt_reg = 0x16020, 4244 .halt_check = BRANCH_HALT_VOTED, 4245 .clkr = { 4246 .enable_reg = 0x0b004, 4247 .enable_mask = BIT(1), 4248 .hw.init = &(struct clk_init_data){ 4249 .name = "gcc_crypto_axi_clk", 4250 .parent_names = (const char *[]){ 4251 "pcnoc_clk_src" 4252 }, 4253 .num_parents = 1, 4254 .flags = CLK_SET_RATE_PARENT, 4255 .ops = &clk_branch2_ops, 4256 }, 4257 }, 4258 }; 4259 4260 static struct clk_branch gcc_crypto_clk = { 4261 .halt_reg = 0x1601c, 4262 .halt_check = BRANCH_HALT_VOTED, 4263 .clkr = { 4264 .enable_reg = 0x0b004, 4265 .enable_mask = BIT(2), 4266 .hw.init = &(struct clk_init_data){ 4267 .name = "gcc_crypto_clk", 4268 .parent_names = (const char *[]){ 4269 "crypto_clk_src" 4270 }, 4271 .num_parents = 1, 4272 .flags = CLK_SET_RATE_PARENT, 4273 .ops = &clk_branch2_ops, 4274 }, 4275 }, 4276 }; 4277 4278 static struct clk_branch gcc_gp1_clk = { 4279 .halt_reg = 0x08000, 4280 .clkr = { 4281 .enable_reg = 0x08000, 4282 .enable_mask = BIT(0), 4283 .hw.init = &(struct clk_init_data){ 4284 .name = "gcc_gp1_clk", 4285 .parent_names = (const char *[]){ 4286 "gp1_clk_src" 4287 }, 4288 .num_parents = 1, 4289 .flags = CLK_SET_RATE_PARENT, 4290 .ops = &clk_branch2_ops, 4291 }, 4292 }, 4293 }; 4294 4295 static struct clk_branch gcc_gp2_clk = { 4296 .halt_reg = 0x09000, 4297 .clkr = { 4298 .enable_reg = 0x09000, 4299 .enable_mask = BIT(0), 4300 .hw.init = &(struct clk_init_data){ 4301 .name = "gcc_gp2_clk", 4302 .parent_names = (const char *[]){ 4303 "gp2_clk_src" 4304 }, 4305 .num_parents = 1, 4306 .flags = CLK_SET_RATE_PARENT, 4307 .ops = &clk_branch2_ops, 4308 }, 4309 }, 4310 }; 4311 4312 static struct clk_branch gcc_gp3_clk = { 4313 .halt_reg = 0x0a000, 4314 .clkr = { 4315 .enable_reg = 0x0a000, 4316 .enable_mask = BIT(0), 4317 .hw.init = &(struct clk_init_data){ 4318 .name = "gcc_gp3_clk", 4319 .parent_names = (const char *[]){ 4320 "gp3_clk_src" 4321 }, 4322 .num_parents = 1, 4323 .flags = CLK_SET_RATE_PARENT, 4324 .ops = &clk_branch2_ops, 4325 }, 4326 }, 4327 }; 4328 4329 static struct clk_hw *gcc_ipq8074_hws[] = { 4330 &gpll0_out_main_div2.hw, 4331 &gpll6_out_main_div2.hw, 4332 &pcnoc_clk_src.hw, 4333 &system_noc_clk_src.hw, 4334 &gcc_xo_div4_clk_src.hw, 4335 &nss_noc_clk_src.hw, 4336 &nss_ppe_cdiv_clk_src.hw, 4337 }; 4338 4339 static struct clk_regmap *gcc_ipq8074_clks[] = { 4340 [GPLL0_MAIN] = &gpll0_main.clkr, 4341 [GPLL0] = &gpll0.clkr, 4342 [GPLL2_MAIN] = &gpll2_main.clkr, 4343 [GPLL2] = &gpll2.clkr, 4344 [GPLL4_MAIN] = &gpll4_main.clkr, 4345 [GPLL4] = &gpll4.clkr, 4346 [GPLL6_MAIN] = &gpll6_main.clkr, 4347 [GPLL6] = &gpll6.clkr, 4348 [UBI32_PLL_MAIN] = &ubi32_pll_main.clkr, 4349 [UBI32_PLL] = &ubi32_pll.clkr, 4350 [NSS_CRYPTO_PLL_MAIN] = &nss_crypto_pll_main.clkr, 4351 [NSS_CRYPTO_PLL] = &nss_crypto_pll.clkr, 4352 [PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr, 4353 [GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr, 4354 [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr, 4355 [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr, 4356 [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr, 4357 [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr, 4358 [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr, 4359 [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr, 4360 [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr, 4361 [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr, 4362 [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr, 4363 [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr, 4364 [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr, 4365 [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr, 4366 [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr, 4367 [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr, 4368 [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr, 4369 [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr, 4370 [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr, 4371 [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr, 4372 [PCIE0_AXI_CLK_SRC] = &pcie0_axi_clk_src.clkr, 4373 [PCIE0_AUX_CLK_SRC] = &pcie0_aux_clk_src.clkr, 4374 [PCIE0_PIPE_CLK_SRC] = &pcie0_pipe_clk_src.clkr, 4375 [PCIE1_AXI_CLK_SRC] = &pcie1_axi_clk_src.clkr, 4376 [PCIE1_AUX_CLK_SRC] = &pcie1_aux_clk_src.clkr, 4377 [PCIE1_PIPE_CLK_SRC] = &pcie1_pipe_clk_src.clkr, 4378 [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr, 4379 [SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr, 4380 [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr, 4381 [USB0_MASTER_CLK_SRC] = &usb0_master_clk_src.clkr, 4382 [USB0_AUX_CLK_SRC] = &usb0_aux_clk_src.clkr, 4383 [USB0_MOCK_UTMI_CLK_SRC] = &usb0_mock_utmi_clk_src.clkr, 4384 [USB0_PIPE_CLK_SRC] = &usb0_pipe_clk_src.clkr, 4385 [USB1_MASTER_CLK_SRC] = &usb1_master_clk_src.clkr, 4386 [USB1_AUX_CLK_SRC] = &usb1_aux_clk_src.clkr, 4387 [USB1_MOCK_UTMI_CLK_SRC] = &usb1_mock_utmi_clk_src.clkr, 4388 [USB1_PIPE_CLK_SRC] = &usb1_pipe_clk_src.clkr, 4389 [GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr, 4390 [SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr, 4391 [NSS_CE_CLK_SRC] = &nss_ce_clk_src.clkr, 4392 [NSS_NOC_BFDCD_CLK_SRC] = &nss_noc_bfdcd_clk_src.clkr, 4393 [NSS_CRYPTO_CLK_SRC] = &nss_crypto_clk_src.clkr, 4394 [NSS_UBI0_CLK_SRC] = &nss_ubi0_clk_src.clkr, 4395 [NSS_UBI0_DIV_CLK_SRC] = &nss_ubi0_div_clk_src.clkr, 4396 [NSS_UBI1_CLK_SRC] = &nss_ubi1_clk_src.clkr, 4397 [NSS_UBI1_DIV_CLK_SRC] = &nss_ubi1_div_clk_src.clkr, 4398 [UBI_MPT_CLK_SRC] = &ubi_mpt_clk_src.clkr, 4399 [NSS_IMEM_CLK_SRC] = &nss_imem_clk_src.clkr, 4400 [NSS_PPE_CLK_SRC] = &nss_ppe_clk_src.clkr, 4401 [NSS_PORT1_RX_CLK_SRC] = &nss_port1_rx_clk_src.clkr, 4402 [NSS_PORT1_RX_DIV_CLK_SRC] = &nss_port1_rx_div_clk_src.clkr, 4403 [NSS_PORT1_TX_CLK_SRC] = &nss_port1_tx_clk_src.clkr, 4404 [NSS_PORT1_TX_DIV_CLK_SRC] = &nss_port1_tx_div_clk_src.clkr, 4405 [NSS_PORT2_RX_CLK_SRC] = &nss_port2_rx_clk_src.clkr, 4406 [NSS_PORT2_RX_DIV_CLK_SRC] = &nss_port2_rx_div_clk_src.clkr, 4407 [NSS_PORT2_TX_CLK_SRC] = &nss_port2_tx_clk_src.clkr, 4408 [NSS_PORT2_TX_DIV_CLK_SRC] = &nss_port2_tx_div_clk_src.clkr, 4409 [NSS_PORT3_RX_CLK_SRC] = &nss_port3_rx_clk_src.clkr, 4410 [NSS_PORT3_RX_DIV_CLK_SRC] = &nss_port3_rx_div_clk_src.clkr, 4411 [NSS_PORT3_TX_CLK_SRC] = &nss_port3_tx_clk_src.clkr, 4412 [NSS_PORT3_TX_DIV_CLK_SRC] = &nss_port3_tx_div_clk_src.clkr, 4413 [NSS_PORT4_RX_CLK_SRC] = &nss_port4_rx_clk_src.clkr, 4414 [NSS_PORT4_RX_DIV_CLK_SRC] = &nss_port4_rx_div_clk_src.clkr, 4415 [NSS_PORT4_TX_CLK_SRC] = &nss_port4_tx_clk_src.clkr, 4416 [NSS_PORT4_TX_DIV_CLK_SRC] = &nss_port4_tx_div_clk_src.clkr, 4417 [NSS_PORT5_RX_CLK_SRC] = &nss_port5_rx_clk_src.clkr, 4418 [NSS_PORT5_RX_DIV_CLK_SRC] = &nss_port5_rx_div_clk_src.clkr, 4419 [NSS_PORT5_TX_CLK_SRC] = &nss_port5_tx_clk_src.clkr, 4420 [NSS_PORT5_TX_DIV_CLK_SRC] = &nss_port5_tx_div_clk_src.clkr, 4421 [NSS_PORT6_RX_CLK_SRC] = &nss_port6_rx_clk_src.clkr, 4422 [NSS_PORT6_RX_DIV_CLK_SRC] = &nss_port6_rx_div_clk_src.clkr, 4423 [NSS_PORT6_TX_CLK_SRC] = &nss_port6_tx_clk_src.clkr, 4424 [NSS_PORT6_TX_DIV_CLK_SRC] = &nss_port6_tx_div_clk_src.clkr, 4425 [CRYPTO_CLK_SRC] = &crypto_clk_src.clkr, 4426 [GP1_CLK_SRC] = &gp1_clk_src.clkr, 4427 [GP2_CLK_SRC] = &gp2_clk_src.clkr, 4428 [GP3_CLK_SRC] = &gp3_clk_src.clkr, 4429 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr, 4430 [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr, 4431 [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr, 4432 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr, 4433 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr, 4434 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr, 4435 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr, 4436 [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr, 4437 [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr, 4438 [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr, 4439 [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr, 4440 [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr, 4441 [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr, 4442 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr, 4443 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr, 4444 [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr, 4445 [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr, 4446 [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr, 4447 [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr, 4448 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr, 4449 [GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr, 4450 [GCC_QPIC_CLK] = &gcc_qpic_clk.clkr, 4451 [GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr, 4452 [GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr, 4453 [GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr, 4454 [GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr, 4455 [GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr, 4456 [GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr, 4457 [GCC_PCIE1_AHB_CLK] = &gcc_pcie1_ahb_clk.clkr, 4458 [GCC_PCIE1_AUX_CLK] = &gcc_pcie1_aux_clk.clkr, 4459 [GCC_PCIE1_AXI_M_CLK] = &gcc_pcie1_axi_m_clk.clkr, 4460 [GCC_PCIE1_AXI_S_CLK] = &gcc_pcie1_axi_s_clk.clkr, 4461 [GCC_PCIE1_PIPE_CLK] = &gcc_pcie1_pipe_clk.clkr, 4462 [GCC_SYS_NOC_PCIE1_AXI_CLK] = &gcc_sys_noc_pcie1_axi_clk.clkr, 4463 [GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr, 4464 [GCC_SYS_NOC_USB0_AXI_CLK] = &gcc_sys_noc_usb0_axi_clk.clkr, 4465 [GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr, 4466 [GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr, 4467 [GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr, 4468 [GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr, 4469 [GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr, 4470 [GCC_USB1_AUX_CLK] = &gcc_usb1_aux_clk.clkr, 4471 [GCC_SYS_NOC_USB1_AXI_CLK] = &gcc_sys_noc_usb1_axi_clk.clkr, 4472 [GCC_USB1_MASTER_CLK] = &gcc_usb1_master_clk.clkr, 4473 [GCC_USB1_MOCK_UTMI_CLK] = &gcc_usb1_mock_utmi_clk.clkr, 4474 [GCC_USB1_PHY_CFG_AHB_CLK] = &gcc_usb1_phy_cfg_ahb_clk.clkr, 4475 [GCC_USB1_PIPE_CLK] = &gcc_usb1_pipe_clk.clkr, 4476 [GCC_USB1_SLEEP_CLK] = &gcc_usb1_sleep_clk.clkr, 4477 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 4478 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 4479 [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr, 4480 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 4481 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 4482 [GCC_MEM_NOC_NSS_AXI_CLK] = &gcc_mem_noc_nss_axi_clk.clkr, 4483 [GCC_NSS_CE_APB_CLK] = &gcc_nss_ce_apb_clk.clkr, 4484 [GCC_NSS_CE_AXI_CLK] = &gcc_nss_ce_axi_clk.clkr, 4485 [GCC_NSS_CFG_CLK] = &gcc_nss_cfg_clk.clkr, 4486 [GCC_NSS_CRYPTO_CLK] = &gcc_nss_crypto_clk.clkr, 4487 [GCC_NSS_CSR_CLK] = &gcc_nss_csr_clk.clkr, 4488 [GCC_NSS_EDMA_CFG_CLK] = &gcc_nss_edma_cfg_clk.clkr, 4489 [GCC_NSS_EDMA_CLK] = &gcc_nss_edma_clk.clkr, 4490 [GCC_NSS_IMEM_CLK] = &gcc_nss_imem_clk.clkr, 4491 [GCC_NSS_NOC_CLK] = &gcc_nss_noc_clk.clkr, 4492 [GCC_NSS_PPE_BTQ_CLK] = &gcc_nss_ppe_btq_clk.clkr, 4493 [GCC_NSS_PPE_CFG_CLK] = &gcc_nss_ppe_cfg_clk.clkr, 4494 [GCC_NSS_PPE_CLK] = &gcc_nss_ppe_clk.clkr, 4495 [GCC_NSS_PPE_IPE_CLK] = &gcc_nss_ppe_ipe_clk.clkr, 4496 [GCC_NSS_PTP_REF_CLK] = &gcc_nss_ptp_ref_clk.clkr, 4497 [GCC_NSSNOC_CE_APB_CLK] = &gcc_nssnoc_ce_apb_clk.clkr, 4498 [GCC_NSSNOC_CE_AXI_CLK] = &gcc_nssnoc_ce_axi_clk.clkr, 4499 [GCC_NSSNOC_CRYPTO_CLK] = &gcc_nssnoc_crypto_clk.clkr, 4500 [GCC_NSSNOC_PPE_CFG_CLK] = &gcc_nssnoc_ppe_cfg_clk.clkr, 4501 [GCC_NSSNOC_PPE_CLK] = &gcc_nssnoc_ppe_clk.clkr, 4502 [GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr, 4503 [GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr, 4504 [GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr, 4505 [GCC_NSSNOC_UBI0_AHB_CLK] = &gcc_nssnoc_ubi0_ahb_clk.clkr, 4506 [GCC_NSSNOC_UBI1_AHB_CLK] = &gcc_nssnoc_ubi1_ahb_clk.clkr, 4507 [GCC_UBI0_AHB_CLK] = &gcc_ubi0_ahb_clk.clkr, 4508 [GCC_UBI0_AXI_CLK] = &gcc_ubi0_axi_clk.clkr, 4509 [GCC_UBI0_NC_AXI_CLK] = &gcc_ubi0_nc_axi_clk.clkr, 4510 [GCC_UBI0_CORE_CLK] = &gcc_ubi0_core_clk.clkr, 4511 [GCC_UBI0_MPT_CLK] = &gcc_ubi0_mpt_clk.clkr, 4512 [GCC_UBI1_AHB_CLK] = &gcc_ubi1_ahb_clk.clkr, 4513 [GCC_UBI1_AXI_CLK] = &gcc_ubi1_axi_clk.clkr, 4514 [GCC_UBI1_NC_AXI_CLK] = &gcc_ubi1_nc_axi_clk.clkr, 4515 [GCC_UBI1_CORE_CLK] = &gcc_ubi1_core_clk.clkr, 4516 [GCC_UBI1_MPT_CLK] = &gcc_ubi1_mpt_clk.clkr, 4517 [GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr, 4518 [GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr, 4519 [GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr, 4520 [GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr, 4521 [GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr, 4522 [GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr, 4523 [GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr, 4524 [GCC_UNIPHY2_AHB_CLK] = &gcc_uniphy2_ahb_clk.clkr, 4525 [GCC_UNIPHY2_SYS_CLK] = &gcc_uniphy2_sys_clk.clkr, 4526 [GCC_NSS_PORT1_RX_CLK] = &gcc_nss_port1_rx_clk.clkr, 4527 [GCC_NSS_PORT1_TX_CLK] = &gcc_nss_port1_tx_clk.clkr, 4528 [GCC_NSS_PORT2_RX_CLK] = &gcc_nss_port2_rx_clk.clkr, 4529 [GCC_NSS_PORT2_TX_CLK] = &gcc_nss_port2_tx_clk.clkr, 4530 [GCC_NSS_PORT3_RX_CLK] = &gcc_nss_port3_rx_clk.clkr, 4531 [GCC_NSS_PORT3_TX_CLK] = &gcc_nss_port3_tx_clk.clkr, 4532 [GCC_NSS_PORT4_RX_CLK] = &gcc_nss_port4_rx_clk.clkr, 4533 [GCC_NSS_PORT4_TX_CLK] = &gcc_nss_port4_tx_clk.clkr, 4534 [GCC_NSS_PORT5_RX_CLK] = &gcc_nss_port5_rx_clk.clkr, 4535 [GCC_NSS_PORT5_TX_CLK] = &gcc_nss_port5_tx_clk.clkr, 4536 [GCC_NSS_PORT6_RX_CLK] = &gcc_nss_port6_rx_clk.clkr, 4537 [GCC_NSS_PORT6_TX_CLK] = &gcc_nss_port6_tx_clk.clkr, 4538 [GCC_PORT1_MAC_CLK] = &gcc_port1_mac_clk.clkr, 4539 [GCC_PORT2_MAC_CLK] = &gcc_port2_mac_clk.clkr, 4540 [GCC_PORT3_MAC_CLK] = &gcc_port3_mac_clk.clkr, 4541 [GCC_PORT4_MAC_CLK] = &gcc_port4_mac_clk.clkr, 4542 [GCC_PORT5_MAC_CLK] = &gcc_port5_mac_clk.clkr, 4543 [GCC_PORT6_MAC_CLK] = &gcc_port6_mac_clk.clkr, 4544 [GCC_UNIPHY0_PORT1_RX_CLK] = &gcc_uniphy0_port1_rx_clk.clkr, 4545 [GCC_UNIPHY0_PORT1_TX_CLK] = &gcc_uniphy0_port1_tx_clk.clkr, 4546 [GCC_UNIPHY0_PORT2_RX_CLK] = &gcc_uniphy0_port2_rx_clk.clkr, 4547 [GCC_UNIPHY0_PORT2_TX_CLK] = &gcc_uniphy0_port2_tx_clk.clkr, 4548 [GCC_UNIPHY0_PORT3_RX_CLK] = &gcc_uniphy0_port3_rx_clk.clkr, 4549 [GCC_UNIPHY0_PORT3_TX_CLK] = &gcc_uniphy0_port3_tx_clk.clkr, 4550 [GCC_UNIPHY0_PORT4_RX_CLK] = &gcc_uniphy0_port4_rx_clk.clkr, 4551 [GCC_UNIPHY0_PORT4_TX_CLK] = &gcc_uniphy0_port4_tx_clk.clkr, 4552 [GCC_UNIPHY0_PORT5_RX_CLK] = &gcc_uniphy0_port5_rx_clk.clkr, 4553 [GCC_UNIPHY0_PORT5_TX_CLK] = &gcc_uniphy0_port5_tx_clk.clkr, 4554 [GCC_UNIPHY1_PORT5_RX_CLK] = &gcc_uniphy1_port5_rx_clk.clkr, 4555 [GCC_UNIPHY1_PORT5_TX_CLK] = &gcc_uniphy1_port5_tx_clk.clkr, 4556 [GCC_UNIPHY2_PORT6_RX_CLK] = &gcc_uniphy2_port6_rx_clk.clkr, 4557 [GCC_UNIPHY2_PORT6_TX_CLK] = &gcc_uniphy2_port6_tx_clk.clkr, 4558 [GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr, 4559 [GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr, 4560 [GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr, 4561 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 4562 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 4563 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 4564 }; 4565 4566 static const struct qcom_reset_map gcc_ipq8074_resets[] = { 4567 [GCC_BLSP1_BCR] = { 0x01000, 0 }, 4568 [GCC_BLSP1_QUP1_BCR] = { 0x02000, 0 }, 4569 [GCC_BLSP1_UART1_BCR] = { 0x02038, 0 }, 4570 [GCC_BLSP1_QUP2_BCR] = { 0x03008, 0 }, 4571 [GCC_BLSP1_UART2_BCR] = { 0x03028, 0 }, 4572 [GCC_BLSP1_QUP3_BCR] = { 0x04008, 0 }, 4573 [GCC_BLSP1_UART3_BCR] = { 0x04028, 0 }, 4574 [GCC_BLSP1_QUP4_BCR] = { 0x05008, 0 }, 4575 [GCC_BLSP1_UART4_BCR] = { 0x05028, 0 }, 4576 [GCC_BLSP1_QUP5_BCR] = { 0x06008, 0 }, 4577 [GCC_BLSP1_UART5_BCR] = { 0x06028, 0 }, 4578 [GCC_BLSP1_QUP6_BCR] = { 0x07008, 0 }, 4579 [GCC_BLSP1_UART6_BCR] = { 0x07028, 0 }, 4580 [GCC_IMEM_BCR] = { 0x0e000, 0 }, 4581 [GCC_SMMU_BCR] = { 0x12000, 0 }, 4582 [GCC_APSS_TCU_BCR] = { 0x12050, 0 }, 4583 [GCC_SMMU_XPU_BCR] = { 0x12054, 0 }, 4584 [GCC_PCNOC_TBU_BCR] = { 0x12058, 0 }, 4585 [GCC_SMMU_CFG_BCR] = { 0x1208c, 0 }, 4586 [GCC_PRNG_BCR] = { 0x13000, 0 }, 4587 [GCC_BOOT_ROM_BCR] = { 0x13008, 0 }, 4588 [GCC_CRYPTO_BCR] = { 0x16000, 0 }, 4589 [GCC_WCSS_BCR] = { 0x18000, 0 }, 4590 [GCC_WCSS_Q6_BCR] = { 0x18100, 0 }, 4591 [GCC_NSS_BCR] = { 0x19000, 0 }, 4592 [GCC_SEC_CTRL_BCR] = { 0x1a000, 0 }, 4593 [GCC_ADSS_BCR] = { 0x1c000, 0 }, 4594 [GCC_DDRSS_BCR] = { 0x1e000, 0 }, 4595 [GCC_SYSTEM_NOC_BCR] = { 0x26000, 0 }, 4596 [GCC_PCNOC_BCR] = { 0x27018, 0 }, 4597 [GCC_TCSR_BCR] = { 0x28000, 0 }, 4598 [GCC_QDSS_BCR] = { 0x29000, 0 }, 4599 [GCC_DCD_BCR] = { 0x2a000, 0 }, 4600 [GCC_MSG_RAM_BCR] = { 0x2b000, 0 }, 4601 [GCC_MPM_BCR] = { 0x2c000, 0 }, 4602 [GCC_SPMI_BCR] = { 0x2e000, 0 }, 4603 [GCC_SPDM_BCR] = { 0x2f000, 0 }, 4604 [GCC_RBCPR_BCR] = { 0x33000, 0 }, 4605 [GCC_RBCPR_MX_BCR] = { 0x33014, 0 }, 4606 [GCC_TLMM_BCR] = { 0x34000, 0 }, 4607 [GCC_RBCPR_WCSS_BCR] = { 0x3a000, 0 }, 4608 [GCC_USB0_PHY_BCR] = { 0x3e034, 0 }, 4609 [GCC_USB3PHY_0_PHY_BCR] = { 0x3e03c, 0 }, 4610 [GCC_USB0_BCR] = { 0x3e070, 0 }, 4611 [GCC_USB1_PHY_BCR] = { 0x3f034, 0 }, 4612 [GCC_USB3PHY_1_PHY_BCR] = { 0x3f03c, 0 }, 4613 [GCC_USB1_BCR] = { 0x3f070, 0 }, 4614 [GCC_QUSB2_0_PHY_BCR] = { 0x4103c, 0 }, 4615 [GCC_QUSB2_1_PHY_BCR] = { 0x41040, 0 }, 4616 [GCC_SDCC1_BCR] = { 0x42000, 0 }, 4617 [GCC_SDCC2_BCR] = { 0x43000, 0 }, 4618 [GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x47000, 0 }, 4619 [GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x47008, 0 }, 4620 [GCC_SNOC_BUS_TIMEOUT3_BCR] = { 0x47010, 0 }, 4621 [GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x48000, 0 }, 4622 [GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x48008, 0 }, 4623 [GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x48010, 0 }, 4624 [GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x48018, 0 }, 4625 [GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x48020, 0 }, 4626 [GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x48028, 0 }, 4627 [GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x48030, 0 }, 4628 [GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x48038, 0 }, 4629 [GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x48040, 0 }, 4630 [GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x48048, 0 }, 4631 [GCC_UNIPHY0_BCR] = { 0x56000, 0 }, 4632 [GCC_UNIPHY1_BCR] = { 0x56100, 0 }, 4633 [GCC_UNIPHY2_BCR] = { 0x56200, 0 }, 4634 [GCC_CMN_12GPLL_BCR] = { 0x56300, 0 }, 4635 [GCC_QPIC_BCR] = { 0x57018, 0 }, 4636 [GCC_MDIO_BCR] = { 0x58000, 0 }, 4637 [GCC_PCIE1_TBU_BCR] = { 0x65000, 0 }, 4638 [GCC_WCSS_CORE_TBU_BCR] = { 0x66000, 0 }, 4639 [GCC_WCSS_Q6_TBU_BCR] = { 0x67000, 0 }, 4640 [GCC_USB0_TBU_BCR] = { 0x6a000, 0 }, 4641 [GCC_USB1_TBU_BCR] = { 0x6a004, 0 }, 4642 [GCC_PCIE0_TBU_BCR] = { 0x6b000, 0 }, 4643 [GCC_NSS_NOC_TBU_BCR] = { 0x6e000, 0 }, 4644 [GCC_PCIE0_BCR] = { 0x75004, 0 }, 4645 [GCC_PCIE0_PHY_BCR] = { 0x75038, 0 }, 4646 [GCC_PCIE0PHY_PHY_BCR] = { 0x7503c, 0 }, 4647 [GCC_PCIE0_LINK_DOWN_BCR] = { 0x75044, 0 }, 4648 [GCC_PCIE1_BCR] = { 0x76004, 0 }, 4649 [GCC_PCIE1_PHY_BCR] = { 0x76038, 0 }, 4650 [GCC_PCIE1PHY_PHY_BCR] = { 0x7603c, 0 }, 4651 [GCC_PCIE1_LINK_DOWN_BCR] = { 0x76044, 0 }, 4652 [GCC_DCC_BCR] = { 0x77000, 0 }, 4653 [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x78000, 0 }, 4654 [GCC_APC1_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x79000, 0 }, 4655 [GCC_SMMU_CATS_BCR] = { 0x7c000, 0 }, 4656 [GCC_UBI0_AXI_ARES] = { 0x68010, 0 }, 4657 [GCC_UBI0_AHB_ARES] = { 0x68010, 1 }, 4658 [GCC_UBI0_NC_AXI_ARES] = { 0x68010, 2 }, 4659 [GCC_UBI0_DBG_ARES] = { 0x68010, 3 }, 4660 [GCC_UBI0_CORE_CLAMP_ENABLE] = { 0x68010, 4 }, 4661 [GCC_UBI0_CLKRST_CLAMP_ENABLE] = { 0x68010, 5 }, 4662 [GCC_UBI1_AXI_ARES] = { 0x68010, 8 }, 4663 [GCC_UBI1_AHB_ARES] = { 0x68010, 9 }, 4664 [GCC_UBI1_NC_AXI_ARES] = { 0x68010, 10 }, 4665 [GCC_UBI1_DBG_ARES] = { 0x68010, 11 }, 4666 [GCC_UBI1_CORE_CLAMP_ENABLE] = { 0x68010, 12 }, 4667 [GCC_UBI1_CLKRST_CLAMP_ENABLE] = { 0x68010, 13 }, 4668 [GCC_NSS_CFG_ARES] = { 0x68010, 16 }, 4669 [GCC_NSS_IMEM_ARES] = { 0x68010, 17 }, 4670 [GCC_NSS_NOC_ARES] = { 0x68010, 18 }, 4671 [GCC_NSS_CRYPTO_ARES] = { 0x68010, 19 }, 4672 [GCC_NSS_CSR_ARES] = { 0x68010, 20 }, 4673 [GCC_NSS_CE_APB_ARES] = { 0x68010, 21 }, 4674 [GCC_NSS_CE_AXI_ARES] = { 0x68010, 22 }, 4675 [GCC_NSSNOC_CE_APB_ARES] = { 0x68010, 23 }, 4676 [GCC_NSSNOC_CE_AXI_ARES] = { 0x68010, 24 }, 4677 [GCC_NSSNOC_UBI0_AHB_ARES] = { 0x68010, 25 }, 4678 [GCC_NSSNOC_UBI1_AHB_ARES] = { 0x68010, 26 }, 4679 [GCC_NSSNOC_SNOC_ARES] = { 0x68010, 27 }, 4680 [GCC_NSSNOC_CRYPTO_ARES] = { 0x68010, 28 }, 4681 [GCC_NSSNOC_ATB_ARES] = { 0x68010, 29 }, 4682 [GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x68010, 30 }, 4683 [GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x68010, 31 }, 4684 [GCC_PCIE0_PIPE_ARES] = { 0x75040, 0 }, 4685 [GCC_PCIE0_SLEEP_ARES] = { 0x75040, 1 }, 4686 [GCC_PCIE0_CORE_STICKY_ARES] = { 0x75040, 2 }, 4687 [GCC_PCIE0_AXI_MASTER_ARES] = { 0x75040, 3 }, 4688 [GCC_PCIE0_AXI_SLAVE_ARES] = { 0x75040, 4 }, 4689 [GCC_PCIE0_AHB_ARES] = { 0x75040, 5 }, 4690 [GCC_PCIE0_AXI_MASTER_STICKY_ARES] = { 0x75040, 6 }, 4691 [GCC_PCIE1_PIPE_ARES] = { 0x76040, 0 }, 4692 [GCC_PCIE1_SLEEP_ARES] = { 0x76040, 1 }, 4693 [GCC_PCIE1_CORE_STICKY_ARES] = { 0x76040, 2 }, 4694 [GCC_PCIE1_AXI_MASTER_ARES] = { 0x76040, 3 }, 4695 [GCC_PCIE1_AXI_SLAVE_ARES] = { 0x76040, 4 }, 4696 [GCC_PCIE1_AHB_ARES] = { 0x76040, 5 }, 4697 [GCC_PCIE1_AXI_MASTER_STICKY_ARES] = { 0x76040, 6 }, 4698 }; 4699 4700 static const struct of_device_id gcc_ipq8074_match_table[] = { 4701 { .compatible = "qcom,gcc-ipq8074" }, 4702 { } 4703 }; 4704 MODULE_DEVICE_TABLE(of, gcc_ipq8074_match_table); 4705 4706 static const struct regmap_config gcc_ipq8074_regmap_config = { 4707 .reg_bits = 32, 4708 .reg_stride = 4, 4709 .val_bits = 32, 4710 .max_register = 0x7fffc, 4711 .fast_io = true, 4712 }; 4713 4714 static const struct qcom_cc_desc gcc_ipq8074_desc = { 4715 .config = &gcc_ipq8074_regmap_config, 4716 .clks = gcc_ipq8074_clks, 4717 .num_clks = ARRAY_SIZE(gcc_ipq8074_clks), 4718 .resets = gcc_ipq8074_resets, 4719 .num_resets = ARRAY_SIZE(gcc_ipq8074_resets), 4720 }; 4721 4722 static int gcc_ipq8074_probe(struct platform_device *pdev) 4723 { 4724 int ret, i; 4725 4726 for (i = 0; i < ARRAY_SIZE(gcc_ipq8074_hws); i++) { 4727 ret = devm_clk_hw_register(&pdev->dev, gcc_ipq8074_hws[i]); 4728 if (ret) 4729 return ret; 4730 } 4731 4732 return qcom_cc_probe(pdev, &gcc_ipq8074_desc); 4733 } 4734 4735 static struct platform_driver gcc_ipq8074_driver = { 4736 .probe = gcc_ipq8074_probe, 4737 .driver = { 4738 .name = "qcom,gcc-ipq8074", 4739 .of_match_table = gcc_ipq8074_match_table, 4740 }, 4741 }; 4742 4743 static int __init gcc_ipq8074_init(void) 4744 { 4745 return platform_driver_register(&gcc_ipq8074_driver); 4746 } 4747 core_initcall(gcc_ipq8074_init); 4748 4749 static void __exit gcc_ipq8074_exit(void) 4750 { 4751 platform_driver_unregister(&gcc_ipq8074_driver); 4752 } 4753 module_exit(gcc_ipq8074_exit); 4754 4755 MODULE_DESCRIPTION("QCOM GCC IPQ8074 Driver"); 4756 MODULE_LICENSE("GPL v2"); 4757 MODULE_ALIAS("platform:gcc-ipq8074"); 4758