xref: /linux/drivers/clk/qcom/gcc-sm6125.c (revision a266ef69b890f099069cf51bb40572611c435a54)
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 	{ }
1157 };
1158 
1159 static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
1160 	.cmd_rcgr = 0x1e00c,
1161 	.mnd_width = 8,
1162 	.hid_width = 5,
1163 	.parent_map = gcc_parent_map_13,
1164 	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
1165 	.clkr.hw.init = &(struct clk_init_data){
1166 		.name = "gcc_sdcc2_apps_clk_src",
1167 		.parent_data = gcc_parent_data_13,
1168 		.num_parents = ARRAY_SIZE(gcc_parent_data_13),
1169 		.ops = &clk_rcg2_floor_ops,
1170 	},
1171 };
1172 
1173 static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
1174 	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),
1175 	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),
1176 	F(100000000, P_GPLL0_OUT_EARLY, 6, 0, 0),
1177 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
1178 	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),
1179 	{ }
1180 };
1181 
1182 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
1183 	.cmd_rcgr = 0x45020,
1184 	.mnd_width = 8,
1185 	.hid_width = 5,
1186 	.parent_map = gcc_parent_map_0,
1187 	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
1188 	.clkr.hw.init = &(struct clk_init_data){
1189 		.name = "gcc_ufs_phy_axi_clk_src",
1190 		.parent_data = gcc_parent_data_0,
1191 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1192 		.ops = &clk_rcg2_ops,
1193 	},
1194 };
1195 
1196 static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {
1197 	F(37500000, P_GPLL0_OUT_AUX2, 8, 0, 0),
1198 	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),
1199 	F(150000000, P_GPLL0_OUT_EARLY, 4, 0, 0),
1200 	F(300000000, P_GPLL0_OUT_EARLY, 2, 0, 0),
1201 	{ }
1202 };
1203 
1204 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
1205 	.cmd_rcgr = 0x45048,
1206 	.mnd_width = 0,
1207 	.hid_width = 5,
1208 	.parent_map = gcc_parent_map_0,
1209 	.freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,
1210 	.clkr.hw.init = &(struct clk_init_data){
1211 		.name = "gcc_ufs_phy_ice_core_clk_src",
1212 		.parent_data = gcc_parent_data_0,
1213 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1214 		.ops = &clk_rcg2_ops,
1215 	},
1216 };
1217 
1218 static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = {
1219 	F(9600000, P_BI_TCXO, 2, 0, 0),
1220 	F(19200000, P_BI_TCXO, 1, 0, 0),
1221 	{ }
1222 };
1223 
1224 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
1225 	.cmd_rcgr = 0x4507c,
1226 	.mnd_width = 0,
1227 	.hid_width = 5,
1228 	.parent_map = gcc_parent_map_0,
1229 	.freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src,
1230 	.clkr.hw.init = &(struct clk_init_data){
1231 		.name = "gcc_ufs_phy_phy_aux_clk_src",
1232 		.parent_data = gcc_parent_data_0,
1233 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1234 		.ops = &clk_rcg2_ops,
1235 	},
1236 };
1237 
1238 static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src[] = {
1239 	F(37500000, P_GPLL0_OUT_AUX2, 8, 0, 0),
1240 	F(75000000, P_GPLL0_OUT_EARLY, 8, 0, 0),
1241 	F(150000000, P_GPLL0_OUT_EARLY, 4, 0, 0),
1242 	{ }
1243 };
1244 
1245 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
1246 	.cmd_rcgr = 0x45060,
1247 	.mnd_width = 0,
1248 	.hid_width = 5,
1249 	.parent_map = gcc_parent_map_0,
1250 	.freq_tbl = ftbl_gcc_ufs_phy_unipro_core_clk_src,
1251 	.clkr.hw.init = &(struct clk_init_data){
1252 		.name = "gcc_ufs_phy_unipro_core_clk_src",
1253 		.parent_data = gcc_parent_data_0,
1254 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1255 		.ops = &clk_rcg2_ops,
1256 	},
1257 };
1258 
1259 static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
1260 	F(66666667, P_GPLL0_OUT_AUX2, 4.5, 0, 0),
1261 	F(133333333, P_GPLL0_OUT_EARLY, 4.5, 0, 0),
1262 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
1263 	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),
1264 	{ }
1265 };
1266 
1267 static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
1268 	.cmd_rcgr = 0x1a01c,
1269 	.mnd_width = 8,
1270 	.hid_width = 5,
1271 	.parent_map = gcc_parent_map_0,
1272 	.freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
1273 	.clkr.hw.init = &(struct clk_init_data){
1274 		.name = "gcc_usb30_prim_master_clk_src",
1275 		.parent_data = gcc_parent_data_0,
1276 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1277 		.ops = &clk_rcg2_ops,
1278 	},
1279 };
1280 
1281 static const struct freq_tbl ftbl_gcc_usb30_prim_mock_utmi_clk_src[] = {
1282 	F(19200000, P_BI_TCXO, 1, 0, 0),
1283 	F(20000000, P_GPLL0_OUT_AUX2, 15, 0, 0),
1284 	F(40000000, P_GPLL0_OUT_AUX2, 7.5, 0, 0),
1285 	F(60000000, P_GPLL0_OUT_EARLY, 10, 0, 0),
1286 	{ }
1287 };
1288 
1289 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
1290 	.cmd_rcgr = 0x1a034,
1291 	.mnd_width = 0,
1292 	.hid_width = 5,
1293 	.parent_map = gcc_parent_map_0,
1294 	.freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,
1295 	.clkr.hw.init = &(struct clk_init_data){
1296 		.name = "gcc_usb30_prim_mock_utmi_clk_src",
1297 		.parent_data = gcc_parent_data_0,
1298 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1299 		.ops = &clk_rcg2_ops,
1300 	},
1301 };
1302 
1303 static const struct freq_tbl ftbl_gcc_usb3_prim_phy_aux_clk_src[] = {
1304 	F(19200000, P_BI_TCXO, 1, 0, 0),
1305 	{ }
1306 };
1307 
1308 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
1309 	.cmd_rcgr = 0x1a060,
1310 	.mnd_width = 0,
1311 	.hid_width = 5,
1312 	.parent_map = gcc_parent_map_14,
1313 	.freq_tbl = ftbl_gcc_usb3_prim_phy_aux_clk_src,
1314 	.clkr.hw.init = &(struct clk_init_data){
1315 		.name = "gcc_usb3_prim_phy_aux_clk_src",
1316 		.parent_data = gcc_parent_data_14,
1317 		.num_parents = ARRAY_SIZE(gcc_parent_data_14),
1318 		.ops = &clk_rcg2_ops,
1319 	},
1320 };
1321 
1322 static struct clk_rcg2 gcc_vs_ctrl_clk_src = {
1323 	.cmd_rcgr = 0x42030,
1324 	.mnd_width = 0,
1325 	.hid_width = 5,
1326 	.parent_map = gcc_parent_map_5,
1327 	.freq_tbl = ftbl_gcc_usb3_prim_phy_aux_clk_src,
1328 	.clkr.hw.init = &(struct clk_init_data){
1329 		.name = "gcc_vs_ctrl_clk_src",
1330 		.parent_data = gcc_parent_data_5,
1331 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
1332 		.ops = &clk_rcg2_ops,
1333 	},
1334 };
1335 
1336 static const struct freq_tbl ftbl_gcc_vsensor_clk_src[] = {
1337 	F(19200000, P_BI_TCXO, 1, 0, 0),
1338 	F(400000000, P_GPLL0_OUT_EARLY, 1.5, 0, 0),
1339 	F(600000000, P_GPLL0_OUT_EARLY, 1, 0, 0),
1340 	{ }
1341 };
1342 
1343 static struct clk_rcg2 gcc_vsensor_clk_src = {
1344 	.cmd_rcgr = 0x42018,
1345 	.mnd_width = 0,
1346 	.hid_width = 5,
1347 	.parent_map = gcc_parent_map_5,
1348 	.freq_tbl = ftbl_gcc_vsensor_clk_src,
1349 	.clkr.hw.init = &(struct clk_init_data){
1350 		.name = "gcc_vsensor_clk_src",
1351 		.parent_data = gcc_parent_data_5,
1352 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
1353 		.ops = &clk_rcg2_ops,
1354 	},
1355 };
1356 
1357 static struct clk_branch gcc_ahb2phy_csi_clk = {
1358 	.halt_reg = 0x1d004,
1359 	.halt_check = BRANCH_HALT,
1360 	.hwcg_reg = 0x1d004,
1361 	.hwcg_bit = 1,
1362 	.clkr = {
1363 		.enable_reg = 0x1d004,
1364 		.enable_mask = BIT(0),
1365 		.hw.init = &(struct clk_init_data){
1366 			.name = "gcc_ahb2phy_csi_clk",
1367 			.ops = &clk_branch2_ops,
1368 		},
1369 	},
1370 };
1371 
1372 static struct clk_branch gcc_ahb2phy_usb_clk = {
1373 	.halt_reg = 0x1d008,
1374 	.halt_check = BRANCH_HALT,
1375 	.hwcg_reg = 0x1d008,
1376 	.hwcg_bit = 1,
1377 	.clkr = {
1378 		.enable_reg = 0x1d008,
1379 		.enable_mask = BIT(0),
1380 		.hw.init = &(struct clk_init_data){
1381 			.name = "gcc_ahb2phy_usb_clk",
1382 			.ops = &clk_branch2_ops,
1383 		},
1384 	},
1385 };
1386 
1387 static struct clk_branch gcc_apc_vs_clk = {
1388 	.halt_reg = 0x4204c,
1389 	.halt_check = BRANCH_HALT,
1390 	.clkr = {
1391 		.enable_reg = 0x4204c,
1392 		.enable_mask = BIT(0),
1393 		.hw.init = &(struct clk_init_data){
1394 			.name = "gcc_apc_vs_clk",
1395 			.parent_hws = (const struct clk_hw*[]){
1396 				&gcc_vsensor_clk_src.clkr.hw,
1397 			},
1398 			.num_parents = 1,
1399 			.flags = CLK_SET_RATE_PARENT,
1400 			.ops = &clk_branch2_ops,
1401 		},
1402 	},
1403 };
1404 
1405 static struct clk_branch gcc_bimc_gpu_axi_clk = {
1406 	.halt_reg = 0x71154,
1407 	.halt_check = BRANCH_HALT_DELAY,
1408 	.clkr = {
1409 		.enable_reg = 0x71154,
1410 		.enable_mask = BIT(0),
1411 		.hw.init = &(struct clk_init_data){
1412 			.name = "gcc_bimc_gpu_axi_clk",
1413 			.ops = &clk_branch2_ops,
1414 		},
1415 	},
1416 };
1417 
1418 static struct clk_branch gcc_boot_rom_ahb_clk = {
1419 	.halt_reg = 0x23004,
1420 	.halt_check = BRANCH_HALT_VOTED,
1421 	.hwcg_reg = 0x23004,
1422 	.hwcg_bit = 1,
1423 	.clkr = {
1424 		.enable_reg = 0x79004,
1425 		.enable_mask = BIT(10),
1426 		.hw.init = &(struct clk_init_data){
1427 			.name = "gcc_boot_rom_ahb_clk",
1428 			.ops = &clk_branch2_ops,
1429 		},
1430 	},
1431 };
1432 
1433 static struct clk_branch gcc_camera_ahb_clk = {
1434 	.halt_reg = 0x17008,
1435 	.halt_check = BRANCH_HALT_DELAY,
1436 	.hwcg_reg = 0x17008,
1437 	.hwcg_bit = 1,
1438 	.clkr = {
1439 		.enable_reg = 0x17008,
1440 		.enable_mask = BIT(0),
1441 		.hw.init = &(struct clk_init_data){
1442 			.name = "gcc_camera_ahb_clk",
1443 			.flags = CLK_IS_CRITICAL,
1444 			.ops = &clk_branch2_ops,
1445 		},
1446 	},
1447 };
1448 
1449 static struct clk_branch gcc_camera_xo_clk = {
1450 	.halt_reg = 0x17028,
1451 	.halt_check = BRANCH_HALT,
1452 	.clkr = {
1453 		.enable_reg = 0x17028,
1454 		.enable_mask = BIT(0),
1455 		.hw.init = &(struct clk_init_data){
1456 			.name = "gcc_camera_xo_clk",
1457 			.flags = CLK_IS_CRITICAL,
1458 			.ops = &clk_branch2_ops,
1459 		},
1460 	},
1461 };
1462 
1463 static struct clk_branch gcc_camss_cci_ahb_clk = {
1464 	.halt_reg = 0x52020,
1465 	.halt_check = BRANCH_HALT,
1466 	.clkr = {
1467 		.enable_reg = 0x52020,
1468 		.enable_mask = BIT(0),
1469 		.hw.init = &(struct clk_init_data){
1470 			.name = "gcc_camss_cci_ahb_clk",
1471 			.parent_hws = (const struct clk_hw*[]){
1472 				&gcc_camss_ahb_clk_src.clkr.hw,
1473 			},
1474 			.num_parents = 1,
1475 			.flags = CLK_SET_RATE_PARENT,
1476 			.ops = &clk_branch2_ops,
1477 		},
1478 	},
1479 };
1480 
1481 static struct clk_branch gcc_camss_cci_clk = {
1482 	.halt_reg = 0x5201c,
1483 	.halt_check = BRANCH_HALT,
1484 	.clkr = {
1485 		.enable_reg = 0x5201c,
1486 		.enable_mask = BIT(0),
1487 		.hw.init = &(struct clk_init_data){
1488 			.name = "gcc_camss_cci_clk",
1489 			.parent_hws = (const struct clk_hw*[]){
1490 				&gcc_camss_cci_clk_src.clkr.hw,
1491 			},
1492 			.num_parents = 1,
1493 			.flags = CLK_SET_RATE_PARENT,
1494 			.ops = &clk_branch2_ops,
1495 		},
1496 	},
1497 };
1498 
1499 static struct clk_branch gcc_camss_cphy_csid0_clk = {
1500 	.halt_reg = 0x5504c,
1501 	.halt_check = BRANCH_HALT,
1502 	.clkr = {
1503 		.enable_reg = 0x5504c,
1504 		.enable_mask = BIT(0),
1505 		.hw.init = &(struct clk_init_data){
1506 			.name = "gcc_camss_cphy_csid0_clk",
1507 			.parent_hws = (const struct clk_hw*[]){
1508 				&gcc_camss_csiphy_clk_src.clkr.hw,
1509 			},
1510 			.num_parents = 1,
1511 			.flags = CLK_SET_RATE_PARENT,
1512 			.ops = &clk_branch2_ops,
1513 		},
1514 	},
1515 };
1516 
1517 static struct clk_branch gcc_camss_cphy_csid1_clk = {
1518 	.halt_reg = 0x55088,
1519 	.halt_check = BRANCH_HALT,
1520 	.clkr = {
1521 		.enable_reg = 0x55088,
1522 		.enable_mask = BIT(0),
1523 		.hw.init = &(struct clk_init_data){
1524 			.name = "gcc_camss_cphy_csid1_clk",
1525 			.parent_hws = (const struct clk_hw*[]){
1526 				&gcc_camss_csiphy_clk_src.clkr.hw,
1527 			},
1528 			.num_parents = 1,
1529 			.flags = CLK_SET_RATE_PARENT,
1530 			.ops = &clk_branch2_ops,
1531 		},
1532 	},
1533 };
1534 
1535 static struct clk_branch gcc_camss_cphy_csid2_clk = {
1536 	.halt_reg = 0x550c0,
1537 	.halt_check = BRANCH_HALT,
1538 	.clkr = {
1539 		.enable_reg = 0x550c0,
1540 		.enable_mask = BIT(0),
1541 		.hw.init = &(struct clk_init_data){
1542 			.name = "gcc_camss_cphy_csid2_clk",
1543 			.parent_hws = (const struct clk_hw*[]){
1544 				&gcc_camss_csiphy_clk_src.clkr.hw,
1545 			},
1546 			.num_parents = 1,
1547 			.flags = CLK_SET_RATE_PARENT,
1548 			.ops = &clk_branch2_ops,
1549 		},
1550 	},
1551 };
1552 
1553 static struct clk_branch gcc_camss_cphy_csid3_clk = {
1554 	.halt_reg = 0x550fc,
1555 	.halt_check = BRANCH_HALT,
1556 	.clkr = {
1557 		.enable_reg = 0x550fc,
1558 		.enable_mask = BIT(0),
1559 		.hw.init = &(struct clk_init_data){
1560 			.name = "gcc_camss_cphy_csid3_clk",
1561 			.parent_hws = (const struct clk_hw*[]){
1562 				&gcc_camss_csiphy_clk_src.clkr.hw,
1563 			},
1564 			.num_parents = 1,
1565 			.flags = CLK_SET_RATE_PARENT,
1566 			.ops = &clk_branch2_ops,
1567 		},
1568 	},
1569 };
1570 
1571 static struct clk_branch gcc_camss_cpp_ahb_clk = {
1572 	.halt_reg = 0x560e8,
1573 	.halt_check = BRANCH_HALT,
1574 	.clkr = {
1575 		.enable_reg = 0x560e8,
1576 		.enable_mask = BIT(0),
1577 		.hw.init = &(struct clk_init_data){
1578 			.name = "gcc_camss_cpp_ahb_clk",
1579 			.parent_hws = (const struct clk_hw*[]){
1580 				&gcc_camss_ahb_clk_src.clkr.hw,
1581 			},
1582 			.num_parents = 1,
1583 			.flags = CLK_SET_RATE_PARENT,
1584 			.ops = &clk_branch2_ops,
1585 		},
1586 	},
1587 };
1588 
1589 static struct clk_branch gcc_camss_cpp_axi_clk = {
1590 	.halt_reg = 0x560f4,
1591 	.halt_check = BRANCH_HALT,
1592 	.clkr = {
1593 		.enable_reg = 0x560f4,
1594 		.enable_mask = BIT(0),
1595 		.hw.init = &(struct clk_init_data){
1596 			.name = "gcc_camss_cpp_axi_clk",
1597 			.ops = &clk_branch2_ops,
1598 		},
1599 	},
1600 };
1601 
1602 static struct clk_branch gcc_camss_cpp_clk = {
1603 	.halt_reg = 0x560e0,
1604 	.halt_check = BRANCH_HALT,
1605 	.clkr = {
1606 		.enable_reg = 0x560e0,
1607 		.enable_mask = BIT(0),
1608 		.hw.init = &(struct clk_init_data){
1609 			.name = "gcc_camss_cpp_clk",
1610 			.parent_hws = (const struct clk_hw*[]){
1611 				&gcc_camss_cpp_clk_src.clkr.hw,
1612 			},
1613 			.num_parents = 1,
1614 			.flags = CLK_SET_RATE_PARENT,
1615 			.ops = &clk_branch2_ops,
1616 		},
1617 	},
1618 };
1619 
1620 static struct clk_branch gcc_camss_cpp_vbif_ahb_clk = {
1621 	.halt_reg = 0x560f0,
1622 	.halt_check = BRANCH_HALT,
1623 	.clkr = {
1624 		.enable_reg = 0x560f0,
1625 		.enable_mask = BIT(0),
1626 		.hw.init = &(struct clk_init_data){
1627 			.name = "gcc_camss_cpp_vbif_ahb_clk",
1628 			.parent_hws = (const struct clk_hw*[]){
1629 				&gcc_camss_ahb_clk_src.clkr.hw,
1630 			},
1631 			.num_parents = 1,
1632 			.flags = CLK_SET_RATE_PARENT,
1633 			.ops = &clk_branch2_ops,
1634 		},
1635 	},
1636 };
1637 
1638 static struct clk_branch gcc_camss_csi0_ahb_clk = {
1639 	.halt_reg = 0x55050,
1640 	.halt_check = BRANCH_HALT,
1641 	.clkr = {
1642 		.enable_reg = 0x55050,
1643 		.enable_mask = BIT(0),
1644 		.hw.init = &(struct clk_init_data){
1645 			.name = "gcc_camss_csi0_ahb_clk",
1646 			.parent_hws = (const struct clk_hw*[]){
1647 				&gcc_camss_ahb_clk_src.clkr.hw,
1648 			},
1649 			.num_parents = 1,
1650 			.flags = CLK_SET_RATE_PARENT,
1651 			.ops = &clk_branch2_ops,
1652 		},
1653 	},
1654 };
1655 
1656 static struct clk_branch gcc_camss_csi0_clk = {
1657 	.halt_reg = 0x55048,
1658 	.halt_check = BRANCH_HALT,
1659 	.clkr = {
1660 		.enable_reg = 0x55048,
1661 		.enable_mask = BIT(0),
1662 		.hw.init = &(struct clk_init_data){
1663 			.name = "gcc_camss_csi0_clk",
1664 			.parent_hws = (const struct clk_hw*[]){
1665 				&gcc_camss_csi0_clk_src.clkr.hw,
1666 			},
1667 			.num_parents = 1,
1668 			.flags = CLK_SET_RATE_PARENT,
1669 			.ops = &clk_branch2_ops,
1670 		},
1671 	},
1672 };
1673 
1674 static struct clk_branch gcc_camss_csi0phytimer_clk = {
1675 	.halt_reg = 0x5301c,
1676 	.halt_check = BRANCH_HALT,
1677 	.clkr = {
1678 		.enable_reg = 0x5301c,
1679 		.enable_mask = BIT(0),
1680 		.hw.init = &(struct clk_init_data){
1681 			.name = "gcc_camss_csi0phytimer_clk",
1682 			.parent_hws = (const struct clk_hw*[]){
1683 				&gcc_camss_csi0phytimer_clk_src.clkr.hw,
1684 			},
1685 			.num_parents = 1,
1686 			.flags = CLK_SET_RATE_PARENT,
1687 			.ops = &clk_branch2_ops,
1688 		},
1689 	},
1690 };
1691 
1692 static struct clk_branch gcc_camss_csi0pix_clk = {
1693 	.halt_reg = 0x55060,
1694 	.halt_check = BRANCH_HALT,
1695 	.clkr = {
1696 		.enable_reg = 0x55060,
1697 		.enable_mask = BIT(0),
1698 		.hw.init = &(struct clk_init_data){
1699 			.name = "gcc_camss_csi0pix_clk",
1700 			.parent_hws = (const struct clk_hw*[]){
1701 				&gcc_camss_csi0_clk_src.clkr.hw,
1702 			},
1703 			.num_parents = 1,
1704 			.flags = CLK_SET_RATE_PARENT,
1705 			.ops = &clk_branch2_ops,
1706 		},
1707 	},
1708 };
1709 
1710 static struct clk_branch gcc_camss_csi0rdi_clk = {
1711 	.halt_reg = 0x55058,
1712 	.halt_check = BRANCH_HALT,
1713 	.clkr = {
1714 		.enable_reg = 0x55058,
1715 		.enable_mask = BIT(0),
1716 		.hw.init = &(struct clk_init_data){
1717 			.name = "gcc_camss_csi0rdi_clk",
1718 			.parent_hws = (const struct clk_hw*[]){
1719 				&gcc_camss_csi0_clk_src.clkr.hw,
1720 			},
1721 			.num_parents = 1,
1722 			.flags = CLK_SET_RATE_PARENT,
1723 			.ops = &clk_branch2_ops,
1724 		},
1725 	},
1726 };
1727 
1728 static struct clk_branch gcc_camss_csi1_ahb_clk = {
1729 	.halt_reg = 0x5508c,
1730 	.halt_check = BRANCH_HALT,
1731 	.clkr = {
1732 		.enable_reg = 0x5508c,
1733 		.enable_mask = BIT(0),
1734 		.hw.init = &(struct clk_init_data){
1735 			.name = "gcc_camss_csi1_ahb_clk",
1736 			.parent_hws = (const struct clk_hw*[]){
1737 				&gcc_camss_ahb_clk_src.clkr.hw,
1738 			},
1739 			.num_parents = 1,
1740 			.flags = CLK_SET_RATE_PARENT,
1741 			.ops = &clk_branch2_ops,
1742 		},
1743 	},
1744 };
1745 
1746 static struct clk_branch gcc_camss_csi1_clk = {
1747 	.halt_reg = 0x55084,
1748 	.halt_check = BRANCH_HALT,
1749 	.clkr = {
1750 		.enable_reg = 0x55084,
1751 		.enable_mask = BIT(0),
1752 		.hw.init = &(struct clk_init_data){
1753 			.name = "gcc_camss_csi1_clk",
1754 			.parent_hws = (const struct clk_hw*[]){
1755 				&gcc_camss_csi1_clk_src.clkr.hw,
1756 			},
1757 			.num_parents = 1,
1758 			.flags = CLK_SET_RATE_PARENT,
1759 			.ops = &clk_branch2_ops,
1760 		},
1761 	},
1762 };
1763 
1764 static struct clk_branch gcc_camss_csi1phytimer_clk = {
1765 	.halt_reg = 0x5303c,
1766 	.halt_check = BRANCH_HALT,
1767 	.clkr = {
1768 		.enable_reg = 0x5303c,
1769 		.enable_mask = BIT(0),
1770 		.hw.init = &(struct clk_init_data){
1771 			.name = "gcc_camss_csi1phytimer_clk",
1772 			.parent_hws = (const struct clk_hw*[]){
1773 				&gcc_camss_csi1phytimer_clk_src.clkr.hw,
1774 			},
1775 			.num_parents = 1,
1776 			.flags = CLK_SET_RATE_PARENT,
1777 			.ops = &clk_branch2_ops,
1778 		},
1779 	},
1780 };
1781 
1782 static struct clk_branch gcc_camss_csi1pix_clk = {
1783 	.halt_reg = 0x5509c,
1784 	.halt_check = BRANCH_HALT,
1785 	.clkr = {
1786 		.enable_reg = 0x5509c,
1787 		.enable_mask = BIT(0),
1788 		.hw.init = &(struct clk_init_data){
1789 			.name = "gcc_camss_csi1pix_clk",
1790 			.parent_hws = (const struct clk_hw*[]){
1791 				&gcc_camss_csi1_clk_src.clkr.hw,
1792 			},
1793 			.num_parents = 1,
1794 			.flags = CLK_SET_RATE_PARENT,
1795 			.ops = &clk_branch2_ops,
1796 		},
1797 	},
1798 };
1799 
1800 static struct clk_branch gcc_camss_csi1rdi_clk = {
1801 	.halt_reg = 0x55094,
1802 	.halt_check = BRANCH_HALT,
1803 	.clkr = {
1804 		.enable_reg = 0x55094,
1805 		.enable_mask = BIT(0),
1806 		.hw.init = &(struct clk_init_data){
1807 			.name = "gcc_camss_csi1rdi_clk",
1808 			.parent_hws = (const struct clk_hw*[]){
1809 				&gcc_camss_csi1_clk_src.clkr.hw,
1810 			},
1811 			.num_parents = 1,
1812 			.flags = CLK_SET_RATE_PARENT,
1813 			.ops = &clk_branch2_ops,
1814 		},
1815 	},
1816 };
1817 
1818 static struct clk_branch gcc_camss_csi2_ahb_clk = {
1819 	.halt_reg = 0x550c4,
1820 	.halt_check = BRANCH_HALT,
1821 	.clkr = {
1822 		.enable_reg = 0x550c4,
1823 		.enable_mask = BIT(0),
1824 		.hw.init = &(struct clk_init_data){
1825 			.name = "gcc_camss_csi2_ahb_clk",
1826 			.parent_hws = (const struct clk_hw*[]){
1827 				&gcc_camss_ahb_clk_src.clkr.hw,
1828 			},
1829 			.num_parents = 1,
1830 			.flags = CLK_SET_RATE_PARENT,
1831 			.ops = &clk_branch2_ops,
1832 		},
1833 	},
1834 };
1835 
1836 static struct clk_branch gcc_camss_csi2_clk = {
1837 	.halt_reg = 0x550bc,
1838 	.halt_check = BRANCH_HALT,
1839 	.clkr = {
1840 		.enable_reg = 0x550bc,
1841 		.enable_mask = BIT(0),
1842 		.hw.init = &(struct clk_init_data){
1843 			.name = "gcc_camss_csi2_clk",
1844 			.parent_hws = (const struct clk_hw*[]){
1845 				&gcc_camss_csi2_clk_src.clkr.hw,
1846 			},
1847 			.num_parents = 1,
1848 			.flags = CLK_SET_RATE_PARENT,
1849 			.ops = &clk_branch2_ops,
1850 		},
1851 	},
1852 };
1853 
1854 static struct clk_branch gcc_camss_csi2phytimer_clk = {
1855 	.halt_reg = 0x5305c,
1856 	.halt_check = BRANCH_HALT,
1857 	.clkr = {
1858 		.enable_reg = 0x5305c,
1859 		.enable_mask = BIT(0),
1860 		.hw.init = &(struct clk_init_data){
1861 			.name = "gcc_camss_csi2phytimer_clk",
1862 			.parent_hws = (const struct clk_hw*[]){
1863 				&gcc_camss_csi2phytimer_clk_src.clkr.hw,
1864 			},
1865 			.num_parents = 1,
1866 			.flags = CLK_SET_RATE_PARENT,
1867 			.ops = &clk_branch2_ops,
1868 		},
1869 	},
1870 };
1871 
1872 static struct clk_branch gcc_camss_csi2pix_clk = {
1873 	.halt_reg = 0x550d4,
1874 	.halt_check = BRANCH_HALT,
1875 	.clkr = {
1876 		.enable_reg = 0x550d4,
1877 		.enable_mask = BIT(0),
1878 		.hw.init = &(struct clk_init_data){
1879 			.name = "gcc_camss_csi2pix_clk",
1880 			.parent_hws = (const struct clk_hw*[]){
1881 				&gcc_camss_csi2_clk_src.clkr.hw,
1882 			},
1883 			.num_parents = 1,
1884 			.flags = CLK_SET_RATE_PARENT,
1885 			.ops = &clk_branch2_ops,
1886 		},
1887 	},
1888 };
1889 
1890 static struct clk_branch gcc_camss_csi2rdi_clk = {
1891 	.halt_reg = 0x550cc,
1892 	.halt_check = BRANCH_HALT,
1893 	.clkr = {
1894 		.enable_reg = 0x550cc,
1895 		.enable_mask = BIT(0),
1896 		.hw.init = &(struct clk_init_data){
1897 			.name = "gcc_camss_csi2rdi_clk",
1898 			.parent_hws = (const struct clk_hw*[]){
1899 				&gcc_camss_csi2_clk_src.clkr.hw,
1900 			},
1901 			.num_parents = 1,
1902 			.flags = CLK_SET_RATE_PARENT,
1903 			.ops = &clk_branch2_ops,
1904 		},
1905 	},
1906 };
1907 
1908 static struct clk_branch gcc_camss_csi3_ahb_clk = {
1909 	.halt_reg = 0x55100,
1910 	.halt_check = BRANCH_HALT,
1911 	.clkr = {
1912 		.enable_reg = 0x55100,
1913 		.enable_mask = BIT(0),
1914 		.hw.init = &(struct clk_init_data){
1915 			.name = "gcc_camss_csi3_ahb_clk",
1916 			.parent_hws = (const struct clk_hw*[]){
1917 				&gcc_camss_ahb_clk_src.clkr.hw,
1918 			},
1919 			.num_parents = 1,
1920 			.flags = CLK_SET_RATE_PARENT,
1921 			.ops = &clk_branch2_ops,
1922 		},
1923 	},
1924 };
1925 
1926 static struct clk_branch gcc_camss_csi3_clk = {
1927 	.halt_reg = 0x550f8,
1928 	.halt_check = BRANCH_HALT,
1929 	.clkr = {
1930 		.enable_reg = 0x550f8,
1931 		.enable_mask = BIT(0),
1932 		.hw.init = &(struct clk_init_data){
1933 			.name = "gcc_camss_csi3_clk",
1934 			.parent_hws = (const struct clk_hw*[]){
1935 				&gcc_camss_csi3_clk_src.clkr.hw,
1936 			},
1937 			.num_parents = 1,
1938 			.flags = CLK_SET_RATE_PARENT,
1939 			.ops = &clk_branch2_ops,
1940 		},
1941 	},
1942 };
1943 
1944 static struct clk_branch gcc_camss_csi3pix_clk = {
1945 	.halt_reg = 0x55110,
1946 	.halt_check = BRANCH_HALT,
1947 	.clkr = {
1948 		.enable_reg = 0x55110,
1949 		.enable_mask = BIT(0),
1950 		.hw.init = &(struct clk_init_data){
1951 			.name = "gcc_camss_csi3pix_clk",
1952 			.parent_hws = (const struct clk_hw*[]){
1953 				&gcc_camss_csi3_clk_src.clkr.hw,
1954 			},
1955 			.num_parents = 1,
1956 			.flags = CLK_SET_RATE_PARENT,
1957 			.ops = &clk_branch2_ops,
1958 		},
1959 	},
1960 };
1961 
1962 static struct clk_branch gcc_camss_csi3rdi_clk = {
1963 	.halt_reg = 0x55108,
1964 	.halt_check = BRANCH_HALT,
1965 	.clkr = {
1966 		.enable_reg = 0x55108,
1967 		.enable_mask = BIT(0),
1968 		.hw.init = &(struct clk_init_data){
1969 			.name = "gcc_camss_csi3rdi_clk",
1970 			.parent_hws = (const struct clk_hw*[]){
1971 				&gcc_camss_csi3_clk_src.clkr.hw,
1972 			},
1973 			.num_parents = 1,
1974 			.flags = CLK_SET_RATE_PARENT,
1975 			.ops = &clk_branch2_ops,
1976 		},
1977 	},
1978 };
1979 
1980 static struct clk_branch gcc_camss_csi_vfe0_clk = {
1981 	.halt_reg = 0x54074,
1982 	.halt_check = BRANCH_HALT,
1983 	.clkr = {
1984 		.enable_reg = 0x54074,
1985 		.enable_mask = BIT(0),
1986 		.hw.init = &(struct clk_init_data){
1987 			.name = "gcc_camss_csi_vfe0_clk",
1988 			.parent_hws = (const struct clk_hw*[]){
1989 				&gcc_camss_vfe0_clk_src.clkr.hw,
1990 			},
1991 			.num_parents = 1,
1992 			.flags = CLK_SET_RATE_PARENT,
1993 			.ops = &clk_branch2_ops,
1994 		},
1995 	},
1996 };
1997 
1998 static struct clk_branch gcc_camss_csi_vfe1_clk = {
1999 	.halt_reg = 0x54080,
2000 	.halt_check = BRANCH_HALT,
2001 	.clkr = {
2002 		.enable_reg = 0x54080,
2003 		.enable_mask = BIT(0),
2004 		.hw.init = &(struct clk_init_data){
2005 			.name = "gcc_camss_csi_vfe1_clk",
2006 			.parent_hws = (const struct clk_hw*[]){
2007 				&gcc_camss_vfe1_clk_src.clkr.hw,
2008 			},
2009 			.num_parents = 1,
2010 			.flags = CLK_SET_RATE_PARENT,
2011 			.ops = &clk_branch2_ops,
2012 		},
2013 	},
2014 };
2015 
2016 static struct clk_branch gcc_camss_csiphy0_clk = {
2017 	.halt_reg = 0x55018,
2018 	.halt_check = BRANCH_HALT,
2019 	.clkr = {
2020 		.enable_reg = 0x55018,
2021 		.enable_mask = BIT(0),
2022 		.hw.init = &(struct clk_init_data){
2023 			.name = "gcc_camss_csiphy0_clk",
2024 			.parent_hws = (const struct clk_hw*[]){
2025 				&gcc_camss_csiphy_clk_src.clkr.hw,
2026 			},
2027 			.num_parents = 1,
2028 			.flags = CLK_SET_RATE_PARENT,
2029 			.ops = &clk_branch2_ops,
2030 		},
2031 	},
2032 };
2033 
2034 static struct clk_branch gcc_camss_csiphy1_clk = {
2035 	.halt_reg = 0x5501c,
2036 	.halt_check = BRANCH_HALT,
2037 	.clkr = {
2038 		.enable_reg = 0x5501c,
2039 		.enable_mask = BIT(0),
2040 		.hw.init = &(struct clk_init_data){
2041 			.name = "gcc_camss_csiphy1_clk",
2042 			.parent_hws = (const struct clk_hw*[]){
2043 				&gcc_camss_csiphy_clk_src.clkr.hw,
2044 			},
2045 			.num_parents = 1,
2046 			.flags = CLK_SET_RATE_PARENT,
2047 			.ops = &clk_branch2_ops,
2048 		},
2049 	},
2050 };
2051 
2052 static struct clk_branch gcc_camss_csiphy2_clk = {
2053 	.halt_reg = 0x55020,
2054 	.halt_check = BRANCH_HALT,
2055 	.clkr = {
2056 		.enable_reg = 0x55020,
2057 		.enable_mask = BIT(0),
2058 		.hw.init = &(struct clk_init_data){
2059 			.name = "gcc_camss_csiphy2_clk",
2060 			.parent_hws = (const struct clk_hw*[]){
2061 				&gcc_camss_csiphy_clk_src.clkr.hw,
2062 			},
2063 			.num_parents = 1,
2064 			.flags = CLK_SET_RATE_PARENT,
2065 			.ops = &clk_branch2_ops,
2066 		},
2067 	},
2068 };
2069 
2070 static struct clk_branch gcc_camss_gp0_clk = {
2071 	.halt_reg = 0x50018,
2072 	.halt_check = BRANCH_HALT,
2073 	.clkr = {
2074 		.enable_reg = 0x50018,
2075 		.enable_mask = BIT(0),
2076 		.hw.init = &(struct clk_init_data){
2077 			.name = "gcc_camss_gp0_clk",
2078 			.parent_hws = (const struct clk_hw*[]){
2079 				&gcc_camss_gp0_clk_src.clkr.hw,
2080 			},
2081 			.num_parents = 1,
2082 			.flags = CLK_SET_RATE_PARENT,
2083 			.ops = &clk_branch2_ops,
2084 		},
2085 	},
2086 };
2087 
2088 static struct clk_branch gcc_camss_gp1_clk = {
2089 	.halt_reg = 0x50034,
2090 	.halt_check = BRANCH_HALT,
2091 	.clkr = {
2092 		.enable_reg = 0x50034,
2093 		.enable_mask = BIT(0),
2094 		.hw.init = &(struct clk_init_data){
2095 			.name = "gcc_camss_gp1_clk",
2096 			.parent_hws = (const struct clk_hw*[]){
2097 				&gcc_camss_gp1_clk_src.clkr.hw,
2098 			},
2099 			.num_parents = 1,
2100 			.flags = CLK_SET_RATE_PARENT,
2101 			.ops = &clk_branch2_ops,
2102 		},
2103 	},
2104 };
2105 
2106 static struct clk_branch gcc_camss_ispif_ahb_clk = {
2107 	.halt_reg = 0x540a4,
2108 	.halt_check = BRANCH_HALT,
2109 	.clkr = {
2110 		.enable_reg = 0x540a4,
2111 		.enable_mask = BIT(0),
2112 		.hw.init = &(struct clk_init_data){
2113 			.name = "gcc_camss_ispif_ahb_clk",
2114 			.parent_hws = (const struct clk_hw*[]){
2115 				&gcc_camss_ahb_clk_src.clkr.hw,
2116 			},
2117 			.num_parents = 1,
2118 			.flags = CLK_SET_RATE_PARENT,
2119 			.ops = &clk_branch2_ops,
2120 		},
2121 	},
2122 };
2123 
2124 static struct clk_branch gcc_camss_jpeg_ahb_clk = {
2125 	.halt_reg = 0x52048,
2126 	.halt_check = BRANCH_HALT,
2127 	.clkr = {
2128 		.enable_reg = 0x52048,
2129 		.enable_mask = BIT(0),
2130 		.hw.init = &(struct clk_init_data){
2131 			.name = "gcc_camss_jpeg_ahb_clk",
2132 			.parent_hws = (const struct clk_hw*[]){
2133 				&gcc_camss_ahb_clk_src.clkr.hw,
2134 			},
2135 			.num_parents = 1,
2136 			.flags = CLK_SET_RATE_PARENT,
2137 			.ops = &clk_branch2_ops,
2138 		},
2139 	},
2140 };
2141 
2142 static struct clk_branch gcc_camss_jpeg_axi_clk = {
2143 	.halt_reg = 0x5204c,
2144 	.halt_check = BRANCH_HALT,
2145 	.clkr = {
2146 		.enable_reg = 0x5204c,
2147 		.enable_mask = BIT(0),
2148 		.hw.init = &(struct clk_init_data){
2149 			.name = "gcc_camss_jpeg_axi_clk",
2150 			.ops = &clk_branch2_ops,
2151 		},
2152 	},
2153 };
2154 
2155 static struct clk_branch gcc_camss_jpeg_clk = {
2156 	.halt_reg = 0x52040,
2157 	.halt_check = BRANCH_HALT,
2158 	.clkr = {
2159 		.enable_reg = 0x52040,
2160 		.enable_mask = BIT(0),
2161 		.hw.init = &(struct clk_init_data){
2162 			.name = "gcc_camss_jpeg_clk",
2163 			.parent_hws = (const struct clk_hw*[]){
2164 				&gcc_camss_jpeg_clk_src.clkr.hw,
2165 			},
2166 			.num_parents = 1,
2167 			.flags = CLK_SET_RATE_PARENT,
2168 			.ops = &clk_branch2_ops,
2169 		},
2170 	},
2171 };
2172 
2173 static struct clk_branch gcc_camss_mclk0_clk = {
2174 	.halt_reg = 0x51018,
2175 	.halt_check = BRANCH_HALT,
2176 	.clkr = {
2177 		.enable_reg = 0x51018,
2178 		.enable_mask = BIT(0),
2179 		.hw.init = &(struct clk_init_data){
2180 			.name = "gcc_camss_mclk0_clk",
2181 			.parent_hws = (const struct clk_hw*[]){
2182 				&gcc_camss_mclk0_clk_src.clkr.hw,
2183 			},
2184 			.num_parents = 1,
2185 			.flags = CLK_SET_RATE_PARENT,
2186 			.ops = &clk_branch2_ops,
2187 		},
2188 	},
2189 };
2190 
2191 static struct clk_branch gcc_camss_mclk1_clk = {
2192 	.halt_reg = 0x51034,
2193 	.halt_check = BRANCH_HALT,
2194 	.clkr = {
2195 		.enable_reg = 0x51034,
2196 		.enable_mask = BIT(0),
2197 		.hw.init = &(struct clk_init_data){
2198 			.name = "gcc_camss_mclk1_clk",
2199 			.parent_hws = (const struct clk_hw*[]){
2200 				&gcc_camss_mclk1_clk_src.clkr.hw,
2201 			},
2202 			.num_parents = 1,
2203 			.flags = CLK_SET_RATE_PARENT,
2204 			.ops = &clk_branch2_ops,
2205 		},
2206 	},
2207 };
2208 
2209 static struct clk_branch gcc_camss_mclk2_clk = {
2210 	.halt_reg = 0x51050,
2211 	.halt_check = BRANCH_HALT,
2212 	.clkr = {
2213 		.enable_reg = 0x51050,
2214 		.enable_mask = BIT(0),
2215 		.hw.init = &(struct clk_init_data){
2216 			.name = "gcc_camss_mclk2_clk",
2217 			.parent_hws = (const struct clk_hw*[]){
2218 				&gcc_camss_mclk2_clk_src.clkr.hw,
2219 			},
2220 			.num_parents = 1,
2221 			.flags = CLK_SET_RATE_PARENT,
2222 			.ops = &clk_branch2_ops,
2223 		},
2224 	},
2225 };
2226 
2227 static struct clk_branch gcc_camss_mclk3_clk = {
2228 	.halt_reg = 0x5106c,
2229 	.halt_check = BRANCH_HALT,
2230 	.clkr = {
2231 		.enable_reg = 0x5106c,
2232 		.enable_mask = BIT(0),
2233 		.hw.init = &(struct clk_init_data){
2234 			.name = "gcc_camss_mclk3_clk",
2235 			.parent_hws = (const struct clk_hw*[]){
2236 				&gcc_camss_mclk3_clk_src.clkr.hw,
2237 			},
2238 			.num_parents = 1,
2239 			.flags = CLK_SET_RATE_PARENT,
2240 			.ops = &clk_branch2_ops,
2241 		},
2242 	},
2243 };
2244 
2245 static struct clk_branch gcc_camss_micro_ahb_clk = {
2246 	.halt_reg = 0x560b0,
2247 	.halt_check = BRANCH_HALT,
2248 	.clkr = {
2249 		.enable_reg = 0x560b0,
2250 		.enable_mask = BIT(0),
2251 		.hw.init = &(struct clk_init_data){
2252 			.name = "gcc_camss_micro_ahb_clk",
2253 			.parent_hws = (const struct clk_hw*[]){
2254 				&gcc_camss_ahb_clk_src.clkr.hw,
2255 			},
2256 			.num_parents = 1,
2257 			.flags = CLK_SET_RATE_PARENT,
2258 			.ops = &clk_branch2_ops,
2259 		},
2260 	},
2261 };
2262 
2263 static struct clk_branch gcc_camss_throttle_nrt_axi_clk = {
2264 	.halt_reg = 0x560a4,
2265 	.halt_check = BRANCH_HALT_VOTED,
2266 	.clkr = {
2267 		.enable_reg = 0x79004,
2268 		.enable_mask = BIT(27),
2269 		.hw.init = &(struct clk_init_data){
2270 			.name = "gcc_camss_throttle_nrt_axi_clk",
2271 			.ops = &clk_branch2_ops,
2272 		},
2273 	},
2274 };
2275 
2276 static struct clk_branch gcc_camss_throttle_rt_axi_clk = {
2277 	.halt_reg = 0x560a8,
2278 	.halt_check = BRANCH_HALT_VOTED,
2279 	.clkr = {
2280 		.enable_reg = 0x79004,
2281 		.enable_mask = BIT(26),
2282 		.hw.init = &(struct clk_init_data){
2283 			.name = "gcc_camss_throttle_rt_axi_clk",
2284 			.ops = &clk_branch2_ops,
2285 		},
2286 	},
2287 };
2288 
2289 static struct clk_branch gcc_camss_top_ahb_clk = {
2290 	.halt_reg = 0x560a0,
2291 	.halt_check = BRANCH_HALT,
2292 	.clkr = {
2293 		.enable_reg = 0x560a0,
2294 		.enable_mask = BIT(0),
2295 		.hw.init = &(struct clk_init_data){
2296 			.name = "gcc_camss_top_ahb_clk",
2297 			.parent_hws = (const struct clk_hw*[]){
2298 				&gcc_camss_ahb_clk_src.clkr.hw,
2299 			},
2300 			.num_parents = 1,
2301 			.flags = CLK_SET_RATE_PARENT,
2302 			.ops = &clk_branch2_ops,
2303 		},
2304 	},
2305 };
2306 
2307 static struct clk_branch gcc_camss_vfe0_ahb_clk = {
2308 	.halt_reg = 0x54034,
2309 	.halt_check = BRANCH_HALT,
2310 	.clkr = {
2311 		.enable_reg = 0x54034,
2312 		.enable_mask = BIT(0),
2313 		.hw.init = &(struct clk_init_data){
2314 			.name = "gcc_camss_vfe0_ahb_clk",
2315 			.parent_hws = (const struct clk_hw*[]){
2316 				&gcc_camss_ahb_clk_src.clkr.hw,
2317 			},
2318 			.num_parents = 1,
2319 			.flags = CLK_SET_RATE_PARENT,
2320 			.ops = &clk_branch2_ops,
2321 		},
2322 	},
2323 };
2324 
2325 static struct clk_branch gcc_camss_vfe0_clk = {
2326 	.halt_reg = 0x54028,
2327 	.halt_check = BRANCH_HALT,
2328 	.clkr = {
2329 		.enable_reg = 0x54028,
2330 		.enable_mask = BIT(0),
2331 		.hw.init = &(struct clk_init_data){
2332 			.name = "gcc_camss_vfe0_clk",
2333 			.parent_hws = (const struct clk_hw*[]){
2334 				&gcc_camss_vfe0_clk_src.clkr.hw,
2335 			},
2336 			.num_parents = 1,
2337 			.flags = CLK_SET_RATE_PARENT,
2338 			.ops = &clk_branch2_ops,
2339 		},
2340 	},
2341 };
2342 
2343 static struct clk_branch gcc_camss_vfe0_stream_clk = {
2344 	.halt_reg = 0x54030,
2345 	.halt_check = BRANCH_HALT,
2346 	.clkr = {
2347 		.enable_reg = 0x54030,
2348 		.enable_mask = BIT(0),
2349 		.hw.init = &(struct clk_init_data){
2350 			.name = "gcc_camss_vfe0_stream_clk",
2351 			.parent_hws = (const struct clk_hw*[]){
2352 				&gcc_camss_vfe0_clk_src.clkr.hw,
2353 			},
2354 			.num_parents = 1,
2355 			.flags = CLK_SET_RATE_PARENT,
2356 			.ops = &clk_branch2_ops,
2357 		},
2358 	},
2359 };
2360 
2361 static struct clk_branch gcc_camss_vfe1_ahb_clk = {
2362 	.halt_reg = 0x5406c,
2363 	.halt_check = BRANCH_HALT,
2364 	.clkr = {
2365 		.enable_reg = 0x5406c,
2366 		.enable_mask = BIT(0),
2367 		.hw.init = &(struct clk_init_data){
2368 			.name = "gcc_camss_vfe1_ahb_clk",
2369 			.parent_hws = (const struct clk_hw*[]){
2370 				&gcc_camss_ahb_clk_src.clkr.hw,
2371 			},
2372 			.num_parents = 1,
2373 			.flags = CLK_SET_RATE_PARENT,
2374 			.ops = &clk_branch2_ops,
2375 		},
2376 	},
2377 };
2378 
2379 static struct clk_branch gcc_camss_vfe1_clk = {
2380 	.halt_reg = 0x54060,
2381 	.halt_check = BRANCH_HALT,
2382 	.clkr = {
2383 		.enable_reg = 0x54060,
2384 		.enable_mask = BIT(0),
2385 		.hw.init = &(struct clk_init_data){
2386 			.name = "gcc_camss_vfe1_clk",
2387 			.parent_hws = (const struct clk_hw*[]){
2388 				&gcc_camss_vfe1_clk_src.clkr.hw,
2389 			},
2390 			.num_parents = 1,
2391 			.flags = CLK_SET_RATE_PARENT,
2392 			.ops = &clk_branch2_ops,
2393 		},
2394 	},
2395 };
2396 
2397 static struct clk_branch gcc_camss_vfe1_stream_clk = {
2398 	.halt_reg = 0x54068,
2399 	.halt_check = BRANCH_HALT,
2400 	.clkr = {
2401 		.enable_reg = 0x54068,
2402 		.enable_mask = BIT(0),
2403 		.hw.init = &(struct clk_init_data){
2404 			.name = "gcc_camss_vfe1_stream_clk",
2405 			.parent_hws = (const struct clk_hw*[]){
2406 				&gcc_camss_vfe1_clk_src.clkr.hw,
2407 			},
2408 			.num_parents = 1,
2409 			.flags = CLK_SET_RATE_PARENT,
2410 			.ops = &clk_branch2_ops,
2411 		},
2412 	},
2413 };
2414 
2415 static struct clk_branch gcc_camss_vfe_tsctr_clk = {
2416 	.halt_reg = 0x5409c,
2417 	.halt_check = BRANCH_HALT,
2418 	.clkr = {
2419 		.enable_reg = 0x5409c,
2420 		.enable_mask = BIT(0),
2421 		.hw.init = &(struct clk_init_data){
2422 			.name = "gcc_camss_vfe_tsctr_clk",
2423 			.ops = &clk_branch2_ops,
2424 		},
2425 	},
2426 };
2427 
2428 static struct clk_branch gcc_camss_vfe_vbif_ahb_clk = {
2429 	.halt_reg = 0x5408c,
2430 	.halt_check = BRANCH_HALT,
2431 	.clkr = {
2432 		.enable_reg = 0x5408c,
2433 		.enable_mask = BIT(0),
2434 		.hw.init = &(struct clk_init_data){
2435 			.name = "gcc_camss_vfe_vbif_ahb_clk",
2436 			.parent_hws = (const struct clk_hw*[]){
2437 				&gcc_camss_ahb_clk_src.clkr.hw,
2438 			},
2439 			.num_parents = 1,
2440 			.flags = CLK_SET_RATE_PARENT,
2441 			.ops = &clk_branch2_ops,
2442 		},
2443 	},
2444 };
2445 
2446 static struct clk_branch gcc_camss_vfe_vbif_axi_clk = {
2447 	.halt_reg = 0x54090,
2448 	.halt_check = BRANCH_HALT,
2449 	.clkr = {
2450 		.enable_reg = 0x54090,
2451 		.enable_mask = BIT(0),
2452 		.hw.init = &(struct clk_init_data){
2453 			.name = "gcc_camss_vfe_vbif_axi_clk",
2454 			.ops = &clk_branch2_ops,
2455 		},
2456 	},
2457 };
2458 
2459 static struct clk_branch gcc_ce1_ahb_clk = {
2460 	.halt_reg = 0x2700c,
2461 	.halt_check = BRANCH_HALT_VOTED,
2462 	.hwcg_reg = 0x2700c,
2463 	.hwcg_bit = 1,
2464 	.clkr = {
2465 		.enable_reg = 0x79004,
2466 		.enable_mask = BIT(3),
2467 		.hw.init = &(struct clk_init_data){
2468 			.name = "gcc_ce1_ahb_clk",
2469 			.ops = &clk_branch2_ops,
2470 		},
2471 	},
2472 };
2473 
2474 static struct clk_branch gcc_ce1_axi_clk = {
2475 	.halt_reg = 0x27008,
2476 	.halt_check = BRANCH_HALT_VOTED,
2477 	.clkr = {
2478 		.enable_reg = 0x79004,
2479 		.enable_mask = BIT(4),
2480 		.hw.init = &(struct clk_init_data){
2481 			.name = "gcc_ce1_axi_clk",
2482 			.ops = &clk_branch2_ops,
2483 		},
2484 	},
2485 };
2486 
2487 static struct clk_branch gcc_ce1_clk = {
2488 	.halt_reg = 0x27004,
2489 	.halt_check = BRANCH_HALT_VOTED,
2490 	.clkr = {
2491 		.enable_reg = 0x79004,
2492 		.enable_mask = BIT(5),
2493 		.hw.init = &(struct clk_init_data){
2494 			.name = "gcc_ce1_clk",
2495 			.ops = &clk_branch2_ops,
2496 		},
2497 	},
2498 };
2499 
2500 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
2501 	.halt_reg = 0x1a084,
2502 	.halt_check = BRANCH_HALT,
2503 	.clkr = {
2504 		.enable_reg = 0x1a084,
2505 		.enable_mask = BIT(0),
2506 		.hw.init = &(struct clk_init_data){
2507 			.name = "gcc_cfg_noc_usb3_prim_axi_clk",
2508 			.parent_hws = (const struct clk_hw*[]){
2509 				&gcc_usb30_prim_master_clk_src.clkr.hw,
2510 			},
2511 			.num_parents = 1,
2512 			.flags = CLK_SET_RATE_PARENT,
2513 			.ops = &clk_branch2_ops,
2514 		},
2515 	},
2516 };
2517 
2518 static struct clk_branch gcc_cpuss_gnoc_clk = {
2519 	.halt_reg = 0x2b004,
2520 	.halt_check = BRANCH_HALT_VOTED,
2521 	.hwcg_reg = 0x2b004,
2522 	.hwcg_bit = 1,
2523 	.clkr = {
2524 		.enable_reg = 0x79004,
2525 		.enable_mask = BIT(22),
2526 		.hw.init = &(struct clk_init_data){
2527 			.name = "gcc_cpuss_gnoc_clk",
2528 			.flags = CLK_IS_CRITICAL,
2529 			.ops = &clk_branch2_ops,
2530 		},
2531 	},
2532 };
2533 
2534 static struct clk_branch gcc_disp_ahb_clk = {
2535 	.halt_reg = 0x1700c,
2536 	.halt_check = BRANCH_HALT,
2537 	.hwcg_reg = 0x1700c,
2538 	.hwcg_bit = 1,
2539 	.clkr = {
2540 		.enable_reg = 0x1700c,
2541 		.enable_mask = BIT(0),
2542 		.hw.init = &(struct clk_init_data){
2543 			.name = "gcc_disp_ahb_clk",
2544 			.flags = CLK_IS_CRITICAL,
2545 			.ops = &clk_branch2_ops,
2546 		},
2547 	},
2548 };
2549 
2550 static struct clk_branch gcc_disp_gpll0_div_clk_src = {
2551 	.halt_check = BRANCH_HALT_DELAY,
2552 	.clkr = {
2553 		.enable_reg = 0x79004,
2554 		.enable_mask = BIT(20),
2555 		.hw.init = &(struct clk_init_data){
2556 			.name = "gcc_disp_gpll0_div_clk_src",
2557 			.parent_hws = (const struct clk_hw*[]){
2558 				&gpll0_out_early.clkr.hw,
2559 			},
2560 			.num_parents = 1,
2561 			.ops = &clk_branch2_ops,
2562 		},
2563 	},
2564 };
2565 
2566 static struct clk_branch gcc_disp_hf_axi_clk = {
2567 	.halt_reg = 0x17020,
2568 	.halt_check = BRANCH_HALT,
2569 	.clkr = {
2570 		.enable_reg = 0x17020,
2571 		.enable_mask = BIT(0),
2572 		.hw.init = &(struct clk_init_data){
2573 			.name = "gcc_disp_hf_axi_clk",
2574 			.ops = &clk_branch2_ops,
2575 		},
2576 	},
2577 };
2578 
2579 static struct clk_branch gcc_disp_throttle_core_clk = {
2580 	.halt_reg = 0x17064,
2581 	.halt_check = BRANCH_HALT_VOTED,
2582 	.clkr = {
2583 		.enable_reg = 0x7900c,
2584 		.enable_mask = BIT(5),
2585 		.hw.init = &(struct clk_init_data){
2586 			.name = "gcc_disp_throttle_core_clk",
2587 			.ops = &clk_branch2_ops,
2588 		},
2589 	},
2590 };
2591 
2592 static struct clk_branch gcc_disp_xo_clk = {
2593 	.halt_reg = 0x1702c,
2594 	.halt_check = BRANCH_HALT,
2595 	.clkr = {
2596 		.enable_reg = 0x1702c,
2597 		.enable_mask = BIT(0),
2598 		.hw.init = &(struct clk_init_data){
2599 			.name = "gcc_disp_xo_clk",
2600 			.flags = CLK_IS_CRITICAL,
2601 			.ops = &clk_branch2_ops,
2602 		},
2603 	},
2604 };
2605 
2606 static struct clk_branch gcc_gp1_clk = {
2607 	.halt_reg = 0x4d000,
2608 	.halt_check = BRANCH_HALT,
2609 	.clkr = {
2610 		.enable_reg = 0x4d000,
2611 		.enable_mask = BIT(0),
2612 		.hw.init = &(struct clk_init_data){
2613 			.name = "gcc_gp1_clk",
2614 			.parent_hws = (const struct clk_hw*[]){
2615 				&gcc_gp1_clk_src.clkr.hw,
2616 			},
2617 			.num_parents = 1,
2618 			.flags = CLK_SET_RATE_PARENT,
2619 			.ops = &clk_branch2_ops,
2620 		},
2621 	},
2622 };
2623 
2624 static struct clk_branch gcc_gp2_clk = {
2625 	.halt_reg = 0x4e000,
2626 	.halt_check = BRANCH_HALT,
2627 	.clkr = {
2628 		.enable_reg = 0x4e000,
2629 		.enable_mask = BIT(0),
2630 		.hw.init = &(struct clk_init_data){
2631 			.name = "gcc_gp2_clk",
2632 			.parent_hws = (const struct clk_hw*[]){
2633 				&gcc_gp2_clk_src.clkr.hw,
2634 			},
2635 			.num_parents = 1,
2636 			.flags = CLK_SET_RATE_PARENT,
2637 			.ops = &clk_branch2_ops,
2638 		},
2639 	},
2640 };
2641 
2642 static struct clk_branch gcc_gp3_clk = {
2643 	.halt_reg = 0x4f000,
2644 	.halt_check = BRANCH_HALT,
2645 	.clkr = {
2646 		.enable_reg = 0x4f000,
2647 		.enable_mask = BIT(0),
2648 		.hw.init = &(struct clk_init_data){
2649 			.name = "gcc_gp3_clk",
2650 			.parent_hws = (const struct clk_hw*[]){
2651 				&gcc_gp3_clk_src.clkr.hw,
2652 			},
2653 			.num_parents = 1,
2654 			.flags = CLK_SET_RATE_PARENT,
2655 			.ops = &clk_branch2_ops,
2656 		},
2657 	},
2658 };
2659 
2660 static struct clk_branch gcc_gpu_cfg_ahb_clk = {
2661 	.halt_reg = 0x36004,
2662 	.halt_check = BRANCH_HALT,
2663 	.hwcg_reg = 0x36004,
2664 	.hwcg_bit = 1,
2665 	.clkr = {
2666 		.enable_reg = 0x36004,
2667 		.enable_mask = BIT(0),
2668 		.hw.init = &(struct clk_init_data){
2669 			.name = "gcc_gpu_cfg_ahb_clk",
2670 			.flags = CLK_IS_CRITICAL,
2671 			.ops = &clk_branch2_ops,
2672 		},
2673 	},
2674 };
2675 
2676 static struct clk_branch gcc_gpu_gpll0_clk_src = {
2677 	.halt_check = BRANCH_HALT_DELAY,
2678 	.clkr = {
2679 		.enable_reg = 0x79004,
2680 		.enable_mask = BIT(15),
2681 		.hw.init = &(struct clk_init_data){
2682 			.name = "gcc_gpu_gpll0_clk_src",
2683 			.parent_hws = (const struct clk_hw*[]){
2684 				&gpll0_out_early.clkr.hw,
2685 			},
2686 			.num_parents = 1,
2687 			.ops = &clk_branch2_ops,
2688 		},
2689 	},
2690 };
2691 
2692 static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
2693 	.halt_check = BRANCH_HALT_DELAY,
2694 	.clkr = {
2695 		.enable_reg = 0x79004,
2696 		.enable_mask = BIT(16),
2697 		.hw.init = &(struct clk_init_data){
2698 			.name = "gcc_gpu_gpll0_div_clk_src",
2699 			.parent_hws = (const struct clk_hw*[]){
2700 				&gpll0_out_aux2.hw,
2701 			},
2702 			.num_parents = 1,
2703 			.ops = &clk_branch2_ops,
2704 		},
2705 	},
2706 };
2707 
2708 static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
2709 	.halt_reg = 0x3600c,
2710 	.halt_check = BRANCH_VOTED,
2711 	.clkr = {
2712 		.enable_reg = 0x3600c,
2713 		.enable_mask = BIT(0),
2714 		.hw.init = &(struct clk_init_data){
2715 			.name = "gcc_gpu_memnoc_gfx_clk",
2716 			.ops = &clk_branch2_ops,
2717 		},
2718 	},
2719 };
2720 
2721 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
2722 	.halt_reg = 0x36018,
2723 	.halt_check = BRANCH_HALT,
2724 	.clkr = {
2725 		.enable_reg = 0x36018,
2726 		.enable_mask = BIT(0),
2727 		.hw.init = &(struct clk_init_data){
2728 			.name = "gcc_gpu_snoc_dvm_gfx_clk",
2729 			.ops = &clk_branch2_ops,
2730 		},
2731 	},
2732 };
2733 
2734 static struct clk_branch gcc_gpu_throttle_core_clk = {
2735 	.halt_reg = 0x36048,
2736 	.halt_check = BRANCH_HALT_VOTED,
2737 	.clkr = {
2738 		.enable_reg = 0x79004,
2739 		.enable_mask = BIT(31),
2740 		.hw.init = &(struct clk_init_data){
2741 			.name = "gcc_gpu_throttle_core_clk",
2742 			.ops = &clk_branch2_ops,
2743 		},
2744 	},
2745 };
2746 
2747 static struct clk_branch gcc_gpu_throttle_xo_clk = {
2748 	.halt_reg = 0x36044,
2749 	.halt_check = BRANCH_HALT,
2750 	.clkr = {
2751 		.enable_reg = 0x36044,
2752 		.enable_mask = BIT(0),
2753 		.hw.init = &(struct clk_init_data){
2754 			.name = "gcc_gpu_throttle_xo_clk",
2755 			.ops = &clk_branch2_ops,
2756 		},
2757 	},
2758 };
2759 
2760 static struct clk_branch gcc_mss_vs_clk = {
2761 	.halt_reg = 0x42048,
2762 	.halt_check = BRANCH_HALT,
2763 	.clkr = {
2764 		.enable_reg = 0x42048,
2765 		.enable_mask = BIT(0),
2766 		.hw.init = &(struct clk_init_data){
2767 			.name = "gcc_mss_vs_clk",
2768 			.parent_hws = (const struct clk_hw*[]){
2769 				&gcc_vsensor_clk_src.clkr.hw,
2770 			},
2771 			.num_parents = 1,
2772 			.flags = CLK_SET_RATE_PARENT,
2773 			.ops = &clk_branch2_ops,
2774 		},
2775 	},
2776 };
2777 
2778 static struct clk_branch gcc_pdm2_clk = {
2779 	.halt_reg = 0x2000c,
2780 	.halt_check = BRANCH_HALT,
2781 	.clkr = {
2782 		.enable_reg = 0x2000c,
2783 		.enable_mask = BIT(0),
2784 		.hw.init = &(struct clk_init_data){
2785 			.name = "gcc_pdm2_clk",
2786 			.parent_hws = (const struct clk_hw*[]){
2787 				&gcc_pdm2_clk_src.clkr.hw,
2788 			},
2789 			.num_parents = 1,
2790 			.flags = CLK_SET_RATE_PARENT,
2791 			.ops = &clk_branch2_ops,
2792 		},
2793 	},
2794 };
2795 
2796 static struct clk_branch gcc_pdm_ahb_clk = {
2797 	.halt_reg = 0x20004,
2798 	.halt_check = BRANCH_HALT,
2799 	.hwcg_reg = 0x20004,
2800 	.hwcg_bit = 1,
2801 	.clkr = {
2802 		.enable_reg = 0x20004,
2803 		.enable_mask = BIT(0),
2804 		.hw.init = &(struct clk_init_data){
2805 			.name = "gcc_pdm_ahb_clk",
2806 			.ops = &clk_branch2_ops,
2807 		},
2808 	},
2809 };
2810 
2811 static struct clk_branch gcc_pdm_xo4_clk = {
2812 	.halt_reg = 0x20008,
2813 	.halt_check = BRANCH_HALT,
2814 	.clkr = {
2815 		.enable_reg = 0x20008,
2816 		.enable_mask = BIT(0),
2817 		.hw.init = &(struct clk_init_data){
2818 			.name = "gcc_pdm_xo4_clk",
2819 			.ops = &clk_branch2_ops,
2820 		},
2821 	},
2822 };
2823 
2824 static struct clk_branch gcc_prng_ahb_clk = {
2825 	.halt_reg = 0x21004,
2826 	.halt_check = BRANCH_HALT_VOTED,
2827 	.hwcg_reg = 0x21004,
2828 	.hwcg_bit = 1,
2829 	.clkr = {
2830 		.enable_reg = 0x79004,
2831 		.enable_mask = BIT(13),
2832 		.hw.init = &(struct clk_init_data){
2833 			.name = "gcc_prng_ahb_clk",
2834 			.ops = &clk_branch2_ops,
2835 		},
2836 	},
2837 };
2838 
2839 static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
2840 	.halt_reg = 0x17014,
2841 	.halt_check = BRANCH_HALT,
2842 	.hwcg_reg = 0x17014,
2843 	.hwcg_bit = 1,
2844 	.clkr = {
2845 		.enable_reg = 0x7900c,
2846 		.enable_mask = BIT(0),
2847 		.hw.init = &(struct clk_init_data){
2848 			.name = "gcc_qmip_camera_nrt_ahb_clk",
2849 			.ops = &clk_branch2_ops,
2850 		},
2851 	},
2852 };
2853 
2854 static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
2855 	.halt_reg = 0x17060,
2856 	.halt_check = BRANCH_HALT_VOTED,
2857 	.hwcg_reg = 0x17060,
2858 	.hwcg_bit = 1,
2859 	.clkr = {
2860 		.enable_reg = 0x7900c,
2861 		.enable_mask = BIT(2),
2862 		.hw.init = &(struct clk_init_data){
2863 			.name = "gcc_qmip_camera_rt_ahb_clk",
2864 			.ops = &clk_branch2_ops,
2865 		},
2866 	},
2867 };
2868 
2869 static struct clk_branch gcc_qmip_disp_ahb_clk = {
2870 	.halt_reg = 0x17018,
2871 	.halt_check = BRANCH_HALT,
2872 	.hwcg_reg = 0x17018,
2873 	.hwcg_bit = 1,
2874 	.clkr = {
2875 		.enable_reg = 0x7900c,
2876 		.enable_mask = BIT(1),
2877 		.hw.init = &(struct clk_init_data){
2878 			.name = "gcc_qmip_disp_ahb_clk",
2879 			.ops = &clk_branch2_ops,
2880 		},
2881 	},
2882 };
2883 
2884 static struct clk_branch gcc_qmip_gpu_cfg_ahb_clk = {
2885 	.halt_reg = 0x36040,
2886 	.halt_check = BRANCH_HALT_VOTED,
2887 	.hwcg_reg = 0x36040,
2888 	.hwcg_bit = 1,
2889 	.clkr = {
2890 		.enable_reg = 0x7900c,
2891 		.enable_mask = BIT(4),
2892 		.hw.init = &(struct clk_init_data){
2893 			.name = "gcc_qmip_gpu_cfg_ahb_clk",
2894 			.ops = &clk_branch2_ops,
2895 		},
2896 	},
2897 };
2898 
2899 static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
2900 	.halt_reg = 0x17010,
2901 	.halt_check = BRANCH_HALT,
2902 	.hwcg_reg = 0x17010,
2903 	.hwcg_bit = 1,
2904 	.clkr = {
2905 		.enable_reg = 0x79004,
2906 		.enable_mask = BIT(25),
2907 		.hw.init = &(struct clk_init_data){
2908 			.name = "gcc_qmip_video_vcodec_ahb_clk",
2909 			.ops = &clk_branch2_ops,
2910 		},
2911 	},
2912 };
2913 
2914 static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {
2915 	.halt_reg = 0x1f014,
2916 	.halt_check = BRANCH_HALT_VOTED,
2917 	.clkr = {
2918 		.enable_reg = 0x7900c,
2919 		.enable_mask = BIT(9),
2920 		.hw.init = &(struct clk_init_data){
2921 			.name = "gcc_qupv3_wrap0_core_2x_clk",
2922 			.ops = &clk_branch2_ops,
2923 		},
2924 	},
2925 };
2926 
2927 static struct clk_branch gcc_qupv3_wrap0_core_clk = {
2928 	.halt_reg = 0x1f00c,
2929 	.halt_check = BRANCH_HALT_VOTED,
2930 	.clkr = {
2931 		.enable_reg = 0x7900c,
2932 		.enable_mask = BIT(8),
2933 		.hw.init = &(struct clk_init_data){
2934 			.name = "gcc_qupv3_wrap0_core_clk",
2935 			.ops = &clk_branch2_ops,
2936 		},
2937 	},
2938 };
2939 
2940 static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
2941 	.halt_reg = 0x1f144,
2942 	.halt_check = BRANCH_HALT_VOTED,
2943 	.clkr = {
2944 		.enable_reg = 0x7900c,
2945 		.enable_mask = BIT(10),
2946 		.hw.init = &(struct clk_init_data){
2947 			.name = "gcc_qupv3_wrap0_s0_clk",
2948 			.parent_hws = (const struct clk_hw*[]){
2949 				&gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
2950 			},
2951 			.num_parents = 1,
2952 			.flags = CLK_SET_RATE_PARENT,
2953 			.ops = &clk_branch2_ops,
2954 		},
2955 	},
2956 };
2957 
2958 static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
2959 	.halt_reg = 0x1f274,
2960 	.halt_check = BRANCH_HALT_VOTED,
2961 	.clkr = {
2962 		.enable_reg = 0x7900c,
2963 		.enable_mask = BIT(11),
2964 		.hw.init = &(struct clk_init_data){
2965 			.name = "gcc_qupv3_wrap0_s1_clk",
2966 			.parent_hws = (const struct clk_hw*[]){
2967 				&gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
2968 			},
2969 			.num_parents = 1,
2970 			.flags = CLK_SET_RATE_PARENT,
2971 			.ops = &clk_branch2_ops,
2972 		},
2973 	},
2974 };
2975 
2976 static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
2977 	.halt_reg = 0x1f3a4,
2978 	.halt_check = BRANCH_HALT_VOTED,
2979 	.clkr = {
2980 		.enable_reg = 0x7900c,
2981 		.enable_mask = BIT(12),
2982 		.hw.init = &(struct clk_init_data){
2983 			.name = "gcc_qupv3_wrap0_s2_clk",
2984 			.parent_hws = (const struct clk_hw*[]){
2985 				&gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
2986 			},
2987 			.num_parents = 1,
2988 			.flags = CLK_SET_RATE_PARENT,
2989 			.ops = &clk_branch2_ops,
2990 		},
2991 	},
2992 };
2993 
2994 static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
2995 	.halt_reg = 0x1f4d4,
2996 	.halt_check = BRANCH_HALT_VOTED,
2997 	.clkr = {
2998 		.enable_reg = 0x7900c,
2999 		.enable_mask = BIT(13),
3000 		.hw.init = &(struct clk_init_data){
3001 			.name = "gcc_qupv3_wrap0_s3_clk",
3002 			.parent_hws = (const struct clk_hw*[]){
3003 				&gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
3004 			},
3005 			.num_parents = 1,
3006 			.flags = CLK_SET_RATE_PARENT,
3007 			.ops = &clk_branch2_ops,
3008 		},
3009 	},
3010 };
3011 
3012 static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
3013 	.halt_reg = 0x1f604,
3014 	.halt_check = BRANCH_HALT_VOTED,
3015 	.clkr = {
3016 		.enable_reg = 0x7900c,
3017 		.enable_mask = BIT(14),
3018 		.hw.init = &(struct clk_init_data){
3019 			.name = "gcc_qupv3_wrap0_s4_clk",
3020 			.parent_hws = (const struct clk_hw*[]){
3021 				&gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
3022 			},
3023 			.num_parents = 1,
3024 			.flags = CLK_SET_RATE_PARENT,
3025 			.ops = &clk_branch2_ops,
3026 		},
3027 	},
3028 };
3029 
3030 static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
3031 	.halt_reg = 0x1f734,
3032 	.halt_check = BRANCH_HALT_VOTED,
3033 	.clkr = {
3034 		.enable_reg = 0x7900c,
3035 		.enable_mask = BIT(15),
3036 		.hw.init = &(struct clk_init_data){
3037 			.name = "gcc_qupv3_wrap0_s5_clk",
3038 			.parent_hws = (const struct clk_hw*[]){
3039 				&gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
3040 			},
3041 			.num_parents = 1,
3042 			.flags = CLK_SET_RATE_PARENT,
3043 			.ops = &clk_branch2_ops,
3044 		},
3045 	},
3046 };
3047 
3048 static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
3049 	.halt_reg = 0x39014,
3050 	.halt_check = BRANCH_HALT_VOTED,
3051 	.clkr = {
3052 		.enable_reg = 0x7900c,
3053 		.enable_mask = BIT(18),
3054 		.hw.init = &(struct clk_init_data){
3055 			.name = "gcc_qupv3_wrap1_core_2x_clk",
3056 			.ops = &clk_branch2_ops,
3057 		},
3058 	},
3059 };
3060 
3061 static struct clk_branch gcc_qupv3_wrap1_core_clk = {
3062 	.halt_reg = 0x3900c,
3063 	.halt_check = BRANCH_HALT_VOTED,
3064 	.clkr = {
3065 		.enable_reg = 0x7900c,
3066 		.enable_mask = BIT(19),
3067 		.hw.init = &(struct clk_init_data){
3068 			.name = "gcc_qupv3_wrap1_core_clk",
3069 			.ops = &clk_branch2_ops,
3070 		},
3071 	},
3072 };
3073 
3074 static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
3075 	.halt_reg = 0x39144,
3076 	.halt_check = BRANCH_HALT_VOTED,
3077 	.clkr = {
3078 		.enable_reg = 0x7900c,
3079 		.enable_mask = BIT(22),
3080 		.hw.init = &(struct clk_init_data){
3081 			.name = "gcc_qupv3_wrap1_s0_clk",
3082 			.parent_hws = (const struct clk_hw*[]){
3083 				&gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
3084 			},
3085 			.num_parents = 1,
3086 			.flags = CLK_SET_RATE_PARENT,
3087 			.ops = &clk_branch2_ops,
3088 		},
3089 	},
3090 };
3091 
3092 static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
3093 	.halt_reg = 0x39274,
3094 	.halt_check = BRANCH_HALT_VOTED,
3095 	.clkr = {
3096 		.enable_reg = 0x7900c,
3097 		.enable_mask = BIT(23),
3098 		.hw.init = &(struct clk_init_data){
3099 			.name = "gcc_qupv3_wrap1_s1_clk",
3100 			.parent_hws = (const struct clk_hw*[]){
3101 				&gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
3102 			},
3103 			.num_parents = 1,
3104 			.flags = CLK_SET_RATE_PARENT,
3105 			.ops = &clk_branch2_ops,
3106 		},
3107 	},
3108 };
3109 
3110 static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
3111 	.halt_reg = 0x393a4,
3112 	.halt_check = BRANCH_HALT_VOTED,
3113 	.clkr = {
3114 		.enable_reg = 0x7900c,
3115 		.enable_mask = BIT(24),
3116 		.hw.init = &(struct clk_init_data){
3117 			.name = "gcc_qupv3_wrap1_s2_clk",
3118 			.parent_hws = (const struct clk_hw*[]){
3119 				&gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
3120 			},
3121 			.num_parents = 1,
3122 			.flags = CLK_SET_RATE_PARENT,
3123 			.ops = &clk_branch2_ops,
3124 		},
3125 	},
3126 };
3127 
3128 static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
3129 	.halt_reg = 0x394d4,
3130 	.halt_check = BRANCH_HALT_VOTED,
3131 	.clkr = {
3132 		.enable_reg = 0x7900c,
3133 		.enable_mask = BIT(25),
3134 		.hw.init = &(struct clk_init_data){
3135 			.name = "gcc_qupv3_wrap1_s3_clk",
3136 			.parent_hws = (const struct clk_hw*[]){
3137 				&gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
3138 			},
3139 			.num_parents = 1,
3140 			.flags = CLK_SET_RATE_PARENT,
3141 			.ops = &clk_branch2_ops,
3142 		},
3143 	},
3144 };
3145 
3146 static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
3147 	.halt_reg = 0x39604,
3148 	.halt_check = BRANCH_HALT_VOTED,
3149 	.clkr = {
3150 		.enable_reg = 0x7900c,
3151 		.enable_mask = BIT(26),
3152 		.hw.init = &(struct clk_init_data){
3153 			.name = "gcc_qupv3_wrap1_s4_clk",
3154 			.parent_hws = (const struct clk_hw*[]){
3155 				&gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
3156 			},
3157 			.num_parents = 1,
3158 			.flags = CLK_SET_RATE_PARENT,
3159 			.ops = &clk_branch2_ops,
3160 		},
3161 	},
3162 };
3163 
3164 static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
3165 	.halt_reg = 0x39734,
3166 	.halt_check = BRANCH_HALT_VOTED,
3167 	.clkr = {
3168 		.enable_reg = 0x7900c,
3169 		.enable_mask = BIT(27),
3170 		.hw.init = &(struct clk_init_data){
3171 			.name = "gcc_qupv3_wrap1_s5_clk",
3172 			.parent_hws = (const struct clk_hw*[]){
3173 				&gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
3174 			},
3175 			.num_parents = 1,
3176 			.flags = CLK_SET_RATE_PARENT,
3177 			.ops = &clk_branch2_ops,
3178 		},
3179 	},
3180 };
3181 
3182 static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
3183 	.halt_reg = 0x1f004,
3184 	.halt_check = BRANCH_HALT_VOTED,
3185 	.clkr = {
3186 		.enable_reg = 0x7900c,
3187 		.enable_mask = BIT(6),
3188 		.hw.init = &(struct clk_init_data){
3189 			.name = "gcc_qupv3_wrap_0_m_ahb_clk",
3190 			.ops = &clk_branch2_ops,
3191 		},
3192 	},
3193 };
3194 
3195 static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
3196 	.halt_reg = 0x1f008,
3197 	.halt_check = BRANCH_HALT_VOTED,
3198 	.hwcg_reg = 0x1f008,
3199 	.hwcg_bit = 1,
3200 	.clkr = {
3201 		.enable_reg = 0x7900c,
3202 		.enable_mask = BIT(7),
3203 		.hw.init = &(struct clk_init_data){
3204 			.name = "gcc_qupv3_wrap_0_s_ahb_clk",
3205 			.ops = &clk_branch2_ops,
3206 		},
3207 	},
3208 };
3209 
3210 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
3211 	.halt_reg = 0x39004,
3212 	.halt_check = BRANCH_HALT_VOTED,
3213 	.clkr = {
3214 		.enable_reg = 0x7900c,
3215 		.enable_mask = BIT(20),
3216 		.hw.init = &(struct clk_init_data){
3217 			.name = "gcc_qupv3_wrap_1_m_ahb_clk",
3218 			.ops = &clk_branch2_ops,
3219 		},
3220 	},
3221 };
3222 
3223 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
3224 	.halt_reg = 0x39008,
3225 	.halt_check = BRANCH_HALT_VOTED,
3226 	.hwcg_reg = 0x39008,
3227 	.hwcg_bit = 1,
3228 	.clkr = {
3229 		.enable_reg = 0x7900c,
3230 		.enable_mask = BIT(21),
3231 		.hw.init = &(struct clk_init_data){
3232 			.name = "gcc_qupv3_wrap_1_s_ahb_clk",
3233 			.ops = &clk_branch2_ops,
3234 		},
3235 	},
3236 };
3237 
3238 static struct clk_branch gcc_sdcc1_ahb_clk = {
3239 	.halt_reg = 0x38008,
3240 	.halt_check = BRANCH_HALT,
3241 	.clkr = {
3242 		.enable_reg = 0x38008,
3243 		.enable_mask = BIT(0),
3244 		.hw.init = &(struct clk_init_data){
3245 			.name = "gcc_sdcc1_ahb_clk",
3246 			.ops = &clk_branch2_ops,
3247 		},
3248 	},
3249 };
3250 
3251 static struct clk_branch gcc_sdcc1_apps_clk = {
3252 	.halt_reg = 0x38004,
3253 	.halt_check = BRANCH_HALT,
3254 	.clkr = {
3255 		.enable_reg = 0x38004,
3256 		.enable_mask = BIT(0),
3257 		.hw.init = &(struct clk_init_data){
3258 			.name = "gcc_sdcc1_apps_clk",
3259 			.parent_hws = (const struct clk_hw*[]){
3260 				&gcc_sdcc1_apps_clk_src.clkr.hw,
3261 			},
3262 			.num_parents = 1,
3263 			.flags = CLK_SET_RATE_PARENT,
3264 			.ops = &clk_branch2_ops,
3265 		},
3266 	},
3267 };
3268 
3269 static struct clk_branch gcc_sdcc1_ice_core_clk = {
3270 	.halt_reg = 0x3800c,
3271 	.halt_check = BRANCH_HALT,
3272 	.clkr = {
3273 		.enable_reg = 0x3800c,
3274 		.enable_mask = BIT(0),
3275 		.hw.init = &(struct clk_init_data){
3276 			.name = "gcc_sdcc1_ice_core_clk",
3277 			.parent_hws = (const struct clk_hw*[]){
3278 				&gcc_sdcc1_ice_core_clk_src.clkr.hw,
3279 			},
3280 			.num_parents = 1,
3281 			.flags = CLK_SET_RATE_PARENT,
3282 			.ops = &clk_branch2_ops,
3283 		},
3284 	},
3285 };
3286 
3287 static struct clk_branch gcc_sdcc2_ahb_clk = {
3288 	.halt_reg = 0x1e008,
3289 	.halt_check = BRANCH_HALT,
3290 	.clkr = {
3291 		.enable_reg = 0x1e008,
3292 		.enable_mask = BIT(0),
3293 		.hw.init = &(struct clk_init_data){
3294 			.name = "gcc_sdcc2_ahb_clk",
3295 			.ops = &clk_branch2_ops,
3296 		},
3297 	},
3298 };
3299 
3300 static struct clk_branch gcc_sdcc2_apps_clk = {
3301 	.halt_reg = 0x1e004,
3302 	.halt_check = BRANCH_HALT,
3303 	.clkr = {
3304 		.enable_reg = 0x1e004,
3305 		.enable_mask = BIT(0),
3306 		.hw.init = &(struct clk_init_data){
3307 			.name = "gcc_sdcc2_apps_clk",
3308 			.parent_hws = (const struct clk_hw*[]){
3309 				&gcc_sdcc2_apps_clk_src.clkr.hw,
3310 			},
3311 			.num_parents = 1,
3312 			.flags = CLK_SET_RATE_PARENT,
3313 			.ops = &clk_branch2_ops,
3314 		},
3315 	},
3316 };
3317 
3318 static struct clk_branch gcc_sys_noc_compute_sf_axi_clk = {
3319 	.halt_reg = 0x1050c,
3320 	.halt_check = BRANCH_HALT,
3321 	.clkr = {
3322 		.enable_reg = 0x1050c,
3323 		.enable_mask = BIT(0),
3324 		.hw.init = &(struct clk_init_data){
3325 			.name = "gcc_sys_noc_compute_sf_axi_clk",
3326 			.flags = CLK_IS_CRITICAL,
3327 			.ops = &clk_branch2_ops,
3328 		},
3329 	},
3330 };
3331 
3332 static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = {
3333 	.halt_reg = 0x2b06c,
3334 	.halt_check = BRANCH_HALT_VOTED,
3335 	.clkr = {
3336 		.enable_reg = 0x79004,
3337 		.enable_mask = BIT(0),
3338 		.hw.init = &(struct clk_init_data){
3339 			.name = "gcc_sys_noc_cpuss_ahb_clk",
3340 			.flags = CLK_IS_CRITICAL,
3341 			.ops = &clk_branch2_ops,
3342 		},
3343 	},
3344 };
3345 
3346 static struct clk_branch gcc_sys_noc_ufs_phy_axi_clk = {
3347 	.halt_reg = 0x45098,
3348 	.halt_check = BRANCH_HALT,
3349 	.clkr = {
3350 		.enable_reg = 0x45098,
3351 		.enable_mask = BIT(0),
3352 		.hw.init = &(struct clk_init_data){
3353 			.name = "gcc_sys_noc_ufs_phy_axi_clk",
3354 			.parent_hws = (const struct clk_hw*[]){
3355 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
3356 			},
3357 			.num_parents = 1,
3358 			.flags = CLK_SET_RATE_PARENT,
3359 			.ops = &clk_branch2_ops,
3360 		},
3361 	},
3362 };
3363 
3364 static struct clk_branch gcc_sys_noc_usb3_prim_axi_clk = {
3365 	.halt_reg = 0x1a080,
3366 	.halt_check = BRANCH_HALT,
3367 	.clkr = {
3368 		.enable_reg = 0x1a080,
3369 		.enable_mask = BIT(0),
3370 		.hw.init = &(struct clk_init_data){
3371 			.name = "gcc_sys_noc_usb3_prim_axi_clk",
3372 			.parent_hws = (const struct clk_hw*[]){
3373 				&gcc_usb30_prim_master_clk_src.clkr.hw,
3374 			},
3375 			.num_parents = 1,
3376 			.flags = CLK_SET_RATE_PARENT,
3377 			.ops = &clk_branch2_ops,
3378 		},
3379 	},
3380 };
3381 
3382 static struct clk_branch gcc_ufs_mem_clkref_clk = {
3383 	.halt_reg = 0x8c000,
3384 	.halt_check = BRANCH_HALT,
3385 	.clkr = {
3386 		.enable_reg = 0x8c000,
3387 		.enable_mask = BIT(0),
3388 		.hw.init = &(struct clk_init_data){
3389 			.name = "gcc_ufs_mem_clkref_clk",
3390 			.ops = &clk_branch2_ops,
3391 		},
3392 	},
3393 };
3394 
3395 static struct clk_branch gcc_ufs_phy_ahb_clk = {
3396 	.halt_reg = 0x45014,
3397 	.halt_check = BRANCH_HALT,
3398 	.hwcg_reg = 0x45014,
3399 	.hwcg_bit = 1,
3400 	.clkr = {
3401 		.enable_reg = 0x45014,
3402 		.enable_mask = BIT(0),
3403 		.hw.init = &(struct clk_init_data){
3404 			.name = "gcc_ufs_phy_ahb_clk",
3405 			.ops = &clk_branch2_ops,
3406 		},
3407 	},
3408 };
3409 
3410 static struct clk_branch gcc_ufs_phy_axi_clk = {
3411 	.halt_reg = 0x45010,
3412 	.halt_check = BRANCH_HALT,
3413 	.hwcg_reg = 0x45010,
3414 	.hwcg_bit = 1,
3415 	.clkr = {
3416 		.enable_reg = 0x45010,
3417 		.enable_mask = BIT(0),
3418 		.hw.init = &(struct clk_init_data){
3419 			.name = "gcc_ufs_phy_axi_clk",
3420 			.parent_hws = (const struct clk_hw*[]){
3421 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
3422 			},
3423 			.num_parents = 1,
3424 			.flags = CLK_SET_RATE_PARENT,
3425 			.ops = &clk_branch2_ops,
3426 		},
3427 	},
3428 };
3429 
3430 static struct clk_branch gcc_ufs_phy_ice_core_clk = {
3431 	.halt_reg = 0x45044,
3432 	.halt_check = BRANCH_HALT,
3433 	.hwcg_reg = 0x45044,
3434 	.hwcg_bit = 1,
3435 	.clkr = {
3436 		.enable_reg = 0x45044,
3437 		.enable_mask = BIT(0),
3438 		.hw.init = &(struct clk_init_data){
3439 			.name = "gcc_ufs_phy_ice_core_clk",
3440 			.parent_hws = (const struct clk_hw*[]){
3441 				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,
3442 			},
3443 			.num_parents = 1,
3444 			.flags = CLK_SET_RATE_PARENT,
3445 			.ops = &clk_branch2_ops,
3446 		},
3447 	},
3448 };
3449 
3450 static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
3451 	.halt_reg = 0x45078,
3452 	.halt_check = BRANCH_HALT,
3453 	.hwcg_reg = 0x45078,
3454 	.hwcg_bit = 1,
3455 	.clkr = {
3456 		.enable_reg = 0x45078,
3457 		.enable_mask = BIT(0),
3458 		.hw.init = &(struct clk_init_data){
3459 			.name = "gcc_ufs_phy_phy_aux_clk",
3460 			.parent_hws = (const struct clk_hw*[]){
3461 				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
3462 			},
3463 			.num_parents = 1,
3464 			.flags = CLK_SET_RATE_PARENT,
3465 			.ops = &clk_branch2_ops,
3466 		},
3467 	},
3468 };
3469 
3470 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
3471 	.halt_reg = 0x4501c,
3472 	.halt_check = BRANCH_HALT_SKIP,
3473 	.clkr = {
3474 		.enable_reg = 0x4501c,
3475 		.enable_mask = BIT(0),
3476 		.hw.init = &(struct clk_init_data){
3477 			.name = "gcc_ufs_phy_rx_symbol_0_clk",
3478 			.ops = &clk_branch2_ops,
3479 		},
3480 	},
3481 };
3482 
3483 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
3484 	.halt_reg = 0x45018,
3485 	.halt_check = BRANCH_HALT_SKIP,
3486 	.clkr = {
3487 		.enable_reg = 0x45018,
3488 		.enable_mask = BIT(0),
3489 		.hw.init = &(struct clk_init_data){
3490 			.name = "gcc_ufs_phy_tx_symbol_0_clk",
3491 			.ops = &clk_branch2_ops,
3492 		},
3493 	},
3494 };
3495 
3496 static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
3497 	.halt_reg = 0x45040,
3498 	.halt_check = BRANCH_HALT,
3499 	.hwcg_reg = 0x45040,
3500 	.hwcg_bit = 1,
3501 	.clkr = {
3502 		.enable_reg = 0x45040,
3503 		.enable_mask = BIT(0),
3504 		.hw.init = &(struct clk_init_data){
3505 			.name = "gcc_ufs_phy_unipro_core_clk",
3506 			.parent_hws = (const struct clk_hw*[]){
3507 				&gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
3508 			},
3509 			.num_parents = 1,
3510 			.flags = CLK_SET_RATE_PARENT,
3511 			.ops = &clk_branch2_ops,
3512 		},
3513 	},
3514 };
3515 
3516 static struct clk_branch gcc_usb30_prim_master_clk = {
3517 	.halt_reg = 0x1a010,
3518 	.halt_check = BRANCH_HALT,
3519 	.clkr = {
3520 		.enable_reg = 0x1a010,
3521 		.enable_mask = BIT(0),
3522 		.hw.init = &(struct clk_init_data){
3523 			.name = "gcc_usb30_prim_master_clk",
3524 			.parent_hws = (const struct clk_hw*[]){
3525 				&gcc_usb30_prim_master_clk_src.clkr.hw,
3526 			},
3527 			.num_parents = 1,
3528 			.flags = CLK_SET_RATE_PARENT,
3529 			.ops = &clk_branch2_ops,
3530 		},
3531 	},
3532 };
3533 
3534 static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
3535 	.halt_reg = 0x1a018,
3536 	.halt_check = BRANCH_HALT,
3537 	.clkr = {
3538 		.enable_reg = 0x1a018,
3539 		.enable_mask = BIT(0),
3540 		.hw.init = &(struct clk_init_data){
3541 			.name = "gcc_usb30_prim_mock_utmi_clk",
3542 			.parent_hws = (const struct clk_hw*[]){
3543 				&gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
3544 			},
3545 			.num_parents = 1,
3546 			.flags = CLK_SET_RATE_PARENT,
3547 			.ops = &clk_branch2_ops,
3548 		},
3549 	},
3550 };
3551 
3552 static struct clk_branch gcc_usb30_prim_sleep_clk = {
3553 	.halt_reg = 0x1a014,
3554 	.halt_check = BRANCH_HALT,
3555 	.clkr = {
3556 		.enable_reg = 0x1a014,
3557 		.enable_mask = BIT(0),
3558 		.hw.init = &(struct clk_init_data){
3559 			.name = "gcc_usb30_prim_sleep_clk",
3560 			.ops = &clk_branch2_ops,
3561 		},
3562 	},
3563 };
3564 
3565 static struct clk_branch gcc_usb3_prim_clkref_clk = {
3566 	.halt_reg = 0x80278,
3567 	.halt_check = BRANCH_HALT,
3568 	.clkr = {
3569 		.enable_reg = 0x80278,
3570 		.enable_mask = BIT(0),
3571 		.hw.init = &(struct clk_init_data){
3572 			.name = "gcc_usb3_prim_clkref_clk",
3573 			.ops = &clk_branch2_ops,
3574 		},
3575 	},
3576 };
3577 
3578 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
3579 	.halt_reg = 0x1a054,
3580 	.halt_check = BRANCH_HALT,
3581 	.clkr = {
3582 		.enable_reg = 0x1a054,
3583 		.enable_mask = BIT(0),
3584 		.hw.init = &(struct clk_init_data){
3585 			.name = "gcc_usb3_prim_phy_com_aux_clk",
3586 			.parent_hws = (const struct clk_hw*[]){
3587 				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3588 			},
3589 			.num_parents = 1,
3590 			.flags = CLK_SET_RATE_PARENT,
3591 			.ops = &clk_branch2_ops,
3592 		},
3593 	},
3594 };
3595 
3596 static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
3597 	.halt_check = BRANCH_HALT_SKIP,
3598 	.clkr = {
3599 		.enable_reg = 0x1a058,
3600 		.enable_mask = BIT(0),
3601 		.hw.init = &(struct clk_init_data){
3602 			.name = "gcc_usb3_prim_phy_pipe_clk",
3603 			.ops = &clk_branch2_ops,
3604 		},
3605 	},
3606 };
3607 
3608 static struct clk_branch gcc_vdda_vs_clk = {
3609 	.halt_reg = 0x4200c,
3610 	.halt_check = BRANCH_HALT,
3611 	.clkr = {
3612 		.enable_reg = 0x4200c,
3613 		.enable_mask = BIT(0),
3614 		.hw.init = &(struct clk_init_data){
3615 			.name = "gcc_vdda_vs_clk",
3616 			.parent_hws = (const struct clk_hw*[]){
3617 				&gcc_vsensor_clk_src.clkr.hw,
3618 			},
3619 			.num_parents = 1,
3620 			.flags = CLK_SET_RATE_PARENT,
3621 			.ops = &clk_branch2_ops,
3622 		},
3623 	},
3624 };
3625 
3626 static struct clk_branch gcc_vddcx_vs_clk = {
3627 	.halt_reg = 0x42004,
3628 	.halt_check = BRANCH_HALT,
3629 	.clkr = {
3630 		.enable_reg = 0x42004,
3631 		.enable_mask = BIT(0),
3632 		.hw.init = &(struct clk_init_data){
3633 			.name = "gcc_vddcx_vs_clk",
3634 			.parent_hws = (const struct clk_hw*[]){
3635 				&gcc_vsensor_clk_src.clkr.hw,
3636 			},
3637 			.num_parents = 1,
3638 			.flags = CLK_SET_RATE_PARENT,
3639 			.ops = &clk_branch2_ops,
3640 		},
3641 	},
3642 };
3643 
3644 static struct clk_branch gcc_vddmx_vs_clk = {
3645 	.halt_reg = 0x42008,
3646 	.halt_check = BRANCH_HALT,
3647 	.clkr = {
3648 		.enable_reg = 0x42008,
3649 		.enable_mask = BIT(0),
3650 		.hw.init = &(struct clk_init_data){
3651 			.name = "gcc_vddmx_vs_clk",
3652 			.parent_hws = (const struct clk_hw*[]){
3653 				&gcc_vsensor_clk_src.clkr.hw,
3654 			},
3655 			.num_parents = 1,
3656 			.flags = CLK_SET_RATE_PARENT,
3657 			.ops = &clk_branch2_ops,
3658 		},
3659 	},
3660 };
3661 
3662 static struct clk_branch gcc_video_ahb_clk = {
3663 	.halt_reg = 0x17004,
3664 	.halt_check = BRANCH_HALT,
3665 	.hwcg_reg = 0x17004,
3666 	.hwcg_bit = 1,
3667 	.clkr = {
3668 		.enable_reg = 0x17004,
3669 		.enable_mask = BIT(0),
3670 		.hw.init = &(struct clk_init_data){
3671 			.name = "gcc_video_ahb_clk",
3672 			.flags = CLK_IS_CRITICAL,
3673 			.ops = &clk_branch2_ops,
3674 		},
3675 	},
3676 };
3677 
3678 static struct clk_branch gcc_video_axi0_clk = {
3679 	.halt_reg = 0x1701c,
3680 	.halt_check = BRANCH_HALT,
3681 	.clkr = {
3682 		.enable_reg = 0x1701c,
3683 		.enable_mask = BIT(0),
3684 		.hw.init = &(struct clk_init_data){
3685 			.name = "gcc_video_axi0_clk",
3686 			.ops = &clk_branch2_ops,
3687 		},
3688 	},
3689 };
3690 
3691 static struct clk_branch gcc_video_throttle_core_clk = {
3692 	.halt_reg = 0x17068,
3693 	.halt_check = BRANCH_HALT_VOTED,
3694 	.clkr = {
3695 		.enable_reg = 0x79004,
3696 		.enable_mask = BIT(28),
3697 		.hw.init = &(struct clk_init_data){
3698 			.name = "gcc_video_throttle_core_clk",
3699 			.ops = &clk_branch2_ops,
3700 		},
3701 	},
3702 };
3703 
3704 static struct clk_branch gcc_video_xo_clk = {
3705 	.halt_reg = 0x17024,
3706 	.halt_check = BRANCH_HALT,
3707 	.clkr = {
3708 		.enable_reg = 0x17024,
3709 		.enable_mask = BIT(0),
3710 		.hw.init = &(struct clk_init_data){
3711 			.name = "gcc_video_xo_clk",
3712 			.flags = CLK_IS_CRITICAL,
3713 			.ops = &clk_branch2_ops,
3714 		},
3715 	},
3716 };
3717 
3718 static struct clk_branch gcc_vs_ctrl_ahb_clk = {
3719 	.halt_reg = 0x42014,
3720 	.halt_check = BRANCH_HALT,
3721 	.hwcg_reg = 0x42014,
3722 	.hwcg_bit = 1,
3723 	.clkr = {
3724 		.enable_reg = 0x42014,
3725 		.enable_mask = BIT(0),
3726 		.hw.init = &(struct clk_init_data){
3727 			.name = "gcc_vs_ctrl_ahb_clk",
3728 			.ops = &clk_branch2_ops,
3729 		},
3730 	},
3731 };
3732 
3733 static struct clk_branch gcc_vs_ctrl_clk = {
3734 	.halt_reg = 0x42010,
3735 	.halt_check = BRANCH_HALT,
3736 	.clkr = {
3737 		.enable_reg = 0x42010,
3738 		.enable_mask = BIT(0),
3739 		.hw.init = &(struct clk_init_data){
3740 			.name = "gcc_vs_ctrl_clk",
3741 			.parent_hws = (const struct clk_hw*[]){
3742 				&gcc_vs_ctrl_clk_src.clkr.hw,
3743 			},
3744 			.num_parents = 1,
3745 			.flags = CLK_SET_RATE_PARENT,
3746 			.ops = &clk_branch2_ops,
3747 		},
3748 	},
3749 };
3750 
3751 static struct clk_branch gcc_wcss_vs_clk = {
3752 	.halt_reg = 0x42050,
3753 	.halt_check = BRANCH_HALT,
3754 	.clkr = {
3755 		.enable_reg = 0x42050,
3756 		.enable_mask = BIT(0),
3757 		.hw.init = &(struct clk_init_data){
3758 			.name = "gcc_wcss_vs_clk",
3759 			.parent_hws = (const struct clk_hw*[]){
3760 				&gcc_vsensor_clk_src.clkr.hw,
3761 			},
3762 			.num_parents = 1,
3763 			.flags = CLK_SET_RATE_PARENT,
3764 			.ops = &clk_branch2_ops,
3765 		},
3766 	},
3767 };
3768 
3769 static struct gdsc usb30_prim_gdsc = {
3770 	.gdscr = 0x1a004,
3771 	.pd = {
3772 		.name = "usb30_prim_gdsc",
3773 	},
3774 	.pwrsts = PWRSTS_OFF_ON,
3775 };
3776 
3777 static struct gdsc ufs_phy_gdsc = {
3778 	.gdscr = 0x45004,
3779 	.pd = {
3780 		.name = "ufs_phy_gdsc",
3781 	},
3782 	.pwrsts = PWRSTS_OFF_ON,
3783 };
3784 
3785 static struct gdsc camss_vfe0_gdsc = {
3786 	.gdscr = 0x54004,
3787 	.pd = {
3788 		.name = "camss_vfe0_gdsc",
3789 	},
3790 	.pwrsts = PWRSTS_OFF_ON,
3791 };
3792 
3793 static struct gdsc camss_vfe1_gdsc = {
3794 	.gdscr = 0x5403c,
3795 	.pd = {
3796 		.name = "camss_vfe1_gdsc",
3797 	},
3798 	.pwrsts = PWRSTS_OFF_ON,
3799 };
3800 
3801 static struct gdsc camss_top_gdsc = {
3802 	.gdscr = 0x5607c,
3803 	.pd = {
3804 		.name = "camss_top_gdsc",
3805 	},
3806 	.pwrsts = PWRSTS_OFF_ON,
3807 };
3808 
3809 static struct gdsc cam_cpp_gdsc = {
3810 	.gdscr = 0x560bc,
3811 	.pd = {
3812 		.name = "cam_cpp_gdsc",
3813 	},
3814 	.pwrsts = PWRSTS_OFF_ON,
3815 };
3816 
3817 static struct gdsc hlos1_vote_turing_mmu_tbu1_gdsc = {
3818 	.gdscr = 0x7d060,
3819 	.pd = {
3820 		.name = "hlos1_vote_turing_mmu_tbu1_gdsc",
3821 	},
3822 	.pwrsts = PWRSTS_OFF_ON,
3823 	.flags = VOTABLE,
3824 };
3825 
3826 static struct gdsc hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc = {
3827 	.gdscr = 0x80074,
3828 	.pd = {
3829 		.name = "hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc",
3830 	},
3831 	.pwrsts = PWRSTS_OFF_ON,
3832 	.flags = VOTABLE,
3833 };
3834 
3835 static struct gdsc hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc = {
3836 	.gdscr = 0x80084,
3837 	.pd = {
3838 		.name = "hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc",
3839 	},
3840 	.pwrsts = PWRSTS_OFF_ON,
3841 	.flags = VOTABLE,
3842 };
3843 
3844 
3845 static struct gdsc hlos1_vote_turing_mmu_tbu0_gdsc = {
3846 	.gdscr = 0x80094,
3847 	.pd = {
3848 		.name = "hlos1_vote_turing_mmu_tbu0_gdsc",
3849 	},
3850 	.pwrsts = PWRSTS_OFF_ON,
3851 	.flags = VOTABLE,
3852 };
3853 
3854 static struct gdsc *gcc_sm6125_gdscs[] = {
3855 	[USB30_PRIM_GDSC] = &usb30_prim_gdsc,
3856 	[UFS_PHY_GDSC] = &ufs_phy_gdsc,
3857 	[CAMSS_VFE0_GDSC] = &camss_vfe0_gdsc,
3858 	[CAMSS_VFE1_GDSC] = &camss_vfe1_gdsc,
3859 	[CAMSS_TOP_GDSC] = &camss_top_gdsc,
3860 	[CAM_CPP_GDSC] = &cam_cpp_gdsc,
3861 	[HLOS1_VOTE_TURING_MMU_TBU1_GDSC] = &hlos1_vote_turing_mmu_tbu1_gdsc,
3862 	[HLOS1_VOTE_MM_SNOC_MMU_TBU_RT_GDSC] = &hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc,
3863 	[HLOS1_VOTE_MM_SNOC_MMU_TBU_NRT_GDSC] = &hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc,
3864 	[HLOS1_VOTE_TURING_MMU_TBU0_GDSC] = &hlos1_vote_turing_mmu_tbu0_gdsc,
3865 };
3866 
3867 static struct clk_hw *gcc_sm6125_hws[] = {
3868 	[GPLL0_OUT_AUX2] = &gpll0_out_aux2.hw,
3869 	[GPLL0_OUT_MAIN] = &gpll0_out_main.hw,
3870 	[GPLL6_OUT_MAIN] = &gpll6_out_main.hw,
3871 	[GPLL7_OUT_MAIN] = &gpll7_out_main.hw,
3872 	[GPLL8_OUT_MAIN] = &gpll8_out_main.hw,
3873 	[GPLL9_OUT_MAIN] = &gpll9_out_main.hw,
3874 };
3875 
3876 static struct clk_regmap *gcc_sm6125_clocks[] = {
3877 	[GCC_AHB2PHY_CSI_CLK] = &gcc_ahb2phy_csi_clk.clkr,
3878 	[GCC_AHB2PHY_USB_CLK] = &gcc_ahb2phy_usb_clk.clkr,
3879 	[GCC_APC_VS_CLK] = &gcc_apc_vs_clk.clkr,
3880 	[GCC_BIMC_GPU_AXI_CLK] = &gcc_bimc_gpu_axi_clk.clkr,
3881 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3882 	[GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr,
3883 	[GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr,
3884 	[GCC_CAMSS_AHB_CLK_SRC] = &gcc_camss_ahb_clk_src.clkr,
3885 	[GCC_CAMSS_CCI_AHB_CLK] = &gcc_camss_cci_ahb_clk.clkr,
3886 	[GCC_CAMSS_CCI_CLK] = &gcc_camss_cci_clk.clkr,
3887 	[GCC_CAMSS_CCI_CLK_SRC] = &gcc_camss_cci_clk_src.clkr,
3888 	[GCC_CAMSS_CPHY_CSID0_CLK] = &gcc_camss_cphy_csid0_clk.clkr,
3889 	[GCC_CAMSS_CPHY_CSID1_CLK] = &gcc_camss_cphy_csid1_clk.clkr,
3890 	[GCC_CAMSS_CPHY_CSID2_CLK] = &gcc_camss_cphy_csid2_clk.clkr,
3891 	[GCC_CAMSS_CPHY_CSID3_CLK] = &gcc_camss_cphy_csid3_clk.clkr,
3892 	[GCC_CAMSS_CPP_AHB_CLK] = &gcc_camss_cpp_ahb_clk.clkr,
3893 	[GCC_CAMSS_CPP_AXI_CLK] = &gcc_camss_cpp_axi_clk.clkr,
3894 	[GCC_CAMSS_CPP_CLK] = &gcc_camss_cpp_clk.clkr,
3895 	[GCC_CAMSS_CPP_CLK_SRC] = &gcc_camss_cpp_clk_src.clkr,
3896 	[GCC_CAMSS_CPP_VBIF_AHB_CLK] = &gcc_camss_cpp_vbif_ahb_clk.clkr,
3897 	[GCC_CAMSS_CSI0_AHB_CLK] = &gcc_camss_csi0_ahb_clk.clkr,
3898 	[GCC_CAMSS_CSI0_CLK] = &gcc_camss_csi0_clk.clkr,
3899 	[GCC_CAMSS_CSI0_CLK_SRC] = &gcc_camss_csi0_clk_src.clkr,
3900 	[GCC_CAMSS_CSI0PHYTIMER_CLK] = &gcc_camss_csi0phytimer_clk.clkr,
3901 	[GCC_CAMSS_CSI0PHYTIMER_CLK_SRC] = &gcc_camss_csi0phytimer_clk_src.clkr,
3902 	[GCC_CAMSS_CSI0PIX_CLK] = &gcc_camss_csi0pix_clk.clkr,
3903 	[GCC_CAMSS_CSI0RDI_CLK] = &gcc_camss_csi0rdi_clk.clkr,
3904 	[GCC_CAMSS_CSI1_AHB_CLK] = &gcc_camss_csi1_ahb_clk.clkr,
3905 	[GCC_CAMSS_CSI1_CLK] = &gcc_camss_csi1_clk.clkr,
3906 	[GCC_CAMSS_CSI1_CLK_SRC] = &gcc_camss_csi1_clk_src.clkr,
3907 	[GCC_CAMSS_CSI1PHYTIMER_CLK] = &gcc_camss_csi1phytimer_clk.clkr,
3908 	[GCC_CAMSS_CSI1PHYTIMER_CLK_SRC] = &gcc_camss_csi1phytimer_clk_src.clkr,
3909 	[GCC_CAMSS_CSI1PIX_CLK] = &gcc_camss_csi1pix_clk.clkr,
3910 	[GCC_CAMSS_CSI1RDI_CLK] = &gcc_camss_csi1rdi_clk.clkr,
3911 	[GCC_CAMSS_CSI2_AHB_CLK] = &gcc_camss_csi2_ahb_clk.clkr,
3912 	[GCC_CAMSS_CSI2_CLK] = &gcc_camss_csi2_clk.clkr,
3913 	[GCC_CAMSS_CSI2_CLK_SRC] = &gcc_camss_csi2_clk_src.clkr,
3914 	[GCC_CAMSS_CSI2PHYTIMER_CLK] = &gcc_camss_csi2phytimer_clk.clkr,
3915 	[GCC_CAMSS_CSI2PHYTIMER_CLK_SRC] = &gcc_camss_csi2phytimer_clk_src.clkr,
3916 	[GCC_CAMSS_CSI2PIX_CLK] = &gcc_camss_csi2pix_clk.clkr,
3917 	[GCC_CAMSS_CSI2RDI_CLK] = &gcc_camss_csi2rdi_clk.clkr,
3918 	[GCC_CAMSS_CSI3_AHB_CLK] = &gcc_camss_csi3_ahb_clk.clkr,
3919 	[GCC_CAMSS_CSI3_CLK] = &gcc_camss_csi3_clk.clkr,
3920 	[GCC_CAMSS_CSI3_CLK_SRC] = &gcc_camss_csi3_clk_src.clkr,
3921 	[GCC_CAMSS_CSI3PIX_CLK] = &gcc_camss_csi3pix_clk.clkr,
3922 	[GCC_CAMSS_CSI3RDI_CLK] = &gcc_camss_csi3rdi_clk.clkr,
3923 	[GCC_CAMSS_CSI_VFE0_CLK] = &gcc_camss_csi_vfe0_clk.clkr,
3924 	[GCC_CAMSS_CSI_VFE1_CLK] = &gcc_camss_csi_vfe1_clk.clkr,
3925 	[GCC_CAMSS_CSIPHY0_CLK] = &gcc_camss_csiphy0_clk.clkr,
3926 	[GCC_CAMSS_CSIPHY1_CLK] = &gcc_camss_csiphy1_clk.clkr,
3927 	[GCC_CAMSS_CSIPHY2_CLK] = &gcc_camss_csiphy2_clk.clkr,
3928 	[GCC_CAMSS_CSIPHY_CLK_SRC] = &gcc_camss_csiphy_clk_src.clkr,
3929 	[GCC_CAMSS_GP0_CLK] = &gcc_camss_gp0_clk.clkr,
3930 	[GCC_CAMSS_GP0_CLK_SRC] = &gcc_camss_gp0_clk_src.clkr,
3931 	[GCC_CAMSS_GP1_CLK] = &gcc_camss_gp1_clk.clkr,
3932 	[GCC_CAMSS_GP1_CLK_SRC] = &gcc_camss_gp1_clk_src.clkr,
3933 	[GCC_CAMSS_ISPIF_AHB_CLK] = &gcc_camss_ispif_ahb_clk.clkr,
3934 	[GCC_CAMSS_JPEG_AHB_CLK] = &gcc_camss_jpeg_ahb_clk.clkr,
3935 	[GCC_CAMSS_JPEG_AXI_CLK] = &gcc_camss_jpeg_axi_clk.clkr,
3936 	[GCC_CAMSS_JPEG_CLK] = &gcc_camss_jpeg_clk.clkr,
3937 	[GCC_CAMSS_JPEG_CLK_SRC] = &gcc_camss_jpeg_clk_src.clkr,
3938 	[GCC_CAMSS_MCLK0_CLK] = &gcc_camss_mclk0_clk.clkr,
3939 	[GCC_CAMSS_MCLK0_CLK_SRC] = &gcc_camss_mclk0_clk_src.clkr,
3940 	[GCC_CAMSS_MCLK1_CLK] = &gcc_camss_mclk1_clk.clkr,
3941 	[GCC_CAMSS_MCLK1_CLK_SRC] = &gcc_camss_mclk1_clk_src.clkr,
3942 	[GCC_CAMSS_MCLK2_CLK] = &gcc_camss_mclk2_clk.clkr,
3943 	[GCC_CAMSS_MCLK2_CLK_SRC] = &gcc_camss_mclk2_clk_src.clkr,
3944 	[GCC_CAMSS_MCLK3_CLK] = &gcc_camss_mclk3_clk.clkr,
3945 	[GCC_CAMSS_MCLK3_CLK_SRC] = &gcc_camss_mclk3_clk_src.clkr,
3946 	[GCC_CAMSS_MICRO_AHB_CLK] = &gcc_camss_micro_ahb_clk.clkr,
3947 	[GCC_CAMSS_THROTTLE_NRT_AXI_CLK] = &gcc_camss_throttle_nrt_axi_clk.clkr,
3948 	[GCC_CAMSS_THROTTLE_RT_AXI_CLK] = &gcc_camss_throttle_rt_axi_clk.clkr,
3949 	[GCC_CAMSS_TOP_AHB_CLK] = &gcc_camss_top_ahb_clk.clkr,
3950 	[GCC_CAMSS_VFE0_AHB_CLK] = &gcc_camss_vfe0_ahb_clk.clkr,
3951 	[GCC_CAMSS_VFE0_CLK] = &gcc_camss_vfe0_clk.clkr,
3952 	[GCC_CAMSS_VFE0_CLK_SRC] = &gcc_camss_vfe0_clk_src.clkr,
3953 	[GCC_CAMSS_VFE0_STREAM_CLK] = &gcc_camss_vfe0_stream_clk.clkr,
3954 	[GCC_CAMSS_VFE1_AHB_CLK] = &gcc_camss_vfe1_ahb_clk.clkr,
3955 	[GCC_CAMSS_VFE1_CLK] = &gcc_camss_vfe1_clk.clkr,
3956 	[GCC_CAMSS_VFE1_CLK_SRC] = &gcc_camss_vfe1_clk_src.clkr,
3957 	[GCC_CAMSS_VFE1_STREAM_CLK] = &gcc_camss_vfe1_stream_clk.clkr,
3958 	[GCC_CAMSS_VFE_TSCTR_CLK] = &gcc_camss_vfe_tsctr_clk.clkr,
3959 	[GCC_CAMSS_VFE_VBIF_AHB_CLK] = &gcc_camss_vfe_vbif_ahb_clk.clkr,
3960 	[GCC_CAMSS_VFE_VBIF_AXI_CLK] = &gcc_camss_vfe_vbif_axi_clk.clkr,
3961 	[GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr,
3962 	[GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr,
3963 	[GCC_CE1_CLK] = &gcc_ce1_clk.clkr,
3964 	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
3965 	[GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr,
3966 	[GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr,
3967 	[GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr,
3968 	[GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
3969 	[GCC_DISP_THROTTLE_CORE_CLK] = &gcc_disp_throttle_core_clk.clkr,
3970 	[GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr,
3971 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3972 	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3973 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3974 	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3975 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3976 	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
3977 	[GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,
3978 	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
3979 	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
3980 	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
3981 	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
3982 	[GCC_GPU_THROTTLE_CORE_CLK] = &gcc_gpu_throttle_core_clk.clkr,
3983 	[GCC_GPU_THROTTLE_XO_CLK] = &gcc_gpu_throttle_xo_clk.clkr,
3984 	[GCC_MSS_VS_CLK] = &gcc_mss_vs_clk.clkr,
3985 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3986 	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
3987 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3988 	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
3989 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
3990 	[GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
3991 	[GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
3992 	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
3993 	[GCC_QMIP_GPU_CFG_AHB_CLK] = &gcc_qmip_gpu_cfg_ahb_clk.clkr,
3994 	[GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
3995 	[GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,
3996 	[GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,
3997 	[GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
3998 	[GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
3999 	[GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
4000 	[GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
4001 	[GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
4002 	[GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
4003 	[GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
4004 	[GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
4005 	[GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
4006 	[GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
4007 	[GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
4008 	[GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
4009 	[GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
4010 	[GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
4011 	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
4012 	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
4013 	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
4014 	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
4015 	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
4016 	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
4017 	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
4018 	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
4019 	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
4020 	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
4021 	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
4022 	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
4023 	[GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
4024 	[GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
4025 	[GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
4026 	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
4027 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
4028 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
4029 	[GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,
4030 	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
4031 	[GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr,
4032 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
4033 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
4034 	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
4035 	[GCC_SYS_NOC_COMPUTE_SF_AXI_CLK] = &gcc_sys_noc_compute_sf_axi_clk.clkr,
4036 	[GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,
4037 	[GCC_SYS_NOC_UFS_PHY_AXI_CLK] = &gcc_sys_noc_ufs_phy_axi_clk.clkr,
4038 	[GCC_SYS_NOC_USB3_PRIM_AXI_CLK] = &gcc_sys_noc_usb3_prim_axi_clk.clkr,
4039 	[GCC_UFS_MEM_CLKREF_CLK] = &gcc_ufs_mem_clkref_clk.clkr,
4040 	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
4041 	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
4042 	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
4043 	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
4044 	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
4045 	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
4046 	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
4047 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
4048 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
4049 	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
4050 	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] =
4051 		&gcc_ufs_phy_unipro_core_clk_src.clkr,
4052 	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
4053 	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
4054 	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
4055 	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] =
4056 		&gcc_usb30_prim_mock_utmi_clk_src.clkr,
4057 	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
4058 	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
4059 	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
4060 	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
4061 	[GCC_VDDA_VS_CLK] = &gcc_vdda_vs_clk.clkr,
4062 	[GCC_VDDCX_VS_CLK] = &gcc_vddcx_vs_clk.clkr,
4063 	[GCC_VDDMX_VS_CLK] = &gcc_vddmx_vs_clk.clkr,
4064 	[GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr,
4065 	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
4066 	[GCC_VIDEO_THROTTLE_CORE_CLK] = &gcc_video_throttle_core_clk.clkr,
4067 	[GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr,
4068 	[GCC_VS_CTRL_AHB_CLK] = &gcc_vs_ctrl_ahb_clk.clkr,
4069 	[GCC_VS_CTRL_CLK] = &gcc_vs_ctrl_clk.clkr,
4070 	[GCC_VS_CTRL_CLK_SRC] = &gcc_vs_ctrl_clk_src.clkr,
4071 	[GCC_VSENSOR_CLK_SRC] = &gcc_vsensor_clk_src.clkr,
4072 	[GCC_WCSS_VS_CLK] = &gcc_wcss_vs_clk.clkr,
4073 	[GPLL0_OUT_EARLY] = &gpll0_out_early.clkr,
4074 	[GPLL3_OUT_EARLY] = &gpll3_out_early.clkr,
4075 	[GPLL4_OUT_MAIN] = &gpll4_out_main.clkr,
4076 	[GPLL5_OUT_MAIN] = &gpll5_out_main.clkr,
4077 	[GPLL6_OUT_EARLY] = &gpll6_out_early.clkr,
4078 	[GPLL7_OUT_EARLY] = &gpll7_out_early.clkr,
4079 	[GPLL8_OUT_EARLY] = &gpll8_out_early.clkr,
4080 	[GPLL9_OUT_EARLY] = &gpll9_out_early.clkr,
4081 	[GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,
4082 };
4083 
4084 static const struct qcom_reset_map gcc_sm6125_resets[] = {
4085 	[GCC_QUSB2PHY_PRIM_BCR] = { 0x1c000 },
4086 	[GCC_QUSB2PHY_SEC_BCR] = { 0x1c004 },
4087 	[GCC_UFS_PHY_BCR] = { 0x45000 },
4088 	[GCC_USB30_PRIM_BCR] = { 0x1a000 },
4089 	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x1d000 },
4090 	[GCC_USB3PHY_PHY_PRIM_SP0_BCR] = { 0x1b008 },
4091 	[GCC_USB3_PHY_PRIM_SP0_BCR] = { 0x1b000 },
4092 	[GCC_CAMSS_MICRO_BCR] = { 0x560ac },
4093 };
4094 
4095 static struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
4096 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
4097 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
4098 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
4099 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
4100 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
4101 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
4102 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
4103 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
4104 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
4105 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
4106 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
4107 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
4108 };
4109 
4110 static const struct regmap_config gcc_sm6125_regmap_config = {
4111 	.reg_bits = 32,
4112 	.reg_stride = 4,
4113 	.val_bits = 32,
4114 	.max_register = 0xc7000,
4115 	.fast_io = true,
4116 };
4117 
4118 static const struct qcom_cc_desc gcc_sm6125_desc = {
4119 	.config = &gcc_sm6125_regmap_config,
4120 	.clks = gcc_sm6125_clocks,
4121 	.num_clks = ARRAY_SIZE(gcc_sm6125_clocks),
4122 	.clk_hws = gcc_sm6125_hws,
4123 	.num_clk_hws = ARRAY_SIZE(gcc_sm6125_hws),
4124 	.resets = gcc_sm6125_resets,
4125 	.num_resets = ARRAY_SIZE(gcc_sm6125_resets),
4126 	.gdscs = gcc_sm6125_gdscs,
4127 	.num_gdscs = ARRAY_SIZE(gcc_sm6125_gdscs),
4128 };
4129 
4130 static const struct of_device_id gcc_sm6125_match_table[] = {
4131 	{ .compatible = "qcom,gcc-sm6125" },
4132 	{ }
4133 };
4134 MODULE_DEVICE_TABLE(of, gcc_sm6125_match_table);
4135 
4136 static int gcc_sm6125_probe(struct platform_device *pdev)
4137 {
4138 	struct regmap *regmap;
4139 	int ret;
4140 
4141 	regmap = qcom_cc_map(pdev, &gcc_sm6125_desc);
4142 	if (IS_ERR(regmap))
4143 		return PTR_ERR(regmap);
4144 
4145 	/*
4146 	 * Disable the GPLL0 active input to video block via
4147 	 * MISC registers.
4148 	 */
4149 	regmap_update_bits(regmap, 0x80258, 0x1, 0x1);
4150 
4151 	/*
4152 	 * Enable DUAL_EDGE mode for MCLK RCGs
4153 	 * This is required to enable MND divider mode
4154 	 */
4155 	regmap_update_bits(regmap, 0x51004, 0x3000, 0x2000);
4156 	regmap_update_bits(regmap, 0x51020, 0x3000, 0x2000);
4157 	regmap_update_bits(regmap, 0x5103c, 0x3000, 0x2000);
4158 	regmap_update_bits(regmap, 0x51058, 0x3000, 0x2000);
4159 
4160 	ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,
4161 						ARRAY_SIZE(gcc_dfs_clocks));
4162 	if (ret)
4163 		return ret;
4164 
4165 	return qcom_cc_really_probe(pdev, &gcc_sm6125_desc, regmap);
4166 }
4167 
4168 static struct platform_driver gcc_sm6125_driver = {
4169 	.probe = gcc_sm6125_probe,
4170 	.driver = {
4171 		.name = "gcc-sm6125",
4172 		.of_match_table = gcc_sm6125_match_table,
4173 	},
4174 };
4175 
4176 static int __init gcc_sm6125_init(void)
4177 {
4178 	return platform_driver_register(&gcc_sm6125_driver);
4179 }
4180 subsys_initcall(gcc_sm6125_init);
4181 
4182 static void __exit gcc_sm6125_exit(void)
4183 {
4184 	platform_driver_unregister(&gcc_sm6125_driver);
4185 }
4186 module_exit(gcc_sm6125_exit);
4187 
4188 MODULE_DESCRIPTION("QTI GCC SM6125 Driver");
4189 MODULE_LICENSE("GPL v2");
4190