1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
4  * Copyright (c) 2020-2021, Linaro Ltd.
5  */
6 
7 #include <linux/bitops.h>
8 #include <linux/clk-provider.h>
9 #include <linux/err.h>
10 #include <linux/kernel.h>
11 #include <linux/module.h>
12 #include <linux/of.h>
13 #include <linux/of_device.h>
14 #include <linux/platform_device.h>
15 #include <linux/regmap.h>
16 #include <linux/reset-controller.h>
17 
18 #include <dt-bindings/clock/qcom,gcc-sc8180x.h>
19 
20 #include "common.h"
21 #include "clk-alpha-pll.h"
22 #include "clk-branch.h"
23 #include "clk-pll.h"
24 #include "clk-rcg.h"
25 #include "clk-regmap.h"
26 #include "gdsc.h"
27 #include "reset.h"
28 
29 enum {
30 	P_AUD_REF_CLK,
31 	P_BI_TCXO,
32 	P_GPLL0_OUT_EVEN,
33 	P_GPLL0_OUT_MAIN,
34 	P_GPLL1_OUT_MAIN,
35 	P_GPLL2_OUT_MAIN,
36 	P_GPLL4_OUT_MAIN,
37 	P_GPLL5_OUT_MAIN,
38 	P_GPLL7_OUT_MAIN,
39 	P_GPLL9_OUT_MAIN,
40 	P_SLEEP_CLK,
41 };
42 
43 static struct pll_vco trion_vco[] = {
44 	{ 249600000, 2000000000, 0 },
45 };
46 
47 static struct clk_alpha_pll gpll0 = {
48 	.offset = 0x0,
49 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
50 	.vco_table = trion_vco,
51 	.num_vco = ARRAY_SIZE(trion_vco),
52 	.clkr = {
53 		.enable_reg = 0x52000,
54 		.enable_mask = BIT(0),
55 		.hw.init = &(struct clk_init_data){
56 			.name = "gpll0",
57 			.parent_data = &(const struct clk_parent_data){
58 				.fw_name = "bi_tcxo",
59 			},
60 			.num_parents = 1,
61 			.ops = &clk_alpha_pll_fixed_trion_ops,
62 		},
63 	},
64 };
65 
66 static const struct clk_div_table post_div_table_trion_even[] = {
67 	{ 0x0, 1 },
68 	{ 0x1, 2 },
69 	{ 0x3, 4 },
70 	{ 0x7, 8 },
71 	{ }
72 };
73 
74 static struct clk_alpha_pll_postdiv gpll0_out_even = {
75 	.offset = 0x0,
76 	.post_div_shift = 8,
77 	.post_div_table = post_div_table_trion_even,
78 	.num_post_div = ARRAY_SIZE(post_div_table_trion_even),
79 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
80 	.width = 4,
81 	.clkr.hw.init = &(struct clk_init_data){
82 		.name = "gpll0_out_even",
83 		.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
84 		.num_parents = 1,
85 		.ops = &clk_alpha_pll_postdiv_trion_ops,
86 	},
87 };
88 
89 static struct clk_alpha_pll gpll1 = {
90 	.offset = 0x1000,
91 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
92 	.vco_table = trion_vco,
93 	.num_vco = ARRAY_SIZE(trion_vco),
94 	.clkr = {
95 		.enable_reg = 0x52000,
96 		.enable_mask = BIT(1),
97 		.hw.init = &(struct clk_init_data){
98 			.name = "gpll1",
99 			.parent_data = &(const struct clk_parent_data){
100 				.fw_name = "bi_tcxo",
101 			},
102 			.num_parents = 1,
103 			.ops = &clk_alpha_pll_fixed_trion_ops,
104 		},
105 	},
106 };
107 
108 static struct clk_alpha_pll gpll4 = {
109 	.offset = 0x76000,
110 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
111 	.vco_table = trion_vco,
112 	.num_vco = ARRAY_SIZE(trion_vco),
113 	.clkr = {
114 		.enable_reg = 0x52000,
115 		.enable_mask = BIT(4),
116 		.hw.init = &(struct clk_init_data){
117 			.name = "gpll4",
118 			.parent_data = &(const struct clk_parent_data){
119 				.fw_name = "bi_tcxo",
120 			},
121 			.num_parents = 1,
122 			.ops = &clk_alpha_pll_fixed_trion_ops,
123 		},
124 	},
125 };
126 
127 static struct clk_alpha_pll gpll7 = {
128 	.offset = 0x1a000,
129 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
130 	.vco_table = trion_vco,
131 	.num_vco = ARRAY_SIZE(trion_vco),
132 	.clkr = {
133 		.enable_reg = 0x52000,
134 		.enable_mask = BIT(7),
135 		.hw.init = &(struct clk_init_data){
136 			.name = "gpll7",
137 			.parent_data = &(const struct clk_parent_data){
138 				.fw_name = "bi_tcxo",
139 			},
140 			.num_parents = 1,
141 			.ops = &clk_alpha_pll_fixed_trion_ops,
142 		},
143 	},
144 };
145 
146 static const struct parent_map gcc_parent_map_0[] = {
147 	{ P_BI_TCXO, 0 },
148 	{ P_GPLL0_OUT_MAIN, 1 },
149 	{ P_GPLL0_OUT_EVEN, 6 },
150 };
151 
152 static const struct clk_parent_data gcc_parents_0[] = {
153 	{ .fw_name = "bi_tcxo" },
154 	{ .hw = &gpll0.clkr.hw },
155 	{ .hw = &gpll0_out_even.clkr.hw },
156 };
157 
158 static const struct parent_map gcc_parent_map_1[] = {
159 	{ P_BI_TCXO, 0 },
160 	{ P_GPLL0_OUT_MAIN, 1 },
161 	{ P_SLEEP_CLK, 5 },
162 	{ P_GPLL0_OUT_EVEN, 6 },
163 };
164 
165 static const struct clk_parent_data gcc_parents_1[] = {
166 	{ .fw_name = "bi_tcxo", },
167 	{ .hw = &gpll0.clkr.hw },
168 	{ .fw_name = "sleep_clk", },
169 	{ .hw = &gpll0_out_even.clkr.hw },
170 };
171 
172 static const struct parent_map gcc_parent_map_2[] = {
173 	{ P_BI_TCXO, 0 },
174 	{ P_SLEEP_CLK, 5 },
175 };
176 
177 static const struct clk_parent_data gcc_parents_2[] = {
178 	{ .fw_name = "bi_tcxo", },
179 	{ .fw_name = "sleep_clk", },
180 };
181 
182 static const struct parent_map gcc_parent_map_3[] = {
183 	{ P_BI_TCXO, 0 },
184 	{ P_GPLL0_OUT_MAIN, 1 },
185 	{ P_GPLL2_OUT_MAIN, 2 },
186 	{ P_GPLL5_OUT_MAIN, 3 },
187 	{ P_GPLL1_OUT_MAIN, 4 },
188 	{ P_GPLL4_OUT_MAIN, 5 },
189 	{ P_GPLL0_OUT_EVEN, 6 },
190 };
191 
192 static const struct clk_parent_data gcc_parents_3[] = {
193 	{ .fw_name = "bi_tcxo", },
194 	{ .hw = &gpll0.clkr.hw },
195 	{ .name = "gpll2" },
196 	{ .name = "gpll5" },
197 	{ .hw = &gpll1.clkr.hw },
198 	{ .hw = &gpll4.clkr.hw },
199 	{ .hw = &gpll0_out_even.clkr.hw },
200 };
201 
202 static const struct parent_map gcc_parent_map_4[] = {
203 	{ P_BI_TCXO, 0 },
204 };
205 
206 static const struct clk_parent_data gcc_parents_4[] = {
207 	{ .fw_name = "bi_tcxo", },
208 };
209 
210 static const struct parent_map gcc_parent_map_5[] = {
211 	{ P_BI_TCXO, 0 },
212 	{ P_GPLL0_OUT_MAIN, 1 },
213 };
214 
215 static const struct clk_parent_data gcc_parents_5[] = {
216 	{ .fw_name = "bi_tcxo", },
217 	{ .hw = &gpll0.clkr.hw },
218 };
219 
220 static const struct parent_map gcc_parent_map_6[] = {
221 	{ P_BI_TCXO, 0 },
222 	{ P_GPLL0_OUT_MAIN, 1 },
223 	{ P_GPLL7_OUT_MAIN, 3 },
224 	{ P_GPLL0_OUT_EVEN, 6 },
225 };
226 
227 static const struct clk_parent_data gcc_parents_6[] = {
228 	{ .fw_name = "bi_tcxo", },
229 	{ .hw = &gpll0.clkr.hw },
230 	{ .hw = &gpll7.clkr.hw },
231 	{ .hw = &gpll0_out_even.clkr.hw },
232 };
233 
234 static const struct parent_map gcc_parent_map_7[] = {
235 	{ P_BI_TCXO, 0 },
236 	{ P_GPLL0_OUT_MAIN, 1 },
237 	{ P_GPLL9_OUT_MAIN, 2 },
238 	{ P_GPLL4_OUT_MAIN, 5 },
239 	{ P_GPLL0_OUT_EVEN, 6 },
240 };
241 
242 static const struct clk_parent_data gcc_parents_7[] = {
243 	{ .fw_name = "bi_tcxo", },
244 	{ .hw = &gpll0.clkr.hw },
245 	{ .name = "gppl9" },
246 	{ .hw = &gpll4.clkr.hw },
247 	{ .hw = &gpll0_out_even.clkr.hw },
248 };
249 
250 static const struct parent_map gcc_parent_map_8[] = {
251 	{ P_BI_TCXO, 0 },
252 	{ P_GPLL0_OUT_MAIN, 1 },
253 	{ P_AUD_REF_CLK, 2 },
254 	{ P_GPLL0_OUT_EVEN, 6 },
255 };
256 
257 static const struct clk_parent_data gcc_parents_8[] = {
258 	{ .fw_name = "bi_tcxo", },
259 	{ .hw = &gpll0.clkr.hw },
260 	{ .name = "aud_ref_clk" },
261 	{ .hw = &gpll0_out_even.clkr.hw },
262 };
263 
264 static const struct freq_tbl ftbl_gcc_cpuss_ahb_clk_src[] = {
265 	F(19200000, P_BI_TCXO, 1, 0, 0),
266 	F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
267 	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
268 	{ }
269 };
270 
271 static struct clk_rcg2 gcc_cpuss_ahb_clk_src = {
272 	.cmd_rcgr = 0x48014,
273 	.mnd_width = 0,
274 	.hid_width = 5,
275 	.parent_map = gcc_parent_map_0,
276 	.freq_tbl = ftbl_gcc_cpuss_ahb_clk_src,
277 	.clkr.hw.init = &(struct clk_init_data){
278 		.name = "gcc_cpuss_ahb_clk_src",
279 		.parent_data = gcc_parents_0,
280 		.num_parents = ARRAY_SIZE(gcc_parents_0),
281 		.flags = CLK_SET_RATE_PARENT,
282 		.ops = &clk_rcg2_ops,
283 	},
284 };
285 
286 static const struct freq_tbl ftbl_gcc_emac_ptp_clk_src[] = {
287 	F(19200000, P_BI_TCXO, 1, 0, 0),
288 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
289 	F(125000000, P_GPLL7_OUT_MAIN, 4, 0, 0),
290 	F(250000000, P_GPLL7_OUT_MAIN, 2, 0, 0),
291 	{ }
292 };
293 
294 static struct clk_rcg2 gcc_emac_ptp_clk_src = {
295 	.cmd_rcgr = 0x6038,
296 	.mnd_width = 0,
297 	.hid_width = 5,
298 	.parent_map = gcc_parent_map_6,
299 	.freq_tbl = ftbl_gcc_emac_ptp_clk_src,
300 	.clkr.hw.init = &(struct clk_init_data){
301 		.name = "gcc_emac_ptp_clk_src",
302 		.parent_data = gcc_parents_6,
303 		.num_parents = ARRAY_SIZE(gcc_parents_6),
304 		.flags = CLK_SET_RATE_PARENT,
305 		.ops = &clk_rcg2_ops,
306 	},
307 };
308 
309 static const struct freq_tbl ftbl_gcc_emac_rgmii_clk_src[] = {
310 	F(2500000, P_BI_TCXO, 1, 25, 192),
311 	F(5000000, P_BI_TCXO, 1, 25, 96),
312 	F(19200000, P_BI_TCXO, 1, 0, 0),
313 	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
314 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
315 	F(125000000, P_GPLL7_OUT_MAIN, 4, 0, 0),
316 	F(250000000, P_GPLL7_OUT_MAIN, 2, 0, 0),
317 	{ }
318 };
319 
320 static struct clk_rcg2 gcc_emac_rgmii_clk_src = {
321 	.cmd_rcgr = 0x601c,
322 	.mnd_width = 8,
323 	.hid_width = 5,
324 	.parent_map = gcc_parent_map_6,
325 	.freq_tbl = ftbl_gcc_emac_rgmii_clk_src,
326 	.clkr.hw.init = &(struct clk_init_data){
327 		.name = "gcc_emac_rgmii_clk_src",
328 		.parent_data = gcc_parents_6,
329 		.num_parents = ARRAY_SIZE(gcc_parents_6),
330 		.flags = CLK_SET_RATE_PARENT,
331 		.ops = &clk_rcg2_ops,
332 	},
333 };
334 
335 static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
336 	F(19200000, P_BI_TCXO, 1, 0, 0),
337 	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
338 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
339 	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
340 	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
341 	{ }
342 };
343 
344 static struct clk_rcg2 gcc_gp1_clk_src = {
345 	.cmd_rcgr = 0x64004,
346 	.mnd_width = 8,
347 	.hid_width = 5,
348 	.parent_map = gcc_parent_map_1,
349 	.freq_tbl = ftbl_gcc_gp1_clk_src,
350 	.clkr.hw.init = &(struct clk_init_data){
351 		.name = "gcc_gp1_clk_src",
352 		.parent_data = gcc_parents_1,
353 		.num_parents = ARRAY_SIZE(gcc_parents_1),
354 		.flags = CLK_SET_RATE_PARENT,
355 		.ops = &clk_rcg2_ops,
356 	},
357 };
358 
359 static struct clk_rcg2 gcc_gp2_clk_src = {
360 	.cmd_rcgr = 0x65004,
361 	.mnd_width = 8,
362 	.hid_width = 5,
363 	.parent_map = gcc_parent_map_1,
364 	.freq_tbl = ftbl_gcc_gp1_clk_src,
365 	.clkr.hw.init = &(struct clk_init_data){
366 		.name = "gcc_gp2_clk_src",
367 		.parent_data = gcc_parents_1,
368 		.num_parents = ARRAY_SIZE(gcc_parents_1),
369 		.flags = CLK_SET_RATE_PARENT,
370 		.ops = &clk_rcg2_ops,
371 	},
372 };
373 
374 static struct clk_rcg2 gcc_gp3_clk_src = {
375 	.cmd_rcgr = 0x66004,
376 	.mnd_width = 8,
377 	.hid_width = 5,
378 	.parent_map = gcc_parent_map_1,
379 	.freq_tbl = ftbl_gcc_gp1_clk_src,
380 	.clkr.hw.init = &(struct clk_init_data){
381 		.name = "gcc_gp3_clk_src",
382 		.parent_data = gcc_parents_1,
383 		.num_parents = ARRAY_SIZE(gcc_parents_1),
384 		.flags = CLK_SET_RATE_PARENT,
385 		.ops = &clk_rcg2_ops,
386 	},
387 };
388 
389 static struct clk_rcg2 gcc_gp4_clk_src = {
390 	.cmd_rcgr = 0xbe004,
391 	.mnd_width = 8,
392 	.hid_width = 5,
393 	.parent_map = gcc_parent_map_1,
394 	.freq_tbl = ftbl_gcc_gp1_clk_src,
395 	.clkr.hw.init = &(struct clk_init_data){
396 		.name = "gcc_gp4_clk_src",
397 		.parent_data = gcc_parents_1,
398 		.num_parents = ARRAY_SIZE(gcc_parents_1),
399 		.flags = CLK_SET_RATE_PARENT,
400 		.ops = &clk_rcg2_ops,
401 	},
402 };
403 
404 static struct clk_rcg2 gcc_gp5_clk_src = {
405 	.cmd_rcgr = 0xbf004,
406 	.mnd_width = 8,
407 	.hid_width = 5,
408 	.parent_map = gcc_parent_map_1,
409 	.freq_tbl = ftbl_gcc_gp1_clk_src,
410 	.clkr.hw.init = &(struct clk_init_data){
411 		.name = "gcc_gp5_clk_src",
412 		.parent_data = gcc_parents_1,
413 		.num_parents = ARRAY_SIZE(gcc_parents_1),
414 		.flags = CLK_SET_RATE_PARENT,
415 		.ops = &clk_rcg2_ops,
416 	},
417 };
418 
419 static const struct freq_tbl ftbl_gcc_npu_axi_clk_src[] = {
420 	F(19200000, P_BI_TCXO, 1, 0, 0),
421 	F(60000000, P_GPLL0_OUT_EVEN, 5, 0, 0),
422 	F(150000000, P_GPLL0_OUT_EVEN, 2, 0, 0),
423 	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
424 	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
425 	F(403000000, P_GPLL4_OUT_MAIN, 2, 0, 0),
426 	F(533000000, P_GPLL1_OUT_MAIN, 2, 0, 0),
427 	{ }
428 };
429 
430 static struct clk_rcg2 gcc_npu_axi_clk_src = {
431 	.cmd_rcgr = 0x4d014,
432 	.mnd_width = 0,
433 	.hid_width = 5,
434 	.parent_map = gcc_parent_map_3,
435 	.freq_tbl = ftbl_gcc_npu_axi_clk_src,
436 	.clkr.hw.init = &(struct clk_init_data){
437 		.name = "gcc_npu_axi_clk_src",
438 		.parent_data = gcc_parents_3,
439 		.num_parents = ARRAY_SIZE(gcc_parents_3),
440 		.flags = CLK_SET_RATE_PARENT,
441 		.ops = &clk_rcg2_ops,
442 	},
443 };
444 
445 static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
446 	F(9600000, P_BI_TCXO, 2, 0, 0),
447 	F(19200000, P_BI_TCXO, 1, 0, 0),
448 	{ }
449 };
450 
451 static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
452 	.cmd_rcgr = 0x6b02c,
453 	.mnd_width = 16,
454 	.hid_width = 5,
455 	.parent_map = gcc_parent_map_2,
456 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
457 	.clkr.hw.init = &(struct clk_init_data){
458 		.name = "gcc_pcie_0_aux_clk_src",
459 		.parent_data = gcc_parents_2,
460 		.num_parents = ARRAY_SIZE(gcc_parents_2),
461 		.flags = CLK_SET_RATE_PARENT,
462 		.ops = &clk_rcg2_ops,
463 	},
464 };
465 
466 static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
467 	.cmd_rcgr = 0x8d02c,
468 	.mnd_width = 16,
469 	.hid_width = 5,
470 	.parent_map = gcc_parent_map_2,
471 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
472 	.clkr.hw.init = &(struct clk_init_data){
473 		.name = "gcc_pcie_1_aux_clk_src",
474 		.parent_data = gcc_parents_2,
475 		.num_parents = ARRAY_SIZE(gcc_parents_2),
476 		.flags = CLK_SET_RATE_PARENT,
477 		.ops = &clk_rcg2_ops,
478 	},
479 };
480 
481 static struct clk_rcg2 gcc_pcie_2_aux_clk_src = {
482 	.cmd_rcgr = 0x9d02c,
483 	.mnd_width = 16,
484 	.hid_width = 5,
485 	.parent_map = gcc_parent_map_2,
486 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
487 	.clkr.hw.init = &(struct clk_init_data){
488 		.name = "gcc_pcie_2_aux_clk_src",
489 		.parent_data = gcc_parents_2,
490 		.num_parents = ARRAY_SIZE(gcc_parents_2),
491 		.flags = CLK_SET_RATE_PARENT,
492 		.ops = &clk_rcg2_ops,
493 	},
494 };
495 
496 static struct clk_rcg2 gcc_pcie_3_aux_clk_src = {
497 	.cmd_rcgr = 0xa302c,
498 	.mnd_width = 16,
499 	.hid_width = 5,
500 	.parent_map = gcc_parent_map_2,
501 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
502 	.clkr.hw.init = &(struct clk_init_data){
503 		.name = "gcc_pcie_3_aux_clk_src",
504 		.parent_data = gcc_parents_2,
505 		.num_parents = ARRAY_SIZE(gcc_parents_2),
506 		.flags = CLK_SET_RATE_PARENT,
507 		.ops = &clk_rcg2_ops,
508 	},
509 };
510 
511 static const struct freq_tbl ftbl_gcc_pcie_phy_refgen_clk_src[] = {
512 	F(19200000, P_BI_TCXO, 1, 0, 0),
513 	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
514 	{ }
515 };
516 
517 static struct clk_rcg2 gcc_pcie_phy_refgen_clk_src = {
518 	.cmd_rcgr = 0x6f014,
519 	.mnd_width = 0,
520 	.hid_width = 5,
521 	.parent_map = gcc_parent_map_0,
522 	.freq_tbl = ftbl_gcc_pcie_phy_refgen_clk_src,
523 	.clkr.hw.init = &(struct clk_init_data){
524 		.name = "gcc_pcie_phy_refgen_clk_src",
525 		.parent_data = gcc_parents_0,
526 		.num_parents = ARRAY_SIZE(gcc_parents_0),
527 		.flags = CLK_SET_RATE_PARENT,
528 		.ops = &clk_rcg2_ops,
529 	},
530 };
531 
532 static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
533 	F(9600000, P_BI_TCXO, 2, 0, 0),
534 	F(19200000, P_BI_TCXO, 1, 0, 0),
535 	F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
536 	{ }
537 };
538 
539 static struct clk_rcg2 gcc_pdm2_clk_src = {
540 	.cmd_rcgr = 0x33010,
541 	.mnd_width = 0,
542 	.hid_width = 5,
543 	.parent_map = gcc_parent_map_0,
544 	.freq_tbl = ftbl_gcc_pdm2_clk_src,
545 	.clkr.hw.init = &(struct clk_init_data){
546 		.name = "gcc_pdm2_clk_src",
547 		.parent_data = gcc_parents_0,
548 		.num_parents = ARRAY_SIZE(gcc_parents_0),
549 		.flags = CLK_SET_RATE_PARENT,
550 		.ops = &clk_rcg2_ops,
551 	},
552 };
553 
554 static const struct freq_tbl ftbl_gcc_qspi_1_core_clk_src[] = {
555 	F(19200000, P_BI_TCXO, 1, 0, 0),
556 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
557 	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
558 	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
559 	{ }
560 };
561 
562 static struct clk_rcg2 gcc_qspi_1_core_clk_src = {
563 	.cmd_rcgr = 0x4a00c,
564 	.mnd_width = 0,
565 	.hid_width = 5,
566 	.parent_map = gcc_parent_map_0,
567 	.freq_tbl = ftbl_gcc_qspi_1_core_clk_src,
568 	.clkr.hw.init = &(struct clk_init_data){
569 		.name = "gcc_qspi_1_core_clk_src",
570 		.parent_data = gcc_parents_0,
571 		.num_parents = ARRAY_SIZE(gcc_parents_0),
572 		.flags = CLK_SET_RATE_PARENT,
573 		.ops = &clk_rcg2_ops,
574 	},
575 };
576 
577 static struct clk_rcg2 gcc_qspi_core_clk_src = {
578 	.cmd_rcgr = 0x4b008,
579 	.mnd_width = 0,
580 	.hid_width = 5,
581 	.parent_map = gcc_parent_map_0,
582 	.freq_tbl = ftbl_gcc_qspi_1_core_clk_src,
583 	.clkr.hw.init = &(struct clk_init_data){
584 		.name = "gcc_qspi_core_clk_src",
585 		.parent_data = gcc_parents_0,
586 		.num_parents = ARRAY_SIZE(gcc_parents_0),
587 		.flags = CLK_SET_RATE_PARENT,
588 		.ops = &clk_rcg2_ops,
589 	},
590 };
591 
592 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
593 	F(7372800, P_GPLL0_OUT_EVEN, 1, 384, 15625),
594 	F(14745600, P_GPLL0_OUT_EVEN, 1, 768, 15625),
595 	F(19200000, P_BI_TCXO, 1, 0, 0),
596 	F(29491200, P_GPLL0_OUT_EVEN, 1, 1536, 15625),
597 	F(32000000, P_GPLL0_OUT_EVEN, 1, 8, 75),
598 	F(48000000, P_GPLL0_OUT_EVEN, 1, 4, 25),
599 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
600 	F(64000000, P_GPLL0_OUT_EVEN, 1, 16, 75),
601 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
602 	F(80000000, P_GPLL0_OUT_EVEN, 1, 4, 15),
603 	F(96000000, P_GPLL0_OUT_EVEN, 1, 8, 25),
604 	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
605 	F(102400000, P_GPLL0_OUT_EVEN, 1, 128, 375),
606 	F(112000000, P_GPLL0_OUT_EVEN, 1, 28, 75),
607 	F(117964800, P_GPLL0_OUT_EVEN, 1, 6144, 15625),
608 	F(120000000, P_GPLL0_OUT_EVEN, 2.5, 0, 0),
609 	F(128000000, P_GPLL0_OUT_MAIN, 1, 16, 75),
610 	{ }
611 };
612 
613 static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
614 	.cmd_rcgr = 0x17148,
615 	.mnd_width = 16,
616 	.hid_width = 5,
617 	.parent_map = gcc_parent_map_0,
618 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
619 	.clkr.hw.init = &(struct clk_init_data){
620 		.name = "gcc_qupv3_wrap0_s0_clk_src",
621 		.parent_data = gcc_parents_0,
622 		.num_parents = ARRAY_SIZE(gcc_parents_0),
623 		.flags = CLK_SET_RATE_PARENT,
624 		.ops = &clk_rcg2_ops,
625 	},
626 };
627 
628 static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
629 	.cmd_rcgr = 0x17278,
630 	.mnd_width = 16,
631 	.hid_width = 5,
632 	.parent_map = gcc_parent_map_0,
633 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
634 	.clkr.hw.init = &(struct clk_init_data){
635 		.name = "gcc_qupv3_wrap0_s1_clk_src",
636 		.parent_data = gcc_parents_0,
637 		.num_parents = ARRAY_SIZE(gcc_parents_0),
638 		.flags = CLK_SET_RATE_PARENT,
639 		.ops = &clk_rcg2_ops,
640 	},
641 };
642 
643 static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
644 	.cmd_rcgr = 0x173a8,
645 	.mnd_width = 16,
646 	.hid_width = 5,
647 	.parent_map = gcc_parent_map_0,
648 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
649 	.clkr.hw.init = &(struct clk_init_data){
650 		.name = "gcc_qupv3_wrap0_s2_clk_src",
651 		.parent_data = gcc_parents_0,
652 		.num_parents = ARRAY_SIZE(gcc_parents_0),
653 		.flags = CLK_SET_RATE_PARENT,
654 		.ops = &clk_rcg2_ops,
655 	},
656 };
657 
658 static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
659 	.cmd_rcgr = 0x174d8,
660 	.mnd_width = 16,
661 	.hid_width = 5,
662 	.parent_map = gcc_parent_map_0,
663 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
664 	.clkr.hw.init = &(struct clk_init_data){
665 		.name = "gcc_qupv3_wrap0_s3_clk_src",
666 		.parent_data = gcc_parents_0,
667 		.num_parents = ARRAY_SIZE(gcc_parents_0),
668 		.flags = CLK_SET_RATE_PARENT,
669 		.ops = &clk_rcg2_ops,
670 	},
671 };
672 
673 static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
674 	.cmd_rcgr = 0x17608,
675 	.mnd_width = 16,
676 	.hid_width = 5,
677 	.parent_map = gcc_parent_map_0,
678 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
679 	.clkr.hw.init = &(struct clk_init_data){
680 		.name = "gcc_qupv3_wrap0_s4_clk_src",
681 		.parent_data = gcc_parents_0,
682 		.num_parents = ARRAY_SIZE(gcc_parents_0),
683 		.flags = CLK_SET_RATE_PARENT,
684 		.ops = &clk_rcg2_ops,
685 	},
686 };
687 
688 static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
689 	.cmd_rcgr = 0x17738,
690 	.mnd_width = 16,
691 	.hid_width = 5,
692 	.parent_map = gcc_parent_map_0,
693 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
694 	.clkr.hw.init = &(struct clk_init_data){
695 		.name = "gcc_qupv3_wrap0_s5_clk_src",
696 		.parent_data = gcc_parents_0,
697 		.num_parents = ARRAY_SIZE(gcc_parents_0),
698 		.flags = CLK_SET_RATE_PARENT,
699 		.ops = &clk_rcg2_ops,
700 	},
701 };
702 
703 static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
704 	.cmd_rcgr = 0x17868,
705 	.mnd_width = 16,
706 	.hid_width = 5,
707 	.parent_map = gcc_parent_map_0,
708 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
709 	.clkr.hw.init = &(struct clk_init_data){
710 		.name = "gcc_qupv3_wrap0_s6_clk_src",
711 		.parent_data = gcc_parents_0,
712 		.num_parents = ARRAY_SIZE(gcc_parents_0),
713 		.flags = CLK_SET_RATE_PARENT,
714 		.ops = &clk_rcg2_ops,
715 	},
716 };
717 
718 static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
719 	.cmd_rcgr = 0x17998,
720 	.mnd_width = 16,
721 	.hid_width = 5,
722 	.parent_map = gcc_parent_map_0,
723 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
724 	.clkr.hw.init = &(struct clk_init_data){
725 		.name = "gcc_qupv3_wrap0_s7_clk_src",
726 		.parent_data = gcc_parents_0,
727 		.num_parents = ARRAY_SIZE(gcc_parents_0),
728 		.flags = CLK_SET_RATE_PARENT,
729 		.ops = &clk_rcg2_ops,
730 	},
731 };
732 
733 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
734 	.cmd_rcgr = 0x18148,
735 	.mnd_width = 16,
736 	.hid_width = 5,
737 	.parent_map = gcc_parent_map_0,
738 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
739 	.clkr.hw.init = &(struct clk_init_data){
740 		.name = "gcc_qupv3_wrap1_s0_clk_src",
741 		.parent_data = gcc_parents_0,
742 		.num_parents = ARRAY_SIZE(gcc_parents_0),
743 		.flags = CLK_SET_RATE_PARENT,
744 		.ops = &clk_rcg2_ops,
745 	},
746 };
747 
748 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
749 	.cmd_rcgr = 0x18278,
750 	.mnd_width = 16,
751 	.hid_width = 5,
752 	.parent_map = gcc_parent_map_0,
753 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
754 	.clkr.hw.init = &(struct clk_init_data){
755 		.name = "gcc_qupv3_wrap1_s1_clk_src",
756 		.parent_data = gcc_parents_0,
757 		.num_parents = ARRAY_SIZE(gcc_parents_0),
758 		.flags = CLK_SET_RATE_PARENT,
759 		.ops = &clk_rcg2_ops,
760 	},
761 };
762 
763 static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
764 	.cmd_rcgr = 0x183a8,
765 	.mnd_width = 16,
766 	.hid_width = 5,
767 	.parent_map = gcc_parent_map_0,
768 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
769 	.clkr.hw.init = &(struct clk_init_data){
770 		.name = "gcc_qupv3_wrap1_s2_clk_src",
771 		.parent_data = gcc_parents_0,
772 		.num_parents = ARRAY_SIZE(gcc_parents_0),
773 		.flags = CLK_SET_RATE_PARENT,
774 		.ops = &clk_rcg2_ops,
775 	},
776 };
777 
778 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
779 	.cmd_rcgr = 0x184d8,
780 	.mnd_width = 16,
781 	.hid_width = 5,
782 	.parent_map = gcc_parent_map_0,
783 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
784 	.clkr.hw.init = &(struct clk_init_data){
785 		.name = "gcc_qupv3_wrap1_s3_clk_src",
786 		.parent_data = gcc_parents_0,
787 		.num_parents = ARRAY_SIZE(gcc_parents_0),
788 		.flags = CLK_SET_RATE_PARENT,
789 		.ops = &clk_rcg2_ops,
790 	},
791 };
792 
793 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
794 	.cmd_rcgr = 0x18608,
795 	.mnd_width = 16,
796 	.hid_width = 5,
797 	.parent_map = gcc_parent_map_0,
798 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
799 	.clkr.hw.init = &(struct clk_init_data){
800 		.name = "gcc_qupv3_wrap1_s4_clk_src",
801 		.parent_data = gcc_parents_0,
802 		.num_parents = ARRAY_SIZE(gcc_parents_0),
803 		.flags = CLK_SET_RATE_PARENT,
804 		.ops = &clk_rcg2_ops,
805 	},
806 };
807 
808 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
809 	.cmd_rcgr = 0x18738,
810 	.mnd_width = 16,
811 	.hid_width = 5,
812 	.parent_map = gcc_parent_map_0,
813 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
814 	.clkr.hw.init = &(struct clk_init_data){
815 		.name = "gcc_qupv3_wrap1_s5_clk_src",
816 		.parent_data = gcc_parents_0,
817 		.num_parents = ARRAY_SIZE(gcc_parents_0),
818 		.flags = CLK_SET_RATE_PARENT,
819 		.ops = &clk_rcg2_ops,
820 	},
821 };
822 
823 static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
824 	.cmd_rcgr = 0x1e148,
825 	.mnd_width = 16,
826 	.hid_width = 5,
827 	.parent_map = gcc_parent_map_0,
828 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
829 	.clkr.hw.init = &(struct clk_init_data){
830 		.name = "gcc_qupv3_wrap2_s0_clk_src",
831 		.parent_data = gcc_parents_0,
832 		.num_parents = ARRAY_SIZE(gcc_parents_0),
833 		.flags = CLK_SET_RATE_PARENT,
834 		.ops = &clk_rcg2_ops,
835 	},
836 };
837 
838 static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
839 	.cmd_rcgr = 0x1e278,
840 	.mnd_width = 16,
841 	.hid_width = 5,
842 	.parent_map = gcc_parent_map_0,
843 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
844 	.clkr.hw.init = &(struct clk_init_data){
845 		.name = "gcc_qupv3_wrap2_s1_clk_src",
846 		.parent_data = gcc_parents_0,
847 		.num_parents = ARRAY_SIZE(gcc_parents_0),
848 		.flags = CLK_SET_RATE_PARENT,
849 		.ops = &clk_rcg2_ops,
850 	},
851 };
852 
853 static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
854 	.cmd_rcgr = 0x1e3a8,
855 	.mnd_width = 16,
856 	.hid_width = 5,
857 	.parent_map = gcc_parent_map_0,
858 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
859 	.clkr.hw.init = &(struct clk_init_data){
860 		.name = "gcc_qupv3_wrap2_s2_clk_src",
861 		.parent_data = gcc_parents_0,
862 		.num_parents = ARRAY_SIZE(gcc_parents_0),
863 		.flags = CLK_SET_RATE_PARENT,
864 		.ops = &clk_rcg2_ops,
865 	},
866 };
867 
868 static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
869 	.cmd_rcgr = 0x1e4d8,
870 	.mnd_width = 16,
871 	.hid_width = 5,
872 	.parent_map = gcc_parent_map_0,
873 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
874 	.clkr.hw.init = &(struct clk_init_data){
875 		.name = "gcc_qupv3_wrap2_s3_clk_src",
876 		.parent_data = gcc_parents_0,
877 		.num_parents = ARRAY_SIZE(gcc_parents_0),
878 		.flags = CLK_SET_RATE_PARENT,
879 		.ops = &clk_rcg2_ops,
880 	},
881 };
882 
883 static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
884 	.cmd_rcgr = 0x1e608,
885 	.mnd_width = 16,
886 	.hid_width = 5,
887 	.parent_map = gcc_parent_map_0,
888 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
889 	.clkr.hw.init = &(struct clk_init_data){
890 		.name = "gcc_qupv3_wrap2_s4_clk_src",
891 		.parent_data = gcc_parents_0,
892 		.num_parents = ARRAY_SIZE(gcc_parents_0),
893 		.flags = CLK_SET_RATE_PARENT,
894 		.ops = &clk_rcg2_ops,
895 	},
896 };
897 
898 static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {
899 	.cmd_rcgr = 0x1e738,
900 	.mnd_width = 16,
901 	.hid_width = 5,
902 	.parent_map = gcc_parent_map_0,
903 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
904 	.clkr.hw.init = &(struct clk_init_data){
905 		.name = "gcc_qupv3_wrap2_s5_clk_src",
906 		.parent_data = gcc_parents_0,
907 		.num_parents = ARRAY_SIZE(gcc_parents_0),
908 		.flags = CLK_SET_RATE_PARENT,
909 		.ops = &clk_rcg2_ops,
910 	},
911 };
912 
913 static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
914 	F(400000, P_BI_TCXO, 12, 1, 4),
915 	F(9600000, P_BI_TCXO, 2, 0, 0),
916 	F(19200000, P_BI_TCXO, 1, 0, 0),
917 	F(25000000, P_GPLL0_OUT_MAIN, 12, 1, 2),
918 	F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
919 	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
920 	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
921 	{ }
922 };
923 
924 static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
925 	.cmd_rcgr = 0x1400c,
926 	.mnd_width = 8,
927 	.hid_width = 5,
928 	.parent_map = gcc_parent_map_7,
929 	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
930 	.clkr.hw.init = &(struct clk_init_data){
931 		.name = "gcc_sdcc2_apps_clk_src",
932 		.parent_data = gcc_parents_7,
933 		.num_parents = ARRAY_SIZE(gcc_parents_7),
934 		.flags = CLK_SET_RATE_PARENT,
935 		.ops = &clk_rcg2_floor_ops,
936 	},
937 };
938 
939 static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
940 	F(400000, P_BI_TCXO, 12, 1, 4),
941 	F(9600000, P_BI_TCXO, 2, 0, 0),
942 	F(19200000, P_BI_TCXO, 1, 0, 0),
943 	F(37500000, P_GPLL0_OUT_MAIN, 16, 0, 0),
944 	F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
945 	F(75000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
946 	{ }
947 };
948 
949 static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
950 	.cmd_rcgr = 0x1600c,
951 	.mnd_width = 8,
952 	.hid_width = 5,
953 	.parent_map = gcc_parent_map_5,
954 	.freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
955 	.clkr.hw.init = &(struct clk_init_data){
956 		.name = "gcc_sdcc4_apps_clk_src",
957 		.parent_data = gcc_parents_5,
958 		.num_parents = ARRAY_SIZE(gcc_parents_5),
959 		.flags = CLK_SET_RATE_PARENT,
960 		.ops = &clk_rcg2_floor_ops,
961 	},
962 };
963 
964 static const struct freq_tbl ftbl_gcc_tsif_ref_clk_src[] = {
965 	F(105495, P_BI_TCXO, 2, 1, 91),
966 	{ }
967 };
968 
969 static struct clk_rcg2 gcc_tsif_ref_clk_src = {
970 	.cmd_rcgr = 0x36010,
971 	.mnd_width = 8,
972 	.hid_width = 5,
973 	.parent_map = gcc_parent_map_8,
974 	.freq_tbl = ftbl_gcc_tsif_ref_clk_src,
975 	.clkr.hw.init = &(struct clk_init_data){
976 		.name = "gcc_tsif_ref_clk_src",
977 		.parent_data = gcc_parents_8,
978 		.num_parents = ARRAY_SIZE(gcc_parents_8),
979 		.flags = CLK_SET_RATE_PARENT,
980 		.ops = &clk_rcg2_ops,
981 	},
982 };
983 
984 static const struct freq_tbl ftbl_gcc_ufs_card_2_axi_clk_src[] = {
985 	F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
986 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
987 	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
988 	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
989 	{ }
990 };
991 
992 static struct clk_rcg2 gcc_ufs_card_2_axi_clk_src = {
993 	.cmd_rcgr = 0xa2020,
994 	.mnd_width = 8,
995 	.hid_width = 5,
996 	.parent_map = gcc_parent_map_0,
997 	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
998 	.clkr.hw.init = &(struct clk_init_data){
999 		.name = "gcc_ufs_card_2_axi_clk_src",
1000 		.parent_data = gcc_parents_0,
1001 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1002 		.flags = CLK_SET_RATE_PARENT,
1003 		.ops = &clk_rcg2_ops,
1004 	},
1005 };
1006 
1007 static struct clk_rcg2 gcc_ufs_card_2_ice_core_clk_src = {
1008 	.cmd_rcgr = 0xa2060,
1009 	.mnd_width = 0,
1010 	.hid_width = 5,
1011 	.parent_map = gcc_parent_map_0,
1012 	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
1013 	.clkr.hw.init = &(struct clk_init_data){
1014 		.name = "gcc_ufs_card_2_ice_core_clk_src",
1015 		.parent_data = gcc_parents_0,
1016 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1017 		.flags = CLK_SET_RATE_PARENT,
1018 		.ops = &clk_rcg2_ops,
1019 	},
1020 };
1021 
1022 static const struct freq_tbl ftbl_gcc_ufs_card_2_phy_aux_clk_src[] = {
1023 	F(19200000, P_BI_TCXO, 1, 0, 0),
1024 	{ }
1025 };
1026 
1027 static struct clk_rcg2 gcc_ufs_card_2_phy_aux_clk_src = {
1028 	.cmd_rcgr = 0xa2094,
1029 	.mnd_width = 0,
1030 	.hid_width = 5,
1031 	.parent_map = gcc_parent_map_4,
1032 	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
1033 	.clkr.hw.init = &(struct clk_init_data){
1034 		.name = "gcc_ufs_card_2_phy_aux_clk_src",
1035 		.parent_data = gcc_parents_4,
1036 		.num_parents = ARRAY_SIZE(gcc_parents_4),
1037 		.flags = CLK_SET_RATE_PARENT,
1038 		.ops = &clk_rcg2_ops,
1039 	},
1040 };
1041 
1042 static struct clk_rcg2 gcc_ufs_card_2_unipro_core_clk_src = {
1043 	.cmd_rcgr = 0xa2078,
1044 	.mnd_width = 0,
1045 	.hid_width = 5,
1046 	.parent_map = gcc_parent_map_0,
1047 	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
1048 	.clkr.hw.init = &(struct clk_init_data){
1049 		.name = "gcc_ufs_card_2_unipro_core_clk_src",
1050 		.parent_data = gcc_parents_0,
1051 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1052 		.flags = CLK_SET_RATE_PARENT,
1053 		.ops = &clk_rcg2_ops,
1054 	},
1055 };
1056 
1057 static const struct freq_tbl ftbl_gcc_ufs_card_axi_clk_src[] = {
1058 	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
1059 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
1060 	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
1061 	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
1062 	F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
1063 	{ }
1064 };
1065 
1066 static struct clk_rcg2 gcc_ufs_card_axi_clk_src = {
1067 	.cmd_rcgr = 0x75020,
1068 	.mnd_width = 8,
1069 	.hid_width = 5,
1070 	.parent_map = gcc_parent_map_0,
1071 	.freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,
1072 	.clkr.hw.init = &(struct clk_init_data){
1073 		.name = "gcc_ufs_card_axi_clk_src",
1074 		.parent_data = gcc_parents_0,
1075 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1076 		.flags = CLK_SET_RATE_PARENT,
1077 		.ops = &clk_rcg2_ops,
1078 	},
1079 };
1080 
1081 static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src[] = {
1082 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
1083 	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
1084 	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
1085 	{ }
1086 };
1087 
1088 static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = {
1089 	.cmd_rcgr = 0x75060,
1090 	.mnd_width = 0,
1091 	.hid_width = 5,
1092 	.parent_map = gcc_parent_map_0,
1093 	.freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
1094 	.clkr.hw.init = &(struct clk_init_data){
1095 		.name = "gcc_ufs_card_ice_core_clk_src",
1096 		.parent_data = gcc_parents_0,
1097 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1098 		.flags = CLK_SET_RATE_PARENT,
1099 		.ops = &clk_rcg2_ops,
1100 	},
1101 };
1102 
1103 static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = {
1104 	.cmd_rcgr = 0x75094,
1105 	.mnd_width = 0,
1106 	.hid_width = 5,
1107 	.parent_map = gcc_parent_map_4,
1108 	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
1109 	.clkr.hw.init = &(struct clk_init_data){
1110 		.name = "gcc_ufs_card_phy_aux_clk_src",
1111 		.parent_data = gcc_parents_4,
1112 		.num_parents = ARRAY_SIZE(gcc_parents_4),
1113 		.flags = CLK_SET_RATE_PARENT,
1114 		.ops = &clk_rcg2_ops,
1115 	},
1116 };
1117 
1118 static const struct freq_tbl ftbl_gcc_ufs_card_unipro_core_clk_src[] = {
1119 	F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
1120 	F(75000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
1121 	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
1122 	{ }
1123 };
1124 
1125 static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = {
1126 	.cmd_rcgr = 0x75078,
1127 	.mnd_width = 0,
1128 	.hid_width = 5,
1129 	.parent_map = gcc_parent_map_0,
1130 	.freq_tbl = ftbl_gcc_ufs_card_unipro_core_clk_src,
1131 	.clkr.hw.init = &(struct clk_init_data){
1132 		.name = "gcc_ufs_card_unipro_core_clk_src",
1133 		.parent_data = gcc_parents_0,
1134 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1135 		.flags = CLK_SET_RATE_PARENT,
1136 		.ops = &clk_rcg2_ops,
1137 	},
1138 };
1139 
1140 static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
1141 	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
1142 	F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
1143 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
1144 	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
1145 	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
1146 	{ }
1147 };
1148 
1149 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
1150 	.cmd_rcgr = 0x77020,
1151 	.mnd_width = 8,
1152 	.hid_width = 5,
1153 	.parent_map = gcc_parent_map_0,
1154 	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
1155 	.clkr.hw.init = &(struct clk_init_data){
1156 		.name = "gcc_ufs_phy_axi_clk_src",
1157 		.parent_data = gcc_parents_0,
1158 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1159 		.flags = CLK_SET_RATE_PARENT,
1160 		.ops = &clk_rcg2_ops,
1161 	},
1162 };
1163 
1164 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
1165 	.cmd_rcgr = 0x77060,
1166 	.mnd_width = 0,
1167 	.hid_width = 5,
1168 	.parent_map = gcc_parent_map_0,
1169 	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
1170 	.clkr.hw.init = &(struct clk_init_data){
1171 		.name = "gcc_ufs_phy_ice_core_clk_src",
1172 		.parent_data = gcc_parents_0,
1173 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1174 		.flags = CLK_SET_RATE_PARENT,
1175 		.ops = &clk_rcg2_ops,
1176 	},
1177 };
1178 
1179 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
1180 	.cmd_rcgr = 0x77094,
1181 	.mnd_width = 0,
1182 	.hid_width = 5,
1183 	.parent_map = gcc_parent_map_4,
1184 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
1185 	.clkr.hw.init = &(struct clk_init_data){
1186 		.name = "gcc_ufs_phy_phy_aux_clk_src",
1187 		.parent_data = gcc_parents_4,
1188 		.num_parents = ARRAY_SIZE(gcc_parents_4),
1189 		.flags = CLK_SET_RATE_PARENT,
1190 		.ops = &clk_rcg2_ops,
1191 	},
1192 };
1193 
1194 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
1195 	.cmd_rcgr = 0x77078,
1196 	.mnd_width = 0,
1197 	.hid_width = 5,
1198 	.parent_map = gcc_parent_map_0,
1199 	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
1200 	.clkr.hw.init = &(struct clk_init_data){
1201 		.name = "gcc_ufs_phy_unipro_core_clk_src",
1202 		.parent_data = gcc_parents_0,
1203 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1204 		.flags = CLK_SET_RATE_PARENT,
1205 		.ops = &clk_rcg2_ops,
1206 	},
1207 };
1208 
1209 static const struct freq_tbl ftbl_gcc_usb30_mp_master_clk_src[] = {
1210 	F(33333333, P_GPLL0_OUT_EVEN, 9, 0, 0),
1211 	F(66666667, P_GPLL0_OUT_EVEN, 4.5, 0, 0),
1212 	F(133333333, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
1213 	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
1214 	F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
1215 	{ }
1216 };
1217 
1218 static struct clk_rcg2 gcc_usb30_mp_master_clk_src = {
1219 	.cmd_rcgr = 0xa601c,
1220 	.mnd_width = 8,
1221 	.hid_width = 5,
1222 	.parent_map = gcc_parent_map_0,
1223 	.freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
1224 	.clkr.hw.init = &(struct clk_init_data){
1225 		.name = "gcc_usb30_mp_master_clk_src",
1226 		.parent_data = gcc_parents_0,
1227 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1228 		.flags = CLK_SET_RATE_PARENT,
1229 		.ops = &clk_rcg2_ops,
1230 	},
1231 };
1232 
1233 static const struct freq_tbl ftbl_gcc_usb30_mp_mock_utmi_clk_src[] = {
1234 	F(19200000, P_BI_TCXO, 1, 0, 0),
1235 	F(20000000, P_GPLL0_OUT_EVEN, 15, 0, 0),
1236 	F(40000000, P_GPLL0_OUT_EVEN, 7.5, 0, 0),
1237 	F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
1238 	{ }
1239 };
1240 
1241 static struct clk_rcg2 gcc_usb30_mp_mock_utmi_clk_src = {
1242 	.cmd_rcgr = 0xa6034,
1243 	.mnd_width = 0,
1244 	.hid_width = 5,
1245 	.parent_map = gcc_parent_map_0,
1246 	.freq_tbl = ftbl_gcc_usb30_mp_mock_utmi_clk_src,
1247 	.clkr.hw.init = &(struct clk_init_data){
1248 		.name = "gcc_usb30_mp_mock_utmi_clk_src",
1249 		.parent_data = gcc_parents_0,
1250 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1251 		.flags = CLK_SET_RATE_PARENT,
1252 		.ops = &clk_rcg2_ops,
1253 	},
1254 };
1255 
1256 static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
1257 	.cmd_rcgr = 0xf01c,
1258 	.mnd_width = 8,
1259 	.hid_width = 5,
1260 	.parent_map = gcc_parent_map_0,
1261 	.freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
1262 	.clkr.hw.init = &(struct clk_init_data){
1263 		.name = "gcc_usb30_prim_master_clk_src",
1264 		.parent_data = gcc_parents_0,
1265 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1266 		.flags = CLK_SET_RATE_PARENT,
1267 		.ops = &clk_rcg2_ops,
1268 	},
1269 };
1270 
1271 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
1272 	.cmd_rcgr = 0xf034,
1273 	.mnd_width = 0,
1274 	.hid_width = 5,
1275 	.parent_map = gcc_parent_map_0,
1276 	.freq_tbl = ftbl_gcc_usb30_mp_mock_utmi_clk_src,
1277 	.clkr.hw.init = &(struct clk_init_data){
1278 		.name = "gcc_usb30_prim_mock_utmi_clk_src",
1279 		.parent_data = gcc_parents_0,
1280 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1281 		.flags = CLK_SET_RATE_PARENT,
1282 		.ops = &clk_rcg2_ops,
1283 	},
1284 };
1285 
1286 static struct clk_rcg2 gcc_usb30_sec_master_clk_src = {
1287 	.cmd_rcgr = 0x1001c,
1288 	.mnd_width = 8,
1289 	.hid_width = 5,
1290 	.parent_map = gcc_parent_map_0,
1291 	.freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
1292 	.clkr.hw.init = &(struct clk_init_data){
1293 		.name = "gcc_usb30_sec_master_clk_src",
1294 		.parent_data = gcc_parents_0,
1295 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1296 		.flags = CLK_SET_RATE_PARENT,
1297 		.ops = &clk_rcg2_ops,
1298 	},
1299 };
1300 
1301 static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = {
1302 	.cmd_rcgr = 0x10034,
1303 	.mnd_width = 0,
1304 	.hid_width = 5,
1305 	.parent_map = gcc_parent_map_0,
1306 	.freq_tbl = ftbl_gcc_usb30_mp_mock_utmi_clk_src,
1307 	.clkr.hw.init = &(struct clk_init_data){
1308 		.name = "gcc_usb30_sec_mock_utmi_clk_src",
1309 		.parent_data = gcc_parents_0,
1310 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1311 		.flags = CLK_SET_RATE_PARENT,
1312 		.ops = &clk_rcg2_ops,
1313 	},
1314 };
1315 
1316 static struct clk_rcg2 gcc_usb3_mp_phy_aux_clk_src = {
1317 	.cmd_rcgr = 0xa6068,
1318 	.mnd_width = 0,
1319 	.hid_width = 5,
1320 	.parent_map = gcc_parent_map_2,
1321 	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
1322 	.clkr.hw.init = &(struct clk_init_data){
1323 		.name = "gcc_usb3_mp_phy_aux_clk_src",
1324 		.parent_data = gcc_parents_2,
1325 		.num_parents = ARRAY_SIZE(gcc_parents_2),
1326 		.flags = CLK_SET_RATE_PARENT,
1327 		.ops = &clk_rcg2_ops,
1328 	},
1329 };
1330 
1331 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
1332 	.cmd_rcgr = 0xf060,
1333 	.mnd_width = 0,
1334 	.hid_width = 5,
1335 	.parent_map = gcc_parent_map_2,
1336 	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
1337 	.clkr.hw.init = &(struct clk_init_data){
1338 		.name = "gcc_usb3_prim_phy_aux_clk_src",
1339 		.parent_data = gcc_parents_2,
1340 		.num_parents = ARRAY_SIZE(gcc_parents_2),
1341 		.flags = CLK_SET_RATE_PARENT,
1342 		.ops = &clk_rcg2_ops,
1343 	},
1344 };
1345 
1346 static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = {
1347 	.cmd_rcgr = 0x10060,
1348 	.mnd_width = 0,
1349 	.hid_width = 5,
1350 	.parent_map = gcc_parent_map_2,
1351 	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
1352 	.clkr.hw.init = &(struct clk_init_data){
1353 		.name = "gcc_usb3_sec_phy_aux_clk_src",
1354 		.parent_data = gcc_parents_2,
1355 		.num_parents = ARRAY_SIZE(gcc_parents_2),
1356 		.flags = CLK_SET_RATE_PARENT,
1357 		.ops = &clk_rcg2_ops,
1358 	},
1359 };
1360 
1361 static struct clk_branch gcc_aggre_noc_pcie_tbu_clk = {
1362 	.halt_reg = 0x90018,
1363 	.halt_check = BRANCH_HALT,
1364 	.clkr = {
1365 		.enable_reg = 0x90018,
1366 		.enable_mask = BIT(0),
1367 		.hw.init = &(struct clk_init_data){
1368 			.name = "gcc_aggre_noc_pcie_tbu_clk",
1369 			.ops = &clk_branch2_ops,
1370 		},
1371 	},
1372 };
1373 
1374 static struct clk_branch gcc_aggre_ufs_card_axi_clk = {
1375 	.halt_reg = 0x750c0,
1376 	.halt_check = BRANCH_HALT,
1377 	.hwcg_reg = 0x750c0,
1378 	.hwcg_bit = 1,
1379 	.clkr = {
1380 		.enable_reg = 0x750c0,
1381 		.enable_mask = BIT(0),
1382 		.hw.init = &(struct clk_init_data){
1383 			.name = "gcc_aggre_ufs_card_axi_clk",
1384 			.parent_hws = (const struct clk_hw *[]){
1385 				      &gcc_ufs_card_axi_clk_src.clkr.hw
1386 			},
1387 			.num_parents = 1,
1388 			.flags = CLK_SET_RATE_PARENT,
1389 			.ops = &clk_branch2_ops,
1390 		},
1391 	},
1392 };
1393 
1394 static struct clk_branch gcc_aggre_ufs_card_axi_hw_ctl_clk = {
1395 	.halt_reg = 0x750c0,
1396 	.halt_check = BRANCH_HALT,
1397 	.hwcg_reg = 0x750c0,
1398 	.hwcg_bit = 1,
1399 	.clkr = {
1400 		.enable_reg = 0x750c0,
1401 		.enable_mask = BIT(1),
1402 		.hw.init = &(struct clk_init_data){
1403 			.name = "gcc_aggre_ufs_card_axi_hw_ctl_clk",
1404 			.parent_hws = (const struct clk_hw *[]){
1405 				      &gcc_aggre_ufs_card_axi_clk.clkr.hw
1406 			},
1407 			.num_parents = 1,
1408 			.flags = CLK_SET_RATE_PARENT,
1409 			.ops = &clk_branch_simple_ops,
1410 		},
1411 	},
1412 };
1413 
1414 static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
1415 	.halt_reg = 0x770c0,
1416 	.halt_check = BRANCH_HALT,
1417 	.hwcg_reg = 0x770c0,
1418 	.hwcg_bit = 1,
1419 	.clkr = {
1420 		.enable_reg = 0x770c0,
1421 		.enable_mask = BIT(0),
1422 		.hw.init = &(struct clk_init_data){
1423 			.name = "gcc_aggre_ufs_phy_axi_clk",
1424 			.parent_hws = (const struct clk_hw *[]){
1425 				      &gcc_ufs_phy_axi_clk_src.clkr.hw
1426 			},
1427 			.num_parents = 1,
1428 			.flags = CLK_SET_RATE_PARENT,
1429 			.ops = &clk_branch2_ops,
1430 		},
1431 	},
1432 };
1433 
1434 static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk = {
1435 	.halt_reg = 0x770c0,
1436 	.halt_check = BRANCH_HALT,
1437 	.hwcg_reg = 0x770c0,
1438 	.hwcg_bit = 1,
1439 	.clkr = {
1440 		.enable_reg = 0x770c0,
1441 		.enable_mask = BIT(1),
1442 		.hw.init = &(struct clk_init_data){
1443 			.name = "gcc_aggre_ufs_phy_axi_hw_ctl_clk",
1444 			.parent_hws = (const struct clk_hw *[]){
1445 				      &gcc_aggre_ufs_phy_axi_clk.clkr.hw
1446 			},
1447 			.num_parents = 1,
1448 			.flags = CLK_SET_RATE_PARENT,
1449 			.ops = &clk_branch_simple_ops,
1450 		},
1451 	},
1452 };
1453 
1454 static struct clk_branch gcc_aggre_usb3_mp_axi_clk = {
1455 	.halt_reg = 0xa6084,
1456 	.halt_check = BRANCH_HALT,
1457 	.clkr = {
1458 		.enable_reg = 0xa6084,
1459 		.enable_mask = BIT(0),
1460 		.hw.init = &(struct clk_init_data){
1461 			.name = "gcc_aggre_usb3_mp_axi_clk",
1462 			.parent_hws = (const struct clk_hw *[]){
1463 				      &gcc_usb30_mp_master_clk_src.clkr.hw
1464 			},
1465 			.num_parents = 1,
1466 			.flags = CLK_SET_RATE_PARENT,
1467 			.ops = &clk_branch2_ops,
1468 		},
1469 	},
1470 };
1471 
1472 static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
1473 	.halt_reg = 0xf07c,
1474 	.halt_check = BRANCH_HALT,
1475 	.clkr = {
1476 		.enable_reg = 0xf07c,
1477 		.enable_mask = BIT(0),
1478 		.hw.init = &(struct clk_init_data){
1479 			.name = "gcc_aggre_usb3_prim_axi_clk",
1480 			.parent_hws = (const struct clk_hw *[]){
1481 				      &gcc_usb30_prim_master_clk_src.clkr.hw
1482 			},
1483 			.num_parents = 1,
1484 			.flags = CLK_SET_RATE_PARENT,
1485 			.ops = &clk_branch2_ops,
1486 		},
1487 	},
1488 };
1489 
1490 static struct clk_branch gcc_aggre_usb3_sec_axi_clk = {
1491 	.halt_reg = 0x1007c,
1492 	.halt_check = BRANCH_HALT,
1493 	.clkr = {
1494 		.enable_reg = 0x1007c,
1495 		.enable_mask = BIT(0),
1496 		.hw.init = &(struct clk_init_data){
1497 			.name = "gcc_aggre_usb3_sec_axi_clk",
1498 			.parent_hws = (const struct clk_hw *[]){
1499 				      &gcc_usb30_sec_master_clk_src.clkr.hw
1500 			},
1501 			.num_parents = 1,
1502 			.flags = CLK_SET_RATE_PARENT,
1503 			.ops = &clk_branch2_ops,
1504 		},
1505 	},
1506 };
1507 
1508 static struct clk_branch gcc_boot_rom_ahb_clk = {
1509 	.halt_reg = 0x38004,
1510 	.halt_check = BRANCH_HALT_VOTED,
1511 	.hwcg_reg = 0x38004,
1512 	.hwcg_bit = 1,
1513 	.clkr = {
1514 		.enable_reg = 0x52004,
1515 		.enable_mask = BIT(10),
1516 		.hw.init = &(struct clk_init_data){
1517 			.name = "gcc_boot_rom_ahb_clk",
1518 			.ops = &clk_branch2_ops,
1519 		},
1520 	},
1521 };
1522 
1523 static struct clk_branch gcc_camera_hf_axi_clk = {
1524 	.halt_reg = 0xb030,
1525 	.halt_check = BRANCH_HALT,
1526 	.clkr = {
1527 		.enable_reg = 0xb030,
1528 		.enable_mask = BIT(0),
1529 		.hw.init = &(struct clk_init_data){
1530 			.name = "gcc_camera_hf_axi_clk",
1531 			.ops = &clk_branch2_ops,
1532 		},
1533 	},
1534 };
1535 
1536 static struct clk_branch gcc_camera_sf_axi_clk = {
1537 	.halt_reg = 0xb034,
1538 	.halt_check = BRANCH_HALT,
1539 	.clkr = {
1540 		.enable_reg = 0xb034,
1541 		.enable_mask = BIT(0),
1542 		.hw.init = &(struct clk_init_data){
1543 			.name = "gcc_camera_sf_axi_clk",
1544 			.ops = &clk_branch2_ops,
1545 		},
1546 	},
1547 };
1548 
1549 static struct clk_branch gcc_cfg_noc_usb3_mp_axi_clk = {
1550 	.halt_reg = 0xa609c,
1551 	.halt_check = BRANCH_HALT,
1552 	.clkr = {
1553 		.enable_reg = 0xa609c,
1554 		.enable_mask = BIT(0),
1555 		.hw.init = &(struct clk_init_data){
1556 			.name = "gcc_cfg_noc_usb3_mp_axi_clk",
1557 			.parent_hws = (const struct clk_hw *[]){
1558 				      &gcc_usb30_mp_master_clk_src.clkr.hw
1559 			},
1560 			.num_parents = 1,
1561 			.flags = CLK_SET_RATE_PARENT,
1562 			.ops = &clk_branch2_ops,
1563 		},
1564 	},
1565 };
1566 
1567 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
1568 	.halt_reg = 0xf078,
1569 	.halt_check = BRANCH_HALT,
1570 	.clkr = {
1571 		.enable_reg = 0xf078,
1572 		.enable_mask = BIT(0),
1573 		.hw.init = &(struct clk_init_data){
1574 			.name = "gcc_cfg_noc_usb3_prim_axi_clk",
1575 			.parent_hws = (const struct clk_hw *[]){
1576 				      &gcc_usb30_prim_master_clk_src.clkr.hw
1577 			},
1578 			.num_parents = 1,
1579 			.flags = CLK_SET_RATE_PARENT,
1580 			.ops = &clk_branch2_ops,
1581 		},
1582 	},
1583 };
1584 
1585 static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = {
1586 	.halt_reg = 0x10078,
1587 	.halt_check = BRANCH_HALT,
1588 	.clkr = {
1589 		.enable_reg = 0x10078,
1590 		.enable_mask = BIT(0),
1591 		.hw.init = &(struct clk_init_data){
1592 			.name = "gcc_cfg_noc_usb3_sec_axi_clk",
1593 			.parent_hws = (const struct clk_hw *[]){
1594 				      &gcc_usb30_sec_master_clk_src.clkr.hw
1595 			},
1596 			.num_parents = 1,
1597 			.flags = CLK_SET_RATE_PARENT,
1598 			.ops = &clk_branch2_ops,
1599 		},
1600 	},
1601 };
1602 
1603 /* For CPUSS functionality the AHB clock needs to be left enabled */
1604 static struct clk_branch gcc_cpuss_ahb_clk = {
1605 	.halt_reg = 0x48000,
1606 	.halt_check = BRANCH_HALT_VOTED,
1607 	.clkr = {
1608 		.enable_reg = 0x52004,
1609 		.enable_mask = BIT(21),
1610 		.hw.init = &(struct clk_init_data){
1611 			.name = "gcc_cpuss_ahb_clk",
1612 			.parent_hws = (const struct clk_hw *[]){
1613 				      &gcc_cpuss_ahb_clk_src.clkr.hw
1614 			},
1615 			.num_parents = 1,
1616 			.flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
1617 			.ops = &clk_branch2_ops,
1618 		},
1619 	},
1620 };
1621 
1622 static struct clk_branch gcc_cpuss_rbcpr_clk = {
1623 	.halt_reg = 0x48008,
1624 	.halt_check = BRANCH_HALT,
1625 	.clkr = {
1626 		.enable_reg = 0x48008,
1627 		.enable_mask = BIT(0),
1628 		.hw.init = &(struct clk_init_data){
1629 			.name = "gcc_cpuss_rbcpr_clk",
1630 			.ops = &clk_branch2_ops,
1631 		},
1632 	},
1633 };
1634 
1635 static struct clk_branch gcc_ddrss_gpu_axi_clk = {
1636 	.halt_reg = 0x71154,
1637 	.halt_check = BRANCH_VOTED,
1638 	.clkr = {
1639 		.enable_reg = 0x71154,
1640 		.enable_mask = BIT(0),
1641 		.hw.init = &(struct clk_init_data){
1642 			.name = "gcc_ddrss_gpu_axi_clk",
1643 			.ops = &clk_branch2_ops,
1644 		},
1645 	},
1646 };
1647 
1648 static struct clk_branch gcc_disp_hf_axi_clk = {
1649 	.halt_reg = 0xb038,
1650 	.halt_check = BRANCH_HALT,
1651 	.clkr = {
1652 		.enable_reg = 0xb038,
1653 		.enable_mask = BIT(0),
1654 		.hw.init = &(struct clk_init_data){
1655 			.name = "gcc_disp_hf_axi_clk",
1656 			.ops = &clk_branch2_ops,
1657 		},
1658 	},
1659 };
1660 
1661 static struct clk_branch gcc_disp_sf_axi_clk = {
1662 	.halt_reg = 0xb03c,
1663 	.halt_check = BRANCH_HALT,
1664 	.clkr = {
1665 		.enable_reg = 0xb03c,
1666 		.enable_mask = BIT(0),
1667 		.hw.init = &(struct clk_init_data){
1668 			.name = "gcc_disp_sf_axi_clk",
1669 			.ops = &clk_branch2_ops,
1670 		},
1671 	},
1672 };
1673 
1674 static struct clk_branch gcc_emac_axi_clk = {
1675 	.halt_reg = 0x6010,
1676 	.halt_check = BRANCH_HALT,
1677 	.clkr = {
1678 		.enable_reg = 0x6010,
1679 		.enable_mask = BIT(0),
1680 		.hw.init = &(struct clk_init_data){
1681 			.name = "gcc_emac_axi_clk",
1682 			.ops = &clk_branch2_ops,
1683 		},
1684 	},
1685 };
1686 
1687 static struct clk_branch gcc_emac_ptp_clk = {
1688 	.halt_reg = 0x6034,
1689 	.halt_check = BRANCH_HALT,
1690 	.clkr = {
1691 		.enable_reg = 0x6034,
1692 		.enable_mask = BIT(0),
1693 		.hw.init = &(struct clk_init_data){
1694 			.name = "gcc_emac_ptp_clk",
1695 			.parent_hws = (const struct clk_hw *[]){
1696 				      &gcc_emac_ptp_clk_src.clkr.hw
1697 			},
1698 			.num_parents = 1,
1699 			.flags = CLK_SET_RATE_PARENT,
1700 			.ops = &clk_branch2_ops,
1701 		},
1702 	},
1703 };
1704 
1705 static struct clk_branch gcc_emac_rgmii_clk = {
1706 	.halt_reg = 0x6018,
1707 	.halt_check = BRANCH_HALT,
1708 	.clkr = {
1709 		.enable_reg = 0x6018,
1710 		.enable_mask = BIT(0),
1711 		.hw.init = &(struct clk_init_data){
1712 			.name = "gcc_emac_rgmii_clk",
1713 			.parent_hws = (const struct clk_hw *[]){
1714 				      &gcc_emac_rgmii_clk_src.clkr.hw
1715 			},
1716 			.num_parents = 1,
1717 			.flags = CLK_SET_RATE_PARENT,
1718 			.ops = &clk_branch2_ops,
1719 		},
1720 	},
1721 };
1722 
1723 static struct clk_branch gcc_emac_slv_ahb_clk = {
1724 	.halt_reg = 0x6014,
1725 	.halt_check = BRANCH_HALT,
1726 	.hwcg_reg = 0x6014,
1727 	.hwcg_bit = 1,
1728 	.clkr = {
1729 		.enable_reg = 0x6014,
1730 		.enable_mask = BIT(0),
1731 		.hw.init = &(struct clk_init_data){
1732 			.name = "gcc_emac_slv_ahb_clk",
1733 			.ops = &clk_branch2_ops,
1734 		},
1735 	},
1736 };
1737 
1738 static struct clk_branch gcc_gp1_clk = {
1739 	.halt_reg = 0x64000,
1740 	.halt_check = BRANCH_HALT,
1741 	.clkr = {
1742 		.enable_reg = 0x64000,
1743 		.enable_mask = BIT(0),
1744 		.hw.init = &(struct clk_init_data){
1745 			.name = "gcc_gp1_clk",
1746 			.parent_hws = (const struct clk_hw *[]){
1747 				      &gcc_gp1_clk_src.clkr.hw
1748 			},
1749 			.num_parents = 1,
1750 			.flags = CLK_SET_RATE_PARENT,
1751 			.ops = &clk_branch2_ops,
1752 		},
1753 	},
1754 };
1755 
1756 static struct clk_branch gcc_gp2_clk = {
1757 	.halt_reg = 0x65000,
1758 	.halt_check = BRANCH_HALT,
1759 	.clkr = {
1760 		.enable_reg = 0x65000,
1761 		.enable_mask = BIT(0),
1762 		.hw.init = &(struct clk_init_data){
1763 			.name = "gcc_gp2_clk",
1764 			.parent_hws = (const struct clk_hw *[]){
1765 				      &gcc_gp2_clk_src.clkr.hw
1766 			},
1767 			.num_parents = 1,
1768 			.flags = CLK_SET_RATE_PARENT,
1769 			.ops = &clk_branch2_ops,
1770 		},
1771 	},
1772 };
1773 
1774 static struct clk_branch gcc_gp3_clk = {
1775 	.halt_reg = 0x66000,
1776 	.halt_check = BRANCH_HALT,
1777 	.clkr = {
1778 		.enable_reg = 0x66000,
1779 		.enable_mask = BIT(0),
1780 		.hw.init = &(struct clk_init_data){
1781 			.name = "gcc_gp3_clk",
1782 			.parent_hws = (const struct clk_hw *[]){
1783 				      &gcc_gp3_clk_src.clkr.hw
1784 			},
1785 			.num_parents = 1,
1786 			.flags = CLK_SET_RATE_PARENT,
1787 			.ops = &clk_branch2_ops,
1788 		},
1789 	},
1790 };
1791 
1792 static struct clk_branch gcc_gp4_clk = {
1793 	.halt_reg = 0xbe000,
1794 	.halt_check = BRANCH_HALT,
1795 	.clkr = {
1796 		.enable_reg = 0xbe000,
1797 		.enable_mask = BIT(0),
1798 		.hw.init = &(struct clk_init_data){
1799 			.name = "gcc_gp4_clk",
1800 			.parent_hws = (const struct clk_hw *[]){
1801 				      &gcc_gp4_clk_src.clkr.hw
1802 			},
1803 			.num_parents = 1,
1804 			.flags = CLK_SET_RATE_PARENT,
1805 			.ops = &clk_branch2_ops,
1806 		},
1807 	},
1808 };
1809 
1810 static struct clk_branch gcc_gp5_clk = {
1811 	.halt_reg = 0xbf000,
1812 	.halt_check = BRANCH_HALT,
1813 	.clkr = {
1814 		.enable_reg = 0xbf000,
1815 		.enable_mask = BIT(0),
1816 		.hw.init = &(struct clk_init_data){
1817 			.name = "gcc_gp5_clk",
1818 			.parent_hws = (const struct clk_hw *[]){
1819 				      &gcc_gp5_clk_src.clkr.hw
1820 			},
1821 			.num_parents = 1,
1822 			.flags = CLK_SET_RATE_PARENT,
1823 			.ops = &clk_branch2_ops,
1824 		},
1825 	},
1826 };
1827 
1828 static struct clk_branch gcc_gpu_gpll0_clk_src = {
1829 	.halt_check = BRANCH_HALT_DELAY,
1830 	.clkr = {
1831 		.enable_reg = 0x52004,
1832 		.enable_mask = BIT(15),
1833 		.hw.init = &(struct clk_init_data){
1834 			.name = "gcc_gpu_gpll0_clk_src",
1835 			.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
1836 			.num_parents = 1,
1837 			.flags = CLK_SET_RATE_PARENT,
1838 			.ops = &clk_branch2_ops,
1839 		},
1840 	},
1841 };
1842 
1843 static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
1844 	.halt_check = BRANCH_HALT_DELAY,
1845 	.clkr = {
1846 		.enable_reg = 0x52004,
1847 		.enable_mask = BIT(16),
1848 		.hw.init = &(struct clk_init_data){
1849 			.name = "gcc_gpu_gpll0_div_clk_src",
1850 			.parent_hws = (const struct clk_hw *[]){
1851 				      &gpll0_out_even.clkr.hw
1852 			},
1853 			.num_parents = 1,
1854 			.flags = CLK_SET_RATE_PARENT,
1855 			.ops = &clk_branch2_ops,
1856 		},
1857 	},
1858 };
1859 
1860 static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
1861 	.halt_reg = 0x7100c,
1862 	.halt_check = BRANCH_VOTED,
1863 	.clkr = {
1864 		.enable_reg = 0x7100c,
1865 		.enable_mask = BIT(0),
1866 		.hw.init = &(struct clk_init_data){
1867 			.name = "gcc_gpu_memnoc_gfx_clk",
1868 			.ops = &clk_branch2_ops,
1869 		},
1870 	},
1871 };
1872 
1873 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
1874 	.halt_reg = 0x71018,
1875 	.halt_check = BRANCH_HALT,
1876 	.clkr = {
1877 		.enable_reg = 0x71018,
1878 		.enable_mask = BIT(0),
1879 		.hw.init = &(struct clk_init_data){
1880 			.name = "gcc_gpu_snoc_dvm_gfx_clk",
1881 			.ops = &clk_branch2_ops,
1882 		},
1883 	},
1884 };
1885 
1886 static struct clk_branch gcc_npu_at_clk = {
1887 	.halt_reg = 0x4d010,
1888 	.halt_check = BRANCH_VOTED,
1889 	.clkr = {
1890 		.enable_reg = 0x4d010,
1891 		.enable_mask = BIT(0),
1892 		.hw.init = &(struct clk_init_data){
1893 			.name = "gcc_npu_at_clk",
1894 			.ops = &clk_branch2_ops,
1895 		},
1896 	},
1897 };
1898 
1899 static struct clk_branch gcc_npu_axi_clk = {
1900 	.halt_reg = 0x4d008,
1901 	.halt_check = BRANCH_VOTED,
1902 	.clkr = {
1903 		.enable_reg = 0x4d008,
1904 		.enable_mask = BIT(0),
1905 		.hw.init = &(struct clk_init_data){
1906 			.name = "gcc_npu_axi_clk",
1907 			.parent_hws = (const struct clk_hw *[]){
1908 				      &gcc_npu_axi_clk_src.clkr.hw
1909 			},
1910 			.num_parents = 1,
1911 			.flags = CLK_SET_RATE_PARENT,
1912 			.ops = &clk_branch2_ops,
1913 		},
1914 	},
1915 };
1916 
1917 static struct clk_branch gcc_npu_gpll0_clk_src = {
1918 	.halt_check = BRANCH_HALT_DELAY,
1919 	.clkr = {
1920 		.enable_reg = 0x52004,
1921 		.enable_mask = BIT(18),
1922 		.hw.init = &(struct clk_init_data){
1923 			.name = "gcc_npu_gpll0_clk_src",
1924 			.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
1925 			.num_parents = 1,
1926 			.flags = CLK_SET_RATE_PARENT,
1927 			.ops = &clk_branch2_ops,
1928 		},
1929 	},
1930 };
1931 
1932 static struct clk_branch gcc_npu_gpll0_div_clk_src = {
1933 	.halt_check = BRANCH_HALT_DELAY,
1934 	.clkr = {
1935 		.enable_reg = 0x52004,
1936 		.enable_mask = BIT(19),
1937 		.hw.init = &(struct clk_init_data){
1938 			.name = "gcc_npu_gpll0_div_clk_src",
1939 			.parent_hws = (const struct clk_hw *[]){
1940 				      &gpll0_out_even.clkr.hw
1941 			},
1942 			.num_parents = 1,
1943 			.flags = CLK_SET_RATE_PARENT,
1944 			.ops = &clk_branch2_ops,
1945 		},
1946 	},
1947 };
1948 
1949 static struct clk_branch gcc_npu_trig_clk = {
1950 	.halt_reg = 0x4d00c,
1951 	.halt_check = BRANCH_VOTED,
1952 	.clkr = {
1953 		.enable_reg = 0x4d00c,
1954 		.enable_mask = BIT(0),
1955 		.hw.init = &(struct clk_init_data){
1956 			.name = "gcc_npu_trig_clk",
1957 			.ops = &clk_branch2_ops,
1958 		},
1959 	},
1960 };
1961 
1962 static struct clk_branch gcc_pcie0_phy_refgen_clk = {
1963 	.halt_reg = 0x6f02c,
1964 	.halt_check = BRANCH_HALT,
1965 	.clkr = {
1966 		.enable_reg = 0x6f02c,
1967 		.enable_mask = BIT(0),
1968 		.hw.init = &(struct clk_init_data){
1969 			.name = "gcc_pcie0_phy_refgen_clk",
1970 			.parent_hws = (const struct clk_hw *[]){
1971 				      &gcc_pcie_phy_refgen_clk_src.clkr.hw
1972 			},
1973 			.num_parents = 1,
1974 			.flags = CLK_SET_RATE_PARENT,
1975 			.ops = &clk_branch2_ops,
1976 		},
1977 	},
1978 };
1979 
1980 static struct clk_branch gcc_pcie1_phy_refgen_clk = {
1981 	.halt_reg = 0x6f030,
1982 	.halt_check = BRANCH_HALT,
1983 	.clkr = {
1984 		.enable_reg = 0x6f030,
1985 		.enable_mask = BIT(0),
1986 		.hw.init = &(struct clk_init_data){
1987 			.name = "gcc_pcie1_phy_refgen_clk",
1988 			.parent_hws = (const struct clk_hw *[]){
1989 				      &gcc_pcie_phy_refgen_clk_src.clkr.hw
1990 			},
1991 			.num_parents = 1,
1992 			.flags = CLK_SET_RATE_PARENT,
1993 			.ops = &clk_branch2_ops,
1994 		},
1995 	},
1996 };
1997 
1998 static struct clk_branch gcc_pcie2_phy_refgen_clk = {
1999 	.halt_reg = 0x6f034,
2000 	.halt_check = BRANCH_HALT,
2001 	.clkr = {
2002 		.enable_reg = 0x6f034,
2003 		.enable_mask = BIT(0),
2004 		.hw.init = &(struct clk_init_data){
2005 			.name = "gcc_pcie2_phy_refgen_clk",
2006 			.parent_hws = (const struct clk_hw *[]){
2007 				      &gcc_pcie_phy_refgen_clk_src.clkr.hw
2008 			},
2009 			.num_parents = 1,
2010 			.flags = CLK_SET_RATE_PARENT,
2011 			.ops = &clk_branch2_ops,
2012 		},
2013 	},
2014 };
2015 
2016 static struct clk_branch gcc_pcie3_phy_refgen_clk = {
2017 	.halt_reg = 0x6f038,
2018 	.halt_check = BRANCH_HALT,
2019 	.clkr = {
2020 		.enable_reg = 0x6f038,
2021 		.enable_mask = BIT(0),
2022 		.hw.init = &(struct clk_init_data){
2023 			.name = "gcc_pcie3_phy_refgen_clk",
2024 			.parent_hws = (const struct clk_hw *[]){
2025 				      &gcc_pcie_phy_refgen_clk_src.clkr.hw
2026 			},
2027 			.num_parents = 1,
2028 			.flags = CLK_SET_RATE_PARENT,
2029 			.ops = &clk_branch2_ops,
2030 		},
2031 	},
2032 };
2033 
2034 static struct clk_branch gcc_pcie_0_aux_clk = {
2035 	.halt_reg = 0x6b020,
2036 	.halt_check = BRANCH_HALT_VOTED,
2037 	.clkr = {
2038 		.enable_reg = 0x5200c,
2039 		.enable_mask = BIT(3),
2040 		.hw.init = &(struct clk_init_data){
2041 			.name = "gcc_pcie_0_aux_clk",
2042 			.parent_hws = (const struct clk_hw *[]){
2043 				      &gcc_pcie_0_aux_clk_src.clkr.hw
2044 			},
2045 			.num_parents = 1,
2046 			.flags = CLK_SET_RATE_PARENT,
2047 			.ops = &clk_branch2_ops,
2048 		},
2049 	},
2050 };
2051 
2052 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
2053 	.halt_reg = 0x6b01c,
2054 	.halt_check = BRANCH_HALT_VOTED,
2055 	.hwcg_reg = 0x6b01c,
2056 	.hwcg_bit = 1,
2057 	.clkr = {
2058 		.enable_reg = 0x5200c,
2059 		.enable_mask = BIT(2),
2060 		.hw.init = &(struct clk_init_data){
2061 			.name = "gcc_pcie_0_cfg_ahb_clk",
2062 			.ops = &clk_branch2_ops,
2063 		},
2064 	},
2065 };
2066 
2067 static struct clk_branch gcc_pcie_0_clkref_clk = {
2068 	.halt_reg = 0x8c00c,
2069 	.halt_check = BRANCH_HALT,
2070 	.clkr = {
2071 		.enable_reg = 0x8c00c,
2072 		.enable_mask = BIT(0),
2073 		.hw.init = &(struct clk_init_data){
2074 			.name = "gcc_pcie_0_clkref_clk",
2075 			.ops = &clk_branch2_ops,
2076 		},
2077 	},
2078 };
2079 
2080 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
2081 	.halt_reg = 0x6b018,
2082 	.halt_check = BRANCH_HALT_VOTED,
2083 	.clkr = {
2084 		.enable_reg = 0x5200c,
2085 		.enable_mask = BIT(1),
2086 		.hw.init = &(struct clk_init_data){
2087 			.name = "gcc_pcie_0_mstr_axi_clk",
2088 			.ops = &clk_branch2_ops,
2089 		},
2090 	},
2091 };
2092 
2093 static struct clk_branch gcc_pcie_0_pipe_clk = {
2094 	.halt_reg = 0x6b024,
2095 	.halt_check = BRANCH_HALT_SKIP,
2096 	.clkr = {
2097 		.enable_reg = 0x5200c,
2098 		.enable_mask = BIT(4),
2099 		.hw.init = &(struct clk_init_data){
2100 			.name = "gcc_pcie_0_pipe_clk",
2101 			.ops = &clk_branch2_ops,
2102 		},
2103 	},
2104 };
2105 
2106 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
2107 	.halt_reg = 0x6b014,
2108 	.halt_check = BRANCH_HALT_VOTED,
2109 	.hwcg_reg = 0x6b014,
2110 	.hwcg_bit = 1,
2111 	.clkr = {
2112 		.enable_reg = 0x5200c,
2113 		.enable_mask = BIT(0),
2114 		.hw.init = &(struct clk_init_data){
2115 			.name = "gcc_pcie_0_slv_axi_clk",
2116 			.ops = &clk_branch2_ops,
2117 		},
2118 	},
2119 };
2120 
2121 static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
2122 	.halt_reg = 0x6b010,
2123 	.halt_check = BRANCH_HALT_VOTED,
2124 	.clkr = {
2125 		.enable_reg = 0x5200c,
2126 		.enable_mask = BIT(5),
2127 		.hw.init = &(struct clk_init_data){
2128 			.name = "gcc_pcie_0_slv_q2a_axi_clk",
2129 			.ops = &clk_branch2_ops,
2130 		},
2131 	},
2132 };
2133 
2134 static struct clk_branch gcc_pcie_1_aux_clk = {
2135 	.halt_reg = 0x8d020,
2136 	.halt_check = BRANCH_HALT_VOTED,
2137 	.clkr = {
2138 		.enable_reg = 0x52004,
2139 		.enable_mask = BIT(29),
2140 		.hw.init = &(struct clk_init_data){
2141 			.name = "gcc_pcie_1_aux_clk",
2142 			.parent_hws = (const struct clk_hw *[]){
2143 				&gcc_pcie_1_aux_clk_src.clkr.hw
2144 			},
2145 			.num_parents = 1,
2146 			.flags = CLK_SET_RATE_PARENT,
2147 			.ops = &clk_branch2_ops,
2148 		},
2149 	},
2150 };
2151 
2152 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
2153 	.halt_reg = 0x8d01c,
2154 	.halt_check = BRANCH_HALT_VOTED,
2155 	.hwcg_reg = 0x8d01c,
2156 	.hwcg_bit = 1,
2157 	.clkr = {
2158 		.enable_reg = 0x52004,
2159 		.enable_mask = BIT(28),
2160 		.hw.init = &(struct clk_init_data){
2161 			.name = "gcc_pcie_1_cfg_ahb_clk",
2162 			.ops = &clk_branch2_ops,
2163 		},
2164 	},
2165 };
2166 
2167 static struct clk_branch gcc_pcie_1_clkref_clk = {
2168 	.halt_reg = 0x8c02c,
2169 	.halt_check = BRANCH_HALT,
2170 	.clkr = {
2171 		.enable_reg = 0x8c02c,
2172 		.enable_mask = BIT(0),
2173 		.hw.init = &(struct clk_init_data){
2174 			.name = "gcc_pcie_1_clkref_clk",
2175 			.ops = &clk_branch2_ops,
2176 		},
2177 	},
2178 };
2179 
2180 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
2181 	.halt_reg = 0x8d018,
2182 	.halt_check = BRANCH_HALT_VOTED,
2183 	.clkr = {
2184 		.enable_reg = 0x52004,
2185 		.enable_mask = BIT(27),
2186 		.hw.init = &(struct clk_init_data){
2187 			.name = "gcc_pcie_1_mstr_axi_clk",
2188 			.ops = &clk_branch2_ops,
2189 		},
2190 	},
2191 };
2192 
2193 static struct clk_branch gcc_pcie_1_pipe_clk = {
2194 	.halt_reg = 0x8d024,
2195 	.halt_check = BRANCH_HALT_SKIP,
2196 	.clkr = {
2197 		.enable_reg = 0x52004,
2198 		.enable_mask = BIT(30),
2199 		.hw.init = &(struct clk_init_data){
2200 			.name = "gcc_pcie_1_pipe_clk",
2201 			.ops = &clk_branch2_ops,
2202 		},
2203 	},
2204 };
2205 
2206 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
2207 	.halt_reg = 0x8d014,
2208 	.halt_check = BRANCH_HALT_VOTED,
2209 	.hwcg_reg = 0x8d014,
2210 	.hwcg_bit = 1,
2211 	.clkr = {
2212 		.enable_reg = 0x52004,
2213 		.enable_mask = BIT(26),
2214 		.hw.init = &(struct clk_init_data){
2215 			.name = "gcc_pcie_1_slv_axi_clk",
2216 			.ops = &clk_branch2_ops,
2217 		},
2218 	},
2219 };
2220 
2221 static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
2222 	.halt_reg = 0x8d010,
2223 	.halt_check = BRANCH_HALT_VOTED,
2224 	.clkr = {
2225 		.enable_reg = 0x52004,
2226 		.enable_mask = BIT(25),
2227 		.hw.init = &(struct clk_init_data){
2228 			.name = "gcc_pcie_1_slv_q2a_axi_clk",
2229 			.ops = &clk_branch2_ops,
2230 		},
2231 	},
2232 };
2233 
2234 static struct clk_branch gcc_pcie_2_aux_clk = {
2235 	.halt_reg = 0x9d020,
2236 	.halt_check = BRANCH_HALT_VOTED,
2237 	.clkr = {
2238 		.enable_reg = 0x52014,
2239 		.enable_mask = BIT(14),
2240 		.hw.init = &(struct clk_init_data){
2241 			.name = "gcc_pcie_2_aux_clk",
2242 			.parent_hws = (const struct clk_hw *[]){
2243 				&gcc_pcie_2_aux_clk_src.clkr.hw
2244 			},
2245 			.num_parents = 1,
2246 			.flags = CLK_SET_RATE_PARENT,
2247 			.ops = &clk_branch2_ops,
2248 		},
2249 	},
2250 };
2251 
2252 static struct clk_branch gcc_pcie_2_cfg_ahb_clk = {
2253 	.halt_reg = 0x9d01c,
2254 	.halt_check = BRANCH_HALT_VOTED,
2255 	.hwcg_reg = 0x9d01c,
2256 	.hwcg_bit = 1,
2257 	.clkr = {
2258 		.enable_reg = 0x52014,
2259 		.enable_mask = BIT(13),
2260 		.hw.init = &(struct clk_init_data){
2261 			.name = "gcc_pcie_2_cfg_ahb_clk",
2262 			.ops = &clk_branch2_ops,
2263 		},
2264 	},
2265 };
2266 
2267 static struct clk_branch gcc_pcie_2_clkref_clk = {
2268 	.halt_reg = 0x8c014,
2269 	.halt_check = BRANCH_HALT,
2270 	.clkr = {
2271 		.enable_reg = 0x8c014,
2272 		.enable_mask = BIT(0),
2273 		.hw.init = &(struct clk_init_data){
2274 			.name = "gcc_pcie_2_clkref_clk",
2275 			.ops = &clk_branch2_ops,
2276 		},
2277 	},
2278 };
2279 
2280 static struct clk_branch gcc_pcie_2_mstr_axi_clk = {
2281 	.halt_reg = 0x9d018,
2282 	.halt_check = BRANCH_HALT_VOTED,
2283 	.clkr = {
2284 		.enable_reg = 0x52014,
2285 		.enable_mask = BIT(12),
2286 		.hw.init = &(struct clk_init_data){
2287 			.name = "gcc_pcie_2_mstr_axi_clk",
2288 			.ops = &clk_branch2_ops,
2289 		},
2290 	},
2291 };
2292 
2293 static struct clk_branch gcc_pcie_2_pipe_clk = {
2294 	.halt_reg = 0x9d024,
2295 	.halt_check = BRANCH_HALT_SKIP,
2296 	.clkr = {
2297 		.enable_reg = 0x52014,
2298 		.enable_mask = BIT(15),
2299 		.hw.init = &(struct clk_init_data){
2300 			.name = "gcc_pcie_2_pipe_clk",
2301 			.ops = &clk_branch2_ops,
2302 		},
2303 	},
2304 };
2305 
2306 static struct clk_branch gcc_pcie_2_slv_axi_clk = {
2307 	.halt_reg = 0x9d014,
2308 	.halt_check = BRANCH_HALT_VOTED,
2309 	.hwcg_reg = 0x9d014,
2310 	.hwcg_bit = 1,
2311 	.clkr = {
2312 		.enable_reg = 0x52014,
2313 		.enable_mask = BIT(11),
2314 		.hw.init = &(struct clk_init_data){
2315 			.name = "gcc_pcie_2_slv_axi_clk",
2316 			.ops = &clk_branch2_ops,
2317 		},
2318 	},
2319 };
2320 
2321 static struct clk_branch gcc_pcie_2_slv_q2a_axi_clk = {
2322 	.halt_reg = 0x9d010,
2323 	.halt_check = BRANCH_HALT_VOTED,
2324 	.clkr = {
2325 		.enable_reg = 0x52014,
2326 		.enable_mask = BIT(10),
2327 		.hw.init = &(struct clk_init_data){
2328 			.name = "gcc_pcie_2_slv_q2a_axi_clk",
2329 			.ops = &clk_branch2_ops,
2330 		},
2331 	},
2332 };
2333 
2334 static struct clk_branch gcc_pcie_3_aux_clk = {
2335 	.halt_reg = 0xa3020,
2336 	.halt_check = BRANCH_HALT_VOTED,
2337 	.clkr = {
2338 		.enable_reg = 0x52014,
2339 		.enable_mask = BIT(20),
2340 		.hw.init = &(struct clk_init_data){
2341 			.name = "gcc_pcie_3_aux_clk",
2342 			.parent_hws = (const struct clk_hw *[]){
2343 				&gcc_pcie_3_aux_clk_src.clkr.hw
2344 			},
2345 			.num_parents = 1,
2346 			.flags = CLK_SET_RATE_PARENT,
2347 			.ops = &clk_branch2_ops,
2348 		},
2349 	},
2350 };
2351 
2352 static struct clk_branch gcc_pcie_3_cfg_ahb_clk = {
2353 	.halt_reg = 0xa301c,
2354 	.halt_check = BRANCH_HALT_VOTED,
2355 	.hwcg_reg = 0xa301c,
2356 	.hwcg_bit = 1,
2357 	.clkr = {
2358 		.enable_reg = 0x52014,
2359 		.enable_mask = BIT(19),
2360 		.hw.init = &(struct clk_init_data){
2361 			.name = "gcc_pcie_3_cfg_ahb_clk",
2362 			.ops = &clk_branch2_ops,
2363 		},
2364 	},
2365 };
2366 
2367 static struct clk_branch gcc_pcie_3_clkref_clk = {
2368 	.halt_reg = 0x8c018,
2369 	.halt_check = BRANCH_HALT,
2370 	.clkr = {
2371 		.enable_reg = 0x8c018,
2372 		.enable_mask = BIT(0),
2373 		.hw.init = &(struct clk_init_data){
2374 			.name = "gcc_pcie_3_clkref_clk",
2375 			.ops = &clk_branch2_ops,
2376 		},
2377 	},
2378 };
2379 
2380 static struct clk_branch gcc_pcie_3_mstr_axi_clk = {
2381 	.halt_reg = 0xa3018,
2382 	.halt_check = BRANCH_HALT_VOTED,
2383 	.clkr = {
2384 		.enable_reg = 0x52014,
2385 		.enable_mask = BIT(18),
2386 		.hw.init = &(struct clk_init_data){
2387 			.name = "gcc_pcie_3_mstr_axi_clk",
2388 			.ops = &clk_branch2_ops,
2389 		},
2390 	},
2391 };
2392 
2393 static struct clk_branch gcc_pcie_3_pipe_clk = {
2394 	.halt_reg = 0xa3024,
2395 	.halt_check = BRANCH_HALT_SKIP,
2396 	.clkr = {
2397 		.enable_reg = 0x52014,
2398 		.enable_mask = BIT(21),
2399 		.hw.init = &(struct clk_init_data){
2400 			.name = "gcc_pcie_3_pipe_clk",
2401 			.ops = &clk_branch2_ops,
2402 		},
2403 	},
2404 };
2405 
2406 static struct clk_branch gcc_pcie_3_slv_axi_clk = {
2407 	.halt_reg = 0xa3014,
2408 	.halt_check = BRANCH_HALT_VOTED,
2409 	.hwcg_reg = 0xa3014,
2410 	.hwcg_bit = 1,
2411 	.clkr = {
2412 		.enable_reg = 0x52014,
2413 		.enable_mask = BIT(17),
2414 		.hw.init = &(struct clk_init_data){
2415 			.name = "gcc_pcie_3_slv_axi_clk",
2416 			.ops = &clk_branch2_ops,
2417 		},
2418 	},
2419 };
2420 
2421 static struct clk_branch gcc_pcie_3_slv_q2a_axi_clk = {
2422 	.halt_reg = 0xa3010,
2423 	.halt_check = BRANCH_HALT_VOTED,
2424 	.clkr = {
2425 		.enable_reg = 0x52014,
2426 		.enable_mask = BIT(16),
2427 		.hw.init = &(struct clk_init_data){
2428 			.name = "gcc_pcie_3_slv_q2a_axi_clk",
2429 			.ops = &clk_branch2_ops,
2430 		},
2431 	},
2432 };
2433 
2434 static struct clk_branch gcc_pcie_phy_aux_clk = {
2435 	.halt_reg = 0x6f004,
2436 	.halt_check = BRANCH_HALT,
2437 	.clkr = {
2438 		.enable_reg = 0x6f004,
2439 		.enable_mask = BIT(0),
2440 		.hw.init = &(struct clk_init_data){
2441 			.name = "gcc_pcie_phy_aux_clk",
2442 			.parent_hws = (const struct clk_hw *[]){
2443 				      &gcc_pcie_0_aux_clk_src.clkr.hw
2444 			},
2445 			.num_parents = 1,
2446 			.flags = CLK_SET_RATE_PARENT,
2447 			.ops = &clk_branch2_ops,
2448 		},
2449 	},
2450 };
2451 
2452 static struct clk_branch gcc_pdm2_clk = {
2453 	.halt_reg = 0x3300c,
2454 	.halt_check = BRANCH_HALT,
2455 	.clkr = {
2456 		.enable_reg = 0x3300c,
2457 		.enable_mask = BIT(0),
2458 		.hw.init = &(struct clk_init_data){
2459 			.name = "gcc_pdm2_clk",
2460 			.parent_hws = (const struct clk_hw *[]){
2461 				      &gcc_pdm2_clk_src.clkr.hw
2462 			},
2463 			.num_parents = 1,
2464 			.flags = CLK_SET_RATE_PARENT,
2465 			.ops = &clk_branch2_ops,
2466 		},
2467 	},
2468 };
2469 
2470 static struct clk_branch gcc_pdm_ahb_clk = {
2471 	.halt_reg = 0x33004,
2472 	.halt_check = BRANCH_HALT,
2473 	.hwcg_reg = 0x33004,
2474 	.hwcg_bit = 1,
2475 	.clkr = {
2476 		.enable_reg = 0x33004,
2477 		.enable_mask = BIT(0),
2478 		.hw.init = &(struct clk_init_data){
2479 			.name = "gcc_pdm_ahb_clk",
2480 			.ops = &clk_branch2_ops,
2481 		},
2482 	},
2483 };
2484 
2485 static struct clk_branch gcc_pdm_xo4_clk = {
2486 	.halt_reg = 0x33008,
2487 	.halt_check = BRANCH_HALT,
2488 	.clkr = {
2489 		.enable_reg = 0x33008,
2490 		.enable_mask = BIT(0),
2491 		.hw.init = &(struct clk_init_data){
2492 			.name = "gcc_pdm_xo4_clk",
2493 			.ops = &clk_branch2_ops,
2494 		},
2495 	},
2496 };
2497 
2498 static struct clk_branch gcc_prng_ahb_clk = {
2499 	.halt_reg = 0x34004,
2500 	.halt_check = BRANCH_HALT_VOTED,
2501 	.clkr = {
2502 		.enable_reg = 0x52004,
2503 		.enable_mask = BIT(13),
2504 		.hw.init = &(struct clk_init_data){
2505 			.name = "gcc_prng_ahb_clk",
2506 			.ops = &clk_branch2_ops,
2507 		},
2508 	},
2509 };
2510 
2511 static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
2512 	.halt_reg = 0xb018,
2513 	.halt_check = BRANCH_HALT,
2514 	.hwcg_reg = 0xb018,
2515 	.hwcg_bit = 1,
2516 	.clkr = {
2517 		.enable_reg = 0xb018,
2518 		.enable_mask = BIT(0),
2519 		.hw.init = &(struct clk_init_data){
2520 			.name = "gcc_qmip_camera_nrt_ahb_clk",
2521 			.ops = &clk_branch2_ops,
2522 		},
2523 	},
2524 };
2525 
2526 static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
2527 	.halt_reg = 0xb01c,
2528 	.halt_check = BRANCH_HALT,
2529 	.hwcg_reg = 0xb01c,
2530 	.hwcg_bit = 1,
2531 	.clkr = {
2532 		.enable_reg = 0xb01c,
2533 		.enable_mask = BIT(0),
2534 		.hw.init = &(struct clk_init_data){
2535 			.name = "gcc_qmip_camera_rt_ahb_clk",
2536 			.ops = &clk_branch2_ops,
2537 		},
2538 	},
2539 };
2540 
2541 static struct clk_branch gcc_qmip_disp_ahb_clk = {
2542 	.halt_reg = 0xb020,
2543 	.halt_check = BRANCH_HALT,
2544 	.hwcg_reg = 0xb020,
2545 	.hwcg_bit = 1,
2546 	.clkr = {
2547 		.enable_reg = 0xb020,
2548 		.enable_mask = BIT(0),
2549 		.hw.init = &(struct clk_init_data){
2550 			.name = "gcc_qmip_disp_ahb_clk",
2551 			.ops = &clk_branch2_ops,
2552 		},
2553 	},
2554 };
2555 
2556 static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {
2557 	.halt_reg = 0xb010,
2558 	.halt_check = BRANCH_HALT,
2559 	.hwcg_reg = 0xb010,
2560 	.hwcg_bit = 1,
2561 	.clkr = {
2562 		.enable_reg = 0xb010,
2563 		.enable_mask = BIT(0),
2564 		.hw.init = &(struct clk_init_data){
2565 			.name = "gcc_qmip_video_cvp_ahb_clk",
2566 			.ops = &clk_branch2_ops,
2567 		},
2568 	},
2569 };
2570 
2571 static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
2572 	.halt_reg = 0xb014,
2573 	.halt_check = BRANCH_HALT,
2574 	.hwcg_reg = 0xb014,
2575 	.hwcg_bit = 1,
2576 	.clkr = {
2577 		.enable_reg = 0xb014,
2578 		.enable_mask = BIT(0),
2579 		.hw.init = &(struct clk_init_data){
2580 			.name = "gcc_qmip_video_vcodec_ahb_clk",
2581 			.ops = &clk_branch2_ops,
2582 		},
2583 	},
2584 };
2585 
2586 static struct clk_branch gcc_qspi_1_cnoc_periph_ahb_clk = {
2587 	.halt_reg = 0x4a004,
2588 	.halt_check = BRANCH_HALT,
2589 	.clkr = {
2590 		.enable_reg = 0x4a004,
2591 		.enable_mask = BIT(0),
2592 		.hw.init = &(struct clk_init_data){
2593 			.name = "gcc_qspi_1_cnoc_periph_ahb_clk",
2594 			.ops = &clk_branch2_ops,
2595 		},
2596 	},
2597 };
2598 
2599 static struct clk_branch gcc_qspi_1_core_clk = {
2600 	.halt_reg = 0x4a008,
2601 	.halt_check = BRANCH_HALT,
2602 	.clkr = {
2603 		.enable_reg = 0x4a008,
2604 		.enable_mask = BIT(0),
2605 		.hw.init = &(struct clk_init_data){
2606 			.name = "gcc_qspi_1_core_clk",
2607 			.parent_hws = (const struct clk_hw *[]){
2608 				      &gcc_qspi_1_core_clk_src.clkr.hw
2609 			},
2610 			.num_parents = 1,
2611 			.flags = CLK_SET_RATE_PARENT,
2612 			.ops = &clk_branch2_ops,
2613 		},
2614 	},
2615 };
2616 
2617 static struct clk_branch gcc_qspi_cnoc_periph_ahb_clk = {
2618 	.halt_reg = 0x4b000,
2619 	.halt_check = BRANCH_HALT,
2620 	.clkr = {
2621 		.enable_reg = 0x4b000,
2622 		.enable_mask = BIT(0),
2623 		.hw.init = &(struct clk_init_data){
2624 			.name = "gcc_qspi_cnoc_periph_ahb_clk",
2625 			.ops = &clk_branch2_ops,
2626 		},
2627 	},
2628 };
2629 
2630 static struct clk_branch gcc_qspi_core_clk = {
2631 	.halt_reg = 0x4b004,
2632 	.halt_check = BRANCH_HALT,
2633 	.clkr = {
2634 		.enable_reg = 0x4b004,
2635 		.enable_mask = BIT(0),
2636 		.hw.init = &(struct clk_init_data){
2637 			.name = "gcc_qspi_core_clk",
2638 			.parent_hws = (const struct clk_hw *[]){
2639 				      &gcc_qspi_core_clk_src.clkr.hw
2640 			},
2641 			.num_parents = 1,
2642 			.flags = CLK_SET_RATE_PARENT,
2643 			.ops = &clk_branch2_ops,
2644 		},
2645 	},
2646 };
2647 
2648 static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
2649 	.halt_reg = 0x17144,
2650 	.halt_check = BRANCH_HALT_VOTED,
2651 	.clkr = {
2652 		.enable_reg = 0x5200c,
2653 		.enable_mask = BIT(10),
2654 		.hw.init = &(struct clk_init_data){
2655 			.name = "gcc_qupv3_wrap0_s0_clk",
2656 			.parent_hws = (const struct clk_hw *[]){
2657 				      &gcc_qupv3_wrap0_s0_clk_src.clkr.hw
2658 			},
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_qupv3_wrap0_s1_clk = {
2667 	.halt_reg = 0x17274,
2668 	.halt_check = BRANCH_HALT_VOTED,
2669 	.clkr = {
2670 		.enable_reg = 0x5200c,
2671 		.enable_mask = BIT(11),
2672 		.hw.init = &(struct clk_init_data){
2673 			.name = "gcc_qupv3_wrap0_s1_clk",
2674 			.parent_hws = (const struct clk_hw *[]){
2675 				&gcc_qupv3_wrap0_s1_clk_src.clkr.hw
2676 			},
2677 			.num_parents = 1,
2678 			.flags = CLK_SET_RATE_PARENT,
2679 			.ops = &clk_branch2_ops,
2680 		},
2681 	},
2682 };
2683 
2684 static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
2685 	.halt_reg = 0x173a4,
2686 	.halt_check = BRANCH_HALT_VOTED,
2687 	.clkr = {
2688 		.enable_reg = 0x5200c,
2689 		.enable_mask = BIT(12),
2690 		.hw.init = &(struct clk_init_data){
2691 			.name = "gcc_qupv3_wrap0_s2_clk",
2692 			.parent_hws = (const struct clk_hw *[]){
2693 				&gcc_qupv3_wrap0_s2_clk_src.clkr.hw
2694 			},
2695 			.num_parents = 1,
2696 			.flags = CLK_SET_RATE_PARENT,
2697 			.ops = &clk_branch2_ops,
2698 		},
2699 	},
2700 };
2701 
2702 static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
2703 	.halt_reg = 0x174d4,
2704 	.halt_check = BRANCH_HALT_VOTED,
2705 	.clkr = {
2706 		.enable_reg = 0x5200c,
2707 		.enable_mask = BIT(13),
2708 		.hw.init = &(struct clk_init_data){
2709 			.name = "gcc_qupv3_wrap0_s3_clk",
2710 			.parent_hws = (const struct clk_hw *[]){
2711 				&gcc_qupv3_wrap0_s3_clk_src.clkr.hw
2712 			},
2713 			.num_parents = 1,
2714 			.flags = CLK_SET_RATE_PARENT,
2715 			.ops = &clk_branch2_ops,
2716 		},
2717 	},
2718 };
2719 
2720 static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
2721 	.halt_reg = 0x17604,
2722 	.halt_check = BRANCH_HALT_VOTED,
2723 	.clkr = {
2724 		.enable_reg = 0x5200c,
2725 		.enable_mask = BIT(14),
2726 		.hw.init = &(struct clk_init_data){
2727 			.name = "gcc_qupv3_wrap0_s4_clk",
2728 			.parent_hws = (const struct clk_hw *[]){
2729 				&gcc_qupv3_wrap0_s4_clk_src.clkr.hw
2730 			},
2731 			.num_parents = 1,
2732 			.flags = CLK_SET_RATE_PARENT,
2733 			.ops = &clk_branch2_ops,
2734 		},
2735 	},
2736 };
2737 
2738 static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
2739 	.halt_reg = 0x17734,
2740 	.halt_check = BRANCH_HALT_VOTED,
2741 	.clkr = {
2742 		.enable_reg = 0x5200c,
2743 		.enable_mask = BIT(15),
2744 		.hw.init = &(struct clk_init_data){
2745 			.name = "gcc_qupv3_wrap0_s5_clk",
2746 			.parent_hws = (const struct clk_hw *[]){
2747 				&gcc_qupv3_wrap0_s5_clk_src.clkr.hw
2748 			},
2749 			.num_parents = 1,
2750 			.flags = CLK_SET_RATE_PARENT,
2751 			.ops = &clk_branch2_ops,
2752 		},
2753 	},
2754 };
2755 
2756 static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
2757 	.halt_reg = 0x17864,
2758 	.halt_check = BRANCH_HALT_VOTED,
2759 	.clkr = {
2760 		.enable_reg = 0x5200c,
2761 		.enable_mask = BIT(16),
2762 		.hw.init = &(struct clk_init_data){
2763 			.name = "gcc_qupv3_wrap0_s6_clk",
2764 			.parent_hws = (const struct clk_hw *[]){
2765 				&gcc_qupv3_wrap0_s6_clk_src.clkr.hw
2766 			},
2767 			.num_parents = 1,
2768 			.flags = CLK_SET_RATE_PARENT,
2769 			.ops = &clk_branch2_ops,
2770 		},
2771 	},
2772 };
2773 
2774 static struct clk_branch gcc_qupv3_wrap0_s7_clk = {
2775 	.halt_reg = 0x17994,
2776 	.halt_check = BRANCH_HALT_VOTED,
2777 	.clkr = {
2778 		.enable_reg = 0x5200c,
2779 		.enable_mask = BIT(17),
2780 		.hw.init = &(struct clk_init_data){
2781 			.name = "gcc_qupv3_wrap0_s7_clk",
2782 			.parent_hws = (const struct clk_hw *[]){
2783 				&gcc_qupv3_wrap0_s7_clk_src.clkr.hw
2784 			},
2785 			.num_parents = 1,
2786 			.flags = CLK_SET_RATE_PARENT,
2787 			.ops = &clk_branch2_ops,
2788 		},
2789 	},
2790 };
2791 
2792 static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
2793 	.halt_reg = 0x18144,
2794 	.halt_check = BRANCH_HALT_VOTED,
2795 	.clkr = {
2796 		.enable_reg = 0x5200c,
2797 		.enable_mask = BIT(22),
2798 		.hw.init = &(struct clk_init_data){
2799 			.name = "gcc_qupv3_wrap1_s0_clk",
2800 			.parent_hws = (const struct clk_hw *[]){
2801 				&gcc_qupv3_wrap1_s0_clk_src.clkr.hw
2802 			},
2803 			.num_parents = 1,
2804 			.flags = CLK_SET_RATE_PARENT,
2805 			.ops = &clk_branch2_ops,
2806 		},
2807 	},
2808 };
2809 
2810 static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
2811 	.halt_reg = 0x18274,
2812 	.halt_check = BRANCH_HALT_VOTED,
2813 	.clkr = {
2814 		.enable_reg = 0x5200c,
2815 		.enable_mask = BIT(23),
2816 		.hw.init = &(struct clk_init_data){
2817 			.name = "gcc_qupv3_wrap1_s1_clk",
2818 			.parent_hws = (const struct clk_hw *[]){
2819 				&gcc_qupv3_wrap1_s1_clk_src.clkr.hw
2820 			},
2821 			.num_parents = 1,
2822 			.flags = CLK_SET_RATE_PARENT,
2823 			.ops = &clk_branch2_ops,
2824 		},
2825 	},
2826 };
2827 
2828 static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
2829 	.halt_reg = 0x183a4,
2830 	.halt_check = BRANCH_HALT_VOTED,
2831 	.clkr = {
2832 		.enable_reg = 0x5200c,
2833 		.enable_mask = BIT(24),
2834 		.hw.init = &(struct clk_init_data){
2835 			.name = "gcc_qupv3_wrap1_s2_clk",
2836 			.parent_hws = (const struct clk_hw *[]){
2837 				&gcc_qupv3_wrap1_s2_clk_src.clkr.hw
2838 			},
2839 			.num_parents = 1,
2840 			.flags = CLK_SET_RATE_PARENT,
2841 			.ops = &clk_branch2_ops,
2842 		},
2843 	},
2844 };
2845 
2846 static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
2847 	.halt_reg = 0x184d4,
2848 	.halt_check = BRANCH_HALT_VOTED,
2849 	.clkr = {
2850 		.enable_reg = 0x5200c,
2851 		.enable_mask = BIT(25),
2852 		.hw.init = &(struct clk_init_data){
2853 			.name = "gcc_qupv3_wrap1_s3_clk",
2854 			.parent_hws = (const struct clk_hw *[]){
2855 				&gcc_qupv3_wrap1_s3_clk_src.clkr.hw
2856 			},
2857 			.num_parents = 1,
2858 			.flags = CLK_SET_RATE_PARENT,
2859 			.ops = &clk_branch2_ops,
2860 		},
2861 	},
2862 };
2863 
2864 static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
2865 	.halt_reg = 0x18604,
2866 	.halt_check = BRANCH_HALT_VOTED,
2867 	.clkr = {
2868 		.enable_reg = 0x5200c,
2869 		.enable_mask = BIT(26),
2870 		.hw.init = &(struct clk_init_data){
2871 			.name = "gcc_qupv3_wrap1_s4_clk",
2872 			.parent_hws = (const struct clk_hw *[]){
2873 				&gcc_qupv3_wrap1_s4_clk_src.clkr.hw
2874 			},
2875 			.num_parents = 1,
2876 			.flags = CLK_SET_RATE_PARENT,
2877 			.ops = &clk_branch2_ops,
2878 		},
2879 	},
2880 };
2881 
2882 static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
2883 	.halt_reg = 0x18734,
2884 	.halt_check = BRANCH_HALT_VOTED,
2885 	.clkr = {
2886 		.enable_reg = 0x5200c,
2887 		.enable_mask = BIT(27),
2888 		.hw.init = &(struct clk_init_data){
2889 			.name = "gcc_qupv3_wrap1_s5_clk",
2890 			.parent_hws = (const struct clk_hw *[]){
2891 				&gcc_qupv3_wrap1_s5_clk_src.clkr.hw
2892 			},
2893 			.num_parents = 1,
2894 			.flags = CLK_SET_RATE_PARENT,
2895 			.ops = &clk_branch2_ops,
2896 		},
2897 	},
2898 };
2899 
2900 static struct clk_branch gcc_qupv3_wrap2_s0_clk = {
2901 	.halt_reg = 0x1e144,
2902 	.halt_check = BRANCH_HALT_VOTED,
2903 	.clkr = {
2904 		.enable_reg = 0x52014,
2905 		.enable_mask = BIT(4),
2906 		.hw.init = &(struct clk_init_data){
2907 			.name = "gcc_qupv3_wrap2_s0_clk",
2908 			.parent_hws = (const struct clk_hw *[]){
2909 				&gcc_qupv3_wrap2_s0_clk_src.clkr.hw
2910 			},
2911 			.num_parents = 1,
2912 			.flags = CLK_SET_RATE_PARENT,
2913 			.ops = &clk_branch2_ops,
2914 		},
2915 	},
2916 };
2917 
2918 static struct clk_branch gcc_qupv3_wrap2_s1_clk = {
2919 	.halt_reg = 0x1e274,
2920 	.halt_check = BRANCH_HALT_VOTED,
2921 	.clkr = {
2922 		.enable_reg = 0x52014,
2923 		.enable_mask = BIT(5),
2924 		.hw.init = &(struct clk_init_data){
2925 			.name = "gcc_qupv3_wrap2_s1_clk",
2926 			.parent_hws = (const struct clk_hw *[]){
2927 				&gcc_qupv3_wrap2_s1_clk_src.clkr.hw
2928 			},
2929 			.num_parents = 1,
2930 			.flags = CLK_SET_RATE_PARENT,
2931 			.ops = &clk_branch2_ops,
2932 		},
2933 	},
2934 };
2935 
2936 static struct clk_branch gcc_qupv3_wrap2_s2_clk = {
2937 	.halt_reg = 0x1e3a4,
2938 	.halt_check = BRANCH_HALT_VOTED,
2939 	.clkr = {
2940 		.enable_reg = 0x52014,
2941 		.enable_mask = BIT(6),
2942 		.hw.init = &(struct clk_init_data){
2943 			.name = "gcc_qupv3_wrap2_s2_clk",
2944 			.parent_hws = (const struct clk_hw *[]){
2945 				&gcc_qupv3_wrap2_s2_clk_src.clkr.hw
2946 			},
2947 			.num_parents = 1,
2948 			.flags = CLK_SET_RATE_PARENT,
2949 			.ops = &clk_branch2_ops,
2950 		},
2951 	},
2952 };
2953 
2954 static struct clk_branch gcc_qupv3_wrap2_s3_clk = {
2955 	.halt_reg = 0x1e4d4,
2956 	.halt_check = BRANCH_HALT_VOTED,
2957 	.clkr = {
2958 		.enable_reg = 0x52014,
2959 		.enable_mask = BIT(7),
2960 		.hw.init = &(struct clk_init_data){
2961 			.name = "gcc_qupv3_wrap2_s3_clk",
2962 			.parent_hws = (const struct clk_hw *[]){
2963 				&gcc_qupv3_wrap2_s3_clk_src.clkr.hw
2964 			},
2965 			.num_parents = 1,
2966 			.flags = CLK_SET_RATE_PARENT,
2967 			.ops = &clk_branch2_ops,
2968 		},
2969 	},
2970 };
2971 
2972 static struct clk_branch gcc_qupv3_wrap2_s4_clk = {
2973 	.halt_reg = 0x1e604,
2974 	.halt_check = BRANCH_HALT_VOTED,
2975 	.clkr = {
2976 		.enable_reg = 0x52014,
2977 		.enable_mask = BIT(8),
2978 		.hw.init = &(struct clk_init_data){
2979 			.name = "gcc_qupv3_wrap2_s4_clk",
2980 			.parent_hws = (const struct clk_hw *[]){
2981 				&gcc_qupv3_wrap2_s4_clk_src.clkr.hw
2982 			},
2983 			.num_parents = 1,
2984 			.flags = CLK_SET_RATE_PARENT,
2985 			.ops = &clk_branch2_ops,
2986 		},
2987 	},
2988 };
2989 
2990 static struct clk_branch gcc_qupv3_wrap2_s5_clk = {
2991 	.halt_reg = 0x1e734,
2992 	.halt_check = BRANCH_HALT_VOTED,
2993 	.clkr = {
2994 		.enable_reg = 0x52014,
2995 		.enable_mask = BIT(9),
2996 		.hw.init = &(struct clk_init_data){
2997 			.name = "gcc_qupv3_wrap2_s5_clk",
2998 			.parent_hws = (const struct clk_hw *[]){
2999 				&gcc_qupv3_wrap2_s5_clk_src.clkr.hw
3000 			},
3001 			.num_parents = 1,
3002 			.flags = CLK_SET_RATE_PARENT,
3003 			.ops = &clk_branch2_ops,
3004 		},
3005 	},
3006 };
3007 
3008 static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
3009 	.halt_reg = 0x17004,
3010 	.halt_check = BRANCH_HALT_VOTED,
3011 	.clkr = {
3012 		.enable_reg = 0x5200c,
3013 		.enable_mask = BIT(6),
3014 		.hw.init = &(struct clk_init_data){
3015 			.name = "gcc_qupv3_wrap_0_m_ahb_clk",
3016 			.ops = &clk_branch2_ops,
3017 		},
3018 	},
3019 };
3020 
3021 static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
3022 	.halt_reg = 0x17008,
3023 	.halt_check = BRANCH_HALT_VOTED,
3024 	.hwcg_reg = 0x17008,
3025 	.hwcg_bit = 1,
3026 	.clkr = {
3027 		.enable_reg = 0x5200c,
3028 		.enable_mask = BIT(7),
3029 		.hw.init = &(struct clk_init_data){
3030 			.name = "gcc_qupv3_wrap_0_s_ahb_clk",
3031 			.ops = &clk_branch2_ops,
3032 		},
3033 	},
3034 };
3035 
3036 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
3037 	.halt_reg = 0x18004,
3038 	.halt_check = BRANCH_HALT_VOTED,
3039 	.clkr = {
3040 		.enable_reg = 0x5200c,
3041 		.enable_mask = BIT(20),
3042 		.hw.init = &(struct clk_init_data){
3043 			.name = "gcc_qupv3_wrap_1_m_ahb_clk",
3044 			.ops = &clk_branch2_ops,
3045 		},
3046 	},
3047 };
3048 
3049 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
3050 	.halt_reg = 0x18008,
3051 	.halt_check = BRANCH_HALT_VOTED,
3052 	.hwcg_reg = 0x18008,
3053 	.hwcg_bit = 1,
3054 	.clkr = {
3055 		.enable_reg = 0x5200c,
3056 		.enable_mask = BIT(21),
3057 		.hw.init = &(struct clk_init_data){
3058 			.name = "gcc_qupv3_wrap_1_s_ahb_clk",
3059 			.ops = &clk_branch2_ops,
3060 		},
3061 	},
3062 };
3063 
3064 static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {
3065 	.halt_reg = 0x1e004,
3066 	.halt_check = BRANCH_HALT_VOTED,
3067 	.clkr = {
3068 		.enable_reg = 0x52014,
3069 		.enable_mask = BIT(2),
3070 		.hw.init = &(struct clk_init_data){
3071 			.name = "gcc_qupv3_wrap_2_m_ahb_clk",
3072 			.ops = &clk_branch2_ops,
3073 		},
3074 	},
3075 };
3076 
3077 static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {
3078 	.halt_reg = 0x1e008,
3079 	.halt_check = BRANCH_HALT_VOTED,
3080 	.hwcg_reg = 0x1e008,
3081 	.hwcg_bit = 1,
3082 	.clkr = {
3083 		.enable_reg = 0x52014,
3084 		.enable_mask = BIT(1),
3085 		.hw.init = &(struct clk_init_data){
3086 			.name = "gcc_qupv3_wrap_2_s_ahb_clk",
3087 			.ops = &clk_branch2_ops,
3088 		},
3089 	},
3090 };
3091 
3092 static struct clk_branch gcc_sdcc2_ahb_clk = {
3093 	.halt_reg = 0x14008,
3094 	.halt_check = BRANCH_HALT,
3095 	.clkr = {
3096 		.enable_reg = 0x14008,
3097 		.enable_mask = BIT(0),
3098 		.hw.init = &(struct clk_init_data){
3099 			.name = "gcc_sdcc2_ahb_clk",
3100 			.ops = &clk_branch2_ops,
3101 		},
3102 	},
3103 };
3104 
3105 static struct clk_branch gcc_sdcc2_apps_clk = {
3106 	.halt_reg = 0x14004,
3107 	.halt_check = BRANCH_HALT,
3108 	.clkr = {
3109 		.enable_reg = 0x14004,
3110 		.enable_mask = BIT(0),
3111 		.hw.init = &(struct clk_init_data){
3112 			.name = "gcc_sdcc2_apps_clk",
3113 			.parent_hws = (const struct clk_hw *[]){
3114 				&gcc_sdcc2_apps_clk_src.clkr.hw
3115 			},
3116 			.num_parents = 1,
3117 			.flags = CLK_SET_RATE_PARENT,
3118 			.ops = &clk_branch2_ops,
3119 		},
3120 	},
3121 };
3122 
3123 static struct clk_branch gcc_sdcc4_ahb_clk = {
3124 	.halt_reg = 0x16008,
3125 	.halt_check = BRANCH_HALT,
3126 	.clkr = {
3127 		.enable_reg = 0x16008,
3128 		.enable_mask = BIT(0),
3129 		.hw.init = &(struct clk_init_data){
3130 			.name = "gcc_sdcc4_ahb_clk",
3131 			.ops = &clk_branch2_ops,
3132 		},
3133 	},
3134 };
3135 
3136 static struct clk_branch gcc_sdcc4_apps_clk = {
3137 	.halt_reg = 0x16004,
3138 	.halt_check = BRANCH_HALT,
3139 	.clkr = {
3140 		.enable_reg = 0x16004,
3141 		.enable_mask = BIT(0),
3142 		.hw.init = &(struct clk_init_data){
3143 			.name = "gcc_sdcc4_apps_clk",
3144 			.parent_hws = (const struct clk_hw *[]){
3145 				&gcc_sdcc4_apps_clk_src.clkr.hw
3146 			},
3147 			.num_parents = 1,
3148 			.flags = CLK_SET_RATE_PARENT,
3149 			.ops = &clk_branch2_ops,
3150 		},
3151 	},
3152 };
3153 
3154 /* For CPUSS functionality the SYS NOC clock needs to be left enabled */
3155 static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = {
3156 	.halt_reg = 0x4819c,
3157 	.halt_check = BRANCH_HALT_VOTED,
3158 	.clkr = {
3159 		.enable_reg = 0x52004,
3160 		.enable_mask = BIT(0),
3161 		.hw.init = &(struct clk_init_data){
3162 			.name = "gcc_sys_noc_cpuss_ahb_clk",
3163 			.parent_hws = (const struct clk_hw *[]){
3164 				      &gcc_cpuss_ahb_clk_src.clkr.hw
3165 			},
3166 			.num_parents = 1,
3167 			.flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
3168 			.ops = &clk_branch2_ops,
3169 		},
3170 	},
3171 };
3172 
3173 static struct clk_branch gcc_tsif_ahb_clk = {
3174 	.halt_reg = 0x36004,
3175 	.halt_check = BRANCH_HALT,
3176 	.clkr = {
3177 		.enable_reg = 0x36004,
3178 		.enable_mask = BIT(0),
3179 		.hw.init = &(struct clk_init_data){
3180 			.name = "gcc_tsif_ahb_clk",
3181 			.ops = &clk_branch2_ops,
3182 		},
3183 	},
3184 };
3185 
3186 static struct clk_branch gcc_tsif_inactivity_timers_clk = {
3187 	.halt_reg = 0x3600c,
3188 	.halt_check = BRANCH_HALT,
3189 	.clkr = {
3190 		.enable_reg = 0x3600c,
3191 		.enable_mask = BIT(0),
3192 		.hw.init = &(struct clk_init_data){
3193 			.name = "gcc_tsif_inactivity_timers_clk",
3194 			.ops = &clk_branch2_ops,
3195 		},
3196 	},
3197 };
3198 
3199 static struct clk_branch gcc_tsif_ref_clk = {
3200 	.halt_reg = 0x36008,
3201 	.halt_check = BRANCH_HALT,
3202 	.clkr = {
3203 		.enable_reg = 0x36008,
3204 		.enable_mask = BIT(0),
3205 		.hw.init = &(struct clk_init_data){
3206 			.name = "gcc_tsif_ref_clk",
3207 			.parent_hws = (const struct clk_hw *[]){
3208 				&gcc_tsif_ref_clk_src.clkr.hw
3209 			},
3210 			.num_parents = 1,
3211 			.flags = CLK_SET_RATE_PARENT,
3212 			.ops = &clk_branch2_ops,
3213 		},
3214 	},
3215 };
3216 
3217 static struct clk_branch gcc_ufs_card_2_ahb_clk = {
3218 	.halt_reg = 0xa2014,
3219 	.halt_check = BRANCH_HALT,
3220 	.hwcg_reg = 0xa2014,
3221 	.hwcg_bit = 1,
3222 	.clkr = {
3223 		.enable_reg = 0xa2014,
3224 		.enable_mask = BIT(0),
3225 		.hw.init = &(struct clk_init_data){
3226 			.name = "gcc_ufs_card_2_ahb_clk",
3227 			.ops = &clk_branch2_ops,
3228 		},
3229 	},
3230 };
3231 
3232 static struct clk_branch gcc_ufs_card_2_axi_clk = {
3233 	.halt_reg = 0xa2010,
3234 	.halt_check = BRANCH_HALT,
3235 	.hwcg_reg = 0xa2010,
3236 	.hwcg_bit = 1,
3237 	.clkr = {
3238 		.enable_reg = 0xa2010,
3239 		.enable_mask = BIT(0),
3240 		.hw.init = &(struct clk_init_data){
3241 			.name = "gcc_ufs_card_2_axi_clk",
3242 			.parent_hws = (const struct clk_hw *[]){
3243 				&gcc_ufs_card_2_axi_clk_src.clkr.hw
3244 			},
3245 			.num_parents = 1,
3246 			.flags = CLK_SET_RATE_PARENT,
3247 			.ops = &clk_branch2_ops,
3248 		},
3249 	},
3250 };
3251 
3252 static struct clk_branch gcc_ufs_card_2_ice_core_clk = {
3253 	.halt_reg = 0xa205c,
3254 	.halt_check = BRANCH_HALT,
3255 	.hwcg_reg = 0xa205c,
3256 	.hwcg_bit = 1,
3257 	.clkr = {
3258 		.enable_reg = 0xa205c,
3259 		.enable_mask = BIT(0),
3260 		.hw.init = &(struct clk_init_data){
3261 			.name = "gcc_ufs_card_2_ice_core_clk",
3262 			.parent_hws = (const struct clk_hw *[]){
3263 				&gcc_ufs_card_2_ice_core_clk_src.clkr.hw
3264 			},
3265 			.num_parents = 1,
3266 			.flags = CLK_SET_RATE_PARENT,
3267 			.ops = &clk_branch2_ops,
3268 		},
3269 	},
3270 };
3271 
3272 static struct clk_branch gcc_ufs_card_2_phy_aux_clk = {
3273 	.halt_reg = 0xa2090,
3274 	.halt_check = BRANCH_HALT,
3275 	.hwcg_reg = 0xa2090,
3276 	.hwcg_bit = 1,
3277 	.clkr = {
3278 		.enable_reg = 0xa2090,
3279 		.enable_mask = BIT(0),
3280 		.hw.init = &(struct clk_init_data){
3281 			.name = "gcc_ufs_card_2_phy_aux_clk",
3282 			.parent_hws = (const struct clk_hw *[]){
3283 				&gcc_ufs_card_2_phy_aux_clk_src.clkr.hw
3284 			},
3285 			.num_parents = 1,
3286 			.flags = CLK_SET_RATE_PARENT,
3287 			.ops = &clk_branch2_ops,
3288 		},
3289 	},
3290 };
3291 
3292 static struct clk_branch gcc_ufs_card_2_rx_symbol_0_clk = {
3293 	.halt_reg = 0xa201c,
3294 	.halt_check = BRANCH_HALT,
3295 	.clkr = {
3296 		.enable_reg = 0xa201c,
3297 		.enable_mask = BIT(0),
3298 		.hw.init = &(struct clk_init_data){
3299 			.name = "gcc_ufs_card_2_rx_symbol_0_clk",
3300 			.ops = &clk_branch2_ops,
3301 		},
3302 	},
3303 };
3304 
3305 static struct clk_branch gcc_ufs_card_2_rx_symbol_1_clk = {
3306 	.halt_reg = 0xa20ac,
3307 	.halt_check = BRANCH_HALT,
3308 	.clkr = {
3309 		.enable_reg = 0xa20ac,
3310 		.enable_mask = BIT(0),
3311 		.hw.init = &(struct clk_init_data){
3312 			.name = "gcc_ufs_card_2_rx_symbol_1_clk",
3313 			.ops = &clk_branch2_ops,
3314 		},
3315 	},
3316 };
3317 
3318 static struct clk_branch gcc_ufs_card_2_tx_symbol_0_clk = {
3319 	.halt_reg = 0xa2018,
3320 	.halt_check = BRANCH_HALT,
3321 	.clkr = {
3322 		.enable_reg = 0xa2018,
3323 		.enable_mask = BIT(0),
3324 		.hw.init = &(struct clk_init_data){
3325 			.name = "gcc_ufs_card_2_tx_symbol_0_clk",
3326 			.ops = &clk_branch2_ops,
3327 		},
3328 	},
3329 };
3330 
3331 static struct clk_branch gcc_ufs_card_2_unipro_core_clk = {
3332 	.halt_reg = 0xa2058,
3333 	.halt_check = BRANCH_HALT,
3334 	.hwcg_reg = 0xa2058,
3335 	.hwcg_bit = 1,
3336 	.clkr = {
3337 		.enable_reg = 0xa2058,
3338 		.enable_mask = BIT(0),
3339 		.hw.init = &(struct clk_init_data){
3340 			.name = "gcc_ufs_card_2_unipro_core_clk",
3341 			.parent_hws = (const struct clk_hw *[]){
3342 				&gcc_ufs_card_2_unipro_core_clk_src.clkr.hw
3343 			},
3344 			.num_parents = 1,
3345 			.flags = CLK_SET_RATE_PARENT,
3346 			.ops = &clk_branch2_ops,
3347 		},
3348 	},
3349 };
3350 
3351 static struct clk_branch gcc_ufs_card_ahb_clk = {
3352 	.halt_reg = 0x75014,
3353 	.halt_check = BRANCH_HALT,
3354 	.hwcg_reg = 0x75014,
3355 	.hwcg_bit = 1,
3356 	.clkr = {
3357 		.enable_reg = 0x75014,
3358 		.enable_mask = BIT(0),
3359 		.hw.init = &(struct clk_init_data){
3360 			.name = "gcc_ufs_card_ahb_clk",
3361 			.ops = &clk_branch2_ops,
3362 		},
3363 	},
3364 };
3365 
3366 static struct clk_branch gcc_ufs_card_axi_clk = {
3367 	.halt_reg = 0x75010,
3368 	.halt_check = BRANCH_HALT,
3369 	.hwcg_reg = 0x75010,
3370 	.hwcg_bit = 1,
3371 	.clkr = {
3372 		.enable_reg = 0x75010,
3373 		.enable_mask = BIT(0),
3374 		.hw.init = &(struct clk_init_data){
3375 			.name = "gcc_ufs_card_axi_clk",
3376 			.parent_hws = (const struct clk_hw *[]){
3377 				      &gcc_ufs_card_axi_clk_src.clkr.hw
3378 			},
3379 			.num_parents = 1,
3380 			.flags = CLK_SET_RATE_PARENT,
3381 			.ops = &clk_branch2_ops,
3382 		},
3383 	},
3384 };
3385 
3386 static struct clk_branch gcc_ufs_card_axi_hw_ctl_clk = {
3387 	.halt_reg = 0x75010,
3388 	.halt_check = BRANCH_HALT,
3389 	.hwcg_reg = 0x75010,
3390 	.hwcg_bit = 1,
3391 	.clkr = {
3392 		.enable_reg = 0x75010,
3393 		.enable_mask = BIT(1),
3394 		.hw.init = &(struct clk_init_data){
3395 			.name = "gcc_ufs_card_axi_hw_ctl_clk",
3396 			.parent_hws = (const struct clk_hw *[]){
3397 				      &gcc_ufs_card_axi_clk.clkr.hw
3398 			},
3399 			.num_parents = 1,
3400 			.flags = CLK_SET_RATE_PARENT,
3401 			.ops = &clk_branch_simple_ops,
3402 		},
3403 	},
3404 };
3405 
3406 static struct clk_branch gcc_ufs_card_ice_core_clk = {
3407 	.halt_reg = 0x7505c,
3408 	.halt_check = BRANCH_HALT,
3409 	.hwcg_reg = 0x7505c,
3410 	.hwcg_bit = 1,
3411 	.clkr = {
3412 		.enable_reg = 0x7505c,
3413 		.enable_mask = BIT(0),
3414 		.hw.init = &(struct clk_init_data){
3415 			.name = "gcc_ufs_card_ice_core_clk",
3416 			.parent_hws = (const struct clk_hw *[]){
3417 				      &gcc_ufs_card_ice_core_clk_src.clkr.hw
3418 			},
3419 			.num_parents = 1,
3420 			.flags = CLK_SET_RATE_PARENT,
3421 			.ops = &clk_branch2_ops,
3422 		},
3423 	},
3424 };
3425 
3426 static struct clk_branch gcc_ufs_card_ice_core_hw_ctl_clk = {
3427 	.halt_reg = 0x7505c,
3428 	.halt_check = BRANCH_HALT,
3429 	.hwcg_reg = 0x7505c,
3430 	.hwcg_bit = 1,
3431 	.clkr = {
3432 		.enable_reg = 0x7505c,
3433 		.enable_mask = BIT(1),
3434 		.hw.init = &(struct clk_init_data){
3435 			.name = "gcc_ufs_card_ice_core_hw_ctl_clk",
3436 			.parent_hws = (const struct clk_hw *[]){
3437 				      &gcc_ufs_card_ice_core_clk.clkr.hw
3438 			},
3439 			.num_parents = 1,
3440 			.flags = CLK_SET_RATE_PARENT,
3441 			.ops = &clk_branch_simple_ops,
3442 		},
3443 	},
3444 };
3445 
3446 static struct clk_branch gcc_ufs_card_phy_aux_clk = {
3447 	.halt_reg = 0x75090,
3448 	.halt_check = BRANCH_HALT,
3449 	.hwcg_reg = 0x75090,
3450 	.hwcg_bit = 1,
3451 	.clkr = {
3452 		.enable_reg = 0x75090,
3453 		.enable_mask = BIT(0),
3454 		.hw.init = &(struct clk_init_data){
3455 			.name = "gcc_ufs_card_phy_aux_clk",
3456 			.parent_hws = (const struct clk_hw *[]){
3457 				      &gcc_ufs_card_phy_aux_clk_src.clkr.hw
3458 			},
3459 			.num_parents = 1,
3460 			.flags = CLK_SET_RATE_PARENT,
3461 			.ops = &clk_branch2_ops,
3462 		},
3463 	},
3464 };
3465 
3466 static struct clk_branch gcc_ufs_card_phy_aux_hw_ctl_clk = {
3467 	.halt_reg = 0x75090,
3468 	.halt_check = BRANCH_HALT,
3469 	.hwcg_reg = 0x75090,
3470 	.hwcg_bit = 1,
3471 	.clkr = {
3472 		.enable_reg = 0x75090,
3473 		.enable_mask = BIT(1),
3474 		.hw.init = &(struct clk_init_data){
3475 			.name = "gcc_ufs_card_phy_aux_hw_ctl_clk",
3476 			.parent_hws = (const struct clk_hw *[]){
3477 				      &gcc_ufs_card_phy_aux_clk.clkr.hw
3478 			},
3479 			.num_parents = 1,
3480 			.flags = CLK_SET_RATE_PARENT,
3481 			.ops = &clk_branch_simple_ops,
3482 		},
3483 	},
3484 };
3485 
3486 static struct clk_branch gcc_ufs_card_rx_symbol_0_clk = {
3487 	.halt_reg = 0x7501c,
3488 	.halt_check = BRANCH_HALT_DELAY,
3489 	.clkr = {
3490 		.enable_reg = 0x7501c,
3491 		.enable_mask = BIT(0),
3492 		.hw.init = &(struct clk_init_data){
3493 			.name = "gcc_ufs_card_rx_symbol_0_clk",
3494 			.ops = &clk_branch2_ops,
3495 		},
3496 	},
3497 };
3498 
3499 static struct clk_branch gcc_ufs_card_rx_symbol_1_clk = {
3500 	.halt_reg = 0x750ac,
3501 	.halt_check = BRANCH_HALT_DELAY,
3502 	.clkr = {
3503 		.enable_reg = 0x750ac,
3504 		.enable_mask = BIT(0),
3505 		.hw.init = &(struct clk_init_data){
3506 			.name = "gcc_ufs_card_rx_symbol_1_clk",
3507 			.ops = &clk_branch2_ops,
3508 		},
3509 	},
3510 };
3511 
3512 static struct clk_branch gcc_ufs_card_tx_symbol_0_clk = {
3513 	.halt_reg = 0x75018,
3514 	.halt_check = BRANCH_HALT_DELAY,
3515 	.clkr = {
3516 		.enable_reg = 0x75018,
3517 		.enable_mask = BIT(0),
3518 		.hw.init = &(struct clk_init_data){
3519 			.name = "gcc_ufs_card_tx_symbol_0_clk",
3520 			.ops = &clk_branch2_ops,
3521 		},
3522 	},
3523 };
3524 
3525 static struct clk_branch gcc_ufs_card_unipro_core_clk = {
3526 	.halt_reg = 0x75058,
3527 	.halt_check = BRANCH_HALT,
3528 	.hwcg_reg = 0x75058,
3529 	.hwcg_bit = 1,
3530 	.clkr = {
3531 		.enable_reg = 0x75058,
3532 		.enable_mask = BIT(0),
3533 		.hw.init = &(struct clk_init_data){
3534 			.name = "gcc_ufs_card_unipro_core_clk",
3535 			.parent_hws = (const struct clk_hw *[]){
3536 				      &gcc_ufs_card_unipro_core_clk_src.clkr.hw
3537 			},
3538 			.num_parents = 1,
3539 			.flags = CLK_SET_RATE_PARENT,
3540 			.ops = &clk_branch2_ops,
3541 		},
3542 	},
3543 };
3544 
3545 static struct clk_branch gcc_ufs_card_unipro_core_hw_ctl_clk = {
3546 	.halt_reg = 0x75058,
3547 	.halt_check = BRANCH_HALT,
3548 	.hwcg_reg = 0x75058,
3549 	.hwcg_bit = 1,
3550 	.clkr = {
3551 		.enable_reg = 0x75058,
3552 		.enable_mask = BIT(1),
3553 		.hw.init = &(struct clk_init_data){
3554 			.name = "gcc_ufs_card_unipro_core_hw_ctl_clk",
3555 			.parent_hws = (const struct clk_hw *[]){
3556 				      &gcc_ufs_card_unipro_core_clk.clkr.hw
3557 			},
3558 			.num_parents = 1,
3559 			.flags = CLK_SET_RATE_PARENT,
3560 			.ops = &clk_branch_simple_ops,
3561 		},
3562 	},
3563 };
3564 
3565 static struct clk_branch gcc_ufs_phy_ahb_clk = {
3566 	.halt_reg = 0x77014,
3567 	.halt_check = BRANCH_HALT,
3568 	.hwcg_reg = 0x77014,
3569 	.hwcg_bit = 1,
3570 	.clkr = {
3571 		.enable_reg = 0x77014,
3572 		.enable_mask = BIT(0),
3573 		.hw.init = &(struct clk_init_data){
3574 			.name = "gcc_ufs_phy_ahb_clk",
3575 			.ops = &clk_branch2_ops,
3576 		},
3577 	},
3578 };
3579 
3580 static struct clk_branch gcc_ufs_phy_axi_clk = {
3581 	.halt_reg = 0x77010,
3582 	.halt_check = BRANCH_HALT,
3583 	.hwcg_reg = 0x77010,
3584 	.hwcg_bit = 1,
3585 	.clkr = {
3586 		.enable_reg = 0x77010,
3587 		.enable_mask = BIT(0),
3588 		.hw.init = &(struct clk_init_data){
3589 			.name = "gcc_ufs_phy_axi_clk",
3590 			.parent_hws = (const struct clk_hw *[]){
3591 				      &gcc_ufs_phy_axi_clk_src.clkr.hw
3592 			},
3593 			.num_parents = 1,
3594 			.flags = CLK_SET_RATE_PARENT,
3595 			.ops = &clk_branch2_ops,
3596 		},
3597 	},
3598 };
3599 
3600 static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk = {
3601 	.halt_reg = 0x77010,
3602 	.halt_check = BRANCH_HALT,
3603 	.hwcg_reg = 0x77010,
3604 	.hwcg_bit = 1,
3605 	.clkr = {
3606 		.enable_reg = 0x77010,
3607 		.enable_mask = BIT(1),
3608 		.hw.init = &(struct clk_init_data){
3609 			.name = "gcc_ufs_phy_axi_hw_ctl_clk",
3610 			.parent_hws = (const struct clk_hw *[]){
3611 				      &gcc_ufs_phy_axi_clk.clkr.hw
3612 			},
3613 			.num_parents = 1,
3614 			.flags = CLK_SET_RATE_PARENT,
3615 			.ops = &clk_branch_simple_ops,
3616 		},
3617 	},
3618 };
3619 
3620 static struct clk_branch gcc_ufs_phy_ice_core_clk = {
3621 	.halt_reg = 0x7705c,
3622 	.halt_check = BRANCH_HALT,
3623 	.hwcg_reg = 0x7705c,
3624 	.hwcg_bit = 1,
3625 	.clkr = {
3626 		.enable_reg = 0x7705c,
3627 		.enable_mask = BIT(0),
3628 		.hw.init = &(struct clk_init_data){
3629 			.name = "gcc_ufs_phy_ice_core_clk",
3630 			.parent_hws = (const struct clk_hw *[]){
3631 				      &gcc_ufs_phy_ice_core_clk_src.clkr.hw
3632 			},
3633 			.num_parents = 1,
3634 			.flags = CLK_SET_RATE_PARENT,
3635 			.ops = &clk_branch2_ops,
3636 		},
3637 	},
3638 };
3639 
3640 static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk = {
3641 	.halt_reg = 0x7705c,
3642 	.halt_check = BRANCH_HALT,
3643 	.hwcg_reg = 0x7705c,
3644 	.hwcg_bit = 1,
3645 	.clkr = {
3646 		.enable_reg = 0x7705c,
3647 		.enable_mask = BIT(1),
3648 		.hw.init = &(struct clk_init_data){
3649 			.name = "gcc_ufs_phy_ice_core_hw_ctl_clk",
3650 			.parent_hws = (const struct clk_hw *[]){
3651 				      &gcc_ufs_phy_ice_core_clk.clkr.hw
3652 			},
3653 			.num_parents = 1,
3654 			.flags = CLK_SET_RATE_PARENT,
3655 			.ops = &clk_branch_simple_ops,
3656 		},
3657 	},
3658 };
3659 
3660 static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
3661 	.halt_reg = 0x77090,
3662 	.halt_check = BRANCH_HALT,
3663 	.hwcg_reg = 0x77090,
3664 	.hwcg_bit = 1,
3665 	.clkr = {
3666 		.enable_reg = 0x77090,
3667 		.enable_mask = BIT(0),
3668 		.hw.init = &(struct clk_init_data){
3669 			.name = "gcc_ufs_phy_phy_aux_clk",
3670 			.parent_hws = (const struct clk_hw *[]){
3671 				      &gcc_ufs_phy_phy_aux_clk_src.clkr.hw
3672 			},
3673 			.num_parents = 1,
3674 			.flags = CLK_SET_RATE_PARENT,
3675 			.ops = &clk_branch2_ops,
3676 		},
3677 	},
3678 };
3679 
3680 static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk = {
3681 	.halt_reg = 0x77090,
3682 	.halt_check = BRANCH_HALT,
3683 	.hwcg_reg = 0x77090,
3684 	.hwcg_bit = 1,
3685 	.clkr = {
3686 		.enable_reg = 0x77090,
3687 		.enable_mask = BIT(1),
3688 		.hw.init = &(struct clk_init_data){
3689 			.name = "gcc_ufs_phy_phy_aux_hw_ctl_clk",
3690 			.parent_hws = (const struct clk_hw *[]){
3691 				      &gcc_ufs_phy_phy_aux_clk.clkr.hw
3692 			},
3693 			.num_parents = 1,
3694 			.flags = CLK_SET_RATE_PARENT,
3695 			.ops = &clk_branch_simple_ops,
3696 		},
3697 	},
3698 };
3699 
3700 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
3701 	.halt_reg = 0x7701c,
3702 	.halt_check = BRANCH_HALT_SKIP,
3703 	.clkr = {
3704 		.enable_reg = 0x7701c,
3705 		.enable_mask = BIT(0),
3706 		.hw.init = &(struct clk_init_data){
3707 			.name = "gcc_ufs_phy_rx_symbol_0_clk",
3708 			.ops = &clk_branch2_ops,
3709 		},
3710 	},
3711 };
3712 
3713 static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
3714 	.halt_reg = 0x770ac,
3715 	.halt_check = BRANCH_HALT_SKIP,
3716 	.clkr = {
3717 		.enable_reg = 0x770ac,
3718 		.enable_mask = BIT(0),
3719 		.hw.init = &(struct clk_init_data){
3720 			.name = "gcc_ufs_phy_rx_symbol_1_clk",
3721 			.ops = &clk_branch2_ops,
3722 		},
3723 	},
3724 };
3725 
3726 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
3727 	.halt_reg = 0x77018,
3728 	.halt_check = BRANCH_HALT_SKIP,
3729 	.clkr = {
3730 		.enable_reg = 0x77018,
3731 		.enable_mask = BIT(0),
3732 		.hw.init = &(struct clk_init_data){
3733 			.name = "gcc_ufs_phy_tx_symbol_0_clk",
3734 			.ops = &clk_branch2_ops,
3735 		},
3736 	},
3737 };
3738 
3739 static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
3740 	.halt_reg = 0x77058,
3741 	.halt_check = BRANCH_HALT,
3742 	.hwcg_reg = 0x77058,
3743 	.hwcg_bit = 1,
3744 	.clkr = {
3745 		.enable_reg = 0x77058,
3746 		.enable_mask = BIT(0),
3747 		.hw.init = &(struct clk_init_data){
3748 			.name = "gcc_ufs_phy_unipro_core_clk",
3749 			.parent_hws = (const struct clk_hw *[]){
3750 				      &gcc_ufs_phy_unipro_core_clk_src.clkr.hw
3751 			},
3752 			.num_parents = 1,
3753 			.flags = CLK_SET_RATE_PARENT,
3754 			.ops = &clk_branch2_ops,
3755 		},
3756 	},
3757 };
3758 
3759 static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk = {
3760 	.halt_reg = 0x77058,
3761 	.halt_check = BRANCH_HALT,
3762 	.hwcg_reg = 0x77058,
3763 	.hwcg_bit = 1,
3764 	.clkr = {
3765 		.enable_reg = 0x77058,
3766 		.enable_mask = BIT(1),
3767 		.hw.init = &(struct clk_init_data){
3768 			.name = "gcc_ufs_phy_unipro_core_hw_ctl_clk",
3769 			.parent_hws = (const struct clk_hw *[]){
3770 				      &gcc_ufs_phy_unipro_core_clk.clkr.hw
3771 			},
3772 			.num_parents = 1,
3773 			.flags = CLK_SET_RATE_PARENT,
3774 			.ops = &clk_branch_simple_ops,
3775 		},
3776 	},
3777 };
3778 
3779 static struct clk_branch gcc_usb30_mp_master_clk = {
3780 	.halt_reg = 0xa6010,
3781 	.halt_check = BRANCH_HALT,
3782 	.clkr = {
3783 		.enable_reg = 0xa6010,
3784 		.enable_mask = BIT(0),
3785 		.hw.init = &(struct clk_init_data){
3786 			.name = "gcc_usb30_mp_master_clk",
3787 			.parent_hws = (const struct clk_hw *[]){
3788 				      &gcc_usb30_mp_master_clk_src.clkr.hw },
3789 			.num_parents = 1,
3790 			.flags = CLK_SET_RATE_PARENT,
3791 			.ops = &clk_branch2_ops,
3792 		},
3793 	},
3794 };
3795 
3796 static struct clk_branch gcc_usb30_mp_mock_utmi_clk = {
3797 	.halt_reg = 0xa6018,
3798 	.halt_check = BRANCH_HALT,
3799 	.clkr = {
3800 		.enable_reg = 0xa6018,
3801 		.enable_mask = BIT(0),
3802 		.hw.init = &(struct clk_init_data){
3803 			.name = "gcc_usb30_mp_mock_utmi_clk",
3804 			.parent_hws = (const struct clk_hw *[]){
3805 				      &gcc_usb30_mp_mock_utmi_clk_src.clkr.hw
3806 			},
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_usb30_mp_sleep_clk = {
3815 	.halt_reg = 0xa6014,
3816 	.halt_check = BRANCH_HALT,
3817 	.clkr = {
3818 		.enable_reg = 0xa6014,
3819 		.enable_mask = BIT(0),
3820 		.hw.init = &(struct clk_init_data){
3821 			.name = "gcc_usb30_mp_sleep_clk",
3822 			.ops = &clk_branch2_ops,
3823 		},
3824 	},
3825 };
3826 
3827 static struct clk_branch gcc_usb30_prim_master_clk = {
3828 	.halt_reg = 0xf010,
3829 	.halt_check = BRANCH_HALT,
3830 	.clkr = {
3831 		.enable_reg = 0xf010,
3832 		.enable_mask = BIT(0),
3833 		.hw.init = &(struct clk_init_data){
3834 			.name = "gcc_usb30_prim_master_clk",
3835 			.parent_hws = (const struct clk_hw *[]){
3836 				      &gcc_usb30_prim_master_clk_src.clkr.hw },
3837 			.num_parents = 1,
3838 			.flags = CLK_SET_RATE_PARENT,
3839 			.ops = &clk_branch2_ops,
3840 		},
3841 	},
3842 };
3843 
3844 static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
3845 	.halt_reg = 0xf018,
3846 	.halt_check = BRANCH_HALT,
3847 	.clkr = {
3848 		.enable_reg = 0xf018,
3849 		.enable_mask = BIT(0),
3850 		.hw.init = &(struct clk_init_data){
3851 			.name = "gcc_usb30_prim_mock_utmi_clk",
3852 			.parent_hws = (const struct clk_hw *[]){
3853 				      &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw
3854 			},
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_usb30_prim_sleep_clk = {
3863 	.halt_reg = 0xf014,
3864 	.halt_check = BRANCH_HALT,
3865 	.clkr = {
3866 		.enable_reg = 0xf014,
3867 		.enable_mask = BIT(0),
3868 		.hw.init = &(struct clk_init_data){
3869 			.name = "gcc_usb30_prim_sleep_clk",
3870 			.ops = &clk_branch2_ops,
3871 		},
3872 	},
3873 };
3874 
3875 static struct clk_branch gcc_usb30_sec_master_clk = {
3876 	.halt_reg = 0x10010,
3877 	.halt_check = BRANCH_HALT,
3878 	.clkr = {
3879 		.enable_reg = 0x10010,
3880 		.enable_mask = BIT(0),
3881 		.hw.init = &(struct clk_init_data){
3882 			.name = "gcc_usb30_sec_master_clk",
3883 			.parent_hws = (const struct clk_hw *[]){
3884 				      &gcc_usb30_sec_master_clk_src.clkr.hw },
3885 			.num_parents = 1,
3886 			.flags = CLK_SET_RATE_PARENT,
3887 			.ops = &clk_branch2_ops,
3888 		},
3889 	},
3890 };
3891 
3892 static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {
3893 	.halt_reg = 0x10018,
3894 	.halt_check = BRANCH_HALT,
3895 	.clkr = {
3896 		.enable_reg = 0x10018,
3897 		.enable_mask = BIT(0),
3898 		.hw.init = &(struct clk_init_data){
3899 			.name = "gcc_usb30_sec_mock_utmi_clk",
3900 			.parent_hws = (const struct clk_hw *[]){
3901 				      &gcc_usb30_sec_mock_utmi_clk_src.clkr.hw
3902 			},
3903 			.num_parents = 1,
3904 			.flags = CLK_SET_RATE_PARENT,
3905 			.ops = &clk_branch2_ops,
3906 		},
3907 	},
3908 };
3909 
3910 static struct clk_branch gcc_usb30_sec_sleep_clk = {
3911 	.halt_reg = 0x10014,
3912 	.halt_check = BRANCH_HALT,
3913 	.clkr = {
3914 		.enable_reg = 0x10014,
3915 		.enable_mask = BIT(0),
3916 		.hw.init = &(struct clk_init_data){
3917 			.name = "gcc_usb30_sec_sleep_clk",
3918 			.ops = &clk_branch2_ops,
3919 		},
3920 	},
3921 };
3922 
3923 static struct clk_branch gcc_usb3_mp_phy_aux_clk = {
3924 	.halt_reg = 0xa6050,
3925 	.halt_check = BRANCH_HALT,
3926 	.clkr = {
3927 		.enable_reg = 0xa6050,
3928 		.enable_mask = BIT(0),
3929 		.hw.init = &(struct clk_init_data){
3930 			.name = "gcc_usb3_mp_phy_aux_clk",
3931 			.parent_hws = (const struct clk_hw *[]){
3932 				      &gcc_usb3_mp_phy_aux_clk_src.clkr.hw
3933 			},
3934 			.num_parents = 1,
3935 			.flags = CLK_SET_RATE_PARENT,
3936 			.ops = &clk_branch2_ops,
3937 		},
3938 	},
3939 };
3940 
3941 static struct clk_branch gcc_usb3_mp_phy_com_aux_clk = {
3942 	.halt_reg = 0xa6054,
3943 	.halt_check = BRANCH_HALT,
3944 	.clkr = {
3945 		.enable_reg = 0xa6054,
3946 		.enable_mask = BIT(0),
3947 		.hw.init = &(struct clk_init_data){
3948 			.name = "gcc_usb3_mp_phy_com_aux_clk",
3949 			.parent_hws = (const struct clk_hw *[]){
3950 				      &gcc_usb3_mp_phy_aux_clk_src.clkr.hw
3951 			},
3952 			.num_parents = 1,
3953 			.flags = CLK_SET_RATE_PARENT,
3954 			.ops = &clk_branch2_ops,
3955 		},
3956 	},
3957 };
3958 
3959 static struct clk_branch gcc_usb3_mp_phy_pipe_0_clk = {
3960 	.halt_reg = 0xa6058,
3961 	.halt_check = BRANCH_HALT_SKIP,
3962 	.clkr = {
3963 		.enable_reg = 0xa6058,
3964 		.enable_mask = BIT(0),
3965 		.hw.init = &(struct clk_init_data){
3966 			.name = "gcc_usb3_mp_phy_pipe_0_clk",
3967 			.ops = &clk_branch2_ops,
3968 		},
3969 	},
3970 };
3971 
3972 static struct clk_branch gcc_usb3_mp_phy_pipe_1_clk = {
3973 	.halt_reg = 0xa605c,
3974 	.halt_check = BRANCH_HALT_SKIP,
3975 	.clkr = {
3976 		.enable_reg = 0xa605c,
3977 		.enable_mask = BIT(0),
3978 		.hw.init = &(struct clk_init_data){
3979 			.name = "gcc_usb3_mp_phy_pipe_1_clk",
3980 			.ops = &clk_branch2_ops,
3981 		},
3982 	},
3983 };
3984 
3985 static struct clk_branch gcc_usb3_prim_clkref_clk = {
3986 	.halt_reg = 0x8c008,
3987 	.halt_check = BRANCH_HALT,
3988 	.clkr = {
3989 		.enable_reg = 0x8c008,
3990 		.enable_mask = BIT(0),
3991 		.hw.init = &(struct clk_init_data){
3992 			.name = "gcc_usb3_prim_clkref_clk",
3993 			.ops = &clk_branch2_ops,
3994 		},
3995 	},
3996 };
3997 
3998 static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
3999 	.halt_reg = 0xf050,
4000 	.halt_check = BRANCH_HALT,
4001 	.clkr = {
4002 		.enable_reg = 0xf050,
4003 		.enable_mask = BIT(0),
4004 		.hw.init = &(struct clk_init_data){
4005 			.name = "gcc_usb3_prim_phy_aux_clk",
4006 			.parent_hws = (const struct clk_hw *[]){
4007 				      &gcc_usb3_prim_phy_aux_clk_src.clkr.hw
4008 			},
4009 			.num_parents = 1,
4010 			.flags = CLK_SET_RATE_PARENT,
4011 			.ops = &clk_branch2_ops,
4012 		},
4013 	},
4014 };
4015 
4016 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
4017 	.halt_reg = 0xf054,
4018 	.halt_check = BRANCH_HALT,
4019 	.clkr = {
4020 		.enable_reg = 0xf054,
4021 		.enable_mask = BIT(0),
4022 		.hw.init = &(struct clk_init_data){
4023 			.name = "gcc_usb3_prim_phy_com_aux_clk",
4024 			.parent_hws = (const struct clk_hw *[]){
4025 				      &gcc_usb3_prim_phy_aux_clk_src.clkr.hw
4026 			},
4027 			.num_parents = 1,
4028 			.flags = CLK_SET_RATE_PARENT,
4029 			.ops = &clk_branch2_ops,
4030 		},
4031 	},
4032 };
4033 
4034 static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
4035 	.halt_reg = 0xf058,
4036 	.halt_check = BRANCH_HALT_SKIP,
4037 	.clkr = {
4038 		.enable_reg = 0xf058,
4039 		.enable_mask = BIT(0),
4040 		.hw.init = &(struct clk_init_data){
4041 			.name = "gcc_usb3_prim_phy_pipe_clk",
4042 			.ops = &clk_branch2_ops,
4043 		},
4044 	},
4045 };
4046 
4047 static struct clk_branch gcc_usb3_sec_clkref_clk = {
4048 	.halt_reg = 0x8c028,
4049 	.halt_check = BRANCH_HALT,
4050 	.clkr = {
4051 		.enable_reg = 0x8c028,
4052 		.enable_mask = BIT(0),
4053 		.hw.init = &(struct clk_init_data){
4054 			.name = "gcc_usb3_sec_clkref_clk",
4055 			.ops = &clk_branch2_ops,
4056 		},
4057 	},
4058 };
4059 
4060 static struct clk_branch gcc_usb3_sec_phy_aux_clk = {
4061 	.halt_reg = 0x10050,
4062 	.halt_check = BRANCH_HALT,
4063 	.clkr = {
4064 		.enable_reg = 0x10050,
4065 		.enable_mask = BIT(0),
4066 		.hw.init = &(struct clk_init_data){
4067 			.name = "gcc_usb3_sec_phy_aux_clk",
4068 			.parent_hws = (const struct clk_hw *[]){
4069 				      &gcc_usb3_sec_phy_aux_clk_src.clkr.hw
4070 			},
4071 			.num_parents = 1,
4072 			.flags = CLK_SET_RATE_PARENT,
4073 			.ops = &clk_branch2_ops,
4074 		},
4075 	},
4076 };
4077 
4078 static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = {
4079 	.halt_reg = 0x10054,
4080 	.halt_check = BRANCH_HALT,
4081 	.clkr = {
4082 		.enable_reg = 0x10054,
4083 		.enable_mask = BIT(0),
4084 		.hw.init = &(struct clk_init_data){
4085 			.name = "gcc_usb3_sec_phy_com_aux_clk",
4086 			.parent_hws = (const struct clk_hw *[]){
4087 				      &gcc_usb3_sec_phy_aux_clk_src.clkr.hw
4088 			},
4089 			.num_parents = 1,
4090 			.flags = CLK_SET_RATE_PARENT,
4091 			.ops = &clk_branch2_ops,
4092 		},
4093 	},
4094 };
4095 
4096 static struct clk_branch gcc_usb3_sec_phy_pipe_clk = {
4097 	.halt_reg = 0x10058,
4098 	.halt_check = BRANCH_HALT_SKIP,
4099 	.clkr = {
4100 		.enable_reg = 0x10058,
4101 		.enable_mask = BIT(0),
4102 		.hw.init = &(struct clk_init_data){
4103 			.name = "gcc_usb3_sec_phy_pipe_clk",
4104 			.ops = &clk_branch2_ops,
4105 		},
4106 	},
4107 };
4108 
4109 static struct clk_branch gcc_video_axi0_clk = {
4110 	.halt_reg = 0xb024,
4111 	.halt_check = BRANCH_HALT,
4112 	.clkr = {
4113 		.enable_reg = 0xb024,
4114 		.enable_mask = BIT(0),
4115 		.hw.init = &(struct clk_init_data){
4116 			.name = "gcc_video_axi0_clk",
4117 			.ops = &clk_branch2_ops,
4118 		},
4119 	},
4120 };
4121 
4122 static struct clk_branch gcc_video_axi1_clk = {
4123 	.halt_reg = 0xb028,
4124 	.halt_check = BRANCH_HALT,
4125 	.clkr = {
4126 		.enable_reg = 0xb028,
4127 		.enable_mask = BIT(0),
4128 		.hw.init = &(struct clk_init_data){
4129 			.name = "gcc_video_axi1_clk",
4130 			.ops = &clk_branch2_ops,
4131 		},
4132 	},
4133 };
4134 
4135 static struct clk_branch gcc_video_axic_clk = {
4136 	.halt_reg = 0xb02c,
4137 	.halt_check = BRANCH_HALT,
4138 	.clkr = {
4139 		.enable_reg = 0xb02c,
4140 		.enable_mask = BIT(0),
4141 		.hw.init = &(struct clk_init_data){
4142 			.name = "gcc_video_axic_clk",
4143 			.ops = &clk_branch2_ops,
4144 		},
4145 	},
4146 };
4147 
4148 static struct gdsc usb30_sec_gdsc = {
4149 	.gdscr = 0x10004,
4150 	.pd = {
4151 		.name = "usb30_sec_gdsc",
4152 	},
4153 	.pwrsts = PWRSTS_OFF_ON,
4154 	.flags = POLL_CFG_GDSCR,
4155 };
4156 
4157 static struct gdsc emac_gdsc = {
4158 	.gdscr = 0x6004,
4159 	.pd = {
4160 		.name = "emac_gdsc",
4161 	},
4162 	.pwrsts = PWRSTS_OFF_ON,
4163 	.flags = POLL_CFG_GDSCR,
4164 };
4165 
4166 static struct gdsc usb30_prim_gdsc = {
4167 	.gdscr = 0xf004,
4168 	.pd = {
4169 		.name = "usb30_prim_gdsc",
4170 	},
4171 	.pwrsts = PWRSTS_OFF_ON,
4172 	.flags = POLL_CFG_GDSCR,
4173 };
4174 
4175 static struct gdsc pcie_0_gdsc = {
4176 	.gdscr = 0x6b004,
4177 	.pd = {
4178 		.name = "pcie_0_gdsc",
4179 	},
4180 	.pwrsts = PWRSTS_OFF_ON,
4181 	.flags = POLL_CFG_GDSCR,
4182 };
4183 
4184 static struct gdsc ufs_card_gdsc = {
4185 	.gdscr = 0x75004,
4186 	.pd = {
4187 		.name = "ufs_card_gdsc",
4188 	},
4189 	.pwrsts = PWRSTS_OFF_ON,
4190 	.flags = POLL_CFG_GDSCR,
4191 };
4192 
4193 static struct gdsc ufs_phy_gdsc = {
4194 	.gdscr = 0x77004,
4195 	.pd = {
4196 		.name = "ufs_phy_gdsc",
4197 	},
4198 	.pwrsts = PWRSTS_OFF_ON,
4199 	.flags = POLL_CFG_GDSCR,
4200 };
4201 
4202 static struct gdsc pcie_1_gdsc = {
4203 	.gdscr = 0x8d004,
4204 	.pd = {
4205 		.name = "pcie_1_gdsc",
4206 	},
4207 	.pwrsts = PWRSTS_OFF_ON,
4208 	.flags = POLL_CFG_GDSCR,
4209 };
4210 
4211 static struct gdsc pcie_2_gdsc = {
4212 	.gdscr = 0x9d004,
4213 	.pd = {
4214 		.name = "pcie_2_gdsc",
4215 	},
4216 	.pwrsts = PWRSTS_OFF_ON,
4217 	.flags = POLL_CFG_GDSCR,
4218 };
4219 
4220 static struct gdsc ufs_card_2_gdsc = {
4221 	.gdscr = 0xa2004,
4222 	.pd = {
4223 		.name = "ufs_card_2_gdsc",
4224 	},
4225 	.pwrsts = PWRSTS_OFF_ON,
4226 	.flags = POLL_CFG_GDSCR,
4227 };
4228 
4229 static struct gdsc pcie_3_gdsc = {
4230 	.gdscr = 0xa3004,
4231 	.pd = {
4232 		.name = "pcie_3_gdsc",
4233 	},
4234 	.pwrsts = PWRSTS_OFF_ON,
4235 	.flags = POLL_CFG_GDSCR,
4236 };
4237 
4238 static struct gdsc usb30_mp_gdsc = {
4239 	.gdscr = 0xa6004,
4240 	.pd = {
4241 		.name = "usb30_mp_gdsc",
4242 	},
4243 	.pwrsts = PWRSTS_OFF_ON,
4244 	.flags = POLL_CFG_GDSCR,
4245 };
4246 
4247 static struct clk_regmap *gcc_sc8180x_clocks[] = {
4248 	[GCC_AGGRE_NOC_PCIE_TBU_CLK] = &gcc_aggre_noc_pcie_tbu_clk.clkr,
4249 	[GCC_AGGRE_UFS_CARD_AXI_CLK] = &gcc_aggre_ufs_card_axi_clk.clkr,
4250 	[GCC_AGGRE_UFS_CARD_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_card_axi_hw_ctl_clk.clkr,
4251 	[GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
4252 	[GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_phy_axi_hw_ctl_clk.clkr,
4253 	[GCC_AGGRE_USB3_MP_AXI_CLK] = &gcc_aggre_usb3_mp_axi_clk.clkr,
4254 	[GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
4255 	[GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr,
4256 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
4257 	[GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
4258 	[GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
4259 	[GCC_CFG_NOC_USB3_MP_AXI_CLK] = &gcc_cfg_noc_usb3_mp_axi_clk.clkr,
4260 	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
4261 	[GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr,
4262 	[GCC_CPUSS_AHB_CLK] = &gcc_cpuss_ahb_clk.clkr,
4263 	[GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr,
4264 	[GCC_CPUSS_RBCPR_CLK] = &gcc_cpuss_rbcpr_clk.clkr,
4265 	[GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
4266 	[GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
4267 	[GCC_DISP_SF_AXI_CLK] = &gcc_disp_sf_axi_clk.clkr,
4268 	[GCC_EMAC_AXI_CLK] = &gcc_emac_axi_clk.clkr,
4269 	[GCC_EMAC_PTP_CLK] = &gcc_emac_ptp_clk.clkr,
4270 	[GCC_EMAC_PTP_CLK_SRC] = &gcc_emac_ptp_clk_src.clkr,
4271 	[GCC_EMAC_RGMII_CLK] = &gcc_emac_rgmii_clk.clkr,
4272 	[GCC_EMAC_RGMII_CLK_SRC] = &gcc_emac_rgmii_clk_src.clkr,
4273 	[GCC_EMAC_SLV_AHB_CLK] = &gcc_emac_slv_ahb_clk.clkr,
4274 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
4275 	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
4276 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
4277 	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
4278 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
4279 	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
4280 	[GCC_GP4_CLK] = &gcc_gp4_clk.clkr,
4281 	[GCC_GP4_CLK_SRC] = &gcc_gp4_clk_src.clkr,
4282 	[GCC_GP5_CLK] = &gcc_gp5_clk.clkr,
4283 	[GCC_GP5_CLK_SRC] = &gcc_gp5_clk_src.clkr,
4284 	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
4285 	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
4286 	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
4287 	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
4288 	[GCC_NPU_AT_CLK] = &gcc_npu_at_clk.clkr,
4289 	[GCC_NPU_AXI_CLK] = &gcc_npu_axi_clk.clkr,
4290 	[GCC_NPU_AXI_CLK_SRC] = &gcc_npu_axi_clk_src.clkr,
4291 	[GCC_NPU_GPLL0_CLK_SRC] = &gcc_npu_gpll0_clk_src.clkr,
4292 	[GCC_NPU_GPLL0_DIV_CLK_SRC] = &gcc_npu_gpll0_div_clk_src.clkr,
4293 	[GCC_NPU_TRIG_CLK] = &gcc_npu_trig_clk.clkr,
4294 	[GCC_PCIE0_PHY_REFGEN_CLK] = &gcc_pcie0_phy_refgen_clk.clkr,
4295 	[GCC_PCIE1_PHY_REFGEN_CLK] = &gcc_pcie1_phy_refgen_clk.clkr,
4296 	[GCC_PCIE2_PHY_REFGEN_CLK] = &gcc_pcie2_phy_refgen_clk.clkr,
4297 	[GCC_PCIE3_PHY_REFGEN_CLK] = &gcc_pcie3_phy_refgen_clk.clkr,
4298 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
4299 	[GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
4300 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
4301 	[GCC_PCIE_0_CLKREF_CLK] = &gcc_pcie_0_clkref_clk.clkr,
4302 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
4303 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
4304 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
4305 	[GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
4306 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
4307 	[GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
4308 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
4309 	[GCC_PCIE_1_CLKREF_CLK] = &gcc_pcie_1_clkref_clk.clkr,
4310 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
4311 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
4312 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
4313 	[GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
4314 	[GCC_PCIE_2_AUX_CLK] = &gcc_pcie_2_aux_clk.clkr,
4315 	[GCC_PCIE_2_AUX_CLK_SRC] = &gcc_pcie_2_aux_clk_src.clkr,
4316 	[GCC_PCIE_2_CFG_AHB_CLK] = &gcc_pcie_2_cfg_ahb_clk.clkr,
4317 	[GCC_PCIE_2_CLKREF_CLK] = &gcc_pcie_2_clkref_clk.clkr,
4318 	[GCC_PCIE_2_MSTR_AXI_CLK] = &gcc_pcie_2_mstr_axi_clk.clkr,
4319 	[GCC_PCIE_2_PIPE_CLK] = &gcc_pcie_2_pipe_clk.clkr,
4320 	[GCC_PCIE_2_SLV_AXI_CLK] = &gcc_pcie_2_slv_axi_clk.clkr,
4321 	[GCC_PCIE_2_SLV_Q2A_AXI_CLK] = &gcc_pcie_2_slv_q2a_axi_clk.clkr,
4322 	[GCC_PCIE_3_AUX_CLK] = &gcc_pcie_3_aux_clk.clkr,
4323 	[GCC_PCIE_3_AUX_CLK_SRC] = &gcc_pcie_3_aux_clk_src.clkr,
4324 	[GCC_PCIE_3_CFG_AHB_CLK] = &gcc_pcie_3_cfg_ahb_clk.clkr,
4325 	[GCC_PCIE_3_CLKREF_CLK] = &gcc_pcie_3_clkref_clk.clkr,
4326 	[GCC_PCIE_3_MSTR_AXI_CLK] = &gcc_pcie_3_mstr_axi_clk.clkr,
4327 	[GCC_PCIE_3_PIPE_CLK] = &gcc_pcie_3_pipe_clk.clkr,
4328 	[GCC_PCIE_3_SLV_AXI_CLK] = &gcc_pcie_3_slv_axi_clk.clkr,
4329 	[GCC_PCIE_3_SLV_Q2A_AXI_CLK] = &gcc_pcie_3_slv_q2a_axi_clk.clkr,
4330 	[GCC_PCIE_PHY_AUX_CLK] = &gcc_pcie_phy_aux_clk.clkr,
4331 	[GCC_PCIE_PHY_REFGEN_CLK_SRC] = &gcc_pcie_phy_refgen_clk_src.clkr,
4332 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
4333 	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
4334 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
4335 	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
4336 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
4337 	[GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
4338 	[GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
4339 	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
4340 	[GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,
4341 	[GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
4342 	[GCC_QSPI_1_CNOC_PERIPH_AHB_CLK] = &gcc_qspi_1_cnoc_periph_ahb_clk.clkr,
4343 	[GCC_QSPI_1_CORE_CLK] = &gcc_qspi_1_core_clk.clkr,
4344 	[GCC_QSPI_1_CORE_CLK_SRC] = &gcc_qspi_1_core_clk_src.clkr,
4345 	[GCC_QSPI_CNOC_PERIPH_AHB_CLK] = &gcc_qspi_cnoc_periph_ahb_clk.clkr,
4346 	[GCC_QSPI_CORE_CLK] = &gcc_qspi_core_clk.clkr,
4347 	[GCC_QSPI_CORE_CLK_SRC] = &gcc_qspi_core_clk_src.clkr,
4348 	[GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
4349 	[GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
4350 	[GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
4351 	[GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
4352 	[GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
4353 	[GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
4354 	[GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
4355 	[GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
4356 	[GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
4357 	[GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
4358 	[GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
4359 	[GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
4360 	[GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
4361 	[GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
4362 	[GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
4363 	[GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
4364 	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
4365 	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
4366 	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
4367 	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
4368 	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
4369 	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
4370 	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
4371 	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
4372 	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
4373 	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
4374 	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
4375 	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
4376 	[GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,
4377 	[GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,
4378 	[GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,
4379 	[GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,
4380 	[GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,
4381 	[GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,
4382 	[GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,
4383 	[GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,
4384 	[GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,
4385 	[GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,
4386 	[GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,
4387 	[GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,
4388 	[GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
4389 	[GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
4390 	[GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
4391 	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
4392 	[GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,
4393 	[GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,
4394 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
4395 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
4396 	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
4397 	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
4398 	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
4399 	[GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
4400 	[GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,
4401 	[GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
4402 	[GCC_TSIF_INACTIVITY_TIMERS_CLK] = &gcc_tsif_inactivity_timers_clk.clkr,
4403 	[GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
4404 	[GCC_TSIF_REF_CLK_SRC] = &gcc_tsif_ref_clk_src.clkr,
4405 	[GCC_UFS_CARD_2_AHB_CLK] = &gcc_ufs_card_2_ahb_clk.clkr,
4406 	[GCC_UFS_CARD_2_AXI_CLK] = &gcc_ufs_card_2_axi_clk.clkr,
4407 	[GCC_UFS_CARD_2_AXI_CLK_SRC] = &gcc_ufs_card_2_axi_clk_src.clkr,
4408 	[GCC_UFS_CARD_2_ICE_CORE_CLK] = &gcc_ufs_card_2_ice_core_clk.clkr,
4409 	[GCC_UFS_CARD_2_ICE_CORE_CLK_SRC] = &gcc_ufs_card_2_ice_core_clk_src.clkr,
4410 	[GCC_UFS_CARD_2_PHY_AUX_CLK] = &gcc_ufs_card_2_phy_aux_clk.clkr,
4411 	[GCC_UFS_CARD_2_PHY_AUX_CLK_SRC] = &gcc_ufs_card_2_phy_aux_clk_src.clkr,
4412 	[GCC_UFS_CARD_2_RX_SYMBOL_0_CLK] = &gcc_ufs_card_2_rx_symbol_0_clk.clkr,
4413 	[GCC_UFS_CARD_2_RX_SYMBOL_1_CLK] = &gcc_ufs_card_2_rx_symbol_1_clk.clkr,
4414 	[GCC_UFS_CARD_2_TX_SYMBOL_0_CLK] = &gcc_ufs_card_2_tx_symbol_0_clk.clkr,
4415 	[GCC_UFS_CARD_2_UNIPRO_CORE_CLK] = &gcc_ufs_card_2_unipro_core_clk.clkr,
4416 	[GCC_UFS_CARD_2_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_card_2_unipro_core_clk_src.clkr,
4417 	[GCC_UFS_CARD_AHB_CLK] = &gcc_ufs_card_ahb_clk.clkr,
4418 	[GCC_UFS_CARD_AXI_CLK] = &gcc_ufs_card_axi_clk.clkr,
4419 	[GCC_UFS_CARD_AXI_CLK_SRC] = &gcc_ufs_card_axi_clk_src.clkr,
4420 	[GCC_UFS_CARD_AXI_HW_CTL_CLK] = &gcc_ufs_card_axi_hw_ctl_clk.clkr,
4421 	[GCC_UFS_CARD_ICE_CORE_CLK] = &gcc_ufs_card_ice_core_clk.clkr,
4422 	[GCC_UFS_CARD_ICE_CORE_CLK_SRC] = &gcc_ufs_card_ice_core_clk_src.clkr,
4423 	[GCC_UFS_CARD_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_card_ice_core_hw_ctl_clk.clkr,
4424 	[GCC_UFS_CARD_PHY_AUX_CLK] = &gcc_ufs_card_phy_aux_clk.clkr,
4425 	[GCC_UFS_CARD_PHY_AUX_CLK_SRC] = &gcc_ufs_card_phy_aux_clk_src.clkr,
4426 	[GCC_UFS_CARD_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_card_phy_aux_hw_ctl_clk.clkr,
4427 	[GCC_UFS_CARD_RX_SYMBOL_0_CLK] = &gcc_ufs_card_rx_symbol_0_clk.clkr,
4428 	[GCC_UFS_CARD_RX_SYMBOL_1_CLK] = &gcc_ufs_card_rx_symbol_1_clk.clkr,
4429 	[GCC_UFS_CARD_TX_SYMBOL_0_CLK] = &gcc_ufs_card_tx_symbol_0_clk.clkr,
4430 	[GCC_UFS_CARD_UNIPRO_CORE_CLK] = &gcc_ufs_card_unipro_core_clk.clkr,
4431 	[GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_card_unipro_core_clk_src.clkr,
4432 	[GCC_UFS_CARD_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_card_unipro_core_hw_ctl_clk.clkr,
4433 	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
4434 	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
4435 	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
4436 	[GCC_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_ufs_phy_axi_hw_ctl_clk.clkr,
4437 	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
4438 	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
4439 	[GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_phy_ice_core_hw_ctl_clk.clkr,
4440 	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
4441 	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
4442 	[GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_phy_phy_aux_hw_ctl_clk.clkr,
4443 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
4444 	[GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
4445 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
4446 	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
4447 	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,
4448 	[GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_phy_unipro_core_hw_ctl_clk.clkr,
4449 	[GCC_USB30_MP_MASTER_CLK] = &gcc_usb30_mp_master_clk.clkr,
4450 	[GCC_USB30_MP_MASTER_CLK_SRC] = &gcc_usb30_mp_master_clk_src.clkr,
4451 	[GCC_USB30_MP_MOCK_UTMI_CLK] = &gcc_usb30_mp_mock_utmi_clk.clkr,
4452 	[GCC_USB30_MP_MOCK_UTMI_CLK_SRC] = &gcc_usb30_mp_mock_utmi_clk_src.clkr,
4453 	[GCC_USB30_MP_SLEEP_CLK] = &gcc_usb30_mp_sleep_clk.clkr,
4454 	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
4455 	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
4456 	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
4457 	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,
4458 	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
4459 	[GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,
4460 	[GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr,
4461 	[GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,
4462 	[GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] = &gcc_usb30_sec_mock_utmi_clk_src.clkr,
4463 	[GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,
4464 	[GCC_USB3_MP_PHY_AUX_CLK] = &gcc_usb3_mp_phy_aux_clk.clkr,
4465 	[GCC_USB3_MP_PHY_AUX_CLK_SRC] = &gcc_usb3_mp_phy_aux_clk_src.clkr,
4466 	[GCC_USB3_MP_PHY_COM_AUX_CLK] = &gcc_usb3_mp_phy_com_aux_clk.clkr,
4467 	[GCC_USB3_MP_PHY_PIPE_0_CLK] = &gcc_usb3_mp_phy_pipe_0_clk.clkr,
4468 	[GCC_USB3_MP_PHY_PIPE_1_CLK] = &gcc_usb3_mp_phy_pipe_1_clk.clkr,
4469 	[GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,
4470 	[GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
4471 	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
4472 	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
4473 	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
4474 	[GCC_USB3_SEC_CLKREF_CLK] = &gcc_usb3_sec_clkref_clk.clkr,
4475 	[GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr,
4476 	[GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr,
4477 	[GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr,
4478 	[GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr,
4479 	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
4480 	[GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,
4481 	[GCC_VIDEO_AXIC_CLK] = &gcc_video_axic_clk.clkr,
4482 	[GPLL0] = &gpll0.clkr,
4483 	[GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,
4484 	[GPLL1] = &gpll1.clkr,
4485 	[GPLL4] = &gpll4.clkr,
4486 	[GPLL7] = &gpll7.clkr,
4487 };
4488 
4489 static const struct qcom_reset_map gcc_sc8180x_resets[] = {
4490 	[GCC_EMAC_BCR] = { 0x6000 },
4491 	[GCC_GPU_BCR] = { 0x71000 },
4492 	[GCC_MMSS_BCR] = { 0xb000 },
4493 	[GCC_NPU_BCR] = { 0x4d000 },
4494 	[GCC_PCIE_0_BCR] = { 0x6b000 },
4495 	[GCC_PCIE_0_PHY_BCR] = { 0x6c01c },
4496 	[GCC_PCIE_1_BCR] = { 0x8d000 },
4497 	[GCC_PCIE_1_PHY_BCR] = { 0x8e01c },
4498 	[GCC_PCIE_2_BCR] = { 0x9d000 },
4499 	[GCC_PCIE_2_PHY_BCR] = { 0xa701c },
4500 	[GCC_PCIE_3_BCR] = { 0xa3000 },
4501 	[GCC_PCIE_3_PHY_BCR] = { 0xa801c },
4502 	[GCC_PCIE_PHY_BCR] = { 0x6f000 },
4503 	[GCC_PDM_BCR] = { 0x33000 },
4504 	[GCC_PRNG_BCR] = { 0x34000 },
4505 	[GCC_QSPI_1_BCR] = { 0x4a000 },
4506 	[GCC_QSPI_BCR] = { 0x24008 },
4507 	[GCC_QUPV3_WRAPPER_0_BCR] = { 0x17000 },
4508 	[GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 },
4509 	[GCC_QUPV3_WRAPPER_2_BCR] = { 0x1e000 },
4510 	[GCC_QUSB2PHY_5_BCR] = { 0x12010 },
4511 	[GCC_QUSB2PHY_MP0_BCR] = { 0x12008 },
4512 	[GCC_QUSB2PHY_MP1_BCR] = { 0x1200c },
4513 	[GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
4514 	[GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
4515 	[GCC_USB3_PHY_PRIM_SP0_BCR] = { 0x50000 },
4516 	[GCC_USB3_PHY_PRIM_SP1_BCR] = { 0x50004 },
4517 	[GCC_USB3_DP_PHY_PRIM_SP0_BCR] = { 0x50010 },
4518 	[GCC_USB3_DP_PHY_PRIM_SP1_BCR] = { 0x50014 },
4519 	[GCC_USB3_PHY_SEC_BCR] = { 0x50018 },
4520 	[GCC_USB3PHY_PHY_SEC_BCR] = { 0x5001c },
4521 	[GCC_USB3_DP_PHY_SEC_BCR] = { 0x50020 },
4522 	[GCC_SDCC2_BCR] = { 0x14000 },
4523 	[GCC_SDCC4_BCR] = { 0x16000 },
4524 	[GCC_TSIF_BCR] = { 0x36000 },
4525 	[GCC_UFS_CARD_2_BCR] = { 0xa2000 },
4526 	[GCC_UFS_CARD_BCR] = { 0x75000 },
4527 	[GCC_UFS_PHY_BCR] = { 0x77000 },
4528 	[GCC_USB30_MP_BCR] = { 0xa6000 },
4529 	[GCC_USB30_PRIM_BCR] = { 0xf000 },
4530 	[GCC_USB30_SEC_BCR] = { 0x10000 },
4531 	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 },
4532 	[GCC_VIDEO_AXIC_CLK_BCR] = { 0xb02c, 2 },
4533 	[GCC_VIDEO_AXI0_CLK_BCR] = { 0xb024, 2 },
4534 	[GCC_VIDEO_AXI1_CLK_BCR] = { 0xb028, 2 },
4535 };
4536 
4537 static struct gdsc *gcc_sc8180x_gdscs[] = {
4538 	[EMAC_GDSC] = &emac_gdsc,
4539 	[PCIE_0_GDSC] = &pcie_0_gdsc,
4540 	[PCIE_1_GDSC] = &pcie_1_gdsc,
4541 	[PCIE_2_GDSC] = &pcie_2_gdsc,
4542 	[PCIE_3_GDSC] = &pcie_3_gdsc,
4543 	[UFS_CARD_GDSC] = &ufs_card_gdsc,
4544 	[UFS_CARD_2_GDSC] = &ufs_card_2_gdsc,
4545 	[UFS_PHY_GDSC] = &ufs_phy_gdsc,
4546 	[USB30_MP_GDSC] = &usb30_mp_gdsc,
4547 	[USB30_PRIM_GDSC] = &usb30_prim_gdsc,
4548 	[USB30_SEC_GDSC] = &usb30_sec_gdsc,
4549 };
4550 
4551 static const struct regmap_config gcc_sc8180x_regmap_config = {
4552 	.reg_bits	= 32,
4553 	.reg_stride	= 4,
4554 	.val_bits	= 32,
4555 	.max_register	= 0xc0004,
4556 	.fast_io	= true,
4557 };
4558 
4559 static const struct qcom_cc_desc gcc_sc8180x_desc = {
4560 	.config = &gcc_sc8180x_regmap_config,
4561 	.clks = gcc_sc8180x_clocks,
4562 	.num_clks = ARRAY_SIZE(gcc_sc8180x_clocks),
4563 	.resets = gcc_sc8180x_resets,
4564 	.num_resets = ARRAY_SIZE(gcc_sc8180x_resets),
4565 	.gdscs = gcc_sc8180x_gdscs,
4566 	.num_gdscs = ARRAY_SIZE(gcc_sc8180x_gdscs),
4567 };
4568 
4569 static const struct of_device_id gcc_sc8180x_match_table[] = {
4570 	{ .compatible = "qcom,gcc-sc8180x" },
4571 	{ }
4572 };
4573 MODULE_DEVICE_TABLE(of, gcc_sc8180x_match_table);
4574 
gcc_sc8180x_probe(struct platform_device * pdev)4575 static int gcc_sc8180x_probe(struct platform_device *pdev)
4576 {
4577 	struct regmap *regmap;
4578 
4579 	regmap = qcom_cc_map(pdev, &gcc_sc8180x_desc);
4580 	if (IS_ERR(regmap))
4581 		return PTR_ERR(regmap);
4582 
4583 	/*
4584 	 * Enable the following always-on clocks:
4585 	 * GCC_VIDEO_AHB_CLK, GCC_CAMERA_AHB_CLK, GCC_DISP_AHB_CLK,
4586 	 * GCC_VIDEO_XO_CLK, GCC_CAMERA_XO_CLK, GCC_DISP_XO_CLK,
4587 	 * GCC_CPUSS_GNOC_CLK, GCC_CPUSS_DVM_BUS_CLK, GCC_NPU_CFG_AHB_CLK and
4588 	 * GCC_GPU_CFG_AHB_CLK
4589 	 */
4590 	regmap_update_bits(regmap, 0xb004, BIT(0), BIT(0));
4591 	regmap_update_bits(regmap, 0xb008, BIT(0), BIT(0));
4592 	regmap_update_bits(regmap, 0xb00c, BIT(0), BIT(0));
4593 	regmap_update_bits(regmap, 0xb040, BIT(0), BIT(0));
4594 	regmap_update_bits(regmap, 0xb044, BIT(0), BIT(0));
4595 	regmap_update_bits(regmap, 0xb048, BIT(0), BIT(0));
4596 	regmap_update_bits(regmap, 0x48004, BIT(0), BIT(0));
4597 	regmap_update_bits(regmap, 0x48190, BIT(0), BIT(0));
4598 	regmap_update_bits(regmap, 0x4d004, BIT(0), BIT(0));
4599 	regmap_update_bits(regmap, 0x71004, BIT(0), BIT(0));
4600 
4601 	/* Disable the GPLL0 active input to NPU and GPU via MISC registers */
4602 	regmap_update_bits(regmap, 0x4d110, 0x3, 0x3);
4603 	regmap_update_bits(regmap, 0x71028, 0x3, 0x3);
4604 
4605 	return qcom_cc_really_probe(pdev, &gcc_sc8180x_desc, regmap);
4606 }
4607 
4608 static struct platform_driver gcc_sc8180x_driver = {
4609 	.probe		= gcc_sc8180x_probe,
4610 	.driver		= {
4611 		.name	= "gcc-sc8180x",
4612 		.of_match_table = gcc_sc8180x_match_table,
4613 	},
4614 };
4615 
gcc_sc8180x_init(void)4616 static int __init gcc_sc8180x_init(void)
4617 {
4618 	return platform_driver_register(&gcc_sc8180x_driver);
4619 }
4620 core_initcall(gcc_sc8180x_init);
4621 
gcc_sc8180x_exit(void)4622 static void __exit gcc_sc8180x_exit(void)
4623 {
4624 	platform_driver_unregister(&gcc_sc8180x_driver);
4625 }
4626 module_exit(gcc_sc8180x_exit);
4627 
4628 MODULE_DESCRIPTION("QTI GCC SC8180x driver");
4629 MODULE_LICENSE("GPL v2");
4630