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) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved.
   4 */
   5
   6#include <linux/clk-provider.h>
   7#include <linux/mod_devicetable.h>
   8#include <linux/module.h>
   9#include <linux/platform_device.h>
  10#include <linux/regmap.h>
  11
  12#include <dt-bindings/clock/qcom,qdu1000-ecpricc.h>
  13
  14#include "clk-alpha-pll.h"
  15#include "clk-branch.h"
  16#include "clk-rcg.h"
  17#include "clk-regmap.h"
  18#include "clk-regmap-divider.h"
  19#include "clk-regmap-mux.h"
  20#include "common.h"
  21#include "reset.h"
  22
  23enum {
  24	DT_BI_TCXO,
  25	DT_GCC_ECPRI_CC_GPLL0_OUT_MAIN,
  26	DT_GCC_ECPRI_CC_GPLL1_OUT_EVEN,
  27	DT_GCC_ECPRI_CC_GPLL2_OUT_MAIN,
  28	DT_GCC_ECPRI_CC_GPLL3_OUT_MAIN,
  29	DT_GCC_ECPRI_CC_GPLL4_OUT_MAIN,
  30	DT_GCC_ECPRI_CC_GPLL5_OUT_EVEN,
  31};
  32
  33enum {
  34	P_BI_TCXO,
  35	P_ECPRI_CC_PLL0_OUT_MAIN,
  36	P_ECPRI_CC_PLL1_OUT_MAIN,
  37	P_GCC_ECPRI_CC_GPLL0_OUT_MAIN,
  38	P_GCC_ECPRI_CC_GPLL1_OUT_EVEN,
  39	P_GCC_ECPRI_CC_GPLL2_OUT_MAIN,
  40	P_GCC_ECPRI_CC_GPLL3_OUT_MAIN,
  41	P_GCC_ECPRI_CC_GPLL4_OUT_MAIN,
  42	P_GCC_ECPRI_CC_GPLL5_OUT_EVEN,
  43};
  44
  45static const struct pll_vco lucid_evo_vco[] = {
  46	{ 249600000, 2020000000, 0 },
  47};
  48
  49/* 700 MHz configuration */
  50static const struct alpha_pll_config ecpri_cc_pll0_config = {
  51	.l = 0x24,
  52	.alpha = 0x7555,
  53	.config_ctl_val = 0x20485699,
  54	.config_ctl_hi_val = 0x00182261,
  55	.config_ctl_hi1_val = 0x32aa299c,
  56	.user_ctl_val = 0x00000000,
  57	.user_ctl_hi_val = 0x00000805,
  58};
  59
  60static struct clk_alpha_pll ecpri_cc_pll0 = {
  61	.offset = 0x0,
  62	.vco_table = lucid_evo_vco,
  63	.num_vco = ARRAY_SIZE(lucid_evo_vco),
  64	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
  65	.clkr = {
  66		.enable_reg = 0x0,
  67		.enable_mask = BIT(0),
  68		.hw.init = &(const struct clk_init_data) {
  69			.name = "ecpri_cc_pll0",
  70			.parent_data = &(const struct clk_parent_data) {
  71				.index = DT_BI_TCXO,
  72			},
  73			.num_parents = 1,
  74			.ops = &clk_alpha_pll_fixed_lucid_evo_ops,
  75		},
  76	},
  77};
  78
  79/* 806 MHz configuration */
  80static const struct alpha_pll_config ecpri_cc_pll1_config = {
  81	.l = 0x29,
  82	.alpha = 0xfaaa,
  83	.config_ctl_val = 0x20485699,
  84	.config_ctl_hi_val = 0x00182261,
  85	.config_ctl_hi1_val = 0x32aa299c,
  86	.user_ctl_val = 0x00000000,
  87	.user_ctl_hi_val = 0x00000805,
  88};
  89
  90static struct clk_alpha_pll ecpri_cc_pll1 = {
  91	.offset = 0x1000,
  92	.vco_table = lucid_evo_vco,
  93	.num_vco = ARRAY_SIZE(lucid_evo_vco),
  94	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
  95	.clkr = {
  96		.enable_reg = 0x0,
  97		.enable_mask = BIT(1),
  98		.hw.init = &(const struct clk_init_data) {
  99			.name = "ecpri_cc_pll1",
 100			.parent_data = &(const struct clk_parent_data) {
 101				.index = DT_BI_TCXO,
 102			},
 103			.num_parents = 1,
 104			.ops = &clk_alpha_pll_fixed_lucid_evo_ops,
 105		},
 106	},
 107};
 108
 109static const struct parent_map ecpri_cc_parent_map_0[] = {
 110	{ P_BI_TCXO, 0 },
 111	{ P_GCC_ECPRI_CC_GPLL0_OUT_MAIN, 1 },
 112	{ P_GCC_ECPRI_CC_GPLL2_OUT_MAIN, 2 },
 113	{ P_GCC_ECPRI_CC_GPLL5_OUT_EVEN, 3 },
 114	{ P_ECPRI_CC_PLL1_OUT_MAIN, 4 },
 115	{ P_GCC_ECPRI_CC_GPLL4_OUT_MAIN, 5 },
 116	{ P_ECPRI_CC_PLL0_OUT_MAIN, 6 },
 117};
 118
 119static const struct clk_parent_data ecpri_cc_parent_data_0[] = {
 120	{ .index = DT_BI_TCXO },
 121	{ .index = DT_GCC_ECPRI_CC_GPLL0_OUT_MAIN },
 122	{ .index = DT_GCC_ECPRI_CC_GPLL2_OUT_MAIN },
 123	{ .index = DT_GCC_ECPRI_CC_GPLL5_OUT_EVEN },
 124	{ .hw = &ecpri_cc_pll1.clkr.hw },
 125	{ .index = DT_GCC_ECPRI_CC_GPLL4_OUT_MAIN },
 126	{ .hw = &ecpri_cc_pll0.clkr.hw },
 127};
 128
 129static const struct parent_map ecpri_cc_parent_map_1[] = {
 130	{ P_BI_TCXO, 0 },
 131	{ P_GCC_ECPRI_CC_GPLL0_OUT_MAIN, 1 },
 132	{ P_GCC_ECPRI_CC_GPLL1_OUT_EVEN, 2 },
 133	{ P_GCC_ECPRI_CC_GPLL3_OUT_MAIN, 3 },
 134	{ P_ECPRI_CC_PLL1_OUT_MAIN, 4 },
 135	{ P_GCC_ECPRI_CC_GPLL4_OUT_MAIN, 5 },
 136	{ P_ECPRI_CC_PLL0_OUT_MAIN, 6 },
 137};
 138
 139static const struct clk_parent_data ecpri_cc_parent_data_1[] = {
 140	{ .index = DT_BI_TCXO },
 141	{ .index = DT_GCC_ECPRI_CC_GPLL0_OUT_MAIN },
 142	{ .index = DT_GCC_ECPRI_CC_GPLL1_OUT_EVEN },
 143	{ .index = DT_GCC_ECPRI_CC_GPLL3_OUT_MAIN },
 144	{ .hw = &ecpri_cc_pll1.clkr.hw },
 145	{ .index = DT_GCC_ECPRI_CC_GPLL4_OUT_MAIN },
 146	{ .hw = &ecpri_cc_pll0.clkr.hw },
 147};
 148
 149static const struct parent_map ecpri_cc_parent_map_2[] = {
 150	{ P_BI_TCXO, 0 },
 151	{ P_GCC_ECPRI_CC_GPLL0_OUT_MAIN, 1 },
 152	{ P_GCC_ECPRI_CC_GPLL5_OUT_EVEN, 3 },
 153	{ P_ECPRI_CC_PLL1_OUT_MAIN, 4 },
 154	{ P_GCC_ECPRI_CC_GPLL4_OUT_MAIN, 5 },
 155	{ P_ECPRI_CC_PLL0_OUT_MAIN, 6 },
 156};
 157
 158static const struct clk_parent_data ecpri_cc_parent_data_2[] = {
 159	{ .index = DT_BI_TCXO },
 160	{ .index = DT_GCC_ECPRI_CC_GPLL0_OUT_MAIN },
 161	{ .index = DT_GCC_ECPRI_CC_GPLL5_OUT_EVEN },
 162	{ .hw = &ecpri_cc_pll1.clkr.hw },
 163	{ .index = DT_GCC_ECPRI_CC_GPLL4_OUT_MAIN },
 164	{ .hw = &ecpri_cc_pll0.clkr.hw },
 165};
 166
 167static const struct freq_tbl ftbl_ecpri_cc_ecpri_clk_src[] = {
 168	F(466500000, P_GCC_ECPRI_CC_GPLL5_OUT_EVEN, 1, 0, 0),
 169	{ }
 170};
 171
 172static struct clk_rcg2 ecpri_cc_ecpri_clk_src = {
 173	.cmd_rcgr = 0x9034,
 174	.mnd_width = 0,
 175	.hid_width = 5,
 176	.parent_map = ecpri_cc_parent_map_2,
 177	.freq_tbl = ftbl_ecpri_cc_ecpri_clk_src,
 178	.clkr.hw.init = &(const struct clk_init_data) {
 179		.name = "ecpri_cc_ecpri_clk_src",
 180		.parent_data = ecpri_cc_parent_data_2,
 181		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_2),
 182		.ops = &clk_rcg2_shared_ops,
 183	},
 184};
 185
 186static const struct freq_tbl ftbl_ecpri_cc_ecpri_dma_clk_src[] = {
 187	F(466500000, P_GCC_ECPRI_CC_GPLL5_OUT_EVEN, 1, 0, 0),
 188	F(500000000, P_GCC_ECPRI_CC_GPLL2_OUT_MAIN, 1, 0, 0),
 189	{ }
 190};
 191
 192static struct clk_rcg2 ecpri_cc_ecpri_dma_clk_src = {
 193	.cmd_rcgr = 0x9080,
 194	.mnd_width = 0,
 195	.hid_width = 5,
 196	.parent_map = ecpri_cc_parent_map_0,
 197	.freq_tbl = ftbl_ecpri_cc_ecpri_dma_clk_src,
 198	.clkr.hw.init = &(const struct clk_init_data) {
 199		.name = "ecpri_cc_ecpri_dma_clk_src",
 200		.parent_data = ecpri_cc_parent_data_0,
 201		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_0),
 202		.ops = &clk_rcg2_shared_ops,
 203	},
 204};
 205
 206static const struct freq_tbl ftbl_ecpri_cc_ecpri_fast_clk_src[] = {
 207	F(500000000, P_GCC_ECPRI_CC_GPLL2_OUT_MAIN, 1, 0, 0),
 208	F(600000000, P_GCC_ECPRI_CC_GPLL0_OUT_MAIN, 1, 0, 0),
 209	{ }
 210};
 211
 212static struct clk_rcg2 ecpri_cc_ecpri_fast_clk_src = {
 213	.cmd_rcgr = 0x904c,
 214	.mnd_width = 0,
 215	.hid_width = 5,
 216	.parent_map = ecpri_cc_parent_map_0,
 217	.freq_tbl = ftbl_ecpri_cc_ecpri_fast_clk_src,
 218	.clkr.hw.init = &(const struct clk_init_data) {
 219		.name = "ecpri_cc_ecpri_fast_clk_src",
 220		.parent_data = ecpri_cc_parent_data_0,
 221		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_0),
 222		.ops = &clk_rcg2_shared_ops,
 223	},
 224};
 225
 226static const struct freq_tbl ftbl_ecpri_cc_ecpri_oran_clk_src[] = {
 227	F(500000000, P_GCC_ECPRI_CC_GPLL2_OUT_MAIN, 1, 0, 0),
 228	{ }
 229};
 230
 231static struct clk_rcg2 ecpri_cc_ecpri_oran_clk_src = {
 232	.cmd_rcgr = 0x9064,
 233	.mnd_width = 0,
 234	.hid_width = 5,
 235	.parent_map = ecpri_cc_parent_map_0,
 236	.freq_tbl = ftbl_ecpri_cc_ecpri_oran_clk_src,
 237	.clkr.hw.init = &(const struct clk_init_data) {
 238		.name = "ecpri_cc_ecpri_oran_clk_src",
 239		.parent_data = ecpri_cc_parent_data_0,
 240		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_0),
 241		.ops = &clk_rcg2_shared_ops,
 242	},
 243};
 244
 245static const struct freq_tbl ftbl_ecpri_cc_eth_100g_c2c0_hm_ff_clk_src[] = {
 246	F(201500000, P_ECPRI_CC_PLL1_OUT_MAIN, 4, 0, 0),
 247	F(403000000, P_ECPRI_CC_PLL1_OUT_MAIN, 2, 0, 0),
 248	F(466500000, P_GCC_ECPRI_CC_GPLL5_OUT_EVEN, 1, 0, 0),
 249	{ }
 250};
 251
 252static struct clk_rcg2 ecpri_cc_eth_100g_c2c0_hm_ff_clk_src = {
 253	.cmd_rcgr = 0x81b0,
 254	.mnd_width = 0,
 255	.hid_width = 5,
 256	.parent_map = ecpri_cc_parent_map_0,
 257	.freq_tbl = ftbl_ecpri_cc_eth_100g_c2c0_hm_ff_clk_src,
 258	.clkr.hw.init = &(const struct clk_init_data) {
 259		.name = "ecpri_cc_eth_100g_c2c0_hm_ff_clk_src",
 260		.parent_data = ecpri_cc_parent_data_0,
 261		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_0),
 262		.ops = &clk_rcg2_shared_ops,
 263	},
 264};
 265
 266static const struct freq_tbl ftbl_ecpri_cc_eth_100g_c2c_hm_macsec_clk_src[] = {
 267	F(100000000, P_GCC_ECPRI_CC_GPLL0_OUT_MAIN, 6, 0, 0),
 268	F(200000000, P_GCC_ECPRI_CC_GPLL0_OUT_MAIN, 3, 0, 0),
 269	{ }
 270};
 271
 272static struct clk_rcg2 ecpri_cc_eth_100g_c2c_hm_macsec_clk_src = {
 273	.cmd_rcgr = 0x8150,
 274	.mnd_width = 0,
 275	.hid_width = 5,
 276	.parent_map = ecpri_cc_parent_map_0,
 277	.freq_tbl = ftbl_ecpri_cc_eth_100g_c2c_hm_macsec_clk_src,
 278	.clkr.hw.init = &(const struct clk_init_data) {
 279		.name = "ecpri_cc_eth_100g_c2c_hm_macsec_clk_src",
 280		.parent_data = ecpri_cc_parent_data_0,
 281		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_0),
 282		.ops = &clk_rcg2_shared_ops,
 283	},
 284};
 285
 286static struct clk_rcg2 ecpri_cc_eth_100g_dbg_c2c_hm_ff_clk_src = {
 287	.cmd_rcgr = 0x81c8,
 288	.mnd_width = 0,
 289	.hid_width = 5,
 290	.parent_map = ecpri_cc_parent_map_0,
 291	.freq_tbl = ftbl_ecpri_cc_eth_100g_c2c0_hm_ff_clk_src,
 292	.clkr.hw.init = &(const struct clk_init_data) {
 293		.name = "ecpri_cc_eth_100g_dbg_c2c_hm_ff_clk_src",
 294		.parent_data = ecpri_cc_parent_data_0,
 295		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_0),
 296		.ops = &clk_rcg2_shared_ops,
 297	},
 298};
 299
 300static struct clk_rcg2 ecpri_cc_eth_100g_fh0_hm_ff_clk_src = {
 301	.cmd_rcgr = 0x8168,
 302	.mnd_width = 0,
 303	.hid_width = 5,
 304	.parent_map = ecpri_cc_parent_map_0,
 305	.freq_tbl = ftbl_ecpri_cc_eth_100g_c2c0_hm_ff_clk_src,
 306	.clkr.hw.init = &(const struct clk_init_data) {
 307		.name = "ecpri_cc_eth_100g_fh0_hm_ff_clk_src",
 308		.parent_data = ecpri_cc_parent_data_0,
 309		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_0),
 310		.ops = &clk_rcg2_shared_ops,
 311	},
 312};
 313
 314static struct clk_rcg2 ecpri_cc_eth_100g_fh0_macsec_clk_src = {
 315	.cmd_rcgr = 0x8108,
 316	.mnd_width = 0,
 317	.hid_width = 5,
 318	.parent_map = ecpri_cc_parent_map_0,
 319	.freq_tbl = ftbl_ecpri_cc_eth_100g_c2c_hm_macsec_clk_src,
 320	.clkr.hw.init = &(const struct clk_init_data) {
 321		.name = "ecpri_cc_eth_100g_fh0_macsec_clk_src",
 322		.parent_data = ecpri_cc_parent_data_0,
 323		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_0),
 324		.ops = &clk_rcg2_shared_ops,
 325	},
 326};
 327
 328static struct clk_rcg2 ecpri_cc_eth_100g_fh1_hm_ff_clk_src = {
 329	.cmd_rcgr = 0x8180,
 330	.mnd_width = 0,
 331	.hid_width = 5,
 332	.parent_map = ecpri_cc_parent_map_0,
 333	.freq_tbl = ftbl_ecpri_cc_ecpri_clk_src,
 334	.clkr.hw.init = &(const struct clk_init_data) {
 335		.name = "ecpri_cc_eth_100g_fh1_hm_ff_clk_src",
 336		.parent_data = ecpri_cc_parent_data_0,
 337		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_0),
 338		.ops = &clk_rcg2_shared_ops,
 339	},
 340};
 341
 342static const struct freq_tbl ftbl_ecpri_cc_eth_100g_fh1_macsec_clk_src[] = {
 343	F(200000000, P_GCC_ECPRI_CC_GPLL0_OUT_MAIN, 3, 0, 0),
 344	{ }
 345};
 346
 347static struct clk_rcg2 ecpri_cc_eth_100g_fh1_macsec_clk_src = {
 348	.cmd_rcgr = 0x8120,
 349	.mnd_width = 0,
 350	.hid_width = 5,
 351	.parent_map = ecpri_cc_parent_map_0,
 352	.freq_tbl = ftbl_ecpri_cc_eth_100g_fh1_macsec_clk_src,
 353	.clkr.hw.init = &(const struct clk_init_data) {
 354		.name = "ecpri_cc_eth_100g_fh1_macsec_clk_src",
 355		.parent_data = ecpri_cc_parent_data_0,
 356		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_0),
 357		.ops = &clk_rcg2_shared_ops,
 358	},
 359};
 360
 361static struct clk_rcg2 ecpri_cc_eth_100g_fh2_hm_ff_clk_src = {
 362	.cmd_rcgr = 0x8198,
 363	.mnd_width = 0,
 364	.hid_width = 5,
 365	.parent_map = ecpri_cc_parent_map_0,
 366	.freq_tbl = ftbl_ecpri_cc_eth_100g_c2c0_hm_ff_clk_src,
 367	.clkr.hw.init = &(const struct clk_init_data) {
 368		.name = "ecpri_cc_eth_100g_fh2_hm_ff_clk_src",
 369		.parent_data = ecpri_cc_parent_data_0,
 370		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_0),
 371		.ops = &clk_rcg2_shared_ops,
 372	},
 373};
 374
 375static struct clk_rcg2 ecpri_cc_eth_100g_fh2_macsec_clk_src = {
 376	.cmd_rcgr = 0x8138,
 377	.mnd_width = 0,
 378	.hid_width = 5,
 379	.parent_map = ecpri_cc_parent_map_0,
 380	.freq_tbl = ftbl_ecpri_cc_eth_100g_fh1_macsec_clk_src,
 381	.clkr.hw.init = &(const struct clk_init_data) {
 382		.name = "ecpri_cc_eth_100g_fh2_macsec_clk_src",
 383		.parent_data = ecpri_cc_parent_data_0,
 384		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_0),
 385		.ops = &clk_rcg2_shared_ops,
 386	},
 387};
 388
 389static const struct freq_tbl ftbl_ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src[] = {
 390	F(533000000, P_GCC_ECPRI_CC_GPLL1_OUT_EVEN, 1, 0, 0),
 391	F(700000000, P_GCC_ECPRI_CC_GPLL3_OUT_MAIN, 1, 0, 0),
 392	F(806000000, P_GCC_ECPRI_CC_GPLL4_OUT_MAIN, 1, 0, 0),
 393	{ }
 394};
 395
 396static struct clk_rcg2 ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src = {
 397	.cmd_rcgr = 0x8228,
 398	.mnd_width = 0,
 399	.hid_width = 5,
 400	.parent_map = ecpri_cc_parent_map_1,
 401	.freq_tbl = ftbl_ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src,
 402	.clkr.hw.init = &(const struct clk_init_data) {
 403		.name = "ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src",
 404		.parent_data = ecpri_cc_parent_data_1,
 405		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_1),
 406		.ops = &clk_rcg2_shared_ops,
 407	},
 408};
 409
 410static struct clk_rcg2 ecpri_cc_eth_100g_mac_dbg_c2c_hm_ref_clk_src = {
 411	.cmd_rcgr = 0x8240,
 412	.mnd_width = 0,
 413	.hid_width = 5,
 414	.parent_map = ecpri_cc_parent_map_1,
 415	.freq_tbl = ftbl_ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src,
 416	.clkr.hw.init = &(const struct clk_init_data) {
 417		.name = "ecpri_cc_eth_100g_mac_dbg_c2c_hm_ref_clk_src",
 418		.parent_data = ecpri_cc_parent_data_1,
 419		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_1),
 420		.ops = &clk_rcg2_shared_ops,
 421	},
 422};
 423
 424static struct clk_rcg2 ecpri_cc_eth_100g_mac_fh0_hm_ref_clk_src = {
 425	.cmd_rcgr = 0x81e0,
 426	.mnd_width = 0,
 427	.hid_width = 5,
 428	.parent_map = ecpri_cc_parent_map_1,
 429	.freq_tbl = ftbl_ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src,
 430	.clkr.hw.init = &(const struct clk_init_data) {
 431		.name = "ecpri_cc_eth_100g_mac_fh0_hm_ref_clk_src",
 432		.parent_data = ecpri_cc_parent_data_1,
 433		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_1),
 434		.ops = &clk_rcg2_shared_ops,
 435	},
 436};
 437
 438static struct clk_rcg2 ecpri_cc_eth_100g_mac_fh1_hm_ref_clk_src = {
 439	.cmd_rcgr = 0x81f8,
 440	.mnd_width = 0,
 441	.hid_width = 5,
 442	.parent_map = ecpri_cc_parent_map_1,
 443	.freq_tbl = ftbl_ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src,
 444	.clkr.hw.init = &(const struct clk_init_data) {
 445		.name = "ecpri_cc_eth_100g_mac_fh1_hm_ref_clk_src",
 446		.parent_data = ecpri_cc_parent_data_1,
 447		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_1),
 448		.ops = &clk_rcg2_shared_ops,
 449	},
 450};
 451
 452static struct clk_rcg2 ecpri_cc_eth_100g_mac_fh2_hm_ref_clk_src = {
 453	.cmd_rcgr = 0x8210,
 454	.mnd_width = 0,
 455	.hid_width = 5,
 456	.parent_map = ecpri_cc_parent_map_1,
 457	.freq_tbl = ftbl_ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src,
 458	.clkr.hw.init = &(const struct clk_init_data) {
 459		.name = "ecpri_cc_eth_100g_mac_fh2_hm_ref_clk_src",
 460		.parent_data = ecpri_cc_parent_data_1,
 461		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_1),
 462		.ops = &clk_rcg2_shared_ops,
 463	},
 464};
 465
 466static const struct freq_tbl ftbl_ecpri_cc_mss_emac_clk_src[] = {
 467	F(403000000, P_GCC_ECPRI_CC_GPLL4_OUT_MAIN, 2, 0, 0),
 468	{ }
 469};
 470
 471static struct clk_rcg2 ecpri_cc_mss_emac_clk_src = {
 472	.cmd_rcgr = 0xe00c,
 473	.mnd_width = 0,
 474	.hid_width = 5,
 475	.parent_map = ecpri_cc_parent_map_2,
 476	.freq_tbl = ftbl_ecpri_cc_mss_emac_clk_src,
 477	.clkr.hw.init = &(const struct clk_init_data) {
 478		.name = "ecpri_cc_mss_emac_clk_src",
 479		.parent_data = ecpri_cc_parent_data_2,
 480		.num_parents = ARRAY_SIZE(ecpri_cc_parent_data_2),
 481		.ops = &clk_rcg2_shared_ops,
 482	},
 483};
 484
 485static struct clk_regmap_div ecpri_cc_ecpri_fast_div2_clk_src = {
 486	.reg = 0x907c,
 487	.shift = 0,
 488	.width = 4,
 489	.clkr.hw.init = &(const struct clk_init_data) {
 490		.name = "ecpri_cc_ecpri_fast_div2_clk_src",
 491		.parent_hws = (const struct clk_hw*[]) {
 492			&ecpri_cc_ecpri_fast_clk_src.clkr.hw,
 493		},
 494		.num_parents = 1,
 495		.flags = CLK_SET_RATE_PARENT,
 496		.ops = &clk_regmap_div_ro_ops,
 497	},
 498};
 499
 500static struct clk_regmap_div ecpri_cc_eth_100g_c2c_hm_ff_0_div_clk_src = {
 501	.reg = 0x8290,
 502	.shift = 0,
 503	.width = 4,
 504	.clkr.hw.init = &(const struct clk_init_data) {
 505		.name = "ecpri_cc_eth_100g_c2c_hm_ff_0_div_clk_src",
 506		.parent_hws = (const struct clk_hw*[]) {
 507			&ecpri_cc_eth_100g_c2c0_hm_ff_clk_src.clkr.hw,
 508		},
 509		.num_parents = 1,
 510		.flags = CLK_SET_RATE_PARENT,
 511		.ops = &clk_regmap_div_ro_ops,
 512	},
 513};
 514
 515static struct clk_regmap_div ecpri_cc_eth_100g_c2c_hm_ff_1_div_clk_src = {
 516	.reg = 0x8294,
 517	.shift = 0,
 518	.width = 4,
 519	.clkr.hw.init = &(const struct clk_init_data) {
 520		.name = "ecpri_cc_eth_100g_c2c_hm_ff_1_div_clk_src",
 521		.parent_hws = (const struct clk_hw*[]) {
 522			&ecpri_cc_eth_100g_c2c0_hm_ff_clk_src.clkr.hw,
 523		},
 524		.num_parents = 1,
 525		.flags = CLK_SET_RATE_PARENT,
 526		.ops = &clk_regmap_div_ro_ops,
 527	},
 528};
 529
 530static struct clk_regmap_div ecpri_cc_eth_100g_dbg_c2c_hm_ff_0_div_clk_src = {
 531	.reg = 0x8298,
 532	.shift = 0,
 533	.width = 4,
 534	.clkr.hw.init = &(const struct clk_init_data) {
 535		.name = "ecpri_cc_eth_100g_dbg_c2c_hm_ff_0_div_clk_src",
 536		.parent_hws = (const struct clk_hw*[]) {
 537			&ecpri_cc_eth_100g_dbg_c2c_hm_ff_clk_src.clkr.hw,
 538		},
 539		.num_parents = 1,
 540		.flags = CLK_SET_RATE_PARENT,
 541		.ops = &clk_regmap_div_ro_ops,
 542	},
 543};
 544
 545static struct clk_regmap_div ecpri_cc_eth_100g_dbg_c2c_hm_ff_1_div_clk_src = {
 546	.reg = 0x829c,
 547	.shift = 0,
 548	.width = 4,
 549	.clkr.hw.init = &(const struct clk_init_data) {
 550		.name = "ecpri_cc_eth_100g_dbg_c2c_hm_ff_1_div_clk_src",
 551		.parent_hws = (const struct clk_hw*[]) {
 552			&ecpri_cc_eth_100g_dbg_c2c_hm_ff_clk_src.clkr.hw,
 553		},
 554		.num_parents = 1,
 555		.flags = CLK_SET_RATE_PARENT,
 556		.ops = &clk_regmap_div_ro_ops,
 557	},
 558};
 559
 560static struct clk_regmap_div ecpri_cc_eth_100g_fh_0_hm_ff_0_div_clk_src = {
 561	.reg = 0x8260,
 562	.shift = 0,
 563	.width = 4,
 564	.clkr.hw.init = &(const struct clk_init_data) {
 565		.name = "ecpri_cc_eth_100g_fh_0_hm_ff_0_div_clk_src",
 566		.parent_hws = (const struct clk_hw*[]) {
 567			&ecpri_cc_eth_100g_fh0_hm_ff_clk_src.clkr.hw,
 568		},
 569		.num_parents = 1,
 570		.flags = CLK_SET_RATE_PARENT,
 571		.ops = &clk_regmap_div_ro_ops,
 572	},
 573};
 574
 575static struct clk_regmap_div ecpri_cc_eth_100g_fh_0_hm_ff_1_div_clk_src = {
 576	.reg = 0x8264,
 577	.shift = 0,
 578	.width = 4,
 579	.clkr.hw.init = &(const struct clk_init_data) {
 580		.name = "ecpri_cc_eth_100g_fh_0_hm_ff_1_div_clk_src",
 581		.parent_hws = (const struct clk_hw*[]) {
 582			&ecpri_cc_eth_100g_fh0_hm_ff_clk_src.clkr.hw,
 583		},
 584		.num_parents = 1,
 585		.flags = CLK_SET_RATE_PARENT,
 586		.ops = &clk_regmap_div_ro_ops,
 587	},
 588};
 589
 590static struct clk_regmap_div ecpri_cc_eth_100g_fh_0_hm_ff_2_div_clk_src = {
 591	.reg = 0x8268,
 592	.shift = 0,
 593	.width = 4,
 594	.clkr.hw.init = &(const struct clk_init_data) {
 595		.name = "ecpri_cc_eth_100g_fh_0_hm_ff_2_div_clk_src",
 596		.parent_hws = (const struct clk_hw*[]) {
 597			&ecpri_cc_eth_100g_fh0_hm_ff_clk_src.clkr.hw,
 598		},
 599		.num_parents = 1,
 600		.flags = CLK_SET_RATE_PARENT,
 601		.ops = &clk_regmap_div_ro_ops,
 602	},
 603};
 604
 605static struct clk_regmap_div ecpri_cc_eth_100g_fh_0_hm_ff_3_div_clk_src = {
 606	.reg = 0x826c,
 607	.shift = 0,
 608	.width = 4,
 609	.clkr.hw.init = &(const struct clk_init_data) {
 610		.name = "ecpri_cc_eth_100g_fh_0_hm_ff_3_div_clk_src",
 611		.parent_hws = (const struct clk_hw*[]) {
 612			&ecpri_cc_eth_100g_fh0_hm_ff_clk_src.clkr.hw,
 613		},
 614		.num_parents = 1,
 615		.flags = CLK_SET_RATE_PARENT,
 616		.ops = &clk_regmap_div_ro_ops,
 617	},
 618};
 619
 620static struct clk_regmap_div ecpri_cc_eth_100g_fh_1_hm_ff_0_div_clk_src = {
 621	.reg = 0x8270,
 622	.shift = 0,
 623	.width = 4,
 624	.clkr.hw.init = &(const struct clk_init_data) {
 625		.name = "ecpri_cc_eth_100g_fh_1_hm_ff_0_div_clk_src",
 626		.parent_hws = (const struct clk_hw*[]) {
 627			&ecpri_cc_eth_100g_fh1_hm_ff_clk_src.clkr.hw,
 628		},
 629		.num_parents = 1,
 630		.flags = CLK_SET_RATE_PARENT,
 631		.ops = &clk_regmap_div_ro_ops,
 632	},
 633};
 634
 635static struct clk_regmap_div ecpri_cc_eth_100g_fh_1_hm_ff_1_div_clk_src = {
 636	.reg = 0x8274,
 637	.shift = 0,
 638	.width = 4,
 639	.clkr.hw.init = &(const struct clk_init_data) {
 640		.name = "ecpri_cc_eth_100g_fh_1_hm_ff_1_div_clk_src",
 641		.parent_hws = (const struct clk_hw*[]) {
 642			&ecpri_cc_eth_100g_fh1_hm_ff_clk_src.clkr.hw,
 643		},
 644		.num_parents = 1,
 645		.flags = CLK_SET_RATE_PARENT,
 646		.ops = &clk_regmap_div_ro_ops,
 647	},
 648};
 649
 650static struct clk_regmap_div ecpri_cc_eth_100g_fh_1_hm_ff_2_div_clk_src = {
 651	.reg = 0x8278,
 652	.shift = 0,
 653	.width = 4,
 654	.clkr.hw.init = &(const struct clk_init_data) {
 655		.name = "ecpri_cc_eth_100g_fh_1_hm_ff_2_div_clk_src",
 656		.parent_hws = (const struct clk_hw*[]) {
 657			&ecpri_cc_eth_100g_fh1_hm_ff_clk_src.clkr.hw,
 658		},
 659		.num_parents = 1,
 660		.flags = CLK_SET_RATE_PARENT,
 661		.ops = &clk_regmap_div_ro_ops,
 662	},
 663};
 664
 665static struct clk_regmap_div ecpri_cc_eth_100g_fh_1_hm_ff_3_div_clk_src = {
 666	.reg = 0x827c,
 667	.shift = 0,
 668	.width = 4,
 669	.clkr.hw.init = &(const struct clk_init_data) {
 670		.name = "ecpri_cc_eth_100g_fh_1_hm_ff_3_div_clk_src",
 671		.parent_hws = (const struct clk_hw*[]) {
 672			&ecpri_cc_eth_100g_fh1_hm_ff_clk_src.clkr.hw,
 673		},
 674		.num_parents = 1,
 675		.flags = CLK_SET_RATE_PARENT,
 676		.ops = &clk_regmap_div_ro_ops,
 677	},
 678};
 679
 680static struct clk_regmap_div ecpri_cc_eth_100g_fh_2_hm_ff_0_div_clk_src = {
 681	.reg = 0x8280,
 682	.shift = 0,
 683	.width = 4,
 684	.clkr.hw.init = &(const struct clk_init_data) {
 685		.name = "ecpri_cc_eth_100g_fh_2_hm_ff_0_div_clk_src",
 686		.parent_hws = (const struct clk_hw*[]) {
 687			&ecpri_cc_eth_100g_fh2_hm_ff_clk_src.clkr.hw,
 688		},
 689		.num_parents = 1,
 690		.flags = CLK_SET_RATE_PARENT,
 691		.ops = &clk_regmap_div_ro_ops,
 692	},
 693};
 694
 695static struct clk_regmap_div ecpri_cc_eth_100g_fh_2_hm_ff_1_div_clk_src = {
 696	.reg = 0x8284,
 697	.shift = 0,
 698	.width = 4,
 699	.clkr.hw.init = &(const struct clk_init_data) {
 700		.name = "ecpri_cc_eth_100g_fh_2_hm_ff_1_div_clk_src",
 701		.parent_hws = (const struct clk_hw*[]) {
 702			&ecpri_cc_eth_100g_fh2_hm_ff_clk_src.clkr.hw,
 703		},
 704		.num_parents = 1,
 705		.flags = CLK_SET_RATE_PARENT,
 706		.ops = &clk_regmap_div_ro_ops,
 707	},
 708};
 709
 710static struct clk_regmap_div ecpri_cc_eth_100g_fh_2_hm_ff_2_div_clk_src = {
 711	.reg = 0x8288,
 712	.shift = 0,
 713	.width = 4,
 714	.clkr.hw.init = &(const struct clk_init_data) {
 715		.name = "ecpri_cc_eth_100g_fh_2_hm_ff_2_div_clk_src",
 716		.parent_hws = (const struct clk_hw*[]) {
 717			&ecpri_cc_eth_100g_fh2_hm_ff_clk_src.clkr.hw,
 718		},
 719		.num_parents = 1,
 720		.flags = CLK_SET_RATE_PARENT,
 721		.ops = &clk_regmap_div_ro_ops,
 722	},
 723};
 724
 725static struct clk_regmap_div ecpri_cc_eth_100g_fh_2_hm_ff_3_div_clk_src = {
 726	.reg = 0x828c,
 727	.shift = 0,
 728	.width = 4,
 729	.clkr.hw.init = &(const struct clk_init_data) {
 730		.name = "ecpri_cc_eth_100g_fh_2_hm_ff_3_div_clk_src",
 731		.parent_hws = (const struct clk_hw*[]) {
 732			&ecpri_cc_eth_100g_fh2_hm_ff_clk_src.clkr.hw,
 733		},
 734		.num_parents = 1,
 735		.flags = CLK_SET_RATE_PARENT,
 736		.ops = &clk_regmap_div_ro_ops,
 737	},
 738};
 739
 740static struct clk_branch ecpri_cc_ecpri_cg_clk = {
 741	.halt_reg = 0x900c,
 742	.halt_check = BRANCH_HALT,
 743	.clkr = {
 744		.enable_reg = 0x900c,
 745		.enable_mask = BIT(0),
 746		.hw.init = &(const struct clk_init_data) {
 747			.name = "ecpri_cc_ecpri_cg_clk",
 748			.parent_hws = (const struct clk_hw*[]) {
 749				&ecpri_cc_ecpri_clk_src.clkr.hw,
 750			},
 751			.num_parents = 1,
 752			.flags = CLK_SET_RATE_PARENT,
 753			.ops = &clk_branch2_ops,
 754		},
 755	},
 756};
 757
 758static struct clk_branch ecpri_cc_ecpri_dma_clk = {
 759	.halt_reg = 0x902c,
 760	.halt_check = BRANCH_HALT,
 761	.clkr = {
 762		.enable_reg = 0x902c,
 763		.enable_mask = BIT(0),
 764		.hw.init = &(const struct clk_init_data) {
 765			.name = "ecpri_cc_ecpri_dma_clk",
 766			.parent_hws = (const struct clk_hw*[]) {
 767				&ecpri_cc_ecpri_dma_clk_src.clkr.hw,
 768			},
 769			.num_parents = 1,
 770			.flags = CLK_SET_RATE_PARENT,
 771			.ops = &clk_branch2_ops,
 772		},
 773	},
 774};
 775
 776static struct clk_branch ecpri_cc_ecpri_dma_noc_clk = {
 777	.halt_reg = 0xf004,
 778	.halt_check = BRANCH_HALT,
 779	.clkr = {
 780		.enable_reg = 0xf004,
 781		.enable_mask = BIT(0),
 782		.hw.init = &(const struct clk_init_data) {
 783			.name = "ecpri_cc_ecpri_dma_noc_clk",
 784			.parent_hws = (const struct clk_hw*[]) {
 785				&ecpri_cc_ecpri_dma_clk_src.clkr.hw,
 786			},
 787			.num_parents = 1,
 788			.flags = CLK_SET_RATE_PARENT,
 789			.ops = &clk_branch2_ops,
 790		},
 791	},
 792};
 793
 794static struct clk_branch ecpri_cc_ecpri_fast_clk = {
 795	.halt_reg = 0x9014,
 796	.halt_check = BRANCH_HALT,
 797	.clkr = {
 798		.enable_reg = 0x9014,
 799		.enable_mask = BIT(0),
 800		.hw.init = &(const struct clk_init_data) {
 801			.name = "ecpri_cc_ecpri_fast_clk",
 802			.parent_hws = (const struct clk_hw*[]) {
 803				&ecpri_cc_ecpri_fast_clk_src.clkr.hw,
 804			},
 805			.num_parents = 1,
 806			.flags = CLK_SET_RATE_PARENT,
 807			.ops = &clk_branch2_ops,
 808		},
 809	},
 810};
 811
 812static struct clk_branch ecpri_cc_ecpri_fast_div2_clk = {
 813	.halt_reg = 0x901c,
 814	.halt_check = BRANCH_HALT,
 815	.clkr = {
 816		.enable_reg = 0x901c,
 817		.enable_mask = BIT(0),
 818		.hw.init = &(const struct clk_init_data) {
 819			.name = "ecpri_cc_ecpri_fast_div2_clk",
 820			.parent_hws = (const struct clk_hw*[]) {
 821				&ecpri_cc_ecpri_fast_div2_clk_src.clkr.hw,
 822			},
 823			.num_parents = 1,
 824			.flags = CLK_SET_RATE_PARENT,
 825			.ops = &clk_branch2_ops,
 826		},
 827	},
 828};
 829
 830static struct clk_branch ecpri_cc_ecpri_fast_div2_noc_clk = {
 831	.halt_reg = 0xf008,
 832	.halt_check = BRANCH_HALT,
 833	.clkr = {
 834		.enable_reg = 0xf008,
 835		.enable_mask = BIT(0),
 836		.hw.init = &(const struct clk_init_data) {
 837			.name = "ecpri_cc_ecpri_fast_div2_noc_clk",
 838			.parent_hws = (const struct clk_hw*[]) {
 839				&ecpri_cc_ecpri_fast_div2_clk_src.clkr.hw,
 840			},
 841			.num_parents = 1,
 842			.flags = CLK_SET_RATE_PARENT,
 843			.ops = &clk_branch2_ops,
 844		},
 845	},
 846};
 847
 848static struct clk_branch ecpri_cc_ecpri_fr_clk = {
 849	.halt_reg = 0x9004,
 850	.halt_check = BRANCH_HALT,
 851	.clkr = {
 852		.enable_reg = 0x9004,
 853		.enable_mask = BIT(0),
 854		.hw.init = &(const struct clk_init_data) {
 855			.name = "ecpri_cc_ecpri_fr_clk",
 856			.parent_hws = (const struct clk_hw*[]) {
 857				&ecpri_cc_ecpri_clk_src.clkr.hw,
 858			},
 859			.num_parents = 1,
 860			.flags = CLK_SET_RATE_PARENT,
 861			.ops = &clk_branch2_ops,
 862		},
 863	},
 864};
 865
 866static struct clk_branch ecpri_cc_ecpri_oran_div2_clk = {
 867	.halt_reg = 0x9024,
 868	.halt_check = BRANCH_HALT,
 869	.clkr = {
 870		.enable_reg = 0x9024,
 871		.enable_mask = BIT(0),
 872		.hw.init = &(const struct clk_init_data) {
 873			.name = "ecpri_cc_ecpri_oran_div2_clk",
 874			.parent_hws = (const struct clk_hw*[]) {
 875				&ecpri_cc_ecpri_oran_clk_src.clkr.hw,
 876			},
 877			.num_parents = 1,
 878			.flags = CLK_SET_RATE_PARENT,
 879			.ops = &clk_branch2_ops,
 880		},
 881	},
 882};
 883
 884static struct clk_branch ecpri_cc_eth_100g_c2c0_udp_fifo_clk = {
 885	.halt_reg = 0x80cc,
 886	.halt_check = BRANCH_HALT,
 887	.clkr = {
 888		.enable_reg = 0x80cc,
 889		.enable_mask = BIT(0),
 890		.hw.init = &(const struct clk_init_data) {
 891			.name = "ecpri_cc_eth_100g_c2c0_udp_fifo_clk",
 892			.parent_hws = (const struct clk_hw*[]) {
 893				&ecpri_cc_ecpri_clk_src.clkr.hw,
 894			},
 895			.num_parents = 1,
 896			.flags = CLK_SET_RATE_PARENT,
 897			.ops = &clk_branch2_ops,
 898		},
 899	},
 900};
 901
 902static struct clk_branch ecpri_cc_eth_100g_c2c1_udp_fifo_clk = {
 903	.halt_reg = 0x80d0,
 904	.halt_check = BRANCH_HALT,
 905	.clkr = {
 906		.enable_reg = 0x80d0,
 907		.enable_mask = BIT(0),
 908		.hw.init = &(const struct clk_init_data) {
 909			.name = "ecpri_cc_eth_100g_c2c1_udp_fifo_clk",
 910			.parent_hws = (const struct clk_hw*[]) {
 911				&ecpri_cc_ecpri_clk_src.clkr.hw,
 912			},
 913			.num_parents = 1,
 914			.flags = CLK_SET_RATE_PARENT,
 915			.ops = &clk_branch2_ops,
 916		},
 917	},
 918};
 919
 920static struct clk_mem_branch ecpri_cc_eth_100g_c2c_0_hm_ff_0_clk = {
 921	.mem_enable_reg = 0x8410,
 922	.mem_ack_reg = 0x8424,
 923	.mem_enable_ack_mask = BIT(0),
 924	.branch = {
 925		.halt_reg = 0x80b4,
 926		.halt_check = BRANCH_HALT,
 927		.clkr = {
 928			.enable_reg = 0x80b4,
 929			.enable_mask = BIT(0),
 930			.hw.init = &(const struct clk_init_data) {
 931				.name = "ecpri_cc_eth_100g_c2c_0_hm_ff_0_clk",
 932				.parent_hws = (const struct clk_hw*[]) {
 933					&ecpri_cc_eth_100g_c2c_hm_ff_0_div_clk_src.clkr.hw,
 934				},
 935				.num_parents = 1,
 936				.flags = CLK_SET_RATE_PARENT,
 937				.ops = &clk_branch2_mem_ops,
 938			},
 939		},
 940	},
 941};
 942
 943static struct clk_mem_branch ecpri_cc_eth_100g_c2c_0_hm_ff_1_clk = {
 944	.mem_enable_reg = 0x8410,
 945	.mem_ack_reg = 0x8424,
 946	.mem_enable_ack_mask = BIT(1),
 947	.branch = {
 948		.halt_reg = 0x80bc,
 949		.halt_check = BRANCH_HALT,
 950		.clkr = {
 951			.enable_reg = 0x80bc,
 952			.enable_mask = BIT(0),
 953			.hw.init = &(const struct clk_init_data) {
 954				.name = "ecpri_cc_eth_100g_c2c_0_hm_ff_1_clk",
 955				.parent_hws = (const struct clk_hw*[]) {
 956					&ecpri_cc_eth_100g_c2c_hm_ff_1_div_clk_src.clkr.hw,
 957				},
 958				.num_parents = 1,
 959				.flags = CLK_SET_RATE_PARENT,
 960				.ops = &clk_branch2_mem_ops,
 961			},
 962		},
 963	},
 964};
 965
 966static struct clk_mem_branch ecpri_cc_eth_100g_c2c_hm_macsec_clk = {
 967	.mem_enable_reg = 0x8410,
 968	.mem_ack_reg = 0x8424,
 969	.mem_enable_ack_mask = BIT(4),
 970	.branch = {
 971		.halt_reg = 0x80ac,
 972		.halt_check = BRANCH_HALT,
 973		.clkr = {
 974			.enable_reg = 0x80ac,
 975			.enable_mask = BIT(0),
 976			.hw.init = &(const struct clk_init_data) {
 977				.name = "ecpri_cc_eth_100g_c2c_hm_macsec_clk",
 978				.parent_hws = (const struct clk_hw*[]) {
 979					&ecpri_cc_eth_100g_c2c_hm_macsec_clk_src.clkr.hw,
 980				},
 981				.num_parents = 1,
 982				.flags = CLK_SET_RATE_PARENT,
 983				.ops = &clk_branch2_mem_ops,
 984			},
 985		},
 986	},
 987};
 988
 989static struct clk_mem_branch ecpri_cc_eth_100g_dbg_c2c_hm_ff_0_clk = {
 990	.mem_enable_reg = 0x8414,
 991	.mem_ack_reg = 0x8428,
 992	.mem_enable_ack_mask = BIT(0),
 993	.branch = {
 994		.halt_reg = 0x80d8,
 995		.halt_check = BRANCH_HALT,
 996		.clkr = {
 997			.enable_reg = 0x80d8,
 998			.enable_mask = BIT(0),
 999			.hw.init = &(const struct clk_init_data) {
1000				.name = "ecpri_cc_eth_100g_dbg_c2c_hm_ff_0_clk",
1001				.parent_hws = (const struct clk_hw*[]) {
1002					&ecpri_cc_eth_100g_dbg_c2c_hm_ff_0_div_clk_src.clkr.hw,
1003				},
1004				.num_parents = 1,
1005				.flags = CLK_SET_RATE_PARENT,
1006				.ops = &clk_branch2_mem_ops,
1007			},
1008		},
1009	},
1010};
1011
1012static struct clk_mem_branch ecpri_cc_eth_100g_dbg_c2c_hm_ff_1_clk = {
1013	.mem_enable_reg = 0x8414,
1014	.mem_ack_reg = 0x8428,
1015	.mem_enable_ack_mask = BIT(1),
1016	.branch = {
1017		.halt_reg = 0x80e0,
1018		.halt_check = BRANCH_HALT,
1019		.clkr = {
1020			.enable_reg = 0x80e0,
1021			.enable_mask = BIT(0),
1022			.hw.init = &(const struct clk_init_data) {
1023				.name = "ecpri_cc_eth_100g_dbg_c2c_hm_ff_1_clk",
1024				.parent_hws = (const struct clk_hw*[]) {
1025					&ecpri_cc_eth_100g_dbg_c2c_hm_ff_1_div_clk_src.clkr.hw,
1026				},
1027				.num_parents = 1,
1028				.flags = CLK_SET_RATE_PARENT,
1029				.ops = &clk_branch2_mem_ops,
1030			},
1031		},
1032	},
1033};
1034
1035static struct clk_branch ecpri_cc_eth_100g_dbg_c2c_udp_fifo_clk = {
1036	.halt_reg = 0x80f0,
1037	.halt_check = BRANCH_HALT,
1038	.clkr = {
1039		.enable_reg = 0x80f0,
1040		.enable_mask = BIT(0),
1041		.hw.init = &(const struct clk_init_data) {
1042			.name = "ecpri_cc_eth_100g_dbg_c2c_udp_fifo_clk",
1043			.parent_hws = (const struct clk_hw*[]) {
1044				&ecpri_cc_ecpri_clk_src.clkr.hw,
1045			},
1046			.num_parents = 1,
1047			.flags = CLK_SET_RATE_PARENT,
1048			.ops = &clk_branch2_ops,
1049		},
1050	},
1051};
1052
1053static struct clk_mem_branch ecpri_cc_eth_100g_fh_0_hm_ff_0_clk = {
1054	.mem_enable_reg = 0x8404,
1055	.mem_ack_reg = 0x8418,
1056	.mem_enable_ack_mask = BIT(0),
1057	.branch = {
1058		.halt_reg = 0x800c,
1059		.halt_check = BRANCH_HALT,
1060		.clkr = {
1061			.enable_reg = 0x800c,
1062			.enable_mask = BIT(0),
1063			.hw.init = &(const struct clk_init_data) {
1064				.name = "ecpri_cc_eth_100g_fh_0_hm_ff_0_clk",
1065				.parent_hws = (const struct clk_hw*[]) {
1066					&ecpri_cc_eth_100g_fh_0_hm_ff_0_div_clk_src.clkr.hw,
1067				},
1068				.num_parents = 1,
1069				.flags = CLK_SET_RATE_PARENT,
1070				.ops = &clk_branch2_mem_ops,
1071			},
1072		},
1073	},
1074};
1075
1076static struct clk_mem_branch ecpri_cc_eth_100g_fh_0_hm_ff_1_clk = {
1077	.mem_enable_reg = 0x8404,
1078	.mem_ack_reg = 0x8418,
1079	.mem_enable_ack_mask = BIT(1),
1080	.branch = {
1081		.halt_reg = 0x8014,
1082		.halt_check = BRANCH_HALT,
1083		.clkr = {
1084			.enable_reg = 0x8014,
1085			.enable_mask = BIT(0),
1086			.hw.init = &(const struct clk_init_data) {
1087				.name = "ecpri_cc_eth_100g_fh_0_hm_ff_1_clk",
1088				.parent_hws = (const struct clk_hw*[]) {
1089					&ecpri_cc_eth_100g_fh_0_hm_ff_1_div_clk_src.clkr.hw,
1090				},
1091				.num_parents = 1,
1092				.flags = CLK_SET_RATE_PARENT,
1093				.ops = &clk_branch2_mem_ops,
1094			},
1095		},
1096	},
1097};
1098
1099static struct clk_mem_branch ecpri_cc_eth_100g_fh_0_hm_ff_2_clk = {
1100	.mem_enable_reg = 0x8404,
1101	.mem_ack_reg = 0x8418,
1102	.mem_enable_ack_mask = BIT(2),
1103	.branch = {
1104		.halt_reg = 0x801c,
1105		.halt_check = BRANCH_HALT,
1106		.clkr = {
1107			.enable_reg = 0x801c,
1108			.enable_mask = BIT(0),
1109			.hw.init = &(const struct clk_init_data) {
1110				.name = "ecpri_cc_eth_100g_fh_0_hm_ff_2_clk",
1111				.parent_hws = (const struct clk_hw*[]) {
1112					&ecpri_cc_eth_100g_fh_0_hm_ff_2_div_clk_src.clkr.hw,
1113				},
1114				.num_parents = 1,
1115				.flags = CLK_SET_RATE_PARENT,
1116				.ops = &clk_branch2_mem_ops,
1117			},
1118		},
1119	},
1120};
1121
1122static struct clk_mem_branch ecpri_cc_eth_100g_fh_0_hm_ff_3_clk = {
1123	.mem_enable_reg = 0x8404,
1124	.mem_ack_reg = 0x8418,
1125	.mem_enable_ack_mask = BIT(3),
1126	.branch = {
1127		.halt_reg = 0x8024,
1128		.halt_check = BRANCH_HALT,
1129		.clkr = {
1130			.enable_reg = 0x8024,
1131			.enable_mask = BIT(0),
1132			.hw.init = &(const struct clk_init_data) {
1133				.name = "ecpri_cc_eth_100g_fh_0_hm_ff_3_clk",
1134				.parent_hws = (const struct clk_hw*[]) {
1135					&ecpri_cc_eth_100g_fh_0_hm_ff_3_div_clk_src.clkr.hw,
1136				},
1137				.num_parents = 1,
1138				.flags = CLK_SET_RATE_PARENT,
1139				.ops = &clk_branch2_mem_ops,
1140			},
1141		},
1142	},
1143};
1144
1145static struct clk_branch ecpri_cc_eth_100g_fh_0_udp_fifo_clk = {
1146	.halt_reg = 0x8034,
1147	.halt_check = BRANCH_HALT,
1148	.clkr = {
1149		.enable_reg = 0x8034,
1150		.enable_mask = BIT(0),
1151		.hw.init = &(const struct clk_init_data) {
1152			.name = "ecpri_cc_eth_100g_fh_0_udp_fifo_clk",
1153			.parent_hws = (const struct clk_hw*[]) {
1154				&ecpri_cc_ecpri_clk_src.clkr.hw,
1155			},
1156			.num_parents = 1,
1157			.flags = CLK_SET_RATE_PARENT,
1158			.ops = &clk_branch2_ops,
1159		},
1160	},
1161};
1162
1163static struct clk_mem_branch ecpri_cc_eth_100g_fh_1_hm_ff_0_clk = {
1164	.mem_enable_reg = 0x8408,
1165	.mem_ack_reg = 0x841c,
1166	.mem_enable_ack_mask = BIT(0),
1167	.branch = {
1168		.halt_reg = 0x8044,
1169		.halt_check = BRANCH_HALT,
1170		.clkr = {
1171			.enable_reg = 0x8044,
1172			.enable_mask = BIT(0),
1173			.hw.init = &(const struct clk_init_data) {
1174				.name = "ecpri_cc_eth_100g_fh_1_hm_ff_0_clk",
1175				.parent_hws = (const struct clk_hw*[]) {
1176					&ecpri_cc_eth_100g_fh_1_hm_ff_0_div_clk_src.clkr.hw,
1177				},
1178				.num_parents = 1,
1179				.flags = CLK_SET_RATE_PARENT,
1180				.ops = &clk_branch2_mem_ops,
1181			},
1182		},
1183	},
1184};
1185
1186static struct clk_mem_branch ecpri_cc_eth_100g_fh_1_hm_ff_1_clk = {
1187	.mem_enable_reg = 0x8408,
1188	.mem_ack_reg = 0x841c,
1189	.mem_enable_ack_mask = BIT(1),
1190	.branch = {
1191		.halt_reg = 0x804c,
1192		.halt_check = BRANCH_HALT,
1193		.clkr = {
1194			.enable_reg = 0x804c,
1195			.enable_mask = BIT(0),
1196			.hw.init = &(const struct clk_init_data) {
1197				.name = "ecpri_cc_eth_100g_fh_1_hm_ff_1_clk",
1198				.parent_hws = (const struct clk_hw*[]) {
1199					&ecpri_cc_eth_100g_fh_1_hm_ff_1_div_clk_src.clkr.hw,
1200				},
1201				.num_parents = 1,
1202				.flags = CLK_SET_RATE_PARENT,
1203				.ops = &clk_branch2_mem_ops,
1204			},
1205		},
1206	},
1207};
1208
1209static struct clk_mem_branch ecpri_cc_eth_100g_fh_1_hm_ff_2_clk = {
1210	.mem_enable_reg = 0x8408,
1211	.mem_ack_reg = 0x841c,
1212	.mem_enable_ack_mask = BIT(2),
1213	.branch = {
1214		.halt_reg = 0x8054,
1215		.halt_check = BRANCH_HALT,
1216		.clkr = {
1217			.enable_reg = 0x8054,
1218			.enable_mask = BIT(0),
1219			.hw.init = &(const struct clk_init_data) {
1220				.name = "ecpri_cc_eth_100g_fh_1_hm_ff_2_clk",
1221				.parent_hws = (const struct clk_hw*[]) {
1222					&ecpri_cc_eth_100g_fh_1_hm_ff_2_div_clk_src.clkr.hw,
1223				},
1224				.num_parents = 1,
1225				.flags = CLK_SET_RATE_PARENT,
1226				.ops = &clk_branch2_mem_ops,
1227			},
1228		},
1229	},
1230};
1231
1232static struct clk_mem_branch ecpri_cc_eth_100g_fh_1_hm_ff_3_clk = {
1233	.mem_enable_reg = 0x8408,
1234	.mem_ack_reg = 0x841c,
1235	.mem_enable_ack_mask = BIT(3),
1236	.branch = {
1237		.halt_reg = 0x805c,
1238		.halt_check = BRANCH_HALT,
1239		.clkr = {
1240			.enable_reg = 0x805c,
1241			.enable_mask = BIT(0),
1242			.hw.init = &(const struct clk_init_data) {
1243				.name = "ecpri_cc_eth_100g_fh_1_hm_ff_3_clk",
1244				.parent_hws = (const struct clk_hw*[]) {
1245					&ecpri_cc_eth_100g_fh_1_hm_ff_3_div_clk_src.clkr.hw,
1246				},
1247				.num_parents = 1,
1248				.flags = CLK_SET_RATE_PARENT,
1249				.ops = &clk_branch2_mem_ops,
1250			},
1251		},
1252	},
1253};
1254
1255static struct clk_branch ecpri_cc_eth_100g_fh_1_udp_fifo_clk = {
1256	.halt_reg = 0x806c,
1257	.halt_check = BRANCH_HALT,
1258	.clkr = {
1259		.enable_reg = 0x806c,
1260		.enable_mask = BIT(0),
1261		.hw.init = &(const struct clk_init_data) {
1262			.name = "ecpri_cc_eth_100g_fh_1_udp_fifo_clk",
1263			.parent_hws = (const struct clk_hw*[]) {
1264				&ecpri_cc_ecpri_clk_src.clkr.hw,
1265			},
1266			.num_parents = 1,
1267			.flags = CLK_SET_RATE_PARENT,
1268			.ops = &clk_branch2_ops,
1269		},
1270	},
1271};
1272
1273static struct clk_mem_branch ecpri_cc_eth_100g_fh_2_hm_ff_0_clk = {
1274	.mem_enable_reg = 0x840c,
1275	.mem_ack_reg = 0x8420,
1276	.mem_enable_ack_mask = BIT(0),
1277	.branch = {
1278		.halt_reg = 0x807c,
1279		.halt_check = BRANCH_HALT,
1280		.clkr = {
1281			.enable_reg = 0x807c,
1282			.enable_mask = BIT(0),
1283			.hw.init = &(const struct clk_init_data) {
1284				.name = "ecpri_cc_eth_100g_fh_2_hm_ff_0_clk",
1285				.parent_hws = (const struct clk_hw*[]) {
1286					&ecpri_cc_eth_100g_fh_2_hm_ff_0_div_clk_src.clkr.hw,
1287				},
1288				.num_parents = 1,
1289				.flags = CLK_SET_RATE_PARENT,
1290				.ops = &clk_branch2_mem_ops,
1291			},
1292		},
1293	},
1294};
1295
1296static struct clk_mem_branch ecpri_cc_eth_100g_fh_2_hm_ff_1_clk = {
1297	.mem_enable_reg = 0x840c,
1298	.mem_ack_reg = 0x8420,
1299	.mem_enable_ack_mask = BIT(1),
1300	.branch = {
1301		.halt_reg = 0x8084,
1302		.halt_check = BRANCH_HALT,
1303		.clkr = {
1304			.enable_reg = 0x8084,
1305			.enable_mask = BIT(0),
1306			.hw.init = &(const struct clk_init_data) {
1307				.name = "ecpri_cc_eth_100g_fh_2_hm_ff_1_clk",
1308				.parent_hws = (const struct clk_hw*[]) {
1309					&ecpri_cc_eth_100g_fh_2_hm_ff_1_div_clk_src.clkr.hw,
1310				},
1311				.num_parents = 1,
1312				.flags = CLK_SET_RATE_PARENT,
1313				.ops = &clk_branch2_mem_ops,
1314			},
1315		},
1316	},
1317};
1318
1319static struct clk_mem_branch ecpri_cc_eth_100g_fh_2_hm_ff_2_clk = {
1320	.mem_enable_reg = 0x840c,
1321	.mem_ack_reg = 0x8420,
1322	.mem_enable_ack_mask = BIT(2),
1323	.branch = {
1324		.halt_reg = 0x808c,
1325		.halt_check = BRANCH_HALT,
1326		.clkr = {
1327			.enable_reg = 0x808c,
1328			.enable_mask = BIT(0),
1329			.hw.init = &(const struct clk_init_data) {
1330				.name = "ecpri_cc_eth_100g_fh_2_hm_ff_2_clk",
1331				.parent_hws = (const struct clk_hw*[]) {
1332					&ecpri_cc_eth_100g_fh_2_hm_ff_2_div_clk_src.clkr.hw,
1333				},
1334				.num_parents = 1,
1335				.flags = CLK_SET_RATE_PARENT,
1336				.ops = &clk_branch2_mem_ops,
1337			},
1338		},
1339	},
1340};
1341
1342static struct clk_mem_branch ecpri_cc_eth_100g_fh_2_hm_ff_3_clk = {
1343	.mem_enable_reg = 0x840c,
1344	.mem_ack_reg = 0x8420,
1345	.mem_enable_ack_mask = BIT(3),
1346	.branch = {
1347		.halt_reg = 0x8094,
1348		.halt_check = BRANCH_HALT,
1349		.clkr = {
1350			.enable_reg = 0x8094,
1351			.enable_mask = BIT(0),
1352			.hw.init = &(const struct clk_init_data) {
1353				.name = "ecpri_cc_eth_100g_fh_2_hm_ff_3_clk",
1354				.parent_hws = (const struct clk_hw*[]) {
1355					&ecpri_cc_eth_100g_fh_2_hm_ff_3_div_clk_src.clkr.hw,
1356				},
1357				.num_parents = 1,
1358				.flags = CLK_SET_RATE_PARENT,
1359				.ops = &clk_branch2_mem_ops,
1360			},
1361		},
1362	},
1363};
1364
1365static struct clk_branch ecpri_cc_eth_100g_fh_2_udp_fifo_clk = {
1366	.halt_reg = 0x80a4,
1367	.halt_check = BRANCH_HALT,
1368	.clkr = {
1369		.enable_reg = 0x80a4,
1370		.enable_mask = BIT(0),
1371		.hw.init = &(const struct clk_init_data) {
1372			.name = "ecpri_cc_eth_100g_fh_2_udp_fifo_clk",
1373			.parent_hws = (const struct clk_hw*[]) {
1374				&ecpri_cc_ecpri_clk_src.clkr.hw,
1375			},
1376			.num_parents = 1,
1377			.flags = CLK_SET_RATE_PARENT,
1378			.ops = &clk_branch2_ops,
1379		},
1380	},
1381};
1382
1383static struct clk_mem_branch ecpri_cc_eth_100g_fh_macsec_0_clk = {
1384	.mem_enable_reg = 0x8404,
1385	.mem_ack_reg = 0x8418,
1386	.mem_enable_ack_mask = BIT(4),
1387	.branch = {
1388		.halt_reg = 0x8004,
1389		.halt_check = BRANCH_HALT,
1390		.clkr = {
1391			.enable_reg = 0x8004,
1392			.enable_mask = BIT(0),
1393			.hw.init = &(const struct clk_init_data) {
1394				.name = "ecpri_cc_eth_100g_fh_macsec_0_clk",
1395				.parent_hws = (const struct clk_hw*[]) {
1396					&ecpri_cc_eth_100g_fh0_macsec_clk_src.clkr.hw,
1397				},
1398				.num_parents = 1,
1399				.flags = CLK_SET_RATE_PARENT,
1400				.ops = &clk_branch2_mem_ops,
1401			},
1402		},
1403	},
1404};
1405
1406static struct clk_mem_branch ecpri_cc_eth_100g_fh_macsec_1_clk = {
1407	.mem_enable_reg = 0x8408,
1408	.mem_ack_reg = 0x841c,
1409	.mem_enable_ack_mask = BIT(4),
1410	.branch = {
1411		.halt_reg = 0x803c,
1412		.halt_check = BRANCH_HALT,
1413		.clkr = {
1414			.enable_reg = 0x803c,
1415			.enable_mask = BIT(0),
1416			.hw.init = &(const struct clk_init_data) {
1417				.name = "ecpri_cc_eth_100g_fh_macsec_1_clk",
1418				.parent_hws = (const struct clk_hw*[]) {
1419					&ecpri_cc_eth_100g_fh1_macsec_clk_src.clkr.hw,
1420				},
1421				.num_parents = 1,
1422				.flags = CLK_SET_RATE_PARENT,
1423				.ops = &clk_branch2_mem_ops,
1424			},
1425		},
1426	},
1427};
1428
1429static struct clk_mem_branch ecpri_cc_eth_100g_fh_macsec_2_clk = {
1430	.mem_enable_reg = 0x840c,
1431	.mem_ack_reg = 0x8420,
1432	.mem_enable_ack_mask = BIT(4),
1433	.branch = {
1434		.halt_reg = 0x8074,
1435		.halt_check = BRANCH_HALT,
1436		.clkr = {
1437			.enable_reg = 0x8074,
1438			.enable_mask = BIT(0),
1439			.hw.init = &(const struct clk_init_data) {
1440				.name = "ecpri_cc_eth_100g_fh_macsec_2_clk",
1441				.parent_hws = (const struct clk_hw*[]) {
1442					&ecpri_cc_eth_100g_fh2_macsec_clk_src.clkr.hw,
1443				},
1444				.num_parents = 1,
1445				.flags = CLK_SET_RATE_PARENT,
1446				.ops = &clk_branch2_mem_ops,
1447			},
1448		},
1449	},
1450};
1451
1452static struct clk_mem_branch ecpri_cc_eth_100g_mac_c2c_hm_ref_clk = {
1453	.mem_enable_reg = 0x8410,
1454	.mem_ack_reg = 0x8424,
1455	.mem_enable_ack_mask = BIT(5),
1456	.branch = {
1457		.halt_reg = 0x80c4,
1458		.halt_check = BRANCH_HALT,
1459		.clkr = {
1460			.enable_reg = 0x80c4,
1461			.enable_mask = BIT(0),
1462			.hw.init = &(const struct clk_init_data) {
1463				.name = "ecpri_cc_eth_100g_mac_c2c_hm_ref_clk",
1464				.parent_hws = (const struct clk_hw*[]) {
1465					&ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src.clkr.hw,
1466				},
1467				.num_parents = 1,
1468				.flags = CLK_SET_RATE_PARENT,
1469				.ops = &clk_branch2_mem_ops,
1470			},
1471		},
1472	},
1473};
1474
1475static struct clk_mem_branch ecpri_cc_eth_100g_mac_dbg_c2c_hm_ref_clk = {
1476	.mem_enable_reg = 0x8414,
1477	.mem_ack_reg = 0x8428,
1478	.mem_enable_ack_mask = BIT(5),
1479	.branch = {
1480		.halt_reg = 0x80e8,
1481		.halt_check = BRANCH_HALT,
1482		.clkr = {
1483			.enable_reg = 0x80e8,
1484			.enable_mask = BIT(0),
1485			.hw.init = &(const struct clk_init_data) {
1486				.name = "ecpri_cc_eth_100g_mac_dbg_c2c_hm_ref_clk",
1487				.parent_hws = (const struct clk_hw*[]) {
1488					&ecpri_cc_eth_100g_mac_dbg_c2c_hm_ref_clk_src.clkr.hw,
1489				},
1490				.num_parents = 1,
1491				.flags = CLK_SET_RATE_PARENT,
1492				.ops = &clk_branch2_mem_ops,
1493			},
1494		},
1495	},
1496};
1497
1498static struct clk_mem_branch ecpri_cc_eth_100g_mac_fh0_hm_ref_clk = {
1499	.mem_enable_reg = 0x8404,
1500	.mem_ack_reg = 0x8418,
1501	.mem_enable_ack_mask = BIT(5),
1502	.branch = {
1503		.halt_reg = 0x802c,
1504		.halt_check = BRANCH_HALT,
1505		.clkr = {
1506			.enable_reg = 0x802c,
1507			.enable_mask = BIT(0),
1508			.hw.init = &(const struct clk_init_data) {
1509				.name = "ecpri_cc_eth_100g_mac_fh0_hm_ref_clk",
1510				.parent_hws = (const struct clk_hw*[]) {
1511					&ecpri_cc_eth_100g_mac_fh0_hm_ref_clk_src.clkr.hw,
1512				},
1513				.num_parents = 1,
1514				.flags = CLK_SET_RATE_PARENT,
1515				.ops = &clk_branch2_mem_ops,
1516			},
1517		},
1518	},
1519};
1520
1521static struct clk_mem_branch ecpri_cc_eth_100g_mac_fh1_hm_ref_clk = {
1522	.mem_enable_reg = 0x8408,
1523	.mem_ack_reg = 0x841c,
1524	.mem_enable_ack_mask = BIT(5),
1525	.branch = {
1526		.halt_reg = 0x8064,
1527		.halt_check = BRANCH_HALT,
1528		.clkr = {
1529			.enable_reg = 0x8064,
1530			.enable_mask = BIT(0),
1531			.hw.init = &(const struct clk_init_data) {
1532				.name = "ecpri_cc_eth_100g_mac_fh1_hm_ref_clk",
1533				.parent_hws = (const struct clk_hw*[]) {
1534					&ecpri_cc_eth_100g_mac_fh1_hm_ref_clk_src.clkr.hw,
1535				},
1536				.num_parents = 1,
1537				.flags = CLK_SET_RATE_PARENT,
1538				.ops = &clk_branch2_mem_ops,
1539			},
1540		},
1541	},
1542};
1543
1544static struct clk_mem_branch ecpri_cc_eth_100g_mac_fh2_hm_ref_clk = {
1545	.mem_enable_reg = 0x840c,
1546	.mem_ack_reg = 0x8420,
1547	.mem_enable_ack_mask = BIT(5),
1548	.branch = {
1549		.halt_reg = 0x809c,
1550		.halt_check = BRANCH_HALT,
1551		.clkr = {
1552			.enable_reg = 0x809c,
1553			.enable_mask = BIT(0),
1554			.hw.init = &(const struct clk_init_data) {
1555				.name = "ecpri_cc_eth_100g_mac_fh2_hm_ref_clk",
1556				.parent_hws = (const struct clk_hw*[]) {
1557					&ecpri_cc_eth_100g_mac_fh2_hm_ref_clk_src.clkr.hw,
1558				},
1559				.num_parents = 1,
1560				.flags = CLK_SET_RATE_PARENT,
1561				.ops = &clk_branch2_mem_ops,
1562			},
1563		},
1564	},
1565};
1566
1567static struct clk_branch ecpri_cc_eth_dbg_nfapi_axi_clk = {
1568	.halt_reg = 0x80f4,
1569	.halt_check = BRANCH_HALT,
1570	.clkr = {
1571		.enable_reg = 0x80f4,
1572		.enable_mask = BIT(0),
1573		.hw.init = &(const struct clk_init_data) {
1574			.name = "ecpri_cc_eth_dbg_nfapi_axi_clk",
1575			.parent_hws = (const struct clk_hw*[]) {
1576				&ecpri_cc_ecpri_dma_clk_src.clkr.hw,
1577			},
1578			.num_parents = 1,
1579			.flags = CLK_SET_RATE_PARENT,
1580			.ops = &clk_branch2_ops,
1581		},
1582	},
1583};
1584
1585static struct clk_branch ecpri_cc_eth_dbg_noc_axi_clk = {
1586	.halt_reg = 0x80fc,
1587	.halt_check = BRANCH_HALT,
1588	.clkr = {
1589		.enable_reg = 0x80fc,
1590		.enable_mask = BIT(0),
1591		.hw.init = &(const struct clk_init_data) {
1592			.name = "ecpri_cc_eth_dbg_noc_axi_clk",
1593			.parent_hws = (const struct clk_hw*[]) {
1594				&ecpri_cc_mss_emac_clk_src.clkr.hw,
1595			},
1596			.num_parents = 1,
1597			.flags = CLK_SET_RATE_PARENT,
1598			.ops = &clk_branch2_ops,
1599		},
1600	},
1601};
1602
1603static struct clk_mem_branch ecpri_cc_eth_phy_0_ock_sram_clk = {
1604	.mem_enable_reg = 0x8404,
1605	.mem_ack_reg = 0x8418,
1606	.mem_enable_ack_mask = BIT(6),
1607	.branch = {
1608		.halt_reg = 0xd140,
1609		.halt_check = BRANCH_HALT,
1610		.clkr = {
1611			.enable_reg = 0xd140,
1612			.enable_mask = BIT(0),
1613			.hw.init = &(const struct clk_init_data) {
1614				.name = "ecpri_cc_eth_phy_0_ock_sram_clk",
1615				.ops = &clk_branch2_mem_ops,
1616			},
1617		},
1618	},
1619};
1620
1621static struct clk_mem_branch ecpri_cc_eth_phy_1_ock_sram_clk = {
1622	.mem_enable_reg = 0x8408,
1623	.mem_ack_reg = 0x841C,
1624	.mem_enable_ack_mask = BIT(6),
1625	.branch = {
1626		.halt_reg = 0xd148,
1627		.halt_check = BRANCH_HALT,
1628		.clkr = {
1629			.enable_reg = 0xd148,
1630			.enable_mask = BIT(0),
1631			.hw.init = &(const struct clk_init_data) {
1632				.name = "ecpri_cc_eth_phy_1_ock_sram_clk",
1633				.ops = &clk_branch2_mem_ops,
1634			},
1635		},
1636	},
1637};
1638
1639static struct clk_mem_branch ecpri_cc_eth_phy_2_ock_sram_clk = {
1640	.mem_enable_reg = 0x840c,
1641	.mem_ack_reg = 0x8420,
1642	.mem_enable_ack_mask = BIT(6),
1643	.branch = {
1644		.halt_reg = 0xd150,
1645		.halt_check = BRANCH_HALT,
1646		.clkr = {
1647			.enable_reg = 0xd150,
1648			.enable_mask = BIT(0),
1649			.hw.init = &(const struct clk_init_data) {
1650				.name = "ecpri_cc_eth_phy_2_ock_sram_clk",
1651				.ops = &clk_branch2_mem_ops,
1652			},
1653		},
1654	},
1655};
1656
1657static struct clk_mem_branch ecpri_cc_eth_phy_3_ock_sram_clk = {
1658	.mem_enable_reg = 0x8410,
1659	.mem_ack_reg = 0x8424,
1660	.mem_enable_ack_mask = BIT(6),
1661	.branch = {
1662		.halt_reg = 0xd158,
1663		.halt_check = BRANCH_HALT,
1664		.clkr = {
1665			.enable_reg = 0xd158,
1666			.enable_mask = BIT(0),
1667			.hw.init = &(const struct clk_init_data) {
1668				.name = "ecpri_cc_eth_phy_3_ock_sram_clk",
1669				.ops = &clk_branch2_mem_ops,
1670			},
1671		},
1672	},
1673};
1674
1675static struct clk_mem_branch ecpri_cc_eth_phy_4_ock_sram_clk = {
1676	.mem_enable_reg = 0x8414,
1677	.mem_ack_reg = 0x8428,
1678	.mem_enable_ack_mask = BIT(6),
1679	.branch = {
1680		.halt_reg = 0xd160,
1681		.halt_check = BRANCH_HALT,
1682		.clkr = {
1683			.enable_reg = 0xd160,
1684			.enable_mask = BIT(0),
1685			.hw.init = &(const struct clk_init_data) {
1686				.name = "ecpri_cc_eth_phy_4_ock_sram_clk",
1687				.ops = &clk_branch2_mem_ops,
1688			},
1689		},
1690	},
1691};
1692
1693static struct clk_branch ecpri_cc_mss_emac_clk = {
1694	.halt_reg = 0xe008,
1695	.halt_check = BRANCH_HALT,
1696	.clkr = {
1697		.enable_reg = 0xe008,
1698		.enable_mask = BIT(0),
1699		.hw.init = &(const struct clk_init_data) {
1700			.name = "ecpri_cc_mss_emac_clk",
1701			.parent_hws = (const struct clk_hw*[]) {
1702				&ecpri_cc_mss_emac_clk_src.clkr.hw,
1703			},
1704			.num_parents = 1,
1705			.flags = CLK_SET_RATE_PARENT,
1706			.ops = &clk_branch2_ops,
1707		},
1708	},
1709};
1710
1711static struct clk_branch ecpri_cc_mss_oran_clk = {
1712	.halt_reg = 0xe004,
1713	.halt_check = BRANCH_HALT,
1714	.clkr = {
1715		.enable_reg = 0xe004,
1716		.enable_mask = BIT(0),
1717		.hw.init = &(const struct clk_init_data) {
1718			.name = "ecpri_cc_mss_oran_clk",
1719			.parent_hws = (const struct clk_hw*[]) {
1720				&ecpri_cc_ecpri_oran_clk_src.clkr.hw,
1721			},
1722			.num_parents = 1,
1723			.flags = CLK_SET_RATE_PARENT,
1724			.ops = &clk_branch2_ops,
1725		},
1726	},
1727};
1728
1729static struct clk_branch ecpri_cc_phy0_lane0_rx_clk = {
1730	.halt_reg = 0xd000,
1731	.halt_check = BRANCH_HALT,
1732	.clkr = {
1733		.enable_reg = 0xd000,
1734		.enable_mask = BIT(0),
1735		.hw.init = &(const struct clk_init_data) {
1736			.name = "ecpri_cc_phy0_lane0_rx_clk",
1737			.ops = &clk_branch2_ops,
1738		},
1739	},
1740};
1741
1742static struct clk_branch ecpri_cc_phy0_lane0_tx_clk = {
1743	.halt_reg = 0xd050,
1744	.halt_check = BRANCH_HALT,
1745	.clkr = {
1746		.enable_reg = 0xd050,
1747		.enable_mask = BIT(0),
1748		.hw.init = &(const struct clk_init_data) {
1749			.name = "ecpri_cc_phy0_lane0_tx_clk",
1750			.ops = &clk_branch2_ops,
1751		},
1752	},
1753};
1754
1755static struct clk_branch ecpri_cc_phy0_lane1_rx_clk = {
1756	.halt_reg = 0xd004,
1757	.halt_check = BRANCH_HALT,
1758	.clkr = {
1759		.enable_reg = 0xd004,
1760		.enable_mask = BIT(0),
1761		.hw.init = &(const struct clk_init_data) {
1762			.name = "ecpri_cc_phy0_lane1_rx_clk",
1763			.ops = &clk_branch2_ops,
1764		},
1765	},
1766};
1767
1768static struct clk_branch ecpri_cc_phy0_lane1_tx_clk = {
1769	.halt_reg = 0xd054,
1770	.halt_check = BRANCH_HALT,
1771	.clkr = {
1772		.enable_reg = 0xd054,
1773		.enable_mask = BIT(0),
1774		.hw.init = &(const struct clk_init_data) {
1775			.name = "ecpri_cc_phy0_lane1_tx_clk",
1776			.ops = &clk_branch2_ops,
1777		},
1778	},
1779};
1780
1781static struct clk_branch ecpri_cc_phy0_lane2_rx_clk = {
1782	.halt_reg = 0xd008,
1783	.halt_check = BRANCH_HALT,
1784	.clkr = {
1785		.enable_reg = 0xd008,
1786		.enable_mask = BIT(0),
1787		.hw.init = &(const struct clk_init_data) {
1788			.name = "ecpri_cc_phy0_lane2_rx_clk",
1789			.ops = &clk_branch2_ops,
1790		},
1791	},
1792};
1793
1794static struct clk_branch ecpri_cc_phy0_lane2_tx_clk = {
1795	.halt_reg = 0xd058,
1796	.halt_check = BRANCH_HALT,
1797	.clkr = {
1798		.enable_reg = 0xd058,
1799		.enable_mask = BIT(0),
1800		.hw.init = &(const struct clk_init_data) {
1801			.name = "ecpri_cc_phy0_lane2_tx_clk",
1802			.ops = &clk_branch2_ops,
1803		},
1804	},
1805};
1806
1807static struct clk_branch ecpri_cc_phy0_lane3_rx_clk = {
1808	.halt_reg = 0xd00c,
1809	.halt_check = BRANCH_HALT,
1810	.clkr = {
1811		.enable_reg = 0xd00c,
1812		.enable_mask = BIT(0),
1813		.hw.init = &(const struct clk_init_data) {
1814			.name = "ecpri_cc_phy0_lane3_rx_clk",
1815			.ops = &clk_branch2_ops,
1816		},
1817	},
1818};
1819
1820static struct clk_branch ecpri_cc_phy0_lane3_tx_clk = {
1821	.halt_reg = 0xd05c,
1822	.halt_check = BRANCH_HALT,
1823	.clkr = {
1824		.enable_reg = 0xd05c,
1825		.enable_mask = BIT(0),
1826		.hw.init = &(const struct clk_init_data) {
1827			.name = "ecpri_cc_phy0_lane3_tx_clk",
1828			.ops = &clk_branch2_ops,
1829		},
1830	},
1831};
1832
1833static struct clk_branch ecpri_cc_phy1_lane0_rx_clk = {
1834	.halt_reg = 0xd010,
1835	.halt_check = BRANCH_HALT,
1836	.clkr = {
1837		.enable_reg = 0xd010,
1838		.enable_mask = BIT(0),
1839		.hw.init = &(const struct clk_init_data) {
1840			.name = "ecpri_cc_phy1_lane0_rx_clk",
1841			.ops = &clk_branch2_ops,
1842		},
1843	},
1844};
1845
1846static struct clk_branch ecpri_cc_phy1_lane0_tx_clk = {
1847	.halt_reg = 0xd060,
1848	.halt_check = BRANCH_HALT,
1849	.clkr = {
1850		.enable_reg = 0xd060,
1851		.enable_mask = BIT(0),
1852		.hw.init = &(const struct clk_init_data) {
1853			.name = "ecpri_cc_phy1_lane0_tx_clk",
1854			.ops = &clk_branch2_ops,
1855		},
1856	},
1857};
1858
1859static struct clk_branch ecpri_cc_phy1_lane1_rx_clk = {
1860	.halt_reg = 0xd014,
1861	.halt_check = BRANCH_HALT,
1862	.clkr = {
1863		.enable_reg = 0xd014,
1864		.enable_mask = BIT(0),
1865		.hw.init = &(const struct clk_init_data) {
1866			.name = "ecpri_cc_phy1_lane1_rx_clk",
1867			.ops = &clk_branch2_ops,
1868		},
1869	},
1870};
1871
1872static struct clk_branch ecpri_cc_phy1_lane1_tx_clk = {
1873	.halt_reg = 0xd064,
1874	.halt_check = BRANCH_HALT,
1875	.clkr = {
1876		.enable_reg = 0xd064,
1877		.enable_mask = BIT(0),
1878		.hw.init = &(const struct clk_init_data) {
1879			.name = "ecpri_cc_phy1_lane1_tx_clk",
1880			.ops = &clk_branch2_ops,
1881		},
1882	},
1883};
1884
1885static struct clk_branch ecpri_cc_phy1_lane2_rx_clk = {
1886	.halt_reg = 0xd018,
1887	.halt_check = BRANCH_HALT,
1888	.clkr = {
1889		.enable_reg = 0xd018,
1890		.enable_mask = BIT(0),
1891		.hw.init = &(const struct clk_init_data) {
1892			.name = "ecpri_cc_phy1_lane2_rx_clk",
1893			.ops = &clk_branch2_ops,
1894		},
1895	},
1896};
1897
1898static struct clk_branch ecpri_cc_phy1_lane2_tx_clk = {
1899	.halt_reg = 0xd068,
1900	.halt_check = BRANCH_HALT,
1901	.clkr = {
1902		.enable_reg = 0xd068,
1903		.enable_mask = BIT(0),
1904		.hw.init = &(const struct clk_init_data) {
1905			.name = "ecpri_cc_phy1_lane2_tx_clk",
1906			.ops = &clk_branch2_ops,
1907		},
1908	},
1909};
1910
1911static struct clk_branch ecpri_cc_phy1_lane3_rx_clk = {
1912	.halt_reg = 0xd01c,
1913	.halt_check = BRANCH_HALT,
1914	.clkr = {
1915		.enable_reg = 0xd01c,
1916		.enable_mask = BIT(0),
1917		.hw.init = &(const struct clk_init_data) {
1918			.name = "ecpri_cc_phy1_lane3_rx_clk",
1919			.ops = &clk_branch2_ops,
1920		},
1921	},
1922};
1923
1924static struct clk_branch ecpri_cc_phy1_lane3_tx_clk = {
1925	.halt_reg = 0xd06c,
1926	.halt_check = BRANCH_HALT,
1927	.clkr = {
1928		.enable_reg = 0xd06c,
1929		.enable_mask = BIT(0),
1930		.hw.init = &(const struct clk_init_data) {
1931			.name = "ecpri_cc_phy1_lane3_tx_clk",
1932			.ops = &clk_branch2_ops,
1933		},
1934	},
1935};
1936
1937static struct clk_branch ecpri_cc_phy2_lane0_rx_clk = {
1938	.halt_reg = 0xd020,
1939	.halt_check = BRANCH_HALT,
1940	.clkr = {
1941		.enable_reg = 0xd020,
1942		.enable_mask = BIT(0),
1943		.hw.init = &(const struct clk_init_data) {
1944			.name = "ecpri_cc_phy2_lane0_rx_clk",
1945			.ops = &clk_branch2_ops,
1946		},
1947	},
1948};
1949
1950static struct clk_branch ecpri_cc_phy2_lane0_tx_clk = {
1951	.halt_reg = 0xd070,
1952	.halt_check = BRANCH_HALT,
1953	.clkr = {
1954		.enable_reg = 0xd070,
1955		.enable_mask = BIT(0),
1956		.hw.init = &(const struct clk_init_data) {
1957			.name = "ecpri_cc_phy2_lane0_tx_clk",
1958			.ops = &clk_branch2_ops,
1959		},
1960	},
1961};
1962
1963static struct clk_branch ecpri_cc_phy2_lane1_rx_clk = {
1964	.halt_reg = 0xd024,
1965	.halt_check = BRANCH_HALT,
1966	.clkr = {
1967		.enable_reg = 0xd024,
1968		.enable_mask = BIT(0),
1969		.hw.init = &(const struct clk_init_data) {
1970			.name = "ecpri_cc_phy2_lane1_rx_clk",
1971			.ops = &clk_branch2_ops,
1972		},
1973	},
1974};
1975
1976static struct clk_branch ecpri_cc_phy2_lane1_tx_clk = {
1977	.halt_reg = 0xd074,
1978	.halt_check = BRANCH_HALT,
1979	.clkr = {
1980		.enable_reg = 0xd074,
1981		.enable_mask = BIT(0),
1982		.hw.init = &(const struct clk_init_data) {
1983			.name = "ecpri_cc_phy2_lane1_tx_clk",
1984			.ops = &clk_branch2_ops,
1985		},
1986	},
1987};
1988
1989static struct clk_branch ecpri_cc_phy2_lane2_rx_clk = {
1990	.halt_reg = 0xd028,
1991	.halt_check = BRANCH_HALT,
1992	.clkr = {
1993		.enable_reg = 0xd028,
1994		.enable_mask = BIT(0),
1995		.hw.init = &(const struct clk_init_data) {
1996			.name = "ecpri_cc_phy2_lane2_rx_clk",
1997			.ops = &clk_branch2_ops,
1998		},
1999	},
2000};
2001
2002static struct clk_branch ecpri_cc_phy2_lane2_tx_clk = {
2003	.halt_reg = 0xd078,
2004	.halt_check = BRANCH_HALT,
2005	.clkr = {
2006		.enable_reg = 0xd078,
2007		.enable_mask = BIT(0),
2008		.hw.init = &(const struct clk_init_data) {
2009			.name = "ecpri_cc_phy2_lane2_tx_clk",
2010			.ops = &clk_branch2_ops,
2011		},
2012	},
2013};
2014
2015static struct clk_branch ecpri_cc_phy2_lane3_rx_clk = {
2016	.halt_reg = 0xd02c,
2017	.halt_check = BRANCH_HALT,
2018	.clkr = {
2019		.enable_reg = 0xd02c,
2020		.enable_mask = BIT(0),
2021		.hw.init = &(const struct clk_init_data) {
2022			.name = "ecpri_cc_phy2_lane3_rx_clk",
2023			.ops = &clk_branch2_ops,
2024		},
2025	},
2026};
2027
2028static struct clk_branch ecpri_cc_phy2_lane3_tx_clk = {
2029	.halt_reg = 0xd07c,
2030	.halt_check = BRANCH_HALT,
2031	.clkr = {
2032		.enable_reg = 0xd07c,
2033		.enable_mask = BIT(0),
2034		.hw.init = &(const struct clk_init_data) {
2035			.name = "ecpri_cc_phy2_lane3_tx_clk",
2036			.ops = &clk_branch2_ops,
2037		},
2038	},
2039};
2040
2041static struct clk_branch ecpri_cc_phy3_lane0_rx_clk = {
2042	.halt_reg = 0xd030,
2043	.halt_check = BRANCH_HALT,
2044	.clkr = {
2045		.enable_reg = 0xd030,
2046		.enable_mask = BIT(0),
2047		.hw.init = &(const struct clk_init_data) {
2048			.name = "ecpri_cc_phy3_lane0_rx_clk",
2049			.ops = &clk_branch2_ops,
2050		},
2051	},
2052};
2053
2054static struct clk_branch ecpri_cc_phy3_lane0_tx_clk = {
2055	.halt_reg = 0xd080,
2056	.halt_check = BRANCH_HALT,
2057	.clkr = {
2058		.enable_reg = 0xd080,
2059		.enable_mask = BIT(0),
2060		.hw.init = &(const struct clk_init_data) {
2061			.name = "ecpri_cc_phy3_lane0_tx_clk",
2062			.ops = &clk_branch2_ops,
2063		},
2064	},
2065};
2066
2067static struct clk_branch ecpri_cc_phy3_lane1_rx_clk = {
2068	.halt_reg = 0xd034,
2069	.halt_check = BRANCH_HALT,
2070	.clkr = {
2071		.enable_reg = 0xd034,
2072		.enable_mask = BIT(0),
2073		.hw.init = &(const struct clk_init_data) {
2074			.name = "ecpri_cc_phy3_lane1_rx_clk",
2075			.ops = &clk_branch2_ops,
2076		},
2077	},
2078};
2079
2080static struct clk_branch ecpri_cc_phy3_lane1_tx_clk = {
2081	.halt_reg = 0xd084,
2082	.halt_check = BRANCH_HALT,
2083	.clkr = {
2084		.enable_reg = 0xd084,
2085		.enable_mask = BIT(0),
2086		.hw.init = &(const struct clk_init_data) {
2087			.name = "ecpri_cc_phy3_lane1_tx_clk",
2088			.ops = &clk_branch2_ops,
2089		},
2090	},
2091};
2092
2093static struct clk_branch ecpri_cc_phy3_lane2_rx_clk = {
2094	.halt_reg = 0xd038,
2095	.halt_check = BRANCH_HALT,
2096	.clkr = {
2097		.enable_reg = 0xd038,
2098		.enable_mask = BIT(0),
2099		.hw.init = &(const struct clk_init_data) {
2100			.name = "ecpri_cc_phy3_lane2_rx_clk",
2101			.ops = &clk_branch2_ops,
2102		},
2103	},
2104};
2105
2106static struct clk_branch ecpri_cc_phy3_lane2_tx_clk = {
2107	.halt_reg = 0xd088,
2108	.halt_check = BRANCH_HALT,
2109	.clkr = {
2110		.enable_reg = 0xd088,
2111		.enable_mask = BIT(0),
2112		.hw.init = &(const struct clk_init_data) {
2113			.name = "ecpri_cc_phy3_lane2_tx_clk",
2114			.ops = &clk_branch2_ops,
2115		},
2116	},
2117};
2118
2119static struct clk_branch ecpri_cc_phy3_lane3_rx_clk = {
2120	.halt_reg = 0xd03c,
2121	.halt_check = BRANCH_HALT,
2122	.clkr = {
2123		.enable_reg = 0xd03c,
2124		.enable_mask = BIT(0),
2125		.hw.init = &(const struct clk_init_data) {
2126			.name = "ecpri_cc_phy3_lane3_rx_clk",
2127			.ops = &clk_branch2_ops,
2128		},
2129	},
2130};
2131
2132static struct clk_branch ecpri_cc_phy3_lane3_tx_clk = {
2133	.halt_reg = 0xd08c,
2134	.halt_check = BRANCH_HALT,
2135	.clkr = {
2136		.enable_reg = 0xd08c,
2137		.enable_mask = BIT(0),
2138		.hw.init = &(const struct clk_init_data) {
2139			.name = "ecpri_cc_phy3_lane3_tx_clk",
2140			.ops = &clk_branch2_ops,
2141		},
2142	},
2143};
2144
2145static struct clk_branch ecpri_cc_phy4_lane0_rx_clk = {
2146	.halt_reg = 0xd040,
2147	.halt_check = BRANCH_HALT,
2148	.clkr = {
2149		.enable_reg = 0xd040,
2150		.enable_mask = BIT(0),
2151		.hw.init = &(const struct clk_init_data) {
2152			.name = "ecpri_cc_phy4_lane0_rx_clk",
2153			.ops = &clk_branch2_ops,
2154		},
2155	},
2156};
2157
2158static struct clk_branch ecpri_cc_phy4_lane0_tx_clk = {
2159	.halt_reg = 0xd090,
2160	.halt_check = BRANCH_HALT,
2161	.clkr = {
2162		.enable_reg = 0xd090,
2163		.enable_mask = BIT(0),
2164		.hw.init = &(const struct clk_init_data) {
2165			.name = "ecpri_cc_phy4_lane0_tx_clk",
2166			.ops = &clk_branch2_ops,
2167		},
2168	},
2169};
2170
2171static struct clk_branch ecpri_cc_phy4_lane1_rx_clk = {
2172	.halt_reg = 0xd044,
2173	.halt_check = BRANCH_HALT,
2174	.clkr = {
2175		.enable_reg = 0xd044,
2176		.enable_mask = BIT(0),
2177		.hw.init = &(const struct clk_init_data) {
2178			.name = "ecpri_cc_phy4_lane1_rx_clk",
2179			.ops = &clk_branch2_ops,
2180		},
2181	},
2182};
2183
2184static struct clk_branch ecpri_cc_phy4_lane1_tx_clk = {
2185	.halt_reg = 0xd094,
2186	.halt_check = BRANCH_HALT,
2187	.clkr = {
2188		.enable_reg = 0xd094,
2189		.enable_mask = BIT(0),
2190		.hw.init = &(const struct clk_init_data) {
2191			.name = "ecpri_cc_phy4_lane1_tx_clk",
2192			.ops = &clk_branch2_ops,
2193		},
2194	},
2195};
2196
2197static struct clk_branch ecpri_cc_phy4_lane2_rx_clk = {
2198	.halt_reg = 0xd048,
2199	.halt_check = BRANCH_HALT,
2200	.clkr = {
2201		.enable_reg = 0xd048,
2202		.enable_mask = BIT(0),
2203		.hw.init = &(const struct clk_init_data) {
2204			.name = "ecpri_cc_phy4_lane2_rx_clk",
2205			.ops = &clk_branch2_ops,
2206		},
2207	},
2208};
2209
2210static struct clk_branch ecpri_cc_phy4_lane2_tx_clk = {
2211	.halt_reg = 0xd098,
2212	.halt_check = BRANCH_HALT,
2213	.clkr = {
2214		.enable_reg = 0xd098,
2215		.enable_mask = BIT(0),
2216		.hw.init = &(const struct clk_init_data) {
2217			.name = "ecpri_cc_phy4_lane2_tx_clk",
2218			.ops = &clk_branch2_ops,
2219		},
2220	},
2221};
2222
2223static struct clk_branch ecpri_cc_phy4_lane3_rx_clk = {
2224	.halt_reg = 0xd04c,
2225	.halt_check = BRANCH_HALT,
2226	.clkr = {
2227		.enable_reg = 0xd04c,
2228		.enable_mask = BIT(0),
2229		.hw.init = &(const struct clk_init_data) {
2230			.name = "ecpri_cc_phy4_lane3_rx_clk",
2231			.ops = &clk_branch2_ops,
2232		},
2233	},
2234};
2235
2236static struct clk_branch ecpri_cc_phy4_lane3_tx_clk = {
2237	.halt_reg = 0xd09c,
2238	.halt_check = BRANCH_HALT,
2239	.clkr = {
2240		.enable_reg = 0xd09c,
2241		.enable_mask = BIT(0),
2242		.hw.init = &(const struct clk_init_data) {
2243			.name = "ecpri_cc_phy4_lane3_tx_clk",
2244			.ops = &clk_branch2_ops,
2245		},
2246	},
2247};
2248
2249static struct clk_regmap *ecpri_cc_qdu1000_clocks[] = {
2250	[ECPRI_CC_ECPRI_CG_CLK] = &ecpri_cc_ecpri_cg_clk.clkr,
2251	[ECPRI_CC_ECPRI_CLK_SRC] = &ecpri_cc_ecpri_clk_src.clkr,
2252	[ECPRI_CC_ECPRI_DMA_CLK] = &ecpri_cc_ecpri_dma_clk.clkr,
2253	[ECPRI_CC_ECPRI_DMA_CLK_SRC] = &ecpri_cc_ecpri_dma_clk_src.clkr,
2254	[ECPRI_CC_ECPRI_DMA_NOC_CLK] = &ecpri_cc_ecpri_dma_noc_clk.clkr,
2255	[ECPRI_CC_ECPRI_FAST_CLK] = &ecpri_cc_ecpri_fast_clk.clkr,
2256	[ECPRI_CC_ECPRI_FAST_CLK_SRC] = &ecpri_cc_ecpri_fast_clk_src.clkr,
2257	[ECPRI_CC_ECPRI_FAST_DIV2_CLK] = &ecpri_cc_ecpri_fast_div2_clk.clkr,
2258	[ECPRI_CC_ECPRI_FAST_DIV2_CLK_SRC] = &ecpri_cc_ecpri_fast_div2_clk_src.clkr,
2259	[ECPRI_CC_ECPRI_FAST_DIV2_NOC_CLK] = &ecpri_cc_ecpri_fast_div2_noc_clk.clkr,
2260	[ECPRI_CC_ECPRI_FR_CLK] = &ecpri_cc_ecpri_fr_clk.clkr,
2261	[ECPRI_CC_ECPRI_ORAN_CLK_SRC] = &ecpri_cc_ecpri_oran_clk_src.clkr,
2262	[ECPRI_CC_ECPRI_ORAN_DIV2_CLK] = &ecpri_cc_ecpri_oran_div2_clk.clkr,
2263	[ECPRI_CC_ETH_100G_C2C0_HM_FF_CLK_SRC] = &ecpri_cc_eth_100g_c2c0_hm_ff_clk_src.clkr,
2264	[ECPRI_CC_ETH_100G_C2C0_UDP_FIFO_CLK] = &ecpri_cc_eth_100g_c2c0_udp_fifo_clk.clkr,
2265	[ECPRI_CC_ETH_100G_C2C1_UDP_FIFO_CLK] = &ecpri_cc_eth_100g_c2c1_udp_fifo_clk.clkr,
2266	[ECPRI_CC_ETH_100G_C2C_0_HM_FF_0_CLK] = &ecpri_cc_eth_100g_c2c_0_hm_ff_0_clk.branch.clkr,
2267	[ECPRI_CC_ETH_100G_C2C_0_HM_FF_1_CLK] = &ecpri_cc_eth_100g_c2c_0_hm_ff_1_clk.branch.clkr,
2268	[ECPRI_CC_ETH_100G_C2C_HM_FF_0_DIV_CLK_SRC] =
2269		&ecpri_cc_eth_100g_c2c_hm_ff_0_div_clk_src.clkr,
2270	[ECPRI_CC_ETH_100G_C2C_HM_FF_1_DIV_CLK_SRC] =
2271		&ecpri_cc_eth_100g_c2c_hm_ff_1_div_clk_src.clkr,
2272	[ECPRI_CC_ETH_100G_C2C_HM_MACSEC_CLK] = &ecpri_cc_eth_100g_c2c_hm_macsec_clk.branch.clkr,
2273	[ECPRI_CC_ETH_100G_C2C_HM_MACSEC_CLK_SRC] = &ecpri_cc_eth_100g_c2c_hm_macsec_clk_src.clkr,
2274	[ECPRI_CC_ETH_100G_DBG_C2C_HM_FF_0_CLK] =
2275		&ecpri_cc_eth_100g_dbg_c2c_hm_ff_0_clk.branch.clkr,
2276	[ECPRI_CC_ETH_100G_DBG_C2C_HM_FF_0_DIV_CLK_SRC] =
2277		&ecpri_cc_eth_100g_dbg_c2c_hm_ff_0_div_clk_src.clkr,
2278	[ECPRI_CC_ETH_100G_DBG_C2C_HM_FF_1_CLK] =
2279		&ecpri_cc_eth_100g_dbg_c2c_hm_ff_1_clk.branch.clkr,
2280	[ECPRI_CC_ETH_100G_DBG_C2C_HM_FF_1_DIV_CLK_SRC] =
2281		&ecpri_cc_eth_100g_dbg_c2c_hm_ff_1_div_clk_src.clkr,
2282	[ECPRI_CC_ETH_100G_DBG_C2C_HM_FF_CLK_SRC] = &ecpri_cc_eth_100g_dbg_c2c_hm_ff_clk_src.clkr,
2283	[ECPRI_CC_ETH_100G_DBG_C2C_UDP_FIFO_CLK] = &ecpri_cc_eth_100g_dbg_c2c_udp_fifo_clk.clkr,
2284	[ECPRI_CC_ETH_100G_FH0_HM_FF_CLK_SRC] = &ecpri_cc_eth_100g_fh0_hm_ff_clk_src.clkr,
2285	[ECPRI_CC_ETH_100G_FH0_MACSEC_CLK_SRC] = &ecpri_cc_eth_100g_fh0_macsec_clk_src.clkr,
2286	[ECPRI_CC_ETH_100G_FH1_HM_FF_CLK_SRC] = &ecpri_cc_eth_100g_fh1_hm_ff_clk_src.clkr,
2287	[ECPRI_CC_ETH_100G_FH1_MACSEC_CLK_SRC] = &ecpri_cc_eth_100g_fh1_macsec_clk_src.clkr,
2288	[ECPRI_CC_ETH_100G_FH2_HM_FF_CLK_SRC] = &ecpri_cc_eth_100g_fh2_hm_ff_clk_src.clkr,
2289	[ECPRI_CC_ETH_100G_FH2_MACSEC_CLK_SRC] = &ecpri_cc_eth_100g_fh2_macsec_clk_src.clkr,
2290	[ECPRI_CC_ETH_100G_FH_0_HM_FF_0_CLK] = &ecpri_cc_eth_100g_fh_0_hm_ff_0_clk.branch.clkr,
2291	[ECPRI_CC_ETH_100G_FH_0_HM_FF_0_DIV_CLK_SRC] =
2292		&ecpri_cc_eth_100g_fh_0_hm_ff_0_div_clk_src.clkr,
2293	[ECPRI_CC_ETH_100G_FH_0_HM_FF_1_CLK] = &ecpri_cc_eth_100g_fh_0_hm_ff_1_clk.branch.clkr,
2294	[ECPRI_CC_ETH_100G_FH_0_HM_FF_1_DIV_CLK_SRC] =
2295		&ecpri_cc_eth_100g_fh_0_hm_ff_1_div_clk_src.clkr,
2296	[ECPRI_CC_ETH_100G_FH_0_HM_FF_2_CLK] = &ecpri_cc_eth_100g_fh_0_hm_ff_2_clk.branch.clkr,
2297	[ECPRI_CC_ETH_100G_FH_0_HM_FF_2_DIV_CLK_SRC] =
2298		&ecpri_cc_eth_100g_fh_0_hm_ff_2_div_clk_src.clkr,
2299	[ECPRI_CC_ETH_100G_FH_0_HM_FF_3_CLK] = &ecpri_cc_eth_100g_fh_0_hm_ff_3_clk.branch.clkr,
2300	[ECPRI_CC_ETH_100G_FH_0_HM_FF_3_DIV_CLK_SRC] =
2301		&ecpri_cc_eth_100g_fh_0_hm_ff_3_div_clk_src.clkr,
2302	[ECPRI_CC_ETH_100G_FH_0_UDP_FIFO_CLK] = &ecpri_cc_eth_100g_fh_0_udp_fifo_clk.clkr,
2303	[ECPRI_CC_ETH_100G_FH_1_HM_FF_0_CLK] = &ecpri_cc_eth_100g_fh_1_hm_ff_0_clk.branch.clkr,
2304	[ECPRI_CC_ETH_100G_FH_1_HM_FF_0_DIV_CLK_SRC] =
2305		&ecpri_cc_eth_100g_fh_1_hm_ff_0_div_clk_src.clkr,
2306	[ECPRI_CC_ETH_100G_FH_1_HM_FF_1_CLK] = &ecpri_cc_eth_100g_fh_1_hm_ff_1_clk.branch.clkr,
2307	[ECPRI_CC_ETH_100G_FH_1_HM_FF_1_DIV_CLK_SRC] =
2308		&ecpri_cc_eth_100g_fh_1_hm_ff_1_div_clk_src.clkr,
2309	[ECPRI_CC_ETH_100G_FH_1_HM_FF_2_CLK] = &ecpri_cc_eth_100g_fh_1_hm_ff_2_clk.branch.clkr,
2310	[ECPRI_CC_ETH_100G_FH_1_HM_FF_2_DIV_CLK_SRC] =
2311		&ecpri_cc_eth_100g_fh_1_hm_ff_2_div_clk_src.clkr,
2312	[ECPRI_CC_ETH_100G_FH_1_HM_FF_3_CLK] = &ecpri_cc_eth_100g_fh_1_hm_ff_3_clk.branch.clkr,
2313	[ECPRI_CC_ETH_100G_FH_1_HM_FF_3_DIV_CLK_SRC] =
2314		&ecpri_cc_eth_100g_fh_1_hm_ff_3_div_clk_src.clkr,
2315	[ECPRI_CC_ETH_100G_FH_1_UDP_FIFO_CLK] = &ecpri_cc_eth_100g_fh_1_udp_fifo_clk.clkr,
2316	[ECPRI_CC_ETH_100G_FH_2_HM_FF_0_CLK] = &ecpri_cc_eth_100g_fh_2_hm_ff_0_clk.branch.clkr,
2317	[ECPRI_CC_ETH_100G_FH_2_HM_FF_0_DIV_CLK_SRC] =
2318		&ecpri_cc_eth_100g_fh_2_hm_ff_0_div_clk_src.clkr,
2319	[ECPRI_CC_ETH_100G_FH_2_HM_FF_1_CLK] = &ecpri_cc_eth_100g_fh_2_hm_ff_1_clk.branch.clkr,
2320	[ECPRI_CC_ETH_100G_FH_2_HM_FF_1_DIV_CLK_SRC] =
2321		&ecpri_cc_eth_100g_fh_2_hm_ff_1_div_clk_src.clkr,
2322	[ECPRI_CC_ETH_100G_FH_2_HM_FF_2_CLK] = &ecpri_cc_eth_100g_fh_2_hm_ff_2_clk.branch.clkr,
2323	[ECPRI_CC_ETH_100G_FH_2_HM_FF_2_DIV_CLK_SRC] =
2324		&ecpri_cc_eth_100g_fh_2_hm_ff_2_div_clk_src.clkr,
2325	[ECPRI_CC_ETH_100G_FH_2_HM_FF_3_CLK] = &ecpri_cc_eth_100g_fh_2_hm_ff_3_clk.branch.clkr,
2326	[ECPRI_CC_ETH_100G_FH_2_HM_FF_3_DIV_CLK_SRC] =
2327		&ecpri_cc_eth_100g_fh_2_hm_ff_3_div_clk_src.clkr,
2328	[ECPRI_CC_ETH_100G_FH_2_UDP_FIFO_CLK] = &ecpri_cc_eth_100g_fh_2_udp_fifo_clk.clkr,
2329	[ECPRI_CC_ETH_100G_FH_MACSEC_0_CLK] = &ecpri_cc_eth_100g_fh_macsec_0_clk.branch.clkr,
2330	[ECPRI_CC_ETH_100G_FH_MACSEC_1_CLK] = &ecpri_cc_eth_100g_fh_macsec_1_clk.branch.clkr,
2331	[ECPRI_CC_ETH_100G_FH_MACSEC_2_CLK] = &ecpri_cc_eth_100g_fh_macsec_2_clk.branch.clkr,
2332	[ECPRI_CC_ETH_100G_MAC_C2C_HM_REF_CLK] = &ecpri_cc_eth_100g_mac_c2c_hm_ref_clk.branch.clkr,
2333	[ECPRI_CC_ETH_100G_MAC_C2C_HM_REF_CLK_SRC] = &ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src.clkr,
2334	[ECPRI_CC_ETH_100G_MAC_DBG_C2C_HM_REF_CLK] =
2335		&ecpri_cc_eth_100g_mac_dbg_c2c_hm_ref_clk.branch.clkr,
2336	[ECPRI_CC_ETH_100G_MAC_DBG_C2C_HM_REF_CLK_SRC] =
2337		&ecpri_cc_eth_100g_mac_dbg_c2c_hm_ref_clk_src.clkr,
2338	[ECPRI_CC_ETH_100G_MAC_FH0_HM_REF_CLK] = &ecpri_cc_eth_100g_mac_fh0_hm_ref_clk.branch.clkr,
2339	[ECPRI_CC_ETH_100G_MAC_FH0_HM_REF_CLK_SRC] = &ecpri_cc_eth_100g_mac_fh0_hm_ref_clk_src.clkr,
2340	[ECPRI_CC_ETH_100G_MAC_FH1_HM_REF_CLK] = &ecpri_cc_eth_100g_mac_fh1_hm_ref_clk.branch.clkr,
2341	[ECPRI_CC_ETH_100G_MAC_FH1_HM_REF_CLK_SRC] = &ecpri_cc_eth_100g_mac_fh1_hm_ref_clk_src.clkr,
2342	[ECPRI_CC_ETH_100G_MAC_FH2_HM_REF_CLK] = &ecpri_cc_eth_100g_mac_fh2_hm_ref_clk.branch.clkr,
2343	[ECPRI_CC_ETH_100G_MAC_FH2_HM_REF_CLK_SRC] = &ecpri_cc_eth_100g_mac_fh2_hm_ref_clk_src.clkr,
2344	[ECPRI_CC_ETH_DBG_NFAPI_AXI_CLK] = &ecpri_cc_eth_dbg_nfapi_axi_clk.clkr,
2345	[ECPRI_CC_ETH_DBG_NOC_AXI_CLK] = &ecpri_cc_eth_dbg_noc_axi_clk.clkr,
2346	[ECPRI_CC_ETH_PHY_0_OCK_SRAM_CLK] = &ecpri_cc_eth_phy_0_ock_sram_clk.branch.clkr,
2347	[ECPRI_CC_ETH_PHY_1_OCK_SRAM_CLK] = &ecpri_cc_eth_phy_1_ock_sram_clk.branch.clkr,
2348	[ECPRI_CC_ETH_PHY_2_OCK_SRAM_CLK] = &ecpri_cc_eth_phy_2_ock_sram_clk.branch.clkr,
2349	[ECPRI_CC_ETH_PHY_3_OCK_SRAM_CLK] = &ecpri_cc_eth_phy_3_ock_sram_clk.branch.clkr,
2350	[ECPRI_CC_ETH_PHY_4_OCK_SRAM_CLK] = &ecpri_cc_eth_phy_4_ock_sram_clk.branch.clkr,
2351	[ECPRI_CC_MSS_EMAC_CLK] = &ecpri_cc_mss_emac_clk.clkr,
2352	[ECPRI_CC_MSS_EMAC_CLK_SRC] = &ecpri_cc_mss_emac_clk_src.clkr,
2353	[ECPRI_CC_MSS_ORAN_CLK] = &ecpri_cc_mss_oran_clk.clkr,
2354	[ECPRI_CC_PHY0_LANE0_RX_CLK] = &ecpri_cc_phy0_lane0_rx_clk.clkr,
2355	[ECPRI_CC_PHY0_LANE0_TX_CLK] = &ecpri_cc_phy0_lane0_tx_clk.clkr,
2356	[ECPRI_CC_PHY0_LANE1_RX_CLK] = &ecpri_cc_phy0_lane1_rx_clk.clkr,
2357	[ECPRI_CC_PHY0_LANE1_TX_CLK] = &ecpri_cc_phy0_lane1_tx_clk.clkr,
2358	[ECPRI_CC_PHY0_LANE2_RX_CLK] = &ecpri_cc_phy0_lane2_rx_clk.clkr,
2359	[ECPRI_CC_PHY0_LANE2_TX_CLK] = &ecpri_cc_phy0_lane2_tx_clk.clkr,
2360	[ECPRI_CC_PHY0_LANE3_RX_CLK] = &ecpri_cc_phy0_lane3_rx_clk.clkr,
2361	[ECPRI_CC_PHY0_LANE3_TX_CLK] = &ecpri_cc_phy0_lane3_tx_clk.clkr,
2362	[ECPRI_CC_PHY1_LANE0_RX_CLK] = &ecpri_cc_phy1_lane0_rx_clk.clkr,
2363	[ECPRI_CC_PHY1_LANE0_TX_CLK] = &ecpri_cc_phy1_lane0_tx_clk.clkr,
2364	[ECPRI_CC_PHY1_LANE1_RX_CLK] = &ecpri_cc_phy1_lane1_rx_clk.clkr,
2365	[ECPRI_CC_PHY1_LANE1_TX_CLK] = &ecpri_cc_phy1_lane1_tx_clk.clkr,
2366	[ECPRI_CC_PHY1_LANE2_RX_CLK] = &ecpri_cc_phy1_lane2_rx_clk.clkr,
2367	[ECPRI_CC_PHY1_LANE2_TX_CLK] = &ecpri_cc_phy1_lane2_tx_clk.clkr,
2368	[ECPRI_CC_PHY1_LANE3_RX_CLK] = &ecpri_cc_phy1_lane3_rx_clk.clkr,
2369	[ECPRI_CC_PHY1_LANE3_TX_CLK] = &ecpri_cc_phy1_lane3_tx_clk.clkr,
2370	[ECPRI_CC_PHY2_LANE0_RX_CLK] = &ecpri_cc_phy2_lane0_rx_clk.clkr,
2371	[ECPRI_CC_PHY2_LANE0_TX_CLK] = &ecpri_cc_phy2_lane0_tx_clk.clkr,
2372	[ECPRI_CC_PHY2_LANE1_RX_CLK] = &ecpri_cc_phy2_lane1_rx_clk.clkr,
2373	[ECPRI_CC_PHY2_LANE1_TX_CLK] = &ecpri_cc_phy2_lane1_tx_clk.clkr,
2374	[ECPRI_CC_PHY2_LANE2_RX_CLK] = &ecpri_cc_phy2_lane2_rx_clk.clkr,
2375	[ECPRI_CC_PHY2_LANE2_TX_CLK] = &ecpri_cc_phy2_lane2_tx_clk.clkr,
2376	[ECPRI_CC_PHY2_LANE3_RX_CLK] = &ecpri_cc_phy2_lane3_rx_clk.clkr,
2377	[ECPRI_CC_PHY2_LANE3_TX_CLK] = &ecpri_cc_phy2_lane3_tx_clk.clkr,
2378	[ECPRI_CC_PHY3_LANE0_RX_CLK] = &ecpri_cc_phy3_lane0_rx_clk.clkr,
2379	[ECPRI_CC_PHY3_LANE0_TX_CLK] = &ecpri_cc_phy3_lane0_tx_clk.clkr,
2380	[ECPRI_CC_PHY3_LANE1_RX_CLK] = &ecpri_cc_phy3_lane1_rx_clk.clkr,
2381	[ECPRI_CC_PHY3_LANE1_TX_CLK] = &ecpri_cc_phy3_lane1_tx_clk.clkr,
2382	[ECPRI_CC_PHY3_LANE2_RX_CLK] = &ecpri_cc_phy3_lane2_rx_clk.clkr,
2383	[ECPRI_CC_PHY3_LANE2_TX_CLK] = &ecpri_cc_phy3_lane2_tx_clk.clkr,
2384	[ECPRI_CC_PHY3_LANE3_RX_CLK] = &ecpri_cc_phy3_lane3_rx_clk.clkr,
2385	[ECPRI_CC_PHY3_LANE3_TX_CLK] = &ecpri_cc_phy3_lane3_tx_clk.clkr,
2386	[ECPRI_CC_PHY4_LANE0_RX_CLK] = &ecpri_cc_phy4_lane0_rx_clk.clkr,
2387	[ECPRI_CC_PHY4_LANE0_TX_CLK] = &ecpri_cc_phy4_lane0_tx_clk.clkr,
2388	[ECPRI_CC_PHY4_LANE1_RX_CLK] = &ecpri_cc_phy4_lane1_rx_clk.clkr,
2389	[ECPRI_CC_PHY4_LANE1_TX_CLK] = &ecpri_cc_phy4_lane1_tx_clk.clkr,
2390	[ECPRI_CC_PHY4_LANE2_RX_CLK] = &ecpri_cc_phy4_lane2_rx_clk.clkr,
2391	[ECPRI_CC_PHY4_LANE2_TX_CLK] = &ecpri_cc_phy4_lane2_tx_clk.clkr,
2392	[ECPRI_CC_PHY4_LANE3_RX_CLK] = &ecpri_cc_phy4_lane3_rx_clk.clkr,
2393	[ECPRI_CC_PHY4_LANE3_TX_CLK] = &ecpri_cc_phy4_lane3_tx_clk.clkr,
2394	[ECPRI_CC_PLL0] = &ecpri_cc_pll0.clkr,
2395	[ECPRI_CC_PLL1] = &ecpri_cc_pll1.clkr,
2396};
2397
2398static const struct qcom_reset_map ecpri_cc_qdu1000_resets[] = {
2399	[ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_ECPRI_SS_BCR] = { 0x9000 },
2400	[ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_ETH_C2C_BCR] = { 0x80a8 },
2401	[ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_ETH_FH0_BCR] = { 0x8000 },
2402	[ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_ETH_FH1_BCR] = { 0x8038 },
2403	[ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_ETH_FH2_BCR] = { 0x8070 },
2404	[ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_ETH_WRAPPER_TOP_BCR] = { 0x8104 },
2405	[ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_MODEM_BCR] = { 0xe000 },
2406	[ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_NOC_BCR] = { 0xf000 },
2407};
2408
2409static const struct regmap_config ecpri_cc_qdu1000_regmap_config = {
2410	.reg_bits = 32,
2411	.reg_stride = 4,
2412	.val_bits = 32,
2413	.max_register = 0x31bf0,
2414	.fast_io = true,
2415};
2416
2417static const struct qcom_cc_desc ecpri_cc_qdu1000_desc = {
2418	.config = &ecpri_cc_qdu1000_regmap_config,
2419	.clks = ecpri_cc_qdu1000_clocks,
2420	.num_clks = ARRAY_SIZE(ecpri_cc_qdu1000_clocks),
2421	.resets = ecpri_cc_qdu1000_resets,
2422	.num_resets = ARRAY_SIZE(ecpri_cc_qdu1000_resets),
2423};
2424
2425static const struct of_device_id ecpri_cc_qdu1000_match_table[] = {
2426	{ .compatible = "qcom,qdu1000-ecpricc" },
2427	{ }
2428};
2429MODULE_DEVICE_TABLE(of, ecpri_cc_qdu1000_match_table);
2430
2431static int ecpri_cc_qdu1000_probe(struct platform_device *pdev)
2432{
2433	struct regmap *regmap;
2434
2435	regmap = qcom_cc_map(pdev, &ecpri_cc_qdu1000_desc);
2436	if (IS_ERR(regmap))
2437		return PTR_ERR(regmap);
2438
2439	clk_lucid_evo_pll_configure(&ecpri_cc_pll0, regmap, &ecpri_cc_pll0_config);
2440	clk_lucid_evo_pll_configure(&ecpri_cc_pll1, regmap, &ecpri_cc_pll1_config);
2441
2442	return qcom_cc_really_probe(&pdev->dev, &ecpri_cc_qdu1000_desc, regmap);
2443}
2444
2445static struct platform_driver ecpri_cc_qdu1000_driver = {
2446	.probe = ecpri_cc_qdu1000_probe,
2447	.driver = {
2448		.name = "ecpri_cc-qdu1000",
2449		.of_match_table = ecpri_cc_qdu1000_match_table,
2450	},
2451};
2452
2453module_platform_driver(ecpri_cc_qdu1000_driver);
2454
2455MODULE_DESCRIPTION("QTI ECPRICC QDU1000 Driver");
2456MODULE_LICENSE("GPL");