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