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