3392 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Copyright (c) 2021, The Linux Foundation. All rights reserved.4 * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.5 * Copyright (c) 2022, Linaro Limited6 */7 8#include <linux/clk-provider.h>9#include <linux/module.h>10#include <linux/of.h>11#include <linux/platform_device.h>12#include <linux/regmap.h>13 14#include <dt-bindings/clock/qcom,sm8550-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 "gdsc.h"24#include "reset.h"25 26enum {27 DT_BI_TCXO,28 DT_SLEEP_CLK,29 DT_PCIE_0_PIPE,30 DT_PCIE_1_PIPE,31 DT_PCIE_1_PHY_AUX,32 DT_UFS_PHY_RX_SYMBOL_0,33 DT_UFS_PHY_RX_SYMBOL_1,34 DT_UFS_PHY_TX_SYMBOL_0,35 DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE,36};37 38enum {39 P_BI_TCXO,40 P_GCC_GPLL0_OUT_EVEN,41 P_GCC_GPLL0_OUT_MAIN,42 P_GCC_GPLL4_OUT_MAIN,43 P_GCC_GPLL7_OUT_MAIN,44 P_GCC_GPLL9_OUT_MAIN,45 P_PCIE_0_PIPE_CLK,46 P_PCIE_1_PHY_AUX_CLK,47 P_PCIE_1_PIPE_CLK,48 P_SLEEP_CLK,49 P_UFS_PHY_RX_SYMBOL_0_CLK,50 P_UFS_PHY_RX_SYMBOL_1_CLK,51 P_UFS_PHY_TX_SYMBOL_0_CLK,52 P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,53};54 55static struct clk_alpha_pll gcc_gpll0 = {56 .offset = 0x0,57 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],58 .clkr = {59 .enable_reg = 0x52018,60 .enable_mask = BIT(0),61 .hw.init = &(struct clk_init_data){62 .name = "gcc_gpll0",63 .parent_data = &(const struct clk_parent_data){64 .index = DT_BI_TCXO,65 },66 .num_parents = 1,67 .ops = &clk_alpha_pll_fixed_lucid_ole_ops,68 },69 },70};71 72static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = {73 { 0x1, 2 },74 { }75};76 77static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = {78 .offset = 0x0,79 .post_div_shift = 10,80 .post_div_table = post_div_table_gcc_gpll0_out_even,81 .num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even),82 .width = 4,83 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],84 .clkr.hw.init = &(struct clk_init_data){85 .name = "gcc_gpll0_out_even",86 .parent_hws = (const struct clk_hw*[]) {87 &gcc_gpll0.clkr.hw,88 },89 .num_parents = 1,90 .ops = &clk_alpha_pll_postdiv_lucid_ole_ops,91 },92};93 94static struct clk_alpha_pll gcc_gpll4 = {95 .offset = 0x4000,96 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],97 .clkr = {98 .enable_reg = 0x52018,99 .enable_mask = BIT(4),100 .hw.init = &(struct clk_init_data){101 .name = "gcc_gpll4",102 .parent_data = &(const struct clk_parent_data){103 .index = DT_BI_TCXO,104 },105 .num_parents = 1,106 .ops = &clk_alpha_pll_fixed_lucid_ole_ops,107 },108 },109};110 111static struct clk_alpha_pll gcc_gpll7 = {112 .offset = 0x7000,113 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],114 .clkr = {115 .enable_reg = 0x52018,116 .enable_mask = BIT(7),117 .hw.init = &(struct clk_init_data){118 .name = "gcc_gpll7",119 .parent_data = &(const struct clk_parent_data){120 .index = DT_BI_TCXO,121 },122 .num_parents = 1,123 .ops = &clk_alpha_pll_fixed_lucid_ole_ops,124 },125 },126};127 128static struct clk_alpha_pll gcc_gpll9 = {129 .offset = 0x9000,130 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],131 .clkr = {132 .enable_reg = 0x52018,133 .enable_mask = BIT(9),134 .hw.init = &(struct clk_init_data){135 .name = "gcc_gpll9",136 .parent_data = &(const struct clk_parent_data){137 .index = DT_BI_TCXO,138 },139 .num_parents = 1,140 .ops = &clk_alpha_pll_fixed_lucid_ole_ops,141 },142 },143};144 145static const struct parent_map gcc_parent_map_0[] = {146 { P_BI_TCXO, 0 },147 { P_GCC_GPLL0_OUT_MAIN, 1 },148 { P_GCC_GPLL0_OUT_EVEN, 6 },149};150 151static const struct clk_parent_data gcc_parent_data_0[] = {152 { .index = DT_BI_TCXO },153 { .hw = &gcc_gpll0.clkr.hw },154 { .hw = &gcc_gpll0_out_even.clkr.hw },155};156 157static const struct parent_map gcc_parent_map_1[] = {158 { P_BI_TCXO, 0 },159 { P_GCC_GPLL0_OUT_MAIN, 1 },160 { P_SLEEP_CLK, 5 },161 { P_GCC_GPLL0_OUT_EVEN, 6 },162};163 164static const struct clk_parent_data gcc_parent_data_1[] = {165 { .index = DT_BI_TCXO },166 { .hw = &gcc_gpll0.clkr.hw },167 { .index = DT_SLEEP_CLK },168 { .hw = &gcc_gpll0_out_even.clkr.hw },169};170 171static const struct parent_map gcc_parent_map_2[] = {172 { P_BI_TCXO, 0 },173 { P_SLEEP_CLK, 5 },174};175 176static const struct clk_parent_data gcc_parent_data_2[] = {177 { .index = DT_BI_TCXO },178 { .index = DT_SLEEP_CLK },179};180 181static const struct parent_map gcc_parent_map_3[] = {182 { P_BI_TCXO, 0 },183 { P_GCC_GPLL0_OUT_MAIN, 1 },184 { P_GCC_GPLL4_OUT_MAIN, 5 },185 { P_GCC_GPLL0_OUT_EVEN, 6 },186};187 188static const struct clk_parent_data gcc_parent_data_3[] = {189 { .index = DT_BI_TCXO },190 { .hw = &gcc_gpll0.clkr.hw },191 { .hw = &gcc_gpll4.clkr.hw },192 { .hw = &gcc_gpll0_out_even.clkr.hw },193};194 195static const struct parent_map gcc_parent_map_4[] = {196 { P_BI_TCXO, 0 },197};198 199static const struct clk_parent_data gcc_parent_data_4[] = {200 { .index = DT_BI_TCXO },201};202 203static const struct parent_map gcc_parent_map_6[] = {204 { P_PCIE_1_PHY_AUX_CLK, 0 },205 { P_BI_TCXO, 2 },206};207 208static const struct clk_parent_data gcc_parent_data_6[] = {209 { .index = DT_PCIE_1_PHY_AUX },210 { .index = DT_BI_TCXO },211};212 213static const struct parent_map gcc_parent_map_8[] = {214 { P_BI_TCXO, 0 },215 { P_GCC_GPLL0_OUT_MAIN, 1 },216 { P_GCC_GPLL7_OUT_MAIN, 2 },217 { P_GCC_GPLL0_OUT_EVEN, 6 },218};219 220static const struct clk_parent_data gcc_parent_data_8[] = {221 { .index = DT_BI_TCXO },222 { .hw = &gcc_gpll0.clkr.hw },223 { .hw = &gcc_gpll7.clkr.hw },224 { .hw = &gcc_gpll0_out_even.clkr.hw },225};226 227static const struct parent_map gcc_parent_map_9[] = {228 { P_BI_TCXO, 0 },229 { P_GCC_GPLL0_OUT_MAIN, 1 },230 { P_GCC_GPLL9_OUT_MAIN, 2 },231 { P_GCC_GPLL4_OUT_MAIN, 5 },232 { P_GCC_GPLL0_OUT_EVEN, 6 },233};234 235static const struct clk_parent_data gcc_parent_data_9[] = {236 { .index = DT_BI_TCXO },237 { .hw = &gcc_gpll0.clkr.hw },238 { .hw = &gcc_gpll9.clkr.hw },239 { .hw = &gcc_gpll4.clkr.hw },240 { .hw = &gcc_gpll0_out_even.clkr.hw },241};242 243static const struct parent_map gcc_parent_map_10[] = {244 { P_UFS_PHY_RX_SYMBOL_0_CLK, 0 },245 { P_BI_TCXO, 2 },246};247 248static const struct clk_parent_data gcc_parent_data_10[] = {249 { .index = DT_UFS_PHY_RX_SYMBOL_0 },250 { .index = DT_BI_TCXO },251};252 253static const struct parent_map gcc_parent_map_11[] = {254 { P_UFS_PHY_RX_SYMBOL_1_CLK, 0 },255 { P_BI_TCXO, 2 },256};257 258static const struct clk_parent_data gcc_parent_data_11[] = {259 { .index = DT_UFS_PHY_RX_SYMBOL_1 },260 { .index = DT_BI_TCXO },261};262 263static const struct parent_map gcc_parent_map_12[] = {264 { P_UFS_PHY_TX_SYMBOL_0_CLK, 0 },265 { P_BI_TCXO, 2 },266};267 268static const struct clk_parent_data gcc_parent_data_12[] = {269 { .index = DT_UFS_PHY_TX_SYMBOL_0 },270 { .index = DT_BI_TCXO },271};272 273static const struct parent_map gcc_parent_map_13[] = {274 { P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 0 },275 { P_BI_TCXO, 2 },276};277 278static const struct clk_parent_data gcc_parent_data_13[] = {279 { .index = DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE },280 { .index = DT_BI_TCXO },281};282 283static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src = {284 .reg = 0x6b070,285 .clkr = {286 .hw.init = &(struct clk_init_data){287 .name = "gcc_pcie_0_pipe_clk_src",288 .parent_data = &(const struct clk_parent_data){289 .index = DT_PCIE_0_PIPE,290 },291 .num_parents = 1,292 .ops = &clk_regmap_phy_mux_ops,293 },294 },295};296 297static struct clk_regmap_mux gcc_pcie_1_phy_aux_clk_src = {298 .reg = 0x8d094,299 .shift = 0,300 .width = 2,301 .parent_map = gcc_parent_map_6,302 .clkr = {303 .hw.init = &(struct clk_init_data){304 .name = "gcc_pcie_1_phy_aux_clk_src",305 .parent_data = gcc_parent_data_6,306 .num_parents = ARRAY_SIZE(gcc_parent_data_6),307 .ops = &clk_regmap_mux_closest_ops,308 },309 },310};311 312static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = {313 .reg = 0x8d078,314 .clkr = {315 .hw.init = &(struct clk_init_data){316 .name = "gcc_pcie_1_pipe_clk_src",317 .parent_data = &(const struct clk_parent_data){318 .index = DT_PCIE_1_PIPE,319 },320 .num_parents = 1,321 .ops = &clk_regmap_phy_mux_ops,322 },323 },324};325 326static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src = {327 .reg = 0x77064,328 .shift = 0,329 .width = 2,330 .parent_map = gcc_parent_map_10,331 .clkr = {332 .hw.init = &(struct clk_init_data){333 .name = "gcc_ufs_phy_rx_symbol_0_clk_src",334 .parent_data = gcc_parent_data_10,335 .num_parents = ARRAY_SIZE(gcc_parent_data_10),336 .ops = &clk_regmap_mux_closest_ops,337 },338 },339};340 341static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src = {342 .reg = 0x770e0,343 .shift = 0,344 .width = 2,345 .parent_map = gcc_parent_map_11,346 .clkr = {347 .hw.init = &(struct clk_init_data){348 .name = "gcc_ufs_phy_rx_symbol_1_clk_src",349 .parent_data = gcc_parent_data_11,350 .num_parents = ARRAY_SIZE(gcc_parent_data_11),351 .ops = &clk_regmap_mux_closest_ops,352 },353 },354};355 356static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src = {357 .reg = 0x77054,358 .shift = 0,359 .width = 2,360 .parent_map = gcc_parent_map_12,361 .clkr = {362 .hw.init = &(struct clk_init_data){363 .name = "gcc_ufs_phy_tx_symbol_0_clk_src",364 .parent_data = gcc_parent_data_12,365 .num_parents = ARRAY_SIZE(gcc_parent_data_12),366 .ops = &clk_regmap_mux_closest_ops,367 },368 },369};370 371static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = {372 .reg = 0x3906c,373 .shift = 0,374 .width = 2,375 .parent_map = gcc_parent_map_13,376 .clkr = {377 .hw.init = &(struct clk_init_data){378 .name = "gcc_usb3_prim_phy_pipe_clk_src",379 .parent_data = gcc_parent_data_13,380 .num_parents = ARRAY_SIZE(gcc_parent_data_13),381 .ops = &clk_regmap_mux_closest_ops,382 },383 },384};385 386static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {387 F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),388 F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),389 F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),390 { }391};392 393static struct clk_rcg2 gcc_gp1_clk_src = {394 .cmd_rcgr = 0x64004,395 .mnd_width = 16,396 .hid_width = 5,397 .parent_map = gcc_parent_map_1,398 .freq_tbl = ftbl_gcc_gp1_clk_src,399 .clkr.hw.init = &(struct clk_init_data){400 .name = "gcc_gp1_clk_src",401 .parent_data = gcc_parent_data_1,402 .num_parents = ARRAY_SIZE(gcc_parent_data_1),403 .flags = CLK_SET_RATE_PARENT,404 .ops = &clk_rcg2_shared_ops,405 },406};407 408static struct clk_rcg2 gcc_gp2_clk_src = {409 .cmd_rcgr = 0x65004,410 .mnd_width = 16,411 .hid_width = 5,412 .parent_map = gcc_parent_map_1,413 .freq_tbl = ftbl_gcc_gp1_clk_src,414 .clkr.hw.init = &(struct clk_init_data){415 .name = "gcc_gp2_clk_src",416 .parent_data = gcc_parent_data_1,417 .num_parents = ARRAY_SIZE(gcc_parent_data_1),418 .flags = CLK_SET_RATE_PARENT,419 .ops = &clk_rcg2_shared_ops,420 },421};422 423static struct clk_rcg2 gcc_gp3_clk_src = {424 .cmd_rcgr = 0x66004,425 .mnd_width = 16,426 .hid_width = 5,427 .parent_map = gcc_parent_map_1,428 .freq_tbl = ftbl_gcc_gp1_clk_src,429 .clkr.hw.init = &(struct clk_init_data){430 .name = "gcc_gp3_clk_src",431 .parent_data = gcc_parent_data_1,432 .num_parents = ARRAY_SIZE(gcc_parent_data_1),433 .flags = CLK_SET_RATE_PARENT,434 .ops = &clk_rcg2_shared_ops,435 },436};437 438static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {439 F(19200000, P_BI_TCXO, 1, 0, 0),440 { }441};442 443static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {444 .cmd_rcgr = 0x6b074,445 .mnd_width = 16,446 .hid_width = 5,447 .parent_map = gcc_parent_map_2,448 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,449 .clkr.hw.init = &(struct clk_init_data){450 .name = "gcc_pcie_0_aux_clk_src",451 .parent_data = gcc_parent_data_2,452 .num_parents = ARRAY_SIZE(gcc_parent_data_2),453 .flags = CLK_SET_RATE_PARENT,454 .ops = &clk_rcg2_shared_ops,455 },456};457 458static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = {459 F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),460 { }461};462 463static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = {464 .cmd_rcgr = 0x6b058,465 .mnd_width = 0,466 .hid_width = 5,467 .parent_map = gcc_parent_map_0,468 .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,469 .clkr.hw.init = &(struct clk_init_data){470 .name = "gcc_pcie_0_phy_rchng_clk_src",471 .parent_data = gcc_parent_data_0,472 .num_parents = ARRAY_SIZE(gcc_parent_data_0),473 .flags = CLK_SET_RATE_PARENT,474 .ops = &clk_rcg2_shared_ops,475 },476};477 478static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {479 .cmd_rcgr = 0x8d07c,480 .mnd_width = 16,481 .hid_width = 5,482 .parent_map = gcc_parent_map_2,483 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,484 .clkr.hw.init = &(struct clk_init_data){485 .name = "gcc_pcie_1_aux_clk_src",486 .parent_data = gcc_parent_data_2,487 .num_parents = ARRAY_SIZE(gcc_parent_data_2),488 .flags = CLK_SET_RATE_PARENT,489 .ops = &clk_rcg2_shared_ops,490 },491};492 493static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = {494 .cmd_rcgr = 0x8d060,495 .mnd_width = 0,496 .hid_width = 5,497 .parent_map = gcc_parent_map_0,498 .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,499 .clkr.hw.init = &(struct clk_init_data){500 .name = "gcc_pcie_1_phy_rchng_clk_src",501 .parent_data = gcc_parent_data_0,502 .num_parents = ARRAY_SIZE(gcc_parent_data_0),503 .flags = CLK_SET_RATE_PARENT,504 .ops = &clk_rcg2_shared_ops,505 },506};507 508static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {509 F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0),510 { }511};512 513static struct clk_rcg2 gcc_pdm2_clk_src = {514 .cmd_rcgr = 0x33010,515 .mnd_width = 0,516 .hid_width = 5,517 .parent_map = gcc_parent_map_0,518 .freq_tbl = ftbl_gcc_pdm2_clk_src,519 .clkr.hw.init = &(struct clk_init_data){520 .name = "gcc_pdm2_clk_src",521 .parent_data = gcc_parent_data_0,522 .num_parents = ARRAY_SIZE(gcc_parent_data_0),523 .flags = CLK_SET_RATE_PARENT,524 .ops = &clk_rcg2_shared_ops,525 },526};527 528static struct clk_rcg2 gcc_qupv3_i2c_s0_clk_src = {529 .cmd_rcgr = 0x17008,530 .mnd_width = 0,531 .hid_width = 5,532 .parent_map = gcc_parent_map_0,533 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,534 .clkr.hw.init = &(struct clk_init_data){535 .name = "gcc_qupv3_i2c_s0_clk_src",536 .parent_data = gcc_parent_data_0,537 .num_parents = ARRAY_SIZE(gcc_parent_data_0),538 .flags = CLK_SET_RATE_PARENT,539 .ops = &clk_rcg2_ops,540 },541};542 543static struct clk_rcg2 gcc_qupv3_i2c_s1_clk_src = {544 .cmd_rcgr = 0x17024,545 .mnd_width = 0,546 .hid_width = 5,547 .parent_map = gcc_parent_map_0,548 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,549 .clkr.hw.init = &(struct clk_init_data){550 .name = "gcc_qupv3_i2c_s1_clk_src",551 .parent_data = gcc_parent_data_0,552 .num_parents = ARRAY_SIZE(gcc_parent_data_0),553 .flags = CLK_SET_RATE_PARENT,554 .ops = &clk_rcg2_ops,555 },556};557 558static struct clk_rcg2 gcc_qupv3_i2c_s2_clk_src = {559 .cmd_rcgr = 0x17040,560 .mnd_width = 0,561 .hid_width = 5,562 .parent_map = gcc_parent_map_0,563 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,564 .clkr.hw.init = &(struct clk_init_data){565 .name = "gcc_qupv3_i2c_s2_clk_src",566 .parent_data = gcc_parent_data_0,567 .num_parents = ARRAY_SIZE(gcc_parent_data_0),568 .flags = CLK_SET_RATE_PARENT,569 .ops = &clk_rcg2_ops,570 },571};572 573static struct clk_rcg2 gcc_qupv3_i2c_s3_clk_src = {574 .cmd_rcgr = 0x1705c,575 .mnd_width = 0,576 .hid_width = 5,577 .parent_map = gcc_parent_map_0,578 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,579 .clkr.hw.init = &(struct clk_init_data){580 .name = "gcc_qupv3_i2c_s3_clk_src",581 .parent_data = gcc_parent_data_0,582 .num_parents = ARRAY_SIZE(gcc_parent_data_0),583 .flags = CLK_SET_RATE_PARENT,584 .ops = &clk_rcg2_ops,585 },586};587 588static struct clk_rcg2 gcc_qupv3_i2c_s4_clk_src = {589 .cmd_rcgr = 0x17078,590 .mnd_width = 0,591 .hid_width = 5,592 .parent_map = gcc_parent_map_0,593 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,594 .clkr.hw.init = &(struct clk_init_data){595 .name = "gcc_qupv3_i2c_s4_clk_src",596 .parent_data = gcc_parent_data_0,597 .num_parents = ARRAY_SIZE(gcc_parent_data_0),598 .flags = CLK_SET_RATE_PARENT,599 .ops = &clk_rcg2_ops,600 },601};602 603static struct clk_rcg2 gcc_qupv3_i2c_s5_clk_src = {604 .cmd_rcgr = 0x17094,605 .mnd_width = 0,606 .hid_width = 5,607 .parent_map = gcc_parent_map_0,608 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,609 .clkr.hw.init = &(struct clk_init_data){610 .name = "gcc_qupv3_i2c_s5_clk_src",611 .parent_data = gcc_parent_data_0,612 .num_parents = ARRAY_SIZE(gcc_parent_data_0),613 .flags = CLK_SET_RATE_PARENT,614 .ops = &clk_rcg2_ops,615 },616};617 618static struct clk_rcg2 gcc_qupv3_i2c_s6_clk_src = {619 .cmd_rcgr = 0x170b0,620 .mnd_width = 0,621 .hid_width = 5,622 .parent_map = gcc_parent_map_0,623 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,624 .clkr.hw.init = &(struct clk_init_data){625 .name = "gcc_qupv3_i2c_s6_clk_src",626 .parent_data = gcc_parent_data_0,627 .num_parents = ARRAY_SIZE(gcc_parent_data_0),628 .flags = CLK_SET_RATE_PARENT,629 .ops = &clk_rcg2_ops,630 },631};632 633static struct clk_rcg2 gcc_qupv3_i2c_s7_clk_src = {634 .cmd_rcgr = 0x170cc,635 .mnd_width = 0,636 .hid_width = 5,637 .parent_map = gcc_parent_map_0,638 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,639 .clkr.hw.init = &(struct clk_init_data){640 .name = "gcc_qupv3_i2c_s7_clk_src",641 .parent_data = gcc_parent_data_0,642 .num_parents = ARRAY_SIZE(gcc_parent_data_0),643 .flags = CLK_SET_RATE_PARENT,644 .ops = &clk_rcg2_ops,645 },646};647 648static struct clk_rcg2 gcc_qupv3_i2c_s8_clk_src = {649 .cmd_rcgr = 0x170e8,650 .mnd_width = 0,651 .hid_width = 5,652 .parent_map = gcc_parent_map_0,653 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,654 .clkr.hw.init = &(struct clk_init_data){655 .name = "gcc_qupv3_i2c_s8_clk_src",656 .parent_data = gcc_parent_data_0,657 .num_parents = ARRAY_SIZE(gcc_parent_data_0),658 .flags = CLK_SET_RATE_PARENT,659 .ops = &clk_rcg2_ops,660 },661};662 663static struct clk_rcg2 gcc_qupv3_i2c_s9_clk_src = {664 .cmd_rcgr = 0x17104,665 .mnd_width = 0,666 .hid_width = 5,667 .parent_map = gcc_parent_map_0,668 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,669 .clkr.hw.init = &(struct clk_init_data){670 .name = "gcc_qupv3_i2c_s9_clk_src",671 .parent_data = gcc_parent_data_0,672 .num_parents = ARRAY_SIZE(gcc_parent_data_0),673 .flags = CLK_SET_RATE_PARENT,674 .ops = &clk_rcg2_ops,675 },676};677 678static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s0_clk_src[] = {679 F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),680 F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),681 F(19200000, P_BI_TCXO, 1, 0, 0),682 F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),683 F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),684 F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),685 F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375),686 F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),687 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),688 F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),689 F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),690 F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),691 F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375),692 F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75),693 F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625),694 F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),695 { }696};697 698static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {699 .name = "gcc_qupv3_wrap1_s0_clk_src",700 .parent_data = gcc_parent_data_0,701 .num_parents = ARRAY_SIZE(gcc_parent_data_0),702 .flags = CLK_SET_RATE_PARENT,703 .ops = &clk_rcg2_ops,704};705 706static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {707 .cmd_rcgr = 0x18010,708 .mnd_width = 16,709 .hid_width = 5,710 .parent_map = gcc_parent_map_0,711 .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,712 .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,713};714 715static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {716 .name = "gcc_qupv3_wrap1_s1_clk_src",717 .parent_data = gcc_parent_data_0,718 .num_parents = ARRAY_SIZE(gcc_parent_data_0),719 .flags = CLK_SET_RATE_PARENT,720 .ops = &clk_rcg2_ops,721};722 723static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {724 .cmd_rcgr = 0x18148,725 .mnd_width = 16,726 .hid_width = 5,727 .parent_map = gcc_parent_map_0,728 .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,729 .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,730};731 732static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s2_clk_src[] = {733 F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),734 F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),735 F(19200000, P_BI_TCXO, 1, 0, 0),736 F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),737 F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),738 F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),739 F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375),740 F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),741 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),742 F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),743 F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),744 F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),745 { }746};747 748static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {749 .name = "gcc_qupv3_wrap1_s2_clk_src",750 .parent_data = gcc_parent_data_0,751 .num_parents = ARRAY_SIZE(gcc_parent_data_0),752 .flags = CLK_SET_RATE_PARENT,753 .ops = &clk_rcg2_ops,754};755 756static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {757 .cmd_rcgr = 0x18280,758 .mnd_width = 16,759 .hid_width = 5,760 .parent_map = gcc_parent_map_0,761 .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,762 .clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,763};764 765static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {766 .name = "gcc_qupv3_wrap1_s3_clk_src",767 .parent_data = gcc_parent_data_0,768 .num_parents = ARRAY_SIZE(gcc_parent_data_0),769 .flags = CLK_SET_RATE_PARENT,770 .ops = &clk_rcg2_ops,771};772 773static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {774 .cmd_rcgr = 0x183b8,775 .mnd_width = 16,776 .hid_width = 5,777 .parent_map = gcc_parent_map_0,778 .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,779 .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,780};781 782static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {783 .name = "gcc_qupv3_wrap1_s4_clk_src",784 .parent_data = gcc_parent_data_0,785 .num_parents = ARRAY_SIZE(gcc_parent_data_0),786 .flags = CLK_SET_RATE_PARENT,787 .ops = &clk_rcg2_ops,788};789 790static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {791 .cmd_rcgr = 0x184f0,792 .mnd_width = 16,793 .hid_width = 5,794 .parent_map = gcc_parent_map_0,795 .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,796 .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,797};798 799static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {800 .name = "gcc_qupv3_wrap1_s5_clk_src",801 .parent_data = gcc_parent_data_0,802 .num_parents = ARRAY_SIZE(gcc_parent_data_0),803 .flags = CLK_SET_RATE_PARENT,804 .ops = &clk_rcg2_ops,805};806 807static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {808 .cmd_rcgr = 0x18628,809 .mnd_width = 16,810 .hid_width = 5,811 .parent_map = gcc_parent_map_0,812 .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,813 .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,814};815 816static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {817 .name = "gcc_qupv3_wrap1_s6_clk_src",818 .parent_data = gcc_parent_data_0,819 .num_parents = ARRAY_SIZE(gcc_parent_data_0),820 .flags = CLK_SET_RATE_PARENT,821 .ops = &clk_rcg2_ops,822};823 824static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {825 .cmd_rcgr = 0x18760,826 .mnd_width = 16,827 .hid_width = 5,828 .parent_map = gcc_parent_map_0,829 .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,830 .clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,831};832 833static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = {834 .name = "gcc_qupv3_wrap1_s7_clk_src",835 .parent_data = gcc_parent_data_0,836 .num_parents = ARRAY_SIZE(gcc_parent_data_0),837 .flags = CLK_SET_RATE_PARENT,838 .ops = &clk_rcg2_ops,839};840 841static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = {842 .cmd_rcgr = 0x18898,843 .mnd_width = 16,844 .hid_width = 5,845 .parent_map = gcc_parent_map_0,846 .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,847 .clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init,848};849 850static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = {851 .name = "gcc_qupv3_wrap2_s0_clk_src",852 .parent_data = gcc_parent_data_0,853 .num_parents = ARRAY_SIZE(gcc_parent_data_0),854 .flags = CLK_SET_RATE_PARENT,855 .ops = &clk_rcg2_ops,856};857 858static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {859 .cmd_rcgr = 0x1e010,860 .mnd_width = 16,861 .hid_width = 5,862 .parent_map = gcc_parent_map_0,863 .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,864 .clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init,865};866 867static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = {868 .name = "gcc_qupv3_wrap2_s1_clk_src",869 .parent_data = gcc_parent_data_0,870 .num_parents = ARRAY_SIZE(gcc_parent_data_0),871 .flags = CLK_SET_RATE_PARENT,872 .ops = &clk_rcg2_ops,873};874 875static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {876 .cmd_rcgr = 0x1e148,877 .mnd_width = 16,878 .hid_width = 5,879 .parent_map = gcc_parent_map_0,880 .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,881 .clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init,882};883 884static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = {885 .name = "gcc_qupv3_wrap2_s2_clk_src",886 .parent_data = gcc_parent_data_0,887 .num_parents = ARRAY_SIZE(gcc_parent_data_0),888 .flags = CLK_SET_RATE_PARENT,889 .ops = &clk_rcg2_ops,890};891 892static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {893 .cmd_rcgr = 0x1e280,894 .mnd_width = 16,895 .hid_width = 5,896 .parent_map = gcc_parent_map_0,897 .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,898 .clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init,899};900 901static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = {902 .name = "gcc_qupv3_wrap2_s3_clk_src",903 .parent_data = gcc_parent_data_0,904 .num_parents = ARRAY_SIZE(gcc_parent_data_0),905 .flags = CLK_SET_RATE_PARENT,906 .ops = &clk_rcg2_ops,907};908 909static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {910 .cmd_rcgr = 0x1e3b8,911 .mnd_width = 16,912 .hid_width = 5,913 .parent_map = gcc_parent_map_0,914 .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,915 .clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init,916};917 918static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = {919 .name = "gcc_qupv3_wrap2_s4_clk_src",920 .parent_data = gcc_parent_data_0,921 .num_parents = ARRAY_SIZE(gcc_parent_data_0),922 .flags = CLK_SET_RATE_PARENT,923 .ops = &clk_rcg2_ops,924};925 926static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {927 .cmd_rcgr = 0x1e4f0,928 .mnd_width = 16,929 .hid_width = 5,930 .parent_map = gcc_parent_map_0,931 .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,932 .clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init,933};934 935static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = {936 .name = "gcc_qupv3_wrap2_s5_clk_src",937 .parent_data = gcc_parent_data_0,938 .num_parents = ARRAY_SIZE(gcc_parent_data_0),939 .flags = CLK_SET_RATE_PARENT,940 .ops = &clk_rcg2_ops,941};942 943static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {944 .cmd_rcgr = 0x1e628,945 .mnd_width = 16,946 .hid_width = 5,947 .parent_map = gcc_parent_map_0,948 .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,949 .clkr.hw.init = &gcc_qupv3_wrap2_s5_clk_src_init,950};951 952static const struct freq_tbl ftbl_gcc_qupv3_wrap2_s6_clk_src[] = {953 F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),954 F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),955 F(19200000, P_BI_TCXO, 1, 0, 0),956 F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),957 F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),958 F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),959 F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375),960 F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),961 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),962 F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),963 F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),964 F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),965 F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375),966 F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75),967 F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625),968 F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),969 F(125000000, P_GCC_GPLL0_OUT_MAIN, 1, 5, 24),970 { }971};972 973static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init = {974 .name = "gcc_qupv3_wrap2_s6_clk_src",975 .parent_data = gcc_parent_data_8,976 .num_parents = ARRAY_SIZE(gcc_parent_data_8),977 .flags = CLK_SET_RATE_PARENT,978 .ops = &clk_rcg2_ops,979};980 981static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src = {982 .cmd_rcgr = 0x1e760,983 .mnd_width = 16,984 .hid_width = 5,985 .parent_map = gcc_parent_map_8,986 .freq_tbl = ftbl_gcc_qupv3_wrap2_s6_clk_src,987 .clkr.hw.init = &gcc_qupv3_wrap2_s6_clk_src_init,988};989 990static struct clk_init_data gcc_qupv3_wrap2_s7_clk_src_init = {991 .name = "gcc_qupv3_wrap2_s7_clk_src",992 .parent_data = gcc_parent_data_0,993 .num_parents = ARRAY_SIZE(gcc_parent_data_0),994 .flags = CLK_SET_RATE_PARENT,995 .ops = &clk_rcg2_ops,996};997 998static struct clk_rcg2 gcc_qupv3_wrap2_s7_clk_src = {999 .cmd_rcgr = 0x1e898,1000 .mnd_width = 16,1001 .hid_width = 5,1002 .parent_map = gcc_parent_map_0,1003 .freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,1004 .clkr.hw.init = &gcc_qupv3_wrap2_s7_clk_src_init,1005};1006 1007static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {1008 F(400000, P_BI_TCXO, 12, 1, 4),1009 F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),1010 F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0),1011 F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),1012 F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),1013 F(202000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0),1014 { }1015};1016 1017static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {1018 .cmd_rcgr = 0x14018,1019 .mnd_width = 8,1020 .hid_width = 5,1021 .parent_map = gcc_parent_map_9,1022 .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,1023 .clkr.hw.init = &(struct clk_init_data){1024 .name = "gcc_sdcc2_apps_clk_src",1025 .parent_data = gcc_parent_data_9,1026 .num_parents = ARRAY_SIZE(gcc_parent_data_9),1027 .flags = CLK_SET_RATE_PARENT,1028 .ops = &clk_rcg2_shared_ops,1029 },1030};1031 1032static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {1033 F(400000, P_BI_TCXO, 12, 1, 4),1034 F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),1035 F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0),1036 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),1037 { }1038};1039 1040static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {1041 .cmd_rcgr = 0x16018,1042 .mnd_width = 8,1043 .hid_width = 5,1044 .parent_map = gcc_parent_map_0,1045 .freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,1046 .clkr.hw.init = &(struct clk_init_data){1047 .name = "gcc_sdcc4_apps_clk_src",1048 .parent_data = gcc_parent_data_0,1049 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1050 .flags = CLK_SET_RATE_PARENT,1051 .ops = &clk_rcg2_shared_ops,1052 },1053};1054 1055static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {1056 F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),1057 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),1058 F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),1059 F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),1060 { }1061};1062 1063static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {1064 .cmd_rcgr = 0x77030,1065 .mnd_width = 8,1066 .hid_width = 5,1067 .parent_map = gcc_parent_map_0,1068 .freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,1069 .clkr.hw.init = &(struct clk_init_data){1070 .name = "gcc_ufs_phy_axi_clk_src",1071 .parent_data = gcc_parent_data_0,1072 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1073 .flags = CLK_SET_RATE_PARENT,1074 .ops = &clk_rcg2_shared_ops,1075 },1076};1077 1078static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {1079 F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),1080 F(201500000, P_GCC_GPLL4_OUT_MAIN, 4, 0, 0),1081 F(403000000, P_GCC_GPLL4_OUT_MAIN, 2, 0, 0),1082 { }1083};1084 1085static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {1086 .cmd_rcgr = 0x77080,1087 .mnd_width = 0,1088 .hid_width = 5,1089 .parent_map = gcc_parent_map_3,1090 .freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,1091 .clkr.hw.init = &(struct clk_init_data){1092 .name = "gcc_ufs_phy_ice_core_clk_src",1093 .parent_data = gcc_parent_data_3,1094 .num_parents = ARRAY_SIZE(gcc_parent_data_3),1095 .flags = CLK_SET_RATE_PARENT,1096 .ops = &clk_rcg2_shared_ops,1097 },1098};1099 1100static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = {1101 F(9600000, P_BI_TCXO, 2, 0, 0),1102 F(19200000, P_BI_TCXO, 1, 0, 0),1103 { }1104};1105 1106static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {1107 .cmd_rcgr = 0x770b4,1108 .mnd_width = 0,1109 .hid_width = 5,1110 .parent_map = gcc_parent_map_4,1111 .freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src,1112 .clkr.hw.init = &(struct clk_init_data){1113 .name = "gcc_ufs_phy_phy_aux_clk_src",1114 .parent_data = gcc_parent_data_4,1115 .num_parents = ARRAY_SIZE(gcc_parent_data_4),1116 .flags = CLK_SET_RATE_PARENT,1117 .ops = &clk_rcg2_shared_ops,1118 },1119};1120 1121static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src[] = {1122 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),1123 F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),1124 F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),1125 { }1126};1127 1128static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {1129 .cmd_rcgr = 0x77098,1130 .mnd_width = 0,1131 .hid_width = 5,1132 .parent_map = gcc_parent_map_0,1133 .freq_tbl = ftbl_gcc_ufs_phy_unipro_core_clk_src,1134 .clkr.hw.init = &(struct clk_init_data){1135 .name = "gcc_ufs_phy_unipro_core_clk_src",1136 .parent_data = gcc_parent_data_0,1137 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1138 .flags = CLK_SET_RATE_PARENT,1139 .ops = &clk_rcg2_shared_ops,1140 },1141};1142 1143static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {1144 F(66666667, P_GCC_GPLL0_OUT_EVEN, 4.5, 0, 0),1145 F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0),1146 F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),1147 F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),1148 { }1149};1150 1151static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {1152 .cmd_rcgr = 0x3902c,1153 .mnd_width = 8,1154 .hid_width = 5,1155 .parent_map = gcc_parent_map_0,1156 .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,1157 .clkr.hw.init = &(struct clk_init_data){1158 .name = "gcc_usb30_prim_master_clk_src",1159 .parent_data = gcc_parent_data_0,1160 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1161 .flags = CLK_SET_RATE_PARENT,1162 .ops = &clk_rcg2_shared_no_init_park_ops,1163 },1164};1165 1166static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {1167 .cmd_rcgr = 0x39044,1168 .mnd_width = 0,1169 .hid_width = 5,1170 .parent_map = gcc_parent_map_0,1171 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,1172 .clkr.hw.init = &(struct clk_init_data){1173 .name = "gcc_usb30_prim_mock_utmi_clk_src",1174 .parent_data = gcc_parent_data_0,1175 .num_parents = ARRAY_SIZE(gcc_parent_data_0),1176 .flags = CLK_SET_RATE_PARENT,1177 .ops = &clk_rcg2_shared_ops,1178 },1179};1180 1181static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {1182 .cmd_rcgr = 0x39070,1183 .mnd_width = 0,1184 .hid_width = 5,1185 .parent_map = gcc_parent_map_2,1186 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,1187 .clkr.hw.init = &(struct clk_init_data){1188 .name = "gcc_usb3_prim_phy_aux_clk_src",1189 .parent_data = gcc_parent_data_2,1190 .num_parents = ARRAY_SIZE(gcc_parent_data_2),1191 .flags = CLK_SET_RATE_PARENT,1192 .ops = &clk_rcg2_shared_ops,1193 },1194};1195 1196static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {1197 .reg = 0x3905c,1198 .shift = 0,1199 .width = 4,1200 .clkr.hw.init = &(struct clk_init_data) {1201 .name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",1202 .parent_hws = (const struct clk_hw*[]) {1203 &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,1204 },1205 .num_parents = 1,1206 .flags = CLK_SET_RATE_PARENT,1207 .ops = &clk_regmap_div_ro_ops,1208 },1209};1210 1211static struct clk_branch gcc_aggre_noc_pcie_axi_clk = {1212 .halt_reg = 0x1003c,1213 .halt_check = BRANCH_HALT_SKIP,1214 .hwcg_reg = 0x1003c,1215 .hwcg_bit = 1,1216 .clkr = {1217 .enable_reg = 0x52000,1218 .enable_mask = BIT(12),1219 .hw.init = &(struct clk_init_data){1220 .name = "gcc_aggre_noc_pcie_axi_clk",1221 .ops = &clk_branch2_ops,1222 },1223 },1224};1225 1226static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {1227 .halt_reg = 0x770e4,1228 .halt_check = BRANCH_HALT_VOTED,1229 .hwcg_reg = 0x770e4,1230 .hwcg_bit = 1,1231 .clkr = {1232 .enable_reg = 0x770e4,1233 .enable_mask = BIT(0),1234 .hw.init = &(struct clk_init_data){1235 .name = "gcc_aggre_ufs_phy_axi_clk",1236 .parent_hws = (const struct clk_hw*[]) {1237 &gcc_ufs_phy_axi_clk_src.clkr.hw,1238 },1239 .num_parents = 1,1240 .flags = CLK_SET_RATE_PARENT,1241 .ops = &clk_branch2_ops,1242 },1243 },1244};1245 1246static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk = {1247 .halt_reg = 0x770e4,1248 .halt_check = BRANCH_HALT_VOTED,1249 .hwcg_reg = 0x770e4,1250 .hwcg_bit = 1,1251 .clkr = {1252 .enable_reg = 0x770e4,1253 .enable_mask = BIT(1),1254 .hw.init = &(struct clk_init_data){1255 .name = "gcc_aggre_ufs_phy_axi_hw_ctl_clk",1256 .parent_hws = (const struct clk_hw*[]) {1257 &gcc_ufs_phy_axi_clk_src.clkr.hw,1258 },1259 .num_parents = 1,1260 .flags = CLK_SET_RATE_PARENT,1261 .ops = &clk_branch2_ops,1262 },1263 },1264};1265 1266static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {1267 .halt_reg = 0x3908c,1268 .halt_check = BRANCH_HALT_VOTED,1269 .hwcg_reg = 0x3908c,1270 .hwcg_bit = 1,1271 .clkr = {1272 .enable_reg = 0x3908c,1273 .enable_mask = BIT(0),1274 .hw.init = &(struct clk_init_data){1275 .name = "gcc_aggre_usb3_prim_axi_clk",1276 .parent_hws = (const struct clk_hw*[]) {1277 &gcc_usb30_prim_master_clk_src.clkr.hw,1278 },1279 .num_parents = 1,1280 .flags = CLK_SET_RATE_PARENT,1281 .ops = &clk_branch2_ops,1282 },1283 },1284};1285 1286static struct clk_branch gcc_boot_rom_ahb_clk = {1287 .halt_reg = 0x38004,1288 .halt_check = BRANCH_HALT_VOTED,1289 .hwcg_reg = 0x38004,1290 .hwcg_bit = 1,1291 .clkr = {1292 .enable_reg = 0x52000,1293 .enable_mask = BIT(10),1294 .hw.init = &(struct clk_init_data){1295 .name = "gcc_boot_rom_ahb_clk",1296 .ops = &clk_branch2_ops,1297 },1298 },1299};1300 1301static struct clk_branch gcc_camera_hf_axi_clk = {1302 .halt_reg = 0x26010,1303 .halt_check = BRANCH_HALT_SKIP,1304 .hwcg_reg = 0x26010,1305 .hwcg_bit = 1,1306 .clkr = {1307 .enable_reg = 0x26010,1308 .enable_mask = BIT(0),1309 .hw.init = &(struct clk_init_data){1310 .name = "gcc_camera_hf_axi_clk",1311 .ops = &clk_branch2_ops,1312 },1313 },1314};1315 1316static struct clk_branch gcc_camera_sf_axi_clk = {1317 .halt_reg = 0x2601c,1318 .halt_check = BRANCH_HALT_SKIP,1319 .hwcg_reg = 0x2601c,1320 .hwcg_bit = 1,1321 .clkr = {1322 .enable_reg = 0x2601c,1323 .enable_mask = BIT(0),1324 .hw.init = &(struct clk_init_data){1325 .name = "gcc_camera_sf_axi_clk",1326 .ops = &clk_branch2_ops,1327 },1328 },1329};1330 1331static struct clk_branch gcc_cfg_noc_pcie_anoc_ahb_clk = {1332 .halt_reg = 0x10028,1333 .halt_check = BRANCH_HALT_SKIP,1334 .hwcg_reg = 0x10028,1335 .hwcg_bit = 1,1336 .clkr = {1337 .enable_reg = 0x52000,1338 .enable_mask = BIT(20),1339 .hw.init = &(struct clk_init_data){1340 .name = "gcc_cfg_noc_pcie_anoc_ahb_clk",1341 .ops = &clk_branch2_ops,1342 },1343 },1344};1345 1346static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {1347 .halt_reg = 0x39088,1348 .halt_check = BRANCH_HALT_VOTED,1349 .hwcg_reg = 0x39088,1350 .hwcg_bit = 1,1351 .clkr = {1352 .enable_reg = 0x39088,1353 .enable_mask = BIT(0),1354 .hw.init = &(struct clk_init_data){1355 .name = "gcc_cfg_noc_usb3_prim_axi_clk",1356 .parent_hws = (const struct clk_hw*[]) {1357 &gcc_usb30_prim_master_clk_src.clkr.hw,1358 },1359 .num_parents = 1,1360 .flags = CLK_SET_RATE_PARENT,1361 .ops = &clk_branch2_ops,1362 },1363 },1364};1365 1366static struct clk_branch gcc_cnoc_pcie_sf_axi_clk = {1367 .halt_reg = 0x10030,1368 .halt_check = BRANCH_HALT_VOTED,1369 .hwcg_reg = 0x10030,1370 .hwcg_bit = 1,1371 .clkr = {1372 .enable_reg = 0x52008,1373 .enable_mask = BIT(6),1374 .hw.init = &(struct clk_init_data){1375 .name = "gcc_cnoc_pcie_sf_axi_clk",1376 .ops = &clk_branch2_ops,1377 },1378 },1379};1380 1381static struct clk_branch gcc_ddrss_gpu_axi_clk = {1382 .halt_reg = 0x71154,1383 .halt_check = BRANCH_HALT_SKIP,1384 .hwcg_reg = 0x71154,1385 .hwcg_bit = 1,1386 .clkr = {1387 .enable_reg = 0x71154,1388 .enable_mask = BIT(0),1389 .hw.init = &(struct clk_init_data){1390 .name = "gcc_ddrss_gpu_axi_clk",1391 .ops = &clk_branch2_aon_ops,1392 },1393 },1394};1395 1396static struct clk_branch gcc_ddrss_pcie_sf_qtb_clk = {1397 .halt_reg = 0x1004c,1398 .halt_check = BRANCH_HALT_SKIP,1399 .hwcg_reg = 0x1004c,1400 .hwcg_bit = 1,1401 .clkr = {1402 .enable_reg = 0x52000,1403 .enable_mask = BIT(19),1404 .hw.init = &(struct clk_init_data){1405 .name = "gcc_ddrss_pcie_sf_qtb_clk",1406 .ops = &clk_branch2_ops,1407 },1408 },1409};1410 1411static struct clk_branch gcc_disp_hf_axi_clk = {1412 .halt_reg = 0x2700c,1413 .halt_check = BRANCH_HALT_SKIP,1414 .hwcg_reg = 0x2700c,1415 .hwcg_bit = 1,1416 .clkr = {1417 .enable_reg = 0x2700c,1418 .enable_mask = BIT(0),1419 .hw.init = &(struct clk_init_data){1420 .name = "gcc_disp_hf_axi_clk",1421 .ops = &clk_branch2_ops,1422 },1423 },1424};1425 1426static struct clk_branch gcc_gp1_clk = {1427 .halt_reg = 0x64000,1428 .halt_check = BRANCH_HALT,1429 .clkr = {1430 .enable_reg = 0x64000,1431 .enable_mask = BIT(0),1432 .hw.init = &(struct clk_init_data){1433 .name = "gcc_gp1_clk",1434 .parent_hws = (const struct clk_hw*[]) {1435 &gcc_gp1_clk_src.clkr.hw,1436 },1437 .num_parents = 1,1438 .flags = CLK_SET_RATE_PARENT,1439 .ops = &clk_branch2_ops,1440 },1441 },1442};1443 1444static struct clk_branch gcc_gp2_clk = {1445 .halt_reg = 0x65000,1446 .halt_check = BRANCH_HALT,1447 .clkr = {1448 .enable_reg = 0x65000,1449 .enable_mask = BIT(0),1450 .hw.init = &(struct clk_init_data){1451 .name = "gcc_gp2_clk",1452 .parent_hws = (const struct clk_hw*[]) {1453 &gcc_gp2_clk_src.clkr.hw,1454 },1455 .num_parents = 1,1456 .flags = CLK_SET_RATE_PARENT,1457 .ops = &clk_branch2_ops,1458 },1459 },1460};1461 1462static struct clk_branch gcc_gp3_clk = {1463 .halt_reg = 0x66000,1464 .halt_check = BRANCH_HALT,1465 .clkr = {1466 .enable_reg = 0x66000,1467 .enable_mask = BIT(0),1468 .hw.init = &(struct clk_init_data){1469 .name = "gcc_gp3_clk",1470 .parent_hws = (const struct clk_hw*[]) {1471 &gcc_gp3_clk_src.clkr.hw,1472 },1473 .num_parents = 1,1474 .flags = CLK_SET_RATE_PARENT,1475 .ops = &clk_branch2_ops,1476 },1477 },1478};1479 1480static struct clk_branch gcc_gpu_gpll0_clk_src = {1481 .halt_check = BRANCH_HALT_DELAY,1482 .clkr = {1483 .enable_reg = 0x52000,1484 .enable_mask = BIT(15),1485 .hw.init = &(struct clk_init_data){1486 .name = "gcc_gpu_gpll0_clk_src",1487 .parent_hws = (const struct clk_hw*[]) {1488 &gcc_gpll0.clkr.hw,1489 },1490 .num_parents = 1,1491 .flags = CLK_SET_RATE_PARENT,1492 .ops = &clk_branch2_ops,1493 },1494 },1495};1496 1497static struct clk_branch gcc_gpu_gpll0_div_clk_src = {1498 .halt_check = BRANCH_HALT_DELAY,1499 .clkr = {1500 .enable_reg = 0x52000,1501 .enable_mask = BIT(16),1502 .hw.init = &(struct clk_init_data){1503 .name = "gcc_gpu_gpll0_div_clk_src",1504 .parent_hws = (const struct clk_hw*[]) {1505 &gcc_gpll0_out_even.clkr.hw,1506 },1507 .num_parents = 1,1508 .flags = CLK_SET_RATE_PARENT,1509 .ops = &clk_branch2_ops,1510 },1511 },1512};1513 1514static struct clk_branch gcc_gpu_memnoc_gfx_clk = {1515 .halt_reg = 0x71010,1516 .halt_check = BRANCH_HALT_VOTED,1517 .hwcg_reg = 0x71010,1518 .hwcg_bit = 1,1519 .clkr = {1520 .enable_reg = 0x71010,1521 .enable_mask = BIT(0),1522 .hw.init = &(struct clk_init_data){1523 .name = "gcc_gpu_memnoc_gfx_clk",1524 .ops = &clk_branch2_ops,1525 },1526 },1527};1528 1529static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {1530 .halt_reg = 0x71018,1531 .halt_check = BRANCH_HALT_DELAY,1532 .clkr = {1533 .enable_reg = 0x71018,1534 .enable_mask = BIT(0),1535 .hw.init = &(struct clk_init_data){1536 .name = "gcc_gpu_snoc_dvm_gfx_clk",1537 .ops = &clk_branch2_ops,1538 },1539 },1540};1541 1542static struct clk_branch gcc_pcie_0_aux_clk = {1543 .halt_reg = 0x6b03c,1544 .halt_check = BRANCH_HALT_VOTED,1545 .clkr = {1546 .enable_reg = 0x52008,1547 .enable_mask = BIT(3),1548 .hw.init = &(struct clk_init_data){1549 .name = "gcc_pcie_0_aux_clk",1550 .parent_hws = (const struct clk_hw*[]) {1551 &gcc_pcie_0_aux_clk_src.clkr.hw,1552 },1553 .num_parents = 1,1554 .flags = CLK_SET_RATE_PARENT,1555 .ops = &clk_branch2_ops,1556 },1557 },1558};1559 1560static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {1561 .halt_reg = 0x6b038,1562 .halt_check = BRANCH_HALT_VOTED,1563 .hwcg_reg = 0x6b038,1564 .hwcg_bit = 1,1565 .clkr = {1566 .enable_reg = 0x52008,1567 .enable_mask = BIT(2),1568 .hw.init = &(struct clk_init_data){1569 .name = "gcc_pcie_0_cfg_ahb_clk",1570 .ops = &clk_branch2_ops,1571 },1572 },1573};1574 1575static struct clk_branch gcc_pcie_0_mstr_axi_clk = {1576 .halt_reg = 0x6b02c,1577 .halt_check = BRANCH_HALT_SKIP,1578 .hwcg_reg = 0x6b02c,1579 .hwcg_bit = 1,1580 .clkr = {1581 .enable_reg = 0x52008,1582 .enable_mask = BIT(1),1583 .hw.init = &(struct clk_init_data){1584 .name = "gcc_pcie_0_mstr_axi_clk",1585 .ops = &clk_branch2_ops,1586 },1587 },1588};1589 1590static struct clk_branch gcc_pcie_0_phy_rchng_clk = {1591 .halt_reg = 0x6b054,1592 .halt_check = BRANCH_HALT_VOTED,1593 .clkr = {1594 .enable_reg = 0x52000,1595 .enable_mask = BIT(22),1596 .hw.init = &(struct clk_init_data){1597 .name = "gcc_pcie_0_phy_rchng_clk",1598 .parent_hws = (const struct clk_hw*[]) {1599 &gcc_pcie_0_phy_rchng_clk_src.clkr.hw,1600 },1601 .num_parents = 1,1602 .flags = CLK_SET_RATE_PARENT,1603 .ops = &clk_branch2_ops,1604 },1605 },1606};1607 1608static struct clk_branch gcc_pcie_0_pipe_clk = {1609 .halt_reg = 0x6b048,1610 .halt_check = BRANCH_HALT_SKIP,1611 .clkr = {1612 .enable_reg = 0x52008,1613 .enable_mask = BIT(4),1614 .hw.init = &(struct clk_init_data){1615 .name = "gcc_pcie_0_pipe_clk",1616 .parent_hws = (const struct clk_hw*[]) {1617 &gcc_pcie_0_pipe_clk_src.clkr.hw,1618 },1619 .num_parents = 1,1620 .flags = CLK_SET_RATE_PARENT,1621 .ops = &clk_branch2_ops,1622 },1623 },1624};1625 1626static struct clk_branch gcc_pcie_0_slv_axi_clk = {1627 .halt_reg = 0x6b020,1628 .halt_check = BRANCH_HALT_VOTED,1629 .hwcg_reg = 0x6b020,1630 .hwcg_bit = 1,1631 .clkr = {1632 .enable_reg = 0x52008,1633 .enable_mask = BIT(0),1634 .hw.init = &(struct clk_init_data){1635 .name = "gcc_pcie_0_slv_axi_clk",1636 .ops = &clk_branch2_ops,1637 },1638 },1639};1640 1641static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {1642 .halt_reg = 0x6b01c,1643 .halt_check = BRANCH_HALT_VOTED,1644 .clkr = {1645 .enable_reg = 0x52008,1646 .enable_mask = BIT(5),1647 .hw.init = &(struct clk_init_data){1648 .name = "gcc_pcie_0_slv_q2a_axi_clk",1649 .ops = &clk_branch2_ops,1650 },1651 },1652};1653 1654static struct clk_branch gcc_pcie_1_aux_clk = {1655 .halt_reg = 0x8d038,1656 .halt_check = BRANCH_HALT_VOTED,1657 .clkr = {1658 .enable_reg = 0x52000,1659 .enable_mask = BIT(29),1660 .hw.init = &(struct clk_init_data){1661 .name = "gcc_pcie_1_aux_clk",1662 .parent_hws = (const struct clk_hw*[]) {1663 &gcc_pcie_1_aux_clk_src.clkr.hw,1664 },1665 .num_parents = 1,1666 .flags = CLK_SET_RATE_PARENT,1667 .ops = &clk_branch2_ops,1668 },1669 },1670};1671 1672static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {1673 .halt_reg = 0x8d034,1674 .halt_check = BRANCH_HALT_VOTED,1675 .hwcg_reg = 0x8d034,1676 .hwcg_bit = 1,1677 .clkr = {1678 .enable_reg = 0x52000,1679 .enable_mask = BIT(28),1680 .hw.init = &(struct clk_init_data){1681 .name = "gcc_pcie_1_cfg_ahb_clk",1682 .ops = &clk_branch2_ops,1683 },1684 },1685};1686 1687static struct clk_branch gcc_pcie_1_mstr_axi_clk = {1688 .halt_reg = 0x8d028,1689 .halt_check = BRANCH_HALT_SKIP,1690 .hwcg_reg = 0x8d028,1691 .hwcg_bit = 1,1692 .clkr = {1693 .enable_reg = 0x52000,1694 .enable_mask = BIT(27),1695 .hw.init = &(struct clk_init_data){1696 .name = "gcc_pcie_1_mstr_axi_clk",1697 .ops = &clk_branch2_ops,1698 },1699 },1700};1701 1702static struct clk_branch gcc_pcie_1_phy_aux_clk = {1703 .halt_reg = 0x8d044,1704 .halt_check = BRANCH_HALT_VOTED,1705 .clkr = {1706 .enable_reg = 0x52000,1707 .enable_mask = BIT(24),1708 .hw.init = &(struct clk_init_data){1709 .name = "gcc_pcie_1_phy_aux_clk",1710 .parent_hws = (const struct clk_hw*[]) {1711 &gcc_pcie_1_phy_aux_clk_src.clkr.hw,1712 },1713 .num_parents = 1,1714 .flags = CLK_SET_RATE_PARENT,1715 .ops = &clk_branch2_ops,1716 },1717 },1718};1719 1720static struct clk_branch gcc_pcie_1_phy_rchng_clk = {1721 .halt_reg = 0x8d05c,1722 .halt_check = BRANCH_HALT_VOTED,1723 .clkr = {1724 .enable_reg = 0x52000,1725 .enable_mask = BIT(23),1726 .hw.init = &(struct clk_init_data){1727 .name = "gcc_pcie_1_phy_rchng_clk",1728 .parent_hws = (const struct clk_hw*[]) {1729 &gcc_pcie_1_phy_rchng_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_pcie_1_pipe_clk = {1739 .halt_reg = 0x8d050,1740 .halt_check = BRANCH_HALT_SKIP,1741 .clkr = {1742 .enable_reg = 0x52000,1743 .enable_mask = BIT(30),1744 .hw.init = &(struct clk_init_data){1745 .name = "gcc_pcie_1_pipe_clk",1746 .parent_hws = (const struct clk_hw*[]) {1747 &gcc_pcie_1_pipe_clk_src.clkr.hw,1748 },1749 .num_parents = 1,1750 .flags = CLK_SET_RATE_PARENT,1751 .ops = &clk_branch2_ops,1752 },1753 },1754};1755 1756static struct clk_branch gcc_pcie_1_slv_axi_clk = {1757 .halt_reg = 0x8d01c,1758 .halt_check = BRANCH_HALT_VOTED,1759 .hwcg_reg = 0x8d01c,1760 .hwcg_bit = 1,1761 .clkr = {1762 .enable_reg = 0x52000,1763 .enable_mask = BIT(26),1764 .hw.init = &(struct clk_init_data){1765 .name = "gcc_pcie_1_slv_axi_clk",1766 .ops = &clk_branch2_ops,1767 },1768 },1769};1770 1771static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {1772 .halt_reg = 0x8d018,1773 .halt_check = BRANCH_HALT_VOTED,1774 .clkr = {1775 .enable_reg = 0x52000,1776 .enable_mask = BIT(25),1777 .hw.init = &(struct clk_init_data){1778 .name = "gcc_pcie_1_slv_q2a_axi_clk",1779 .ops = &clk_branch2_ops,1780 },1781 },1782};1783 1784static struct clk_branch gcc_pdm2_clk = {1785 .halt_reg = 0x3300c,1786 .halt_check = BRANCH_HALT,1787 .clkr = {1788 .enable_reg = 0x3300c,1789 .enable_mask = BIT(0),1790 .hw.init = &(struct clk_init_data){1791 .name = "gcc_pdm2_clk",1792 .parent_hws = (const struct clk_hw*[]) {1793 &gcc_pdm2_clk_src.clkr.hw,1794 },1795 .num_parents = 1,1796 .flags = CLK_SET_RATE_PARENT,1797 .ops = &clk_branch2_ops,1798 },1799 },1800};1801 1802static struct clk_branch gcc_pdm_ahb_clk = {1803 .halt_reg = 0x33004,1804 .halt_check = BRANCH_HALT_VOTED,1805 .hwcg_reg = 0x33004,1806 .hwcg_bit = 1,1807 .clkr = {1808 .enable_reg = 0x33004,1809 .enable_mask = BIT(0),1810 .hw.init = &(struct clk_init_data){1811 .name = "gcc_pdm_ahb_clk",1812 .ops = &clk_branch2_ops,1813 },1814 },1815};1816 1817static struct clk_branch gcc_pdm_xo4_clk = {1818 .halt_reg = 0x33008,1819 .halt_check = BRANCH_HALT,1820 .clkr = {1821 .enable_reg = 0x33008,1822 .enable_mask = BIT(0),1823 .hw.init = &(struct clk_init_data){1824 .name = "gcc_pdm_xo4_clk",1825 .ops = &clk_branch2_ops,1826 },1827 },1828};1829 1830static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {1831 .halt_reg = 0x26008,1832 .halt_check = BRANCH_HALT_VOTED,1833 .hwcg_reg = 0x26008,1834 .hwcg_bit = 1,1835 .clkr = {1836 .enable_reg = 0x26008,1837 .enable_mask = BIT(0),1838 .hw.init = &(struct clk_init_data){1839 .name = "gcc_qmip_camera_nrt_ahb_clk",1840 .ops = &clk_branch2_ops,1841 },1842 },1843};1844 1845static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {1846 .halt_reg = 0x2600c,1847 .halt_check = BRANCH_HALT_VOTED,1848 .hwcg_reg = 0x2600c,1849 .hwcg_bit = 1,1850 .clkr = {1851 .enable_reg = 0x2600c,1852 .enable_mask = BIT(0),1853 .hw.init = &(struct clk_init_data){1854 .name = "gcc_qmip_camera_rt_ahb_clk",1855 .ops = &clk_branch2_ops,1856 },1857 },1858};1859 1860static struct clk_branch gcc_qmip_disp_ahb_clk = {1861 .halt_reg = 0x27008,1862 .halt_check = BRANCH_HALT_VOTED,1863 .hwcg_reg = 0x27008,1864 .hwcg_bit = 1,1865 .clkr = {1866 .enable_reg = 0x27008,1867 .enable_mask = BIT(0),1868 .hw.init = &(struct clk_init_data){1869 .name = "gcc_qmip_disp_ahb_clk",1870 .ops = &clk_branch2_ops,1871 },1872 },1873};1874 1875static struct clk_branch gcc_qmip_gpu_ahb_clk = {1876 .halt_reg = 0x71008,1877 .halt_check = BRANCH_HALT_VOTED,1878 .hwcg_reg = 0x71008,1879 .hwcg_bit = 1,1880 .clkr = {1881 .enable_reg = 0x71008,1882 .enable_mask = BIT(0),1883 .hw.init = &(struct clk_init_data){1884 .name = "gcc_qmip_gpu_ahb_clk",1885 .ops = &clk_branch2_ops,1886 },1887 },1888};1889 1890static struct clk_branch gcc_qmip_pcie_ahb_clk = {1891 .halt_reg = 0x6b018,1892 .halt_check = BRANCH_HALT_VOTED,1893 .hwcg_reg = 0x6b018,1894 .hwcg_bit = 1,1895 .clkr = {1896 .enable_reg = 0x52000,1897 .enable_mask = BIT(11),1898 .hw.init = &(struct clk_init_data){1899 .name = "gcc_qmip_pcie_ahb_clk",1900 .ops = &clk_branch2_ops,1901 },1902 },1903};1904 1905static struct clk_branch gcc_qmip_video_cv_cpu_ahb_clk = {1906 .halt_reg = 0x32014,1907 .halt_check = BRANCH_HALT_VOTED,1908 .hwcg_reg = 0x32014,1909 .hwcg_bit = 1,1910 .clkr = {1911 .enable_reg = 0x32014,1912 .enable_mask = BIT(0),1913 .hw.init = &(struct clk_init_data){1914 .name = "gcc_qmip_video_cv_cpu_ahb_clk",1915 .ops = &clk_branch2_ops,1916 },1917 },1918};1919 1920static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {1921 .halt_reg = 0x32008,1922 .halt_check = BRANCH_HALT_VOTED,1923 .hwcg_reg = 0x32008,1924 .hwcg_bit = 1,1925 .clkr = {1926 .enable_reg = 0x32008,1927 .enable_mask = BIT(0),1928 .hw.init = &(struct clk_init_data){1929 .name = "gcc_qmip_video_cvp_ahb_clk",1930 .ops = &clk_branch2_ops,1931 },1932 },1933};1934 1935static struct clk_branch gcc_qmip_video_v_cpu_ahb_clk = {1936 .halt_reg = 0x32010,1937 .halt_check = BRANCH_HALT_VOTED,1938 .hwcg_reg = 0x32010,1939 .hwcg_bit = 1,1940 .clkr = {1941 .enable_reg = 0x32010,1942 .enable_mask = BIT(0),1943 .hw.init = &(struct clk_init_data){1944 .name = "gcc_qmip_video_v_cpu_ahb_clk",1945 .ops = &clk_branch2_ops,1946 },1947 },1948};1949 1950static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {1951 .halt_reg = 0x3200c,1952 .halt_check = BRANCH_HALT_VOTED,1953 .hwcg_reg = 0x3200c,1954 .hwcg_bit = 1,1955 .clkr = {1956 .enable_reg = 0x3200c,1957 .enable_mask = BIT(0),1958 .hw.init = &(struct clk_init_data){1959 .name = "gcc_qmip_video_vcodec_ahb_clk",1960 .ops = &clk_branch2_ops,1961 },1962 },1963};1964 1965static struct clk_branch gcc_qupv3_i2c_core_clk = {1966 .halt_reg = 0x23144,1967 .halt_check = BRANCH_HALT_VOTED,1968 .clkr = {1969 .enable_reg = 0x52008,1970 .enable_mask = BIT(8),1971 .hw.init = &(struct clk_init_data){1972 .name = "gcc_qupv3_i2c_core_clk",1973 .ops = &clk_branch2_ops,1974 },1975 },1976};1977 1978static struct clk_branch gcc_qupv3_i2c_s0_clk = {1979 .halt_reg = 0x17004,1980 .halt_check = BRANCH_HALT_VOTED,1981 .clkr = {1982 .enable_reg = 0x52008,1983 .enable_mask = BIT(10),1984 .hw.init = &(struct clk_init_data){1985 .name = "gcc_qupv3_i2c_s0_clk",1986 .parent_hws = (const struct clk_hw*[]) {1987 &gcc_qupv3_i2c_s0_clk_src.clkr.hw,1988 },1989 .num_parents = 1,1990 .flags = CLK_SET_RATE_PARENT,1991 .ops = &clk_branch2_ops,1992 },1993 },1994};1995 1996static struct clk_branch gcc_qupv3_i2c_s1_clk = {1997 .halt_reg = 0x17020,1998 .halt_check = BRANCH_HALT_VOTED,1999 .clkr = {2000 .enable_reg = 0x52008,2001 .enable_mask = BIT(11),2002 .hw.init = &(struct clk_init_data){2003 .name = "gcc_qupv3_i2c_s1_clk",2004 .parent_hws = (const struct clk_hw*[]) {2005 &gcc_qupv3_i2c_s1_clk_src.clkr.hw,2006 },2007 .num_parents = 1,2008 .flags = CLK_SET_RATE_PARENT,2009 .ops = &clk_branch2_ops,2010 },2011 },2012};2013 2014static struct clk_branch gcc_qupv3_i2c_s2_clk = {2015 .halt_reg = 0x1703c,2016 .halt_check = BRANCH_HALT_VOTED,2017 .clkr = {2018 .enable_reg = 0x52008,2019 .enable_mask = BIT(12),2020 .hw.init = &(struct clk_init_data){2021 .name = "gcc_qupv3_i2c_s2_clk",2022 .parent_hws = (const struct clk_hw*[]) {2023 &gcc_qupv3_i2c_s2_clk_src.clkr.hw,2024 },2025 .num_parents = 1,2026 .flags = CLK_SET_RATE_PARENT,2027 .ops = &clk_branch2_ops,2028 },2029 },2030};2031 2032static struct clk_branch gcc_qupv3_i2c_s3_clk = {2033 .halt_reg = 0x17058,2034 .halt_check = BRANCH_HALT_VOTED,2035 .clkr = {2036 .enable_reg = 0x52008,2037 .enable_mask = BIT(13),2038 .hw.init = &(struct clk_init_data){2039 .name = "gcc_qupv3_i2c_s3_clk",2040 .parent_hws = (const struct clk_hw*[]) {2041 &gcc_qupv3_i2c_s3_clk_src.clkr.hw,2042 },2043 .num_parents = 1,2044 .flags = CLK_SET_RATE_PARENT,2045 .ops = &clk_branch2_ops,2046 },2047 },2048};2049 2050static struct clk_branch gcc_qupv3_i2c_s4_clk = {2051 .halt_reg = 0x17074,2052 .halt_check = BRANCH_HALT_VOTED,2053 .clkr = {2054 .enable_reg = 0x52008,2055 .enable_mask = BIT(14),2056 .hw.init = &(struct clk_init_data){2057 .name = "gcc_qupv3_i2c_s4_clk",2058 .parent_hws = (const struct clk_hw*[]) {2059 &gcc_qupv3_i2c_s4_clk_src.clkr.hw,2060 },2061 .num_parents = 1,2062 .flags = CLK_SET_RATE_PARENT,2063 .ops = &clk_branch2_ops,2064 },2065 },2066};2067 2068static struct clk_branch gcc_qupv3_i2c_s5_clk = {2069 .halt_reg = 0x17090,2070 .halt_check = BRANCH_HALT_VOTED,2071 .clkr = {2072 .enable_reg = 0x52008,2073 .enable_mask = BIT(15),2074 .hw.init = &(struct clk_init_data){2075 .name = "gcc_qupv3_i2c_s5_clk",2076 .parent_hws = (const struct clk_hw*[]) {2077 &gcc_qupv3_i2c_s5_clk_src.clkr.hw,2078 },2079 .num_parents = 1,2080 .flags = CLK_SET_RATE_PARENT,2081 .ops = &clk_branch2_ops,2082 },2083 },2084};2085 2086static struct clk_branch gcc_qupv3_i2c_s6_clk = {2087 .halt_reg = 0x170ac,2088 .halt_check = BRANCH_HALT_VOTED,2089 .clkr = {2090 .enable_reg = 0x52008,2091 .enable_mask = BIT(16),2092 .hw.init = &(struct clk_init_data){2093 .name = "gcc_qupv3_i2c_s6_clk",2094 .parent_hws = (const struct clk_hw*[]) {2095 &gcc_qupv3_i2c_s6_clk_src.clkr.hw,2096 },2097 .num_parents = 1,2098 .flags = CLK_SET_RATE_PARENT,2099 .ops = &clk_branch2_ops,2100 },2101 },2102};2103 2104static struct clk_branch gcc_qupv3_i2c_s7_clk = {2105 .halt_reg = 0x170c8,2106 .halt_check = BRANCH_HALT_VOTED,2107 .clkr = {2108 .enable_reg = 0x52008,2109 .enable_mask = BIT(17),2110 .hw.init = &(struct clk_init_data){2111 .name = "gcc_qupv3_i2c_s7_clk",2112 .parent_hws = (const struct clk_hw*[]) {2113 &gcc_qupv3_i2c_s7_clk_src.clkr.hw,2114 },2115 .num_parents = 1,2116 .flags = CLK_SET_RATE_PARENT,2117 .ops = &clk_branch2_ops,2118 },2119 },2120};2121 2122static struct clk_branch gcc_qupv3_i2c_s8_clk = {2123 .halt_reg = 0x170e4,2124 .halt_check = BRANCH_HALT_VOTED,2125 .clkr = {2126 .enable_reg = 0x52010,2127 .enable_mask = BIT(14),2128 .hw.init = &(struct clk_init_data){2129 .name = "gcc_qupv3_i2c_s8_clk",2130 .parent_hws = (const struct clk_hw*[]) {2131 &gcc_qupv3_i2c_s8_clk_src.clkr.hw,2132 },2133 .num_parents = 1,2134 .flags = CLK_SET_RATE_PARENT,2135 .ops = &clk_branch2_ops,2136 },2137 },2138};2139 2140static struct clk_branch gcc_qupv3_i2c_s9_clk = {2141 .halt_reg = 0x17100,2142 .halt_check = BRANCH_HALT_VOTED,2143 .clkr = {2144 .enable_reg = 0x52010,2145 .enable_mask = BIT(15),2146 .hw.init = &(struct clk_init_data){2147 .name = "gcc_qupv3_i2c_s9_clk",2148 .parent_hws = (const struct clk_hw*[]) {2149 &gcc_qupv3_i2c_s9_clk_src.clkr.hw,2150 },2151 .num_parents = 1,2152 .flags = CLK_SET_RATE_PARENT,2153 .ops = &clk_branch2_ops,2154 },2155 },2156};2157 2158static struct clk_branch gcc_qupv3_i2c_s_ahb_clk = {2159 .halt_reg = 0x23140,2160 .halt_check = BRANCH_HALT_VOTED,2161 .hwcg_reg = 0x23140,2162 .hwcg_bit = 1,2163 .clkr = {2164 .enable_reg = 0x52008,2165 .enable_mask = BIT(7),2166 .hw.init = &(struct clk_init_data){2167 .name = "gcc_qupv3_i2c_s_ahb_clk",2168 .ops = &clk_branch2_ops,2169 },2170 },2171};2172 2173static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {2174 .halt_reg = 0x23294,2175 .halt_check = BRANCH_HALT_VOTED,2176 .clkr = {2177 .enable_reg = 0x52008,2178 .enable_mask = BIT(18),2179 .hw.init = &(struct clk_init_data){2180 .name = "gcc_qupv3_wrap1_core_2x_clk",2181 .ops = &clk_branch2_ops,2182 },2183 },2184};2185 2186static struct clk_branch gcc_qupv3_wrap1_core_clk = {2187 .halt_reg = 0x23284,2188 .halt_check = BRANCH_HALT_VOTED,2189 .clkr = {2190 .enable_reg = 0x52008,2191 .enable_mask = BIT(19),2192 .hw.init = &(struct clk_init_data){2193 .name = "gcc_qupv3_wrap1_core_clk",2194 .ops = &clk_branch2_ops,2195 },2196 },2197};2198 2199static struct clk_branch gcc_qupv3_wrap1_s0_clk = {2200 .halt_reg = 0x18004,2201 .halt_check = BRANCH_HALT_VOTED,2202 .clkr = {2203 .enable_reg = 0x52008,2204 .enable_mask = BIT(22),2205 .hw.init = &(struct clk_init_data){2206 .name = "gcc_qupv3_wrap1_s0_clk",2207 .parent_hws = (const struct clk_hw*[]) {2208 &gcc_qupv3_wrap1_s0_clk_src.clkr.hw,2209 },2210 .num_parents = 1,2211 .flags = CLK_SET_RATE_PARENT,2212 .ops = &clk_branch2_ops,2213 },2214 },2215};2216 2217static struct clk_branch gcc_qupv3_wrap1_s1_clk = {2218 .halt_reg = 0x1813c,2219 .halt_check = BRANCH_HALT_VOTED,2220 .clkr = {2221 .enable_reg = 0x52008,2222 .enable_mask = BIT(23),2223 .hw.init = &(struct clk_init_data){2224 .name = "gcc_qupv3_wrap1_s1_clk",2225 .parent_hws = (const struct clk_hw*[]) {2226 &gcc_qupv3_wrap1_s1_clk_src.clkr.hw,2227 },2228 .num_parents = 1,2229 .flags = CLK_SET_RATE_PARENT,2230 .ops = &clk_branch2_ops,2231 },2232 },2233};2234 2235static struct clk_branch gcc_qupv3_wrap1_s2_clk = {2236 .halt_reg = 0x18274,2237 .halt_check = BRANCH_HALT_VOTED,2238 .clkr = {2239 .enable_reg = 0x52008,2240 .enable_mask = BIT(24),2241 .hw.init = &(struct clk_init_data){2242 .name = "gcc_qupv3_wrap1_s2_clk",2243 .parent_hws = (const struct clk_hw*[]) {2244 &gcc_qupv3_wrap1_s2_clk_src.clkr.hw,2245 },2246 .num_parents = 1,2247 .flags = CLK_SET_RATE_PARENT,2248 .ops = &clk_branch2_ops,2249 },2250 },2251};2252 2253static struct clk_branch gcc_qupv3_wrap1_s3_clk = {2254 .halt_reg = 0x183ac,2255 .halt_check = BRANCH_HALT_VOTED,2256 .clkr = {2257 .enable_reg = 0x52008,2258 .enable_mask = BIT(25),2259 .hw.init = &(struct clk_init_data){2260 .name = "gcc_qupv3_wrap1_s3_clk",2261 .parent_hws = (const struct clk_hw*[]) {2262 &gcc_qupv3_wrap1_s3_clk_src.clkr.hw,2263 },2264 .num_parents = 1,2265 .flags = CLK_SET_RATE_PARENT,2266 .ops = &clk_branch2_ops,2267 },2268 },2269};2270 2271static struct clk_branch gcc_qupv3_wrap1_s4_clk = {2272 .halt_reg = 0x184e4,2273 .halt_check = BRANCH_HALT_VOTED,2274 .clkr = {2275 .enable_reg = 0x52008,2276 .enable_mask = BIT(26),2277 .hw.init = &(struct clk_init_data){2278 .name = "gcc_qupv3_wrap1_s4_clk",2279 .parent_hws = (const struct clk_hw*[]) {2280 &gcc_qupv3_wrap1_s4_clk_src.clkr.hw,2281 },2282 .num_parents = 1,2283 .flags = CLK_SET_RATE_PARENT,2284 .ops = &clk_branch2_ops,2285 },2286 },2287};2288 2289static struct clk_branch gcc_qupv3_wrap1_s5_clk = {2290 .halt_reg = 0x1861c,2291 .halt_check = BRANCH_HALT_VOTED,2292 .clkr = {2293 .enable_reg = 0x52008,2294 .enable_mask = BIT(27),2295 .hw.init = &(struct clk_init_data){2296 .name = "gcc_qupv3_wrap1_s5_clk",2297 .parent_hws = (const struct clk_hw*[]) {2298 &gcc_qupv3_wrap1_s5_clk_src.clkr.hw,2299 },2300 .num_parents = 1,2301 .flags = CLK_SET_RATE_PARENT,2302 .ops = &clk_branch2_ops,2303 },2304 },2305};2306 2307static struct clk_branch gcc_qupv3_wrap1_s6_clk = {2308 .halt_reg = 0x18754,2309 .halt_check = BRANCH_HALT_VOTED,2310 .clkr = {2311 .enable_reg = 0x52008,2312 .enable_mask = BIT(28),2313 .hw.init = &(struct clk_init_data){2314 .name = "gcc_qupv3_wrap1_s6_clk",2315 .parent_hws = (const struct clk_hw*[]) {2316 &gcc_qupv3_wrap1_s6_clk_src.clkr.hw,2317 },2318 .num_parents = 1,2319 .flags = CLK_SET_RATE_PARENT,2320 .ops = &clk_branch2_ops,2321 },2322 },2323};2324 2325static struct clk_branch gcc_qupv3_wrap1_s7_clk = {2326 .halt_reg = 0x1888c,2327 .halt_check = BRANCH_HALT_VOTED,2328 .clkr = {2329 .enable_reg = 0x52010,2330 .enable_mask = BIT(16),2331 .hw.init = &(struct clk_init_data){2332 .name = "gcc_qupv3_wrap1_s7_clk",2333 .parent_hws = (const struct clk_hw*[]) {2334 &gcc_qupv3_wrap1_s7_clk_src.clkr.hw,2335 },2336 .num_parents = 1,2337 .flags = CLK_SET_RATE_PARENT,2338 .ops = &clk_branch2_ops,2339 },2340 },2341};2342 2343static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = {2344 .halt_reg = 0x23004,2345 .halt_check = BRANCH_HALT_VOTED,2346 .clkr = {2347 .enable_reg = 0x52010,2348 .enable_mask = BIT(3),2349 .hw.init = &(struct clk_init_data){2350 .name = "gcc_qupv3_wrap2_core_2x_clk",2351 .ops = &clk_branch2_ops,2352 },2353 },2354};2355 2356static struct clk_branch gcc_qupv3_wrap2_core_clk = {2357 .halt_reg = 0x233d4,2358 .halt_check = BRANCH_HALT_VOTED,2359 .clkr = {2360 .enable_reg = 0x52010,2361 .enable_mask = BIT(0),2362 .hw.init = &(struct clk_init_data){2363 .name = "gcc_qupv3_wrap2_core_clk",2364 .ops = &clk_branch2_ops,2365 },2366 },2367};2368 2369static struct clk_branch gcc_qupv3_wrap2_s0_clk = {2370 .halt_reg = 0x1e004,2371 .halt_check = BRANCH_HALT_VOTED,2372 .clkr = {2373 .enable_reg = 0x52010,2374 .enable_mask = BIT(4),2375 .hw.init = &(struct clk_init_data){2376 .name = "gcc_qupv3_wrap2_s0_clk",2377 .parent_hws = (const struct clk_hw*[]) {2378 &gcc_qupv3_wrap2_s0_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_qupv3_wrap2_s1_clk = {2388 .halt_reg = 0x1e13c,2389 .halt_check = BRANCH_HALT_VOTED,2390 .clkr = {2391 .enable_reg = 0x52010,2392 .enable_mask = BIT(5),2393 .hw.init = &(struct clk_init_data){2394 .name = "gcc_qupv3_wrap2_s1_clk",2395 .parent_hws = (const struct clk_hw*[]) {2396 &gcc_qupv3_wrap2_s1_clk_src.clkr.hw,2397 },2398 .num_parents = 1,2399 .flags = CLK_SET_RATE_PARENT,2400 .ops = &clk_branch2_ops,2401 },2402 },2403};2404 2405static struct clk_branch gcc_qupv3_wrap2_s2_clk = {2406 .halt_reg = 0x1e274,2407 .halt_check = BRANCH_HALT_VOTED,2408 .clkr = {2409 .enable_reg = 0x52010,2410 .enable_mask = BIT(6),2411 .hw.init = &(struct clk_init_data){2412 .name = "gcc_qupv3_wrap2_s2_clk",2413 .parent_hws = (const struct clk_hw*[]) {2414 &gcc_qupv3_wrap2_s2_clk_src.clkr.hw,2415 },2416 .num_parents = 1,2417 .flags = CLK_SET_RATE_PARENT,2418 .ops = &clk_branch2_ops,2419 },2420 },2421};2422 2423static struct clk_branch gcc_qupv3_wrap2_s3_clk = {2424 .halt_reg = 0x1e3ac,2425 .halt_check = BRANCH_HALT_VOTED,2426 .clkr = {2427 .enable_reg = 0x52010,2428 .enable_mask = BIT(7),2429 .hw.init = &(struct clk_init_data){2430 .name = "gcc_qupv3_wrap2_s3_clk",2431 .parent_hws = (const struct clk_hw*[]) {2432 &gcc_qupv3_wrap2_s3_clk_src.clkr.hw,2433 },2434 .num_parents = 1,2435 .flags = CLK_SET_RATE_PARENT,2436 .ops = &clk_branch2_ops,2437 },2438 },2439};2440 2441static struct clk_branch gcc_qupv3_wrap2_s4_clk = {2442 .halt_reg = 0x1e4e4,2443 .halt_check = BRANCH_HALT_VOTED,2444 .clkr = {2445 .enable_reg = 0x52010,2446 .enable_mask = BIT(8),2447 .hw.init = &(struct clk_init_data){2448 .name = "gcc_qupv3_wrap2_s4_clk",2449 .parent_hws = (const struct clk_hw*[]) {2450 &gcc_qupv3_wrap2_s4_clk_src.clkr.hw,2451 },2452 .num_parents = 1,2453 .flags = CLK_SET_RATE_PARENT,2454 .ops = &clk_branch2_ops,2455 },2456 },2457};2458 2459static struct clk_branch gcc_qupv3_wrap2_s5_clk = {2460 .halt_reg = 0x1e61c,2461 .halt_check = BRANCH_HALT_VOTED,2462 .clkr = {2463 .enable_reg = 0x52010,2464 .enable_mask = BIT(9),2465 .hw.init = &(struct clk_init_data){2466 .name = "gcc_qupv3_wrap2_s5_clk",2467 .parent_hws = (const struct clk_hw*[]) {2468 &gcc_qupv3_wrap2_s5_clk_src.clkr.hw,2469 },2470 .num_parents = 1,2471 .flags = CLK_SET_RATE_PARENT,2472 .ops = &clk_branch2_ops,2473 },2474 },2475};2476 2477static struct clk_branch gcc_qupv3_wrap2_s6_clk = {2478 .halt_reg = 0x1e754,2479 .halt_check = BRANCH_HALT_VOTED,2480 .clkr = {2481 .enable_reg = 0x52010,2482 .enable_mask = BIT(10),2483 .hw.init = &(struct clk_init_data){2484 .name = "gcc_qupv3_wrap2_s6_clk",2485 .parent_hws = (const struct clk_hw*[]) {2486 &gcc_qupv3_wrap2_s6_clk_src.clkr.hw,2487 },2488 .num_parents = 1,2489 .flags = CLK_SET_RATE_PARENT,2490 .ops = &clk_branch2_ops,2491 },2492 },2493};2494 2495static struct clk_branch gcc_qupv3_wrap2_s7_clk = {2496 .halt_reg = 0x1e88c,2497 .halt_check = BRANCH_HALT_VOTED,2498 .clkr = {2499 .enable_reg = 0x52010,2500 .enable_mask = BIT(17),2501 .hw.init = &(struct clk_init_data){2502 .name = "gcc_qupv3_wrap2_s7_clk",2503 .parent_hws = (const struct clk_hw*[]) {2504 &gcc_qupv3_wrap2_s7_clk_src.clkr.hw,2505 },2506 .num_parents = 1,2507 .flags = CLK_SET_RATE_PARENT,2508 .ops = &clk_branch2_ops,2509 },2510 },2511};2512 2513static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {2514 .halt_reg = 0x2327c,2515 .halt_check = BRANCH_HALT_VOTED,2516 .hwcg_reg = 0x2327c,2517 .hwcg_bit = 1,2518 .clkr = {2519 .enable_reg = 0x52008,2520 .enable_mask = BIT(20),2521 .hw.init = &(struct clk_init_data){2522 .name = "gcc_qupv3_wrap_1_m_ahb_clk",2523 .ops = &clk_branch2_ops,2524 },2525 },2526};2527 2528static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {2529 .halt_reg = 0x23280,2530 .halt_check = BRANCH_HALT_VOTED,2531 .hwcg_reg = 0x23280,2532 .hwcg_bit = 1,2533 .clkr = {2534 .enable_reg = 0x52008,2535 .enable_mask = BIT(21),2536 .hw.init = &(struct clk_init_data){2537 .name = "gcc_qupv3_wrap_1_s_ahb_clk",2538 .ops = &clk_branch2_ops,2539 },2540 },2541};2542 2543static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {2544 .halt_reg = 0x233cc,2545 .halt_check = BRANCH_HALT_VOTED,2546 .hwcg_reg = 0x233cc,2547 .hwcg_bit = 1,2548 .clkr = {2549 .enable_reg = 0x52010,2550 .enable_mask = BIT(2),2551 .hw.init = &(struct clk_init_data){2552 .name = "gcc_qupv3_wrap_2_m_ahb_clk",2553 .ops = &clk_branch2_ops,2554 },2555 },2556};2557 2558static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {2559 .halt_reg = 0x233d0,2560 .halt_check = BRANCH_HALT_VOTED,2561 .hwcg_reg = 0x233d0,2562 .hwcg_bit = 1,2563 .clkr = {2564 .enable_reg = 0x52010,2565 .enable_mask = BIT(1),2566 .hw.init = &(struct clk_init_data){2567 .name = "gcc_qupv3_wrap_2_s_ahb_clk",2568 .ops = &clk_branch2_ops,2569 },2570 },2571};2572 2573static struct clk_branch gcc_sdcc2_ahb_clk = {2574 .halt_reg = 0x14010,2575 .halt_check = BRANCH_HALT,2576 .clkr = {2577 .enable_reg = 0x14010,2578 .enable_mask = BIT(0),2579 .hw.init = &(struct clk_init_data){2580 .name = "gcc_sdcc2_ahb_clk",2581 .ops = &clk_branch2_ops,2582 },2583 },2584};2585 2586static struct clk_branch gcc_sdcc2_apps_clk = {2587 .halt_reg = 0x14004,2588 .halt_check = BRANCH_HALT,2589 .clkr = {2590 .enable_reg = 0x14004,2591 .enable_mask = BIT(0),2592 .hw.init = &(struct clk_init_data){2593 .name = "gcc_sdcc2_apps_clk",2594 .parent_hws = (const struct clk_hw*[]) {2595 &gcc_sdcc2_apps_clk_src.clkr.hw,2596 },2597 .num_parents = 1,2598 .flags = CLK_SET_RATE_PARENT,2599 .ops = &clk_branch2_ops,2600 },2601 },2602};2603 2604static struct clk_branch gcc_sdcc4_ahb_clk = {2605 .halt_reg = 0x16010,2606 .halt_check = BRANCH_HALT,2607 .clkr = {2608 .enable_reg = 0x16010,2609 .enable_mask = BIT(0),2610 .hw.init = &(struct clk_init_data){2611 .name = "gcc_sdcc4_ahb_clk",2612 .ops = &clk_branch2_ops,2613 },2614 },2615};2616 2617static struct clk_branch gcc_sdcc4_apps_clk = {2618 .halt_reg = 0x16004,2619 .halt_check = BRANCH_HALT,2620 .clkr = {2621 .enable_reg = 0x16004,2622 .enable_mask = BIT(0),2623 .hw.init = &(struct clk_init_data){2624 .name = "gcc_sdcc4_apps_clk",2625 .parent_hws = (const struct clk_hw*[]) {2626 &gcc_sdcc4_apps_clk_src.clkr.hw,2627 },2628 .num_parents = 1,2629 .flags = CLK_SET_RATE_PARENT,2630 .ops = &clk_branch2_ops,2631 },2632 },2633};2634 2635static struct clk_branch gcc_ufs_phy_ahb_clk = {2636 .halt_reg = 0x77024,2637 .halt_check = BRANCH_HALT_VOTED,2638 .hwcg_reg = 0x77024,2639 .hwcg_bit = 1,2640 .clkr = {2641 .enable_reg = 0x77024,2642 .enable_mask = BIT(0),2643 .hw.init = &(struct clk_init_data){2644 .name = "gcc_ufs_phy_ahb_clk",2645 .ops = &clk_branch2_ops,2646 },2647 },2648};2649 2650static struct clk_branch gcc_ufs_phy_axi_clk = {2651 .halt_reg = 0x77018,2652 .halt_check = BRANCH_HALT_VOTED,2653 .hwcg_reg = 0x77018,2654 .hwcg_bit = 1,2655 .clkr = {2656 .enable_reg = 0x77018,2657 .enable_mask = BIT(0),2658 .hw.init = &(struct clk_init_data){2659 .name = "gcc_ufs_phy_axi_clk",2660 .parent_hws = (const struct clk_hw*[]) {2661 &gcc_ufs_phy_axi_clk_src.clkr.hw,2662 },2663 .num_parents = 1,2664 .flags = CLK_SET_RATE_PARENT,2665 .ops = &clk_branch2_ops,2666 },2667 },2668};2669 2670static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk = {2671 .halt_reg = 0x77018,2672 .halt_check = BRANCH_HALT_VOTED,2673 .hwcg_reg = 0x77018,2674 .hwcg_bit = 1,2675 .clkr = {2676 .enable_reg = 0x77018,2677 .enable_mask = BIT(1),2678 .hw.init = &(struct clk_init_data){2679 .name = "gcc_ufs_phy_axi_hw_ctl_clk",2680 .parent_hws = (const struct clk_hw*[]) {2681 &gcc_ufs_phy_axi_clk_src.clkr.hw,2682 },2683 .num_parents = 1,2684 .flags = CLK_SET_RATE_PARENT,2685 .ops = &clk_branch2_ops,2686 },2687 },2688};2689 2690static struct clk_branch gcc_ufs_phy_ice_core_clk = {2691 .halt_reg = 0x77074,2692 .halt_check = BRANCH_HALT_VOTED,2693 .hwcg_reg = 0x77074,2694 .hwcg_bit = 1,2695 .clkr = {2696 .enable_reg = 0x77074,2697 .enable_mask = BIT(0),2698 .hw.init = &(struct clk_init_data){2699 .name = "gcc_ufs_phy_ice_core_clk",2700 .parent_hws = (const struct clk_hw*[]) {2701 &gcc_ufs_phy_ice_core_clk_src.clkr.hw,2702 },2703 .num_parents = 1,2704 .flags = CLK_SET_RATE_PARENT,2705 .ops = &clk_branch2_ops,2706 },2707 },2708};2709 2710static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk = {2711 .halt_reg = 0x77074,2712 .halt_check = BRANCH_HALT_VOTED,2713 .hwcg_reg = 0x77074,2714 .hwcg_bit = 1,2715 .clkr = {2716 .enable_reg = 0x77074,2717 .enable_mask = BIT(1),2718 .hw.init = &(struct clk_init_data){2719 .name = "gcc_ufs_phy_ice_core_hw_ctl_clk",2720 .parent_hws = (const struct clk_hw*[]) {2721 &gcc_ufs_phy_ice_core_clk_src.clkr.hw,2722 },2723 .num_parents = 1,2724 .flags = CLK_SET_RATE_PARENT,2725 .ops = &clk_branch2_ops,2726 },2727 },2728};2729 2730static struct clk_branch gcc_ufs_phy_phy_aux_clk = {2731 .halt_reg = 0x770b0,2732 .halt_check = BRANCH_HALT_VOTED,2733 .hwcg_reg = 0x770b0,2734 .hwcg_bit = 1,2735 .clkr = {2736 .enable_reg = 0x770b0,2737 .enable_mask = BIT(0),2738 .hw.init = &(struct clk_init_data){2739 .name = "gcc_ufs_phy_phy_aux_clk",2740 .parent_hws = (const struct clk_hw*[]) {2741 &gcc_ufs_phy_phy_aux_clk_src.clkr.hw,2742 },2743 .num_parents = 1,2744 .flags = CLK_SET_RATE_PARENT,2745 .ops = &clk_branch2_ops,2746 },2747 },2748};2749 2750static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk = {2751 .halt_reg = 0x770b0,2752 .halt_check = BRANCH_HALT_VOTED,2753 .hwcg_reg = 0x770b0,2754 .hwcg_bit = 1,2755 .clkr = {2756 .enable_reg = 0x770b0,2757 .enable_mask = BIT(1),2758 .hw.init = &(struct clk_init_data){2759 .name = "gcc_ufs_phy_phy_aux_hw_ctl_clk",2760 .parent_hws = (const struct clk_hw*[]) {2761 &gcc_ufs_phy_phy_aux_clk_src.clkr.hw,2762 },2763 .num_parents = 1,2764 .flags = CLK_SET_RATE_PARENT,2765 .ops = &clk_branch2_ops,2766 },2767 },2768};2769 2770static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {2771 .halt_reg = 0x7702c,2772 .halt_check = BRANCH_HALT_DELAY,2773 .clkr = {2774 .enable_reg = 0x7702c,2775 .enable_mask = BIT(0),2776 .hw.init = &(struct clk_init_data){2777 .name = "gcc_ufs_phy_rx_symbol_0_clk",2778 .parent_hws = (const struct clk_hw*[]) {2779 &gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw,2780 },2781 .num_parents = 1,2782 .flags = CLK_SET_RATE_PARENT,2783 .ops = &clk_branch2_ops,2784 },2785 },2786};2787 2788static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {2789 .halt_reg = 0x770cc,2790 .halt_check = BRANCH_HALT_DELAY,2791 .clkr = {2792 .enable_reg = 0x770cc,2793 .enable_mask = BIT(0),2794 .hw.init = &(struct clk_init_data){2795 .name = "gcc_ufs_phy_rx_symbol_1_clk",2796 .parent_hws = (const struct clk_hw*[]) {2797 &gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw,2798 },2799 .num_parents = 1,2800 .flags = CLK_SET_RATE_PARENT,2801 .ops = &clk_branch2_ops,2802 },2803 },2804};2805 2806static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {2807 .halt_reg = 0x77028,2808 .halt_check = BRANCH_HALT_DELAY,2809 .clkr = {2810 .enable_reg = 0x77028,2811 .enable_mask = BIT(0),2812 .hw.init = &(struct clk_init_data){2813 .name = "gcc_ufs_phy_tx_symbol_0_clk",2814 .parent_hws = (const struct clk_hw*[]) {2815 &gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw,2816 },2817 .num_parents = 1,2818 .flags = CLK_SET_RATE_PARENT,2819 .ops = &clk_branch2_ops,2820 },2821 },2822};2823 2824static struct clk_branch gcc_ufs_phy_unipro_core_clk = {2825 .halt_reg = 0x77068,2826 .halt_check = BRANCH_HALT_VOTED,2827 .hwcg_reg = 0x77068,2828 .hwcg_bit = 1,2829 .clkr = {2830 .enable_reg = 0x77068,2831 .enable_mask = BIT(0),2832 .hw.init = &(struct clk_init_data){2833 .name = "gcc_ufs_phy_unipro_core_clk",2834 .parent_hws = (const struct clk_hw*[]) {2835 &gcc_ufs_phy_unipro_core_clk_src.clkr.hw,2836 },2837 .num_parents = 1,2838 .flags = CLK_SET_RATE_PARENT,2839 .ops = &clk_branch2_ops,2840 },2841 },2842};2843 2844static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk = {2845 .halt_reg = 0x77068,2846 .halt_check = BRANCH_HALT_VOTED,2847 .hwcg_reg = 0x77068,2848 .hwcg_bit = 1,2849 .clkr = {2850 .enable_reg = 0x77068,2851 .enable_mask = BIT(1),2852 .hw.init = &(struct clk_init_data){2853 .name = "gcc_ufs_phy_unipro_core_hw_ctl_clk",2854 .parent_hws = (const struct clk_hw*[]) {2855 &gcc_ufs_phy_unipro_core_clk_src.clkr.hw,2856 },2857 .num_parents = 1,2858 .flags = CLK_SET_RATE_PARENT,2859 .ops = &clk_branch2_ops,2860 },2861 },2862};2863 2864static struct clk_branch gcc_usb30_prim_master_clk = {2865 .halt_reg = 0x39018,2866 .halt_check = BRANCH_HALT,2867 .clkr = {2868 .enable_reg = 0x39018,2869 .enable_mask = BIT(0),2870 .hw.init = &(struct clk_init_data){2871 .name = "gcc_usb30_prim_master_clk",2872 .parent_hws = (const struct clk_hw*[]) {2873 &gcc_usb30_prim_master_clk_src.clkr.hw,2874 },2875 .num_parents = 1,2876 .flags = CLK_SET_RATE_PARENT,2877 .ops = &clk_branch2_ops,2878 },2879 },2880};2881 2882static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {2883 .halt_reg = 0x39028,2884 .halt_check = BRANCH_HALT,2885 .clkr = {2886 .enable_reg = 0x39028,2887 .enable_mask = BIT(0),2888 .hw.init = &(struct clk_init_data){2889 .name = "gcc_usb30_prim_mock_utmi_clk",2890 .parent_hws = (const struct clk_hw*[]) {2891 &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,2892 },2893 .num_parents = 1,2894 .flags = CLK_SET_RATE_PARENT,2895 .ops = &clk_branch2_ops,2896 },2897 },2898};2899 2900static struct clk_branch gcc_usb30_prim_sleep_clk = {2901 .halt_reg = 0x39024,2902 .halt_check = BRANCH_HALT,2903 .clkr = {2904 .enable_reg = 0x39024,2905 .enable_mask = BIT(0),2906 .hw.init = &(struct clk_init_data){2907 .name = "gcc_usb30_prim_sleep_clk",2908 .ops = &clk_branch2_ops,2909 },2910 },2911};2912 2913static struct clk_branch gcc_usb3_prim_phy_aux_clk = {2914 .halt_reg = 0x39060,2915 .halt_check = BRANCH_HALT,2916 .clkr = {2917 .enable_reg = 0x39060,2918 .enable_mask = BIT(0),2919 .hw.init = &(struct clk_init_data){2920 .name = "gcc_usb3_prim_phy_aux_clk",2921 .parent_hws = (const struct clk_hw*[]) {2922 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,2923 },2924 .num_parents = 1,2925 .flags = CLK_SET_RATE_PARENT,2926 .ops = &clk_branch2_ops,2927 },2928 },2929};2930 2931static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {2932 .halt_reg = 0x39064,2933 .halt_check = BRANCH_HALT,2934 .clkr = {2935 .enable_reg = 0x39064,2936 .enable_mask = BIT(0),2937 .hw.init = &(struct clk_init_data){2938 .name = "gcc_usb3_prim_phy_com_aux_clk",2939 .parent_hws = (const struct clk_hw*[]) {2940 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,2941 },2942 .num_parents = 1,2943 .flags = CLK_SET_RATE_PARENT,2944 .ops = &clk_branch2_ops,2945 },2946 },2947};2948 2949static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {2950 .halt_reg = 0x39068,2951 .halt_check = BRANCH_HALT_DELAY,2952 .hwcg_reg = 0x39068,2953 .hwcg_bit = 1,2954 .clkr = {2955 .enable_reg = 0x39068,2956 .enable_mask = BIT(0),2957 .hw.init = &(struct clk_init_data){2958 .name = "gcc_usb3_prim_phy_pipe_clk",2959 .parent_hws = (const struct clk_hw*[]) {2960 &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw,2961 },2962 .num_parents = 1,2963 .flags = CLK_SET_RATE_PARENT,2964 .ops = &clk_branch2_ops,2965 },2966 },2967};2968 2969static struct clk_branch gcc_video_axi0_clk = {2970 .halt_reg = 0x32018,2971 .halt_check = BRANCH_HALT_SKIP,2972 .hwcg_reg = 0x32018,2973 .hwcg_bit = 1,2974 .clkr = {2975 .enable_reg = 0x32018,2976 .enable_mask = BIT(0),2977 .hw.init = &(struct clk_init_data){2978 .name = "gcc_video_axi0_clk",2979 .ops = &clk_branch2_ops,2980 },2981 },2982};2983 2984static struct clk_branch gcc_video_axi1_clk = {2985 .halt_reg = 0x32024,2986 .halt_check = BRANCH_HALT_SKIP,2987 .hwcg_reg = 0x32024,2988 .hwcg_bit = 1,2989 .clkr = {2990 .enable_reg = 0x32024,2991 .enable_mask = BIT(0),2992 .hw.init = &(struct clk_init_data){2993 .name = "gcc_video_axi1_clk",2994 .ops = &clk_branch2_ops,2995 },2996 },2997};2998 2999static struct gdsc pcie_0_gdsc = {3000 .gdscr = 0x6b004,3001 .collapse_ctrl = 0x52020,3002 .collapse_mask = BIT(0),3003 .pd = {3004 .name = "pcie_0_gdsc",3005 },3006 .pwrsts = PWRSTS_OFF_ON,3007 .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE,3008};3009 3010static struct gdsc pcie_0_phy_gdsc = {3011 .gdscr = 0x6c000,3012 .collapse_ctrl = 0x52020,3013 .collapse_mask = BIT(3),3014 .pd = {3015 .name = "pcie_0_phy_gdsc",3016 },3017 .pwrsts = PWRSTS_OFF_ON,3018 .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE,3019};3020 3021static struct gdsc pcie_1_gdsc = {3022 .gdscr = 0x8d004,3023 .collapse_ctrl = 0x52020,3024 .collapse_mask = BIT(1),3025 .pd = {3026 .name = "pcie_1_gdsc",3027 },3028 .pwrsts = PWRSTS_OFF_ON,3029 .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE,3030};3031 3032static struct gdsc pcie_1_phy_gdsc = {3033 .gdscr = 0x8e000,3034 .collapse_ctrl = 0x52020,3035 .collapse_mask = BIT(4),3036 .pd = {3037 .name = "pcie_1_phy_gdsc",3038 },3039 .pwrsts = PWRSTS_OFF_ON,3040 .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE,3041};3042 3043static struct gdsc ufs_phy_gdsc = {3044 .gdscr = 0x77004,3045 .pd = {3046 .name = "ufs_phy_gdsc",3047 },3048 .pwrsts = PWRSTS_OFF_ON,3049 .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,3050};3051 3052static struct gdsc ufs_mem_phy_gdsc = {3053 .gdscr = 0x9e000,3054 .pd = {3055 .name = "ufs_mem_phy_gdsc",3056 },3057 .pwrsts = PWRSTS_OFF_ON,3058 .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,3059};3060 3061static struct gdsc usb30_prim_gdsc = {3062 .gdscr = 0x39004,3063 .pd = {3064 .name = "usb30_prim_gdsc",3065 },3066 .pwrsts = PWRSTS_OFF_ON,3067 .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,3068};3069 3070static struct gdsc usb3_phy_gdsc = {3071 .gdscr = 0x50018,3072 .pd = {3073 .name = "usb3_phy_gdsc",3074 },3075 .pwrsts = PWRSTS_OFF_ON,3076 .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,3077};3078 3079static struct clk_regmap *gcc_sm8550_clocks[] = {3080 [GCC_AGGRE_NOC_PCIE_AXI_CLK] = &gcc_aggre_noc_pcie_axi_clk.clkr,3081 [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,3082 [GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_phy_axi_hw_ctl_clk.clkr,3083 [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,3084 [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,3085 [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,3086 [GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,3087 [GCC_CFG_NOC_PCIE_ANOC_AHB_CLK] = &gcc_cfg_noc_pcie_anoc_ahb_clk.clkr,3088 [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,3089 [GCC_CNOC_PCIE_SF_AXI_CLK] = &gcc_cnoc_pcie_sf_axi_clk.clkr,3090 [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,3091 [GCC_DDRSS_PCIE_SF_QTB_CLK] = &gcc_ddrss_pcie_sf_qtb_clk.clkr,3092 [GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,3093 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,3094 [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,3095 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,3096 [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,3097 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,3098 [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,3099 [GCC_GPLL0] = &gcc_gpll0.clkr,3100 [GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr,3101 [GCC_GPLL4] = &gcc_gpll4.clkr,3102 [GCC_GPLL7] = &gcc_gpll7.clkr,3103 [GCC_GPLL9] = &gcc_gpll9.clkr,3104 [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,3105 [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,3106 [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,3107 [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,3108 [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,3109 [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,3110 [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,3111 [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,3112 [GCC_PCIE_0_PHY_RCHNG_CLK] = &gcc_pcie_0_phy_rchng_clk.clkr,3113 [GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr,3114 [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,3115 [GCC_PCIE_0_PIPE_CLK_SRC] = &gcc_pcie_0_pipe_clk_src.clkr,3116 [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,3117 [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,3118 [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,3119 [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,3120 [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,3121 [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,3122 [GCC_PCIE_1_PHY_AUX_CLK] = &gcc_pcie_1_phy_aux_clk.clkr,3123 [GCC_PCIE_1_PHY_AUX_CLK_SRC] = &gcc_pcie_1_phy_aux_clk_src.clkr,3124 [GCC_PCIE_1_PHY_RCHNG_CLK] = &gcc_pcie_1_phy_rchng_clk.clkr,3125 [GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr,3126 [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,3127 [GCC_PCIE_1_PIPE_CLK_SRC] = &gcc_pcie_1_pipe_clk_src.clkr,3128 [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,3129 [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,3130 [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,3131 [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,3132 [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,3133 [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,3134 [GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,3135 [GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,3136 [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,3137 [GCC_QMIP_GPU_AHB_CLK] = &gcc_qmip_gpu_ahb_clk.clkr,3138 [GCC_QMIP_PCIE_AHB_CLK] = &gcc_qmip_pcie_ahb_clk.clkr,3139 [GCC_QMIP_VIDEO_CV_CPU_AHB_CLK] = &gcc_qmip_video_cv_cpu_ahb_clk.clkr,3140 [GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,3141 [GCC_QMIP_VIDEO_V_CPU_AHB_CLK] = &gcc_qmip_video_v_cpu_ahb_clk.clkr,3142 [GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,3143 [GCC_QUPV3_I2C_CORE_CLK] = &gcc_qupv3_i2c_core_clk.clkr,3144 [GCC_QUPV3_I2C_S0_CLK] = &gcc_qupv3_i2c_s0_clk.clkr,3145 [GCC_QUPV3_I2C_S0_CLK_SRC] = &gcc_qupv3_i2c_s0_clk_src.clkr,3146 [GCC_QUPV3_I2C_S1_CLK] = &gcc_qupv3_i2c_s1_clk.clkr,3147 [GCC_QUPV3_I2C_S1_CLK_SRC] = &gcc_qupv3_i2c_s1_clk_src.clkr,3148 [GCC_QUPV3_I2C_S2_CLK] = &gcc_qupv3_i2c_s2_clk.clkr,3149 [GCC_QUPV3_I2C_S2_CLK_SRC] = &gcc_qupv3_i2c_s2_clk_src.clkr,3150 [GCC_QUPV3_I2C_S3_CLK] = &gcc_qupv3_i2c_s3_clk.clkr,3151 [GCC_QUPV3_I2C_S3_CLK_SRC] = &gcc_qupv3_i2c_s3_clk_src.clkr,3152 [GCC_QUPV3_I2C_S4_CLK] = &gcc_qupv3_i2c_s4_clk.clkr,3153 [GCC_QUPV3_I2C_S4_CLK_SRC] = &gcc_qupv3_i2c_s4_clk_src.clkr,3154 [GCC_QUPV3_I2C_S5_CLK] = &gcc_qupv3_i2c_s5_clk.clkr,3155 [GCC_QUPV3_I2C_S5_CLK_SRC] = &gcc_qupv3_i2c_s5_clk_src.clkr,3156 [GCC_QUPV3_I2C_S6_CLK] = &gcc_qupv3_i2c_s6_clk.clkr,3157 [GCC_QUPV3_I2C_S6_CLK_SRC] = &gcc_qupv3_i2c_s6_clk_src.clkr,3158 [GCC_QUPV3_I2C_S7_CLK] = &gcc_qupv3_i2c_s7_clk.clkr,3159 [GCC_QUPV3_I2C_S7_CLK_SRC] = &gcc_qupv3_i2c_s7_clk_src.clkr,3160 [GCC_QUPV3_I2C_S8_CLK] = &gcc_qupv3_i2c_s8_clk.clkr,3161 [GCC_QUPV3_I2C_S8_CLK_SRC] = &gcc_qupv3_i2c_s8_clk_src.clkr,3162 [GCC_QUPV3_I2C_S9_CLK] = &gcc_qupv3_i2c_s9_clk.clkr,3163 [GCC_QUPV3_I2C_S9_CLK_SRC] = &gcc_qupv3_i2c_s9_clk_src.clkr,3164 [GCC_QUPV3_I2C_S_AHB_CLK] = &gcc_qupv3_i2c_s_ahb_clk.clkr,3165 [GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,3166 [GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,3167 [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,3168 [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,3169 [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,3170 [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,3171 [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,3172 [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,3173 [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,3174 [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,3175 [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,3176 [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,3177 [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,3178 [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,3179 [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,3180 [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,3181 [GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr,3182 [GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr,3183 [GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr,3184 [GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr,3185 [GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,3186 [GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,3187 [GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,3188 [GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,3189 [GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,3190 [GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,3191 [GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,3192 [GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,3193 [GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,3194 [GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,3195 [GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,3196 [GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,3197 [GCC_QUPV3_WRAP2_S6_CLK] = &gcc_qupv3_wrap2_s6_clk.clkr,3198 [GCC_QUPV3_WRAP2_S6_CLK_SRC] = &gcc_qupv3_wrap2_s6_clk_src.clkr,3199 [GCC_QUPV3_WRAP2_S7_CLK] = &gcc_qupv3_wrap2_s7_clk.clkr,3200 [GCC_QUPV3_WRAP2_S7_CLK_SRC] = &gcc_qupv3_wrap2_s7_clk_src.clkr,3201 [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,3202 [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,3203 [GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,3204 [GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,3205 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,3206 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,3207 [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,3208 [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,3209 [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,3210 [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,3211 [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,3212 [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,3213 [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,3214 [GCC_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_ufs_phy_axi_hw_ctl_clk.clkr,3215 [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,3216 [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,3217 [GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_phy_ice_core_hw_ctl_clk.clkr,3218 [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,3219 [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,3220 [GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_phy_phy_aux_hw_ctl_clk.clkr,3221 [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,3222 [GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr,3223 [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,3224 [GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr,3225 [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,3226 [GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr,3227 [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,3228 [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,3229 [GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_phy_unipro_core_hw_ctl_clk.clkr,3230 [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,3231 [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,3232 [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,3233 [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,3234 [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,3235 [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,3236 [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,3237 [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,3238 [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,3239 [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,3240 [GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr,3241 [GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,3242 [GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,3243};3244 3245static const struct qcom_reset_map gcc_sm8550_resets[] = {3246 [GCC_CAMERA_BCR] = { 0x26000 },3247 [GCC_DISPLAY_BCR] = { 0x27000 },3248 [GCC_GPU_BCR] = { 0x71000 },3249 [GCC_PCIE_0_BCR] = { 0x6b000 },3250 [GCC_PCIE_0_LINK_DOWN_BCR] = { 0x6c014 },3251 [GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x6c020 },3252 [GCC_PCIE_0_PHY_BCR] = { 0x6c01c },3253 [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x6c028 },3254 [GCC_PCIE_1_BCR] = { 0x8d000 },3255 [GCC_PCIE_1_LINK_DOWN_BCR] = { 0x8e014 },3256 [GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x8e020 },3257 [GCC_PCIE_1_PHY_BCR] = { 0x8e01c },3258 [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x8e024 },3259 [GCC_PCIE_PHY_BCR] = { 0x6f000 },3260 [GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x6f00c },3261 [GCC_PCIE_PHY_COM_BCR] = { 0x6f010 },3262 [GCC_PDM_BCR] = { 0x33000 },3263 [GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 },3264 [GCC_QUPV3_WRAPPER_2_BCR] = { 0x1e000 },3265 [GCC_QUPV3_WRAPPER_I2C_BCR] = { 0x17000 },3266 [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },3267 [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },3268 [GCC_SDCC2_BCR] = { 0x14000 },3269 [GCC_SDCC4_BCR] = { 0x16000 },3270 [GCC_UFS_PHY_BCR] = { 0x77000 },3271 [GCC_USB30_PRIM_BCR] = { 0x39000 },3272 [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 },3273 [GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 },3274 [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 },3275 [GCC_USB3_PHY_SEC_BCR] = { 0x5000c },3276 [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 },3277 [GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 },3278 [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 },3279 [GCC_VIDEO_AXI0_CLK_ARES] = { .reg = 0x32018, .bit = 2, .udelay = 1000 },3280 [GCC_VIDEO_AXI1_CLK_ARES] = { .reg = 0x32024, .bit = 2, .udelay = 1000 },3281 [GCC_VIDEO_BCR] = { 0x32000 },3282};3283 3284static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {3285 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),3286 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),3287 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),3288 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),3289 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),3290 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),3291 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),3292 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src),3293 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src),3294 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src),3295 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src),3296 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src),3297 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src),3298 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src),3299 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s6_clk_src),3300 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s7_clk_src),3301};3302 3303static struct gdsc *gcc_sm8550_gdscs[] = {3304 [PCIE_0_GDSC] = &pcie_0_gdsc,3305 [PCIE_0_PHY_GDSC] = &pcie_0_phy_gdsc,3306 [PCIE_1_GDSC] = &pcie_1_gdsc,3307 [PCIE_1_PHY_GDSC] = &pcie_1_phy_gdsc,3308 [UFS_PHY_GDSC] = &ufs_phy_gdsc,3309 [UFS_MEM_PHY_GDSC] = &ufs_mem_phy_gdsc,3310 [USB30_PRIM_GDSC] = &usb30_prim_gdsc,3311 [USB3_PHY_GDSC] = &usb3_phy_gdsc,3312};3313 3314static const struct regmap_config gcc_sm8550_regmap_config = {3315 .reg_bits = 32,3316 .reg_stride = 4,3317 .val_bits = 32,3318 .max_register = 0x1f41f0,3319 .fast_io = true,3320};3321 3322static const struct qcom_cc_desc gcc_sm8550_desc = {3323 .config = &gcc_sm8550_regmap_config,3324 .clks = gcc_sm8550_clocks,3325 .num_clks = ARRAY_SIZE(gcc_sm8550_clocks),3326 .resets = gcc_sm8550_resets,3327 .num_resets = ARRAY_SIZE(gcc_sm8550_resets),3328 .gdscs = gcc_sm8550_gdscs,3329 .num_gdscs = ARRAY_SIZE(gcc_sm8550_gdscs),3330};3331 3332static const struct of_device_id gcc_sm8550_match_table[] = {3333 { .compatible = "qcom,sm8550-gcc" },3334 { }3335};3336MODULE_DEVICE_TABLE(of, gcc_sm8550_match_table);3337 3338static int gcc_sm8550_probe(struct platform_device *pdev)3339{3340 struct regmap *regmap;3341 int ret;3342 3343 regmap = qcom_cc_map(pdev, &gcc_sm8550_desc);3344 if (IS_ERR(regmap))3345 return PTR_ERR(regmap);3346 3347 ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,3348 ARRAY_SIZE(gcc_dfs_clocks));3349 if (ret)3350 return ret;3351 3352 /* FORCE_MEM_CORE_ON for ufs phy ice core clocks */3353 regmap_update_bits(regmap, gcc_ufs_phy_ice_core_clk.halt_reg, BIT(14), BIT(14));3354 3355 /* Keep some clocks always-on */3356 qcom_branch_set_clk_en(regmap, 0x26004); /* GCC_CAMERA_AHB_CLK */3357 qcom_branch_set_clk_en(regmap, 0x26028); /* GCC_CAMERA_XO_CLK */3358 qcom_branch_set_clk_en(regmap, 0x27004); /* GCC_DISP_AHB_CLK */3359 qcom_branch_set_clk_en(regmap, 0x27018); /* GCC_DISP_XO_CLK */3360 qcom_branch_set_clk_en(regmap, 0x71004); /* GCC_GPU_CFG_AHB_CLK */3361 qcom_branch_set_clk_en(regmap, 0x32004); /* GCC_VIDEO_AHB_CLK */3362 qcom_branch_set_clk_en(regmap, 0x32030); /* GCC_VIDEO_XO_CLK */3363 3364 /* Clear GDSC_SLEEP_ENA_VOTE to stop votes being auto-removed in sleep. */3365 regmap_write(regmap, 0x52024, 0x0);3366 3367 return qcom_cc_really_probe(&pdev->dev, &gcc_sm8550_desc, regmap);3368}3369 3370static struct platform_driver gcc_sm8550_driver = {3371 .probe = gcc_sm8550_probe,3372 .driver = {3373 .name = "gcc-sm8550",3374 .of_match_table = gcc_sm8550_match_table,3375 },3376};3377 3378static int __init gcc_sm8550_init(void)3379{3380 return platform_driver_register(&gcc_sm8550_driver);3381}3382subsys_initcall(gcc_sm8550_init);3383 3384static void __exit gcc_sm8550_exit(void)3385{3386 platform_driver_unregister(&gcc_sm8550_driver);3387}3388module_exit(gcc_sm8550_exit);3389 3390MODULE_DESCRIPTION("QTI GCC SM8550 Driver");3391MODULE_LICENSE("GPL");3392