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