4717 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Copyright (c) 2021-2022, 2024, Qualcomm Innovation Center, Inc. All rights reserved.4 * Copyright (c) 2023, Linaro Limited5 */6 7#include <linux/clk-provider.h>8#include <linux/module.h>9#include <linux/mod_devicetable.h>10#include <linux/of.h>11#include <linux/platform_device.h>12#include <linux/regmap.h>13 14#include <dt-bindings/clock/qcom,sa8775p-gcc.h>15 16#include "clk-alpha-pll.h"17#include "clk-branch.h"18#include "clk-rcg.h"19#include "clk-regmap.h"20#include "clk-regmap-divider.h"21#include "clk-regmap-mux.h"22#include "clk-regmap-phy-mux.h"23#include "common.h"24#include "gdsc.h"25#include "reset.h"26 27/* Need to match the order of clocks in DT binding */28enum {29 DT_BI_TCXO,30 DT_SLEEP_CLK,31 DT_UFS_PHY_RX_SYMBOL_0_CLK,32 DT_UFS_PHY_RX_SYMBOL_1_CLK,33 DT_UFS_PHY_TX_SYMBOL_0_CLK,34 DT_UFS_CARD_RX_SYMBOL_0_CLK,35 DT_UFS_CARD_RX_SYMBOL_1_CLK,36 DT_UFS_CARD_TX_SYMBOL_0_CLK,37 DT_USB3_PHY_WRAPPER_GCC_USB30_PRIM_PIPE_CLK,38 DT_USB3_PHY_WRAPPER_GCC_USB30_SEC_PIPE_CLK,39 DT_PCIE_0_PIPE_CLK,40 DT_PCIE_1_PIPE_CLK,41 DT_PCIE_PHY_AUX_CLK,42 DT_RXC0_REF_CLK,43 DT_RXC1_REF_CLK,44};45 46enum {47 P_BI_TCXO,48 P_GCC_GPLL0_OUT_EVEN,49 P_GCC_GPLL0_OUT_MAIN,50 P_GCC_GPLL1_OUT_MAIN,51 P_GCC_GPLL4_OUT_MAIN,52 P_GCC_GPLL5_OUT_MAIN,53 P_GCC_GPLL7_OUT_MAIN,54 P_GCC_GPLL9_OUT_MAIN,55 P_PCIE_0_PIPE_CLK,56 P_PCIE_1_PIPE_CLK,57 P_PCIE_PHY_AUX_CLK,58 P_RXC0_REF_CLK,59 P_RXC1_REF_CLK,60 P_SLEEP_CLK,61 P_UFS_CARD_RX_SYMBOL_0_CLK,62 P_UFS_CARD_RX_SYMBOL_1_CLK,63 P_UFS_CARD_TX_SYMBOL_0_CLK,64 P_UFS_PHY_RX_SYMBOL_0_CLK,65 P_UFS_PHY_RX_SYMBOL_1_CLK,66 P_UFS_PHY_TX_SYMBOL_0_CLK,67 P_USB3_PHY_WRAPPER_GCC_USB30_PRIM_PIPE_CLK,68 P_USB3_PHY_WRAPPER_GCC_USB30_SEC_PIPE_CLK,69};70 71static const struct clk_parent_data gcc_parent_data_tcxo = { .index = DT_BI_TCXO };72 73static struct clk_alpha_pll gcc_gpll0 = {74 .offset = 0x0,75 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],76 .clkr = {77 .enable_reg = 0x4b028,78 .enable_mask = BIT(0),79 .hw.init = &(const struct clk_init_data){80 .name = "gcc_gpll0",81 .parent_data = &gcc_parent_data_tcxo,82 .num_parents = 1,83 .ops = &clk_alpha_pll_fixed_lucid_evo_ops,84 },85 },86};87 88static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = {89 { 0x1, 2 },90 { }91};92 93static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = {94 .offset = 0x0,95 .post_div_shift = 10,96 .post_div_table = post_div_table_gcc_gpll0_out_even,97 .num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even),98 .width = 4,99 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],100 .clkr.hw.init = &(const struct clk_init_data){101 .name = "gcc_gpll0_out_even",102 .parent_hws = (const struct clk_hw*[]){103 &gcc_gpll0.clkr.hw,104 },105 .num_parents = 1,106 .ops = &clk_alpha_pll_postdiv_lucid_evo_ops,107 },108};109 110static struct clk_alpha_pll gcc_gpll1 = {111 .offset = 0x1000,112 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],113 .clkr = {114 .enable_reg = 0x4b028,115 .enable_mask = BIT(1),116 .hw.init = &(const struct clk_init_data){117 .name = "gcc_gpll1",118 .parent_data = &gcc_parent_data_tcxo,119 .num_parents = 1,120 .ops = &clk_alpha_pll_fixed_lucid_evo_ops,121 },122 },123};124 125static struct clk_alpha_pll gcc_gpll4 = {126 .offset = 0x4000,127 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],128 .clkr = {129 .enable_reg = 0x4b028,130 .enable_mask = BIT(4),131 .hw.init = &(const struct clk_init_data){132 .name = "gcc_gpll4",133 .parent_data = &gcc_parent_data_tcxo,134 .num_parents = 1,135 .ops = &clk_alpha_pll_fixed_lucid_evo_ops,136 },137 },138};139 140static struct clk_alpha_pll gcc_gpll5 = {141 .offset = 0x5000,142 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],143 .clkr = {144 .enable_reg = 0x4b028,145 .enable_mask = BIT(5),146 .hw.init = &(const struct clk_init_data){147 .name = "gcc_gpll5",148 .parent_data = &gcc_parent_data_tcxo,149 .num_parents = 1,150 .ops = &clk_alpha_pll_fixed_lucid_evo_ops,151 },152 },153};154 155static struct clk_alpha_pll gcc_gpll7 = {156 .offset = 0x7000,157 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],158 .clkr = {159 .enable_reg = 0x4b028,160 .enable_mask = BIT(7),161 .hw.init = &(const struct clk_init_data){162 .name = "gcc_gpll7",163 .parent_data = &gcc_parent_data_tcxo,164 .num_parents = 1,165 .ops = &clk_alpha_pll_fixed_lucid_evo_ops,166 },167 },168};169 170static struct clk_alpha_pll gcc_gpll9 = {171 .offset = 0x9000,172 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],173 .clkr = {174 .enable_reg = 0x4b028,175 .enable_mask = BIT(9),176 .hw.init = &(const struct clk_init_data){177 .name = "gcc_gpll9",178 .parent_data = &gcc_parent_data_tcxo,179 .num_parents = 1,180 .ops = &clk_alpha_pll_fixed_lucid_evo_ops,181 },182 },183};184 185static const struct parent_map gcc_parent_map_0[] = {186 { P_BI_TCXO, 0 },187 { P_GCC_GPLL0_OUT_MAIN, 1 },188 { P_GCC_GPLL0_OUT_EVEN, 6 },189};190 191static const struct clk_parent_data gcc_parent_data_0[] = {192 { .index = DT_BI_TCXO },193 { .hw = &gcc_gpll0.clkr.hw },194 { .hw = &gcc_gpll0_out_even.clkr.hw },195};196 197static const struct parent_map gcc_parent_map_1[] = {198 { P_BI_TCXO, 0 },199 { P_GCC_GPLL0_OUT_MAIN, 1 },200 { P_GCC_GPLL4_OUT_MAIN, 5 },201 { P_GCC_GPLL0_OUT_EVEN, 6 },202};203 204static const struct clk_parent_data gcc_parent_data_1[] = {205 { .index = DT_BI_TCXO },206 { .hw = &gcc_gpll0.clkr.hw },207 { .hw = &gcc_gpll4.clkr.hw },208 { .hw = &gcc_gpll0_out_even.clkr.hw },209};210 211static const struct parent_map gcc_parent_map_2[] = {212 { P_BI_TCXO, 0 },213 { P_GCC_GPLL0_OUT_MAIN, 1 },214 { P_SLEEP_CLK, 5 },215 { P_GCC_GPLL0_OUT_EVEN, 6 },216};217 218static const struct clk_parent_data gcc_parent_data_2[] = {219 { .index = DT_BI_TCXO },220 { .hw = &gcc_gpll0.clkr.hw },221 { .index = DT_SLEEP_CLK },222 { .hw = &gcc_gpll0_out_even.clkr.hw },223};224 225static const struct parent_map gcc_parent_map_3[] = {226 { P_BI_TCXO, 0 },227 { P_SLEEP_CLK, 5 },228};229 230static const struct clk_parent_data gcc_parent_data_3[] = {231 { .index = DT_BI_TCXO },232 { .index = DT_SLEEP_CLK },233};234 235static const struct parent_map gcc_parent_map_4[] = {236 { P_BI_TCXO, 0 },237 { P_GCC_GPLL0_OUT_MAIN, 1 },238 { P_GCC_GPLL1_OUT_MAIN, 4 },239 { P_GCC_GPLL4_OUT_MAIN, 5 },240 { P_GCC_GPLL0_OUT_EVEN, 6 },241};242 243static const struct clk_parent_data gcc_parent_data_4[] = {244 { .index = DT_BI_TCXO },245 { .hw = &gcc_gpll0.clkr.hw },246 { .hw = &gcc_gpll1.clkr.hw },247 { .hw = &gcc_gpll4.clkr.hw },248 { .hw = &gcc_gpll0_out_even.clkr.hw },249};250 251static const struct parent_map gcc_parent_map_5[] = {252 { P_BI_TCXO, 0 },253};254 255static const struct clk_parent_data gcc_parent_data_5[] = {256 { .index = DT_BI_TCXO },257};258 259static const struct parent_map gcc_parent_map_6[] = {260 { P_BI_TCXO, 0 },261 { P_GCC_GPLL7_OUT_MAIN, 2 },262 { P_GCC_GPLL4_OUT_MAIN, 5 },263 { P_GCC_GPLL0_OUT_EVEN, 6 },264};265 266static const struct clk_parent_data gcc_parent_data_6[] = {267 { .index = DT_BI_TCXO },268 { .hw = &gcc_gpll7.clkr.hw },269 { .hw = &gcc_gpll4.clkr.hw },270 { .hw = &gcc_gpll0_out_even.clkr.hw },271};272 273static const struct parent_map gcc_parent_map_7[] = {274 { P_BI_TCXO, 0 },275 { P_GCC_GPLL7_OUT_MAIN, 2 },276 { P_RXC0_REF_CLK, 3 },277 { P_GCC_GPLL0_OUT_EVEN, 6 },278};279 280static const struct clk_parent_data gcc_parent_data_7[] = {281 { .index = DT_BI_TCXO },282 { .hw = &gcc_gpll7.clkr.hw },283 { .index = DT_RXC0_REF_CLK },284 { .hw = &gcc_gpll0_out_even.clkr.hw },285};286 287static const struct parent_map gcc_parent_map_8[] = {288 { P_BI_TCXO, 0 },289 { P_GCC_GPLL7_OUT_MAIN, 2 },290 { P_RXC1_REF_CLK, 3 },291 { P_GCC_GPLL0_OUT_EVEN, 6 },292};293 294static const struct clk_parent_data gcc_parent_data_8[] = {295 { .index = DT_BI_TCXO },296 { .hw = &gcc_gpll7.clkr.hw },297 { .index = DT_RXC1_REF_CLK },298 { .hw = &gcc_gpll0_out_even.clkr.hw },299};300 301static const struct parent_map gcc_parent_map_9[] = {302 { P_PCIE_PHY_AUX_CLK, 1 },303 { P_BI_TCXO, 2 },304};305 306static const struct clk_parent_data gcc_parent_data_9[] = {307 { .index = DT_PCIE_PHY_AUX_CLK },308 { .index = DT_BI_TCXO },309};310 311static const struct parent_map gcc_parent_map_11[] = {312 { P_PCIE_PHY_AUX_CLK, 1 },313 { P_BI_TCXO, 2 },314};315 316static const struct clk_parent_data gcc_parent_data_11[] = {317 { .index = DT_PCIE_PHY_AUX_CLK },318 { .index = DT_BI_TCXO },319};320 321static const struct parent_map gcc_parent_map_13[] = {322 { P_BI_TCXO, 0 },323 { P_GCC_GPLL0_OUT_MAIN, 1 },324 { P_GCC_GPLL9_OUT_MAIN, 2 },325 { P_GCC_GPLL4_OUT_MAIN, 5 },326 { P_GCC_GPLL0_OUT_EVEN, 6 },327};328 329static const struct clk_parent_data gcc_parent_data_13[] = {330 { .index = DT_BI_TCXO },331 { .hw = &gcc_gpll0.clkr.hw },332 { .hw = &gcc_gpll9.clkr.hw },333 { .hw = &gcc_gpll4.clkr.hw },334 { .hw = &gcc_gpll0_out_even.clkr.hw },335};336 337static const struct parent_map gcc_parent_map_14[] = {338 { P_BI_TCXO, 0 },339 { P_GCC_GPLL0_OUT_MAIN, 1 },340};341 342static const struct clk_parent_data gcc_parent_data_14[] = {343 { .index = DT_BI_TCXO },344 { .hw = &gcc_gpll0.clkr.hw },345};346 347static const struct parent_map gcc_parent_map_15[] = {348 { P_BI_TCXO, 0 },349 { P_GCC_GPLL7_OUT_MAIN, 2 },350 { P_GCC_GPLL5_OUT_MAIN, 3 },351 { P_GCC_GPLL4_OUT_MAIN, 5 },352 { P_GCC_GPLL0_OUT_EVEN, 6 },353};354 355static const struct clk_parent_data gcc_parent_data_15[] = {356 { .index = DT_BI_TCXO },357 { .hw = &gcc_gpll7.clkr.hw },358 { .hw = &gcc_gpll5.clkr.hw },359 { .hw = &gcc_gpll4.clkr.hw },360 { .hw = &gcc_gpll0_out_even.clkr.hw },361};362 363static const struct parent_map gcc_parent_map_16[] = {364 { P_UFS_CARD_RX_SYMBOL_0_CLK, 0 },365 { P_BI_TCXO, 2 },366};367 368static const struct clk_parent_data gcc_parent_data_16[] = {369 { .index = DT_UFS_CARD_RX_SYMBOL_0_CLK },370 { .index = DT_BI_TCXO },371};372 373static const struct parent_map gcc_parent_map_17[] = {374 { P_UFS_CARD_RX_SYMBOL_1_CLK, 0 },375 { P_BI_TCXO, 2 },376};377 378static const struct clk_parent_data gcc_parent_data_17[] = {379 { .index = DT_UFS_CARD_RX_SYMBOL_1_CLK },380 { .index = DT_BI_TCXO },381};382 383static const struct parent_map gcc_parent_map_18[] = {384 { P_UFS_CARD_TX_SYMBOL_0_CLK, 0 },385 { P_BI_TCXO, 2 },386};387 388static const struct clk_parent_data gcc_parent_data_18[] = {389 { .index = DT_UFS_CARD_TX_SYMBOL_0_CLK },390 { .index = DT_BI_TCXO },391};392 393static const struct parent_map gcc_parent_map_19[] = {394 { P_UFS_PHY_RX_SYMBOL_0_CLK, 0 },395 { P_BI_TCXO, 2 },396};397 398static const struct clk_parent_data gcc_parent_data_19[] = {399 { .index = DT_UFS_PHY_RX_SYMBOL_0_CLK },400 { .index = DT_BI_TCXO },401};402 403static const struct parent_map gcc_parent_map_20[] = {404 { P_UFS_PHY_RX_SYMBOL_1_CLK, 0 },405 { P_BI_TCXO, 2 },406};407 408static const struct clk_parent_data gcc_parent_data_20[] = {409 { .index = DT_UFS_PHY_RX_SYMBOL_1_CLK },410 { .index = DT_BI_TCXO },411};412 413static const struct parent_map gcc_parent_map_21[] = {414 { P_UFS_PHY_TX_SYMBOL_0_CLK, 0 },415 { P_BI_TCXO, 2 },416};417 418static const struct clk_parent_data gcc_parent_data_21[] = {419 { .index = DT_UFS_PHY_TX_SYMBOL_0_CLK },420 { .index = DT_BI_TCXO },421};422 423static const struct parent_map gcc_parent_map_22[] = {424 { P_USB3_PHY_WRAPPER_GCC_USB30_PRIM_PIPE_CLK, 0 },425 { P_BI_TCXO, 2 },426};427 428static const struct clk_parent_data gcc_parent_data_22[] = {429 { .index = DT_USB3_PHY_WRAPPER_GCC_USB30_PRIM_PIPE_CLK },430 { .index = DT_BI_TCXO },431};432 433static const struct parent_map gcc_parent_map_23[] = {434 { P_USB3_PHY_WRAPPER_GCC_USB30_SEC_PIPE_CLK, 0 },435 { P_BI_TCXO, 2 },436};437 438static const struct clk_parent_data gcc_parent_data_23[] = {439 { .index = DT_USB3_PHY_WRAPPER_GCC_USB30_SEC_PIPE_CLK },440 { .index = DT_BI_TCXO },441};442 443static struct clk_regmap_mux gcc_pcie_0_phy_aux_clk_src = {444 .reg = 0xa9074,445 .shift = 0,446 .width = 2,447 .parent_map = gcc_parent_map_9,448 .clkr = {449 .hw.init = &(const struct clk_init_data){450 .name = "gcc_pcie_0_phy_aux_clk_src",451 .parent_data = gcc_parent_data_9,452 .num_parents = ARRAY_SIZE(gcc_parent_data_9),453 .ops = &clk_regmap_mux_closest_ops,454 },455 },456};457 458static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src = {459 .reg = 0xa906c,460 .clkr = {461 .hw.init = &(const struct clk_init_data){462 .name = "gcc_pcie_0_pipe_clk_src",463 .parent_data = &(const struct clk_parent_data){464 .index = DT_PCIE_0_PIPE_CLK,465 },466 .num_parents = 1,467 .ops = &clk_regmap_phy_mux_ops,468 },469 },470};471 472static struct clk_regmap_mux gcc_pcie_1_phy_aux_clk_src = {473 .reg = 0x77074,474 .shift = 0,475 .width = 2,476 .parent_map = gcc_parent_map_11,477 .clkr = {478 .hw.init = &(const struct clk_init_data){479 .name = "gcc_pcie_1_phy_aux_clk_src",480 .parent_data = gcc_parent_data_11,481 .num_parents = ARRAY_SIZE(gcc_parent_data_11),482 .ops = &clk_regmap_mux_closest_ops,483 },484 },485};486 487static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = {488 .reg = 0x7706c,489 .clkr = {490 .hw.init = &(const struct clk_init_data){491 .name = "gcc_pcie_1_pipe_clk_src",492 .parent_data = &(const struct clk_parent_data) {493 .index = DT_PCIE_1_PIPE_CLK,494 },495 .num_parents = 1,496 .ops = &clk_regmap_phy_mux_ops,497 },498 },499};500 501static struct clk_regmap_mux gcc_ufs_card_rx_symbol_0_clk_src = {502 .reg = 0x81060,503 .shift = 0,504 .width = 2,505 .parent_map = gcc_parent_map_16,506 .clkr = {507 .hw.init = &(const struct clk_init_data){508 .name = "gcc_ufs_card_rx_symbol_0_clk_src",509 .parent_data = gcc_parent_data_16,510 .num_parents = ARRAY_SIZE(gcc_parent_data_16),511 .ops = &clk_regmap_mux_closest_ops,512 },513 },514};515 516static struct clk_regmap_mux gcc_ufs_card_rx_symbol_1_clk_src = {517 .reg = 0x810d0,518 .shift = 0,519 .width = 2,520 .parent_map = gcc_parent_map_17,521 .clkr = {522 .hw.init = &(const struct clk_init_data){523 .name = "gcc_ufs_card_rx_symbol_1_clk_src",524 .parent_data = gcc_parent_data_17,525 .num_parents = ARRAY_SIZE(gcc_parent_data_17),526 .ops = &clk_regmap_mux_closest_ops,527 },528 },529};530 531static struct clk_regmap_mux gcc_ufs_card_tx_symbol_0_clk_src = {532 .reg = 0x81050,533 .shift = 0,534 .width = 2,535 .parent_map = gcc_parent_map_18,536 .clkr = {537 .hw.init = &(const struct clk_init_data){538 .name = "gcc_ufs_card_tx_symbol_0_clk_src",539 .parent_data = gcc_parent_data_18,540 .num_parents = ARRAY_SIZE(gcc_parent_data_18),541 .ops = &clk_regmap_mux_closest_ops,542 },543 },544};545 546static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src = {547 .reg = 0x83060,548 .shift = 0,549 .width = 2,550 .parent_map = gcc_parent_map_19,551 .clkr = {552 .hw.init = &(const struct clk_init_data){553 .name = "gcc_ufs_phy_rx_symbol_0_clk_src",554 .parent_data = gcc_parent_data_19,555 .num_parents = ARRAY_SIZE(gcc_parent_data_19),556 .ops = &clk_regmap_mux_closest_ops,557 },558 },559};560 561static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src = {562 .reg = 0x830d0,563 .shift = 0,564 .width = 2,565 .parent_map = gcc_parent_map_20,566 .clkr = {567 .hw.init = &(const struct clk_init_data){568 .name = "gcc_ufs_phy_rx_symbol_1_clk_src",569 .parent_data = gcc_parent_data_20,570 .num_parents = ARRAY_SIZE(gcc_parent_data_20),571 .ops = &clk_regmap_mux_closest_ops,572 },573 },574};575 576static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src = {577 .reg = 0x83050,578 .shift = 0,579 .width = 2,580 .parent_map = gcc_parent_map_21,581 .clkr = {582 .hw.init = &(const struct clk_init_data){583 .name = "gcc_ufs_phy_tx_symbol_0_clk_src",584 .parent_data = gcc_parent_data_21,585 .num_parents = ARRAY_SIZE(gcc_parent_data_21),586 .ops = &clk_regmap_mux_closest_ops,587 },588 },589};590 591static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = {592 .reg = 0x1b068,593 .shift = 0,594 .width = 2,595 .parent_map = gcc_parent_map_22,596 .clkr = {597 .hw.init = &(const struct clk_init_data){598 .name = "gcc_usb3_prim_phy_pipe_clk_src",599 .parent_data = gcc_parent_data_22,600 .num_parents = ARRAY_SIZE(gcc_parent_data_22),601 .ops = &clk_regmap_mux_closest_ops,602 },603 },604};605 606static struct clk_regmap_mux gcc_usb3_sec_phy_pipe_clk_src = {607 .reg = 0x2f068,608 .shift = 0,609 .width = 2,610 .parent_map = gcc_parent_map_23,611 .clkr = {612 .hw.init = &(const struct clk_init_data){613 .name = "gcc_usb3_sec_phy_pipe_clk_src",614 .parent_data = gcc_parent_data_23,615 .num_parents = ARRAY_SIZE(gcc_parent_data_23),616 .ops = &clk_regmap_mux_closest_ops,617 },618 },619};620 621static const struct freq_tbl ftbl_gcc_emac0_phy_aux_clk_src[] = {622 F(19200000, P_BI_TCXO, 1, 0, 0),623 { }624};625 626static struct clk_rcg2 gcc_emac0_phy_aux_clk_src = {627 .cmd_rcgr = 0xb6028,628 .mnd_width = 0,629 .hid_width = 5,630 .parent_map = gcc_parent_map_3,631 .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,632 .clkr.hw.init = &(const struct clk_init_data){633 .name = "gcc_emac0_phy_aux_clk_src",634 .parent_data = gcc_parent_data_3,635 .num_parents = ARRAY_SIZE(gcc_parent_data_3),636 .ops = &clk_rcg2_shared_ops,637 },638};639 640static const struct freq_tbl ftbl_gcc_emac0_ptp_clk_src[] = {641 F(125000000, P_GCC_GPLL7_OUT_MAIN, 8, 0, 0),642 F(230400000, P_GCC_GPLL4_OUT_MAIN, 3.5, 0, 0),643 { }644};645 646static struct clk_rcg2 gcc_emac0_ptp_clk_src = {647 .cmd_rcgr = 0xb6060,648 .mnd_width = 16,649 .hid_width = 5,650 .parent_map = gcc_parent_map_6,651 .freq_tbl = ftbl_gcc_emac0_ptp_clk_src,652 .clkr.hw.init = &(const struct clk_init_data){653 .name = "gcc_emac0_ptp_clk_src",654 .parent_data = gcc_parent_data_6,655 .num_parents = ARRAY_SIZE(gcc_parent_data_6),656 .ops = &clk_rcg2_shared_ops,657 },658};659 660static const struct freq_tbl ftbl_gcc_emac0_rgmii_clk_src[] = {661 F(125000000, P_GCC_GPLL7_OUT_MAIN, 8, 0, 0),662 F(250000000, P_GCC_GPLL7_OUT_MAIN, 4, 0, 0),663 { }664};665 666static struct clk_rcg2 gcc_emac0_rgmii_clk_src = {667 .cmd_rcgr = 0xb6048,668 .mnd_width = 16,669 .hid_width = 5,670 .parent_map = gcc_parent_map_7,671 .freq_tbl = ftbl_gcc_emac0_rgmii_clk_src,672 .clkr.hw.init = &(const struct clk_init_data){673 .name = "gcc_emac0_rgmii_clk_src",674 .parent_data = gcc_parent_data_7,675 .num_parents = ARRAY_SIZE(gcc_parent_data_7),676 .ops = &clk_rcg2_shared_ops,677 },678};679 680static struct clk_rcg2 gcc_emac1_phy_aux_clk_src = {681 .cmd_rcgr = 0xb4028,682 .mnd_width = 0,683 .hid_width = 5,684 .parent_map = gcc_parent_map_3,685 .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,686 .clkr.hw.init = &(const struct clk_init_data){687 .name = "gcc_emac1_phy_aux_clk_src",688 .parent_data = gcc_parent_data_3,689 .num_parents = ARRAY_SIZE(gcc_parent_data_3),690 .ops = &clk_rcg2_shared_ops,691 },692};693 694static struct clk_rcg2 gcc_emac1_ptp_clk_src = {695 .cmd_rcgr = 0xb4060,696 .mnd_width = 16,697 .hid_width = 5,698 .parent_map = gcc_parent_map_6,699 .freq_tbl = ftbl_gcc_emac0_ptp_clk_src,700 .clkr.hw.init = &(const struct clk_init_data){701 .name = "gcc_emac1_ptp_clk_src",702 .parent_data = gcc_parent_data_6,703 .num_parents = ARRAY_SIZE(gcc_parent_data_6),704 .ops = &clk_rcg2_shared_ops,705 },706};707 708static struct clk_rcg2 gcc_emac1_rgmii_clk_src = {709 .cmd_rcgr = 0xb4048,710 .mnd_width = 16,711 .hid_width = 5,712 .parent_map = gcc_parent_map_8,713 .freq_tbl = ftbl_gcc_emac0_rgmii_clk_src,714 .clkr.hw.init = &(const struct clk_init_data){715 .name = "gcc_emac1_rgmii_clk_src",716 .parent_data = gcc_parent_data_8,717 .num_parents = ARRAY_SIZE(gcc_parent_data_8),718 .ops = &clk_rcg2_shared_ops,719 },720};721 722static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {723 F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),724 F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),725 { }726};727 728static struct clk_rcg2 gcc_gp1_clk_src = {729 .cmd_rcgr = 0x70004,730 .mnd_width = 16,731 .hid_width = 5,732 .parent_map = gcc_parent_map_2,733 .freq_tbl = ftbl_gcc_gp1_clk_src,734 .clkr.hw.init = &(const struct clk_init_data){735 .name = "gcc_gp1_clk_src",736 .parent_data = gcc_parent_data_2,737 .num_parents = ARRAY_SIZE(gcc_parent_data_2),738 .ops = &clk_rcg2_shared_ops,739 },740};741 742static struct clk_rcg2 gcc_gp2_clk_src = {743 .cmd_rcgr = 0x71004,744 .mnd_width = 16,745 .hid_width = 5,746 .parent_map = gcc_parent_map_2,747 .freq_tbl = ftbl_gcc_gp1_clk_src,748 .clkr.hw.init = &(const struct clk_init_data){749 .name = "gcc_gp2_clk_src",750 .parent_data = gcc_parent_data_2,751 .num_parents = ARRAY_SIZE(gcc_parent_data_2),752 .ops = &clk_rcg2_shared_ops,753 },754};755 756static struct clk_rcg2 gcc_gp3_clk_src = {757 .cmd_rcgr = 0x62004,758 .mnd_width = 16,759 .hid_width = 5,760 .parent_map = gcc_parent_map_2,761 .freq_tbl = ftbl_gcc_gp1_clk_src,762 .clkr.hw.init = &(const struct clk_init_data){763 .name = "gcc_gp3_clk_src",764 .parent_data = gcc_parent_data_2,765 .num_parents = ARRAY_SIZE(gcc_parent_data_2),766 .ops = &clk_rcg2_shared_ops,767 },768};769 770static struct clk_rcg2 gcc_gp4_clk_src = {771 .cmd_rcgr = 0x1e004,772 .mnd_width = 16,773 .hid_width = 5,774 .parent_map = gcc_parent_map_2,775 .freq_tbl = ftbl_gcc_gp1_clk_src,776 .clkr.hw.init = &(const struct clk_init_data){777 .name = "gcc_gp4_clk_src",778 .parent_data = gcc_parent_data_2,779 .num_parents = ARRAY_SIZE(gcc_parent_data_2),780 .ops = &clk_rcg2_shared_ops,781 },782};783 784static struct clk_rcg2 gcc_gp5_clk_src = {785 .cmd_rcgr = 0x1f004,786 .mnd_width = 16,787 .hid_width = 5,788 .parent_map = gcc_parent_map_2,789 .freq_tbl = ftbl_gcc_gp1_clk_src,790 .clkr.hw.init = &(const struct clk_init_data){791 .name = "gcc_gp5_clk_src",792 .parent_data = gcc_parent_data_2,793 .num_parents = ARRAY_SIZE(gcc_parent_data_2),794 .ops = &clk_rcg2_shared_ops,795 },796};797 798static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {799 .cmd_rcgr = 0xa9078,800 .mnd_width = 16,801 .hid_width = 5,802 .parent_map = gcc_parent_map_3,803 .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,804 .clkr.hw.init = &(const struct clk_init_data){805 .name = "gcc_pcie_0_aux_clk_src",806 .parent_data = gcc_parent_data_3,807 .num_parents = ARRAY_SIZE(gcc_parent_data_3),808 .ops = &clk_rcg2_shared_ops,809 },810};811 812static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = {813 F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),814 { }815};816 817static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = {818 .cmd_rcgr = 0xa9054,819 .mnd_width = 0,820 .hid_width = 5,821 .parent_map = gcc_parent_map_0,822 .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,823 .clkr.hw.init = &(const struct clk_init_data){824 .name = "gcc_pcie_0_phy_rchng_clk_src",825 .parent_data = gcc_parent_data_0,826 .num_parents = ARRAY_SIZE(gcc_parent_data_0),827 .ops = &clk_rcg2_shared_ops,828 },829};830 831static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {832 .cmd_rcgr = 0x77078,833 .mnd_width = 16,834 .hid_width = 5,835 .parent_map = gcc_parent_map_3,836 .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,837 .clkr.hw.init = &(const struct clk_init_data){838 .name = "gcc_pcie_1_aux_clk_src",839 .parent_data = gcc_parent_data_3,840 .num_parents = ARRAY_SIZE(gcc_parent_data_3),841 .ops = &clk_rcg2_shared_ops,842 },843};844 845static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = {846 .cmd_rcgr = 0x77054,847 .mnd_width = 0,848 .hid_width = 5,849 .parent_map = gcc_parent_map_0,850 .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,851 .clkr.hw.init = &(const struct clk_init_data){852 .name = "gcc_pcie_1_phy_rchng_clk_src",853 .parent_data = gcc_parent_data_0,854 .num_parents = ARRAY_SIZE(gcc_parent_data_0),855 .ops = &clk_rcg2_shared_ops,856 },857};858 859static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {860 F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0),861 { }862};863 864static struct clk_rcg2 gcc_pdm2_clk_src = {865 .cmd_rcgr = 0x3f010,866 .mnd_width = 0,867 .hid_width = 5,868 .parent_map = gcc_parent_map_0,869 .freq_tbl = ftbl_gcc_pdm2_clk_src,870 .clkr.hw.init = &(const struct clk_init_data){871 .name = "gcc_pdm2_clk_src",872 .parent_data = gcc_parent_data_0,873 .num_parents = ARRAY_SIZE(gcc_parent_data_0),874 .ops = &clk_rcg2_shared_ops,875 },876};877 878static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {879 F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),880 F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),881 F(19200000, P_BI_TCXO, 1, 0, 0),882 F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),883 F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),884 F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),885 F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),886 F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),887 F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),888 F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),889 { }890};891 892static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {893 .name = "gcc_qupv3_wrap0_s0_clk_src",894 .parent_data = gcc_parent_data_0,895 .num_parents = ARRAY_SIZE(gcc_parent_data_0),896 .ops = &clk_rcg2_shared_ops,897};898 899static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {900 .cmd_rcgr = 0x23154,901 .mnd_width = 16,902 .hid_width = 5,903 .parent_map = gcc_parent_map_0,904 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,905 .clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,906};907 908static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {909 .name = "gcc_qupv3_wrap0_s1_clk_src",910 .parent_data = gcc_parent_data_0,911 .num_parents = ARRAY_SIZE(gcc_parent_data_0),912 .ops = &clk_rcg2_shared_ops,913};914 915static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {916 .cmd_rcgr = 0x23288,917 .mnd_width = 16,918 .hid_width = 5,919 .parent_map = gcc_parent_map_0,920 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,921 .clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,922};923 924static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s2_clk_src[] = {925 F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),926 F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),927 F(19200000, P_BI_TCXO, 1, 0, 0),928 F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),929 F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),930 F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),931 F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),932 F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),933 F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),934 F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),935 { }936};937 938static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {939 .name = "gcc_qupv3_wrap0_s2_clk_src",940 .parent_data = gcc_parent_data_0,941 .num_parents = ARRAY_SIZE(gcc_parent_data_0),942 .ops = &clk_rcg2_shared_ops,943};944 945static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {946 .cmd_rcgr = 0x233bc,947 .mnd_width = 16,948 .hid_width = 5,949 .parent_map = gcc_parent_map_0,950 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,951 .clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,952};953 954static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {955 .name = "gcc_qupv3_wrap0_s3_clk_src",956 .parent_data = gcc_parent_data_0,957 .num_parents = ARRAY_SIZE(gcc_parent_data_0),958 .ops = &clk_rcg2_shared_ops,959};960 961static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {962 .cmd_rcgr = 0x234f0,963 .mnd_width = 16,964 .hid_width = 5,965 .parent_map = gcc_parent_map_0,966 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,967 .clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,968};969 970static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {971 .name = "gcc_qupv3_wrap0_s4_clk_src",972 .parent_data = gcc_parent_data_1,973 .num_parents = ARRAY_SIZE(gcc_parent_data_1),974 .ops = &clk_rcg2_shared_ops,975};976 977static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {978 .cmd_rcgr = 0x23624,979 .mnd_width = 16,980 .hid_width = 5,981 .parent_map = gcc_parent_map_1,982 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,983 .clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,984};985 986static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {987 .name = "gcc_qupv3_wrap0_s5_clk_src",988 .parent_data = gcc_parent_data_0,989 .num_parents = ARRAY_SIZE(gcc_parent_data_0),990 .ops = &clk_rcg2_shared_ops,991};992 993static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {994 .cmd_rcgr = 0x23758,995 .mnd_width = 16,996 .hid_width = 5,997 .parent_map = gcc_parent_map_0,998 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,999 .clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,1000};1001 1002static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = {1003 .name = "gcc_qupv3_wrap0_s6_clk_src",1004 .parent_data = gcc_parent_data_0,1005 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1006 .ops = &clk_rcg2_shared_ops,1007};1008 1009static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {1010 .cmd_rcgr = 0x2388c,1011 .mnd_width = 16,1012 .hid_width = 5,1013 .parent_map = gcc_parent_map_0,1014 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,1015 .clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init,1016};1017 1018static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {1019 .name = "gcc_qupv3_wrap1_s0_clk_src",1020 .parent_data = gcc_parent_data_0,1021 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1022 .ops = &clk_rcg2_shared_ops,1023};1024 1025static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {1026 .cmd_rcgr = 0x24154,1027 .mnd_width = 16,1028 .hid_width = 5,1029 .parent_map = gcc_parent_map_0,1030 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1031 .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,1032};1033 1034static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {1035 .name = "gcc_qupv3_wrap1_s1_clk_src",1036 .parent_data = gcc_parent_data_0,1037 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1038 .ops = &clk_rcg2_shared_ops,1039};1040 1041static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {1042 .cmd_rcgr = 0x24288,1043 .mnd_width = 16,1044 .hid_width = 5,1045 .parent_map = gcc_parent_map_0,1046 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1047 .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,1048};1049 1050static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {1051 .name = "gcc_qupv3_wrap1_s2_clk_src",1052 .parent_data = gcc_parent_data_0,1053 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1054 .ops = &clk_rcg2_shared_ops,1055};1056 1057static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {1058 .cmd_rcgr = 0x243bc,1059 .mnd_width = 16,1060 .hid_width = 5,1061 .parent_map = gcc_parent_map_0,1062 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,1063 .clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,1064};1065 1066static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {1067 .name = "gcc_qupv3_wrap1_s3_clk_src",1068 .parent_data = gcc_parent_data_0,1069 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1070 .ops = &clk_rcg2_shared_ops,1071};1072 1073static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {1074 .cmd_rcgr = 0x244f0,1075 .mnd_width = 16,1076 .hid_width = 5,1077 .parent_map = gcc_parent_map_0,1078 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,1079 .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,1080};1081 1082static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {1083 .name = "gcc_qupv3_wrap1_s4_clk_src",1084 .parent_data = gcc_parent_data_1,1085 .num_parents = ARRAY_SIZE(gcc_parent_data_1),1086 .ops = &clk_rcg2_shared_ops,1087};1088 1089static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {1090 .cmd_rcgr = 0x24624,1091 .mnd_width = 16,1092 .hid_width = 5,1093 .parent_map = gcc_parent_map_1,1094 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,1095 .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,1096};1097 1098static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {1099 .name = "gcc_qupv3_wrap1_s5_clk_src",1100 .parent_data = gcc_parent_data_0,1101 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1102 .ops = &clk_rcg2_shared_ops,1103};1104 1105static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {1106 .cmd_rcgr = 0x24758,1107 .mnd_width = 16,1108 .hid_width = 5,1109 .parent_map = gcc_parent_map_0,1110 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,1111 .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,1112};1113 1114static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {1115 .name = "gcc_qupv3_wrap1_s6_clk_src",1116 .parent_data = gcc_parent_data_0,1117 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1118 .ops = &clk_rcg2_shared_ops,1119};1120 1121static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {1122 .cmd_rcgr = 0x2488c,1123 .mnd_width = 16,1124 .hid_width = 5,1125 .parent_map = gcc_parent_map_0,1126 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,1127 .clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,1128};1129 1130static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = {1131 .name = "gcc_qupv3_wrap2_s0_clk_src",1132 .parent_data = gcc_parent_data_1,1133 .num_parents = ARRAY_SIZE(gcc_parent_data_1),1134 .ops = &clk_rcg2_shared_ops,1135};1136 1137static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {1138 .cmd_rcgr = 0x2a154,1139 .mnd_width = 16,1140 .hid_width = 5,1141 .parent_map = gcc_parent_map_1,1142 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1143 .clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init,1144};1145 1146static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = {1147 .name = "gcc_qupv3_wrap2_s1_clk_src",1148 .parent_data = gcc_parent_data_1,1149 .num_parents = ARRAY_SIZE(gcc_parent_data_1),1150 .ops = &clk_rcg2_shared_ops,1151};1152 1153static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {1154 .cmd_rcgr = 0x2a288,1155 .mnd_width = 16,1156 .hid_width = 5,1157 .parent_map = gcc_parent_map_1,1158 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,1159 .clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init,1160};1161 1162static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = {1163 .name = "gcc_qupv3_wrap2_s2_clk_src",1164 .parent_data = gcc_parent_data_1,1165 .num_parents = ARRAY_SIZE(gcc_parent_data_1),1166 .ops = &clk_rcg2_shared_ops,1167};1168 1169static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {1170 .cmd_rcgr = 0x2a3bc,1171 .mnd_width = 16,1172 .hid_width = 5,1173 .parent_map = gcc_parent_map_1,1174 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,1175 .clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init,1176};1177 1178static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = {1179 .name = "gcc_qupv3_wrap2_s3_clk_src",1180 .parent_data = gcc_parent_data_1,1181 .num_parents = ARRAY_SIZE(gcc_parent_data_1),1182 .ops = &clk_rcg2_shared_ops,1183};1184 1185static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {1186 .cmd_rcgr = 0x2a4f0,1187 .mnd_width = 16,1188 .hid_width = 5,1189 .parent_map = gcc_parent_map_1,1190 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,1191 .clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init,1192};1193 1194static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = {1195 .name = "gcc_qupv3_wrap2_s4_clk_src",1196 .parent_data = gcc_parent_data_1,1197 .num_parents = ARRAY_SIZE(gcc_parent_data_1),1198 .ops = &clk_rcg2_shared_ops,1199};1200 1201static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {1202 .cmd_rcgr = 0x2a624,1203 .mnd_width = 16,1204 .hid_width = 5,1205 .parent_map = gcc_parent_map_1,1206 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,1207 .clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init,1208};1209 1210static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = {1211 .name = "gcc_qupv3_wrap2_s5_clk_src",1212 .parent_data = gcc_parent_data_1,1213 .num_parents = ARRAY_SIZE(gcc_parent_data_1),1214 .ops = &clk_rcg2_shared_ops,1215};1216 1217static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {1218 .cmd_rcgr = 0x2a758,1219 .mnd_width = 16,1220 .hid_width = 5,1221 .parent_map = gcc_parent_map_1,1222 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,1223 .clkr.hw.init = &gcc_qupv3_wrap2_s5_clk_src_init,1224};1225 1226static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init = {1227 .name = "gcc_qupv3_wrap2_s6_clk_src",1228 .parent_data = gcc_parent_data_1,1229 .num_parents = ARRAY_SIZE(gcc_parent_data_1),1230 .ops = &clk_rcg2_shared_ops,1231};1232 1233static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src = {1234 .cmd_rcgr = 0x2a88c,1235 .mnd_width = 16,1236 .hid_width = 5,1237 .parent_map = gcc_parent_map_1,1238 .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,1239 .clkr.hw.init = &gcc_qupv3_wrap2_s6_clk_src_init,1240};1241 1242static const struct freq_tbl ftbl_gcc_qupv3_wrap3_s0_clk_src[] = {1243 F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),1244 F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),1245 F(19200000, P_BI_TCXO, 1, 0, 0),1246 F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),1247 F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),1248 F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),1249 F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),1250 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),1251 F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),1252 F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),1253 F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),1254 F(403200000, P_GCC_GPLL4_OUT_MAIN, 2, 0, 0),1255 { }1256};1257 1258static struct clk_init_data gcc_qupv3_wrap3_s0_clk_src_init = {1259 .name = "gcc_qupv3_wrap3_s0_clk_src",1260 .parent_data = gcc_parent_data_4,1261 .num_parents = ARRAY_SIZE(gcc_parent_data_4),1262 .ops = &clk_rcg2_shared_ops,1263};1264 1265static struct clk_rcg2 gcc_qupv3_wrap3_s0_clk_src = {1266 .cmd_rcgr = 0xc4154,1267 .mnd_width = 16,1268 .hid_width = 5,1269 .parent_map = gcc_parent_map_4,1270 .freq_tbl = ftbl_gcc_qupv3_wrap3_s0_clk_src,1271 .clkr.hw.init = &gcc_qupv3_wrap3_s0_clk_src_init,1272};1273 1274static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {1275 F(144000, P_BI_TCXO, 16, 3, 25),1276 F(400000, P_BI_TCXO, 12, 1, 4),1277 F(19200000, P_BI_TCXO, 1, 0, 0),1278 F(20000000, P_GCC_GPLL0_OUT_EVEN, 5, 1, 3),1279 F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),1280 F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),1281 F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),1282 F(192000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0),1283 F(384000000, P_GCC_GPLL9_OUT_MAIN, 2, 0, 0),1284 { }1285};1286 1287static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {1288 .cmd_rcgr = 0x20014,1289 .mnd_width = 8,1290 .hid_width = 5,1291 .parent_map = gcc_parent_map_13,1292 .freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,1293 .clkr.hw.init = &(const struct clk_init_data){1294 .name = "gcc_sdcc1_apps_clk_src",1295 .parent_data = gcc_parent_data_13,1296 .num_parents = ARRAY_SIZE(gcc_parent_data_13),1297 .ops = &clk_rcg2_floor_ops,1298 },1299};1300 1301static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = {1302 F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),1303 F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),1304 { }1305};1306 1307static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = {1308 .cmd_rcgr = 0x2002c,1309 .mnd_width = 0,1310 .hid_width = 5,1311 .parent_map = gcc_parent_map_14,1312 .freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src,1313 .clkr.hw.init = &(const struct clk_init_data){1314 .name = "gcc_sdcc1_ice_core_clk_src",1315 .parent_data = gcc_parent_data_14,1316 .num_parents = ARRAY_SIZE(gcc_parent_data_14),1317 .ops = &clk_rcg2_floor_ops,1318 },1319};1320 1321static const struct freq_tbl ftbl_gcc_tscss_cntr_clk_src[] = {1322 F(15625000, P_GCC_GPLL7_OUT_MAIN, 16, 1, 4),1323 { }1324};1325 1326static struct clk_rcg2 gcc_tscss_cntr_clk_src = {1327 .cmd_rcgr = 0x21008,1328 .mnd_width = 16,1329 .hid_width = 5,1330 .parent_map = gcc_parent_map_15,1331 .freq_tbl = ftbl_gcc_tscss_cntr_clk_src,1332 .clkr.hw.init = &(const struct clk_init_data){1333 .name = "gcc_tscss_cntr_clk_src",1334 .parent_data = gcc_parent_data_15,1335 .num_parents = ARRAY_SIZE(gcc_parent_data_15),1336 .ops = &clk_rcg2_shared_ops,1337 },1338};1339 1340static const struct freq_tbl ftbl_gcc_ufs_card_axi_clk_src[] = {1341 F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),1342 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),1343 F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),1344 F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),1345 F(600000000, P_GCC_GPLL0_OUT_MAIN, 1, 0, 0),1346 { }1347};1348 1349static struct clk_rcg2 gcc_ufs_card_axi_clk_src = {1350 .cmd_rcgr = 0x8102c,1351 .mnd_width = 8,1352 .hid_width = 5,1353 .parent_map = gcc_parent_map_0,1354 .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,1355 .clkr.hw.init = &(const struct clk_init_data){1356 .name = "gcc_ufs_card_axi_clk_src",1357 .parent_data = gcc_parent_data_0,1358 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1359 .ops = &clk_rcg2_shared_ops,1360 },1361};1362 1363static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src[] = {1364 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),1365 F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),1366 F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),1367 F(600000000, P_GCC_GPLL0_OUT_MAIN, 1, 0, 0),1368 { }1369};1370 1371static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = {1372 .cmd_rcgr = 0x81074,1373 .mnd_width = 0,1374 .hid_width = 5,1375 .parent_map = gcc_parent_map_0,1376 .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,1377 .clkr.hw.init = &(const struct clk_init_data){1378 .name = "gcc_ufs_card_ice_core_clk_src",1379 .parent_data = gcc_parent_data_0,1380 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1381 .ops = &clk_rcg2_shared_ops,1382 },1383};1384 1385static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = {1386 .cmd_rcgr = 0x810a8,1387 .mnd_width = 0,1388 .hid_width = 5,1389 .parent_map = gcc_parent_map_5,1390 .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,1391 .clkr.hw.init = &(const struct clk_init_data){1392 .name = "gcc_ufs_card_phy_aux_clk_src",1393 .parent_data = gcc_parent_data_5,1394 .num_parents = ARRAY_SIZE(gcc_parent_data_5),1395 .ops = &clk_rcg2_shared_ops,1396 },1397};1398 1399static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = {1400 .cmd_rcgr = 0x8108c,1401 .mnd_width = 0,1402 .hid_width = 5,1403 .parent_map = gcc_parent_map_0,1404 .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,1405 .clkr.hw.init = &(const struct clk_init_data){1406 .name = "gcc_ufs_card_unipro_core_clk_src",1407 .parent_data = gcc_parent_data_0,1408 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1409 .ops = &clk_rcg2_shared_ops,1410 },1411};1412 1413static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {1414 .cmd_rcgr = 0x8302c,1415 .mnd_width = 8,1416 .hid_width = 5,1417 .parent_map = gcc_parent_map_0,1418 .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,1419 .clkr.hw.init = &(const struct clk_init_data){1420 .name = "gcc_ufs_phy_axi_clk_src",1421 .parent_data = gcc_parent_data_0,1422 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1423 .ops = &clk_rcg2_shared_ops,1424 },1425};1426 1427static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {1428 .cmd_rcgr = 0x83074,1429 .mnd_width = 0,1430 .hid_width = 5,1431 .parent_map = gcc_parent_map_0,1432 .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,1433 .clkr.hw.init = &(const struct clk_init_data){1434 .name = "gcc_ufs_phy_ice_core_clk_src",1435 .parent_data = gcc_parent_data_0,1436 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1437 .ops = &clk_rcg2_shared_ops,1438 },1439};1440 1441static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {1442 .cmd_rcgr = 0x830a8,1443 .mnd_width = 0,1444 .hid_width = 5,1445 .parent_map = gcc_parent_map_5,1446 .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,1447 .clkr.hw.init = &(const struct clk_init_data){1448 .name = "gcc_ufs_phy_phy_aux_clk_src",1449 .parent_data = gcc_parent_data_5,1450 .num_parents = ARRAY_SIZE(gcc_parent_data_5),1451 .ops = &clk_rcg2_shared_ops,1452 },1453};1454 1455static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {1456 .cmd_rcgr = 0x8308c,1457 .mnd_width = 0,1458 .hid_width = 5,1459 .parent_map = gcc_parent_map_0,1460 .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,1461 .clkr.hw.init = &(const struct clk_init_data){1462 .name = "gcc_ufs_phy_unipro_core_clk_src",1463 .parent_data = gcc_parent_data_0,1464 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1465 .ops = &clk_rcg2_shared_ops,1466 },1467};1468 1469static const struct freq_tbl ftbl_gcc_usb20_master_clk_src[] = {1470 F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),1471 { }1472};1473 1474static struct clk_rcg2 gcc_usb20_master_clk_src = {1475 .cmd_rcgr = 0x1c028,1476 .mnd_width = 8,1477 .hid_width = 5,1478 .parent_map = gcc_parent_map_0,1479 .freq_tbl = ftbl_gcc_usb20_master_clk_src,1480 .clkr.hw.init = &(const struct clk_init_data){1481 .name = "gcc_usb20_master_clk_src",1482 .parent_data = gcc_parent_data_0,1483 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1484 .ops = &clk_rcg2_shared_ops,1485 },1486};1487 1488static struct clk_rcg2 gcc_usb20_mock_utmi_clk_src = {1489 .cmd_rcgr = 0x1c040,1490 .mnd_width = 0,1491 .hid_width = 5,1492 .parent_map = gcc_parent_map_0,1493 .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,1494 .clkr.hw.init = &(const struct clk_init_data){1495 .name = "gcc_usb20_mock_utmi_clk_src",1496 .parent_data = gcc_parent_data_0,1497 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1498 .ops = &clk_rcg2_shared_ops,1499 },1500};1501 1502static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {1503 F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0),1504 F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),1505 F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),1506 { }1507};1508 1509static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {1510 .cmd_rcgr = 0x1b028,1511 .mnd_width = 8,1512 .hid_width = 5,1513 .parent_map = gcc_parent_map_0,1514 .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,1515 .clkr.hw.init = &(const struct clk_init_data){1516 .name = "gcc_usb30_prim_master_clk_src",1517 .parent_data = gcc_parent_data_0,1518 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1519 .ops = &clk_rcg2_shared_ops,1520 },1521};1522 1523static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {1524 .cmd_rcgr = 0x1b040,1525 .mnd_width = 0,1526 .hid_width = 5,1527 .parent_map = gcc_parent_map_0,1528 .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,1529 .clkr.hw.init = &(const struct clk_init_data){1530 .name = "gcc_usb30_prim_mock_utmi_clk_src",1531 .parent_data = gcc_parent_data_0,1532 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1533 .ops = &clk_rcg2_shared_ops,1534 },1535};1536 1537static struct clk_rcg2 gcc_usb30_sec_master_clk_src = {1538 .cmd_rcgr = 0x2f028,1539 .mnd_width = 8,1540 .hid_width = 5,1541 .parent_map = gcc_parent_map_0,1542 .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,1543 .clkr.hw.init = &(const struct clk_init_data){1544 .name = "gcc_usb30_sec_master_clk_src",1545 .parent_data = gcc_parent_data_0,1546 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1547 .ops = &clk_rcg2_shared_ops,1548 },1549};1550 1551static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = {1552 .cmd_rcgr = 0x2f040,1553 .mnd_width = 0,1554 .hid_width = 5,1555 .parent_map = gcc_parent_map_0,1556 .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,1557 .clkr.hw.init = &(const struct clk_init_data){1558 .name = "gcc_usb30_sec_mock_utmi_clk_src",1559 .parent_data = gcc_parent_data_0,1560 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1561 .ops = &clk_rcg2_shared_ops,1562 },1563};1564 1565static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {1566 .cmd_rcgr = 0x1b06c,1567 .mnd_width = 0,1568 .hid_width = 5,1569 .parent_map = gcc_parent_map_3,1570 .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,1571 .clkr.hw.init = &(const struct clk_init_data){1572 .name = "gcc_usb3_prim_phy_aux_clk_src",1573 .parent_data = gcc_parent_data_3,1574 .num_parents = ARRAY_SIZE(gcc_parent_data_3),1575 .ops = &clk_rcg2_shared_ops,1576 },1577};1578 1579static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = {1580 .cmd_rcgr = 0x2f06c,1581 .mnd_width = 0,1582 .hid_width = 5,1583 .parent_map = gcc_parent_map_3,1584 .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,1585 .clkr.hw.init = &(const struct clk_init_data){1586 .name = "gcc_usb3_sec_phy_aux_clk_src",1587 .parent_data = gcc_parent_data_3,1588 .num_parents = ARRAY_SIZE(gcc_parent_data_3),1589 .ops = &clk_rcg2_shared_ops,1590 },1591};1592 1593static struct clk_regmap_div gcc_pcie_0_pipe_div_clk_src = {1594 .reg = 0xa9070,1595 .shift = 0,1596 .width = 4,1597 .clkr.hw.init = &(const struct clk_init_data) {1598 .name = "gcc_pcie_0_pipe_div_clk_src",1599 .parent_hws = (const struct clk_hw*[]){1600 &gcc_pcie_0_pipe_clk_src.clkr.hw,1601 },1602 .num_parents = 1,1603 .flags = CLK_SET_RATE_PARENT,1604 .ops = &clk_regmap_div_ro_ops,1605 },1606};1607 1608static struct clk_regmap_div gcc_pcie_1_pipe_div_clk_src = {1609 .reg = 0x77070,1610 .shift = 0,1611 .width = 4,1612 .clkr.hw.init = &(const struct clk_init_data) {1613 .name = "gcc_pcie_1_pipe_div_clk_src",1614 .parent_hws = (const struct clk_hw*[]){1615 &gcc_pcie_1_pipe_clk_src.clkr.hw,1616 },1617 .num_parents = 1,1618 .flags = CLK_SET_RATE_PARENT,1619 .ops = &clk_regmap_div_ro_ops,1620 },1621};1622 1623static struct clk_regmap_div gcc_qupv3_wrap3_s0_div_clk_src = {1624 .reg = 0xc4284,1625 .shift = 0,1626 .width = 4,1627 .clkr.hw.init = &(const struct clk_init_data) {1628 .name = "gcc_qupv3_wrap3_s0_div_clk_src",1629 .parent_hws = (const struct clk_hw*[]){1630 &gcc_qupv3_wrap3_s0_clk_src.clkr.hw,1631 },1632 .num_parents = 1,1633 .flags = CLK_SET_RATE_PARENT,1634 .ops = &clk_regmap_div_ro_ops,1635 },1636};1637 1638static struct clk_regmap_div gcc_usb20_mock_utmi_postdiv_clk_src = {1639 .reg = 0x1c058,1640 .shift = 0,1641 .width = 4,1642 .clkr.hw.init = &(const struct clk_init_data) {1643 .name = "gcc_usb20_mock_utmi_postdiv_clk_src",1644 .parent_hws = (const struct clk_hw*[]){1645 &gcc_usb20_mock_utmi_clk_src.clkr.hw,1646 },1647 .num_parents = 1,1648 .flags = CLK_SET_RATE_PARENT,1649 .ops = &clk_regmap_div_ro_ops,1650 },1651};1652 1653static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {1654 .reg = 0x1b058,1655 .shift = 0,1656 .width = 4,1657 .clkr.hw.init = &(const struct clk_init_data) {1658 .name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",1659 .parent_hws = (const struct clk_hw*[]){1660 &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,1661 },1662 .num_parents = 1,1663 .flags = CLK_SET_RATE_PARENT,1664 .ops = &clk_regmap_div_ro_ops,1665 },1666};1667 1668static struct clk_regmap_div gcc_usb30_sec_mock_utmi_postdiv_clk_src = {1669 .reg = 0x2f058,1670 .shift = 0,1671 .width = 4,1672 .clkr.hw.init = &(const struct clk_init_data) {1673 .name = "gcc_usb30_sec_mock_utmi_postdiv_clk_src",1674 .parent_hws = (const struct clk_hw*[]){1675 &gcc_usb30_sec_mock_utmi_clk_src.clkr.hw,1676 },1677 .num_parents = 1,1678 .flags = CLK_SET_RATE_PARENT,1679 .ops = &clk_regmap_div_ro_ops,1680 },1681};1682 1683static struct clk_branch gcc_aggre_noc_qupv3_axi_clk = {1684 .halt_reg = 0x8e200,1685 .halt_check = BRANCH_HALT_VOTED,1686 .hwcg_reg = 0x8e200,1687 .hwcg_bit = 1,1688 .clkr = {1689 .enable_reg = 0x4b000,1690 .enable_mask = BIT(28),1691 .hw.init = &(const struct clk_init_data){1692 .name = "gcc_aggre_noc_qupv3_axi_clk",1693 .ops = &clk_branch2_ops,1694 },1695 },1696};1697 1698static struct clk_branch gcc_aggre_ufs_card_axi_clk = {1699 .halt_reg = 0x810d4,1700 .halt_check = BRANCH_HALT_VOTED,1701 .hwcg_reg = 0x810d4,1702 .hwcg_bit = 1,1703 .clkr = {1704 .enable_reg = 0x810d4,1705 .enable_mask = BIT(0),1706 .hw.init = &(const struct clk_init_data){1707 .name = "gcc_aggre_ufs_card_axi_clk",1708 .parent_hws = (const struct clk_hw*[]){1709 &gcc_ufs_card_axi_clk_src.clkr.hw,1710 },1711 .num_parents = 1,1712 .flags = CLK_SET_RATE_PARENT,1713 .ops = &clk_branch2_ops,1714 },1715 },1716};1717 1718static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {1719 .halt_reg = 0x830d4,1720 .halt_check = BRANCH_HALT_VOTED,1721 .hwcg_reg = 0x830d4,1722 .hwcg_bit = 1,1723 .clkr = {1724 .enable_reg = 0x830d4,1725 .enable_mask = BIT(0),1726 .hw.init = &(const struct clk_init_data){1727 .name = "gcc_aggre_ufs_phy_axi_clk",1728 .parent_hws = (const struct clk_hw*[]){1729 &gcc_ufs_phy_axi_clk_src.clkr.hw,1730 },1731 .num_parents = 1,1732 .flags = CLK_SET_RATE_PARENT,1733 .ops = &clk_branch2_ops,1734 },1735 },1736};1737 1738static struct clk_branch gcc_aggre_usb2_prim_axi_clk = {1739 .halt_reg = 0x1c05c,1740 .halt_check = BRANCH_HALT_VOTED,1741 .hwcg_reg = 0x1c05c,1742 .hwcg_bit = 1,1743 .clkr = {1744 .enable_reg = 0x1c05c,1745 .enable_mask = BIT(0),1746 .hw.init = &(const struct clk_init_data){1747 .name = "gcc_aggre_usb2_prim_axi_clk",1748 .parent_hws = (const struct clk_hw*[]){1749 &gcc_usb20_master_clk_src.clkr.hw,1750 },1751 .num_parents = 1,1752 .flags = CLK_SET_RATE_PARENT,1753 .ops = &clk_branch2_ops,1754 },1755 },1756};1757 1758static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {1759 .halt_reg = 0x1b084,1760 .halt_check = BRANCH_HALT_VOTED,1761 .hwcg_reg = 0x1b084,1762 .hwcg_bit = 1,1763 .clkr = {1764 .enable_reg = 0x1b084,1765 .enable_mask = BIT(0),1766 .hw.init = &(const struct clk_init_data){1767 .name = "gcc_aggre_usb3_prim_axi_clk",1768 .parent_hws = (const struct clk_hw*[]){1769 &gcc_usb30_prim_master_clk_src.clkr.hw,1770 },1771 .num_parents = 1,1772 .flags = CLK_SET_RATE_PARENT,1773 .ops = &clk_branch2_ops,1774 },1775 },1776};1777 1778static struct clk_branch gcc_aggre_usb3_sec_axi_clk = {1779 .halt_reg = 0x2f088,1780 .halt_check = BRANCH_HALT_VOTED,1781 .hwcg_reg = 0x2f088,1782 .hwcg_bit = 1,1783 .clkr = {1784 .enable_reg = 0x2f088,1785 .enable_mask = BIT(0),1786 .hw.init = &(const struct clk_init_data){1787 .name = "gcc_aggre_usb3_sec_axi_clk",1788 .parent_hws = (const struct clk_hw*[]){1789 &gcc_usb30_sec_master_clk_src.clkr.hw,1790 },1791 .num_parents = 1,1792 .flags = CLK_SET_RATE_PARENT,1793 .ops = &clk_branch2_ops,1794 },1795 },1796};1797 1798static struct clk_branch gcc_ahb2phy0_clk = {1799 .halt_reg = 0x76004,1800 .halt_check = BRANCH_HALT_VOTED,1801 .hwcg_reg = 0x76004,1802 .hwcg_bit = 1,1803 .clkr = {1804 .enable_reg = 0x76004,1805 .enable_mask = BIT(0),1806 .hw.init = &(const struct clk_init_data){1807 .name = "gcc_ahb2phy0_clk",1808 .ops = &clk_branch2_ops,1809 },1810 },1811};1812 1813static struct clk_branch gcc_ahb2phy2_clk = {1814 .halt_reg = 0x76008,1815 .halt_check = BRANCH_HALT_VOTED,1816 .hwcg_reg = 0x76008,1817 .hwcg_bit = 1,1818 .clkr = {1819 .enable_reg = 0x76008,1820 .enable_mask = BIT(0),1821 .hw.init = &(const struct clk_init_data){1822 .name = "gcc_ahb2phy2_clk",1823 .ops = &clk_branch2_ops,1824 },1825 },1826};1827 1828static struct clk_branch gcc_ahb2phy3_clk = {1829 .halt_reg = 0x7600c,1830 .halt_check = BRANCH_HALT_VOTED,1831 .hwcg_reg = 0x7600c,1832 .hwcg_bit = 1,1833 .clkr = {1834 .enable_reg = 0x7600c,1835 .enable_mask = BIT(0),1836 .hw.init = &(const struct clk_init_data){1837 .name = "gcc_ahb2phy3_clk",1838 .ops = &clk_branch2_ops,1839 },1840 },1841};1842 1843static struct clk_branch gcc_boot_rom_ahb_clk = {1844 .halt_reg = 0x44004,1845 .halt_check = BRANCH_HALT_VOTED,1846 .hwcg_reg = 0x44004,1847 .hwcg_bit = 1,1848 .clkr = {1849 .enable_reg = 0x4b000,1850 .enable_mask = BIT(10),1851 .hw.init = &(const struct clk_init_data){1852 .name = "gcc_boot_rom_ahb_clk",1853 .ops = &clk_branch2_ops,1854 },1855 },1856};1857 1858static struct clk_branch gcc_camera_hf_axi_clk = {1859 .halt_reg = 0x32010,1860 .halt_check = BRANCH_HALT_SKIP,1861 .hwcg_reg = 0x32010,1862 .hwcg_bit = 1,1863 .clkr = {1864 .enable_reg = 0x32010,1865 .enable_mask = BIT(0),1866 .hw.init = &(const struct clk_init_data){1867 .name = "gcc_camera_hf_axi_clk",1868 .ops = &clk_branch2_ops,1869 },1870 },1871};1872 1873static struct clk_branch gcc_camera_sf_axi_clk = {1874 .halt_reg = 0x32018,1875 .halt_check = BRANCH_HALT_SKIP,1876 .hwcg_reg = 0x32018,1877 .hwcg_bit = 1,1878 .clkr = {1879 .enable_reg = 0x32018,1880 .enable_mask = BIT(0),1881 .hw.init = &(const struct clk_init_data){1882 .name = "gcc_camera_sf_axi_clk",1883 .ops = &clk_branch2_ops,1884 },1885 },1886};1887 1888static struct clk_branch gcc_camera_throttle_xo_clk = {1889 .halt_reg = 0x32024,1890 .halt_check = BRANCH_HALT,1891 .clkr = {1892 .enable_reg = 0x32024,1893 .enable_mask = BIT(0),1894 .hw.init = &(const struct clk_init_data){1895 .name = "gcc_camera_throttle_xo_clk",1896 .ops = &clk_branch2_ops,1897 },1898 },1899};1900 1901static struct clk_branch gcc_cfg_noc_usb2_prim_axi_clk = {1902 .halt_reg = 0x1c060,1903 .halt_check = BRANCH_HALT_VOTED,1904 .hwcg_reg = 0x1c060,1905 .hwcg_bit = 1,1906 .clkr = {1907 .enable_reg = 0x1c060,1908 .enable_mask = BIT(0),1909 .hw.init = &(const struct clk_init_data){1910 .name = "gcc_cfg_noc_usb2_prim_axi_clk",1911 .parent_hws = (const struct clk_hw*[]){1912 &gcc_usb20_master_clk_src.clkr.hw,1913 },1914 .num_parents = 1,1915 .flags = CLK_SET_RATE_PARENT,1916 .ops = &clk_branch2_ops,1917 },1918 },1919};1920 1921static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {1922 .halt_reg = 0x1b088,1923 .halt_check = BRANCH_HALT_VOTED,1924 .hwcg_reg = 0x1b088,1925 .hwcg_bit = 1,1926 .clkr = {1927 .enable_reg = 0x1b088,1928 .enable_mask = BIT(0),1929 .hw.init = &(const struct clk_init_data){1930 .name = "gcc_cfg_noc_usb3_prim_axi_clk",1931 .parent_hws = (const struct clk_hw*[]){1932 &gcc_usb30_prim_master_clk_src.clkr.hw,1933 },1934 .num_parents = 1,1935 .flags = CLK_SET_RATE_PARENT,1936 .ops = &clk_branch2_ops,1937 },1938 },1939};1940 1941static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = {1942 .halt_reg = 0x2f084,1943 .halt_check = BRANCH_HALT_VOTED,1944 .hwcg_reg = 0x2f084,1945 .hwcg_bit = 1,1946 .clkr = {1947 .enable_reg = 0x2f084,1948 .enable_mask = BIT(0),1949 .hw.init = &(const struct clk_init_data){1950 .name = "gcc_cfg_noc_usb3_sec_axi_clk",1951 .parent_hws = (const struct clk_hw*[]){1952 &gcc_usb30_sec_master_clk_src.clkr.hw,1953 },1954 .num_parents = 1,1955 .flags = CLK_SET_RATE_PARENT,1956 .ops = &clk_branch2_ops,1957 },1958 },1959};1960 1961static struct clk_branch gcc_ddrss_gpu_axi_clk = {1962 .halt_reg = 0x7d164,1963 .halt_check = BRANCH_HALT_VOTED,1964 .hwcg_reg = 0x7d164,1965 .hwcg_bit = 1,1966 .clkr = {1967 .enable_reg = 0x7d164,1968 .enable_mask = BIT(0),1969 .hw.init = &(const struct clk_init_data){1970 .name = "gcc_ddrss_gpu_axi_clk",1971 .ops = &clk_branch2_aon_ops,1972 },1973 },1974};1975 1976static struct clk_branch gcc_disp1_hf_axi_clk = {1977 .halt_reg = 0xc7010,1978 .halt_check = BRANCH_HALT_VOTED,1979 .hwcg_reg = 0xc7010,1980 .hwcg_bit = 1,1981 .clkr = {1982 .enable_reg = 0xc7010,1983 .enable_mask = BIT(0),1984 .hw.init = &(const struct clk_init_data){1985 .name = "gcc_disp1_hf_axi_clk",1986 .ops = &clk_branch2_ops,1987 },1988 },1989};1990 1991static struct clk_branch gcc_disp_hf_axi_clk = {1992 .halt_reg = 0x33010,1993 .halt_check = BRANCH_HALT_VOTED,1994 .hwcg_reg = 0x33010,1995 .hwcg_bit = 1,1996 .clkr = {1997 .enable_reg = 0x33010,1998 .enable_mask = BIT(0),1999 .hw.init = &(const struct clk_init_data){2000 .name = "gcc_disp_hf_axi_clk",2001 .ops = &clk_branch2_ops,2002 },2003 },2004};2005 2006static struct clk_branch gcc_edp_ref_clkref_en = {2007 .halt_reg = 0x97448,2008 .halt_check = BRANCH_HALT_DELAY,2009 .clkr = {2010 .enable_reg = 0x97448,2011 .enable_mask = BIT(0),2012 .hw.init = &(const struct clk_init_data){2013 .name = "gcc_edp_ref_clkref_en",2014 .ops = &clk_branch2_ops,2015 },2016 },2017};2018 2019static struct clk_branch gcc_emac0_axi_clk = {2020 .halt_reg = 0xb6018,2021 .halt_check = BRANCH_HALT_VOTED,2022 .hwcg_reg = 0xb6018,2023 .hwcg_bit = 1,2024 .clkr = {2025 .enable_reg = 0xb6018,2026 .enable_mask = BIT(0),2027 .hw.init = &(const struct clk_init_data){2028 .name = "gcc_emac0_axi_clk",2029 .ops = &clk_branch2_ops,2030 },2031 },2032};2033 2034static struct clk_branch gcc_emac0_phy_aux_clk = {2035 .halt_reg = 0xb6024,2036 .halt_check = BRANCH_HALT,2037 .clkr = {2038 .enable_reg = 0xb6024,2039 .enable_mask = BIT(0),2040 .hw.init = &(const struct clk_init_data){2041 .name = "gcc_emac0_phy_aux_clk",2042 .parent_hws = (const struct clk_hw*[]){2043 &gcc_emac0_phy_aux_clk_src.clkr.hw,2044 },2045 .num_parents = 1,2046 .flags = CLK_SET_RATE_PARENT,2047 .ops = &clk_branch2_ops,2048 },2049 },2050};2051 2052static struct clk_branch gcc_emac0_ptp_clk = {2053 .halt_reg = 0xb6040,2054 .halt_check = BRANCH_HALT,2055 .clkr = {2056 .enable_reg = 0xb6040,2057 .enable_mask = BIT(0),2058 .hw.init = &(const struct clk_init_data){2059 .name = "gcc_emac0_ptp_clk",2060 .parent_hws = (const struct clk_hw*[]){2061 &gcc_emac0_ptp_clk_src.clkr.hw,2062 },2063 .num_parents = 1,2064 .flags = CLK_SET_RATE_PARENT,2065 .ops = &clk_branch2_ops,2066 },2067 },2068};2069 2070static struct clk_branch gcc_emac0_rgmii_clk = {2071 .halt_reg = 0xb6044,2072 .halt_check = BRANCH_HALT,2073 .clkr = {2074 .enable_reg = 0xb6044,2075 .enable_mask = BIT(0),2076 .hw.init = &(const struct clk_init_data){2077 .name = "gcc_emac0_rgmii_clk",2078 .parent_hws = (const struct clk_hw*[]){2079 &gcc_emac0_rgmii_clk_src.clkr.hw,2080 },2081 .num_parents = 1,2082 .flags = CLK_SET_RATE_PARENT,2083 .ops = &clk_branch2_ops,2084 },2085 },2086};2087 2088static struct clk_branch gcc_emac0_slv_ahb_clk = {2089 .halt_reg = 0xb6020,2090 .halt_check = BRANCH_HALT_VOTED,2091 .hwcg_reg = 0xb6020,2092 .hwcg_bit = 1,2093 .clkr = {2094 .enable_reg = 0xb6020,2095 .enable_mask = BIT(0),2096 .hw.init = &(const struct clk_init_data){2097 .name = "gcc_emac0_slv_ahb_clk",2098 .ops = &clk_branch2_ops,2099 },2100 },2101};2102 2103static struct clk_branch gcc_emac1_axi_clk = {2104 .halt_reg = 0xb4018,2105 .halt_check = BRANCH_HALT_VOTED,2106 .hwcg_reg = 0xb4018,2107 .hwcg_bit = 1,2108 .clkr = {2109 .enable_reg = 0xb4018,2110 .enable_mask = BIT(0),2111 .hw.init = &(const struct clk_init_data){2112 .name = "gcc_emac1_axi_clk",2113 .ops = &clk_branch2_ops,2114 },2115 },2116};2117 2118static struct clk_branch gcc_emac1_phy_aux_clk = {2119 .halt_reg = 0xb4024,2120 .halt_check = BRANCH_HALT,2121 .clkr = {2122 .enable_reg = 0xb4024,2123 .enable_mask = BIT(0),2124 .hw.init = &(const struct clk_init_data){2125 .name = "gcc_emac1_phy_aux_clk",2126 .parent_hws = (const struct clk_hw*[]){2127 &gcc_emac1_phy_aux_clk_src.clkr.hw,2128 },2129 .num_parents = 1,2130 .flags = CLK_SET_RATE_PARENT,2131 .ops = &clk_branch2_ops,2132 },2133 },2134};2135 2136static struct clk_branch gcc_emac1_ptp_clk = {2137 .halt_reg = 0xb4040,2138 .halt_check = BRANCH_HALT,2139 .clkr = {2140 .enable_reg = 0xb4040,2141 .enable_mask = BIT(0),2142 .hw.init = &(const struct clk_init_data){2143 .name = "gcc_emac1_ptp_clk",2144 .parent_hws = (const struct clk_hw*[]){2145 &gcc_emac1_ptp_clk_src.clkr.hw,2146 },2147 .num_parents = 1,2148 .flags = CLK_SET_RATE_PARENT,2149 .ops = &clk_branch2_ops,2150 },2151 },2152};2153 2154static struct clk_branch gcc_emac1_rgmii_clk = {2155 .halt_reg = 0xb4044,2156 .halt_check = BRANCH_HALT,2157 .clkr = {2158 .enable_reg = 0xb4044,2159 .enable_mask = BIT(0),2160 .hw.init = &(const struct clk_init_data){2161 .name = "gcc_emac1_rgmii_clk",2162 .parent_hws = (const struct clk_hw*[]){2163 &gcc_emac1_rgmii_clk_src.clkr.hw,2164 },2165 .num_parents = 1,2166 .flags = CLK_SET_RATE_PARENT,2167 .ops = &clk_branch2_ops,2168 },2169 },2170};2171 2172static struct clk_branch gcc_emac1_slv_ahb_clk = {2173 .halt_reg = 0xb4020,2174 .halt_check = BRANCH_HALT_VOTED,2175 .hwcg_reg = 0xb4020,2176 .hwcg_bit = 1,2177 .clkr = {2178 .enable_reg = 0xb4020,2179 .enable_mask = BIT(0),2180 .hw.init = &(const struct clk_init_data){2181 .name = "gcc_emac1_slv_ahb_clk",2182 .ops = &clk_branch2_ops,2183 },2184 },2185};2186 2187static struct clk_branch gcc_gp1_clk = {2188 .halt_reg = 0x70000,2189 .halt_check = BRANCH_HALT,2190 .clkr = {2191 .enable_reg = 0x70000,2192 .enable_mask = BIT(0),2193 .hw.init = &(const struct clk_init_data){2194 .name = "gcc_gp1_clk",2195 .parent_hws = (const struct clk_hw*[]){2196 &gcc_gp1_clk_src.clkr.hw,2197 },2198 .num_parents = 1,2199 .flags = CLK_SET_RATE_PARENT,2200 .ops = &clk_branch2_ops,2201 },2202 },2203};2204 2205static struct clk_branch gcc_gp2_clk = {2206 .halt_reg = 0x71000,2207 .halt_check = BRANCH_HALT,2208 .clkr = {2209 .enable_reg = 0x71000,2210 .enable_mask = BIT(0),2211 .hw.init = &(const struct clk_init_data){2212 .name = "gcc_gp2_clk",2213 .parent_hws = (const struct clk_hw*[]){2214 &gcc_gp2_clk_src.clkr.hw,2215 },2216 .num_parents = 1,2217 .flags = CLK_SET_RATE_PARENT,2218 .ops = &clk_branch2_ops,2219 },2220 },2221};2222 2223static struct clk_branch gcc_gp3_clk = {2224 .halt_reg = 0x62000,2225 .halt_check = BRANCH_HALT,2226 .clkr = {2227 .enable_reg = 0x62000,2228 .enable_mask = BIT(0),2229 .hw.init = &(const struct clk_init_data){2230 .name = "gcc_gp3_clk",2231 .parent_hws = (const struct clk_hw*[]){2232 &gcc_gp3_clk_src.clkr.hw,2233 },2234 .num_parents = 1,2235 .flags = CLK_SET_RATE_PARENT,2236 .ops = &clk_branch2_ops,2237 },2238 },2239};2240 2241static struct clk_branch gcc_gp4_clk = {2242 .halt_reg = 0x1e000,2243 .halt_check = BRANCH_HALT,2244 .clkr = {2245 .enable_reg = 0x1e000,2246 .enable_mask = BIT(0),2247 .hw.init = &(const struct clk_init_data){2248 .name = "gcc_gp4_clk",2249 .parent_hws = (const struct clk_hw*[]){2250 &gcc_gp4_clk_src.clkr.hw,2251 },2252 .num_parents = 1,2253 .flags = CLK_SET_RATE_PARENT,2254 .ops = &clk_branch2_ops,2255 },2256 },2257};2258 2259static struct clk_branch gcc_gp5_clk = {2260 .halt_reg = 0x1f000,2261 .halt_check = BRANCH_HALT,2262 .clkr = {2263 .enable_reg = 0x1f000,2264 .enable_mask = BIT(0),2265 .hw.init = &(const struct clk_init_data){2266 .name = "gcc_gp5_clk",2267 .parent_hws = (const struct clk_hw*[]){2268 &gcc_gp5_clk_src.clkr.hw,2269 },2270 .num_parents = 1,2271 .flags = CLK_SET_RATE_PARENT,2272 .ops = &clk_branch2_ops,2273 },2274 },2275};2276 2277static struct clk_branch gcc_gpu_gpll0_clk_src = {2278 .halt_check = BRANCH_HALT_DELAY,2279 .clkr = {2280 .enable_reg = 0x4b000,2281 .enable_mask = BIT(15),2282 .hw.init = &(const struct clk_init_data){2283 .name = "gcc_gpu_gpll0_clk_src",2284 .parent_hws = (const struct clk_hw*[]){2285 &gcc_gpll0.clkr.hw,2286 },2287 .num_parents = 1,2288 .flags = CLK_SET_RATE_PARENT,2289 .ops = &clk_branch2_ops,2290 },2291 },2292};2293 2294static struct clk_branch gcc_gpu_gpll0_div_clk_src = {2295 .halt_check = BRANCH_HALT_DELAY,2296 .clkr = {2297 .enable_reg = 0x4b000,2298 .enable_mask = BIT(16),2299 .hw.init = &(const struct clk_init_data){2300 .name = "gcc_gpu_gpll0_div_clk_src",2301 .parent_hws = (const struct clk_hw*[]){2302 &gcc_gpll0_out_even.clkr.hw,2303 },2304 .num_parents = 1,2305 .flags = CLK_SET_RATE_PARENT,2306 .ops = &clk_branch2_ops,2307 },2308 },2309};2310 2311static struct clk_branch gcc_gpu_memnoc_gfx_clk = {2312 .halt_reg = 0x7d010,2313 .halt_check = BRANCH_HALT_VOTED,2314 .hwcg_reg = 0x7d010,2315 .hwcg_bit = 1,2316 .clkr = {2317 .enable_reg = 0x7d010,2318 .enable_mask = BIT(0),2319 .hw.init = &(const struct clk_init_data){2320 .name = "gcc_gpu_memnoc_gfx_clk",2321 .ops = &clk_branch2_aon_ops,2322 },2323 },2324};2325 2326static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {2327 .halt_reg = 0x7d01c,2328 .halt_check = BRANCH_HALT_DELAY,2329 .clkr = {2330 .enable_reg = 0x7d01c,2331 .enable_mask = BIT(0),2332 .hw.init = &(const struct clk_init_data){2333 .name = "gcc_gpu_snoc_dvm_gfx_clk",2334 .ops = &clk_branch2_aon_ops,2335 },2336 },2337};2338 2339static struct clk_branch gcc_gpu_tcu_throttle_ahb_clk = {2340 .halt_reg = 0x7d008,2341 .halt_check = BRANCH_HALT_VOTED,2342 .hwcg_reg = 0x7d008,2343 .hwcg_bit = 1,2344 .clkr = {2345 .enable_reg = 0x7d008,2346 .enable_mask = BIT(0),2347 .hw.init = &(const struct clk_init_data){2348 .name = "gcc_gpu_tcu_throttle_ahb_clk",2349 .ops = &clk_branch2_ops,2350 },2351 },2352};2353 2354static struct clk_branch gcc_gpu_tcu_throttle_clk = {2355 .halt_reg = 0x7d014,2356 .halt_check = BRANCH_HALT_VOTED,2357 .hwcg_reg = 0x7d014,2358 .hwcg_bit = 1,2359 .clkr = {2360 .enable_reg = 0x7d014,2361 .enable_mask = BIT(0),2362 .hw.init = &(const struct clk_init_data){2363 .name = "gcc_gpu_tcu_throttle_clk",2364 .ops = &clk_branch2_ops,2365 },2366 },2367};2368 2369static struct clk_branch gcc_pcie_0_aux_clk = {2370 .halt_reg = 0xa9038,2371 .halt_check = BRANCH_HALT_VOTED,2372 .clkr = {2373 .enable_reg = 0x4b010,2374 .enable_mask = BIT(16),2375 .hw.init = &(const struct clk_init_data){2376 .name = "gcc_pcie_0_aux_clk",2377 .parent_hws = (const struct clk_hw*[]){2378 &gcc_pcie_0_aux_clk_src.clkr.hw,2379 },2380 .num_parents = 1,2381 .flags = CLK_SET_RATE_PARENT,2382 .ops = &clk_branch2_ops,2383 },2384 },2385};2386 2387static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {2388 .halt_reg = 0xa902c,2389 .halt_check = BRANCH_HALT_VOTED,2390 .hwcg_reg = 0xa902c,2391 .hwcg_bit = 1,2392 .clkr = {2393 .enable_reg = 0x4b010,2394 .enable_mask = BIT(12),2395 .hw.init = &(const struct clk_init_data){2396 .name = "gcc_pcie_0_cfg_ahb_clk",2397 .ops = &clk_branch2_ops,2398 },2399 },2400};2401 2402static struct clk_branch gcc_pcie_0_mstr_axi_clk = {2403 .halt_reg = 0xa9024,2404 .halt_check = BRANCH_HALT_VOTED,2405 .clkr = {2406 .enable_reg = 0x4b010,2407 .enable_mask = BIT(11),2408 .hw.init = &(const struct clk_init_data){2409 .name = "gcc_pcie_0_mstr_axi_clk",2410 .ops = &clk_branch2_ops,2411 },2412 },2413};2414 2415static struct clk_branch gcc_pcie_0_phy_aux_clk = {2416 .halt_reg = 0xa9030,2417 .halt_check = BRANCH_HALT_VOTED,2418 .clkr = {2419 .enable_reg = 0x4b010,2420 .enable_mask = BIT(13),2421 .hw.init = &(const struct clk_init_data){2422 .name = "gcc_pcie_0_phy_aux_clk",2423 .parent_hws = (const struct clk_hw*[]){2424 &gcc_pcie_0_phy_aux_clk_src.clkr.hw,2425 },2426 .num_parents = 1,2427 .flags = CLK_SET_RATE_PARENT,2428 .ops = &clk_branch2_ops,2429 },2430 },2431};2432 2433static struct clk_branch gcc_pcie_0_phy_rchng_clk = {2434 .halt_reg = 0xa9050,2435 .halt_check = BRANCH_HALT_VOTED,2436 .clkr = {2437 .enable_reg = 0x4b010,2438 .enable_mask = BIT(15),2439 .hw.init = &(const struct clk_init_data){2440 .name = "gcc_pcie_0_phy_rchng_clk",2441 .parent_hws = (const struct clk_hw*[]){2442 &gcc_pcie_0_phy_rchng_clk_src.clkr.hw,2443 },2444 .num_parents = 1,2445 .flags = CLK_SET_RATE_PARENT,2446 .ops = &clk_branch2_ops,2447 },2448 },2449};2450 2451static struct clk_branch gcc_pcie_0_pipe_clk = {2452 .halt_reg = 0xa9040,2453 .halt_check = BRANCH_HALT_SKIP,2454 .clkr = {2455 .enable_reg = 0x4b010,2456 .enable_mask = BIT(14),2457 .hw.init = &(const struct clk_init_data){2458 .name = "gcc_pcie_0_pipe_clk",2459 .parent_hws = (const struct clk_hw*[]){2460 &gcc_pcie_0_pipe_clk_src.clkr.hw,2461 },2462 .num_parents = 1,2463 .flags = CLK_SET_RATE_PARENT,2464 .ops = &clk_branch2_ops,2465 },2466 },2467};2468 2469static struct clk_branch gcc_pcie_0_pipediv2_clk = {2470 .halt_reg = 0xa9048,2471 .halt_check = BRANCH_HALT_SKIP,2472 .clkr = {2473 .enable_reg = 0x4b018,2474 .enable_mask = BIT(22),2475 .hw.init = &(const struct clk_init_data){2476 .name = "gcc_pcie_0_pipediv2_clk",2477 .parent_hws = (const struct clk_hw*[]){2478 &gcc_pcie_0_pipe_div_clk_src.clkr.hw,2479 },2480 .num_parents = 1,2481 .flags = CLK_SET_RATE_PARENT,2482 .ops = &clk_branch2_ops,2483 },2484 },2485};2486 2487static struct clk_branch gcc_pcie_0_slv_axi_clk = {2488 .halt_reg = 0xa901c,2489 .halt_check = BRANCH_HALT_VOTED,2490 .clkr = {2491 .enable_reg = 0x4b010,2492 .enable_mask = BIT(10),2493 .hw.init = &(const struct clk_init_data){2494 .name = "gcc_pcie_0_slv_axi_clk",2495 .ops = &clk_branch2_ops,2496 },2497 },2498};2499 2500static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {2501 .halt_reg = 0xa9018,2502 .halt_check = BRANCH_HALT_VOTED,2503 .clkr = {2504 .enable_reg = 0x4b018,2505 .enable_mask = BIT(12),2506 .hw.init = &(const struct clk_init_data){2507 .name = "gcc_pcie_0_slv_q2a_axi_clk",2508 .ops = &clk_branch2_ops,2509 },2510 },2511};2512 2513static struct clk_branch gcc_pcie_1_aux_clk = {2514 .halt_reg = 0x77038,2515 .halt_check = BRANCH_HALT_VOTED,2516 .clkr = {2517 .enable_reg = 0x4b000,2518 .enable_mask = BIT(31),2519 .hw.init = &(const struct clk_init_data){2520 .name = "gcc_pcie_1_aux_clk",2521 .parent_hws = (const struct clk_hw*[]){2522 &gcc_pcie_1_aux_clk_src.clkr.hw,2523 },2524 .num_parents = 1,2525 .flags = CLK_SET_RATE_PARENT,2526 .ops = &clk_branch2_ops,2527 },2528 },2529};2530 2531static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {2532 .halt_reg = 0x7702c,2533 .halt_check = BRANCH_HALT_VOTED,2534 .hwcg_reg = 0x7702c,2535 .hwcg_bit = 1,2536 .clkr = {2537 .enable_reg = 0x4b008,2538 .enable_mask = BIT(2),2539 .hw.init = &(const struct clk_init_data){2540 .name = "gcc_pcie_1_cfg_ahb_clk",2541 .ops = &clk_branch2_ops,2542 },2543 },2544};2545 2546static struct clk_branch gcc_pcie_1_mstr_axi_clk = {2547 .halt_reg = 0x77024,2548 .halt_check = BRANCH_HALT_VOTED,2549 .clkr = {2550 .enable_reg = 0x4b008,2551 .enable_mask = BIT(1),2552 .hw.init = &(const struct clk_init_data){2553 .name = "gcc_pcie_1_mstr_axi_clk",2554 .ops = &clk_branch2_ops,2555 },2556 },2557};2558 2559static struct clk_branch gcc_pcie_1_phy_aux_clk = {2560 .halt_reg = 0x77030,2561 .halt_check = BRANCH_HALT_VOTED,2562 .clkr = {2563 .enable_reg = 0x4b008,2564 .enable_mask = BIT(3),2565 .hw.init = &(const struct clk_init_data){2566 .name = "gcc_pcie_1_phy_aux_clk",2567 .parent_hws = (const struct clk_hw*[]){2568 &gcc_pcie_1_phy_aux_clk_src.clkr.hw,2569 },2570 .num_parents = 1,2571 .flags = CLK_SET_RATE_PARENT,2572 .ops = &clk_branch2_ops,2573 },2574 },2575};2576 2577static struct clk_branch gcc_pcie_1_phy_rchng_clk = {2578 .halt_reg = 0x77050,2579 .halt_check = BRANCH_HALT_VOTED,2580 .clkr = {2581 .enable_reg = 0x4b000,2582 .enable_mask = BIT(22),2583 .hw.init = &(const struct clk_init_data){2584 .name = "gcc_pcie_1_phy_rchng_clk",2585 .parent_hws = (const struct clk_hw*[]){2586 &gcc_pcie_1_phy_rchng_clk_src.clkr.hw,2587 },2588 .num_parents = 1,2589 .flags = CLK_SET_RATE_PARENT,2590 .ops = &clk_branch2_ops,2591 },2592 },2593};2594 2595static struct clk_branch gcc_pcie_1_pipe_clk = {2596 .halt_reg = 0x77040,2597 .halt_check = BRANCH_HALT_SKIP,2598 .clkr = {2599 .enable_reg = 0x4b008,2600 .enable_mask = BIT(4),2601 .hw.init = &(const struct clk_init_data){2602 .name = "gcc_pcie_1_pipe_clk",2603 .parent_hws = (const struct clk_hw*[]){2604 &gcc_pcie_1_pipe_clk_src.clkr.hw,2605 },2606 .num_parents = 1,2607 .flags = CLK_SET_RATE_PARENT,2608 .ops = &clk_branch2_ops,2609 },2610 },2611};2612 2613static struct clk_branch gcc_pcie_1_pipediv2_clk = {2614 .halt_reg = 0x77048,2615 .halt_check = BRANCH_HALT_SKIP,2616 .clkr = {2617 .enable_reg = 0x4b018,2618 .enable_mask = BIT(16),2619 .hw.init = &(const struct clk_init_data){2620 .name = "gcc_pcie_1_pipediv2_clk",2621 .parent_hws = (const struct clk_hw*[]){2622 &gcc_pcie_1_pipe_div_clk_src.clkr.hw,2623 },2624 .num_parents = 1,2625 .flags = CLK_SET_RATE_PARENT,2626 .ops = &clk_branch2_ops,2627 },2628 },2629};2630 2631static struct clk_branch gcc_pcie_1_slv_axi_clk = {2632 .halt_reg = 0x7701c,2633 .halt_check = BRANCH_HALT_VOTED,2634 .clkr = {2635 .enable_reg = 0x4b008,2636 .enable_mask = BIT(0),2637 .hw.init = &(const struct clk_init_data){2638 .name = "gcc_pcie_1_slv_axi_clk",2639 .ops = &clk_branch2_ops,2640 },2641 },2642};2643 2644static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {2645 .halt_reg = 0x77018,2646 .halt_check = BRANCH_HALT_VOTED,2647 .clkr = {2648 .enable_reg = 0x4b008,2649 .enable_mask = BIT(5),2650 .hw.init = &(const struct clk_init_data){2651 .name = "gcc_pcie_1_slv_q2a_axi_clk",2652 .ops = &clk_branch2_ops,2653 },2654 },2655};2656 2657static struct clk_branch gcc_pcie_clkref_en = {2658 .halt_reg = 0x9746c,2659 .halt_check = BRANCH_HALT_DELAY,2660 .clkr = {2661 .enable_reg = 0x9746c,2662 .enable_mask = BIT(0),2663 .hw.init = &(const struct clk_init_data){2664 .name = "gcc_pcie_clkref_en",2665 .ops = &clk_branch2_ops,2666 },2667 },2668};2669 2670static struct clk_branch gcc_pcie_throttle_cfg_clk = {2671 .halt_reg = 0xb2034,2672 .halt_check = BRANCH_HALT_VOTED,2673 .clkr = {2674 .enable_reg = 0x4b020,2675 .enable_mask = BIT(15),2676 .hw.init = &(const struct clk_init_data){2677 .name = "gcc_pcie_throttle_cfg_clk",2678 .ops = &clk_branch2_ops,2679 },2680 },2681};2682 2683static struct clk_branch gcc_pdm2_clk = {2684 .halt_reg = 0x3f00c,2685 .halt_check = BRANCH_HALT,2686 .clkr = {2687 .enable_reg = 0x3f00c,2688 .enable_mask = BIT(0),2689 .hw.init = &(const struct clk_init_data){2690 .name = "gcc_pdm2_clk",2691 .parent_hws = (const struct clk_hw*[]){2692 &gcc_pdm2_clk_src.clkr.hw,2693 },2694 .num_parents = 1,2695 .flags = CLK_SET_RATE_PARENT,2696 .ops = &clk_branch2_ops,2697 },2698 },2699};2700 2701static struct clk_branch gcc_pdm_ahb_clk = {2702 .halt_reg = 0x3f004,2703 .halt_check = BRANCH_HALT_VOTED,2704 .hwcg_reg = 0x3f004,2705 .hwcg_bit = 1,2706 .clkr = {2707 .enable_reg = 0x3f004,2708 .enable_mask = BIT(0),2709 .hw.init = &(const struct clk_init_data){2710 .name = "gcc_pdm_ahb_clk",2711 .ops = &clk_branch2_ops,2712 },2713 },2714};2715 2716static struct clk_branch gcc_pdm_xo4_clk = {2717 .halt_reg = 0x3f008,2718 .halt_check = BRANCH_HALT,2719 .clkr = {2720 .enable_reg = 0x3f008,2721 .enable_mask = BIT(0),2722 .hw.init = &(const struct clk_init_data){2723 .name = "gcc_pdm_xo4_clk",2724 .ops = &clk_branch2_ops,2725 },2726 },2727};2728 2729static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {2730 .halt_reg = 0x32008,2731 .halt_check = BRANCH_HALT_VOTED,2732 .hwcg_reg = 0x32008,2733 .hwcg_bit = 1,2734 .clkr = {2735 .enable_reg = 0x32008,2736 .enable_mask = BIT(0),2737 .hw.init = &(const struct clk_init_data){2738 .name = "gcc_qmip_camera_nrt_ahb_clk",2739 .ops = &clk_branch2_ops,2740 },2741 },2742};2743 2744static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {2745 .halt_reg = 0x3200c,2746 .halt_check = BRANCH_HALT_VOTED,2747 .hwcg_reg = 0x3200c,2748 .hwcg_bit = 1,2749 .clkr = {2750 .enable_reg = 0x3200c,2751 .enable_mask = BIT(0),2752 .hw.init = &(const struct clk_init_data){2753 .name = "gcc_qmip_camera_rt_ahb_clk",2754 .ops = &clk_branch2_ops,2755 },2756 },2757};2758 2759static struct clk_branch gcc_qmip_disp1_ahb_clk = {2760 .halt_reg = 0xc7008,2761 .halt_check = BRANCH_HALT_VOTED,2762 .hwcg_reg = 0xc7008,2763 .hwcg_bit = 1,2764 .clkr = {2765 .enable_reg = 0xc7008,2766 .enable_mask = BIT(0),2767 .hw.init = &(const struct clk_init_data){2768 .name = "gcc_qmip_disp1_ahb_clk",2769 .ops = &clk_branch2_ops,2770 },2771 },2772};2773 2774static struct clk_branch gcc_qmip_disp1_rot_ahb_clk = {2775 .halt_reg = 0xc700c,2776 .halt_check = BRANCH_HALT_VOTED,2777 .clkr = {2778 .enable_reg = 0xc700c,2779 .enable_mask = BIT(0),2780 .hw.init = &(const struct clk_init_data){2781 .name = "gcc_qmip_disp1_rot_ahb_clk",2782 .ops = &clk_branch2_ops,2783 },2784 },2785};2786 2787static struct clk_branch gcc_qmip_disp_ahb_clk = {2788 .halt_reg = 0x33008,2789 .halt_check = BRANCH_HALT_VOTED,2790 .hwcg_reg = 0x33008,2791 .hwcg_bit = 1,2792 .clkr = {2793 .enable_reg = 0x33008,2794 .enable_mask = BIT(0),2795 .hw.init = &(const struct clk_init_data){2796 .name = "gcc_qmip_disp_ahb_clk",2797 .ops = &clk_branch2_ops,2798 },2799 },2800};2801 2802static struct clk_branch gcc_qmip_disp_rot_ahb_clk = {2803 .halt_reg = 0x3300c,2804 .halt_check = BRANCH_HALT_VOTED,2805 .clkr = {2806 .enable_reg = 0x3300c,2807 .enable_mask = BIT(0),2808 .hw.init = &(const struct clk_init_data){2809 .name = "gcc_qmip_disp_rot_ahb_clk",2810 .ops = &clk_branch2_ops,2811 },2812 },2813};2814 2815static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {2816 .halt_reg = 0x34008,2817 .halt_check = BRANCH_HALT_VOTED,2818 .hwcg_reg = 0x34008,2819 .hwcg_bit = 1,2820 .clkr = {2821 .enable_reg = 0x34008,2822 .enable_mask = BIT(0),2823 .hw.init = &(const struct clk_init_data){2824 .name = "gcc_qmip_video_cvp_ahb_clk",2825 .ops = &clk_branch2_ops,2826 },2827 },2828};2829 2830static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {2831 .halt_reg = 0x3400c,2832 .halt_check = BRANCH_HALT_VOTED,2833 .hwcg_reg = 0x3400c,2834 .hwcg_bit = 1,2835 .clkr = {2836 .enable_reg = 0x3400c,2837 .enable_mask = BIT(0),2838 .hw.init = &(const struct clk_init_data){2839 .name = "gcc_qmip_video_vcodec_ahb_clk",2840 .ops = &clk_branch2_ops,2841 },2842 },2843};2844 2845static struct clk_branch gcc_qmip_video_vcpu_ahb_clk = {2846 .halt_reg = 0x34010,2847 .halt_check = BRANCH_HALT_VOTED,2848 .hwcg_reg = 0x34010,2849 .hwcg_bit = 1,2850 .clkr = {2851 .enable_reg = 0x34010,2852 .enable_mask = BIT(0),2853 .hw.init = &(const struct clk_init_data){2854 .name = "gcc_qmip_video_vcpu_ahb_clk",2855 .ops = &clk_branch2_ops,2856 },2857 },2858};2859 2860static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {2861 .halt_reg = 0x23018,2862 .halt_check = BRANCH_HALT_VOTED,2863 .clkr = {2864 .enable_reg = 0x4b008,2865 .enable_mask = BIT(9),2866 .hw.init = &(const struct clk_init_data){2867 .name = "gcc_qupv3_wrap0_core_2x_clk",2868 .ops = &clk_branch2_ops,2869 },2870 },2871};2872 2873static struct clk_branch gcc_qupv3_wrap0_core_clk = {2874 .halt_reg = 0x2300c,2875 .halt_check = BRANCH_HALT_VOTED,2876 .clkr = {2877 .enable_reg = 0x4b008,2878 .enable_mask = BIT(8),2879 .hw.init = &(const struct clk_init_data){2880 .name = "gcc_qupv3_wrap0_core_clk",2881 .ops = &clk_branch2_ops,2882 },2883 },2884};2885 2886static struct clk_branch gcc_qupv3_wrap0_s0_clk = {2887 .halt_reg = 0x2314c,2888 .halt_check = BRANCH_HALT_VOTED,2889 .clkr = {2890 .enable_reg = 0x4b008,2891 .enable_mask = BIT(10),2892 .hw.init = &(const struct clk_init_data){2893 .name = "gcc_qupv3_wrap0_s0_clk",2894 .parent_hws = (const struct clk_hw*[]){2895 &gcc_qupv3_wrap0_s0_clk_src.clkr.hw,2896 },2897 .num_parents = 1,2898 .flags = CLK_SET_RATE_PARENT,2899 .ops = &clk_branch2_ops,2900 },2901 },2902};2903 2904static struct clk_branch gcc_qupv3_wrap0_s1_clk = {2905 .halt_reg = 0x23280,2906 .halt_check = BRANCH_HALT_VOTED,2907 .clkr = {2908 .enable_reg = 0x4b008,2909 .enable_mask = BIT(11),2910 .hw.init = &(const struct clk_init_data){2911 .name = "gcc_qupv3_wrap0_s1_clk",2912 .parent_hws = (const struct clk_hw*[]){2913 &gcc_qupv3_wrap0_s1_clk_src.clkr.hw,2914 },2915 .num_parents = 1,2916 .flags = CLK_SET_RATE_PARENT,2917 .ops = &clk_branch2_ops,2918 },2919 },2920};2921 2922static struct clk_branch gcc_qupv3_wrap0_s2_clk = {2923 .halt_reg = 0x233b4,2924 .halt_check = BRANCH_HALT_VOTED,2925 .clkr = {2926 .enable_reg = 0x4b008,2927 .enable_mask = BIT(12),2928 .hw.init = &(const struct clk_init_data){2929 .name = "gcc_qupv3_wrap0_s2_clk",2930 .parent_hws = (const struct clk_hw*[]){2931 &gcc_qupv3_wrap0_s2_clk_src.clkr.hw,2932 },2933 .num_parents = 1,2934 .flags = CLK_SET_RATE_PARENT,2935 .ops = &clk_branch2_ops,2936 },2937 },2938};2939 2940static struct clk_branch gcc_qupv3_wrap0_s3_clk = {2941 .halt_reg = 0x234e8,2942 .halt_check = BRANCH_HALT_VOTED,2943 .clkr = {2944 .enable_reg = 0x4b008,2945 .enable_mask = BIT(13),2946 .hw.init = &(const struct clk_init_data){2947 .name = "gcc_qupv3_wrap0_s3_clk",2948 .parent_hws = (const struct clk_hw*[]){2949 &gcc_qupv3_wrap0_s3_clk_src.clkr.hw,2950 },2951 .num_parents = 1,2952 .flags = CLK_SET_RATE_PARENT,2953 .ops = &clk_branch2_ops,2954 },2955 },2956};2957 2958static struct clk_branch gcc_qupv3_wrap0_s4_clk = {2959 .halt_reg = 0x2361c,2960 .halt_check = BRANCH_HALT_VOTED,2961 .clkr = {2962 .enable_reg = 0x4b008,2963 .enable_mask = BIT(14),2964 .hw.init = &(const struct clk_init_data){2965 .name = "gcc_qupv3_wrap0_s4_clk",2966 .parent_hws = (const struct clk_hw*[]){2967 &gcc_qupv3_wrap0_s4_clk_src.clkr.hw,2968 },2969 .num_parents = 1,2970 .flags = CLK_SET_RATE_PARENT,2971 .ops = &clk_branch2_ops,2972 },2973 },2974};2975 2976static struct clk_branch gcc_qupv3_wrap0_s5_clk = {2977 .halt_reg = 0x23750,2978 .halt_check = BRANCH_HALT_VOTED,2979 .clkr = {2980 .enable_reg = 0x4b008,2981 .enable_mask = BIT(15),2982 .hw.init = &(const struct clk_init_data){2983 .name = "gcc_qupv3_wrap0_s5_clk",2984 .parent_hws = (const struct clk_hw*[]){2985 &gcc_qupv3_wrap0_s5_clk_src.clkr.hw,2986 },2987 .num_parents = 1,2988 .flags = CLK_SET_RATE_PARENT,2989 .ops = &clk_branch2_ops,2990 },2991 },2992};2993 2994static struct clk_branch gcc_qupv3_wrap0_s6_clk = {2995 .halt_reg = 0x23884,2996 .halt_check = BRANCH_HALT_VOTED,2997 .clkr = {2998 .enable_reg = 0x4b008,2999 .enable_mask = BIT(16),3000 .hw.init = &(const struct clk_init_data){3001 .name = "gcc_qupv3_wrap0_s6_clk",3002 .parent_hws = (const struct clk_hw*[]){3003 &gcc_qupv3_wrap0_s6_clk_src.clkr.hw,3004 },3005 .num_parents = 1,3006 .flags = CLK_SET_RATE_PARENT,3007 .ops = &clk_branch2_ops,3008 },3009 },3010};3011 3012static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {3013 .halt_reg = 0x24018,3014 .halt_check = BRANCH_HALT_VOTED,3015 .clkr = {3016 .enable_reg = 0x4b008,3017 .enable_mask = BIT(18),3018 .hw.init = &(const struct clk_init_data){3019 .name = "gcc_qupv3_wrap1_core_2x_clk",3020 .ops = &clk_branch2_ops,3021 },3022 },3023};3024 3025static struct clk_branch gcc_qupv3_wrap1_core_clk = {3026 .halt_reg = 0x2400c,3027 .halt_check = BRANCH_HALT_VOTED,3028 .clkr = {3029 .enable_reg = 0x4b008,3030 .enable_mask = BIT(19),3031 .hw.init = &(const struct clk_init_data){3032 .name = "gcc_qupv3_wrap1_core_clk",3033 .ops = &clk_branch2_ops,3034 },3035 },3036};3037 3038static struct clk_branch gcc_qupv3_wrap1_s0_clk = {3039 .halt_reg = 0x2414c,3040 .halt_check = BRANCH_HALT_VOTED,3041 .clkr = {3042 .enable_reg = 0x4b008,3043 .enable_mask = BIT(22),3044 .hw.init = &(const struct clk_init_data){3045 .name = "gcc_qupv3_wrap1_s0_clk",3046 .parent_hws = (const struct clk_hw*[]){3047 &gcc_qupv3_wrap1_s0_clk_src.clkr.hw,3048 },3049 .num_parents = 1,3050 .flags = CLK_SET_RATE_PARENT,3051 .ops = &clk_branch2_ops,3052 },3053 },3054};3055 3056static struct clk_branch gcc_qupv3_wrap1_s1_clk = {3057 .halt_reg = 0x24280,3058 .halt_check = BRANCH_HALT_VOTED,3059 .clkr = {3060 .enable_reg = 0x4b008,3061 .enable_mask = BIT(23),3062 .hw.init = &(const struct clk_init_data){3063 .name = "gcc_qupv3_wrap1_s1_clk",3064 .parent_hws = (const struct clk_hw*[]){3065 &gcc_qupv3_wrap1_s1_clk_src.clkr.hw,3066 },3067 .num_parents = 1,3068 .flags = CLK_SET_RATE_PARENT,3069 .ops = &clk_branch2_ops,3070 },3071 },3072};3073 3074static struct clk_branch gcc_qupv3_wrap1_s2_clk = {3075 .halt_reg = 0x243b4,3076 .halt_check = BRANCH_HALT_VOTED,3077 .clkr = {3078 .enable_reg = 0x4b008,3079 .enable_mask = BIT(24),3080 .hw.init = &(const struct clk_init_data){3081 .name = "gcc_qupv3_wrap1_s2_clk",3082 .parent_hws = (const struct clk_hw*[]){3083 &gcc_qupv3_wrap1_s2_clk_src.clkr.hw,3084 },3085 .num_parents = 1,3086 .flags = CLK_SET_RATE_PARENT,3087 .ops = &clk_branch2_ops,3088 },3089 },3090};3091 3092static struct clk_branch gcc_qupv3_wrap1_s3_clk = {3093 .halt_reg = 0x244e8,3094 .halt_check = BRANCH_HALT_VOTED,3095 .clkr = {3096 .enable_reg = 0x4b008,3097 .enable_mask = BIT(25),3098 .hw.init = &(const struct clk_init_data){3099 .name = "gcc_qupv3_wrap1_s3_clk",3100 .parent_hws = (const struct clk_hw*[]){3101 &gcc_qupv3_wrap1_s3_clk_src.clkr.hw,3102 },3103 .num_parents = 1,3104 .flags = CLK_SET_RATE_PARENT,3105 .ops = &clk_branch2_ops,3106 },3107 },3108};3109 3110static struct clk_branch gcc_qupv3_wrap1_s4_clk = {3111 .halt_reg = 0x2461c,3112 .halt_check = BRANCH_HALT_VOTED,3113 .clkr = {3114 .enable_reg = 0x4b008,3115 .enable_mask = BIT(26),3116 .hw.init = &(const struct clk_init_data){3117 .name = "gcc_qupv3_wrap1_s4_clk",3118 .parent_hws = (const struct clk_hw*[]){3119 &gcc_qupv3_wrap1_s4_clk_src.clkr.hw,3120 },3121 .num_parents = 1,3122 .flags = CLK_SET_RATE_PARENT,3123 .ops = &clk_branch2_ops,3124 },3125 },3126};3127 3128static struct clk_branch gcc_qupv3_wrap1_s5_clk = {3129 .halt_reg = 0x24750,3130 .halt_check = BRANCH_HALT_VOTED,3131 .clkr = {3132 .enable_reg = 0x4b008,3133 .enable_mask = BIT(27),3134 .hw.init = &(const struct clk_init_data){3135 .name = "gcc_qupv3_wrap1_s5_clk",3136 .parent_hws = (const struct clk_hw*[]){3137 &gcc_qupv3_wrap1_s5_clk_src.clkr.hw,3138 },3139 .num_parents = 1,3140 .flags = CLK_SET_RATE_PARENT,3141 .ops = &clk_branch2_ops,3142 },3143 },3144};3145 3146static struct clk_branch gcc_qupv3_wrap1_s6_clk = {3147 .halt_reg = 0x24884,3148 .halt_check = BRANCH_HALT_VOTED,3149 .clkr = {3150 .enable_reg = 0x4b018,3151 .enable_mask = BIT(27),3152 .hw.init = &(const struct clk_init_data){3153 .name = "gcc_qupv3_wrap1_s6_clk",3154 .parent_hws = (const struct clk_hw*[]){3155 &gcc_qupv3_wrap1_s6_clk_src.clkr.hw,3156 },3157 .num_parents = 1,3158 .flags = CLK_SET_RATE_PARENT,3159 .ops = &clk_branch2_ops,3160 },3161 },3162};3163 3164static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = {3165 .halt_reg = 0x2a018,3166 .halt_check = BRANCH_HALT_VOTED,3167 .clkr = {3168 .enable_reg = 0x4b010,3169 .enable_mask = BIT(3),3170 .hw.init = &(const struct clk_init_data){3171 .name = "gcc_qupv3_wrap2_core_2x_clk",3172 .ops = &clk_branch2_ops,3173 },3174 },3175};3176 3177static struct clk_branch gcc_qupv3_wrap2_core_clk = {3178 .halt_reg = 0x2a00c,3179 .halt_check = BRANCH_HALT_VOTED,3180 .clkr = {3181 .enable_reg = 0x4b010,3182 .enable_mask = BIT(0),3183 .hw.init = &(const struct clk_init_data){3184 .name = "gcc_qupv3_wrap2_core_clk",3185 .ops = &clk_branch2_ops,3186 },3187 },3188};3189 3190static struct clk_branch gcc_qupv3_wrap2_s0_clk = {3191 .halt_reg = 0x2a14c,3192 .halt_check = BRANCH_HALT_VOTED,3193 .clkr = {3194 .enable_reg = 0x4b010,3195 .enable_mask = BIT(4),3196 .hw.init = &(const struct clk_init_data){3197 .name = "gcc_qupv3_wrap2_s0_clk",3198 .parent_hws = (const struct clk_hw*[]){3199 &gcc_qupv3_wrap2_s0_clk_src.clkr.hw,3200 },3201 .num_parents = 1,3202 .flags = CLK_SET_RATE_PARENT,3203 .ops = &clk_branch2_ops,3204 },3205 },3206};3207 3208static struct clk_branch gcc_qupv3_wrap2_s1_clk = {3209 .halt_reg = 0x2a280,3210 .halt_check = BRANCH_HALT_VOTED,3211 .clkr = {3212 .enable_reg = 0x4b010,3213 .enable_mask = BIT(5),3214 .hw.init = &(const struct clk_init_data){3215 .name = "gcc_qupv3_wrap2_s1_clk",3216 .parent_hws = (const struct clk_hw*[]){3217 &gcc_qupv3_wrap2_s1_clk_src.clkr.hw,3218 },3219 .num_parents = 1,3220 .flags = CLK_SET_RATE_PARENT,3221 .ops = &clk_branch2_ops,3222 },3223 },3224};3225 3226static struct clk_branch gcc_qupv3_wrap2_s2_clk = {3227 .halt_reg = 0x2a3b4,3228 .halt_check = BRANCH_HALT_VOTED,3229 .clkr = {3230 .enable_reg = 0x4b010,3231 .enable_mask = BIT(6),3232 .hw.init = &(const struct clk_init_data){3233 .name = "gcc_qupv3_wrap2_s2_clk",3234 .parent_hws = (const struct clk_hw*[]){3235 &gcc_qupv3_wrap2_s2_clk_src.clkr.hw,3236 },3237 .num_parents = 1,3238 .flags = CLK_SET_RATE_PARENT,3239 .ops = &clk_branch2_ops,3240 },3241 },3242};3243 3244static struct clk_branch gcc_qupv3_wrap2_s3_clk = {3245 .halt_reg = 0x2a4e8,3246 .halt_check = BRANCH_HALT_VOTED,3247 .clkr = {3248 .enable_reg = 0x4b010,3249 .enable_mask = BIT(7),3250 .hw.init = &(const struct clk_init_data){3251 .name = "gcc_qupv3_wrap2_s3_clk",3252 .parent_hws = (const struct clk_hw*[]){3253 &gcc_qupv3_wrap2_s3_clk_src.clkr.hw,3254 },3255 .num_parents = 1,3256 .flags = CLK_SET_RATE_PARENT,3257 .ops = &clk_branch2_ops,3258 },3259 },3260};3261 3262static struct clk_branch gcc_qupv3_wrap2_s4_clk = {3263 .halt_reg = 0x2a61c,3264 .halt_check = BRANCH_HALT_VOTED,3265 .clkr = {3266 .enable_reg = 0x4b010,3267 .enable_mask = BIT(8),3268 .hw.init = &(const struct clk_init_data){3269 .name = "gcc_qupv3_wrap2_s4_clk",3270 .parent_hws = (const struct clk_hw*[]){3271 &gcc_qupv3_wrap2_s4_clk_src.clkr.hw,3272 },3273 .num_parents = 1,3274 .flags = CLK_SET_RATE_PARENT,3275 .ops = &clk_branch2_ops,3276 },3277 },3278};3279 3280static struct clk_branch gcc_qupv3_wrap2_s5_clk = {3281 .halt_reg = 0x2a750,3282 .halt_check = BRANCH_HALT_VOTED,3283 .clkr = {3284 .enable_reg = 0x4b010,3285 .enable_mask = BIT(9),3286 .hw.init = &(const struct clk_init_data){3287 .name = "gcc_qupv3_wrap2_s5_clk",3288 .parent_hws = (const struct clk_hw*[]){3289 &gcc_qupv3_wrap2_s5_clk_src.clkr.hw,3290 },3291 .num_parents = 1,3292 .flags = CLK_SET_RATE_PARENT,3293 .ops = &clk_branch2_ops,3294 },3295 },3296};3297 3298static struct clk_branch gcc_qupv3_wrap2_s6_clk = {3299 .halt_reg = 0x2a884,3300 .halt_check = BRANCH_HALT_VOTED,3301 .clkr = {3302 .enable_reg = 0x4b018,3303 .enable_mask = BIT(29),3304 .hw.init = &(const struct clk_init_data){3305 .name = "gcc_qupv3_wrap2_s6_clk",3306 .parent_hws = (const struct clk_hw*[]){3307 &gcc_qupv3_wrap2_s6_clk_src.clkr.hw,3308 },3309 .num_parents = 1,3310 .flags = CLK_SET_RATE_PARENT,3311 .ops = &clk_branch2_ops,3312 },3313 },3314};3315 3316static struct clk_branch gcc_qupv3_wrap3_core_2x_clk = {3317 .halt_reg = 0xc4018,3318 .halt_check = BRANCH_HALT_VOTED,3319 .clkr = {3320 .enable_reg = 0x4b000,3321 .enable_mask = BIT(24),3322 .hw.init = &(const struct clk_init_data){3323 .name = "gcc_qupv3_wrap3_core_2x_clk",3324 .ops = &clk_branch2_ops,3325 },3326 },3327};3328 3329static struct clk_branch gcc_qupv3_wrap3_core_clk = {3330 .halt_reg = 0xc400c,3331 .halt_check = BRANCH_HALT_VOTED,3332 .clkr = {3333 .enable_reg = 0x4b000,3334 .enable_mask = BIT(23),3335 .hw.init = &(const struct clk_init_data){3336 .name = "gcc_qupv3_wrap3_core_clk",3337 .ops = &clk_branch2_ops,3338 },3339 },3340};3341 3342static struct clk_branch gcc_qupv3_wrap3_qspi_clk = {3343 .halt_reg = 0xc4280,3344 .halt_check = BRANCH_HALT_VOTED,3345 .clkr = {3346 .enable_reg = 0x4b000,3347 .enable_mask = BIT(26),3348 .hw.init = &(const struct clk_init_data){3349 .name = "gcc_qupv3_wrap3_qspi_clk",3350 .parent_hws = (const struct clk_hw*[]){3351 &gcc_qupv3_wrap3_s0_clk_src.clkr.hw,3352 },3353 .num_parents = 1,3354 .flags = CLK_SET_RATE_PARENT,3355 .ops = &clk_branch2_ops,3356 },3357 },3358};3359 3360static struct clk_branch gcc_qupv3_wrap3_s0_clk = {3361 .halt_reg = 0xc414c,3362 .halt_check = BRANCH_HALT_VOTED,3363 .clkr = {3364 .enable_reg = 0x4b000,3365 .enable_mask = BIT(25),3366 .hw.init = &(const struct clk_init_data){3367 .name = "gcc_qupv3_wrap3_s0_clk",3368 .parent_hws = (const struct clk_hw*[]){3369 &gcc_qupv3_wrap3_s0_div_clk_src.clkr.hw,3370 },3371 .num_parents = 1,3372 .flags = CLK_SET_RATE_PARENT,3373 .ops = &clk_branch2_ops,3374 },3375 },3376};3377 3378static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {3379 .halt_reg = 0x23004,3380 .halt_check = BRANCH_HALT_VOTED,3381 .hwcg_reg = 0x23004,3382 .hwcg_bit = 1,3383 .clkr = {3384 .enable_reg = 0x4b008,3385 .enable_mask = BIT(6),3386 .hw.init = &(const struct clk_init_data){3387 .name = "gcc_qupv3_wrap_0_m_ahb_clk",3388 .ops = &clk_branch2_ops,3389 },3390 },3391};3392 3393static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {3394 .halt_reg = 0x23008,3395 .halt_check = BRANCH_HALT_VOTED,3396 .hwcg_reg = 0x23008,3397 .hwcg_bit = 1,3398 .clkr = {3399 .enable_reg = 0x4b008,3400 .enable_mask = BIT(7),3401 .hw.init = &(const struct clk_init_data){3402 .name = "gcc_qupv3_wrap_0_s_ahb_clk",3403 .ops = &clk_branch2_ops,3404 },3405 },3406};3407 3408static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {3409 .halt_reg = 0x24004,3410 .halt_check = BRANCH_HALT_VOTED,3411 .hwcg_reg = 0x24004,3412 .hwcg_bit = 1,3413 .clkr = {3414 .enable_reg = 0x4b008,3415 .enable_mask = BIT(20),3416 .hw.init = &(const struct clk_init_data){3417 .name = "gcc_qupv3_wrap_1_m_ahb_clk",3418 .ops = &clk_branch2_ops,3419 },3420 },3421};3422 3423static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {3424 .halt_reg = 0x24008,3425 .halt_check = BRANCH_HALT_VOTED,3426 .hwcg_reg = 0x24008,3427 .hwcg_bit = 1,3428 .clkr = {3429 .enable_reg = 0x4b008,3430 .enable_mask = BIT(21),3431 .hw.init = &(const struct clk_init_data){3432 .name = "gcc_qupv3_wrap_1_s_ahb_clk",3433 .ops = &clk_branch2_ops,3434 },3435 },3436};3437 3438static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {3439 .halt_reg = 0x2a004,3440 .halt_check = BRANCH_HALT_VOTED,3441 .hwcg_reg = 0x2a004,3442 .hwcg_bit = 1,3443 .clkr = {3444 .enable_reg = 0x4b010,3445 .enable_mask = BIT(2),3446 .hw.init = &(const struct clk_init_data){3447 .name = "gcc_qupv3_wrap_2_m_ahb_clk",3448 .ops = &clk_branch2_ops,3449 },3450 },3451};3452 3453static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {3454 .halt_reg = 0x2a008,3455 .halt_check = BRANCH_HALT_VOTED,3456 .hwcg_reg = 0x2a008,3457 .hwcg_bit = 1,3458 .clkr = {3459 .enable_reg = 0x4b010,3460 .enable_mask = BIT(1),3461 .hw.init = &(const struct clk_init_data){3462 .name = "gcc_qupv3_wrap_2_s_ahb_clk",3463 .ops = &clk_branch2_ops,3464 },3465 },3466};3467 3468static struct clk_branch gcc_qupv3_wrap_3_m_ahb_clk = {3469 .halt_reg = 0xc4004,3470 .halt_check = BRANCH_HALT_VOTED,3471 .hwcg_reg = 0xc4004,3472 .hwcg_bit = 1,3473 .clkr = {3474 .enable_reg = 0x4b000,3475 .enable_mask = BIT(27),3476 .hw.init = &(const struct clk_init_data){3477 .name = "gcc_qupv3_wrap_3_m_ahb_clk",3478 .ops = &clk_branch2_ops,3479 },3480 },3481};3482 3483static struct clk_branch gcc_qupv3_wrap_3_s_ahb_clk = {3484 .halt_reg = 0xc4008,3485 .halt_check = BRANCH_HALT_VOTED,3486 .hwcg_reg = 0xc4008,3487 .hwcg_bit = 1,3488 .clkr = {3489 .enable_reg = 0x4b000,3490 .enable_mask = BIT(20),3491 .hw.init = &(const struct clk_init_data){3492 .name = "gcc_qupv3_wrap_3_s_ahb_clk",3493 .ops = &clk_branch2_ops,3494 },3495 },3496};3497 3498static struct clk_branch gcc_sdcc1_ahb_clk = {3499 .halt_reg = 0x2000c,3500 .halt_check = BRANCH_HALT,3501 .clkr = {3502 .enable_reg = 0x2000c,3503 .enable_mask = BIT(0),3504 .hw.init = &(const struct clk_init_data){3505 .name = "gcc_sdcc1_ahb_clk",3506 .ops = &clk_branch2_ops,3507 },3508 },3509};3510 3511static struct clk_branch gcc_sdcc1_apps_clk = {3512 .halt_reg = 0x20004,3513 .halt_check = BRANCH_HALT,3514 .clkr = {3515 .enable_reg = 0x20004,3516 .enable_mask = BIT(0),3517 .hw.init = &(const struct clk_init_data){3518 .name = "gcc_sdcc1_apps_clk",3519 .parent_hws = (const struct clk_hw*[]){3520 &gcc_sdcc1_apps_clk_src.clkr.hw,3521 },3522 .num_parents = 1,3523 .flags = CLK_SET_RATE_PARENT,3524 .ops = &clk_branch2_ops,3525 },3526 },3527};3528 3529static struct clk_branch gcc_sdcc1_ice_core_clk = {3530 .halt_reg = 0x20044,3531 .halt_check = BRANCH_HALT_VOTED,3532 .hwcg_reg = 0x20044,3533 .hwcg_bit = 1,3534 .clkr = {3535 .enable_reg = 0x20044,3536 .enable_mask = BIT(0),3537 .hw.init = &(const struct clk_init_data){3538 .name = "gcc_sdcc1_ice_core_clk",3539 .parent_hws = (const struct clk_hw*[]){3540 &gcc_sdcc1_ice_core_clk_src.clkr.hw,3541 },3542 .num_parents = 1,3543 .flags = CLK_SET_RATE_PARENT,3544 .ops = &clk_branch2_ops,3545 },3546 },3547};3548 3549static struct clk_branch gcc_sgmi_clkref_en = {3550 .halt_reg = 0x9c034,3551 .halt_check = BRANCH_HALT_DELAY,3552 .clkr = {3553 .enable_reg = 0x9c034,3554 .enable_mask = BIT(0),3555 .hw.init = &(const struct clk_init_data){3556 .name = "gcc_sgmi_clkref_en",3557 .ops = &clk_branch2_ops,3558 },3559 },3560};3561 3562static struct clk_branch gcc_tscss_ahb_clk = {3563 .halt_reg = 0x21024,3564 .halt_check = BRANCH_HALT,3565 .clkr = {3566 .enable_reg = 0x21024,3567 .enable_mask = BIT(0),3568 .hw.init = &(const struct clk_init_data){3569 .name = "gcc_tscss_ahb_clk",3570 .ops = &clk_branch2_ops,3571 },3572 },3573};3574 3575static struct clk_branch gcc_tscss_etu_clk = {3576 .halt_reg = 0x21020,3577 .halt_check = BRANCH_HALT,3578 .clkr = {3579 .enable_reg = 0x21020,3580 .enable_mask = BIT(0),3581 .hw.init = &(const struct clk_init_data){3582 .name = "gcc_tscss_etu_clk",3583 .ops = &clk_branch2_ops,3584 },3585 },3586};3587 3588static struct clk_branch gcc_tscss_global_cntr_clk = {3589 .halt_reg = 0x21004,3590 .halt_check = BRANCH_HALT_VOTED,3591 .clkr = {3592 .enable_reg = 0x21004,3593 .enable_mask = BIT(0),3594 .hw.init = &(const struct clk_init_data){3595 .name = "gcc_tscss_global_cntr_clk",3596 .parent_hws = (const struct clk_hw*[]){3597 &gcc_tscss_cntr_clk_src.clkr.hw,3598 },3599 .num_parents = 1,3600 .flags = CLK_SET_RATE_PARENT,3601 .ops = &clk_branch2_ops,3602 },3603 },3604};3605 3606static struct clk_branch gcc_ufs_card_ahb_clk = {3607 .halt_reg = 0x81020,3608 .halt_check = BRANCH_HALT_VOTED,3609 .hwcg_reg = 0x81020,3610 .hwcg_bit = 1,3611 .clkr = {3612 .enable_reg = 0x81020,3613 .enable_mask = BIT(0),3614 .hw.init = &(const struct clk_init_data){3615 .name = "gcc_ufs_card_ahb_clk",3616 .ops = &clk_branch2_ops,3617 },3618 },3619};3620 3621static struct clk_branch gcc_ufs_card_axi_clk = {3622 .halt_reg = 0x81018,3623 .halt_check = BRANCH_HALT_VOTED,3624 .hwcg_reg = 0x81018,3625 .hwcg_bit = 1,3626 .clkr = {3627 .enable_reg = 0x81018,3628 .enable_mask = BIT(0),3629 .hw.init = &(const struct clk_init_data){3630 .name = "gcc_ufs_card_axi_clk",3631 .parent_hws = (const struct clk_hw*[]){3632 &gcc_ufs_card_axi_clk_src.clkr.hw,3633 },3634 .num_parents = 1,3635 .flags = CLK_SET_RATE_PARENT,3636 .ops = &clk_branch2_ops,3637 },3638 },3639};3640 3641static struct clk_branch gcc_ufs_card_ice_core_clk = {3642 .halt_reg = 0x8106c,3643 .halt_check = BRANCH_HALT_VOTED,3644 .hwcg_reg = 0x8106c,3645 .hwcg_bit = 1,3646 .clkr = {3647 .enable_reg = 0x8106c,3648 .enable_mask = BIT(0),3649 .hw.init = &(const struct clk_init_data){3650 .name = "gcc_ufs_card_ice_core_clk",3651 .parent_hws = (const struct clk_hw*[]){3652 &gcc_ufs_card_ice_core_clk_src.clkr.hw,3653 },3654 .num_parents = 1,3655 .flags = CLK_SET_RATE_PARENT,3656 .ops = &clk_branch2_ops,3657 },3658 },3659};3660 3661static struct clk_branch gcc_ufs_card_phy_aux_clk = {3662 .halt_reg = 0x810a4,3663 .halt_check = BRANCH_HALT_VOTED,3664 .hwcg_reg = 0x810a4,3665 .hwcg_bit = 1,3666 .clkr = {3667 .enable_reg = 0x810a4,3668 .enable_mask = BIT(0),3669 .hw.init = &(const struct clk_init_data){3670 .name = "gcc_ufs_card_phy_aux_clk",3671 .parent_hws = (const struct clk_hw*[]){3672 &gcc_ufs_card_phy_aux_clk_src.clkr.hw,3673 },3674 .num_parents = 1,3675 .flags = CLK_SET_RATE_PARENT,3676 .ops = &clk_branch2_ops,3677 },3678 },3679};3680 3681static struct clk_branch gcc_ufs_card_rx_symbol_0_clk = {3682 .halt_reg = 0x81028,3683 .halt_check = BRANCH_HALT_DELAY,3684 .clkr = {3685 .enable_reg = 0x81028,3686 .enable_mask = BIT(0),3687 .hw.init = &(const struct clk_init_data){3688 .name = "gcc_ufs_card_rx_symbol_0_clk",3689 .parent_hws = (const struct clk_hw*[]){3690 &gcc_ufs_card_rx_symbol_0_clk_src.clkr.hw,3691 },3692 .num_parents = 1,3693 .flags = CLK_SET_RATE_PARENT,3694 .ops = &clk_branch2_ops,3695 },3696 },3697};3698 3699static struct clk_branch gcc_ufs_card_rx_symbol_1_clk = {3700 .halt_reg = 0x810c0,3701 .halt_check = BRANCH_HALT_DELAY,3702 .clkr = {3703 .enable_reg = 0x810c0,3704 .enable_mask = BIT(0),3705 .hw.init = &(const struct clk_init_data){3706 .name = "gcc_ufs_card_rx_symbol_1_clk",3707 .parent_hws = (const struct clk_hw*[]){3708 &gcc_ufs_card_rx_symbol_1_clk_src.clkr.hw,3709 },3710 .num_parents = 1,3711 .flags = CLK_SET_RATE_PARENT,3712 .ops = &clk_branch2_ops,3713 },3714 },3715};3716 3717static struct clk_branch gcc_ufs_card_tx_symbol_0_clk = {3718 .halt_reg = 0x81024,3719 .halt_check = BRANCH_HALT_DELAY,3720 .clkr = {3721 .enable_reg = 0x81024,3722 .enable_mask = BIT(0),3723 .hw.init = &(const struct clk_init_data){3724 .name = "gcc_ufs_card_tx_symbol_0_clk",3725 .parent_hws = (const struct clk_hw*[]){3726 &gcc_ufs_card_tx_symbol_0_clk_src.clkr.hw,3727 },3728 .num_parents = 1,3729 .flags = CLK_SET_RATE_PARENT,3730 .ops = &clk_branch2_ops,3731 },3732 },3733};3734 3735static struct clk_branch gcc_ufs_card_unipro_core_clk = {3736 .halt_reg = 0x81064,3737 .halt_check = BRANCH_HALT_VOTED,3738 .hwcg_reg = 0x81064,3739 .hwcg_bit = 1,3740 .clkr = {3741 .enable_reg = 0x81064,3742 .enable_mask = BIT(0),3743 .hw.init = &(const struct clk_init_data){3744 .name = "gcc_ufs_card_unipro_core_clk",3745 .parent_hws = (const struct clk_hw*[]){3746 &gcc_ufs_card_unipro_core_clk_src.clkr.hw,3747 },3748 .num_parents = 1,3749 .flags = CLK_SET_RATE_PARENT,3750 .ops = &clk_branch2_ops,3751 },3752 },3753};3754 3755static struct clk_branch gcc_ufs_phy_ahb_clk = {3756 .halt_reg = 0x83020,3757 .halt_check = BRANCH_HALT_VOTED,3758 .hwcg_reg = 0x83020,3759 .hwcg_bit = 1,3760 .clkr = {3761 .enable_reg = 0x83020,3762 .enable_mask = BIT(0),3763 .hw.init = &(const struct clk_init_data){3764 .name = "gcc_ufs_phy_ahb_clk",3765 .ops = &clk_branch2_ops,3766 },3767 },3768};3769 3770static struct clk_branch gcc_ufs_phy_axi_clk = {3771 .halt_reg = 0x83018,3772 .halt_check = BRANCH_HALT_VOTED,3773 .hwcg_reg = 0x83018,3774 .hwcg_bit = 1,3775 .clkr = {3776 .enable_reg = 0x83018,3777 .enable_mask = BIT(0),3778 .hw.init = &(const struct clk_init_data){3779 .name = "gcc_ufs_phy_axi_clk",3780 .parent_hws = (const struct clk_hw*[]){3781 &gcc_ufs_phy_axi_clk_src.clkr.hw,3782 },3783 .num_parents = 1,3784 .flags = CLK_SET_RATE_PARENT,3785 .ops = &clk_branch2_ops,3786 },3787 },3788};3789 3790static struct clk_branch gcc_ufs_phy_ice_core_clk = {3791 .halt_reg = 0x8306c,3792 .halt_check = BRANCH_HALT_VOTED,3793 .hwcg_reg = 0x8306c,3794 .hwcg_bit = 1,3795 .clkr = {3796 .enable_reg = 0x8306c,3797 .enable_mask = BIT(0),3798 .hw.init = &(const struct clk_init_data){3799 .name = "gcc_ufs_phy_ice_core_clk",3800 .parent_hws = (const struct clk_hw*[]){3801 &gcc_ufs_phy_ice_core_clk_src.clkr.hw,3802 },3803 .num_parents = 1,3804 .flags = CLK_SET_RATE_PARENT,3805 .ops = &clk_branch2_ops,3806 },3807 },3808};3809 3810static struct clk_branch gcc_ufs_phy_phy_aux_clk = {3811 .halt_reg = 0x830a4,3812 .halt_check = BRANCH_HALT_VOTED,3813 .hwcg_reg = 0x830a4,3814 .hwcg_bit = 1,3815 .clkr = {3816 .enable_reg = 0x830a4,3817 .enable_mask = BIT(0),3818 .hw.init = &(const struct clk_init_data){3819 .name = "gcc_ufs_phy_phy_aux_clk",3820 .parent_hws = (const struct clk_hw*[]){3821 &gcc_ufs_phy_phy_aux_clk_src.clkr.hw,3822 },3823 .num_parents = 1,3824 .flags = CLK_SET_RATE_PARENT,3825 .ops = &clk_branch2_ops,3826 },3827 },3828};3829 3830static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {3831 .halt_reg = 0x83028,3832 .halt_check = BRANCH_HALT_DELAY,3833 .clkr = {3834 .enable_reg = 0x83028,3835 .enable_mask = BIT(0),3836 .hw.init = &(const struct clk_init_data){3837 .name = "gcc_ufs_phy_rx_symbol_0_clk",3838 .parent_hws = (const struct clk_hw*[]){3839 &gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw,3840 },3841 .num_parents = 1,3842 .flags = CLK_SET_RATE_PARENT,3843 .ops = &clk_branch2_ops,3844 },3845 },3846};3847 3848static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {3849 .halt_reg = 0x830c0,3850 .halt_check = BRANCH_HALT_DELAY,3851 .clkr = {3852 .enable_reg = 0x830c0,3853 .enable_mask = BIT(0),3854 .hw.init = &(const struct clk_init_data){3855 .name = "gcc_ufs_phy_rx_symbol_1_clk",3856 .parent_hws = (const struct clk_hw*[]){3857 &gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw,3858 },3859 .num_parents = 1,3860 .flags = CLK_SET_RATE_PARENT,3861 .ops = &clk_branch2_ops,3862 },3863 },3864};3865 3866static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {3867 .halt_reg = 0x83024,3868 .halt_check = BRANCH_HALT_DELAY,3869 .clkr = {3870 .enable_reg = 0x83024,3871 .enable_mask = BIT(0),3872 .hw.init = &(const struct clk_init_data){3873 .name = "gcc_ufs_phy_tx_symbol_0_clk",3874 .parent_hws = (const struct clk_hw*[]){3875 &gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw,3876 },3877 .num_parents = 1,3878 .flags = CLK_SET_RATE_PARENT,3879 .ops = &clk_branch2_ops,3880 },3881 },3882};3883 3884static struct clk_branch gcc_ufs_phy_unipro_core_clk = {3885 .halt_reg = 0x83064,3886 .halt_check = BRANCH_HALT_VOTED,3887 .hwcg_reg = 0x83064,3888 .hwcg_bit = 1,3889 .clkr = {3890 .enable_reg = 0x83064,3891 .enable_mask = BIT(0),3892 .hw.init = &(const struct clk_init_data){3893 .name = "gcc_ufs_phy_unipro_core_clk",3894 .parent_hws = (const struct clk_hw*[]){3895 &gcc_ufs_phy_unipro_core_clk_src.clkr.hw,3896 },3897 .num_parents = 1,3898 .flags = CLK_SET_RATE_PARENT,3899 .ops = &clk_branch2_ops,3900 },3901 },3902};3903 3904static struct clk_branch gcc_usb20_master_clk = {3905 .halt_reg = 0x1c018,3906 .halt_check = BRANCH_HALT,3907 .clkr = {3908 .enable_reg = 0x1c018,3909 .enable_mask = BIT(0),3910 .hw.init = &(const struct clk_init_data){3911 .name = "gcc_usb20_master_clk",3912 .parent_hws = (const struct clk_hw*[]){3913 &gcc_usb20_master_clk_src.clkr.hw,3914 },3915 .num_parents = 1,3916 .flags = CLK_SET_RATE_PARENT,3917 .ops = &clk_branch2_ops,3918 },3919 },3920};3921 3922static struct clk_branch gcc_usb20_mock_utmi_clk = {3923 .halt_reg = 0x1c024,3924 .halt_check = BRANCH_HALT,3925 .clkr = {3926 .enable_reg = 0x1c024,3927 .enable_mask = BIT(0),3928 .hw.init = &(const struct clk_init_data){3929 .name = "gcc_usb20_mock_utmi_clk",3930 .parent_hws = (const struct clk_hw*[]){3931 &gcc_usb20_mock_utmi_postdiv_clk_src.clkr.hw,3932 },3933 .num_parents = 1,3934 .flags = CLK_SET_RATE_PARENT,3935 .ops = &clk_branch2_ops,3936 },3937 },3938};3939 3940static struct clk_branch gcc_usb20_sleep_clk = {3941 .halt_reg = 0x1c020,3942 .halt_check = BRANCH_HALT,3943 .clkr = {3944 .enable_reg = 0x1c020,3945 .enable_mask = BIT(0),3946 .hw.init = &(const struct clk_init_data){3947 .name = "gcc_usb20_sleep_clk",3948 .ops = &clk_branch2_ops,3949 },3950 },3951};3952 3953static struct clk_branch gcc_usb30_prim_master_clk = {3954 .halt_reg = 0x1b018,3955 .halt_check = BRANCH_HALT,3956 .clkr = {3957 .enable_reg = 0x1b018,3958 .enable_mask = BIT(0),3959 .hw.init = &(const struct clk_init_data){3960 .name = "gcc_usb30_prim_master_clk",3961 .parent_hws = (const struct clk_hw*[]){3962 &gcc_usb30_prim_master_clk_src.clkr.hw,3963 },3964 .num_parents = 1,3965 .flags = CLK_SET_RATE_PARENT,3966 .ops = &clk_branch2_ops,3967 },3968 },3969};3970 3971static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {3972 .halt_reg = 0x1b024,3973 .halt_check = BRANCH_HALT,3974 .clkr = {3975 .enable_reg = 0x1b024,3976 .enable_mask = BIT(0),3977 .hw.init = &(const struct clk_init_data){3978 .name = "gcc_usb30_prim_mock_utmi_clk",3979 .parent_hws = (const struct clk_hw*[]){3980 &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,3981 },3982 .num_parents = 1,3983 .flags = CLK_SET_RATE_PARENT,3984 .ops = &clk_branch2_ops,3985 },3986 },3987};3988 3989static struct clk_branch gcc_usb30_prim_sleep_clk = {3990 .halt_reg = 0x1b020,3991 .halt_check = BRANCH_HALT,3992 .clkr = {3993 .enable_reg = 0x1b020,3994 .enable_mask = BIT(0),3995 .hw.init = &(const struct clk_init_data){3996 .name = "gcc_usb30_prim_sleep_clk",3997 .ops = &clk_branch2_ops,3998 },3999 },4000};4001 4002static struct clk_branch gcc_usb30_sec_master_clk = {4003 .halt_reg = 0x2f018,4004 .halt_check = BRANCH_HALT,4005 .clkr = {4006 .enable_reg = 0x2f018,4007 .enable_mask = BIT(0),4008 .hw.init = &(const struct clk_init_data){4009 .name = "gcc_usb30_sec_master_clk",4010 .parent_hws = (const struct clk_hw*[]){4011 &gcc_usb30_sec_master_clk_src.clkr.hw,4012 },4013 .num_parents = 1,4014 .flags = CLK_SET_RATE_PARENT,4015 .ops = &clk_branch2_ops,4016 },4017 },4018};4019 4020static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {4021 .halt_reg = 0x2f024,4022 .halt_check = BRANCH_HALT,4023 .clkr = {4024 .enable_reg = 0x2f024,4025 .enable_mask = BIT(0),4026 .hw.init = &(const struct clk_init_data){4027 .name = "gcc_usb30_sec_mock_utmi_clk",4028 .parent_hws = (const struct clk_hw*[]){4029 &gcc_usb30_sec_mock_utmi_postdiv_clk_src.clkr.hw,4030 },4031 .num_parents = 1,4032 .flags = CLK_SET_RATE_PARENT,4033 .ops = &clk_branch2_ops,4034 },4035 },4036};4037 4038static struct clk_branch gcc_usb30_sec_sleep_clk = {4039 .halt_reg = 0x2f020,4040 .halt_check = BRANCH_HALT,4041 .clkr = {4042 .enable_reg = 0x2f020,4043 .enable_mask = BIT(0),4044 .hw.init = &(const struct clk_init_data){4045 .name = "gcc_usb30_sec_sleep_clk",4046 .ops = &clk_branch2_ops,4047 },4048 },4049};4050 4051static struct clk_branch gcc_usb3_prim_phy_aux_clk = {4052 .halt_reg = 0x1b05c,4053 .halt_check = BRANCH_HALT,4054 .clkr = {4055 .enable_reg = 0x1b05c,4056 .enable_mask = BIT(0),4057 .hw.init = &(const struct clk_init_data){4058 .name = "gcc_usb3_prim_phy_aux_clk",4059 .parent_hws = (const struct clk_hw*[]){4060 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,4061 },4062 .num_parents = 1,4063 .flags = CLK_SET_RATE_PARENT,4064 .ops = &clk_branch2_ops,4065 },4066 },4067};4068 4069static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {4070 .halt_reg = 0x1b060,4071 .halt_check = BRANCH_HALT,4072 .clkr = {4073 .enable_reg = 0x1b060,4074 .enable_mask = BIT(0),4075 .hw.init = &(const struct clk_init_data){4076 .name = "gcc_usb3_prim_phy_com_aux_clk",4077 .parent_hws = (const struct clk_hw*[]){4078 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,4079 },4080 .num_parents = 1,4081 .flags = CLK_SET_RATE_PARENT,4082 .ops = &clk_branch2_ops,4083 },4084 },4085};4086 4087static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {4088 .halt_reg = 0x1b064,4089 .halt_check = BRANCH_HALT_DELAY,4090 .hwcg_reg = 0x1b064,4091 .hwcg_bit = 1,4092 .clkr = {4093 .enable_reg = 0x1b064,4094 .enable_mask = BIT(0),4095 .hw.init = &(const struct clk_init_data){4096 .name = "gcc_usb3_prim_phy_pipe_clk",4097 .parent_hws = (const struct clk_hw*[]){4098 &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw,4099 },4100 .num_parents = 1,4101 .flags = CLK_SET_RATE_PARENT,4102 .ops = &clk_branch2_ops,4103 },4104 },4105};4106 4107static struct clk_branch gcc_usb3_sec_phy_aux_clk = {4108 .halt_reg = 0x2f05c,4109 .halt_check = BRANCH_HALT,4110 .clkr = {4111 .enable_reg = 0x2f05c,4112 .enable_mask = BIT(0),4113 .hw.init = &(const struct clk_init_data){4114 .name = "gcc_usb3_sec_phy_aux_clk",4115 .parent_hws = (const struct clk_hw*[]){4116 &gcc_usb3_sec_phy_aux_clk_src.clkr.hw,4117 },4118 .num_parents = 1,4119 .flags = CLK_SET_RATE_PARENT,4120 .ops = &clk_branch2_ops,4121 },4122 },4123};4124 4125static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = {4126 .halt_reg = 0x2f060,4127 .halt_check = BRANCH_HALT,4128 .clkr = {4129 .enable_reg = 0x2f060,4130 .enable_mask = BIT(0),4131 .hw.init = &(const struct clk_init_data){4132 .name = "gcc_usb3_sec_phy_com_aux_clk",4133 .parent_hws = (const struct clk_hw*[]){4134 &gcc_usb3_sec_phy_aux_clk_src.clkr.hw,4135 },4136 .num_parents = 1,4137 .flags = CLK_SET_RATE_PARENT,4138 .ops = &clk_branch2_ops,4139 },4140 },4141};4142 4143static struct clk_branch gcc_usb3_sec_phy_pipe_clk = {4144 .halt_reg = 0x2f064,4145 .halt_check = BRANCH_HALT_DELAY,4146 .clkr = {4147 .enable_reg = 0x2f064,4148 .enable_mask = BIT(0),4149 .hw.init = &(const struct clk_init_data){4150 .name = "gcc_usb3_sec_phy_pipe_clk",4151 .parent_hws = (const struct clk_hw*[]){4152 &gcc_usb3_sec_phy_pipe_clk_src.clkr.hw,4153 },4154 .num_parents = 1,4155 .flags = CLK_SET_RATE_PARENT,4156 .ops = &clk_branch2_ops,4157 },4158 },4159};4160 4161static struct clk_branch gcc_usb_clkref_en = {4162 .halt_reg = 0x97468,4163 .halt_check = BRANCH_HALT_DELAY,4164 .clkr = {4165 .enable_reg = 0x97468,4166 .enable_mask = BIT(0),4167 .hw.init = &(const struct clk_init_data){4168 .name = "gcc_usb_clkref_en",4169 .ops = &clk_branch2_ops,4170 },4171 },4172};4173 4174static struct clk_branch gcc_video_axi0_clk = {4175 .halt_reg = 0x34014,4176 .halt_check = BRANCH_HALT_VOTED,4177 .hwcg_reg = 0x34014,4178 .hwcg_bit = 1,4179 .clkr = {4180 .enable_reg = 0x34014,4181 .enable_mask = BIT(0),4182 .hw.init = &(const struct clk_init_data){4183 .name = "gcc_video_axi0_clk",4184 .ops = &clk_branch2_ops,4185 },4186 },4187};4188 4189static struct clk_branch gcc_video_axi1_clk = {4190 .halt_reg = 0x3401c,4191 .halt_check = BRANCH_HALT_VOTED,4192 .hwcg_reg = 0x3401c,4193 .hwcg_bit = 1,4194 .clkr = {4195 .enable_reg = 0x3401c,4196 .enable_mask = BIT(0),4197 .hw.init = &(const struct clk_init_data){4198 .name = "gcc_video_axi1_clk",4199 .ops = &clk_branch2_ops,4200 },4201 },4202};4203 4204static struct gdsc pcie_0_gdsc = {4205 .gdscr = 0xa9004,4206 .collapse_ctrl = 0x4b104,4207 .collapse_mask = BIT(0),4208 .en_rest_wait_val = 0x2,4209 .en_few_wait_val = 0x2,4210 .clk_dis_wait_val = 0xf,4211 .pd = {4212 .name = "pcie_0_gdsc",4213 },4214 .pwrsts = PWRSTS_OFF_ON,4215 .flags = VOTABLE | RETAIN_FF_ENABLE | POLL_CFG_GDSCR,4216};4217 4218static struct gdsc pcie_1_gdsc = {4219 .gdscr = 0x77004,4220 .collapse_ctrl = 0x4b104,4221 .collapse_mask = BIT(1),4222 .en_rest_wait_val = 0x2,4223 .en_few_wait_val = 0x2,4224 .clk_dis_wait_val = 0xf,4225 .pd = {4226 .name = "pcie_1_gdsc",4227 },4228 .pwrsts = PWRSTS_OFF_ON,4229 .flags = VOTABLE | RETAIN_FF_ENABLE | POLL_CFG_GDSCR,4230};4231 4232static struct gdsc ufs_card_gdsc = {4233 .gdscr = 0x81004,4234 .en_rest_wait_val = 0x2,4235 .en_few_wait_val = 0x2,4236 .clk_dis_wait_val = 0xf,4237 .pd = {4238 .name = "ufs_card_gdsc",4239 },4240 .pwrsts = PWRSTS_OFF_ON,4241 .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,4242};4243 4244static struct gdsc ufs_phy_gdsc = {4245 .gdscr = 0x83004,4246 .en_rest_wait_val = 0x2,4247 .en_few_wait_val = 0x2,4248 .clk_dis_wait_val = 0xf,4249 .pd = {4250 .name = "ufs_phy_gdsc",4251 },4252 .pwrsts = PWRSTS_OFF_ON,4253 .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,4254};4255 4256static struct gdsc usb20_prim_gdsc = {4257 .gdscr = 0x1c004,4258 .en_rest_wait_val = 0x2,4259 .en_few_wait_val = 0x2,4260 .clk_dis_wait_val = 0xf,4261 .pd = {4262 .name = "usb20_prim_gdsc",4263 },4264 .pwrsts = PWRSTS_OFF_ON,4265 .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,4266};4267 4268static struct gdsc usb30_prim_gdsc = {4269 .gdscr = 0x1b004,4270 .en_rest_wait_val = 0x2,4271 .en_few_wait_val = 0x2,4272 .clk_dis_wait_val = 0xf,4273 .pd = {4274 .name = "usb30_prim_gdsc",4275 },4276 .pwrsts = PWRSTS_OFF_ON,4277 .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,4278};4279 4280static struct gdsc usb30_sec_gdsc = {4281 .gdscr = 0x2f004,4282 .en_rest_wait_val = 0x2,4283 .en_few_wait_val = 0x2,4284 .clk_dis_wait_val = 0xf,4285 .pd = {4286 .name = "usb30_sec_gdsc",4287 },4288 .pwrsts = PWRSTS_OFF_ON,4289 .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,4290};4291 4292static struct gdsc emac0_gdsc = {4293 .gdscr = 0xb6004,4294 .en_rest_wait_val = 0x2,4295 .en_few_wait_val = 0x2,4296 .clk_dis_wait_val = 0xf,4297 .pd = {4298 .name = "emac0_gdsc",4299 },4300 .pwrsts = PWRSTS_OFF_ON,4301 .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,4302};4303 4304static struct gdsc emac1_gdsc = {4305 .gdscr = 0xb4004,4306 .en_rest_wait_val = 0x2,4307 .en_few_wait_val = 0x2,4308 .clk_dis_wait_val = 0xf,4309 .pd = {4310 .name = "emac1_gdsc",4311 },4312 .pwrsts = PWRSTS_OFF_ON,4313 .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,4314};4315 4316static struct clk_regmap *gcc_sa8775p_clocks[] = {4317 [GCC_AGGRE_NOC_QUPV3_AXI_CLK] = &gcc_aggre_noc_qupv3_axi_clk.clkr,4318 [GCC_AGGRE_UFS_CARD_AXI_CLK] = &gcc_aggre_ufs_card_axi_clk.clkr,4319 [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,4320 [GCC_AGGRE_USB2_PRIM_AXI_CLK] = &gcc_aggre_usb2_prim_axi_clk.clkr,4321 [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,4322 [GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr,4323 [GCC_AHB2PHY0_CLK] = &gcc_ahb2phy0_clk.clkr,4324 [GCC_AHB2PHY2_CLK] = &gcc_ahb2phy2_clk.clkr,4325 [GCC_AHB2PHY3_CLK] = &gcc_ahb2phy3_clk.clkr,4326 [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,4327 [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,4328 [GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,4329 [GCC_CAMERA_THROTTLE_XO_CLK] = &gcc_camera_throttle_xo_clk.clkr,4330 [GCC_CFG_NOC_USB2_PRIM_AXI_CLK] = &gcc_cfg_noc_usb2_prim_axi_clk.clkr,4331 [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,4332 [GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr,4333 [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,4334 [GCC_DISP1_HF_AXI_CLK] = &gcc_disp1_hf_axi_clk.clkr,4335 [GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,4336 [GCC_EDP_REF_CLKREF_EN] = &gcc_edp_ref_clkref_en.clkr,4337 [GCC_EMAC0_AXI_CLK] = &gcc_emac0_axi_clk.clkr,4338 [GCC_EMAC0_PHY_AUX_CLK] = &gcc_emac0_phy_aux_clk.clkr,4339 [GCC_EMAC0_PHY_AUX_CLK_SRC] = &gcc_emac0_phy_aux_clk_src.clkr,4340 [GCC_EMAC0_PTP_CLK] = &gcc_emac0_ptp_clk.clkr,4341 [GCC_EMAC0_PTP_CLK_SRC] = &gcc_emac0_ptp_clk_src.clkr,4342 [GCC_EMAC0_RGMII_CLK] = &gcc_emac0_rgmii_clk.clkr,4343 [GCC_EMAC0_RGMII_CLK_SRC] = &gcc_emac0_rgmii_clk_src.clkr,4344 [GCC_EMAC0_SLV_AHB_CLK] = &gcc_emac0_slv_ahb_clk.clkr,4345 [GCC_EMAC1_AXI_CLK] = &gcc_emac1_axi_clk.clkr,4346 [GCC_EMAC1_PHY_AUX_CLK] = &gcc_emac1_phy_aux_clk.clkr,4347 [GCC_EMAC1_PHY_AUX_CLK_SRC] = &gcc_emac1_phy_aux_clk_src.clkr,4348 [GCC_EMAC1_PTP_CLK] = &gcc_emac1_ptp_clk.clkr,4349 [GCC_EMAC1_PTP_CLK_SRC] = &gcc_emac1_ptp_clk_src.clkr,4350 [GCC_EMAC1_RGMII_CLK] = &gcc_emac1_rgmii_clk.clkr,4351 [GCC_EMAC1_RGMII_CLK_SRC] = &gcc_emac1_rgmii_clk_src.clkr,4352 [GCC_EMAC1_SLV_AHB_CLK] = &gcc_emac1_slv_ahb_clk.clkr,4353 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,4354 [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,4355 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,4356 [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,4357 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,4358 [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,4359 [GCC_GP4_CLK] = &gcc_gp4_clk.clkr,4360 [GCC_GP4_CLK_SRC] = &gcc_gp4_clk_src.clkr,4361 [GCC_GP5_CLK] = &gcc_gp5_clk.clkr,4362 [GCC_GP5_CLK_SRC] = &gcc_gp5_clk_src.clkr,4363 [GCC_GPLL0] = &gcc_gpll0.clkr,4364 [GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr,4365 [GCC_GPLL1] = &gcc_gpll1.clkr,4366 [GCC_GPLL4] = &gcc_gpll4.clkr,4367 [GCC_GPLL5] = &gcc_gpll5.clkr,4368 [GCC_GPLL7] = &gcc_gpll7.clkr,4369 [GCC_GPLL9] = &gcc_gpll9.clkr,4370 [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,4371 [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,4372 [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,4373 [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,4374 [GCC_GPU_TCU_THROTTLE_AHB_CLK] = &gcc_gpu_tcu_throttle_ahb_clk.clkr,4375 [GCC_GPU_TCU_THROTTLE_CLK] = &gcc_gpu_tcu_throttle_clk.clkr,4376 [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,4377 [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,4378 [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,4379 [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,4380 [GCC_PCIE_0_PHY_AUX_CLK] = &gcc_pcie_0_phy_aux_clk.clkr,4381 [GCC_PCIE_0_PHY_AUX_CLK_SRC] = &gcc_pcie_0_phy_aux_clk_src.clkr,4382 [GCC_PCIE_0_PHY_RCHNG_CLK] = &gcc_pcie_0_phy_rchng_clk.clkr,4383 [GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr,4384 [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,4385 [GCC_PCIE_0_PIPE_CLK_SRC] = &gcc_pcie_0_pipe_clk_src.clkr,4386 [GCC_PCIE_0_PIPE_DIV_CLK_SRC] = &gcc_pcie_0_pipe_div_clk_src.clkr,4387 [GCC_PCIE_0_PIPEDIV2_CLK] = &gcc_pcie_0_pipediv2_clk.clkr,4388 [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,4389 [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,4390 [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,4391 [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,4392 [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,4393 [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,4394 [GCC_PCIE_1_PHY_AUX_CLK] = &gcc_pcie_1_phy_aux_clk.clkr,4395 [GCC_PCIE_1_PHY_AUX_CLK_SRC] = &gcc_pcie_1_phy_aux_clk_src.clkr,4396 [GCC_PCIE_1_PHY_RCHNG_CLK] = &gcc_pcie_1_phy_rchng_clk.clkr,4397 [GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr,4398 [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,4399 [GCC_PCIE_1_PIPE_CLK_SRC] = &gcc_pcie_1_pipe_clk_src.clkr,4400 [GCC_PCIE_1_PIPE_DIV_CLK_SRC] = &gcc_pcie_1_pipe_div_clk_src.clkr,4401 [GCC_PCIE_1_PIPEDIV2_CLK] = &gcc_pcie_1_pipediv2_clk.clkr,4402 [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,4403 [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,4404 [GCC_PCIE_CLKREF_EN] = &gcc_pcie_clkref_en.clkr,4405 [GCC_PCIE_THROTTLE_CFG_CLK] = &gcc_pcie_throttle_cfg_clk.clkr,4406 [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,4407 [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,4408 [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,4409 [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,4410 [GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,4411 [GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,4412 [GCC_QMIP_DISP1_AHB_CLK] = &gcc_qmip_disp1_ahb_clk.clkr,4413 [GCC_QMIP_DISP1_ROT_AHB_CLK] = &gcc_qmip_disp1_rot_ahb_clk.clkr,4414 [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,4415 [GCC_QMIP_DISP_ROT_AHB_CLK] = &gcc_qmip_disp_rot_ahb_clk.clkr,4416 [GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,4417 [GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,4418 [GCC_QMIP_VIDEO_VCPU_AHB_CLK] = &gcc_qmip_video_vcpu_ahb_clk.clkr,4419 [GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,4420 [GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,4421 [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,4422 [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,4423 [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,4424 [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,4425 [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,4426 [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,4427 [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,4428 [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,4429 [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,4430 [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,4431 [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,4432 [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,4433 [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,4434 [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,4435 [GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,4436 [GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,4437 [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,4438 [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,4439 [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,4440 [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,4441 [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,4442 [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,4443 [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,4444 [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,4445 [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,4446 [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,4447 [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,4448 [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,4449 [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,4450 [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,4451 [GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr,4452 [GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr,4453 [GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,4454 [GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,4455 [GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,4456 [GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,4457 [GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,4458 [GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,4459 [GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,4460 [GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,4461 [GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,4462 [GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,4463 [GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,4464 [GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,4465 [GCC_QUPV3_WRAP2_S6_CLK] = &gcc_qupv3_wrap2_s6_clk.clkr,4466 [GCC_QUPV3_WRAP2_S6_CLK_SRC] = &gcc_qupv3_wrap2_s6_clk_src.clkr,4467 [GCC_QUPV3_WRAP3_CORE_2X_CLK] = &gcc_qupv3_wrap3_core_2x_clk.clkr,4468 [GCC_QUPV3_WRAP3_CORE_CLK] = &gcc_qupv3_wrap3_core_clk.clkr,4469 [GCC_QUPV3_WRAP3_QSPI_CLK] = &gcc_qupv3_wrap3_qspi_clk.clkr,4470 [GCC_QUPV3_WRAP3_S0_CLK] = &gcc_qupv3_wrap3_s0_clk.clkr,4471 [GCC_QUPV3_WRAP3_S0_CLK_SRC] = &gcc_qupv3_wrap3_s0_clk_src.clkr,4472 [GCC_QUPV3_WRAP3_S0_DIV_CLK_SRC] = &gcc_qupv3_wrap3_s0_div_clk_src.clkr,4473 [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,4474 [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,4475 [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,4476 [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,4477 [GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,4478 [GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,4479 [GCC_QUPV3_WRAP_3_M_AHB_CLK] = &gcc_qupv3_wrap_3_m_ahb_clk.clkr,4480 [GCC_QUPV3_WRAP_3_S_AHB_CLK] = &gcc_qupv3_wrap_3_s_ahb_clk.clkr,4481 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,4482 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,4483 [GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,4484 [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,4485 [GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr,4486 [GCC_SGMI_CLKREF_EN] = &gcc_sgmi_clkref_en.clkr,4487 [GCC_TSCSS_AHB_CLK] = &gcc_tscss_ahb_clk.clkr,4488 [GCC_TSCSS_CNTR_CLK_SRC] = &gcc_tscss_cntr_clk_src.clkr,4489 [GCC_TSCSS_ETU_CLK] = &gcc_tscss_etu_clk.clkr,4490 [GCC_TSCSS_GLOBAL_CNTR_CLK] = &gcc_tscss_global_cntr_clk.clkr,4491 [GCC_UFS_CARD_AHB_CLK] = &gcc_ufs_card_ahb_clk.clkr,4492 [GCC_UFS_CARD_AXI_CLK] = &gcc_ufs_card_axi_clk.clkr,4493 [GCC_UFS_CARD_AXI_CLK_SRC] = &gcc_ufs_card_axi_clk_src.clkr,4494 [GCC_UFS_CARD_ICE_CORE_CLK] = &gcc_ufs_card_ice_core_clk.clkr,4495 [GCC_UFS_CARD_ICE_CORE_CLK_SRC] = &gcc_ufs_card_ice_core_clk_src.clkr,4496 [GCC_UFS_CARD_PHY_AUX_CLK] = &gcc_ufs_card_phy_aux_clk.clkr,4497 [GCC_UFS_CARD_PHY_AUX_CLK_SRC] = &gcc_ufs_card_phy_aux_clk_src.clkr,4498 [GCC_UFS_CARD_RX_SYMBOL_0_CLK] = &gcc_ufs_card_rx_symbol_0_clk.clkr,4499 [GCC_UFS_CARD_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_card_rx_symbol_0_clk_src.clkr,4500 [GCC_UFS_CARD_RX_SYMBOL_1_CLK] = &gcc_ufs_card_rx_symbol_1_clk.clkr,4501 [GCC_UFS_CARD_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_card_rx_symbol_1_clk_src.clkr,4502 [GCC_UFS_CARD_TX_SYMBOL_0_CLK] = &gcc_ufs_card_tx_symbol_0_clk.clkr,4503 [GCC_UFS_CARD_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_card_tx_symbol_0_clk_src.clkr,4504 [GCC_UFS_CARD_UNIPRO_CORE_CLK] = &gcc_ufs_card_unipro_core_clk.clkr,4505 [GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_card_unipro_core_clk_src.clkr,4506 [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,4507 [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,4508 [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,4509 [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,4510 [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,4511 [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,4512 [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,4513 [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,4514 [GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr,4515 [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,4516 [GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr,4517 [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,4518 [GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr,4519 [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,4520 [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,4521 [GCC_USB20_MASTER_CLK] = &gcc_usb20_master_clk.clkr,4522 [GCC_USB20_MASTER_CLK_SRC] = &gcc_usb20_master_clk_src.clkr,4523 [GCC_USB20_MOCK_UTMI_CLK] = &gcc_usb20_mock_utmi_clk.clkr,4524 [GCC_USB20_MOCK_UTMI_CLK_SRC] = &gcc_usb20_mock_utmi_clk_src.clkr,4525 [GCC_USB20_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb20_mock_utmi_postdiv_clk_src.clkr,4526 [GCC_USB20_SLEEP_CLK] = &gcc_usb20_sleep_clk.clkr,4527 [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,4528 [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,4529 [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,4530 [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,4531 [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,4532 [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,4533 [GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,4534 [GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr,4535 [GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,4536 [GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] = &gcc_usb30_sec_mock_utmi_clk_src.clkr,4537 [GCC_USB30_SEC_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_sec_mock_utmi_postdiv_clk_src.clkr,4538 [GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,4539 [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,4540 [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,4541 [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,4542 [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,4543 [GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr,4544 [GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr,4545 [GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr,4546 [GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr,4547 [GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr,4548 [GCC_USB3_SEC_PHY_PIPE_CLK_SRC] = &gcc_usb3_sec_phy_pipe_clk_src.clkr,4549 [GCC_USB_CLKREF_EN] = &gcc_usb_clkref_en.clkr,4550 [GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,4551 [GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,4552};4553 4554static const struct qcom_reset_map gcc_sa8775p_resets[] = {4555 [GCC_CAMERA_BCR] = { 0x32000 },4556 [GCC_DISPLAY1_BCR] = { 0xc7000 },4557 [GCC_DISPLAY_BCR] = { 0x33000 },4558 [GCC_EMAC0_BCR] = { 0xb6000 },4559 [GCC_EMAC1_BCR] = { 0xb4000 },4560 [GCC_GPU_BCR] = { 0x7d000 },4561 [GCC_MMSS_BCR] = { 0x17000 },4562 [GCC_PCIE_0_BCR] = { 0xa9000 },4563 [GCC_PCIE_0_LINK_DOWN_BCR] = { 0xbf000 },4564 [GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0xbf008 },4565 [GCC_PCIE_0_PHY_BCR] = { 0xad144 },4566 [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0xbf00c },4567 [GCC_PCIE_1_BCR] = { 0x77000 },4568 [GCC_PCIE_1_LINK_DOWN_BCR] = { 0xae084 },4569 [GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0xae090 },4570 [GCC_PCIE_1_PHY_BCR] = { 0xae08c },4571 [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0xae094 },4572 [GCC_PDM_BCR] = { 0x3f000 },4573 [GCC_QUPV3_WRAPPER_0_BCR] = { 0x23000 },4574 [GCC_QUPV3_WRAPPER_1_BCR] = { 0x24000 },4575 [GCC_QUPV3_WRAPPER_2_BCR] = { 0x2a000 },4576 [GCC_QUPV3_WRAPPER_3_BCR] = { 0xc4000 },4577 [GCC_SDCC1_BCR] = { 0x20000 },4578 [GCC_TSCSS_BCR] = { 0x21000 },4579 [GCC_UFS_CARD_BCR] = { 0x81000 },4580 [GCC_UFS_PHY_BCR] = { 0x83000 },4581 [GCC_USB20_PRIM_BCR] = { 0x1c000 },4582 [GCC_USB2_PHY_PRIM_BCR] = { 0x5c028 },4583 [GCC_USB2_PHY_SEC_BCR] = { 0x5c02c },4584 [GCC_USB30_PRIM_BCR] = { 0x1b000 },4585 [GCC_USB30_SEC_BCR] = { 0x2f000 },4586 [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x5c008 },4587 [GCC_USB3_DP_PHY_SEC_BCR] = { 0x5c014 },4588 [GCC_USB3_PHY_PRIM_BCR] = { 0x5c000 },4589 [GCC_USB3_PHY_SEC_BCR] = { 0x5c00c },4590 [GCC_USB3_PHY_TERT_BCR] = { 0x5c030 },4591 [GCC_USB3_UNIPHY_MP0_BCR] = { 0x5c018 },4592 [GCC_USB3_UNIPHY_MP1_BCR] = { 0x5c01c },4593 [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x5c004 },4594 [GCC_USB3PHY_PHY_SEC_BCR] = { 0x5c010 },4595 [GCC_USB3UNIPHY_PHY_MP0_BCR] = { 0x5c020 },4596 [GCC_USB3UNIPHY_PHY_MP1_BCR] = { 0x5c024 },4597 [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x76000 },4598 [GCC_VIDEO_AXI0_CLK_ARES] = { .reg = 0x34014, .bit = 2, .udelay = 400 },4599 [GCC_VIDEO_AXI1_CLK_ARES] = { .reg = 0x3401c, .bit = 2, .udelay = 400 },4600 [GCC_VIDEO_BCR] = { 0x34000 },4601};4602 4603static struct gdsc *gcc_sa8775p_gdscs[] = {4604 [PCIE_0_GDSC] = &pcie_0_gdsc,4605 [PCIE_1_GDSC] = &pcie_1_gdsc,4606 [UFS_CARD_GDSC] = &ufs_card_gdsc,4607 [UFS_PHY_GDSC] = &ufs_phy_gdsc,4608 [USB20_PRIM_GDSC] = &usb20_prim_gdsc,4609 [USB30_PRIM_GDSC] = &usb30_prim_gdsc,4610 [USB30_SEC_GDSC] = &usb30_sec_gdsc,4611 [EMAC0_GDSC] = &emac0_gdsc,4612 [EMAC1_GDSC] = &emac1_gdsc,4613};4614 4615static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {4616 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),4617 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),4618 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),4619 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),4620 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),4621 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),4622 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src),4623 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),4624 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),4625 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),4626 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),4627 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),4628 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),4629 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),4630 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src),4631 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src),4632 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src),4633 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src),4634 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src),4635 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src),4636 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s6_clk_src),4637 DEFINE_RCG_DFS(gcc_qupv3_wrap3_s0_clk_src),4638};4639 4640static const struct regmap_config gcc_sa8775p_regmap_config = {4641 .reg_bits = 32,4642 .reg_stride = 4,4643 .val_bits = 32,4644 .max_register = 0xc7018,4645 .fast_io = true,4646};4647 4648static const struct qcom_cc_desc gcc_sa8775p_desc = {4649 .config = &gcc_sa8775p_regmap_config,4650 .clks = gcc_sa8775p_clocks,4651 .num_clks = ARRAY_SIZE(gcc_sa8775p_clocks),4652 .resets = gcc_sa8775p_resets,4653 .num_resets = ARRAY_SIZE(gcc_sa8775p_resets),4654 .gdscs = gcc_sa8775p_gdscs,4655 .num_gdscs = ARRAY_SIZE(gcc_sa8775p_gdscs),4656};4657 4658static const struct of_device_id gcc_sa8775p_match_table[] = {4659 { .compatible = "qcom,sa8775p-gcc" },4660 { }4661};4662MODULE_DEVICE_TABLE(of, gcc_sa8775p_match_table);4663 4664static int gcc_sa8775p_probe(struct platform_device *pdev)4665{4666 struct regmap *regmap;4667 int ret;4668 4669 regmap = qcom_cc_map(pdev, &gcc_sa8775p_desc);4670 if (IS_ERR(regmap))4671 return PTR_ERR(regmap);4672 4673 ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,4674 ARRAY_SIZE(gcc_dfs_clocks));4675 if (ret)4676 return ret;4677 4678 /* Keep some clocks always-on */4679 qcom_branch_set_clk_en(regmap, 0x32004); /* GCC_CAMERA_AHB_CLK */4680 qcom_branch_set_clk_en(regmap, 0x32020); /* GCC_CAMERA_XO_CLK */4681 qcom_branch_set_clk_en(regmap, 0xc7004); /* GCC_DISP1_AHB_CLK */4682 qcom_branch_set_clk_en(regmap, 0xc7018); /* GCC_DISP1_XO_CLK */4683 qcom_branch_set_clk_en(regmap, 0x33004); /* GCC_DISP_AHB_CLK */4684 qcom_branch_set_clk_en(regmap, 0x33018); /* GCC_DISP_XO_CLK */4685 qcom_branch_set_clk_en(regmap, 0x7d004); /* GCC_GPU_CFG_AHB_CLK */4686 qcom_branch_set_clk_en(regmap, 0x34004); /* GCC_VIDEO_AHB_CLK */4687 qcom_branch_set_clk_en(regmap, 0x34024); /* GCC_VIDEO_XO_CLK */4688 4689 /* FORCE_MEM_CORE_ON for ufs phy ice core clocks */4690 qcom_branch_set_force_mem_core(regmap, gcc_ufs_phy_ice_core_clk, true);4691 4692 return qcom_cc_really_probe(&pdev->dev, &gcc_sa8775p_desc, regmap);4693}4694 4695static struct platform_driver gcc_sa8775p_driver = {4696 .probe = gcc_sa8775p_probe,4697 .driver = {4698 .name = "sa8775p-gcc",4699 .of_match_table = gcc_sa8775p_match_table,4700 },4701};4702 4703static int __init gcc_sa8775p_init(void)4704{4705 return platform_driver_register(&gcc_sa8775p_driver);4706}4707core_initcall(gcc_sa8775p_init);4708 4709static void __exit gcc_sa8775p_exit(void)4710{4711 platform_driver_unregister(&gcc_sa8775p_driver);4712}4713module_exit(gcc_sa8775p_exit);4714 4715MODULE_DESCRIPTION("Qualcomm SA8775P GCC driver");4716MODULE_LICENSE("GPL");4717