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