]> Git Repo - linux.git/blob - drivers/clk/qcom/gcc-sa8775p.c
Linux 6.14-rc3
[linux.git] / drivers / clk / qcom / gcc-sa8775p.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (c) 2021-2022, 2024, Qualcomm Innovation Center, Inc. All rights reserved.
4  * Copyright (c) 2023, Linaro Limited
5  */
6
7 #include <linux/clk-provider.h>
8 #include <linux/module.h>
9 #include <linux/mod_devicetable.h>
10 #include <linux/of.h>
11 #include <linux/platform_device.h>
12 #include <linux/regmap.h>
13
14 #include <dt-bindings/clock/qcom,sa8775p-gcc.h>
15
16 #include "clk-alpha-pll.h"
17 #include "clk-branch.h"
18 #include "clk-rcg.h"
19 #include "clk-regmap.h"
20 #include "clk-regmap-divider.h"
21 #include "clk-regmap-mux.h"
22 #include "clk-regmap-phy-mux.h"
23 #include "common.h"
24 #include "gdsc.h"
25 #include "reset.h"
26
27 /* Need to match the order of clocks in DT binding */
28 enum {
29         DT_BI_TCXO,
30         DT_SLEEP_CLK,
31         DT_UFS_PHY_RX_SYMBOL_0_CLK,
32         DT_UFS_PHY_RX_SYMBOL_1_CLK,
33         DT_UFS_PHY_TX_SYMBOL_0_CLK,
34         DT_UFS_CARD_RX_SYMBOL_0_CLK,
35         DT_UFS_CARD_RX_SYMBOL_1_CLK,
36         DT_UFS_CARD_TX_SYMBOL_0_CLK,
37         DT_USB3_PHY_WRAPPER_GCC_USB30_PRIM_PIPE_CLK,
38         DT_USB3_PHY_WRAPPER_GCC_USB30_SEC_PIPE_CLK,
39         DT_PCIE_0_PIPE_CLK,
40         DT_PCIE_1_PIPE_CLK,
41         DT_PCIE_PHY_AUX_CLK,
42         DT_RXC0_REF_CLK,
43         DT_RXC1_REF_CLK,
44 };
45
46 enum {
47         P_BI_TCXO,
48         P_GCC_GPLL0_OUT_EVEN,
49         P_GCC_GPLL0_OUT_MAIN,
50         P_GCC_GPLL1_OUT_MAIN,
51         P_GCC_GPLL4_OUT_MAIN,
52         P_GCC_GPLL5_OUT_MAIN,
53         P_GCC_GPLL7_OUT_MAIN,
54         P_GCC_GPLL9_OUT_MAIN,
55         P_PCIE_0_PIPE_CLK,
56         P_PCIE_1_PIPE_CLK,
57         P_PCIE_PHY_AUX_CLK,
58         P_RXC0_REF_CLK,
59         P_RXC1_REF_CLK,
60         P_SLEEP_CLK,
61         P_UFS_CARD_RX_SYMBOL_0_CLK,
62         P_UFS_CARD_RX_SYMBOL_1_CLK,
63         P_UFS_CARD_TX_SYMBOL_0_CLK,
64         P_UFS_PHY_RX_SYMBOL_0_CLK,
65         P_UFS_PHY_RX_SYMBOL_1_CLK,
66         P_UFS_PHY_TX_SYMBOL_0_CLK,
67         P_USB3_PHY_WRAPPER_GCC_USB30_PRIM_PIPE_CLK,
68         P_USB3_PHY_WRAPPER_GCC_USB30_SEC_PIPE_CLK,
69 };
70
71 static const struct clk_parent_data gcc_parent_data_tcxo = { .index = DT_BI_TCXO };
72
73 static struct clk_alpha_pll gcc_gpll0 = {
74         .offset = 0x0,
75         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
76         .clkr = {
77                 .enable_reg = 0x4b028,
78                 .enable_mask = BIT(0),
79                 .hw.init = &(const struct clk_init_data){
80                         .name = "gcc_gpll0",
81                         .parent_data = &gcc_parent_data_tcxo,
82                         .num_parents = 1,
83                         .ops = &clk_alpha_pll_fixed_lucid_evo_ops,
84                 },
85         },
86 };
87
88 static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = {
89         { 0x1, 2 },
90         { }
91 };
92
93 static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = {
94         .offset = 0x0,
95         .post_div_shift = 10,
96         .post_div_table = post_div_table_gcc_gpll0_out_even,
97         .num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even),
98         .width = 4,
99         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
100         .clkr.hw.init = &(const struct clk_init_data){
101                 .name = "gcc_gpll0_out_even",
102                 .parent_hws = (const struct clk_hw*[]){
103                         &gcc_gpll0.clkr.hw,
104                 },
105                 .num_parents = 1,
106                 .ops = &clk_alpha_pll_postdiv_lucid_evo_ops,
107         },
108 };
109
110 static struct clk_alpha_pll gcc_gpll1 = {
111         .offset = 0x1000,
112         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
113         .clkr = {
114                 .enable_reg = 0x4b028,
115                 .enable_mask = BIT(1),
116                 .hw.init = &(const struct clk_init_data){
117                         .name = "gcc_gpll1",
118                         .parent_data = &gcc_parent_data_tcxo,
119                         .num_parents = 1,
120                         .ops = &clk_alpha_pll_fixed_lucid_evo_ops,
121                 },
122         },
123 };
124
125 static struct clk_alpha_pll gcc_gpll4 = {
126         .offset = 0x4000,
127         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
128         .clkr = {
129                 .enable_reg = 0x4b028,
130                 .enable_mask = BIT(4),
131                 .hw.init = &(const struct clk_init_data){
132                         .name = "gcc_gpll4",
133                         .parent_data = &gcc_parent_data_tcxo,
134                         .num_parents = 1,
135                         .ops = &clk_alpha_pll_fixed_lucid_evo_ops,
136                 },
137         },
138 };
139
140 static struct clk_alpha_pll gcc_gpll5 = {
141         .offset = 0x5000,
142         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
143         .clkr = {
144                 .enable_reg = 0x4b028,
145                 .enable_mask = BIT(5),
146                 .hw.init = &(const struct clk_init_data){
147                         .name = "gcc_gpll5",
148                         .parent_data = &gcc_parent_data_tcxo,
149                         .num_parents = 1,
150                         .ops = &clk_alpha_pll_fixed_lucid_evo_ops,
151                 },
152         },
153 };
154
155 static struct clk_alpha_pll gcc_gpll7 = {
156         .offset = 0x7000,
157         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
158         .clkr = {
159                 .enable_reg = 0x4b028,
160                 .enable_mask = BIT(7),
161                 .hw.init = &(const struct clk_init_data){
162                         .name = "gcc_gpll7",
163                         .parent_data = &gcc_parent_data_tcxo,
164                         .num_parents = 1,
165                         .ops = &clk_alpha_pll_fixed_lucid_evo_ops,
166                 },
167         },
168 };
169
170 static struct clk_alpha_pll gcc_gpll9 = {
171         .offset = 0x9000,
172         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
173         .clkr = {
174                 .enable_reg = 0x4b028,
175                 .enable_mask = BIT(9),
176                 .hw.init = &(const struct clk_init_data){
177                         .name = "gcc_gpll9",
178                         .parent_data = &gcc_parent_data_tcxo,
179                         .num_parents = 1,
180                         .ops = &clk_alpha_pll_fixed_lucid_evo_ops,
181                 },
182         },
183 };
184
185 static const struct parent_map gcc_parent_map_0[] = {
186         { P_BI_TCXO, 0 },
187         { P_GCC_GPLL0_OUT_MAIN, 1 },
188         { P_GCC_GPLL0_OUT_EVEN, 6 },
189 };
190
191 static const struct clk_parent_data gcc_parent_data_0[] = {
192         { .index = DT_BI_TCXO },
193         { .hw = &gcc_gpll0.clkr.hw },
194         { .hw = &gcc_gpll0_out_even.clkr.hw },
195 };
196
197 static const struct parent_map gcc_parent_map_1[] = {
198         { P_BI_TCXO, 0 },
199         { P_GCC_GPLL0_OUT_MAIN, 1 },
200         { P_GCC_GPLL4_OUT_MAIN, 5 },
201         { P_GCC_GPLL0_OUT_EVEN, 6 },
202 };
203
204 static const struct clk_parent_data gcc_parent_data_1[] = {
205         { .index = DT_BI_TCXO },
206         { .hw = &gcc_gpll0.clkr.hw },
207         { .hw = &gcc_gpll4.clkr.hw },
208         { .hw = &gcc_gpll0_out_even.clkr.hw },
209 };
210
211 static const struct parent_map gcc_parent_map_2[] = {
212         { P_BI_TCXO, 0 },
213         { P_GCC_GPLL0_OUT_MAIN, 1 },
214         { P_SLEEP_CLK, 5 },
215         { P_GCC_GPLL0_OUT_EVEN, 6 },
216 };
217
218 static const struct clk_parent_data gcc_parent_data_2[] = {
219         { .index = DT_BI_TCXO },
220         { .hw = &gcc_gpll0.clkr.hw },
221         { .index = DT_SLEEP_CLK },
222         { .hw = &gcc_gpll0_out_even.clkr.hw },
223 };
224
225 static const struct parent_map gcc_parent_map_3[] = {
226         { P_BI_TCXO, 0 },
227         { P_SLEEP_CLK, 5 },
228 };
229
230 static const struct clk_parent_data gcc_parent_data_3[] = {
231         { .index = DT_BI_TCXO },
232         { .index = DT_SLEEP_CLK },
233 };
234
235 static const struct parent_map gcc_parent_map_4[] = {
236         { P_BI_TCXO, 0 },
237         { P_GCC_GPLL0_OUT_MAIN, 1 },
238         { P_GCC_GPLL1_OUT_MAIN, 4 },
239         { P_GCC_GPLL4_OUT_MAIN, 5 },
240         { P_GCC_GPLL0_OUT_EVEN, 6 },
241 };
242
243 static const struct clk_parent_data gcc_parent_data_4[] = {
244         { .index = DT_BI_TCXO },
245         { .hw = &gcc_gpll0.clkr.hw },
246         { .hw = &gcc_gpll1.clkr.hw },
247         { .hw = &gcc_gpll4.clkr.hw },
248         { .hw = &gcc_gpll0_out_even.clkr.hw },
249 };
250
251 static const struct parent_map gcc_parent_map_5[] = {
252         { P_BI_TCXO, 0 },
253 };
254
255 static const struct clk_parent_data gcc_parent_data_5[] = {
256         { .index = DT_BI_TCXO },
257 };
258
259 static const struct parent_map gcc_parent_map_6[] = {
260         { P_BI_TCXO, 0 },
261         { P_GCC_GPLL7_OUT_MAIN, 2 },
262         { P_GCC_GPLL4_OUT_MAIN, 5 },
263         { P_GCC_GPLL0_OUT_EVEN, 6 },
264 };
265
266 static const struct clk_parent_data gcc_parent_data_6[] = {
267         { .index = DT_BI_TCXO },
268         { .hw = &gcc_gpll7.clkr.hw },
269         { .hw = &gcc_gpll4.clkr.hw },
270         { .hw = &gcc_gpll0_out_even.clkr.hw },
271 };
272
273 static const struct parent_map gcc_parent_map_7[] = {
274         { P_BI_TCXO, 0 },
275         { P_GCC_GPLL7_OUT_MAIN, 2 },
276         { P_RXC0_REF_CLK, 3 },
277         { P_GCC_GPLL0_OUT_EVEN, 6 },
278 };
279
280 static const struct clk_parent_data gcc_parent_data_7[] = {
281         { .index = DT_BI_TCXO },
282         { .hw = &gcc_gpll7.clkr.hw },
283         { .index = DT_RXC0_REF_CLK },
284         { .hw = &gcc_gpll0_out_even.clkr.hw },
285 };
286
287 static const struct parent_map gcc_parent_map_8[] = {
288         { P_BI_TCXO, 0 },
289         { P_GCC_GPLL7_OUT_MAIN, 2 },
290         { P_RXC1_REF_CLK, 3 },
291         { P_GCC_GPLL0_OUT_EVEN, 6 },
292 };
293
294 static const struct clk_parent_data gcc_parent_data_8[] = {
295         { .index = DT_BI_TCXO },
296         { .hw = &gcc_gpll7.clkr.hw },
297         { .index = DT_RXC1_REF_CLK },
298         { .hw = &gcc_gpll0_out_even.clkr.hw },
299 };
300
301 static const struct parent_map gcc_parent_map_9[] = {
302         { P_PCIE_PHY_AUX_CLK, 1 },
303         { P_BI_TCXO, 2 },
304 };
305
306 static const struct clk_parent_data gcc_parent_data_9[] = {
307         { .index = DT_PCIE_PHY_AUX_CLK },
308         { .index = DT_BI_TCXO },
309 };
310
311 static const struct parent_map gcc_parent_map_11[] = {
312         { P_PCIE_PHY_AUX_CLK, 1 },
313         { P_BI_TCXO, 2 },
314 };
315
316 static const struct clk_parent_data gcc_parent_data_11[] = {
317         { .index = DT_PCIE_PHY_AUX_CLK },
318         { .index = DT_BI_TCXO },
319 };
320
321 static const struct parent_map gcc_parent_map_13[] = {
322         { P_BI_TCXO, 0 },
323         { P_GCC_GPLL0_OUT_MAIN, 1 },
324         { P_GCC_GPLL9_OUT_MAIN, 2 },
325         { P_GCC_GPLL4_OUT_MAIN, 5 },
326         { P_GCC_GPLL0_OUT_EVEN, 6 },
327 };
328
329 static const struct clk_parent_data gcc_parent_data_13[] = {
330         { .index = DT_BI_TCXO },
331         { .hw = &gcc_gpll0.clkr.hw },
332         { .hw = &gcc_gpll9.clkr.hw },
333         { .hw = &gcc_gpll4.clkr.hw },
334         { .hw = &gcc_gpll0_out_even.clkr.hw },
335 };
336
337 static const struct parent_map gcc_parent_map_14[] = {
338         { P_BI_TCXO, 0 },
339         { P_GCC_GPLL0_OUT_MAIN, 1 },
340 };
341
342 static const struct clk_parent_data gcc_parent_data_14[] = {
343         { .index = DT_BI_TCXO },
344         { .hw = &gcc_gpll0.clkr.hw },
345 };
346
347 static const struct parent_map gcc_parent_map_15[] = {
348         { P_BI_TCXO, 0 },
349         { P_GCC_GPLL7_OUT_MAIN, 2 },
350         { P_GCC_GPLL5_OUT_MAIN, 3 },
351         { P_GCC_GPLL4_OUT_MAIN, 5 },
352         { P_GCC_GPLL0_OUT_EVEN, 6 },
353 };
354
355 static const struct clk_parent_data gcc_parent_data_15[] = {
356         { .index = DT_BI_TCXO },
357         { .hw = &gcc_gpll7.clkr.hw },
358         { .hw = &gcc_gpll5.clkr.hw },
359         { .hw = &gcc_gpll4.clkr.hw },
360         { .hw = &gcc_gpll0_out_even.clkr.hw },
361 };
362
363 static const struct parent_map gcc_parent_map_16[] = {
364         { P_UFS_CARD_RX_SYMBOL_0_CLK, 0 },
365         { P_BI_TCXO, 2 },
366 };
367
368 static const struct clk_parent_data gcc_parent_data_16[] = {
369         { .index = DT_UFS_CARD_RX_SYMBOL_0_CLK },
370         { .index = DT_BI_TCXO },
371 };
372
373 static const struct parent_map gcc_parent_map_17[] = {
374         { P_UFS_CARD_RX_SYMBOL_1_CLK, 0 },
375         { P_BI_TCXO, 2 },
376 };
377
378 static const struct clk_parent_data gcc_parent_data_17[] = {
379         { .index = DT_UFS_CARD_RX_SYMBOL_1_CLK },
380         { .index = DT_BI_TCXO },
381 };
382
383 static const struct parent_map gcc_parent_map_18[] = {
384         { P_UFS_CARD_TX_SYMBOL_0_CLK, 0 },
385         { P_BI_TCXO, 2 },
386 };
387
388 static const struct clk_parent_data gcc_parent_data_18[] = {
389         { .index = DT_UFS_CARD_TX_SYMBOL_0_CLK },
390         { .index = DT_BI_TCXO },
391 };
392
393 static const struct parent_map gcc_parent_map_19[] = {
394         { P_UFS_PHY_RX_SYMBOL_0_CLK, 0 },
395         { P_BI_TCXO, 2 },
396 };
397
398 static const struct clk_parent_data gcc_parent_data_19[] = {
399         { .index = DT_UFS_PHY_RX_SYMBOL_0_CLK },
400         { .index = DT_BI_TCXO },
401 };
402
403 static const struct parent_map gcc_parent_map_20[] = {
404         { P_UFS_PHY_RX_SYMBOL_1_CLK, 0 },
405         { P_BI_TCXO, 2 },
406 };
407
408 static const struct clk_parent_data gcc_parent_data_20[] = {
409         { .index = DT_UFS_PHY_RX_SYMBOL_1_CLK },
410         { .index = DT_BI_TCXO },
411 };
412
413 static const struct parent_map gcc_parent_map_21[] = {
414         { P_UFS_PHY_TX_SYMBOL_0_CLK, 0 },
415         { P_BI_TCXO, 2 },
416 };
417
418 static const struct clk_parent_data gcc_parent_data_21[] = {
419         { .index = DT_UFS_PHY_TX_SYMBOL_0_CLK },
420         { .index = DT_BI_TCXO },
421 };
422
423 static const struct parent_map gcc_parent_map_22[] = {
424         { P_USB3_PHY_WRAPPER_GCC_USB30_PRIM_PIPE_CLK, 0 },
425         { P_BI_TCXO, 2 },
426 };
427
428 static const struct clk_parent_data gcc_parent_data_22[] = {
429         { .index = DT_USB3_PHY_WRAPPER_GCC_USB30_PRIM_PIPE_CLK },
430         { .index = DT_BI_TCXO },
431 };
432
433 static const struct parent_map gcc_parent_map_23[] = {
434         { P_USB3_PHY_WRAPPER_GCC_USB30_SEC_PIPE_CLK, 0 },
435         { P_BI_TCXO, 2 },
436 };
437
438 static const struct clk_parent_data gcc_parent_data_23[] = {
439         { .index = DT_USB3_PHY_WRAPPER_GCC_USB30_SEC_PIPE_CLK },
440         { .index = DT_BI_TCXO },
441 };
442
443 static struct clk_regmap_mux gcc_pcie_0_phy_aux_clk_src = {
444         .reg = 0xa9074,
445         .shift = 0,
446         .width = 2,
447         .parent_map = gcc_parent_map_9,
448         .clkr = {
449                 .hw.init = &(const struct clk_init_data){
450                         .name = "gcc_pcie_0_phy_aux_clk_src",
451                         .parent_data = gcc_parent_data_9,
452                         .num_parents = ARRAY_SIZE(gcc_parent_data_9),
453                         .ops = &clk_regmap_mux_closest_ops,
454                 },
455         },
456 };
457
458 static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src = {
459         .reg = 0xa906c,
460         .clkr = {
461                 .hw.init = &(const struct clk_init_data){
462                         .name = "gcc_pcie_0_pipe_clk_src",
463                         .parent_data = &(const struct clk_parent_data){
464                                 .index = DT_PCIE_0_PIPE_CLK,
465                         },
466                         .num_parents = 1,
467                         .ops = &clk_regmap_phy_mux_ops,
468                 },
469         },
470 };
471
472 static struct clk_regmap_mux gcc_pcie_1_phy_aux_clk_src = {
473         .reg = 0x77074,
474         .shift = 0,
475         .width = 2,
476         .parent_map = gcc_parent_map_11,
477         .clkr = {
478                 .hw.init = &(const struct clk_init_data){
479                         .name = "gcc_pcie_1_phy_aux_clk_src",
480                         .parent_data = gcc_parent_data_11,
481                         .num_parents = ARRAY_SIZE(gcc_parent_data_11),
482                         .ops = &clk_regmap_mux_closest_ops,
483                 },
484         },
485 };
486
487 static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = {
488         .reg = 0x7706c,
489         .clkr = {
490                 .hw.init = &(const struct clk_init_data){
491                         .name = "gcc_pcie_1_pipe_clk_src",
492                         .parent_data = &(const struct clk_parent_data) {
493                                 .index = DT_PCIE_1_PIPE_CLK,
494                         },
495                         .num_parents = 1,
496                         .ops = &clk_regmap_phy_mux_ops,
497                 },
498         },
499 };
500
501 static struct clk_regmap_mux gcc_ufs_card_rx_symbol_0_clk_src = {
502         .reg = 0x81060,
503         .shift = 0,
504         .width = 2,
505         .parent_map = gcc_parent_map_16,
506         .clkr = {
507                 .hw.init = &(const struct clk_init_data){
508                         .name = "gcc_ufs_card_rx_symbol_0_clk_src",
509                         .parent_data = gcc_parent_data_16,
510                         .num_parents = ARRAY_SIZE(gcc_parent_data_16),
511                         .ops = &clk_regmap_mux_closest_ops,
512                 },
513         },
514 };
515
516 static struct clk_regmap_mux gcc_ufs_card_rx_symbol_1_clk_src = {
517         .reg = 0x810d0,
518         .shift = 0,
519         .width = 2,
520         .parent_map = gcc_parent_map_17,
521         .clkr = {
522                 .hw.init = &(const struct clk_init_data){
523                         .name = "gcc_ufs_card_rx_symbol_1_clk_src",
524                         .parent_data = gcc_parent_data_17,
525                         .num_parents = ARRAY_SIZE(gcc_parent_data_17),
526                         .ops = &clk_regmap_mux_closest_ops,
527                 },
528         },
529 };
530
531 static struct clk_regmap_mux gcc_ufs_card_tx_symbol_0_clk_src = {
532         .reg = 0x81050,
533         .shift = 0,
534         .width = 2,
535         .parent_map = gcc_parent_map_18,
536         .clkr = {
537                 .hw.init = &(const struct clk_init_data){
538                         .name = "gcc_ufs_card_tx_symbol_0_clk_src",
539                         .parent_data = gcc_parent_data_18,
540                         .num_parents = ARRAY_SIZE(gcc_parent_data_18),
541                         .ops = &clk_regmap_mux_closest_ops,
542                 },
543         },
544 };
545
546 static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src = {
547         .reg = 0x83060,
548         .shift = 0,
549         .width = 2,
550         .parent_map = gcc_parent_map_19,
551         .clkr = {
552                 .hw.init = &(const struct clk_init_data){
553                         .name = "gcc_ufs_phy_rx_symbol_0_clk_src",
554                         .parent_data = gcc_parent_data_19,
555                         .num_parents = ARRAY_SIZE(gcc_parent_data_19),
556                         .ops = &clk_regmap_mux_closest_ops,
557                 },
558         },
559 };
560
561 static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src = {
562         .reg = 0x830d0,
563         .shift = 0,
564         .width = 2,
565         .parent_map = gcc_parent_map_20,
566         .clkr = {
567                 .hw.init = &(const struct clk_init_data){
568                         .name = "gcc_ufs_phy_rx_symbol_1_clk_src",
569                         .parent_data = gcc_parent_data_20,
570                         .num_parents = ARRAY_SIZE(gcc_parent_data_20),
571                         .ops = &clk_regmap_mux_closest_ops,
572                 },
573         },
574 };
575
576 static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src = {
577         .reg = 0x83050,
578         .shift = 0,
579         .width = 2,
580         .parent_map = gcc_parent_map_21,
581         .clkr = {
582                 .hw.init = &(const struct clk_init_data){
583                         .name = "gcc_ufs_phy_tx_symbol_0_clk_src",
584                         .parent_data = gcc_parent_data_21,
585                         .num_parents = ARRAY_SIZE(gcc_parent_data_21),
586                         .ops = &clk_regmap_mux_closest_ops,
587                 },
588         },
589 };
590
591 static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = {
592         .reg = 0x1b068,
593         .shift = 0,
594         .width = 2,
595         .parent_map = gcc_parent_map_22,
596         .clkr = {
597                 .hw.init = &(const struct clk_init_data){
598                         .name = "gcc_usb3_prim_phy_pipe_clk_src",
599                         .parent_data = gcc_parent_data_22,
600                         .num_parents = ARRAY_SIZE(gcc_parent_data_22),
601                         .ops = &clk_regmap_mux_closest_ops,
602                 },
603         },
604 };
605
606 static struct clk_regmap_mux gcc_usb3_sec_phy_pipe_clk_src = {
607         .reg = 0x2f068,
608         .shift = 0,
609         .width = 2,
610         .parent_map = gcc_parent_map_23,
611         .clkr = {
612                 .hw.init = &(const struct clk_init_data){
613                         .name = "gcc_usb3_sec_phy_pipe_clk_src",
614                         .parent_data = gcc_parent_data_23,
615                         .num_parents = ARRAY_SIZE(gcc_parent_data_23),
616                         .ops = &clk_regmap_mux_closest_ops,
617                 },
618         },
619 };
620
621 static const struct freq_tbl ftbl_gcc_emac0_phy_aux_clk_src[] = {
622         F(19200000, P_BI_TCXO, 1, 0, 0),
623         { }
624 };
625
626 static struct clk_rcg2 gcc_emac0_phy_aux_clk_src = {
627         .cmd_rcgr = 0xb6028,
628         .mnd_width = 0,
629         .hid_width = 5,
630         .parent_map = gcc_parent_map_3,
631         .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
632         .clkr.hw.init = &(const struct clk_init_data){
633                 .name = "gcc_emac0_phy_aux_clk_src",
634                 .parent_data = gcc_parent_data_3,
635                 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
636                 .ops = &clk_rcg2_shared_ops,
637         },
638 };
639
640 static const struct freq_tbl ftbl_gcc_emac0_ptp_clk_src[] = {
641         F(125000000, P_GCC_GPLL7_OUT_MAIN, 8, 0, 0),
642         F(230400000, P_GCC_GPLL4_OUT_MAIN, 3.5, 0, 0),
643         { }
644 };
645
646 static struct clk_rcg2 gcc_emac0_ptp_clk_src = {
647         .cmd_rcgr = 0xb6060,
648         .mnd_width = 16,
649         .hid_width = 5,
650         .parent_map = gcc_parent_map_6,
651         .freq_tbl = ftbl_gcc_emac0_ptp_clk_src,
652         .clkr.hw.init = &(const struct clk_init_data){
653                 .name = "gcc_emac0_ptp_clk_src",
654                 .parent_data = gcc_parent_data_6,
655                 .num_parents = ARRAY_SIZE(gcc_parent_data_6),
656                 .ops = &clk_rcg2_shared_ops,
657         },
658 };
659
660 static const struct freq_tbl ftbl_gcc_emac0_rgmii_clk_src[] = {
661         F(125000000, P_GCC_GPLL7_OUT_MAIN, 8, 0, 0),
662         F(250000000, P_GCC_GPLL7_OUT_MAIN, 4, 0, 0),
663         { }
664 };
665
666 static struct clk_rcg2 gcc_emac0_rgmii_clk_src = {
667         .cmd_rcgr = 0xb6048,
668         .mnd_width = 16,
669         .hid_width = 5,
670         .parent_map = gcc_parent_map_7,
671         .freq_tbl = ftbl_gcc_emac0_rgmii_clk_src,
672         .clkr.hw.init = &(const struct clk_init_data){
673                 .name = "gcc_emac0_rgmii_clk_src",
674                 .parent_data = gcc_parent_data_7,
675                 .num_parents = ARRAY_SIZE(gcc_parent_data_7),
676                 .ops = &clk_rcg2_shared_ops,
677         },
678 };
679
680 static struct clk_rcg2 gcc_emac1_phy_aux_clk_src = {
681         .cmd_rcgr = 0xb4028,
682         .mnd_width = 0,
683         .hid_width = 5,
684         .parent_map = gcc_parent_map_3,
685         .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
686         .clkr.hw.init = &(const struct clk_init_data){
687                 .name = "gcc_emac1_phy_aux_clk_src",
688                 .parent_data = gcc_parent_data_3,
689                 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
690                 .ops = &clk_rcg2_shared_ops,
691         },
692 };
693
694 static struct clk_rcg2 gcc_emac1_ptp_clk_src = {
695         .cmd_rcgr = 0xb4060,
696         .mnd_width = 16,
697         .hid_width = 5,
698         .parent_map = gcc_parent_map_6,
699         .freq_tbl = ftbl_gcc_emac0_ptp_clk_src,
700         .clkr.hw.init = &(const struct clk_init_data){
701                 .name = "gcc_emac1_ptp_clk_src",
702                 .parent_data = gcc_parent_data_6,
703                 .num_parents = ARRAY_SIZE(gcc_parent_data_6),
704                 .ops = &clk_rcg2_shared_ops,
705         },
706 };
707
708 static struct clk_rcg2 gcc_emac1_rgmii_clk_src = {
709         .cmd_rcgr = 0xb4048,
710         .mnd_width = 16,
711         .hid_width = 5,
712         .parent_map = gcc_parent_map_8,
713         .freq_tbl = ftbl_gcc_emac0_rgmii_clk_src,
714         .clkr.hw.init = &(const struct clk_init_data){
715                 .name = "gcc_emac1_rgmii_clk_src",
716                 .parent_data = gcc_parent_data_8,
717                 .num_parents = ARRAY_SIZE(gcc_parent_data_8),
718                 .ops = &clk_rcg2_shared_ops,
719         },
720 };
721
722 static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
723         F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
724         F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
725         { }
726 };
727
728 static struct clk_rcg2 gcc_gp1_clk_src = {
729         .cmd_rcgr = 0x70004,
730         .mnd_width = 16,
731         .hid_width = 5,
732         .parent_map = gcc_parent_map_2,
733         .freq_tbl = ftbl_gcc_gp1_clk_src,
734         .clkr.hw.init = &(const struct clk_init_data){
735                 .name = "gcc_gp1_clk_src",
736                 .parent_data = gcc_parent_data_2,
737                 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
738                 .ops = &clk_rcg2_shared_ops,
739         },
740 };
741
742 static struct clk_rcg2 gcc_gp2_clk_src = {
743         .cmd_rcgr = 0x71004,
744         .mnd_width = 16,
745         .hid_width = 5,
746         .parent_map = gcc_parent_map_2,
747         .freq_tbl = ftbl_gcc_gp1_clk_src,
748         .clkr.hw.init = &(const struct clk_init_data){
749                 .name = "gcc_gp2_clk_src",
750                 .parent_data = gcc_parent_data_2,
751                 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
752                 .ops = &clk_rcg2_shared_ops,
753         },
754 };
755
756 static struct clk_rcg2 gcc_gp3_clk_src = {
757         .cmd_rcgr = 0x62004,
758         .mnd_width = 16,
759         .hid_width = 5,
760         .parent_map = gcc_parent_map_2,
761         .freq_tbl = ftbl_gcc_gp1_clk_src,
762         .clkr.hw.init = &(const struct clk_init_data){
763                 .name = "gcc_gp3_clk_src",
764                 .parent_data = gcc_parent_data_2,
765                 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
766                 .ops = &clk_rcg2_shared_ops,
767         },
768 };
769
770 static struct clk_rcg2 gcc_gp4_clk_src = {
771         .cmd_rcgr = 0x1e004,
772         .mnd_width = 16,
773         .hid_width = 5,
774         .parent_map = gcc_parent_map_2,
775         .freq_tbl = ftbl_gcc_gp1_clk_src,
776         .clkr.hw.init = &(const struct clk_init_data){
777                 .name = "gcc_gp4_clk_src",
778                 .parent_data = gcc_parent_data_2,
779                 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
780                 .ops = &clk_rcg2_shared_ops,
781         },
782 };
783
784 static struct clk_rcg2 gcc_gp5_clk_src = {
785         .cmd_rcgr = 0x1f004,
786         .mnd_width = 16,
787         .hid_width = 5,
788         .parent_map = gcc_parent_map_2,
789         .freq_tbl = ftbl_gcc_gp1_clk_src,
790         .clkr.hw.init = &(const struct clk_init_data){
791                 .name = "gcc_gp5_clk_src",
792                 .parent_data = gcc_parent_data_2,
793                 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
794                 .ops = &clk_rcg2_shared_ops,
795         },
796 };
797
798 static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
799         .cmd_rcgr = 0xa9078,
800         .mnd_width = 16,
801         .hid_width = 5,
802         .parent_map = gcc_parent_map_3,
803         .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
804         .clkr.hw.init = &(const struct clk_init_data){
805                 .name = "gcc_pcie_0_aux_clk_src",
806                 .parent_data = gcc_parent_data_3,
807                 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
808                 .ops = &clk_rcg2_shared_ops,
809         },
810 };
811
812 static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = {
813         F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
814         { }
815 };
816
817 static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = {
818         .cmd_rcgr = 0xa9054,
819         .mnd_width = 0,
820         .hid_width = 5,
821         .parent_map = gcc_parent_map_0,
822         .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
823         .clkr.hw.init = &(const struct clk_init_data){
824                 .name = "gcc_pcie_0_phy_rchng_clk_src",
825                 .parent_data = gcc_parent_data_0,
826                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
827                 .ops = &clk_rcg2_shared_ops,
828         },
829 };
830
831 static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
832         .cmd_rcgr = 0x77078,
833         .mnd_width = 16,
834         .hid_width = 5,
835         .parent_map = gcc_parent_map_3,
836         .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
837         .clkr.hw.init = &(const struct clk_init_data){
838                 .name = "gcc_pcie_1_aux_clk_src",
839                 .parent_data = gcc_parent_data_3,
840                 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
841                 .ops = &clk_rcg2_shared_ops,
842         },
843 };
844
845 static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = {
846         .cmd_rcgr = 0x77054,
847         .mnd_width = 0,
848         .hid_width = 5,
849         .parent_map = gcc_parent_map_0,
850         .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
851         .clkr.hw.init = &(const struct clk_init_data){
852                 .name = "gcc_pcie_1_phy_rchng_clk_src",
853                 .parent_data = gcc_parent_data_0,
854                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
855                 .ops = &clk_rcg2_shared_ops,
856         },
857 };
858
859 static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
860         F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0),
861         { }
862 };
863
864 static struct clk_rcg2 gcc_pdm2_clk_src = {
865         .cmd_rcgr = 0x3f010,
866         .mnd_width = 0,
867         .hid_width = 5,
868         .parent_map = gcc_parent_map_0,
869         .freq_tbl = ftbl_gcc_pdm2_clk_src,
870         .clkr.hw.init = &(const struct clk_init_data){
871                 .name = "gcc_pdm2_clk_src",
872                 .parent_data = gcc_parent_data_0,
873                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
874                 .ops = &clk_rcg2_shared_ops,
875         },
876 };
877
878 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
879         F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
880         F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
881         F(19200000, P_BI_TCXO, 1, 0, 0),
882         F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
883         F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
884         F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
885         F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
886         F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
887         F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
888         F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
889         { }
890 };
891
892 static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {
893         .name = "gcc_qupv3_wrap0_s0_clk_src",
894         .parent_data = gcc_parent_data_0,
895         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
896         .ops = &clk_rcg2_shared_ops,
897 };
898
899 static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
900         .cmd_rcgr = 0x23154,
901         .mnd_width = 16,
902         .hid_width = 5,
903         .parent_map = gcc_parent_map_0,
904         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
905         .clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,
906 };
907
908 static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {
909         .name = "gcc_qupv3_wrap0_s1_clk_src",
910         .parent_data = gcc_parent_data_0,
911         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
912         .ops = &clk_rcg2_shared_ops,
913 };
914
915 static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
916         .cmd_rcgr = 0x23288,
917         .mnd_width = 16,
918         .hid_width = 5,
919         .parent_map = gcc_parent_map_0,
920         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
921         .clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,
922 };
923
924 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s2_clk_src[] = {
925         F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
926         F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
927         F(19200000, P_BI_TCXO, 1, 0, 0),
928         F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
929         F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
930         F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
931         F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
932         F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
933         F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
934         F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
935         { }
936 };
937
938 static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {
939         .name = "gcc_qupv3_wrap0_s2_clk_src",
940         .parent_data = gcc_parent_data_0,
941         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
942         .ops = &clk_rcg2_shared_ops,
943 };
944
945 static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
946         .cmd_rcgr = 0x233bc,
947         .mnd_width = 16,
948         .hid_width = 5,
949         .parent_map = gcc_parent_map_0,
950         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
951         .clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,
952 };
953
954 static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {
955         .name = "gcc_qupv3_wrap0_s3_clk_src",
956         .parent_data = gcc_parent_data_0,
957         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
958         .ops = &clk_rcg2_shared_ops,
959 };
960
961 static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
962         .cmd_rcgr = 0x234f0,
963         .mnd_width = 16,
964         .hid_width = 5,
965         .parent_map = gcc_parent_map_0,
966         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
967         .clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,
968 };
969
970 static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {
971         .name = "gcc_qupv3_wrap0_s4_clk_src",
972         .parent_data = gcc_parent_data_1,
973         .num_parents = ARRAY_SIZE(gcc_parent_data_1),
974         .ops = &clk_rcg2_shared_ops,
975 };
976
977 static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
978         .cmd_rcgr = 0x23624,
979         .mnd_width = 16,
980         .hid_width = 5,
981         .parent_map = gcc_parent_map_1,
982         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
983         .clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,
984 };
985
986 static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {
987         .name = "gcc_qupv3_wrap0_s5_clk_src",
988         .parent_data = gcc_parent_data_0,
989         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
990         .ops = &clk_rcg2_shared_ops,
991 };
992
993 static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
994         .cmd_rcgr = 0x23758,
995         .mnd_width = 16,
996         .hid_width = 5,
997         .parent_map = gcc_parent_map_0,
998         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
999         .clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,
1000 };
1001
1002 static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = {
1003         .name = "gcc_qupv3_wrap0_s6_clk_src",
1004         .parent_data = gcc_parent_data_0,
1005         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1006         .ops = &clk_rcg2_shared_ops,
1007 };
1008
1009 static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
1010         .cmd_rcgr = 0x2388c,
1011         .mnd_width = 16,
1012         .hid_width = 5,
1013         .parent_map = gcc_parent_map_0,
1014         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
1015         .clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init,
1016 };
1017
1018 static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
1019         .name = "gcc_qupv3_wrap1_s0_clk_src",
1020         .parent_data = gcc_parent_data_0,
1021         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1022         .ops = &clk_rcg2_shared_ops,
1023 };
1024
1025 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
1026         .cmd_rcgr = 0x24154,
1027         .mnd_width = 16,
1028         .hid_width = 5,
1029         .parent_map = gcc_parent_map_0,
1030         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1031         .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
1032 };
1033
1034 static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
1035         .name = "gcc_qupv3_wrap1_s1_clk_src",
1036         .parent_data = gcc_parent_data_0,
1037         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1038         .ops = &clk_rcg2_shared_ops,
1039 };
1040
1041 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
1042         .cmd_rcgr = 0x24288,
1043         .mnd_width = 16,
1044         .hid_width = 5,
1045         .parent_map = gcc_parent_map_0,
1046         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1047         .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
1048 };
1049
1050 static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {
1051         .name = "gcc_qupv3_wrap1_s2_clk_src",
1052         .parent_data = gcc_parent_data_0,
1053         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1054         .ops = &clk_rcg2_shared_ops,
1055 };
1056
1057 static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
1058         .cmd_rcgr = 0x243bc,
1059         .mnd_width = 16,
1060         .hid_width = 5,
1061         .parent_map = gcc_parent_map_0,
1062         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
1063         .clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,
1064 };
1065
1066 static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
1067         .name = "gcc_qupv3_wrap1_s3_clk_src",
1068         .parent_data = gcc_parent_data_0,
1069         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1070         .ops = &clk_rcg2_shared_ops,
1071 };
1072
1073 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
1074         .cmd_rcgr = 0x244f0,
1075         .mnd_width = 16,
1076         .hid_width = 5,
1077         .parent_map = gcc_parent_map_0,
1078         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
1079         .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
1080 };
1081
1082 static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
1083         .name = "gcc_qupv3_wrap1_s4_clk_src",
1084         .parent_data = gcc_parent_data_1,
1085         .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1086         .ops = &clk_rcg2_shared_ops,
1087 };
1088
1089 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
1090         .cmd_rcgr = 0x24624,
1091         .mnd_width = 16,
1092         .hid_width = 5,
1093         .parent_map = gcc_parent_map_1,
1094         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
1095         .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
1096 };
1097
1098 static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
1099         .name = "gcc_qupv3_wrap1_s5_clk_src",
1100         .parent_data = gcc_parent_data_0,
1101         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1102         .ops = &clk_rcg2_shared_ops,
1103 };
1104
1105 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
1106         .cmd_rcgr = 0x24758,
1107         .mnd_width = 16,
1108         .hid_width = 5,
1109         .parent_map = gcc_parent_map_0,
1110         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
1111         .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
1112 };
1113
1114 static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {
1115         .name = "gcc_qupv3_wrap1_s6_clk_src",
1116         .parent_data = gcc_parent_data_0,
1117         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1118         .ops = &clk_rcg2_shared_ops,
1119 };
1120
1121 static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {
1122         .cmd_rcgr = 0x2488c,
1123         .mnd_width = 16,
1124         .hid_width = 5,
1125         .parent_map = gcc_parent_map_0,
1126         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
1127         .clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,
1128 };
1129
1130 static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = {
1131         .name = "gcc_qupv3_wrap2_s0_clk_src",
1132         .parent_data = gcc_parent_data_1,
1133         .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1134         .ops = &clk_rcg2_shared_ops,
1135 };
1136
1137 static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
1138         .cmd_rcgr = 0x2a154,
1139         .mnd_width = 16,
1140         .hid_width = 5,
1141         .parent_map = gcc_parent_map_1,
1142         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1143         .clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init,
1144 };
1145
1146 static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = {
1147         .name = "gcc_qupv3_wrap2_s1_clk_src",
1148         .parent_data = gcc_parent_data_1,
1149         .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1150         .ops = &clk_rcg2_shared_ops,
1151 };
1152
1153 static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
1154         .cmd_rcgr = 0x2a288,
1155         .mnd_width = 16,
1156         .hid_width = 5,
1157         .parent_map = gcc_parent_map_1,
1158         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1159         .clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init,
1160 };
1161
1162 static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = {
1163         .name = "gcc_qupv3_wrap2_s2_clk_src",
1164         .parent_data = gcc_parent_data_1,
1165         .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1166         .ops = &clk_rcg2_shared_ops,
1167 };
1168
1169 static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
1170         .cmd_rcgr = 0x2a3bc,
1171         .mnd_width = 16,
1172         .hid_width = 5,
1173         .parent_map = gcc_parent_map_1,
1174         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
1175         .clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init,
1176 };
1177
1178 static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = {
1179         .name = "gcc_qupv3_wrap2_s3_clk_src",
1180         .parent_data = gcc_parent_data_1,
1181         .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1182         .ops = &clk_rcg2_shared_ops,
1183 };
1184
1185 static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
1186         .cmd_rcgr = 0x2a4f0,
1187         .mnd_width = 16,
1188         .hid_width = 5,
1189         .parent_map = gcc_parent_map_1,
1190         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
1191         .clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init,
1192 };
1193
1194 static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = {
1195         .name = "gcc_qupv3_wrap2_s4_clk_src",
1196         .parent_data = gcc_parent_data_1,
1197         .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1198         .ops = &clk_rcg2_shared_ops,
1199 };
1200
1201 static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
1202         .cmd_rcgr = 0x2a624,
1203         .mnd_width = 16,
1204         .hid_width = 5,
1205         .parent_map = gcc_parent_map_1,
1206         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
1207         .clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init,
1208 };
1209
1210 static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = {
1211         .name = "gcc_qupv3_wrap2_s5_clk_src",
1212         .parent_data = gcc_parent_data_1,
1213         .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1214         .ops = &clk_rcg2_shared_ops,
1215 };
1216
1217 static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {
1218         .cmd_rcgr = 0x2a758,
1219         .mnd_width = 16,
1220         .hid_width = 5,
1221         .parent_map = gcc_parent_map_1,
1222         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
1223         .clkr.hw.init = &gcc_qupv3_wrap2_s5_clk_src_init,
1224 };
1225
1226 static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init = {
1227         .name = "gcc_qupv3_wrap2_s6_clk_src",
1228         .parent_data = gcc_parent_data_1,
1229         .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1230         .ops = &clk_rcg2_shared_ops,
1231 };
1232
1233 static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src = {
1234         .cmd_rcgr = 0x2a88c,
1235         .mnd_width = 16,
1236         .hid_width = 5,
1237         .parent_map = gcc_parent_map_1,
1238         .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
1239         .clkr.hw.init = &gcc_qupv3_wrap2_s6_clk_src_init,
1240 };
1241
1242 static const struct freq_tbl ftbl_gcc_qupv3_wrap3_s0_clk_src[] = {
1243         F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
1244         F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
1245         F(19200000, P_BI_TCXO, 1, 0, 0),
1246         F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
1247         F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
1248         F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
1249         F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
1250         F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1251         F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
1252         F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
1253         F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
1254         F(403200000, P_GCC_GPLL4_OUT_MAIN, 2, 0, 0),
1255         { }
1256 };
1257
1258 static struct clk_init_data gcc_qupv3_wrap3_s0_clk_src_init = {
1259         .name = "gcc_qupv3_wrap3_s0_clk_src",
1260         .parent_data = gcc_parent_data_4,
1261         .num_parents = ARRAY_SIZE(gcc_parent_data_4),
1262         .ops = &clk_rcg2_shared_ops,
1263 };
1264
1265 static struct clk_rcg2 gcc_qupv3_wrap3_s0_clk_src = {
1266         .cmd_rcgr = 0xc4154,
1267         .mnd_width = 16,
1268         .hid_width = 5,
1269         .parent_map = gcc_parent_map_4,
1270         .freq_tbl = ftbl_gcc_qupv3_wrap3_s0_clk_src,
1271         .clkr.hw.init = &gcc_qupv3_wrap3_s0_clk_src_init,
1272 };
1273
1274 static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {
1275         F(144000, P_BI_TCXO, 16, 3, 25),
1276         F(400000, P_BI_TCXO, 12, 1, 4),
1277         F(19200000, P_BI_TCXO, 1, 0, 0),
1278         F(20000000, P_GCC_GPLL0_OUT_EVEN, 5, 1, 3),
1279         F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1280         F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
1281         F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1282         F(192000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0),
1283         F(384000000, P_GCC_GPLL9_OUT_MAIN, 2, 0, 0),
1284         { }
1285 };
1286
1287 static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {
1288         .cmd_rcgr = 0x20014,
1289         .mnd_width = 8,
1290         .hid_width = 5,
1291         .parent_map = gcc_parent_map_13,
1292         .freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,
1293         .clkr.hw.init = &(const struct clk_init_data){
1294                 .name = "gcc_sdcc1_apps_clk_src",
1295                 .parent_data = gcc_parent_data_13,
1296                 .num_parents = ARRAY_SIZE(gcc_parent_data_13),
1297                 .ops = &clk_rcg2_floor_ops,
1298         },
1299 };
1300
1301 static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = {
1302         F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
1303         F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
1304         { }
1305 };
1306
1307 static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = {
1308         .cmd_rcgr = 0x2002c,
1309         .mnd_width = 0,
1310         .hid_width = 5,
1311         .parent_map = gcc_parent_map_14,
1312         .freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src,
1313         .clkr.hw.init = &(const struct clk_init_data){
1314                 .name = "gcc_sdcc1_ice_core_clk_src",
1315                 .parent_data = gcc_parent_data_14,
1316                 .num_parents = ARRAY_SIZE(gcc_parent_data_14),
1317                 .ops = &clk_rcg2_floor_ops,
1318         },
1319 };
1320
1321 static const struct freq_tbl ftbl_gcc_tscss_cntr_clk_src[] = {
1322         F(15625000, P_GCC_GPLL7_OUT_MAIN, 16, 1, 4),
1323         { }
1324 };
1325
1326 static struct clk_rcg2 gcc_tscss_cntr_clk_src = {
1327         .cmd_rcgr = 0x21008,
1328         .mnd_width = 16,
1329         .hid_width = 5,
1330         .parent_map = gcc_parent_map_15,
1331         .freq_tbl = ftbl_gcc_tscss_cntr_clk_src,
1332         .clkr.hw.init = &(const struct clk_init_data){
1333                 .name = "gcc_tscss_cntr_clk_src",
1334                 .parent_data = gcc_parent_data_15,
1335                 .num_parents = ARRAY_SIZE(gcc_parent_data_15),
1336                 .ops = &clk_rcg2_shared_ops,
1337         },
1338 };
1339
1340 static const struct freq_tbl ftbl_gcc_ufs_card_axi_clk_src[] = {
1341         F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1342         F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1343         F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
1344         F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
1345         F(600000000, P_GCC_GPLL0_OUT_MAIN, 1, 0, 0),
1346         { }
1347 };
1348
1349 static struct clk_rcg2 gcc_ufs_card_axi_clk_src = {
1350         .cmd_rcgr = 0x8102c,
1351         .mnd_width = 8,
1352         .hid_width = 5,
1353         .parent_map = gcc_parent_map_0,
1354         .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,
1355         .clkr.hw.init = &(const struct clk_init_data){
1356                 .name = "gcc_ufs_card_axi_clk_src",
1357                 .parent_data = gcc_parent_data_0,
1358                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1359                 .ops = &clk_rcg2_shared_ops,
1360         },
1361 };
1362
1363 static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src[] = {
1364         F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1365         F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
1366         F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
1367         F(600000000, P_GCC_GPLL0_OUT_MAIN, 1, 0, 0),
1368         { }
1369 };
1370
1371 static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = {
1372         .cmd_rcgr = 0x81074,
1373         .mnd_width = 0,
1374         .hid_width = 5,
1375         .parent_map = gcc_parent_map_0,
1376         .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
1377         .clkr.hw.init = &(const struct clk_init_data){
1378                 .name = "gcc_ufs_card_ice_core_clk_src",
1379                 .parent_data = gcc_parent_data_0,
1380                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1381                 .ops = &clk_rcg2_shared_ops,
1382         },
1383 };
1384
1385 static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = {
1386         .cmd_rcgr = 0x810a8,
1387         .mnd_width = 0,
1388         .hid_width = 5,
1389         .parent_map = gcc_parent_map_5,
1390         .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
1391         .clkr.hw.init = &(const struct clk_init_data){
1392                 .name = "gcc_ufs_card_phy_aux_clk_src",
1393                 .parent_data = gcc_parent_data_5,
1394                 .num_parents = ARRAY_SIZE(gcc_parent_data_5),
1395                 .ops = &clk_rcg2_shared_ops,
1396         },
1397 };
1398
1399 static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = {
1400         .cmd_rcgr = 0x8108c,
1401         .mnd_width = 0,
1402         .hid_width = 5,
1403         .parent_map = gcc_parent_map_0,
1404         .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
1405         .clkr.hw.init = &(const struct clk_init_data){
1406                 .name = "gcc_ufs_card_unipro_core_clk_src",
1407                 .parent_data = gcc_parent_data_0,
1408                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1409                 .ops = &clk_rcg2_shared_ops,
1410         },
1411 };
1412
1413 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
1414         .cmd_rcgr = 0x8302c,
1415         .mnd_width = 8,
1416         .hid_width = 5,
1417         .parent_map = gcc_parent_map_0,
1418         .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,
1419         .clkr.hw.init = &(const struct clk_init_data){
1420                 .name = "gcc_ufs_phy_axi_clk_src",
1421                 .parent_data = gcc_parent_data_0,
1422                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1423                 .ops = &clk_rcg2_shared_ops,
1424         },
1425 };
1426
1427 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
1428         .cmd_rcgr = 0x83074,
1429         .mnd_width = 0,
1430         .hid_width = 5,
1431         .parent_map = gcc_parent_map_0,
1432         .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
1433         .clkr.hw.init = &(const struct clk_init_data){
1434                 .name = "gcc_ufs_phy_ice_core_clk_src",
1435                 .parent_data = gcc_parent_data_0,
1436                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1437                 .ops = &clk_rcg2_shared_ops,
1438         },
1439 };
1440
1441 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
1442         .cmd_rcgr = 0x830a8,
1443         .mnd_width = 0,
1444         .hid_width = 5,
1445         .parent_map = gcc_parent_map_5,
1446         .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
1447         .clkr.hw.init = &(const struct clk_init_data){
1448                 .name = "gcc_ufs_phy_phy_aux_clk_src",
1449                 .parent_data = gcc_parent_data_5,
1450                 .num_parents = ARRAY_SIZE(gcc_parent_data_5),
1451                 .ops = &clk_rcg2_shared_ops,
1452         },
1453 };
1454
1455 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
1456         .cmd_rcgr = 0x8308c,
1457         .mnd_width = 0,
1458         .hid_width = 5,
1459         .parent_map = gcc_parent_map_0,
1460         .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
1461         .clkr.hw.init = &(const struct clk_init_data){
1462                 .name = "gcc_ufs_phy_unipro_core_clk_src",
1463                 .parent_data = gcc_parent_data_0,
1464                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1465                 .ops = &clk_rcg2_shared_ops,
1466         },
1467 };
1468
1469 static const struct freq_tbl ftbl_gcc_usb20_master_clk_src[] = {
1470         F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
1471         { }
1472 };
1473
1474 static struct clk_rcg2 gcc_usb20_master_clk_src = {
1475         .cmd_rcgr = 0x1c028,
1476         .mnd_width = 8,
1477         .hid_width = 5,
1478         .parent_map = gcc_parent_map_0,
1479         .freq_tbl = ftbl_gcc_usb20_master_clk_src,
1480         .clkr.hw.init = &(const struct clk_init_data){
1481                 .name = "gcc_usb20_master_clk_src",
1482                 .parent_data = gcc_parent_data_0,
1483                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1484                 .ops = &clk_rcg2_shared_ops,
1485         },
1486 };
1487
1488 static struct clk_rcg2 gcc_usb20_mock_utmi_clk_src = {
1489         .cmd_rcgr = 0x1c040,
1490         .mnd_width = 0,
1491         .hid_width = 5,
1492         .parent_map = gcc_parent_map_0,
1493         .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
1494         .clkr.hw.init = &(const struct clk_init_data){
1495                 .name = "gcc_usb20_mock_utmi_clk_src",
1496                 .parent_data = gcc_parent_data_0,
1497                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1498                 .ops = &clk_rcg2_shared_ops,
1499         },
1500 };
1501
1502 static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
1503         F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0),
1504         F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
1505         F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),
1506         { }
1507 };
1508
1509 static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
1510         .cmd_rcgr = 0x1b028,
1511         .mnd_width = 8,
1512         .hid_width = 5,
1513         .parent_map = gcc_parent_map_0,
1514         .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
1515         .clkr.hw.init = &(const struct clk_init_data){
1516                 .name = "gcc_usb30_prim_master_clk_src",
1517                 .parent_data = gcc_parent_data_0,
1518                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1519                 .ops = &clk_rcg2_shared_ops,
1520         },
1521 };
1522
1523 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
1524         .cmd_rcgr = 0x1b040,
1525         .mnd_width = 0,
1526         .hid_width = 5,
1527         .parent_map = gcc_parent_map_0,
1528         .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
1529         .clkr.hw.init = &(const struct clk_init_data){
1530                 .name = "gcc_usb30_prim_mock_utmi_clk_src",
1531                 .parent_data = gcc_parent_data_0,
1532                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1533                 .ops = &clk_rcg2_shared_ops,
1534         },
1535 };
1536
1537 static struct clk_rcg2 gcc_usb30_sec_master_clk_src = {
1538         .cmd_rcgr = 0x2f028,
1539         .mnd_width = 8,
1540         .hid_width = 5,
1541         .parent_map = gcc_parent_map_0,
1542         .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
1543         .clkr.hw.init = &(const struct clk_init_data){
1544                 .name = "gcc_usb30_sec_master_clk_src",
1545                 .parent_data = gcc_parent_data_0,
1546                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1547                 .ops = &clk_rcg2_shared_ops,
1548         },
1549 };
1550
1551 static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = {
1552         .cmd_rcgr = 0x2f040,
1553         .mnd_width = 0,
1554         .hid_width = 5,
1555         .parent_map = gcc_parent_map_0,
1556         .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
1557         .clkr.hw.init = &(const struct clk_init_data){
1558                 .name = "gcc_usb30_sec_mock_utmi_clk_src",
1559                 .parent_data = gcc_parent_data_0,
1560                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1561                 .ops = &clk_rcg2_shared_ops,
1562         },
1563 };
1564
1565 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
1566         .cmd_rcgr = 0x1b06c,
1567         .mnd_width = 0,
1568         .hid_width = 5,
1569         .parent_map = gcc_parent_map_3,
1570         .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
1571         .clkr.hw.init = &(const struct clk_init_data){
1572                 .name = "gcc_usb3_prim_phy_aux_clk_src",
1573                 .parent_data = gcc_parent_data_3,
1574                 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
1575                 .ops = &clk_rcg2_shared_ops,
1576         },
1577 };
1578
1579 static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = {
1580         .cmd_rcgr = 0x2f06c,
1581         .mnd_width = 0,
1582         .hid_width = 5,
1583         .parent_map = gcc_parent_map_3,
1584         .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
1585         .clkr.hw.init = &(const struct clk_init_data){
1586                 .name = "gcc_usb3_sec_phy_aux_clk_src",
1587                 .parent_data = gcc_parent_data_3,
1588                 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
1589                 .ops = &clk_rcg2_shared_ops,
1590         },
1591 };
1592
1593 static struct clk_regmap_div gcc_pcie_0_pipe_div_clk_src = {
1594         .reg = 0xa9070,
1595         .shift = 0,
1596         .width = 4,
1597         .clkr.hw.init = &(const struct clk_init_data) {
1598                 .name = "gcc_pcie_0_pipe_div_clk_src",
1599                 .parent_hws = (const struct clk_hw*[]){
1600                         &gcc_pcie_0_pipe_clk_src.clkr.hw,
1601                 },
1602                 .num_parents = 1,
1603                 .flags = CLK_SET_RATE_PARENT,
1604                 .ops = &clk_regmap_div_ro_ops,
1605         },
1606 };
1607
1608 static struct clk_regmap_div gcc_pcie_1_pipe_div_clk_src = {
1609         .reg = 0x77070,
1610         .shift = 0,
1611         .width = 4,
1612         .clkr.hw.init = &(const struct clk_init_data) {
1613                 .name = "gcc_pcie_1_pipe_div_clk_src",
1614                 .parent_hws = (const struct clk_hw*[]){
1615                         &gcc_pcie_1_pipe_clk_src.clkr.hw,
1616                 },
1617                 .num_parents = 1,
1618                 .flags = CLK_SET_RATE_PARENT,
1619                 .ops = &clk_regmap_div_ro_ops,
1620         },
1621 };
1622
1623 static struct clk_regmap_div gcc_qupv3_wrap3_s0_div_clk_src = {
1624         .reg = 0xc4284,
1625         .shift = 0,
1626         .width = 4,
1627         .clkr.hw.init = &(const struct clk_init_data) {
1628                 .name = "gcc_qupv3_wrap3_s0_div_clk_src",
1629                 .parent_hws = (const struct clk_hw*[]){
1630                         &gcc_qupv3_wrap3_s0_clk_src.clkr.hw,
1631                 },
1632                 .num_parents = 1,
1633                 .flags = CLK_SET_RATE_PARENT,
1634                 .ops = &clk_regmap_div_ro_ops,
1635         },
1636 };
1637
1638 static struct clk_regmap_div gcc_usb20_mock_utmi_postdiv_clk_src = {
1639         .reg = 0x1c058,
1640         .shift = 0,
1641         .width = 4,
1642         .clkr.hw.init = &(const struct clk_init_data) {
1643                 .name = "gcc_usb20_mock_utmi_postdiv_clk_src",
1644                 .parent_hws = (const struct clk_hw*[]){
1645                         &gcc_usb20_mock_utmi_clk_src.clkr.hw,
1646                 },
1647                 .num_parents = 1,
1648                 .flags = CLK_SET_RATE_PARENT,
1649                 .ops = &clk_regmap_div_ro_ops,
1650         },
1651 };
1652
1653 static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {
1654         .reg = 0x1b058,
1655         .shift = 0,
1656         .width = 4,
1657         .clkr.hw.init = &(const struct clk_init_data) {
1658                 .name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
1659                 .parent_hws = (const struct clk_hw*[]){
1660                         &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
1661                 },
1662                 .num_parents = 1,
1663                 .flags = CLK_SET_RATE_PARENT,
1664                 .ops = &clk_regmap_div_ro_ops,
1665         },
1666 };
1667
1668 static struct clk_regmap_div gcc_usb30_sec_mock_utmi_postdiv_clk_src = {
1669         .reg = 0x2f058,
1670         .shift = 0,
1671         .width = 4,
1672         .clkr.hw.init = &(const struct clk_init_data) {
1673                 .name = "gcc_usb30_sec_mock_utmi_postdiv_clk_src",
1674                 .parent_hws = (const struct clk_hw*[]){
1675                         &gcc_usb30_sec_mock_utmi_clk_src.clkr.hw,
1676                 },
1677                 .num_parents = 1,
1678                 .flags = CLK_SET_RATE_PARENT,
1679                 .ops = &clk_regmap_div_ro_ops,
1680         },
1681 };
1682
1683 static struct clk_branch gcc_aggre_noc_qupv3_axi_clk = {
1684         .halt_reg = 0x8e200,
1685         .halt_check = BRANCH_HALT_VOTED,
1686         .hwcg_reg = 0x8e200,
1687         .hwcg_bit = 1,
1688         .clkr = {
1689                 .enable_reg = 0x4b000,
1690                 .enable_mask = BIT(28),
1691                 .hw.init = &(const struct clk_init_data){
1692                         .name = "gcc_aggre_noc_qupv3_axi_clk",
1693                         .ops = &clk_branch2_ops,
1694                 },
1695         },
1696 };
1697
1698 static struct clk_branch gcc_aggre_ufs_card_axi_clk = {
1699         .halt_reg = 0x810d4,
1700         .halt_check = BRANCH_HALT_VOTED,
1701         .hwcg_reg = 0x810d4,
1702         .hwcg_bit = 1,
1703         .clkr = {
1704                 .enable_reg = 0x810d4,
1705                 .enable_mask = BIT(0),
1706                 .hw.init = &(const struct clk_init_data){
1707                         .name = "gcc_aggre_ufs_card_axi_clk",
1708                         .parent_hws = (const struct clk_hw*[]){
1709                                 &gcc_ufs_card_axi_clk_src.clkr.hw,
1710                         },
1711                         .num_parents = 1,
1712                         .flags = CLK_SET_RATE_PARENT,
1713                         .ops = &clk_branch2_ops,
1714                 },
1715         },
1716 };
1717
1718 static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
1719         .halt_reg = 0x830d4,
1720         .halt_check = BRANCH_HALT_VOTED,
1721         .hwcg_reg = 0x830d4,
1722         .hwcg_bit = 1,
1723         .clkr = {
1724                 .enable_reg = 0x830d4,
1725                 .enable_mask = BIT(0),
1726                 .hw.init = &(const struct clk_init_data){
1727                         .name = "gcc_aggre_ufs_phy_axi_clk",
1728                         .parent_hws = (const struct clk_hw*[]){
1729                                 &gcc_ufs_phy_axi_clk_src.clkr.hw,
1730                         },
1731                         .num_parents = 1,
1732                         .flags = CLK_SET_RATE_PARENT,
1733                         .ops = &clk_branch2_ops,
1734                 },
1735         },
1736 };
1737
1738 static struct clk_branch gcc_aggre_usb2_prim_axi_clk = {
1739         .halt_reg = 0x1c05c,
1740         .halt_check = BRANCH_HALT_VOTED,
1741         .hwcg_reg = 0x1c05c,
1742         .hwcg_bit = 1,
1743         .clkr = {
1744                 .enable_reg = 0x1c05c,
1745                 .enable_mask = BIT(0),
1746                 .hw.init = &(const struct clk_init_data){
1747                         .name = "gcc_aggre_usb2_prim_axi_clk",
1748                         .parent_hws = (const struct clk_hw*[]){
1749                                 &gcc_usb20_master_clk_src.clkr.hw,
1750                         },
1751                         .num_parents = 1,
1752                         .flags = CLK_SET_RATE_PARENT,
1753                         .ops = &clk_branch2_ops,
1754                 },
1755         },
1756 };
1757
1758 static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
1759         .halt_reg = 0x1b084,
1760         .halt_check = BRANCH_HALT_VOTED,
1761         .hwcg_reg = 0x1b084,
1762         .hwcg_bit = 1,
1763         .clkr = {
1764                 .enable_reg = 0x1b084,
1765                 .enable_mask = BIT(0),
1766                 .hw.init = &(const struct clk_init_data){
1767                         .name = "gcc_aggre_usb3_prim_axi_clk",
1768                         .parent_hws = (const struct clk_hw*[]){
1769                                 &gcc_usb30_prim_master_clk_src.clkr.hw,
1770                         },
1771                         .num_parents = 1,
1772                         .flags = CLK_SET_RATE_PARENT,
1773                         .ops = &clk_branch2_ops,
1774                 },
1775         },
1776 };
1777
1778 static struct clk_branch gcc_aggre_usb3_sec_axi_clk = {
1779         .halt_reg = 0x2f088,
1780         .halt_check = BRANCH_HALT_VOTED,
1781         .hwcg_reg = 0x2f088,
1782         .hwcg_bit = 1,
1783         .clkr = {
1784                 .enable_reg = 0x2f088,
1785                 .enable_mask = BIT(0),
1786                 .hw.init = &(const struct clk_init_data){
1787                         .name = "gcc_aggre_usb3_sec_axi_clk",
1788                         .parent_hws = (const struct clk_hw*[]){
1789                                 &gcc_usb30_sec_master_clk_src.clkr.hw,
1790                         },
1791                         .num_parents = 1,
1792                         .flags = CLK_SET_RATE_PARENT,
1793                         .ops = &clk_branch2_ops,
1794                 },
1795         },
1796 };
1797
1798 static struct clk_branch gcc_ahb2phy0_clk = {
1799         .halt_reg = 0x76004,
1800         .halt_check = BRANCH_HALT_VOTED,
1801         .hwcg_reg = 0x76004,
1802         .hwcg_bit = 1,
1803         .clkr = {
1804                 .enable_reg = 0x76004,
1805                 .enable_mask = BIT(0),
1806                 .hw.init = &(const struct clk_init_data){
1807                         .name = "gcc_ahb2phy0_clk",
1808                         .ops = &clk_branch2_ops,
1809                 },
1810         },
1811 };
1812
1813 static struct clk_branch gcc_ahb2phy2_clk = {
1814         .halt_reg = 0x76008,
1815         .halt_check = BRANCH_HALT_VOTED,
1816         .hwcg_reg = 0x76008,
1817         .hwcg_bit = 1,
1818         .clkr = {
1819                 .enable_reg = 0x76008,
1820                 .enable_mask = BIT(0),
1821                 .hw.init = &(const struct clk_init_data){
1822                         .name = "gcc_ahb2phy2_clk",
1823                         .ops = &clk_branch2_ops,
1824                 },
1825         },
1826 };
1827
1828 static struct clk_branch gcc_ahb2phy3_clk = {
1829         .halt_reg = 0x7600c,
1830         .halt_check = BRANCH_HALT_VOTED,
1831         .hwcg_reg = 0x7600c,
1832         .hwcg_bit = 1,
1833         .clkr = {
1834                 .enable_reg = 0x7600c,
1835                 .enable_mask = BIT(0),
1836                 .hw.init = &(const struct clk_init_data){
1837                         .name = "gcc_ahb2phy3_clk",
1838                         .ops = &clk_branch2_ops,
1839                 },
1840         },
1841 };
1842
1843 static struct clk_branch gcc_boot_rom_ahb_clk = {
1844         .halt_reg = 0x44004,
1845         .halt_check = BRANCH_HALT_VOTED,
1846         .hwcg_reg = 0x44004,
1847         .hwcg_bit = 1,
1848         .clkr = {
1849                 .enable_reg = 0x4b000,
1850                 .enable_mask = BIT(10),
1851                 .hw.init = &(const struct clk_init_data){
1852                         .name = "gcc_boot_rom_ahb_clk",
1853                         .ops = &clk_branch2_ops,
1854                 },
1855         },
1856 };
1857
1858 static struct clk_branch gcc_camera_hf_axi_clk = {
1859         .halt_reg = 0x32010,
1860         .halt_check = BRANCH_HALT_SKIP,
1861         .hwcg_reg = 0x32010,
1862         .hwcg_bit = 1,
1863         .clkr = {
1864                 .enable_reg = 0x32010,
1865                 .enable_mask = BIT(0),
1866                 .hw.init = &(const struct clk_init_data){
1867                         .name = "gcc_camera_hf_axi_clk",
1868                         .ops = &clk_branch2_ops,
1869                 },
1870         },
1871 };
1872
1873 static struct clk_branch gcc_camera_sf_axi_clk = {
1874         .halt_reg = 0x32018,
1875         .halt_check = BRANCH_HALT_SKIP,
1876         .hwcg_reg = 0x32018,
1877         .hwcg_bit = 1,
1878         .clkr = {
1879                 .enable_reg = 0x32018,
1880                 .enable_mask = BIT(0),
1881                 .hw.init = &(const struct clk_init_data){
1882                         .name = "gcc_camera_sf_axi_clk",
1883                         .ops = &clk_branch2_ops,
1884                 },
1885         },
1886 };
1887
1888 static struct clk_branch gcc_camera_throttle_xo_clk = {
1889         .halt_reg = 0x32024,
1890         .halt_check = BRANCH_HALT,
1891         .clkr = {
1892                 .enable_reg = 0x32024,
1893                 .enable_mask = BIT(0),
1894                 .hw.init = &(const struct clk_init_data){
1895                         .name = "gcc_camera_throttle_xo_clk",
1896                         .ops = &clk_branch2_ops,
1897                 },
1898         },
1899 };
1900
1901 static struct clk_branch gcc_cfg_noc_usb2_prim_axi_clk = {
1902         .halt_reg = 0x1c060,
1903         .halt_check = BRANCH_HALT_VOTED,
1904         .hwcg_reg = 0x1c060,
1905         .hwcg_bit = 1,
1906         .clkr = {
1907                 .enable_reg = 0x1c060,
1908                 .enable_mask = BIT(0),
1909                 .hw.init = &(const struct clk_init_data){
1910                         .name = "gcc_cfg_noc_usb2_prim_axi_clk",
1911                         .parent_hws = (const struct clk_hw*[]){
1912                                 &gcc_usb20_master_clk_src.clkr.hw,
1913                         },
1914                         .num_parents = 1,
1915                         .flags = CLK_SET_RATE_PARENT,
1916                         .ops = &clk_branch2_ops,
1917                 },
1918         },
1919 };
1920
1921 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
1922         .halt_reg = 0x1b088,
1923         .halt_check = BRANCH_HALT_VOTED,
1924         .hwcg_reg = 0x1b088,
1925         .hwcg_bit = 1,
1926         .clkr = {
1927                 .enable_reg = 0x1b088,
1928                 .enable_mask = BIT(0),
1929                 .hw.init = &(const struct clk_init_data){
1930                         .name = "gcc_cfg_noc_usb3_prim_axi_clk",
1931                         .parent_hws = (const struct clk_hw*[]){
1932                                 &gcc_usb30_prim_master_clk_src.clkr.hw,
1933                         },
1934                         .num_parents = 1,
1935                         .flags = CLK_SET_RATE_PARENT,
1936                         .ops = &clk_branch2_ops,
1937                 },
1938         },
1939 };
1940
1941 static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = {
1942         .halt_reg = 0x2f084,
1943         .halt_check = BRANCH_HALT_VOTED,
1944         .hwcg_reg = 0x2f084,
1945         .hwcg_bit = 1,
1946         .clkr = {
1947                 .enable_reg = 0x2f084,
1948                 .enable_mask = BIT(0),
1949                 .hw.init = &(const struct clk_init_data){
1950                         .name = "gcc_cfg_noc_usb3_sec_axi_clk",
1951                         .parent_hws = (const struct clk_hw*[]){
1952                                 &gcc_usb30_sec_master_clk_src.clkr.hw,
1953                         },
1954                         .num_parents = 1,
1955                         .flags = CLK_SET_RATE_PARENT,
1956                         .ops = &clk_branch2_ops,
1957                 },
1958         },
1959 };
1960
1961 static struct clk_branch gcc_ddrss_gpu_axi_clk = {
1962         .halt_reg = 0x7d164,
1963         .halt_check = BRANCH_HALT_VOTED,
1964         .hwcg_reg = 0x7d164,
1965         .hwcg_bit = 1,
1966         .clkr = {
1967                 .enable_reg = 0x7d164,
1968                 .enable_mask = BIT(0),
1969                 .hw.init = &(const struct clk_init_data){
1970                         .name = "gcc_ddrss_gpu_axi_clk",
1971                         .ops = &clk_branch2_aon_ops,
1972                 },
1973         },
1974 };
1975
1976 static struct clk_branch gcc_disp1_hf_axi_clk = {
1977         .halt_reg = 0xc7010,
1978         .halt_check = BRANCH_HALT_VOTED,
1979         .hwcg_reg = 0xc7010,
1980         .hwcg_bit = 1,
1981         .clkr = {
1982                 .enable_reg = 0xc7010,
1983                 .enable_mask = BIT(0),
1984                 .hw.init = &(const struct clk_init_data){
1985                         .name = "gcc_disp1_hf_axi_clk",
1986                         .ops = &clk_branch2_ops,
1987                 },
1988         },
1989 };
1990
1991 static struct clk_branch gcc_disp_hf_axi_clk = {
1992         .halt_reg = 0x33010,
1993         .halt_check = BRANCH_HALT_VOTED,
1994         .hwcg_reg = 0x33010,
1995         .hwcg_bit = 1,
1996         .clkr = {
1997                 .enable_reg = 0x33010,
1998                 .enable_mask = BIT(0),
1999                 .hw.init = &(const struct clk_init_data){
2000                         .name = "gcc_disp_hf_axi_clk",
2001                         .ops = &clk_branch2_ops,
2002                 },
2003         },
2004 };
2005
2006 static struct clk_branch gcc_edp_ref_clkref_en = {
2007         .halt_reg = 0x97448,
2008         .halt_check = BRANCH_HALT_DELAY,
2009         .clkr = {
2010                 .enable_reg = 0x97448,
2011                 .enable_mask = BIT(0),
2012                 .hw.init = &(const struct clk_init_data){
2013                         .name = "gcc_edp_ref_clkref_en",
2014                         .ops = &clk_branch2_ops,
2015                 },
2016         },
2017 };
2018
2019 static struct clk_branch gcc_emac0_axi_clk = {
2020         .halt_reg = 0xb6018,
2021         .halt_check = BRANCH_HALT_VOTED,
2022         .hwcg_reg = 0xb6018,
2023         .hwcg_bit = 1,
2024         .clkr = {
2025                 .enable_reg = 0xb6018,
2026                 .enable_mask = BIT(0),
2027                 .hw.init = &(const struct clk_init_data){
2028                         .name = "gcc_emac0_axi_clk",
2029                         .ops = &clk_branch2_ops,
2030                 },
2031         },
2032 };
2033
2034 static struct clk_branch gcc_emac0_phy_aux_clk = {
2035         .halt_reg = 0xb6024,
2036         .halt_check = BRANCH_HALT,
2037         .clkr = {
2038                 .enable_reg = 0xb6024,
2039                 .enable_mask = BIT(0),
2040                 .hw.init = &(const struct clk_init_data){
2041                         .name = "gcc_emac0_phy_aux_clk",
2042                         .parent_hws = (const struct clk_hw*[]){
2043                                 &gcc_emac0_phy_aux_clk_src.clkr.hw,
2044                         },
2045                         .num_parents = 1,
2046                         .flags = CLK_SET_RATE_PARENT,
2047                         .ops = &clk_branch2_ops,
2048                 },
2049         },
2050 };
2051
2052 static struct clk_branch gcc_emac0_ptp_clk = {
2053         .halt_reg = 0xb6040,
2054         .halt_check = BRANCH_HALT,
2055         .clkr = {
2056                 .enable_reg = 0xb6040,
2057                 .enable_mask = BIT(0),
2058                 .hw.init = &(const struct clk_init_data){
2059                         .name = "gcc_emac0_ptp_clk",
2060                         .parent_hws = (const struct clk_hw*[]){
2061                                 &gcc_emac0_ptp_clk_src.clkr.hw,
2062                         },
2063                         .num_parents = 1,
2064                         .flags = CLK_SET_RATE_PARENT,
2065                         .ops = &clk_branch2_ops,
2066                 },
2067         },
2068 };
2069
2070 static struct clk_branch gcc_emac0_rgmii_clk = {
2071         .halt_reg = 0xb6044,
2072         .halt_check = BRANCH_HALT,
2073         .clkr = {
2074                 .enable_reg = 0xb6044,
2075                 .enable_mask = BIT(0),
2076                 .hw.init = &(const struct clk_init_data){
2077                         .name = "gcc_emac0_rgmii_clk",
2078                         .parent_hws = (const struct clk_hw*[]){
2079                                 &gcc_emac0_rgmii_clk_src.clkr.hw,
2080                         },
2081                         .num_parents = 1,
2082                         .flags = CLK_SET_RATE_PARENT,
2083                         .ops = &clk_branch2_ops,
2084                 },
2085         },
2086 };
2087
2088 static struct clk_branch gcc_emac0_slv_ahb_clk = {
2089         .halt_reg = 0xb6020,
2090         .halt_check = BRANCH_HALT_VOTED,
2091         .hwcg_reg = 0xb6020,
2092         .hwcg_bit = 1,
2093         .clkr = {
2094                 .enable_reg = 0xb6020,
2095                 .enable_mask = BIT(0),
2096                 .hw.init = &(const struct clk_init_data){
2097                         .name = "gcc_emac0_slv_ahb_clk",
2098                         .ops = &clk_branch2_ops,
2099                 },
2100         },
2101 };
2102
2103 static struct clk_branch gcc_emac1_axi_clk = {
2104         .halt_reg = 0xb4018,
2105         .halt_check = BRANCH_HALT_VOTED,
2106         .hwcg_reg = 0xb4018,
2107         .hwcg_bit = 1,
2108         .clkr = {
2109                 .enable_reg = 0xb4018,
2110                 .enable_mask = BIT(0),
2111                 .hw.init = &(const struct clk_init_data){
2112                         .name = "gcc_emac1_axi_clk",
2113                         .ops = &clk_branch2_ops,
2114                 },
2115         },
2116 };
2117
2118 static struct clk_branch gcc_emac1_phy_aux_clk = {
2119         .halt_reg = 0xb4024,
2120         .halt_check = BRANCH_HALT,
2121         .clkr = {
2122                 .enable_reg = 0xb4024,
2123                 .enable_mask = BIT(0),
2124                 .hw.init = &(const struct clk_init_data){
2125                         .name = "gcc_emac1_phy_aux_clk",
2126                         .parent_hws = (const struct clk_hw*[]){
2127                                 &gcc_emac1_phy_aux_clk_src.clkr.hw,
2128                         },
2129                         .num_parents = 1,
2130                         .flags = CLK_SET_RATE_PARENT,
2131                         .ops = &clk_branch2_ops,
2132                 },
2133         },
2134 };
2135
2136 static struct clk_branch gcc_emac1_ptp_clk = {
2137         .halt_reg = 0xb4040,
2138         .halt_check = BRANCH_HALT,
2139         .clkr = {
2140                 .enable_reg = 0xb4040,
2141                 .enable_mask = BIT(0),
2142                 .hw.init = &(const struct clk_init_data){
2143                         .name = "gcc_emac1_ptp_clk",
2144                         .parent_hws = (const struct clk_hw*[]){
2145                                 &gcc_emac1_ptp_clk_src.clkr.hw,
2146                         },
2147                         .num_parents = 1,
2148                         .flags = CLK_SET_RATE_PARENT,
2149                         .ops = &clk_branch2_ops,
2150                 },
2151         },
2152 };
2153
2154 static struct clk_branch gcc_emac1_rgmii_clk = {
2155         .halt_reg = 0xb4044,
2156         .halt_check = BRANCH_HALT,
2157         .clkr = {
2158                 .enable_reg = 0xb4044,
2159                 .enable_mask = BIT(0),
2160                 .hw.init = &(const struct clk_init_data){
2161                         .name = "gcc_emac1_rgmii_clk",
2162                         .parent_hws = (const struct clk_hw*[]){
2163                                 &gcc_emac1_rgmii_clk_src.clkr.hw,
2164                         },
2165                         .num_parents = 1,
2166                         .flags = CLK_SET_RATE_PARENT,
2167                         .ops = &clk_branch2_ops,
2168                 },
2169         },
2170 };
2171
2172 static struct clk_branch gcc_emac1_slv_ahb_clk = {
2173         .halt_reg = 0xb4020,
2174         .halt_check = BRANCH_HALT_VOTED,
2175         .hwcg_reg = 0xb4020,
2176         .hwcg_bit = 1,
2177         .clkr = {
2178                 .enable_reg = 0xb4020,
2179                 .enable_mask = BIT(0),
2180                 .hw.init = &(const struct clk_init_data){
2181                         .name = "gcc_emac1_slv_ahb_clk",
2182                         .ops = &clk_branch2_ops,
2183                 },
2184         },
2185 };
2186
2187 static struct clk_branch gcc_gp1_clk = {
2188         .halt_reg = 0x70000,
2189         .halt_check = BRANCH_HALT,
2190         .clkr = {
2191                 .enable_reg = 0x70000,
2192                 .enable_mask = BIT(0),
2193                 .hw.init = &(const struct clk_init_data){
2194                         .name = "gcc_gp1_clk",
2195                         .parent_hws = (const struct clk_hw*[]){
2196                                 &gcc_gp1_clk_src.clkr.hw,
2197                         },
2198                         .num_parents = 1,
2199                         .flags = CLK_SET_RATE_PARENT,
2200                         .ops = &clk_branch2_ops,
2201                 },
2202         },
2203 };
2204
2205 static struct clk_branch gcc_gp2_clk = {
2206         .halt_reg = 0x71000,
2207         .halt_check = BRANCH_HALT,
2208         .clkr = {
2209                 .enable_reg = 0x71000,
2210                 .enable_mask = BIT(0),
2211                 .hw.init = &(const struct clk_init_data){
2212                         .name = "gcc_gp2_clk",
2213                         .parent_hws = (const struct clk_hw*[]){
2214                                 &gcc_gp2_clk_src.clkr.hw,
2215                         },
2216                         .num_parents = 1,
2217                         .flags = CLK_SET_RATE_PARENT,
2218                         .ops = &clk_branch2_ops,
2219                 },
2220         },
2221 };
2222
2223 static struct clk_branch gcc_gp3_clk = {
2224         .halt_reg = 0x62000,
2225         .halt_check = BRANCH_HALT,
2226         .clkr = {
2227                 .enable_reg = 0x62000,
2228                 .enable_mask = BIT(0),
2229                 .hw.init = &(const struct clk_init_data){
2230                         .name = "gcc_gp3_clk",
2231                         .parent_hws = (const struct clk_hw*[]){
2232                                 &gcc_gp3_clk_src.clkr.hw,
2233                         },
2234                         .num_parents = 1,
2235                         .flags = CLK_SET_RATE_PARENT,
2236                         .ops = &clk_branch2_ops,
2237                 },
2238         },
2239 };
2240
2241 static struct clk_branch gcc_gp4_clk = {
2242         .halt_reg = 0x1e000,
2243         .halt_check = BRANCH_HALT,
2244         .clkr = {
2245                 .enable_reg = 0x1e000,
2246                 .enable_mask = BIT(0),
2247                 .hw.init = &(const struct clk_init_data){
2248                         .name = "gcc_gp4_clk",
2249                         .parent_hws = (const struct clk_hw*[]){
2250                                 &gcc_gp4_clk_src.clkr.hw,
2251                         },
2252                         .num_parents = 1,
2253                         .flags = CLK_SET_RATE_PARENT,
2254                         .ops = &clk_branch2_ops,
2255                 },
2256         },
2257 };
2258
2259 static struct clk_branch gcc_gp5_clk = {
2260         .halt_reg = 0x1f000,
2261         .halt_check = BRANCH_HALT,
2262         .clkr = {
2263                 .enable_reg = 0x1f000,
2264                 .enable_mask = BIT(0),
2265                 .hw.init = &(const struct clk_init_data){
2266                         .name = "gcc_gp5_clk",
2267                         .parent_hws = (const struct clk_hw*[]){
2268                                 &gcc_gp5_clk_src.clkr.hw,
2269                         },
2270                         .num_parents = 1,
2271                         .flags = CLK_SET_RATE_PARENT,
2272                         .ops = &clk_branch2_ops,
2273                 },
2274         },
2275 };
2276
2277 static struct clk_branch gcc_gpu_gpll0_clk_src = {
2278         .halt_check = BRANCH_HALT_DELAY,
2279         .clkr = {
2280                 .enable_reg = 0x4b000,
2281                 .enable_mask = BIT(15),
2282                 .hw.init = &(const struct clk_init_data){
2283                         .name = "gcc_gpu_gpll0_clk_src",
2284                         .parent_hws = (const struct clk_hw*[]){
2285                                 &gcc_gpll0.clkr.hw,
2286                         },
2287                         .num_parents = 1,
2288                         .flags = CLK_SET_RATE_PARENT,
2289                         .ops = &clk_branch2_ops,
2290                 },
2291         },
2292 };
2293
2294 static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
2295         .halt_check = BRANCH_HALT_DELAY,
2296         .clkr = {
2297                 .enable_reg = 0x4b000,
2298                 .enable_mask = BIT(16),
2299                 .hw.init = &(const struct clk_init_data){
2300                         .name = "gcc_gpu_gpll0_div_clk_src",
2301                         .parent_hws = (const struct clk_hw*[]){
2302                                 &gcc_gpll0_out_even.clkr.hw,
2303                         },
2304                         .num_parents = 1,
2305                         .flags = CLK_SET_RATE_PARENT,
2306                         .ops = &clk_branch2_ops,
2307                 },
2308         },
2309 };
2310
2311 static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
2312         .halt_reg = 0x7d010,
2313         .halt_check = BRANCH_HALT_VOTED,
2314         .hwcg_reg = 0x7d010,
2315         .hwcg_bit = 1,
2316         .clkr = {
2317                 .enable_reg = 0x7d010,
2318                 .enable_mask = BIT(0),
2319                 .hw.init = &(const struct clk_init_data){
2320                         .name = "gcc_gpu_memnoc_gfx_clk",
2321                         .ops = &clk_branch2_aon_ops,
2322                 },
2323         },
2324 };
2325
2326 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
2327         .halt_reg = 0x7d01c,
2328         .halt_check = BRANCH_HALT_DELAY,
2329         .clkr = {
2330                 .enable_reg = 0x7d01c,
2331                 .enable_mask = BIT(0),
2332                 .hw.init = &(const struct clk_init_data){
2333                         .name = "gcc_gpu_snoc_dvm_gfx_clk",
2334                         .ops = &clk_branch2_aon_ops,
2335                 },
2336         },
2337 };
2338
2339 static struct clk_branch gcc_gpu_tcu_throttle_ahb_clk = {
2340         .halt_reg = 0x7d008,
2341         .halt_check = BRANCH_HALT_VOTED,
2342         .hwcg_reg = 0x7d008,
2343         .hwcg_bit = 1,
2344         .clkr = {
2345                 .enable_reg = 0x7d008,
2346                 .enable_mask = BIT(0),
2347                 .hw.init = &(const struct clk_init_data){
2348                         .name = "gcc_gpu_tcu_throttle_ahb_clk",
2349                         .ops = &clk_branch2_ops,
2350                 },
2351         },
2352 };
2353
2354 static struct clk_branch gcc_gpu_tcu_throttle_clk = {
2355         .halt_reg = 0x7d014,
2356         .halt_check = BRANCH_HALT_VOTED,
2357         .hwcg_reg = 0x7d014,
2358         .hwcg_bit = 1,
2359         .clkr = {
2360                 .enable_reg = 0x7d014,
2361                 .enable_mask = BIT(0),
2362                 .hw.init = &(const struct clk_init_data){
2363                         .name = "gcc_gpu_tcu_throttle_clk",
2364                         .ops = &clk_branch2_ops,
2365                 },
2366         },
2367 };
2368
2369 static struct clk_branch gcc_pcie_0_aux_clk = {
2370         .halt_reg = 0xa9038,
2371         .halt_check = BRANCH_HALT_VOTED,
2372         .clkr = {
2373                 .enable_reg = 0x4b010,
2374                 .enable_mask = BIT(16),
2375                 .hw.init = &(const struct clk_init_data){
2376                         .name = "gcc_pcie_0_aux_clk",
2377                         .parent_hws = (const struct clk_hw*[]){
2378                                 &gcc_pcie_0_aux_clk_src.clkr.hw,
2379                         },
2380                         .num_parents = 1,
2381                         .flags = CLK_SET_RATE_PARENT,
2382                         .ops = &clk_branch2_ops,
2383                 },
2384         },
2385 };
2386
2387 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
2388         .halt_reg = 0xa902c,
2389         .halt_check = BRANCH_HALT_VOTED,
2390         .hwcg_reg = 0xa902c,
2391         .hwcg_bit = 1,
2392         .clkr = {
2393                 .enable_reg = 0x4b010,
2394                 .enable_mask = BIT(12),
2395                 .hw.init = &(const struct clk_init_data){
2396                         .name = "gcc_pcie_0_cfg_ahb_clk",
2397                         .ops = &clk_branch2_ops,
2398                 },
2399         },
2400 };
2401
2402 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
2403         .halt_reg = 0xa9024,
2404         .halt_check = BRANCH_HALT_VOTED,
2405         .clkr = {
2406                 .enable_reg = 0x4b010,
2407                 .enable_mask = BIT(11),
2408                 .hw.init = &(const struct clk_init_data){
2409                         .name = "gcc_pcie_0_mstr_axi_clk",
2410                         .ops = &clk_branch2_ops,
2411                 },
2412         },
2413 };
2414
2415 static struct clk_branch gcc_pcie_0_phy_aux_clk = {
2416         .halt_reg = 0xa9030,
2417         .halt_check = BRANCH_HALT_VOTED,
2418         .clkr = {
2419                 .enable_reg = 0x4b010,
2420                 .enable_mask = BIT(13),
2421                 .hw.init = &(const struct clk_init_data){
2422                         .name = "gcc_pcie_0_phy_aux_clk",
2423                         .parent_hws = (const struct clk_hw*[]){
2424                                 &gcc_pcie_0_phy_aux_clk_src.clkr.hw,
2425                         },
2426                         .num_parents = 1,
2427                         .flags = CLK_SET_RATE_PARENT,
2428                         .ops = &clk_branch2_ops,
2429                 },
2430         },
2431 };
2432
2433 static struct clk_branch gcc_pcie_0_phy_rchng_clk = {
2434         .halt_reg = 0xa9050,
2435         .halt_check = BRANCH_HALT_VOTED,
2436         .clkr = {
2437                 .enable_reg = 0x4b010,
2438                 .enable_mask = BIT(15),
2439                 .hw.init = &(const struct clk_init_data){
2440                         .name = "gcc_pcie_0_phy_rchng_clk",
2441                         .parent_hws = (const struct clk_hw*[]){
2442                                 &gcc_pcie_0_phy_rchng_clk_src.clkr.hw,
2443                         },
2444                         .num_parents = 1,
2445                         .flags = CLK_SET_RATE_PARENT,
2446                         .ops = &clk_branch2_ops,
2447                 },
2448         },
2449 };
2450
2451 static struct clk_branch gcc_pcie_0_pipe_clk = {
2452         .halt_reg = 0xa9040,
2453         .halt_check = BRANCH_HALT_SKIP,
2454         .clkr = {
2455                 .enable_reg = 0x4b010,
2456                 .enable_mask = BIT(14),
2457                 .hw.init = &(const struct clk_init_data){
2458                         .name = "gcc_pcie_0_pipe_clk",
2459                         .parent_hws = (const struct clk_hw*[]){
2460                                 &gcc_pcie_0_pipe_clk_src.clkr.hw,
2461                         },
2462                         .num_parents = 1,
2463                         .flags = CLK_SET_RATE_PARENT,
2464                         .ops = &clk_branch2_ops,
2465                 },
2466         },
2467 };
2468
2469 static struct clk_branch gcc_pcie_0_pipediv2_clk = {
2470         .halt_reg = 0xa9048,
2471         .halt_check = BRANCH_HALT_SKIP,
2472         .clkr = {
2473                 .enable_reg = 0x4b018,
2474                 .enable_mask = BIT(22),
2475                 .hw.init = &(const struct clk_init_data){
2476                         .name = "gcc_pcie_0_pipediv2_clk",
2477                         .parent_hws = (const struct clk_hw*[]){
2478                                 &gcc_pcie_0_pipe_div_clk_src.clkr.hw,
2479                         },
2480                         .num_parents = 1,
2481                         .flags = CLK_SET_RATE_PARENT,
2482                         .ops = &clk_branch2_ops,
2483                 },
2484         },
2485 };
2486
2487 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
2488         .halt_reg = 0xa901c,
2489         .halt_check = BRANCH_HALT_VOTED,
2490         .clkr = {
2491                 .enable_reg = 0x4b010,
2492                 .enable_mask = BIT(10),
2493                 .hw.init = &(const struct clk_init_data){
2494                         .name = "gcc_pcie_0_slv_axi_clk",
2495                         .ops = &clk_branch2_ops,
2496                 },
2497         },
2498 };
2499
2500 static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
2501         .halt_reg = 0xa9018,
2502         .halt_check = BRANCH_HALT_VOTED,
2503         .clkr = {
2504                 .enable_reg = 0x4b018,
2505                 .enable_mask = BIT(12),
2506                 .hw.init = &(const struct clk_init_data){
2507                         .name = "gcc_pcie_0_slv_q2a_axi_clk",
2508                         .ops = &clk_branch2_ops,
2509                 },
2510         },
2511 };
2512
2513 static struct clk_branch gcc_pcie_1_aux_clk = {
2514         .halt_reg = 0x77038,
2515         .halt_check = BRANCH_HALT_VOTED,
2516         .clkr = {
2517                 .enable_reg = 0x4b000,
2518                 .enable_mask = BIT(31),
2519                 .hw.init = &(const struct clk_init_data){
2520                         .name = "gcc_pcie_1_aux_clk",
2521                         .parent_hws = (const struct clk_hw*[]){
2522                                 &gcc_pcie_1_aux_clk_src.clkr.hw,
2523                         },
2524                         .num_parents = 1,
2525                         .flags = CLK_SET_RATE_PARENT,
2526                         .ops = &clk_branch2_ops,
2527                 },
2528         },
2529 };
2530
2531 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
2532         .halt_reg = 0x7702c,
2533         .halt_check = BRANCH_HALT_VOTED,
2534         .hwcg_reg = 0x7702c,
2535         .hwcg_bit = 1,
2536         .clkr = {
2537                 .enable_reg = 0x4b008,
2538                 .enable_mask = BIT(2),
2539                 .hw.init = &(const struct clk_init_data){
2540                         .name = "gcc_pcie_1_cfg_ahb_clk",
2541                         .ops = &clk_branch2_ops,
2542                 },
2543         },
2544 };
2545
2546 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
2547         .halt_reg = 0x77024,
2548         .halt_check = BRANCH_HALT_VOTED,
2549         .clkr = {
2550                 .enable_reg = 0x4b008,
2551                 .enable_mask = BIT(1),
2552                 .hw.init = &(const struct clk_init_data){
2553                         .name = "gcc_pcie_1_mstr_axi_clk",
2554                         .ops = &clk_branch2_ops,
2555                 },
2556         },
2557 };
2558
2559 static struct clk_branch gcc_pcie_1_phy_aux_clk = {
2560         .halt_reg = 0x77030,
2561         .halt_check = BRANCH_HALT_VOTED,
2562         .clkr = {
2563                 .enable_reg = 0x4b008,
2564                 .enable_mask = BIT(3),
2565                 .hw.init = &(const struct clk_init_data){
2566                         .name = "gcc_pcie_1_phy_aux_clk",
2567                         .parent_hws = (const struct clk_hw*[]){
2568                                 &gcc_pcie_1_phy_aux_clk_src.clkr.hw,
2569                         },
2570                         .num_parents = 1,
2571                         .flags = CLK_SET_RATE_PARENT,
2572                         .ops = &clk_branch2_ops,
2573                 },
2574         },
2575 };
2576
2577 static struct clk_branch gcc_pcie_1_phy_rchng_clk = {
2578         .halt_reg = 0x77050,
2579         .halt_check = BRANCH_HALT_VOTED,
2580         .clkr = {
2581                 .enable_reg = 0x4b000,
2582                 .enable_mask = BIT(22),
2583                 .hw.init = &(const struct clk_init_data){
2584                         .name = "gcc_pcie_1_phy_rchng_clk",
2585                         .parent_hws = (const struct clk_hw*[]){
2586                                 &gcc_pcie_1_phy_rchng_clk_src.clkr.hw,
2587                         },
2588                         .num_parents = 1,
2589                         .flags = CLK_SET_RATE_PARENT,
2590                         .ops = &clk_branch2_ops,
2591                 },
2592         },
2593 };
2594
2595 static struct clk_branch gcc_pcie_1_pipe_clk = {
2596         .halt_reg = 0x77040,
2597         .halt_check = BRANCH_HALT_SKIP,
2598         .clkr = {
2599                 .enable_reg = 0x4b008,
2600                 .enable_mask = BIT(4),
2601                 .hw.init = &(const struct clk_init_data){
2602                         .name = "gcc_pcie_1_pipe_clk",
2603                         .parent_hws = (const struct clk_hw*[]){
2604                                 &gcc_pcie_1_pipe_clk_src.clkr.hw,
2605                         },
2606                         .num_parents = 1,
2607                         .flags = CLK_SET_RATE_PARENT,
2608                         .ops = &clk_branch2_ops,
2609                 },
2610         },
2611 };
2612
2613 static struct clk_branch gcc_pcie_1_pipediv2_clk = {
2614         .halt_reg = 0x77048,
2615         .halt_check = BRANCH_HALT_SKIP,
2616         .clkr = {
2617                 .enable_reg = 0x4b018,
2618                 .enable_mask = BIT(16),
2619                 .hw.init = &(const struct clk_init_data){
2620                         .name = "gcc_pcie_1_pipediv2_clk",
2621                         .parent_hws = (const struct clk_hw*[]){
2622                                 &gcc_pcie_1_pipe_div_clk_src.clkr.hw,
2623                         },
2624                         .num_parents = 1,
2625                         .flags = CLK_SET_RATE_PARENT,
2626                         .ops = &clk_branch2_ops,
2627                 },
2628         },
2629 };
2630
2631 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
2632         .halt_reg = 0x7701c,
2633         .halt_check = BRANCH_HALT_VOTED,
2634         .clkr = {
2635                 .enable_reg = 0x4b008,
2636                 .enable_mask = BIT(0),
2637                 .hw.init = &(const struct clk_init_data){
2638                         .name = "gcc_pcie_1_slv_axi_clk",
2639                         .ops = &clk_branch2_ops,
2640                 },
2641         },
2642 };
2643
2644 static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
2645         .halt_reg = 0x77018,
2646         .halt_check = BRANCH_HALT_VOTED,
2647         .clkr = {
2648                 .enable_reg = 0x4b008,
2649                 .enable_mask = BIT(5),
2650                 .hw.init = &(const struct clk_init_data){
2651                         .name = "gcc_pcie_1_slv_q2a_axi_clk",
2652                         .ops = &clk_branch2_ops,
2653                 },
2654         },
2655 };
2656
2657 static struct clk_branch gcc_pcie_clkref_en = {
2658         .halt_reg = 0x9746c,
2659         .halt_check = BRANCH_HALT_DELAY,
2660         .clkr = {
2661                 .enable_reg = 0x9746c,
2662                 .enable_mask = BIT(0),
2663                 .hw.init = &(const struct clk_init_data){
2664                         .name = "gcc_pcie_clkref_en",
2665                         .ops = &clk_branch2_ops,
2666                 },
2667         },
2668 };
2669
2670 static struct clk_branch gcc_pcie_throttle_cfg_clk = {
2671         .halt_reg = 0xb2034,
2672         .halt_check = BRANCH_HALT_VOTED,
2673         .clkr = {
2674                 .enable_reg = 0x4b020,
2675                 .enable_mask = BIT(15),
2676                 .hw.init = &(const struct clk_init_data){
2677                         .name = "gcc_pcie_throttle_cfg_clk",
2678                         .ops = &clk_branch2_ops,
2679                 },
2680         },
2681 };
2682
2683 static struct clk_branch gcc_pdm2_clk = {
2684         .halt_reg = 0x3f00c,
2685         .halt_check = BRANCH_HALT,
2686         .clkr = {
2687                 .enable_reg = 0x3f00c,
2688                 .enable_mask = BIT(0),
2689                 .hw.init = &(const struct clk_init_data){
2690                         .name = "gcc_pdm2_clk",
2691                         .parent_hws = (const struct clk_hw*[]){
2692                                 &gcc_pdm2_clk_src.clkr.hw,
2693                         },
2694                         .num_parents = 1,
2695                         .flags = CLK_SET_RATE_PARENT,
2696                         .ops = &clk_branch2_ops,
2697                 },
2698         },
2699 };
2700
2701 static struct clk_branch gcc_pdm_ahb_clk = {
2702         .halt_reg = 0x3f004,
2703         .halt_check = BRANCH_HALT_VOTED,
2704         .hwcg_reg = 0x3f004,
2705         .hwcg_bit = 1,
2706         .clkr = {
2707                 .enable_reg = 0x3f004,
2708                 .enable_mask = BIT(0),
2709                 .hw.init = &(const struct clk_init_data){
2710                         .name = "gcc_pdm_ahb_clk",
2711                         .ops = &clk_branch2_ops,
2712                 },
2713         },
2714 };
2715
2716 static struct clk_branch gcc_pdm_xo4_clk = {
2717         .halt_reg = 0x3f008,
2718         .halt_check = BRANCH_HALT,
2719         .clkr = {
2720                 .enable_reg = 0x3f008,
2721                 .enable_mask = BIT(0),
2722                 .hw.init = &(const struct clk_init_data){
2723                         .name = "gcc_pdm_xo4_clk",
2724                         .ops = &clk_branch2_ops,
2725                 },
2726         },
2727 };
2728
2729 static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
2730         .halt_reg = 0x32008,
2731         .halt_check = BRANCH_HALT_VOTED,
2732         .hwcg_reg = 0x32008,
2733         .hwcg_bit = 1,
2734         .clkr = {
2735                 .enable_reg = 0x32008,
2736                 .enable_mask = BIT(0),
2737                 .hw.init = &(const struct clk_init_data){
2738                         .name = "gcc_qmip_camera_nrt_ahb_clk",
2739                         .ops = &clk_branch2_ops,
2740                 },
2741         },
2742 };
2743
2744 static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
2745         .halt_reg = 0x3200c,
2746         .halt_check = BRANCH_HALT_VOTED,
2747         .hwcg_reg = 0x3200c,
2748         .hwcg_bit = 1,
2749         .clkr = {
2750                 .enable_reg = 0x3200c,
2751                 .enable_mask = BIT(0),
2752                 .hw.init = &(const struct clk_init_data){
2753                         .name = "gcc_qmip_camera_rt_ahb_clk",
2754                         .ops = &clk_branch2_ops,
2755                 },
2756         },
2757 };
2758
2759 static struct clk_branch gcc_qmip_disp1_ahb_clk = {
2760         .halt_reg = 0xc7008,
2761         .halt_check = BRANCH_HALT_VOTED,
2762         .hwcg_reg = 0xc7008,
2763         .hwcg_bit = 1,
2764         .clkr = {
2765                 .enable_reg = 0xc7008,
2766                 .enable_mask = BIT(0),
2767                 .hw.init = &(const struct clk_init_data){
2768                         .name = "gcc_qmip_disp1_ahb_clk",
2769                         .ops = &clk_branch2_ops,
2770                 },
2771         },
2772 };
2773
2774 static struct clk_branch gcc_qmip_disp1_rot_ahb_clk = {
2775         .halt_reg = 0xc700c,
2776         .halt_check = BRANCH_HALT_VOTED,
2777         .clkr = {
2778                 .enable_reg = 0xc700c,
2779                 .enable_mask = BIT(0),
2780                 .hw.init = &(const struct clk_init_data){
2781                         .name = "gcc_qmip_disp1_rot_ahb_clk",
2782                         .ops = &clk_branch2_ops,
2783                 },
2784         },
2785 };
2786
2787 static struct clk_branch gcc_qmip_disp_ahb_clk = {
2788         .halt_reg = 0x33008,
2789         .halt_check = BRANCH_HALT_VOTED,
2790         .hwcg_reg = 0x33008,
2791         .hwcg_bit = 1,
2792         .clkr = {
2793                 .enable_reg = 0x33008,
2794                 .enable_mask = BIT(0),
2795                 .hw.init = &(const struct clk_init_data){
2796                         .name = "gcc_qmip_disp_ahb_clk",
2797                         .ops = &clk_branch2_ops,
2798                 },
2799         },
2800 };
2801
2802 static struct clk_branch gcc_qmip_disp_rot_ahb_clk = {
2803         .halt_reg = 0x3300c,
2804         .halt_check = BRANCH_HALT_VOTED,
2805         .clkr = {
2806                 .enable_reg = 0x3300c,
2807                 .enable_mask = BIT(0),
2808                 .hw.init = &(const struct clk_init_data){
2809                         .name = "gcc_qmip_disp_rot_ahb_clk",
2810                         .ops = &clk_branch2_ops,
2811                 },
2812         },
2813 };
2814
2815 static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {
2816         .halt_reg = 0x34008,
2817         .halt_check = BRANCH_HALT_VOTED,
2818         .hwcg_reg = 0x34008,
2819         .hwcg_bit = 1,
2820         .clkr = {
2821                 .enable_reg = 0x34008,
2822                 .enable_mask = BIT(0),
2823                 .hw.init = &(const struct clk_init_data){
2824                         .name = "gcc_qmip_video_cvp_ahb_clk",
2825                         .ops = &clk_branch2_ops,
2826                 },
2827         },
2828 };
2829
2830 static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
2831         .halt_reg = 0x3400c,
2832         .halt_check = BRANCH_HALT_VOTED,
2833         .hwcg_reg = 0x3400c,
2834         .hwcg_bit = 1,
2835         .clkr = {
2836                 .enable_reg = 0x3400c,
2837                 .enable_mask = BIT(0),
2838                 .hw.init = &(const struct clk_init_data){
2839                         .name = "gcc_qmip_video_vcodec_ahb_clk",
2840                         .ops = &clk_branch2_ops,
2841                 },
2842         },
2843 };
2844
2845 static struct clk_branch gcc_qmip_video_vcpu_ahb_clk = {
2846         .halt_reg = 0x34010,
2847         .halt_check = BRANCH_HALT_VOTED,
2848         .hwcg_reg = 0x34010,
2849         .hwcg_bit = 1,
2850         .clkr = {
2851                 .enable_reg = 0x34010,
2852                 .enable_mask = BIT(0),
2853                 .hw.init = &(const struct clk_init_data){
2854                         .name = "gcc_qmip_video_vcpu_ahb_clk",
2855                         .ops = &clk_branch2_ops,
2856                 },
2857         },
2858 };
2859
2860 static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {
2861         .halt_reg = 0x23018,
2862         .halt_check = BRANCH_HALT_VOTED,
2863         .clkr = {
2864                 .enable_reg = 0x4b008,
2865                 .enable_mask = BIT(9),
2866                 .hw.init = &(const struct clk_init_data){
2867                         .name = "gcc_qupv3_wrap0_core_2x_clk",
2868                         .ops = &clk_branch2_ops,
2869                 },
2870         },
2871 };
2872
2873 static struct clk_branch gcc_qupv3_wrap0_core_clk = {
2874         .halt_reg = 0x2300c,
2875         .halt_check = BRANCH_HALT_VOTED,
2876         .clkr = {
2877                 .enable_reg = 0x4b008,
2878                 .enable_mask = BIT(8),
2879                 .hw.init = &(const struct clk_init_data){
2880                         .name = "gcc_qupv3_wrap0_core_clk",
2881                         .ops = &clk_branch2_ops,
2882                 },
2883         },
2884 };
2885
2886 static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
2887         .halt_reg = 0x2314c,
2888         .halt_check = BRANCH_HALT_VOTED,
2889         .clkr = {
2890                 .enable_reg = 0x4b008,
2891                 .enable_mask = BIT(10),
2892                 .hw.init = &(const struct clk_init_data){
2893                         .name = "gcc_qupv3_wrap0_s0_clk",
2894                         .parent_hws = (const struct clk_hw*[]){
2895                                 &gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
2896                         },
2897                         .num_parents = 1,
2898                         .flags = CLK_SET_RATE_PARENT,
2899                         .ops = &clk_branch2_ops,
2900                 },
2901         },
2902 };
2903
2904 static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
2905         .halt_reg = 0x23280,
2906         .halt_check = BRANCH_HALT_VOTED,
2907         .clkr = {
2908                 .enable_reg = 0x4b008,
2909                 .enable_mask = BIT(11),
2910                 .hw.init = &(const struct clk_init_data){
2911                         .name = "gcc_qupv3_wrap0_s1_clk",
2912                         .parent_hws = (const struct clk_hw*[]){
2913                                 &gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
2914                         },
2915                         .num_parents = 1,
2916                         .flags = CLK_SET_RATE_PARENT,
2917                         .ops = &clk_branch2_ops,
2918                 },
2919         },
2920 };
2921
2922 static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
2923         .halt_reg = 0x233b4,
2924         .halt_check = BRANCH_HALT_VOTED,
2925         .clkr = {
2926                 .enable_reg = 0x4b008,
2927                 .enable_mask = BIT(12),
2928                 .hw.init = &(const struct clk_init_data){
2929                         .name = "gcc_qupv3_wrap0_s2_clk",
2930                         .parent_hws = (const struct clk_hw*[]){
2931                                 &gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
2932                         },
2933                         .num_parents = 1,
2934                         .flags = CLK_SET_RATE_PARENT,
2935                         .ops = &clk_branch2_ops,
2936                 },
2937         },
2938 };
2939
2940 static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
2941         .halt_reg = 0x234e8,
2942         .halt_check = BRANCH_HALT_VOTED,
2943         .clkr = {
2944                 .enable_reg = 0x4b008,
2945                 .enable_mask = BIT(13),
2946                 .hw.init = &(const struct clk_init_data){
2947                         .name = "gcc_qupv3_wrap0_s3_clk",
2948                         .parent_hws = (const struct clk_hw*[]){
2949                                 &gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
2950                         },
2951                         .num_parents = 1,
2952                         .flags = CLK_SET_RATE_PARENT,
2953                         .ops = &clk_branch2_ops,
2954                 },
2955         },
2956 };
2957
2958 static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
2959         .halt_reg = 0x2361c,
2960         .halt_check = BRANCH_HALT_VOTED,
2961         .clkr = {
2962                 .enable_reg = 0x4b008,
2963                 .enable_mask = BIT(14),
2964                 .hw.init = &(const struct clk_init_data){
2965                         .name = "gcc_qupv3_wrap0_s4_clk",
2966                         .parent_hws = (const struct clk_hw*[]){
2967                                 &gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
2968                         },
2969                         .num_parents = 1,
2970                         .flags = CLK_SET_RATE_PARENT,
2971                         .ops = &clk_branch2_ops,
2972                 },
2973         },
2974 };
2975
2976 static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
2977         .halt_reg = 0x23750,
2978         .halt_check = BRANCH_HALT_VOTED,
2979         .clkr = {
2980                 .enable_reg = 0x4b008,
2981                 .enable_mask = BIT(15),
2982                 .hw.init = &(const struct clk_init_data){
2983                         .name = "gcc_qupv3_wrap0_s5_clk",
2984                         .parent_hws = (const struct clk_hw*[]){
2985                                 &gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
2986                         },
2987                         .num_parents = 1,
2988                         .flags = CLK_SET_RATE_PARENT,
2989                         .ops = &clk_branch2_ops,
2990                 },
2991         },
2992 };
2993
2994 static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
2995         .halt_reg = 0x23884,
2996         .halt_check = BRANCH_HALT_VOTED,
2997         .clkr = {
2998                 .enable_reg = 0x4b008,
2999                 .enable_mask = BIT(16),
3000                 .hw.init = &(const struct clk_init_data){
3001                         .name = "gcc_qupv3_wrap0_s6_clk",
3002                         .parent_hws = (const struct clk_hw*[]){
3003                                 &gcc_qupv3_wrap0_s6_clk_src.clkr.hw,
3004                         },
3005                         .num_parents = 1,
3006                         .flags = CLK_SET_RATE_PARENT,
3007                         .ops = &clk_branch2_ops,
3008                 },
3009         },
3010 };
3011
3012 static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
3013         .halt_reg = 0x24018,
3014         .halt_check = BRANCH_HALT_VOTED,
3015         .clkr = {
3016                 .enable_reg = 0x4b008,
3017                 .enable_mask = BIT(18),
3018                 .hw.init = &(const struct clk_init_data){
3019                         .name = "gcc_qupv3_wrap1_core_2x_clk",
3020                         .ops = &clk_branch2_ops,
3021                 },
3022         },
3023 };
3024
3025 static struct clk_branch gcc_qupv3_wrap1_core_clk = {
3026         .halt_reg = 0x2400c,
3027         .halt_check = BRANCH_HALT_VOTED,
3028         .clkr = {
3029                 .enable_reg = 0x4b008,
3030                 .enable_mask = BIT(19),
3031                 .hw.init = &(const struct clk_init_data){
3032                         .name = "gcc_qupv3_wrap1_core_clk",
3033                         .ops = &clk_branch2_ops,
3034                 },
3035         },
3036 };
3037
3038 static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
3039         .halt_reg = 0x2414c,
3040         .halt_check = BRANCH_HALT_VOTED,
3041         .clkr = {
3042                 .enable_reg = 0x4b008,
3043                 .enable_mask = BIT(22),
3044                 .hw.init = &(const struct clk_init_data){
3045                         .name = "gcc_qupv3_wrap1_s0_clk",
3046                         .parent_hws = (const struct clk_hw*[]){
3047                                 &gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
3048                         },
3049                         .num_parents = 1,
3050                         .flags = CLK_SET_RATE_PARENT,
3051                         .ops = &clk_branch2_ops,
3052                 },
3053         },
3054 };
3055
3056 static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
3057         .halt_reg = 0x24280,
3058         .halt_check = BRANCH_HALT_VOTED,
3059         .clkr = {
3060                 .enable_reg = 0x4b008,
3061                 .enable_mask = BIT(23),
3062                 .hw.init = &(const struct clk_init_data){
3063                         .name = "gcc_qupv3_wrap1_s1_clk",
3064                         .parent_hws = (const struct clk_hw*[]){
3065                                 &gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
3066                         },
3067                         .num_parents = 1,
3068                         .flags = CLK_SET_RATE_PARENT,
3069                         .ops = &clk_branch2_ops,
3070                 },
3071         },
3072 };
3073
3074 static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
3075         .halt_reg = 0x243b4,
3076         .halt_check = BRANCH_HALT_VOTED,
3077         .clkr = {
3078                 .enable_reg = 0x4b008,
3079                 .enable_mask = BIT(24),
3080                 .hw.init = &(const struct clk_init_data){
3081                         .name = "gcc_qupv3_wrap1_s2_clk",
3082                         .parent_hws = (const struct clk_hw*[]){
3083                                 &gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
3084                         },
3085                         .num_parents = 1,
3086                         .flags = CLK_SET_RATE_PARENT,
3087                         .ops = &clk_branch2_ops,
3088                 },
3089         },
3090 };
3091
3092 static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
3093         .halt_reg = 0x244e8,
3094         .halt_check = BRANCH_HALT_VOTED,
3095         .clkr = {
3096                 .enable_reg = 0x4b008,
3097                 .enable_mask = BIT(25),
3098                 .hw.init = &(const struct clk_init_data){
3099                         .name = "gcc_qupv3_wrap1_s3_clk",
3100                         .parent_hws = (const struct clk_hw*[]){
3101                                 &gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
3102                         },
3103                         .num_parents = 1,
3104                         .flags = CLK_SET_RATE_PARENT,
3105                         .ops = &clk_branch2_ops,
3106                 },
3107         },
3108 };
3109
3110 static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
3111         .halt_reg = 0x2461c,
3112         .halt_check = BRANCH_HALT_VOTED,
3113         .clkr = {
3114                 .enable_reg = 0x4b008,
3115                 .enable_mask = BIT(26),
3116                 .hw.init = &(const struct clk_init_data){
3117                         .name = "gcc_qupv3_wrap1_s4_clk",
3118                         .parent_hws = (const struct clk_hw*[]){
3119                                 &gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
3120                         },
3121                         .num_parents = 1,
3122                         .flags = CLK_SET_RATE_PARENT,
3123                         .ops = &clk_branch2_ops,
3124                 },
3125         },
3126 };
3127
3128 static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
3129         .halt_reg = 0x24750,
3130         .halt_check = BRANCH_HALT_VOTED,
3131         .clkr = {
3132                 .enable_reg = 0x4b008,
3133                 .enable_mask = BIT(27),
3134                 .hw.init = &(const struct clk_init_data){
3135                         .name = "gcc_qupv3_wrap1_s5_clk",
3136                         .parent_hws = (const struct clk_hw*[]){
3137                                 &gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
3138                         },
3139                         .num_parents = 1,
3140                         .flags = CLK_SET_RATE_PARENT,
3141                         .ops = &clk_branch2_ops,
3142                 },
3143         },
3144 };
3145
3146 static struct clk_branch gcc_qupv3_wrap1_s6_clk = {
3147         .halt_reg = 0x24884,
3148         .halt_check = BRANCH_HALT_VOTED,
3149         .clkr = {
3150                 .enable_reg = 0x4b018,
3151                 .enable_mask = BIT(27),
3152                 .hw.init = &(const struct clk_init_data){
3153                         .name = "gcc_qupv3_wrap1_s6_clk",
3154                         .parent_hws = (const struct clk_hw*[]){
3155                                 &gcc_qupv3_wrap1_s6_clk_src.clkr.hw,
3156                         },
3157                         .num_parents = 1,
3158                         .flags = CLK_SET_RATE_PARENT,
3159                         .ops = &clk_branch2_ops,
3160                 },
3161         },
3162 };
3163
3164 static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = {
3165         .halt_reg = 0x2a018,
3166         .halt_check = BRANCH_HALT_VOTED,
3167         .clkr = {
3168                 .enable_reg = 0x4b010,
3169                 .enable_mask = BIT(3),
3170                 .hw.init = &(const struct clk_init_data){
3171                         .name = "gcc_qupv3_wrap2_core_2x_clk",
3172                         .ops = &clk_branch2_ops,
3173                 },
3174         },
3175 };
3176
3177 static struct clk_branch gcc_qupv3_wrap2_core_clk = {
3178         .halt_reg = 0x2a00c,
3179         .halt_check = BRANCH_HALT_VOTED,
3180         .clkr = {
3181                 .enable_reg = 0x4b010,
3182                 .enable_mask = BIT(0),
3183                 .hw.init = &(const struct clk_init_data){
3184                         .name = "gcc_qupv3_wrap2_core_clk",
3185                         .ops = &clk_branch2_ops,
3186                 },
3187         },
3188 };
3189
3190 static struct clk_branch gcc_qupv3_wrap2_s0_clk = {
3191         .halt_reg = 0x2a14c,
3192         .halt_check = BRANCH_HALT_VOTED,
3193         .clkr = {
3194                 .enable_reg = 0x4b010,
3195                 .enable_mask = BIT(4),
3196                 .hw.init = &(const struct clk_init_data){
3197                         .name = "gcc_qupv3_wrap2_s0_clk",
3198                         .parent_hws = (const struct clk_hw*[]){
3199                                 &gcc_qupv3_wrap2_s0_clk_src.clkr.hw,
3200                         },
3201                         .num_parents = 1,
3202                         .flags = CLK_SET_RATE_PARENT,
3203                         .ops = &clk_branch2_ops,
3204                 },
3205         },
3206 };
3207
3208 static struct clk_branch gcc_qupv3_wrap2_s1_clk = {
3209         .halt_reg = 0x2a280,
3210         .halt_check = BRANCH_HALT_VOTED,
3211         .clkr = {
3212                 .enable_reg = 0x4b010,
3213                 .enable_mask = BIT(5),
3214                 .hw.init = &(const struct clk_init_data){
3215                         .name = "gcc_qupv3_wrap2_s1_clk",
3216                         .parent_hws = (const struct clk_hw*[]){
3217                                 &gcc_qupv3_wrap2_s1_clk_src.clkr.hw,
3218                         },
3219                         .num_parents = 1,
3220                         .flags = CLK_SET_RATE_PARENT,
3221                         .ops = &clk_branch2_ops,
3222                 },
3223         },
3224 };
3225
3226 static struct clk_branch gcc_qupv3_wrap2_s2_clk = {
3227         .halt_reg = 0x2a3b4,
3228         .halt_check = BRANCH_HALT_VOTED,
3229         .clkr = {
3230                 .enable_reg = 0x4b010,
3231                 .enable_mask = BIT(6),
3232                 .hw.init = &(const struct clk_init_data){
3233                         .name = "gcc_qupv3_wrap2_s2_clk",
3234                         .parent_hws = (const struct clk_hw*[]){
3235                                 &gcc_qupv3_wrap2_s2_clk_src.clkr.hw,
3236                         },
3237                         .num_parents = 1,
3238                         .flags = CLK_SET_RATE_PARENT,
3239                         .ops = &clk_branch2_ops,
3240                 },
3241         },
3242 };
3243
3244 static struct clk_branch gcc_qupv3_wrap2_s3_clk = {
3245         .halt_reg = 0x2a4e8,
3246         .halt_check = BRANCH_HALT_VOTED,
3247         .clkr = {
3248                 .enable_reg = 0x4b010,
3249                 .enable_mask = BIT(7),
3250                 .hw.init = &(const struct clk_init_data){
3251                         .name = "gcc_qupv3_wrap2_s3_clk",
3252                         .parent_hws = (const struct clk_hw*[]){
3253                                 &gcc_qupv3_wrap2_s3_clk_src.clkr.hw,
3254                         },
3255                         .num_parents = 1,
3256                         .flags = CLK_SET_RATE_PARENT,
3257                         .ops = &clk_branch2_ops,
3258                 },
3259         },
3260 };
3261
3262 static struct clk_branch gcc_qupv3_wrap2_s4_clk = {
3263         .halt_reg = 0x2a61c,
3264         .halt_check = BRANCH_HALT_VOTED,
3265         .clkr = {
3266                 .enable_reg = 0x4b010,
3267                 .enable_mask = BIT(8),
3268                 .hw.init = &(const struct clk_init_data){
3269                         .name = "gcc_qupv3_wrap2_s4_clk",
3270                         .parent_hws = (const struct clk_hw*[]){
3271                                 &gcc_qupv3_wrap2_s4_clk_src.clkr.hw,
3272                         },
3273                         .num_parents = 1,
3274                         .flags = CLK_SET_RATE_PARENT,
3275                         .ops = &clk_branch2_ops,
3276                 },
3277         },
3278 };
3279
3280 static struct clk_branch gcc_qupv3_wrap2_s5_clk = {
3281         .halt_reg = 0x2a750,
3282         .halt_check = BRANCH_HALT_VOTED,
3283         .clkr = {
3284                 .enable_reg = 0x4b010,
3285                 .enable_mask = BIT(9),
3286                 .hw.init = &(const struct clk_init_data){
3287                         .name = "gcc_qupv3_wrap2_s5_clk",
3288                         .parent_hws = (const struct clk_hw*[]){
3289                                 &gcc_qupv3_wrap2_s5_clk_src.clkr.hw,
3290                         },
3291                         .num_parents = 1,
3292                         .flags = CLK_SET_RATE_PARENT,
3293                         .ops = &clk_branch2_ops,
3294                 },
3295         },
3296 };
3297
3298 static struct clk_branch gcc_qupv3_wrap2_s6_clk = {
3299         .halt_reg = 0x2a884,
3300         .halt_check = BRANCH_HALT_VOTED,
3301         .clkr = {
3302                 .enable_reg = 0x4b018,
3303                 .enable_mask = BIT(29),
3304                 .hw.init = &(const struct clk_init_data){
3305                         .name = "gcc_qupv3_wrap2_s6_clk",
3306                         .parent_hws = (const struct clk_hw*[]){
3307                                 &gcc_qupv3_wrap2_s6_clk_src.clkr.hw,
3308                         },
3309                         .num_parents = 1,
3310                         .flags = CLK_SET_RATE_PARENT,
3311                         .ops = &clk_branch2_ops,
3312                 },
3313         },
3314 };
3315
3316 static struct clk_branch gcc_qupv3_wrap3_core_2x_clk = {
3317         .halt_reg = 0xc4018,
3318         .halt_check = BRANCH_HALT_VOTED,
3319         .clkr = {
3320                 .enable_reg = 0x4b000,
3321                 .enable_mask = BIT(24),
3322                 .hw.init = &(const struct clk_init_data){
3323                         .name = "gcc_qupv3_wrap3_core_2x_clk",
3324                         .ops = &clk_branch2_ops,
3325                 },
3326         },
3327 };
3328
3329 static struct clk_branch gcc_qupv3_wrap3_core_clk = {
3330         .halt_reg = 0xc400c,
3331         .halt_check = BRANCH_HALT_VOTED,
3332         .clkr = {
3333                 .enable_reg = 0x4b000,
3334                 .enable_mask = BIT(23),
3335                 .hw.init = &(const struct clk_init_data){
3336                         .name = "gcc_qupv3_wrap3_core_clk",
3337                         .ops = &clk_branch2_ops,
3338                 },
3339         },
3340 };
3341
3342 static struct clk_branch gcc_qupv3_wrap3_qspi_clk = {
3343         .halt_reg = 0xc4280,
3344         .halt_check = BRANCH_HALT_VOTED,
3345         .clkr = {
3346                 .enable_reg = 0x4b000,
3347                 .enable_mask = BIT(26),
3348                 .hw.init = &(const struct clk_init_data){
3349                         .name = "gcc_qupv3_wrap3_qspi_clk",
3350                         .parent_hws = (const struct clk_hw*[]){
3351                                 &gcc_qupv3_wrap3_s0_clk_src.clkr.hw,
3352                         },
3353                         .num_parents = 1,
3354                         .flags = CLK_SET_RATE_PARENT,
3355                         .ops = &clk_branch2_ops,
3356                 },
3357         },
3358 };
3359
3360 static struct clk_branch gcc_qupv3_wrap3_s0_clk = {
3361         .halt_reg = 0xc414c,
3362         .halt_check = BRANCH_HALT_VOTED,
3363         .clkr = {
3364                 .enable_reg = 0x4b000,
3365                 .enable_mask = BIT(25),
3366                 .hw.init = &(const struct clk_init_data){
3367                         .name = "gcc_qupv3_wrap3_s0_clk",
3368                         .parent_hws = (const struct clk_hw*[]){
3369                                 &gcc_qupv3_wrap3_s0_div_clk_src.clkr.hw,
3370                         },
3371                         .num_parents = 1,
3372                         .flags = CLK_SET_RATE_PARENT,
3373                         .ops = &clk_branch2_ops,
3374                 },
3375         },
3376 };
3377
3378 static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
3379         .halt_reg = 0x23004,
3380         .halt_check = BRANCH_HALT_VOTED,
3381         .hwcg_reg = 0x23004,
3382         .hwcg_bit = 1,
3383         .clkr = {
3384                 .enable_reg = 0x4b008,
3385                 .enable_mask = BIT(6),
3386                 .hw.init = &(const struct clk_init_data){
3387                         .name = "gcc_qupv3_wrap_0_m_ahb_clk",
3388                         .ops = &clk_branch2_ops,
3389                 },
3390         },
3391 };
3392
3393 static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
3394         .halt_reg = 0x23008,
3395         .halt_check = BRANCH_HALT_VOTED,
3396         .hwcg_reg = 0x23008,
3397         .hwcg_bit = 1,
3398         .clkr = {
3399                 .enable_reg = 0x4b008,
3400                 .enable_mask = BIT(7),
3401                 .hw.init = &(const struct clk_init_data){
3402                         .name = "gcc_qupv3_wrap_0_s_ahb_clk",
3403                         .ops = &clk_branch2_ops,
3404                 },
3405         },
3406 };
3407
3408 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
3409         .halt_reg = 0x24004,
3410         .halt_check = BRANCH_HALT_VOTED,
3411         .hwcg_reg = 0x24004,
3412         .hwcg_bit = 1,
3413         .clkr = {
3414                 .enable_reg = 0x4b008,
3415                 .enable_mask = BIT(20),
3416                 .hw.init = &(const struct clk_init_data){
3417                         .name = "gcc_qupv3_wrap_1_m_ahb_clk",
3418                         .ops = &clk_branch2_ops,
3419                 },
3420         },
3421 };
3422
3423 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
3424         .halt_reg = 0x24008,
3425         .halt_check = BRANCH_HALT_VOTED,
3426         .hwcg_reg = 0x24008,
3427         .hwcg_bit = 1,
3428         .clkr = {
3429                 .enable_reg = 0x4b008,
3430                 .enable_mask = BIT(21),
3431                 .hw.init = &(const struct clk_init_data){
3432                         .name = "gcc_qupv3_wrap_1_s_ahb_clk",
3433                         .ops = &clk_branch2_ops,
3434                 },
3435         },
3436 };
3437
3438 static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {
3439         .halt_reg = 0x2a004,
3440         .halt_check = BRANCH_HALT_VOTED,
3441         .hwcg_reg = 0x2a004,
3442         .hwcg_bit = 1,
3443         .clkr = {
3444                 .enable_reg = 0x4b010,
3445                 .enable_mask = BIT(2),
3446                 .hw.init = &(const struct clk_init_data){
3447                         .name = "gcc_qupv3_wrap_2_m_ahb_clk",
3448                         .ops = &clk_branch2_ops,
3449                 },
3450         },
3451 };
3452
3453 static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {
3454         .halt_reg = 0x2a008,
3455         .halt_check = BRANCH_HALT_VOTED,
3456         .hwcg_reg = 0x2a008,
3457         .hwcg_bit = 1,
3458         .clkr = {
3459                 .enable_reg = 0x4b010,
3460                 .enable_mask = BIT(1),
3461                 .hw.init = &(const struct clk_init_data){
3462                         .name = "gcc_qupv3_wrap_2_s_ahb_clk",
3463                         .ops = &clk_branch2_ops,
3464                 },
3465         },
3466 };
3467
3468 static struct clk_branch gcc_qupv3_wrap_3_m_ahb_clk = {
3469         .halt_reg = 0xc4004,
3470         .halt_check = BRANCH_HALT_VOTED,
3471         .hwcg_reg = 0xc4004,
3472         .hwcg_bit = 1,
3473         .clkr = {
3474                 .enable_reg = 0x4b000,
3475                 .enable_mask = BIT(27),
3476                 .hw.init = &(const struct clk_init_data){
3477                         .name = "gcc_qupv3_wrap_3_m_ahb_clk",
3478                         .ops = &clk_branch2_ops,
3479                 },
3480         },
3481 };
3482
3483 static struct clk_branch gcc_qupv3_wrap_3_s_ahb_clk = {
3484         .halt_reg = 0xc4008,
3485         .halt_check = BRANCH_HALT_VOTED,
3486         .hwcg_reg = 0xc4008,
3487         .hwcg_bit = 1,
3488         .clkr = {
3489                 .enable_reg = 0x4b000,
3490                 .enable_mask = BIT(20),
3491                 .hw.init = &(const struct clk_init_data){
3492                         .name = "gcc_qupv3_wrap_3_s_ahb_clk",
3493                         .ops = &clk_branch2_ops,
3494                 },
3495         },
3496 };
3497
3498 static struct clk_branch gcc_sdcc1_ahb_clk = {
3499         .halt_reg = 0x2000c,
3500         .halt_check = BRANCH_HALT,
3501         .clkr = {
3502                 .enable_reg = 0x2000c,
3503                 .enable_mask = BIT(0),
3504                 .hw.init = &(const struct clk_init_data){
3505                         .name = "gcc_sdcc1_ahb_clk",
3506                         .ops = &clk_branch2_ops,
3507                 },
3508         },
3509 };
3510
3511 static struct clk_branch gcc_sdcc1_apps_clk = {
3512         .halt_reg = 0x20004,
3513         .halt_check = BRANCH_HALT,
3514         .clkr = {
3515                 .enable_reg = 0x20004,
3516                 .enable_mask = BIT(0),
3517                 .hw.init = &(const struct clk_init_data){
3518                         .name = "gcc_sdcc1_apps_clk",
3519                         .parent_hws = (const struct clk_hw*[]){
3520                                 &gcc_sdcc1_apps_clk_src.clkr.hw,
3521                         },
3522                         .num_parents = 1,
3523                         .flags = CLK_SET_RATE_PARENT,
3524                         .ops = &clk_branch2_ops,
3525                 },
3526         },
3527 };
3528
3529 static struct clk_branch gcc_sdcc1_ice_core_clk = {
3530         .halt_reg = 0x20044,
3531         .halt_check = BRANCH_HALT_VOTED,
3532         .hwcg_reg = 0x20044,
3533         .hwcg_bit = 1,
3534         .clkr = {
3535                 .enable_reg = 0x20044,
3536                 .enable_mask = BIT(0),
3537                 .hw.init = &(const struct clk_init_data){
3538                         .name = "gcc_sdcc1_ice_core_clk",
3539                         .parent_hws = (const struct clk_hw*[]){
3540                                 &gcc_sdcc1_ice_core_clk_src.clkr.hw,
3541                         },
3542                         .num_parents = 1,
3543                         .flags = CLK_SET_RATE_PARENT,
3544                         .ops = &clk_branch2_ops,
3545                 },
3546         },
3547 };
3548
3549 static struct clk_branch gcc_sgmi_clkref_en = {
3550         .halt_reg = 0x9c034,
3551         .halt_check = BRANCH_HALT_DELAY,
3552         .clkr = {
3553                 .enable_reg = 0x9c034,
3554                 .enable_mask = BIT(0),
3555                 .hw.init = &(const struct clk_init_data){
3556                         .name = "gcc_sgmi_clkref_en",
3557                         .ops = &clk_branch2_ops,
3558                 },
3559         },
3560 };
3561
3562 static struct clk_branch gcc_tscss_ahb_clk = {
3563         .halt_reg = 0x21024,
3564         .halt_check = BRANCH_HALT,
3565         .clkr = {
3566                 .enable_reg = 0x21024,
3567                 .enable_mask = BIT(0),
3568                 .hw.init = &(const struct clk_init_data){
3569                         .name = "gcc_tscss_ahb_clk",
3570                         .ops = &clk_branch2_ops,
3571                 },
3572         },
3573 };
3574
3575 static struct clk_branch gcc_tscss_etu_clk = {
3576         .halt_reg = 0x21020,
3577         .halt_check = BRANCH_HALT,
3578         .clkr = {
3579                 .enable_reg = 0x21020,
3580                 .enable_mask = BIT(0),
3581                 .hw.init = &(const struct clk_init_data){
3582                         .name = "gcc_tscss_etu_clk",
3583                         .ops = &clk_branch2_ops,
3584                 },
3585         },
3586 };
3587
3588 static struct clk_branch gcc_tscss_global_cntr_clk = {
3589         .halt_reg = 0x21004,
3590         .halt_check = BRANCH_HALT_VOTED,
3591         .clkr = {
3592                 .enable_reg = 0x21004,
3593                 .enable_mask = BIT(0),
3594                 .hw.init = &(const struct clk_init_data){
3595                         .name = "gcc_tscss_global_cntr_clk",
3596                         .parent_hws = (const struct clk_hw*[]){
3597                                 &gcc_tscss_cntr_clk_src.clkr.hw,
3598                         },
3599                         .num_parents = 1,
3600                         .flags = CLK_SET_RATE_PARENT,
3601                         .ops = &clk_branch2_ops,
3602                 },
3603         },
3604 };
3605
3606 static struct clk_branch gcc_ufs_card_ahb_clk = {
3607         .halt_reg = 0x81020,
3608         .halt_check = BRANCH_HALT_VOTED,
3609         .hwcg_reg = 0x81020,
3610         .hwcg_bit = 1,
3611         .clkr = {
3612                 .enable_reg = 0x81020,
3613                 .enable_mask = BIT(0),
3614                 .hw.init = &(const struct clk_init_data){
3615                         .name = "gcc_ufs_card_ahb_clk",
3616                         .ops = &clk_branch2_ops,
3617                 },
3618         },
3619 };
3620
3621 static struct clk_branch gcc_ufs_card_axi_clk = {
3622         .halt_reg = 0x81018,
3623         .halt_check = BRANCH_HALT_VOTED,
3624         .hwcg_reg = 0x81018,
3625         .hwcg_bit = 1,
3626         .clkr = {
3627                 .enable_reg = 0x81018,
3628                 .enable_mask = BIT(0),
3629                 .hw.init = &(const struct clk_init_data){
3630                         .name = "gcc_ufs_card_axi_clk",
3631                         .parent_hws = (const struct clk_hw*[]){
3632                                 &gcc_ufs_card_axi_clk_src.clkr.hw,
3633                         },
3634                         .num_parents = 1,
3635                         .flags = CLK_SET_RATE_PARENT,
3636                         .ops = &clk_branch2_ops,
3637                 },
3638         },
3639 };
3640
3641 static struct clk_branch gcc_ufs_card_ice_core_clk = {
3642         .halt_reg = 0x8106c,
3643         .halt_check = BRANCH_HALT_VOTED,
3644         .hwcg_reg = 0x8106c,
3645         .hwcg_bit = 1,
3646         .clkr = {
3647                 .enable_reg = 0x8106c,
3648                 .enable_mask = BIT(0),
3649                 .hw.init = &(const struct clk_init_data){
3650                         .name = "gcc_ufs_card_ice_core_clk",
3651                         .parent_hws = (const struct clk_hw*[]){
3652                                 &gcc_ufs_card_ice_core_clk_src.clkr.hw,
3653                         },
3654                         .num_parents = 1,
3655                         .flags = CLK_SET_RATE_PARENT,
3656                         .ops = &clk_branch2_ops,
3657                 },
3658         },
3659 };
3660
3661 static struct clk_branch gcc_ufs_card_phy_aux_clk = {
3662         .halt_reg = 0x810a4,
3663         .halt_check = BRANCH_HALT_VOTED,
3664         .hwcg_reg = 0x810a4,
3665         .hwcg_bit = 1,
3666         .clkr = {
3667                 .enable_reg = 0x810a4,
3668                 .enable_mask = BIT(0),
3669                 .hw.init = &(const struct clk_init_data){
3670                         .name = "gcc_ufs_card_phy_aux_clk",
3671                         .parent_hws = (const struct clk_hw*[]){
3672                                 &gcc_ufs_card_phy_aux_clk_src.clkr.hw,
3673                         },
3674                         .num_parents = 1,
3675                         .flags = CLK_SET_RATE_PARENT,
3676                         .ops = &clk_branch2_ops,
3677                 },
3678         },
3679 };
3680
3681 static struct clk_branch gcc_ufs_card_rx_symbol_0_clk = {
3682         .halt_reg = 0x81028,
3683         .halt_check = BRANCH_HALT_DELAY,
3684         .clkr = {
3685                 .enable_reg = 0x81028,
3686                 .enable_mask = BIT(0),
3687                 .hw.init = &(const struct clk_init_data){
3688                         .name = "gcc_ufs_card_rx_symbol_0_clk",
3689                         .parent_hws = (const struct clk_hw*[]){
3690                                 &gcc_ufs_card_rx_symbol_0_clk_src.clkr.hw,
3691                         },
3692                         .num_parents = 1,
3693                         .flags = CLK_SET_RATE_PARENT,
3694                         .ops = &clk_branch2_ops,
3695                 },
3696         },
3697 };
3698
3699 static struct clk_branch gcc_ufs_card_rx_symbol_1_clk = {
3700         .halt_reg = 0x810c0,
3701         .halt_check = BRANCH_HALT_DELAY,
3702         .clkr = {
3703                 .enable_reg = 0x810c0,
3704                 .enable_mask = BIT(0),
3705                 .hw.init = &(const struct clk_init_data){
3706                         .name = "gcc_ufs_card_rx_symbol_1_clk",
3707                         .parent_hws = (const struct clk_hw*[]){
3708                                 &gcc_ufs_card_rx_symbol_1_clk_src.clkr.hw,
3709                         },
3710                         .num_parents = 1,
3711                         .flags = CLK_SET_RATE_PARENT,
3712                         .ops = &clk_branch2_ops,
3713                 },
3714         },
3715 };
3716
3717 static struct clk_branch gcc_ufs_card_tx_symbol_0_clk = {
3718         .halt_reg = 0x81024,
3719         .halt_check = BRANCH_HALT_DELAY,
3720         .clkr = {
3721                 .enable_reg = 0x81024,
3722                 .enable_mask = BIT(0),
3723                 .hw.init = &(const struct clk_init_data){
3724                         .name = "gcc_ufs_card_tx_symbol_0_clk",
3725                         .parent_hws = (const struct clk_hw*[]){
3726                                 &gcc_ufs_card_tx_symbol_0_clk_src.clkr.hw,
3727                         },
3728                         .num_parents = 1,
3729                         .flags = CLK_SET_RATE_PARENT,
3730                         .ops = &clk_branch2_ops,
3731                 },
3732         },
3733 };
3734
3735 static struct clk_branch gcc_ufs_card_unipro_core_clk = {
3736         .halt_reg = 0x81064,
3737         .halt_check = BRANCH_HALT_VOTED,
3738         .hwcg_reg = 0x81064,
3739         .hwcg_bit = 1,
3740         .clkr = {
3741                 .enable_reg = 0x81064,
3742                 .enable_mask = BIT(0),
3743                 .hw.init = &(const struct clk_init_data){
3744                         .name = "gcc_ufs_card_unipro_core_clk",
3745                         .parent_hws = (const struct clk_hw*[]){
3746                                 &gcc_ufs_card_unipro_core_clk_src.clkr.hw,
3747                         },
3748                         .num_parents = 1,
3749                         .flags = CLK_SET_RATE_PARENT,
3750                         .ops = &clk_branch2_ops,
3751                 },
3752         },
3753 };
3754
3755 static struct clk_branch gcc_ufs_phy_ahb_clk = {
3756         .halt_reg = 0x83020,
3757         .halt_check = BRANCH_HALT_VOTED,
3758         .hwcg_reg = 0x83020,
3759         .hwcg_bit = 1,
3760         .clkr = {
3761                 .enable_reg = 0x83020,
3762                 .enable_mask = BIT(0),
3763                 .hw.init = &(const struct clk_init_data){
3764                         .name = "gcc_ufs_phy_ahb_clk",
3765                         .ops = &clk_branch2_ops,
3766                 },
3767         },
3768 };
3769
3770 static struct clk_branch gcc_ufs_phy_axi_clk = {
3771         .halt_reg = 0x83018,
3772         .halt_check = BRANCH_HALT_VOTED,
3773         .hwcg_reg = 0x83018,
3774         .hwcg_bit = 1,
3775         .clkr = {
3776                 .enable_reg = 0x83018,
3777                 .enable_mask = BIT(0),
3778                 .hw.init = &(const struct clk_init_data){
3779                         .name = "gcc_ufs_phy_axi_clk",
3780                         .parent_hws = (const struct clk_hw*[]){
3781                                 &gcc_ufs_phy_axi_clk_src.clkr.hw,
3782                         },
3783                         .num_parents = 1,
3784                         .flags = CLK_SET_RATE_PARENT,
3785                         .ops = &clk_branch2_ops,
3786                 },
3787         },
3788 };
3789
3790 static struct clk_branch gcc_ufs_phy_ice_core_clk = {
3791         .halt_reg = 0x8306c,
3792         .halt_check = BRANCH_HALT_VOTED,
3793         .hwcg_reg = 0x8306c,
3794         .hwcg_bit = 1,
3795         .clkr = {
3796                 .enable_reg = 0x8306c,
3797                 .enable_mask = BIT(0),
3798                 .hw.init = &(const struct clk_init_data){
3799                         .name = "gcc_ufs_phy_ice_core_clk",
3800                         .parent_hws = (const struct clk_hw*[]){
3801                                 &gcc_ufs_phy_ice_core_clk_src.clkr.hw,
3802                         },
3803                         .num_parents = 1,
3804                         .flags = CLK_SET_RATE_PARENT,
3805                         .ops = &clk_branch2_ops,
3806                 },
3807         },
3808 };
3809
3810 static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
3811         .halt_reg = 0x830a4,
3812         .halt_check = BRANCH_HALT_VOTED,
3813         .hwcg_reg = 0x830a4,
3814         .hwcg_bit = 1,
3815         .clkr = {
3816                 .enable_reg = 0x830a4,
3817                 .enable_mask = BIT(0),
3818                 .hw.init = &(const struct clk_init_data){
3819                         .name = "gcc_ufs_phy_phy_aux_clk",
3820                         .parent_hws = (const struct clk_hw*[]){
3821                                 &gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
3822                         },
3823                         .num_parents = 1,
3824                         .flags = CLK_SET_RATE_PARENT,
3825                         .ops = &clk_branch2_ops,
3826                 },
3827         },
3828 };
3829
3830 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
3831         .halt_reg = 0x83028,
3832         .halt_check = BRANCH_HALT_DELAY,
3833         .clkr = {
3834                 .enable_reg = 0x83028,
3835                 .enable_mask = BIT(0),
3836                 .hw.init = &(const struct clk_init_data){
3837                         .name = "gcc_ufs_phy_rx_symbol_0_clk",
3838                         .parent_hws = (const struct clk_hw*[]){
3839                                 &gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw,
3840                         },
3841                         .num_parents = 1,
3842                         .flags = CLK_SET_RATE_PARENT,
3843                         .ops = &clk_branch2_ops,
3844                 },
3845         },
3846 };
3847
3848 static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
3849         .halt_reg = 0x830c0,
3850         .halt_check = BRANCH_HALT_DELAY,
3851         .clkr = {
3852                 .enable_reg = 0x830c0,
3853                 .enable_mask = BIT(0),
3854                 .hw.init = &(const struct clk_init_data){
3855                         .name = "gcc_ufs_phy_rx_symbol_1_clk",
3856                         .parent_hws = (const struct clk_hw*[]){
3857                                 &gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw,
3858                         },
3859                         .num_parents = 1,
3860                         .flags = CLK_SET_RATE_PARENT,
3861                         .ops = &clk_branch2_ops,
3862                 },
3863         },
3864 };
3865
3866 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
3867         .halt_reg = 0x83024,
3868         .halt_check = BRANCH_HALT_DELAY,
3869         .clkr = {
3870                 .enable_reg = 0x83024,
3871                 .enable_mask = BIT(0),
3872                 .hw.init = &(const struct clk_init_data){
3873                         .name = "gcc_ufs_phy_tx_symbol_0_clk",
3874                         .parent_hws = (const struct clk_hw*[]){
3875                                 &gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw,
3876                         },
3877                         .num_parents = 1,
3878                         .flags = CLK_SET_RATE_PARENT,
3879                         .ops = &clk_branch2_ops,
3880                 },
3881         },
3882 };
3883
3884 static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
3885         .halt_reg = 0x83064,
3886         .halt_check = BRANCH_HALT_VOTED,
3887         .hwcg_reg = 0x83064,
3888         .hwcg_bit = 1,
3889         .clkr = {
3890                 .enable_reg = 0x83064,
3891                 .enable_mask = BIT(0),
3892                 .hw.init = &(const struct clk_init_data){
3893                         .name = "gcc_ufs_phy_unipro_core_clk",
3894                         .parent_hws = (const struct clk_hw*[]){
3895                                 &gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
3896                         },
3897                         .num_parents = 1,
3898                         .flags = CLK_SET_RATE_PARENT,
3899                         .ops = &clk_branch2_ops,
3900                 },
3901         },
3902 };
3903
3904 static struct clk_branch gcc_usb20_master_clk = {
3905         .halt_reg = 0x1c018,
3906         .halt_check = BRANCH_HALT,
3907         .clkr = {
3908                 .enable_reg = 0x1c018,
3909                 .enable_mask = BIT(0),
3910                 .hw.init = &(const struct clk_init_data){
3911                         .name = "gcc_usb20_master_clk",
3912                         .parent_hws = (const struct clk_hw*[]){
3913                                 &gcc_usb20_master_clk_src.clkr.hw,
3914                         },
3915                         .num_parents = 1,
3916                         .flags = CLK_SET_RATE_PARENT,
3917                         .ops = &clk_branch2_ops,
3918                 },
3919         },
3920 };
3921
3922 static struct clk_branch gcc_usb20_mock_utmi_clk = {
3923         .halt_reg = 0x1c024,
3924         .halt_check = BRANCH_HALT,
3925         .clkr = {
3926                 .enable_reg = 0x1c024,
3927                 .enable_mask = BIT(0),
3928                 .hw.init = &(const struct clk_init_data){
3929                         .name = "gcc_usb20_mock_utmi_clk",
3930                         .parent_hws = (const struct clk_hw*[]){
3931                                 &gcc_usb20_mock_utmi_postdiv_clk_src.clkr.hw,
3932                         },
3933                         .num_parents = 1,
3934                         .flags = CLK_SET_RATE_PARENT,
3935                         .ops = &clk_branch2_ops,
3936                 },
3937         },
3938 };
3939
3940 static struct clk_branch gcc_usb20_sleep_clk = {
3941         .halt_reg = 0x1c020,
3942         .halt_check = BRANCH_HALT,
3943         .clkr = {
3944                 .enable_reg = 0x1c020,
3945                 .enable_mask = BIT(0),
3946                 .hw.init = &(const struct clk_init_data){
3947                         .name = "gcc_usb20_sleep_clk",
3948                         .ops = &clk_branch2_ops,
3949                 },
3950         },
3951 };
3952
3953 static struct clk_branch gcc_usb30_prim_master_clk = {
3954         .halt_reg = 0x1b018,
3955         .halt_check = BRANCH_HALT,
3956         .clkr = {
3957                 .enable_reg = 0x1b018,
3958                 .enable_mask = BIT(0),
3959                 .hw.init = &(const struct clk_init_data){
3960                         .name = "gcc_usb30_prim_master_clk",
3961                         .parent_hws = (const struct clk_hw*[]){
3962                                 &gcc_usb30_prim_master_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_usb30_prim_mock_utmi_clk = {
3972         .halt_reg = 0x1b024,
3973         .halt_check = BRANCH_HALT,
3974         .clkr = {
3975                 .enable_reg = 0x1b024,
3976                 .enable_mask = BIT(0),
3977                 .hw.init = &(const struct clk_init_data){
3978                         .name = "gcc_usb30_prim_mock_utmi_clk",
3979                         .parent_hws = (const struct clk_hw*[]){
3980                                 &gcc_usb30_prim_mock_utmi_postdiv_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_usb30_prim_sleep_clk = {
3990         .halt_reg = 0x1b020,
3991         .halt_check = BRANCH_HALT,
3992         .clkr = {
3993                 .enable_reg = 0x1b020,
3994                 .enable_mask = BIT(0),
3995                 .hw.init = &(const struct clk_init_data){
3996                         .name = "gcc_usb30_prim_sleep_clk",
3997                         .ops = &clk_branch2_ops,
3998                 },
3999         },
4000 };
4001
4002 static struct clk_branch gcc_usb30_sec_master_clk = {
4003         .halt_reg = 0x2f018,
4004         .halt_check = BRANCH_HALT,
4005         .clkr = {
4006                 .enable_reg = 0x2f018,
4007                 .enable_mask = BIT(0),
4008                 .hw.init = &(const struct clk_init_data){
4009                         .name = "gcc_usb30_sec_master_clk",
4010                         .parent_hws = (const struct clk_hw*[]){
4011                                 &gcc_usb30_sec_master_clk_src.clkr.hw,
4012                         },
4013                         .num_parents = 1,
4014                         .flags = CLK_SET_RATE_PARENT,
4015                         .ops = &clk_branch2_ops,
4016                 },
4017         },
4018 };
4019
4020 static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {
4021         .halt_reg = 0x2f024,
4022         .halt_check = BRANCH_HALT,
4023         .clkr = {
4024                 .enable_reg = 0x2f024,
4025                 .enable_mask = BIT(0),
4026                 .hw.init = &(const struct clk_init_data){
4027                         .name = "gcc_usb30_sec_mock_utmi_clk",
4028                         .parent_hws = (const struct clk_hw*[]){
4029                                 &gcc_usb30_sec_mock_utmi_postdiv_clk_src.clkr.hw,
4030                         },
4031                         .num_parents = 1,
4032                         .flags = CLK_SET_RATE_PARENT,
4033                         .ops = &clk_branch2_ops,
4034                 },
4035         },
4036 };
4037
4038 static struct clk_branch gcc_usb30_sec_sleep_clk = {
4039         .halt_reg = 0x2f020,
4040         .halt_check = BRANCH_HALT,
4041         .clkr = {
4042                 .enable_reg = 0x2f020,
4043                 .enable_mask = BIT(0),
4044                 .hw.init = &(const struct clk_init_data){
4045                         .name = "gcc_usb30_sec_sleep_clk",
4046                         .ops = &clk_branch2_ops,
4047                 },
4048         },
4049 };
4050
4051 static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
4052         .halt_reg = 0x1b05c,
4053         .halt_check = BRANCH_HALT,
4054         .clkr = {
4055                 .enable_reg = 0x1b05c,
4056                 .enable_mask = BIT(0),
4057                 .hw.init = &(const struct clk_init_data){
4058                         .name = "gcc_usb3_prim_phy_aux_clk",
4059                         .parent_hws = (const struct clk_hw*[]){
4060                                 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
4061                         },
4062                         .num_parents = 1,
4063                         .flags = CLK_SET_RATE_PARENT,
4064                         .ops = &clk_branch2_ops,
4065                 },
4066         },
4067 };
4068
4069 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
4070         .halt_reg = 0x1b060,
4071         .halt_check = BRANCH_HALT,
4072         .clkr = {
4073                 .enable_reg = 0x1b060,
4074                 .enable_mask = BIT(0),
4075                 .hw.init = &(const struct clk_init_data){
4076                         .name = "gcc_usb3_prim_phy_com_aux_clk",
4077                         .parent_hws = (const struct clk_hw*[]){
4078                                 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
4079                         },
4080                         .num_parents = 1,
4081                         .flags = CLK_SET_RATE_PARENT,
4082                         .ops = &clk_branch2_ops,
4083                 },
4084         },
4085 };
4086
4087 static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
4088         .halt_reg = 0x1b064,
4089         .halt_check = BRANCH_HALT_DELAY,
4090         .hwcg_reg = 0x1b064,
4091         .hwcg_bit = 1,
4092         .clkr = {
4093                 .enable_reg = 0x1b064,
4094                 .enable_mask = BIT(0),
4095                 .hw.init = &(const struct clk_init_data){
4096                         .name = "gcc_usb3_prim_phy_pipe_clk",
4097                         .parent_hws = (const struct clk_hw*[]){
4098                                 &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw,
4099                         },
4100                         .num_parents = 1,
4101                         .flags = CLK_SET_RATE_PARENT,
4102                         .ops = &clk_branch2_ops,
4103                 },
4104         },
4105 };
4106
4107 static struct clk_branch gcc_usb3_sec_phy_aux_clk = {
4108         .halt_reg = 0x2f05c,
4109         .halt_check = BRANCH_HALT,
4110         .clkr = {
4111                 .enable_reg = 0x2f05c,
4112                 .enable_mask = BIT(0),
4113                 .hw.init = &(const struct clk_init_data){
4114                         .name = "gcc_usb3_sec_phy_aux_clk",
4115                         .parent_hws = (const struct clk_hw*[]){
4116                                 &gcc_usb3_sec_phy_aux_clk_src.clkr.hw,
4117                         },
4118                         .num_parents = 1,
4119                         .flags = CLK_SET_RATE_PARENT,
4120                         .ops = &clk_branch2_ops,
4121                 },
4122         },
4123 };
4124
4125 static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = {
4126         .halt_reg = 0x2f060,
4127         .halt_check = BRANCH_HALT,
4128         .clkr = {
4129                 .enable_reg = 0x2f060,
4130                 .enable_mask = BIT(0),
4131                 .hw.init = &(const struct clk_init_data){
4132                         .name = "gcc_usb3_sec_phy_com_aux_clk",
4133                         .parent_hws = (const struct clk_hw*[]){
4134                                 &gcc_usb3_sec_phy_aux_clk_src.clkr.hw,
4135                         },
4136                         .num_parents = 1,
4137                         .flags = CLK_SET_RATE_PARENT,
4138                         .ops = &clk_branch2_ops,
4139                 },
4140         },
4141 };
4142
4143 static struct clk_branch gcc_usb3_sec_phy_pipe_clk = {
4144         .halt_reg = 0x2f064,
4145         .halt_check = BRANCH_HALT_DELAY,
4146         .clkr = {
4147                 .enable_reg = 0x2f064,
4148                 .enable_mask = BIT(0),
4149                 .hw.init = &(const struct clk_init_data){
4150                         .name = "gcc_usb3_sec_phy_pipe_clk",
4151                         .parent_hws = (const struct clk_hw*[]){
4152                                 &gcc_usb3_sec_phy_pipe_clk_src.clkr.hw,
4153                         },
4154                         .num_parents = 1,
4155                         .flags = CLK_SET_RATE_PARENT,
4156                         .ops = &clk_branch2_ops,
4157                 },
4158         },
4159 };
4160
4161 static struct clk_branch gcc_usb_clkref_en = {
4162         .halt_reg = 0x97468,
4163         .halt_check = BRANCH_HALT_DELAY,
4164         .clkr = {
4165                 .enable_reg = 0x97468,
4166                 .enable_mask = BIT(0),
4167                 .hw.init = &(const struct clk_init_data){
4168                         .name = "gcc_usb_clkref_en",
4169                         .ops = &clk_branch2_ops,
4170                 },
4171         },
4172 };
4173
4174 static struct clk_branch gcc_video_axi0_clk = {
4175         .halt_reg = 0x34014,
4176         .halt_check = BRANCH_HALT_VOTED,
4177         .hwcg_reg = 0x34014,
4178         .hwcg_bit = 1,
4179         .clkr = {
4180                 .enable_reg = 0x34014,
4181                 .enable_mask = BIT(0),
4182                 .hw.init = &(const struct clk_init_data){
4183                         .name = "gcc_video_axi0_clk",
4184                         .ops = &clk_branch2_ops,
4185                 },
4186         },
4187 };
4188
4189 static struct clk_branch gcc_video_axi1_clk = {
4190         .halt_reg = 0x3401c,
4191         .halt_check = BRANCH_HALT_VOTED,
4192         .hwcg_reg = 0x3401c,
4193         .hwcg_bit = 1,
4194         .clkr = {
4195                 .enable_reg = 0x3401c,
4196                 .enable_mask = BIT(0),
4197                 .hw.init = &(const struct clk_init_data){
4198                         .name = "gcc_video_axi1_clk",
4199                         .ops = &clk_branch2_ops,
4200                 },
4201         },
4202 };
4203
4204 static struct gdsc pcie_0_gdsc = {
4205         .gdscr = 0xa9004,
4206         .collapse_ctrl = 0x4b104,
4207         .collapse_mask = BIT(0),
4208         .en_rest_wait_val = 0x2,
4209         .en_few_wait_val = 0x2,
4210         .clk_dis_wait_val = 0xf,
4211         .pd = {
4212                 .name = "pcie_0_gdsc",
4213         },
4214         .pwrsts = PWRSTS_OFF_ON,
4215         .flags = VOTABLE | RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
4216 };
4217
4218 static struct gdsc pcie_1_gdsc = {
4219         .gdscr = 0x77004,
4220         .collapse_ctrl = 0x4b104,
4221         .collapse_mask = BIT(1),
4222         .en_rest_wait_val = 0x2,
4223         .en_few_wait_val = 0x2,
4224         .clk_dis_wait_val = 0xf,
4225         .pd = {
4226                 .name = "pcie_1_gdsc",
4227         },
4228         .pwrsts = PWRSTS_OFF_ON,
4229         .flags = VOTABLE | RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
4230 };
4231
4232 static struct gdsc ufs_card_gdsc = {
4233         .gdscr = 0x81004,
4234         .en_rest_wait_val = 0x2,
4235         .en_few_wait_val = 0x2,
4236         .clk_dis_wait_val = 0xf,
4237         .pd = {
4238                 .name = "ufs_card_gdsc",
4239         },
4240         .pwrsts = PWRSTS_OFF_ON,
4241         .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
4242 };
4243
4244 static struct gdsc ufs_phy_gdsc = {
4245         .gdscr = 0x83004,
4246         .en_rest_wait_val = 0x2,
4247         .en_few_wait_val = 0x2,
4248         .clk_dis_wait_val = 0xf,
4249         .pd = {
4250                 .name = "ufs_phy_gdsc",
4251         },
4252         .pwrsts = PWRSTS_OFF_ON,
4253         .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
4254 };
4255
4256 static struct gdsc usb20_prim_gdsc = {
4257         .gdscr = 0x1c004,
4258         .en_rest_wait_val = 0x2,
4259         .en_few_wait_val = 0x2,
4260         .clk_dis_wait_val = 0xf,
4261         .pd = {
4262                 .name = "usb20_prim_gdsc",
4263         },
4264         .pwrsts = PWRSTS_OFF_ON,
4265         .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
4266 };
4267
4268 static struct gdsc usb30_prim_gdsc = {
4269         .gdscr = 0x1b004,
4270         .en_rest_wait_val = 0x2,
4271         .en_few_wait_val = 0x2,
4272         .clk_dis_wait_val = 0xf,
4273         .pd = {
4274                 .name = "usb30_prim_gdsc",
4275         },
4276         .pwrsts = PWRSTS_OFF_ON,
4277         .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
4278 };
4279
4280 static struct gdsc usb30_sec_gdsc = {
4281         .gdscr = 0x2f004,
4282         .en_rest_wait_val = 0x2,
4283         .en_few_wait_val = 0x2,
4284         .clk_dis_wait_val = 0xf,
4285         .pd = {
4286                 .name = "usb30_sec_gdsc",
4287         },
4288         .pwrsts = PWRSTS_OFF_ON,
4289         .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
4290 };
4291
4292 static struct gdsc emac0_gdsc = {
4293         .gdscr = 0xb6004,
4294         .en_rest_wait_val = 0x2,
4295         .en_few_wait_val = 0x2,
4296         .clk_dis_wait_val = 0xf,
4297         .pd = {
4298                 .name = "emac0_gdsc",
4299         },
4300         .pwrsts = PWRSTS_OFF_ON,
4301         .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
4302 };
4303
4304 static struct gdsc emac1_gdsc = {
4305         .gdscr = 0xb4004,
4306         .en_rest_wait_val = 0x2,
4307         .en_few_wait_val = 0x2,
4308         .clk_dis_wait_val = 0xf,
4309         .pd = {
4310                 .name = "emac1_gdsc",
4311         },
4312         .pwrsts = PWRSTS_OFF_ON,
4313         .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
4314 };
4315
4316 static struct clk_regmap *gcc_sa8775p_clocks[] = {
4317         [GCC_AGGRE_NOC_QUPV3_AXI_CLK] = &gcc_aggre_noc_qupv3_axi_clk.clkr,
4318         [GCC_AGGRE_UFS_CARD_AXI_CLK] = &gcc_aggre_ufs_card_axi_clk.clkr,
4319         [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
4320         [GCC_AGGRE_USB2_PRIM_AXI_CLK] = &gcc_aggre_usb2_prim_axi_clk.clkr,
4321         [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
4322         [GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr,
4323         [GCC_AHB2PHY0_CLK] = &gcc_ahb2phy0_clk.clkr,
4324         [GCC_AHB2PHY2_CLK] = &gcc_ahb2phy2_clk.clkr,
4325         [GCC_AHB2PHY3_CLK] = &gcc_ahb2phy3_clk.clkr,
4326         [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
4327         [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
4328         [GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
4329         [GCC_CAMERA_THROTTLE_XO_CLK] = &gcc_camera_throttle_xo_clk.clkr,
4330         [GCC_CFG_NOC_USB2_PRIM_AXI_CLK] = &gcc_cfg_noc_usb2_prim_axi_clk.clkr,
4331         [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
4332         [GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr,
4333         [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
4334         [GCC_DISP1_HF_AXI_CLK] = &gcc_disp1_hf_axi_clk.clkr,
4335         [GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
4336         [GCC_EDP_REF_CLKREF_EN] = &gcc_edp_ref_clkref_en.clkr,
4337         [GCC_EMAC0_AXI_CLK] = &gcc_emac0_axi_clk.clkr,
4338         [GCC_EMAC0_PHY_AUX_CLK] = &gcc_emac0_phy_aux_clk.clkr,
4339         [GCC_EMAC0_PHY_AUX_CLK_SRC] = &gcc_emac0_phy_aux_clk_src.clkr,
4340         [GCC_EMAC0_PTP_CLK] = &gcc_emac0_ptp_clk.clkr,
4341         [GCC_EMAC0_PTP_CLK_SRC] = &gcc_emac0_ptp_clk_src.clkr,
4342         [GCC_EMAC0_RGMII_CLK] = &gcc_emac0_rgmii_clk.clkr,
4343         [GCC_EMAC0_RGMII_CLK_SRC] = &gcc_emac0_rgmii_clk_src.clkr,
4344         [GCC_EMAC0_SLV_AHB_CLK] = &gcc_emac0_slv_ahb_clk.clkr,
4345         [GCC_EMAC1_AXI_CLK] = &gcc_emac1_axi_clk.clkr,
4346         [GCC_EMAC1_PHY_AUX_CLK] = &gcc_emac1_phy_aux_clk.clkr,
4347         [GCC_EMAC1_PHY_AUX_CLK_SRC] = &gcc_emac1_phy_aux_clk_src.clkr,
4348         [GCC_EMAC1_PTP_CLK] = &gcc_emac1_ptp_clk.clkr,
4349         [GCC_EMAC1_PTP_CLK_SRC] = &gcc_emac1_ptp_clk_src.clkr,
4350         [GCC_EMAC1_RGMII_CLK] = &gcc_emac1_rgmii_clk.clkr,
4351         [GCC_EMAC1_RGMII_CLK_SRC] = &gcc_emac1_rgmii_clk_src.clkr,
4352         [GCC_EMAC1_SLV_AHB_CLK] = &gcc_emac1_slv_ahb_clk.clkr,
4353         [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
4354         [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
4355         [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
4356         [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
4357         [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
4358         [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
4359         [GCC_GP4_CLK] = &gcc_gp4_clk.clkr,
4360         [GCC_GP4_CLK_SRC] = &gcc_gp4_clk_src.clkr,
4361         [GCC_GP5_CLK] = &gcc_gp5_clk.clkr,
4362         [GCC_GP5_CLK_SRC] = &gcc_gp5_clk_src.clkr,
4363         [GCC_GPLL0] = &gcc_gpll0.clkr,
4364         [GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr,
4365         [GCC_GPLL1] = &gcc_gpll1.clkr,
4366         [GCC_GPLL4] = &gcc_gpll4.clkr,
4367         [GCC_GPLL5] = &gcc_gpll5.clkr,
4368         [GCC_GPLL7] = &gcc_gpll7.clkr,
4369         [GCC_GPLL9] = &gcc_gpll9.clkr,
4370         [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
4371         [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
4372         [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
4373         [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
4374         [GCC_GPU_TCU_THROTTLE_AHB_CLK] = &gcc_gpu_tcu_throttle_ahb_clk.clkr,
4375         [GCC_GPU_TCU_THROTTLE_CLK] = &gcc_gpu_tcu_throttle_clk.clkr,
4376         [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
4377         [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
4378         [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
4379         [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
4380         [GCC_PCIE_0_PHY_AUX_CLK] = &gcc_pcie_0_phy_aux_clk.clkr,
4381         [GCC_PCIE_0_PHY_AUX_CLK_SRC] = &gcc_pcie_0_phy_aux_clk_src.clkr,
4382         [GCC_PCIE_0_PHY_RCHNG_CLK] = &gcc_pcie_0_phy_rchng_clk.clkr,
4383         [GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr,
4384         [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
4385         [GCC_PCIE_0_PIPE_CLK_SRC] = &gcc_pcie_0_pipe_clk_src.clkr,
4386         [GCC_PCIE_0_PIPE_DIV_CLK_SRC] = &gcc_pcie_0_pipe_div_clk_src.clkr,
4387         [GCC_PCIE_0_PIPEDIV2_CLK] = &gcc_pcie_0_pipediv2_clk.clkr,
4388         [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
4389         [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
4390         [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
4391         [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
4392         [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
4393         [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
4394         [GCC_PCIE_1_PHY_AUX_CLK] = &gcc_pcie_1_phy_aux_clk.clkr,
4395         [GCC_PCIE_1_PHY_AUX_CLK_SRC] = &gcc_pcie_1_phy_aux_clk_src.clkr,
4396         [GCC_PCIE_1_PHY_RCHNG_CLK] = &gcc_pcie_1_phy_rchng_clk.clkr,
4397         [GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr,
4398         [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
4399         [GCC_PCIE_1_PIPE_CLK_SRC] = &gcc_pcie_1_pipe_clk_src.clkr,
4400         [GCC_PCIE_1_PIPE_DIV_CLK_SRC] = &gcc_pcie_1_pipe_div_clk_src.clkr,
4401         [GCC_PCIE_1_PIPEDIV2_CLK] = &gcc_pcie_1_pipediv2_clk.clkr,
4402         [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
4403         [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
4404         [GCC_PCIE_CLKREF_EN] = &gcc_pcie_clkref_en.clkr,
4405         [GCC_PCIE_THROTTLE_CFG_CLK] = &gcc_pcie_throttle_cfg_clk.clkr,
4406         [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
4407         [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
4408         [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
4409         [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
4410         [GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
4411         [GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
4412         [GCC_QMIP_DISP1_AHB_CLK] = &gcc_qmip_disp1_ahb_clk.clkr,
4413         [GCC_QMIP_DISP1_ROT_AHB_CLK] = &gcc_qmip_disp1_rot_ahb_clk.clkr,
4414         [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
4415         [GCC_QMIP_DISP_ROT_AHB_CLK] = &gcc_qmip_disp_rot_ahb_clk.clkr,
4416         [GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,
4417         [GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
4418         [GCC_QMIP_VIDEO_VCPU_AHB_CLK] = &gcc_qmip_video_vcpu_ahb_clk.clkr,
4419         [GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,
4420         [GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,
4421         [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
4422         [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
4423         [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
4424         [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
4425         [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
4426         [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
4427         [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
4428         [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
4429         [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
4430         [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
4431         [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
4432         [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
4433         [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
4434         [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
4435         [GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
4436         [GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
4437         [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
4438         [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
4439         [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
4440         [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
4441         [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
4442         [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
4443         [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
4444         [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
4445         [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
4446         [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
4447         [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
4448         [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
4449         [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,
4450         [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,
4451         [GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr,
4452         [GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr,
4453         [GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,
4454         [GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,
4455         [GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,
4456         [GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,
4457         [GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,
4458         [GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,
4459         [GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,
4460         [GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,
4461         [GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,
4462         [GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,
4463         [GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,
4464         [GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,
4465         [GCC_QUPV3_WRAP2_S6_CLK] = &gcc_qupv3_wrap2_s6_clk.clkr,
4466         [GCC_QUPV3_WRAP2_S6_CLK_SRC] = &gcc_qupv3_wrap2_s6_clk_src.clkr,
4467         [GCC_QUPV3_WRAP3_CORE_2X_CLK] = &gcc_qupv3_wrap3_core_2x_clk.clkr,
4468         [GCC_QUPV3_WRAP3_CORE_CLK] = &gcc_qupv3_wrap3_core_clk.clkr,
4469         [GCC_QUPV3_WRAP3_QSPI_CLK] = &gcc_qupv3_wrap3_qspi_clk.clkr,
4470         [GCC_QUPV3_WRAP3_S0_CLK] = &gcc_qupv3_wrap3_s0_clk.clkr,
4471         [GCC_QUPV3_WRAP3_S0_CLK_SRC] = &gcc_qupv3_wrap3_s0_clk_src.clkr,
4472         [GCC_QUPV3_WRAP3_S0_DIV_CLK_SRC] = &gcc_qupv3_wrap3_s0_div_clk_src.clkr,
4473         [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
4474         [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
4475         [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
4476         [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
4477         [GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,
4478         [GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,
4479         [GCC_QUPV3_WRAP_3_M_AHB_CLK] = &gcc_qupv3_wrap_3_m_ahb_clk.clkr,
4480         [GCC_QUPV3_WRAP_3_S_AHB_CLK] = &gcc_qupv3_wrap_3_s_ahb_clk.clkr,
4481         [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
4482         [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
4483         [GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,
4484         [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
4485         [GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr,
4486         [GCC_SGMI_CLKREF_EN] = &gcc_sgmi_clkref_en.clkr,
4487         [GCC_TSCSS_AHB_CLK] = &gcc_tscss_ahb_clk.clkr,
4488         [GCC_TSCSS_CNTR_CLK_SRC] = &gcc_tscss_cntr_clk_src.clkr,
4489         [GCC_TSCSS_ETU_CLK] = &gcc_tscss_etu_clk.clkr,
4490         [GCC_TSCSS_GLOBAL_CNTR_CLK] = &gcc_tscss_global_cntr_clk.clkr,
4491         [GCC_UFS_CARD_AHB_CLK] = &gcc_ufs_card_ahb_clk.clkr,
4492         [GCC_UFS_CARD_AXI_CLK] = &gcc_ufs_card_axi_clk.clkr,
4493         [GCC_UFS_CARD_AXI_CLK_SRC] = &gcc_ufs_card_axi_clk_src.clkr,
4494         [GCC_UFS_CARD_ICE_CORE_CLK] = &gcc_ufs_card_ice_core_clk.clkr,
4495         [GCC_UFS_CARD_ICE_CORE_CLK_SRC] = &gcc_ufs_card_ice_core_clk_src.clkr,
4496         [GCC_UFS_CARD_PHY_AUX_CLK] = &gcc_ufs_card_phy_aux_clk.clkr,
4497         [GCC_UFS_CARD_PHY_AUX_CLK_SRC] = &gcc_ufs_card_phy_aux_clk_src.clkr,
4498         [GCC_UFS_CARD_RX_SYMBOL_0_CLK] = &gcc_ufs_card_rx_symbol_0_clk.clkr,
4499         [GCC_UFS_CARD_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_card_rx_symbol_0_clk_src.clkr,
4500         [GCC_UFS_CARD_RX_SYMBOL_1_CLK] = &gcc_ufs_card_rx_symbol_1_clk.clkr,
4501         [GCC_UFS_CARD_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_card_rx_symbol_1_clk_src.clkr,
4502         [GCC_UFS_CARD_TX_SYMBOL_0_CLK] = &gcc_ufs_card_tx_symbol_0_clk.clkr,
4503         [GCC_UFS_CARD_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_card_tx_symbol_0_clk_src.clkr,
4504         [GCC_UFS_CARD_UNIPRO_CORE_CLK] = &gcc_ufs_card_unipro_core_clk.clkr,
4505         [GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_card_unipro_core_clk_src.clkr,
4506         [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
4507         [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
4508         [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
4509         [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
4510         [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
4511         [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
4512         [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
4513         [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
4514         [GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr,
4515         [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
4516         [GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr,
4517         [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
4518         [GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr,
4519         [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
4520         [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,
4521         [GCC_USB20_MASTER_CLK] = &gcc_usb20_master_clk.clkr,
4522         [GCC_USB20_MASTER_CLK_SRC] = &gcc_usb20_master_clk_src.clkr,
4523         [GCC_USB20_MOCK_UTMI_CLK] = &gcc_usb20_mock_utmi_clk.clkr,
4524         [GCC_USB20_MOCK_UTMI_CLK_SRC] = &gcc_usb20_mock_utmi_clk_src.clkr,
4525         [GCC_USB20_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb20_mock_utmi_postdiv_clk_src.clkr,
4526         [GCC_USB20_SLEEP_CLK] = &gcc_usb20_sleep_clk.clkr,
4527         [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
4528         [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
4529         [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
4530         [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,
4531         [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,
4532         [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
4533         [GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,
4534         [GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr,
4535         [GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,
4536         [GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] = &gcc_usb30_sec_mock_utmi_clk_src.clkr,
4537         [GCC_USB30_SEC_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_sec_mock_utmi_postdiv_clk_src.clkr,
4538         [GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,
4539         [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
4540         [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
4541         [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
4542         [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
4543         [GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr,
4544         [GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr,
4545         [GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr,
4546         [GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr,
4547         [GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr,
4548         [GCC_USB3_SEC_PHY_PIPE_CLK_SRC] = &gcc_usb3_sec_phy_pipe_clk_src.clkr,
4549         [GCC_USB_CLKREF_EN] = &gcc_usb_clkref_en.clkr,
4550         [GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
4551         [GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,
4552 };
4553
4554 static const struct qcom_reset_map gcc_sa8775p_resets[] = {
4555         [GCC_CAMERA_BCR] = { 0x32000 },
4556         [GCC_DISPLAY1_BCR] = { 0xc7000 },
4557         [GCC_DISPLAY_BCR] = { 0x33000 },
4558         [GCC_EMAC0_BCR] = { 0xb6000 },
4559         [GCC_EMAC1_BCR] = { 0xb4000 },
4560         [GCC_GPU_BCR] = { 0x7d000 },
4561         [GCC_MMSS_BCR] = { 0x17000 },
4562         [GCC_PCIE_0_BCR] = { 0xa9000 },
4563         [GCC_PCIE_0_LINK_DOWN_BCR] = { 0xbf000 },
4564         [GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0xbf008 },
4565         [GCC_PCIE_0_PHY_BCR] = { 0xad144 },
4566         [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0xbf00c },
4567         [GCC_PCIE_1_BCR] = { 0x77000 },
4568         [GCC_PCIE_1_LINK_DOWN_BCR] = { 0xae084 },
4569         [GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0xae090 },
4570         [GCC_PCIE_1_PHY_BCR] = { 0xae08c },
4571         [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0xae094 },
4572         [GCC_PDM_BCR] = { 0x3f000 },
4573         [GCC_QUPV3_WRAPPER_0_BCR] = { 0x23000 },
4574         [GCC_QUPV3_WRAPPER_1_BCR] = { 0x24000 },
4575         [GCC_QUPV3_WRAPPER_2_BCR] = { 0x2a000 },
4576         [GCC_QUPV3_WRAPPER_3_BCR] = { 0xc4000 },
4577         [GCC_SDCC1_BCR] = { 0x20000 },
4578         [GCC_TSCSS_BCR] = { 0x21000 },
4579         [GCC_UFS_CARD_BCR] = { 0x81000 },
4580         [GCC_UFS_PHY_BCR] = { 0x83000 },
4581         [GCC_USB20_PRIM_BCR] = { 0x1c000 },
4582         [GCC_USB2_PHY_PRIM_BCR] = { 0x5c028 },
4583         [GCC_USB2_PHY_SEC_BCR] = { 0x5c02c },
4584         [GCC_USB30_PRIM_BCR] = { 0x1b000 },
4585         [GCC_USB30_SEC_BCR] = { 0x2f000 },
4586         [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x5c008 },
4587         [GCC_USB3_DP_PHY_SEC_BCR] = { 0x5c014 },
4588         [GCC_USB3_PHY_PRIM_BCR] = { 0x5c000 },
4589         [GCC_USB3_PHY_SEC_BCR] = { 0x5c00c },
4590         [GCC_USB3_PHY_TERT_BCR] = { 0x5c030 },
4591         [GCC_USB3_UNIPHY_MP0_BCR] = { 0x5c018 },
4592         [GCC_USB3_UNIPHY_MP1_BCR] = { 0x5c01c },
4593         [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x5c004 },
4594         [GCC_USB3PHY_PHY_SEC_BCR] = { 0x5c010 },
4595         [GCC_USB3UNIPHY_PHY_MP0_BCR] = { 0x5c020 },
4596         [GCC_USB3UNIPHY_PHY_MP1_BCR] = { 0x5c024 },
4597         [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x76000 },
4598         [GCC_VIDEO_AXI0_CLK_ARES] = { .reg = 0x34014, .bit = 2, .udelay = 400 },
4599         [GCC_VIDEO_AXI1_CLK_ARES] = { .reg = 0x3401c, .bit = 2, .udelay = 400 },
4600         [GCC_VIDEO_BCR] = { 0x34000 },
4601 };
4602
4603 static struct gdsc *gcc_sa8775p_gdscs[] = {
4604         [PCIE_0_GDSC] = &pcie_0_gdsc,
4605         [PCIE_1_GDSC] = &pcie_1_gdsc,
4606         [UFS_CARD_GDSC] = &ufs_card_gdsc,
4607         [UFS_PHY_GDSC] = &ufs_phy_gdsc,
4608         [USB20_PRIM_GDSC] = &usb20_prim_gdsc,
4609         [USB30_PRIM_GDSC] = &usb30_prim_gdsc,
4610         [USB30_SEC_GDSC] = &usb30_sec_gdsc,
4611         [EMAC0_GDSC] = &emac0_gdsc,
4612         [EMAC1_GDSC] = &emac1_gdsc,
4613 };
4614
4615 static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
4616         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
4617         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
4618         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
4619         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
4620         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
4621         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
4622         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src),
4623         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
4624         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
4625         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
4626         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
4627         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
4628         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
4629         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),
4630         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src),
4631         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src),
4632         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src),
4633         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src),
4634         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src),
4635         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src),
4636         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s6_clk_src),
4637         DEFINE_RCG_DFS(gcc_qupv3_wrap3_s0_clk_src),
4638 };
4639
4640 static const struct regmap_config gcc_sa8775p_regmap_config = {
4641         .reg_bits = 32,
4642         .reg_stride = 4,
4643         .val_bits = 32,
4644         .max_register = 0xc7018,
4645         .fast_io = true,
4646 };
4647
4648 static const struct qcom_cc_desc gcc_sa8775p_desc = {
4649         .config = &gcc_sa8775p_regmap_config,
4650         .clks = gcc_sa8775p_clocks,
4651         .num_clks = ARRAY_SIZE(gcc_sa8775p_clocks),
4652         .resets = gcc_sa8775p_resets,
4653         .num_resets = ARRAY_SIZE(gcc_sa8775p_resets),
4654         .gdscs = gcc_sa8775p_gdscs,
4655         .num_gdscs = ARRAY_SIZE(gcc_sa8775p_gdscs),
4656 };
4657
4658 static const struct of_device_id gcc_sa8775p_match_table[] = {
4659         { .compatible = "qcom,sa8775p-gcc" },
4660         { }
4661 };
4662 MODULE_DEVICE_TABLE(of, gcc_sa8775p_match_table);
4663
4664 static int gcc_sa8775p_probe(struct platform_device *pdev)
4665 {
4666         struct regmap *regmap;
4667         int ret;
4668
4669         regmap = qcom_cc_map(pdev, &gcc_sa8775p_desc);
4670         if (IS_ERR(regmap))
4671                 return PTR_ERR(regmap);
4672
4673         ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,
4674                                        ARRAY_SIZE(gcc_dfs_clocks));
4675         if (ret)
4676                 return ret;
4677
4678         /* Keep some clocks always-on */
4679         qcom_branch_set_clk_en(regmap, 0x32004); /* GCC_CAMERA_AHB_CLK */
4680         qcom_branch_set_clk_en(regmap, 0x32020); /* GCC_CAMERA_XO_CLK */
4681         qcom_branch_set_clk_en(regmap, 0xc7004); /* GCC_DISP1_AHB_CLK */
4682         qcom_branch_set_clk_en(regmap, 0xc7018); /* GCC_DISP1_XO_CLK */
4683         qcom_branch_set_clk_en(regmap, 0x33004); /* GCC_DISP_AHB_CLK */
4684         qcom_branch_set_clk_en(regmap, 0x33018); /* GCC_DISP_XO_CLK */
4685         qcom_branch_set_clk_en(regmap, 0x7d004); /* GCC_GPU_CFG_AHB_CLK */
4686         qcom_branch_set_clk_en(regmap, 0x34004); /* GCC_VIDEO_AHB_CLK */
4687         qcom_branch_set_clk_en(regmap, 0x34024); /* GCC_VIDEO_XO_CLK */
4688
4689         /* FORCE_MEM_CORE_ON for ufs phy ice core clocks */
4690         qcom_branch_set_force_mem_core(regmap, gcc_ufs_phy_ice_core_clk, true);
4691
4692         return qcom_cc_really_probe(&pdev->dev, &gcc_sa8775p_desc, regmap);
4693 }
4694
4695 static struct platform_driver gcc_sa8775p_driver = {
4696         .probe = gcc_sa8775p_probe,
4697         .driver = {
4698                 .name = "sa8775p-gcc",
4699                 .of_match_table = gcc_sa8775p_match_table,
4700         },
4701 };
4702
4703 static int __init gcc_sa8775p_init(void)
4704 {
4705         return platform_driver_register(&gcc_sa8775p_driver);
4706 }
4707 core_initcall(gcc_sa8775p_init);
4708
4709 static void __exit gcc_sa8775p_exit(void)
4710 {
4711         platform_driver_unregister(&gcc_sa8775p_driver);
4712 }
4713 module_exit(gcc_sa8775p_exit);
4714
4715 MODULE_DESCRIPTION("Qualcomm SA8775P GCC driver");
4716 MODULE_LICENSE("GPL");
This page took 0.317248 seconds and 4 git commands to generate.