File Index
Files and directories
Sign in
FILE

gcc-sa8775p.c

File preview with syntax highlighting.

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