]> Git Repo - linux.git/blob - drivers/clk/qcom/gcc-sdm845.c
Linux 6.14-rc3
[linux.git] / drivers / clk / qcom / gcc-sdm845.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2018, 2020, The Linux Foundation. All rights reserved.
4  */
5
6 #include <linux/kernel.h>
7 #include <linux/bitops.h>
8 #include <linux/err.h>
9 #include <linux/platform_device.h>
10 #include <linux/module.h>
11 #include <linux/of.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-sdm845.h>
17
18 #include "common.h"
19 #include "clk-regmap.h"
20 #include "clk-pll.h"
21 #include "clk-rcg.h"
22 #include "clk-branch.h"
23 #include "clk-alpha-pll.h"
24 #include "gdsc.h"
25 #include "reset.h"
26
27 enum {
28         P_BI_TCXO,
29         P_AUD_REF_CLK,
30         P_GPLL0_OUT_EVEN,
31         P_GPLL0_OUT_MAIN,
32         P_GPLL4_OUT_MAIN,
33         P_GPLL6_OUT_MAIN,
34         P_SLEEP_CLK,
35 };
36
37 static struct clk_alpha_pll gpll0 = {
38         .offset = 0x0,
39         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
40         .clkr = {
41                 .enable_reg = 0x52000,
42                 .enable_mask = BIT(0),
43                 .hw.init = &(struct clk_init_data){
44                         .name = "gpll0",
45                         .parent_data = &(const struct clk_parent_data){
46                                 .fw_name = "bi_tcxo", .name = "bi_tcxo",
47                         },
48                         .num_parents = 1,
49                         .ops = &clk_alpha_pll_fixed_fabia_ops,
50                 },
51         },
52 };
53
54 static struct clk_alpha_pll gpll4 = {
55         .offset = 0x76000,
56         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
57         .clkr = {
58                 .enable_reg = 0x52000,
59                 .enable_mask = BIT(4),
60                 .hw.init = &(struct clk_init_data){
61                         .name = "gpll4",
62                         .parent_data = &(const struct clk_parent_data){
63                                 .fw_name = "bi_tcxo", .name = "bi_tcxo",
64                         },
65                         .num_parents = 1,
66                         .ops = &clk_alpha_pll_fixed_fabia_ops,
67                 },
68         },
69 };
70
71 static struct clk_alpha_pll gpll6 = {
72         .offset = 0x13000,
73         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
74         .clkr = {
75                 .enable_reg = 0x52000,
76                 .enable_mask = BIT(6),
77                 .hw.init = &(struct clk_init_data){
78                         .name = "gpll6",
79                         .parent_data = &(const struct clk_parent_data){
80                                 .fw_name = "bi_tcxo", .name = "bi_tcxo",
81                         },
82                         .num_parents = 1,
83                         .ops = &clk_alpha_pll_fixed_fabia_ops,
84                 },
85         },
86 };
87
88 static const struct clk_div_table post_div_table_fabia_even[] = {
89         { 0x0, 1 },
90         { 0x1, 2 },
91         { 0x3, 4 },
92         { 0x7, 8 },
93         { }
94 };
95
96 static struct clk_alpha_pll_postdiv gpll0_out_even = {
97         .offset = 0x0,
98         .post_div_shift = 8,
99         .post_div_table = post_div_table_fabia_even,
100         .num_post_div = ARRAY_SIZE(post_div_table_fabia_even),
101         .width = 4,
102         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
103         .clkr.hw.init = &(struct clk_init_data){
104                 .name = "gpll0_out_even",
105                 .parent_hws = (const struct clk_hw*[]){
106                         &gpll0.clkr.hw,
107                 },
108                 .num_parents = 1,
109                 .ops = &clk_alpha_pll_postdiv_fabia_ops,
110         },
111 };
112
113 static const struct parent_map gcc_parent_map_0[] = {
114         { P_BI_TCXO, 0 },
115         { P_GPLL0_OUT_MAIN, 1 },
116         { P_GPLL0_OUT_EVEN, 6 },
117 };
118
119 static const struct clk_parent_data gcc_parent_data_0[] = {
120         { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
121         { .hw = &gpll0.clkr.hw },
122         { .hw = &gpll0_out_even.clkr.hw },
123 };
124
125 static const struct parent_map gcc_parent_map_1[] = {
126         { P_BI_TCXO, 0 },
127         { P_GPLL0_OUT_MAIN, 1 },
128         { P_SLEEP_CLK, 5 },
129         { P_GPLL0_OUT_EVEN, 6 },
130 };
131
132 static const struct clk_parent_data gcc_parent_data_1[] = {
133         { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
134         { .hw = &gpll0.clkr.hw },
135         { .fw_name = "sleep_clk", .name = "core_pi_sleep_clk" },
136         { .hw = &gpll0_out_even.clkr.hw },
137 };
138
139 static const struct parent_map gcc_parent_map_2[] = {
140         { P_BI_TCXO, 0 },
141         { P_SLEEP_CLK, 5 },
142 };
143
144 static const struct clk_parent_data gcc_parent_data_2[] = {
145         { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
146         { .fw_name = "sleep_clk", .name = "core_pi_sleep_clk" },
147 };
148
149 static const struct parent_map gcc_parent_map_3[] = {
150         { P_BI_TCXO, 0 },
151         { P_GPLL0_OUT_MAIN, 1 },
152 };
153
154 static const struct clk_parent_data gcc_parent_data_3[] = {
155         { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
156         { .hw = &gpll0.clkr.hw },
157 };
158
159 static const struct parent_map gcc_parent_map_4[] = {
160         { P_BI_TCXO, 0 },
161 };
162
163 static const struct clk_parent_data gcc_parent_data_4[] = {
164         { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
165 };
166
167 static const struct parent_map gcc_parent_map_6[] = {
168         { P_BI_TCXO, 0 },
169         { P_GPLL0_OUT_MAIN, 1 },
170         { P_AUD_REF_CLK, 2 },
171         { P_GPLL0_OUT_EVEN, 6 },
172 };
173
174 static const struct clk_parent_data gcc_parent_data_6[] = {
175         { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
176         { .hw = &gpll0.clkr.hw },
177         { .fw_name = "aud_ref_clk", .name = "aud_ref_clk" },
178         { .hw = &gpll0_out_even.clkr.hw },
179 };
180
181 static const struct clk_parent_data gcc_parent_data_7_ao[] = {
182         { .fw_name = "bi_tcxo_ao", .name = "bi_tcxo_ao" },
183         { .hw = &gpll0.clkr.hw },
184         { .hw = &gpll0_out_even.clkr.hw },
185         { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" },
186 };
187
188 static const struct clk_parent_data gcc_parent_data_8[] = {
189         { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
190         { .hw = &gpll0.clkr.hw },
191         { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" },
192 };
193
194 static const struct clk_parent_data gcc_parent_data_8_ao[] = {
195         { .fw_name = "bi_tcxo_ao", .name = "bi_tcxo_ao" },
196         { .hw = &gpll0.clkr.hw },
197         { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" },
198 };
199
200 static const struct parent_map gcc_parent_map_10[] = {
201         { P_BI_TCXO, 0 },
202         { P_GPLL0_OUT_MAIN, 1 },
203         { P_GPLL4_OUT_MAIN, 5 },
204         { P_GPLL0_OUT_EVEN, 6 },
205 };
206
207 static const struct clk_parent_data gcc_parent_data_10[] = {
208         { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
209         { .hw = &gpll0.clkr.hw },
210         { .hw = &gpll4.clkr.hw },
211         { .hw = &gpll0_out_even.clkr.hw },
212 };
213
214 static const struct parent_map gcc_parent_map_11[] = {
215         { P_BI_TCXO, 0 },
216         { P_GPLL0_OUT_MAIN, 1 },
217         { P_GPLL6_OUT_MAIN, 2 },
218         { P_GPLL0_OUT_EVEN, 6 },
219 };
220
221 static const struct clk_parent_data gcc_parent_data_11[] = {
222         { .fw_name = "bi_tcxo", .name = "bi_tcxo" },
223         { .hw = &gpll0.clkr.hw },
224         { .hw = &gpll6.clkr.hw },
225         { .hw = &gpll0_out_even.clkr.hw },
226 };
227
228 static const struct freq_tbl ftbl_gcc_cpuss_ahb_clk_src[] = {
229         F(19200000, P_BI_TCXO, 1, 0, 0),
230         { }
231 };
232
233 static struct clk_rcg2 gcc_cpuss_ahb_clk_src = {
234         .cmd_rcgr = 0x48014,
235         .mnd_width = 0,
236         .hid_width = 5,
237         .parent_map = gcc_parent_map_0,
238         .freq_tbl = ftbl_gcc_cpuss_ahb_clk_src,
239         .clkr.hw.init = &(struct clk_init_data){
240                 .name = "gcc_cpuss_ahb_clk_src",
241                 .parent_data = gcc_parent_data_7_ao,
242                 .num_parents = ARRAY_SIZE(gcc_parent_data_7_ao),
243                 .ops = &clk_rcg2_ops,
244         },
245 };
246
247 static const struct freq_tbl ftbl_gcc_cpuss_rbcpr_clk_src[] = {
248         F(19200000, P_BI_TCXO, 1, 0, 0),
249         { }
250 };
251
252 static struct clk_rcg2 gcc_cpuss_rbcpr_clk_src = {
253         .cmd_rcgr = 0x4815c,
254         .mnd_width = 0,
255         .hid_width = 5,
256         .parent_map = gcc_parent_map_3,
257         .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,
258         .clkr.hw.init = &(struct clk_init_data){
259                 .name = "gcc_cpuss_rbcpr_clk_src",
260                 .parent_data = gcc_parent_data_8_ao,
261                 .num_parents = ARRAY_SIZE(gcc_parent_data_8_ao),
262                 .ops = &clk_rcg2_ops,
263         },
264 };
265
266 static const struct freq_tbl ftbl_gcc_sdm670_cpuss_rbcpr_clk_src[] = {
267         F(19200000, P_BI_TCXO, 1, 0, 0),
268         F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
269         { }
270 };
271
272 static struct clk_rcg2 gcc_sdm670_cpuss_rbcpr_clk_src = {
273         .cmd_rcgr = 0x4815c,
274         .mnd_width = 0,
275         .hid_width = 5,
276         .parent_map = gcc_parent_map_3,
277         .freq_tbl = ftbl_gcc_sdm670_cpuss_rbcpr_clk_src,
278         .clkr.hw.init = &(struct clk_init_data){
279                 .name = "gcc_cpuss_rbcpr_clk_src",
280                 .parent_data = gcc_parent_data_8_ao,
281                 .num_parents = ARRAY_SIZE(gcc_parent_data_8_ao),
282                 .ops = &clk_rcg2_ops,
283         },
284 };
285
286 static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
287         { }
288 };
289
290 static struct clk_rcg2 gcc_gp1_clk_src = {
291         .cmd_rcgr = 0x64004,
292         .mnd_width = 8,
293         .hid_width = 5,
294         .parent_map = gcc_parent_map_1,
295         .freq_tbl = ftbl_gcc_gp1_clk_src,
296         .clkr.hw.init = &(struct clk_init_data){
297                 .name = "gcc_gp1_clk_src",
298                 .parent_data = gcc_parent_data_1,
299                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
300                 .ops = &clk_rcg2_gp_ops,
301         },
302 };
303
304 static struct clk_rcg2 gcc_gp2_clk_src = {
305         .cmd_rcgr = 0x65004,
306         .mnd_width = 8,
307         .hid_width = 5,
308         .parent_map = gcc_parent_map_1,
309         .freq_tbl = ftbl_gcc_gp1_clk_src,
310         .clkr.hw.init = &(struct clk_init_data){
311                 .name = "gcc_gp2_clk_src",
312                 .parent_data = gcc_parent_data_1,
313                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
314                 .ops = &clk_rcg2_gp_ops,
315         },
316 };
317
318 static struct clk_rcg2 gcc_gp3_clk_src = {
319         .cmd_rcgr = 0x66004,
320         .mnd_width = 8,
321         .hid_width = 5,
322         .parent_map = gcc_parent_map_1,
323         .freq_tbl = ftbl_gcc_gp1_clk_src,
324         .clkr.hw.init = &(struct clk_init_data){
325                 .name = "gcc_gp3_clk_src",
326                 .parent_data = gcc_parent_data_1,
327                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
328                 .ops = &clk_rcg2_gp_ops,
329         },
330 };
331
332 static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
333         F(9600000, P_BI_TCXO, 2, 0, 0),
334         F(19200000, P_BI_TCXO, 1, 0, 0),
335         { }
336 };
337
338 static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
339         .cmd_rcgr = 0x6b028,
340         .mnd_width = 16,
341         .hid_width = 5,
342         .parent_map = gcc_parent_map_2,
343         .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
344         .clkr.hw.init = &(struct clk_init_data){
345                 .name = "gcc_pcie_0_aux_clk_src",
346                 .parent_data = gcc_parent_data_2,
347                 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
348                 .ops = &clk_rcg2_ops,
349         },
350 };
351
352 static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
353         .cmd_rcgr = 0x8d028,
354         .mnd_width = 16,
355         .hid_width = 5,
356         .parent_map = gcc_parent_map_2,
357         .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
358         .clkr.hw.init = &(struct clk_init_data){
359                 .name = "gcc_pcie_1_aux_clk_src",
360                 .parent_data = gcc_parent_data_2,
361                 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
362                 .ops = &clk_rcg2_ops,
363         },
364 };
365
366 static const struct freq_tbl ftbl_gcc_pcie_phy_refgen_clk_src[] = {
367         F(19200000, P_BI_TCXO, 1, 0, 0),
368         F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
369         { }
370 };
371
372 static struct clk_rcg2 gcc_pcie_phy_refgen_clk_src = {
373         .cmd_rcgr = 0x6f014,
374         .mnd_width = 0,
375         .hid_width = 5,
376         .parent_map = gcc_parent_map_0,
377         .freq_tbl = ftbl_gcc_pcie_phy_refgen_clk_src,
378         .clkr.hw.init = &(struct clk_init_data){
379                 .name = "gcc_pcie_phy_refgen_clk_src",
380                 .parent_data = gcc_parent_data_0,
381                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
382                 .ops = &clk_rcg2_ops,
383         },
384 };
385
386 static const struct freq_tbl ftbl_gcc_qspi_core_clk_src[] = {
387         F(19200000, P_BI_TCXO, 1, 0, 0),
388         F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
389         F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
390         F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
391         { }
392 };
393
394 static struct clk_rcg2 gcc_qspi_core_clk_src = {
395         .cmd_rcgr = 0x4b008,
396         .mnd_width = 0,
397         .hid_width = 5,
398         .parent_map = gcc_parent_map_0,
399         .freq_tbl = ftbl_gcc_qspi_core_clk_src,
400         .clkr.hw.init = &(struct clk_init_data){
401                 .name = "gcc_qspi_core_clk_src",
402                 .parent_data = gcc_parent_data_0,
403                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
404                 .ops = &clk_rcg2_floor_ops,
405         },
406 };
407
408 static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
409         F(9600000, P_BI_TCXO, 2, 0, 0),
410         F(19200000, P_BI_TCXO, 1, 0, 0),
411         F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
412         { }
413 };
414
415 static struct clk_rcg2 gcc_pdm2_clk_src = {
416         .cmd_rcgr = 0x33010,
417         .mnd_width = 0,
418         .hid_width = 5,
419         .parent_map = gcc_parent_map_0,
420         .freq_tbl = ftbl_gcc_pdm2_clk_src,
421         .clkr.hw.init = &(struct clk_init_data){
422                 .name = "gcc_pdm2_clk_src",
423                 .parent_data = gcc_parent_data_0,
424                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
425                 .ops = &clk_rcg2_ops,
426         },
427 };
428
429 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
430         F(7372800, P_GPLL0_OUT_EVEN, 1, 384, 15625),
431         F(14745600, P_GPLL0_OUT_EVEN, 1, 768, 15625),
432         F(19200000, P_BI_TCXO, 1, 0, 0),
433         F(29491200, P_GPLL0_OUT_EVEN, 1, 1536, 15625),
434         F(32000000, P_GPLL0_OUT_EVEN, 1, 8, 75),
435         F(48000000, P_GPLL0_OUT_EVEN, 1, 4, 25),
436         F(64000000, P_GPLL0_OUT_EVEN, 1, 16, 75),
437         F(80000000, P_GPLL0_OUT_EVEN, 1, 4, 15),
438         F(96000000, P_GPLL0_OUT_EVEN, 1, 8, 25),
439         F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0),
440         F(102400000, P_GPLL0_OUT_EVEN, 1, 128, 375),
441         F(112000000, P_GPLL0_OUT_EVEN, 1, 28, 75),
442         F(117964800, P_GPLL0_OUT_EVEN, 1, 6144, 15625),
443         F(120000000, P_GPLL0_OUT_EVEN, 2.5, 0, 0),
444         F(128000000, P_GPLL0_OUT_MAIN, 1, 16, 75),
445         { }
446 };
447
448 static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {
449         .name = "gcc_qupv3_wrap0_s0_clk_src",
450         .parent_data = gcc_parent_data_0,
451         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
452         .ops = &clk_rcg2_ops,
453 };
454
455 static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
456         .cmd_rcgr = 0x17034,
457         .mnd_width = 16,
458         .hid_width = 5,
459         .parent_map = gcc_parent_map_0,
460         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
461         .clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,
462 };
463
464 static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {
465         .name = "gcc_qupv3_wrap0_s1_clk_src",
466         .parent_data = gcc_parent_data_0,
467         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
468         .ops = &clk_rcg2_ops,
469 };
470
471 static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
472         .cmd_rcgr = 0x17164,
473         .mnd_width = 16,
474         .hid_width = 5,
475         .parent_map = gcc_parent_map_0,
476         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
477         .clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,
478 };
479
480 static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {
481         .name = "gcc_qupv3_wrap0_s2_clk_src",
482         .parent_data = gcc_parent_data_0,
483         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
484         .ops = &clk_rcg2_ops,
485 };
486
487 static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
488         .cmd_rcgr = 0x17294,
489         .mnd_width = 16,
490         .hid_width = 5,
491         .parent_map = gcc_parent_map_0,
492         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
493         .clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,
494 };
495
496 static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {
497         .name = "gcc_qupv3_wrap0_s3_clk_src",
498         .parent_data = gcc_parent_data_0,
499         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
500         .ops = &clk_rcg2_ops,
501 };
502
503 static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
504         .cmd_rcgr = 0x173c4,
505         .mnd_width = 16,
506         .hid_width = 5,
507         .parent_map = gcc_parent_map_0,
508         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
509         .clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,
510 };
511
512 static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {
513         .name = "gcc_qupv3_wrap0_s4_clk_src",
514         .parent_data = gcc_parent_data_0,
515         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
516         .ops = &clk_rcg2_ops,
517 };
518
519 static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
520         .cmd_rcgr = 0x174f4,
521         .mnd_width = 16,
522         .hid_width = 5,
523         .parent_map = gcc_parent_map_0,
524         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
525         .clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,
526 };
527
528 static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {
529         .name = "gcc_qupv3_wrap0_s5_clk_src",
530         .parent_data = gcc_parent_data_0,
531         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
532         .ops = &clk_rcg2_ops,
533 };
534
535 static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
536         .cmd_rcgr = 0x17624,
537         .mnd_width = 16,
538         .hid_width = 5,
539         .parent_map = gcc_parent_map_0,
540         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
541         .clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,
542 };
543
544 static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = {
545         .name = "gcc_qupv3_wrap0_s6_clk_src",
546         .parent_data = gcc_parent_data_0,
547         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
548         .ops = &clk_rcg2_ops,
549 };
550
551 static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
552         .cmd_rcgr = 0x17754,
553         .mnd_width = 16,
554         .hid_width = 5,
555         .parent_map = gcc_parent_map_0,
556         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
557         .clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init,
558 };
559
560 static struct clk_init_data gcc_qupv3_wrap0_s7_clk_src_init = {
561         .name = "gcc_qupv3_wrap0_s7_clk_src",
562         .parent_data = gcc_parent_data_0,
563         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
564         .ops = &clk_rcg2_ops,
565 };
566
567 static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
568         .cmd_rcgr = 0x17884,
569         .mnd_width = 16,
570         .hid_width = 5,
571         .parent_map = gcc_parent_map_0,
572         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
573         .clkr.hw.init = &gcc_qupv3_wrap0_s7_clk_src_init,
574 };
575
576 static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
577         .name = "gcc_qupv3_wrap1_s0_clk_src",
578         .parent_data = gcc_parent_data_0,
579         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
580         .ops = &clk_rcg2_ops,
581 };
582
583 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
584         .cmd_rcgr = 0x18018,
585         .mnd_width = 16,
586         .hid_width = 5,
587         .parent_map = gcc_parent_map_0,
588         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
589         .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
590 };
591
592 static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
593         .name = "gcc_qupv3_wrap1_s1_clk_src",
594         .parent_data = gcc_parent_data_0,
595         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
596         .ops = &clk_rcg2_ops,
597 };
598
599 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
600         .cmd_rcgr = 0x18148,
601         .mnd_width = 16,
602         .hid_width = 5,
603         .parent_map = gcc_parent_map_0,
604         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
605         .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
606 };
607
608 static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {
609         .name = "gcc_qupv3_wrap1_s2_clk_src",
610         .parent_data = gcc_parent_data_0,
611         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
612         .ops = &clk_rcg2_ops,
613 };
614
615 static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
616         .cmd_rcgr = 0x18278,
617         .mnd_width = 16,
618         .hid_width = 5,
619         .parent_map = gcc_parent_map_0,
620         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
621         .clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,
622 };
623
624 static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
625         .name = "gcc_qupv3_wrap1_s3_clk_src",
626         .parent_data = gcc_parent_data_0,
627         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
628         .ops = &clk_rcg2_ops,
629 };
630
631 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
632         .cmd_rcgr = 0x183a8,
633         .mnd_width = 16,
634         .hid_width = 5,
635         .parent_map = gcc_parent_map_0,
636         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
637         .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
638 };
639
640 static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
641         .name = "gcc_qupv3_wrap1_s4_clk_src",
642         .parent_data = gcc_parent_data_0,
643         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
644         .ops = &clk_rcg2_ops,
645 };
646
647 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
648         .cmd_rcgr = 0x184d8,
649         .mnd_width = 16,
650         .hid_width = 5,
651         .parent_map = gcc_parent_map_0,
652         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
653         .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
654 };
655
656 static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
657         .name = "gcc_qupv3_wrap1_s5_clk_src",
658         .parent_data = gcc_parent_data_0,
659         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
660         .ops = &clk_rcg2_ops,
661 };
662
663 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
664         .cmd_rcgr = 0x18608,
665         .mnd_width = 16,
666         .hid_width = 5,
667         .parent_map = gcc_parent_map_0,
668         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
669         .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
670 };
671
672 static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {
673         .name = "gcc_qupv3_wrap1_s6_clk_src",
674         .parent_data = gcc_parent_data_0,
675         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
676         .ops = &clk_rcg2_ops,
677 };
678
679 static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {
680         .cmd_rcgr = 0x18738,
681         .mnd_width = 16,
682         .hid_width = 5,
683         .parent_map = gcc_parent_map_0,
684         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
685         .clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,
686 };
687
688 static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = {
689         .name = "gcc_qupv3_wrap1_s7_clk_src",
690         .parent_data = gcc_parent_data_0,
691         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
692         .ops = &clk_rcg2_ops,
693 };
694
695 static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = {
696         .cmd_rcgr = 0x18868,
697         .mnd_width = 16,
698         .hid_width = 5,
699         .parent_map = gcc_parent_map_0,
700         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
701         .clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init,
702 };
703
704 static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {
705         F(144000, P_BI_TCXO, 16, 3, 25),
706         F(400000, P_BI_TCXO, 12, 1, 4),
707         F(20000000, P_GPLL0_OUT_EVEN, 5, 1, 3),
708         F(25000000, P_GPLL0_OUT_EVEN, 6, 1, 2),
709         F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
710         F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
711         F(192000000, P_GPLL6_OUT_MAIN, 2, 0, 0),
712         F(384000000, P_GPLL6_OUT_MAIN, 1, 0, 0),
713         { }
714 };
715
716 static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {
717         .cmd_rcgr = 0x26028,
718         .mnd_width = 8,
719         .hid_width = 5,
720         .parent_map = gcc_parent_map_11,
721         .freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,
722         .clkr.hw.init = &(struct clk_init_data){
723                 .name = "gcc_sdcc1_apps_clk_src",
724                 .parent_data = gcc_parent_data_11,
725                 .num_parents = ARRAY_SIZE(gcc_parent_data_11),
726                 .ops = &clk_rcg2_floor_ops,
727         },
728 };
729
730 static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = {
731         F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
732         F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
733         F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
734         F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
735         { }
736 };
737
738 static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = {
739         .cmd_rcgr = 0x26010,
740         .mnd_width = 8,
741         .hid_width = 5,
742         .parent_map = gcc_parent_map_0,
743         .freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src,
744         .clkr.hw.init = &(struct clk_init_data){
745                 .name = "gcc_sdcc1_ice_core_clk_src",
746                 .parent_data = gcc_parent_data_0,
747                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
748                 .ops = &clk_rcg2_ops,
749         },
750 };
751
752 static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
753         F(400000, P_BI_TCXO, 12, 1, 4),
754         F(9600000, P_BI_TCXO, 2, 0, 0),
755         F(19200000, P_BI_TCXO, 1, 0, 0),
756         F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
757         F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
758         F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
759         F(201500000, P_GPLL4_OUT_MAIN, 4, 0, 0),
760         { }
761 };
762
763 static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
764         .cmd_rcgr = 0x1400c,
765         .mnd_width = 8,
766         .hid_width = 5,
767         .parent_map = gcc_parent_map_10,
768         .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
769         .clkr.hw.init = &(struct clk_init_data){
770                 .name = "gcc_sdcc2_apps_clk_src",
771                 .parent_data = gcc_parent_data_10,
772                 .num_parents = ARRAY_SIZE(gcc_parent_data_10),
773                 .ops = &clk_rcg2_floor_ops,
774         },
775 };
776
777 static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
778         F(400000, P_BI_TCXO, 12, 1, 4),
779         F(9600000, P_BI_TCXO, 2, 0, 0),
780         F(19200000, P_BI_TCXO, 1, 0, 0),
781         F(25000000, P_GPLL0_OUT_MAIN, 12, 1, 2),
782         F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
783         F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
784         { }
785 };
786
787 static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
788         .cmd_rcgr = 0x1600c,
789         .mnd_width = 8,
790         .hid_width = 5,
791         .parent_map = gcc_parent_map_0,
792         .freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
793         .clkr.hw.init = &(struct clk_init_data){
794                 .name = "gcc_sdcc4_apps_clk_src",
795                 .parent_data = gcc_parent_data_0,
796                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
797                 .ops = &clk_rcg2_floor_ops,
798         },
799 };
800
801 static const struct freq_tbl ftbl_gcc_sdm670_sdcc4_apps_clk_src[] = {
802         F(400000, P_BI_TCXO, 12, 1, 4),
803         F(9600000, P_BI_TCXO, 2, 0, 0),
804         F(19200000, P_BI_TCXO, 1, 0, 0),
805         F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
806         F(33333333, P_GPLL0_OUT_EVEN, 9, 0, 0),
807         F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
808         F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
809         { }
810 };
811
812 static struct clk_rcg2 gcc_sdm670_sdcc4_apps_clk_src = {
813         .cmd_rcgr = 0x1600c,
814         .mnd_width = 8,
815         .hid_width = 5,
816         .parent_map = gcc_parent_map_0,
817         .freq_tbl = ftbl_gcc_sdm670_sdcc4_apps_clk_src,
818         .clkr.hw.init = &(struct clk_init_data){
819                 .name = "gcc_sdcc4_apps_clk_src",
820                 .parent_data = gcc_parent_data_0,
821                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
822                 .ops = &clk_rcg2_floor_ops,
823         },
824 };
825
826 static const struct freq_tbl ftbl_gcc_tsif_ref_clk_src[] = {
827         F(105495, P_BI_TCXO, 2, 1, 91),
828         { }
829 };
830
831 static struct clk_rcg2 gcc_tsif_ref_clk_src = {
832         .cmd_rcgr = 0x36010,
833         .mnd_width = 8,
834         .hid_width = 5,
835         .parent_map = gcc_parent_map_6,
836         .freq_tbl = ftbl_gcc_tsif_ref_clk_src,
837         .clkr.hw.init = &(struct clk_init_data){
838                 .name = "gcc_tsif_ref_clk_src",
839                 .parent_data = gcc_parent_data_6,
840                 .num_parents = ARRAY_SIZE(gcc_parent_data_6),
841                 .ops = &clk_rcg2_ops,
842         },
843 };
844
845 static const struct freq_tbl ftbl_gcc_ufs_card_axi_clk_src[] = {
846         F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
847         F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
848         F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
849         F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
850         F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
851         { }
852 };
853
854 static struct clk_rcg2 gcc_ufs_card_axi_clk_src = {
855         .cmd_rcgr = 0x7501c,
856         .mnd_width = 8,
857         .hid_width = 5,
858         .parent_map = gcc_parent_map_0,
859         .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,
860         .clkr.hw.init = &(struct clk_init_data){
861                 .name = "gcc_ufs_card_axi_clk_src",
862                 .parent_data = gcc_parent_data_0,
863                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
864                 .ops = &clk_rcg2_shared_ops,
865         },
866 };
867
868 static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src[] = {
869         F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
870         F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
871         F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
872         F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
873         { }
874 };
875
876 static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = {
877         .cmd_rcgr = 0x7505c,
878         .mnd_width = 0,
879         .hid_width = 5,
880         .parent_map = gcc_parent_map_0,
881         .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
882         .clkr.hw.init = &(struct clk_init_data){
883                 .name = "gcc_ufs_card_ice_core_clk_src",
884                 .parent_data = gcc_parent_data_0,
885                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
886                 .ops = &clk_rcg2_shared_ops,
887         },
888 };
889
890 static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = {
891         .cmd_rcgr = 0x75090,
892         .mnd_width = 0,
893         .hid_width = 5,
894         .parent_map = gcc_parent_map_4,
895         .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,
896         .clkr.hw.init = &(struct clk_init_data){
897                 .name = "gcc_ufs_card_phy_aux_clk_src",
898                 .parent_data = gcc_parent_data_4,
899                 .num_parents = ARRAY_SIZE(gcc_parent_data_4),
900                 .ops = &clk_rcg2_ops,
901         },
902 };
903
904 static const struct freq_tbl ftbl_gcc_ufs_card_unipro_core_clk_src[] = {
905         F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
906         F(75000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
907         F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
908         { }
909 };
910
911 static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = {
912         .cmd_rcgr = 0x75074,
913         .mnd_width = 0,
914         .hid_width = 5,
915         .parent_map = gcc_parent_map_0,
916         .freq_tbl = ftbl_gcc_ufs_card_unipro_core_clk_src,
917         .clkr.hw.init = &(struct clk_init_data){
918                 .name = "gcc_ufs_card_unipro_core_clk_src",
919                 .parent_data = gcc_parent_data_0,
920                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
921                 .ops = &clk_rcg2_shared_ops,
922         },
923 };
924
925 static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
926         F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
927         F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
928         F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
929         F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
930         F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
931         { }
932 };
933
934 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
935         .cmd_rcgr = 0x7701c,
936         .mnd_width = 8,
937         .hid_width = 5,
938         .parent_map = gcc_parent_map_0,
939         .freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
940         .clkr.hw.init = &(struct clk_init_data){
941                 .name = "gcc_ufs_phy_axi_clk_src",
942                 .parent_data = gcc_parent_data_0,
943                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
944                 .ops = &clk_rcg2_shared_ops,
945         },
946 };
947
948 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
949         .cmd_rcgr = 0x7705c,
950         .mnd_width = 0,
951         .hid_width = 5,
952         .parent_map = gcc_parent_map_0,
953         .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
954         .clkr.hw.init = &(struct clk_init_data){
955                 .name = "gcc_ufs_phy_ice_core_clk_src",
956                 .parent_data = gcc_parent_data_0,
957                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
958                 .ops = &clk_rcg2_shared_ops,
959         },
960 };
961
962 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
963         .cmd_rcgr = 0x77090,
964         .mnd_width = 0,
965         .hid_width = 5,
966         .parent_map = gcc_parent_map_4,
967         .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
968         .clkr.hw.init = &(struct clk_init_data){
969                 .name = "gcc_ufs_phy_phy_aux_clk_src",
970                 .parent_data = gcc_parent_data_4,
971                 .num_parents = ARRAY_SIZE(gcc_parent_data_4),
972                 .ops = &clk_rcg2_shared_ops,
973         },
974 };
975
976 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
977         .cmd_rcgr = 0x77074,
978         .mnd_width = 0,
979         .hid_width = 5,
980         .parent_map = gcc_parent_map_0,
981         .freq_tbl = ftbl_gcc_ufs_card_unipro_core_clk_src,
982         .clkr.hw.init = &(struct clk_init_data){
983                 .name = "gcc_ufs_phy_unipro_core_clk_src",
984                 .parent_data = gcc_parent_data_0,
985                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
986                 .ops = &clk_rcg2_shared_ops,
987         },
988 };
989
990 static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
991         F(33333333, P_GPLL0_OUT_EVEN, 9, 0, 0),
992         F(66666667, P_GPLL0_OUT_EVEN, 4.5, 0, 0),
993         F(133333333, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
994         F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
995         F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
996         { }
997 };
998
999 static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
1000         .cmd_rcgr = 0xf018,
1001         .mnd_width = 8,
1002         .hid_width = 5,
1003         .parent_map = gcc_parent_map_0,
1004         .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
1005         .clkr.hw.init = &(struct clk_init_data){
1006                 .name = "gcc_usb30_prim_master_clk_src",
1007                 .parent_data = gcc_parent_data_0,
1008                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1009                 .ops = &clk_rcg2_shared_ops,
1010         },
1011 };
1012
1013 static const struct freq_tbl ftbl_gcc_usb30_prim_mock_utmi_clk_src[] = {
1014         F(19200000, P_BI_TCXO, 1, 0, 0),
1015         F(20000000, P_GPLL0_OUT_EVEN, 15, 0, 0),
1016         F(40000000, P_GPLL0_OUT_EVEN, 7.5, 0, 0),
1017         F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
1018         { }
1019 };
1020
1021 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
1022         .cmd_rcgr = 0xf030,
1023         .mnd_width = 0,
1024         .hid_width = 5,
1025         .parent_map = gcc_parent_map_0,
1026         .freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,
1027         .clkr.hw.init = &(struct clk_init_data){
1028                 .name = "gcc_usb30_prim_mock_utmi_clk_src",
1029                 .parent_data = gcc_parent_data_0,
1030                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1031                 .ops = &clk_rcg2_shared_ops,
1032         },
1033 };
1034
1035 static struct clk_rcg2 gcc_usb30_sec_master_clk_src = {
1036         .cmd_rcgr = 0x10018,
1037         .mnd_width = 8,
1038         .hid_width = 5,
1039         .parent_map = gcc_parent_map_0,
1040         .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
1041         .clkr.hw.init = &(struct clk_init_data){
1042                 .name = "gcc_usb30_sec_master_clk_src",
1043                 .parent_data = gcc_parent_data_0,
1044                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1045                 .ops = &clk_rcg2_ops,
1046         },
1047 };
1048
1049 static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = {
1050         .cmd_rcgr = 0x10030,
1051         .mnd_width = 0,
1052         .hid_width = 5,
1053         .parent_map = gcc_parent_map_0,
1054         .freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,
1055         .clkr.hw.init = &(struct clk_init_data){
1056                 .name = "gcc_usb30_sec_mock_utmi_clk_src",
1057                 .parent_data = gcc_parent_data_0,
1058                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1059                 .ops = &clk_rcg2_ops,
1060         },
1061 };
1062
1063 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
1064         .cmd_rcgr = 0xf05c,
1065         .mnd_width = 0,
1066         .hid_width = 5,
1067         .parent_map = gcc_parent_map_2,
1068         .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,
1069         .clkr.hw.init = &(struct clk_init_data){
1070                 .name = "gcc_usb3_prim_phy_aux_clk_src",
1071                 .parent_data = gcc_parent_data_2,
1072                 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
1073                 .ops = &clk_rcg2_ops,
1074         },
1075 };
1076
1077 static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = {
1078         .cmd_rcgr = 0x1005c,
1079         .mnd_width = 0,
1080         .hid_width = 5,
1081         .parent_map = gcc_parent_map_2,
1082         .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,
1083         .clkr.hw.init = &(struct clk_init_data){
1084                 .name = "gcc_usb3_sec_phy_aux_clk_src",
1085                 .parent_data = gcc_parent_data_2,
1086                 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
1087                 .ops = &clk_rcg2_shared_ops,
1088         },
1089 };
1090
1091 static struct clk_rcg2 gcc_vs_ctrl_clk_src = {
1092         .cmd_rcgr = 0x7a030,
1093         .mnd_width = 0,
1094         .hid_width = 5,
1095         .parent_map = gcc_parent_map_3,
1096         .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,
1097         .clkr.hw.init = &(struct clk_init_data){
1098                 .name = "gcc_vs_ctrl_clk_src",
1099                 .parent_data = gcc_parent_data_3,
1100                 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
1101                 .ops = &clk_rcg2_ops,
1102         },
1103 };
1104
1105 static const struct freq_tbl ftbl_gcc_vsensor_clk_src[] = {
1106         F(19200000, P_BI_TCXO, 1, 0, 0),
1107         F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
1108         F(600000000, P_GPLL0_OUT_MAIN, 1, 0, 0),
1109         { }
1110 };
1111
1112 static struct clk_rcg2 gcc_vsensor_clk_src = {
1113         .cmd_rcgr = 0x7a018,
1114         .mnd_width = 0,
1115         .hid_width = 5,
1116         .parent_map = gcc_parent_map_3,
1117         .freq_tbl = ftbl_gcc_vsensor_clk_src,
1118         .clkr.hw.init = &(struct clk_init_data){
1119                 .name = "gcc_vsensor_clk_src",
1120                 .parent_data = gcc_parent_data_8,
1121                 .num_parents = ARRAY_SIZE(gcc_parent_data_8),
1122                 .ops = &clk_rcg2_ops,
1123         },
1124 };
1125
1126 static struct clk_branch gcc_aggre_noc_pcie_tbu_clk = {
1127         .halt_reg = 0x90014,
1128         .halt_check = BRANCH_HALT,
1129         .clkr = {
1130                 .enable_reg = 0x90014,
1131                 .enable_mask = BIT(0),
1132                 .hw.init = &(struct clk_init_data){
1133                         .name = "gcc_aggre_noc_pcie_tbu_clk",
1134                         .ops = &clk_branch2_ops,
1135                 },
1136         },
1137 };
1138
1139 static struct clk_branch gcc_aggre_ufs_card_axi_clk = {
1140         .halt_reg = 0x82028,
1141         .halt_check = BRANCH_HALT,
1142         .hwcg_reg = 0x82028,
1143         .hwcg_bit = 1,
1144         .clkr = {
1145                 .enable_reg = 0x82028,
1146                 .enable_mask = BIT(0),
1147                 .hw.init = &(struct clk_init_data){
1148                         .name = "gcc_aggre_ufs_card_axi_clk",
1149                         .parent_hws = (const struct clk_hw*[]){
1150                                 &gcc_ufs_card_axi_clk_src.clkr.hw,
1151                         },
1152                         .num_parents = 1,
1153                         .flags = CLK_SET_RATE_PARENT,
1154                         .ops = &clk_branch2_ops,
1155                 },
1156         },
1157 };
1158
1159 static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
1160         .halt_reg = 0x82024,
1161         .halt_check = BRANCH_HALT,
1162         .hwcg_reg = 0x82024,
1163         .hwcg_bit = 1,
1164         .clkr = {
1165                 .enable_reg = 0x82024,
1166                 .enable_mask = BIT(0),
1167                 .hw.init = &(struct clk_init_data){
1168                         .name = "gcc_aggre_ufs_phy_axi_clk",
1169                         .parent_hws = (const struct clk_hw*[]){
1170                                 &gcc_ufs_phy_axi_clk_src.clkr.hw,
1171                         },
1172                         .num_parents = 1,
1173                         .flags = CLK_SET_RATE_PARENT,
1174                         .ops = &clk_branch2_ops,
1175                 },
1176         },
1177 };
1178
1179 static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
1180         .halt_reg = 0x8201c,
1181         .halt_check = BRANCH_HALT,
1182         .clkr = {
1183                 .enable_reg = 0x8201c,
1184                 .enable_mask = BIT(0),
1185                 .hw.init = &(struct clk_init_data){
1186                         .name = "gcc_aggre_usb3_prim_axi_clk",
1187                         .parent_hws = (const struct clk_hw*[]){
1188                                 &gcc_usb30_prim_master_clk_src.clkr.hw,
1189                         },
1190                         .num_parents = 1,
1191                         .flags = CLK_SET_RATE_PARENT,
1192                         .ops = &clk_branch2_ops,
1193                 },
1194         },
1195 };
1196
1197 static struct clk_branch gcc_aggre_usb3_sec_axi_clk = {
1198         .halt_reg = 0x82020,
1199         .halt_check = BRANCH_HALT,
1200         .clkr = {
1201                 .enable_reg = 0x82020,
1202                 .enable_mask = BIT(0),
1203                 .hw.init = &(struct clk_init_data){
1204                         .name = "gcc_aggre_usb3_sec_axi_clk",
1205                         .parent_hws = (const struct clk_hw*[]){
1206                                 &gcc_usb30_sec_master_clk_src.clkr.hw,
1207                         },
1208                         .num_parents = 1,
1209                         .flags = CLK_SET_RATE_PARENT,
1210                         .ops = &clk_branch2_ops,
1211                 },
1212         },
1213 };
1214
1215 static struct clk_branch gcc_apc_vs_clk = {
1216         .halt_reg = 0x7a050,
1217         .halt_check = BRANCH_HALT,
1218         .clkr = {
1219                 .enable_reg = 0x7a050,
1220                 .enable_mask = BIT(0),
1221                 .hw.init = &(struct clk_init_data){
1222                         .name = "gcc_apc_vs_clk",
1223                         .parent_hws = (const struct clk_hw*[]){
1224                                 &gcc_vsensor_clk_src.clkr.hw,
1225                         },
1226                         .num_parents = 1,
1227                         .flags = CLK_SET_RATE_PARENT,
1228                         .ops = &clk_branch2_ops,
1229                 },
1230         },
1231 };
1232
1233 static struct clk_branch gcc_boot_rom_ahb_clk = {
1234         .halt_reg = 0x38004,
1235         .halt_check = BRANCH_HALT_VOTED,
1236         .hwcg_reg = 0x38004,
1237         .hwcg_bit = 1,
1238         .clkr = {
1239                 .enable_reg = 0x52004,
1240                 .enable_mask = BIT(10),
1241                 .hw.init = &(struct clk_init_data){
1242                         .name = "gcc_boot_rom_ahb_clk",
1243                         .ops = &clk_branch2_ops,
1244                 },
1245         },
1246 };
1247
1248 static struct clk_branch gcc_camera_ahb_clk = {
1249         .halt_reg = 0xb008,
1250         .halt_check = BRANCH_HALT,
1251         .hwcg_reg = 0xb008,
1252         .hwcg_bit = 1,
1253         .clkr = {
1254                 .enable_reg = 0xb008,
1255                 .enable_mask = BIT(0),
1256                 .hw.init = &(struct clk_init_data){
1257                         .name = "gcc_camera_ahb_clk",
1258                         .flags = CLK_IS_CRITICAL,
1259                         .ops = &clk_branch2_ops,
1260                 },
1261         },
1262 };
1263
1264 static struct clk_branch gcc_camera_axi_clk = {
1265         .halt_reg = 0xb020,
1266         .halt_check = BRANCH_VOTED,
1267         .clkr = {
1268                 .enable_reg = 0xb020,
1269                 .enable_mask = BIT(0),
1270                 .hw.init = &(struct clk_init_data){
1271                         .name = "gcc_camera_axi_clk",
1272                         .ops = &clk_branch2_ops,
1273                 },
1274         },
1275 };
1276
1277 static struct clk_branch gcc_camera_xo_clk = {
1278         .halt_reg = 0xb02c,
1279         .halt_check = BRANCH_HALT,
1280         .clkr = {
1281                 .enable_reg = 0xb02c,
1282                 .enable_mask = BIT(0),
1283                 .hw.init = &(struct clk_init_data){
1284                         .name = "gcc_camera_xo_clk",
1285                         .flags = CLK_IS_CRITICAL,
1286                         .ops = &clk_branch2_ops,
1287                 },
1288         },
1289 };
1290
1291 static struct clk_branch gcc_ce1_ahb_clk = {
1292         .halt_reg = 0x4100c,
1293         .halt_check = BRANCH_HALT_VOTED,
1294         .hwcg_reg = 0x4100c,
1295         .hwcg_bit = 1,
1296         .clkr = {
1297                 .enable_reg = 0x52004,
1298                 .enable_mask = BIT(3),
1299                 .hw.init = &(struct clk_init_data){
1300                         .name = "gcc_ce1_ahb_clk",
1301                         .ops = &clk_branch2_ops,
1302                 },
1303         },
1304 };
1305
1306 static struct clk_branch gcc_ce1_axi_clk = {
1307         .halt_reg = 0x41008,
1308         .halt_check = BRANCH_HALT_VOTED,
1309         .clkr = {
1310                 .enable_reg = 0x52004,
1311                 .enable_mask = BIT(4),
1312                 .hw.init = &(struct clk_init_data){
1313                         .name = "gcc_ce1_axi_clk",
1314                         .ops = &clk_branch2_ops,
1315                 },
1316         },
1317 };
1318
1319 static struct clk_branch gcc_ce1_clk = {
1320         .halt_reg = 0x41004,
1321         .halt_check = BRANCH_HALT_VOTED,
1322         .clkr = {
1323                 .enable_reg = 0x52004,
1324                 .enable_mask = BIT(5),
1325                 .hw.init = &(struct clk_init_data){
1326                         .name = "gcc_ce1_clk",
1327                         .ops = &clk_branch2_ops,
1328                 },
1329         },
1330 };
1331
1332 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
1333         .halt_reg = 0x502c,
1334         .halt_check = BRANCH_HALT,
1335         .clkr = {
1336                 .enable_reg = 0x502c,
1337                 .enable_mask = BIT(0),
1338                 .hw.init = &(struct clk_init_data){
1339                         .name = "gcc_cfg_noc_usb3_prim_axi_clk",
1340                         .parent_hws = (const struct clk_hw*[]){
1341                                 &gcc_usb30_prim_master_clk_src.clkr.hw,
1342                         },
1343                         .num_parents = 1,
1344                         .flags = CLK_SET_RATE_PARENT,
1345                         .ops = &clk_branch2_ops,
1346                 },
1347         },
1348 };
1349
1350 static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = {
1351         .halt_reg = 0x5030,
1352         .halt_check = BRANCH_HALT,
1353         .clkr = {
1354                 .enable_reg = 0x5030,
1355                 .enable_mask = BIT(0),
1356                 .hw.init = &(struct clk_init_data){
1357                         .name = "gcc_cfg_noc_usb3_sec_axi_clk",
1358                         .parent_hws = (const struct clk_hw*[]){
1359                                 &gcc_usb30_sec_master_clk_src.clkr.hw,
1360                         },
1361                         .num_parents = 1,
1362                         .flags = CLK_SET_RATE_PARENT,
1363                         .ops = &clk_branch2_ops,
1364                 },
1365         },
1366 };
1367
1368 static struct clk_branch gcc_cpuss_ahb_clk = {
1369         .halt_reg = 0x48000,
1370         .halt_check = BRANCH_HALT_VOTED,
1371         .clkr = {
1372                 .enable_reg = 0x52004,
1373                 .enable_mask = BIT(21),
1374                 .hw.init = &(struct clk_init_data){
1375                         .name = "gcc_cpuss_ahb_clk",
1376                         .parent_hws = (const struct clk_hw*[]){
1377                                 &gcc_cpuss_ahb_clk_src.clkr.hw,
1378                         },
1379                         .num_parents = 1,
1380                         .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
1381                         .ops = &clk_branch2_ops,
1382                 },
1383         },
1384 };
1385
1386 static struct clk_branch gcc_cpuss_rbcpr_clk = {
1387         .halt_reg = 0x48008,
1388         .halt_check = BRANCH_HALT,
1389         .clkr = {
1390                 .enable_reg = 0x48008,
1391                 .enable_mask = BIT(0),
1392                 .hw.init = &(struct clk_init_data){
1393                         .name = "gcc_cpuss_rbcpr_clk",
1394                         .parent_hws = (const struct clk_hw*[]){
1395                                 &gcc_cpuss_rbcpr_clk_src.clkr.hw,
1396                         },
1397                         .num_parents = 1,
1398                         .flags = CLK_SET_RATE_PARENT,
1399                         .ops = &clk_branch2_ops,
1400                 },
1401         },
1402 };
1403
1404 /*
1405  * The source clock frequencies are different for SDM670; define a child clock
1406  * pointing to the source clock that uses SDM670 frequencies.
1407  */
1408 static struct clk_branch gcc_sdm670_cpuss_rbcpr_clk = {
1409         .halt_reg = 0x48008,
1410         .halt_check = BRANCH_HALT,
1411         .clkr = {
1412                 .enable_reg = 0x48008,
1413                 .enable_mask = BIT(0),
1414                 .hw.init = &(struct clk_init_data){
1415                         .name = "gcc_cpuss_rbcpr_clk",
1416                         .parent_hws = (const struct clk_hw*[]){
1417                                 &gcc_sdm670_cpuss_rbcpr_clk_src.clkr.hw,
1418                         },
1419                         .num_parents = 1,
1420                         .flags = CLK_SET_RATE_PARENT,
1421                         .ops = &clk_branch2_ops,
1422                 },
1423         },
1424 };
1425
1426 static struct clk_branch gcc_ddrss_gpu_axi_clk = {
1427         .halt_reg = 0x44038,
1428         .halt_check = BRANCH_VOTED,
1429         .clkr = {
1430                 .enable_reg = 0x44038,
1431                 .enable_mask = BIT(0),
1432                 .hw.init = &(struct clk_init_data){
1433                         .name = "gcc_ddrss_gpu_axi_clk",
1434                         .ops = &clk_branch2_ops,
1435                 },
1436         },
1437 };
1438
1439 static struct clk_branch gcc_disp_ahb_clk = {
1440         .halt_reg = 0xb00c,
1441         .halt_check = BRANCH_HALT,
1442         .hwcg_reg = 0xb00c,
1443         .hwcg_bit = 1,
1444         .clkr = {
1445                 .enable_reg = 0xb00c,
1446                 .enable_mask = BIT(0),
1447                 .hw.init = &(struct clk_init_data){
1448                         .name = "gcc_disp_ahb_clk",
1449                         .flags = CLK_IS_CRITICAL,
1450                         .ops = &clk_branch2_ops,
1451                 },
1452         },
1453 };
1454
1455 static struct clk_branch gcc_disp_axi_clk = {
1456         .halt_reg = 0xb024,
1457         .halt_check = BRANCH_VOTED,
1458         .clkr = {
1459                 .enable_reg = 0xb024,
1460                 .enable_mask = BIT(0),
1461                 .hw.init = &(struct clk_init_data){
1462                         .name = "gcc_disp_axi_clk",
1463                         .ops = &clk_branch2_ops,
1464                 },
1465         },
1466 };
1467
1468 static struct clk_branch gcc_disp_gpll0_clk_src = {
1469         .halt_check = BRANCH_HALT_DELAY,
1470         .clkr = {
1471                 .enable_reg = 0x52004,
1472                 .enable_mask = BIT(18),
1473                 .hw.init = &(struct clk_init_data){
1474                         .name = "gcc_disp_gpll0_clk_src",
1475                         .parent_hws = (const struct clk_hw*[]){
1476                                 &gpll0.clkr.hw,
1477                         },
1478                         .num_parents = 1,
1479                         .ops = &clk_branch2_aon_ops,
1480                 },
1481         },
1482 };
1483
1484 static struct clk_branch gcc_disp_gpll0_div_clk_src = {
1485         .halt_check = BRANCH_HALT_DELAY,
1486         .clkr = {
1487                 .enable_reg = 0x52004,
1488                 .enable_mask = BIT(19),
1489                 .hw.init = &(struct clk_init_data){
1490                         .name = "gcc_disp_gpll0_div_clk_src",
1491                         .parent_hws = (const struct clk_hw*[]){
1492                                 &gpll0_out_even.clkr.hw,
1493                         },
1494                         .num_parents = 1,
1495                         .ops = &clk_branch2_ops,
1496                 },
1497         },
1498 };
1499
1500 static struct clk_branch gcc_disp_xo_clk = {
1501         .halt_reg = 0xb030,
1502         .halt_check = BRANCH_HALT,
1503         .clkr = {
1504                 .enable_reg = 0xb030,
1505                 .enable_mask = BIT(0),
1506                 .hw.init = &(struct clk_init_data){
1507                         .name = "gcc_disp_xo_clk",
1508                         .flags = CLK_IS_CRITICAL,
1509                         .ops = &clk_branch2_ops,
1510                 },
1511         },
1512 };
1513
1514 static struct clk_branch gcc_gp1_clk = {
1515         .halt_reg = 0x64000,
1516         .halt_check = BRANCH_HALT,
1517         .clkr = {
1518                 .enable_reg = 0x64000,
1519                 .enable_mask = BIT(0),
1520                 .hw.init = &(struct clk_init_data){
1521                         .name = "gcc_gp1_clk",
1522                         .parent_hws = (const struct clk_hw*[]){
1523                                 &gcc_gp1_clk_src.clkr.hw,
1524                         },
1525                         .num_parents = 1,
1526                         .flags = CLK_SET_RATE_PARENT,
1527                         .ops = &clk_branch2_ops,
1528                 },
1529         },
1530 };
1531
1532 static struct clk_branch gcc_gp2_clk = {
1533         .halt_reg = 0x65000,
1534         .halt_check = BRANCH_HALT,
1535         .clkr = {
1536                 .enable_reg = 0x65000,
1537                 .enable_mask = BIT(0),
1538                 .hw.init = &(struct clk_init_data){
1539                         .name = "gcc_gp2_clk",
1540                         .parent_hws = (const struct clk_hw*[]){
1541                                 &gcc_gp2_clk_src.clkr.hw,
1542                         },
1543                         .num_parents = 1,
1544                         .flags = CLK_SET_RATE_PARENT,
1545                         .ops = &clk_branch2_ops,
1546                 },
1547         },
1548 };
1549
1550 static struct clk_branch gcc_gp3_clk = {
1551         .halt_reg = 0x66000,
1552         .halt_check = BRANCH_HALT,
1553         .clkr = {
1554                 .enable_reg = 0x66000,
1555                 .enable_mask = BIT(0),
1556                 .hw.init = &(struct clk_init_data){
1557                         .name = "gcc_gp3_clk",
1558                         .parent_hws = (const struct clk_hw*[]){
1559                                 &gcc_gp3_clk_src.clkr.hw,
1560                         },
1561                         .num_parents = 1,
1562                         .flags = CLK_SET_RATE_PARENT,
1563                         .ops = &clk_branch2_ops,
1564                 },
1565         },
1566 };
1567
1568 static struct clk_branch gcc_gpu_cfg_ahb_clk = {
1569         .halt_reg = 0x71004,
1570         .halt_check = BRANCH_HALT,
1571         .hwcg_reg = 0x71004,
1572         .hwcg_bit = 1,
1573         .clkr = {
1574                 .enable_reg = 0x71004,
1575                 .enable_mask = BIT(0),
1576                 .hw.init = &(struct clk_init_data){
1577                         .name = "gcc_gpu_cfg_ahb_clk",
1578                         .flags = CLK_IS_CRITICAL,
1579                         .ops = &clk_branch2_ops,
1580                 },
1581         },
1582 };
1583
1584 static struct clk_branch gcc_gpu_gpll0_clk_src = {
1585         .halt_check = BRANCH_HALT_DELAY,
1586         .clkr = {
1587                 .enable_reg = 0x52004,
1588                 .enable_mask = BIT(15),
1589                 .hw.init = &(struct clk_init_data){
1590                         .name = "gcc_gpu_gpll0_clk_src",
1591                         .parent_hws = (const struct clk_hw*[]){
1592                                 &gpll0.clkr.hw,
1593                         },
1594                         .num_parents = 1,
1595                         .ops = &clk_branch2_ops,
1596                 },
1597         },
1598 };
1599
1600 static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
1601         .halt_check = BRANCH_HALT_DELAY,
1602         .clkr = {
1603                 .enable_reg = 0x52004,
1604                 .enable_mask = BIT(16),
1605                 .hw.init = &(struct clk_init_data){
1606                         .name = "gcc_gpu_gpll0_div_clk_src",
1607                         .parent_hws = (const struct clk_hw*[]){
1608                                 &gpll0_out_even.clkr.hw,
1609                         },
1610                         .num_parents = 1,
1611                         .ops = &clk_branch2_ops,
1612                 },
1613         },
1614 };
1615
1616 static struct clk_branch gcc_gpu_iref_clk = {
1617         .halt_reg = 0x8c010,
1618         .halt_check = BRANCH_HALT,
1619         .clkr = {
1620                 .enable_reg = 0x8c010,
1621                 .enable_mask = BIT(0),
1622                 .hw.init = &(struct clk_init_data){
1623                         .name = "gcc_gpu_iref_clk",
1624                         .ops = &clk_branch2_ops,
1625                 },
1626         },
1627 };
1628
1629 static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
1630         .halt_reg = 0x7100c,
1631         .halt_check = BRANCH_VOTED,
1632         .clkr = {
1633                 .enable_reg = 0x7100c,
1634                 .enable_mask = BIT(0),
1635                 .hw.init = &(struct clk_init_data){
1636                         .name = "gcc_gpu_memnoc_gfx_clk",
1637                         .ops = &clk_branch2_ops,
1638                 },
1639         },
1640 };
1641
1642 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
1643         .halt_reg = 0x71018,
1644         .halt_check = BRANCH_HALT,
1645         .clkr = {
1646                 .enable_reg = 0x71018,
1647                 .enable_mask = BIT(0),
1648                 .hw.init = &(struct clk_init_data){
1649                         .name = "gcc_gpu_snoc_dvm_gfx_clk",
1650                         .ops = &clk_branch2_ops,
1651                 },
1652         },
1653 };
1654
1655 static struct clk_branch gcc_gpu_vs_clk = {
1656         .halt_reg = 0x7a04c,
1657         .halt_check = BRANCH_HALT,
1658         .clkr = {
1659                 .enable_reg = 0x7a04c,
1660                 .enable_mask = BIT(0),
1661                 .hw.init = &(struct clk_init_data){
1662                         .name = "gcc_gpu_vs_clk",
1663                         .parent_hws = (const struct clk_hw*[]){
1664                                 &gcc_vsensor_clk_src.clkr.hw,
1665                         },
1666                         .num_parents = 1,
1667                         .flags = CLK_SET_RATE_PARENT,
1668                         .ops = &clk_branch2_ops,
1669                 },
1670         },
1671 };
1672
1673 static struct clk_branch gcc_mss_axis2_clk = {
1674         .halt_reg = 0x8a008,
1675         .halt_check = BRANCH_HALT,
1676         .clkr = {
1677                 .enable_reg = 0x8a008,
1678                 .enable_mask = BIT(0),
1679                 .hw.init = &(struct clk_init_data){
1680                         .name = "gcc_mss_axis2_clk",
1681                         .ops = &clk_branch2_ops,
1682                 },
1683         },
1684 };
1685
1686 static struct clk_branch gcc_mss_cfg_ahb_clk = {
1687         .halt_reg = 0x8a000,
1688         .halt_check = BRANCH_HALT,
1689         .hwcg_reg = 0x8a000,
1690         .hwcg_bit = 1,
1691         .clkr = {
1692                 .enable_reg = 0x8a000,
1693                 .enable_mask = BIT(0),
1694                 .hw.init = &(struct clk_init_data){
1695                         .name = "gcc_mss_cfg_ahb_clk",
1696                         .ops = &clk_branch2_ops,
1697                 },
1698         },
1699 };
1700
1701 static struct clk_branch gcc_mss_gpll0_div_clk_src = {
1702         .halt_check = BRANCH_HALT_DELAY,
1703         .clkr = {
1704                 .enable_reg = 0x52004,
1705                 .enable_mask = BIT(17),
1706                 .hw.init = &(struct clk_init_data){
1707                         .name = "gcc_mss_gpll0_div_clk_src",
1708                         .ops = &clk_branch2_ops,
1709                 },
1710         },
1711 };
1712
1713 static struct clk_branch gcc_mss_mfab_axis_clk = {
1714         .halt_reg = 0x8a004,
1715         .halt_check = BRANCH_VOTED,
1716         .hwcg_reg = 0x8a004,
1717         .hwcg_bit = 1,
1718         .clkr = {
1719                 .enable_reg = 0x8a004,
1720                 .enable_mask = BIT(0),
1721                 .hw.init = &(struct clk_init_data){
1722                         .name = "gcc_mss_mfab_axis_clk",
1723                         .ops = &clk_branch2_ops,
1724                 },
1725         },
1726 };
1727
1728 static struct clk_branch gcc_mss_q6_memnoc_axi_clk = {
1729         .halt_reg = 0x8a154,
1730         .halt_check = BRANCH_VOTED,
1731         .clkr = {
1732                 .enable_reg = 0x8a154,
1733                 .enable_mask = BIT(0),
1734                 .hw.init = &(struct clk_init_data){
1735                         .name = "gcc_mss_q6_memnoc_axi_clk",
1736                         .ops = &clk_branch2_ops,
1737                 },
1738         },
1739 };
1740
1741 static struct clk_branch gcc_mss_snoc_axi_clk = {
1742         .halt_reg = 0x8a150,
1743         .halt_check = BRANCH_HALT,
1744         .clkr = {
1745                 .enable_reg = 0x8a150,
1746                 .enable_mask = BIT(0),
1747                 .hw.init = &(struct clk_init_data){
1748                         .name = "gcc_mss_snoc_axi_clk",
1749                         .ops = &clk_branch2_ops,
1750                 },
1751         },
1752 };
1753
1754 static struct clk_branch gcc_mss_vs_clk = {
1755         .halt_reg = 0x7a048,
1756         .halt_check = BRANCH_HALT,
1757         .clkr = {
1758                 .enable_reg = 0x7a048,
1759                 .enable_mask = BIT(0),
1760                 .hw.init = &(struct clk_init_data){
1761                         .name = "gcc_mss_vs_clk",
1762                         .parent_hws = (const struct clk_hw*[]){
1763                                 &gcc_vsensor_clk_src.clkr.hw,
1764                         },
1765                         .num_parents = 1,
1766                         .flags = CLK_SET_RATE_PARENT,
1767                         .ops = &clk_branch2_ops,
1768                 },
1769         },
1770 };
1771
1772 static struct clk_branch gcc_pcie_0_aux_clk = {
1773         .halt_reg = 0x6b01c,
1774         .halt_check = BRANCH_HALT_VOTED,
1775         .clkr = {
1776                 .enable_reg = 0x5200c,
1777                 .enable_mask = BIT(3),
1778                 .hw.init = &(struct clk_init_data){
1779                         .name = "gcc_pcie_0_aux_clk",
1780                         .parent_hws = (const struct clk_hw*[]){
1781                                 &gcc_pcie_0_aux_clk_src.clkr.hw,
1782                         },
1783                         .num_parents = 1,
1784                         .flags = CLK_SET_RATE_PARENT,
1785                         .ops = &clk_branch2_ops,
1786                 },
1787         },
1788 };
1789
1790 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
1791         .halt_reg = 0x6b018,
1792         .halt_check = BRANCH_HALT_VOTED,
1793         .hwcg_reg = 0x6b018,
1794         .hwcg_bit = 1,
1795         .clkr = {
1796                 .enable_reg = 0x5200c,
1797                 .enable_mask = BIT(2),
1798                 .hw.init = &(struct clk_init_data){
1799                         .name = "gcc_pcie_0_cfg_ahb_clk",
1800                         .ops = &clk_branch2_ops,
1801                 },
1802         },
1803 };
1804
1805 static struct clk_branch gcc_pcie_0_clkref_clk = {
1806         .halt_reg = 0x8c00c,
1807         .halt_check = BRANCH_HALT,
1808         .clkr = {
1809                 .enable_reg = 0x8c00c,
1810                 .enable_mask = BIT(0),
1811                 .hw.init = &(struct clk_init_data){
1812                         .name = "gcc_pcie_0_clkref_clk",
1813                         .ops = &clk_branch2_ops,
1814                 },
1815         },
1816 };
1817
1818 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
1819         .halt_reg = 0x6b014,
1820         .halt_check = BRANCH_HALT_VOTED,
1821         .clkr = {
1822                 .enable_reg = 0x5200c,
1823                 .enable_mask = BIT(1),
1824                 .hw.init = &(struct clk_init_data){
1825                         .name = "gcc_pcie_0_mstr_axi_clk",
1826                         .ops = &clk_branch2_ops,
1827                 },
1828         },
1829 };
1830
1831 static struct clk_branch gcc_pcie_0_pipe_clk = {
1832         .halt_check = BRANCH_HALT_SKIP,
1833         .clkr = {
1834                 .enable_reg = 0x5200c,
1835                 .enable_mask = BIT(4),
1836                 .hw.init = &(struct clk_init_data){
1837                         .name = "gcc_pcie_0_pipe_clk",
1838                         .parent_data = &(const struct clk_parent_data){
1839                                 .fw_name = "pcie_0_pipe_clk", .name = "pcie_0_pipe_clk",
1840                         },
1841                         .num_parents = 1,
1842                         .flags = CLK_SET_RATE_PARENT,
1843                         .ops = &clk_branch2_ops,
1844                 },
1845         },
1846 };
1847
1848 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
1849         .halt_reg = 0x6b010,
1850         .halt_check = BRANCH_HALT_VOTED,
1851         .hwcg_reg = 0x6b010,
1852         .hwcg_bit = 1,
1853         .clkr = {
1854                 .enable_reg = 0x5200c,
1855                 .enable_mask = BIT(0),
1856                 .hw.init = &(struct clk_init_data){
1857                         .name = "gcc_pcie_0_slv_axi_clk",
1858                         .ops = &clk_branch2_ops,
1859                 },
1860         },
1861 };
1862
1863 static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
1864         .halt_reg = 0x6b00c,
1865         .halt_check = BRANCH_HALT_VOTED,
1866         .clkr = {
1867                 .enable_reg = 0x5200c,
1868                 .enable_mask = BIT(5),
1869                 .hw.init = &(struct clk_init_data){
1870                         .name = "gcc_pcie_0_slv_q2a_axi_clk",
1871                         .ops = &clk_branch2_ops,
1872                 },
1873         },
1874 };
1875
1876 static struct clk_branch gcc_pcie_1_aux_clk = {
1877         .halt_reg = 0x8d01c,
1878         .halt_check = BRANCH_HALT_VOTED,
1879         .clkr = {
1880                 .enable_reg = 0x52004,
1881                 .enable_mask = BIT(29),
1882                 .hw.init = &(struct clk_init_data){
1883                         .name = "gcc_pcie_1_aux_clk",
1884                         .parent_hws = (const struct clk_hw*[]){
1885                                 &gcc_pcie_1_aux_clk_src.clkr.hw,
1886                         },
1887                         .num_parents = 1,
1888                         .flags = CLK_SET_RATE_PARENT,
1889                         .ops = &clk_branch2_ops,
1890                 },
1891         },
1892 };
1893
1894 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
1895         .halt_reg = 0x8d018,
1896         .halt_check = BRANCH_HALT_VOTED,
1897         .hwcg_reg = 0x8d018,
1898         .hwcg_bit = 1,
1899         .clkr = {
1900                 .enable_reg = 0x52004,
1901                 .enable_mask = BIT(28),
1902                 .hw.init = &(struct clk_init_data){
1903                         .name = "gcc_pcie_1_cfg_ahb_clk",
1904                         .ops = &clk_branch2_ops,
1905                 },
1906         },
1907 };
1908
1909 static struct clk_branch gcc_pcie_1_clkref_clk = {
1910         .halt_reg = 0x8c02c,
1911         .halt_check = BRANCH_HALT,
1912         .clkr = {
1913                 .enable_reg = 0x8c02c,
1914                 .enable_mask = BIT(0),
1915                 .hw.init = &(struct clk_init_data){
1916                         .name = "gcc_pcie_1_clkref_clk",
1917                         .ops = &clk_branch2_ops,
1918                 },
1919         },
1920 };
1921
1922 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
1923         .halt_reg = 0x8d014,
1924         .halt_check = BRANCH_HALT_VOTED,
1925         .clkr = {
1926                 .enable_reg = 0x52004,
1927                 .enable_mask = BIT(27),
1928                 .hw.init = &(struct clk_init_data){
1929                         .name = "gcc_pcie_1_mstr_axi_clk",
1930                         .ops = &clk_branch2_ops,
1931                 },
1932         },
1933 };
1934
1935 static struct clk_branch gcc_pcie_1_pipe_clk = {
1936         .halt_check = BRANCH_HALT_SKIP,
1937         .clkr = {
1938                 .enable_reg = 0x52004,
1939                 .enable_mask = BIT(30),
1940                 .hw.init = &(struct clk_init_data){
1941                         .name = "gcc_pcie_1_pipe_clk",
1942                         .parent_data = &(const struct clk_parent_data){
1943                                 .fw_name = "pcie_1_pipe_clk", .name = "pcie_1_pipe_clk",
1944                         },
1945                         .num_parents = 1,
1946                         .ops = &clk_branch2_ops,
1947                 },
1948         },
1949 };
1950
1951 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
1952         .halt_reg = 0x8d010,
1953         .halt_check = BRANCH_HALT_VOTED,
1954         .hwcg_reg = 0x8d010,
1955         .hwcg_bit = 1,
1956         .clkr = {
1957                 .enable_reg = 0x52004,
1958                 .enable_mask = BIT(26),
1959                 .hw.init = &(struct clk_init_data){
1960                         .name = "gcc_pcie_1_slv_axi_clk",
1961                         .ops = &clk_branch2_ops,
1962                 },
1963         },
1964 };
1965
1966 static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
1967         .halt_reg = 0x8d00c,
1968         .halt_check = BRANCH_HALT_VOTED,
1969         .clkr = {
1970                 .enable_reg = 0x52004,
1971                 .enable_mask = BIT(25),
1972                 .hw.init = &(struct clk_init_data){
1973                         .name = "gcc_pcie_1_slv_q2a_axi_clk",
1974                         .ops = &clk_branch2_ops,
1975                 },
1976         },
1977 };
1978
1979 static struct clk_branch gcc_pcie_phy_aux_clk = {
1980         .halt_reg = 0x6f004,
1981         .halt_check = BRANCH_HALT,
1982         .clkr = {
1983                 .enable_reg = 0x6f004,
1984                 .enable_mask = BIT(0),
1985                 .hw.init = &(struct clk_init_data){
1986                         .name = "gcc_pcie_phy_aux_clk",
1987                         .parent_hws = (const struct clk_hw*[]){
1988                                 &gcc_pcie_0_aux_clk_src.clkr.hw,
1989                         },
1990                         .num_parents = 1,
1991                         .flags = CLK_SET_RATE_PARENT,
1992                         .ops = &clk_branch2_ops,
1993                 },
1994         },
1995 };
1996
1997 static struct clk_branch gcc_pcie_phy_refgen_clk = {
1998         .halt_reg = 0x6f02c,
1999         .halt_check = BRANCH_HALT,
2000         .clkr = {
2001                 .enable_reg = 0x6f02c,
2002                 .enable_mask = BIT(0),
2003                 .hw.init = &(struct clk_init_data){
2004                         .name = "gcc_pcie_phy_refgen_clk",
2005                         .parent_hws = (const struct clk_hw*[]){
2006                                 &gcc_pcie_phy_refgen_clk_src.clkr.hw,
2007                         },
2008                         .num_parents = 1,
2009                         .flags = CLK_SET_RATE_PARENT,
2010                         .ops = &clk_branch2_ops,
2011                 },
2012         },
2013 };
2014
2015 static struct clk_branch gcc_pdm2_clk = {
2016         .halt_reg = 0x3300c,
2017         .halt_check = BRANCH_HALT,
2018         .clkr = {
2019                 .enable_reg = 0x3300c,
2020                 .enable_mask = BIT(0),
2021                 .hw.init = &(struct clk_init_data){
2022                         .name = "gcc_pdm2_clk",
2023                         .parent_hws = (const struct clk_hw*[]){
2024                                 &gcc_pdm2_clk_src.clkr.hw,
2025                         },
2026                         .num_parents = 1,
2027                         .flags = CLK_SET_RATE_PARENT,
2028                         .ops = &clk_branch2_ops,
2029                 },
2030         },
2031 };
2032
2033 static struct clk_branch gcc_pdm_ahb_clk = {
2034         .halt_reg = 0x33004,
2035         .halt_check = BRANCH_HALT,
2036         .hwcg_reg = 0x33004,
2037         .hwcg_bit = 1,
2038         .clkr = {
2039                 .enable_reg = 0x33004,
2040                 .enable_mask = BIT(0),
2041                 .hw.init = &(struct clk_init_data){
2042                         .name = "gcc_pdm_ahb_clk",
2043                         .ops = &clk_branch2_ops,
2044                 },
2045         },
2046 };
2047
2048 static struct clk_branch gcc_pdm_xo4_clk = {
2049         .halt_reg = 0x33008,
2050         .halt_check = BRANCH_HALT,
2051         .clkr = {
2052                 .enable_reg = 0x33008,
2053                 .enable_mask = BIT(0),
2054                 .hw.init = &(struct clk_init_data){
2055                         .name = "gcc_pdm_xo4_clk",
2056                         .ops = &clk_branch2_ops,
2057                 },
2058         },
2059 };
2060
2061 static struct clk_branch gcc_prng_ahb_clk = {
2062         .halt_reg = 0x34004,
2063         .halt_check = BRANCH_HALT_VOTED,
2064         .hwcg_reg = 0x34004,
2065         .hwcg_bit = 1,
2066         .clkr = {
2067                 .enable_reg = 0x52004,
2068                 .enable_mask = BIT(13),
2069                 .hw.init = &(struct clk_init_data){
2070                         .name = "gcc_prng_ahb_clk",
2071                         .ops = &clk_branch2_ops,
2072                 },
2073         },
2074 };
2075
2076 static struct clk_branch gcc_qmip_camera_ahb_clk = {
2077         .halt_reg = 0xb014,
2078         .halt_check = BRANCH_HALT,
2079         .hwcg_reg = 0xb014,
2080         .hwcg_bit = 1,
2081         .clkr = {
2082                 .enable_reg = 0xb014,
2083                 .enable_mask = BIT(0),
2084                 .hw.init = &(struct clk_init_data){
2085                         .name = "gcc_qmip_camera_ahb_clk",
2086                         .ops = &clk_branch2_ops,
2087                 },
2088         },
2089 };
2090
2091 static struct clk_branch gcc_qmip_disp_ahb_clk = {
2092         .halt_reg = 0xb018,
2093         .halt_check = BRANCH_HALT,
2094         .hwcg_reg = 0xb018,
2095         .hwcg_bit = 1,
2096         .clkr = {
2097                 .enable_reg = 0xb018,
2098                 .enable_mask = BIT(0),
2099                 .hw.init = &(struct clk_init_data){
2100                         .name = "gcc_qmip_disp_ahb_clk",
2101                         .ops = &clk_branch2_ops,
2102                 },
2103         },
2104 };
2105
2106 static struct clk_branch gcc_qmip_video_ahb_clk = {
2107         .halt_reg = 0xb010,
2108         .halt_check = BRANCH_HALT,
2109         .hwcg_reg = 0xb010,
2110         .hwcg_bit = 1,
2111         .clkr = {
2112                 .enable_reg = 0xb010,
2113                 .enable_mask = BIT(0),
2114                 .hw.init = &(struct clk_init_data){
2115                         .name = "gcc_qmip_video_ahb_clk",
2116                         .ops = &clk_branch2_ops,
2117                 },
2118         },
2119 };
2120
2121 static struct clk_branch gcc_qspi_cnoc_periph_ahb_clk = {
2122         .halt_reg = 0x4b000,
2123         .halt_check = BRANCH_HALT,
2124         .clkr = {
2125                 .enable_reg = 0x4b000,
2126                 .enable_mask = BIT(0),
2127                 .hw.init = &(struct clk_init_data){
2128                         .name = "gcc_qspi_cnoc_periph_ahb_clk",
2129                         .ops = &clk_branch2_ops,
2130                 },
2131         },
2132 };
2133
2134 static struct clk_branch gcc_qspi_core_clk = {
2135         .halt_reg = 0x4b004,
2136         .halt_check = BRANCH_HALT,
2137         .clkr = {
2138                 .enable_reg = 0x4b004,
2139                 .enable_mask = BIT(0),
2140                 .hw.init = &(struct clk_init_data){
2141                         .name = "gcc_qspi_core_clk",
2142                         .parent_hws = (const struct clk_hw*[]){
2143                                 &gcc_qspi_core_clk_src.clkr.hw,
2144                         },
2145                         .num_parents = 1,
2146                         .flags = CLK_SET_RATE_PARENT,
2147                         .ops = &clk_branch2_ops,
2148                 },
2149         },
2150 };
2151
2152 static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
2153         .halt_reg = 0x17030,
2154         .halt_check = BRANCH_HALT_VOTED,
2155         .clkr = {
2156                 .enable_reg = 0x5200c,
2157                 .enable_mask = BIT(10),
2158                 .hw.init = &(struct clk_init_data){
2159                         .name = "gcc_qupv3_wrap0_s0_clk",
2160                         .parent_hws = (const struct clk_hw*[]){
2161                                 &gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
2162                         },
2163                         .num_parents = 1,
2164                         .flags = CLK_SET_RATE_PARENT,
2165                         .ops = &clk_branch2_ops,
2166                 },
2167         },
2168 };
2169
2170 static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
2171         .halt_reg = 0x17160,
2172         .halt_check = BRANCH_HALT_VOTED,
2173         .clkr = {
2174                 .enable_reg = 0x5200c,
2175                 .enable_mask = BIT(11),
2176                 .hw.init = &(struct clk_init_data){
2177                         .name = "gcc_qupv3_wrap0_s1_clk",
2178                         .parent_hws = (const struct clk_hw*[]){
2179                                 &gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
2180                         },
2181                         .num_parents = 1,
2182                         .flags = CLK_SET_RATE_PARENT,
2183                         .ops = &clk_branch2_ops,
2184                 },
2185         },
2186 };
2187
2188 static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
2189         .halt_reg = 0x17290,
2190         .halt_check = BRANCH_HALT_VOTED,
2191         .clkr = {
2192                 .enable_reg = 0x5200c,
2193                 .enable_mask = BIT(12),
2194                 .hw.init = &(struct clk_init_data){
2195                         .name = "gcc_qupv3_wrap0_s2_clk",
2196                         .parent_hws = (const struct clk_hw*[]){
2197                                 &gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
2198                         },
2199                         .num_parents = 1,
2200                         .flags = CLK_SET_RATE_PARENT,
2201                         .ops = &clk_branch2_ops,
2202                 },
2203         },
2204 };
2205
2206 static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
2207         .halt_reg = 0x173c0,
2208         .halt_check = BRANCH_HALT_VOTED,
2209         .clkr = {
2210                 .enable_reg = 0x5200c,
2211                 .enable_mask = BIT(13),
2212                 .hw.init = &(struct clk_init_data){
2213                         .name = "gcc_qupv3_wrap0_s3_clk",
2214                         .parent_hws = (const struct clk_hw*[]){
2215                                 &gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
2216                         },
2217                         .num_parents = 1,
2218                         .flags = CLK_SET_RATE_PARENT,
2219                         .ops = &clk_branch2_ops,
2220                 },
2221         },
2222 };
2223
2224 static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
2225         .halt_reg = 0x174f0,
2226         .halt_check = BRANCH_HALT_VOTED,
2227         .clkr = {
2228                 .enable_reg = 0x5200c,
2229                 .enable_mask = BIT(14),
2230                 .hw.init = &(struct clk_init_data){
2231                         .name = "gcc_qupv3_wrap0_s4_clk",
2232                         .parent_hws = (const struct clk_hw*[]){
2233                                 &gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
2234                         },
2235                         .num_parents = 1,
2236                         .flags = CLK_SET_RATE_PARENT,
2237                         .ops = &clk_branch2_ops,
2238                 },
2239         },
2240 };
2241
2242 static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
2243         .halt_reg = 0x17620,
2244         .halt_check = BRANCH_HALT_VOTED,
2245         .clkr = {
2246                 .enable_reg = 0x5200c,
2247                 .enable_mask = BIT(15),
2248                 .hw.init = &(struct clk_init_data){
2249                         .name = "gcc_qupv3_wrap0_s5_clk",
2250                         .parent_hws = (const struct clk_hw*[]){
2251                                 &gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
2252                         },
2253                         .num_parents = 1,
2254                         .flags = CLK_SET_RATE_PARENT,
2255                         .ops = &clk_branch2_ops,
2256                 },
2257         },
2258 };
2259
2260 static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
2261         .halt_reg = 0x17750,
2262         .halt_check = BRANCH_HALT_VOTED,
2263         .clkr = {
2264                 .enable_reg = 0x5200c,
2265                 .enable_mask = BIT(16),
2266                 .hw.init = &(struct clk_init_data){
2267                         .name = "gcc_qupv3_wrap0_s6_clk",
2268                         .parent_hws = (const struct clk_hw*[]){
2269                                 &gcc_qupv3_wrap0_s6_clk_src.clkr.hw,
2270                         },
2271                         .num_parents = 1,
2272                         .flags = CLK_SET_RATE_PARENT,
2273                         .ops = &clk_branch2_ops,
2274                 },
2275         },
2276 };
2277
2278 static struct clk_branch gcc_qupv3_wrap0_s7_clk = {
2279         .halt_reg = 0x17880,
2280         .halt_check = BRANCH_HALT_VOTED,
2281         .clkr = {
2282                 .enable_reg = 0x5200c,
2283                 .enable_mask = BIT(17),
2284                 .hw.init = &(struct clk_init_data){
2285                         .name = "gcc_qupv3_wrap0_s7_clk",
2286                         .parent_hws = (const struct clk_hw*[]){
2287                                 &gcc_qupv3_wrap0_s7_clk_src.clkr.hw,
2288                         },
2289                         .num_parents = 1,
2290                         .flags = CLK_SET_RATE_PARENT,
2291                         .ops = &clk_branch2_ops,
2292                 },
2293         },
2294 };
2295
2296 static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
2297         .halt_reg = 0x18014,
2298         .halt_check = BRANCH_HALT_VOTED,
2299         .clkr = {
2300                 .enable_reg = 0x5200c,
2301                 .enable_mask = BIT(22),
2302                 .hw.init = &(struct clk_init_data){
2303                         .name = "gcc_qupv3_wrap1_s0_clk",
2304                         .parent_hws = (const struct clk_hw*[]){
2305                                 &gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
2306                         },
2307                         .num_parents = 1,
2308                         .flags = CLK_SET_RATE_PARENT,
2309                         .ops = &clk_branch2_ops,
2310                 },
2311         },
2312 };
2313
2314 static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
2315         .halt_reg = 0x18144,
2316         .halt_check = BRANCH_HALT_VOTED,
2317         .clkr = {
2318                 .enable_reg = 0x5200c,
2319                 .enable_mask = BIT(23),
2320                 .hw.init = &(struct clk_init_data){
2321                         .name = "gcc_qupv3_wrap1_s1_clk",
2322                         .parent_hws = (const struct clk_hw*[]){
2323                                 &gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
2324                         },
2325                         .num_parents = 1,
2326                         .flags = CLK_SET_RATE_PARENT,
2327                         .ops = &clk_branch2_ops,
2328                 },
2329         },
2330 };
2331
2332 static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
2333         .halt_reg = 0x18274,
2334         .halt_check = BRANCH_HALT_VOTED,
2335         .clkr = {
2336                 .enable_reg = 0x5200c,
2337                 .enable_mask = BIT(24),
2338                 .hw.init = &(struct clk_init_data){
2339                         .name = "gcc_qupv3_wrap1_s2_clk",
2340                         .parent_hws = (const struct clk_hw*[]){
2341                                 &gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
2342                         },
2343                         .num_parents = 1,
2344                         .flags = CLK_SET_RATE_PARENT,
2345                         .ops = &clk_branch2_ops,
2346                 },
2347         },
2348 };
2349
2350 static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
2351         .halt_reg = 0x183a4,
2352         .halt_check = BRANCH_HALT_VOTED,
2353         .clkr = {
2354                 .enable_reg = 0x5200c,
2355                 .enable_mask = BIT(25),
2356                 .hw.init = &(struct clk_init_data){
2357                         .name = "gcc_qupv3_wrap1_s3_clk",
2358                         .parent_hws = (const struct clk_hw*[]){
2359                                 &gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
2360                         },
2361                         .num_parents = 1,
2362                         .flags = CLK_SET_RATE_PARENT,
2363                         .ops = &clk_branch2_ops,
2364                 },
2365         },
2366 };
2367
2368 static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
2369         .halt_reg = 0x184d4,
2370         .halt_check = BRANCH_HALT_VOTED,
2371         .clkr = {
2372                 .enable_reg = 0x5200c,
2373                 .enable_mask = BIT(26),
2374                 .hw.init = &(struct clk_init_data){
2375                         .name = "gcc_qupv3_wrap1_s4_clk",
2376                         .parent_hws = (const struct clk_hw*[]){
2377                                 &gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
2378                         },
2379                         .num_parents = 1,
2380                         .flags = CLK_SET_RATE_PARENT,
2381                         .ops = &clk_branch2_ops,
2382                 },
2383         },
2384 };
2385
2386 static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
2387         .halt_reg = 0x18604,
2388         .halt_check = BRANCH_HALT_VOTED,
2389         .clkr = {
2390                 .enable_reg = 0x5200c,
2391                 .enable_mask = BIT(27),
2392                 .hw.init = &(struct clk_init_data){
2393                         .name = "gcc_qupv3_wrap1_s5_clk",
2394                         .parent_hws = (const struct clk_hw*[]){
2395                                 &gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
2396                         },
2397                         .num_parents = 1,
2398                         .flags = CLK_SET_RATE_PARENT,
2399                         .ops = &clk_branch2_ops,
2400                 },
2401         },
2402 };
2403
2404 static struct clk_branch gcc_qupv3_wrap1_s6_clk = {
2405         .halt_reg = 0x18734,
2406         .halt_check = BRANCH_HALT_VOTED,
2407         .clkr = {
2408                 .enable_reg = 0x5200c,
2409                 .enable_mask = BIT(28),
2410                 .hw.init = &(struct clk_init_data){
2411                         .name = "gcc_qupv3_wrap1_s6_clk",
2412                         .parent_hws = (const struct clk_hw*[]){
2413                                 &gcc_qupv3_wrap1_s6_clk_src.clkr.hw,
2414                         },
2415                         .num_parents = 1,
2416                         .flags = CLK_SET_RATE_PARENT,
2417                         .ops = &clk_branch2_ops,
2418                 },
2419         },
2420 };
2421
2422 static struct clk_branch gcc_qupv3_wrap1_s7_clk = {
2423         .halt_reg = 0x18864,
2424         .halt_check = BRANCH_HALT_VOTED,
2425         .clkr = {
2426                 .enable_reg = 0x5200c,
2427                 .enable_mask = BIT(29),
2428                 .hw.init = &(struct clk_init_data){
2429                         .name = "gcc_qupv3_wrap1_s7_clk",
2430                         .parent_hws = (const struct clk_hw*[]){
2431                                 &gcc_qupv3_wrap1_s7_clk_src.clkr.hw,
2432                         },
2433                         .num_parents = 1,
2434                         .flags = CLK_SET_RATE_PARENT,
2435                         .ops = &clk_branch2_ops,
2436                 },
2437         },
2438 };
2439
2440 static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
2441         .halt_reg = 0x17004,
2442         .halt_check = BRANCH_HALT_VOTED,
2443         .clkr = {
2444                 .enable_reg = 0x5200c,
2445                 .enable_mask = BIT(6),
2446                 .hw.init = &(struct clk_init_data){
2447                         .name = "gcc_qupv3_wrap_0_m_ahb_clk",
2448                         .ops = &clk_branch2_ops,
2449                 },
2450         },
2451 };
2452
2453 static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
2454         .halt_reg = 0x17008,
2455         .halt_check = BRANCH_HALT_VOTED,
2456         .hwcg_reg = 0x17008,
2457         .hwcg_bit = 1,
2458         .clkr = {
2459                 .enable_reg = 0x5200c,
2460                 .enable_mask = BIT(7),
2461                 .hw.init = &(struct clk_init_data){
2462                         .name = "gcc_qupv3_wrap_0_s_ahb_clk",
2463                         .ops = &clk_branch2_ops,
2464                 },
2465         },
2466 };
2467
2468 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
2469         .halt_reg = 0x1800c,
2470         .halt_check = BRANCH_HALT_VOTED,
2471         .clkr = {
2472                 .enable_reg = 0x5200c,
2473                 .enable_mask = BIT(20),
2474                 .hw.init = &(struct clk_init_data){
2475                         .name = "gcc_qupv3_wrap_1_m_ahb_clk",
2476                         .ops = &clk_branch2_ops,
2477                 },
2478         },
2479 };
2480
2481 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
2482         .halt_reg = 0x18010,
2483         .halt_check = BRANCH_HALT_VOTED,
2484         .hwcg_reg = 0x18010,
2485         .hwcg_bit = 1,
2486         .clkr = {
2487                 .enable_reg = 0x5200c,
2488                 .enable_mask = BIT(21),
2489                 .hw.init = &(struct clk_init_data){
2490                         .name = "gcc_qupv3_wrap_1_s_ahb_clk",
2491                         .ops = &clk_branch2_ops,
2492                 },
2493         },
2494 };
2495
2496 static struct clk_branch gcc_sdcc1_ahb_clk = {
2497         .halt_reg = 0x26008,
2498         .halt_check = BRANCH_HALT,
2499         .clkr = {
2500                 .enable_reg = 0x26008,
2501                 .enable_mask = BIT(0),
2502                 .hw.init = &(struct clk_init_data){
2503                         .name = "gcc_sdcc1_ahb_clk",
2504                         .ops = &clk_branch2_ops,
2505                 },
2506         },
2507 };
2508
2509 static struct clk_branch gcc_sdcc1_apps_clk = {
2510         .halt_reg = 0x26004,
2511         .halt_check = BRANCH_HALT,
2512         .clkr = {
2513                 .enable_reg = 0x26004,
2514                 .enable_mask = BIT(0),
2515                 .hw.init = &(struct clk_init_data){
2516                         .name = "gcc_sdcc1_apps_clk",
2517                         .parent_hws = (const struct clk_hw*[]){
2518                                 &gcc_sdcc1_apps_clk_src.clkr.hw,
2519                         },
2520                         .num_parents = 1,
2521                         .flags = CLK_SET_RATE_PARENT,
2522                         .ops = &clk_branch2_ops,
2523                 },
2524         },
2525 };
2526
2527 static struct clk_branch gcc_sdcc1_ice_core_clk = {
2528         .halt_reg = 0x2600c,
2529         .halt_check = BRANCH_HALT,
2530         .clkr = {
2531                 .enable_reg = 0x2600c,
2532                 .enable_mask = BIT(0),
2533                 .hw.init = &(struct clk_init_data){
2534                         .name = "gcc_sdcc1_ice_core_clk",
2535                         .parent_hws = (const struct clk_hw*[]){
2536                                 &gcc_sdcc1_ice_core_clk_src.clkr.hw,
2537                         },
2538                         .num_parents = 1,
2539                         .flags = CLK_SET_RATE_PARENT,
2540                         .ops = &clk_branch2_ops,
2541                 },
2542         },
2543 };
2544
2545 static struct clk_branch gcc_sdcc2_ahb_clk = {
2546         .halt_reg = 0x14008,
2547         .halt_check = BRANCH_HALT,
2548         .clkr = {
2549                 .enable_reg = 0x14008,
2550                 .enable_mask = BIT(0),
2551                 .hw.init = &(struct clk_init_data){
2552                         .name = "gcc_sdcc2_ahb_clk",
2553                         .ops = &clk_branch2_ops,
2554                 },
2555         },
2556 };
2557
2558 static struct clk_branch gcc_sdcc2_apps_clk = {
2559         .halt_reg = 0x14004,
2560         .halt_check = BRANCH_HALT,
2561         .clkr = {
2562                 .enable_reg = 0x14004,
2563                 .enable_mask = BIT(0),
2564                 .hw.init = &(struct clk_init_data){
2565                         .name = "gcc_sdcc2_apps_clk",
2566                         .parent_hws = (const struct clk_hw*[]){
2567                                 &gcc_sdcc2_apps_clk_src.clkr.hw,
2568                         },
2569                         .num_parents = 1,
2570                         .flags = CLK_SET_RATE_PARENT,
2571                         .ops = &clk_branch2_ops,
2572                 },
2573         },
2574 };
2575
2576 static struct clk_branch gcc_sdcc4_ahb_clk = {
2577         .halt_reg = 0x16008,
2578         .halt_check = BRANCH_HALT,
2579         .clkr = {
2580                 .enable_reg = 0x16008,
2581                 .enable_mask = BIT(0),
2582                 .hw.init = &(struct clk_init_data){
2583                         .name = "gcc_sdcc4_ahb_clk",
2584                         .ops = &clk_branch2_ops,
2585                 },
2586         },
2587 };
2588
2589 static struct clk_branch gcc_sdcc4_apps_clk = {
2590         .halt_reg = 0x16004,
2591         .halt_check = BRANCH_HALT,
2592         .clkr = {
2593                 .enable_reg = 0x16004,
2594                 .enable_mask = BIT(0),
2595                 .hw.init = &(struct clk_init_data){
2596                         .name = "gcc_sdcc4_apps_clk",
2597                         .parent_hws = (const struct clk_hw*[]){
2598                                 &gcc_sdcc4_apps_clk_src.clkr.hw,
2599                         },
2600                         .num_parents = 1,
2601                         .flags = CLK_SET_RATE_PARENT,
2602                         .ops = &clk_branch2_ops,
2603                 },
2604         },
2605 };
2606
2607 /*
2608  * The source clock frequencies are different for SDM670; define a child clock
2609  * pointing to the source clock that uses SDM670 frequencies.
2610  */
2611 static struct clk_branch gcc_sdm670_sdcc4_apps_clk = {
2612         .halt_reg = 0x16004,
2613         .halt_check = BRANCH_HALT,
2614         .clkr = {
2615                 .enable_reg = 0x16004,
2616                 .enable_mask = BIT(0),
2617                 .hw.init = &(struct clk_init_data){
2618                         .name = "gcc_sdcc4_apps_clk",
2619                         .parent_hws = (const struct clk_hw*[]){
2620                                 &gcc_sdm670_sdcc4_apps_clk_src.clkr.hw,
2621                         },
2622                         .num_parents = 1,
2623                         .flags = CLK_SET_RATE_PARENT,
2624                         .ops = &clk_branch2_ops,
2625                 },
2626         },
2627 };
2628
2629 static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = {
2630         .halt_reg = 0x414c,
2631         .halt_check = BRANCH_HALT_VOTED,
2632         .clkr = {
2633                 .enable_reg = 0x52004,
2634                 .enable_mask = BIT(0),
2635                 .hw.init = &(struct clk_init_data){
2636                         .name = "gcc_sys_noc_cpuss_ahb_clk",
2637                         .parent_hws = (const struct clk_hw*[]){
2638                                 &gcc_cpuss_ahb_clk_src.clkr.hw,
2639                         },
2640                         .num_parents = 1,
2641                         .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
2642                         .ops = &clk_branch2_ops,
2643                 },
2644         },
2645 };
2646
2647 static struct clk_branch gcc_tsif_ahb_clk = {
2648         .halt_reg = 0x36004,
2649         .halt_check = BRANCH_HALT,
2650         .clkr = {
2651                 .enable_reg = 0x36004,
2652                 .enable_mask = BIT(0),
2653                 .hw.init = &(struct clk_init_data){
2654                         .name = "gcc_tsif_ahb_clk",
2655                         .ops = &clk_branch2_ops,
2656                 },
2657         },
2658 };
2659
2660 static struct clk_branch gcc_tsif_inactivity_timers_clk = {
2661         .halt_reg = 0x3600c,
2662         .halt_check = BRANCH_HALT,
2663         .clkr = {
2664                 .enable_reg = 0x3600c,
2665                 .enable_mask = BIT(0),
2666                 .hw.init = &(struct clk_init_data){
2667                         .name = "gcc_tsif_inactivity_timers_clk",
2668                         .ops = &clk_branch2_ops,
2669                 },
2670         },
2671 };
2672
2673 static struct clk_branch gcc_tsif_ref_clk = {
2674         .halt_reg = 0x36008,
2675         .halt_check = BRANCH_HALT,
2676         .clkr = {
2677                 .enable_reg = 0x36008,
2678                 .enable_mask = BIT(0),
2679                 .hw.init = &(struct clk_init_data){
2680                         .name = "gcc_tsif_ref_clk",
2681                         .parent_hws = (const struct clk_hw*[]){
2682                                 &gcc_tsif_ref_clk_src.clkr.hw,
2683                         },
2684                         .num_parents = 1,
2685                         .flags = CLK_SET_RATE_PARENT,
2686                         .ops = &clk_branch2_ops,
2687                 },
2688         },
2689 };
2690
2691 static struct clk_branch gcc_ufs_card_ahb_clk = {
2692         .halt_reg = 0x75010,
2693         .halt_check = BRANCH_HALT,
2694         .hwcg_reg = 0x75010,
2695         .hwcg_bit = 1,
2696         .clkr = {
2697                 .enable_reg = 0x75010,
2698                 .enable_mask = BIT(0),
2699                 .hw.init = &(struct clk_init_data){
2700                         .name = "gcc_ufs_card_ahb_clk",
2701                         .ops = &clk_branch2_ops,
2702                 },
2703         },
2704 };
2705
2706 static struct clk_branch gcc_ufs_card_axi_clk = {
2707         .halt_reg = 0x7500c,
2708         .halt_check = BRANCH_HALT,
2709         .hwcg_reg = 0x7500c,
2710         .hwcg_bit = 1,
2711         .clkr = {
2712                 .enable_reg = 0x7500c,
2713                 .enable_mask = BIT(0),
2714                 .hw.init = &(struct clk_init_data){
2715                         .name = "gcc_ufs_card_axi_clk",
2716                         .parent_hws = (const struct clk_hw*[]){
2717                                 &gcc_ufs_card_axi_clk_src.clkr.hw,
2718                         },
2719                         .num_parents = 1,
2720                         .flags = CLK_SET_RATE_PARENT,
2721                         .ops = &clk_branch2_ops,
2722                 },
2723         },
2724 };
2725
2726 static struct clk_branch gcc_ufs_card_clkref_clk = {
2727         .halt_reg = 0x8c004,
2728         .halt_check = BRANCH_HALT,
2729         .clkr = {
2730                 .enable_reg = 0x8c004,
2731                 .enable_mask = BIT(0),
2732                 .hw.init = &(struct clk_init_data){
2733                         .name = "gcc_ufs_card_clkref_clk",
2734                         .ops = &clk_branch2_ops,
2735                 },
2736         },
2737 };
2738
2739 static struct clk_branch gcc_ufs_card_ice_core_clk = {
2740         .halt_reg = 0x75058,
2741         .halt_check = BRANCH_HALT,
2742         .hwcg_reg = 0x75058,
2743         .hwcg_bit = 1,
2744         .clkr = {
2745                 .enable_reg = 0x75058,
2746                 .enable_mask = BIT(0),
2747                 .hw.init = &(struct clk_init_data){
2748                         .name = "gcc_ufs_card_ice_core_clk",
2749                         .parent_hws = (const struct clk_hw*[]){
2750                                 &gcc_ufs_card_ice_core_clk_src.clkr.hw,
2751                         },
2752                         .num_parents = 1,
2753                         .flags = CLK_SET_RATE_PARENT,
2754                         .ops = &clk_branch2_ops,
2755                 },
2756         },
2757 };
2758
2759 static struct clk_branch gcc_ufs_card_phy_aux_clk = {
2760         .halt_reg = 0x7508c,
2761         .halt_check = BRANCH_HALT,
2762         .hwcg_reg = 0x7508c,
2763         .hwcg_bit = 1,
2764         .clkr = {
2765                 .enable_reg = 0x7508c,
2766                 .enable_mask = BIT(0),
2767                 .hw.init = &(struct clk_init_data){
2768                         .name = "gcc_ufs_card_phy_aux_clk",
2769                         .parent_hws = (const struct clk_hw*[]){
2770                                 &gcc_ufs_card_phy_aux_clk_src.clkr.hw,
2771                         },
2772                         .num_parents = 1,
2773                         .flags = CLK_SET_RATE_PARENT,
2774                         .ops = &clk_branch2_ops,
2775                 },
2776         },
2777 };
2778
2779 static struct clk_branch gcc_ufs_card_rx_symbol_0_clk = {
2780         .halt_check = BRANCH_HALT_SKIP,
2781         .clkr = {
2782                 .enable_reg = 0x75018,
2783                 .enable_mask = BIT(0),
2784                 .hw.init = &(struct clk_init_data){
2785                         .name = "gcc_ufs_card_rx_symbol_0_clk",
2786                         .ops = &clk_branch2_ops,
2787                 },
2788         },
2789 };
2790
2791 static struct clk_branch gcc_ufs_card_rx_symbol_1_clk = {
2792         .halt_check = BRANCH_HALT_SKIP,
2793         .clkr = {
2794                 .enable_reg = 0x750a8,
2795                 .enable_mask = BIT(0),
2796                 .hw.init = &(struct clk_init_data){
2797                         .name = "gcc_ufs_card_rx_symbol_1_clk",
2798                         .ops = &clk_branch2_ops,
2799                 },
2800         },
2801 };
2802
2803 static struct clk_branch gcc_ufs_card_tx_symbol_0_clk = {
2804         .halt_check = BRANCH_HALT_SKIP,
2805         .clkr = {
2806                 .enable_reg = 0x75014,
2807                 .enable_mask = BIT(0),
2808                 .hw.init = &(struct clk_init_data){
2809                         .name = "gcc_ufs_card_tx_symbol_0_clk",
2810                         .ops = &clk_branch2_ops,
2811                 },
2812         },
2813 };
2814
2815 static struct clk_branch gcc_ufs_card_unipro_core_clk = {
2816         .halt_reg = 0x75054,
2817         .halt_check = BRANCH_HALT,
2818         .hwcg_reg = 0x75054,
2819         .hwcg_bit = 1,
2820         .clkr = {
2821                 .enable_reg = 0x75054,
2822                 .enable_mask = BIT(0),
2823                 .hw.init = &(struct clk_init_data){
2824                         .name = "gcc_ufs_card_unipro_core_clk",
2825                         .parent_hws = (const struct clk_hw*[]){
2826                                 &gcc_ufs_card_unipro_core_clk_src.clkr.hw,
2827                         },
2828                         .num_parents = 1,
2829                         .flags = CLK_SET_RATE_PARENT,
2830                         .ops = &clk_branch2_ops,
2831                 },
2832         },
2833 };
2834
2835 static struct clk_branch gcc_ufs_mem_clkref_clk = {
2836         .halt_reg = 0x8c000,
2837         .halt_check = BRANCH_HALT,
2838         .clkr = {
2839                 .enable_reg = 0x8c000,
2840                 .enable_mask = BIT(0),
2841                 .hw.init = &(struct clk_init_data){
2842                         .name = "gcc_ufs_mem_clkref_clk",
2843                         .ops = &clk_branch2_ops,
2844                 },
2845         },
2846 };
2847
2848 static struct clk_branch gcc_ufs_phy_ahb_clk = {
2849         .halt_reg = 0x77010,
2850         .halt_check = BRANCH_HALT,
2851         .hwcg_reg = 0x77010,
2852         .hwcg_bit = 1,
2853         .clkr = {
2854                 .enable_reg = 0x77010,
2855                 .enable_mask = BIT(0),
2856                 .hw.init = &(struct clk_init_data){
2857                         .name = "gcc_ufs_phy_ahb_clk",
2858                         .ops = &clk_branch2_ops,
2859                 },
2860         },
2861 };
2862
2863 static struct clk_branch gcc_ufs_phy_axi_clk = {
2864         .halt_reg = 0x7700c,
2865         .halt_check = BRANCH_HALT,
2866         .hwcg_reg = 0x7700c,
2867         .hwcg_bit = 1,
2868         .clkr = {
2869                 .enable_reg = 0x7700c,
2870                 .enable_mask = BIT(0),
2871                 .hw.init = &(struct clk_init_data){
2872                         .name = "gcc_ufs_phy_axi_clk",
2873                         .parent_hws = (const struct clk_hw*[]){
2874                                 &gcc_ufs_phy_axi_clk_src.clkr.hw,
2875                         },
2876                         .num_parents = 1,
2877                         .flags = CLK_SET_RATE_PARENT,
2878                         .ops = &clk_branch2_ops,
2879                 },
2880         },
2881 };
2882
2883 static struct clk_branch gcc_ufs_phy_ice_core_clk = {
2884         .halt_reg = 0x77058,
2885         .halt_check = BRANCH_HALT,
2886         .hwcg_reg = 0x77058,
2887         .hwcg_bit = 1,
2888         .clkr = {
2889                 .enable_reg = 0x77058,
2890                 .enable_mask = BIT(0),
2891                 .hw.init = &(struct clk_init_data){
2892                         .name = "gcc_ufs_phy_ice_core_clk",
2893                         .parent_hws = (const struct clk_hw*[]){
2894                                 &gcc_ufs_phy_ice_core_clk_src.clkr.hw,
2895                         },
2896                         .num_parents = 1,
2897                         .flags = CLK_SET_RATE_PARENT,
2898                         .ops = &clk_branch2_ops,
2899                 },
2900         },
2901 };
2902
2903 static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
2904         .halt_reg = 0x7708c,
2905         .halt_check = BRANCH_HALT,
2906         .hwcg_reg = 0x7708c,
2907         .hwcg_bit = 1,
2908         .clkr = {
2909                 .enable_reg = 0x7708c,
2910                 .enable_mask = BIT(0),
2911                 .hw.init = &(struct clk_init_data){
2912                         .name = "gcc_ufs_phy_phy_aux_clk",
2913                         .parent_hws = (const struct clk_hw*[]){
2914                                 &gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
2915                         },
2916                         .num_parents = 1,
2917                         .flags = CLK_SET_RATE_PARENT,
2918                         .ops = &clk_branch2_ops,
2919                 },
2920         },
2921 };
2922
2923 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
2924         .halt_check = BRANCH_HALT_SKIP,
2925         .clkr = {
2926                 .enable_reg = 0x77018,
2927                 .enable_mask = BIT(0),
2928                 .hw.init = &(struct clk_init_data){
2929                         .name = "gcc_ufs_phy_rx_symbol_0_clk",
2930                         .ops = &clk_branch2_ops,
2931                 },
2932         },
2933 };
2934
2935 static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
2936         .halt_check = BRANCH_HALT_SKIP,
2937         .clkr = {
2938                 .enable_reg = 0x770a8,
2939                 .enable_mask = BIT(0),
2940                 .hw.init = &(struct clk_init_data){
2941                         .name = "gcc_ufs_phy_rx_symbol_1_clk",
2942                         .ops = &clk_branch2_ops,
2943                 },
2944         },
2945 };
2946
2947 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
2948         .halt_check = BRANCH_HALT_SKIP,
2949         .clkr = {
2950                 .enable_reg = 0x77014,
2951                 .enable_mask = BIT(0),
2952                 .hw.init = &(struct clk_init_data){
2953                         .name = "gcc_ufs_phy_tx_symbol_0_clk",
2954                         .ops = &clk_branch2_ops,
2955                 },
2956         },
2957 };
2958
2959 static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
2960         .halt_reg = 0x77054,
2961         .halt_check = BRANCH_HALT,
2962         .hwcg_reg = 0x77054,
2963         .hwcg_bit = 1,
2964         .clkr = {
2965                 .enable_reg = 0x77054,
2966                 .enable_mask = BIT(0),
2967                 .hw.init = &(struct clk_init_data){
2968                         .name = "gcc_ufs_phy_unipro_core_clk",
2969                         .parent_hws = (const struct clk_hw*[]){
2970                                 &gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
2971                         },
2972                         .num_parents = 1,
2973                         .flags = CLK_SET_RATE_PARENT,
2974                         .ops = &clk_branch2_ops,
2975                 },
2976         },
2977 };
2978
2979 static struct clk_branch gcc_usb30_prim_master_clk = {
2980         .halt_reg = 0xf00c,
2981         .halt_check = BRANCH_HALT,
2982         .clkr = {
2983                 .enable_reg = 0xf00c,
2984                 .enable_mask = BIT(0),
2985                 .hw.init = &(struct clk_init_data){
2986                         .name = "gcc_usb30_prim_master_clk",
2987                         .parent_hws = (const struct clk_hw*[]){
2988                                 &gcc_usb30_prim_master_clk_src.clkr.hw,
2989                         },
2990                         .num_parents = 1,
2991                         .flags = CLK_SET_RATE_PARENT,
2992                         .ops = &clk_branch2_ops,
2993                 },
2994         },
2995 };
2996
2997 static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
2998         .halt_reg = 0xf014,
2999         .halt_check = BRANCH_HALT,
3000         .clkr = {
3001                 .enable_reg = 0xf014,
3002                 .enable_mask = BIT(0),
3003                 .hw.init = &(struct clk_init_data){
3004                         .name = "gcc_usb30_prim_mock_utmi_clk",
3005                         .parent_hws = (const struct clk_hw*[]){
3006                                 &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
3007                         },
3008                         .num_parents = 1,
3009                         .flags = CLK_SET_RATE_PARENT,
3010                         .ops = &clk_branch2_ops,
3011                 },
3012         },
3013 };
3014
3015 static struct clk_branch gcc_usb30_prim_sleep_clk = {
3016         .halt_reg = 0xf010,
3017         .halt_check = BRANCH_HALT,
3018         .clkr = {
3019                 .enable_reg = 0xf010,
3020                 .enable_mask = BIT(0),
3021                 .hw.init = &(struct clk_init_data){
3022                         .name = "gcc_usb30_prim_sleep_clk",
3023                         .ops = &clk_branch2_ops,
3024                 },
3025         },
3026 };
3027
3028 static struct clk_branch gcc_usb30_sec_master_clk = {
3029         .halt_reg = 0x1000c,
3030         .halt_check = BRANCH_HALT,
3031         .clkr = {
3032                 .enable_reg = 0x1000c,
3033                 .enable_mask = BIT(0),
3034                 .hw.init = &(struct clk_init_data){
3035                         .name = "gcc_usb30_sec_master_clk",
3036                         .parent_hws = (const struct clk_hw*[]){
3037                                 &gcc_usb30_sec_master_clk_src.clkr.hw,
3038                         },
3039                         .num_parents = 1,
3040                         .flags = CLK_SET_RATE_PARENT,
3041                         .ops = &clk_branch2_ops,
3042                 },
3043         },
3044 };
3045
3046 static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {
3047         .halt_reg = 0x10014,
3048         .halt_check = BRANCH_HALT,
3049         .clkr = {
3050                 .enable_reg = 0x10014,
3051                 .enable_mask = BIT(0),
3052                 .hw.init = &(struct clk_init_data){
3053                         .name = "gcc_usb30_sec_mock_utmi_clk",
3054                         .parent_hws = (const struct clk_hw*[]){
3055                                 &gcc_usb30_sec_mock_utmi_clk_src.clkr.hw,
3056                         },
3057                         .num_parents = 1,
3058                         .flags = CLK_SET_RATE_PARENT,
3059                         .ops = &clk_branch2_ops,
3060                 },
3061         },
3062 };
3063
3064 static struct clk_branch gcc_usb30_sec_sleep_clk = {
3065         .halt_reg = 0x10010,
3066         .halt_check = BRANCH_HALT,
3067         .clkr = {
3068                 .enable_reg = 0x10010,
3069                 .enable_mask = BIT(0),
3070                 .hw.init = &(struct clk_init_data){
3071                         .name = "gcc_usb30_sec_sleep_clk",
3072                         .ops = &clk_branch2_ops,
3073                 },
3074         },
3075 };
3076
3077 static struct clk_branch gcc_usb3_prim_clkref_clk = {
3078         .halt_reg = 0x8c008,
3079         .halt_check = BRANCH_HALT,
3080         .clkr = {
3081                 .enable_reg = 0x8c008,
3082                 .enable_mask = BIT(0),
3083                 .hw.init = &(struct clk_init_data){
3084                         .name = "gcc_usb3_prim_clkref_clk",
3085                         .ops = &clk_branch2_ops,
3086                 },
3087         },
3088 };
3089
3090 static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
3091         .halt_reg = 0xf04c,
3092         .halt_check = BRANCH_HALT,
3093         .clkr = {
3094                 .enable_reg = 0xf04c,
3095                 .enable_mask = BIT(0),
3096                 .hw.init = &(struct clk_init_data){
3097                         .name = "gcc_usb3_prim_phy_aux_clk",
3098                         .parent_hws = (const struct clk_hw*[]){
3099                                 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3100                         },
3101                         .num_parents = 1,
3102                         .flags = CLK_SET_RATE_PARENT,
3103                         .ops = &clk_branch2_ops,
3104                 },
3105         },
3106 };
3107
3108 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
3109         .halt_reg = 0xf050,
3110         .halt_check = BRANCH_HALT,
3111         .clkr = {
3112                 .enable_reg = 0xf050,
3113                 .enable_mask = BIT(0),
3114                 .hw.init = &(struct clk_init_data){
3115                         .name = "gcc_usb3_prim_phy_com_aux_clk",
3116                         .parent_hws = (const struct clk_hw*[]){
3117                                 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3118                         },
3119                         .num_parents = 1,
3120                         .flags = CLK_SET_RATE_PARENT,
3121                         .ops = &clk_branch2_ops,
3122                 },
3123         },
3124 };
3125
3126 static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
3127         .halt_check = BRANCH_HALT_SKIP,
3128         .clkr = {
3129                 .enable_reg = 0xf054,
3130                 .enable_mask = BIT(0),
3131                 .hw.init = &(struct clk_init_data){
3132                         .name = "gcc_usb3_prim_phy_pipe_clk",
3133                         .ops = &clk_branch2_ops,
3134                 },
3135         },
3136 };
3137
3138 static struct clk_branch gcc_usb3_sec_clkref_clk = {
3139         .halt_reg = 0x8c028,
3140         .halt_check = BRANCH_HALT,
3141         .clkr = {
3142                 .enable_reg = 0x8c028,
3143                 .enable_mask = BIT(0),
3144                 .hw.init = &(struct clk_init_data){
3145                         .name = "gcc_usb3_sec_clkref_clk",
3146                         .ops = &clk_branch2_ops,
3147                 },
3148         },
3149 };
3150
3151 static struct clk_branch gcc_usb3_sec_phy_aux_clk = {
3152         .halt_reg = 0x1004c,
3153         .halt_check = BRANCH_HALT,
3154         .clkr = {
3155                 .enable_reg = 0x1004c,
3156                 .enable_mask = BIT(0),
3157                 .hw.init = &(struct clk_init_data){
3158                         .name = "gcc_usb3_sec_phy_aux_clk",
3159                         .parent_hws = (const struct clk_hw*[]){
3160                                 &gcc_usb3_sec_phy_aux_clk_src.clkr.hw,
3161                         },
3162                         .num_parents = 1,
3163                         .flags = CLK_SET_RATE_PARENT,
3164                         .ops = &clk_branch2_ops,
3165                 },
3166         },
3167 };
3168
3169 static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = {
3170         .halt_reg = 0x10050,
3171         .halt_check = BRANCH_HALT,
3172         .clkr = {
3173                 .enable_reg = 0x10050,
3174                 .enable_mask = BIT(0),
3175                 .hw.init = &(struct clk_init_data){
3176                         .name = "gcc_usb3_sec_phy_com_aux_clk",
3177                         .parent_hws = (const struct clk_hw*[]){
3178                                 &gcc_usb3_sec_phy_aux_clk_src.clkr.hw,
3179                         },
3180                         .num_parents = 1,
3181                         .flags = CLK_SET_RATE_PARENT,
3182                         .ops = &clk_branch2_ops,
3183                 },
3184         },
3185 };
3186
3187 static struct clk_branch gcc_usb3_sec_phy_pipe_clk = {
3188         .halt_check = BRANCH_HALT_SKIP,
3189         .clkr = {
3190                 .enable_reg = 0x10054,
3191                 .enable_mask = BIT(0),
3192                 .hw.init = &(struct clk_init_data){
3193                         .name = "gcc_usb3_sec_phy_pipe_clk",
3194                         .ops = &clk_branch2_ops,
3195                 },
3196         },
3197 };
3198
3199 static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
3200         .halt_reg = 0x6a004,
3201         .halt_check = BRANCH_HALT,
3202         .hwcg_reg = 0x6a004,
3203         .hwcg_bit = 1,
3204         .clkr = {
3205                 .enable_reg = 0x6a004,
3206                 .enable_mask = BIT(0),
3207                 .hw.init = &(struct clk_init_data){
3208                         .name = "gcc_usb_phy_cfg_ahb2phy_clk",
3209                         .ops = &clk_branch2_ops,
3210                 },
3211         },
3212 };
3213
3214 static struct clk_branch gcc_vdda_vs_clk = {
3215         .halt_reg = 0x7a00c,
3216         .halt_check = BRANCH_HALT,
3217         .clkr = {
3218                 .enable_reg = 0x7a00c,
3219                 .enable_mask = BIT(0),
3220                 .hw.init = &(struct clk_init_data){
3221                         .name = "gcc_vdda_vs_clk",
3222                         .parent_hws = (const struct clk_hw*[]){
3223                                 &gcc_vsensor_clk_src.clkr.hw,
3224                         },
3225                         .num_parents = 1,
3226                         .flags = CLK_SET_RATE_PARENT,
3227                         .ops = &clk_branch2_ops,
3228                 },
3229         },
3230 };
3231
3232 static struct clk_branch gcc_vddcx_vs_clk = {
3233         .halt_reg = 0x7a004,
3234         .halt_check = BRANCH_HALT,
3235         .clkr = {
3236                 .enable_reg = 0x7a004,
3237                 .enable_mask = BIT(0),
3238                 .hw.init = &(struct clk_init_data){
3239                         .name = "gcc_vddcx_vs_clk",
3240                         .parent_hws = (const struct clk_hw*[]){
3241                                 &gcc_vsensor_clk_src.clkr.hw,
3242                         },
3243                         .num_parents = 1,
3244                         .flags = CLK_SET_RATE_PARENT,
3245                         .ops = &clk_branch2_ops,
3246                 },
3247         },
3248 };
3249
3250 static struct clk_branch gcc_vddmx_vs_clk = {
3251         .halt_reg = 0x7a008,
3252         .halt_check = BRANCH_HALT,
3253         .clkr = {
3254                 .enable_reg = 0x7a008,
3255                 .enable_mask = BIT(0),
3256                 .hw.init = &(struct clk_init_data){
3257                         .name = "gcc_vddmx_vs_clk",
3258                         .parent_hws = (const struct clk_hw*[]){
3259                                 &gcc_vsensor_clk_src.clkr.hw,
3260                         },
3261                         .num_parents = 1,
3262                         .flags = CLK_SET_RATE_PARENT,
3263                         .ops = &clk_branch2_ops,
3264                 },
3265         },
3266 };
3267
3268 static struct clk_branch gcc_video_ahb_clk = {
3269         .halt_reg = 0xb004,
3270         .halt_check = BRANCH_HALT,
3271         .hwcg_reg = 0xb004,
3272         .hwcg_bit = 1,
3273         .clkr = {
3274                 .enable_reg = 0xb004,
3275                 .enable_mask = BIT(0),
3276                 .hw.init = &(struct clk_init_data){
3277                         .name = "gcc_video_ahb_clk",
3278                         .flags = CLK_IS_CRITICAL,
3279                         .ops = &clk_branch2_ops,
3280                 },
3281         },
3282 };
3283
3284 static struct clk_branch gcc_video_axi_clk = {
3285         .halt_reg = 0xb01c,
3286         .halt_check = BRANCH_VOTED,
3287         .clkr = {
3288                 .enable_reg = 0xb01c,
3289                 .enable_mask = BIT(0),
3290                 .hw.init = &(struct clk_init_data){
3291                         .name = "gcc_video_axi_clk",
3292                         .ops = &clk_branch2_ops,
3293                 },
3294         },
3295 };
3296
3297 static struct clk_branch gcc_video_xo_clk = {
3298         .halt_reg = 0xb028,
3299         .halt_check = BRANCH_HALT,
3300         .clkr = {
3301                 .enable_reg = 0xb028,
3302                 .enable_mask = BIT(0),
3303                 .hw.init = &(struct clk_init_data){
3304                         .name = "gcc_video_xo_clk",
3305                         .flags = CLK_IS_CRITICAL,
3306                         .ops = &clk_branch2_ops,
3307                 },
3308         },
3309 };
3310
3311 static struct clk_branch gcc_vs_ctrl_ahb_clk = {
3312         .halt_reg = 0x7a014,
3313         .halt_check = BRANCH_HALT,
3314         .hwcg_reg = 0x7a014,
3315         .hwcg_bit = 1,
3316         .clkr = {
3317                 .enable_reg = 0x7a014,
3318                 .enable_mask = BIT(0),
3319                 .hw.init = &(struct clk_init_data){
3320                         .name = "gcc_vs_ctrl_ahb_clk",
3321                         .ops = &clk_branch2_ops,
3322                 },
3323         },
3324 };
3325
3326 static struct clk_branch gcc_vs_ctrl_clk = {
3327         .halt_reg = 0x7a010,
3328         .halt_check = BRANCH_HALT,
3329         .clkr = {
3330                 .enable_reg = 0x7a010,
3331                 .enable_mask = BIT(0),
3332                 .hw.init = &(struct clk_init_data){
3333                         .name = "gcc_vs_ctrl_clk",
3334                         .parent_hws = (const struct clk_hw*[]){
3335                                 &gcc_vs_ctrl_clk_src.clkr.hw,
3336                         },
3337                         .num_parents = 1,
3338                         .flags = CLK_SET_RATE_PARENT,
3339                         .ops = &clk_branch2_ops,
3340                 },
3341         },
3342 };
3343
3344 static struct clk_branch gcc_cpuss_dvm_bus_clk = {
3345         .halt_reg = 0x48190,
3346         .halt_check = BRANCH_HALT,
3347         .clkr = {
3348                 .enable_reg = 0x48190,
3349                 .enable_mask = BIT(0),
3350                 .hw.init = &(struct clk_init_data){
3351                         .name = "gcc_cpuss_dvm_bus_clk",
3352                         .flags = CLK_IS_CRITICAL,
3353                         .ops = &clk_branch2_ops,
3354                 },
3355         },
3356 };
3357
3358 static struct clk_branch gcc_cpuss_gnoc_clk = {
3359         .halt_reg = 0x48004,
3360         .halt_check = BRANCH_HALT_VOTED,
3361         .hwcg_reg = 0x48004,
3362         .hwcg_bit = 1,
3363         .clkr = {
3364                 .enable_reg = 0x52004,
3365                 .enable_mask = BIT(22),
3366                 .hw.init = &(struct clk_init_data){
3367                         .name = "gcc_cpuss_gnoc_clk",
3368                         .flags = CLK_IS_CRITICAL,
3369                         .ops = &clk_branch2_ops,
3370                 },
3371         },
3372 };
3373
3374 /* TODO: Remove after DTS updated to protect these */
3375 #ifdef CONFIG_SDM_LPASSCC_845
3376 static struct clk_branch gcc_lpass_q6_axi_clk = {
3377         .halt_reg = 0x47000,
3378         .halt_check = BRANCH_HALT,
3379         .clkr = {
3380                 .enable_reg = 0x47000,
3381                 .enable_mask = BIT(0),
3382                 .hw.init = &(struct clk_init_data){
3383                         .name = "gcc_lpass_q6_axi_clk",
3384                         .flags = CLK_IS_CRITICAL,
3385                         .ops = &clk_branch2_ops,
3386                 },
3387         },
3388 };
3389
3390 static struct clk_branch gcc_lpass_sway_clk = {
3391         .halt_reg = 0x47008,
3392         .halt_check = BRANCH_HALT,
3393         .clkr = {
3394                 .enable_reg = 0x47008,
3395                 .enable_mask = BIT(0),
3396                 .hw.init = &(struct clk_init_data){
3397                         .name = "gcc_lpass_sway_clk",
3398                         .flags = CLK_IS_CRITICAL,
3399                         .ops = &clk_branch2_ops,
3400                 },
3401         },
3402 };
3403 #endif
3404
3405 static struct gdsc pcie_0_gdsc = {
3406         .gdscr = 0x6b004,
3407         .pd = {
3408                 .name = "pcie_0_gdsc",
3409         },
3410         .pwrsts = PWRSTS_OFF_ON,
3411         .flags = POLL_CFG_GDSCR,
3412 };
3413
3414 static struct gdsc pcie_1_gdsc = {
3415         .gdscr = 0x8d004,
3416         .pd = {
3417                 .name = "pcie_1_gdsc",
3418         },
3419         .pwrsts = PWRSTS_OFF_ON,
3420         .flags = POLL_CFG_GDSCR,
3421 };
3422
3423 static struct gdsc ufs_card_gdsc = {
3424         .gdscr = 0x75004,
3425         .pd = {
3426                 .name = "ufs_card_gdsc",
3427         },
3428         .pwrsts = PWRSTS_OFF_ON,
3429         .flags = POLL_CFG_GDSCR,
3430 };
3431
3432 static struct gdsc ufs_phy_gdsc = {
3433         .gdscr = 0x77004,
3434         .pd = {
3435                 .name = "ufs_phy_gdsc",
3436         },
3437         .pwrsts = PWRSTS_OFF_ON,
3438         .flags = POLL_CFG_GDSCR,
3439 };
3440
3441 static struct gdsc usb30_prim_gdsc = {
3442         .gdscr = 0xf004,
3443         .pd = {
3444                 .name = "usb30_prim_gdsc",
3445         },
3446         .pwrsts = PWRSTS_OFF_ON,
3447         .flags = POLL_CFG_GDSCR,
3448 };
3449
3450 static struct gdsc usb30_sec_gdsc = {
3451         .gdscr = 0x10004,
3452         .pd = {
3453                 .name = "usb30_sec_gdsc",
3454         },
3455         .pwrsts = PWRSTS_OFF_ON,
3456         .flags = POLL_CFG_GDSCR,
3457 };
3458
3459 static struct gdsc hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc = {
3460         .gdscr = 0x7d030,
3461         .pd = {
3462                 .name = "hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc",
3463         },
3464         .pwrsts = PWRSTS_OFF_ON,
3465         .flags = VOTABLE,
3466 };
3467
3468 static struct gdsc hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc = {
3469         .gdscr = 0x7d03c,
3470         .pd = {
3471                 .name = "hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc",
3472         },
3473         .pwrsts = PWRSTS_OFF_ON,
3474         .flags = VOTABLE,
3475 };
3476
3477 static struct gdsc hlos1_vote_aggre_noc_mmu_tbu1_gdsc = {
3478         .gdscr = 0x7d034,
3479         .pd = {
3480                 .name = "hlos1_vote_aggre_noc_mmu_tbu1_gdsc",
3481         },
3482         .pwrsts = PWRSTS_OFF_ON,
3483         .flags = VOTABLE,
3484 };
3485
3486 static struct gdsc hlos1_vote_aggre_noc_mmu_tbu2_gdsc = {
3487         .gdscr = 0x7d038,
3488         .pd = {
3489                 .name = "hlos1_vote_aggre_noc_mmu_tbu2_gdsc",
3490         },
3491         .pwrsts = PWRSTS_OFF_ON,
3492         .flags = VOTABLE,
3493 };
3494
3495 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = {
3496         .gdscr = 0x7d040,
3497         .pd = {
3498                 .name = "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc",
3499         },
3500         .pwrsts = PWRSTS_OFF_ON,
3501         .flags = VOTABLE,
3502 };
3503
3504 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc = {
3505         .gdscr = 0x7d048,
3506         .pd = {
3507                 .name = "hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc",
3508         },
3509         .pwrsts = PWRSTS_OFF_ON,
3510         .flags = VOTABLE,
3511 };
3512
3513 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf_gdsc = {
3514         .gdscr = 0x7d044,
3515         .pd = {
3516                 .name = "hlos1_vote_mmnoc_mmu_tbu_sf_gdsc",
3517         },
3518         .pwrsts = PWRSTS_OFF_ON,
3519         .flags = VOTABLE,
3520 };
3521
3522 static struct clk_regmap *gcc_sdm670_clocks[] = {
3523         [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
3524         [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
3525         [GCC_APC_VS_CLK] = &gcc_apc_vs_clk.clkr,
3526         [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3527         [GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr,
3528         [GCC_CAMERA_AXI_CLK] = &gcc_camera_axi_clk.clkr,
3529         [GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr,
3530         [GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr,
3531         [GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr,
3532         [GCC_CE1_CLK] = &gcc_ce1_clk.clkr,
3533         [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
3534         [GCC_CPUSS_AHB_CLK] = &gcc_cpuss_ahb_clk.clkr,
3535         [GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr,
3536         [GCC_CPUSS_RBCPR_CLK] = &gcc_sdm670_cpuss_rbcpr_clk.clkr,
3537         [GCC_CPUSS_RBCPR_CLK_SRC] = &gcc_sdm670_cpuss_rbcpr_clk_src.clkr,
3538         [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
3539         [GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr,
3540         [GCC_DISP_AXI_CLK] = &gcc_disp_axi_clk.clkr,
3541         [GCC_DISP_GPLL0_CLK_SRC] = &gcc_disp_gpll0_clk_src.clkr,
3542         [GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr,
3543         [GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr,
3544         [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3545         [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3546         [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3547         [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3548         [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3549         [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
3550         [GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,
3551         [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
3552         [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
3553         [GCC_GPU_IREF_CLK] = &gcc_gpu_iref_clk.clkr,
3554         [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
3555         [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
3556         [GCC_GPU_VS_CLK] = &gcc_gpu_vs_clk.clkr,
3557         [GCC_MSS_AXIS2_CLK] = &gcc_mss_axis2_clk.clkr,
3558         [GCC_MSS_CFG_AHB_CLK] = &gcc_mss_cfg_ahb_clk.clkr,
3559         [GCC_MSS_GPLL0_DIV_CLK_SRC] = &gcc_mss_gpll0_div_clk_src.clkr,
3560         [GCC_MSS_MFAB_AXIS_CLK] = &gcc_mss_mfab_axis_clk.clkr,
3561         [GCC_MSS_Q6_MEMNOC_AXI_CLK] = &gcc_mss_q6_memnoc_axi_clk.clkr,
3562         [GCC_MSS_SNOC_AXI_CLK] = &gcc_mss_snoc_axi_clk.clkr,
3563         [GCC_MSS_VS_CLK] = &gcc_mss_vs_clk.clkr,
3564         [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3565         [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
3566         [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3567         [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
3568         [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
3569         [GCC_QMIP_CAMERA_AHB_CLK] = &gcc_qmip_camera_ahb_clk.clkr,
3570         [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
3571         [GCC_QMIP_VIDEO_AHB_CLK] = &gcc_qmip_video_ahb_clk.clkr,
3572         [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
3573         [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
3574         [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
3575         [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
3576         [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
3577         [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
3578         [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
3579         [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
3580         [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
3581         [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
3582         [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
3583         [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
3584         [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
3585         [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
3586         [GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
3587         [GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
3588         [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
3589         [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
3590         [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
3591         [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
3592         [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
3593         [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
3594         [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
3595         [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
3596         [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
3597         [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
3598         [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
3599         [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
3600         [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,
3601         [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,
3602         [GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr,
3603         [GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr,
3604         [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
3605         [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
3606         [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
3607         [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
3608         [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
3609         [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
3610         [GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,
3611         [GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr,
3612         [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
3613         [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
3614         [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
3615         [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
3616         [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
3617         [GCC_SDCC4_APPS_CLK] = &gcc_sdm670_sdcc4_apps_clk.clkr,
3618         [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdm670_sdcc4_apps_clk_src.clkr,
3619         [GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,
3620         [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
3621         [GCC_TSIF_INACTIVITY_TIMERS_CLK] =
3622                                         &gcc_tsif_inactivity_timers_clk.clkr,
3623         [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
3624         [GCC_TSIF_REF_CLK_SRC] = &gcc_tsif_ref_clk_src.clkr,
3625         [GCC_UFS_MEM_CLKREF_CLK] = &gcc_ufs_mem_clkref_clk.clkr,
3626         [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
3627         [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
3628         [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
3629         [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
3630         [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
3631         [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
3632         [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
3633         [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
3634         [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
3635         [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
3636         [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] =
3637                                         &gcc_ufs_phy_unipro_core_clk_src.clkr,
3638         [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
3639         [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
3640         [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
3641         [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] =
3642                                         &gcc_usb30_prim_mock_utmi_clk_src.clkr,
3643         [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
3644         [GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,
3645         [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
3646         [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
3647         [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
3648         [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
3649         [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
3650         [GCC_VDDA_VS_CLK] = &gcc_vdda_vs_clk.clkr,
3651         [GCC_VDDCX_VS_CLK] = &gcc_vddcx_vs_clk.clkr,
3652         [GCC_VDDMX_VS_CLK] = &gcc_vddmx_vs_clk.clkr,
3653         [GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr,
3654         [GCC_VIDEO_AXI_CLK] = &gcc_video_axi_clk.clkr,
3655         [GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr,
3656         [GCC_VS_CTRL_AHB_CLK] = &gcc_vs_ctrl_ahb_clk.clkr,
3657         [GCC_VS_CTRL_CLK] = &gcc_vs_ctrl_clk.clkr,
3658         [GCC_VS_CTRL_CLK_SRC] = &gcc_vs_ctrl_clk_src.clkr,
3659         [GCC_VSENSOR_CLK_SRC] = &gcc_vsensor_clk_src.clkr,
3660         [GPLL0] = &gpll0.clkr,
3661         [GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,
3662         [GPLL4] = &gpll4.clkr,
3663         [GPLL6] = &gpll6.clkr,
3664         [GCC_CPUSS_DVM_BUS_CLK] = &gcc_cpuss_dvm_bus_clk.clkr,
3665         [GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr,
3666         [GCC_QSPI_CORE_CLK_SRC] = &gcc_qspi_core_clk_src.clkr,
3667         [GCC_QSPI_CORE_CLK] = &gcc_qspi_core_clk.clkr,
3668         [GCC_QSPI_CNOC_PERIPH_AHB_CLK] = &gcc_qspi_cnoc_periph_ahb_clk.clkr,
3669 };
3670
3671 static struct clk_regmap *gcc_sdm845_clocks[] = {
3672         [GCC_AGGRE_NOC_PCIE_TBU_CLK] = &gcc_aggre_noc_pcie_tbu_clk.clkr,
3673         [GCC_AGGRE_UFS_CARD_AXI_CLK] = &gcc_aggre_ufs_card_axi_clk.clkr,
3674         [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
3675         [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
3676         [GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr,
3677         [GCC_APC_VS_CLK] = &gcc_apc_vs_clk.clkr,
3678         [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3679         [GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr,
3680         [GCC_CAMERA_AXI_CLK] = &gcc_camera_axi_clk.clkr,
3681         [GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr,
3682         [GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr,
3683         [GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr,
3684         [GCC_CE1_CLK] = &gcc_ce1_clk.clkr,
3685         [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
3686         [GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr,
3687         [GCC_CPUSS_AHB_CLK] = &gcc_cpuss_ahb_clk.clkr,
3688         [GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr,
3689         [GCC_CPUSS_RBCPR_CLK] = &gcc_cpuss_rbcpr_clk.clkr,
3690         [GCC_CPUSS_RBCPR_CLK_SRC] = &gcc_cpuss_rbcpr_clk_src.clkr,
3691         [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
3692         [GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr,
3693         [GCC_DISP_AXI_CLK] = &gcc_disp_axi_clk.clkr,
3694         [GCC_DISP_GPLL0_CLK_SRC] = &gcc_disp_gpll0_clk_src.clkr,
3695         [GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr,
3696         [GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr,
3697         [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3698         [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3699         [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3700         [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3701         [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3702         [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
3703         [GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,
3704         [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
3705         [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
3706         [GCC_GPU_IREF_CLK] = &gcc_gpu_iref_clk.clkr,
3707         [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
3708         [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
3709         [GCC_GPU_VS_CLK] = &gcc_gpu_vs_clk.clkr,
3710         [GCC_MSS_AXIS2_CLK] = &gcc_mss_axis2_clk.clkr,
3711         [GCC_MSS_CFG_AHB_CLK] = &gcc_mss_cfg_ahb_clk.clkr,
3712         [GCC_MSS_GPLL0_DIV_CLK_SRC] = &gcc_mss_gpll0_div_clk_src.clkr,
3713         [GCC_MSS_MFAB_AXIS_CLK] = &gcc_mss_mfab_axis_clk.clkr,
3714         [GCC_MSS_Q6_MEMNOC_AXI_CLK] = &gcc_mss_q6_memnoc_axi_clk.clkr,
3715         [GCC_MSS_SNOC_AXI_CLK] = &gcc_mss_snoc_axi_clk.clkr,
3716         [GCC_MSS_VS_CLK] = &gcc_mss_vs_clk.clkr,
3717         [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
3718         [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
3719         [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
3720         [GCC_PCIE_0_CLKREF_CLK] = &gcc_pcie_0_clkref_clk.clkr,
3721         [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
3722         [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
3723         [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
3724         [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
3725         [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
3726         [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
3727         [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
3728         [GCC_PCIE_1_CLKREF_CLK] = &gcc_pcie_1_clkref_clk.clkr,
3729         [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
3730         [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
3731         [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
3732         [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
3733         [GCC_PCIE_PHY_AUX_CLK] = &gcc_pcie_phy_aux_clk.clkr,
3734         [GCC_PCIE_PHY_REFGEN_CLK] = &gcc_pcie_phy_refgen_clk.clkr,
3735         [GCC_PCIE_PHY_REFGEN_CLK_SRC] = &gcc_pcie_phy_refgen_clk_src.clkr,
3736         [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3737         [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
3738         [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3739         [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
3740         [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
3741         [GCC_QMIP_CAMERA_AHB_CLK] = &gcc_qmip_camera_ahb_clk.clkr,
3742         [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
3743         [GCC_QMIP_VIDEO_AHB_CLK] = &gcc_qmip_video_ahb_clk.clkr,
3744         [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
3745         [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
3746         [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
3747         [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
3748         [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
3749         [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
3750         [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
3751         [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
3752         [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
3753         [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
3754         [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
3755         [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
3756         [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
3757         [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
3758         [GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
3759         [GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
3760         [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
3761         [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
3762         [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
3763         [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
3764         [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
3765         [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
3766         [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
3767         [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
3768         [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
3769         [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
3770         [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
3771         [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
3772         [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,
3773         [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,
3774         [GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr,
3775         [GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr,
3776         [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
3777         [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
3778         [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
3779         [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
3780         [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
3781         [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
3782         [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
3783         [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
3784         [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
3785         [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
3786         [GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,
3787         [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
3788         [GCC_TSIF_INACTIVITY_TIMERS_CLK] =
3789                                         &gcc_tsif_inactivity_timers_clk.clkr,
3790         [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
3791         [GCC_TSIF_REF_CLK_SRC] = &gcc_tsif_ref_clk_src.clkr,
3792         [GCC_UFS_CARD_AHB_CLK] = &gcc_ufs_card_ahb_clk.clkr,
3793         [GCC_UFS_CARD_AXI_CLK] = &gcc_ufs_card_axi_clk.clkr,
3794         [GCC_UFS_CARD_AXI_CLK_SRC] = &gcc_ufs_card_axi_clk_src.clkr,
3795         [GCC_UFS_CARD_CLKREF_CLK] = &gcc_ufs_card_clkref_clk.clkr,
3796         [GCC_UFS_CARD_ICE_CORE_CLK] = &gcc_ufs_card_ice_core_clk.clkr,
3797         [GCC_UFS_CARD_ICE_CORE_CLK_SRC] = &gcc_ufs_card_ice_core_clk_src.clkr,
3798         [GCC_UFS_CARD_PHY_AUX_CLK] = &gcc_ufs_card_phy_aux_clk.clkr,
3799         [GCC_UFS_CARD_PHY_AUX_CLK_SRC] = &gcc_ufs_card_phy_aux_clk_src.clkr,
3800         [GCC_UFS_CARD_RX_SYMBOL_0_CLK] = &gcc_ufs_card_rx_symbol_0_clk.clkr,
3801         [GCC_UFS_CARD_RX_SYMBOL_1_CLK] = &gcc_ufs_card_rx_symbol_1_clk.clkr,
3802         [GCC_UFS_CARD_TX_SYMBOL_0_CLK] = &gcc_ufs_card_tx_symbol_0_clk.clkr,
3803         [GCC_UFS_CARD_UNIPRO_CORE_CLK] = &gcc_ufs_card_unipro_core_clk.clkr,
3804         [GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC] =
3805                                         &gcc_ufs_card_unipro_core_clk_src.clkr,
3806         [GCC_UFS_MEM_CLKREF_CLK] = &gcc_ufs_mem_clkref_clk.clkr,
3807         [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
3808         [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
3809         [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
3810         [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
3811         [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
3812         [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
3813         [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
3814         [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
3815         [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
3816         [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
3817         [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
3818         [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] =
3819                                         &gcc_ufs_phy_unipro_core_clk_src.clkr,
3820         [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
3821         [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
3822         [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
3823         [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] =
3824                                         &gcc_usb30_prim_mock_utmi_clk_src.clkr,
3825         [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
3826         [GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,
3827         [GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr,
3828         [GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,
3829         [GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] =
3830                                         &gcc_usb30_sec_mock_utmi_clk_src.clkr,
3831         [GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,
3832         [GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,
3833         [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
3834         [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
3835         [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
3836         [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
3837         [GCC_USB3_SEC_CLKREF_CLK] = &gcc_usb3_sec_clkref_clk.clkr,
3838         [GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr,
3839         [GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr,
3840         [GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr,
3841         [GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr,
3842         [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
3843         [GCC_VDDA_VS_CLK] = &gcc_vdda_vs_clk.clkr,
3844         [GCC_VDDCX_VS_CLK] = &gcc_vddcx_vs_clk.clkr,
3845         [GCC_VDDMX_VS_CLK] = &gcc_vddmx_vs_clk.clkr,
3846         [GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr,
3847         [GCC_VIDEO_AXI_CLK] = &gcc_video_axi_clk.clkr,
3848         [GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr,
3849         [GCC_VS_CTRL_AHB_CLK] = &gcc_vs_ctrl_ahb_clk.clkr,
3850         [GCC_VS_CTRL_CLK] = &gcc_vs_ctrl_clk.clkr,
3851         [GCC_VS_CTRL_CLK_SRC] = &gcc_vs_ctrl_clk_src.clkr,
3852         [GCC_VSENSOR_CLK_SRC] = &gcc_vsensor_clk_src.clkr,
3853         [GPLL0] = &gpll0.clkr,
3854         [GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,
3855         [GPLL4] = &gpll4.clkr,
3856         [GCC_CPUSS_DVM_BUS_CLK] = &gcc_cpuss_dvm_bus_clk.clkr,
3857         [GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr,
3858         [GCC_QSPI_CORE_CLK_SRC] = &gcc_qspi_core_clk_src.clkr,
3859         [GCC_QSPI_CORE_CLK] = &gcc_qspi_core_clk.clkr,
3860         [GCC_QSPI_CNOC_PERIPH_AHB_CLK] = &gcc_qspi_cnoc_periph_ahb_clk.clkr,
3861 #ifdef CONFIG_SDM_LPASSCC_845
3862         [GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr,
3863         [GCC_LPASS_SWAY_CLK] = &gcc_lpass_sway_clk.clkr,
3864 #endif
3865 };
3866
3867 static const struct qcom_reset_map gcc_sdm845_resets[] = {
3868         [GCC_MMSS_BCR] = { 0xb000 },
3869         [GCC_PCIE_0_BCR] = { 0x6b000 },
3870         [GCC_PCIE_1_BCR] = { 0x8d000 },
3871         [GCC_PCIE_PHY_BCR] = { 0x6f000 },
3872         [GCC_PDM_BCR] = { 0x33000 },
3873         [GCC_PRNG_BCR] = { 0x34000 },
3874         [GCC_QUPV3_WRAPPER_0_BCR] = { 0x17000 },
3875         [GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 },
3876         [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
3877         [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
3878         [GCC_SDCC2_BCR] = { 0x14000 },
3879         [GCC_SDCC4_BCR] = { 0x16000 },
3880         [GCC_TSIF_BCR] = { 0x36000 },
3881         [GCC_UFS_CARD_BCR] = { 0x75000 },
3882         [GCC_UFS_PHY_BCR] = { 0x77000 },
3883         [GCC_USB30_PRIM_BCR] = { 0xf000 },
3884         [GCC_USB30_SEC_BCR] = { 0x10000 },
3885         [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 },
3886         [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 },
3887         [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 },
3888         [GCC_USB3_PHY_SEC_BCR] = { 0x5000c },
3889         [GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 },
3890         [GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 },
3891         [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 },
3892         [GCC_PCIE_0_PHY_BCR] = { 0x6c01c },
3893         [GCC_PCIE_1_PHY_BCR] = { 0x8e01c },
3894 };
3895
3896 static struct gdsc *gcc_sdm670_gdscs[] = {
3897         [UFS_PHY_GDSC] = &ufs_phy_gdsc,
3898         [USB30_PRIM_GDSC] = &usb30_prim_gdsc,
3899         [HLOS1_VOTE_AGGRE_NOC_MMU_AUDIO_TBU_GDSC] =
3900                         &hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc,
3901         [HLOS1_VOTE_AGGRE_NOC_MMU_TBU1_GDSC] =
3902                         &hlos1_vote_aggre_noc_mmu_tbu1_gdsc,
3903         [HLOS1_VOTE_AGGRE_NOC_MMU_TBU2_GDSC] =
3904                         &hlos1_vote_aggre_noc_mmu_tbu2_gdsc,
3905         [HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC] =
3906                         &hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc,
3907         [HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC] =
3908                         &hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc,
3909         [HLOS1_VOTE_MMNOC_MMU_TBU_SF_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf_gdsc,
3910 };
3911
3912 static struct gdsc *gcc_sdm845_gdscs[] = {
3913         [PCIE_0_GDSC] = &pcie_0_gdsc,
3914         [PCIE_1_GDSC] = &pcie_1_gdsc,
3915         [UFS_CARD_GDSC] = &ufs_card_gdsc,
3916         [UFS_PHY_GDSC] = &ufs_phy_gdsc,
3917         [USB30_PRIM_GDSC] = &usb30_prim_gdsc,
3918         [USB30_SEC_GDSC] = &usb30_sec_gdsc,
3919         [HLOS1_VOTE_AGGRE_NOC_MMU_AUDIO_TBU_GDSC] =
3920                         &hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc,
3921         [HLOS1_VOTE_AGGRE_NOC_MMU_PCIE_TBU_GDSC] =
3922                         &hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc,
3923         [HLOS1_VOTE_AGGRE_NOC_MMU_TBU1_GDSC] =
3924                         &hlos1_vote_aggre_noc_mmu_tbu1_gdsc,
3925         [HLOS1_VOTE_AGGRE_NOC_MMU_TBU2_GDSC] =
3926                         &hlos1_vote_aggre_noc_mmu_tbu2_gdsc,
3927         [HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC] =
3928                         &hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc,
3929         [HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC] =
3930                         &hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc,
3931         [HLOS1_VOTE_MMNOC_MMU_TBU_SF_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf_gdsc,
3932 };
3933
3934 static const struct regmap_config gcc_sdm845_regmap_config = {
3935         .reg_bits       = 32,
3936         .reg_stride     = 4,
3937         .val_bits       = 32,
3938         .max_register   = 0x182090,
3939         .fast_io        = true,
3940 };
3941
3942 static const struct qcom_cc_desc gcc_sdm670_desc = {
3943         .config = &gcc_sdm845_regmap_config,
3944         .clks = gcc_sdm670_clocks,
3945         .num_clks = ARRAY_SIZE(gcc_sdm670_clocks),
3946         /* Snapdragon 670 can function without its own exclusive resets. */
3947         .resets = gcc_sdm845_resets,
3948         .num_resets = ARRAY_SIZE(gcc_sdm845_resets),
3949         .gdscs = gcc_sdm670_gdscs,
3950         .num_gdscs = ARRAY_SIZE(gcc_sdm670_gdscs),
3951 };
3952
3953 static const struct qcom_cc_desc gcc_sdm845_desc = {
3954         .config = &gcc_sdm845_regmap_config,
3955         .clks = gcc_sdm845_clocks,
3956         .num_clks = ARRAY_SIZE(gcc_sdm845_clocks),
3957         .resets = gcc_sdm845_resets,
3958         .num_resets = ARRAY_SIZE(gcc_sdm845_resets),
3959         .gdscs = gcc_sdm845_gdscs,
3960         .num_gdscs = ARRAY_SIZE(gcc_sdm845_gdscs),
3961 };
3962
3963 static const struct of_device_id gcc_sdm845_match_table[] = {
3964         { .compatible = "qcom,gcc-sdm670", .data = &gcc_sdm670_desc },
3965         { .compatible = "qcom,gcc-sdm845", .data = &gcc_sdm845_desc },
3966         { }
3967 };
3968 MODULE_DEVICE_TABLE(of, gcc_sdm845_match_table);
3969
3970 static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
3971         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
3972         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
3973         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
3974         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
3975         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
3976         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
3977         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src),
3978         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src),
3979         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
3980         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
3981         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
3982         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
3983         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
3984         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
3985         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),
3986         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src),
3987 };
3988
3989 static int gcc_sdm845_probe(struct platform_device *pdev)
3990 {
3991         const struct qcom_cc_desc *gcc_desc;
3992         struct regmap *regmap;
3993         int ret;
3994
3995         regmap = qcom_cc_map(pdev, &gcc_sdm845_desc);
3996         if (IS_ERR(regmap))
3997                 return PTR_ERR(regmap);
3998
3999         /* Disable the GPLL0 active input to MMSS and GPU via MISC registers */
4000         regmap_update_bits(regmap, 0x09ffc, 0x3, 0x3);
4001         regmap_update_bits(regmap, 0x71028, 0x3, 0x3);
4002
4003         ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,
4004                                         ARRAY_SIZE(gcc_dfs_clocks));
4005         if (ret)
4006                 return ret;
4007
4008         gcc_desc = of_device_get_match_data(&pdev->dev);
4009         return qcom_cc_really_probe(&pdev->dev, gcc_desc, regmap);
4010 }
4011
4012 static struct platform_driver gcc_sdm845_driver = {
4013         .probe          = gcc_sdm845_probe,
4014         .driver         = {
4015                 .name   = "gcc-sdm845",
4016                 .of_match_table = gcc_sdm845_match_table,
4017         },
4018 };
4019
4020 static int __init gcc_sdm845_init(void)
4021 {
4022         return platform_driver_register(&gcc_sdm845_driver);
4023 }
4024 core_initcall(gcc_sdm845_init);
4025
4026 static void __exit gcc_sdm845_exit(void)
4027 {
4028         platform_driver_unregister(&gcc_sdm845_driver);
4029 }
4030 module_exit(gcc_sdm845_exit);
4031
4032 MODULE_DESCRIPTION("QTI GCC SDM845 Driver");
4033 MODULE_LICENSE("GPL v2");
4034 MODULE_ALIAS("platform:gcc-sdm845");
4035 MODULE_SOFTDEP("pre: rpmhpd");
This page took 0.260498 seconds and 4 git commands to generate.