]> Git Repo - J-linux.git/blob - drivers/clk/qcom/gcc-sm6125.c
Merge tag 'amd-drm-next-6.5-2023-06-09' of https://gitlab.freedesktop.org/agd5f/linux...
[J-linux.git] / drivers / clk / qcom / gcc-sm6125.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (c) 2021, Konrad Dybcio <[email protected]>
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");
This page took 0.296374 seconds and 4 git commands to generate.