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