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