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