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