Linux Audio

Check our new training course

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