xref: /openbmc/linux/drivers/clk/qcom/gcc-sm6125.c (revision c10d12e3)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
4  */
5 
6 #include <linux/kernel.h>
7 #include <linux/err.h>
8 #include <linux/module.h>
9 #include <linux/platform_device.h>
10 #include <linux/of.h>
11 #include <linux/of_device.h>
12 #include <linux/clk-provider.h>
13 #include <linux/regmap.h>
14 #include <linux/reset-controller.h>
15 
16 #include <dt-bindings/clock/qcom,gcc-sm6125.h>
17 
18 #include "clk-alpha-pll.h"
19 #include "clk-branch.h"
20 #include "clk-rcg.h"
21 #include "clk-regmap.h"
22 #include "common.h"
23 #include "gdsc.h"
24 #include "reset.h"
25 
26 enum {
27 	P_BI_TCXO,
28 	P_GPLL0_OUT_AUX2,
29 	P_GPLL0_OUT_EARLY,
30 	P_GPLL3_OUT_EARLY,
31 	P_GPLL4_OUT_MAIN,
32 	P_GPLL5_OUT_MAIN,
33 	P_GPLL6_OUT_EARLY,
34 	P_GPLL6_OUT_MAIN,
35 	P_GPLL7_OUT_MAIN,
36 	P_GPLL8_OUT_EARLY,
37 	P_GPLL8_OUT_MAIN,
38 	P_GPLL9_OUT_MAIN,
39 	P_SLEEP_CLK,
40 };
41 
42 static struct clk_alpha_pll gpll0_out_early = {
43 	.offset = 0x0,
44 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
45 	.clkr = {
46 		.enable_reg = 0x79000,
47 		.enable_mask = BIT(0),
48 		.hw.init = &(struct clk_init_data){
49 			.name = "gpll0_out_early",
50 			.parent_data = &(const struct clk_parent_data){
51 				.fw_name = "bi_tcxo",
52 			},
53 			.num_parents = 1,
54 			.ops = &clk_alpha_pll_ops,
55 		},
56 	},
57 };
58 
59 static struct clk_fixed_factor gpll0_out_aux2 = {
60 	.mult = 1,
61 	.div = 2,
62 	.hw.init = &(struct clk_init_data){
63 		.name = "gpll0_out_aux2",
64 		.parent_hws = (const struct clk_hw*[]){
65 			&gpll0_out_early.clkr.hw,
66 		},
67 		.num_parents = 1,
68 		.ops = &clk_fixed_factor_ops,
69 	},
70 };
71 
72 static struct clk_fixed_factor gpll0_out_main = {
73 	.mult = 1,
74 	.div = 2,
75 	.hw.init = &(struct clk_init_data){
76 		.name = "gpll0_out_main",
77 		.parent_hws = (const struct clk_hw*[]){
78 			&gpll0_out_early.clkr.hw,
79 		},
80 		.num_parents = 1,
81 		.ops = &clk_fixed_factor_ops,
82 	},
83 };
84 
85 static struct clk_alpha_pll gpll3_out_early = {
86 	.offset = 0x3000,
87 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
88 	.clkr = {
89 		.enable_reg = 0x79000,
90 		.enable_mask = BIT(3),
91 		.hw.init = &(struct clk_init_data){
92 			.name = "gpll3_out_early",
93 			.parent_data = &(const struct clk_parent_data){
94 				.fw_name = "bi_tcxo",
95 			},
96 			.num_parents = 1,
97 			.ops = &clk_alpha_pll_ops,
98 		},
99 	},
100 };
101 
102 static struct clk_alpha_pll gpll4_out_main = {
103 	.offset = 0x4000,
104 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
105 	.clkr = {
106 		.enable_reg = 0x79000,
107 		.enable_mask = BIT(4),
108 		.hw.init = &(struct clk_init_data){
109 			.name = "gpll4_out_main",
110 			.parent_data = &(const struct clk_parent_data){
111 				.fw_name = "bi_tcxo",
112 			},
113 			.num_parents = 1,
114 			.ops = &clk_alpha_pll_ops,
115 		},
116 	},
117 };
118 
119 static struct clk_alpha_pll gpll5_out_main = {
120 	.offset = 0x5000,
121 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
122 	.clkr = {
123 		.enable_reg = 0x79000,
124 		.enable_mask = BIT(5),
125 		.hw.init = &(struct clk_init_data){
126 			.name = "gpll5_out_main",
127 			.parent_data = &(const struct clk_parent_data){
128 				.fw_name = "bi_tcxo",
129 			},
130 			.num_parents = 1,
131 			.ops = &clk_alpha_pll_ops,
132 		},
133 	},
134 };
135 
136 static struct clk_alpha_pll gpll6_out_early = {
137 	.offset = 0x6000,
138 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
139 	.clkr = {
140 		.enable_reg = 0x79000,
141 		.enable_mask = BIT(6),
142 		.hw.init = &(struct clk_init_data){
143 			.name = "gpll6_out_early",
144 			.parent_data = &(const struct clk_parent_data){
145 				.fw_name = "bi_tcxo",
146 			},
147 			.num_parents = 1,
148 			.ops = &clk_alpha_pll_ops,
149 		},
150 	},
151 };
152 
153 static struct clk_fixed_factor gpll6_out_main = {
154 	.mult = 1,
155 	.div = 2,
156 	.hw.init = &(struct clk_init_data){
157 		.name = "gpll6_out_main",
158 		.parent_hws = (const struct clk_hw*[]){
159 			&gpll6_out_early.clkr.hw,
160 		},
161 		.num_parents = 1,
162 		.ops = &clk_fixed_factor_ops,
163 	},
164 };
165 
166 static struct clk_alpha_pll gpll7_out_early = {
167 	.offset = 0x7000,
168 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
169 	.clkr = {
170 		.enable_reg = 0x79000,
171 		.enable_mask = BIT(7),
172 		.hw.init = &(struct clk_init_data){
173 			.name = "gpll7_out_early",
174 			.parent_data = &(const struct clk_parent_data){
175 				.fw_name = "bi_tcxo",
176 			},
177 			.num_parents = 1,
178 			.ops = &clk_alpha_pll_ops,
179 		},
180 	},
181 };
182 
183 static struct clk_fixed_factor gpll7_out_main = {
184 	.mult = 1,
185 	.div = 2,
186 	.hw.init = &(struct clk_init_data){
187 		.name = "gpll7_out_main",
188 		.parent_hws = (const struct clk_hw*[]){
189 			&gpll7_out_early.clkr.hw,
190 		},
191 		.num_parents = 1,
192 		.ops = &clk_fixed_factor_ops,
193 	},
194 };
195 
196 static struct clk_alpha_pll gpll8_out_early = {
197 	.offset = 0x8000,
198 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
199 	.clkr = {
200 		.enable_reg = 0x79000,
201 		.enable_mask = BIT(8),
202 		.hw.init = &(struct clk_init_data){
203 			.name = "gpll8_out_early",
204 			.parent_data = &(const struct clk_parent_data){
205 				.fw_name = "bi_tcxo",
206 			},
207 			.num_parents = 1,
208 			.ops = &clk_alpha_pll_ops,
209 		},
210 	},
211 };
212 
213 static struct clk_fixed_factor gpll8_out_main = {
214 	.mult = 1,
215 	.div = 2,
216 	.hw.init = &(struct clk_init_data){
217 		.name = "gpll8_out_main",
218 		.parent_hws = (const struct clk_hw*[]){
219 			&gpll8_out_early.clkr.hw,
220 		},
221 		.num_parents = 1,
222 		.ops = &clk_fixed_factor_ops,
223 	},
224 };
225 
226 static struct clk_alpha_pll gpll9_out_early = {
227 	.offset = 0x9000,
228 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
229 	.clkr = {
230 		.enable_reg = 0x79000,
231 		.enable_mask = BIT(9),
232 		.hw.init = &(struct clk_init_data){
233 			.name = "gpll9_out_early",
234 			.parent_data = &(const struct clk_parent_data){
235 				.fw_name = "bi_tcxo",
236 			},
237 			.num_parents = 1,
238 			.ops = &clk_alpha_pll_ops,
239 		},
240 	},
241 };
242 
243 static struct clk_fixed_factor gpll9_out_main = {
244 	.mult = 1,
245 	.div = 2,
246 	.hw.init = &(struct clk_init_data){
247 		.name = "gpll9_out_main",
248 		.parent_hws = (const struct clk_hw*[]){
249 			&gpll9_out_early.clkr.hw,
250 		},
251 		.num_parents = 1,
252 		.ops = &clk_fixed_factor_ops,
253 	},
254 };
255 
256 static const struct parent_map gcc_parent_map_0[] = {
257 	{ P_BI_TCXO, 0 },
258 	{ P_GPLL0_OUT_EARLY, 1 },
259 	{ P_GPLL0_OUT_AUX2, 2 },
260 };
261 
262 static const struct clk_parent_data gcc_parent_data_0[] = {
263 	{ .fw_name = "bi_tcxo" },
264 	{ .hw = &gpll0_out_early.clkr.hw },
265 	{ .hw = &gpll0_out_aux2.hw },
266 };
267 
268 static const struct parent_map gcc_parent_map_1[] = {
269 	{ P_BI_TCXO, 0 },
270 	{ P_GPLL0_OUT_EARLY, 1 },
271 	{ P_GPLL0_OUT_AUX2, 2 },
272 	{ P_GPLL6_OUT_MAIN, 4 },
273 };
274 
275 static const struct clk_parent_data gcc_parent_data_1[] = {
276 	{ .fw_name = "bi_tcxo" },
277 	{ .hw = &gpll0_out_early.clkr.hw },
278 	{ .hw = &gpll0_out_aux2.hw },
279 	{ .hw = &gpll6_out_main.hw },
280 };
281 
282 static const struct parent_map gcc_parent_map_2[] = {
283 	{ P_BI_TCXO, 0 },
284 	{ P_GPLL0_OUT_EARLY, 1 },
285 	{ P_GPLL0_OUT_AUX2, 2 },
286 	{ P_SLEEP_CLK, 5 },
287 };
288 
289 static const struct clk_parent_data gcc_parent_data_2[] = {
290 	{ .fw_name = "bi_tcxo" },
291 	{ .hw = &gpll0_out_early.clkr.hw },
292 	{ .hw = &gpll0_out_aux2.hw },
293 	{ .fw_name = "sleep_clk" },
294 };
295 
296 static const struct parent_map gcc_parent_map_3[] = {
297 	{ P_BI_TCXO, 0 },
298 	{ P_GPLL0_OUT_EARLY, 1 },
299 	{ P_GPLL5_OUT_MAIN, 3 },
300 	{ P_GPLL4_OUT_MAIN, 5 },
301 };
302 
303 static const struct clk_parent_data gcc_parent_data_3[] = {
304 	{ .fw_name = "bi_tcxo" },
305 	{ .hw = &gpll0_out_early.clkr.hw },
306 	{ .hw = &gpll5_out_main.clkr.hw },
307 	{ .hw = &gpll4_out_main.clkr.hw },
308 };
309 
310 static const struct parent_map gcc_parent_map_4[] = {
311 	{ P_BI_TCXO, 0 },
312 	{ P_GPLL0_OUT_EARLY, 1 },
313 	{ P_GPLL9_OUT_MAIN, 2 },
314 };
315 
316 static const struct clk_parent_data gcc_parent_data_4[] = {
317 	{ .fw_name = "bi_tcxo" },
318 	{ .hw = &gpll0_out_early.clkr.hw },
319 	{ .hw = &gpll9_out_main.hw },
320 };
321 
322 static const struct parent_map gcc_parent_map_5[] = {
323 	{ P_BI_TCXO, 0 },
324 	{ P_GPLL0_OUT_EARLY, 1 },
325 };
326 
327 static const struct clk_parent_data gcc_parent_data_5[] = {
328 	{ .fw_name = "bi_tcxo" },
329 	{ .hw = &gpll0_out_early.clkr.hw },
330 };
331 
332 static const struct parent_map gcc_parent_map_6[] = {
333 	{ P_BI_TCXO, 0 },
334 	{ P_GPLL0_OUT_EARLY, 1 },
335 	{ P_GPLL4_OUT_MAIN, 5 },
336 };
337 
338 static const struct clk_parent_data gcc_parent_data_6[] = {
339 	{ .fw_name = "bi_tcxo" },
340 	{ .hw = &gpll0_out_early.clkr.hw },
341 	{ .hw = &gpll4_out_main.clkr.hw },
342 };
343 
344 static const struct parent_map gcc_parent_map_7[] = {
345 	{ P_BI_TCXO, 0 },
346 	{ P_GPLL0_OUT_EARLY, 1 },
347 	{ P_SLEEP_CLK, 5 },
348 };
349 
350 static const struct clk_parent_data gcc_parent_data_7[] = {
351 	{ .fw_name = "bi_tcxo" },
352 	{ .hw = &gpll0_out_early.clkr.hw },
353 	{ .fw_name = "sleep_clk" },
354 };
355 
356 static const struct parent_map gcc_parent_map_8[] = {
357 	{ P_BI_TCXO, 0 },
358 	{ P_GPLL0_OUT_EARLY, 1 },
359 	{ P_GPLL9_OUT_MAIN, 2 },
360 	{ P_GPLL6_OUT_EARLY, 3 },
361 	{ P_GPLL8_OUT_MAIN, 4 },
362 	{ P_GPLL4_OUT_MAIN, 5 },
363 	{ P_GPLL3_OUT_EARLY, 6 },
364 };
365 
366 static const struct clk_parent_data gcc_parent_data_8[] = {
367 	{ .fw_name = "bi_tcxo" },
368 	{ .hw = &gpll0_out_early.clkr.hw },
369 	{ .hw = &gpll9_out_main.hw },
370 	{ .hw = &gpll6_out_early.clkr.hw },
371 	{ .hw = &gpll8_out_main.hw },
372 	{ .hw = &gpll4_out_main.clkr.hw },
373 	{ .hw = &gpll3_out_early.clkr.hw },
374 };
375 
376 static const struct parent_map gcc_parent_map_9[] = {
377 	{ P_BI_TCXO, 0 },
378 	{ P_GPLL0_OUT_EARLY, 1 },
379 	{ P_GPLL8_OUT_MAIN, 4 },
380 };
381 
382 static const struct clk_parent_data gcc_parent_data_9[] = {
383 	{ .fw_name = "bi_tcxo" },
384 	{ .hw = &gpll0_out_early.clkr.hw },
385 	{ .hw = &gpll8_out_main.hw },
386 };
387 
388 static const struct parent_map gcc_parent_map_10[] = {
389 	{ P_BI_TCXO, 0 },
390 	{ P_GPLL0_OUT_EARLY, 1 },
391 	{ P_GPLL9_OUT_MAIN, 2 },
392 	{ P_GPLL6_OUT_EARLY, 3 },
393 	{ P_GPLL8_OUT_MAIN, 4 },
394 	{ P_GPLL3_OUT_EARLY, 6 },
395 };
396 
397 static const struct clk_parent_data gcc_parent_data_10[] = {
398 	{ .fw_name = "bi_tcxo" },
399 	{ .hw = &gpll0_out_early.clkr.hw },
400 	{ .hw = &gpll9_out_main.hw },
401 	{ .hw = &gpll6_out_early.clkr.hw },
402 	{ .hw = &gpll8_out_main.hw },
403 	{ .hw = &gpll3_out_early.clkr.hw },
404 };
405 
406 static const struct parent_map gcc_parent_map_11[] = {
407 	{ P_BI_TCXO, 0 },
408 	{ P_GPLL0_OUT_EARLY, 1 },
409 	{ P_GPLL8_OUT_EARLY, 4 },
410 	{ P_GPLL4_OUT_MAIN, 5 },
411 };
412 
413 static const struct clk_parent_data gcc_parent_data_11[] = {
414 	{ .fw_name = "bi_tcxo" },
415 	{ .hw = &gpll0_out_early.clkr.hw },
416 	{ .hw = &gpll8_out_early.clkr.hw },
417 	{ .hw = &gpll4_out_main.clkr.hw },
418 };
419 
420 static const struct parent_map gcc_parent_map_12[] = {
421 	{ P_BI_TCXO, 0 },
422 	{ P_GPLL0_OUT_EARLY, 1 },
423 	{ P_GPLL6_OUT_EARLY, 3 },
424 	{ P_GPLL8_OUT_EARLY, 4 },
425 };
426 
427 static const struct clk_parent_data gcc_parent_data_12[] = {
428 	{ .fw_name = "bi_tcxo" },
429 	{ .hw = &gpll0_out_early.clkr.hw },
430 	{ .hw = &gpll6_out_early.clkr.hw },
431 	{ .hw = &gpll8_out_early.clkr.hw },
432 };
433 
434 static const struct parent_map gcc_parent_map_13[] = {
435 	{ P_BI_TCXO, 0 },
436 	{ P_GPLL0_OUT_EARLY, 1 },
437 	{ P_GPLL0_OUT_AUX2, 2 },
438 	{ P_GPLL7_OUT_MAIN, 3 },
439 	{ P_GPLL4_OUT_MAIN, 5 },
440 };
441 
442 static const struct clk_parent_data gcc_parent_data_13[] = {
443 	{ .fw_name = "bi_tcxo" },
444 	{ .hw = &gpll0_out_early.clkr.hw },
445 	{ .hw = &gpll0_out_aux2.hw },
446 	{ .hw = &gpll7_out_main.hw },
447 	{ .hw = &gpll4_out_main.clkr.hw },
448 };
449 
450 static const struct parent_map gcc_parent_map_14[] = {
451 	{ P_BI_TCXO, 0 },
452 	{ P_SLEEP_CLK, 5 },
453 };
454 
455 static const struct clk_parent_data gcc_parent_data_14[] = {
456 	{ .fw_name = "bi_tcxo" },
457 	{ .fw_name = "sleep_clk" },
458 };
459 
460 static const struct freq_tbl ftbl_gcc_camss_ahb_clk_src[] = {
461 	F(19200000, P_BI_TCXO, 1, 0, 0),
462 	F(40000000, P_GPLL8_OUT_MAIN, 12, 0, 0),
463 	F(80000000, P_GPLL8_OUT_MAIN, 6, 0, 0),
464 	{ }
465 };
466 
467 static struct clk_rcg2 gcc_camss_ahb_clk_src = {
468 	.cmd_rcgr = 0x56088,
469 	.mnd_width = 0,
470 	.hid_width = 5,
471 	.parent_map = gcc_parent_map_9,
472 	.freq_tbl = ftbl_gcc_camss_ahb_clk_src,
473 	.clkr.hw.init = &(struct clk_init_data){
474 		.name = "gcc_camss_ahb_clk_src",
475 		.parent_data = gcc_parent_data_9,
476 		.num_parents = ARRAY_SIZE(gcc_parent_data_9),
477 		.ops = &clk_rcg2_ops,
478 	},
479 };
480 
481 static const struct freq_tbl ftbl_gcc_camss_cci_clk_src[] = {
482 	F(37500000, P_GPLL0_OUT_EARLY, 16, 0, 0),
483 	F(50000000, P_GPLL0_OUT_EARLY, 12, 0, 0),
484 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
485 	{ }
486 };
487 
488 static struct clk_rcg2 gcc_camss_cci_clk_src = {
489 	.cmd_rcgr = 0x52004,
490 	.mnd_width = 8,
491 	.hid_width = 5,
492 	.parent_map = gcc_parent_map_5,
493 	.freq_tbl = ftbl_gcc_camss_cci_clk_src,
494 	.clkr.hw.init = &(struct clk_init_data){
495 		.name = "gcc_camss_cci_clk_src",
496 		.parent_data = gcc_parent_data_5,
497 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
498 		.ops = &clk_rcg2_ops,
499 	},
500 };
501 
502 static const struct freq_tbl ftbl_gcc_camss_cpp_clk_src[] = {
503 	F(120000000, P_GPLL8_OUT_MAIN, 4, 0, 0),
504 	F(240000000, P_GPLL8_OUT_MAIN, 2, 0, 0),
505 	F(320000000, P_GPLL8_OUT_MAIN, 1.5, 0, 0),
506 	F(480000000, P_GPLL8_OUT_MAIN, 1, 0, 0),
507 	F(576000000, P_GPLL9_OUT_MAIN, 1, 0, 0),
508 	{ }
509 };
510 
511 static struct clk_rcg2 gcc_camss_cpp_clk_src = {
512 	.cmd_rcgr = 0x560c8,
513 	.mnd_width = 0,
514 	.hid_width = 5,
515 	.parent_map = gcc_parent_map_10,
516 	.freq_tbl = ftbl_gcc_camss_cpp_clk_src,
517 	.clkr.hw.init = &(struct clk_init_data){
518 		.name = "gcc_camss_cpp_clk_src",
519 		.parent_data = gcc_parent_data_10,
520 		.num_parents = ARRAY_SIZE(gcc_parent_data_10),
521 		.ops = &clk_rcg2_ops,
522 	},
523 };
524 
525 static const struct freq_tbl ftbl_gcc_camss_csi0_clk_src[] = {
526 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
527 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
528 	F(311000000, P_GPLL5_OUT_MAIN, 3, 0, 0),
529 	F(403200000, P_GPLL4_OUT_MAIN, 2, 0, 0),
530 	F(466500000, P_GPLL5_OUT_MAIN, 2, 0, 0),
531 	{ }
532 };
533 
534 static struct clk_rcg2 gcc_camss_csi0_clk_src = {
535 	.cmd_rcgr = 0x55030,
536 	.mnd_width = 0,
537 	.hid_width = 5,
538 	.parent_map = gcc_parent_map_3,
539 	.freq_tbl = ftbl_gcc_camss_csi0_clk_src,
540 	.clkr.hw.init = &(struct clk_init_data){
541 		.name = "gcc_camss_csi0_clk_src",
542 		.parent_data = gcc_parent_data_3,
543 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
544 		.ops = &clk_rcg2_ops,
545 	},
546 };
547 
548 static const struct freq_tbl ftbl_gcc_camss_csi0phytimer_clk_src[] = {
549 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
550 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
551 	F(268800000, P_GPLL4_OUT_MAIN, 3, 0, 0),
552 	{ }
553 };
554 
555 static struct clk_rcg2 gcc_camss_csi0phytimer_clk_src = {
556 	.cmd_rcgr = 0x53004,
557 	.mnd_width = 0,
558 	.hid_width = 5,
559 	.parent_map = gcc_parent_map_6,
560 	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,
561 	.clkr.hw.init = &(struct clk_init_data){
562 		.name = "gcc_camss_csi0phytimer_clk_src",
563 		.parent_data = gcc_parent_data_6,
564 		.num_parents = ARRAY_SIZE(gcc_parent_data_6),
565 		.ops = &clk_rcg2_ops,
566 	},
567 };
568 
569 static struct clk_rcg2 gcc_camss_csi1_clk_src = {
570 	.cmd_rcgr = 0x5506c,
571 	.mnd_width = 0,
572 	.hid_width = 5,
573 	.parent_map = gcc_parent_map_3,
574 	.freq_tbl = ftbl_gcc_camss_csi0_clk_src,
575 	.clkr.hw.init = &(struct clk_init_data){
576 		.name = "gcc_camss_csi1_clk_src",
577 		.parent_data = gcc_parent_data_3,
578 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
579 		.ops = &clk_rcg2_ops,
580 	},
581 };
582 
583 static struct clk_rcg2 gcc_camss_csi1phytimer_clk_src = {
584 	.cmd_rcgr = 0x53024,
585 	.mnd_width = 0,
586 	.hid_width = 5,
587 	.parent_map = gcc_parent_map_6,
588 	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,
589 	.clkr.hw.init = &(struct clk_init_data){
590 		.name = "gcc_camss_csi1phytimer_clk_src",
591 		.parent_data = gcc_parent_data_6,
592 		.num_parents = ARRAY_SIZE(gcc_parent_data_6),
593 		.ops = &clk_rcg2_ops,
594 	},
595 };
596 
597 static struct clk_rcg2 gcc_camss_csi2_clk_src = {
598 	.cmd_rcgr = 0x550a4,
599 	.mnd_width = 0,
600 	.hid_width = 5,
601 	.parent_map = gcc_parent_map_3,
602 	.freq_tbl = ftbl_gcc_camss_csi0_clk_src,
603 	.clkr.hw.init = &(struct clk_init_data){
604 		.name = "gcc_camss_csi2_clk_src",
605 		.parent_data = gcc_parent_data_3,
606 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
607 		.ops = &clk_rcg2_ops,
608 	},
609 };
610 
611 static struct clk_rcg2 gcc_camss_csi2phytimer_clk_src = {
612 	.cmd_rcgr = 0x53044,
613 	.mnd_width = 0,
614 	.hid_width = 5,
615 	.parent_map = gcc_parent_map_6,
616 	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,
617 	.clkr.hw.init = &(struct clk_init_data){
618 		.name = "gcc_camss_csi2phytimer_clk_src",
619 		.parent_data = gcc_parent_data_6,
620 		.num_parents = ARRAY_SIZE(gcc_parent_data_6),
621 		.ops = &clk_rcg2_ops,
622 	},
623 };
624 
625 static struct clk_rcg2 gcc_camss_csi3_clk_src = {
626 	.cmd_rcgr = 0x550e0,
627 	.mnd_width = 0,
628 	.hid_width = 5,
629 	.parent_map = gcc_parent_map_3,
630 	.freq_tbl = ftbl_gcc_camss_csi0_clk_src,
631 	.clkr.hw.init = &(struct clk_init_data){
632 		.name = "gcc_camss_csi3_clk_src",
633 		.parent_data = gcc_parent_data_3,
634 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
635 		.ops = &clk_rcg2_ops,
636 	},
637 };
638 
639 static const struct freq_tbl ftbl_gcc_camss_csiphy_clk_src[] = {
640 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
641 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
642 	F(268800000, P_GPLL4_OUT_MAIN, 3, 0, 0),
643 	F(320000000, P_GPLL8_OUT_EARLY, 3, 0, 0),
644 	{ }
645 };
646 
647 static struct clk_rcg2 gcc_camss_csiphy_clk_src = {
648 	.cmd_rcgr = 0x55000,
649 	.mnd_width = 0,
650 	.hid_width = 5,
651 	.parent_map = gcc_parent_map_11,
652 	.freq_tbl = ftbl_gcc_camss_csiphy_clk_src,
653 	.clkr.hw.init = &(struct clk_init_data){
654 		.name = "gcc_camss_csiphy_clk_src",
655 		.parent_data = gcc_parent_data_11,
656 		.num_parents = ARRAY_SIZE(gcc_parent_data_11),
657 		.ops = &clk_rcg2_ops,
658 	},
659 };
660 
661 static const struct freq_tbl ftbl_gcc_camss_gp0_clk_src[] = {
662 	F(50000000, P_GPLL0_OUT_EARLY, 12, 0, 0),
663 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
664 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
665 	{ }
666 };
667 
668 static struct clk_rcg2 gcc_camss_gp0_clk_src = {
669 	.cmd_rcgr = 0x50000,
670 	.mnd_width = 8,
671 	.hid_width = 5,
672 	.parent_map = gcc_parent_map_7,
673 	.freq_tbl = ftbl_gcc_camss_gp0_clk_src,
674 	.clkr.hw.init = &(struct clk_init_data){
675 		.name = "gcc_camss_gp0_clk_src",
676 		.parent_data = gcc_parent_data_7,
677 		.num_parents = ARRAY_SIZE(gcc_parent_data_7),
678 		.ops = &clk_rcg2_ops,
679 	},
680 };
681 
682 static struct clk_rcg2 gcc_camss_gp1_clk_src = {
683 	.cmd_rcgr = 0x5001c,
684 	.mnd_width = 8,
685 	.hid_width = 5,
686 	.parent_map = gcc_parent_map_7,
687 	.freq_tbl = ftbl_gcc_camss_gp0_clk_src,
688 	.clkr.hw.init = &(struct clk_init_data){
689 		.name = "gcc_camss_gp1_clk_src",
690 		.parent_data = gcc_parent_data_7,
691 		.num_parents = ARRAY_SIZE(gcc_parent_data_7),
692 		.ops = &clk_rcg2_ops,
693 	},
694 };
695 
696 static const struct freq_tbl ftbl_gcc_camss_jpeg_clk_src[] = {
697 	F(66666667, P_GPLL0_OUT_EARLY, 9, 0, 0),
698 	F(133333333, P_GPLL0_OUT_EARLY, 4.5, 0, 0),
699 	F(219428571, P_GPLL6_OUT_EARLY, 3.5, 0, 0),
700 	F(320000000, P_GPLL8_OUT_EARLY, 3, 0, 0),
701 	F(480000000, P_GPLL8_OUT_EARLY, 2, 0, 0),
702 	{ }
703 };
704 
705 static struct clk_rcg2 gcc_camss_jpeg_clk_src = {
706 	.cmd_rcgr = 0x52028,
707 	.mnd_width = 0,
708 	.hid_width = 5,
709 	.parent_map = gcc_parent_map_12,
710 	.freq_tbl = ftbl_gcc_camss_jpeg_clk_src,
711 	.clkr.hw.init = &(struct clk_init_data){
712 		.name = "gcc_camss_jpeg_clk_src",
713 		.parent_data = gcc_parent_data_12,
714 		.num_parents = ARRAY_SIZE(gcc_parent_data_12),
715 		.ops = &clk_rcg2_ops,
716 	},
717 };
718 
719 static const struct freq_tbl ftbl_gcc_camss_mclk0_clk_src[] = {
720 	F(19200000, P_BI_TCXO, 1, 0, 0),
721 	F(24000000, P_GPLL9_OUT_MAIN, 1, 1, 24),
722 	F(64000000, P_GPLL9_OUT_MAIN, 1, 1, 9),
723 	{ }
724 };
725 
726 static struct clk_rcg2 gcc_camss_mclk0_clk_src = {
727 	.cmd_rcgr = 0x51000,
728 	.mnd_width = 8,
729 	.hid_width = 5,
730 	.parent_map = gcc_parent_map_4,
731 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
732 	.clkr.hw.init = &(struct clk_init_data){
733 		.name = "gcc_camss_mclk0_clk_src",
734 		.parent_data = gcc_parent_data_4,
735 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
736 		.ops = &clk_rcg2_ops,
737 	},
738 };
739 
740 static struct clk_rcg2 gcc_camss_mclk1_clk_src = {
741 	.cmd_rcgr = 0x5101c,
742 	.mnd_width = 8,
743 	.hid_width = 5,
744 	.parent_map = gcc_parent_map_4,
745 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
746 	.clkr.hw.init = &(struct clk_init_data){
747 		.name = "gcc_camss_mclk1_clk_src",
748 		.parent_data = gcc_parent_data_4,
749 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
750 		.ops = &clk_rcg2_ops,
751 	},
752 };
753 
754 static struct clk_rcg2 gcc_camss_mclk2_clk_src = {
755 	.cmd_rcgr = 0x51038,
756 	.mnd_width = 8,
757 	.hid_width = 5,
758 	.parent_map = gcc_parent_map_4,
759 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
760 	.clkr.hw.init = &(struct clk_init_data){
761 		.name = "gcc_camss_mclk2_clk_src",
762 		.parent_data = gcc_parent_data_4,
763 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
764 		.ops = &clk_rcg2_ops,
765 	},
766 };
767 
768 static struct clk_rcg2 gcc_camss_mclk3_clk_src = {
769 	.cmd_rcgr = 0x51054,
770 	.mnd_width = 8,
771 	.hid_width = 5,
772 	.parent_map = gcc_parent_map_4,
773 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
774 	.clkr.hw.init = &(struct clk_init_data){
775 		.name = "gcc_camss_mclk3_clk_src",
776 		.parent_data = gcc_parent_data_4,
777 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
778 		.ops = &clk_rcg2_ops,
779 	},
780 };
781 
782 static const struct freq_tbl ftbl_gcc_camss_vfe0_clk_src[] = {
783 	F(120000000, P_GPLL8_OUT_MAIN, 4, 0, 0),
784 	F(256000000, P_GPLL6_OUT_EARLY, 3, 0, 0),
785 	F(403200000, P_GPLL4_OUT_MAIN, 2, 0, 0),
786 	F(480000000, P_GPLL8_OUT_MAIN, 1, 0, 0),
787 	F(533000000, P_GPLL3_OUT_EARLY, 2, 0, 0),
788 	F(576000000, P_GPLL9_OUT_MAIN, 1, 0, 0),
789 	{ }
790 };
791 
792 static struct clk_rcg2 gcc_camss_vfe0_clk_src = {
793 	.cmd_rcgr = 0x54010,
794 	.mnd_width = 0,
795 	.hid_width = 5,
796 	.parent_map = gcc_parent_map_8,
797 	.freq_tbl = ftbl_gcc_camss_vfe0_clk_src,
798 	.clkr.hw.init = &(struct clk_init_data){
799 		.name = "gcc_camss_vfe0_clk_src",
800 		.parent_data = gcc_parent_data_8,
801 		.num_parents = ARRAY_SIZE(gcc_parent_data_8),
802 		.ops = &clk_rcg2_ops,
803 	},
804 };
805 
806 static struct clk_rcg2 gcc_camss_vfe1_clk_src = {
807 	.cmd_rcgr = 0x54048,
808 	.mnd_width = 0,
809 	.hid_width = 5,
810 	.parent_map = gcc_parent_map_8,
811 	.freq_tbl = ftbl_gcc_camss_vfe0_clk_src,
812 	.clkr.hw.init = &(struct clk_init_data){
813 		.name = "gcc_camss_vfe1_clk_src",
814 		.parent_data = gcc_parent_data_8,
815 		.num_parents = ARRAY_SIZE(gcc_parent_data_8),
816 		.ops = &clk_rcg2_ops,
817 	},
818 };
819 
820 static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
821 	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),
822 	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),
823 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
824 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
825 	{ }
826 };
827 
828 static struct clk_rcg2 gcc_gp1_clk_src = {
829 	.cmd_rcgr = 0x4d004,
830 	.mnd_width = 8,
831 	.hid_width = 5,
832 	.parent_map = gcc_parent_map_2,
833 	.freq_tbl = ftbl_gcc_gp1_clk_src,
834 	.clkr.hw.init = &(struct clk_init_data){
835 		.name = "gcc_gp1_clk_src",
836 		.parent_data = gcc_parent_data_2,
837 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
838 		.ops = &clk_rcg2_ops,
839 	},
840 };
841 
842 static struct clk_rcg2 gcc_gp2_clk_src = {
843 	.cmd_rcgr = 0x4e004,
844 	.mnd_width = 8,
845 	.hid_width = 5,
846 	.parent_map = gcc_parent_map_2,
847 	.freq_tbl = ftbl_gcc_gp1_clk_src,
848 	.clkr.hw.init = &(struct clk_init_data){
849 		.name = "gcc_gp2_clk_src",
850 		.parent_data = gcc_parent_data_2,
851 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
852 		.ops = &clk_rcg2_ops,
853 	},
854 };
855 
856 static struct clk_rcg2 gcc_gp3_clk_src = {
857 	.cmd_rcgr = 0x4f004,
858 	.mnd_width = 8,
859 	.hid_width = 5,
860 	.parent_map = gcc_parent_map_2,
861 	.freq_tbl = ftbl_gcc_gp1_clk_src,
862 	.clkr.hw.init = &(struct clk_init_data){
863 		.name = "gcc_gp3_clk_src",
864 		.parent_data = gcc_parent_data_2,
865 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
866 		.ops = &clk_rcg2_ops,
867 	},
868 };
869 
870 static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
871 	F(19200000, P_BI_TCXO, 1, 0, 0),
872 	F(60000000, P_GPLL0_OUT_EARLY, 10, 0, 0),
873 	{ }
874 };
875 
876 static struct clk_rcg2 gcc_pdm2_clk_src = {
877 	.cmd_rcgr = 0x20010,
878 	.mnd_width = 0,
879 	.hid_width = 5,
880 	.parent_map = gcc_parent_map_0,
881 	.freq_tbl = ftbl_gcc_pdm2_clk_src,
882 	.clkr.hw.init = &(struct clk_init_data){
883 		.name = "gcc_pdm2_clk_src",
884 		.parent_data = gcc_parent_data_0,
885 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
886 		.ops = &clk_rcg2_ops,
887 	},
888 };
889 
890 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
891 	F(7372800, P_GPLL0_OUT_AUX2, 1, 384, 15625),
892 	F(14745600, P_GPLL0_OUT_AUX2, 1, 768, 15625),
893 	F(19200000, P_BI_TCXO, 1, 0, 0),
894 	F(29491200, P_GPLL0_OUT_AUX2, 1, 1536, 15625),
895 	F(32000000, P_GPLL0_OUT_AUX2, 1, 8, 75),
896 	F(48000000, P_GPLL0_OUT_AUX2, 1, 4, 25),
897 	F(64000000, P_GPLL0_OUT_AUX2, 1, 16, 75),
898 	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),
899 	F(80000000, P_GPLL0_OUT_AUX2, 1, 4, 15),
900 	F(96000000, P_GPLL0_OUT_AUX2, 1, 8, 25),
901 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
902 	F(102400000, P_GPLL0_OUT_AUX2, 1, 128, 375),
903 	F(112000000, P_GPLL0_OUT_AUX2, 1, 28, 75),
904 	F(117964800, P_GPLL0_OUT_AUX2, 1, 6144, 15625),
905 	F(120000000, P_GPLL0_OUT_AUX2, 2.5, 0, 0),
906 	F(128000000, P_GPLL6_OUT_MAIN, 3, 0, 0),
907 	{ }
908 };
909 
910 static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {
911 	.name = "gcc_qupv3_wrap0_s0_clk_src",
912 	.parent_data = gcc_parent_data_1,
913 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
914 	.ops = &clk_rcg2_ops,
915 };
916 
917 static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
918 	.cmd_rcgr = 0x1f148,
919 	.mnd_width = 16,
920 	.hid_width = 5,
921 	.parent_map = gcc_parent_map_1,
922 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
923 	.clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,
924 };
925 
926 static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {
927 	.name = "gcc_qupv3_wrap0_s1_clk_src",
928 	.parent_data = gcc_parent_data_1,
929 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
930 	.ops = &clk_rcg2_ops,
931 };
932 
933 static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
934 	.cmd_rcgr = 0x1f278,
935 	.mnd_width = 16,
936 	.hid_width = 5,
937 	.parent_map = gcc_parent_map_1,
938 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
939 	.clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,
940 };
941 
942 static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {
943 	.name = "gcc_qupv3_wrap0_s2_clk_src",
944 	.parent_data = gcc_parent_data_1,
945 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
946 	.ops = &clk_rcg2_ops,
947 };
948 
949 static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
950 	.cmd_rcgr = 0x1f3a8,
951 	.mnd_width = 16,
952 	.hid_width = 5,
953 	.parent_map = gcc_parent_map_1,
954 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
955 	.clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,
956 };
957 
958 static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {
959 	.name = "gcc_qupv3_wrap0_s3_clk_src",
960 	.parent_data = gcc_parent_data_1,
961 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
962 	.ops = &clk_rcg2_ops,
963 };
964 
965 static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
966 	.cmd_rcgr = 0x1f4d8,
967 	.mnd_width = 16,
968 	.hid_width = 5,
969 	.parent_map = gcc_parent_map_1,
970 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
971 	.clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,
972 };
973 
974 static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {
975 	.name = "gcc_qupv3_wrap0_s4_clk_src",
976 	.parent_data = gcc_parent_data_1,
977 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
978 	.ops = &clk_rcg2_ops,
979 };
980 
981 static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
982 	.cmd_rcgr = 0x1f608,
983 	.mnd_width = 16,
984 	.hid_width = 5,
985 	.parent_map = gcc_parent_map_1,
986 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
987 	.clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,
988 };
989 
990 static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {
991 	.name = "gcc_qupv3_wrap0_s5_clk_src",
992 	.parent_data = gcc_parent_data_1,
993 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
994 	.ops = &clk_rcg2_ops,
995 };
996 
997 static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
998 	.cmd_rcgr = 0x1f738,
999 	.mnd_width = 16,
1000 	.hid_width = 5,
1001 	.parent_map = gcc_parent_map_1,
1002 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1003 	.clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,
1004 };
1005 
1006 static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
1007 	.name = "gcc_qupv3_wrap1_s0_clk_src",
1008 	.parent_data = gcc_parent_data_1,
1009 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1010 	.ops = &clk_rcg2_ops,
1011 };
1012 
1013 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
1014 	.cmd_rcgr = 0x39148,
1015 	.mnd_width = 16,
1016 	.hid_width = 5,
1017 	.parent_map = gcc_parent_map_1,
1018 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1019 	.clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
1020 };
1021 
1022 static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
1023 	.name = "gcc_qupv3_wrap1_s1_clk_src",
1024 	.parent_data = gcc_parent_data_1,
1025 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1026 	.ops = &clk_rcg2_ops,
1027 };
1028 
1029 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
1030 	.cmd_rcgr = 0x39278,
1031 	.mnd_width = 16,
1032 	.hid_width = 5,
1033 	.parent_map = gcc_parent_map_1,
1034 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1035 	.clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
1036 };
1037 
1038 static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {
1039 	.name = "gcc_qupv3_wrap1_s2_clk_src",
1040 	.parent_data = gcc_parent_data_1,
1041 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1042 	.ops = &clk_rcg2_ops,
1043 };
1044 
1045 static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
1046 	.cmd_rcgr = 0x393a8,
1047 	.mnd_width = 16,
1048 	.hid_width = 5,
1049 	.parent_map = gcc_parent_map_1,
1050 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1051 	.clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,
1052 };
1053 
1054 static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
1055 	.name = "gcc_qupv3_wrap1_s3_clk_src",
1056 	.parent_data = gcc_parent_data_1,
1057 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1058 	.ops = &clk_rcg2_ops,
1059 };
1060 
1061 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
1062 	.cmd_rcgr = 0x394d8,
1063 	.mnd_width = 16,
1064 	.hid_width = 5,
1065 	.parent_map = gcc_parent_map_1,
1066 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1067 	.clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
1068 };
1069 
1070 static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
1071 	.name = "gcc_qupv3_wrap1_s4_clk_src",
1072 	.parent_data = gcc_parent_data_1,
1073 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1074 	.ops = &clk_rcg2_ops,
1075 };
1076 
1077 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
1078 	.cmd_rcgr = 0x39608,
1079 	.mnd_width = 16,
1080 	.hid_width = 5,
1081 	.parent_map = gcc_parent_map_1,
1082 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1083 	.clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
1084 };
1085 
1086 static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
1087 	.name = "gcc_qupv3_wrap1_s5_clk_src",
1088 	.parent_data = gcc_parent_data_1,
1089 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1090 	.ops = &clk_rcg2_ops,
1091 };
1092 
1093 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
1094 	.cmd_rcgr = 0x39738,
1095 	.mnd_width = 16,
1096 	.hid_width = 5,
1097 	.parent_map = gcc_parent_map_1,
1098 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1099 	.clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
1100 };
1101 
1102 static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {
1103 	F(144000, P_BI_TCXO, 16, 3, 25),
1104 	F(400000, P_BI_TCXO, 12, 1, 4),
1105 	F(20000000, P_GPLL0_OUT_AUX2, 5, 1, 3),
1106 	F(25000000, P_GPLL0_OUT_AUX2, 6, 1, 2),
1107 	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),
1108 	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),
1109 	F(192000000, P_GPLL6_OUT_MAIN, 2, 0, 0),
1110 	F(384000000, P_GPLL6_OUT_MAIN, 1, 0, 0),
1111 	{ }
1112 };
1113 
1114 static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {
1115 	.cmd_rcgr = 0x38028,
1116 	.mnd_width = 8,
1117 	.hid_width = 5,
1118 	.parent_map = gcc_parent_map_1,
1119 	.freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,
1120 	.clkr.hw.init = &(struct clk_init_data){
1121 		.name = "gcc_sdcc1_apps_clk_src",
1122 		.parent_data = gcc_parent_data_1,
1123 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1124 		.ops = &clk_rcg2_floor_ops,
1125 	},
1126 };
1127 
1128 static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = {
1129 	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),
1130 	F(150000000, P_GPLL0_OUT_EARLY, 4, 0, 0),
1131 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
1132 	F(300000000, P_GPLL0_OUT_EARLY, 2, 0, 0),
1133 	{ }
1134 };
1135 
1136 static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = {
1137 	.cmd_rcgr = 0x38010,
1138 	.mnd_width = 0,
1139 	.hid_width = 5,
1140 	.parent_map = gcc_parent_map_0,
1141 	.freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src,
1142 	.clkr.hw.init = &(struct clk_init_data){
1143 		.name = "gcc_sdcc1_ice_core_clk_src",
1144 		.parent_data = gcc_parent_data_0,
1145 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1146 		.ops = &clk_rcg2_ops,
1147 	},
1148 };
1149 
1150 static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
1151 	F(400000, P_BI_TCXO, 12, 1, 4),
1152 	F(19200000, P_BI_TCXO, 1, 0, 0),
1153 	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),
1154 	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),
1155 	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),
1156 	F(202000000, P_GPLL7_OUT_MAIN, 2, 0, 0),
1157 	{ }
1158 };
1159 
1160 static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
1161 	.cmd_rcgr = 0x1e00c,
1162 	.mnd_width = 8,
1163 	.hid_width = 5,
1164 	.parent_map = gcc_parent_map_13,
1165 	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
1166 	.clkr.hw.init = &(struct clk_init_data){
1167 		.name = "gcc_sdcc2_apps_clk_src",
1168 		.parent_data = gcc_parent_data_13,
1169 		.num_parents = ARRAY_SIZE(gcc_parent_data_13),
1170 		.ops = &clk_rcg2_floor_ops,
1171 	},
1172 };
1173 
1174 static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
1175 	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),
1176 	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),
1177 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
1178 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
1179 	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),
1180 	{ }
1181 };
1182 
1183 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
1184 	.cmd_rcgr = 0x45020,
1185 	.mnd_width = 8,
1186 	.hid_width = 5,
1187 	.parent_map = gcc_parent_map_0,
1188 	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
1189 	.clkr.hw.init = &(struct clk_init_data){
1190 		.name = "gcc_ufs_phy_axi_clk_src",
1191 		.parent_data = gcc_parent_data_0,
1192 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1193 		.ops = &clk_rcg2_ops,
1194 	},
1195 };
1196 
1197 static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {
1198 	F(37500000, P_GPLL0_OUT_AUX2, 8, 0, 0),
1199 	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),
1200 	F(150000000, P_GPLL0_OUT_EARLY, 4, 0, 0),
1201 	F(300000000, P_GPLL0_OUT_EARLY, 2, 0, 0),
1202 	{ }
1203 };
1204 
1205 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
1206 	.cmd_rcgr = 0x45048,
1207 	.mnd_width = 0,
1208 	.hid_width = 5,
1209 	.parent_map = gcc_parent_map_0,
1210 	.freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,
1211 	.clkr.hw.init = &(struct clk_init_data){
1212 		.name = "gcc_ufs_phy_ice_core_clk_src",
1213 		.parent_data = gcc_parent_data_0,
1214 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1215 		.ops = &clk_rcg2_ops,
1216 	},
1217 };
1218 
1219 static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = {
1220 	F(9600000, P_BI_TCXO, 2, 0, 0),
1221 	F(19200000, P_BI_TCXO, 1, 0, 0),
1222 	{ }
1223 };
1224 
1225 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
1226 	.cmd_rcgr = 0x4507c,
1227 	.mnd_width = 0,
1228 	.hid_width = 5,
1229 	.parent_map = gcc_parent_map_0,
1230 	.freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src,
1231 	.clkr.hw.init = &(struct clk_init_data){
1232 		.name = "gcc_ufs_phy_phy_aux_clk_src",
1233 		.parent_data = gcc_parent_data_0,
1234 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1235 		.ops = &clk_rcg2_ops,
1236 	},
1237 };
1238 
1239 static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src[] = {
1240 	F(37500000, P_GPLL0_OUT_AUX2, 8, 0, 0),
1241 	F(75000000, P_GPLL0_OUT_EARLY, 8, 0, 0),
1242 	F(150000000, P_GPLL0_OUT_EARLY, 4, 0, 0),
1243 	{ }
1244 };
1245 
1246 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
1247 	.cmd_rcgr = 0x45060,
1248 	.mnd_width = 0,
1249 	.hid_width = 5,
1250 	.parent_map = gcc_parent_map_0,
1251 	.freq_tbl = ftbl_gcc_ufs_phy_unipro_core_clk_src,
1252 	.clkr.hw.init = &(struct clk_init_data){
1253 		.name = "gcc_ufs_phy_unipro_core_clk_src",
1254 		.parent_data = gcc_parent_data_0,
1255 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1256 		.ops = &clk_rcg2_ops,
1257 	},
1258 };
1259 
1260 static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
1261 	F(66666667, P_GPLL0_OUT_AUX2, 4.5, 0, 0),
1262 	F(133333333, P_GPLL0_OUT_EARLY, 4.5, 0, 0),
1263 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
1264 	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),
1265 	{ }
1266 };
1267 
1268 static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
1269 	.cmd_rcgr = 0x1a01c,
1270 	.mnd_width = 8,
1271 	.hid_width = 5,
1272 	.parent_map = gcc_parent_map_0,
1273 	.freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
1274 	.clkr.hw.init = &(struct clk_init_data){
1275 		.name = "gcc_usb30_prim_master_clk_src",
1276 		.parent_data = gcc_parent_data_0,
1277 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1278 		.ops = &clk_rcg2_ops,
1279 	},
1280 };
1281 
1282 static const struct freq_tbl ftbl_gcc_usb30_prim_mock_utmi_clk_src[] = {
1283 	F(19200000, P_BI_TCXO, 1, 0, 0),
1284 	F(20000000, P_GPLL0_OUT_AUX2, 15, 0, 0),
1285 	F(40000000, P_GPLL0_OUT_AUX2, 7.5, 0, 0),
1286 	F(60000000, P_GPLL0_OUT_EARLY, 10, 0, 0),
1287 	{ }
1288 };
1289 
1290 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
1291 	.cmd_rcgr = 0x1a034,
1292 	.mnd_width = 0,
1293 	.hid_width = 5,
1294 	.parent_map = gcc_parent_map_0,
1295 	.freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,
1296 	.clkr.hw.init = &(struct clk_init_data){
1297 		.name = "gcc_usb30_prim_mock_utmi_clk_src",
1298 		.parent_data = gcc_parent_data_0,
1299 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1300 		.ops = &clk_rcg2_ops,
1301 	},
1302 };
1303 
1304 static const struct freq_tbl ftbl_gcc_usb3_prim_phy_aux_clk_src[] = {
1305 	F(19200000, P_BI_TCXO, 1, 0, 0),
1306 	{ }
1307 };
1308 
1309 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
1310 	.cmd_rcgr = 0x1a060,
1311 	.mnd_width = 0,
1312 	.hid_width = 5,
1313 	.parent_map = gcc_parent_map_14,
1314 	.freq_tbl = ftbl_gcc_usb3_prim_phy_aux_clk_src,
1315 	.clkr.hw.init = &(struct clk_init_data){
1316 		.name = "gcc_usb3_prim_phy_aux_clk_src",
1317 		.parent_data = gcc_parent_data_14,
1318 		.num_parents = ARRAY_SIZE(gcc_parent_data_14),
1319 		.ops = &clk_rcg2_ops,
1320 	},
1321 };
1322 
1323 static struct clk_rcg2 gcc_vs_ctrl_clk_src = {
1324 	.cmd_rcgr = 0x42030,
1325 	.mnd_width = 0,
1326 	.hid_width = 5,
1327 	.parent_map = gcc_parent_map_5,
1328 	.freq_tbl = ftbl_gcc_usb3_prim_phy_aux_clk_src,
1329 	.clkr.hw.init = &(struct clk_init_data){
1330 		.name = "gcc_vs_ctrl_clk_src",
1331 		.parent_data = gcc_parent_data_5,
1332 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
1333 		.ops = &clk_rcg2_ops,
1334 	},
1335 };
1336 
1337 static const struct freq_tbl ftbl_gcc_vsensor_clk_src[] = {
1338 	F(19200000, P_BI_TCXO, 1, 0, 0),
1339 	F(400000000, P_GPLL0_OUT_EARLY, 1.5, 0, 0),
1340 	F(600000000, P_GPLL0_OUT_EARLY, 1, 0, 0),
1341 	{ }
1342 };
1343 
1344 static struct clk_rcg2 gcc_vsensor_clk_src = {
1345 	.cmd_rcgr = 0x42018,
1346 	.mnd_width = 0,
1347 	.hid_width = 5,
1348 	.parent_map = gcc_parent_map_5,
1349 	.freq_tbl = ftbl_gcc_vsensor_clk_src,
1350 	.clkr.hw.init = &(struct clk_init_data){
1351 		.name = "gcc_vsensor_clk_src",
1352 		.parent_data = gcc_parent_data_5,
1353 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
1354 		.ops = &clk_rcg2_ops,
1355 	},
1356 };
1357 
1358 static struct clk_branch gcc_ahb2phy_csi_clk = {
1359 	.halt_reg = 0x1d004,
1360 	.halt_check = BRANCH_HALT,
1361 	.hwcg_reg = 0x1d004,
1362 	.hwcg_bit = 1,
1363 	.clkr = {
1364 		.enable_reg = 0x1d004,
1365 		.enable_mask = BIT(0),
1366 		.hw.init = &(struct clk_init_data){
1367 			.name = "gcc_ahb2phy_csi_clk",
1368 			.ops = &clk_branch2_ops,
1369 		},
1370 	},
1371 };
1372 
1373 static struct clk_branch gcc_ahb2phy_usb_clk = {
1374 	.halt_reg = 0x1d008,
1375 	.halt_check = BRANCH_HALT,
1376 	.hwcg_reg = 0x1d008,
1377 	.hwcg_bit = 1,
1378 	.clkr = {
1379 		.enable_reg = 0x1d008,
1380 		.enable_mask = BIT(0),
1381 		.hw.init = &(struct clk_init_data){
1382 			.name = "gcc_ahb2phy_usb_clk",
1383 			.ops = &clk_branch2_ops,
1384 		},
1385 	},
1386 };
1387 
1388 static struct clk_branch gcc_apc_vs_clk = {
1389 	.halt_reg = 0x4204c,
1390 	.halt_check = BRANCH_HALT,
1391 	.clkr = {
1392 		.enable_reg = 0x4204c,
1393 		.enable_mask = BIT(0),
1394 		.hw.init = &(struct clk_init_data){
1395 			.name = "gcc_apc_vs_clk",
1396 			.parent_hws = (const struct clk_hw*[]){
1397 				&gcc_vsensor_clk_src.clkr.hw,
1398 			},
1399 			.num_parents = 1,
1400 			.flags = CLK_SET_RATE_PARENT,
1401 			.ops = &clk_branch2_ops,
1402 		},
1403 	},
1404 };
1405 
1406 static struct clk_branch gcc_bimc_gpu_axi_clk = {
1407 	.halt_reg = 0x71154,
1408 	.halt_check = BRANCH_HALT_DELAY,
1409 	.clkr = {
1410 		.enable_reg = 0x71154,
1411 		.enable_mask = BIT(0),
1412 		.hw.init = &(struct clk_init_data){
1413 			.name = "gcc_bimc_gpu_axi_clk",
1414 			.ops = &clk_branch2_ops,
1415 		},
1416 	},
1417 };
1418 
1419 static struct clk_branch gcc_boot_rom_ahb_clk = {
1420 	.halt_reg = 0x23004,
1421 	.halt_check = BRANCH_HALT_VOTED,
1422 	.hwcg_reg = 0x23004,
1423 	.hwcg_bit = 1,
1424 	.clkr = {
1425 		.enable_reg = 0x79004,
1426 		.enable_mask = BIT(10),
1427 		.hw.init = &(struct clk_init_data){
1428 			.name = "gcc_boot_rom_ahb_clk",
1429 			.ops = &clk_branch2_ops,
1430 		},
1431 	},
1432 };
1433 
1434 static struct clk_branch gcc_camera_ahb_clk = {
1435 	.halt_reg = 0x17008,
1436 	.halt_check = BRANCH_HALT_DELAY,
1437 	.hwcg_reg = 0x17008,
1438 	.hwcg_bit = 1,
1439 	.clkr = {
1440 		.enable_reg = 0x17008,
1441 		.enable_mask = BIT(0),
1442 		.hw.init = &(struct clk_init_data){
1443 			.name = "gcc_camera_ahb_clk",
1444 			.flags = CLK_IS_CRITICAL,
1445 			.ops = &clk_branch2_ops,
1446 		},
1447 	},
1448 };
1449 
1450 static struct clk_branch gcc_camera_xo_clk = {
1451 	.halt_reg = 0x17028,
1452 	.halt_check = BRANCH_HALT,
1453 	.clkr = {
1454 		.enable_reg = 0x17028,
1455 		.enable_mask = BIT(0),
1456 		.hw.init = &(struct clk_init_data){
1457 			.name = "gcc_camera_xo_clk",
1458 			.flags = CLK_IS_CRITICAL,
1459 			.ops = &clk_branch2_ops,
1460 		},
1461 	},
1462 };
1463 
1464 static struct clk_branch gcc_camss_cci_ahb_clk = {
1465 	.halt_reg = 0x52020,
1466 	.halt_check = BRANCH_HALT,
1467 	.clkr = {
1468 		.enable_reg = 0x52020,
1469 		.enable_mask = BIT(0),
1470 		.hw.init = &(struct clk_init_data){
1471 			.name = "gcc_camss_cci_ahb_clk",
1472 			.parent_hws = (const struct clk_hw*[]){
1473 				&gcc_camss_ahb_clk_src.clkr.hw,
1474 			},
1475 			.num_parents = 1,
1476 			.flags = CLK_SET_RATE_PARENT,
1477 			.ops = &clk_branch2_ops,
1478 		},
1479 	},
1480 };
1481 
1482 static struct clk_branch gcc_camss_cci_clk = {
1483 	.halt_reg = 0x5201c,
1484 	.halt_check = BRANCH_HALT,
1485 	.clkr = {
1486 		.enable_reg = 0x5201c,
1487 		.enable_mask = BIT(0),
1488 		.hw.init = &(struct clk_init_data){
1489 			.name = "gcc_camss_cci_clk",
1490 			.parent_hws = (const struct clk_hw*[]){
1491 				&gcc_camss_cci_clk_src.clkr.hw,
1492 			},
1493 			.num_parents = 1,
1494 			.flags = CLK_SET_RATE_PARENT,
1495 			.ops = &clk_branch2_ops,
1496 		},
1497 	},
1498 };
1499 
1500 static struct clk_branch gcc_camss_cphy_csid0_clk = {
1501 	.halt_reg = 0x5504c,
1502 	.halt_check = BRANCH_HALT,
1503 	.clkr = {
1504 		.enable_reg = 0x5504c,
1505 		.enable_mask = BIT(0),
1506 		.hw.init = &(struct clk_init_data){
1507 			.name = "gcc_camss_cphy_csid0_clk",
1508 			.parent_hws = (const struct clk_hw*[]){
1509 				&gcc_camss_csiphy_clk_src.clkr.hw,
1510 			},
1511 			.num_parents = 1,
1512 			.flags = CLK_SET_RATE_PARENT,
1513 			.ops = &clk_branch2_ops,
1514 		},
1515 	},
1516 };
1517 
1518 static struct clk_branch gcc_camss_cphy_csid1_clk = {
1519 	.halt_reg = 0x55088,
1520 	.halt_check = BRANCH_HALT,
1521 	.clkr = {
1522 		.enable_reg = 0x55088,
1523 		.enable_mask = BIT(0),
1524 		.hw.init = &(struct clk_init_data){
1525 			.name = "gcc_camss_cphy_csid1_clk",
1526 			.parent_hws = (const struct clk_hw*[]){
1527 				&gcc_camss_csiphy_clk_src.clkr.hw,
1528 			},
1529 			.num_parents = 1,
1530 			.flags = CLK_SET_RATE_PARENT,
1531 			.ops = &clk_branch2_ops,
1532 		},
1533 	},
1534 };
1535 
1536 static struct clk_branch gcc_camss_cphy_csid2_clk = {
1537 	.halt_reg = 0x550c0,
1538 	.halt_check = BRANCH_HALT,
1539 	.clkr = {
1540 		.enable_reg = 0x550c0,
1541 		.enable_mask = BIT(0),
1542 		.hw.init = &(struct clk_init_data){
1543 			.name = "gcc_camss_cphy_csid2_clk",
1544 			.parent_hws = (const struct clk_hw*[]){
1545 				&gcc_camss_csiphy_clk_src.clkr.hw,
1546 			},
1547 			.num_parents = 1,
1548 			.flags = CLK_SET_RATE_PARENT,
1549 			.ops = &clk_branch2_ops,
1550 		},
1551 	},
1552 };
1553 
1554 static struct clk_branch gcc_camss_cphy_csid3_clk = {
1555 	.halt_reg = 0x550fc,
1556 	.halt_check = BRANCH_HALT,
1557 	.clkr = {
1558 		.enable_reg = 0x550fc,
1559 		.enable_mask = BIT(0),
1560 		.hw.init = &(struct clk_init_data){
1561 			.name = "gcc_camss_cphy_csid3_clk",
1562 			.parent_hws = (const struct clk_hw*[]){
1563 				&gcc_camss_csiphy_clk_src.clkr.hw,
1564 			},
1565 			.num_parents = 1,
1566 			.flags = CLK_SET_RATE_PARENT,
1567 			.ops = &clk_branch2_ops,
1568 		},
1569 	},
1570 };
1571 
1572 static struct clk_branch gcc_camss_cpp_ahb_clk = {
1573 	.halt_reg = 0x560e8,
1574 	.halt_check = BRANCH_HALT,
1575 	.clkr = {
1576 		.enable_reg = 0x560e8,
1577 		.enable_mask = BIT(0),
1578 		.hw.init = &(struct clk_init_data){
1579 			.name = "gcc_camss_cpp_ahb_clk",
1580 			.parent_hws = (const struct clk_hw*[]){
1581 				&gcc_camss_ahb_clk_src.clkr.hw,
1582 			},
1583 			.num_parents = 1,
1584 			.flags = CLK_SET_RATE_PARENT,
1585 			.ops = &clk_branch2_ops,
1586 		},
1587 	},
1588 };
1589 
1590 static struct clk_branch gcc_camss_cpp_axi_clk = {
1591 	.halt_reg = 0x560f4,
1592 	.halt_check = BRANCH_HALT,
1593 	.clkr = {
1594 		.enable_reg = 0x560f4,
1595 		.enable_mask = BIT(0),
1596 		.hw.init = &(struct clk_init_data){
1597 			.name = "gcc_camss_cpp_axi_clk",
1598 			.ops = &clk_branch2_ops,
1599 		},
1600 	},
1601 };
1602 
1603 static struct clk_branch gcc_camss_cpp_clk = {
1604 	.halt_reg = 0x560e0,
1605 	.halt_check = BRANCH_HALT,
1606 	.clkr = {
1607 		.enable_reg = 0x560e0,
1608 		.enable_mask = BIT(0),
1609 		.hw.init = &(struct clk_init_data){
1610 			.name = "gcc_camss_cpp_clk",
1611 			.parent_hws = (const struct clk_hw*[]){
1612 				&gcc_camss_cpp_clk_src.clkr.hw,
1613 			},
1614 			.num_parents = 1,
1615 			.flags = CLK_SET_RATE_PARENT,
1616 			.ops = &clk_branch2_ops,
1617 		},
1618 	},
1619 };
1620 
1621 static struct clk_branch gcc_camss_cpp_vbif_ahb_clk = {
1622 	.halt_reg = 0x560f0,
1623 	.halt_check = BRANCH_HALT,
1624 	.clkr = {
1625 		.enable_reg = 0x560f0,
1626 		.enable_mask = BIT(0),
1627 		.hw.init = &(struct clk_init_data){
1628 			.name = "gcc_camss_cpp_vbif_ahb_clk",
1629 			.parent_hws = (const struct clk_hw*[]){
1630 				&gcc_camss_ahb_clk_src.clkr.hw,
1631 			},
1632 			.num_parents = 1,
1633 			.flags = CLK_SET_RATE_PARENT,
1634 			.ops = &clk_branch2_ops,
1635 		},
1636 	},
1637 };
1638 
1639 static struct clk_branch gcc_camss_csi0_ahb_clk = {
1640 	.halt_reg = 0x55050,
1641 	.halt_check = BRANCH_HALT,
1642 	.clkr = {
1643 		.enable_reg = 0x55050,
1644 		.enable_mask = BIT(0),
1645 		.hw.init = &(struct clk_init_data){
1646 			.name = "gcc_camss_csi0_ahb_clk",
1647 			.parent_hws = (const struct clk_hw*[]){
1648 				&gcc_camss_ahb_clk_src.clkr.hw,
1649 			},
1650 			.num_parents = 1,
1651 			.flags = CLK_SET_RATE_PARENT,
1652 			.ops = &clk_branch2_ops,
1653 		},
1654 	},
1655 };
1656 
1657 static struct clk_branch gcc_camss_csi0_clk = {
1658 	.halt_reg = 0x55048,
1659 	.halt_check = BRANCH_HALT,
1660 	.clkr = {
1661 		.enable_reg = 0x55048,
1662 		.enable_mask = BIT(0),
1663 		.hw.init = &(struct clk_init_data){
1664 			.name = "gcc_camss_csi0_clk",
1665 			.parent_hws = (const struct clk_hw*[]){
1666 				&gcc_camss_csi0_clk_src.clkr.hw,
1667 			},
1668 			.num_parents = 1,
1669 			.flags = CLK_SET_RATE_PARENT,
1670 			.ops = &clk_branch2_ops,
1671 		},
1672 	},
1673 };
1674 
1675 static struct clk_branch gcc_camss_csi0phytimer_clk = {
1676 	.halt_reg = 0x5301c,
1677 	.halt_check = BRANCH_HALT,
1678 	.clkr = {
1679 		.enable_reg = 0x5301c,
1680 		.enable_mask = BIT(0),
1681 		.hw.init = &(struct clk_init_data){
1682 			.name = "gcc_camss_csi0phytimer_clk",
1683 			.parent_hws = (const struct clk_hw*[]){
1684 				&gcc_camss_csi0phytimer_clk_src.clkr.hw,
1685 			},
1686 			.num_parents = 1,
1687 			.flags = CLK_SET_RATE_PARENT,
1688 			.ops = &clk_branch2_ops,
1689 		},
1690 	},
1691 };
1692 
1693 static struct clk_branch gcc_camss_csi0pix_clk = {
1694 	.halt_reg = 0x55060,
1695 	.halt_check = BRANCH_HALT,
1696 	.clkr = {
1697 		.enable_reg = 0x55060,
1698 		.enable_mask = BIT(0),
1699 		.hw.init = &(struct clk_init_data){
1700 			.name = "gcc_camss_csi0pix_clk",
1701 			.parent_hws = (const struct clk_hw*[]){
1702 				&gcc_camss_csi0_clk_src.clkr.hw,
1703 			},
1704 			.num_parents = 1,
1705 			.flags = CLK_SET_RATE_PARENT,
1706 			.ops = &clk_branch2_ops,
1707 		},
1708 	},
1709 };
1710 
1711 static struct clk_branch gcc_camss_csi0rdi_clk = {
1712 	.halt_reg = 0x55058,
1713 	.halt_check = BRANCH_HALT,
1714 	.clkr = {
1715 		.enable_reg = 0x55058,
1716 		.enable_mask = BIT(0),
1717 		.hw.init = &(struct clk_init_data){
1718 			.name = "gcc_camss_csi0rdi_clk",
1719 			.parent_hws = (const struct clk_hw*[]){
1720 				&gcc_camss_csi0_clk_src.clkr.hw,
1721 			},
1722 			.num_parents = 1,
1723 			.flags = CLK_SET_RATE_PARENT,
1724 			.ops = &clk_branch2_ops,
1725 		},
1726 	},
1727 };
1728 
1729 static struct clk_branch gcc_camss_csi1_ahb_clk = {
1730 	.halt_reg = 0x5508c,
1731 	.halt_check = BRANCH_HALT,
1732 	.clkr = {
1733 		.enable_reg = 0x5508c,
1734 		.enable_mask = BIT(0),
1735 		.hw.init = &(struct clk_init_data){
1736 			.name = "gcc_camss_csi1_ahb_clk",
1737 			.parent_hws = (const struct clk_hw*[]){
1738 				&gcc_camss_ahb_clk_src.clkr.hw,
1739 			},
1740 			.num_parents = 1,
1741 			.flags = CLK_SET_RATE_PARENT,
1742 			.ops = &clk_branch2_ops,
1743 		},
1744 	},
1745 };
1746 
1747 static struct clk_branch gcc_camss_csi1_clk = {
1748 	.halt_reg = 0x55084,
1749 	.halt_check = BRANCH_HALT,
1750 	.clkr = {
1751 		.enable_reg = 0x55084,
1752 		.enable_mask = BIT(0),
1753 		.hw.init = &(struct clk_init_data){
1754 			.name = "gcc_camss_csi1_clk",
1755 			.parent_hws = (const struct clk_hw*[]){
1756 				&gcc_camss_csi1_clk_src.clkr.hw,
1757 			},
1758 			.num_parents = 1,
1759 			.flags = CLK_SET_RATE_PARENT,
1760 			.ops = &clk_branch2_ops,
1761 		},
1762 	},
1763 };
1764 
1765 static struct clk_branch gcc_camss_csi1phytimer_clk = {
1766 	.halt_reg = 0x5303c,
1767 	.halt_check = BRANCH_HALT,
1768 	.clkr = {
1769 		.enable_reg = 0x5303c,
1770 		.enable_mask = BIT(0),
1771 		.hw.init = &(struct clk_init_data){
1772 			.name = "gcc_camss_csi1phytimer_clk",
1773 			.parent_hws = (const struct clk_hw*[]){
1774 				&gcc_camss_csi1phytimer_clk_src.clkr.hw,
1775 			},
1776 			.num_parents = 1,
1777 			.flags = CLK_SET_RATE_PARENT,
1778 			.ops = &clk_branch2_ops,
1779 		},
1780 	},
1781 };
1782 
1783 static struct clk_branch gcc_camss_csi1pix_clk = {
1784 	.halt_reg = 0x5509c,
1785 	.halt_check = BRANCH_HALT,
1786 	.clkr = {
1787 		.enable_reg = 0x5509c,
1788 		.enable_mask = BIT(0),
1789 		.hw.init = &(struct clk_init_data){
1790 			.name = "gcc_camss_csi1pix_clk",
1791 			.parent_hws = (const struct clk_hw*[]){
1792 				&gcc_camss_csi1_clk_src.clkr.hw,
1793 			},
1794 			.num_parents = 1,
1795 			.flags = CLK_SET_RATE_PARENT,
1796 			.ops = &clk_branch2_ops,
1797 		},
1798 	},
1799 };
1800 
1801 static struct clk_branch gcc_camss_csi1rdi_clk = {
1802 	.halt_reg = 0x55094,
1803 	.halt_check = BRANCH_HALT,
1804 	.clkr = {
1805 		.enable_reg = 0x55094,
1806 		.enable_mask = BIT(0),
1807 		.hw.init = &(struct clk_init_data){
1808 			.name = "gcc_camss_csi1rdi_clk",
1809 			.parent_hws = (const struct clk_hw*[]){
1810 				&gcc_camss_csi1_clk_src.clkr.hw,
1811 			},
1812 			.num_parents = 1,
1813 			.flags = CLK_SET_RATE_PARENT,
1814 			.ops = &clk_branch2_ops,
1815 		},
1816 	},
1817 };
1818 
1819 static struct clk_branch gcc_camss_csi2_ahb_clk = {
1820 	.halt_reg = 0x550c4,
1821 	.halt_check = BRANCH_HALT,
1822 	.clkr = {
1823 		.enable_reg = 0x550c4,
1824 		.enable_mask = BIT(0),
1825 		.hw.init = &(struct clk_init_data){
1826 			.name = "gcc_camss_csi2_ahb_clk",
1827 			.parent_hws = (const struct clk_hw*[]){
1828 				&gcc_camss_ahb_clk_src.clkr.hw,
1829 			},
1830 			.num_parents = 1,
1831 			.flags = CLK_SET_RATE_PARENT,
1832 			.ops = &clk_branch2_ops,
1833 		},
1834 	},
1835 };
1836 
1837 static struct clk_branch gcc_camss_csi2_clk = {
1838 	.halt_reg = 0x550bc,
1839 	.halt_check = BRANCH_HALT,
1840 	.clkr = {
1841 		.enable_reg = 0x550bc,
1842 		.enable_mask = BIT(0),
1843 		.hw.init = &(struct clk_init_data){
1844 			.name = "gcc_camss_csi2_clk",
1845 			.parent_hws = (const struct clk_hw*[]){
1846 				&gcc_camss_csi2_clk_src.clkr.hw,
1847 			},
1848 			.num_parents = 1,
1849 			.flags = CLK_SET_RATE_PARENT,
1850 			.ops = &clk_branch2_ops,
1851 		},
1852 	},
1853 };
1854 
1855 static struct clk_branch gcc_camss_csi2phytimer_clk = {
1856 	.halt_reg = 0x5305c,
1857 	.halt_check = BRANCH_HALT,
1858 	.clkr = {
1859 		.enable_reg = 0x5305c,
1860 		.enable_mask = BIT(0),
1861 		.hw.init = &(struct clk_init_data){
1862 			.name = "gcc_camss_csi2phytimer_clk",
1863 			.parent_hws = (const struct clk_hw*[]){
1864 				&gcc_camss_csi2phytimer_clk_src.clkr.hw,
1865 			},
1866 			.num_parents = 1,
1867 			.flags = CLK_SET_RATE_PARENT,
1868 			.ops = &clk_branch2_ops,
1869 		},
1870 	},
1871 };
1872 
1873 static struct clk_branch gcc_camss_csi2pix_clk = {
1874 	.halt_reg = 0x550d4,
1875 	.halt_check = BRANCH_HALT,
1876 	.clkr = {
1877 		.enable_reg = 0x550d4,
1878 		.enable_mask = BIT(0),
1879 		.hw.init = &(struct clk_init_data){
1880 			.name = "gcc_camss_csi2pix_clk",
1881 			.parent_hws = (const struct clk_hw*[]){
1882 				&gcc_camss_csi2_clk_src.clkr.hw,
1883 			},
1884 			.num_parents = 1,
1885 			.flags = CLK_SET_RATE_PARENT,
1886 			.ops = &clk_branch2_ops,
1887 		},
1888 	},
1889 };
1890 
1891 static struct clk_branch gcc_camss_csi2rdi_clk = {
1892 	.halt_reg = 0x550cc,
1893 	.halt_check = BRANCH_HALT,
1894 	.clkr = {
1895 		.enable_reg = 0x550cc,
1896 		.enable_mask = BIT(0),
1897 		.hw.init = &(struct clk_init_data){
1898 			.name = "gcc_camss_csi2rdi_clk",
1899 			.parent_hws = (const struct clk_hw*[]){
1900 				&gcc_camss_csi2_clk_src.clkr.hw,
1901 			},
1902 			.num_parents = 1,
1903 			.flags = CLK_SET_RATE_PARENT,
1904 			.ops = &clk_branch2_ops,
1905 		},
1906 	},
1907 };
1908 
1909 static struct clk_branch gcc_camss_csi3_ahb_clk = {
1910 	.halt_reg = 0x55100,
1911 	.halt_check = BRANCH_HALT,
1912 	.clkr = {
1913 		.enable_reg = 0x55100,
1914 		.enable_mask = BIT(0),
1915 		.hw.init = &(struct clk_init_data){
1916 			.name = "gcc_camss_csi3_ahb_clk",
1917 			.parent_hws = (const struct clk_hw*[]){
1918 				&gcc_camss_ahb_clk_src.clkr.hw,
1919 			},
1920 			.num_parents = 1,
1921 			.flags = CLK_SET_RATE_PARENT,
1922 			.ops = &clk_branch2_ops,
1923 		},
1924 	},
1925 };
1926 
1927 static struct clk_branch gcc_camss_csi3_clk = {
1928 	.halt_reg = 0x550f8,
1929 	.halt_check = BRANCH_HALT,
1930 	.clkr = {
1931 		.enable_reg = 0x550f8,
1932 		.enable_mask = BIT(0),
1933 		.hw.init = &(struct clk_init_data){
1934 			.name = "gcc_camss_csi3_clk",
1935 			.parent_hws = (const struct clk_hw*[]){
1936 				&gcc_camss_csi3_clk_src.clkr.hw,
1937 			},
1938 			.num_parents = 1,
1939 			.flags = CLK_SET_RATE_PARENT,
1940 			.ops = &clk_branch2_ops,
1941 		},
1942 	},
1943 };
1944 
1945 static struct clk_branch gcc_camss_csi3pix_clk = {
1946 	.halt_reg = 0x55110,
1947 	.halt_check = BRANCH_HALT,
1948 	.clkr = {
1949 		.enable_reg = 0x55110,
1950 		.enable_mask = BIT(0),
1951 		.hw.init = &(struct clk_init_data){
1952 			.name = "gcc_camss_csi3pix_clk",
1953 			.parent_hws = (const struct clk_hw*[]){
1954 				&gcc_camss_csi3_clk_src.clkr.hw,
1955 			},
1956 			.num_parents = 1,
1957 			.flags = CLK_SET_RATE_PARENT,
1958 			.ops = &clk_branch2_ops,
1959 		},
1960 	},
1961 };
1962 
1963 static struct clk_branch gcc_camss_csi3rdi_clk = {
1964 	.halt_reg = 0x55108,
1965 	.halt_check = BRANCH_HALT,
1966 	.clkr = {
1967 		.enable_reg = 0x55108,
1968 		.enable_mask = BIT(0),
1969 		.hw.init = &(struct clk_init_data){
1970 			.name = "gcc_camss_csi3rdi_clk",
1971 			.parent_hws = (const struct clk_hw*[]){
1972 				&gcc_camss_csi3_clk_src.clkr.hw,
1973 			},
1974 			.num_parents = 1,
1975 			.flags = CLK_SET_RATE_PARENT,
1976 			.ops = &clk_branch2_ops,
1977 		},
1978 	},
1979 };
1980 
1981 static struct clk_branch gcc_camss_csi_vfe0_clk = {
1982 	.halt_reg = 0x54074,
1983 	.halt_check = BRANCH_HALT,
1984 	.clkr = {
1985 		.enable_reg = 0x54074,
1986 		.enable_mask = BIT(0),
1987 		.hw.init = &(struct clk_init_data){
1988 			.name = "gcc_camss_csi_vfe0_clk",
1989 			.parent_hws = (const struct clk_hw*[]){
1990 				&gcc_camss_vfe0_clk_src.clkr.hw,
1991 			},
1992 			.num_parents = 1,
1993 			.flags = CLK_SET_RATE_PARENT,
1994 			.ops = &clk_branch2_ops,
1995 		},
1996 	},
1997 };
1998 
1999 static struct clk_branch gcc_camss_csi_vfe1_clk = {
2000 	.halt_reg = 0x54080,
2001 	.halt_check = BRANCH_HALT,
2002 	.clkr = {
2003 		.enable_reg = 0x54080,
2004 		.enable_mask = BIT(0),
2005 		.hw.init = &(struct clk_init_data){
2006 			.name = "gcc_camss_csi_vfe1_clk",
2007 			.parent_hws = (const struct clk_hw*[]){
2008 				&gcc_camss_vfe1_clk_src.clkr.hw,
2009 			},
2010 			.num_parents = 1,
2011 			.flags = CLK_SET_RATE_PARENT,
2012 			.ops = &clk_branch2_ops,
2013 		},
2014 	},
2015 };
2016 
2017 static struct clk_branch gcc_camss_csiphy0_clk = {
2018 	.halt_reg = 0x55018,
2019 	.halt_check = BRANCH_HALT,
2020 	.clkr = {
2021 		.enable_reg = 0x55018,
2022 		.enable_mask = BIT(0),
2023 		.hw.init = &(struct clk_init_data){
2024 			.name = "gcc_camss_csiphy0_clk",
2025 			.parent_hws = (const struct clk_hw*[]){
2026 				&gcc_camss_csiphy_clk_src.clkr.hw,
2027 			},
2028 			.num_parents = 1,
2029 			.flags = CLK_SET_RATE_PARENT,
2030 			.ops = &clk_branch2_ops,
2031 		},
2032 	},
2033 };
2034 
2035 static struct clk_branch gcc_camss_csiphy1_clk = {
2036 	.halt_reg = 0x5501c,
2037 	.halt_check = BRANCH_HALT,
2038 	.clkr = {
2039 		.enable_reg = 0x5501c,
2040 		.enable_mask = BIT(0),
2041 		.hw.init = &(struct clk_init_data){
2042 			.name = "gcc_camss_csiphy1_clk",
2043 			.parent_hws = (const struct clk_hw*[]){
2044 				&gcc_camss_csiphy_clk_src.clkr.hw,
2045 			},
2046 			.num_parents = 1,
2047 			.flags = CLK_SET_RATE_PARENT,
2048 			.ops = &clk_branch2_ops,
2049 		},
2050 	},
2051 };
2052 
2053 static struct clk_branch gcc_camss_csiphy2_clk = {
2054 	.halt_reg = 0x55020,
2055 	.halt_check = BRANCH_HALT,
2056 	.clkr = {
2057 		.enable_reg = 0x55020,
2058 		.enable_mask = BIT(0),
2059 		.hw.init = &(struct clk_init_data){
2060 			.name = "gcc_camss_csiphy2_clk",
2061 			.parent_hws = (const struct clk_hw*[]){
2062 				&gcc_camss_csiphy_clk_src.clkr.hw,
2063 			},
2064 			.num_parents = 1,
2065 			.flags = CLK_SET_RATE_PARENT,
2066 			.ops = &clk_branch2_ops,
2067 		},
2068 	},
2069 };
2070 
2071 static struct clk_branch gcc_camss_gp0_clk = {
2072 	.halt_reg = 0x50018,
2073 	.halt_check = BRANCH_HALT,
2074 	.clkr = {
2075 		.enable_reg = 0x50018,
2076 		.enable_mask = BIT(0),
2077 		.hw.init = &(struct clk_init_data){
2078 			.name = "gcc_camss_gp0_clk",
2079 			.parent_hws = (const struct clk_hw*[]){
2080 				&gcc_camss_gp0_clk_src.clkr.hw,
2081 			},
2082 			.num_parents = 1,
2083 			.flags = CLK_SET_RATE_PARENT,
2084 			.ops = &clk_branch2_ops,
2085 		},
2086 	},
2087 };
2088 
2089 static struct clk_branch gcc_camss_gp1_clk = {
2090 	.halt_reg = 0x50034,
2091 	.halt_check = BRANCH_HALT,
2092 	.clkr = {
2093 		.enable_reg = 0x50034,
2094 		.enable_mask = BIT(0),
2095 		.hw.init = &(struct clk_init_data){
2096 			.name = "gcc_camss_gp1_clk",
2097 			.parent_hws = (const struct clk_hw*[]){
2098 				&gcc_camss_gp1_clk_src.clkr.hw,
2099 			},
2100 			.num_parents = 1,
2101 			.flags = CLK_SET_RATE_PARENT,
2102 			.ops = &clk_branch2_ops,
2103 		},
2104 	},
2105 };
2106 
2107 static struct clk_branch gcc_camss_ispif_ahb_clk = {
2108 	.halt_reg = 0x540a4,
2109 	.halt_check = BRANCH_HALT,
2110 	.clkr = {
2111 		.enable_reg = 0x540a4,
2112 		.enable_mask = BIT(0),
2113 		.hw.init = &(struct clk_init_data){
2114 			.name = "gcc_camss_ispif_ahb_clk",
2115 			.parent_hws = (const struct clk_hw*[]){
2116 				&gcc_camss_ahb_clk_src.clkr.hw,
2117 			},
2118 			.num_parents = 1,
2119 			.flags = CLK_SET_RATE_PARENT,
2120 			.ops = &clk_branch2_ops,
2121 		},
2122 	},
2123 };
2124 
2125 static struct clk_branch gcc_camss_jpeg_ahb_clk = {
2126 	.halt_reg = 0x52048,
2127 	.halt_check = BRANCH_HALT,
2128 	.clkr = {
2129 		.enable_reg = 0x52048,
2130 		.enable_mask = BIT(0),
2131 		.hw.init = &(struct clk_init_data){
2132 			.name = "gcc_camss_jpeg_ahb_clk",
2133 			.parent_hws = (const struct clk_hw*[]){
2134 				&gcc_camss_ahb_clk_src.clkr.hw,
2135 			},
2136 			.num_parents = 1,
2137 			.flags = CLK_SET_RATE_PARENT,
2138 			.ops = &clk_branch2_ops,
2139 		},
2140 	},
2141 };
2142 
2143 static struct clk_branch gcc_camss_jpeg_axi_clk = {
2144 	.halt_reg = 0x5204c,
2145 	.halt_check = BRANCH_HALT,
2146 	.clkr = {
2147 		.enable_reg = 0x5204c,
2148 		.enable_mask = BIT(0),
2149 		.hw.init = &(struct clk_init_data){
2150 			.name = "gcc_camss_jpeg_axi_clk",
2151 			.ops = &clk_branch2_ops,
2152 		},
2153 	},
2154 };
2155 
2156 static struct clk_branch gcc_camss_jpeg_clk = {
2157 	.halt_reg = 0x52040,
2158 	.halt_check = BRANCH_HALT,
2159 	.clkr = {
2160 		.enable_reg = 0x52040,
2161 		.enable_mask = BIT(0),
2162 		.hw.init = &(struct clk_init_data){
2163 			.name = "gcc_camss_jpeg_clk",
2164 			.parent_hws = (const struct clk_hw*[]){
2165 				&gcc_camss_jpeg_clk_src.clkr.hw,
2166 			},
2167 			.num_parents = 1,
2168 			.flags = CLK_SET_RATE_PARENT,
2169 			.ops = &clk_branch2_ops,
2170 		},
2171 	},
2172 };
2173 
2174 static struct clk_branch gcc_camss_mclk0_clk = {
2175 	.halt_reg = 0x51018,
2176 	.halt_check = BRANCH_HALT,
2177 	.clkr = {
2178 		.enable_reg = 0x51018,
2179 		.enable_mask = BIT(0),
2180 		.hw.init = &(struct clk_init_data){
2181 			.name = "gcc_camss_mclk0_clk",
2182 			.parent_hws = (const struct clk_hw*[]){
2183 				&gcc_camss_mclk0_clk_src.clkr.hw,
2184 			},
2185 			.num_parents = 1,
2186 			.flags = CLK_SET_RATE_PARENT,
2187 			.ops = &clk_branch2_ops,
2188 		},
2189 	},
2190 };
2191 
2192 static struct clk_branch gcc_camss_mclk1_clk = {
2193 	.halt_reg = 0x51034,
2194 	.halt_check = BRANCH_HALT,
2195 	.clkr = {
2196 		.enable_reg = 0x51034,
2197 		.enable_mask = BIT(0),
2198 		.hw.init = &(struct clk_init_data){
2199 			.name = "gcc_camss_mclk1_clk",
2200 			.parent_hws = (const struct clk_hw*[]){
2201 				&gcc_camss_mclk1_clk_src.clkr.hw,
2202 			},
2203 			.num_parents = 1,
2204 			.flags = CLK_SET_RATE_PARENT,
2205 			.ops = &clk_branch2_ops,
2206 		},
2207 	},
2208 };
2209 
2210 static struct clk_branch gcc_camss_mclk2_clk = {
2211 	.halt_reg = 0x51050,
2212 	.halt_check = BRANCH_HALT,
2213 	.clkr = {
2214 		.enable_reg = 0x51050,
2215 		.enable_mask = BIT(0),
2216 		.hw.init = &(struct clk_init_data){
2217 			.name = "gcc_camss_mclk2_clk",
2218 			.parent_hws = (const struct clk_hw*[]){
2219 				&gcc_camss_mclk2_clk_src.clkr.hw,
2220 			},
2221 			.num_parents = 1,
2222 			.flags = CLK_SET_RATE_PARENT,
2223 			.ops = &clk_branch2_ops,
2224 		},
2225 	},
2226 };
2227 
2228 static struct clk_branch gcc_camss_mclk3_clk = {
2229 	.halt_reg = 0x5106c,
2230 	.halt_check = BRANCH_HALT,
2231 	.clkr = {
2232 		.enable_reg = 0x5106c,
2233 		.enable_mask = BIT(0),
2234 		.hw.init = &(struct clk_init_data){
2235 			.name = "gcc_camss_mclk3_clk",
2236 			.parent_hws = (const struct clk_hw*[]){
2237 				&gcc_camss_mclk3_clk_src.clkr.hw,
2238 			},
2239 			.num_parents = 1,
2240 			.flags = CLK_SET_RATE_PARENT,
2241 			.ops = &clk_branch2_ops,
2242 		},
2243 	},
2244 };
2245 
2246 static struct clk_branch gcc_camss_micro_ahb_clk = {
2247 	.halt_reg = 0x560b0,
2248 	.halt_check = BRANCH_HALT,
2249 	.clkr = {
2250 		.enable_reg = 0x560b0,
2251 		.enable_mask = BIT(0),
2252 		.hw.init = &(struct clk_init_data){
2253 			.name = "gcc_camss_micro_ahb_clk",
2254 			.parent_hws = (const struct clk_hw*[]){
2255 				&gcc_camss_ahb_clk_src.clkr.hw,
2256 			},
2257 			.num_parents = 1,
2258 			.flags = CLK_SET_RATE_PARENT,
2259 			.ops = &clk_branch2_ops,
2260 		},
2261 	},
2262 };
2263 
2264 static struct clk_branch gcc_camss_throttle_nrt_axi_clk = {
2265 	.halt_reg = 0x560a4,
2266 	.halt_check = BRANCH_HALT_VOTED,
2267 	.clkr = {
2268 		.enable_reg = 0x79004,
2269 		.enable_mask = BIT(27),
2270 		.hw.init = &(struct clk_init_data){
2271 			.name = "gcc_camss_throttle_nrt_axi_clk",
2272 			.ops = &clk_branch2_ops,
2273 		},
2274 	},
2275 };
2276 
2277 static struct clk_branch gcc_camss_throttle_rt_axi_clk = {
2278 	.halt_reg = 0x560a8,
2279 	.halt_check = BRANCH_HALT_VOTED,
2280 	.clkr = {
2281 		.enable_reg = 0x79004,
2282 		.enable_mask = BIT(26),
2283 		.hw.init = &(struct clk_init_data){
2284 			.name = "gcc_camss_throttle_rt_axi_clk",
2285 			.ops = &clk_branch2_ops,
2286 		},
2287 	},
2288 };
2289 
2290 static struct clk_branch gcc_camss_top_ahb_clk = {
2291 	.halt_reg = 0x560a0,
2292 	.halt_check = BRANCH_HALT,
2293 	.clkr = {
2294 		.enable_reg = 0x560a0,
2295 		.enable_mask = BIT(0),
2296 		.hw.init = &(struct clk_init_data){
2297 			.name = "gcc_camss_top_ahb_clk",
2298 			.parent_hws = (const struct clk_hw*[]){
2299 				&gcc_camss_ahb_clk_src.clkr.hw,
2300 			},
2301 			.num_parents = 1,
2302 			.flags = CLK_SET_RATE_PARENT,
2303 			.ops = &clk_branch2_ops,
2304 		},
2305 	},
2306 };
2307 
2308 static struct clk_branch gcc_camss_vfe0_ahb_clk = {
2309 	.halt_reg = 0x54034,
2310 	.halt_check = BRANCH_HALT,
2311 	.clkr = {
2312 		.enable_reg = 0x54034,
2313 		.enable_mask = BIT(0),
2314 		.hw.init = &(struct clk_init_data){
2315 			.name = "gcc_camss_vfe0_ahb_clk",
2316 			.parent_hws = (const struct clk_hw*[]){
2317 				&gcc_camss_ahb_clk_src.clkr.hw,
2318 			},
2319 			.num_parents = 1,
2320 			.flags = CLK_SET_RATE_PARENT,
2321 			.ops = &clk_branch2_ops,
2322 		},
2323 	},
2324 };
2325 
2326 static struct clk_branch gcc_camss_vfe0_clk = {
2327 	.halt_reg = 0x54028,
2328 	.halt_check = BRANCH_HALT,
2329 	.clkr = {
2330 		.enable_reg = 0x54028,
2331 		.enable_mask = BIT(0),
2332 		.hw.init = &(struct clk_init_data){
2333 			.name = "gcc_camss_vfe0_clk",
2334 			.parent_hws = (const struct clk_hw*[]){
2335 				&gcc_camss_vfe0_clk_src.clkr.hw,
2336 			},
2337 			.num_parents = 1,
2338 			.flags = CLK_SET_RATE_PARENT,
2339 			.ops = &clk_branch2_ops,
2340 		},
2341 	},
2342 };
2343 
2344 static struct clk_branch gcc_camss_vfe0_stream_clk = {
2345 	.halt_reg = 0x54030,
2346 	.halt_check = BRANCH_HALT,
2347 	.clkr = {
2348 		.enable_reg = 0x54030,
2349 		.enable_mask = BIT(0),
2350 		.hw.init = &(struct clk_init_data){
2351 			.name = "gcc_camss_vfe0_stream_clk",
2352 			.parent_hws = (const struct clk_hw*[]){
2353 				&gcc_camss_vfe0_clk_src.clkr.hw,
2354 			},
2355 			.num_parents = 1,
2356 			.flags = CLK_SET_RATE_PARENT,
2357 			.ops = &clk_branch2_ops,
2358 		},
2359 	},
2360 };
2361 
2362 static struct clk_branch gcc_camss_vfe1_ahb_clk = {
2363 	.halt_reg = 0x5406c,
2364 	.halt_check = BRANCH_HALT,
2365 	.clkr = {
2366 		.enable_reg = 0x5406c,
2367 		.enable_mask = BIT(0),
2368 		.hw.init = &(struct clk_init_data){
2369 			.name = "gcc_camss_vfe1_ahb_clk",
2370 			.parent_hws = (const struct clk_hw*[]){
2371 				&gcc_camss_ahb_clk_src.clkr.hw,
2372 			},
2373 			.num_parents = 1,
2374 			.flags = CLK_SET_RATE_PARENT,
2375 			.ops = &clk_branch2_ops,
2376 		},
2377 	},
2378 };
2379 
2380 static struct clk_branch gcc_camss_vfe1_clk = {
2381 	.halt_reg = 0x54060,
2382 	.halt_check = BRANCH_HALT,
2383 	.clkr = {
2384 		.enable_reg = 0x54060,
2385 		.enable_mask = BIT(0),
2386 		.hw.init = &(struct clk_init_data){
2387 			.name = "gcc_camss_vfe1_clk",
2388 			.parent_hws = (const struct clk_hw*[]){
2389 				&gcc_camss_vfe1_clk_src.clkr.hw,
2390 			},
2391 			.num_parents = 1,
2392 			.flags = CLK_SET_RATE_PARENT,
2393 			.ops = &clk_branch2_ops,
2394 		},
2395 	},
2396 };
2397 
2398 static struct clk_branch gcc_camss_vfe1_stream_clk = {
2399 	.halt_reg = 0x54068,
2400 	.halt_check = BRANCH_HALT,
2401 	.clkr = {
2402 		.enable_reg = 0x54068,
2403 		.enable_mask = BIT(0),
2404 		.hw.init = &(struct clk_init_data){
2405 			.name = "gcc_camss_vfe1_stream_clk",
2406 			.parent_hws = (const struct clk_hw*[]){
2407 				&gcc_camss_vfe1_clk_src.clkr.hw,
2408 			},
2409 			.num_parents = 1,
2410 			.flags = CLK_SET_RATE_PARENT,
2411 			.ops = &clk_branch2_ops,
2412 		},
2413 	},
2414 };
2415 
2416 static struct clk_branch gcc_camss_vfe_tsctr_clk = {
2417 	.halt_reg = 0x5409c,
2418 	.halt_check = BRANCH_HALT,
2419 	.clkr = {
2420 		.enable_reg = 0x5409c,
2421 		.enable_mask = BIT(0),
2422 		.hw.init = &(struct clk_init_data){
2423 			.name = "gcc_camss_vfe_tsctr_clk",
2424 			.ops = &clk_branch2_ops,
2425 		},
2426 	},
2427 };
2428 
2429 static struct clk_branch gcc_camss_vfe_vbif_ahb_clk = {
2430 	.halt_reg = 0x5408c,
2431 	.halt_check = BRANCH_HALT,
2432 	.clkr = {
2433 		.enable_reg = 0x5408c,
2434 		.enable_mask = BIT(0),
2435 		.hw.init = &(struct clk_init_data){
2436 			.name = "gcc_camss_vfe_vbif_ahb_clk",
2437 			.parent_hws = (const struct clk_hw*[]){
2438 				&gcc_camss_ahb_clk_src.clkr.hw,
2439 			},
2440 			.num_parents = 1,
2441 			.flags = CLK_SET_RATE_PARENT,
2442 			.ops = &clk_branch2_ops,
2443 		},
2444 	},
2445 };
2446 
2447 static struct clk_branch gcc_camss_vfe_vbif_axi_clk = {
2448 	.halt_reg = 0x54090,
2449 	.halt_check = BRANCH_HALT,
2450 	.clkr = {
2451 		.enable_reg = 0x54090,
2452 		.enable_mask = BIT(0),
2453 		.hw.init = &(struct clk_init_data){
2454 			.name = "gcc_camss_vfe_vbif_axi_clk",
2455 			.ops = &clk_branch2_ops,
2456 		},
2457 	},
2458 };
2459 
2460 static struct clk_branch gcc_ce1_ahb_clk = {
2461 	.halt_reg = 0x2700c,
2462 	.halt_check = BRANCH_HALT_VOTED,
2463 	.hwcg_reg = 0x2700c,
2464 	.hwcg_bit = 1,
2465 	.clkr = {
2466 		.enable_reg = 0x79004,
2467 		.enable_mask = BIT(3),
2468 		.hw.init = &(struct clk_init_data){
2469 			.name = "gcc_ce1_ahb_clk",
2470 			.ops = &clk_branch2_ops,
2471 		},
2472 	},
2473 };
2474 
2475 static struct clk_branch gcc_ce1_axi_clk = {
2476 	.halt_reg = 0x27008,
2477 	.halt_check = BRANCH_HALT_VOTED,
2478 	.clkr = {
2479 		.enable_reg = 0x79004,
2480 		.enable_mask = BIT(4),
2481 		.hw.init = &(struct clk_init_data){
2482 			.name = "gcc_ce1_axi_clk",
2483 			.ops = &clk_branch2_ops,
2484 		},
2485 	},
2486 };
2487 
2488 static struct clk_branch gcc_ce1_clk = {
2489 	.halt_reg = 0x27004,
2490 	.halt_check = BRANCH_HALT_VOTED,
2491 	.clkr = {
2492 		.enable_reg = 0x79004,
2493 		.enable_mask = BIT(5),
2494 		.hw.init = &(struct clk_init_data){
2495 			.name = "gcc_ce1_clk",
2496 			.ops = &clk_branch2_ops,
2497 		},
2498 	},
2499 };
2500 
2501 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
2502 	.halt_reg = 0x1a084,
2503 	.halt_check = BRANCH_HALT,
2504 	.clkr = {
2505 		.enable_reg = 0x1a084,
2506 		.enable_mask = BIT(0),
2507 		.hw.init = &(struct clk_init_data){
2508 			.name = "gcc_cfg_noc_usb3_prim_axi_clk",
2509 			.parent_hws = (const struct clk_hw*[]){
2510 				&gcc_usb30_prim_master_clk_src.clkr.hw,
2511 			},
2512 			.num_parents = 1,
2513 			.flags = CLK_SET_RATE_PARENT,
2514 			.ops = &clk_branch2_ops,
2515 		},
2516 	},
2517 };
2518 
2519 static struct clk_branch gcc_cpuss_gnoc_clk = {
2520 	.halt_reg = 0x2b004,
2521 	.halt_check = BRANCH_HALT_VOTED,
2522 	.hwcg_reg = 0x2b004,
2523 	.hwcg_bit = 1,
2524 	.clkr = {
2525 		.enable_reg = 0x79004,
2526 		.enable_mask = BIT(22),
2527 		.hw.init = &(struct clk_init_data){
2528 			.name = "gcc_cpuss_gnoc_clk",
2529 			.flags = CLK_IS_CRITICAL,
2530 			.ops = &clk_branch2_ops,
2531 		},
2532 	},
2533 };
2534 
2535 static struct clk_branch gcc_disp_ahb_clk = {
2536 	.halt_reg = 0x1700c,
2537 	.halt_check = BRANCH_HALT,
2538 	.hwcg_reg = 0x1700c,
2539 	.hwcg_bit = 1,
2540 	.clkr = {
2541 		.enable_reg = 0x1700c,
2542 		.enable_mask = BIT(0),
2543 		.hw.init = &(struct clk_init_data){
2544 			.name = "gcc_disp_ahb_clk",
2545 			.flags = CLK_IS_CRITICAL,
2546 			.ops = &clk_branch2_ops,
2547 		},
2548 	},
2549 };
2550 
2551 static struct clk_branch gcc_disp_gpll0_div_clk_src = {
2552 	.halt_check = BRANCH_HALT_DELAY,
2553 	.clkr = {
2554 		.enable_reg = 0x79004,
2555 		.enable_mask = BIT(20),
2556 		.hw.init = &(struct clk_init_data){
2557 			.name = "gcc_disp_gpll0_div_clk_src",
2558 			.parent_hws = (const struct clk_hw*[]){
2559 				&gpll0_out_early.clkr.hw,
2560 			},
2561 			.num_parents = 1,
2562 			.ops = &clk_branch2_ops,
2563 		},
2564 	},
2565 };
2566 
2567 static struct clk_branch gcc_disp_hf_axi_clk = {
2568 	.halt_reg = 0x17020,
2569 	.halt_check = BRANCH_HALT,
2570 	.clkr = {
2571 		.enable_reg = 0x17020,
2572 		.enable_mask = BIT(0),
2573 		.hw.init = &(struct clk_init_data){
2574 			.name = "gcc_disp_hf_axi_clk",
2575 			.ops = &clk_branch2_ops,
2576 		},
2577 	},
2578 };
2579 
2580 static struct clk_branch gcc_disp_throttle_core_clk = {
2581 	.halt_reg = 0x17064,
2582 	.halt_check = BRANCH_HALT_VOTED,
2583 	.clkr = {
2584 		.enable_reg = 0x7900c,
2585 		.enable_mask = BIT(5),
2586 		.hw.init = &(struct clk_init_data){
2587 			.name = "gcc_disp_throttle_core_clk",
2588 			.ops = &clk_branch2_ops,
2589 		},
2590 	},
2591 };
2592 
2593 static struct clk_branch gcc_disp_xo_clk = {
2594 	.halt_reg = 0x1702c,
2595 	.halt_check = BRANCH_HALT,
2596 	.clkr = {
2597 		.enable_reg = 0x1702c,
2598 		.enable_mask = BIT(0),
2599 		.hw.init = &(struct clk_init_data){
2600 			.name = "gcc_disp_xo_clk",
2601 			.flags = CLK_IS_CRITICAL,
2602 			.ops = &clk_branch2_ops,
2603 		},
2604 	},
2605 };
2606 
2607 static struct clk_branch gcc_gp1_clk = {
2608 	.halt_reg = 0x4d000,
2609 	.halt_check = BRANCH_HALT,
2610 	.clkr = {
2611 		.enable_reg = 0x4d000,
2612 		.enable_mask = BIT(0),
2613 		.hw.init = &(struct clk_init_data){
2614 			.name = "gcc_gp1_clk",
2615 			.parent_hws = (const struct clk_hw*[]){
2616 				&gcc_gp1_clk_src.clkr.hw,
2617 			},
2618 			.num_parents = 1,
2619 			.flags = CLK_SET_RATE_PARENT,
2620 			.ops = &clk_branch2_ops,
2621 		},
2622 	},
2623 };
2624 
2625 static struct clk_branch gcc_gp2_clk = {
2626 	.halt_reg = 0x4e000,
2627 	.halt_check = BRANCH_HALT,
2628 	.clkr = {
2629 		.enable_reg = 0x4e000,
2630 		.enable_mask = BIT(0),
2631 		.hw.init = &(struct clk_init_data){
2632 			.name = "gcc_gp2_clk",
2633 			.parent_hws = (const struct clk_hw*[]){
2634 				&gcc_gp2_clk_src.clkr.hw,
2635 			},
2636 			.num_parents = 1,
2637 			.flags = CLK_SET_RATE_PARENT,
2638 			.ops = &clk_branch2_ops,
2639 		},
2640 	},
2641 };
2642 
2643 static struct clk_branch gcc_gp3_clk = {
2644 	.halt_reg = 0x4f000,
2645 	.halt_check = BRANCH_HALT,
2646 	.clkr = {
2647 		.enable_reg = 0x4f000,
2648 		.enable_mask = BIT(0),
2649 		.hw.init = &(struct clk_init_data){
2650 			.name = "gcc_gp3_clk",
2651 			.parent_hws = (const struct clk_hw*[]){
2652 				&gcc_gp3_clk_src.clkr.hw,
2653 			},
2654 			.num_parents = 1,
2655 			.flags = CLK_SET_RATE_PARENT,
2656 			.ops = &clk_branch2_ops,
2657 		},
2658 	},
2659 };
2660 
2661 static struct clk_branch gcc_gpu_cfg_ahb_clk = {
2662 	.halt_reg = 0x36004,
2663 	.halt_check = BRANCH_HALT,
2664 	.hwcg_reg = 0x36004,
2665 	.hwcg_bit = 1,
2666 	.clkr = {
2667 		.enable_reg = 0x36004,
2668 		.enable_mask = BIT(0),
2669 		.hw.init = &(struct clk_init_data){
2670 			.name = "gcc_gpu_cfg_ahb_clk",
2671 			.flags = CLK_IS_CRITICAL,
2672 			.ops = &clk_branch2_ops,
2673 		},
2674 	},
2675 };
2676 
2677 static struct clk_branch gcc_gpu_gpll0_clk_src = {
2678 	.halt_check = BRANCH_HALT_DELAY,
2679 	.clkr = {
2680 		.enable_reg = 0x79004,
2681 		.enable_mask = BIT(15),
2682 		.hw.init = &(struct clk_init_data){
2683 			.name = "gcc_gpu_gpll0_clk_src",
2684 			.parent_hws = (const struct clk_hw*[]){
2685 				&gpll0_out_early.clkr.hw,
2686 			},
2687 			.num_parents = 1,
2688 			.ops = &clk_branch2_ops,
2689 		},
2690 	},
2691 };
2692 
2693 static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
2694 	.halt_check = BRANCH_HALT_DELAY,
2695 	.clkr = {
2696 		.enable_reg = 0x79004,
2697 		.enable_mask = BIT(16),
2698 		.hw.init = &(struct clk_init_data){
2699 			.name = "gcc_gpu_gpll0_div_clk_src",
2700 			.parent_hws = (const struct clk_hw*[]){
2701 				&gpll0_out_aux2.hw,
2702 			},
2703 			.num_parents = 1,
2704 			.ops = &clk_branch2_ops,
2705 		},
2706 	},
2707 };
2708 
2709 static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
2710 	.halt_reg = 0x3600c,
2711 	.halt_check = BRANCH_VOTED,
2712 	.clkr = {
2713 		.enable_reg = 0x3600c,
2714 		.enable_mask = BIT(0),
2715 		.hw.init = &(struct clk_init_data){
2716 			.name = "gcc_gpu_memnoc_gfx_clk",
2717 			.ops = &clk_branch2_ops,
2718 		},
2719 	},
2720 };
2721 
2722 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
2723 	.halt_reg = 0x36018,
2724 	.halt_check = BRANCH_HALT,
2725 	.clkr = {
2726 		.enable_reg = 0x36018,
2727 		.enable_mask = BIT(0),
2728 		.hw.init = &(struct clk_init_data){
2729 			.name = "gcc_gpu_snoc_dvm_gfx_clk",
2730 			.ops = &clk_branch2_ops,
2731 		},
2732 	},
2733 };
2734 
2735 static struct clk_branch gcc_gpu_throttle_core_clk = {
2736 	.halt_reg = 0x36048,
2737 	.halt_check = BRANCH_HALT_VOTED,
2738 	.clkr = {
2739 		.enable_reg = 0x79004,
2740 		.enable_mask = BIT(31),
2741 		.hw.init = &(struct clk_init_data){
2742 			.name = "gcc_gpu_throttle_core_clk",
2743 			.ops = &clk_branch2_ops,
2744 		},
2745 	},
2746 };
2747 
2748 static struct clk_branch gcc_gpu_throttle_xo_clk = {
2749 	.halt_reg = 0x36044,
2750 	.halt_check = BRANCH_HALT,
2751 	.clkr = {
2752 		.enable_reg = 0x36044,
2753 		.enable_mask = BIT(0),
2754 		.hw.init = &(struct clk_init_data){
2755 			.name = "gcc_gpu_throttle_xo_clk",
2756 			.ops = &clk_branch2_ops,
2757 		},
2758 	},
2759 };
2760 
2761 static struct clk_branch gcc_mss_vs_clk = {
2762 	.halt_reg = 0x42048,
2763 	.halt_check = BRANCH_HALT,
2764 	.clkr = {
2765 		.enable_reg = 0x42048,
2766 		.enable_mask = BIT(0),
2767 		.hw.init = &(struct clk_init_data){
2768 			.name = "gcc_mss_vs_clk",
2769 			.parent_hws = (const struct clk_hw*[]){
2770 				&gcc_vsensor_clk_src.clkr.hw,
2771 			},
2772 			.num_parents = 1,
2773 			.flags = CLK_SET_RATE_PARENT,
2774 			.ops = &clk_branch2_ops,
2775 		},
2776 	},
2777 };
2778 
2779 static struct clk_branch gcc_pdm2_clk = {
2780 	.halt_reg = 0x2000c,
2781 	.halt_check = BRANCH_HALT,
2782 	.clkr = {
2783 		.enable_reg = 0x2000c,
2784 		.enable_mask = BIT(0),
2785 		.hw.init = &(struct clk_init_data){
2786 			.name = "gcc_pdm2_clk",
2787 			.parent_hws = (const struct clk_hw*[]){
2788 				&gcc_pdm2_clk_src.clkr.hw,
2789 			},
2790 			.num_parents = 1,
2791 			.flags = CLK_SET_RATE_PARENT,
2792 			.ops = &clk_branch2_ops,
2793 		},
2794 	},
2795 };
2796 
2797 static struct clk_branch gcc_pdm_ahb_clk = {
2798 	.halt_reg = 0x20004,
2799 	.halt_check = BRANCH_HALT,
2800 	.hwcg_reg = 0x20004,
2801 	.hwcg_bit = 1,
2802 	.clkr = {
2803 		.enable_reg = 0x20004,
2804 		.enable_mask = BIT(0),
2805 		.hw.init = &(struct clk_init_data){
2806 			.name = "gcc_pdm_ahb_clk",
2807 			.ops = &clk_branch2_ops,
2808 		},
2809 	},
2810 };
2811 
2812 static struct clk_branch gcc_pdm_xo4_clk = {
2813 	.halt_reg = 0x20008,
2814 	.halt_check = BRANCH_HALT,
2815 	.clkr = {
2816 		.enable_reg = 0x20008,
2817 		.enable_mask = BIT(0),
2818 		.hw.init = &(struct clk_init_data){
2819 			.name = "gcc_pdm_xo4_clk",
2820 			.ops = &clk_branch2_ops,
2821 		},
2822 	},
2823 };
2824 
2825 static struct clk_branch gcc_prng_ahb_clk = {
2826 	.halt_reg = 0x21004,
2827 	.halt_check = BRANCH_HALT_VOTED,
2828 	.hwcg_reg = 0x21004,
2829 	.hwcg_bit = 1,
2830 	.clkr = {
2831 		.enable_reg = 0x79004,
2832 		.enable_mask = BIT(13),
2833 		.hw.init = &(struct clk_init_data){
2834 			.name = "gcc_prng_ahb_clk",
2835 			.ops = &clk_branch2_ops,
2836 		},
2837 	},
2838 };
2839 
2840 static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
2841 	.halt_reg = 0x17014,
2842 	.halt_check = BRANCH_HALT,
2843 	.hwcg_reg = 0x17014,
2844 	.hwcg_bit = 1,
2845 	.clkr = {
2846 		.enable_reg = 0x7900c,
2847 		.enable_mask = BIT(0),
2848 		.hw.init = &(struct clk_init_data){
2849 			.name = "gcc_qmip_camera_nrt_ahb_clk",
2850 			.ops = &clk_branch2_ops,
2851 		},
2852 	},
2853 };
2854 
2855 static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
2856 	.halt_reg = 0x17060,
2857 	.halt_check = BRANCH_HALT_VOTED,
2858 	.hwcg_reg = 0x17060,
2859 	.hwcg_bit = 1,
2860 	.clkr = {
2861 		.enable_reg = 0x7900c,
2862 		.enable_mask = BIT(2),
2863 		.hw.init = &(struct clk_init_data){
2864 			.name = "gcc_qmip_camera_rt_ahb_clk",
2865 			.ops = &clk_branch2_ops,
2866 		},
2867 	},
2868 };
2869 
2870 static struct clk_branch gcc_qmip_disp_ahb_clk = {
2871 	.halt_reg = 0x17018,
2872 	.halt_check = BRANCH_HALT,
2873 	.hwcg_reg = 0x17018,
2874 	.hwcg_bit = 1,
2875 	.clkr = {
2876 		.enable_reg = 0x7900c,
2877 		.enable_mask = BIT(1),
2878 		.hw.init = &(struct clk_init_data){
2879 			.name = "gcc_qmip_disp_ahb_clk",
2880 			.ops = &clk_branch2_ops,
2881 		},
2882 	},
2883 };
2884 
2885 static struct clk_branch gcc_qmip_gpu_cfg_ahb_clk = {
2886 	.halt_reg = 0x36040,
2887 	.halt_check = BRANCH_HALT_VOTED,
2888 	.hwcg_reg = 0x36040,
2889 	.hwcg_bit = 1,
2890 	.clkr = {
2891 		.enable_reg = 0x7900c,
2892 		.enable_mask = BIT(4),
2893 		.hw.init = &(struct clk_init_data){
2894 			.name = "gcc_qmip_gpu_cfg_ahb_clk",
2895 			.ops = &clk_branch2_ops,
2896 		},
2897 	},
2898 };
2899 
2900 static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
2901 	.halt_reg = 0x17010,
2902 	.halt_check = BRANCH_HALT,
2903 	.hwcg_reg = 0x17010,
2904 	.hwcg_bit = 1,
2905 	.clkr = {
2906 		.enable_reg = 0x79004,
2907 		.enable_mask = BIT(25),
2908 		.hw.init = &(struct clk_init_data){
2909 			.name = "gcc_qmip_video_vcodec_ahb_clk",
2910 			.ops = &clk_branch2_ops,
2911 		},
2912 	},
2913 };
2914 
2915 static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {
2916 	.halt_reg = 0x1f014,
2917 	.halt_check = BRANCH_HALT_VOTED,
2918 	.clkr = {
2919 		.enable_reg = 0x7900c,
2920 		.enable_mask = BIT(9),
2921 		.hw.init = &(struct clk_init_data){
2922 			.name = "gcc_qupv3_wrap0_core_2x_clk",
2923 			.ops = &clk_branch2_ops,
2924 		},
2925 	},
2926 };
2927 
2928 static struct clk_branch gcc_qupv3_wrap0_core_clk = {
2929 	.halt_reg = 0x1f00c,
2930 	.halt_check = BRANCH_HALT_VOTED,
2931 	.clkr = {
2932 		.enable_reg = 0x7900c,
2933 		.enable_mask = BIT(8),
2934 		.hw.init = &(struct clk_init_data){
2935 			.name = "gcc_qupv3_wrap0_core_clk",
2936 			.ops = &clk_branch2_ops,
2937 		},
2938 	},
2939 };
2940 
2941 static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
2942 	.halt_reg = 0x1f144,
2943 	.halt_check = BRANCH_HALT_VOTED,
2944 	.clkr = {
2945 		.enable_reg = 0x7900c,
2946 		.enable_mask = BIT(10),
2947 		.hw.init = &(struct clk_init_data){
2948 			.name = "gcc_qupv3_wrap0_s0_clk",
2949 			.parent_hws = (const struct clk_hw*[]){
2950 				&gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
2951 			},
2952 			.num_parents = 1,
2953 			.flags = CLK_SET_RATE_PARENT,
2954 			.ops = &clk_branch2_ops,
2955 		},
2956 	},
2957 };
2958 
2959 static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
2960 	.halt_reg = 0x1f274,
2961 	.halt_check = BRANCH_HALT_VOTED,
2962 	.clkr = {
2963 		.enable_reg = 0x7900c,
2964 		.enable_mask = BIT(11),
2965 		.hw.init = &(struct clk_init_data){
2966 			.name = "gcc_qupv3_wrap0_s1_clk",
2967 			.parent_hws = (const struct clk_hw*[]){
2968 				&gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
2969 			},
2970 			.num_parents = 1,
2971 			.flags = CLK_SET_RATE_PARENT,
2972 			.ops = &clk_branch2_ops,
2973 		},
2974 	},
2975 };
2976 
2977 static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
2978 	.halt_reg = 0x1f3a4,
2979 	.halt_check = BRANCH_HALT_VOTED,
2980 	.clkr = {
2981 		.enable_reg = 0x7900c,
2982 		.enable_mask = BIT(12),
2983 		.hw.init = &(struct clk_init_data){
2984 			.name = "gcc_qupv3_wrap0_s2_clk",
2985 			.parent_hws = (const struct clk_hw*[]){
2986 				&gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
2987 			},
2988 			.num_parents = 1,
2989 			.flags = CLK_SET_RATE_PARENT,
2990 			.ops = &clk_branch2_ops,
2991 		},
2992 	},
2993 };
2994 
2995 static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
2996 	.halt_reg = 0x1f4d4,
2997 	.halt_check = BRANCH_HALT_VOTED,
2998 	.clkr = {
2999 		.enable_reg = 0x7900c,
3000 		.enable_mask = BIT(13),
3001 		.hw.init = &(struct clk_init_data){
3002 			.name = "gcc_qupv3_wrap0_s3_clk",
3003 			.parent_hws = (const struct clk_hw*[]){
3004 				&gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
3005 			},
3006 			.num_parents = 1,
3007 			.flags = CLK_SET_RATE_PARENT,
3008 			.ops = &clk_branch2_ops,
3009 		},
3010 	},
3011 };
3012 
3013 static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
3014 	.halt_reg = 0x1f604,
3015 	.halt_check = BRANCH_HALT_VOTED,
3016 	.clkr = {
3017 		.enable_reg = 0x7900c,
3018 		.enable_mask = BIT(14),
3019 		.hw.init = &(struct clk_init_data){
3020 			.name = "gcc_qupv3_wrap0_s4_clk",
3021 			.parent_hws = (const struct clk_hw*[]){
3022 				&gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
3023 			},
3024 			.num_parents = 1,
3025 			.flags = CLK_SET_RATE_PARENT,
3026 			.ops = &clk_branch2_ops,
3027 		},
3028 	},
3029 };
3030 
3031 static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
3032 	.halt_reg = 0x1f734,
3033 	.halt_check = BRANCH_HALT_VOTED,
3034 	.clkr = {
3035 		.enable_reg = 0x7900c,
3036 		.enable_mask = BIT(15),
3037 		.hw.init = &(struct clk_init_data){
3038 			.name = "gcc_qupv3_wrap0_s5_clk",
3039 			.parent_hws = (const struct clk_hw*[]){
3040 				&gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
3041 			},
3042 			.num_parents = 1,
3043 			.flags = CLK_SET_RATE_PARENT,
3044 			.ops = &clk_branch2_ops,
3045 		},
3046 	},
3047 };
3048 
3049 static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
3050 	.halt_reg = 0x39014,
3051 	.halt_check = BRANCH_HALT_VOTED,
3052 	.clkr = {
3053 		.enable_reg = 0x7900c,
3054 		.enable_mask = BIT(18),
3055 		.hw.init = &(struct clk_init_data){
3056 			.name = "gcc_qupv3_wrap1_core_2x_clk",
3057 			.ops = &clk_branch2_ops,
3058 		},
3059 	},
3060 };
3061 
3062 static struct clk_branch gcc_qupv3_wrap1_core_clk = {
3063 	.halt_reg = 0x3900c,
3064 	.halt_check = BRANCH_HALT_VOTED,
3065 	.clkr = {
3066 		.enable_reg = 0x7900c,
3067 		.enable_mask = BIT(19),
3068 		.hw.init = &(struct clk_init_data){
3069 			.name = "gcc_qupv3_wrap1_core_clk",
3070 			.ops = &clk_branch2_ops,
3071 		},
3072 	},
3073 };
3074 
3075 static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
3076 	.halt_reg = 0x39144,
3077 	.halt_check = BRANCH_HALT_VOTED,
3078 	.clkr = {
3079 		.enable_reg = 0x7900c,
3080 		.enable_mask = BIT(22),
3081 		.hw.init = &(struct clk_init_data){
3082 			.name = "gcc_qupv3_wrap1_s0_clk",
3083 			.parent_hws = (const struct clk_hw*[]){
3084 				&gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
3085 			},
3086 			.num_parents = 1,
3087 			.flags = CLK_SET_RATE_PARENT,
3088 			.ops = &clk_branch2_ops,
3089 		},
3090 	},
3091 };
3092 
3093 static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
3094 	.halt_reg = 0x39274,
3095 	.halt_check = BRANCH_HALT_VOTED,
3096 	.clkr = {
3097 		.enable_reg = 0x7900c,
3098 		.enable_mask = BIT(23),
3099 		.hw.init = &(struct clk_init_data){
3100 			.name = "gcc_qupv3_wrap1_s1_clk",
3101 			.parent_hws = (const struct clk_hw*[]){
3102 				&gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
3103 			},
3104 			.num_parents = 1,
3105 			.flags = CLK_SET_RATE_PARENT,
3106 			.ops = &clk_branch2_ops,
3107 		},
3108 	},
3109 };
3110 
3111 static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
3112 	.halt_reg = 0x393a4,
3113 	.halt_check = BRANCH_HALT_VOTED,
3114 	.clkr = {
3115 		.enable_reg = 0x7900c,
3116 		.enable_mask = BIT(24),
3117 		.hw.init = &(struct clk_init_data){
3118 			.name = "gcc_qupv3_wrap1_s2_clk",
3119 			.parent_hws = (const struct clk_hw*[]){
3120 				&gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
3121 			},
3122 			.num_parents = 1,
3123 			.flags = CLK_SET_RATE_PARENT,
3124 			.ops = &clk_branch2_ops,
3125 		},
3126 	},
3127 };
3128 
3129 static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
3130 	.halt_reg = 0x394d4,
3131 	.halt_check = BRANCH_HALT_VOTED,
3132 	.clkr = {
3133 		.enable_reg = 0x7900c,
3134 		.enable_mask = BIT(25),
3135 		.hw.init = &(struct clk_init_data){
3136 			.name = "gcc_qupv3_wrap1_s3_clk",
3137 			.parent_hws = (const struct clk_hw*[]){
3138 				&gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
3139 			},
3140 			.num_parents = 1,
3141 			.flags = CLK_SET_RATE_PARENT,
3142 			.ops = &clk_branch2_ops,
3143 		},
3144 	},
3145 };
3146 
3147 static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
3148 	.halt_reg = 0x39604,
3149 	.halt_check = BRANCH_HALT_VOTED,
3150 	.clkr = {
3151 		.enable_reg = 0x7900c,
3152 		.enable_mask = BIT(26),
3153 		.hw.init = &(struct clk_init_data){
3154 			.name = "gcc_qupv3_wrap1_s4_clk",
3155 			.parent_hws = (const struct clk_hw*[]){
3156 				&gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
3157 			},
3158 			.num_parents = 1,
3159 			.flags = CLK_SET_RATE_PARENT,
3160 			.ops = &clk_branch2_ops,
3161 		},
3162 	},
3163 };
3164 
3165 static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
3166 	.halt_reg = 0x39734,
3167 	.halt_check = BRANCH_HALT_VOTED,
3168 	.clkr = {
3169 		.enable_reg = 0x7900c,
3170 		.enable_mask = BIT(27),
3171 		.hw.init = &(struct clk_init_data){
3172 			.name = "gcc_qupv3_wrap1_s5_clk",
3173 			.parent_hws = (const struct clk_hw*[]){
3174 				&gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
3175 			},
3176 			.num_parents = 1,
3177 			.flags = CLK_SET_RATE_PARENT,
3178 			.ops = &clk_branch2_ops,
3179 		},
3180 	},
3181 };
3182 
3183 static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
3184 	.halt_reg = 0x1f004,
3185 	.halt_check = BRANCH_HALT_VOTED,
3186 	.clkr = {
3187 		.enable_reg = 0x7900c,
3188 		.enable_mask = BIT(6),
3189 		.hw.init = &(struct clk_init_data){
3190 			.name = "gcc_qupv3_wrap_0_m_ahb_clk",
3191 			.ops = &clk_branch2_ops,
3192 		},
3193 	},
3194 };
3195 
3196 static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
3197 	.halt_reg = 0x1f008,
3198 	.halt_check = BRANCH_HALT_VOTED,
3199 	.hwcg_reg = 0x1f008,
3200 	.hwcg_bit = 1,
3201 	.clkr = {
3202 		.enable_reg = 0x7900c,
3203 		.enable_mask = BIT(7),
3204 		.hw.init = &(struct clk_init_data){
3205 			.name = "gcc_qupv3_wrap_0_s_ahb_clk",
3206 			.ops = &clk_branch2_ops,
3207 		},
3208 	},
3209 };
3210 
3211 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
3212 	.halt_reg = 0x39004,
3213 	.halt_check = BRANCH_HALT_VOTED,
3214 	.clkr = {
3215 		.enable_reg = 0x7900c,
3216 		.enable_mask = BIT(20),
3217 		.hw.init = &(struct clk_init_data){
3218 			.name = "gcc_qupv3_wrap_1_m_ahb_clk",
3219 			.ops = &clk_branch2_ops,
3220 		},
3221 	},
3222 };
3223 
3224 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
3225 	.halt_reg = 0x39008,
3226 	.halt_check = BRANCH_HALT_VOTED,
3227 	.hwcg_reg = 0x39008,
3228 	.hwcg_bit = 1,
3229 	.clkr = {
3230 		.enable_reg = 0x7900c,
3231 		.enable_mask = BIT(21),
3232 		.hw.init = &(struct clk_init_data){
3233 			.name = "gcc_qupv3_wrap_1_s_ahb_clk",
3234 			.ops = &clk_branch2_ops,
3235 		},
3236 	},
3237 };
3238 
3239 static struct clk_branch gcc_sdcc1_ahb_clk = {
3240 	.halt_reg = 0x38008,
3241 	.halt_check = BRANCH_HALT,
3242 	.clkr = {
3243 		.enable_reg = 0x38008,
3244 		.enable_mask = BIT(0),
3245 		.hw.init = &(struct clk_init_data){
3246 			.name = "gcc_sdcc1_ahb_clk",
3247 			.ops = &clk_branch2_ops,
3248 		},
3249 	},
3250 };
3251 
3252 static struct clk_branch gcc_sdcc1_apps_clk = {
3253 	.halt_reg = 0x38004,
3254 	.halt_check = BRANCH_HALT,
3255 	.clkr = {
3256 		.enable_reg = 0x38004,
3257 		.enable_mask = BIT(0),
3258 		.hw.init = &(struct clk_init_data){
3259 			.name = "gcc_sdcc1_apps_clk",
3260 			.parent_hws = (const struct clk_hw*[]){
3261 				&gcc_sdcc1_apps_clk_src.clkr.hw,
3262 			},
3263 			.num_parents = 1,
3264 			.flags = CLK_SET_RATE_PARENT,
3265 			.ops = &clk_branch2_ops,
3266 		},
3267 	},
3268 };
3269 
3270 static struct clk_branch gcc_sdcc1_ice_core_clk = {
3271 	.halt_reg = 0x3800c,
3272 	.halt_check = BRANCH_HALT,
3273 	.clkr = {
3274 		.enable_reg = 0x3800c,
3275 		.enable_mask = BIT(0),
3276 		.hw.init = &(struct clk_init_data){
3277 			.name = "gcc_sdcc1_ice_core_clk",
3278 			.parent_hws = (const struct clk_hw*[]){
3279 				&gcc_sdcc1_ice_core_clk_src.clkr.hw,
3280 			},
3281 			.num_parents = 1,
3282 			.flags = CLK_SET_RATE_PARENT,
3283 			.ops = &clk_branch2_ops,
3284 		},
3285 	},
3286 };
3287 
3288 static struct clk_branch gcc_sdcc2_ahb_clk = {
3289 	.halt_reg = 0x1e008,
3290 	.halt_check = BRANCH_HALT,
3291 	.clkr = {
3292 		.enable_reg = 0x1e008,
3293 		.enable_mask = BIT(0),
3294 		.hw.init = &(struct clk_init_data){
3295 			.name = "gcc_sdcc2_ahb_clk",
3296 			.ops = &clk_branch2_ops,
3297 		},
3298 	},
3299 };
3300 
3301 static struct clk_branch gcc_sdcc2_apps_clk = {
3302 	.halt_reg = 0x1e004,
3303 	.halt_check = BRANCH_HALT,
3304 	.clkr = {
3305 		.enable_reg = 0x1e004,
3306 		.enable_mask = BIT(0),
3307 		.hw.init = &(struct clk_init_data){
3308 			.name = "gcc_sdcc2_apps_clk",
3309 			.parent_hws = (const struct clk_hw*[]){
3310 				&gcc_sdcc2_apps_clk_src.clkr.hw,
3311 			},
3312 			.num_parents = 1,
3313 			.flags = CLK_SET_RATE_PARENT,
3314 			.ops = &clk_branch2_ops,
3315 		},
3316 	},
3317 };
3318 
3319 static struct clk_branch gcc_sys_noc_compute_sf_axi_clk = {
3320 	.halt_reg = 0x1050c,
3321 	.halt_check = BRANCH_HALT,
3322 	.clkr = {
3323 		.enable_reg = 0x1050c,
3324 		.enable_mask = BIT(0),
3325 		.hw.init = &(struct clk_init_data){
3326 			.name = "gcc_sys_noc_compute_sf_axi_clk",
3327 			.flags = CLK_IS_CRITICAL,
3328 			.ops = &clk_branch2_ops,
3329 		},
3330 	},
3331 };
3332 
3333 static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = {
3334 	.halt_reg = 0x2b06c,
3335 	.halt_check = BRANCH_HALT_VOTED,
3336 	.clkr = {
3337 		.enable_reg = 0x79004,
3338 		.enable_mask = BIT(0),
3339 		.hw.init = &(struct clk_init_data){
3340 			.name = "gcc_sys_noc_cpuss_ahb_clk",
3341 			.flags = CLK_IS_CRITICAL,
3342 			.ops = &clk_branch2_ops,
3343 		},
3344 	},
3345 };
3346 
3347 static struct clk_branch gcc_sys_noc_ufs_phy_axi_clk = {
3348 	.halt_reg = 0x45098,
3349 	.halt_check = BRANCH_HALT,
3350 	.clkr = {
3351 		.enable_reg = 0x45098,
3352 		.enable_mask = BIT(0),
3353 		.hw.init = &(struct clk_init_data){
3354 			.name = "gcc_sys_noc_ufs_phy_axi_clk",
3355 			.parent_hws = (const struct clk_hw*[]){
3356 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
3357 			},
3358 			.num_parents = 1,
3359 			.flags = CLK_SET_RATE_PARENT,
3360 			.ops = &clk_branch2_ops,
3361 		},
3362 	},
3363 };
3364 
3365 static struct clk_branch gcc_sys_noc_usb3_prim_axi_clk = {
3366 	.halt_reg = 0x1a080,
3367 	.halt_check = BRANCH_HALT,
3368 	.clkr = {
3369 		.enable_reg = 0x1a080,
3370 		.enable_mask = BIT(0),
3371 		.hw.init = &(struct clk_init_data){
3372 			.name = "gcc_sys_noc_usb3_prim_axi_clk",
3373 			.parent_hws = (const struct clk_hw*[]){
3374 				&gcc_usb30_prim_master_clk_src.clkr.hw,
3375 			},
3376 			.num_parents = 1,
3377 			.flags = CLK_SET_RATE_PARENT,
3378 			.ops = &clk_branch2_ops,
3379 		},
3380 	},
3381 };
3382 
3383 static struct clk_branch gcc_ufs_mem_clkref_clk = {
3384 	.halt_reg = 0x8c000,
3385 	.halt_check = BRANCH_HALT,
3386 	.clkr = {
3387 		.enable_reg = 0x8c000,
3388 		.enable_mask = BIT(0),
3389 		.hw.init = &(struct clk_init_data){
3390 			.name = "gcc_ufs_mem_clkref_clk",
3391 			.ops = &clk_branch2_ops,
3392 		},
3393 	},
3394 };
3395 
3396 static struct clk_branch gcc_ufs_phy_ahb_clk = {
3397 	.halt_reg = 0x45014,
3398 	.halt_check = BRANCH_HALT,
3399 	.hwcg_reg = 0x45014,
3400 	.hwcg_bit = 1,
3401 	.clkr = {
3402 		.enable_reg = 0x45014,
3403 		.enable_mask = BIT(0),
3404 		.hw.init = &(struct clk_init_data){
3405 			.name = "gcc_ufs_phy_ahb_clk",
3406 			.ops = &clk_branch2_ops,
3407 		},
3408 	},
3409 };
3410 
3411 static struct clk_branch gcc_ufs_phy_axi_clk = {
3412 	.halt_reg = 0x45010,
3413 	.halt_check = BRANCH_HALT,
3414 	.hwcg_reg = 0x45010,
3415 	.hwcg_bit = 1,
3416 	.clkr = {
3417 		.enable_reg = 0x45010,
3418 		.enable_mask = BIT(0),
3419 		.hw.init = &(struct clk_init_data){
3420 			.name = "gcc_ufs_phy_axi_clk",
3421 			.parent_hws = (const struct clk_hw*[]){
3422 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
3423 			},
3424 			.num_parents = 1,
3425 			.flags = CLK_SET_RATE_PARENT,
3426 			.ops = &clk_branch2_ops,
3427 		},
3428 	},
3429 };
3430 
3431 static struct clk_branch gcc_ufs_phy_ice_core_clk = {
3432 	.halt_reg = 0x45044,
3433 	.halt_check = BRANCH_HALT,
3434 	.hwcg_reg = 0x45044,
3435 	.hwcg_bit = 1,
3436 	.clkr = {
3437 		.enable_reg = 0x45044,
3438 		.enable_mask = BIT(0),
3439 		.hw.init = &(struct clk_init_data){
3440 			.name = "gcc_ufs_phy_ice_core_clk",
3441 			.parent_hws = (const struct clk_hw*[]){
3442 				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,
3443 			},
3444 			.num_parents = 1,
3445 			.flags = CLK_SET_RATE_PARENT,
3446 			.ops = &clk_branch2_ops,
3447 		},
3448 	},
3449 };
3450 
3451 static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
3452 	.halt_reg = 0x45078,
3453 	.halt_check = BRANCH_HALT,
3454 	.hwcg_reg = 0x45078,
3455 	.hwcg_bit = 1,
3456 	.clkr = {
3457 		.enable_reg = 0x45078,
3458 		.enable_mask = BIT(0),
3459 		.hw.init = &(struct clk_init_data){
3460 			.name = "gcc_ufs_phy_phy_aux_clk",
3461 			.parent_hws = (const struct clk_hw*[]){
3462 				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
3463 			},
3464 			.num_parents = 1,
3465 			.flags = CLK_SET_RATE_PARENT,
3466 			.ops = &clk_branch2_ops,
3467 		},
3468 	},
3469 };
3470 
3471 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
3472 	.halt_reg = 0x4501c,
3473 	.halt_check = BRANCH_HALT_SKIP,
3474 	.clkr = {
3475 		.enable_reg = 0x4501c,
3476 		.enable_mask = BIT(0),
3477 		.hw.init = &(struct clk_init_data){
3478 			.name = "gcc_ufs_phy_rx_symbol_0_clk",
3479 			.ops = &clk_branch2_ops,
3480 		},
3481 	},
3482 };
3483 
3484 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
3485 	.halt_reg = 0x45018,
3486 	.halt_check = BRANCH_HALT_SKIP,
3487 	.clkr = {
3488 		.enable_reg = 0x45018,
3489 		.enable_mask = BIT(0),
3490 		.hw.init = &(struct clk_init_data){
3491 			.name = "gcc_ufs_phy_tx_symbol_0_clk",
3492 			.ops = &clk_branch2_ops,
3493 		},
3494 	},
3495 };
3496 
3497 static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
3498 	.halt_reg = 0x45040,
3499 	.halt_check = BRANCH_HALT,
3500 	.hwcg_reg = 0x45040,
3501 	.hwcg_bit = 1,
3502 	.clkr = {
3503 		.enable_reg = 0x45040,
3504 		.enable_mask = BIT(0),
3505 		.hw.init = &(struct clk_init_data){
3506 			.name = "gcc_ufs_phy_unipro_core_clk",
3507 			.parent_hws = (const struct clk_hw*[]){
3508 				&gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
3509 			},
3510 			.num_parents = 1,
3511 			.flags = CLK_SET_RATE_PARENT,
3512 			.ops = &clk_branch2_ops,
3513 		},
3514 	},
3515 };
3516 
3517 static struct clk_branch gcc_usb30_prim_master_clk = {
3518 	.halt_reg = 0x1a010,
3519 	.halt_check = BRANCH_HALT,
3520 	.clkr = {
3521 		.enable_reg = 0x1a010,
3522 		.enable_mask = BIT(0),
3523 		.hw.init = &(struct clk_init_data){
3524 			.name = "gcc_usb30_prim_master_clk",
3525 			.parent_hws = (const struct clk_hw*[]){
3526 				&gcc_usb30_prim_master_clk_src.clkr.hw,
3527 			},
3528 			.num_parents = 1,
3529 			.flags = CLK_SET_RATE_PARENT,
3530 			.ops = &clk_branch2_ops,
3531 		},
3532 	},
3533 };
3534 
3535 static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
3536 	.halt_reg = 0x1a018,
3537 	.halt_check = BRANCH_HALT,
3538 	.clkr = {
3539 		.enable_reg = 0x1a018,
3540 		.enable_mask = BIT(0),
3541 		.hw.init = &(struct clk_init_data){
3542 			.name = "gcc_usb30_prim_mock_utmi_clk",
3543 			.parent_hws = (const struct clk_hw*[]){
3544 				&gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
3545 			},
3546 			.num_parents = 1,
3547 			.flags = CLK_SET_RATE_PARENT,
3548 			.ops = &clk_branch2_ops,
3549 		},
3550 	},
3551 };
3552 
3553 static struct clk_branch gcc_usb30_prim_sleep_clk = {
3554 	.halt_reg = 0x1a014,
3555 	.halt_check = BRANCH_HALT,
3556 	.clkr = {
3557 		.enable_reg = 0x1a014,
3558 		.enable_mask = BIT(0),
3559 		.hw.init = &(struct clk_init_data){
3560 			.name = "gcc_usb30_prim_sleep_clk",
3561 			.ops = &clk_branch2_ops,
3562 		},
3563 	},
3564 };
3565 
3566 static struct clk_branch gcc_usb3_prim_clkref_clk = {
3567 	.halt_reg = 0x80278,
3568 	.halt_check = BRANCH_HALT,
3569 	.clkr = {
3570 		.enable_reg = 0x80278,
3571 		.enable_mask = BIT(0),
3572 		.hw.init = &(struct clk_init_data){
3573 			.name = "gcc_usb3_prim_clkref_clk",
3574 			.ops = &clk_branch2_ops,
3575 		},
3576 	},
3577 };
3578 
3579 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
3580 	.halt_reg = 0x1a054,
3581 	.halt_check = BRANCH_HALT,
3582 	.clkr = {
3583 		.enable_reg = 0x1a054,
3584 		.enable_mask = BIT(0),
3585 		.hw.init = &(struct clk_init_data){
3586 			.name = "gcc_usb3_prim_phy_com_aux_clk",
3587 			.parent_hws = (const struct clk_hw*[]){
3588 				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3589 			},
3590 			.num_parents = 1,
3591 			.flags = CLK_SET_RATE_PARENT,
3592 			.ops = &clk_branch2_ops,
3593 		},
3594 	},
3595 };
3596 
3597 static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
3598 	.halt_check = BRANCH_HALT_SKIP,
3599 	.clkr = {
3600 		.enable_reg = 0x1a058,
3601 		.enable_mask = BIT(0),
3602 		.hw.init = &(struct clk_init_data){
3603 			.name = "gcc_usb3_prim_phy_pipe_clk",
3604 			.ops = &clk_branch2_ops,
3605 		},
3606 	},
3607 };
3608 
3609 static struct clk_branch gcc_vdda_vs_clk = {
3610 	.halt_reg = 0x4200c,
3611 	.halt_check = BRANCH_HALT,
3612 	.clkr = {
3613 		.enable_reg = 0x4200c,
3614 		.enable_mask = BIT(0),
3615 		.hw.init = &(struct clk_init_data){
3616 			.name = "gcc_vdda_vs_clk",
3617 			.parent_hws = (const struct clk_hw*[]){
3618 				&gcc_vsensor_clk_src.clkr.hw,
3619 			},
3620 			.num_parents = 1,
3621 			.flags = CLK_SET_RATE_PARENT,
3622 			.ops = &clk_branch2_ops,
3623 		},
3624 	},
3625 };
3626 
3627 static struct clk_branch gcc_vddcx_vs_clk = {
3628 	.halt_reg = 0x42004,
3629 	.halt_check = BRANCH_HALT,
3630 	.clkr = {
3631 		.enable_reg = 0x42004,
3632 		.enable_mask = BIT(0),
3633 		.hw.init = &(struct clk_init_data){
3634 			.name = "gcc_vddcx_vs_clk",
3635 			.parent_hws = (const struct clk_hw*[]){
3636 				&gcc_vsensor_clk_src.clkr.hw,
3637 			},
3638 			.num_parents = 1,
3639 			.flags = CLK_SET_RATE_PARENT,
3640 			.ops = &clk_branch2_ops,
3641 		},
3642 	},
3643 };
3644 
3645 static struct clk_branch gcc_vddmx_vs_clk = {
3646 	.halt_reg = 0x42008,
3647 	.halt_check = BRANCH_HALT,
3648 	.clkr = {
3649 		.enable_reg = 0x42008,
3650 		.enable_mask = BIT(0),
3651 		.hw.init = &(struct clk_init_data){
3652 			.name = "gcc_vddmx_vs_clk",
3653 			.parent_hws = (const struct clk_hw*[]){
3654 				&gcc_vsensor_clk_src.clkr.hw,
3655 			},
3656 			.num_parents = 1,
3657 			.flags = CLK_SET_RATE_PARENT,
3658 			.ops = &clk_branch2_ops,
3659 		},
3660 	},
3661 };
3662 
3663 static struct clk_branch gcc_video_ahb_clk = {
3664 	.halt_reg = 0x17004,
3665 	.halt_check = BRANCH_HALT,
3666 	.hwcg_reg = 0x17004,
3667 	.hwcg_bit = 1,
3668 	.clkr = {
3669 		.enable_reg = 0x17004,
3670 		.enable_mask = BIT(0),
3671 		.hw.init = &(struct clk_init_data){
3672 			.name = "gcc_video_ahb_clk",
3673 			.flags = CLK_IS_CRITICAL,
3674 			.ops = &clk_branch2_ops,
3675 		},
3676 	},
3677 };
3678 
3679 static struct clk_branch gcc_video_axi0_clk = {
3680 	.halt_reg = 0x1701c,
3681 	.halt_check = BRANCH_HALT,
3682 	.clkr = {
3683 		.enable_reg = 0x1701c,
3684 		.enable_mask = BIT(0),
3685 		.hw.init = &(struct clk_init_data){
3686 			.name = "gcc_video_axi0_clk",
3687 			.ops = &clk_branch2_ops,
3688 		},
3689 	},
3690 };
3691 
3692 static struct clk_branch gcc_video_throttle_core_clk = {
3693 	.halt_reg = 0x17068,
3694 	.halt_check = BRANCH_HALT_VOTED,
3695 	.clkr = {
3696 		.enable_reg = 0x79004,
3697 		.enable_mask = BIT(28),
3698 		.hw.init = &(struct clk_init_data){
3699 			.name = "gcc_video_throttle_core_clk",
3700 			.ops = &clk_branch2_ops,
3701 		},
3702 	},
3703 };
3704 
3705 static struct clk_branch gcc_video_xo_clk = {
3706 	.halt_reg = 0x17024,
3707 	.halt_check = BRANCH_HALT,
3708 	.clkr = {
3709 		.enable_reg = 0x17024,
3710 		.enable_mask = BIT(0),
3711 		.hw.init = &(struct clk_init_data){
3712 			.name = "gcc_video_xo_clk",
3713 			.flags = CLK_IS_CRITICAL,
3714 			.ops = &clk_branch2_ops,
3715 		},
3716 	},
3717 };
3718 
3719 static struct clk_branch gcc_vs_ctrl_ahb_clk = {
3720 	.halt_reg = 0x42014,
3721 	.halt_check = BRANCH_HALT,
3722 	.hwcg_reg = 0x42014,
3723 	.hwcg_bit = 1,
3724 	.clkr = {
3725 		.enable_reg = 0x42014,
3726 		.enable_mask = BIT(0),
3727 		.hw.init = &(struct clk_init_data){
3728 			.name = "gcc_vs_ctrl_ahb_clk",
3729 			.ops = &clk_branch2_ops,
3730 		},
3731 	},
3732 };
3733 
3734 static struct clk_branch gcc_vs_ctrl_clk = {
3735 	.halt_reg = 0x42010,
3736 	.halt_check = BRANCH_HALT,
3737 	.clkr = {
3738 		.enable_reg = 0x42010,
3739 		.enable_mask = BIT(0),
3740 		.hw.init = &(struct clk_init_data){
3741 			.name = "gcc_vs_ctrl_clk",
3742 			.parent_hws = (const struct clk_hw*[]){
3743 				&gcc_vs_ctrl_clk_src.clkr.hw,
3744 			},
3745 			.num_parents = 1,
3746 			.flags = CLK_SET_RATE_PARENT,
3747 			.ops = &clk_branch2_ops,
3748 		},
3749 	},
3750 };
3751 
3752 static struct clk_branch gcc_wcss_vs_clk = {
3753 	.halt_reg = 0x42050,
3754 	.halt_check = BRANCH_HALT,
3755 	.clkr = {
3756 		.enable_reg = 0x42050,
3757 		.enable_mask = BIT(0),
3758 		.hw.init = &(struct clk_init_data){
3759 			.name = "gcc_wcss_vs_clk",
3760 			.parent_hws = (const struct clk_hw*[]){
3761 				&gcc_vsensor_clk_src.clkr.hw,
3762 			},
3763 			.num_parents = 1,
3764 			.flags = CLK_SET_RATE_PARENT,
3765 			.ops = &clk_branch2_ops,
3766 		},
3767 	},
3768 };
3769 
3770 static struct gdsc usb30_prim_gdsc = {
3771 	.gdscr = 0x1a004,
3772 	.pd = {
3773 		.name = "usb30_prim_gdsc",
3774 	},
3775 	.pwrsts = PWRSTS_OFF_ON,
3776 };
3777 
3778 static struct gdsc ufs_phy_gdsc = {
3779 	.gdscr = 0x45004,
3780 	.pd = {
3781 		.name = "ufs_phy_gdsc",
3782 	},
3783 	.pwrsts = PWRSTS_OFF_ON,
3784 };
3785 
3786 static struct gdsc camss_vfe0_gdsc = {
3787 	.gdscr = 0x54004,
3788 	.pd = {
3789 		.name = "camss_vfe0_gdsc",
3790 	},
3791 	.pwrsts = PWRSTS_OFF_ON,
3792 };
3793 
3794 static struct gdsc camss_vfe1_gdsc = {
3795 	.gdscr = 0x5403c,
3796 	.pd = {
3797 		.name = "camss_vfe1_gdsc",
3798 	},
3799 	.pwrsts = PWRSTS_OFF_ON,
3800 };
3801 
3802 static struct gdsc camss_top_gdsc = {
3803 	.gdscr = 0x5607c,
3804 	.pd = {
3805 		.name = "camss_top_gdsc",
3806 	},
3807 	.pwrsts = PWRSTS_OFF_ON,
3808 };
3809 
3810 static struct gdsc cam_cpp_gdsc = {
3811 	.gdscr = 0x560bc,
3812 	.pd = {
3813 		.name = "cam_cpp_gdsc",
3814 	},
3815 	.pwrsts = PWRSTS_OFF_ON,
3816 };
3817 
3818 static struct gdsc hlos1_vote_turing_mmu_tbu1_gdsc = {
3819 	.gdscr = 0x7d060,
3820 	.pd = {
3821 		.name = "hlos1_vote_turing_mmu_tbu1_gdsc",
3822 	},
3823 	.pwrsts = PWRSTS_OFF_ON,
3824 	.flags = VOTABLE,
3825 };
3826 
3827 static struct gdsc hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc = {
3828 	.gdscr = 0x80074,
3829 	.pd = {
3830 		.name = "hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc",
3831 	},
3832 	.pwrsts = PWRSTS_OFF_ON,
3833 	.flags = VOTABLE,
3834 };
3835 
3836 static struct gdsc hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc = {
3837 	.gdscr = 0x80084,
3838 	.pd = {
3839 		.name = "hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc",
3840 	},
3841 	.pwrsts = PWRSTS_OFF_ON,
3842 	.flags = VOTABLE,
3843 };
3844 
3845 
3846 static struct gdsc hlos1_vote_turing_mmu_tbu0_gdsc = {
3847 	.gdscr = 0x80094,
3848 	.pd = {
3849 		.name = "hlos1_vote_turing_mmu_tbu0_gdsc",
3850 	},
3851 	.pwrsts = PWRSTS_OFF_ON,
3852 	.flags = VOTABLE,
3853 };
3854 
3855 static struct gdsc *gcc_sm6125_gdscs[] = {
3856 	[USB30_PRIM_GDSC] = &usb30_prim_gdsc,
3857 	[UFS_PHY_GDSC] = &ufs_phy_gdsc,
3858 	[CAMSS_VFE0_GDSC] = &camss_vfe0_gdsc,
3859 	[CAMSS_VFE1_GDSC] = &camss_vfe1_gdsc,
3860 	[CAMSS_TOP_GDSC] = &camss_top_gdsc,
3861 	[CAM_CPP_GDSC] = &cam_cpp_gdsc,
3862 	[HLOS1_VOTE_TURING_MMU_TBU1_GDSC] = &hlos1_vote_turing_mmu_tbu1_gdsc,
3863 	[HLOS1_VOTE_MM_SNOC_MMU_TBU_RT_GDSC] = &hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc,
3864 	[HLOS1_VOTE_MM_SNOC_MMU_TBU_NRT_GDSC] = &hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc,
3865 	[HLOS1_VOTE_TURING_MMU_TBU0_GDSC] = &hlos1_vote_turing_mmu_tbu0_gdsc,
3866 };
3867 
3868 static struct clk_hw *gcc_sm6125_hws[] = {
3869 	[GPLL0_OUT_AUX2] = &gpll0_out_aux2.hw,
3870 	[GPLL0_OUT_MAIN] = &gpll0_out_main.hw,
3871 	[GPLL6_OUT_MAIN] = &gpll6_out_main.hw,
3872 	[GPLL7_OUT_MAIN] = &gpll7_out_main.hw,
3873 	[GPLL8_OUT_MAIN] = &gpll8_out_main.hw,
3874 	[GPLL9_OUT_MAIN] = &gpll9_out_main.hw,
3875 };
3876 
3877 static struct clk_regmap *gcc_sm6125_clocks[] = {
3878 	[GCC_AHB2PHY_CSI_CLK] = &gcc_ahb2phy_csi_clk.clkr,
3879 	[GCC_AHB2PHY_USB_CLK] = &gcc_ahb2phy_usb_clk.clkr,
3880 	[GCC_APC_VS_CLK] = &gcc_apc_vs_clk.clkr,
3881 	[GCC_BIMC_GPU_AXI_CLK] = &gcc_bimc_gpu_axi_clk.clkr,
3882 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3883 	[GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr,
3884 	[GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr,
3885 	[GCC_CAMSS_AHB_CLK_SRC] = &gcc_camss_ahb_clk_src.clkr,
3886 	[GCC_CAMSS_CCI_AHB_CLK] = &gcc_camss_cci_ahb_clk.clkr,
3887 	[GCC_CAMSS_CCI_CLK] = &gcc_camss_cci_clk.clkr,
3888 	[GCC_CAMSS_CCI_CLK_SRC] = &gcc_camss_cci_clk_src.clkr,
3889 	[GCC_CAMSS_CPHY_CSID0_CLK] = &gcc_camss_cphy_csid0_clk.clkr,
3890 	[GCC_CAMSS_CPHY_CSID1_CLK] = &gcc_camss_cphy_csid1_clk.clkr,
3891 	[GCC_CAMSS_CPHY_CSID2_CLK] = &gcc_camss_cphy_csid2_clk.clkr,
3892 	[GCC_CAMSS_CPHY_CSID3_CLK] = &gcc_camss_cphy_csid3_clk.clkr,
3893 	[GCC_CAMSS_CPP_AHB_CLK] = &gcc_camss_cpp_ahb_clk.clkr,
3894 	[GCC_CAMSS_CPP_AXI_CLK] = &gcc_camss_cpp_axi_clk.clkr,
3895 	[GCC_CAMSS_CPP_CLK] = &gcc_camss_cpp_clk.clkr,
3896 	[GCC_CAMSS_CPP_CLK_SRC] = &gcc_camss_cpp_clk_src.clkr,
3897 	[GCC_CAMSS_CPP_VBIF_AHB_CLK] = &gcc_camss_cpp_vbif_ahb_clk.clkr,
3898 	[GCC_CAMSS_CSI0_AHB_CLK] = &gcc_camss_csi0_ahb_clk.clkr,
3899 	[GCC_CAMSS_CSI0_CLK] = &gcc_camss_csi0_clk.clkr,
3900 	[GCC_CAMSS_CSI0_CLK_SRC] = &gcc_camss_csi0_clk_src.clkr,
3901 	[GCC_CAMSS_CSI0PHYTIMER_CLK] = &gcc_camss_csi0phytimer_clk.clkr,
3902 	[GCC_CAMSS_CSI0PHYTIMER_CLK_SRC] = &gcc_camss_csi0phytimer_clk_src.clkr,
3903 	[GCC_CAMSS_CSI0PIX_CLK] = &gcc_camss_csi0pix_clk.clkr,
3904 	[GCC_CAMSS_CSI0RDI_CLK] = &gcc_camss_csi0rdi_clk.clkr,
3905 	[GCC_CAMSS_CSI1_AHB_CLK] = &gcc_camss_csi1_ahb_clk.clkr,
3906 	[GCC_CAMSS_CSI1_CLK] = &gcc_camss_csi1_clk.clkr,
3907 	[GCC_CAMSS_CSI1_CLK_SRC] = &gcc_camss_csi1_clk_src.clkr,
3908 	[GCC_CAMSS_CSI1PHYTIMER_CLK] = &gcc_camss_csi1phytimer_clk.clkr,
3909 	[GCC_CAMSS_CSI1PHYTIMER_CLK_SRC] = &gcc_camss_csi1phytimer_clk_src.clkr,
3910 	[GCC_CAMSS_CSI1PIX_CLK] = &gcc_camss_csi1pix_clk.clkr,
3911 	[GCC_CAMSS_CSI1RDI_CLK] = &gcc_camss_csi1rdi_clk.clkr,
3912 	[GCC_CAMSS_CSI2_AHB_CLK] = &gcc_camss_csi2_ahb_clk.clkr,
3913 	[GCC_CAMSS_CSI2_CLK] = &gcc_camss_csi2_clk.clkr,
3914 	[GCC_CAMSS_CSI2_CLK_SRC] = &gcc_camss_csi2_clk_src.clkr,
3915 	[GCC_CAMSS_CSI2PHYTIMER_CLK] = &gcc_camss_csi2phytimer_clk.clkr,
3916 	[GCC_CAMSS_CSI2PHYTIMER_CLK_SRC] = &gcc_camss_csi2phytimer_clk_src.clkr,
3917 	[GCC_CAMSS_CSI2PIX_CLK] = &gcc_camss_csi2pix_clk.clkr,
3918 	[GCC_CAMSS_CSI2RDI_CLK] = &gcc_camss_csi2rdi_clk.clkr,
3919 	[GCC_CAMSS_CSI3_AHB_CLK] = &gcc_camss_csi3_ahb_clk.clkr,
3920 	[GCC_CAMSS_CSI3_CLK] = &gcc_camss_csi3_clk.clkr,
3921 	[GCC_CAMSS_CSI3_CLK_SRC] = &gcc_camss_csi3_clk_src.clkr,
3922 	[GCC_CAMSS_CSI3PIX_CLK] = &gcc_camss_csi3pix_clk.clkr,
3923 	[GCC_CAMSS_CSI3RDI_CLK] = &gcc_camss_csi3rdi_clk.clkr,
3924 	[GCC_CAMSS_CSI_VFE0_CLK] = &gcc_camss_csi_vfe0_clk.clkr,
3925 	[GCC_CAMSS_CSI_VFE1_CLK] = &gcc_camss_csi_vfe1_clk.clkr,
3926 	[GCC_CAMSS_CSIPHY0_CLK] = &gcc_camss_csiphy0_clk.clkr,
3927 	[GCC_CAMSS_CSIPHY1_CLK] = &gcc_camss_csiphy1_clk.clkr,
3928 	[GCC_CAMSS_CSIPHY2_CLK] = &gcc_camss_csiphy2_clk.clkr,
3929 	[GCC_CAMSS_CSIPHY_CLK_SRC] = &gcc_camss_csiphy_clk_src.clkr,
3930 	[GCC_CAMSS_GP0_CLK] = &gcc_camss_gp0_clk.clkr,
3931 	[GCC_CAMSS_GP0_CLK_SRC] = &gcc_camss_gp0_clk_src.clkr,
3932 	[GCC_CAMSS_GP1_CLK] = &gcc_camss_gp1_clk.clkr,
3933 	[GCC_CAMSS_GP1_CLK_SRC] = &gcc_camss_gp1_clk_src.clkr,
3934 	[GCC_CAMSS_ISPIF_AHB_CLK] = &gcc_camss_ispif_ahb_clk.clkr,
3935 	[GCC_CAMSS_JPEG_AHB_CLK] = &gcc_camss_jpeg_ahb_clk.clkr,
3936 	[GCC_CAMSS_JPEG_AXI_CLK] = &gcc_camss_jpeg_axi_clk.clkr,
3937 	[GCC_CAMSS_JPEG_CLK] = &gcc_camss_jpeg_clk.clkr,
3938 	[GCC_CAMSS_JPEG_CLK_SRC] = &gcc_camss_jpeg_clk_src.clkr,
3939 	[GCC_CAMSS_MCLK0_CLK] = &gcc_camss_mclk0_clk.clkr,
3940 	[GCC_CAMSS_MCLK0_CLK_SRC] = &gcc_camss_mclk0_clk_src.clkr,
3941 	[GCC_CAMSS_MCLK1_CLK] = &gcc_camss_mclk1_clk.clkr,
3942 	[GCC_CAMSS_MCLK1_CLK_SRC] = &gcc_camss_mclk1_clk_src.clkr,
3943 	[GCC_CAMSS_MCLK2_CLK] = &gcc_camss_mclk2_clk.clkr,
3944 	[GCC_CAMSS_MCLK2_CLK_SRC] = &gcc_camss_mclk2_clk_src.clkr,
3945 	[GCC_CAMSS_MCLK3_CLK] = &gcc_camss_mclk3_clk.clkr,
3946 	[GCC_CAMSS_MCLK3_CLK_SRC] = &gcc_camss_mclk3_clk_src.clkr,
3947 	[GCC_CAMSS_MICRO_AHB_CLK] = &gcc_camss_micro_ahb_clk.clkr,
3948 	[GCC_CAMSS_THROTTLE_NRT_AXI_CLK] = &gcc_camss_throttle_nrt_axi_clk.clkr,
3949 	[GCC_CAMSS_THROTTLE_RT_AXI_CLK] = &gcc_camss_throttle_rt_axi_clk.clkr,
3950 	[GCC_CAMSS_TOP_AHB_CLK] = &gcc_camss_top_ahb_clk.clkr,
3951 	[GCC_CAMSS_VFE0_AHB_CLK] = &gcc_camss_vfe0_ahb_clk.clkr,
3952 	[GCC_CAMSS_VFE0_CLK] = &gcc_camss_vfe0_clk.clkr,
3953 	[GCC_CAMSS_VFE0_CLK_SRC] = &gcc_camss_vfe0_clk_src.clkr,
3954 	[GCC_CAMSS_VFE0_STREAM_CLK] = &gcc_camss_vfe0_stream_clk.clkr,
3955 	[GCC_CAMSS_VFE1_AHB_CLK] = &gcc_camss_vfe1_ahb_clk.clkr,
3956 	[GCC_CAMSS_VFE1_CLK] = &gcc_camss_vfe1_clk.clkr,
3957 	[GCC_CAMSS_VFE1_CLK_SRC] = &gcc_camss_vfe1_clk_src.clkr,
3958 	[GCC_CAMSS_VFE1_STREAM_CLK] = &gcc_camss_vfe1_stream_clk.clkr,
3959 	[GCC_CAMSS_VFE_TSCTR_CLK] = &gcc_camss_vfe_tsctr_clk.clkr,
3960 	[GCC_CAMSS_VFE_VBIF_AHB_CLK] = &gcc_camss_vfe_vbif_ahb_clk.clkr,
3961 	[GCC_CAMSS_VFE_VBIF_AXI_CLK] = &gcc_camss_vfe_vbif_axi_clk.clkr,
3962 	[GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr,
3963 	[GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr,
3964 	[GCC_CE1_CLK] = &gcc_ce1_clk.clkr,
3965 	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
3966 	[GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr,
3967 	[GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr,
3968 	[GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr,
3969 	[GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
3970 	[GCC_DISP_THROTTLE_CORE_CLK] = &gcc_disp_throttle_core_clk.clkr,
3971 	[GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr,
3972 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3973 	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3974 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3975 	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3976 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3977 	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
3978 	[GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,
3979 	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
3980 	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
3981 	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
3982 	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
3983 	[GCC_GPU_THROTTLE_CORE_CLK] = &gcc_gpu_throttle_core_clk.clkr,
3984 	[GCC_GPU_THROTTLE_XO_CLK] = &gcc_gpu_throttle_xo_clk.clkr,
3985 	[GCC_MSS_VS_CLK] = &gcc_mss_vs_clk.clkr,
3986 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3987 	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
3988 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3989 	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
3990 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
3991 	[GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
3992 	[GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
3993 	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
3994 	[GCC_QMIP_GPU_CFG_AHB_CLK] = &gcc_qmip_gpu_cfg_ahb_clk.clkr,
3995 	[GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
3996 	[GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,
3997 	[GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,
3998 	[GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
3999 	[GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
4000 	[GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
4001 	[GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
4002 	[GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
4003 	[GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
4004 	[GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
4005 	[GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
4006 	[GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
4007 	[GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
4008 	[GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
4009 	[GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
4010 	[GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
4011 	[GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
4012 	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
4013 	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
4014 	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
4015 	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
4016 	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
4017 	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
4018 	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
4019 	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
4020 	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
4021 	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
4022 	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
4023 	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
4024 	[GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
4025 	[GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
4026 	[GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
4027 	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
4028 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
4029 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
4030 	[GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,
4031 	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
4032 	[GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr,
4033 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
4034 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
4035 	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
4036 	[GCC_SYS_NOC_COMPUTE_SF_AXI_CLK] = &gcc_sys_noc_compute_sf_axi_clk.clkr,
4037 	[GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,
4038 	[GCC_SYS_NOC_UFS_PHY_AXI_CLK] = &gcc_sys_noc_ufs_phy_axi_clk.clkr,
4039 	[GCC_SYS_NOC_USB3_PRIM_AXI_CLK] = &gcc_sys_noc_usb3_prim_axi_clk.clkr,
4040 	[GCC_UFS_MEM_CLKREF_CLK] = &gcc_ufs_mem_clkref_clk.clkr,
4041 	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
4042 	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
4043 	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
4044 	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
4045 	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
4046 	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
4047 	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
4048 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
4049 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
4050 	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
4051 	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] =
4052 		&gcc_ufs_phy_unipro_core_clk_src.clkr,
4053 	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
4054 	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
4055 	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
4056 	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] =
4057 		&gcc_usb30_prim_mock_utmi_clk_src.clkr,
4058 	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
4059 	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
4060 	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
4061 	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
4062 	[GCC_VDDA_VS_CLK] = &gcc_vdda_vs_clk.clkr,
4063 	[GCC_VDDCX_VS_CLK] = &gcc_vddcx_vs_clk.clkr,
4064 	[GCC_VDDMX_VS_CLK] = &gcc_vddmx_vs_clk.clkr,
4065 	[GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr,
4066 	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
4067 	[GCC_VIDEO_THROTTLE_CORE_CLK] = &gcc_video_throttle_core_clk.clkr,
4068 	[GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr,
4069 	[GCC_VS_CTRL_AHB_CLK] = &gcc_vs_ctrl_ahb_clk.clkr,
4070 	[GCC_VS_CTRL_CLK] = &gcc_vs_ctrl_clk.clkr,
4071 	[GCC_VS_CTRL_CLK_SRC] = &gcc_vs_ctrl_clk_src.clkr,
4072 	[GCC_VSENSOR_CLK_SRC] = &gcc_vsensor_clk_src.clkr,
4073 	[GCC_WCSS_VS_CLK] = &gcc_wcss_vs_clk.clkr,
4074 	[GPLL0_OUT_EARLY] = &gpll0_out_early.clkr,
4075 	[GPLL3_OUT_EARLY] = &gpll3_out_early.clkr,
4076 	[GPLL4_OUT_MAIN] = &gpll4_out_main.clkr,
4077 	[GPLL5_OUT_MAIN] = &gpll5_out_main.clkr,
4078 	[GPLL6_OUT_EARLY] = &gpll6_out_early.clkr,
4079 	[GPLL7_OUT_EARLY] = &gpll7_out_early.clkr,
4080 	[GPLL8_OUT_EARLY] = &gpll8_out_early.clkr,
4081 	[GPLL9_OUT_EARLY] = &gpll9_out_early.clkr,
4082 	[GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,
4083 };
4084 
4085 static const struct qcom_reset_map gcc_sm6125_resets[] = {
4086 	[GCC_QUSB2PHY_PRIM_BCR] = { 0x1c000 },
4087 	[GCC_QUSB2PHY_SEC_BCR] = { 0x1c004 },
4088 	[GCC_UFS_PHY_BCR] = { 0x45000 },
4089 	[GCC_USB30_PRIM_BCR] = { 0x1a000 },
4090 	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x1d000 },
4091 	[GCC_USB3PHY_PHY_PRIM_SP0_BCR] = { 0x1b008 },
4092 	[GCC_USB3_PHY_PRIM_SP0_BCR] = { 0x1b000 },
4093 	[GCC_CAMSS_MICRO_BCR] = { 0x560ac },
4094 };
4095 
4096 static struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
4097 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
4098 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
4099 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
4100 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
4101 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
4102 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
4103 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
4104 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
4105 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
4106 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
4107 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
4108 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
4109 };
4110 
4111 static const struct regmap_config gcc_sm6125_regmap_config = {
4112 	.reg_bits = 32,
4113 	.reg_stride = 4,
4114 	.val_bits = 32,
4115 	.max_register = 0xc7000,
4116 	.fast_io = true,
4117 };
4118 
4119 static const struct qcom_cc_desc gcc_sm6125_desc = {
4120 	.config = &gcc_sm6125_regmap_config,
4121 	.clks = gcc_sm6125_clocks,
4122 	.num_clks = ARRAY_SIZE(gcc_sm6125_clocks),
4123 	.clk_hws = gcc_sm6125_hws,
4124 	.num_clk_hws = ARRAY_SIZE(gcc_sm6125_hws),
4125 	.resets = gcc_sm6125_resets,
4126 	.num_resets = ARRAY_SIZE(gcc_sm6125_resets),
4127 	.gdscs = gcc_sm6125_gdscs,
4128 	.num_gdscs = ARRAY_SIZE(gcc_sm6125_gdscs),
4129 };
4130 
4131 static const struct of_device_id gcc_sm6125_match_table[] = {
4132 	{ .compatible = "qcom,gcc-sm6125" },
4133 	{ }
4134 };
4135 MODULE_DEVICE_TABLE(of, gcc_sm6125_match_table);
4136 
4137 static int gcc_sm6125_probe(struct platform_device *pdev)
4138 {
4139 	struct regmap *regmap;
4140 	int ret;
4141 
4142 	regmap = qcom_cc_map(pdev, &gcc_sm6125_desc);
4143 	if (IS_ERR(regmap))
4144 		return PTR_ERR(regmap);
4145 
4146 	/*
4147 	 * Disable the GPLL0 active input to video block via
4148 	 * MISC registers.
4149 	 */
4150 	regmap_update_bits(regmap, 0x80258, 0x1, 0x1);
4151 
4152 	/*
4153 	 * Enable DUAL_EDGE mode for MCLK RCGs
4154 	 * This is requierd to enable MND divider mode
4155 	 */
4156 	regmap_update_bits(regmap, 0x51004, 0x3000, 0x2000);
4157 	regmap_update_bits(regmap, 0x51020, 0x3000, 0x2000);
4158 	regmap_update_bits(regmap, 0x5103c, 0x3000, 0x2000);
4159 	regmap_update_bits(regmap, 0x51058, 0x3000, 0x2000);
4160 
4161 	ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,
4162 						ARRAY_SIZE(gcc_dfs_clocks));
4163 	if (ret)
4164 		return ret;
4165 
4166 	return qcom_cc_really_probe(pdev, &gcc_sm6125_desc, regmap);
4167 }
4168 
4169 static struct platform_driver gcc_sm6125_driver = {
4170 	.probe = gcc_sm6125_probe,
4171 	.driver = {
4172 		.name = "gcc-sm6125",
4173 		.of_match_table = gcc_sm6125_match_table,
4174 	},
4175 };
4176 
4177 static int __init gcc_sm6125_init(void)
4178 {
4179 	return platform_driver_register(&gcc_sm6125_driver);
4180 }
4181 subsys_initcall(gcc_sm6125_init);
4182 
4183 static void __exit gcc_sm6125_exit(void)
4184 {
4185 	platform_driver_unregister(&gcc_sm6125_driver);
4186 }
4187 module_exit(gcc_sm6125_exit);
4188 
4189 MODULE_DESCRIPTION("QTI GCC SM6125 Driver");
4190 MODULE_LICENSE("GPL v2");
4191