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