1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Copyright (c) 2021, The Linux Foundation. All rights reserved. 4 * Copyright (c) 2022, Linaro Ltd. 5 */ 6 7 #include <linux/clk-provider.h> 8 #include <linux/err.h> 9 #include <linux/kernel.h> 10 #include <linux/module.h> 11 #include <linux/pm_runtime.h> 12 #include <linux/of.h> 13 #include <linux/platform_device.h> 14 #include <linux/regmap.h> 15 16 #include <dt-bindings/clock/qcom,gcc-sc8280xp.h> 17 18 #include "clk-alpha-pll.h" 19 #include "clk-branch.h" 20 #include "clk-rcg.h" 21 #include "clk-regmap.h" 22 #include "clk-regmap-divider.h" 23 #include "clk-regmap-mux.h" 24 #include "clk-regmap-phy-mux.h" 25 #include "common.h" 26 #include "gdsc.h" 27 #include "reset.h" 28 29 /* Need to match the order of clocks in DT binding */ 30 enum { 31 DT_BI_TCXO, 32 DT_SLEEP_CLK, 33 DT_UFS_PHY_RX_SYMBOL_0_CLK, 34 DT_UFS_PHY_RX_SYMBOL_1_CLK, 35 DT_UFS_PHY_TX_SYMBOL_0_CLK, 36 DT_UFS_CARD_RX_SYMBOL_0_CLK, 37 DT_UFS_CARD_RX_SYMBOL_1_CLK, 38 DT_UFS_CARD_TX_SYMBOL_0_CLK, 39 DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 40 DT_GCC_USB4_PHY_PIPEGMUX_CLK_SRC, 41 DT_GCC_USB4_PHY_DP_GMUX_CLK_SRC, 42 DT_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC, 43 DT_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK, 44 DT_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 45 DT_QUSB4PHY_GCC_USB4_RX0_CLK, 46 DT_QUSB4PHY_GCC_USB4_RX1_CLK, 47 DT_USB3_UNI_PHY_SEC_GCC_USB30_PIPE_CLK, 48 DT_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC, 49 DT_GCC_USB4_1_PHY_DP_GMUX_CLK_SRC, 50 DT_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, 51 DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 52 DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 53 DT_QUSB4PHY_1_GCC_USB4_RX0_CLK, 54 DT_QUSB4PHY_1_GCC_USB4_RX1_CLK, 55 DT_USB3_UNI_PHY_MP_GCC_USB30_PIPE_0_CLK, 56 DT_USB3_UNI_PHY_MP_GCC_USB30_PIPE_1_CLK, 57 DT_PCIE_2A_PIPE_CLK, 58 DT_PCIE_2B_PIPE_CLK, 59 DT_PCIE_3A_PIPE_CLK, 60 DT_PCIE_3B_PIPE_CLK, 61 DT_PCIE_4_PIPE_CLK, 62 DT_RXC0_REF_CLK, 63 DT_RXC1_REF_CLK, 64 }; 65 66 enum { 67 P_BI_TCXO, 68 P_GCC_GPLL0_OUT_EVEN, 69 P_GCC_GPLL0_OUT_MAIN, 70 P_GCC_GPLL2_OUT_MAIN, 71 P_GCC_GPLL4_OUT_MAIN, 72 P_GCC_GPLL7_OUT_MAIN, 73 P_GCC_GPLL8_OUT_MAIN, 74 P_GCC_GPLL9_OUT_MAIN, 75 P_GCC_USB3_PRIM_PHY_PIPE_CLK_SRC, 76 P_GCC_USB3_SEC_PHY_PIPE_CLK_SRC, 77 P_GCC_USB4_1_PHY_DP_GMUX_CLK_SRC, 78 P_GCC_USB4_1_PHY_PCIE_PIPE_CLK_SRC, 79 P_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC, 80 P_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC, 81 P_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, 82 P_GCC_USB4_PHY_DP_GMUX_CLK_SRC, 83 P_GCC_USB4_PHY_PCIE_PIPE_CLK_SRC, 84 P_GCC_USB4_PHY_PCIE_PIPEGMUX_CLK_SRC, 85 P_GCC_USB4_PHY_PIPEGMUX_CLK_SRC, 86 P_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC, 87 P_QUSB4PHY_1_GCC_USB4_RX0_CLK, 88 P_QUSB4PHY_1_GCC_USB4_RX1_CLK, 89 P_QUSB4PHY_GCC_USB4_RX0_CLK, 90 P_QUSB4PHY_GCC_USB4_RX1_CLK, 91 P_RXC0_REF_CLK, 92 P_RXC1_REF_CLK, 93 P_SLEEP_CLK, 94 P_UFS_CARD_RX_SYMBOL_0_CLK, 95 P_UFS_CARD_RX_SYMBOL_1_CLK, 96 P_UFS_CARD_TX_SYMBOL_0_CLK, 97 P_UFS_PHY_RX_SYMBOL_0_CLK, 98 P_UFS_PHY_RX_SYMBOL_1_CLK, 99 P_UFS_PHY_TX_SYMBOL_0_CLK, 100 P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 101 P_USB3_UNI_PHY_MP_GCC_USB30_PIPE_0_CLK, 102 P_USB3_UNI_PHY_MP_GCC_USB30_PIPE_1_CLK, 103 P_USB3_UNI_PHY_SEC_GCC_USB30_PIPE_CLK, 104 P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 105 P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 106 P_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK, 107 P_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 108 }; 109 110 static const struct clk_parent_data gcc_parent_data_tcxo = { .index = DT_BI_TCXO }; 111 112 static struct clk_alpha_pll gcc_gpll0 = { 113 .offset = 0x0, 114 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 115 .clkr = { 116 .enable_reg = 0x52028, 117 .enable_mask = BIT(0), 118 .hw.init = &(const struct clk_init_data) { 119 .name = "gcc_gpll0", 120 .parent_data = &gcc_parent_data_tcxo, 121 .num_parents = 1, 122 .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops, 123 }, 124 }, 125 }; 126 127 static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = { 128 { 0x1, 2 }, 129 { } 130 }; 131 132 static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = { 133 .offset = 0x0, 134 .post_div_shift = 8, 135 .post_div_table = post_div_table_gcc_gpll0_out_even, 136 .num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even), 137 .width = 4, 138 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 139 .clkr.hw.init = &(const struct clk_init_data) { 140 .name = "gcc_gpll0_out_even", 141 .parent_hws = (const struct clk_hw*[]){ 142 &gcc_gpll0.clkr.hw, 143 }, 144 .num_parents = 1, 145 .ops = &clk_alpha_pll_postdiv_lucid_5lpe_ops, 146 }, 147 }; 148 149 static struct clk_alpha_pll gcc_gpll2 = { 150 .offset = 0x2000, 151 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 152 .clkr = { 153 .enable_reg = 0x52028, 154 .enable_mask = BIT(2), 155 .hw.init = &(const struct clk_init_data) { 156 .name = "gcc_gpll2", 157 .parent_data = &gcc_parent_data_tcxo, 158 .num_parents = 1, 159 .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops, 160 }, 161 }, 162 }; 163 164 static struct clk_alpha_pll gcc_gpll4 = { 165 .offset = 0x76000, 166 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 167 .clkr = { 168 .enable_reg = 0x52028, 169 .enable_mask = BIT(4), 170 .hw.init = &(const struct clk_init_data) { 171 .name = "gcc_gpll4", 172 .parent_data = &gcc_parent_data_tcxo, 173 .num_parents = 1, 174 .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops, 175 }, 176 }, 177 }; 178 179 static struct clk_alpha_pll gcc_gpll7 = { 180 .offset = 0x1a000, 181 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 182 .clkr = { 183 .enable_reg = 0x52028, 184 .enable_mask = BIT(7), 185 .hw.init = &(const struct clk_init_data) { 186 .name = "gcc_gpll7", 187 .parent_data = &gcc_parent_data_tcxo, 188 .num_parents = 1, 189 .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops, 190 }, 191 }, 192 }; 193 194 static struct clk_alpha_pll gcc_gpll8 = { 195 .offset = 0x1b000, 196 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 197 .clkr = { 198 .enable_reg = 0x52028, 199 .enable_mask = BIT(8), 200 .hw.init = &(const struct clk_init_data) { 201 .name = "gcc_gpll8", 202 .parent_data = &gcc_parent_data_tcxo, 203 .num_parents = 1, 204 .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops, 205 }, 206 }, 207 }; 208 209 static struct clk_alpha_pll gcc_gpll9 = { 210 .offset = 0x1c000, 211 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID], 212 .clkr = { 213 .enable_reg = 0x52028, 214 .enable_mask = BIT(9), 215 .hw.init = &(const struct clk_init_data) { 216 .name = "gcc_gpll9", 217 .parent_data = &gcc_parent_data_tcxo, 218 .num_parents = 1, 219 .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops, 220 }, 221 }, 222 }; 223 224 static struct clk_rcg2 gcc_usb4_1_phy_pcie_pipe_clk_src; 225 static struct clk_rcg2 gcc_usb4_phy_pcie_pipe_clk_src; 226 227 static const struct parent_map gcc_parent_map_0[] = { 228 { P_BI_TCXO, 0 }, 229 { P_GCC_GPLL0_OUT_MAIN, 1 }, 230 { P_GCC_GPLL0_OUT_EVEN, 6 }, 231 }; 232 233 static const struct clk_parent_data gcc_parent_data_0[] = { 234 { .index = DT_BI_TCXO }, 235 { .hw = &gcc_gpll0.clkr.hw }, 236 { .hw = &gcc_gpll0_out_even.clkr.hw }, 237 }; 238 239 static const struct parent_map gcc_parent_map_1[] = { 240 { P_BI_TCXO, 0 }, 241 { P_SLEEP_CLK, 5 }, 242 }; 243 244 static const struct clk_parent_data gcc_parent_data_1[] = { 245 { .index = DT_BI_TCXO }, 246 { .index = DT_SLEEP_CLK }, 247 }; 248 249 static const struct parent_map gcc_parent_map_2[] = { 250 { P_BI_TCXO, 0 }, 251 { P_GCC_GPLL0_OUT_MAIN, 1 }, 252 { P_SLEEP_CLK, 5 }, 253 { P_GCC_GPLL0_OUT_EVEN, 6 }, 254 }; 255 256 static const struct clk_parent_data gcc_parent_data_2[] = { 257 { .index = DT_BI_TCXO }, 258 { .hw = &gcc_gpll0.clkr.hw }, 259 { .index = DT_SLEEP_CLK }, 260 { .hw = &gcc_gpll0_out_even.clkr.hw }, 261 }; 262 263 static const struct parent_map gcc_parent_map_3[] = { 264 { P_BI_TCXO, 0 }, 265 }; 266 267 static const struct clk_parent_data gcc_parent_data_3[] = { 268 { .index = DT_BI_TCXO }, 269 }; 270 271 static const struct parent_map gcc_parent_map_4[] = { 272 { P_BI_TCXO, 0 }, 273 { P_GCC_GPLL7_OUT_MAIN, 2 }, 274 { P_GCC_GPLL4_OUT_MAIN, 5 }, 275 { P_GCC_GPLL0_OUT_EVEN, 6 }, 276 }; 277 278 static const struct clk_parent_data gcc_parent_data_4[] = { 279 { .index = DT_BI_TCXO }, 280 { .hw = &gcc_gpll7.clkr.hw }, 281 { .hw = &gcc_gpll4.clkr.hw }, 282 { .hw = &gcc_gpll0_out_even.clkr.hw }, 283 }; 284 285 static const struct parent_map gcc_parent_map_5[] = { 286 { P_BI_TCXO, 0 }, 287 { P_GCC_GPLL0_OUT_MAIN, 1 }, 288 { P_GCC_GPLL8_OUT_MAIN, 2 }, 289 { P_GCC_GPLL0_OUT_EVEN, 6 }, 290 }; 291 292 static const struct clk_parent_data gcc_parent_data_5[] = { 293 { .index = DT_BI_TCXO }, 294 { .hw = &gcc_gpll0.clkr.hw }, 295 { .hw = &gcc_gpll8.clkr.hw }, 296 { .hw = &gcc_gpll0_out_even.clkr.hw }, 297 }; 298 299 static const struct parent_map gcc_parent_map_6[] = { 300 { P_BI_TCXO, 0 }, 301 { P_GCC_GPLL0_OUT_MAIN, 1 }, 302 { P_GCC_GPLL7_OUT_MAIN, 2 }, 303 }; 304 305 static const struct clk_parent_data gcc_parent_data_6[] = { 306 { .index = DT_BI_TCXO }, 307 { .hw = &gcc_gpll0.clkr.hw }, 308 { .hw = &gcc_gpll7.clkr.hw }, 309 }; 310 311 static const struct parent_map gcc_parent_map_7[] = { 312 { P_BI_TCXO, 0 }, 313 { P_GCC_GPLL0_OUT_MAIN, 1 }, 314 { P_GCC_GPLL2_OUT_MAIN, 2 }, 315 }; 316 317 static const struct clk_parent_data gcc_parent_data_7[] = { 318 { .index = DT_BI_TCXO }, 319 { .hw = &gcc_gpll0.clkr.hw }, 320 { .hw = &gcc_gpll2.clkr.hw }, 321 }; 322 323 static const struct parent_map gcc_parent_map_8[] = { 324 { P_BI_TCXO, 0 }, 325 { P_GCC_GPLL7_OUT_MAIN, 2 }, 326 { P_RXC0_REF_CLK, 3 }, 327 { P_GCC_GPLL0_OUT_EVEN, 6 }, 328 }; 329 330 static const struct clk_parent_data gcc_parent_data_8[] = { 331 { .index = DT_BI_TCXO }, 332 { .hw = &gcc_gpll7.clkr.hw }, 333 { .index = DT_RXC0_REF_CLK }, 334 { .hw = &gcc_gpll0_out_even.clkr.hw }, 335 }; 336 337 static const struct parent_map gcc_parent_map_9[] = { 338 { P_BI_TCXO, 0 }, 339 { P_GCC_GPLL7_OUT_MAIN, 2 }, 340 { P_RXC1_REF_CLK, 3 }, 341 { P_GCC_GPLL0_OUT_EVEN, 6 }, 342 }; 343 344 static const struct clk_parent_data gcc_parent_data_9[] = { 345 { .index = DT_BI_TCXO }, 346 { .hw = &gcc_gpll7.clkr.hw }, 347 { .index = DT_RXC1_REF_CLK }, 348 { .hw = &gcc_gpll0_out_even.clkr.hw }, 349 }; 350 351 static const struct parent_map gcc_parent_map_15[] = { 352 { P_BI_TCXO, 0 }, 353 { P_GCC_GPLL0_OUT_MAIN, 1 }, 354 { P_GCC_GPLL9_OUT_MAIN, 2 }, 355 { P_GCC_GPLL4_OUT_MAIN, 5 }, 356 { P_GCC_GPLL0_OUT_EVEN, 6 }, 357 }; 358 359 static const struct clk_parent_data gcc_parent_data_15[] = { 360 { .index = DT_BI_TCXO }, 361 { .hw = &gcc_gpll0.clkr.hw }, 362 { .hw = &gcc_gpll9.clkr.hw }, 363 { .hw = &gcc_gpll4.clkr.hw }, 364 { .hw = &gcc_gpll0_out_even.clkr.hw }, 365 }; 366 367 static const struct parent_map gcc_parent_map_16[] = { 368 { P_UFS_CARD_RX_SYMBOL_0_CLK, 0 }, 369 { P_BI_TCXO, 2 }, 370 }; 371 372 static const struct clk_parent_data gcc_parent_data_16[] = { 373 { .index = DT_UFS_CARD_RX_SYMBOL_0_CLK }, 374 { .index = DT_BI_TCXO }, 375 }; 376 377 static const struct parent_map gcc_parent_map_17[] = { 378 { P_UFS_CARD_RX_SYMBOL_1_CLK, 0 }, 379 { P_BI_TCXO, 2 }, 380 }; 381 382 static const struct clk_parent_data gcc_parent_data_17[] = { 383 { .index = DT_UFS_CARD_RX_SYMBOL_1_CLK }, 384 { .index = DT_BI_TCXO }, 385 }; 386 387 static const struct parent_map gcc_parent_map_18[] = { 388 { P_UFS_CARD_TX_SYMBOL_0_CLK, 0 }, 389 { P_BI_TCXO, 2 }, 390 }; 391 392 static const struct clk_parent_data gcc_parent_data_18[] = { 393 { .index = DT_UFS_CARD_TX_SYMBOL_0_CLK }, 394 { .index = DT_BI_TCXO }, 395 }; 396 397 static const struct parent_map gcc_parent_map_19[] = { 398 { P_UFS_PHY_RX_SYMBOL_0_CLK, 0 }, 399 { P_BI_TCXO, 2 }, 400 }; 401 402 static const struct clk_parent_data gcc_parent_data_19[] = { 403 { .index = DT_UFS_PHY_RX_SYMBOL_0_CLK }, 404 { .index = DT_BI_TCXO }, 405 }; 406 407 static const struct parent_map gcc_parent_map_20[] = { 408 { P_UFS_PHY_RX_SYMBOL_1_CLK, 0 }, 409 { P_BI_TCXO, 2 }, 410 }; 411 412 static const struct clk_parent_data gcc_parent_data_20[] = { 413 { .index = DT_UFS_PHY_RX_SYMBOL_1_CLK }, 414 { .index = DT_BI_TCXO }, 415 }; 416 417 static const struct parent_map gcc_parent_map_21[] = { 418 { P_UFS_PHY_TX_SYMBOL_0_CLK, 0 }, 419 { P_BI_TCXO, 2 }, 420 }; 421 422 static const struct clk_parent_data gcc_parent_data_21[] = { 423 { .index = DT_UFS_PHY_TX_SYMBOL_0_CLK }, 424 { .index = DT_BI_TCXO }, 425 }; 426 427 static const struct parent_map gcc_parent_map_22[] = { 428 { P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 0 }, 429 { P_BI_TCXO, 2 }, 430 }; 431 432 static const struct clk_parent_data gcc_parent_data_22[] = { 433 { .index = DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK }, 434 { .index = DT_BI_TCXO }, 435 }; 436 437 static const struct parent_map gcc_parent_map_23[] = { 438 { P_USB3_UNI_PHY_SEC_GCC_USB30_PIPE_CLK, 0 }, 439 { P_BI_TCXO, 2 }, 440 }; 441 442 static const struct clk_parent_data gcc_parent_data_23[] = { 443 { .index = DT_USB3_UNI_PHY_SEC_GCC_USB30_PIPE_CLK }, 444 { .index = DT_BI_TCXO }, 445 }; 446 447 static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = { 448 .reg = 0xf060, 449 .shift = 0, 450 .width = 2, 451 .parent_map = gcc_parent_map_22, 452 .clkr = { 453 .hw.init = &(const struct clk_init_data) { 454 .name = "gcc_usb3_prim_phy_pipe_clk_src", 455 .parent_data = gcc_parent_data_22, 456 .num_parents = ARRAY_SIZE(gcc_parent_data_22), 457 .ops = &clk_regmap_mux_closest_ops, 458 }, 459 }, 460 }; 461 462 static struct clk_regmap_mux gcc_usb3_sec_phy_pipe_clk_src = { 463 .reg = 0x10060, 464 .shift = 0, 465 .width = 2, 466 .parent_map = gcc_parent_map_23, 467 .clkr = { 468 .hw.init = &(const struct clk_init_data) { 469 .name = "gcc_usb3_sec_phy_pipe_clk_src", 470 .parent_data = gcc_parent_data_23, 471 .num_parents = ARRAY_SIZE(gcc_parent_data_23), 472 .ops = &clk_regmap_mux_closest_ops, 473 }, 474 }, 475 }; 476 477 static const struct parent_map gcc_parent_map_24[] = { 478 { P_USB3_UNI_PHY_MP_GCC_USB30_PIPE_0_CLK, 0 }, 479 { P_BI_TCXO, 2 }, 480 }; 481 482 static const struct clk_parent_data gcc_parent_data_24[] = { 483 { .index = DT_USB3_UNI_PHY_MP_GCC_USB30_PIPE_0_CLK }, 484 { .index = DT_BI_TCXO }, 485 }; 486 487 static const struct parent_map gcc_parent_map_25[] = { 488 { P_USB3_UNI_PHY_MP_GCC_USB30_PIPE_1_CLK, 0 }, 489 { P_BI_TCXO, 2 }, 490 }; 491 492 static const struct clk_parent_data gcc_parent_data_25[] = { 493 { .index = DT_USB3_UNI_PHY_MP_GCC_USB30_PIPE_1_CLK }, 494 { .index = DT_BI_TCXO }, 495 }; 496 497 static const struct parent_map gcc_parent_map_26[] = { 498 { P_GCC_USB3_PRIM_PHY_PIPE_CLK_SRC, 0 }, 499 { P_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 1 }, 500 { P_GCC_USB4_PHY_PIPEGMUX_CLK_SRC, 3 }, 501 }; 502 503 static const struct clk_parent_data gcc_parent_data_26[] = { 504 { .hw = &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw }, 505 { .index = DT_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, 506 { .index = DT_GCC_USB4_PHY_PIPEGMUX_CLK_SRC }, 507 }; 508 509 static const struct parent_map gcc_parent_map_27[] = { 510 { P_GCC_USB3_SEC_PHY_PIPE_CLK_SRC, 0 }, 511 { P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 1 }, 512 { P_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC, 3 }, 513 }; 514 515 static const struct clk_parent_data gcc_parent_data_27[] = { 516 { .hw = &gcc_usb3_sec_phy_pipe_clk_src.clkr.hw }, 517 { .index = DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, 518 { .index = DT_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC }, 519 }; 520 521 static const struct parent_map gcc_parent_map_28[] = { 522 { P_GCC_USB4_1_PHY_DP_GMUX_CLK_SRC, 0 }, 523 { P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, 524 }; 525 526 static const struct clk_parent_data gcc_parent_data_28[] = { 527 { .index = DT_GCC_USB4_1_PHY_DP_GMUX_CLK_SRC }, 528 { .index = DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, 529 }; 530 531 static const struct parent_map gcc_parent_map_29[] = { 532 { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 }, 533 { P_BI_TCXO, 2 }, 534 }; 535 536 static const struct clk_parent_data gcc_parent_data_29[] = { 537 { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK }, 538 { .index = DT_BI_TCXO }, 539 }; 540 541 static const struct parent_map gcc_parent_map_30[] = { 542 { P_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, 0 }, 543 { P_GCC_USB4_1_PHY_PCIE_PIPE_CLK_SRC, 1 }, 544 }; 545 546 static const struct clk_parent_data gcc_parent_data_30[] = { 547 { .index = DT_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC }, 548 { .hw = &gcc_usb4_1_phy_pcie_pipe_clk_src.clkr.hw }, 549 }; 550 551 static struct clk_regmap_mux gcc_usb4_1_phy_pcie_pipegmux_clk_src = { 552 .reg = 0xb80dc, 553 .shift = 0, 554 .width = 1, 555 .parent_map = gcc_parent_map_30, 556 .clkr = { 557 .hw.init = &(const struct clk_init_data) { 558 .name = "gcc_usb4_1_phy_pcie_pipegmux_clk_src", 559 .parent_data = gcc_parent_data_30, 560 .num_parents = ARRAY_SIZE(gcc_parent_data_30), 561 .ops = &clk_regmap_mux_closest_ops, 562 }, 563 }, 564 }; 565 566 static const struct parent_map gcc_parent_map_31[] = { 567 { P_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 }, 568 { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 }, 569 }; 570 571 static const struct clk_parent_data gcc_parent_data_31[] = { 572 { .hw = &gcc_usb4_1_phy_pcie_pipegmux_clk_src.clkr.hw }, 573 { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK }, 574 }; 575 576 static const struct parent_map gcc_parent_map_32[] = { 577 { P_QUSB4PHY_1_GCC_USB4_RX0_CLK, 0 }, 578 { P_BI_TCXO, 2 }, 579 }; 580 581 static const struct clk_parent_data gcc_parent_data_32[] = { 582 { .index = DT_QUSB4PHY_1_GCC_USB4_RX0_CLK }, 583 { .index = DT_BI_TCXO }, 584 }; 585 586 static const struct parent_map gcc_parent_map_33[] = { 587 { P_QUSB4PHY_1_GCC_USB4_RX1_CLK, 0 }, 588 { P_BI_TCXO, 2 }, 589 }; 590 591 static const struct clk_parent_data gcc_parent_data_33[] = { 592 { .index = DT_QUSB4PHY_1_GCC_USB4_RX1_CLK }, 593 { .index = DT_BI_TCXO }, 594 }; 595 596 static const struct parent_map gcc_parent_map_34[] = { 597 { P_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, 0 }, 598 { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 }, 599 }; 600 601 static const struct clk_parent_data gcc_parent_data_34[] = { 602 { .index = DT_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC }, 603 { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK }, 604 }; 605 606 static const struct parent_map gcc_parent_map_35[] = { 607 { P_GCC_USB4_PHY_DP_GMUX_CLK_SRC, 0 }, 608 { P_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, 609 }; 610 611 static const struct clk_parent_data gcc_parent_data_35[] = { 612 { .index = DT_GCC_USB4_PHY_DP_GMUX_CLK_SRC }, 613 { .index = DT_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, 614 }; 615 616 static const struct parent_map gcc_parent_map_36[] = { 617 { P_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 }, 618 { P_BI_TCXO, 2 }, 619 }; 620 621 static const struct clk_parent_data gcc_parent_data_36[] = { 622 { .index = DT_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK }, 623 { .index = DT_BI_TCXO }, 624 }; 625 626 static const struct parent_map gcc_parent_map_37[] = { 627 { P_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC, 0 }, 628 { P_GCC_USB4_PHY_PCIE_PIPE_CLK_SRC, 1 }, 629 }; 630 631 static const struct clk_parent_data gcc_parent_data_37[] = { 632 { .index = DT_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC }, 633 { .hw = &gcc_usb4_phy_pcie_pipe_clk_src.clkr.hw }, 634 }; 635 636 static struct clk_regmap_mux gcc_usb4_phy_pcie_pipegmux_clk_src = { 637 .reg = 0x2a0dc, 638 .shift = 0, 639 .width = 1, 640 .parent_map = gcc_parent_map_37, 641 .clkr = { 642 .hw.init = &(const struct clk_init_data) { 643 .name = "gcc_usb4_phy_pcie_pipegmux_clk_src", 644 .parent_data = gcc_parent_data_37, 645 .num_parents = ARRAY_SIZE(gcc_parent_data_37), 646 .ops = &clk_regmap_mux_closest_ops, 647 }, 648 }, 649 }; 650 651 static const struct parent_map gcc_parent_map_38[] = { 652 { P_GCC_USB4_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 }, 653 { P_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 }, 654 }; 655 656 static const struct clk_parent_data gcc_parent_data_38[] = { 657 { .hw = &gcc_usb4_phy_pcie_pipegmux_clk_src.clkr.hw }, 658 { .index = DT_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK }, 659 }; 660 661 static const struct parent_map gcc_parent_map_39[] = { 662 { P_QUSB4PHY_GCC_USB4_RX0_CLK, 0 }, 663 { P_BI_TCXO, 2 }, 664 }; 665 666 static const struct clk_parent_data gcc_parent_data_39[] = { 667 { .index = DT_QUSB4PHY_GCC_USB4_RX0_CLK }, 668 { .index = DT_BI_TCXO }, 669 }; 670 671 static const struct parent_map gcc_parent_map_40[] = { 672 { P_QUSB4PHY_GCC_USB4_RX1_CLK, 0 }, 673 { P_BI_TCXO, 2 }, 674 }; 675 676 static const struct clk_parent_data gcc_parent_data_40[] = { 677 { .index = DT_QUSB4PHY_GCC_USB4_RX1_CLK }, 678 { .index = DT_BI_TCXO }, 679 }; 680 681 static const struct parent_map gcc_parent_map_41[] = { 682 { P_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC, 0 }, 683 { P_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 }, 684 }; 685 686 static const struct clk_parent_data gcc_parent_data_41[] = { 687 { .index = DT_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC }, 688 { .index = DT_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK }, 689 }; 690 691 static struct clk_regmap_phy_mux gcc_pcie_2a_pipe_clk_src = { 692 .reg = 0x9d05c, 693 .clkr = { 694 .hw.init = &(const struct clk_init_data) { 695 .name = "gcc_pcie_2a_pipe_clk_src", 696 .parent_data = &(const struct clk_parent_data){ 697 .index = DT_PCIE_2A_PIPE_CLK, 698 }, 699 .num_parents = 1, 700 .ops = &clk_regmap_phy_mux_ops, 701 }, 702 }, 703 }; 704 705 static struct clk_regmap_phy_mux gcc_pcie_2b_pipe_clk_src = { 706 .reg = 0x9e05c, 707 .clkr = { 708 .hw.init = &(const struct clk_init_data) { 709 .name = "gcc_pcie_2b_pipe_clk_src", 710 .parent_data = &(const struct clk_parent_data){ 711 .index = DT_PCIE_2B_PIPE_CLK, 712 }, 713 .num_parents = 1, 714 .ops = &clk_regmap_phy_mux_ops, 715 }, 716 }, 717 }; 718 719 static struct clk_regmap_phy_mux gcc_pcie_3a_pipe_clk_src = { 720 .reg = 0xa005c, 721 .clkr = { 722 .hw.init = &(const struct clk_init_data) { 723 .name = "gcc_pcie_3a_pipe_clk_src", 724 .parent_data = &(const struct clk_parent_data){ 725 .index = DT_PCIE_3A_PIPE_CLK, 726 }, 727 .num_parents = 1, 728 .ops = &clk_regmap_phy_mux_ops, 729 }, 730 }, 731 }; 732 733 static struct clk_regmap_phy_mux gcc_pcie_3b_pipe_clk_src = { 734 .reg = 0xa205c, 735 .clkr = { 736 .hw.init = &(const struct clk_init_data) { 737 .name = "gcc_pcie_3b_pipe_clk_src", 738 .parent_data = &(const struct clk_parent_data){ 739 .index = DT_PCIE_3B_PIPE_CLK, 740 }, 741 .num_parents = 1, 742 .ops = &clk_regmap_phy_mux_ops, 743 }, 744 }, 745 }; 746 747 static struct clk_regmap_phy_mux gcc_pcie_4_pipe_clk_src = { 748 .reg = 0x6b05c, 749 .clkr = { 750 .hw.init = &(const struct clk_init_data) { 751 .name = "gcc_pcie_4_pipe_clk_src", 752 .parent_data = &(const struct clk_parent_data){ 753 .index = DT_PCIE_4_PIPE_CLK, 754 }, 755 .num_parents = 1, 756 .ops = &clk_regmap_phy_mux_ops, 757 }, 758 }, 759 }; 760 761 static struct clk_regmap_mux gcc_ufs_card_rx_symbol_0_clk_src = { 762 .reg = 0x75058, 763 .shift = 0, 764 .width = 2, 765 .parent_map = gcc_parent_map_16, 766 .clkr = { 767 .hw.init = &(const struct clk_init_data) { 768 .name = "gcc_ufs_card_rx_symbol_0_clk_src", 769 .parent_data = gcc_parent_data_16, 770 .num_parents = ARRAY_SIZE(gcc_parent_data_16), 771 .ops = &clk_regmap_mux_closest_ops, 772 }, 773 }, 774 }; 775 776 static struct clk_regmap_mux gcc_ufs_card_rx_symbol_1_clk_src = { 777 .reg = 0x750c8, 778 .shift = 0, 779 .width = 2, 780 .parent_map = gcc_parent_map_17, 781 .clkr = { 782 .hw.init = &(const struct clk_init_data) { 783 .name = "gcc_ufs_card_rx_symbol_1_clk_src", 784 .parent_data = gcc_parent_data_17, 785 .num_parents = ARRAY_SIZE(gcc_parent_data_17), 786 .ops = &clk_regmap_mux_closest_ops, 787 }, 788 }, 789 }; 790 791 static struct clk_regmap_mux gcc_ufs_card_tx_symbol_0_clk_src = { 792 .reg = 0x75048, 793 .shift = 0, 794 .width = 2, 795 .parent_map = gcc_parent_map_18, 796 .clkr = { 797 .hw.init = &(const struct clk_init_data) { 798 .name = "gcc_ufs_card_tx_symbol_0_clk_src", 799 .parent_data = gcc_parent_data_18, 800 .num_parents = ARRAY_SIZE(gcc_parent_data_18), 801 .ops = &clk_regmap_mux_closest_ops, 802 }, 803 }, 804 }; 805 806 static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src = { 807 .reg = 0x77058, 808 .shift = 0, 809 .width = 2, 810 .parent_map = gcc_parent_map_19, 811 .clkr = { 812 .hw.init = &(const struct clk_init_data) { 813 .name = "gcc_ufs_phy_rx_symbol_0_clk_src", 814 .parent_data = gcc_parent_data_19, 815 .num_parents = ARRAY_SIZE(gcc_parent_data_19), 816 .ops = &clk_regmap_mux_closest_ops, 817 }, 818 }, 819 }; 820 821 static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src = { 822 .reg = 0x770c8, 823 .shift = 0, 824 .width = 2, 825 .parent_map = gcc_parent_map_20, 826 .clkr = { 827 .hw.init = &(const struct clk_init_data) { 828 .name = "gcc_ufs_phy_rx_symbol_1_clk_src", 829 .parent_data = gcc_parent_data_20, 830 .num_parents = ARRAY_SIZE(gcc_parent_data_20), 831 .ops = &clk_regmap_mux_closest_ops, 832 }, 833 }, 834 }; 835 836 static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src = { 837 .reg = 0x77048, 838 .shift = 0, 839 .width = 2, 840 .parent_map = gcc_parent_map_21, 841 .clkr = { 842 .hw.init = &(const struct clk_init_data) { 843 .name = "gcc_ufs_phy_tx_symbol_0_clk_src", 844 .parent_data = gcc_parent_data_21, 845 .num_parents = ARRAY_SIZE(gcc_parent_data_21), 846 .ops = &clk_regmap_mux_closest_ops, 847 }, 848 }, 849 }; 850 851 static struct clk_regmap_mux gcc_usb34_prim_phy_pipe_clk_src = { 852 .reg = 0xf064, 853 .shift = 0, 854 .width = 2, 855 .parent_map = gcc_parent_map_26, 856 .clkr = { 857 .hw.init = &(const struct clk_init_data) { 858 .name = "gcc_usb34_prim_phy_pipe_clk_src", 859 .parent_data = gcc_parent_data_26, 860 .num_parents = ARRAY_SIZE(gcc_parent_data_26), 861 .ops = &clk_regmap_mux_closest_ops, 862 }, 863 }, 864 }; 865 866 static struct clk_regmap_mux gcc_usb34_sec_phy_pipe_clk_src = { 867 .reg = 0x10064, 868 .shift = 0, 869 .width = 2, 870 .parent_map = gcc_parent_map_27, 871 .clkr = { 872 .hw.init = &(const struct clk_init_data) { 873 .name = "gcc_usb34_sec_phy_pipe_clk_src", 874 .parent_data = gcc_parent_data_27, 875 .num_parents = ARRAY_SIZE(gcc_parent_data_27), 876 .ops = &clk_regmap_mux_closest_ops, 877 }, 878 }, 879 }; 880 881 static struct clk_regmap_mux gcc_usb3_mp_phy_pipe_0_clk_src = { 882 .reg = 0xab060, 883 .shift = 0, 884 .width = 2, 885 .parent_map = gcc_parent_map_24, 886 .clkr = { 887 .hw.init = &(const struct clk_init_data) { 888 .name = "gcc_usb3_mp_phy_pipe_0_clk_src", 889 .parent_data = gcc_parent_data_24, 890 .num_parents = ARRAY_SIZE(gcc_parent_data_24), 891 .ops = &clk_regmap_mux_closest_ops, 892 }, 893 }, 894 }; 895 896 static struct clk_regmap_mux gcc_usb3_mp_phy_pipe_1_clk_src = { 897 .reg = 0xab068, 898 .shift = 0, 899 .width = 2, 900 .parent_map = gcc_parent_map_25, 901 .clkr = { 902 .hw.init = &(const struct clk_init_data) { 903 .name = "gcc_usb3_mp_phy_pipe_1_clk_src", 904 .parent_data = gcc_parent_data_25, 905 .num_parents = ARRAY_SIZE(gcc_parent_data_25), 906 .ops = &clk_regmap_mux_closest_ops, 907 }, 908 }, 909 }; 910 911 static struct clk_regmap_mux gcc_usb4_1_phy_dp_clk_src = { 912 .reg = 0xb8050, 913 .shift = 0, 914 .width = 2, 915 .parent_map = gcc_parent_map_28, 916 .clkr = { 917 .hw.init = &(const struct clk_init_data) { 918 .name = "gcc_usb4_1_phy_dp_clk_src", 919 .parent_data = gcc_parent_data_28, 920 .num_parents = ARRAY_SIZE(gcc_parent_data_28), 921 .ops = &clk_regmap_mux_closest_ops, 922 }, 923 }, 924 }; 925 926 static struct clk_regmap_mux gcc_usb4_1_phy_p2rr2p_pipe_clk_src = { 927 .reg = 0xb80b0, 928 .shift = 0, 929 .width = 2, 930 .parent_map = gcc_parent_map_29, 931 .clkr = { 932 .hw.init = &(const struct clk_init_data) { 933 .name = "gcc_usb4_1_phy_p2rr2p_pipe_clk_src", 934 .parent_data = gcc_parent_data_29, 935 .num_parents = ARRAY_SIZE(gcc_parent_data_29), 936 .ops = &clk_regmap_mux_closest_ops, 937 }, 938 }, 939 }; 940 941 static struct clk_regmap_mux gcc_usb4_1_phy_pcie_pipe_mux_clk_src = { 942 .reg = 0xb80e0, 943 .shift = 0, 944 .width = 2, 945 .parent_map = gcc_parent_map_31, 946 .clkr = { 947 .hw.init = &(const struct clk_init_data) { 948 .name = "gcc_usb4_1_phy_pcie_pipe_mux_clk_src", 949 .parent_data = gcc_parent_data_31, 950 .num_parents = ARRAY_SIZE(gcc_parent_data_31), 951 .ops = &clk_regmap_mux_closest_ops, 952 }, 953 }, 954 }; 955 956 static struct clk_regmap_mux gcc_usb4_1_phy_rx0_clk_src = { 957 .reg = 0xb8090, 958 .shift = 0, 959 .width = 2, 960 .parent_map = gcc_parent_map_32, 961 .clkr = { 962 .hw.init = &(const struct clk_init_data) { 963 .name = "gcc_usb4_1_phy_rx0_clk_src", 964 .parent_data = gcc_parent_data_32, 965 .num_parents = ARRAY_SIZE(gcc_parent_data_32), 966 .ops = &clk_regmap_mux_closest_ops, 967 }, 968 }, 969 }; 970 971 static struct clk_regmap_mux gcc_usb4_1_phy_rx1_clk_src = { 972 .reg = 0xb809c, 973 .shift = 0, 974 .width = 2, 975 .parent_map = gcc_parent_map_33, 976 .clkr = { 977 .hw.init = &(const struct clk_init_data) { 978 .name = "gcc_usb4_1_phy_rx1_clk_src", 979 .parent_data = gcc_parent_data_33, 980 .num_parents = ARRAY_SIZE(gcc_parent_data_33), 981 .ops = &clk_regmap_mux_closest_ops, 982 }, 983 }, 984 }; 985 986 static struct clk_regmap_mux gcc_usb4_1_phy_sys_clk_src = { 987 .reg = 0xb80c0, 988 .shift = 0, 989 .width = 2, 990 .parent_map = gcc_parent_map_34, 991 .clkr = { 992 .hw.init = &(const struct clk_init_data) { 993 .name = "gcc_usb4_1_phy_sys_clk_src", 994 .parent_data = gcc_parent_data_34, 995 .num_parents = ARRAY_SIZE(gcc_parent_data_34), 996 .ops = &clk_regmap_mux_closest_ops, 997 }, 998 }, 999 }; 1000 1001 static struct clk_regmap_mux gcc_usb4_phy_dp_clk_src = { 1002 .reg = 0x2a050, 1003 .shift = 0, 1004 .width = 2, 1005 .parent_map = gcc_parent_map_35, 1006 .clkr = { 1007 .hw.init = &(const struct clk_init_data) { 1008 .name = "gcc_usb4_phy_dp_clk_src", 1009 .parent_data = gcc_parent_data_35, 1010 .num_parents = ARRAY_SIZE(gcc_parent_data_35), 1011 .ops = &clk_regmap_mux_closest_ops, 1012 }, 1013 }, 1014 }; 1015 1016 static struct clk_regmap_mux gcc_usb4_phy_p2rr2p_pipe_clk_src = { 1017 .reg = 0x2a0b0, 1018 .shift = 0, 1019 .width = 2, 1020 .parent_map = gcc_parent_map_36, 1021 .clkr = { 1022 .hw.init = &(const struct clk_init_data) { 1023 .name = "gcc_usb4_phy_p2rr2p_pipe_clk_src", 1024 .parent_data = gcc_parent_data_36, 1025 .num_parents = ARRAY_SIZE(gcc_parent_data_36), 1026 .ops = &clk_regmap_mux_closest_ops, 1027 }, 1028 }, 1029 }; 1030 1031 static struct clk_regmap_mux gcc_usb4_phy_pcie_pipe_mux_clk_src = { 1032 .reg = 0x2a0e0, 1033 .shift = 0, 1034 .width = 2, 1035 .parent_map = gcc_parent_map_38, 1036 .clkr = { 1037 .hw.init = &(const struct clk_init_data) { 1038 .name = "gcc_usb4_phy_pcie_pipe_mux_clk_src", 1039 .parent_data = gcc_parent_data_38, 1040 .num_parents = ARRAY_SIZE(gcc_parent_data_38), 1041 .ops = &clk_regmap_mux_closest_ops, 1042 }, 1043 }, 1044 }; 1045 1046 static struct clk_regmap_mux gcc_usb4_phy_rx0_clk_src = { 1047 .reg = 0x2a090, 1048 .shift = 0, 1049 .width = 2, 1050 .parent_map = gcc_parent_map_39, 1051 .clkr = { 1052 .hw.init = &(const struct clk_init_data) { 1053 .name = "gcc_usb4_phy_rx0_clk_src", 1054 .parent_data = gcc_parent_data_39, 1055 .num_parents = ARRAY_SIZE(gcc_parent_data_39), 1056 .ops = &clk_regmap_mux_closest_ops, 1057 }, 1058 }, 1059 }; 1060 1061 static struct clk_regmap_mux gcc_usb4_phy_rx1_clk_src = { 1062 .reg = 0x2a09c, 1063 .shift = 0, 1064 .width = 2, 1065 .parent_map = gcc_parent_map_40, 1066 .clkr = { 1067 .hw.init = &(const struct clk_init_data) { 1068 .name = "gcc_usb4_phy_rx1_clk_src", 1069 .parent_data = gcc_parent_data_40, 1070 .num_parents = ARRAY_SIZE(gcc_parent_data_40), 1071 .ops = &clk_regmap_mux_closest_ops, 1072 }, 1073 }, 1074 }; 1075 1076 static struct clk_regmap_mux gcc_usb4_phy_sys_clk_src = { 1077 .reg = 0x2a0c0, 1078 .shift = 0, 1079 .width = 2, 1080 .parent_map = gcc_parent_map_41, 1081 .clkr = { 1082 .hw.init = &(const struct clk_init_data) { 1083 .name = "gcc_usb4_phy_sys_clk_src", 1084 .parent_data = gcc_parent_data_41, 1085 .num_parents = ARRAY_SIZE(gcc_parent_data_41), 1086 .ops = &clk_regmap_mux_closest_ops, 1087 }, 1088 }, 1089 }; 1090 1091 static const struct freq_tbl ftbl_gcc_emac0_ptp_clk_src[] = { 1092 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 1093 F(125000000, P_GCC_GPLL7_OUT_MAIN, 4, 0, 0), 1094 F(230400000, P_GCC_GPLL4_OUT_MAIN, 3.5, 0, 0), 1095 { } 1096 }; 1097 1098 static struct clk_rcg2 gcc_emac0_ptp_clk_src = { 1099 .cmd_rcgr = 0xaa020, 1100 .mnd_width = 0, 1101 .hid_width = 5, 1102 .parent_map = gcc_parent_map_4, 1103 .freq_tbl = ftbl_gcc_emac0_ptp_clk_src, 1104 .clkr.hw.init = &(const struct clk_init_data) { 1105 .name = "gcc_emac0_ptp_clk_src", 1106 .parent_data = gcc_parent_data_4, 1107 .num_parents = ARRAY_SIZE(gcc_parent_data_4), 1108 .ops = &clk_rcg2_shared_ops, 1109 }, 1110 }; 1111 1112 static const struct freq_tbl ftbl_gcc_emac0_rgmii_clk_src[] = { 1113 F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0), 1114 F(125000000, P_GCC_GPLL7_OUT_MAIN, 4, 0, 0), 1115 F(250000000, P_GCC_GPLL7_OUT_MAIN, 2, 0, 0), 1116 { } 1117 }; 1118 1119 static struct clk_rcg2 gcc_emac0_rgmii_clk_src = { 1120 .cmd_rcgr = 0xaa040, 1121 .mnd_width = 8, 1122 .hid_width = 5, 1123 .parent_map = gcc_parent_map_8, 1124 .freq_tbl = ftbl_gcc_emac0_rgmii_clk_src, 1125 .clkr.hw.init = &(const struct clk_init_data) { 1126 .name = "gcc_emac0_rgmii_clk_src", 1127 .parent_data = gcc_parent_data_8, 1128 .num_parents = ARRAY_SIZE(gcc_parent_data_8), 1129 .ops = &clk_rcg2_shared_ops, 1130 }, 1131 }; 1132 1133 static struct clk_rcg2 gcc_emac1_ptp_clk_src = { 1134 .cmd_rcgr = 0xba020, 1135 .mnd_width = 0, 1136 .hid_width = 5, 1137 .parent_map = gcc_parent_map_4, 1138 .freq_tbl = ftbl_gcc_emac0_ptp_clk_src, 1139 .clkr.hw.init = &(const struct clk_init_data) { 1140 .name = "gcc_emac1_ptp_clk_src", 1141 .parent_data = gcc_parent_data_4, 1142 .num_parents = ARRAY_SIZE(gcc_parent_data_4), 1143 .ops = &clk_rcg2_shared_ops, 1144 }, 1145 }; 1146 1147 static struct clk_rcg2 gcc_emac1_rgmii_clk_src = { 1148 .cmd_rcgr = 0xba040, 1149 .mnd_width = 8, 1150 .hid_width = 5, 1151 .parent_map = gcc_parent_map_9, 1152 .freq_tbl = ftbl_gcc_emac0_rgmii_clk_src, 1153 .clkr.hw.init = &(const struct clk_init_data) { 1154 .name = "gcc_emac1_rgmii_clk_src", 1155 .parent_data = gcc_parent_data_9, 1156 .num_parents = ARRAY_SIZE(gcc_parent_data_9), 1157 .ops = &clk_rcg2_shared_ops, 1158 }, 1159 }; 1160 1161 static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = { 1162 F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0), 1163 F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 1164 F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0), 1165 { } 1166 }; 1167 1168 static struct clk_rcg2 gcc_gp1_clk_src = { 1169 .cmd_rcgr = 0x64004, 1170 .mnd_width = 16, 1171 .hid_width = 5, 1172 .parent_map = gcc_parent_map_2, 1173 .freq_tbl = ftbl_gcc_gp1_clk_src, 1174 .clkr.hw.init = &(const struct clk_init_data) { 1175 .name = "gcc_gp1_clk_src", 1176 .parent_data = gcc_parent_data_2, 1177 .num_parents = ARRAY_SIZE(gcc_parent_data_2), 1178 .ops = &clk_rcg2_shared_ops, 1179 }, 1180 }; 1181 1182 static struct clk_rcg2 gcc_gp2_clk_src = { 1183 .cmd_rcgr = 0x65004, 1184 .mnd_width = 16, 1185 .hid_width = 5, 1186 .parent_map = gcc_parent_map_2, 1187 .freq_tbl = ftbl_gcc_gp1_clk_src, 1188 .clkr.hw.init = &(const struct clk_init_data) { 1189 .name = "gcc_gp2_clk_src", 1190 .parent_data = gcc_parent_data_2, 1191 .num_parents = ARRAY_SIZE(gcc_parent_data_2), 1192 .ops = &clk_rcg2_shared_ops, 1193 }, 1194 }; 1195 1196 static struct clk_rcg2 gcc_gp3_clk_src = { 1197 .cmd_rcgr = 0x66004, 1198 .mnd_width = 16, 1199 .hid_width = 5, 1200 .parent_map = gcc_parent_map_2, 1201 .freq_tbl = ftbl_gcc_gp1_clk_src, 1202 .clkr.hw.init = &(const struct clk_init_data) { 1203 .name = "gcc_gp3_clk_src", 1204 .parent_data = gcc_parent_data_2, 1205 .num_parents = ARRAY_SIZE(gcc_parent_data_2), 1206 .ops = &clk_rcg2_shared_ops, 1207 }, 1208 }; 1209 1210 static struct clk_rcg2 gcc_gp4_clk_src = { 1211 .cmd_rcgr = 0xc2004, 1212 .mnd_width = 16, 1213 .hid_width = 5, 1214 .parent_map = gcc_parent_map_2, 1215 .freq_tbl = ftbl_gcc_gp1_clk_src, 1216 .clkr.hw.init = &(const struct clk_init_data) { 1217 .name = "gcc_gp4_clk_src", 1218 .parent_data = gcc_parent_data_2, 1219 .num_parents = ARRAY_SIZE(gcc_parent_data_2), 1220 .ops = &clk_rcg2_shared_ops, 1221 }, 1222 }; 1223 1224 static struct clk_rcg2 gcc_gp5_clk_src = { 1225 .cmd_rcgr = 0xc3004, 1226 .mnd_width = 16, 1227 .hid_width = 5, 1228 .parent_map = gcc_parent_map_2, 1229 .freq_tbl = ftbl_gcc_gp1_clk_src, 1230 .clkr.hw.init = &(const struct clk_init_data) { 1231 .name = "gcc_gp5_clk_src", 1232 .parent_data = gcc_parent_data_2, 1233 .num_parents = ARRAY_SIZE(gcc_parent_data_2), 1234 .ops = &clk_rcg2_shared_ops, 1235 }, 1236 }; 1237 1238 static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = { 1239 F(9600000, P_BI_TCXO, 2, 0, 0), 1240 F(19200000, P_BI_TCXO, 1, 0, 0), 1241 { } 1242 }; 1243 1244 static struct clk_rcg2 gcc_pcie_0_aux_clk_src = { 1245 .cmd_rcgr = 0xa4054, 1246 .mnd_width = 16, 1247 .hid_width = 5, 1248 .parent_map = gcc_parent_map_1, 1249 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 1250 .clkr.hw.init = &(const struct clk_init_data) { 1251 .name = "gcc_pcie_0_aux_clk_src", 1252 .parent_data = gcc_parent_data_1, 1253 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 1254 .ops = &clk_rcg2_shared_ops, 1255 }, 1256 }; 1257 1258 static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = { 1259 F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 1260 { } 1261 }; 1262 1263 static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = { 1264 .cmd_rcgr = 0xa403c, 1265 .mnd_width = 0, 1266 .hid_width = 5, 1267 .parent_map = gcc_parent_map_0, 1268 .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src, 1269 .clkr.hw.init = &(const struct clk_init_data) { 1270 .name = "gcc_pcie_0_phy_rchng_clk_src", 1271 .parent_data = gcc_parent_data_0, 1272 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1273 .ops = &clk_rcg2_shared_ops, 1274 }, 1275 }; 1276 1277 static const struct freq_tbl ftbl_gcc_pcie_1_aux_clk_src[] = { 1278 F(19200000, P_BI_TCXO, 1, 0, 0), 1279 { } 1280 }; 1281 1282 static struct clk_rcg2 gcc_pcie_1_aux_clk_src = { 1283 .cmd_rcgr = 0x8d054, 1284 .mnd_width = 16, 1285 .hid_width = 5, 1286 .parent_map = gcc_parent_map_1, 1287 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 1288 .clkr.hw.init = &(const struct clk_init_data) { 1289 .name = "gcc_pcie_1_aux_clk_src", 1290 .parent_data = gcc_parent_data_1, 1291 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 1292 .ops = &clk_rcg2_shared_ops, 1293 }, 1294 }; 1295 1296 static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = { 1297 .cmd_rcgr = 0x8d03c, 1298 .mnd_width = 0, 1299 .hid_width = 5, 1300 .parent_map = gcc_parent_map_0, 1301 .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src, 1302 .clkr.hw.init = &(const struct clk_init_data) { 1303 .name = "gcc_pcie_1_phy_rchng_clk_src", 1304 .parent_data = gcc_parent_data_0, 1305 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1306 .ops = &clk_rcg2_shared_ops, 1307 }, 1308 }; 1309 1310 static struct clk_rcg2 gcc_pcie_2a_aux_clk_src = { 1311 .cmd_rcgr = 0x9d064, 1312 .mnd_width = 16, 1313 .hid_width = 5, 1314 .parent_map = gcc_parent_map_1, 1315 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 1316 .clkr.hw.init = &(const struct clk_init_data) { 1317 .name = "gcc_pcie_2a_aux_clk_src", 1318 .parent_data = gcc_parent_data_1, 1319 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 1320 .ops = &clk_rcg2_shared_ops, 1321 }, 1322 }; 1323 1324 static struct clk_rcg2 gcc_pcie_2a_phy_rchng_clk_src = { 1325 .cmd_rcgr = 0x9d044, 1326 .mnd_width = 0, 1327 .hid_width = 5, 1328 .parent_map = gcc_parent_map_0, 1329 .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src, 1330 .clkr.hw.init = &(const struct clk_init_data) { 1331 .name = "gcc_pcie_2a_phy_rchng_clk_src", 1332 .parent_data = gcc_parent_data_0, 1333 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1334 .ops = &clk_rcg2_shared_ops, 1335 }, 1336 }; 1337 1338 static struct clk_rcg2 gcc_pcie_2b_aux_clk_src = { 1339 .cmd_rcgr = 0x9e064, 1340 .mnd_width = 16, 1341 .hid_width = 5, 1342 .parent_map = gcc_parent_map_1, 1343 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 1344 .clkr.hw.init = &(const struct clk_init_data) { 1345 .name = "gcc_pcie_2b_aux_clk_src", 1346 .parent_data = gcc_parent_data_1, 1347 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 1348 .ops = &clk_rcg2_shared_ops, 1349 }, 1350 }; 1351 1352 static struct clk_rcg2 gcc_pcie_2b_phy_rchng_clk_src = { 1353 .cmd_rcgr = 0x9e044, 1354 .mnd_width = 0, 1355 .hid_width = 5, 1356 .parent_map = gcc_parent_map_0, 1357 .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src, 1358 .clkr.hw.init = &(const struct clk_init_data) { 1359 .name = "gcc_pcie_2b_phy_rchng_clk_src", 1360 .parent_data = gcc_parent_data_0, 1361 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1362 .ops = &clk_rcg2_shared_ops, 1363 }, 1364 }; 1365 1366 static struct clk_rcg2 gcc_pcie_3a_aux_clk_src = { 1367 .cmd_rcgr = 0xa0064, 1368 .mnd_width = 16, 1369 .hid_width = 5, 1370 .parent_map = gcc_parent_map_1, 1371 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 1372 .clkr.hw.init = &(const struct clk_init_data) { 1373 .name = "gcc_pcie_3a_aux_clk_src", 1374 .parent_data = gcc_parent_data_1, 1375 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 1376 .ops = &clk_rcg2_shared_ops, 1377 }, 1378 }; 1379 1380 static struct clk_rcg2 gcc_pcie_3a_phy_rchng_clk_src = { 1381 .cmd_rcgr = 0xa0044, 1382 .mnd_width = 0, 1383 .hid_width = 5, 1384 .parent_map = gcc_parent_map_0, 1385 .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src, 1386 .clkr.hw.init = &(const struct clk_init_data) { 1387 .name = "gcc_pcie_3a_phy_rchng_clk_src", 1388 .parent_data = gcc_parent_data_0, 1389 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1390 .ops = &clk_rcg2_shared_ops, 1391 }, 1392 }; 1393 1394 static struct clk_rcg2 gcc_pcie_3b_aux_clk_src = { 1395 .cmd_rcgr = 0xa2064, 1396 .mnd_width = 16, 1397 .hid_width = 5, 1398 .parent_map = gcc_parent_map_1, 1399 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 1400 .clkr.hw.init = &(const struct clk_init_data) { 1401 .name = "gcc_pcie_3b_aux_clk_src", 1402 .parent_data = gcc_parent_data_1, 1403 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 1404 .ops = &clk_rcg2_shared_ops, 1405 }, 1406 }; 1407 1408 static struct clk_rcg2 gcc_pcie_3b_phy_rchng_clk_src = { 1409 .cmd_rcgr = 0xa2044, 1410 .mnd_width = 0, 1411 .hid_width = 5, 1412 .parent_map = gcc_parent_map_0, 1413 .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src, 1414 .clkr.hw.init = &(const struct clk_init_data) { 1415 .name = "gcc_pcie_3b_phy_rchng_clk_src", 1416 .parent_data = gcc_parent_data_0, 1417 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1418 .ops = &clk_rcg2_shared_ops, 1419 }, 1420 }; 1421 1422 static struct clk_rcg2 gcc_pcie_4_aux_clk_src = { 1423 .cmd_rcgr = 0x6b064, 1424 .mnd_width = 16, 1425 .hid_width = 5, 1426 .parent_map = gcc_parent_map_1, 1427 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 1428 .clkr.hw.init = &(const struct clk_init_data) { 1429 .name = "gcc_pcie_4_aux_clk_src", 1430 .parent_data = gcc_parent_data_1, 1431 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 1432 .ops = &clk_rcg2_shared_ops, 1433 }, 1434 }; 1435 1436 static struct clk_rcg2 gcc_pcie_4_phy_rchng_clk_src = { 1437 .cmd_rcgr = 0x6b044, 1438 .mnd_width = 0, 1439 .hid_width = 5, 1440 .parent_map = gcc_parent_map_0, 1441 .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src, 1442 .clkr.hw.init = &(const struct clk_init_data) { 1443 .name = "gcc_pcie_4_phy_rchng_clk_src", 1444 .parent_data = gcc_parent_data_0, 1445 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1446 .ops = &clk_rcg2_shared_ops, 1447 }, 1448 }; 1449 1450 static struct clk_rcg2 gcc_pcie_rscc_xo_clk_src = { 1451 .cmd_rcgr = 0xae00c, 1452 .mnd_width = 0, 1453 .hid_width = 5, 1454 .parent_map = gcc_parent_map_3, 1455 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 1456 .clkr.hw.init = &(const struct clk_init_data) { 1457 .name = "gcc_pcie_rscc_xo_clk_src", 1458 .parent_data = gcc_parent_data_3, 1459 .num_parents = ARRAY_SIZE(gcc_parent_data_3), 1460 .ops = &clk_rcg2_shared_ops, 1461 }, 1462 }; 1463 1464 static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = { 1465 F(60000000, P_GCC_GPLL0_OUT_EVEN, 5, 0, 0), 1466 { } 1467 }; 1468 1469 static struct clk_rcg2 gcc_pdm2_clk_src = { 1470 .cmd_rcgr = 0x33010, 1471 .mnd_width = 0, 1472 .hid_width = 5, 1473 .parent_map = gcc_parent_map_0, 1474 .freq_tbl = ftbl_gcc_pdm2_clk_src, 1475 .clkr.hw.init = &(const struct clk_init_data) { 1476 .name = "gcc_pdm2_clk_src", 1477 .parent_data = gcc_parent_data_0, 1478 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1479 .ops = &clk_rcg2_shared_ops, 1480 }, 1481 }; 1482 1483 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = { 1484 F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625), 1485 F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625), 1486 F(19200000, P_BI_TCXO, 1, 0, 0), 1487 F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625), 1488 F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75), 1489 F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25), 1490 F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75), 1491 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 1492 F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15), 1493 F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25), 1494 F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 1495 { } 1496 }; 1497 1498 static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = { 1499 .name = "gcc_qupv3_wrap0_s0_clk_src", 1500 .parent_data = gcc_parent_data_0, 1501 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1502 .flags = CLK_SET_RATE_PARENT, 1503 .ops = &clk_rcg2_shared_ops, 1504 }; 1505 1506 static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = { 1507 .cmd_rcgr = 0x17148, 1508 .mnd_width = 16, 1509 .hid_width = 5, 1510 .parent_map = gcc_parent_map_0, 1511 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1512 .clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init, 1513 }; 1514 1515 static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = { 1516 .name = "gcc_qupv3_wrap0_s1_clk_src", 1517 .parent_data = gcc_parent_data_0, 1518 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1519 .flags = CLK_SET_RATE_PARENT, 1520 .ops = &clk_rcg2_shared_ops, 1521 }; 1522 1523 static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = { 1524 .cmd_rcgr = 0x17278, 1525 .mnd_width = 16, 1526 .hid_width = 5, 1527 .parent_map = gcc_parent_map_0, 1528 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1529 .clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init, 1530 }; 1531 1532 static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = { 1533 .name = "gcc_qupv3_wrap0_s2_clk_src", 1534 .parent_data = gcc_parent_data_0, 1535 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1536 .flags = CLK_SET_RATE_PARENT, 1537 .ops = &clk_rcg2_shared_ops, 1538 }; 1539 1540 static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = { 1541 .cmd_rcgr = 0x173a8, 1542 .mnd_width = 16, 1543 .hid_width = 5, 1544 .parent_map = gcc_parent_map_0, 1545 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1546 .clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init, 1547 }; 1548 1549 static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = { 1550 .name = "gcc_qupv3_wrap0_s3_clk_src", 1551 .parent_data = gcc_parent_data_0, 1552 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1553 .flags = CLK_SET_RATE_PARENT, 1554 .ops = &clk_rcg2_shared_ops, 1555 }; 1556 1557 static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = { 1558 .cmd_rcgr = 0x174d8, 1559 .mnd_width = 16, 1560 .hid_width = 5, 1561 .parent_map = gcc_parent_map_0, 1562 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1563 .clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init, 1564 }; 1565 1566 static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = { 1567 .name = "gcc_qupv3_wrap0_s4_clk_src", 1568 .parent_data = gcc_parent_data_0, 1569 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1570 .flags = CLK_SET_RATE_PARENT, 1571 .ops = &clk_rcg2_shared_ops, 1572 }; 1573 1574 static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = { 1575 .cmd_rcgr = 0x17608, 1576 .mnd_width = 16, 1577 .hid_width = 5, 1578 .parent_map = gcc_parent_map_0, 1579 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1580 .clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init, 1581 }; 1582 1583 static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = { 1584 .name = "gcc_qupv3_wrap0_s5_clk_src", 1585 .parent_data = gcc_parent_data_0, 1586 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1587 .flags = CLK_SET_RATE_PARENT, 1588 .ops = &clk_rcg2_shared_ops, 1589 }; 1590 1591 static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = { 1592 .cmd_rcgr = 0x17738, 1593 .mnd_width = 16, 1594 .hid_width = 5, 1595 .parent_map = gcc_parent_map_0, 1596 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1597 .clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init, 1598 }; 1599 1600 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s6_clk_src[] = { 1601 F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625), 1602 F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625), 1603 F(19200000, P_BI_TCXO, 1, 0, 0), 1604 F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625), 1605 F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75), 1606 F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25), 1607 F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75), 1608 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 1609 F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15), 1610 F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25), 1611 F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0), 1612 { } 1613 }; 1614 1615 static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = { 1616 .name = "gcc_qupv3_wrap0_s6_clk_src", 1617 .parent_data = gcc_parent_data_0, 1618 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1619 .flags = CLK_SET_RATE_PARENT, 1620 .ops = &clk_rcg2_shared_ops, 1621 }; 1622 1623 static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = { 1624 .cmd_rcgr = 0x17868, 1625 .mnd_width = 16, 1626 .hid_width = 5, 1627 .parent_map = gcc_parent_map_0, 1628 .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src, 1629 .clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init, 1630 }; 1631 1632 static struct clk_init_data gcc_qupv3_wrap0_s7_clk_src_init = { 1633 .name = "gcc_qupv3_wrap0_s7_clk_src", 1634 .parent_data = gcc_parent_data_0, 1635 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1636 .flags = CLK_SET_RATE_PARENT, 1637 .ops = &clk_rcg2_shared_ops, 1638 }; 1639 1640 static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = { 1641 .cmd_rcgr = 0x17998, 1642 .mnd_width = 16, 1643 .hid_width = 5, 1644 .parent_map = gcc_parent_map_0, 1645 .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src, 1646 .clkr.hw.init = &gcc_qupv3_wrap0_s7_clk_src_init, 1647 }; 1648 1649 static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = { 1650 .name = "gcc_qupv3_wrap1_s0_clk_src", 1651 .parent_data = gcc_parent_data_0, 1652 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1653 .flags = CLK_SET_RATE_PARENT, 1654 .ops = &clk_rcg2_shared_ops, 1655 }; 1656 1657 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = { 1658 .cmd_rcgr = 0x18148, 1659 .mnd_width = 16, 1660 .hid_width = 5, 1661 .parent_map = gcc_parent_map_0, 1662 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1663 .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init, 1664 }; 1665 1666 static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = { 1667 .name = "gcc_qupv3_wrap1_s1_clk_src", 1668 .parent_data = gcc_parent_data_0, 1669 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1670 .flags = CLK_SET_RATE_PARENT, 1671 .ops = &clk_rcg2_shared_ops, 1672 }; 1673 1674 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = { 1675 .cmd_rcgr = 0x18278, 1676 .mnd_width = 16, 1677 .hid_width = 5, 1678 .parent_map = gcc_parent_map_0, 1679 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1680 .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init, 1681 }; 1682 1683 static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = { 1684 .name = "gcc_qupv3_wrap1_s2_clk_src", 1685 .parent_data = gcc_parent_data_0, 1686 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1687 .flags = CLK_SET_RATE_PARENT, 1688 .ops = &clk_rcg2_shared_ops, 1689 }; 1690 1691 static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = { 1692 .cmd_rcgr = 0x183a8, 1693 .mnd_width = 16, 1694 .hid_width = 5, 1695 .parent_map = gcc_parent_map_0, 1696 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1697 .clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init, 1698 }; 1699 1700 static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = { 1701 .name = "gcc_qupv3_wrap1_s3_clk_src", 1702 .parent_data = gcc_parent_data_0, 1703 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1704 .flags = CLK_SET_RATE_PARENT, 1705 .ops = &clk_rcg2_shared_ops, 1706 }; 1707 1708 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = { 1709 .cmd_rcgr = 0x184d8, 1710 .mnd_width = 16, 1711 .hid_width = 5, 1712 .parent_map = gcc_parent_map_0, 1713 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1714 .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init, 1715 }; 1716 1717 static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = { 1718 .name = "gcc_qupv3_wrap1_s4_clk_src", 1719 .parent_data = gcc_parent_data_0, 1720 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1721 .flags = CLK_SET_RATE_PARENT, 1722 .ops = &clk_rcg2_shared_ops, 1723 }; 1724 1725 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = { 1726 .cmd_rcgr = 0x18608, 1727 .mnd_width = 16, 1728 .hid_width = 5, 1729 .parent_map = gcc_parent_map_0, 1730 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1731 .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init, 1732 }; 1733 1734 static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = { 1735 .name = "gcc_qupv3_wrap1_s5_clk_src", 1736 .parent_data = gcc_parent_data_0, 1737 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1738 .flags = CLK_SET_RATE_PARENT, 1739 .ops = &clk_rcg2_shared_ops, 1740 }; 1741 1742 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = { 1743 .cmd_rcgr = 0x18738, 1744 .mnd_width = 16, 1745 .hid_width = 5, 1746 .parent_map = gcc_parent_map_0, 1747 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1748 .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init, 1749 }; 1750 1751 static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = { 1752 .name = "gcc_qupv3_wrap1_s6_clk_src", 1753 .parent_data = gcc_parent_data_0, 1754 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1755 .flags = CLK_SET_RATE_PARENT, 1756 .ops = &clk_rcg2_shared_ops, 1757 }; 1758 1759 static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = { 1760 .cmd_rcgr = 0x18868, 1761 .mnd_width = 16, 1762 .hid_width = 5, 1763 .parent_map = gcc_parent_map_0, 1764 .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src, 1765 .clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init, 1766 }; 1767 1768 static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = { 1769 .name = "gcc_qupv3_wrap1_s7_clk_src", 1770 .parent_data = gcc_parent_data_0, 1771 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1772 .flags = CLK_SET_RATE_PARENT, 1773 .ops = &clk_rcg2_shared_ops, 1774 }; 1775 1776 static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = { 1777 .cmd_rcgr = 0x18998, 1778 .mnd_width = 16, 1779 .hid_width = 5, 1780 .parent_map = gcc_parent_map_0, 1781 .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src, 1782 .clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init, 1783 }; 1784 1785 static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = { 1786 .name = "gcc_qupv3_wrap2_s0_clk_src", 1787 .parent_data = gcc_parent_data_0, 1788 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1789 .flags = CLK_SET_RATE_PARENT, 1790 .ops = &clk_rcg2_shared_ops, 1791 }; 1792 1793 static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = { 1794 .cmd_rcgr = 0x1e148, 1795 .mnd_width = 16, 1796 .hid_width = 5, 1797 .parent_map = gcc_parent_map_0, 1798 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1799 .clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init, 1800 }; 1801 1802 static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = { 1803 .name = "gcc_qupv3_wrap2_s1_clk_src", 1804 .parent_data = gcc_parent_data_0, 1805 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1806 .flags = CLK_SET_RATE_PARENT, 1807 .ops = &clk_rcg2_shared_ops, 1808 }; 1809 1810 static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = { 1811 .cmd_rcgr = 0x1e278, 1812 .mnd_width = 16, 1813 .hid_width = 5, 1814 .parent_map = gcc_parent_map_0, 1815 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1816 .clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init, 1817 }; 1818 1819 static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = { 1820 .name = "gcc_qupv3_wrap2_s2_clk_src", 1821 .parent_data = gcc_parent_data_0, 1822 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1823 .flags = CLK_SET_RATE_PARENT, 1824 .ops = &clk_rcg2_shared_ops, 1825 }; 1826 1827 static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = { 1828 .cmd_rcgr = 0x1e3a8, 1829 .mnd_width = 16, 1830 .hid_width = 5, 1831 .parent_map = gcc_parent_map_0, 1832 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1833 .clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init, 1834 }; 1835 1836 static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = { 1837 .name = "gcc_qupv3_wrap2_s3_clk_src", 1838 .parent_data = gcc_parent_data_0, 1839 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1840 .flags = CLK_SET_RATE_PARENT, 1841 .ops = &clk_rcg2_shared_ops, 1842 }; 1843 1844 static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = { 1845 .cmd_rcgr = 0x1e4d8, 1846 .mnd_width = 16, 1847 .hid_width = 5, 1848 .parent_map = gcc_parent_map_0, 1849 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1850 .clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init, 1851 }; 1852 1853 static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = { 1854 .name = "gcc_qupv3_wrap2_s4_clk_src", 1855 .parent_data = gcc_parent_data_0, 1856 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1857 .flags = CLK_SET_RATE_PARENT, 1858 .ops = &clk_rcg2_shared_ops, 1859 }; 1860 1861 static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = { 1862 .cmd_rcgr = 0x1e608, 1863 .mnd_width = 16, 1864 .hid_width = 5, 1865 .parent_map = gcc_parent_map_0, 1866 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1867 .clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init, 1868 }; 1869 1870 static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = { 1871 .name = "gcc_qupv3_wrap2_s5_clk_src", 1872 .parent_data = gcc_parent_data_0, 1873 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1874 .flags = CLK_SET_RATE_PARENT, 1875 .ops = &clk_rcg2_shared_ops, 1876 }; 1877 1878 static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = { 1879 .cmd_rcgr = 0x1e738, 1880 .mnd_width = 16, 1881 .hid_width = 5, 1882 .parent_map = gcc_parent_map_0, 1883 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 1884 .clkr.hw.init = &gcc_qupv3_wrap2_s5_clk_src_init, 1885 }; 1886 1887 static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init = { 1888 .name = "gcc_qupv3_wrap2_s6_clk_src", 1889 .parent_data = gcc_parent_data_0, 1890 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1891 .flags = CLK_SET_RATE_PARENT, 1892 .ops = &clk_rcg2_shared_ops, 1893 }; 1894 1895 static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src = { 1896 .cmd_rcgr = 0x1e868, 1897 .mnd_width = 16, 1898 .hid_width = 5, 1899 .parent_map = gcc_parent_map_0, 1900 .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src, 1901 .clkr.hw.init = &gcc_qupv3_wrap2_s6_clk_src_init, 1902 }; 1903 1904 static struct clk_init_data gcc_qupv3_wrap2_s7_clk_src_init = { 1905 .name = "gcc_qupv3_wrap2_s7_clk_src", 1906 .parent_data = gcc_parent_data_0, 1907 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1908 .flags = CLK_SET_RATE_PARENT, 1909 .ops = &clk_rcg2_shared_ops, 1910 }; 1911 1912 static struct clk_rcg2 gcc_qupv3_wrap2_s7_clk_src = { 1913 .cmd_rcgr = 0x1e998, 1914 .mnd_width = 16, 1915 .hid_width = 5, 1916 .parent_map = gcc_parent_map_0, 1917 .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src, 1918 .clkr.hw.init = &gcc_qupv3_wrap2_s7_clk_src_init, 1919 }; 1920 1921 static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = { 1922 F(400000, P_BI_TCXO, 12, 1, 4), 1923 F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), 1924 F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0), 1925 F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 1926 F(202000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0), 1927 { } 1928 }; 1929 1930 static struct clk_rcg2 gcc_sdcc2_apps_clk_src = { 1931 .cmd_rcgr = 0x1400c, 1932 .mnd_width = 8, 1933 .hid_width = 5, 1934 .parent_map = gcc_parent_map_15, 1935 .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src, 1936 .clkr.hw.init = &(const struct clk_init_data) { 1937 .name = "gcc_sdcc2_apps_clk_src", 1938 .parent_data = gcc_parent_data_15, 1939 .num_parents = ARRAY_SIZE(gcc_parent_data_15), 1940 .ops = &clk_rcg2_shared_ops, 1941 }, 1942 }; 1943 1944 static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = { 1945 F(400000, P_BI_TCXO, 12, 1, 4), 1946 F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), 1947 F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 1948 { } 1949 }; 1950 1951 static struct clk_rcg2 gcc_sdcc4_apps_clk_src = { 1952 .cmd_rcgr = 0x1600c, 1953 .mnd_width = 8, 1954 .hid_width = 5, 1955 .parent_map = gcc_parent_map_0, 1956 .freq_tbl = ftbl_gcc_sdcc4_apps_clk_src, 1957 .clkr.hw.init = &(const struct clk_init_data) { 1958 .name = "gcc_sdcc4_apps_clk_src", 1959 .parent_data = gcc_parent_data_0, 1960 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1961 .ops = &clk_rcg2_shared_ops, 1962 }, 1963 }; 1964 1965 static const struct freq_tbl ftbl_gcc_ufs_card_axi_clk_src[] = { 1966 F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), 1967 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 1968 F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0), 1969 F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0), 1970 { } 1971 }; 1972 1973 static struct clk_rcg2 gcc_ufs_card_axi_clk_src = { 1974 .cmd_rcgr = 0x75024, 1975 .mnd_width = 8, 1976 .hid_width = 5, 1977 .parent_map = gcc_parent_map_0, 1978 .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src, 1979 .clkr.hw.init = &(const struct clk_init_data) { 1980 .name = "gcc_ufs_card_axi_clk_src", 1981 .parent_data = gcc_parent_data_0, 1982 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1983 .ops = &clk_rcg2_shared_ops, 1984 }, 1985 }; 1986 1987 static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src[] = { 1988 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 1989 F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0), 1990 F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0), 1991 { } 1992 }; 1993 1994 static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = { 1995 .cmd_rcgr = 0x7506c, 1996 .mnd_width = 0, 1997 .hid_width = 5, 1998 .parent_map = gcc_parent_map_0, 1999 .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src, 2000 .clkr.hw.init = &(const struct clk_init_data) { 2001 .name = "gcc_ufs_card_ice_core_clk_src", 2002 .parent_data = gcc_parent_data_0, 2003 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 2004 .ops = &clk_rcg2_shared_ops, 2005 }, 2006 }; 2007 2008 static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = { 2009 .cmd_rcgr = 0x750a0, 2010 .mnd_width = 0, 2011 .hid_width = 5, 2012 .parent_map = gcc_parent_map_3, 2013 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 2014 .clkr.hw.init = &(const struct clk_init_data) { 2015 .name = "gcc_ufs_card_phy_aux_clk_src", 2016 .parent_data = gcc_parent_data_3, 2017 .num_parents = ARRAY_SIZE(gcc_parent_data_3), 2018 .ops = &clk_rcg2_shared_ops, 2019 }, 2020 }; 2021 2022 static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = { 2023 .cmd_rcgr = 0x75084, 2024 .mnd_width = 0, 2025 .hid_width = 5, 2026 .parent_map = gcc_parent_map_0, 2027 .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src, 2028 .clkr.hw.init = &(const struct clk_init_data) { 2029 .name = "gcc_ufs_card_unipro_core_clk_src", 2030 .parent_data = gcc_parent_data_0, 2031 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 2032 .ops = &clk_rcg2_shared_ops, 2033 }, 2034 }; 2035 2036 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = { 2037 .cmd_rcgr = 0x77024, 2038 .mnd_width = 8, 2039 .hid_width = 5, 2040 .parent_map = gcc_parent_map_0, 2041 .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src, 2042 .clkr.hw.init = &(const struct clk_init_data) { 2043 .name = "gcc_ufs_phy_axi_clk_src", 2044 .parent_data = gcc_parent_data_0, 2045 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 2046 .ops = &clk_rcg2_shared_ops, 2047 }, 2048 }; 2049 2050 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = { 2051 .cmd_rcgr = 0x7706c, 2052 .mnd_width = 0, 2053 .hid_width = 5, 2054 .parent_map = gcc_parent_map_0, 2055 .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src, 2056 .clkr.hw.init = &(const struct clk_init_data) { 2057 .name = "gcc_ufs_phy_ice_core_clk_src", 2058 .parent_data = gcc_parent_data_0, 2059 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 2060 .ops = &clk_rcg2_shared_ops, 2061 }, 2062 }; 2063 2064 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = { 2065 .cmd_rcgr = 0x770a0, 2066 .mnd_width = 0, 2067 .hid_width = 5, 2068 .parent_map = gcc_parent_map_3, 2069 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 2070 .clkr.hw.init = &(const struct clk_init_data) { 2071 .name = "gcc_ufs_phy_phy_aux_clk_src", 2072 .parent_data = gcc_parent_data_3, 2073 .num_parents = ARRAY_SIZE(gcc_parent_data_3), 2074 .ops = &clk_rcg2_shared_ops, 2075 }, 2076 }; 2077 2078 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = { 2079 .cmd_rcgr = 0x77084, 2080 .mnd_width = 0, 2081 .hid_width = 5, 2082 .parent_map = gcc_parent_map_0, 2083 .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src, 2084 .clkr.hw.init = &(const struct clk_init_data) { 2085 .name = "gcc_ufs_phy_unipro_core_clk_src", 2086 .parent_data = gcc_parent_data_0, 2087 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 2088 .ops = &clk_rcg2_shared_ops, 2089 }, 2090 }; 2091 2092 static const struct freq_tbl ftbl_gcc_usb30_mp_master_clk_src[] = { 2093 F(66666667, P_GCC_GPLL0_OUT_EVEN, 4.5, 0, 0), 2094 F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0), 2095 F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0), 2096 F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0), 2097 { } 2098 }; 2099 2100 static struct clk_rcg2 gcc_usb30_mp_master_clk_src = { 2101 .cmd_rcgr = 0xab020, 2102 .mnd_width = 8, 2103 .hid_width = 5, 2104 .parent_map = gcc_parent_map_0, 2105 .freq_tbl = ftbl_gcc_usb30_mp_master_clk_src, 2106 .clkr.hw.init = &(const struct clk_init_data) { 2107 .name = "gcc_usb30_mp_master_clk_src", 2108 .parent_data = gcc_parent_data_0, 2109 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 2110 .ops = &clk_rcg2_shared_ops, 2111 }, 2112 }; 2113 2114 static struct clk_rcg2 gcc_usb30_mp_mock_utmi_clk_src = { 2115 .cmd_rcgr = 0xab038, 2116 .mnd_width = 0, 2117 .hid_width = 5, 2118 .parent_map = gcc_parent_map_0, 2119 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 2120 .clkr.hw.init = &(const struct clk_init_data) { 2121 .name = "gcc_usb30_mp_mock_utmi_clk_src", 2122 .parent_data = gcc_parent_data_0, 2123 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 2124 .ops = &clk_rcg2_shared_ops, 2125 }, 2126 }; 2127 2128 static struct clk_rcg2 gcc_usb30_prim_master_clk_src = { 2129 .cmd_rcgr = 0xf020, 2130 .mnd_width = 8, 2131 .hid_width = 5, 2132 .parent_map = gcc_parent_map_0, 2133 .freq_tbl = ftbl_gcc_usb30_mp_master_clk_src, 2134 .clkr.hw.init = &(const struct clk_init_data) { 2135 .name = "gcc_usb30_prim_master_clk_src", 2136 .parent_data = gcc_parent_data_0, 2137 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 2138 .ops = &clk_rcg2_shared_ops, 2139 }, 2140 }; 2141 2142 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = { 2143 .cmd_rcgr = 0xf038, 2144 .mnd_width = 0, 2145 .hid_width = 5, 2146 .parent_map = gcc_parent_map_0, 2147 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 2148 .clkr.hw.init = &(const struct clk_init_data) { 2149 .name = "gcc_usb30_prim_mock_utmi_clk_src", 2150 .parent_data = gcc_parent_data_0, 2151 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 2152 .ops = &clk_rcg2_shared_ops, 2153 }, 2154 }; 2155 2156 static struct clk_rcg2 gcc_usb30_sec_master_clk_src = { 2157 .cmd_rcgr = 0x10020, 2158 .mnd_width = 8, 2159 .hid_width = 5, 2160 .parent_map = gcc_parent_map_0, 2161 .freq_tbl = ftbl_gcc_usb30_mp_master_clk_src, 2162 .clkr.hw.init = &(const struct clk_init_data) { 2163 .name = "gcc_usb30_sec_master_clk_src", 2164 .parent_data = gcc_parent_data_0, 2165 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 2166 .ops = &clk_rcg2_shared_ops, 2167 }, 2168 }; 2169 2170 static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = { 2171 .cmd_rcgr = 0x10038, 2172 .mnd_width = 0, 2173 .hid_width = 5, 2174 .parent_map = gcc_parent_map_0, 2175 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 2176 .clkr.hw.init = &(const struct clk_init_data) { 2177 .name = "gcc_usb30_sec_mock_utmi_clk_src", 2178 .parent_data = gcc_parent_data_0, 2179 .num_parents = ARRAY_SIZE(gcc_parent_data_0), 2180 .ops = &clk_rcg2_shared_ops, 2181 }, 2182 }; 2183 2184 static struct clk_rcg2 gcc_usb3_mp_phy_aux_clk_src = { 2185 .cmd_rcgr = 0xab06c, 2186 .mnd_width = 0, 2187 .hid_width = 5, 2188 .parent_map = gcc_parent_map_1, 2189 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 2190 .clkr.hw.init = &(const struct clk_init_data) { 2191 .name = "gcc_usb3_mp_phy_aux_clk_src", 2192 .parent_data = gcc_parent_data_1, 2193 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 2194 .ops = &clk_rcg2_shared_ops, 2195 }, 2196 }; 2197 2198 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = { 2199 .cmd_rcgr = 0xf068, 2200 .mnd_width = 0, 2201 .hid_width = 5, 2202 .parent_map = gcc_parent_map_1, 2203 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 2204 .clkr.hw.init = &(const struct clk_init_data) { 2205 .name = "gcc_usb3_prim_phy_aux_clk_src", 2206 .parent_data = gcc_parent_data_1, 2207 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 2208 .ops = &clk_rcg2_shared_ops, 2209 }, 2210 }; 2211 2212 static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = { 2213 .cmd_rcgr = 0x10068, 2214 .mnd_width = 0, 2215 .hid_width = 5, 2216 .parent_map = gcc_parent_map_1, 2217 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 2218 .clkr.hw.init = &(const struct clk_init_data) { 2219 .name = "gcc_usb3_sec_phy_aux_clk_src", 2220 .parent_data = gcc_parent_data_1, 2221 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 2222 .ops = &clk_rcg2_shared_ops, 2223 }, 2224 }; 2225 2226 static const struct freq_tbl ftbl_gcc_usb4_1_master_clk_src[] = { 2227 F(85714286, P_GCC_GPLL0_OUT_EVEN, 3.5, 0, 0), 2228 F(175000000, P_GCC_GPLL8_OUT_MAIN, 4, 0, 0), 2229 F(350000000, P_GCC_GPLL8_OUT_MAIN, 2, 0, 0), 2230 { } 2231 }; 2232 2233 static struct clk_rcg2 gcc_usb4_1_master_clk_src = { 2234 .cmd_rcgr = 0xb8018, 2235 .mnd_width = 8, 2236 .hid_width = 5, 2237 .parent_map = gcc_parent_map_5, 2238 .freq_tbl = ftbl_gcc_usb4_1_master_clk_src, 2239 .clkr.hw.init = &(const struct clk_init_data) { 2240 .name = "gcc_usb4_1_master_clk_src", 2241 .parent_data = gcc_parent_data_5, 2242 .num_parents = ARRAY_SIZE(gcc_parent_data_5), 2243 .ops = &clk_rcg2_shared_ops, 2244 }, 2245 }; 2246 2247 static const struct freq_tbl ftbl_gcc_usb4_1_phy_pcie_pipe_clk_src[] = { 2248 F(19200000, P_BI_TCXO, 1, 0, 0), 2249 F(125000000, P_GCC_GPLL7_OUT_MAIN, 4, 0, 0), 2250 F(250000000, P_GCC_GPLL7_OUT_MAIN, 2, 0, 0), 2251 { } 2252 }; 2253 2254 static struct clk_rcg2 gcc_usb4_1_phy_pcie_pipe_clk_src = { 2255 .cmd_rcgr = 0xb80c4, 2256 .mnd_width = 0, 2257 .hid_width = 5, 2258 .parent_map = gcc_parent_map_6, 2259 .freq_tbl = ftbl_gcc_usb4_1_phy_pcie_pipe_clk_src, 2260 .clkr.hw.init = &(const struct clk_init_data) { 2261 .name = "gcc_usb4_1_phy_pcie_pipe_clk_src", 2262 .parent_data = gcc_parent_data_6, 2263 .num_parents = ARRAY_SIZE(gcc_parent_data_6), 2264 .ops = &clk_rcg2_shared_ops, 2265 }, 2266 }; 2267 2268 static struct clk_rcg2 gcc_usb4_1_sb_if_clk_src = { 2269 .cmd_rcgr = 0xb8070, 2270 .mnd_width = 0, 2271 .hid_width = 5, 2272 .parent_map = gcc_parent_map_1, 2273 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 2274 .clkr.hw.init = &(const struct clk_init_data) { 2275 .name = "gcc_usb4_1_sb_if_clk_src", 2276 .parent_data = gcc_parent_data_1, 2277 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 2278 .ops = &clk_rcg2_shared_ops, 2279 }, 2280 }; 2281 2282 static const struct freq_tbl ftbl_gcc_usb4_1_tmu_clk_src[] = { 2283 F(19200000, P_BI_TCXO, 1, 0, 0), 2284 F(250000000, P_GCC_GPLL2_OUT_MAIN, 4, 0, 0), 2285 { } 2286 }; 2287 2288 static struct clk_rcg2 gcc_usb4_1_tmu_clk_src = { 2289 .cmd_rcgr = 0xb8054, 2290 .mnd_width = 0, 2291 .hid_width = 5, 2292 .parent_map = gcc_parent_map_7, 2293 .freq_tbl = ftbl_gcc_usb4_1_tmu_clk_src, 2294 .clkr.hw.init = &(const struct clk_init_data) { 2295 .name = "gcc_usb4_1_tmu_clk_src", 2296 .parent_data = gcc_parent_data_7, 2297 .num_parents = ARRAY_SIZE(gcc_parent_data_7), 2298 .ops = &clk_rcg2_shared_ops, 2299 }, 2300 }; 2301 2302 static struct clk_rcg2 gcc_usb4_master_clk_src = { 2303 .cmd_rcgr = 0x2a018, 2304 .mnd_width = 8, 2305 .hid_width = 5, 2306 .parent_map = gcc_parent_map_5, 2307 .freq_tbl = ftbl_gcc_usb4_1_master_clk_src, 2308 .clkr.hw.init = &(const struct clk_init_data) { 2309 .name = "gcc_usb4_master_clk_src", 2310 .parent_data = gcc_parent_data_5, 2311 .num_parents = ARRAY_SIZE(gcc_parent_data_5), 2312 .ops = &clk_rcg2_shared_ops, 2313 }, 2314 }; 2315 2316 static struct clk_rcg2 gcc_usb4_phy_pcie_pipe_clk_src = { 2317 .cmd_rcgr = 0x2a0c4, 2318 .mnd_width = 0, 2319 .hid_width = 5, 2320 .parent_map = gcc_parent_map_6, 2321 .freq_tbl = ftbl_gcc_usb4_1_phy_pcie_pipe_clk_src, 2322 .clkr.hw.init = &(const struct clk_init_data) { 2323 .name = "gcc_usb4_phy_pcie_pipe_clk_src", 2324 .parent_data = gcc_parent_data_6, 2325 .num_parents = ARRAY_SIZE(gcc_parent_data_6), 2326 .ops = &clk_rcg2_shared_ops, 2327 }, 2328 }; 2329 2330 static struct clk_rcg2 gcc_usb4_sb_if_clk_src = { 2331 .cmd_rcgr = 0x2a070, 2332 .mnd_width = 0, 2333 .hid_width = 5, 2334 .parent_map = gcc_parent_map_1, 2335 .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src, 2336 .clkr.hw.init = &(const struct clk_init_data) { 2337 .name = "gcc_usb4_sb_if_clk_src", 2338 .parent_data = gcc_parent_data_1, 2339 .num_parents = ARRAY_SIZE(gcc_parent_data_1), 2340 .ops = &clk_rcg2_shared_ops, 2341 }, 2342 }; 2343 2344 static struct clk_rcg2 gcc_usb4_tmu_clk_src = { 2345 .cmd_rcgr = 0x2a054, 2346 .mnd_width = 0, 2347 .hid_width = 5, 2348 .parent_map = gcc_parent_map_7, 2349 .freq_tbl = ftbl_gcc_usb4_1_tmu_clk_src, 2350 .clkr.hw.init = &(const struct clk_init_data) { 2351 .name = "gcc_usb4_tmu_clk_src", 2352 .parent_data = gcc_parent_data_7, 2353 .num_parents = ARRAY_SIZE(gcc_parent_data_7), 2354 .ops = &clk_rcg2_shared_ops, 2355 }, 2356 }; 2357 2358 static struct clk_regmap_div gcc_pcie_2a_pipe_div_clk_src = { 2359 .reg = 0x9d060, 2360 .shift = 0, 2361 .width = 4, 2362 .clkr.hw.init = &(const struct clk_init_data) { 2363 .name = "gcc_pcie_2a_pipe_div_clk_src", 2364 .parent_hws = (const struct clk_hw*[]){ 2365 &gcc_pcie_2a_pipe_clk_src.clkr.hw, 2366 }, 2367 .num_parents = 1, 2368 .flags = CLK_SET_RATE_PARENT, 2369 .ops = &clk_regmap_div_ro_ops, 2370 }, 2371 }; 2372 2373 static struct clk_regmap_div gcc_pcie_2b_pipe_div_clk_src = { 2374 .reg = 0x9e060, 2375 .shift = 0, 2376 .width = 4, 2377 .clkr.hw.init = &(const struct clk_init_data) { 2378 .name = "gcc_pcie_2b_pipe_div_clk_src", 2379 .parent_hws = (const struct clk_hw*[]){ 2380 &gcc_pcie_2b_pipe_clk_src.clkr.hw, 2381 }, 2382 .num_parents = 1, 2383 .flags = CLK_SET_RATE_PARENT, 2384 .ops = &clk_regmap_div_ro_ops, 2385 }, 2386 }; 2387 2388 static struct clk_regmap_div gcc_pcie_3a_pipe_div_clk_src = { 2389 .reg = 0xa0060, 2390 .shift = 0, 2391 .width = 4, 2392 .clkr.hw.init = &(const struct clk_init_data) { 2393 .name = "gcc_pcie_3a_pipe_div_clk_src", 2394 .parent_hws = (const struct clk_hw*[]){ 2395 &gcc_pcie_3a_pipe_clk_src.clkr.hw, 2396 }, 2397 .num_parents = 1, 2398 .flags = CLK_SET_RATE_PARENT, 2399 .ops = &clk_regmap_div_ro_ops, 2400 }, 2401 }; 2402 2403 static struct clk_regmap_div gcc_pcie_3b_pipe_div_clk_src = { 2404 .reg = 0xa2060, 2405 .shift = 0, 2406 .width = 4, 2407 .clkr.hw.init = &(const struct clk_init_data) { 2408 .name = "gcc_pcie_3b_pipe_div_clk_src", 2409 .parent_hws = (const struct clk_hw*[]){ 2410 &gcc_pcie_3b_pipe_clk_src.clkr.hw, 2411 }, 2412 .num_parents = 1, 2413 .flags = CLK_SET_RATE_PARENT, 2414 .ops = &clk_regmap_div_ro_ops, 2415 }, 2416 }; 2417 2418 static struct clk_regmap_div gcc_pcie_4_pipe_div_clk_src = { 2419 .reg = 0x6b060, 2420 .shift = 0, 2421 .width = 4, 2422 .clkr.hw.init = &(const struct clk_init_data) { 2423 .name = "gcc_pcie_4_pipe_div_clk_src", 2424 .parent_hws = (const struct clk_hw*[]){ 2425 &gcc_pcie_4_pipe_clk_src.clkr.hw, 2426 }, 2427 .num_parents = 1, 2428 .flags = CLK_SET_RATE_PARENT, 2429 .ops = &clk_regmap_div_ro_ops, 2430 }, 2431 }; 2432 2433 static struct clk_regmap_div gcc_qupv3_wrap0_s4_div_clk_src = { 2434 .reg = 0x17ac8, 2435 .shift = 0, 2436 .width = 4, 2437 .clkr.hw.init = &(const struct clk_init_data) { 2438 .name = "gcc_qupv3_wrap0_s4_div_clk_src", 2439 .parent_hws = (const struct clk_hw*[]){ 2440 &gcc_qupv3_wrap0_s4_clk_src.clkr.hw, 2441 }, 2442 .num_parents = 1, 2443 .flags = CLK_SET_RATE_PARENT, 2444 .ops = &clk_regmap_div_ro_ops, 2445 }, 2446 }; 2447 2448 static struct clk_regmap_div gcc_qupv3_wrap1_s4_div_clk_src = { 2449 .reg = 0x18ac8, 2450 .shift = 0, 2451 .width = 4, 2452 .clkr.hw.init = &(const struct clk_init_data) { 2453 .name = "gcc_qupv3_wrap1_s4_div_clk_src", 2454 .parent_hws = (const struct clk_hw*[]){ 2455 &gcc_qupv3_wrap1_s4_clk_src.clkr.hw, 2456 }, 2457 .num_parents = 1, 2458 .flags = CLK_SET_RATE_PARENT, 2459 .ops = &clk_regmap_div_ro_ops, 2460 }, 2461 }; 2462 2463 static struct clk_regmap_div gcc_qupv3_wrap2_s4_div_clk_src = { 2464 .reg = 0x1eac8, 2465 .shift = 0, 2466 .width = 4, 2467 .clkr.hw.init = &(const struct clk_init_data) { 2468 .name = "gcc_qupv3_wrap2_s4_div_clk_src", 2469 .parent_hws = (const struct clk_hw*[]){ 2470 &gcc_qupv3_wrap2_s4_clk_src.clkr.hw, 2471 }, 2472 .num_parents = 1, 2473 .flags = CLK_SET_RATE_PARENT, 2474 .ops = &clk_regmap_div_ro_ops, 2475 }, 2476 }; 2477 2478 static struct clk_regmap_div gcc_usb30_mp_mock_utmi_postdiv_clk_src = { 2479 .reg = 0xab050, 2480 .shift = 0, 2481 .width = 4, 2482 .clkr.hw.init = &(const struct clk_init_data) { 2483 .name = "gcc_usb30_mp_mock_utmi_postdiv_clk_src", 2484 .parent_hws = (const struct clk_hw*[]){ 2485 &gcc_usb30_mp_mock_utmi_clk_src.clkr.hw, 2486 }, 2487 .num_parents = 1, 2488 .flags = CLK_SET_RATE_PARENT, 2489 .ops = &clk_regmap_div_ro_ops, 2490 }, 2491 }; 2492 2493 static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = { 2494 .reg = 0xf050, 2495 .shift = 0, 2496 .width = 4, 2497 .clkr.hw.init = &(const struct clk_init_data) { 2498 .name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src", 2499 .parent_hws = (const struct clk_hw*[]){ 2500 &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw, 2501 }, 2502 .num_parents = 1, 2503 .flags = CLK_SET_RATE_PARENT, 2504 .ops = &clk_regmap_div_ro_ops, 2505 }, 2506 }; 2507 2508 static struct clk_regmap_div gcc_usb30_sec_mock_utmi_postdiv_clk_src = { 2509 .reg = 0x10050, 2510 .shift = 0, 2511 .width = 4, 2512 .clkr.hw.init = &(const struct clk_init_data) { 2513 .name = "gcc_usb30_sec_mock_utmi_postdiv_clk_src", 2514 .parent_hws = (const struct clk_hw*[]){ 2515 &gcc_usb30_sec_mock_utmi_clk_src.clkr.hw, 2516 }, 2517 .num_parents = 1, 2518 .flags = CLK_SET_RATE_PARENT, 2519 .ops = &clk_regmap_div_ro_ops, 2520 }, 2521 }; 2522 2523 static struct clk_branch gcc_aggre_noc_pcie0_tunnel_axi_clk = { 2524 .halt_reg = 0xa41a8, 2525 .halt_check = BRANCH_HALT_SKIP, 2526 .hwcg_reg = 0xa41a8, 2527 .hwcg_bit = 1, 2528 .clkr = { 2529 .enable_reg = 0x52018, 2530 .enable_mask = BIT(14), 2531 .hw.init = &(const struct clk_init_data) { 2532 .name = "gcc_aggre_noc_pcie0_tunnel_axi_clk", 2533 .ops = &clk_branch2_ops, 2534 }, 2535 }, 2536 }; 2537 2538 static struct clk_branch gcc_aggre_noc_pcie1_tunnel_axi_clk = { 2539 .halt_reg = 0x8d07c, 2540 .halt_check = BRANCH_HALT_SKIP, 2541 .hwcg_reg = 0x8d07c, 2542 .hwcg_bit = 1, 2543 .clkr = { 2544 .enable_reg = 0x52018, 2545 .enable_mask = BIT(21), 2546 .hw.init = &(const struct clk_init_data) { 2547 .name = "gcc_aggre_noc_pcie1_tunnel_axi_clk", 2548 .ops = &clk_branch2_ops, 2549 }, 2550 }, 2551 }; 2552 2553 static struct clk_branch gcc_aggre_noc_pcie_4_axi_clk = { 2554 .halt_reg = 0x6b1b8, 2555 .halt_check = BRANCH_HALT_SKIP, 2556 .hwcg_reg = 0x6b1b8, 2557 .hwcg_bit = 1, 2558 .clkr = { 2559 .enable_reg = 0x52000, 2560 .enable_mask = BIT(12), 2561 .hw.init = &(const struct clk_init_data) { 2562 .name = "gcc_aggre_noc_pcie_4_axi_clk", 2563 .ops = &clk_branch2_ops, 2564 }, 2565 }, 2566 }; 2567 2568 static struct clk_branch gcc_aggre_noc_pcie_south_sf_axi_clk = { 2569 .halt_reg = 0xbf13c, 2570 .halt_check = BRANCH_HALT_SKIP, 2571 .hwcg_reg = 0xbf13c, 2572 .hwcg_bit = 1, 2573 .clkr = { 2574 .enable_reg = 0x52018, 2575 .enable_mask = BIT(13), 2576 .hw.init = &(const struct clk_init_data) { 2577 .name = "gcc_aggre_noc_pcie_south_sf_axi_clk", 2578 .ops = &clk_branch2_ops, 2579 }, 2580 }, 2581 }; 2582 2583 static struct clk_branch gcc_aggre_ufs_card_axi_clk = { 2584 .halt_reg = 0x750cc, 2585 .halt_check = BRANCH_HALT_VOTED, 2586 .hwcg_reg = 0x750cc, 2587 .hwcg_bit = 1, 2588 .clkr = { 2589 .enable_reg = 0x750cc, 2590 .enable_mask = BIT(0), 2591 .hw.init = &(const struct clk_init_data) { 2592 .name = "gcc_aggre_ufs_card_axi_clk", 2593 .parent_hws = (const struct clk_hw*[]){ 2594 &gcc_ufs_card_axi_clk_src.clkr.hw, 2595 }, 2596 .num_parents = 1, 2597 .flags = CLK_SET_RATE_PARENT, 2598 .ops = &clk_branch2_ops, 2599 }, 2600 }, 2601 }; 2602 2603 static struct clk_branch gcc_aggre_ufs_card_axi_hw_ctl_clk = { 2604 .halt_reg = 0x750cc, 2605 .halt_check = BRANCH_HALT_VOTED, 2606 .hwcg_reg = 0x750cc, 2607 .hwcg_bit = 1, 2608 .clkr = { 2609 .enable_reg = 0x750cc, 2610 .enable_mask = BIT(1), 2611 .hw.init = &(const struct clk_init_data) { 2612 .name = "gcc_aggre_ufs_card_axi_hw_ctl_clk", 2613 .parent_hws = (const struct clk_hw*[]){ 2614 &gcc_ufs_card_axi_clk_src.clkr.hw, 2615 }, 2616 .num_parents = 1, 2617 .flags = CLK_SET_RATE_PARENT, 2618 .ops = &clk_branch2_ops, 2619 }, 2620 }, 2621 }; 2622 2623 static struct clk_branch gcc_aggre_ufs_phy_axi_clk = { 2624 .halt_reg = 0x770cc, 2625 .halt_check = BRANCH_HALT_VOTED, 2626 .hwcg_reg = 0x770cc, 2627 .hwcg_bit = 1, 2628 .clkr = { 2629 .enable_reg = 0x770cc, 2630 .enable_mask = BIT(0), 2631 .hw.init = &(const struct clk_init_data) { 2632 .name = "gcc_aggre_ufs_phy_axi_clk", 2633 .parent_hws = (const struct clk_hw*[]){ 2634 &gcc_ufs_phy_axi_clk_src.clkr.hw, 2635 }, 2636 .num_parents = 1, 2637 .flags = CLK_SET_RATE_PARENT, 2638 .ops = &clk_branch2_ops, 2639 }, 2640 }, 2641 }; 2642 2643 static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk = { 2644 .halt_reg = 0x770cc, 2645 .halt_check = BRANCH_HALT_VOTED, 2646 .hwcg_reg = 0x770cc, 2647 .hwcg_bit = 1, 2648 .clkr = { 2649 .enable_reg = 0x770cc, 2650 .enable_mask = BIT(1), 2651 .hw.init = &(const struct clk_init_data) { 2652 .name = "gcc_aggre_ufs_phy_axi_hw_ctl_clk", 2653 .parent_hws = (const struct clk_hw*[]){ 2654 &gcc_ufs_phy_axi_clk_src.clkr.hw, 2655 }, 2656 .num_parents = 1, 2657 .flags = CLK_SET_RATE_PARENT, 2658 .ops = &clk_branch2_ops, 2659 }, 2660 }, 2661 }; 2662 2663 static struct clk_branch gcc_aggre_usb3_mp_axi_clk = { 2664 .halt_reg = 0xab084, 2665 .halt_check = BRANCH_HALT_VOTED, 2666 .hwcg_reg = 0xab084, 2667 .hwcg_bit = 1, 2668 .clkr = { 2669 .enable_reg = 0xab084, 2670 .enable_mask = BIT(0), 2671 .hw.init = &(const struct clk_init_data) { 2672 .name = "gcc_aggre_usb3_mp_axi_clk", 2673 .parent_hws = (const struct clk_hw*[]){ 2674 &gcc_usb30_mp_master_clk_src.clkr.hw, 2675 }, 2676 .num_parents = 1, 2677 .flags = CLK_SET_RATE_PARENT, 2678 .ops = &clk_branch2_ops, 2679 }, 2680 }, 2681 }; 2682 2683 static struct clk_branch gcc_aggre_usb3_prim_axi_clk = { 2684 .halt_reg = 0xf080, 2685 .halt_check = BRANCH_HALT_VOTED, 2686 .hwcg_reg = 0xf080, 2687 .hwcg_bit = 1, 2688 .clkr = { 2689 .enable_reg = 0xf080, 2690 .enable_mask = BIT(0), 2691 .hw.init = &(const struct clk_init_data) { 2692 .name = "gcc_aggre_usb3_prim_axi_clk", 2693 .parent_hws = (const struct clk_hw*[]){ 2694 &gcc_usb30_prim_master_clk_src.clkr.hw, 2695 }, 2696 .num_parents = 1, 2697 .flags = CLK_SET_RATE_PARENT, 2698 .ops = &clk_branch2_ops, 2699 }, 2700 }, 2701 }; 2702 2703 static struct clk_branch gcc_aggre_usb3_sec_axi_clk = { 2704 .halt_reg = 0x10080, 2705 .halt_check = BRANCH_HALT_VOTED, 2706 .hwcg_reg = 0x10080, 2707 .hwcg_bit = 1, 2708 .clkr = { 2709 .enable_reg = 0x10080, 2710 .enable_mask = BIT(0), 2711 .hw.init = &(const struct clk_init_data) { 2712 .name = "gcc_aggre_usb3_sec_axi_clk", 2713 .parent_hws = (const struct clk_hw*[]){ 2714 &gcc_usb30_sec_master_clk_src.clkr.hw, 2715 }, 2716 .num_parents = 1, 2717 .flags = CLK_SET_RATE_PARENT, 2718 .ops = &clk_branch2_ops, 2719 }, 2720 }, 2721 }; 2722 2723 static struct clk_branch gcc_aggre_usb4_1_axi_clk = { 2724 .halt_reg = 0xb80e4, 2725 .halt_check = BRANCH_HALT_VOTED, 2726 .hwcg_reg = 0xb80e4, 2727 .hwcg_bit = 1, 2728 .clkr = { 2729 .enable_reg = 0xb80e4, 2730 .enable_mask = BIT(0), 2731 .hw.init = &(const struct clk_init_data) { 2732 .name = "gcc_aggre_usb4_1_axi_clk", 2733 .parent_hws = (const struct clk_hw*[]){ 2734 &gcc_usb4_1_master_clk_src.clkr.hw, 2735 }, 2736 .num_parents = 1, 2737 .flags = CLK_SET_RATE_PARENT, 2738 .ops = &clk_branch2_ops, 2739 }, 2740 }, 2741 }; 2742 2743 static struct clk_branch gcc_aggre_usb4_axi_clk = { 2744 .halt_reg = 0x2a0e4, 2745 .halt_check = BRANCH_HALT_VOTED, 2746 .hwcg_reg = 0x2a0e4, 2747 .hwcg_bit = 1, 2748 .clkr = { 2749 .enable_reg = 0x2a0e4, 2750 .enable_mask = BIT(0), 2751 .hw.init = &(const struct clk_init_data) { 2752 .name = "gcc_aggre_usb4_axi_clk", 2753 .parent_hws = (const struct clk_hw*[]){ 2754 &gcc_usb4_master_clk_src.clkr.hw, 2755 }, 2756 .num_parents = 1, 2757 .flags = CLK_SET_RATE_PARENT, 2758 .ops = &clk_branch2_ops, 2759 }, 2760 }, 2761 }; 2762 2763 static struct clk_branch gcc_aggre_usb_noc_axi_clk = { 2764 .halt_reg = 0x5d024, 2765 .halt_check = BRANCH_HALT_VOTED, 2766 .hwcg_reg = 0x5d024, 2767 .hwcg_bit = 1, 2768 .clkr = { 2769 .enable_reg = 0x5d024, 2770 .enable_mask = BIT(0), 2771 .hw.init = &(const struct clk_init_data) { 2772 .name = "gcc_aggre_usb_noc_axi_clk", 2773 .ops = &clk_branch2_ops, 2774 }, 2775 }, 2776 }; 2777 2778 static struct clk_branch gcc_aggre_usb_noc_north_axi_clk = { 2779 .halt_reg = 0x5d020, 2780 .halt_check = BRANCH_HALT_VOTED, 2781 .hwcg_reg = 0x5d020, 2782 .hwcg_bit = 1, 2783 .clkr = { 2784 .enable_reg = 0x5d020, 2785 .enable_mask = BIT(0), 2786 .hw.init = &(const struct clk_init_data) { 2787 .name = "gcc_aggre_usb_noc_north_axi_clk", 2788 .ops = &clk_branch2_ops, 2789 }, 2790 }, 2791 }; 2792 2793 static struct clk_branch gcc_aggre_usb_noc_south_axi_clk = { 2794 .halt_reg = 0x5d01c, 2795 .halt_check = BRANCH_HALT_VOTED, 2796 .hwcg_reg = 0x5d01c, 2797 .hwcg_bit = 1, 2798 .clkr = { 2799 .enable_reg = 0x5d01c, 2800 .enable_mask = BIT(0), 2801 .hw.init = &(const struct clk_init_data) { 2802 .name = "gcc_aggre_usb_noc_south_axi_clk", 2803 .ops = &clk_branch2_ops, 2804 }, 2805 }, 2806 }; 2807 2808 static struct clk_branch gcc_ahb2phy0_clk = { 2809 .halt_reg = 0x6a004, 2810 .halt_check = BRANCH_HALT_VOTED, 2811 .hwcg_reg = 0x6a004, 2812 .hwcg_bit = 1, 2813 .clkr = { 2814 .enable_reg = 0x6a004, 2815 .enable_mask = BIT(0), 2816 .hw.init = &(const struct clk_init_data) { 2817 .name = "gcc_ahb2phy0_clk", 2818 .ops = &clk_branch2_ops, 2819 }, 2820 }, 2821 }; 2822 2823 static struct clk_branch gcc_ahb2phy2_clk = { 2824 .halt_reg = 0x6a008, 2825 .halt_check = BRANCH_HALT_VOTED, 2826 .hwcg_reg = 0x6a008, 2827 .hwcg_bit = 1, 2828 .clkr = { 2829 .enable_reg = 0x6a008, 2830 .enable_mask = BIT(0), 2831 .hw.init = &(const struct clk_init_data) { 2832 .name = "gcc_ahb2phy2_clk", 2833 .ops = &clk_branch2_ops, 2834 }, 2835 }, 2836 }; 2837 2838 static struct clk_branch gcc_boot_rom_ahb_clk = { 2839 .halt_reg = 0x38004, 2840 .halt_check = BRANCH_HALT_VOTED, 2841 .hwcg_reg = 0x38004, 2842 .hwcg_bit = 1, 2843 .clkr = { 2844 .enable_reg = 0x52000, 2845 .enable_mask = BIT(10), 2846 .hw.init = &(const struct clk_init_data) { 2847 .name = "gcc_boot_rom_ahb_clk", 2848 .ops = &clk_branch2_ops, 2849 }, 2850 }, 2851 }; 2852 2853 static struct clk_branch gcc_camera_hf_axi_clk = { 2854 .halt_reg = 0x26010, 2855 .halt_check = BRANCH_HALT_SKIP, 2856 .hwcg_reg = 0x26010, 2857 .hwcg_bit = 1, 2858 .clkr = { 2859 .enable_reg = 0x26010, 2860 .enable_mask = BIT(0), 2861 .hw.init = &(const struct clk_init_data) { 2862 .name = "gcc_camera_hf_axi_clk", 2863 .ops = &clk_branch2_ops, 2864 }, 2865 }, 2866 }; 2867 2868 static struct clk_branch gcc_camera_sf_axi_clk = { 2869 .halt_reg = 0x26014, 2870 .halt_check = BRANCH_HALT_SKIP, 2871 .hwcg_reg = 0x26014, 2872 .hwcg_bit = 1, 2873 .clkr = { 2874 .enable_reg = 0x26014, 2875 .enable_mask = BIT(0), 2876 .hw.init = &(const struct clk_init_data) { 2877 .name = "gcc_camera_sf_axi_clk", 2878 .ops = &clk_branch2_ops, 2879 }, 2880 }, 2881 }; 2882 2883 static struct clk_branch gcc_camera_throttle_nrt_axi_clk = { 2884 .halt_reg = 0x2601c, 2885 .halt_check = BRANCH_HALT_SKIP, 2886 .hwcg_reg = 0x2601c, 2887 .hwcg_bit = 1, 2888 .clkr = { 2889 .enable_reg = 0x2601c, 2890 .enable_mask = BIT(0), 2891 .hw.init = &(const struct clk_init_data) { 2892 .name = "gcc_camera_throttle_nrt_axi_clk", 2893 .ops = &clk_branch2_ops, 2894 }, 2895 }, 2896 }; 2897 2898 static struct clk_branch gcc_camera_throttle_rt_axi_clk = { 2899 .halt_reg = 0x26018, 2900 .halt_check = BRANCH_HALT_SKIP, 2901 .hwcg_reg = 0x26018, 2902 .hwcg_bit = 1, 2903 .clkr = { 2904 .enable_reg = 0x26018, 2905 .enable_mask = BIT(0), 2906 .hw.init = &(const struct clk_init_data) { 2907 .name = "gcc_camera_throttle_rt_axi_clk", 2908 .ops = &clk_branch2_ops, 2909 }, 2910 }, 2911 }; 2912 2913 static struct clk_branch gcc_camera_throttle_xo_clk = { 2914 .halt_reg = 0x26024, 2915 .halt_check = BRANCH_HALT, 2916 .clkr = { 2917 .enable_reg = 0x26024, 2918 .enable_mask = BIT(0), 2919 .hw.init = &(const struct clk_init_data) { 2920 .name = "gcc_camera_throttle_xo_clk", 2921 .ops = &clk_branch2_ops, 2922 }, 2923 }, 2924 }; 2925 2926 static struct clk_branch gcc_cfg_noc_usb3_mp_axi_clk = { 2927 .halt_reg = 0xab088, 2928 .halt_check = BRANCH_HALT_VOTED, 2929 .hwcg_reg = 0xab088, 2930 .hwcg_bit = 1, 2931 .clkr = { 2932 .enable_reg = 0xab088, 2933 .enable_mask = BIT(0), 2934 .hw.init = &(const struct clk_init_data) { 2935 .name = "gcc_cfg_noc_usb3_mp_axi_clk", 2936 .parent_hws = (const struct clk_hw*[]){ 2937 &gcc_usb30_mp_master_clk_src.clkr.hw, 2938 }, 2939 .num_parents = 1, 2940 .flags = CLK_SET_RATE_PARENT, 2941 .ops = &clk_branch2_ops, 2942 }, 2943 }, 2944 }; 2945 2946 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = { 2947 .halt_reg = 0xf084, 2948 .halt_check = BRANCH_HALT_VOTED, 2949 .hwcg_reg = 0xf084, 2950 .hwcg_bit = 1, 2951 .clkr = { 2952 .enable_reg = 0xf084, 2953 .enable_mask = BIT(0), 2954 .hw.init = &(const struct clk_init_data) { 2955 .name = "gcc_cfg_noc_usb3_prim_axi_clk", 2956 .parent_hws = (const struct clk_hw*[]){ 2957 &gcc_usb30_prim_master_clk_src.clkr.hw, 2958 }, 2959 .num_parents = 1, 2960 .flags = CLK_SET_RATE_PARENT, 2961 .ops = &clk_branch2_ops, 2962 }, 2963 }, 2964 }; 2965 2966 static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = { 2967 .halt_reg = 0x10084, 2968 .halt_check = BRANCH_HALT_VOTED, 2969 .hwcg_reg = 0x10084, 2970 .hwcg_bit = 1, 2971 .clkr = { 2972 .enable_reg = 0x10084, 2973 .enable_mask = BIT(0), 2974 .hw.init = &(const struct clk_init_data) { 2975 .name = "gcc_cfg_noc_usb3_sec_axi_clk", 2976 .parent_hws = (const struct clk_hw*[]){ 2977 &gcc_usb30_sec_master_clk_src.clkr.hw, 2978 }, 2979 .num_parents = 1, 2980 .flags = CLK_SET_RATE_PARENT, 2981 .ops = &clk_branch2_ops, 2982 }, 2983 }, 2984 }; 2985 2986 static struct clk_branch gcc_cnoc_pcie0_tunnel_clk = { 2987 .halt_reg = 0xa4074, 2988 .halt_check = BRANCH_HALT_VOTED, 2989 .clkr = { 2990 .enable_reg = 0x52020, 2991 .enable_mask = BIT(8), 2992 .hw.init = &(const struct clk_init_data) { 2993 .name = "gcc_cnoc_pcie0_tunnel_clk", 2994 .ops = &clk_branch2_ops, 2995 }, 2996 }, 2997 }; 2998 2999 static struct clk_branch gcc_cnoc_pcie1_tunnel_clk = { 3000 .halt_reg = 0x8d074, 3001 .halt_check = BRANCH_HALT_VOTED, 3002 .clkr = { 3003 .enable_reg = 0x52020, 3004 .enable_mask = BIT(9), 3005 .hw.init = &(const struct clk_init_data) { 3006 .name = "gcc_cnoc_pcie1_tunnel_clk", 3007 .ops = &clk_branch2_ops, 3008 }, 3009 }, 3010 }; 3011 3012 static struct clk_branch gcc_cnoc_pcie4_qx_clk = { 3013 .halt_reg = 0x6b084, 3014 .halt_check = BRANCH_HALT_VOTED, 3015 .hwcg_reg = 0x6b084, 3016 .hwcg_bit = 1, 3017 .clkr = { 3018 .enable_reg = 0x52020, 3019 .enable_mask = BIT(10), 3020 .hw.init = &(const struct clk_init_data) { 3021 .name = "gcc_cnoc_pcie4_qx_clk", 3022 .ops = &clk_branch2_ops, 3023 }, 3024 }, 3025 }; 3026 3027 static struct clk_branch gcc_ddrss_gpu_axi_clk = { 3028 .halt_reg = 0x7115c, 3029 .halt_check = BRANCH_HALT_SKIP, 3030 .hwcg_reg = 0x7115c, 3031 .hwcg_bit = 1, 3032 .clkr = { 3033 .enable_reg = 0x7115c, 3034 .enable_mask = BIT(0), 3035 .hw.init = &(const struct clk_init_data) { 3036 .name = "gcc_ddrss_gpu_axi_clk", 3037 .ops = &clk_branch2_aon_ops, 3038 }, 3039 }, 3040 }; 3041 3042 static struct clk_branch gcc_ddrss_pcie_sf_tbu_clk = { 3043 .halt_reg = 0xa602c, 3044 .halt_check = BRANCH_HALT_SKIP, 3045 .hwcg_reg = 0xa602c, 3046 .hwcg_bit = 1, 3047 .clkr = { 3048 .enable_reg = 0x52000, 3049 .enable_mask = BIT(19), 3050 .hw.init = &(const struct clk_init_data) { 3051 .name = "gcc_ddrss_pcie_sf_tbu_clk", 3052 .ops = &clk_branch2_ops, 3053 }, 3054 }, 3055 }; 3056 3057 static struct clk_branch gcc_disp1_hf_axi_clk = { 3058 .halt_reg = 0xbb010, 3059 .halt_check = BRANCH_HALT_SKIP, 3060 .hwcg_reg = 0xbb010, 3061 .hwcg_bit = 1, 3062 .clkr = { 3063 .enable_reg = 0xbb010, 3064 .enable_mask = BIT(0), 3065 .hw.init = &(const struct clk_init_data) { 3066 .name = "gcc_disp1_hf_axi_clk", 3067 .ops = &clk_branch2_ops, 3068 }, 3069 }, 3070 }; 3071 3072 static struct clk_branch gcc_disp1_sf_axi_clk = { 3073 .halt_reg = 0xbb018, 3074 .halt_check = BRANCH_HALT_SKIP, 3075 .hwcg_reg = 0xbb018, 3076 .hwcg_bit = 1, 3077 .clkr = { 3078 .enable_reg = 0xbb018, 3079 .enable_mask = BIT(0), 3080 .hw.init = &(const struct clk_init_data) { 3081 .name = "gcc_disp1_sf_axi_clk", 3082 .ops = &clk_branch2_ops, 3083 }, 3084 }, 3085 }; 3086 3087 static struct clk_branch gcc_disp1_throttle_nrt_axi_clk = { 3088 .halt_reg = 0xbb024, 3089 .halt_check = BRANCH_HALT_SKIP, 3090 .hwcg_reg = 0xbb024, 3091 .hwcg_bit = 1, 3092 .clkr = { 3093 .enable_reg = 0xbb024, 3094 .enable_mask = BIT(0), 3095 .hw.init = &(const struct clk_init_data) { 3096 .name = "gcc_disp1_throttle_nrt_axi_clk", 3097 .ops = &clk_branch2_ops, 3098 }, 3099 }, 3100 }; 3101 3102 static struct clk_branch gcc_disp1_throttle_rt_axi_clk = { 3103 .halt_reg = 0xbb020, 3104 .halt_check = BRANCH_HALT_SKIP, 3105 .hwcg_reg = 0xbb020, 3106 .hwcg_bit = 1, 3107 .clkr = { 3108 .enable_reg = 0xbb020, 3109 .enable_mask = BIT(0), 3110 .hw.init = &(const struct clk_init_data) { 3111 .name = "gcc_disp1_throttle_rt_axi_clk", 3112 .ops = &clk_branch2_ops, 3113 }, 3114 }, 3115 }; 3116 3117 static struct clk_branch gcc_disp_hf_axi_clk = { 3118 .halt_reg = 0x27010, 3119 .halt_check = BRANCH_HALT_SKIP, 3120 .hwcg_reg = 0x27010, 3121 .hwcg_bit = 1, 3122 .clkr = { 3123 .enable_reg = 0x27010, 3124 .enable_mask = BIT(0), 3125 .hw.init = &(const struct clk_init_data) { 3126 .name = "gcc_disp_hf_axi_clk", 3127 .ops = &clk_branch2_ops, 3128 }, 3129 }, 3130 }; 3131 3132 static struct clk_branch gcc_disp_sf_axi_clk = { 3133 .halt_reg = 0x27018, 3134 .halt_check = BRANCH_HALT_SKIP, 3135 .hwcg_reg = 0x27018, 3136 .hwcg_bit = 1, 3137 .clkr = { 3138 .enable_reg = 0x27018, 3139 .enable_mask = BIT(0), 3140 .hw.init = &(const struct clk_init_data) { 3141 .name = "gcc_disp_sf_axi_clk", 3142 .ops = &clk_branch2_ops, 3143 }, 3144 }, 3145 }; 3146 3147 static struct clk_branch gcc_disp_throttle_nrt_axi_clk = { 3148 .halt_reg = 0x27024, 3149 .halt_check = BRANCH_HALT_SKIP, 3150 .hwcg_reg = 0x27024, 3151 .hwcg_bit = 1, 3152 .clkr = { 3153 .enable_reg = 0x27024, 3154 .enable_mask = BIT(0), 3155 .hw.init = &(const struct clk_init_data) { 3156 .name = "gcc_disp_throttle_nrt_axi_clk", 3157 .ops = &clk_branch2_ops, 3158 }, 3159 }, 3160 }; 3161 3162 static struct clk_branch gcc_disp_throttle_rt_axi_clk = { 3163 .halt_reg = 0x27020, 3164 .halt_check = BRANCH_HALT_SKIP, 3165 .hwcg_reg = 0x27020, 3166 .hwcg_bit = 1, 3167 .clkr = { 3168 .enable_reg = 0x27020, 3169 .enable_mask = BIT(0), 3170 .hw.init = &(const struct clk_init_data) { 3171 .name = "gcc_disp_throttle_rt_axi_clk", 3172 .ops = &clk_branch2_ops, 3173 }, 3174 }, 3175 }; 3176 3177 static struct clk_branch gcc_emac0_axi_clk = { 3178 .halt_reg = 0xaa010, 3179 .halt_check = BRANCH_HALT_VOTED, 3180 .hwcg_reg = 0xaa010, 3181 .hwcg_bit = 1, 3182 .clkr = { 3183 .enable_reg = 0xaa010, 3184 .enable_mask = BIT(0), 3185 .hw.init = &(const struct clk_init_data) { 3186 .name = "gcc_emac0_axi_clk", 3187 .ops = &clk_branch2_ops, 3188 }, 3189 }, 3190 }; 3191 3192 static struct clk_branch gcc_emac0_ptp_clk = { 3193 .halt_reg = 0xaa01c, 3194 .halt_check = BRANCH_HALT, 3195 .clkr = { 3196 .enable_reg = 0xaa01c, 3197 .enable_mask = BIT(0), 3198 .hw.init = &(const struct clk_init_data) { 3199 .name = "gcc_emac0_ptp_clk", 3200 .parent_hws = (const struct clk_hw*[]){ 3201 &gcc_emac0_ptp_clk_src.clkr.hw, 3202 }, 3203 .num_parents = 1, 3204 .flags = CLK_SET_RATE_PARENT, 3205 .ops = &clk_branch2_ops, 3206 }, 3207 }, 3208 }; 3209 3210 static struct clk_branch gcc_emac0_rgmii_clk = { 3211 .halt_reg = 0xaa038, 3212 .halt_check = BRANCH_HALT, 3213 .clkr = { 3214 .enable_reg = 0xaa038, 3215 .enable_mask = BIT(0), 3216 .hw.init = &(const struct clk_init_data) { 3217 .name = "gcc_emac0_rgmii_clk", 3218 .parent_hws = (const struct clk_hw*[]){ 3219 &gcc_emac0_rgmii_clk_src.clkr.hw, 3220 }, 3221 .num_parents = 1, 3222 .flags = CLK_SET_RATE_PARENT, 3223 .ops = &clk_branch2_ops, 3224 }, 3225 }, 3226 }; 3227 3228 static struct clk_branch gcc_emac0_slv_ahb_clk = { 3229 .halt_reg = 0xaa018, 3230 .halt_check = BRANCH_HALT_VOTED, 3231 .hwcg_reg = 0xaa018, 3232 .hwcg_bit = 1, 3233 .clkr = { 3234 .enable_reg = 0xaa018, 3235 .enable_mask = BIT(0), 3236 .hw.init = &(const struct clk_init_data) { 3237 .name = "gcc_emac0_slv_ahb_clk", 3238 .ops = &clk_branch2_ops, 3239 }, 3240 }, 3241 }; 3242 3243 static struct clk_branch gcc_emac1_axi_clk = { 3244 .halt_reg = 0xba010, 3245 .halt_check = BRANCH_HALT_VOTED, 3246 .hwcg_reg = 0xba010, 3247 .hwcg_bit = 1, 3248 .clkr = { 3249 .enable_reg = 0xba010, 3250 .enable_mask = BIT(0), 3251 .hw.init = &(const struct clk_init_data) { 3252 .name = "gcc_emac1_axi_clk", 3253 .ops = &clk_branch2_ops, 3254 }, 3255 }, 3256 }; 3257 3258 static struct clk_branch gcc_emac1_ptp_clk = { 3259 .halt_reg = 0xba01c, 3260 .halt_check = BRANCH_HALT, 3261 .clkr = { 3262 .enable_reg = 0xba01c, 3263 .enable_mask = BIT(0), 3264 .hw.init = &(const struct clk_init_data) { 3265 .name = "gcc_emac1_ptp_clk", 3266 .parent_hws = (const struct clk_hw*[]){ 3267 &gcc_emac1_ptp_clk_src.clkr.hw, 3268 }, 3269 .num_parents = 1, 3270 .flags = CLK_SET_RATE_PARENT, 3271 .ops = &clk_branch2_ops, 3272 }, 3273 }, 3274 }; 3275 3276 static struct clk_branch gcc_emac1_rgmii_clk = { 3277 .halt_reg = 0xba038, 3278 .halt_check = BRANCH_HALT, 3279 .clkr = { 3280 .enable_reg = 0xba038, 3281 .enable_mask = BIT(0), 3282 .hw.init = &(const struct clk_init_data) { 3283 .name = "gcc_emac1_rgmii_clk", 3284 .parent_hws = (const struct clk_hw*[]){ 3285 &gcc_emac1_rgmii_clk_src.clkr.hw, 3286 }, 3287 .num_parents = 1, 3288 .flags = CLK_SET_RATE_PARENT, 3289 .ops = &clk_branch2_ops, 3290 }, 3291 }, 3292 }; 3293 3294 static struct clk_branch gcc_emac1_slv_ahb_clk = { 3295 .halt_reg = 0xba018, 3296 .halt_check = BRANCH_HALT_VOTED, 3297 .hwcg_reg = 0xba018, 3298 .hwcg_bit = 1, 3299 .clkr = { 3300 .enable_reg = 0xba018, 3301 .enable_mask = BIT(0), 3302 .hw.init = &(const struct clk_init_data) { 3303 .name = "gcc_emac1_slv_ahb_clk", 3304 .ops = &clk_branch2_ops, 3305 }, 3306 }, 3307 }; 3308 3309 static struct clk_branch gcc_gp1_clk = { 3310 .halt_reg = 0x64000, 3311 .halt_check = BRANCH_HALT, 3312 .clkr = { 3313 .enable_reg = 0x64000, 3314 .enable_mask = BIT(0), 3315 .hw.init = &(const struct clk_init_data) { 3316 .name = "gcc_gp1_clk", 3317 .parent_hws = (const struct clk_hw*[]){ 3318 &gcc_gp1_clk_src.clkr.hw, 3319 }, 3320 .num_parents = 1, 3321 .flags = CLK_SET_RATE_PARENT, 3322 .ops = &clk_branch2_ops, 3323 }, 3324 }, 3325 }; 3326 3327 static struct clk_branch gcc_gp2_clk = { 3328 .halt_reg = 0x65000, 3329 .halt_check = BRANCH_HALT, 3330 .clkr = { 3331 .enable_reg = 0x65000, 3332 .enable_mask = BIT(0), 3333 .hw.init = &(const struct clk_init_data) { 3334 .name = "gcc_gp2_clk", 3335 .parent_hws = (const struct clk_hw*[]){ 3336 &gcc_gp2_clk_src.clkr.hw, 3337 }, 3338 .num_parents = 1, 3339 .flags = CLK_SET_RATE_PARENT, 3340 .ops = &clk_branch2_ops, 3341 }, 3342 }, 3343 }; 3344 3345 static struct clk_branch gcc_gp3_clk = { 3346 .halt_reg = 0x66000, 3347 .halt_check = BRANCH_HALT, 3348 .clkr = { 3349 .enable_reg = 0x66000, 3350 .enable_mask = BIT(0), 3351 .hw.init = &(const struct clk_init_data) { 3352 .name = "gcc_gp3_clk", 3353 .parent_hws = (const struct clk_hw*[]){ 3354 &gcc_gp3_clk_src.clkr.hw, 3355 }, 3356 .num_parents = 1, 3357 .flags = CLK_SET_RATE_PARENT, 3358 .ops = &clk_branch2_ops, 3359 }, 3360 }, 3361 }; 3362 3363 static struct clk_branch gcc_gp4_clk = { 3364 .halt_reg = 0xc2000, 3365 .halt_check = BRANCH_HALT, 3366 .clkr = { 3367 .enable_reg = 0xc2000, 3368 .enable_mask = BIT(0), 3369 .hw.init = &(const struct clk_init_data) { 3370 .name = "gcc_gp4_clk", 3371 .parent_hws = (const struct clk_hw*[]){ 3372 &gcc_gp4_clk_src.clkr.hw, 3373 }, 3374 .num_parents = 1, 3375 .flags = CLK_SET_RATE_PARENT, 3376 .ops = &clk_branch2_ops, 3377 }, 3378 }, 3379 }; 3380 3381 static struct clk_branch gcc_gp5_clk = { 3382 .halt_reg = 0xc3000, 3383 .halt_check = BRANCH_HALT, 3384 .clkr = { 3385 .enable_reg = 0xc3000, 3386 .enable_mask = BIT(0), 3387 .hw.init = &(const struct clk_init_data) { 3388 .name = "gcc_gp5_clk", 3389 .parent_hws = (const struct clk_hw*[]){ 3390 &gcc_gp5_clk_src.clkr.hw, 3391 }, 3392 .num_parents = 1, 3393 .flags = CLK_SET_RATE_PARENT, 3394 .ops = &clk_branch2_ops, 3395 }, 3396 }, 3397 }; 3398 3399 static struct clk_branch gcc_gpu_gpll0_clk_src = { 3400 .halt_check = BRANCH_HALT_DELAY, 3401 .clkr = { 3402 .enable_reg = 0x52000, 3403 .enable_mask = BIT(15), 3404 .hw.init = &(const struct clk_init_data) { 3405 .name = "gcc_gpu_gpll0_clk_src", 3406 .parent_hws = (const struct clk_hw*[]){ 3407 &gcc_gpll0.clkr.hw, 3408 }, 3409 .num_parents = 1, 3410 .flags = CLK_SET_RATE_PARENT, 3411 .ops = &clk_branch2_ops, 3412 }, 3413 }, 3414 }; 3415 3416 static struct clk_branch gcc_gpu_gpll0_div_clk_src = { 3417 .halt_check = BRANCH_HALT_DELAY, 3418 .clkr = { 3419 .enable_reg = 0x52000, 3420 .enable_mask = BIT(16), 3421 .hw.init = &(const struct clk_init_data) { 3422 .name = "gcc_gpu_gpll0_div_clk_src", 3423 .parent_hws = (const struct clk_hw*[]){ 3424 &gcc_gpll0_out_even.clkr.hw, 3425 }, 3426 .num_parents = 1, 3427 .flags = CLK_SET_RATE_PARENT, 3428 .ops = &clk_branch2_ops, 3429 }, 3430 }, 3431 }; 3432 3433 static struct clk_branch gcc_gpu_iref_en = { 3434 .halt_reg = 0x8c014, 3435 .halt_check = BRANCH_HALT, 3436 .clkr = { 3437 .enable_reg = 0x8c014, 3438 .enable_mask = BIT(0), 3439 .hw.init = &(const struct clk_init_data) { 3440 .name = "gcc_gpu_iref_en", 3441 .ops = &clk_branch2_ops, 3442 }, 3443 }, 3444 }; 3445 3446 static struct clk_branch gcc_gpu_memnoc_gfx_clk = { 3447 .halt_reg = 0x71010, 3448 .halt_check = BRANCH_HALT_VOTED, 3449 .hwcg_reg = 0x71010, 3450 .hwcg_bit = 1, 3451 .clkr = { 3452 .enable_reg = 0x71010, 3453 .enable_mask = BIT(0), 3454 .hw.init = &(const struct clk_init_data) { 3455 .name = "gcc_gpu_memnoc_gfx_clk", 3456 .ops = &clk_branch2_aon_ops, 3457 }, 3458 }, 3459 }; 3460 3461 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = { 3462 .halt_reg = 0x71020, 3463 .halt_check = BRANCH_HALT, 3464 .clkr = { 3465 .enable_reg = 0x71020, 3466 .enable_mask = BIT(0), 3467 .hw.init = &(const struct clk_init_data) { 3468 .name = "gcc_gpu_snoc_dvm_gfx_clk", 3469 .ops = &clk_branch2_aon_ops, 3470 }, 3471 }, 3472 }; 3473 3474 static struct clk_branch gcc_gpu_tcu_throttle_ahb_clk = { 3475 .halt_reg = 0x71008, 3476 .halt_check = BRANCH_HALT_VOTED, 3477 .hwcg_reg = 0x71008, 3478 .hwcg_bit = 1, 3479 .clkr = { 3480 .enable_reg = 0x71008, 3481 .enable_mask = BIT(0), 3482 .hw.init = &(const struct clk_init_data) { 3483 .name = "gcc_gpu_tcu_throttle_ahb_clk", 3484 .ops = &clk_branch2_ops, 3485 }, 3486 }, 3487 }; 3488 3489 static struct clk_branch gcc_gpu_tcu_throttle_clk = { 3490 .halt_reg = 0x71018, 3491 .halt_check = BRANCH_HALT_VOTED, 3492 .hwcg_reg = 0x71018, 3493 .hwcg_bit = 1, 3494 .clkr = { 3495 .enable_reg = 0x71018, 3496 .enable_mask = BIT(0), 3497 .hw.init = &(const struct clk_init_data) { 3498 .name = "gcc_gpu_tcu_throttle_clk", 3499 .ops = &clk_branch2_ops, 3500 }, 3501 }, 3502 }; 3503 3504 static struct clk_branch gcc_pcie0_phy_rchng_clk = { 3505 .halt_reg = 0xa4038, 3506 .halt_check = BRANCH_HALT_VOTED, 3507 .clkr = { 3508 .enable_reg = 0x52018, 3509 .enable_mask = BIT(11), 3510 .hw.init = &(const struct clk_init_data) { 3511 .name = "gcc_pcie0_phy_rchng_clk", 3512 .parent_hws = (const struct clk_hw*[]){ 3513 &gcc_pcie_0_phy_rchng_clk_src.clkr.hw, 3514 }, 3515 .num_parents = 1, 3516 .flags = CLK_SET_RATE_PARENT, 3517 .ops = &clk_branch2_ops, 3518 }, 3519 }, 3520 }; 3521 3522 static struct clk_branch gcc_pcie1_phy_rchng_clk = { 3523 .halt_reg = 0x8d038, 3524 .halt_check = BRANCH_HALT_VOTED, 3525 .clkr = { 3526 .enable_reg = 0x52000, 3527 .enable_mask = BIT(23), 3528 .hw.init = &(const struct clk_init_data) { 3529 .name = "gcc_pcie1_phy_rchng_clk", 3530 .parent_hws = (const struct clk_hw*[]){ 3531 &gcc_pcie_1_phy_rchng_clk_src.clkr.hw, 3532 }, 3533 .num_parents = 1, 3534 .flags = CLK_SET_RATE_PARENT, 3535 .ops = &clk_branch2_ops, 3536 }, 3537 }, 3538 }; 3539 3540 static struct clk_branch gcc_pcie2a_phy_rchng_clk = { 3541 .halt_reg = 0x9d040, 3542 .halt_check = BRANCH_HALT_VOTED, 3543 .clkr = { 3544 .enable_reg = 0x52010, 3545 .enable_mask = BIT(15), 3546 .hw.init = &(const struct clk_init_data) { 3547 .name = "gcc_pcie2a_phy_rchng_clk", 3548 .parent_hws = (const struct clk_hw*[]){ 3549 &gcc_pcie_2a_phy_rchng_clk_src.clkr.hw, 3550 }, 3551 .num_parents = 1, 3552 .flags = CLK_SET_RATE_PARENT, 3553 .ops = &clk_branch2_ops, 3554 }, 3555 }, 3556 }; 3557 3558 static struct clk_branch gcc_pcie2b_phy_rchng_clk = { 3559 .halt_reg = 0x9e040, 3560 .halt_check = BRANCH_HALT_VOTED, 3561 .clkr = { 3562 .enable_reg = 0x52010, 3563 .enable_mask = BIT(22), 3564 .hw.init = &(const struct clk_init_data) { 3565 .name = "gcc_pcie2b_phy_rchng_clk", 3566 .parent_hws = (const struct clk_hw*[]){ 3567 &gcc_pcie_2b_phy_rchng_clk_src.clkr.hw, 3568 }, 3569 .num_parents = 1, 3570 .flags = CLK_SET_RATE_PARENT, 3571 .ops = &clk_branch2_ops, 3572 }, 3573 }, 3574 }; 3575 3576 static struct clk_branch gcc_pcie3a_phy_rchng_clk = { 3577 .halt_reg = 0xa0040, 3578 .halt_check = BRANCH_HALT_VOTED, 3579 .clkr = { 3580 .enable_reg = 0x52010, 3581 .enable_mask = BIT(29), 3582 .hw.init = &(const struct clk_init_data) { 3583 .name = "gcc_pcie3a_phy_rchng_clk", 3584 .parent_hws = (const struct clk_hw*[]){ 3585 &gcc_pcie_3a_phy_rchng_clk_src.clkr.hw, 3586 }, 3587 .num_parents = 1, 3588 .flags = CLK_SET_RATE_PARENT, 3589 .ops = &clk_branch2_ops, 3590 }, 3591 }, 3592 }; 3593 3594 static struct clk_branch gcc_pcie3b_phy_rchng_clk = { 3595 .halt_reg = 0xa2040, 3596 .halt_check = BRANCH_HALT_VOTED, 3597 .clkr = { 3598 .enable_reg = 0x52018, 3599 .enable_mask = BIT(4), 3600 .hw.init = &(const struct clk_init_data) { 3601 .name = "gcc_pcie3b_phy_rchng_clk", 3602 .parent_hws = (const struct clk_hw*[]){ 3603 &gcc_pcie_3b_phy_rchng_clk_src.clkr.hw, 3604 }, 3605 .num_parents = 1, 3606 .flags = CLK_SET_RATE_PARENT, 3607 .ops = &clk_branch2_ops, 3608 }, 3609 }, 3610 }; 3611 3612 static struct clk_branch gcc_pcie4_phy_rchng_clk = { 3613 .halt_reg = 0x6b040, 3614 .halt_check = BRANCH_HALT_VOTED, 3615 .clkr = { 3616 .enable_reg = 0x52000, 3617 .enable_mask = BIT(22), 3618 .hw.init = &(const struct clk_init_data) { 3619 .name = "gcc_pcie4_phy_rchng_clk", 3620 .parent_hws = (const struct clk_hw*[]){ 3621 &gcc_pcie_4_phy_rchng_clk_src.clkr.hw, 3622 }, 3623 .num_parents = 1, 3624 .flags = CLK_SET_RATE_PARENT, 3625 .ops = &clk_branch2_ops, 3626 }, 3627 }, 3628 }; 3629 3630 static struct clk_branch gcc_pcie_0_aux_clk = { 3631 .halt_reg = 0xa4028, 3632 .halt_check = BRANCH_HALT_VOTED, 3633 .clkr = { 3634 .enable_reg = 0x52018, 3635 .enable_mask = BIT(9), 3636 .hw.init = &(const struct clk_init_data) { 3637 .name = "gcc_pcie_0_aux_clk", 3638 .parent_hws = (const struct clk_hw*[]){ 3639 &gcc_pcie_0_aux_clk_src.clkr.hw, 3640 }, 3641 .num_parents = 1, 3642 .flags = CLK_SET_RATE_PARENT, 3643 .ops = &clk_branch2_ops, 3644 }, 3645 }, 3646 }; 3647 3648 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = { 3649 .halt_reg = 0xa4024, 3650 .halt_check = BRANCH_HALT_VOTED, 3651 .hwcg_reg = 0xa4024, 3652 .hwcg_bit = 1, 3653 .clkr = { 3654 .enable_reg = 0x52018, 3655 .enable_mask = BIT(8), 3656 .hw.init = &(const struct clk_init_data) { 3657 .name = "gcc_pcie_0_cfg_ahb_clk", 3658 .ops = &clk_branch2_ops, 3659 }, 3660 }, 3661 }; 3662 3663 static struct clk_branch gcc_pcie_0_mstr_axi_clk = { 3664 .halt_reg = 0xa401c, 3665 .halt_check = BRANCH_HALT_SKIP, 3666 .hwcg_reg = 0xa401c, 3667 .hwcg_bit = 1, 3668 .clkr = { 3669 .enable_reg = 0x52018, 3670 .enable_mask = BIT(7), 3671 .hw.init = &(const struct clk_init_data) { 3672 .name = "gcc_pcie_0_mstr_axi_clk", 3673 .ops = &clk_branch2_ops, 3674 }, 3675 }, 3676 }; 3677 3678 static struct clk_branch gcc_pcie_0_pipe_clk = { 3679 .halt_reg = 0xa4030, 3680 .halt_check = BRANCH_HALT_SKIP, 3681 .clkr = { 3682 .enable_reg = 0x52018, 3683 .enable_mask = BIT(10), 3684 .hw.init = &(const struct clk_init_data) { 3685 .name = "gcc_pcie_0_pipe_clk", 3686 .parent_hws = (const struct clk_hw*[]){ 3687 &gcc_usb4_phy_pcie_pipe_mux_clk_src.clkr.hw, 3688 }, 3689 .num_parents = 1, 3690 .flags = CLK_SET_RATE_PARENT, 3691 .ops = &clk_branch2_ops, 3692 }, 3693 }, 3694 }; 3695 3696 static struct clk_branch gcc_pcie_0_slv_axi_clk = { 3697 .halt_reg = 0xa4014, 3698 .halt_check = BRANCH_HALT_VOTED, 3699 .hwcg_reg = 0xa4014, 3700 .hwcg_bit = 1, 3701 .clkr = { 3702 .enable_reg = 0x52018, 3703 .enable_mask = BIT(6), 3704 .hw.init = &(const struct clk_init_data) { 3705 .name = "gcc_pcie_0_slv_axi_clk", 3706 .ops = &clk_branch2_ops, 3707 }, 3708 }, 3709 }; 3710 3711 static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = { 3712 .halt_reg = 0xa4010, 3713 .halt_check = BRANCH_HALT_VOTED, 3714 .clkr = { 3715 .enable_reg = 0x52018, 3716 .enable_mask = BIT(5), 3717 .hw.init = &(const struct clk_init_data) { 3718 .name = "gcc_pcie_0_slv_q2a_axi_clk", 3719 .ops = &clk_branch2_ops, 3720 }, 3721 }, 3722 }; 3723 3724 static struct clk_branch gcc_pcie_1_aux_clk = { 3725 .halt_reg = 0x8d028, 3726 .halt_check = BRANCH_HALT_VOTED, 3727 .clkr = { 3728 .enable_reg = 0x52000, 3729 .enable_mask = BIT(29), 3730 .hw.init = &(const struct clk_init_data) { 3731 .name = "gcc_pcie_1_aux_clk", 3732 .parent_hws = (const struct clk_hw*[]){ 3733 &gcc_pcie_1_aux_clk_src.clkr.hw, 3734 }, 3735 .num_parents = 1, 3736 .flags = CLK_SET_RATE_PARENT, 3737 .ops = &clk_branch2_ops, 3738 }, 3739 }, 3740 }; 3741 3742 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = { 3743 .halt_reg = 0x8d024, 3744 .halt_check = BRANCH_HALT_VOTED, 3745 .hwcg_reg = 0x8d024, 3746 .hwcg_bit = 1, 3747 .clkr = { 3748 .enable_reg = 0x52000, 3749 .enable_mask = BIT(28), 3750 .hw.init = &(const struct clk_init_data) { 3751 .name = "gcc_pcie_1_cfg_ahb_clk", 3752 .ops = &clk_branch2_ops, 3753 }, 3754 }, 3755 }; 3756 3757 static struct clk_branch gcc_pcie_1_mstr_axi_clk = { 3758 .halt_reg = 0x8d01c, 3759 .halt_check = BRANCH_HALT_SKIP, 3760 .hwcg_reg = 0x8d01c, 3761 .hwcg_bit = 1, 3762 .clkr = { 3763 .enable_reg = 0x52000, 3764 .enable_mask = BIT(27), 3765 .hw.init = &(const struct clk_init_data) { 3766 .name = "gcc_pcie_1_mstr_axi_clk", 3767 .ops = &clk_branch2_ops, 3768 }, 3769 }, 3770 }; 3771 3772 static struct clk_branch gcc_pcie_1_pipe_clk = { 3773 .halt_reg = 0x8d030, 3774 .halt_check = BRANCH_HALT_SKIP, 3775 .clkr = { 3776 .enable_reg = 0x52000, 3777 .enable_mask = BIT(30), 3778 .hw.init = &(const struct clk_init_data) { 3779 .name = "gcc_pcie_1_pipe_clk", 3780 .parent_hws = (const struct clk_hw*[]){ 3781 &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr.hw, 3782 }, 3783 .num_parents = 1, 3784 .flags = CLK_SET_RATE_PARENT, 3785 .ops = &clk_branch2_ops, 3786 }, 3787 }, 3788 }; 3789 3790 static struct clk_branch gcc_pcie_1_slv_axi_clk = { 3791 .halt_reg = 0x8d014, 3792 .halt_check = BRANCH_HALT_VOTED, 3793 .hwcg_reg = 0x8d014, 3794 .hwcg_bit = 1, 3795 .clkr = { 3796 .enable_reg = 0x52000, 3797 .enable_mask = BIT(26), 3798 .hw.init = &(const struct clk_init_data) { 3799 .name = "gcc_pcie_1_slv_axi_clk", 3800 .ops = &clk_branch2_ops, 3801 }, 3802 }, 3803 }; 3804 3805 static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = { 3806 .halt_reg = 0x8d010, 3807 .halt_check = BRANCH_HALT_VOTED, 3808 .clkr = { 3809 .enable_reg = 0x52000, 3810 .enable_mask = BIT(25), 3811 .hw.init = &(const struct clk_init_data) { 3812 .name = "gcc_pcie_1_slv_q2a_axi_clk", 3813 .ops = &clk_branch2_ops, 3814 }, 3815 }, 3816 }; 3817 3818 static struct clk_branch gcc_pcie_2a2b_clkref_clk = { 3819 .halt_reg = 0x8c034, 3820 .halt_check = BRANCH_HALT, 3821 .clkr = { 3822 .enable_reg = 0x8c034, 3823 .enable_mask = BIT(0), 3824 .hw.init = &(const struct clk_init_data) { 3825 .name = "gcc_pcie_2a2b_clkref_clk", 3826 .ops = &clk_branch2_ops, 3827 }, 3828 }, 3829 }; 3830 3831 static struct clk_branch gcc_pcie_2a_aux_clk = { 3832 .halt_reg = 0x9d028, 3833 .halt_check = BRANCH_HALT_VOTED, 3834 .clkr = { 3835 .enable_reg = 0x52010, 3836 .enable_mask = BIT(13), 3837 .hw.init = &(const struct clk_init_data) { 3838 .name = "gcc_pcie_2a_aux_clk", 3839 .parent_hws = (const struct clk_hw*[]){ 3840 &gcc_pcie_2a_aux_clk_src.clkr.hw, 3841 }, 3842 .num_parents = 1, 3843 .flags = CLK_SET_RATE_PARENT, 3844 .ops = &clk_branch2_ops, 3845 }, 3846 }, 3847 }; 3848 3849 static struct clk_branch gcc_pcie_2a_cfg_ahb_clk = { 3850 .halt_reg = 0x9d024, 3851 .halt_check = BRANCH_HALT_VOTED, 3852 .hwcg_reg = 0x9d024, 3853 .hwcg_bit = 1, 3854 .clkr = { 3855 .enable_reg = 0x52010, 3856 .enable_mask = BIT(12), 3857 .hw.init = &(const struct clk_init_data) { 3858 .name = "gcc_pcie_2a_cfg_ahb_clk", 3859 .ops = &clk_branch2_ops, 3860 }, 3861 }, 3862 }; 3863 3864 static struct clk_branch gcc_pcie_2a_mstr_axi_clk = { 3865 .halt_reg = 0x9d01c, 3866 .halt_check = BRANCH_HALT_SKIP, 3867 .hwcg_reg = 0x9d01c, 3868 .hwcg_bit = 1, 3869 .clkr = { 3870 .enable_reg = 0x52010, 3871 .enable_mask = BIT(11), 3872 .hw.init = &(const struct clk_init_data) { 3873 .name = "gcc_pcie_2a_mstr_axi_clk", 3874 .ops = &clk_branch2_ops, 3875 }, 3876 }, 3877 }; 3878 3879 static struct clk_branch gcc_pcie_2a_pipe_clk = { 3880 .halt_reg = 0x9d030, 3881 .halt_check = BRANCH_HALT_SKIP, 3882 .clkr = { 3883 .enable_reg = 0x52010, 3884 .enable_mask = BIT(14), 3885 .hw.init = &(const struct clk_init_data) { 3886 .name = "gcc_pcie_2a_pipe_clk", 3887 .parent_hws = (const struct clk_hw*[]){ 3888 &gcc_pcie_2a_pipe_clk_src.clkr.hw, 3889 }, 3890 .num_parents = 1, 3891 .flags = CLK_SET_RATE_PARENT, 3892 .ops = &clk_branch2_ops, 3893 }, 3894 }, 3895 }; 3896 3897 static struct clk_branch gcc_pcie_2a_pipediv2_clk = { 3898 .halt_reg = 0x9d038, 3899 .halt_check = BRANCH_HALT_SKIP, 3900 .clkr = { 3901 .enable_reg = 0x52018, 3902 .enable_mask = BIT(22), 3903 .hw.init = &(const struct clk_init_data) { 3904 .name = "gcc_pcie_2a_pipediv2_clk", 3905 .parent_hws = (const struct clk_hw*[]){ 3906 &gcc_pcie_2a_pipe_div_clk_src.clkr.hw, 3907 }, 3908 .num_parents = 1, 3909 .flags = CLK_SET_RATE_PARENT, 3910 .ops = &clk_branch2_ops, 3911 }, 3912 }, 3913 }; 3914 3915 static struct clk_branch gcc_pcie_2a_slv_axi_clk = { 3916 .halt_reg = 0x9d014, 3917 .halt_check = BRANCH_HALT_VOTED, 3918 .hwcg_reg = 0x9d014, 3919 .hwcg_bit = 1, 3920 .clkr = { 3921 .enable_reg = 0x52010, 3922 .enable_mask = BIT(10), 3923 .hw.init = &(const struct clk_init_data) { 3924 .name = "gcc_pcie_2a_slv_axi_clk", 3925 .ops = &clk_branch2_ops, 3926 }, 3927 }, 3928 }; 3929 3930 static struct clk_branch gcc_pcie_2a_slv_q2a_axi_clk = { 3931 .halt_reg = 0x9d010, 3932 .halt_check = BRANCH_HALT_VOTED, 3933 .clkr = { 3934 .enable_reg = 0x52018, 3935 .enable_mask = BIT(12), 3936 .hw.init = &(const struct clk_init_data) { 3937 .name = "gcc_pcie_2a_slv_q2a_axi_clk", 3938 .ops = &clk_branch2_ops, 3939 }, 3940 }, 3941 }; 3942 3943 static struct clk_branch gcc_pcie_2b_aux_clk = { 3944 .halt_reg = 0x9e028, 3945 .halt_check = BRANCH_HALT_VOTED, 3946 .clkr = { 3947 .enable_reg = 0x52010, 3948 .enable_mask = BIT(20), 3949 .hw.init = &(const struct clk_init_data) { 3950 .name = "gcc_pcie_2b_aux_clk", 3951 .parent_hws = (const struct clk_hw*[]){ 3952 &gcc_pcie_2b_aux_clk_src.clkr.hw, 3953 }, 3954 .num_parents = 1, 3955 .flags = CLK_SET_RATE_PARENT, 3956 .ops = &clk_branch2_ops, 3957 }, 3958 }, 3959 }; 3960 3961 static struct clk_branch gcc_pcie_2b_cfg_ahb_clk = { 3962 .halt_reg = 0x9e024, 3963 .halt_check = BRANCH_HALT_VOTED, 3964 .hwcg_reg = 0x9e024, 3965 .hwcg_bit = 1, 3966 .clkr = { 3967 .enable_reg = 0x52010, 3968 .enable_mask = BIT(19), 3969 .hw.init = &(const struct clk_init_data) { 3970 .name = "gcc_pcie_2b_cfg_ahb_clk", 3971 .ops = &clk_branch2_ops, 3972 }, 3973 }, 3974 }; 3975 3976 static struct clk_branch gcc_pcie_2b_mstr_axi_clk = { 3977 .halt_reg = 0x9e01c, 3978 .halt_check = BRANCH_HALT_SKIP, 3979 .hwcg_reg = 0x9e01c, 3980 .hwcg_bit = 1, 3981 .clkr = { 3982 .enable_reg = 0x52010, 3983 .enable_mask = BIT(18), 3984 .hw.init = &(const struct clk_init_data) { 3985 .name = "gcc_pcie_2b_mstr_axi_clk", 3986 .ops = &clk_branch2_ops, 3987 }, 3988 }, 3989 }; 3990 3991 static struct clk_branch gcc_pcie_2b_pipe_clk = { 3992 .halt_reg = 0x9e030, 3993 .halt_check = BRANCH_HALT_SKIP, 3994 .clkr = { 3995 .enable_reg = 0x52010, 3996 .enable_mask = BIT(21), 3997 .hw.init = &(const struct clk_init_data) { 3998 .name = "gcc_pcie_2b_pipe_clk", 3999 .parent_hws = (const struct clk_hw*[]){ 4000 &gcc_pcie_2b_pipe_clk_src.clkr.hw, 4001 }, 4002 .num_parents = 1, 4003 .flags = CLK_SET_RATE_PARENT, 4004 .ops = &clk_branch2_ops, 4005 }, 4006 }, 4007 }; 4008 4009 static struct clk_branch gcc_pcie_2b_pipediv2_clk = { 4010 .halt_reg = 0x9e038, 4011 .halt_check = BRANCH_HALT_SKIP, 4012 .clkr = { 4013 .enable_reg = 0x52018, 4014 .enable_mask = BIT(23), 4015 .hw.init = &(const struct clk_init_data) { 4016 .name = "gcc_pcie_2b_pipediv2_clk", 4017 .parent_hws = (const struct clk_hw*[]){ 4018 &gcc_pcie_2b_pipe_div_clk_src.clkr.hw, 4019 }, 4020 .num_parents = 1, 4021 .flags = CLK_SET_RATE_PARENT, 4022 .ops = &clk_branch2_ops, 4023 }, 4024 }, 4025 }; 4026 4027 static struct clk_branch gcc_pcie_2b_slv_axi_clk = { 4028 .halt_reg = 0x9e014, 4029 .halt_check = BRANCH_HALT_VOTED, 4030 .hwcg_reg = 0x9e014, 4031 .hwcg_bit = 1, 4032 .clkr = { 4033 .enable_reg = 0x52010, 4034 .enable_mask = BIT(17), 4035 .hw.init = &(const struct clk_init_data) { 4036 .name = "gcc_pcie_2b_slv_axi_clk", 4037 .ops = &clk_branch2_ops, 4038 }, 4039 }, 4040 }; 4041 4042 static struct clk_branch gcc_pcie_2b_slv_q2a_axi_clk = { 4043 .halt_reg = 0x9e010, 4044 .halt_check = BRANCH_HALT_VOTED, 4045 .clkr = { 4046 .enable_reg = 0x52010, 4047 .enable_mask = BIT(16), 4048 .hw.init = &(const struct clk_init_data) { 4049 .name = "gcc_pcie_2b_slv_q2a_axi_clk", 4050 .ops = &clk_branch2_ops, 4051 }, 4052 }, 4053 }; 4054 4055 static struct clk_branch gcc_pcie_3a3b_clkref_clk = { 4056 .halt_reg = 0x8c038, 4057 .halt_check = BRANCH_HALT, 4058 .clkr = { 4059 .enable_reg = 0x8c038, 4060 .enable_mask = BIT(0), 4061 .hw.init = &(const struct clk_init_data) { 4062 .name = "gcc_pcie_3a3b_clkref_clk", 4063 .ops = &clk_branch2_ops, 4064 }, 4065 }, 4066 }; 4067 4068 static struct clk_branch gcc_pcie_3a_aux_clk = { 4069 .halt_reg = 0xa0028, 4070 .halt_check = BRANCH_HALT_VOTED, 4071 .clkr = { 4072 .enable_reg = 0x52010, 4073 .enable_mask = BIT(27), 4074 .hw.init = &(const struct clk_init_data) { 4075 .name = "gcc_pcie_3a_aux_clk", 4076 .parent_hws = (const struct clk_hw*[]){ 4077 &gcc_pcie_3a_aux_clk_src.clkr.hw, 4078 }, 4079 .num_parents = 1, 4080 .flags = CLK_SET_RATE_PARENT, 4081 .ops = &clk_branch2_ops, 4082 }, 4083 }, 4084 }; 4085 4086 static struct clk_branch gcc_pcie_3a_cfg_ahb_clk = { 4087 .halt_reg = 0xa0024, 4088 .halt_check = BRANCH_HALT_VOTED, 4089 .hwcg_reg = 0xa0024, 4090 .hwcg_bit = 1, 4091 .clkr = { 4092 .enable_reg = 0x52010, 4093 .enable_mask = BIT(26), 4094 .hw.init = &(const struct clk_init_data) { 4095 .name = "gcc_pcie_3a_cfg_ahb_clk", 4096 .ops = &clk_branch2_ops, 4097 }, 4098 }, 4099 }; 4100 4101 static struct clk_branch gcc_pcie_3a_mstr_axi_clk = { 4102 .halt_reg = 0xa001c, 4103 .halt_check = BRANCH_HALT_SKIP, 4104 .hwcg_reg = 0xa001c, 4105 .hwcg_bit = 1, 4106 .clkr = { 4107 .enable_reg = 0x52010, 4108 .enable_mask = BIT(25), 4109 .hw.init = &(const struct clk_init_data) { 4110 .name = "gcc_pcie_3a_mstr_axi_clk", 4111 .ops = &clk_branch2_ops, 4112 }, 4113 }, 4114 }; 4115 4116 static struct clk_branch gcc_pcie_3a_pipe_clk = { 4117 .halt_reg = 0xa0030, 4118 .halt_check = BRANCH_HALT_SKIP, 4119 .clkr = { 4120 .enable_reg = 0x52010, 4121 .enable_mask = BIT(28), 4122 .hw.init = &(const struct clk_init_data) { 4123 .name = "gcc_pcie_3a_pipe_clk", 4124 .parent_hws = (const struct clk_hw*[]){ 4125 &gcc_pcie_3a_pipe_clk_src.clkr.hw, 4126 }, 4127 .num_parents = 1, 4128 .flags = CLK_SET_RATE_PARENT, 4129 .ops = &clk_branch2_ops, 4130 }, 4131 }, 4132 }; 4133 4134 static struct clk_branch gcc_pcie_3a_pipediv2_clk = { 4135 .halt_reg = 0xa0038, 4136 .halt_check = BRANCH_HALT_SKIP, 4137 .clkr = { 4138 .enable_reg = 0x52018, 4139 .enable_mask = BIT(24), 4140 .hw.init = &(const struct clk_init_data) { 4141 .name = "gcc_pcie_3a_pipediv2_clk", 4142 .parent_hws = (const struct clk_hw*[]){ 4143 &gcc_pcie_3a_pipe_div_clk_src.clkr.hw, 4144 }, 4145 .num_parents = 1, 4146 .flags = CLK_SET_RATE_PARENT, 4147 .ops = &clk_branch2_ops, 4148 }, 4149 }, 4150 }; 4151 4152 static struct clk_branch gcc_pcie_3a_slv_axi_clk = { 4153 .halt_reg = 0xa0014, 4154 .halt_check = BRANCH_HALT_VOTED, 4155 .hwcg_reg = 0xa0014, 4156 .hwcg_bit = 1, 4157 .clkr = { 4158 .enable_reg = 0x52010, 4159 .enable_mask = BIT(24), 4160 .hw.init = &(const struct clk_init_data) { 4161 .name = "gcc_pcie_3a_slv_axi_clk", 4162 .ops = &clk_branch2_ops, 4163 }, 4164 }, 4165 }; 4166 4167 static struct clk_branch gcc_pcie_3a_slv_q2a_axi_clk = { 4168 .halt_reg = 0xa0010, 4169 .halt_check = BRANCH_HALT_VOTED, 4170 .clkr = { 4171 .enable_reg = 0x52010, 4172 .enable_mask = BIT(23), 4173 .hw.init = &(const struct clk_init_data) { 4174 .name = "gcc_pcie_3a_slv_q2a_axi_clk", 4175 .ops = &clk_branch2_ops, 4176 }, 4177 }, 4178 }; 4179 4180 static struct clk_branch gcc_pcie_3b_aux_clk = { 4181 .halt_reg = 0xa2028, 4182 .halt_check = BRANCH_HALT_VOTED, 4183 .clkr = { 4184 .enable_reg = 0x52018, 4185 .enable_mask = BIT(2), 4186 .hw.init = &(const struct clk_init_data) { 4187 .name = "gcc_pcie_3b_aux_clk", 4188 .parent_hws = (const struct clk_hw*[]){ 4189 &gcc_pcie_3b_aux_clk_src.clkr.hw, 4190 }, 4191 .num_parents = 1, 4192 .flags = CLK_SET_RATE_PARENT, 4193 .ops = &clk_branch2_ops, 4194 }, 4195 }, 4196 }; 4197 4198 static struct clk_branch gcc_pcie_3b_cfg_ahb_clk = { 4199 .halt_reg = 0xa2024, 4200 .halt_check = BRANCH_HALT_VOTED, 4201 .hwcg_reg = 0xa2024, 4202 .hwcg_bit = 1, 4203 .clkr = { 4204 .enable_reg = 0x52018, 4205 .enable_mask = BIT(1), 4206 .hw.init = &(const struct clk_init_data) { 4207 .name = "gcc_pcie_3b_cfg_ahb_clk", 4208 .ops = &clk_branch2_ops, 4209 }, 4210 }, 4211 }; 4212 4213 static struct clk_branch gcc_pcie_3b_mstr_axi_clk = { 4214 .halt_reg = 0xa201c, 4215 .halt_check = BRANCH_HALT_SKIP, 4216 .hwcg_reg = 0xa201c, 4217 .hwcg_bit = 1, 4218 .clkr = { 4219 .enable_reg = 0x52018, 4220 .enable_mask = BIT(0), 4221 .hw.init = &(const struct clk_init_data) { 4222 .name = "gcc_pcie_3b_mstr_axi_clk", 4223 .ops = &clk_branch2_ops, 4224 }, 4225 }, 4226 }; 4227 4228 static struct clk_branch gcc_pcie_3b_pipe_clk = { 4229 .halt_reg = 0xa2030, 4230 .halt_check = BRANCH_HALT_SKIP, 4231 .clkr = { 4232 .enable_reg = 0x52018, 4233 .enable_mask = BIT(3), 4234 .hw.init = &(const struct clk_init_data) { 4235 .name = "gcc_pcie_3b_pipe_clk", 4236 .parent_hws = (const struct clk_hw*[]){ 4237 &gcc_pcie_3b_pipe_clk_src.clkr.hw, 4238 }, 4239 .num_parents = 1, 4240 .flags = CLK_SET_RATE_PARENT, 4241 .ops = &clk_branch2_ops, 4242 }, 4243 }, 4244 }; 4245 4246 static struct clk_branch gcc_pcie_3b_pipediv2_clk = { 4247 .halt_reg = 0xa2038, 4248 .halt_check = BRANCH_HALT_SKIP, 4249 .clkr = { 4250 .enable_reg = 0x52018, 4251 .enable_mask = BIT(25), 4252 .hw.init = &(const struct clk_init_data) { 4253 .name = "gcc_pcie_3b_pipediv2_clk", 4254 .parent_hws = (const struct clk_hw*[]){ 4255 &gcc_pcie_3b_pipe_div_clk_src.clkr.hw, 4256 }, 4257 .num_parents = 1, 4258 .flags = CLK_SET_RATE_PARENT, 4259 .ops = &clk_branch2_ops, 4260 }, 4261 }, 4262 }; 4263 4264 static struct clk_branch gcc_pcie_3b_slv_axi_clk = { 4265 .halt_reg = 0xa2014, 4266 .halt_check = BRANCH_HALT_VOTED, 4267 .hwcg_reg = 0xa2014, 4268 .hwcg_bit = 1, 4269 .clkr = { 4270 .enable_reg = 0x52010, 4271 .enable_mask = BIT(31), 4272 .hw.init = &(const struct clk_init_data) { 4273 .name = "gcc_pcie_3b_slv_axi_clk", 4274 .ops = &clk_branch2_ops, 4275 }, 4276 }, 4277 }; 4278 4279 static struct clk_branch gcc_pcie_3b_slv_q2a_axi_clk = { 4280 .halt_reg = 0xa2010, 4281 .halt_check = BRANCH_HALT_VOTED, 4282 .clkr = { 4283 .enable_reg = 0x52010, 4284 .enable_mask = BIT(30), 4285 .hw.init = &(const struct clk_init_data) { 4286 .name = "gcc_pcie_3b_slv_q2a_axi_clk", 4287 .ops = &clk_branch2_ops, 4288 }, 4289 }, 4290 }; 4291 4292 static struct clk_branch gcc_pcie_4_aux_clk = { 4293 .halt_reg = 0x6b028, 4294 .halt_check = BRANCH_HALT_VOTED, 4295 .clkr = { 4296 .enable_reg = 0x52008, 4297 .enable_mask = BIT(3), 4298 .hw.init = &(const struct clk_init_data) { 4299 .name = "gcc_pcie_4_aux_clk", 4300 .parent_hws = (const struct clk_hw*[]){ 4301 &gcc_pcie_4_aux_clk_src.clkr.hw, 4302 }, 4303 .num_parents = 1, 4304 .flags = CLK_SET_RATE_PARENT, 4305 .ops = &clk_branch2_ops, 4306 }, 4307 }, 4308 }; 4309 4310 static struct clk_branch gcc_pcie_4_cfg_ahb_clk = { 4311 .halt_reg = 0x6b024, 4312 .halt_check = BRANCH_HALT_VOTED, 4313 .hwcg_reg = 0x6b024, 4314 .hwcg_bit = 1, 4315 .clkr = { 4316 .enable_reg = 0x52008, 4317 .enable_mask = BIT(2), 4318 .hw.init = &(const struct clk_init_data) { 4319 .name = "gcc_pcie_4_cfg_ahb_clk", 4320 .ops = &clk_branch2_ops, 4321 }, 4322 }, 4323 }; 4324 4325 static struct clk_branch gcc_pcie_4_clkref_clk = { 4326 .halt_reg = 0x8c030, 4327 .halt_check = BRANCH_HALT, 4328 .clkr = { 4329 .enable_reg = 0x8c030, 4330 .enable_mask = BIT(0), 4331 .hw.init = &(const struct clk_init_data) { 4332 .name = "gcc_pcie_4_clkref_clk", 4333 .ops = &clk_branch2_ops, 4334 }, 4335 }, 4336 }; 4337 4338 static struct clk_branch gcc_pcie_4_mstr_axi_clk = { 4339 .halt_reg = 0x6b01c, 4340 .halt_check = BRANCH_HALT_SKIP, 4341 .hwcg_reg = 0x6b01c, 4342 .hwcg_bit = 1, 4343 .clkr = { 4344 .enable_reg = 0x52008, 4345 .enable_mask = BIT(1), 4346 .hw.init = &(const struct clk_init_data) { 4347 .name = "gcc_pcie_4_mstr_axi_clk", 4348 .ops = &clk_branch2_ops, 4349 }, 4350 }, 4351 }; 4352 4353 static struct clk_branch gcc_pcie_4_pipe_clk = { 4354 .halt_reg = 0x6b030, 4355 .halt_check = BRANCH_HALT_SKIP, 4356 .clkr = { 4357 .enable_reg = 0x52008, 4358 .enable_mask = BIT(4), 4359 .hw.init = &(const struct clk_init_data) { 4360 .name = "gcc_pcie_4_pipe_clk", 4361 .parent_hws = (const struct clk_hw*[]){ 4362 &gcc_pcie_4_pipe_clk_src.clkr.hw, 4363 }, 4364 .num_parents = 1, 4365 .flags = CLK_SET_RATE_PARENT, 4366 .ops = &clk_branch2_ops, 4367 }, 4368 }, 4369 }; 4370 4371 static struct clk_branch gcc_pcie_4_pipediv2_clk = { 4372 .halt_reg = 0x6b038, 4373 .halt_check = BRANCH_HALT_SKIP, 4374 .clkr = { 4375 .enable_reg = 0x52018, 4376 .enable_mask = BIT(16), 4377 .hw.init = &(const struct clk_init_data) { 4378 .name = "gcc_pcie_4_pipediv2_clk", 4379 .parent_hws = (const struct clk_hw*[]){ 4380 &gcc_pcie_4_pipe_div_clk_src.clkr.hw, 4381 }, 4382 .num_parents = 1, 4383 .flags = CLK_SET_RATE_PARENT, 4384 .ops = &clk_branch2_ops, 4385 }, 4386 }, 4387 }; 4388 4389 static struct clk_branch gcc_pcie_4_slv_axi_clk = { 4390 .halt_reg = 0x6b014, 4391 .halt_check = BRANCH_HALT_VOTED, 4392 .hwcg_reg = 0x6b014, 4393 .hwcg_bit = 1, 4394 .clkr = { 4395 .enable_reg = 0x52008, 4396 .enable_mask = BIT(0), 4397 .hw.init = &(const struct clk_init_data) { 4398 .name = "gcc_pcie_4_slv_axi_clk", 4399 .ops = &clk_branch2_ops, 4400 }, 4401 }, 4402 }; 4403 4404 static struct clk_branch gcc_pcie_4_slv_q2a_axi_clk = { 4405 .halt_reg = 0x6b010, 4406 .halt_check = BRANCH_HALT_VOTED, 4407 .clkr = { 4408 .enable_reg = 0x52008, 4409 .enable_mask = BIT(5), 4410 .hw.init = &(const struct clk_init_data) { 4411 .name = "gcc_pcie_4_slv_q2a_axi_clk", 4412 .ops = &clk_branch2_ops, 4413 }, 4414 }, 4415 }; 4416 4417 static struct clk_branch gcc_pcie_rscc_ahb_clk = { 4418 .halt_reg = 0xae008, 4419 .halt_check = BRANCH_HALT_VOTED, 4420 .hwcg_reg = 0xae008, 4421 .hwcg_bit = 1, 4422 .clkr = { 4423 .enable_reg = 0x52020, 4424 .enable_mask = BIT(17), 4425 .hw.init = &(const struct clk_init_data) { 4426 .name = "gcc_pcie_rscc_ahb_clk", 4427 .ops = &clk_branch2_ops, 4428 }, 4429 }, 4430 }; 4431 4432 static struct clk_branch gcc_pcie_rscc_xo_clk = { 4433 .halt_reg = 0xae004, 4434 .halt_check = BRANCH_HALT_VOTED, 4435 .clkr = { 4436 .enable_reg = 0x52020, 4437 .enable_mask = BIT(16), 4438 .hw.init = &(const struct clk_init_data) { 4439 .name = "gcc_pcie_rscc_xo_clk", 4440 .parent_hws = (const struct clk_hw*[]){ 4441 &gcc_pcie_rscc_xo_clk_src.clkr.hw, 4442 }, 4443 .num_parents = 1, 4444 .flags = CLK_SET_RATE_PARENT, 4445 .ops = &clk_branch2_ops, 4446 }, 4447 }, 4448 }; 4449 4450 static struct clk_branch gcc_pcie_throttle_cfg_clk = { 4451 .halt_reg = 0xa6028, 4452 .halt_check = BRANCH_HALT_VOTED, 4453 .clkr = { 4454 .enable_reg = 0x52020, 4455 .enable_mask = BIT(15), 4456 .hw.init = &(const struct clk_init_data) { 4457 .name = "gcc_pcie_throttle_cfg_clk", 4458 .ops = &clk_branch2_ops, 4459 }, 4460 }, 4461 }; 4462 4463 static struct clk_branch gcc_pdm2_clk = { 4464 .halt_reg = 0x3300c, 4465 .halt_check = BRANCH_HALT, 4466 .clkr = { 4467 .enable_reg = 0x3300c, 4468 .enable_mask = BIT(0), 4469 .hw.init = &(const struct clk_init_data) { 4470 .name = "gcc_pdm2_clk", 4471 .parent_hws = (const struct clk_hw*[]){ 4472 &gcc_pdm2_clk_src.clkr.hw, 4473 }, 4474 .num_parents = 1, 4475 .flags = CLK_SET_RATE_PARENT, 4476 .ops = &clk_branch2_ops, 4477 }, 4478 }, 4479 }; 4480 4481 static struct clk_branch gcc_pdm_ahb_clk = { 4482 .halt_reg = 0x33004, 4483 .halt_check = BRANCH_HALT_VOTED, 4484 .hwcg_reg = 0x33004, 4485 .hwcg_bit = 1, 4486 .clkr = { 4487 .enable_reg = 0x33004, 4488 .enable_mask = BIT(0), 4489 .hw.init = &(const struct clk_init_data) { 4490 .name = "gcc_pdm_ahb_clk", 4491 .ops = &clk_branch2_ops, 4492 }, 4493 }, 4494 }; 4495 4496 static struct clk_branch gcc_pdm_xo4_clk = { 4497 .halt_reg = 0x33008, 4498 .halt_check = BRANCH_HALT, 4499 .clkr = { 4500 .enable_reg = 0x33008, 4501 .enable_mask = BIT(0), 4502 .hw.init = &(const struct clk_init_data) { 4503 .name = "gcc_pdm_xo4_clk", 4504 .ops = &clk_branch2_ops, 4505 }, 4506 }, 4507 }; 4508 4509 static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = { 4510 .halt_reg = 0x26008, 4511 .halt_check = BRANCH_HALT_VOTED, 4512 .hwcg_reg = 0x26008, 4513 .hwcg_bit = 1, 4514 .clkr = { 4515 .enable_reg = 0x26008, 4516 .enable_mask = BIT(0), 4517 .hw.init = &(const struct clk_init_data) { 4518 .name = "gcc_qmip_camera_nrt_ahb_clk", 4519 .ops = &clk_branch2_ops, 4520 }, 4521 }, 4522 }; 4523 4524 static struct clk_branch gcc_qmip_camera_rt_ahb_clk = { 4525 .halt_reg = 0x2600c, 4526 .halt_check = BRANCH_HALT_VOTED, 4527 .hwcg_reg = 0x2600c, 4528 .hwcg_bit = 1, 4529 .clkr = { 4530 .enable_reg = 0x2600c, 4531 .enable_mask = BIT(0), 4532 .hw.init = &(const struct clk_init_data) { 4533 .name = "gcc_qmip_camera_rt_ahb_clk", 4534 .ops = &clk_branch2_ops, 4535 }, 4536 }, 4537 }; 4538 4539 static struct clk_branch gcc_qmip_disp1_ahb_clk = { 4540 .halt_reg = 0xbb008, 4541 .halt_check = BRANCH_HALT_VOTED, 4542 .hwcg_reg = 0xbb008, 4543 .hwcg_bit = 1, 4544 .clkr = { 4545 .enable_reg = 0xbb008, 4546 .enable_mask = BIT(0), 4547 .hw.init = &(const struct clk_init_data) { 4548 .name = "gcc_qmip_disp1_ahb_clk", 4549 .ops = &clk_branch2_ops, 4550 }, 4551 }, 4552 }; 4553 4554 static struct clk_branch gcc_qmip_disp1_rot_ahb_clk = { 4555 .halt_reg = 0xbb00c, 4556 .halt_check = BRANCH_HALT_VOTED, 4557 .hwcg_reg = 0xbb00c, 4558 .hwcg_bit = 1, 4559 .clkr = { 4560 .enable_reg = 0xbb00c, 4561 .enable_mask = BIT(0), 4562 .hw.init = &(const struct clk_init_data) { 4563 .name = "gcc_qmip_disp1_rot_ahb_clk", 4564 .ops = &clk_branch2_ops, 4565 }, 4566 }, 4567 }; 4568 4569 static struct clk_branch gcc_qmip_disp_ahb_clk = { 4570 .halt_reg = 0x27008, 4571 .halt_check = BRANCH_HALT_VOTED, 4572 .hwcg_reg = 0x27008, 4573 .hwcg_bit = 1, 4574 .clkr = { 4575 .enable_reg = 0x27008, 4576 .enable_mask = BIT(0), 4577 .hw.init = &(const struct clk_init_data) { 4578 .name = "gcc_qmip_disp_ahb_clk", 4579 .ops = &clk_branch2_ops, 4580 }, 4581 }, 4582 }; 4583 4584 static struct clk_branch gcc_qmip_disp_rot_ahb_clk = { 4585 .halt_reg = 0x2700c, 4586 .halt_check = BRANCH_HALT_VOTED, 4587 .hwcg_reg = 0x2700c, 4588 .hwcg_bit = 1, 4589 .clkr = { 4590 .enable_reg = 0x2700c, 4591 .enable_mask = BIT(0), 4592 .hw.init = &(const struct clk_init_data) { 4593 .name = "gcc_qmip_disp_rot_ahb_clk", 4594 .ops = &clk_branch2_ops, 4595 }, 4596 }, 4597 }; 4598 4599 static struct clk_branch gcc_qmip_video_cvp_ahb_clk = { 4600 .halt_reg = 0x28008, 4601 .halt_check = BRANCH_HALT_VOTED, 4602 .hwcg_reg = 0x28008, 4603 .hwcg_bit = 1, 4604 .clkr = { 4605 .enable_reg = 0x28008, 4606 .enable_mask = BIT(0), 4607 .hw.init = &(const struct clk_init_data) { 4608 .name = "gcc_qmip_video_cvp_ahb_clk", 4609 .ops = &clk_branch2_ops, 4610 }, 4611 }, 4612 }; 4613 4614 static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = { 4615 .halt_reg = 0x2800c, 4616 .halt_check = BRANCH_HALT_VOTED, 4617 .hwcg_reg = 0x2800c, 4618 .hwcg_bit = 1, 4619 .clkr = { 4620 .enable_reg = 0x2800c, 4621 .enable_mask = BIT(0), 4622 .hw.init = &(const struct clk_init_data) { 4623 .name = "gcc_qmip_video_vcodec_ahb_clk", 4624 .ops = &clk_branch2_ops, 4625 }, 4626 }, 4627 }; 4628 4629 static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = { 4630 .halt_reg = 0x17014, 4631 .halt_check = BRANCH_HALT_VOTED, 4632 .clkr = { 4633 .enable_reg = 0x52008, 4634 .enable_mask = BIT(9), 4635 .hw.init = &(const struct clk_init_data) { 4636 .name = "gcc_qupv3_wrap0_core_2x_clk", 4637 .ops = &clk_branch2_ops, 4638 }, 4639 }, 4640 }; 4641 4642 static struct clk_branch gcc_qupv3_wrap0_core_clk = { 4643 .halt_reg = 0x1700c, 4644 .halt_check = BRANCH_HALT_VOTED, 4645 .clkr = { 4646 .enable_reg = 0x52008, 4647 .enable_mask = BIT(8), 4648 .hw.init = &(const struct clk_init_data) { 4649 .name = "gcc_qupv3_wrap0_core_clk", 4650 .ops = &clk_branch2_ops, 4651 }, 4652 }, 4653 }; 4654 4655 static struct clk_branch gcc_qupv3_wrap0_qspi0_clk = { 4656 .halt_reg = 0x17ac4, 4657 .halt_check = BRANCH_HALT_VOTED, 4658 .clkr = { 4659 .enable_reg = 0x52020, 4660 .enable_mask = BIT(0), 4661 .hw.init = &(const struct clk_init_data) { 4662 .name = "gcc_qupv3_wrap0_qspi0_clk", 4663 .parent_hws = (const struct clk_hw*[]){ 4664 &gcc_qupv3_wrap0_s4_clk_src.clkr.hw, 4665 }, 4666 .num_parents = 1, 4667 .flags = CLK_SET_RATE_PARENT, 4668 .ops = &clk_branch2_ops, 4669 }, 4670 }, 4671 }; 4672 4673 static struct clk_branch gcc_qupv3_wrap0_s0_clk = { 4674 .halt_reg = 0x17144, 4675 .halt_check = BRANCH_HALT_VOTED, 4676 .clkr = { 4677 .enable_reg = 0x52008, 4678 .enable_mask = BIT(10), 4679 .hw.init = &(const struct clk_init_data) { 4680 .name = "gcc_qupv3_wrap0_s0_clk", 4681 .parent_hws = (const struct clk_hw*[]){ 4682 &gcc_qupv3_wrap0_s0_clk_src.clkr.hw, 4683 }, 4684 .num_parents = 1, 4685 .flags = CLK_SET_RATE_PARENT, 4686 .ops = &clk_branch2_ops, 4687 }, 4688 }, 4689 }; 4690 4691 static struct clk_branch gcc_qupv3_wrap0_s1_clk = { 4692 .halt_reg = 0x17274, 4693 .halt_check = BRANCH_HALT_VOTED, 4694 .clkr = { 4695 .enable_reg = 0x52008, 4696 .enable_mask = BIT(11), 4697 .hw.init = &(const struct clk_init_data) { 4698 .name = "gcc_qupv3_wrap0_s1_clk", 4699 .parent_hws = (const struct clk_hw*[]){ 4700 &gcc_qupv3_wrap0_s1_clk_src.clkr.hw, 4701 }, 4702 .num_parents = 1, 4703 .flags = CLK_SET_RATE_PARENT, 4704 .ops = &clk_branch2_ops, 4705 }, 4706 }, 4707 }; 4708 4709 static struct clk_branch gcc_qupv3_wrap0_s2_clk = { 4710 .halt_reg = 0x173a4, 4711 .halt_check = BRANCH_HALT_VOTED, 4712 .clkr = { 4713 .enable_reg = 0x52008, 4714 .enable_mask = BIT(12), 4715 .hw.init = &(const struct clk_init_data) { 4716 .name = "gcc_qupv3_wrap0_s2_clk", 4717 .parent_hws = (const struct clk_hw*[]){ 4718 &gcc_qupv3_wrap0_s2_clk_src.clkr.hw, 4719 }, 4720 .num_parents = 1, 4721 .flags = CLK_SET_RATE_PARENT, 4722 .ops = &clk_branch2_ops, 4723 }, 4724 }, 4725 }; 4726 4727 static struct clk_branch gcc_qupv3_wrap0_s3_clk = { 4728 .halt_reg = 0x174d4, 4729 .halt_check = BRANCH_HALT_VOTED, 4730 .clkr = { 4731 .enable_reg = 0x52008, 4732 .enable_mask = BIT(13), 4733 .hw.init = &(const struct clk_init_data) { 4734 .name = "gcc_qupv3_wrap0_s3_clk", 4735 .parent_hws = (const struct clk_hw*[]){ 4736 &gcc_qupv3_wrap0_s3_clk_src.clkr.hw, 4737 }, 4738 .num_parents = 1, 4739 .flags = CLK_SET_RATE_PARENT, 4740 .ops = &clk_branch2_ops, 4741 }, 4742 }, 4743 }; 4744 4745 static struct clk_branch gcc_qupv3_wrap0_s4_clk = { 4746 .halt_reg = 0x17604, 4747 .halt_check = BRANCH_HALT_VOTED, 4748 .clkr = { 4749 .enable_reg = 0x52008, 4750 .enable_mask = BIT(14), 4751 .hw.init = &(const struct clk_init_data) { 4752 .name = "gcc_qupv3_wrap0_s4_clk", 4753 .parent_hws = (const struct clk_hw*[]){ 4754 &gcc_qupv3_wrap0_s4_div_clk_src.clkr.hw, 4755 }, 4756 .num_parents = 1, 4757 .flags = CLK_SET_RATE_PARENT, 4758 .ops = &clk_branch2_ops, 4759 }, 4760 }, 4761 }; 4762 4763 static struct clk_branch gcc_qupv3_wrap0_s5_clk = { 4764 .halt_reg = 0x17734, 4765 .halt_check = BRANCH_HALT_VOTED, 4766 .clkr = { 4767 .enable_reg = 0x52008, 4768 .enable_mask = BIT(15), 4769 .hw.init = &(const struct clk_init_data) { 4770 .name = "gcc_qupv3_wrap0_s5_clk", 4771 .parent_hws = (const struct clk_hw*[]){ 4772 &gcc_qupv3_wrap0_s5_clk_src.clkr.hw, 4773 }, 4774 .num_parents = 1, 4775 .flags = CLK_SET_RATE_PARENT, 4776 .ops = &clk_branch2_ops, 4777 }, 4778 }, 4779 }; 4780 4781 static struct clk_branch gcc_qupv3_wrap0_s6_clk = { 4782 .halt_reg = 0x17864, 4783 .halt_check = BRANCH_HALT_VOTED, 4784 .clkr = { 4785 .enable_reg = 0x52008, 4786 .enable_mask = BIT(16), 4787 .hw.init = &(const struct clk_init_data) { 4788 .name = "gcc_qupv3_wrap0_s6_clk", 4789 .parent_hws = (const struct clk_hw*[]){ 4790 &gcc_qupv3_wrap0_s6_clk_src.clkr.hw, 4791 }, 4792 .num_parents = 1, 4793 .flags = CLK_SET_RATE_PARENT, 4794 .ops = &clk_branch2_ops, 4795 }, 4796 }, 4797 }; 4798 4799 static struct clk_branch gcc_qupv3_wrap0_s7_clk = { 4800 .halt_reg = 0x17994, 4801 .halt_check = BRANCH_HALT_VOTED, 4802 .clkr = { 4803 .enable_reg = 0x52008, 4804 .enable_mask = BIT(17), 4805 .hw.init = &(const struct clk_init_data) { 4806 .name = "gcc_qupv3_wrap0_s7_clk", 4807 .parent_hws = (const struct clk_hw*[]){ 4808 &gcc_qupv3_wrap0_s7_clk_src.clkr.hw, 4809 }, 4810 .num_parents = 1, 4811 .flags = CLK_SET_RATE_PARENT, 4812 .ops = &clk_branch2_ops, 4813 }, 4814 }, 4815 }; 4816 4817 static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = { 4818 .halt_reg = 0x18014, 4819 .halt_check = BRANCH_HALT_VOTED, 4820 .clkr = { 4821 .enable_reg = 0x52008, 4822 .enable_mask = BIT(18), 4823 .hw.init = &(const struct clk_init_data) { 4824 .name = "gcc_qupv3_wrap1_core_2x_clk", 4825 .ops = &clk_branch2_ops, 4826 }, 4827 }, 4828 }; 4829 4830 static struct clk_branch gcc_qupv3_wrap1_core_clk = { 4831 .halt_reg = 0x1800c, 4832 .halt_check = BRANCH_HALT_VOTED, 4833 .clkr = { 4834 .enable_reg = 0x52008, 4835 .enable_mask = BIT(19), 4836 .hw.init = &(const struct clk_init_data) { 4837 .name = "gcc_qupv3_wrap1_core_clk", 4838 .ops = &clk_branch2_ops, 4839 }, 4840 }, 4841 }; 4842 4843 static struct clk_branch gcc_qupv3_wrap1_qspi0_clk = { 4844 .halt_reg = 0x18ac4, 4845 .halt_check = BRANCH_HALT_VOTED, 4846 .clkr = { 4847 .enable_reg = 0x52020, 4848 .enable_mask = BIT(2), 4849 .hw.init = &(const struct clk_init_data) { 4850 .name = "gcc_qupv3_wrap1_qspi0_clk", 4851 .parent_hws = (const struct clk_hw*[]){ 4852 &gcc_qupv3_wrap1_s4_clk_src.clkr.hw, 4853 }, 4854 .num_parents = 1, 4855 .flags = CLK_SET_RATE_PARENT, 4856 .ops = &clk_branch2_ops, 4857 }, 4858 }, 4859 }; 4860 4861 static struct clk_branch gcc_qupv3_wrap1_s0_clk = { 4862 .halt_reg = 0x18144, 4863 .halt_check = BRANCH_HALT_VOTED, 4864 .clkr = { 4865 .enable_reg = 0x52008, 4866 .enable_mask = BIT(22), 4867 .hw.init = &(const struct clk_init_data) { 4868 .name = "gcc_qupv3_wrap1_s0_clk", 4869 .parent_hws = (const struct clk_hw*[]){ 4870 &gcc_qupv3_wrap1_s0_clk_src.clkr.hw, 4871 }, 4872 .num_parents = 1, 4873 .flags = CLK_SET_RATE_PARENT, 4874 .ops = &clk_branch2_ops, 4875 }, 4876 }, 4877 }; 4878 4879 static struct clk_branch gcc_qupv3_wrap1_s1_clk = { 4880 .halt_reg = 0x18274, 4881 .halt_check = BRANCH_HALT_VOTED, 4882 .clkr = { 4883 .enable_reg = 0x52008, 4884 .enable_mask = BIT(23), 4885 .hw.init = &(const struct clk_init_data) { 4886 .name = "gcc_qupv3_wrap1_s1_clk", 4887 .parent_hws = (const struct clk_hw*[]){ 4888 &gcc_qupv3_wrap1_s1_clk_src.clkr.hw, 4889 }, 4890 .num_parents = 1, 4891 .flags = CLK_SET_RATE_PARENT, 4892 .ops = &clk_branch2_ops, 4893 }, 4894 }, 4895 }; 4896 4897 static struct clk_branch gcc_qupv3_wrap1_s2_clk = { 4898 .halt_reg = 0x183a4, 4899 .halt_check = BRANCH_HALT_VOTED, 4900 .clkr = { 4901 .enable_reg = 0x52008, 4902 .enable_mask = BIT(24), 4903 .hw.init = &(const struct clk_init_data) { 4904 .name = "gcc_qupv3_wrap1_s2_clk", 4905 .parent_hws = (const struct clk_hw*[]){ 4906 &gcc_qupv3_wrap1_s2_clk_src.clkr.hw, 4907 }, 4908 .num_parents = 1, 4909 .flags = CLK_SET_RATE_PARENT, 4910 .ops = &clk_branch2_ops, 4911 }, 4912 }, 4913 }; 4914 4915 static struct clk_branch gcc_qupv3_wrap1_s3_clk = { 4916 .halt_reg = 0x184d4, 4917 .halt_check = BRANCH_HALT_VOTED, 4918 .clkr = { 4919 .enable_reg = 0x52008, 4920 .enable_mask = BIT(25), 4921 .hw.init = &(const struct clk_init_data) { 4922 .name = "gcc_qupv3_wrap1_s3_clk", 4923 .parent_hws = (const struct clk_hw*[]){ 4924 &gcc_qupv3_wrap1_s3_clk_src.clkr.hw, 4925 }, 4926 .num_parents = 1, 4927 .flags = CLK_SET_RATE_PARENT, 4928 .ops = &clk_branch2_ops, 4929 }, 4930 }, 4931 }; 4932 4933 static struct clk_branch gcc_qupv3_wrap1_s4_clk = { 4934 .halt_reg = 0x18604, 4935 .halt_check = BRANCH_HALT_VOTED, 4936 .clkr = { 4937 .enable_reg = 0x52008, 4938 .enable_mask = BIT(26), 4939 .hw.init = &(const struct clk_init_data) { 4940 .name = "gcc_qupv3_wrap1_s4_clk", 4941 .parent_hws = (const struct clk_hw*[]){ 4942 &gcc_qupv3_wrap1_s4_div_clk_src.clkr.hw, 4943 }, 4944 .num_parents = 1, 4945 .flags = CLK_SET_RATE_PARENT, 4946 .ops = &clk_branch2_ops, 4947 }, 4948 }, 4949 }; 4950 4951 static struct clk_branch gcc_qupv3_wrap1_s5_clk = { 4952 .halt_reg = 0x18734, 4953 .halt_check = BRANCH_HALT_VOTED, 4954 .clkr = { 4955 .enable_reg = 0x52008, 4956 .enable_mask = BIT(27), 4957 .hw.init = &(const struct clk_init_data) { 4958 .name = "gcc_qupv3_wrap1_s5_clk", 4959 .parent_hws = (const struct clk_hw*[]){ 4960 &gcc_qupv3_wrap1_s5_clk_src.clkr.hw, 4961 }, 4962 .num_parents = 1, 4963 .flags = CLK_SET_RATE_PARENT, 4964 .ops = &clk_branch2_ops, 4965 }, 4966 }, 4967 }; 4968 4969 static struct clk_branch gcc_qupv3_wrap1_s6_clk = { 4970 .halt_reg = 0x18864, 4971 .halt_check = BRANCH_HALT_VOTED, 4972 .clkr = { 4973 .enable_reg = 0x52018, 4974 .enable_mask = BIT(27), 4975 .hw.init = &(const struct clk_init_data) { 4976 .name = "gcc_qupv3_wrap1_s6_clk", 4977 .parent_hws = (const struct clk_hw*[]){ 4978 &gcc_qupv3_wrap1_s6_clk_src.clkr.hw, 4979 }, 4980 .num_parents = 1, 4981 .flags = CLK_SET_RATE_PARENT, 4982 .ops = &clk_branch2_ops, 4983 }, 4984 }, 4985 }; 4986 4987 static struct clk_branch gcc_qupv3_wrap1_s7_clk = { 4988 .halt_reg = 0x18994, 4989 .halt_check = BRANCH_HALT_VOTED, 4990 .clkr = { 4991 .enable_reg = 0x52018, 4992 .enable_mask = BIT(28), 4993 .hw.init = &(const struct clk_init_data) { 4994 .name = "gcc_qupv3_wrap1_s7_clk", 4995 .parent_hws = (const struct clk_hw*[]){ 4996 &gcc_qupv3_wrap1_s7_clk_src.clkr.hw, 4997 }, 4998 .num_parents = 1, 4999 .flags = CLK_SET_RATE_PARENT, 5000 .ops = &clk_branch2_ops, 5001 }, 5002 }, 5003 }; 5004 5005 static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = { 5006 .halt_reg = 0x1e014, 5007 .halt_check = BRANCH_HALT_VOTED, 5008 .clkr = { 5009 .enable_reg = 0x52010, 5010 .enable_mask = BIT(3), 5011 .hw.init = &(const struct clk_init_data) { 5012 .name = "gcc_qupv3_wrap2_core_2x_clk", 5013 .ops = &clk_branch2_ops, 5014 }, 5015 }, 5016 }; 5017 5018 static struct clk_branch gcc_qupv3_wrap2_core_clk = { 5019 .halt_reg = 0x1e00c, 5020 .halt_check = BRANCH_HALT_VOTED, 5021 .clkr = { 5022 .enable_reg = 0x52010, 5023 .enable_mask = BIT(0), 5024 .hw.init = &(const struct clk_init_data) { 5025 .name = "gcc_qupv3_wrap2_core_clk", 5026 .ops = &clk_branch2_ops, 5027 }, 5028 }, 5029 }; 5030 5031 static struct clk_branch gcc_qupv3_wrap2_qspi0_clk = { 5032 .halt_reg = 0x1eac4, 5033 .halt_check = BRANCH_HALT_VOTED, 5034 .clkr = { 5035 .enable_reg = 0x52020, 5036 .enable_mask = BIT(4), 5037 .hw.init = &(const struct clk_init_data) { 5038 .name = "gcc_qupv3_wrap2_qspi0_clk", 5039 .parent_hws = (const struct clk_hw*[]){ 5040 &gcc_qupv3_wrap2_s4_clk_src.clkr.hw, 5041 }, 5042 .num_parents = 1, 5043 .flags = CLK_SET_RATE_PARENT, 5044 .ops = &clk_branch2_ops, 5045 }, 5046 }, 5047 }; 5048 5049 static struct clk_branch gcc_qupv3_wrap2_s0_clk = { 5050 .halt_reg = 0x1e144, 5051 .halt_check = BRANCH_HALT_VOTED, 5052 .clkr = { 5053 .enable_reg = 0x52010, 5054 .enable_mask = BIT(4), 5055 .hw.init = &(const struct clk_init_data) { 5056 .name = "gcc_qupv3_wrap2_s0_clk", 5057 .parent_hws = (const struct clk_hw*[]){ 5058 &gcc_qupv3_wrap2_s0_clk_src.clkr.hw, 5059 }, 5060 .num_parents = 1, 5061 .flags = CLK_SET_RATE_PARENT, 5062 .ops = &clk_branch2_ops, 5063 }, 5064 }, 5065 }; 5066 5067 static struct clk_branch gcc_qupv3_wrap2_s1_clk = { 5068 .halt_reg = 0x1e274, 5069 .halt_check = BRANCH_HALT_VOTED, 5070 .clkr = { 5071 .enable_reg = 0x52010, 5072 .enable_mask = BIT(5), 5073 .hw.init = &(const struct clk_init_data) { 5074 .name = "gcc_qupv3_wrap2_s1_clk", 5075 .parent_hws = (const struct clk_hw*[]){ 5076 &gcc_qupv3_wrap2_s1_clk_src.clkr.hw, 5077 }, 5078 .num_parents = 1, 5079 .flags = CLK_SET_RATE_PARENT, 5080 .ops = &clk_branch2_ops, 5081 }, 5082 }, 5083 }; 5084 5085 static struct clk_branch gcc_qupv3_wrap2_s2_clk = { 5086 .halt_reg = 0x1e3a4, 5087 .halt_check = BRANCH_HALT_VOTED, 5088 .clkr = { 5089 .enable_reg = 0x52010, 5090 .enable_mask = BIT(6), 5091 .hw.init = &(const struct clk_init_data) { 5092 .name = "gcc_qupv3_wrap2_s2_clk", 5093 .parent_hws = (const struct clk_hw*[]){ 5094 &gcc_qupv3_wrap2_s2_clk_src.clkr.hw, 5095 }, 5096 .num_parents = 1, 5097 .flags = CLK_SET_RATE_PARENT, 5098 .ops = &clk_branch2_ops, 5099 }, 5100 }, 5101 }; 5102 5103 static struct clk_branch gcc_qupv3_wrap2_s3_clk = { 5104 .halt_reg = 0x1e4d4, 5105 .halt_check = BRANCH_HALT_VOTED, 5106 .clkr = { 5107 .enable_reg = 0x52010, 5108 .enable_mask = BIT(7), 5109 .hw.init = &(const struct clk_init_data) { 5110 .name = "gcc_qupv3_wrap2_s3_clk", 5111 .parent_hws = (const struct clk_hw*[]){ 5112 &gcc_qupv3_wrap2_s3_clk_src.clkr.hw, 5113 }, 5114 .num_parents = 1, 5115 .flags = CLK_SET_RATE_PARENT, 5116 .ops = &clk_branch2_ops, 5117 }, 5118 }, 5119 }; 5120 5121 static struct clk_branch gcc_qupv3_wrap2_s4_clk = { 5122 .halt_reg = 0x1e604, 5123 .halt_check = BRANCH_HALT_VOTED, 5124 .clkr = { 5125 .enable_reg = 0x52010, 5126 .enable_mask = BIT(8), 5127 .hw.init = &(const struct clk_init_data) { 5128 .name = "gcc_qupv3_wrap2_s4_clk", 5129 .parent_hws = (const struct clk_hw*[]){ 5130 &gcc_qupv3_wrap2_s4_div_clk_src.clkr.hw, 5131 }, 5132 .num_parents = 1, 5133 .flags = CLK_SET_RATE_PARENT, 5134 .ops = &clk_branch2_ops, 5135 }, 5136 }, 5137 }; 5138 5139 static struct clk_branch gcc_qupv3_wrap2_s5_clk = { 5140 .halt_reg = 0x1e734, 5141 .halt_check = BRANCH_HALT_VOTED, 5142 .clkr = { 5143 .enable_reg = 0x52010, 5144 .enable_mask = BIT(9), 5145 .hw.init = &(const struct clk_init_data) { 5146 .name = "gcc_qupv3_wrap2_s5_clk", 5147 .parent_hws = (const struct clk_hw*[]){ 5148 &gcc_qupv3_wrap2_s5_clk_src.clkr.hw, 5149 }, 5150 .num_parents = 1, 5151 .flags = CLK_SET_RATE_PARENT, 5152 .ops = &clk_branch2_ops, 5153 }, 5154 }, 5155 }; 5156 5157 static struct clk_branch gcc_qupv3_wrap2_s6_clk = { 5158 .halt_reg = 0x1e864, 5159 .halt_check = BRANCH_HALT_VOTED, 5160 .clkr = { 5161 .enable_reg = 0x52018, 5162 .enable_mask = BIT(29), 5163 .hw.init = &(const struct clk_init_data) { 5164 .name = "gcc_qupv3_wrap2_s6_clk", 5165 .parent_hws = (const struct clk_hw*[]){ 5166 &gcc_qupv3_wrap2_s6_clk_src.clkr.hw, 5167 }, 5168 .num_parents = 1, 5169 .flags = CLK_SET_RATE_PARENT, 5170 .ops = &clk_branch2_ops, 5171 }, 5172 }, 5173 }; 5174 5175 static struct clk_branch gcc_qupv3_wrap2_s7_clk = { 5176 .halt_reg = 0x1e994, 5177 .halt_check = BRANCH_HALT_VOTED, 5178 .clkr = { 5179 .enable_reg = 0x52018, 5180 .enable_mask = BIT(30), 5181 .hw.init = &(const struct clk_init_data) { 5182 .name = "gcc_qupv3_wrap2_s7_clk", 5183 .parent_hws = (const struct clk_hw*[]){ 5184 &gcc_qupv3_wrap2_s7_clk_src.clkr.hw, 5185 }, 5186 .num_parents = 1, 5187 .flags = CLK_SET_RATE_PARENT, 5188 .ops = &clk_branch2_ops, 5189 }, 5190 }, 5191 }; 5192 5193 static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = { 5194 .halt_reg = 0x17004, 5195 .halt_check = BRANCH_HALT_VOTED, 5196 .hwcg_reg = 0x17004, 5197 .hwcg_bit = 1, 5198 .clkr = { 5199 .enable_reg = 0x52008, 5200 .enable_mask = BIT(6), 5201 .hw.init = &(const struct clk_init_data) { 5202 .name = "gcc_qupv3_wrap_0_m_ahb_clk", 5203 .ops = &clk_branch2_ops, 5204 }, 5205 }, 5206 }; 5207 5208 static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = { 5209 .halt_reg = 0x17008, 5210 .halt_check = BRANCH_HALT_VOTED, 5211 .hwcg_reg = 0x17008, 5212 .hwcg_bit = 1, 5213 .clkr = { 5214 .enable_reg = 0x52008, 5215 .enable_mask = BIT(7), 5216 .hw.init = &(const struct clk_init_data) { 5217 .name = "gcc_qupv3_wrap_0_s_ahb_clk", 5218 .ops = &clk_branch2_ops, 5219 }, 5220 }, 5221 }; 5222 5223 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = { 5224 .halt_reg = 0x18004, 5225 .halt_check = BRANCH_HALT_VOTED, 5226 .hwcg_reg = 0x18004, 5227 .hwcg_bit = 1, 5228 .clkr = { 5229 .enable_reg = 0x52008, 5230 .enable_mask = BIT(20), 5231 .hw.init = &(const struct clk_init_data) { 5232 .name = "gcc_qupv3_wrap_1_m_ahb_clk", 5233 .ops = &clk_branch2_ops, 5234 }, 5235 }, 5236 }; 5237 5238 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = { 5239 .halt_reg = 0x18008, 5240 .halt_check = BRANCH_HALT_VOTED, 5241 .hwcg_reg = 0x18008, 5242 .hwcg_bit = 1, 5243 .clkr = { 5244 .enable_reg = 0x52008, 5245 .enable_mask = BIT(21), 5246 .hw.init = &(const struct clk_init_data) { 5247 .name = "gcc_qupv3_wrap_1_s_ahb_clk", 5248 .ops = &clk_branch2_ops, 5249 }, 5250 }, 5251 }; 5252 5253 static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = { 5254 .halt_reg = 0x1e004, 5255 .halt_check = BRANCH_HALT_VOTED, 5256 .hwcg_reg = 0x1e004, 5257 .hwcg_bit = 1, 5258 .clkr = { 5259 .enable_reg = 0x52010, 5260 .enable_mask = BIT(2), 5261 .hw.init = &(const struct clk_init_data) { 5262 .name = "gcc_qupv3_wrap_2_m_ahb_clk", 5263 .ops = &clk_branch2_ops, 5264 }, 5265 }, 5266 }; 5267 5268 static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = { 5269 .halt_reg = 0x1e008, 5270 .halt_check = BRANCH_HALT_VOTED, 5271 .hwcg_reg = 0x1e008, 5272 .hwcg_bit = 1, 5273 .clkr = { 5274 .enable_reg = 0x52010, 5275 .enable_mask = BIT(1), 5276 .hw.init = &(const struct clk_init_data) { 5277 .name = "gcc_qupv3_wrap_2_s_ahb_clk", 5278 .ops = &clk_branch2_ops, 5279 }, 5280 }, 5281 }; 5282 5283 static struct clk_branch gcc_sdcc2_ahb_clk = { 5284 .halt_reg = 0x14008, 5285 .halt_check = BRANCH_HALT, 5286 .clkr = { 5287 .enable_reg = 0x14008, 5288 .enable_mask = BIT(0), 5289 .hw.init = &(const struct clk_init_data) { 5290 .name = "gcc_sdcc2_ahb_clk", 5291 .ops = &clk_branch2_ops, 5292 }, 5293 }, 5294 }; 5295 5296 static struct clk_branch gcc_sdcc2_apps_clk = { 5297 .halt_reg = 0x14004, 5298 .halt_check = BRANCH_HALT, 5299 .clkr = { 5300 .enable_reg = 0x14004, 5301 .enable_mask = BIT(0), 5302 .hw.init = &(const struct clk_init_data) { 5303 .name = "gcc_sdcc2_apps_clk", 5304 .parent_hws = (const struct clk_hw*[]){ 5305 &gcc_sdcc2_apps_clk_src.clkr.hw, 5306 }, 5307 .num_parents = 1, 5308 .flags = CLK_SET_RATE_PARENT, 5309 .ops = &clk_branch2_ops, 5310 }, 5311 }, 5312 }; 5313 5314 static struct clk_branch gcc_sdcc4_ahb_clk = { 5315 .halt_reg = 0x16008, 5316 .halt_check = BRANCH_HALT, 5317 .clkr = { 5318 .enable_reg = 0x16008, 5319 .enable_mask = BIT(0), 5320 .hw.init = &(const struct clk_init_data) { 5321 .name = "gcc_sdcc4_ahb_clk", 5322 .ops = &clk_branch2_ops, 5323 }, 5324 }, 5325 }; 5326 5327 static struct clk_branch gcc_sdcc4_apps_clk = { 5328 .halt_reg = 0x16004, 5329 .halt_check = BRANCH_HALT, 5330 .clkr = { 5331 .enable_reg = 0x16004, 5332 .enable_mask = BIT(0), 5333 .hw.init = &(const struct clk_init_data) { 5334 .name = "gcc_sdcc4_apps_clk", 5335 .parent_hws = (const struct clk_hw*[]){ 5336 &gcc_sdcc4_apps_clk_src.clkr.hw, 5337 }, 5338 .num_parents = 1, 5339 .flags = CLK_SET_RATE_PARENT, 5340 .ops = &clk_branch2_ops, 5341 }, 5342 }, 5343 }; 5344 5345 static struct clk_branch gcc_sys_noc_usb_axi_clk = { 5346 .halt_reg = 0x5d000, 5347 .halt_check = BRANCH_HALT_VOTED, 5348 .hwcg_reg = 0x5d000, 5349 .hwcg_bit = 1, 5350 .clkr = { 5351 .enable_reg = 0x5d000, 5352 .enable_mask = BIT(0), 5353 .hw.init = &(const struct clk_init_data) { 5354 .name = "gcc_sys_noc_usb_axi_clk", 5355 .ops = &clk_branch2_ops, 5356 }, 5357 }, 5358 }; 5359 5360 static struct clk_branch gcc_ufs_1_card_clkref_clk = { 5361 .halt_reg = 0x8c000, 5362 .halt_check = BRANCH_HALT, 5363 .clkr = { 5364 .enable_reg = 0x8c000, 5365 .enable_mask = BIT(0), 5366 .hw.init = &(const struct clk_init_data) { 5367 .name = "gcc_ufs_1_card_clkref_clk", 5368 .parent_data = &gcc_parent_data_tcxo, 5369 .num_parents = 1, 5370 .ops = &clk_branch2_ops, 5371 }, 5372 }, 5373 }; 5374 5375 static struct clk_branch gcc_ufs_card_ahb_clk = { 5376 .halt_reg = 0x75018, 5377 .halt_check = BRANCH_HALT_VOTED, 5378 .hwcg_reg = 0x75018, 5379 .hwcg_bit = 1, 5380 .clkr = { 5381 .enable_reg = 0x75018, 5382 .enable_mask = BIT(0), 5383 .hw.init = &(const struct clk_init_data) { 5384 .name = "gcc_ufs_card_ahb_clk", 5385 .ops = &clk_branch2_ops, 5386 }, 5387 }, 5388 }; 5389 5390 static struct clk_branch gcc_ufs_card_axi_clk = { 5391 .halt_reg = 0x75010, 5392 .halt_check = BRANCH_HALT_VOTED, 5393 .hwcg_reg = 0x75010, 5394 .hwcg_bit = 1, 5395 .clkr = { 5396 .enable_reg = 0x75010, 5397 .enable_mask = BIT(0), 5398 .hw.init = &(const struct clk_init_data) { 5399 .name = "gcc_ufs_card_axi_clk", 5400 .parent_hws = (const struct clk_hw*[]){ 5401 &gcc_ufs_card_axi_clk_src.clkr.hw, 5402 }, 5403 .num_parents = 1, 5404 .flags = CLK_SET_RATE_PARENT, 5405 .ops = &clk_branch2_ops, 5406 }, 5407 }, 5408 }; 5409 5410 static struct clk_branch gcc_ufs_card_axi_hw_ctl_clk = { 5411 .halt_reg = 0x75010, 5412 .halt_check = BRANCH_HALT_VOTED, 5413 .hwcg_reg = 0x75010, 5414 .hwcg_bit = 1, 5415 .clkr = { 5416 .enable_reg = 0x75010, 5417 .enable_mask = BIT(1), 5418 .hw.init = &(const struct clk_init_data) { 5419 .name = "gcc_ufs_card_axi_hw_ctl_clk", 5420 .parent_hws = (const struct clk_hw*[]){ 5421 &gcc_ufs_card_axi_clk_src.clkr.hw, 5422 }, 5423 .num_parents = 1, 5424 .flags = CLK_SET_RATE_PARENT, 5425 .ops = &clk_branch2_ops, 5426 }, 5427 }, 5428 }; 5429 5430 static struct clk_branch gcc_ufs_card_clkref_clk = { 5431 .halt_reg = 0x8c054, 5432 .halt_check = BRANCH_HALT, 5433 .clkr = { 5434 .enable_reg = 0x8c054, 5435 .enable_mask = BIT(0), 5436 .hw.init = &(const struct clk_init_data) { 5437 .name = "gcc_ufs_card_clkref_clk", 5438 .parent_data = &gcc_parent_data_tcxo, 5439 .num_parents = 1, 5440 .ops = &clk_branch2_ops, 5441 }, 5442 }, 5443 }; 5444 5445 static struct clk_branch gcc_ufs_card_ice_core_clk = { 5446 .halt_reg = 0x75064, 5447 .halt_check = BRANCH_HALT_VOTED, 5448 .hwcg_reg = 0x75064, 5449 .hwcg_bit = 1, 5450 .clkr = { 5451 .enable_reg = 0x75064, 5452 .enable_mask = BIT(0), 5453 .hw.init = &(const struct clk_init_data) { 5454 .name = "gcc_ufs_card_ice_core_clk", 5455 .parent_hws = (const struct clk_hw*[]){ 5456 &gcc_ufs_card_ice_core_clk_src.clkr.hw, 5457 }, 5458 .num_parents = 1, 5459 .flags = CLK_SET_RATE_PARENT, 5460 .ops = &clk_branch2_ops, 5461 }, 5462 }, 5463 }; 5464 5465 static struct clk_branch gcc_ufs_card_ice_core_hw_ctl_clk = { 5466 .halt_reg = 0x75064, 5467 .halt_check = BRANCH_HALT_VOTED, 5468 .hwcg_reg = 0x75064, 5469 .hwcg_bit = 1, 5470 .clkr = { 5471 .enable_reg = 0x75064, 5472 .enable_mask = BIT(1), 5473 .hw.init = &(const struct clk_init_data) { 5474 .name = "gcc_ufs_card_ice_core_hw_ctl_clk", 5475 .parent_hws = (const struct clk_hw*[]){ 5476 &gcc_ufs_card_ice_core_clk_src.clkr.hw, 5477 }, 5478 .num_parents = 1, 5479 .flags = CLK_SET_RATE_PARENT, 5480 .ops = &clk_branch2_ops, 5481 }, 5482 }, 5483 }; 5484 5485 static struct clk_branch gcc_ufs_card_phy_aux_clk = { 5486 .halt_reg = 0x7509c, 5487 .halt_check = BRANCH_HALT_VOTED, 5488 .hwcg_reg = 0x7509c, 5489 .hwcg_bit = 1, 5490 .clkr = { 5491 .enable_reg = 0x7509c, 5492 .enable_mask = BIT(0), 5493 .hw.init = &(const struct clk_init_data) { 5494 .name = "gcc_ufs_card_phy_aux_clk", 5495 .parent_hws = (const struct clk_hw*[]){ 5496 &gcc_ufs_card_phy_aux_clk_src.clkr.hw, 5497 }, 5498 .num_parents = 1, 5499 .flags = CLK_SET_RATE_PARENT, 5500 .ops = &clk_branch2_ops, 5501 }, 5502 }, 5503 }; 5504 5505 static struct clk_branch gcc_ufs_card_phy_aux_hw_ctl_clk = { 5506 .halt_reg = 0x7509c, 5507 .halt_check = BRANCH_HALT_VOTED, 5508 .hwcg_reg = 0x7509c, 5509 .hwcg_bit = 1, 5510 .clkr = { 5511 .enable_reg = 0x7509c, 5512 .enable_mask = BIT(1), 5513 .hw.init = &(const struct clk_init_data) { 5514 .name = "gcc_ufs_card_phy_aux_hw_ctl_clk", 5515 .parent_hws = (const struct clk_hw*[]){ 5516 &gcc_ufs_card_phy_aux_clk_src.clkr.hw, 5517 }, 5518 .num_parents = 1, 5519 .flags = CLK_SET_RATE_PARENT, 5520 .ops = &clk_branch2_ops, 5521 }, 5522 }, 5523 }; 5524 5525 static struct clk_branch gcc_ufs_card_rx_symbol_0_clk = { 5526 .halt_reg = 0x75020, 5527 .halt_check = BRANCH_HALT_DELAY, 5528 .clkr = { 5529 .enable_reg = 0x75020, 5530 .enable_mask = BIT(0), 5531 .hw.init = &(const struct clk_init_data) { 5532 .name = "gcc_ufs_card_rx_symbol_0_clk", 5533 .parent_hws = (const struct clk_hw*[]){ 5534 &gcc_ufs_card_rx_symbol_0_clk_src.clkr.hw, 5535 }, 5536 .num_parents = 1, 5537 .flags = CLK_SET_RATE_PARENT, 5538 .ops = &clk_branch2_ops, 5539 }, 5540 }, 5541 }; 5542 5543 static struct clk_branch gcc_ufs_card_rx_symbol_1_clk = { 5544 .halt_reg = 0x750b8, 5545 .halt_check = BRANCH_HALT_DELAY, 5546 .clkr = { 5547 .enable_reg = 0x750b8, 5548 .enable_mask = BIT(0), 5549 .hw.init = &(const struct clk_init_data) { 5550 .name = "gcc_ufs_card_rx_symbol_1_clk", 5551 .parent_hws = (const struct clk_hw*[]){ 5552 &gcc_ufs_card_rx_symbol_1_clk_src.clkr.hw, 5553 }, 5554 .num_parents = 1, 5555 .flags = CLK_SET_RATE_PARENT, 5556 .ops = &clk_branch2_ops, 5557 }, 5558 }, 5559 }; 5560 5561 static struct clk_branch gcc_ufs_card_tx_symbol_0_clk = { 5562 .halt_reg = 0x7501c, 5563 .halt_check = BRANCH_HALT_DELAY, 5564 .clkr = { 5565 .enable_reg = 0x7501c, 5566 .enable_mask = BIT(0), 5567 .hw.init = &(const struct clk_init_data) { 5568 .name = "gcc_ufs_card_tx_symbol_0_clk", 5569 .parent_hws = (const struct clk_hw*[]){ 5570 &gcc_ufs_card_tx_symbol_0_clk_src.clkr.hw, 5571 }, 5572 .num_parents = 1, 5573 .flags = CLK_SET_RATE_PARENT, 5574 .ops = &clk_branch2_ops, 5575 }, 5576 }, 5577 }; 5578 5579 static struct clk_branch gcc_ufs_card_unipro_core_clk = { 5580 .halt_reg = 0x7505c, 5581 .halt_check = BRANCH_HALT_VOTED, 5582 .hwcg_reg = 0x7505c, 5583 .hwcg_bit = 1, 5584 .clkr = { 5585 .enable_reg = 0x7505c, 5586 .enable_mask = BIT(0), 5587 .hw.init = &(const struct clk_init_data) { 5588 .name = "gcc_ufs_card_unipro_core_clk", 5589 .parent_hws = (const struct clk_hw*[]){ 5590 &gcc_ufs_card_unipro_core_clk_src.clkr.hw, 5591 }, 5592 .num_parents = 1, 5593 .flags = CLK_SET_RATE_PARENT, 5594 .ops = &clk_branch2_ops, 5595 }, 5596 }, 5597 }; 5598 5599 static struct clk_branch gcc_ufs_card_unipro_core_hw_ctl_clk = { 5600 .halt_reg = 0x7505c, 5601 .halt_check = BRANCH_HALT_VOTED, 5602 .hwcg_reg = 0x7505c, 5603 .hwcg_bit = 1, 5604 .clkr = { 5605 .enable_reg = 0x7505c, 5606 .enable_mask = BIT(1), 5607 .hw.init = &(const struct clk_init_data) { 5608 .name = "gcc_ufs_card_unipro_core_hw_ctl_clk", 5609 .parent_hws = (const struct clk_hw*[]){ 5610 &gcc_ufs_card_unipro_core_clk_src.clkr.hw, 5611 }, 5612 .num_parents = 1, 5613 .flags = CLK_SET_RATE_PARENT, 5614 .ops = &clk_branch2_ops, 5615 }, 5616 }, 5617 }; 5618 5619 static struct clk_branch gcc_ufs_phy_ahb_clk = { 5620 .halt_reg = 0x77018, 5621 .halt_check = BRANCH_HALT_VOTED, 5622 .hwcg_reg = 0x77018, 5623 .hwcg_bit = 1, 5624 .clkr = { 5625 .enable_reg = 0x77018, 5626 .enable_mask = BIT(0), 5627 .hw.init = &(const struct clk_init_data) { 5628 .name = "gcc_ufs_phy_ahb_clk", 5629 .ops = &clk_branch2_ops, 5630 }, 5631 }, 5632 }; 5633 5634 static struct clk_branch gcc_ufs_phy_axi_clk = { 5635 .halt_reg = 0x77010, 5636 .halt_check = BRANCH_HALT_VOTED, 5637 .hwcg_reg = 0x77010, 5638 .hwcg_bit = 1, 5639 .clkr = { 5640 .enable_reg = 0x77010, 5641 .enable_mask = BIT(0), 5642 .hw.init = &(const struct clk_init_data) { 5643 .name = "gcc_ufs_phy_axi_clk", 5644 .parent_hws = (const struct clk_hw*[]){ 5645 &gcc_ufs_phy_axi_clk_src.clkr.hw, 5646 }, 5647 .num_parents = 1, 5648 .flags = CLK_SET_RATE_PARENT, 5649 .ops = &clk_branch2_ops, 5650 }, 5651 }, 5652 }; 5653 5654 static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk = { 5655 .halt_reg = 0x77010, 5656 .halt_check = BRANCH_HALT_VOTED, 5657 .hwcg_reg = 0x77010, 5658 .hwcg_bit = 1, 5659 .clkr = { 5660 .enable_reg = 0x77010, 5661 .enable_mask = BIT(1), 5662 .hw.init = &(const struct clk_init_data) { 5663 .name = "gcc_ufs_phy_axi_hw_ctl_clk", 5664 .parent_hws = (const struct clk_hw*[]){ 5665 &gcc_ufs_phy_axi_clk_src.clkr.hw, 5666 }, 5667 .num_parents = 1, 5668 .flags = CLK_SET_RATE_PARENT, 5669 .ops = &clk_branch2_ops, 5670 }, 5671 }, 5672 }; 5673 5674 static struct clk_branch gcc_ufs_phy_ice_core_clk = { 5675 .halt_reg = 0x77064, 5676 .halt_check = BRANCH_HALT_VOTED, 5677 .hwcg_reg = 0x77064, 5678 .hwcg_bit = 1, 5679 .clkr = { 5680 .enable_reg = 0x77064, 5681 .enable_mask = BIT(0), 5682 .hw.init = &(const struct clk_init_data) { 5683 .name = "gcc_ufs_phy_ice_core_clk", 5684 .parent_hws = (const struct clk_hw*[]){ 5685 &gcc_ufs_phy_ice_core_clk_src.clkr.hw, 5686 }, 5687 .num_parents = 1, 5688 .flags = CLK_SET_RATE_PARENT, 5689 .ops = &clk_branch2_ops, 5690 }, 5691 }, 5692 }; 5693 5694 static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk = { 5695 .halt_reg = 0x77064, 5696 .halt_check = BRANCH_HALT_VOTED, 5697 .hwcg_reg = 0x77064, 5698 .hwcg_bit = 1, 5699 .clkr = { 5700 .enable_reg = 0x77064, 5701 .enable_mask = BIT(1), 5702 .hw.init = &(const struct clk_init_data) { 5703 .name = "gcc_ufs_phy_ice_core_hw_ctl_clk", 5704 .parent_hws = (const struct clk_hw*[]){ 5705 &gcc_ufs_phy_ice_core_clk_src.clkr.hw, 5706 }, 5707 .num_parents = 1, 5708 .flags = CLK_SET_RATE_PARENT, 5709 .ops = &clk_branch2_ops, 5710 }, 5711 }, 5712 }; 5713 5714 static struct clk_branch gcc_ufs_phy_phy_aux_clk = { 5715 .halt_reg = 0x7709c, 5716 .halt_check = BRANCH_HALT_VOTED, 5717 .hwcg_reg = 0x7709c, 5718 .hwcg_bit = 1, 5719 .clkr = { 5720 .enable_reg = 0x7709c, 5721 .enable_mask = BIT(0), 5722 .hw.init = &(const struct clk_init_data) { 5723 .name = "gcc_ufs_phy_phy_aux_clk", 5724 .parent_hws = (const struct clk_hw*[]){ 5725 &gcc_ufs_phy_phy_aux_clk_src.clkr.hw, 5726 }, 5727 .num_parents = 1, 5728 .flags = CLK_SET_RATE_PARENT, 5729 .ops = &clk_branch2_ops, 5730 }, 5731 }, 5732 }; 5733 5734 static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk = { 5735 .halt_reg = 0x7709c, 5736 .halt_check = BRANCH_HALT_VOTED, 5737 .hwcg_reg = 0x7709c, 5738 .hwcg_bit = 1, 5739 .clkr = { 5740 .enable_reg = 0x7709c, 5741 .enable_mask = BIT(1), 5742 .hw.init = &(const struct clk_init_data) { 5743 .name = "gcc_ufs_phy_phy_aux_hw_ctl_clk", 5744 .parent_hws = (const struct clk_hw*[]){ 5745 &gcc_ufs_phy_phy_aux_clk_src.clkr.hw, 5746 }, 5747 .num_parents = 1, 5748 .flags = CLK_SET_RATE_PARENT, 5749 .ops = &clk_branch2_ops, 5750 }, 5751 }, 5752 }; 5753 5754 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = { 5755 .halt_reg = 0x77020, 5756 .halt_check = BRANCH_HALT_DELAY, 5757 .clkr = { 5758 .enable_reg = 0x77020, 5759 .enable_mask = BIT(0), 5760 .hw.init = &(const struct clk_init_data) { 5761 .name = "gcc_ufs_phy_rx_symbol_0_clk", 5762 .parent_hws = (const struct clk_hw*[]){ 5763 &gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw, 5764 }, 5765 .num_parents = 1, 5766 .flags = CLK_SET_RATE_PARENT, 5767 .ops = &clk_branch2_ops, 5768 }, 5769 }, 5770 }; 5771 5772 static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = { 5773 .halt_reg = 0x770b8, 5774 .halt_check = BRANCH_HALT_DELAY, 5775 .clkr = { 5776 .enable_reg = 0x770b8, 5777 .enable_mask = BIT(0), 5778 .hw.init = &(const struct clk_init_data) { 5779 .name = "gcc_ufs_phy_rx_symbol_1_clk", 5780 .parent_hws = (const struct clk_hw*[]){ 5781 &gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw, 5782 }, 5783 .num_parents = 1, 5784 .flags = CLK_SET_RATE_PARENT, 5785 .ops = &clk_branch2_ops, 5786 }, 5787 }, 5788 }; 5789 5790 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = { 5791 .halt_reg = 0x7701c, 5792 .halt_check = BRANCH_HALT_DELAY, 5793 .clkr = { 5794 .enable_reg = 0x7701c, 5795 .enable_mask = BIT(0), 5796 .hw.init = &(const struct clk_init_data) { 5797 .name = "gcc_ufs_phy_tx_symbol_0_clk", 5798 .parent_hws = (const struct clk_hw*[]){ 5799 &gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw, 5800 }, 5801 .num_parents = 1, 5802 .flags = CLK_SET_RATE_PARENT, 5803 .ops = &clk_branch2_ops, 5804 }, 5805 }, 5806 }; 5807 5808 static struct clk_branch gcc_ufs_phy_unipro_core_clk = { 5809 .halt_reg = 0x7705c, 5810 .halt_check = BRANCH_HALT_VOTED, 5811 .hwcg_reg = 0x7705c, 5812 .hwcg_bit = 1, 5813 .clkr = { 5814 .enable_reg = 0x7705c, 5815 .enable_mask = BIT(0), 5816 .hw.init = &(const struct clk_init_data) { 5817 .name = "gcc_ufs_phy_unipro_core_clk", 5818 .parent_hws = (const struct clk_hw*[]){ 5819 &gcc_ufs_phy_unipro_core_clk_src.clkr.hw, 5820 }, 5821 .num_parents = 1, 5822 .flags = CLK_SET_RATE_PARENT, 5823 .ops = &clk_branch2_ops, 5824 }, 5825 }, 5826 }; 5827 5828 static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk = { 5829 .halt_reg = 0x7705c, 5830 .halt_check = BRANCH_HALT_VOTED, 5831 .hwcg_reg = 0x7705c, 5832 .hwcg_bit = 1, 5833 .clkr = { 5834 .enable_reg = 0x7705c, 5835 .enable_mask = BIT(1), 5836 .hw.init = &(const struct clk_init_data) { 5837 .name = "gcc_ufs_phy_unipro_core_hw_ctl_clk", 5838 .parent_hws = (const struct clk_hw*[]){ 5839 &gcc_ufs_phy_unipro_core_clk_src.clkr.hw, 5840 }, 5841 .num_parents = 1, 5842 .flags = CLK_SET_RATE_PARENT, 5843 .ops = &clk_branch2_ops, 5844 }, 5845 }, 5846 }; 5847 5848 static struct clk_branch gcc_ufs_ref_clkref_clk = { 5849 .halt_reg = 0x8c058, 5850 .halt_check = BRANCH_HALT, 5851 .clkr = { 5852 .enable_reg = 0x8c058, 5853 .enable_mask = BIT(0), 5854 .hw.init = &(const struct clk_init_data) { 5855 .name = "gcc_ufs_ref_clkref_clk", 5856 .parent_data = &gcc_parent_data_tcxo, 5857 .num_parents = 1, 5858 .ops = &clk_branch2_ops, 5859 }, 5860 }, 5861 }; 5862 5863 static struct clk_branch gcc_usb2_hs0_clkref_clk = { 5864 .halt_reg = 0x8c044, 5865 .halt_check = BRANCH_HALT, 5866 .clkr = { 5867 .enable_reg = 0x8c044, 5868 .enable_mask = BIT(0), 5869 .hw.init = &(const struct clk_init_data) { 5870 .name = "gcc_usb2_hs0_clkref_clk", 5871 .ops = &clk_branch2_ops, 5872 }, 5873 }, 5874 }; 5875 5876 static struct clk_branch gcc_usb2_hs1_clkref_clk = { 5877 .halt_reg = 0x8c048, 5878 .halt_check = BRANCH_HALT, 5879 .clkr = { 5880 .enable_reg = 0x8c048, 5881 .enable_mask = BIT(0), 5882 .hw.init = &(const struct clk_init_data) { 5883 .name = "gcc_usb2_hs1_clkref_clk", 5884 .ops = &clk_branch2_ops, 5885 }, 5886 }, 5887 }; 5888 5889 static struct clk_branch gcc_usb2_hs2_clkref_clk = { 5890 .halt_reg = 0x8c04c, 5891 .halt_check = BRANCH_HALT, 5892 .clkr = { 5893 .enable_reg = 0x8c04c, 5894 .enable_mask = BIT(0), 5895 .hw.init = &(const struct clk_init_data) { 5896 .name = "gcc_usb2_hs2_clkref_clk", 5897 .ops = &clk_branch2_ops, 5898 }, 5899 }, 5900 }; 5901 5902 static struct clk_branch gcc_usb2_hs3_clkref_clk = { 5903 .halt_reg = 0x8c050, 5904 .halt_check = BRANCH_HALT, 5905 .clkr = { 5906 .enable_reg = 0x8c050, 5907 .enable_mask = BIT(0), 5908 .hw.init = &(const struct clk_init_data) { 5909 .name = "gcc_usb2_hs3_clkref_clk", 5910 .ops = &clk_branch2_ops, 5911 }, 5912 }, 5913 }; 5914 5915 static struct clk_branch gcc_usb30_mp_master_clk = { 5916 .halt_reg = 0xab010, 5917 .halt_check = BRANCH_HALT, 5918 .clkr = { 5919 .enable_reg = 0xab010, 5920 .enable_mask = BIT(0), 5921 .hw.init = &(const struct clk_init_data) { 5922 .name = "gcc_usb30_mp_master_clk", 5923 .parent_hws = (const struct clk_hw*[]){ 5924 &gcc_usb30_mp_master_clk_src.clkr.hw, 5925 }, 5926 .num_parents = 1, 5927 .flags = CLK_SET_RATE_PARENT, 5928 .ops = &clk_branch2_ops, 5929 }, 5930 }, 5931 }; 5932 5933 static struct clk_branch gcc_usb30_mp_mock_utmi_clk = { 5934 .halt_reg = 0xab01c, 5935 .halt_check = BRANCH_HALT, 5936 .clkr = { 5937 .enable_reg = 0xab01c, 5938 .enable_mask = BIT(0), 5939 .hw.init = &(const struct clk_init_data) { 5940 .name = "gcc_usb30_mp_mock_utmi_clk", 5941 .parent_hws = (const struct clk_hw*[]){ 5942 &gcc_usb30_mp_mock_utmi_postdiv_clk_src.clkr.hw, 5943 }, 5944 .num_parents = 1, 5945 .flags = CLK_SET_RATE_PARENT, 5946 .ops = &clk_branch2_ops, 5947 }, 5948 }, 5949 }; 5950 5951 static struct clk_branch gcc_usb30_mp_sleep_clk = { 5952 .halt_reg = 0xab018, 5953 .halt_check = BRANCH_HALT, 5954 .clkr = { 5955 .enable_reg = 0xab018, 5956 .enable_mask = BIT(0), 5957 .hw.init = &(const struct clk_init_data) { 5958 .name = "gcc_usb30_mp_sleep_clk", 5959 .ops = &clk_branch2_ops, 5960 }, 5961 }, 5962 }; 5963 5964 static struct clk_branch gcc_usb30_prim_master_clk = { 5965 .halt_reg = 0xf010, 5966 .halt_check = BRANCH_HALT, 5967 .clkr = { 5968 .enable_reg = 0xf010, 5969 .enable_mask = BIT(0), 5970 .hw.init = &(const struct clk_init_data) { 5971 .name = "gcc_usb30_prim_master_clk", 5972 .parent_hws = (const struct clk_hw*[]){ 5973 &gcc_usb30_prim_master_clk_src.clkr.hw, 5974 }, 5975 .num_parents = 1, 5976 .flags = CLK_SET_RATE_PARENT, 5977 .ops = &clk_branch2_ops, 5978 }, 5979 }, 5980 }; 5981 5982 static struct clk_branch gcc_usb30_prim_mock_utmi_clk = { 5983 .halt_reg = 0xf01c, 5984 .halt_check = BRANCH_HALT, 5985 .clkr = { 5986 .enable_reg = 0xf01c, 5987 .enable_mask = BIT(0), 5988 .hw.init = &(const struct clk_init_data) { 5989 .name = "gcc_usb30_prim_mock_utmi_clk", 5990 .parent_hws = (const struct clk_hw*[]){ 5991 &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw, 5992 }, 5993 .num_parents = 1, 5994 .flags = CLK_SET_RATE_PARENT, 5995 .ops = &clk_branch2_ops, 5996 }, 5997 }, 5998 }; 5999 6000 static struct clk_branch gcc_usb30_prim_sleep_clk = { 6001 .halt_reg = 0xf018, 6002 .halt_check = BRANCH_HALT, 6003 .clkr = { 6004 .enable_reg = 0xf018, 6005 .enable_mask = BIT(0), 6006 .hw.init = &(const struct clk_init_data) { 6007 .name = "gcc_usb30_prim_sleep_clk", 6008 .ops = &clk_branch2_ops, 6009 }, 6010 }, 6011 }; 6012 6013 static struct clk_branch gcc_usb30_sec_master_clk = { 6014 .halt_reg = 0x10010, 6015 .halt_check = BRANCH_HALT, 6016 .clkr = { 6017 .enable_reg = 0x10010, 6018 .enable_mask = BIT(0), 6019 .hw.init = &(const struct clk_init_data) { 6020 .name = "gcc_usb30_sec_master_clk", 6021 .parent_hws = (const struct clk_hw*[]){ 6022 &gcc_usb30_sec_master_clk_src.clkr.hw, 6023 }, 6024 .num_parents = 1, 6025 .flags = CLK_SET_RATE_PARENT, 6026 .ops = &clk_branch2_ops, 6027 }, 6028 }, 6029 }; 6030 6031 static struct clk_branch gcc_usb30_sec_mock_utmi_clk = { 6032 .halt_reg = 0x1001c, 6033 .halt_check = BRANCH_HALT, 6034 .clkr = { 6035 .enable_reg = 0x1001c, 6036 .enable_mask = BIT(0), 6037 .hw.init = &(const struct clk_init_data) { 6038 .name = "gcc_usb30_sec_mock_utmi_clk", 6039 .parent_hws = (const struct clk_hw*[]){ 6040 &gcc_usb30_sec_mock_utmi_postdiv_clk_src.clkr.hw, 6041 }, 6042 .num_parents = 1, 6043 .flags = CLK_SET_RATE_PARENT, 6044 .ops = &clk_branch2_ops, 6045 }, 6046 }, 6047 }; 6048 6049 static struct clk_branch gcc_usb30_sec_sleep_clk = { 6050 .halt_reg = 0x10018, 6051 .halt_check = BRANCH_HALT, 6052 .clkr = { 6053 .enable_reg = 0x10018, 6054 .enable_mask = BIT(0), 6055 .hw.init = &(const struct clk_init_data) { 6056 .name = "gcc_usb30_sec_sleep_clk", 6057 .ops = &clk_branch2_ops, 6058 }, 6059 }, 6060 }; 6061 6062 static struct clk_branch gcc_usb3_mp0_clkref_clk = { 6063 .halt_reg = 0x8c03c, 6064 .halt_check = BRANCH_HALT, 6065 .clkr = { 6066 .enable_reg = 0x8c03c, 6067 .enable_mask = BIT(0), 6068 .hw.init = &(const struct clk_init_data) { 6069 .name = "gcc_usb3_mp0_clkref_clk", 6070 .ops = &clk_branch2_ops, 6071 }, 6072 }, 6073 }; 6074 6075 static struct clk_branch gcc_usb3_mp1_clkref_clk = { 6076 .halt_reg = 0x8c040, 6077 .halt_check = BRANCH_HALT, 6078 .clkr = { 6079 .enable_reg = 0x8c040, 6080 .enable_mask = BIT(0), 6081 .hw.init = &(const struct clk_init_data) { 6082 .name = "gcc_usb3_mp1_clkref_clk", 6083 .ops = &clk_branch2_ops, 6084 }, 6085 }, 6086 }; 6087 6088 static struct clk_branch gcc_usb3_mp_phy_aux_clk = { 6089 .halt_reg = 0xab054, 6090 .halt_check = BRANCH_HALT, 6091 .clkr = { 6092 .enable_reg = 0xab054, 6093 .enable_mask = BIT(0), 6094 .hw.init = &(const struct clk_init_data) { 6095 .name = "gcc_usb3_mp_phy_aux_clk", 6096 .parent_hws = (const struct clk_hw*[]){ 6097 &gcc_usb3_mp_phy_aux_clk_src.clkr.hw, 6098 }, 6099 .num_parents = 1, 6100 .flags = CLK_SET_RATE_PARENT, 6101 .ops = &clk_branch2_ops, 6102 }, 6103 }, 6104 }; 6105 6106 static struct clk_branch gcc_usb3_mp_phy_com_aux_clk = { 6107 .halt_reg = 0xab058, 6108 .halt_check = BRANCH_HALT, 6109 .clkr = { 6110 .enable_reg = 0xab058, 6111 .enable_mask = BIT(0), 6112 .hw.init = &(const struct clk_init_data) { 6113 .name = "gcc_usb3_mp_phy_com_aux_clk", 6114 .parent_hws = (const struct clk_hw*[]){ 6115 &gcc_usb3_mp_phy_aux_clk_src.clkr.hw, 6116 }, 6117 .num_parents = 1, 6118 .flags = CLK_SET_RATE_PARENT, 6119 .ops = &clk_branch2_ops, 6120 }, 6121 }, 6122 }; 6123 6124 static struct clk_branch gcc_usb3_mp_phy_pipe_0_clk = { 6125 .halt_reg = 0xab05c, 6126 .halt_check = BRANCH_HALT_DELAY, 6127 .clkr = { 6128 .enable_reg = 0xab05c, 6129 .enable_mask = BIT(0), 6130 .hw.init = &(const struct clk_init_data) { 6131 .name = "gcc_usb3_mp_phy_pipe_0_clk", 6132 .parent_hws = (const struct clk_hw*[]){ 6133 &gcc_usb3_mp_phy_pipe_0_clk_src.clkr.hw, 6134 }, 6135 .num_parents = 1, 6136 .flags = CLK_SET_RATE_PARENT, 6137 .ops = &clk_branch2_ops, 6138 }, 6139 }, 6140 }; 6141 6142 static struct clk_branch gcc_usb3_mp_phy_pipe_1_clk = { 6143 .halt_reg = 0xab064, 6144 .halt_check = BRANCH_HALT_DELAY, 6145 .clkr = { 6146 .enable_reg = 0xab064, 6147 .enable_mask = BIT(0), 6148 .hw.init = &(const struct clk_init_data) { 6149 .name = "gcc_usb3_mp_phy_pipe_1_clk", 6150 .parent_hws = (const struct clk_hw*[]){ 6151 &gcc_usb3_mp_phy_pipe_1_clk_src.clkr.hw, 6152 }, 6153 .num_parents = 1, 6154 .flags = CLK_SET_RATE_PARENT, 6155 .ops = &clk_branch2_ops, 6156 }, 6157 }, 6158 }; 6159 6160 static struct clk_branch gcc_usb3_prim_phy_aux_clk = { 6161 .halt_reg = 0xf054, 6162 .halt_check = BRANCH_HALT, 6163 .clkr = { 6164 .enable_reg = 0xf054, 6165 .enable_mask = BIT(0), 6166 .hw.init = &(const struct clk_init_data) { 6167 .name = "gcc_usb3_prim_phy_aux_clk", 6168 .parent_hws = (const struct clk_hw*[]){ 6169 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw, 6170 }, 6171 .num_parents = 1, 6172 .flags = CLK_SET_RATE_PARENT, 6173 .ops = &clk_branch2_ops, 6174 }, 6175 }, 6176 }; 6177 6178 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = { 6179 .halt_reg = 0xf058, 6180 .halt_check = BRANCH_HALT, 6181 .clkr = { 6182 .enable_reg = 0xf058, 6183 .enable_mask = BIT(0), 6184 .hw.init = &(const struct clk_init_data) { 6185 .name = "gcc_usb3_prim_phy_com_aux_clk", 6186 .parent_hws = (const struct clk_hw*[]){ 6187 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw, 6188 }, 6189 .num_parents = 1, 6190 .flags = CLK_SET_RATE_PARENT, 6191 .ops = &clk_branch2_ops, 6192 }, 6193 }, 6194 }; 6195 6196 static struct clk_branch gcc_usb3_prim_phy_pipe_clk = { 6197 .halt_reg = 0xf05c, 6198 .halt_check = BRANCH_HALT_DELAY, 6199 .hwcg_reg = 0xf05c, 6200 .hwcg_bit = 1, 6201 .clkr = { 6202 .enable_reg = 0xf05c, 6203 .enable_mask = BIT(0), 6204 .hw.init = &(const struct clk_init_data) { 6205 .name = "gcc_usb3_prim_phy_pipe_clk", 6206 .parent_hws = (const struct clk_hw*[]){ 6207 &gcc_usb34_prim_phy_pipe_clk_src.clkr.hw, 6208 }, 6209 .num_parents = 1, 6210 .flags = CLK_SET_RATE_PARENT, 6211 .ops = &clk_branch2_ops, 6212 }, 6213 }, 6214 }; 6215 6216 static struct clk_branch gcc_usb3_sec_phy_aux_clk = { 6217 .halt_reg = 0x10054, 6218 .halt_check = BRANCH_HALT, 6219 .clkr = { 6220 .enable_reg = 0x10054, 6221 .enable_mask = BIT(0), 6222 .hw.init = &(const struct clk_init_data) { 6223 .name = "gcc_usb3_sec_phy_aux_clk", 6224 .parent_hws = (const struct clk_hw*[]){ 6225 &gcc_usb3_sec_phy_aux_clk_src.clkr.hw, 6226 }, 6227 .num_parents = 1, 6228 .flags = CLK_SET_RATE_PARENT, 6229 .ops = &clk_branch2_ops, 6230 }, 6231 }, 6232 }; 6233 6234 static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = { 6235 .halt_reg = 0x10058, 6236 .halt_check = BRANCH_HALT, 6237 .clkr = { 6238 .enable_reg = 0x10058, 6239 .enable_mask = BIT(0), 6240 .hw.init = &(const struct clk_init_data) { 6241 .name = "gcc_usb3_sec_phy_com_aux_clk", 6242 .parent_hws = (const struct clk_hw*[]){ 6243 &gcc_usb3_sec_phy_aux_clk_src.clkr.hw, 6244 }, 6245 .num_parents = 1, 6246 .flags = CLK_SET_RATE_PARENT, 6247 .ops = &clk_branch2_ops, 6248 }, 6249 }, 6250 }; 6251 6252 static struct clk_branch gcc_usb3_sec_phy_pipe_clk = { 6253 .halt_reg = 0x1005c, 6254 .halt_check = BRANCH_HALT_DELAY, 6255 .hwcg_reg = 0x1005c, 6256 .hwcg_bit = 1, 6257 .clkr = { 6258 .enable_reg = 0x1005c, 6259 .enable_mask = BIT(0), 6260 .hw.init = &(const struct clk_init_data) { 6261 .name = "gcc_usb3_sec_phy_pipe_clk", 6262 .parent_hws = (const struct clk_hw*[]){ 6263 &gcc_usb34_sec_phy_pipe_clk_src.clkr.hw, 6264 }, 6265 .num_parents = 1, 6266 .flags = CLK_SET_RATE_PARENT, 6267 .ops = &clk_branch2_ops, 6268 }, 6269 }, 6270 }; 6271 6272 static struct clk_branch gcc_usb4_1_cfg_ahb_clk = { 6273 .halt_reg = 0xb808c, 6274 .halt_check = BRANCH_HALT_VOTED, 6275 .hwcg_reg = 0xb808c, 6276 .hwcg_bit = 1, 6277 .clkr = { 6278 .enable_reg = 0xb808c, 6279 .enable_mask = BIT(0), 6280 .hw.init = &(const struct clk_init_data) { 6281 .name = "gcc_usb4_1_cfg_ahb_clk", 6282 .ops = &clk_branch2_ops, 6283 }, 6284 }, 6285 }; 6286 6287 static struct clk_branch gcc_usb4_1_dp_clk = { 6288 .halt_reg = 0xb8048, 6289 .halt_check = BRANCH_HALT, 6290 .clkr = { 6291 .enable_reg = 0xb8048, 6292 .enable_mask = BIT(0), 6293 .hw.init = &(const struct clk_init_data) { 6294 .name = "gcc_usb4_1_dp_clk", 6295 .parent_hws = (const struct clk_hw*[]){ 6296 &gcc_usb4_1_phy_dp_clk_src.clkr.hw, 6297 }, 6298 .num_parents = 1, 6299 .flags = CLK_SET_RATE_PARENT, 6300 .ops = &clk_branch2_ops, 6301 }, 6302 }, 6303 }; 6304 6305 static struct clk_branch gcc_usb4_1_master_clk = { 6306 .halt_reg = 0xb8010, 6307 .halt_check = BRANCH_HALT, 6308 .clkr = { 6309 .enable_reg = 0xb8010, 6310 .enable_mask = BIT(0), 6311 .hw.init = &(const struct clk_init_data) { 6312 .name = "gcc_usb4_1_master_clk", 6313 .parent_hws = (const struct clk_hw*[]){ 6314 &gcc_usb4_1_master_clk_src.clkr.hw, 6315 }, 6316 .num_parents = 1, 6317 .flags = CLK_SET_RATE_PARENT, 6318 .ops = &clk_branch2_ops, 6319 }, 6320 }, 6321 }; 6322 6323 static struct clk_branch gcc_usb4_1_phy_p2rr2p_pipe_clk = { 6324 .halt_reg = 0xb80b4, 6325 .halt_check = BRANCH_HALT_DELAY, 6326 .clkr = { 6327 .enable_reg = 0xb80b4, 6328 .enable_mask = BIT(0), 6329 .hw.init = &(const struct clk_init_data) { 6330 .name = "gcc_usb4_1_phy_p2rr2p_pipe_clk", 6331 .parent_hws = (const struct clk_hw*[]){ 6332 &gcc_usb4_1_phy_p2rr2p_pipe_clk_src.clkr.hw, 6333 }, 6334 .num_parents = 1, 6335 .flags = CLK_SET_RATE_PARENT, 6336 .ops = &clk_branch2_ops, 6337 }, 6338 }, 6339 }; 6340 6341 static struct clk_branch gcc_usb4_1_phy_pcie_pipe_clk = { 6342 .halt_reg = 0xb8038, 6343 .halt_check = BRANCH_HALT_DELAY, 6344 .clkr = { 6345 .enable_reg = 0x52020, 6346 .enable_mask = BIT(19), 6347 .hw.init = &(const struct clk_init_data) { 6348 .name = "gcc_usb4_1_phy_pcie_pipe_clk", 6349 .parent_hws = (const struct clk_hw*[]){ 6350 &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr.hw, 6351 }, 6352 .num_parents = 1, 6353 .flags = CLK_SET_RATE_PARENT, 6354 .ops = &clk_branch2_ops, 6355 }, 6356 }, 6357 }; 6358 6359 static struct clk_branch gcc_usb4_1_phy_rx0_clk = { 6360 .halt_reg = 0xb8094, 6361 .halt_check = BRANCH_HALT, 6362 .clkr = { 6363 .enable_reg = 0xb8094, 6364 .enable_mask = BIT(0), 6365 .hw.init = &(const struct clk_init_data) { 6366 .name = "gcc_usb4_1_phy_rx0_clk", 6367 .parent_hws = (const struct clk_hw*[]){ 6368 &gcc_usb4_1_phy_rx0_clk_src.clkr.hw, 6369 }, 6370 .num_parents = 1, 6371 .flags = CLK_SET_RATE_PARENT, 6372 .ops = &clk_branch2_ops, 6373 }, 6374 }, 6375 }; 6376 6377 static struct clk_branch gcc_usb4_1_phy_rx1_clk = { 6378 .halt_reg = 0xb80a0, 6379 .halt_check = BRANCH_HALT, 6380 .clkr = { 6381 .enable_reg = 0xb80a0, 6382 .enable_mask = BIT(0), 6383 .hw.init = &(const struct clk_init_data) { 6384 .name = "gcc_usb4_1_phy_rx1_clk", 6385 .parent_hws = (const struct clk_hw*[]){ 6386 &gcc_usb4_1_phy_rx1_clk_src.clkr.hw, 6387 }, 6388 .num_parents = 1, 6389 .flags = CLK_SET_RATE_PARENT, 6390 .ops = &clk_branch2_ops, 6391 }, 6392 }, 6393 }; 6394 6395 static struct clk_branch gcc_usb4_1_phy_usb_pipe_clk = { 6396 .halt_reg = 0xb8088, 6397 .halt_check = BRANCH_HALT_DELAY, 6398 .hwcg_reg = 0xb8088, 6399 .hwcg_bit = 1, 6400 .clkr = { 6401 .enable_reg = 0xb8088, 6402 .enable_mask = BIT(0), 6403 .hw.init = &(const struct clk_init_data) { 6404 .name = "gcc_usb4_1_phy_usb_pipe_clk", 6405 .parent_hws = (const struct clk_hw*[]){ 6406 &gcc_usb34_sec_phy_pipe_clk_src.clkr.hw, 6407 }, 6408 .num_parents = 1, 6409 .flags = CLK_SET_RATE_PARENT, 6410 .ops = &clk_branch2_ops, 6411 }, 6412 }, 6413 }; 6414 6415 static struct clk_branch gcc_usb4_1_sb_if_clk = { 6416 .halt_reg = 0xb8034, 6417 .halt_check = BRANCH_HALT, 6418 .clkr = { 6419 .enable_reg = 0xb8034, 6420 .enable_mask = BIT(0), 6421 .hw.init = &(const struct clk_init_data) { 6422 .name = "gcc_usb4_1_sb_if_clk", 6423 .parent_hws = (const struct clk_hw*[]){ 6424 &gcc_usb4_1_sb_if_clk_src.clkr.hw, 6425 }, 6426 .num_parents = 1, 6427 .flags = CLK_SET_RATE_PARENT, 6428 .ops = &clk_branch2_ops, 6429 }, 6430 }, 6431 }; 6432 6433 static struct clk_branch gcc_usb4_1_sys_clk = { 6434 .halt_reg = 0xb8040, 6435 .halt_check = BRANCH_HALT, 6436 .clkr = { 6437 .enable_reg = 0xb8040, 6438 .enable_mask = BIT(0), 6439 .hw.init = &(const struct clk_init_data) { 6440 .name = "gcc_usb4_1_sys_clk", 6441 .parent_hws = (const struct clk_hw*[]){ 6442 &gcc_usb4_1_phy_sys_clk_src.clkr.hw, 6443 }, 6444 .num_parents = 1, 6445 .flags = CLK_SET_RATE_PARENT, 6446 .ops = &clk_branch2_ops, 6447 }, 6448 }, 6449 }; 6450 6451 static struct clk_branch gcc_usb4_1_tmu_clk = { 6452 .halt_reg = 0xb806c, 6453 .halt_check = BRANCH_HALT_VOTED, 6454 .hwcg_reg = 0xb806c, 6455 .hwcg_bit = 1, 6456 .clkr = { 6457 .enable_reg = 0xb806c, 6458 .enable_mask = BIT(0), 6459 .hw.init = &(const struct clk_init_data) { 6460 .name = "gcc_usb4_1_tmu_clk", 6461 .parent_hws = (const struct clk_hw*[]){ 6462 &gcc_usb4_1_tmu_clk_src.clkr.hw, 6463 }, 6464 .num_parents = 1, 6465 .flags = CLK_SET_RATE_PARENT, 6466 .ops = &clk_branch2_ops, 6467 }, 6468 }, 6469 }; 6470 6471 static struct clk_branch gcc_usb4_cfg_ahb_clk = { 6472 .halt_reg = 0x2a08c, 6473 .halt_check = BRANCH_HALT_VOTED, 6474 .hwcg_reg = 0x2a08c, 6475 .hwcg_bit = 1, 6476 .clkr = { 6477 .enable_reg = 0x2a08c, 6478 .enable_mask = BIT(0), 6479 .hw.init = &(const struct clk_init_data) { 6480 .name = "gcc_usb4_cfg_ahb_clk", 6481 .ops = &clk_branch2_ops, 6482 }, 6483 }, 6484 }; 6485 6486 static struct clk_branch gcc_usb4_clkref_clk = { 6487 .halt_reg = 0x8c010, 6488 .halt_check = BRANCH_HALT, 6489 .clkr = { 6490 .enable_reg = 0x8c010, 6491 .enable_mask = BIT(0), 6492 .hw.init = &(const struct clk_init_data) { 6493 .name = "gcc_usb4_clkref_clk", 6494 .ops = &clk_branch2_ops, 6495 }, 6496 }, 6497 }; 6498 6499 static struct clk_branch gcc_usb4_dp_clk = { 6500 .halt_reg = 0x2a048, 6501 .halt_check = BRANCH_HALT, 6502 .clkr = { 6503 .enable_reg = 0x2a048, 6504 .enable_mask = BIT(0), 6505 .hw.init = &(const struct clk_init_data) { 6506 .name = "gcc_usb4_dp_clk", 6507 .parent_hws = (const struct clk_hw*[]){ 6508 &gcc_usb4_phy_dp_clk_src.clkr.hw, 6509 }, 6510 .num_parents = 1, 6511 .flags = CLK_SET_RATE_PARENT, 6512 .ops = &clk_branch2_ops, 6513 }, 6514 }, 6515 }; 6516 6517 static struct clk_branch gcc_usb4_eud_clkref_clk = { 6518 .halt_reg = 0x8c02c, 6519 .halt_check = BRANCH_HALT, 6520 .clkr = { 6521 .enable_reg = 0x8c02c, 6522 .enable_mask = BIT(0), 6523 .hw.init = &(const struct clk_init_data) { 6524 .name = "gcc_usb4_eud_clkref_clk", 6525 .ops = &clk_branch2_ops, 6526 }, 6527 }, 6528 }; 6529 6530 static struct clk_branch gcc_usb4_master_clk = { 6531 .halt_reg = 0x2a010, 6532 .halt_check = BRANCH_HALT, 6533 .clkr = { 6534 .enable_reg = 0x2a010, 6535 .enable_mask = BIT(0), 6536 .hw.init = &(const struct clk_init_data) { 6537 .name = "gcc_usb4_master_clk", 6538 .parent_hws = (const struct clk_hw*[]){ 6539 &gcc_usb4_master_clk_src.clkr.hw, 6540 }, 6541 .num_parents = 1, 6542 .flags = CLK_SET_RATE_PARENT, 6543 .ops = &clk_branch2_ops, 6544 }, 6545 }, 6546 }; 6547 6548 static struct clk_branch gcc_usb4_phy_p2rr2p_pipe_clk = { 6549 .halt_reg = 0x2a0b4, 6550 .halt_check = BRANCH_HALT_DELAY, 6551 .clkr = { 6552 .enable_reg = 0x2a0b4, 6553 .enable_mask = BIT(0), 6554 .hw.init = &(const struct clk_init_data) { 6555 .name = "gcc_usb4_phy_p2rr2p_pipe_clk", 6556 .parent_hws = (const struct clk_hw*[]){ 6557 &gcc_usb4_phy_p2rr2p_pipe_clk_src.clkr.hw, 6558 }, 6559 .num_parents = 1, 6560 .flags = CLK_SET_RATE_PARENT, 6561 .ops = &clk_branch2_ops, 6562 }, 6563 }, 6564 }; 6565 6566 static struct clk_branch gcc_usb4_phy_pcie_pipe_clk = { 6567 .halt_reg = 0x2a038, 6568 .halt_check = BRANCH_HALT_DELAY, 6569 .clkr = { 6570 .enable_reg = 0x52020, 6571 .enable_mask = BIT(18), 6572 .hw.init = &(const struct clk_init_data) { 6573 .name = "gcc_usb4_phy_pcie_pipe_clk", 6574 .parent_hws = (const struct clk_hw*[]){ 6575 &gcc_usb4_phy_pcie_pipe_mux_clk_src.clkr.hw, 6576 }, 6577 .num_parents = 1, 6578 .flags = CLK_SET_RATE_PARENT, 6579 .ops = &clk_branch2_ops, 6580 }, 6581 }, 6582 }; 6583 6584 static struct clk_branch gcc_usb4_phy_rx0_clk = { 6585 .halt_reg = 0x2a094, 6586 .halt_check = BRANCH_HALT, 6587 .clkr = { 6588 .enable_reg = 0x2a094, 6589 .enable_mask = BIT(0), 6590 .hw.init = &(const struct clk_init_data) { 6591 .name = "gcc_usb4_phy_rx0_clk", 6592 .parent_hws = (const struct clk_hw*[]){ 6593 &gcc_usb4_phy_rx0_clk_src.clkr.hw, 6594 }, 6595 .num_parents = 1, 6596 .flags = CLK_SET_RATE_PARENT, 6597 .ops = &clk_branch2_ops, 6598 }, 6599 }, 6600 }; 6601 6602 static struct clk_branch gcc_usb4_phy_rx1_clk = { 6603 .halt_reg = 0x2a0a0, 6604 .halt_check = BRANCH_HALT, 6605 .clkr = { 6606 .enable_reg = 0x2a0a0, 6607 .enable_mask = BIT(0), 6608 .hw.init = &(const struct clk_init_data) { 6609 .name = "gcc_usb4_phy_rx1_clk", 6610 .parent_hws = (const struct clk_hw*[]){ 6611 &gcc_usb4_phy_rx1_clk_src.clkr.hw, 6612 }, 6613 .num_parents = 1, 6614 .flags = CLK_SET_RATE_PARENT, 6615 .ops = &clk_branch2_ops, 6616 }, 6617 }, 6618 }; 6619 6620 static struct clk_branch gcc_usb4_phy_usb_pipe_clk = { 6621 .halt_reg = 0x2a088, 6622 .halt_check = BRANCH_HALT_DELAY, 6623 .hwcg_reg = 0x2a088, 6624 .hwcg_bit = 1, 6625 .clkr = { 6626 .enable_reg = 0x2a088, 6627 .enable_mask = BIT(0), 6628 .hw.init = &(const struct clk_init_data) { 6629 .name = "gcc_usb4_phy_usb_pipe_clk", 6630 .parent_hws = (const struct clk_hw*[]){ 6631 &gcc_usb34_prim_phy_pipe_clk_src.clkr.hw, 6632 }, 6633 .num_parents = 1, 6634 .flags = CLK_SET_RATE_PARENT, 6635 .ops = &clk_branch2_ops, 6636 }, 6637 }, 6638 }; 6639 6640 static struct clk_branch gcc_usb4_sb_if_clk = { 6641 .halt_reg = 0x2a034, 6642 .halt_check = BRANCH_HALT, 6643 .clkr = { 6644 .enable_reg = 0x2a034, 6645 .enable_mask = BIT(0), 6646 .hw.init = &(const struct clk_init_data) { 6647 .name = "gcc_usb4_sb_if_clk", 6648 .parent_hws = (const struct clk_hw*[]){ 6649 &gcc_usb4_sb_if_clk_src.clkr.hw, 6650 }, 6651 .num_parents = 1, 6652 .flags = CLK_SET_RATE_PARENT, 6653 .ops = &clk_branch2_ops, 6654 }, 6655 }, 6656 }; 6657 6658 static struct clk_branch gcc_usb4_sys_clk = { 6659 .halt_reg = 0x2a040, 6660 .halt_check = BRANCH_HALT, 6661 .clkr = { 6662 .enable_reg = 0x2a040, 6663 .enable_mask = BIT(0), 6664 .hw.init = &(const struct clk_init_data) { 6665 .name = "gcc_usb4_sys_clk", 6666 .parent_hws = (const struct clk_hw*[]){ 6667 &gcc_usb4_phy_sys_clk_src.clkr.hw, 6668 }, 6669 .num_parents = 1, 6670 .flags = CLK_SET_RATE_PARENT, 6671 .ops = &clk_branch2_ops, 6672 }, 6673 }, 6674 }; 6675 6676 static struct clk_branch gcc_usb4_tmu_clk = { 6677 .halt_reg = 0x2a06c, 6678 .halt_check = BRANCH_HALT_VOTED, 6679 .hwcg_reg = 0x2a06c, 6680 .hwcg_bit = 1, 6681 .clkr = { 6682 .enable_reg = 0x2a06c, 6683 .enable_mask = BIT(0), 6684 .hw.init = &(const struct clk_init_data) { 6685 .name = "gcc_usb4_tmu_clk", 6686 .parent_hws = (const struct clk_hw*[]){ 6687 &gcc_usb4_tmu_clk_src.clkr.hw, 6688 }, 6689 .num_parents = 1, 6690 .flags = CLK_SET_RATE_PARENT, 6691 .ops = &clk_branch2_ops, 6692 }, 6693 }, 6694 }; 6695 6696 static struct clk_branch gcc_video_axi0_clk = { 6697 .halt_reg = 0x28010, 6698 .halt_check = BRANCH_HALT_SKIP, 6699 .hwcg_reg = 0x28010, 6700 .hwcg_bit = 1, 6701 .clkr = { 6702 .enable_reg = 0x28010, 6703 .enable_mask = BIT(0), 6704 .hw.init = &(const struct clk_init_data) { 6705 .name = "gcc_video_axi0_clk", 6706 .ops = &clk_branch2_ops, 6707 }, 6708 }, 6709 }; 6710 6711 static struct clk_branch gcc_video_axi1_clk = { 6712 .halt_reg = 0x28018, 6713 .halt_check = BRANCH_HALT_SKIP, 6714 .hwcg_reg = 0x28018, 6715 .hwcg_bit = 1, 6716 .clkr = { 6717 .enable_reg = 0x28018, 6718 .enable_mask = BIT(0), 6719 .hw.init = &(const struct clk_init_data) { 6720 .name = "gcc_video_axi1_clk", 6721 .ops = &clk_branch2_ops, 6722 }, 6723 }, 6724 }; 6725 6726 static struct clk_branch gcc_video_cvp_throttle_clk = { 6727 .halt_reg = 0x28024, 6728 .halt_check = BRANCH_HALT_SKIP, 6729 .hwcg_reg = 0x28024, 6730 .hwcg_bit = 1, 6731 .clkr = { 6732 .enable_reg = 0x28024, 6733 .enable_mask = BIT(0), 6734 .hw.init = &(const struct clk_init_data) { 6735 .name = "gcc_video_cvp_throttle_clk", 6736 .ops = &clk_branch2_ops, 6737 }, 6738 }, 6739 }; 6740 6741 static struct clk_branch gcc_video_vcodec_throttle_clk = { 6742 .halt_reg = 0x28020, 6743 .halt_check = BRANCH_HALT_SKIP, 6744 .hwcg_reg = 0x28020, 6745 .hwcg_bit = 1, 6746 .clkr = { 6747 .enable_reg = 0x28020, 6748 .enable_mask = BIT(0), 6749 .hw.init = &(const struct clk_init_data) { 6750 .name = "gcc_video_vcodec_throttle_clk", 6751 .ops = &clk_branch2_ops, 6752 }, 6753 }, 6754 }; 6755 6756 static struct gdsc pcie_0_tunnel_gdsc = { 6757 .gdscr = 0xa4004, 6758 .collapse_ctrl = 0x52128, 6759 .collapse_mask = BIT(0), 6760 .pd = { 6761 .name = "pcie_0_tunnel_gdsc", 6762 }, 6763 .pwrsts = PWRSTS_OFF_ON, 6764 .flags = VOTABLE | RETAIN_FF_ENABLE, 6765 }; 6766 6767 static struct gdsc pcie_1_tunnel_gdsc = { 6768 .gdscr = 0x8d004, 6769 .collapse_ctrl = 0x52128, 6770 .collapse_mask = BIT(1), 6771 .pd = { 6772 .name = "pcie_1_tunnel_gdsc", 6773 }, 6774 .pwrsts = PWRSTS_OFF_ON, 6775 .flags = VOTABLE | RETAIN_FF_ENABLE, 6776 }; 6777 6778 /* 6779 * The Qualcomm PCIe driver does not yet implement suspend so to keep the 6780 * PCIe power domains always-on for now. 6781 */ 6782 static struct gdsc pcie_2a_gdsc = { 6783 .gdscr = 0x9d004, 6784 .collapse_ctrl = 0x52128, 6785 .collapse_mask = BIT(2), 6786 .pd = { 6787 .name = "pcie_2a_gdsc", 6788 }, 6789 .pwrsts = PWRSTS_RET_ON, 6790 .flags = VOTABLE | RETAIN_FF_ENABLE, 6791 }; 6792 6793 static struct gdsc pcie_2b_gdsc = { 6794 .gdscr = 0x9e004, 6795 .collapse_ctrl = 0x52128, 6796 .collapse_mask = BIT(3), 6797 .pd = { 6798 .name = "pcie_2b_gdsc", 6799 }, 6800 .pwrsts = PWRSTS_RET_ON, 6801 .flags = VOTABLE | RETAIN_FF_ENABLE, 6802 }; 6803 6804 static struct gdsc pcie_3a_gdsc = { 6805 .gdscr = 0xa0004, 6806 .collapse_ctrl = 0x52128, 6807 .collapse_mask = BIT(4), 6808 .pd = { 6809 .name = "pcie_3a_gdsc", 6810 }, 6811 .pwrsts = PWRSTS_RET_ON, 6812 .flags = VOTABLE | RETAIN_FF_ENABLE, 6813 }; 6814 6815 static struct gdsc pcie_3b_gdsc = { 6816 .gdscr = 0xa2004, 6817 .collapse_ctrl = 0x52128, 6818 .collapse_mask = BIT(5), 6819 .pd = { 6820 .name = "pcie_3b_gdsc", 6821 }, 6822 .pwrsts = PWRSTS_RET_ON, 6823 .flags = VOTABLE | RETAIN_FF_ENABLE, 6824 }; 6825 6826 static struct gdsc pcie_4_gdsc = { 6827 .gdscr = 0x6b004, 6828 .collapse_ctrl = 0x52128, 6829 .collapse_mask = BIT(6), 6830 .pd = { 6831 .name = "pcie_4_gdsc", 6832 }, 6833 .pwrsts = PWRSTS_RET_ON, 6834 .flags = VOTABLE | RETAIN_FF_ENABLE, 6835 }; 6836 6837 static struct gdsc ufs_card_gdsc = { 6838 .gdscr = 0x75004, 6839 .pd = { 6840 .name = "ufs_card_gdsc", 6841 }, 6842 .pwrsts = PWRSTS_OFF_ON, 6843 .flags = RETAIN_FF_ENABLE, 6844 }; 6845 6846 static struct gdsc ufs_phy_gdsc = { 6847 .gdscr = 0x77004, 6848 .pd = { 6849 .name = "ufs_phy_gdsc", 6850 }, 6851 .pwrsts = PWRSTS_OFF_ON, 6852 .flags = RETAIN_FF_ENABLE, 6853 }; 6854 6855 static struct gdsc usb30_mp_gdsc = { 6856 .gdscr = 0xab004, 6857 .pd = { 6858 .name = "usb30_mp_gdsc", 6859 }, 6860 .pwrsts = PWRSTS_RET_ON, 6861 .flags = RETAIN_FF_ENABLE, 6862 }; 6863 6864 static struct gdsc usb30_prim_gdsc = { 6865 .gdscr = 0xf004, 6866 .pd = { 6867 .name = "usb30_prim_gdsc", 6868 }, 6869 .pwrsts = PWRSTS_RET_ON, 6870 .flags = RETAIN_FF_ENABLE, 6871 }; 6872 6873 static struct gdsc usb30_sec_gdsc = { 6874 .gdscr = 0x10004, 6875 .pd = { 6876 .name = "usb30_sec_gdsc", 6877 }, 6878 .pwrsts = PWRSTS_RET_ON, 6879 .flags = RETAIN_FF_ENABLE, 6880 }; 6881 6882 static struct gdsc emac_0_gdsc = { 6883 .gdscr = 0xaa004, 6884 .pd = { 6885 .name = "emac_0_gdsc", 6886 }, 6887 .pwrsts = PWRSTS_OFF_ON, 6888 .flags = RETAIN_FF_ENABLE, 6889 }; 6890 6891 static struct gdsc emac_1_gdsc = { 6892 .gdscr = 0xba004, 6893 .pd = { 6894 .name = "emac_1_gdsc", 6895 }, 6896 .pwrsts = PWRSTS_OFF_ON, 6897 .flags = RETAIN_FF_ENABLE, 6898 }; 6899 6900 static struct gdsc usb4_1_gdsc = { 6901 .gdscr = 0xb8004, 6902 .pd = { 6903 .name = "usb4_1_gdsc", 6904 }, 6905 .pwrsts = PWRSTS_OFF_ON, 6906 .flags = RETAIN_FF_ENABLE, 6907 }; 6908 6909 static struct gdsc usb4_gdsc = { 6910 .gdscr = 0x2a004, 6911 .pd = { 6912 .name = "usb4_gdsc", 6913 }, 6914 .pwrsts = PWRSTS_OFF_ON, 6915 .flags = RETAIN_FF_ENABLE, 6916 }; 6917 6918 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = { 6919 .gdscr = 0x7d050, 6920 .pd = { 6921 .name = "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc", 6922 }, 6923 .pwrsts = PWRSTS_OFF_ON, 6924 .flags = VOTABLE, 6925 }; 6926 6927 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc = { 6928 .gdscr = 0x7d058, 6929 .pd = { 6930 .name = "hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc", 6931 }, 6932 .pwrsts = PWRSTS_OFF_ON, 6933 .flags = VOTABLE, 6934 }; 6935 6936 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc = { 6937 .gdscr = 0x7d054, 6938 .pd = { 6939 .name = "hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc", 6940 }, 6941 .pwrsts = PWRSTS_OFF_ON, 6942 .flags = VOTABLE, 6943 }; 6944 6945 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc = { 6946 .gdscr = 0x7d06c, 6947 .pd = { 6948 .name = "hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc", 6949 }, 6950 .pwrsts = PWRSTS_OFF_ON, 6951 .flags = VOTABLE, 6952 }; 6953 6954 static struct gdsc hlos1_vote_turing_mmu_tbu0_gdsc = { 6955 .gdscr = 0x7d05c, 6956 .pd = { 6957 .name = "hlos1_vote_turing_mmu_tbu0_gdsc", 6958 }, 6959 .pwrsts = PWRSTS_OFF_ON, 6960 .flags = VOTABLE, 6961 }; 6962 6963 static struct gdsc hlos1_vote_turing_mmu_tbu1_gdsc = { 6964 .gdscr = 0x7d060, 6965 .pd = { 6966 .name = "hlos1_vote_turing_mmu_tbu1_gdsc", 6967 }, 6968 .pwrsts = PWRSTS_OFF_ON, 6969 .flags = VOTABLE, 6970 }; 6971 6972 static struct gdsc hlos1_vote_turing_mmu_tbu2_gdsc = { 6973 .gdscr = 0x7d0a0, 6974 .pd = { 6975 .name = "hlos1_vote_turing_mmu_tbu2_gdsc", 6976 }, 6977 .pwrsts = PWRSTS_OFF_ON, 6978 .flags = VOTABLE, 6979 }; 6980 6981 static struct gdsc hlos1_vote_turing_mmu_tbu3_gdsc = { 6982 .gdscr = 0x7d0a4, 6983 .pd = { 6984 .name = "hlos1_vote_turing_mmu_tbu3_gdsc", 6985 }, 6986 .pwrsts = PWRSTS_OFF_ON, 6987 .flags = VOTABLE, 6988 }; 6989 6990 static struct clk_regmap *gcc_sc8280xp_clocks[] = { 6991 [GCC_AGGRE_NOC_PCIE0_TUNNEL_AXI_CLK] = &gcc_aggre_noc_pcie0_tunnel_axi_clk.clkr, 6992 [GCC_AGGRE_NOC_PCIE1_TUNNEL_AXI_CLK] = &gcc_aggre_noc_pcie1_tunnel_axi_clk.clkr, 6993 [GCC_AGGRE_NOC_PCIE_4_AXI_CLK] = &gcc_aggre_noc_pcie_4_axi_clk.clkr, 6994 [GCC_AGGRE_NOC_PCIE_SOUTH_SF_AXI_CLK] = &gcc_aggre_noc_pcie_south_sf_axi_clk.clkr, 6995 [GCC_AGGRE_UFS_CARD_AXI_CLK] = &gcc_aggre_ufs_card_axi_clk.clkr, 6996 [GCC_AGGRE_UFS_CARD_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_card_axi_hw_ctl_clk.clkr, 6997 [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr, 6998 [GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_phy_axi_hw_ctl_clk.clkr, 6999 [GCC_AGGRE_USB3_MP_AXI_CLK] = &gcc_aggre_usb3_mp_axi_clk.clkr, 7000 [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr, 7001 [GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr, 7002 [GCC_AGGRE_USB4_1_AXI_CLK] = &gcc_aggre_usb4_1_axi_clk.clkr, 7003 [GCC_AGGRE_USB4_AXI_CLK] = &gcc_aggre_usb4_axi_clk.clkr, 7004 [GCC_AGGRE_USB_NOC_AXI_CLK] = &gcc_aggre_usb_noc_axi_clk.clkr, 7005 [GCC_AGGRE_USB_NOC_NORTH_AXI_CLK] = &gcc_aggre_usb_noc_north_axi_clk.clkr, 7006 [GCC_AGGRE_USB_NOC_SOUTH_AXI_CLK] = &gcc_aggre_usb_noc_south_axi_clk.clkr, 7007 [GCC_AHB2PHY0_CLK] = &gcc_ahb2phy0_clk.clkr, 7008 [GCC_AHB2PHY2_CLK] = &gcc_ahb2phy2_clk.clkr, 7009 [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 7010 [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr, 7011 [GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr, 7012 [GCC_CAMERA_THROTTLE_NRT_AXI_CLK] = &gcc_camera_throttle_nrt_axi_clk.clkr, 7013 [GCC_CAMERA_THROTTLE_RT_AXI_CLK] = &gcc_camera_throttle_rt_axi_clk.clkr, 7014 [GCC_CAMERA_THROTTLE_XO_CLK] = &gcc_camera_throttle_xo_clk.clkr, 7015 [GCC_CFG_NOC_USB3_MP_AXI_CLK] = &gcc_cfg_noc_usb3_mp_axi_clk.clkr, 7016 [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr, 7017 [GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr, 7018 [GCC_CNOC_PCIE0_TUNNEL_CLK] = &gcc_cnoc_pcie0_tunnel_clk.clkr, 7019 [GCC_CNOC_PCIE1_TUNNEL_CLK] = &gcc_cnoc_pcie1_tunnel_clk.clkr, 7020 [GCC_CNOC_PCIE4_QX_CLK] = &gcc_cnoc_pcie4_qx_clk.clkr, 7021 [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr, 7022 [GCC_DDRSS_PCIE_SF_TBU_CLK] = &gcc_ddrss_pcie_sf_tbu_clk.clkr, 7023 [GCC_DISP1_HF_AXI_CLK] = &gcc_disp1_hf_axi_clk.clkr, 7024 [GCC_DISP1_SF_AXI_CLK] = &gcc_disp1_sf_axi_clk.clkr, 7025 [GCC_DISP1_THROTTLE_NRT_AXI_CLK] = &gcc_disp1_throttle_nrt_axi_clk.clkr, 7026 [GCC_DISP1_THROTTLE_RT_AXI_CLK] = &gcc_disp1_throttle_rt_axi_clk.clkr, 7027 [GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr, 7028 [GCC_DISP_SF_AXI_CLK] = &gcc_disp_sf_axi_clk.clkr, 7029 [GCC_DISP_THROTTLE_NRT_AXI_CLK] = &gcc_disp_throttle_nrt_axi_clk.clkr, 7030 [GCC_DISP_THROTTLE_RT_AXI_CLK] = &gcc_disp_throttle_rt_axi_clk.clkr, 7031 [GCC_EMAC0_AXI_CLK] = &gcc_emac0_axi_clk.clkr, 7032 [GCC_EMAC0_PTP_CLK] = &gcc_emac0_ptp_clk.clkr, 7033 [GCC_EMAC0_PTP_CLK_SRC] = &gcc_emac0_ptp_clk_src.clkr, 7034 [GCC_EMAC0_RGMII_CLK] = &gcc_emac0_rgmii_clk.clkr, 7035 [GCC_EMAC0_RGMII_CLK_SRC] = &gcc_emac0_rgmii_clk_src.clkr, 7036 [GCC_EMAC0_SLV_AHB_CLK] = &gcc_emac0_slv_ahb_clk.clkr, 7037 [GCC_EMAC1_AXI_CLK] = &gcc_emac1_axi_clk.clkr, 7038 [GCC_EMAC1_PTP_CLK] = &gcc_emac1_ptp_clk.clkr, 7039 [GCC_EMAC1_PTP_CLK_SRC] = &gcc_emac1_ptp_clk_src.clkr, 7040 [GCC_EMAC1_RGMII_CLK] = &gcc_emac1_rgmii_clk.clkr, 7041 [GCC_EMAC1_RGMII_CLK_SRC] = &gcc_emac1_rgmii_clk_src.clkr, 7042 [GCC_EMAC1_SLV_AHB_CLK] = &gcc_emac1_slv_ahb_clk.clkr, 7043 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 7044 [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr, 7045 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 7046 [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr, 7047 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 7048 [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr, 7049 [GCC_GP4_CLK] = &gcc_gp4_clk.clkr, 7050 [GCC_GP4_CLK_SRC] = &gcc_gp4_clk_src.clkr, 7051 [GCC_GP5_CLK] = &gcc_gp5_clk.clkr, 7052 [GCC_GP5_CLK_SRC] = &gcc_gp5_clk_src.clkr, 7053 [GCC_GPLL0] = &gcc_gpll0.clkr, 7054 [GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr, 7055 [GCC_GPLL2] = &gcc_gpll2.clkr, 7056 [GCC_GPLL4] = &gcc_gpll4.clkr, 7057 [GCC_GPLL7] = &gcc_gpll7.clkr, 7058 [GCC_GPLL8] = &gcc_gpll8.clkr, 7059 [GCC_GPLL9] = &gcc_gpll9.clkr, 7060 [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr, 7061 [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr, 7062 [GCC_GPU_IREF_EN] = &gcc_gpu_iref_en.clkr, 7063 [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr, 7064 [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr, 7065 [GCC_GPU_TCU_THROTTLE_AHB_CLK] = &gcc_gpu_tcu_throttle_ahb_clk.clkr, 7066 [GCC_GPU_TCU_THROTTLE_CLK] = &gcc_gpu_tcu_throttle_clk.clkr, 7067 [GCC_PCIE0_PHY_RCHNG_CLK] = &gcc_pcie0_phy_rchng_clk.clkr, 7068 [GCC_PCIE1_PHY_RCHNG_CLK] = &gcc_pcie1_phy_rchng_clk.clkr, 7069 [GCC_PCIE2A_PHY_RCHNG_CLK] = &gcc_pcie2a_phy_rchng_clk.clkr, 7070 [GCC_PCIE2B_PHY_RCHNG_CLK] = &gcc_pcie2b_phy_rchng_clk.clkr, 7071 [GCC_PCIE3A_PHY_RCHNG_CLK] = &gcc_pcie3a_phy_rchng_clk.clkr, 7072 [GCC_PCIE3B_PHY_RCHNG_CLK] = &gcc_pcie3b_phy_rchng_clk.clkr, 7073 [GCC_PCIE4_PHY_RCHNG_CLK] = &gcc_pcie4_phy_rchng_clk.clkr, 7074 [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr, 7075 [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr, 7076 [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr, 7077 [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr, 7078 [GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr, 7079 [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr, 7080 [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr, 7081 [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr, 7082 [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr, 7083 [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr, 7084 [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr, 7085 [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr, 7086 [GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr, 7087 [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr, 7088 [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr, 7089 [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr, 7090 [GCC_PCIE_2A2B_CLKREF_CLK] = &gcc_pcie_2a2b_clkref_clk.clkr, 7091 [GCC_PCIE_2A_AUX_CLK] = &gcc_pcie_2a_aux_clk.clkr, 7092 [GCC_PCIE_2A_AUX_CLK_SRC] = &gcc_pcie_2a_aux_clk_src.clkr, 7093 [GCC_PCIE_2A_CFG_AHB_CLK] = &gcc_pcie_2a_cfg_ahb_clk.clkr, 7094 [GCC_PCIE_2A_MSTR_AXI_CLK] = &gcc_pcie_2a_mstr_axi_clk.clkr, 7095 [GCC_PCIE_2A_PHY_RCHNG_CLK_SRC] = &gcc_pcie_2a_phy_rchng_clk_src.clkr, 7096 [GCC_PCIE_2A_PIPE_CLK] = &gcc_pcie_2a_pipe_clk.clkr, 7097 [GCC_PCIE_2A_PIPE_CLK_SRC] = &gcc_pcie_2a_pipe_clk_src.clkr, 7098 [GCC_PCIE_2A_PIPE_DIV_CLK_SRC] = &gcc_pcie_2a_pipe_div_clk_src.clkr, 7099 [GCC_PCIE_2A_PIPEDIV2_CLK] = &gcc_pcie_2a_pipediv2_clk.clkr, 7100 [GCC_PCIE_2A_SLV_AXI_CLK] = &gcc_pcie_2a_slv_axi_clk.clkr, 7101 [GCC_PCIE_2A_SLV_Q2A_AXI_CLK] = &gcc_pcie_2a_slv_q2a_axi_clk.clkr, 7102 [GCC_PCIE_2B_AUX_CLK] = &gcc_pcie_2b_aux_clk.clkr, 7103 [GCC_PCIE_2B_AUX_CLK_SRC] = &gcc_pcie_2b_aux_clk_src.clkr, 7104 [GCC_PCIE_2B_CFG_AHB_CLK] = &gcc_pcie_2b_cfg_ahb_clk.clkr, 7105 [GCC_PCIE_2B_MSTR_AXI_CLK] = &gcc_pcie_2b_mstr_axi_clk.clkr, 7106 [GCC_PCIE_2B_PHY_RCHNG_CLK_SRC] = &gcc_pcie_2b_phy_rchng_clk_src.clkr, 7107 [GCC_PCIE_2B_PIPE_CLK] = &gcc_pcie_2b_pipe_clk.clkr, 7108 [GCC_PCIE_2B_PIPE_CLK_SRC] = &gcc_pcie_2b_pipe_clk_src.clkr, 7109 [GCC_PCIE_2B_PIPE_DIV_CLK_SRC] = &gcc_pcie_2b_pipe_div_clk_src.clkr, 7110 [GCC_PCIE_2B_PIPEDIV2_CLK] = &gcc_pcie_2b_pipediv2_clk.clkr, 7111 [GCC_PCIE_2B_SLV_AXI_CLK] = &gcc_pcie_2b_slv_axi_clk.clkr, 7112 [GCC_PCIE_2B_SLV_Q2A_AXI_CLK] = &gcc_pcie_2b_slv_q2a_axi_clk.clkr, 7113 [GCC_PCIE_3A3B_CLKREF_CLK] = &gcc_pcie_3a3b_clkref_clk.clkr, 7114 [GCC_PCIE_3A_AUX_CLK] = &gcc_pcie_3a_aux_clk.clkr, 7115 [GCC_PCIE_3A_AUX_CLK_SRC] = &gcc_pcie_3a_aux_clk_src.clkr, 7116 [GCC_PCIE_3A_CFG_AHB_CLK] = &gcc_pcie_3a_cfg_ahb_clk.clkr, 7117 [GCC_PCIE_3A_MSTR_AXI_CLK] = &gcc_pcie_3a_mstr_axi_clk.clkr, 7118 [GCC_PCIE_3A_PHY_RCHNG_CLK_SRC] = &gcc_pcie_3a_phy_rchng_clk_src.clkr, 7119 [GCC_PCIE_3A_PIPE_CLK] = &gcc_pcie_3a_pipe_clk.clkr, 7120 [GCC_PCIE_3A_PIPE_CLK_SRC] = &gcc_pcie_3a_pipe_clk_src.clkr, 7121 [GCC_PCIE_3A_PIPE_DIV_CLK_SRC] = &gcc_pcie_3a_pipe_div_clk_src.clkr, 7122 [GCC_PCIE_3A_PIPEDIV2_CLK] = &gcc_pcie_3a_pipediv2_clk.clkr, 7123 [GCC_PCIE_3A_SLV_AXI_CLK] = &gcc_pcie_3a_slv_axi_clk.clkr, 7124 [GCC_PCIE_3A_SLV_Q2A_AXI_CLK] = &gcc_pcie_3a_slv_q2a_axi_clk.clkr, 7125 [GCC_PCIE_3B_AUX_CLK] = &gcc_pcie_3b_aux_clk.clkr, 7126 [GCC_PCIE_3B_AUX_CLK_SRC] = &gcc_pcie_3b_aux_clk_src.clkr, 7127 [GCC_PCIE_3B_CFG_AHB_CLK] = &gcc_pcie_3b_cfg_ahb_clk.clkr, 7128 [GCC_PCIE_3B_MSTR_AXI_CLK] = &gcc_pcie_3b_mstr_axi_clk.clkr, 7129 [GCC_PCIE_3B_PHY_RCHNG_CLK_SRC] = &gcc_pcie_3b_phy_rchng_clk_src.clkr, 7130 [GCC_PCIE_3B_PIPE_CLK] = &gcc_pcie_3b_pipe_clk.clkr, 7131 [GCC_PCIE_3B_PIPE_CLK_SRC] = &gcc_pcie_3b_pipe_clk_src.clkr, 7132 [GCC_PCIE_3B_PIPE_DIV_CLK_SRC] = &gcc_pcie_3b_pipe_div_clk_src.clkr, 7133 [GCC_PCIE_3B_PIPEDIV2_CLK] = &gcc_pcie_3b_pipediv2_clk.clkr, 7134 [GCC_PCIE_3B_SLV_AXI_CLK] = &gcc_pcie_3b_slv_axi_clk.clkr, 7135 [GCC_PCIE_3B_SLV_Q2A_AXI_CLK] = &gcc_pcie_3b_slv_q2a_axi_clk.clkr, 7136 [GCC_PCIE_4_AUX_CLK] = &gcc_pcie_4_aux_clk.clkr, 7137 [GCC_PCIE_4_AUX_CLK_SRC] = &gcc_pcie_4_aux_clk_src.clkr, 7138 [GCC_PCIE_4_CFG_AHB_CLK] = &gcc_pcie_4_cfg_ahb_clk.clkr, 7139 [GCC_PCIE_4_CLKREF_CLK] = &gcc_pcie_4_clkref_clk.clkr, 7140 [GCC_PCIE_4_MSTR_AXI_CLK] = &gcc_pcie_4_mstr_axi_clk.clkr, 7141 [GCC_PCIE_4_PHY_RCHNG_CLK_SRC] = &gcc_pcie_4_phy_rchng_clk_src.clkr, 7142 [GCC_PCIE_4_PIPE_CLK] = &gcc_pcie_4_pipe_clk.clkr, 7143 [GCC_PCIE_4_PIPE_CLK_SRC] = &gcc_pcie_4_pipe_clk_src.clkr, 7144 [GCC_PCIE_4_PIPE_DIV_CLK_SRC] = &gcc_pcie_4_pipe_div_clk_src.clkr, 7145 [GCC_PCIE_4_PIPEDIV2_CLK] = &gcc_pcie_4_pipediv2_clk.clkr, 7146 [GCC_PCIE_4_SLV_AXI_CLK] = &gcc_pcie_4_slv_axi_clk.clkr, 7147 [GCC_PCIE_4_SLV_Q2A_AXI_CLK] = &gcc_pcie_4_slv_q2a_axi_clk.clkr, 7148 [GCC_PCIE_RSCC_AHB_CLK] = &gcc_pcie_rscc_ahb_clk.clkr, 7149 [GCC_PCIE_RSCC_XO_CLK] = &gcc_pcie_rscc_xo_clk.clkr, 7150 [GCC_PCIE_RSCC_XO_CLK_SRC] = &gcc_pcie_rscc_xo_clk_src.clkr, 7151 [GCC_PCIE_THROTTLE_CFG_CLK] = &gcc_pcie_throttle_cfg_clk.clkr, 7152 [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 7153 [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr, 7154 [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 7155 [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr, 7156 [GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr, 7157 [GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr, 7158 [GCC_QMIP_DISP1_AHB_CLK] = &gcc_qmip_disp1_ahb_clk.clkr, 7159 [GCC_QMIP_DISP1_ROT_AHB_CLK] = &gcc_qmip_disp1_rot_ahb_clk.clkr, 7160 [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr, 7161 [GCC_QMIP_DISP_ROT_AHB_CLK] = &gcc_qmip_disp_rot_ahb_clk.clkr, 7162 [GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr, 7163 [GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr, 7164 [GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr, 7165 [GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr, 7166 [GCC_QUPV3_WRAP0_QSPI0_CLK] = &gcc_qupv3_wrap0_qspi0_clk.clkr, 7167 [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr, 7168 [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr, 7169 [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr, 7170 [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr, 7171 [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr, 7172 [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr, 7173 [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr, 7174 [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr, 7175 [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr, 7176 [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr, 7177 [GCC_QUPV3_WRAP0_S4_DIV_CLK_SRC] = &gcc_qupv3_wrap0_s4_div_clk_src.clkr, 7178 [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr, 7179 [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr, 7180 [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr, 7181 [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr, 7182 [GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr, 7183 [GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr, 7184 [GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr, 7185 [GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr, 7186 [GCC_QUPV3_WRAP1_QSPI0_CLK] = &gcc_qupv3_wrap1_qspi0_clk.clkr, 7187 [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr, 7188 [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr, 7189 [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr, 7190 [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr, 7191 [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr, 7192 [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr, 7193 [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr, 7194 [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr, 7195 [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr, 7196 [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr, 7197 [GCC_QUPV3_WRAP1_S4_DIV_CLK_SRC] = &gcc_qupv3_wrap1_s4_div_clk_src.clkr, 7198 [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr, 7199 [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr, 7200 [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr, 7201 [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr, 7202 [GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr, 7203 [GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr, 7204 [GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr, 7205 [GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr, 7206 [GCC_QUPV3_WRAP2_QSPI0_CLK] = &gcc_qupv3_wrap2_qspi0_clk.clkr, 7207 [GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr, 7208 [GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr, 7209 [GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr, 7210 [GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr, 7211 [GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr, 7212 [GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr, 7213 [GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr, 7214 [GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr, 7215 [GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr, 7216 [GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr, 7217 [GCC_QUPV3_WRAP2_S4_DIV_CLK_SRC] = &gcc_qupv3_wrap2_s4_div_clk_src.clkr, 7218 [GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr, 7219 [GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr, 7220 [GCC_QUPV3_WRAP2_S6_CLK] = &gcc_qupv3_wrap2_s6_clk.clkr, 7221 [GCC_QUPV3_WRAP2_S6_CLK_SRC] = &gcc_qupv3_wrap2_s6_clk_src.clkr, 7222 [GCC_QUPV3_WRAP2_S7_CLK] = &gcc_qupv3_wrap2_s7_clk.clkr, 7223 [GCC_QUPV3_WRAP2_S7_CLK_SRC] = &gcc_qupv3_wrap2_s7_clk_src.clkr, 7224 [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr, 7225 [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr, 7226 [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr, 7227 [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr, 7228 [GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr, 7229 [GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr, 7230 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 7231 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 7232 [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr, 7233 [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr, 7234 [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr, 7235 [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr, 7236 [GCC_SYS_NOC_USB_AXI_CLK] = &gcc_sys_noc_usb_axi_clk.clkr, 7237 [GCC_UFS_1_CARD_CLKREF_CLK] = &gcc_ufs_1_card_clkref_clk.clkr, 7238 [GCC_UFS_CARD_AHB_CLK] = &gcc_ufs_card_ahb_clk.clkr, 7239 [GCC_UFS_CARD_AXI_CLK] = &gcc_ufs_card_axi_clk.clkr, 7240 [GCC_UFS_CARD_AXI_CLK_SRC] = &gcc_ufs_card_axi_clk_src.clkr, 7241 [GCC_UFS_CARD_AXI_HW_CTL_CLK] = &gcc_ufs_card_axi_hw_ctl_clk.clkr, 7242 [GCC_UFS_CARD_CLKREF_CLK] = &gcc_ufs_card_clkref_clk.clkr, 7243 [GCC_UFS_CARD_ICE_CORE_CLK] = &gcc_ufs_card_ice_core_clk.clkr, 7244 [GCC_UFS_CARD_ICE_CORE_CLK_SRC] = &gcc_ufs_card_ice_core_clk_src.clkr, 7245 [GCC_UFS_CARD_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_card_ice_core_hw_ctl_clk.clkr, 7246 [GCC_UFS_CARD_PHY_AUX_CLK] = &gcc_ufs_card_phy_aux_clk.clkr, 7247 [GCC_UFS_CARD_PHY_AUX_CLK_SRC] = &gcc_ufs_card_phy_aux_clk_src.clkr, 7248 [GCC_UFS_CARD_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_card_phy_aux_hw_ctl_clk.clkr, 7249 [GCC_UFS_CARD_RX_SYMBOL_0_CLK] = &gcc_ufs_card_rx_symbol_0_clk.clkr, 7250 [GCC_UFS_CARD_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_card_rx_symbol_0_clk_src.clkr, 7251 [GCC_UFS_CARD_RX_SYMBOL_1_CLK] = &gcc_ufs_card_rx_symbol_1_clk.clkr, 7252 [GCC_UFS_CARD_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_card_rx_symbol_1_clk_src.clkr, 7253 [GCC_UFS_CARD_TX_SYMBOL_0_CLK] = &gcc_ufs_card_tx_symbol_0_clk.clkr, 7254 [GCC_UFS_CARD_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_card_tx_symbol_0_clk_src.clkr, 7255 [GCC_UFS_CARD_UNIPRO_CORE_CLK] = &gcc_ufs_card_unipro_core_clk.clkr, 7256 [GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_card_unipro_core_clk_src.clkr, 7257 [GCC_UFS_CARD_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_card_unipro_core_hw_ctl_clk.clkr, 7258 [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr, 7259 [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr, 7260 [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr, 7261 [GCC_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_ufs_phy_axi_hw_ctl_clk.clkr, 7262 [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr, 7263 [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr, 7264 [GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_phy_ice_core_hw_ctl_clk.clkr, 7265 [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr, 7266 [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr, 7267 [GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_phy_phy_aux_hw_ctl_clk.clkr, 7268 [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr, 7269 [GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr, 7270 [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr, 7271 [GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr, 7272 [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr, 7273 [GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr, 7274 [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr, 7275 [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr, 7276 [GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_phy_unipro_core_hw_ctl_clk.clkr, 7277 [GCC_UFS_REF_CLKREF_CLK] = &gcc_ufs_ref_clkref_clk.clkr, 7278 [GCC_USB2_HS0_CLKREF_CLK] = &gcc_usb2_hs0_clkref_clk.clkr, 7279 [GCC_USB2_HS1_CLKREF_CLK] = &gcc_usb2_hs1_clkref_clk.clkr, 7280 [GCC_USB2_HS2_CLKREF_CLK] = &gcc_usb2_hs2_clkref_clk.clkr, 7281 [GCC_USB2_HS3_CLKREF_CLK] = &gcc_usb2_hs3_clkref_clk.clkr, 7282 [GCC_USB30_MP_MASTER_CLK] = &gcc_usb30_mp_master_clk.clkr, 7283 [GCC_USB30_MP_MASTER_CLK_SRC] = &gcc_usb30_mp_master_clk_src.clkr, 7284 [GCC_USB30_MP_MOCK_UTMI_CLK] = &gcc_usb30_mp_mock_utmi_clk.clkr, 7285 [GCC_USB30_MP_MOCK_UTMI_CLK_SRC] = &gcc_usb30_mp_mock_utmi_clk_src.clkr, 7286 [GCC_USB30_MP_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_mp_mock_utmi_postdiv_clk_src.clkr, 7287 [GCC_USB30_MP_SLEEP_CLK] = &gcc_usb30_mp_sleep_clk.clkr, 7288 [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr, 7289 [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr, 7290 [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr, 7291 [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr, 7292 [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr, 7293 [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr, 7294 [GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr, 7295 [GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr, 7296 [GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr, 7297 [GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] = &gcc_usb30_sec_mock_utmi_clk_src.clkr, 7298 [GCC_USB30_SEC_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_sec_mock_utmi_postdiv_clk_src.clkr, 7299 [GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr, 7300 [GCC_USB34_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb34_prim_phy_pipe_clk_src.clkr, 7301 [GCC_USB34_SEC_PHY_PIPE_CLK_SRC] = &gcc_usb34_sec_phy_pipe_clk_src.clkr, 7302 [GCC_USB3_MP0_CLKREF_CLK] = &gcc_usb3_mp0_clkref_clk.clkr, 7303 [GCC_USB3_MP1_CLKREF_CLK] = &gcc_usb3_mp1_clkref_clk.clkr, 7304 [GCC_USB3_MP_PHY_AUX_CLK] = &gcc_usb3_mp_phy_aux_clk.clkr, 7305 [GCC_USB3_MP_PHY_AUX_CLK_SRC] = &gcc_usb3_mp_phy_aux_clk_src.clkr, 7306 [GCC_USB3_MP_PHY_COM_AUX_CLK] = &gcc_usb3_mp_phy_com_aux_clk.clkr, 7307 [GCC_USB3_MP_PHY_PIPE_0_CLK] = &gcc_usb3_mp_phy_pipe_0_clk.clkr, 7308 [GCC_USB3_MP_PHY_PIPE_0_CLK_SRC] = &gcc_usb3_mp_phy_pipe_0_clk_src.clkr, 7309 [GCC_USB3_MP_PHY_PIPE_1_CLK] = &gcc_usb3_mp_phy_pipe_1_clk.clkr, 7310 [GCC_USB3_MP_PHY_PIPE_1_CLK_SRC] = &gcc_usb3_mp_phy_pipe_1_clk_src.clkr, 7311 [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr, 7312 [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr, 7313 [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr, 7314 [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr, 7315 [GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr, 7316 [GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr, 7317 [GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr, 7318 [GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr, 7319 [GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr, 7320 [GCC_USB3_SEC_PHY_PIPE_CLK_SRC] = &gcc_usb3_sec_phy_pipe_clk_src.clkr, 7321 [GCC_USB4_1_CFG_AHB_CLK] = &gcc_usb4_1_cfg_ahb_clk.clkr, 7322 [GCC_USB4_1_DP_CLK] = &gcc_usb4_1_dp_clk.clkr, 7323 [GCC_USB4_1_MASTER_CLK] = &gcc_usb4_1_master_clk.clkr, 7324 [GCC_USB4_1_MASTER_CLK_SRC] = &gcc_usb4_1_master_clk_src.clkr, 7325 [GCC_USB4_1_PHY_DP_CLK_SRC] = &gcc_usb4_1_phy_dp_clk_src.clkr, 7326 [GCC_USB4_1_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_1_phy_p2rr2p_pipe_clk.clkr, 7327 [GCC_USB4_1_PHY_P2RR2P_PIPE_CLK_SRC] = &gcc_usb4_1_phy_p2rr2p_pipe_clk_src.clkr, 7328 [GCC_USB4_1_PHY_PCIE_PIPE_CLK] = &gcc_usb4_1_phy_pcie_pipe_clk.clkr, 7329 [GCC_USB4_1_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_1_phy_pcie_pipe_clk_src.clkr, 7330 [GCC_USB4_1_PHY_PCIE_PIPE_MUX_CLK_SRC] = &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr, 7331 [GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC] = &gcc_usb4_1_phy_pcie_pipegmux_clk_src.clkr, 7332 [GCC_USB4_1_PHY_RX0_CLK] = &gcc_usb4_1_phy_rx0_clk.clkr, 7333 [GCC_USB4_1_PHY_RX0_CLK_SRC] = &gcc_usb4_1_phy_rx0_clk_src.clkr, 7334 [GCC_USB4_1_PHY_RX1_CLK] = &gcc_usb4_1_phy_rx1_clk.clkr, 7335 [GCC_USB4_1_PHY_RX1_CLK_SRC] = &gcc_usb4_1_phy_rx1_clk_src.clkr, 7336 [GCC_USB4_1_PHY_SYS_CLK_SRC] = &gcc_usb4_1_phy_sys_clk_src.clkr, 7337 [GCC_USB4_1_PHY_USB_PIPE_CLK] = &gcc_usb4_1_phy_usb_pipe_clk.clkr, 7338 [GCC_USB4_1_SB_IF_CLK] = &gcc_usb4_1_sb_if_clk.clkr, 7339 [GCC_USB4_1_SB_IF_CLK_SRC] = &gcc_usb4_1_sb_if_clk_src.clkr, 7340 [GCC_USB4_1_SYS_CLK] = &gcc_usb4_1_sys_clk.clkr, 7341 [GCC_USB4_1_TMU_CLK] = &gcc_usb4_1_tmu_clk.clkr, 7342 [GCC_USB4_1_TMU_CLK_SRC] = &gcc_usb4_1_tmu_clk_src.clkr, 7343 [GCC_USB4_CFG_AHB_CLK] = &gcc_usb4_cfg_ahb_clk.clkr, 7344 [GCC_USB4_CLKREF_CLK] = &gcc_usb4_clkref_clk.clkr, 7345 [GCC_USB4_DP_CLK] = &gcc_usb4_dp_clk.clkr, 7346 [GCC_USB4_EUD_CLKREF_CLK] = &gcc_usb4_eud_clkref_clk.clkr, 7347 [GCC_USB4_MASTER_CLK] = &gcc_usb4_master_clk.clkr, 7348 [GCC_USB4_MASTER_CLK_SRC] = &gcc_usb4_master_clk_src.clkr, 7349 [GCC_USB4_PHY_DP_CLK_SRC] = &gcc_usb4_phy_dp_clk_src.clkr, 7350 [GCC_USB4_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_phy_p2rr2p_pipe_clk.clkr, 7351 [GCC_USB4_PHY_P2RR2P_PIPE_CLK_SRC] = &gcc_usb4_phy_p2rr2p_pipe_clk_src.clkr, 7352 [GCC_USB4_PHY_PCIE_PIPE_CLK] = &gcc_usb4_phy_pcie_pipe_clk.clkr, 7353 [GCC_USB4_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_phy_pcie_pipe_clk_src.clkr, 7354 [GCC_USB4_PHY_PCIE_PIPE_MUX_CLK_SRC] = &gcc_usb4_phy_pcie_pipe_mux_clk_src.clkr, 7355 [GCC_USB4_PHY_PCIE_PIPEGMUX_CLK_SRC] = &gcc_usb4_phy_pcie_pipegmux_clk_src.clkr, 7356 [GCC_USB4_PHY_RX0_CLK] = &gcc_usb4_phy_rx0_clk.clkr, 7357 [GCC_USB4_PHY_RX0_CLK_SRC] = &gcc_usb4_phy_rx0_clk_src.clkr, 7358 [GCC_USB4_PHY_RX1_CLK] = &gcc_usb4_phy_rx1_clk.clkr, 7359 [GCC_USB4_PHY_RX1_CLK_SRC] = &gcc_usb4_phy_rx1_clk_src.clkr, 7360 [GCC_USB4_PHY_SYS_CLK_SRC] = &gcc_usb4_phy_sys_clk_src.clkr, 7361 [GCC_USB4_PHY_USB_PIPE_CLK] = &gcc_usb4_phy_usb_pipe_clk.clkr, 7362 [GCC_USB4_SB_IF_CLK] = &gcc_usb4_sb_if_clk.clkr, 7363 [GCC_USB4_SB_IF_CLK_SRC] = &gcc_usb4_sb_if_clk_src.clkr, 7364 [GCC_USB4_SYS_CLK] = &gcc_usb4_sys_clk.clkr, 7365 [GCC_USB4_TMU_CLK] = &gcc_usb4_tmu_clk.clkr, 7366 [GCC_USB4_TMU_CLK_SRC] = &gcc_usb4_tmu_clk_src.clkr, 7367 [GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr, 7368 [GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr, 7369 [GCC_VIDEO_CVP_THROTTLE_CLK] = &gcc_video_cvp_throttle_clk.clkr, 7370 [GCC_VIDEO_VCODEC_THROTTLE_CLK] = &gcc_video_vcodec_throttle_clk.clkr, 7371 }; 7372 7373 static const struct qcom_reset_map gcc_sc8280xp_resets[] = { 7374 [GCC_EMAC0_BCR] = { 0xaa000 }, 7375 [GCC_EMAC1_BCR] = { 0xba000 }, 7376 [GCC_PCIE_0_LINK_DOWN_BCR] = { 0x6c014 }, 7377 [GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x6c020 }, 7378 [GCC_PCIE_0_PHY_BCR] = { 0x6c01c }, 7379 [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x6c028 }, 7380 [GCC_PCIE_0_TUNNEL_BCR] = { 0xa4000 }, 7381 [GCC_PCIE_1_LINK_DOWN_BCR] = { 0x8e014 }, 7382 [GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x8e020 }, 7383 [GCC_PCIE_1_PHY_BCR] = { 0x8e01c }, 7384 [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x8e000 }, 7385 [GCC_PCIE_1_TUNNEL_BCR] = { 0x8d000 }, 7386 [GCC_PCIE_2A_BCR] = { 0x9d000 }, 7387 [GCC_PCIE_2A_LINK_DOWN_BCR] = { 0x9d13c }, 7388 [GCC_PCIE_2A_NOCSR_COM_PHY_BCR] = { 0x9d148 }, 7389 [GCC_PCIE_2A_PHY_BCR] = { 0x9d144 }, 7390 [GCC_PCIE_2A_PHY_NOCSR_COM_PHY_BCR] = { 0x9d14c }, 7391 [GCC_PCIE_2B_BCR] = { 0x9e000 }, 7392 [GCC_PCIE_2B_LINK_DOWN_BCR] = { 0x9e084 }, 7393 [GCC_PCIE_2B_NOCSR_COM_PHY_BCR] = { 0x9e090 }, 7394 [GCC_PCIE_2B_PHY_BCR] = { 0x9e08c }, 7395 [GCC_PCIE_2B_PHY_NOCSR_COM_PHY_BCR] = { 0x9e094 }, 7396 [GCC_PCIE_3A_BCR] = { 0xa0000 }, 7397 [GCC_PCIE_3A_LINK_DOWN_BCR] = { 0xa00f0 }, 7398 [GCC_PCIE_3A_NOCSR_COM_PHY_BCR] = { 0xa00fc }, 7399 [GCC_PCIE_3A_PHY_BCR] = { 0xa00e0 }, 7400 [GCC_PCIE_3A_PHY_NOCSR_COM_PHY_BCR] = { 0xa00e4 }, 7401 [GCC_PCIE_3B_BCR] = { 0xa2000 }, 7402 [GCC_PCIE_3B_LINK_DOWN_BCR] = { 0xa20e0 }, 7403 [GCC_PCIE_3B_NOCSR_COM_PHY_BCR] = { 0xa20ec }, 7404 [GCC_PCIE_3B_PHY_BCR] = { 0xa20e8 }, 7405 [GCC_PCIE_3B_PHY_NOCSR_COM_PHY_BCR] = { 0xa20f0 }, 7406 [GCC_PCIE_4_BCR] = { 0x6b000 }, 7407 [GCC_PCIE_4_LINK_DOWN_BCR] = { 0x6b300 }, 7408 [GCC_PCIE_4_NOCSR_COM_PHY_BCR] = { 0x6b30c }, 7409 [GCC_PCIE_4_PHY_BCR] = { 0x6b308 }, 7410 [GCC_PCIE_4_PHY_NOCSR_COM_PHY_BCR] = { 0x6b310 }, 7411 [GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x6f00c }, 7412 [GCC_PCIE_PHY_COM_BCR] = { 0x6f010 }, 7413 [GCC_PCIE_RSCC_BCR] = { 0xae000 }, 7414 [GCC_QUSB2PHY_HS0_MP_BCR] = { 0x12008 }, 7415 [GCC_QUSB2PHY_HS1_MP_BCR] = { 0x1200c }, 7416 [GCC_QUSB2PHY_HS2_MP_BCR] = { 0x12010 }, 7417 [GCC_QUSB2PHY_HS3_MP_BCR] = { 0x12014 }, 7418 [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 }, 7419 [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 }, 7420 [GCC_SDCC2_BCR] = { 0x14000 }, 7421 [GCC_SDCC4_BCR] = { 0x16000 }, 7422 [GCC_UFS_CARD_BCR] = { 0x75000 }, 7423 [GCC_UFS_PHY_BCR] = { 0x77000 }, 7424 [GCC_USB2_PHY_PRIM_BCR] = { 0x50028 }, 7425 [GCC_USB2_PHY_SEC_BCR] = { 0x5002c }, 7426 [GCC_USB30_MP_BCR] = { 0xab000 }, 7427 [GCC_USB30_PRIM_BCR] = { 0xf000 }, 7428 [GCC_USB30_SEC_BCR] = { 0x10000 }, 7429 [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 }, 7430 [GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 }, 7431 [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 }, 7432 [GCC_USB3_PHY_SEC_BCR] = { 0x5000c }, 7433 [GCC_USB3_UNIPHY_MP0_BCR] = { 0x50018 }, 7434 [GCC_USB3_UNIPHY_MP1_BCR] = { 0x5001c }, 7435 [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 }, 7436 [GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 }, 7437 [GCC_USB3UNIPHY_PHY_MP0_BCR] = { 0x50020 }, 7438 [GCC_USB3UNIPHY_PHY_MP1_BCR] = { 0x50024 }, 7439 [GCC_USB4_1_BCR] = { 0xb8000 }, 7440 [GCC_USB4_1_DP_PHY_PRIM_BCR] = { 0xb9020 }, 7441 [GCC_USB4_1_DPPHY_AUX_BCR] = { 0xb9024 }, 7442 [GCC_USB4_1_PHY_PRIM_BCR] = { 0xb9018 }, 7443 [GCC_USB4_BCR] = { 0x2a000 }, 7444 [GCC_USB4_DP_PHY_PRIM_BCR] = { 0x4a008 }, 7445 [GCC_USB4_DPPHY_AUX_BCR] = { 0x4a00c }, 7446 [GCC_USB4_PHY_PRIM_BCR] = { 0x4a000 }, 7447 [GCC_USB4PHY_1_PHY_PRIM_BCR] = { 0xb901c }, 7448 [GCC_USB4PHY_PHY_PRIM_BCR] = { 0x4a004 }, 7449 [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 }, 7450 [GCC_VIDEO_BCR] = { 0x28000 }, 7451 [GCC_VIDEO_AXI0_CLK_ARES] = { 0x28010, 2 }, 7452 [GCC_VIDEO_AXI1_CLK_ARES] = { 0x28018, 2 }, 7453 }; 7454 7455 static struct gdsc *gcc_sc8280xp_gdscs[] = { 7456 [PCIE_0_TUNNEL_GDSC] = &pcie_0_tunnel_gdsc, 7457 [PCIE_1_TUNNEL_GDSC] = &pcie_1_tunnel_gdsc, 7458 [PCIE_2A_GDSC] = &pcie_2a_gdsc, 7459 [PCIE_2B_GDSC] = &pcie_2b_gdsc, 7460 [PCIE_3A_GDSC] = &pcie_3a_gdsc, 7461 [PCIE_3B_GDSC] = &pcie_3b_gdsc, 7462 [PCIE_4_GDSC] = &pcie_4_gdsc, 7463 [UFS_CARD_GDSC] = &ufs_card_gdsc, 7464 [UFS_PHY_GDSC] = &ufs_phy_gdsc, 7465 [USB30_MP_GDSC] = &usb30_mp_gdsc, 7466 [USB30_PRIM_GDSC] = &usb30_prim_gdsc, 7467 [USB30_SEC_GDSC] = &usb30_sec_gdsc, 7468 [EMAC_0_GDSC] = &emac_0_gdsc, 7469 [EMAC_1_GDSC] = &emac_1_gdsc, 7470 [USB4_1_GDSC] = &usb4_1_gdsc, 7471 [USB4_GDSC] = &usb4_gdsc, 7472 [HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc, 7473 [HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc, 7474 [HLOS1_VOTE_MMNOC_MMU_TBU_SF0_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc, 7475 [HLOS1_VOTE_MMNOC_MMU_TBU_SF1_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc, 7476 [HLOS1_VOTE_TURING_MMU_TBU0_GDSC] = &hlos1_vote_turing_mmu_tbu0_gdsc, 7477 [HLOS1_VOTE_TURING_MMU_TBU1_GDSC] = &hlos1_vote_turing_mmu_tbu1_gdsc, 7478 [HLOS1_VOTE_TURING_MMU_TBU2_GDSC] = &hlos1_vote_turing_mmu_tbu2_gdsc, 7479 [HLOS1_VOTE_TURING_MMU_TBU3_GDSC] = &hlos1_vote_turing_mmu_tbu3_gdsc, 7480 }; 7481 7482 static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = { 7483 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src), 7484 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src), 7485 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src), 7486 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src), 7487 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src), 7488 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src), 7489 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src), 7490 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src), 7491 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src), 7492 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src), 7493 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src), 7494 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src), 7495 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src), 7496 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src), 7497 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src), 7498 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src), 7499 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src), 7500 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src), 7501 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src), 7502 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src), 7503 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src), 7504 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src), 7505 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s6_clk_src), 7506 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s7_clk_src), 7507 }; 7508 7509 static const struct regmap_config gcc_sc8280xp_regmap_config = { 7510 .reg_bits = 32, 7511 .reg_stride = 4, 7512 .val_bits = 32, 7513 .max_register = 0xc3014, 7514 .fast_io = true, 7515 }; 7516 7517 static const struct qcom_cc_desc gcc_sc8280xp_desc = { 7518 .config = &gcc_sc8280xp_regmap_config, 7519 .clks = gcc_sc8280xp_clocks, 7520 .num_clks = ARRAY_SIZE(gcc_sc8280xp_clocks), 7521 .resets = gcc_sc8280xp_resets, 7522 .num_resets = ARRAY_SIZE(gcc_sc8280xp_resets), 7523 .gdscs = gcc_sc8280xp_gdscs, 7524 .num_gdscs = ARRAY_SIZE(gcc_sc8280xp_gdscs), 7525 }; 7526 7527 static int gcc_sc8280xp_probe(struct platform_device *pdev) 7528 { 7529 struct regmap *regmap; 7530 int ret; 7531 7532 ret = devm_pm_runtime_enable(&pdev->dev); 7533 if (ret) 7534 return ret; 7535 7536 ret = pm_runtime_resume_and_get(&pdev->dev); 7537 if (ret) 7538 return ret; 7539 7540 regmap = qcom_cc_map(pdev, &gcc_sc8280xp_desc); 7541 if (IS_ERR(regmap)) { 7542 ret = PTR_ERR(regmap); 7543 goto err_put_rpm; 7544 } 7545 7546 /* 7547 * Keep the clocks always-ON 7548 * GCC_CAMERA_AHB_CLK, GCC_CAMERA_XO_CLK, GCC_DISP_AHB_CLK, 7549 * GCC_DISP_XO_CLK, GCC_GPU_CFG_AHB_CLK, GCC_VIDEO_AHB_CLK, 7550 * GCC_VIDEO_XO_CLK, GCC_DISP1_AHB_CLK, GCC_DISP1_XO_CLK 7551 */ 7552 regmap_update_bits(regmap, 0x26004, BIT(0), BIT(0)); 7553 regmap_update_bits(regmap, 0x26020, BIT(0), BIT(0)); 7554 regmap_update_bits(regmap, 0x27004, BIT(0), BIT(0)); 7555 regmap_update_bits(regmap, 0x27028, BIT(0), BIT(0)); 7556 regmap_update_bits(regmap, 0x71004, BIT(0), BIT(0)); 7557 regmap_update_bits(regmap, 0x28004, BIT(0), BIT(0)); 7558 regmap_update_bits(regmap, 0x28028, BIT(0), BIT(0)); 7559 regmap_update_bits(regmap, 0xbb004, BIT(0), BIT(0)); 7560 regmap_update_bits(regmap, 0xbb028, BIT(0), BIT(0)); 7561 7562 ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks, ARRAY_SIZE(gcc_dfs_clocks)); 7563 if (ret) 7564 goto err_put_rpm; 7565 7566 ret = qcom_cc_really_probe(pdev, &gcc_sc8280xp_desc, regmap); 7567 if (ret) 7568 goto err_put_rpm; 7569 7570 pm_runtime_put(&pdev->dev); 7571 7572 return 0; 7573 7574 err_put_rpm: 7575 pm_runtime_put_sync(&pdev->dev); 7576 7577 return ret; 7578 } 7579 7580 static const struct of_device_id gcc_sc8280xp_match_table[] = { 7581 { .compatible = "qcom,gcc-sc8280xp" }, 7582 { } 7583 }; 7584 MODULE_DEVICE_TABLE(of, gcc_sc8280xp_match_table); 7585 7586 static struct platform_driver gcc_sc8280xp_driver = { 7587 .probe = gcc_sc8280xp_probe, 7588 .driver = { 7589 .name = "gcc-sc8280xp", 7590 .of_match_table = gcc_sc8280xp_match_table, 7591 }, 7592 }; 7593 7594 static int __init gcc_sc8280xp_init(void) 7595 { 7596 return platform_driver_register(&gcc_sc8280xp_driver); 7597 } 7598 subsys_initcall(gcc_sc8280xp_init); 7599 7600 static void __exit gcc_sc8280xp_exit(void) 7601 { 7602 platform_driver_unregister(&gcc_sc8280xp_driver); 7603 } 7604 module_exit(gcc_sc8280xp_exit); 7605 7606 MODULE_DESCRIPTION("Qualcomm SC8280XP GCC driver"); 7607 MODULE_LICENSE("GPL"); 7608