xref: /linux/drivers/clk/qcom/ecpricc-qdu1000.c (revision 55d0969c451159cff86949b38c39171cab962069)
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 
23 enum {
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 
33 enum {
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 
45 static const struct pll_vco lucid_evo_vco[] = {
46 	{ 249600000, 2020000000, 0 },
47 };
48 
49 /* 700 MHz configuration */
50 static 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 
60 static 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 */
80 static 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 
90 static 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 
109 static 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 
119 static 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 
129 static 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 
139 static 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 
149 static 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 
158 static 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 
167 static 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 
172 static 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 
186 static 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 
192 static 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 
206 static 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 
212 static 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 
226 static 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 
231 static 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 
245 static 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 
252 static 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 
266 static 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 
272 static 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 
286 static 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 
300 static 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 
314 static 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 
328 static 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 
342 static 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 
347 static 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 
361 static 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 
375 static 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 
389 static 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 
396 static 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 
410 static 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 
424 static 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 
438 static 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 
452 static 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 
466 static 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 
471 static 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 
485 static 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 
500 static 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 
515 static 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 
530 static 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 
545 static 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 
560 static 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 
575 static 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 
590 static 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 
605 static 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 
620 static 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 
635 static 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 
650 static 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 
665 static 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 
680 static 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 
695 static 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 
710 static 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 
725 static 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 
740 static 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 
758 static 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 
776 static 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 
794 static 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 
812 static 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 
830 static 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 
848 static 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 
866 static 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 
884 static 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 
902 static 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 
920 static 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 
943 static 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 
966 static 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 
989 static 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 
1012 static 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 
1035 static 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 
1053 static 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 
1076 static 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 
1099 static 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 
1122 static 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 
1145 static 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 
1163 static 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 
1186 static 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 
1209 static 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 
1232 static 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 
1255 static 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 
1273 static 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 
1296 static 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 
1319 static 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 
1342 static 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 
1365 static 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 
1383 static 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 
1406 static 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 
1429 static 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 
1452 static 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 
1475 static 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 
1498 static 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 
1521 static 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 
1544 static 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 
1567 static 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 
1585 static 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 
1603 static 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 
1621 static 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 
1639 static 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 
1657 static 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 
1675 static 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 
1693 static 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 
1711 static 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 
1729 static 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 
1742 static 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 
1755 static 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 
1768 static 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 
1781 static 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 
1794 static 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 
1807 static 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 
1820 static 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 
1833 static 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 
1846 static 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 
1859 static 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 
1872 static 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 
1885 static 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 
1898 static 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 
1911 static 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 
1924 static 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 
1937 static 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 
1950 static 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 
1963 static 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 
1976 static 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 
1989 static 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 
2002 static 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 
2015 static 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 
2028 static 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 
2041 static 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 
2054 static 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 
2067 static 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 
2080 static 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 
2093 static 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 
2106 static 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 
2119 static 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 
2132 static 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 
2145 static 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 
2158 static 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 
2171 static 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 
2184 static 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 
2197 static 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 
2210 static 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 
2223 static 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 
2236 static 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 
2249 static 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 
2398 static 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 
2409 static 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 
2417 static 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 
2425 static const struct of_device_id ecpri_cc_qdu1000_match_table[] = {
2426 	{ .compatible = "qcom,qdu1000-ecpricc" },
2427 	{ }
2428 };
2429 MODULE_DEVICE_TABLE(of, ecpri_cc_qdu1000_match_table);
2430 
2431 static 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 
2445 static 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 
2453 module_platform_driver(ecpri_cc_qdu1000_driver);
2454 
2455 MODULE_DESCRIPTION("QTI ECPRICC QDU1000 Driver");
2456 MODULE_LICENSE("GPL");
2457