Merge tag 'mm-nonmm-stable-2022-08-06-2' of git://git.kernel.org/pub/scm/linux/kernel...
[platform/kernel/linux-starfive.git] / drivers / clk / qcom / gcc-sc8280xp.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
4  * Copyright (c) 2022, Linaro Ltd.
5  */
6
7 #include <linux/clk-provider.h>
8 #include <linux/err.h>
9 #include <linux/kernel.h>
10 #include <linux/module.h>
11 #include <linux/of_device.h>
12 #include <linux/of.h>
13 #include <linux/regmap.h>
14
15 #include <dt-bindings/clock/qcom,gcc-sc8280xp.h>
16
17 #include "clk-alpha-pll.h"
18 #include "clk-branch.h"
19 #include "clk-rcg.h"
20 #include "clk-regmap.h"
21 #include "clk-regmap-divider.h"
22 #include "clk-regmap-mux.h"
23 #include "clk-regmap-phy-mux.h"
24 #include "common.h"
25 #include "gdsc.h"
26 #include "reset.h"
27
28 /* Need to match the order of clocks in DT binding */
29 enum {
30         DT_BI_TCXO,
31         DT_SLEEP_CLK,
32         DT_UFS_PHY_RX_SYMBOL_0_CLK,
33         DT_UFS_PHY_RX_SYMBOL_1_CLK,
34         DT_UFS_PHY_TX_SYMBOL_0_CLK,
35         DT_UFS_CARD_RX_SYMBOL_0_CLK,
36         DT_UFS_CARD_RX_SYMBOL_1_CLK,
37         DT_UFS_CARD_TX_SYMBOL_0_CLK,
38         DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
39         DT_GCC_USB4_PHY_PIPEGMUX_CLK_SRC,
40         DT_GCC_USB4_PHY_DP_GMUX_CLK_SRC,
41         DT_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC,
42         DT_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK,
43         DT_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK,
44         DT_QUSB4PHY_GCC_USB4_RX0_CLK,
45         DT_QUSB4PHY_GCC_USB4_RX1_CLK,
46         DT_USB3_UNI_PHY_SEC_GCC_USB30_PIPE_CLK,
47         DT_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC,
48         DT_GCC_USB4_1_PHY_DP_GMUX_CLK_SRC,
49         DT_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC,
50         DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK,
51         DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK,
52         DT_QUSB4PHY_1_GCC_USB4_RX0_CLK,
53         DT_QUSB4PHY_1_GCC_USB4_RX1_CLK,
54         DT_USB3_UNI_PHY_MP_GCC_USB30_PIPE_0_CLK,
55         DT_USB3_UNI_PHY_MP_GCC_USB30_PIPE_1_CLK,
56         DT_PCIE_2A_PIPE_CLK,
57         DT_PCIE_2B_PIPE_CLK,
58         DT_PCIE_3A_PIPE_CLK,
59         DT_PCIE_3B_PIPE_CLK,
60         DT_PCIE_4_PIPE_CLK,
61         DT_RXC0_REF_CLK,
62         DT_RXC1_REF_CLK,
63 };
64
65 enum {
66         P_BI_TCXO,
67         P_GCC_GPLL0_OUT_EVEN,
68         P_GCC_GPLL0_OUT_MAIN,
69         P_GCC_GPLL2_OUT_MAIN,
70         P_GCC_GPLL4_OUT_MAIN,
71         P_GCC_GPLL7_OUT_MAIN,
72         P_GCC_GPLL8_OUT_MAIN,
73         P_GCC_GPLL9_OUT_MAIN,
74         P_GCC_USB3_PRIM_PHY_PIPE_CLK_SRC,
75         P_GCC_USB3_SEC_PHY_PIPE_CLK_SRC,
76         P_GCC_USB4_1_PHY_DP_GMUX_CLK_SRC,
77         P_GCC_USB4_1_PHY_PCIE_PIPE_CLK_SRC,
78         P_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC,
79         P_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC,
80         P_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC,
81         P_GCC_USB4_PHY_DP_GMUX_CLK_SRC,
82         P_GCC_USB4_PHY_PCIE_PIPE_CLK_SRC,
83         P_GCC_USB4_PHY_PCIE_PIPEGMUX_CLK_SRC,
84         P_GCC_USB4_PHY_PIPEGMUX_CLK_SRC,
85         P_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC,
86         P_QUSB4PHY_1_GCC_USB4_RX0_CLK,
87         P_QUSB4PHY_1_GCC_USB4_RX1_CLK,
88         P_QUSB4PHY_GCC_USB4_RX0_CLK,
89         P_QUSB4PHY_GCC_USB4_RX1_CLK,
90         P_RXC0_REF_CLK,
91         P_RXC1_REF_CLK,
92         P_SLEEP_CLK,
93         P_UFS_CARD_RX_SYMBOL_0_CLK,
94         P_UFS_CARD_RX_SYMBOL_1_CLK,
95         P_UFS_CARD_TX_SYMBOL_0_CLK,
96         P_UFS_PHY_RX_SYMBOL_0_CLK,
97         P_UFS_PHY_RX_SYMBOL_1_CLK,
98         P_UFS_PHY_TX_SYMBOL_0_CLK,
99         P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
100         P_USB3_UNI_PHY_MP_GCC_USB30_PIPE_0_CLK,
101         P_USB3_UNI_PHY_MP_GCC_USB30_PIPE_1_CLK,
102         P_USB3_UNI_PHY_SEC_GCC_USB30_PIPE_CLK,
103         P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK,
104         P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK,
105         P_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK,
106         P_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK,
107 };
108
109 static const struct clk_parent_data gcc_parent_data_tcxo = { .index = DT_BI_TCXO };
110
111 static struct clk_alpha_pll gcc_gpll0 = {
112         .offset = 0x0,
113         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
114         .clkr = {
115                 .enable_reg = 0x52028,
116                 .enable_mask = BIT(0),
117                 .hw.init = &(const struct clk_init_data) {
118                         .name = "gcc_gpll0",
119                         .parent_data = &gcc_parent_data_tcxo,
120                         .num_parents = 1,
121                         .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops,
122                 },
123         },
124 };
125
126 static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = {
127         { 0x1, 2 },
128         { }
129 };
130
131 static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = {
132         .offset = 0x0,
133         .post_div_shift = 8,
134         .post_div_table = post_div_table_gcc_gpll0_out_even,
135         .num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even),
136         .width = 4,
137         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
138         .clkr.hw.init = &(const struct clk_init_data) {
139                 .name = "gcc_gpll0_out_even",
140                 .parent_hws = (const struct clk_hw*[]){
141                         &gcc_gpll0.clkr.hw,
142                 },
143                 .num_parents = 1,
144                 .ops = &clk_alpha_pll_postdiv_lucid_5lpe_ops,
145         },
146 };
147
148 static struct clk_alpha_pll gcc_gpll2 = {
149         .offset = 0x2000,
150         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
151         .clkr = {
152                 .enable_reg = 0x52028,
153                 .enable_mask = BIT(2),
154                 .hw.init = &(const struct clk_init_data) {
155                         .name = "gcc_gpll2",
156                         .parent_data = &gcc_parent_data_tcxo,
157                         .num_parents = 1,
158                         .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops,
159                 },
160         },
161 };
162
163 static struct clk_alpha_pll gcc_gpll4 = {
164         .offset = 0x76000,
165         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
166         .clkr = {
167                 .enable_reg = 0x52028,
168                 .enable_mask = BIT(4),
169                 .hw.init = &(const struct clk_init_data) {
170                         .name = "gcc_gpll4",
171                         .parent_data = &gcc_parent_data_tcxo,
172                         .num_parents = 1,
173                         .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops,
174                 },
175         },
176 };
177
178 static struct clk_alpha_pll gcc_gpll7 = {
179         .offset = 0x1a000,
180         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
181         .clkr = {
182                 .enable_reg = 0x52028,
183                 .enable_mask = BIT(7),
184                 .hw.init = &(const struct clk_init_data) {
185                         .name = "gcc_gpll7",
186                         .parent_data = &gcc_parent_data_tcxo,
187                         .num_parents = 1,
188                         .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops,
189                 },
190         },
191 };
192
193 static struct clk_alpha_pll gcc_gpll8 = {
194         .offset = 0x1b000,
195         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
196         .clkr = {
197                 .enable_reg = 0x52028,
198                 .enable_mask = BIT(8),
199                 .hw.init = &(const struct clk_init_data) {
200                         .name = "gcc_gpll8",
201                         .parent_data = &gcc_parent_data_tcxo,
202                         .num_parents = 1,
203                         .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops,
204                 },
205         },
206 };
207
208 static struct clk_alpha_pll gcc_gpll9 = {
209         .offset = 0x1c000,
210         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
211         .clkr = {
212                 .enable_reg = 0x52028,
213                 .enable_mask = BIT(9),
214                 .hw.init = &(const struct clk_init_data) {
215                         .name = "gcc_gpll9",
216                         .parent_data = &gcc_parent_data_tcxo,
217                         .num_parents = 1,
218                         .ops = &clk_alpha_pll_fixed_lucid_5lpe_ops,
219                 },
220         },
221 };
222
223 static struct clk_rcg2 gcc_usb4_1_phy_pcie_pipe_clk_src;
224 static struct clk_rcg2 gcc_usb4_phy_pcie_pipe_clk_src;
225
226 static const struct parent_map gcc_parent_map_0[] = {
227         { P_BI_TCXO, 0 },
228         { P_GCC_GPLL0_OUT_MAIN, 1 },
229         { P_GCC_GPLL0_OUT_EVEN, 6 },
230 };
231
232 static const struct clk_parent_data gcc_parent_data_0[] = {
233         { .index = DT_BI_TCXO },
234         { .hw = &gcc_gpll0.clkr.hw },
235         { .hw = &gcc_gpll0_out_even.clkr.hw },
236 };
237
238 static const struct parent_map gcc_parent_map_1[] = {
239         { P_BI_TCXO, 0 },
240         { P_SLEEP_CLK, 5 },
241 };
242
243 static const struct clk_parent_data gcc_parent_data_1[] = {
244         { .index = DT_BI_TCXO },
245         { .index = DT_SLEEP_CLK },
246 };
247
248 static const struct parent_map gcc_parent_map_2[] = {
249         { P_BI_TCXO, 0 },
250         { P_GCC_GPLL0_OUT_MAIN, 1 },
251         { P_SLEEP_CLK, 5 },
252         { P_GCC_GPLL0_OUT_EVEN, 6 },
253 };
254
255 static const struct clk_parent_data gcc_parent_data_2[] = {
256         { .index = DT_BI_TCXO },
257         { .hw = &gcc_gpll0.clkr.hw },
258         { .index = DT_SLEEP_CLK },
259         { .hw = &gcc_gpll0_out_even.clkr.hw },
260 };
261
262 static const struct parent_map gcc_parent_map_3[] = {
263         { P_BI_TCXO, 0 },
264 };
265
266 static const struct clk_parent_data gcc_parent_data_3[] = {
267         { .index = DT_BI_TCXO },
268 };
269
270 static const struct parent_map gcc_parent_map_4[] = {
271         { P_BI_TCXO, 0 },
272         { P_GCC_GPLL7_OUT_MAIN, 2 },
273         { P_GCC_GPLL4_OUT_MAIN, 5 },
274         { P_GCC_GPLL0_OUT_EVEN, 6 },
275 };
276
277 static const struct clk_parent_data gcc_parent_data_4[] = {
278         { .index = DT_BI_TCXO },
279         { .hw = &gcc_gpll7.clkr.hw },
280         { .hw = &gcc_gpll4.clkr.hw },
281         { .hw = &gcc_gpll0_out_even.clkr.hw },
282 };
283
284 static const struct parent_map gcc_parent_map_5[] = {
285         { P_BI_TCXO, 0 },
286         { P_GCC_GPLL0_OUT_MAIN, 1 },
287         { P_GCC_GPLL8_OUT_MAIN, 2 },
288         { P_GCC_GPLL0_OUT_EVEN, 6 },
289 };
290
291 static const struct clk_parent_data gcc_parent_data_5[] = {
292         { .index = DT_BI_TCXO },
293         { .hw = &gcc_gpll0.clkr.hw },
294         { .hw = &gcc_gpll8.clkr.hw },
295         { .hw = &gcc_gpll0_out_even.clkr.hw },
296 };
297
298 static const struct parent_map gcc_parent_map_6[] = {
299         { P_BI_TCXO, 0 },
300         { P_GCC_GPLL0_OUT_MAIN, 1 },
301         { P_GCC_GPLL7_OUT_MAIN, 2 },
302 };
303
304 static const struct clk_parent_data gcc_parent_data_6[] = {
305         { .index = DT_BI_TCXO },
306         { .hw = &gcc_gpll0.clkr.hw },
307         { .hw = &gcc_gpll7.clkr.hw },
308 };
309
310 static const struct parent_map gcc_parent_map_7[] = {
311         { P_BI_TCXO, 0 },
312         { P_GCC_GPLL0_OUT_MAIN, 1 },
313         { P_GCC_GPLL2_OUT_MAIN, 2 },
314 };
315
316 static const struct clk_parent_data gcc_parent_data_7[] = {
317         { .index = DT_BI_TCXO },
318         { .hw = &gcc_gpll0.clkr.hw },
319         { .hw = &gcc_gpll2.clkr.hw },
320 };
321
322 static const struct parent_map gcc_parent_map_8[] = {
323         { P_BI_TCXO, 0 },
324         { P_GCC_GPLL7_OUT_MAIN, 2 },
325         { P_RXC0_REF_CLK, 3 },
326         { P_GCC_GPLL0_OUT_EVEN, 6 },
327 };
328
329 static const struct clk_parent_data gcc_parent_data_8[] = {
330         { .index = DT_BI_TCXO },
331         { .hw = &gcc_gpll7.clkr.hw },
332         { .index = DT_RXC0_REF_CLK },
333         { .hw = &gcc_gpll0_out_even.clkr.hw },
334 };
335
336 static const struct parent_map gcc_parent_map_9[] = {
337         { P_BI_TCXO, 0 },
338         { P_GCC_GPLL7_OUT_MAIN, 2 },
339         { P_RXC1_REF_CLK, 3 },
340         { P_GCC_GPLL0_OUT_EVEN, 6 },
341 };
342
343 static const struct clk_parent_data gcc_parent_data_9[] = {
344         { .index = DT_BI_TCXO },
345         { .hw = &gcc_gpll7.clkr.hw },
346         { .index = DT_RXC1_REF_CLK },
347         { .hw = &gcc_gpll0_out_even.clkr.hw },
348 };
349
350 static const struct parent_map gcc_parent_map_15[] = {
351         { P_BI_TCXO, 0 },
352         { P_GCC_GPLL0_OUT_MAIN, 1 },
353         { P_GCC_GPLL9_OUT_MAIN, 2 },
354         { P_GCC_GPLL4_OUT_MAIN, 5 },
355         { P_GCC_GPLL0_OUT_EVEN, 6 },
356 };
357
358 static const struct clk_parent_data gcc_parent_data_15[] = {
359         { .index = DT_BI_TCXO },
360         { .hw = &gcc_gpll0.clkr.hw },
361         { .hw = &gcc_gpll9.clkr.hw },
362         { .hw = &gcc_gpll4.clkr.hw },
363         { .hw = &gcc_gpll0_out_even.clkr.hw },
364 };
365
366 static const struct parent_map gcc_parent_map_16[] = {
367         { P_UFS_CARD_RX_SYMBOL_0_CLK, 0 },
368         { P_BI_TCXO, 2 },
369 };
370
371 static const struct clk_parent_data gcc_parent_data_16[] = {
372         { .index = DT_UFS_CARD_RX_SYMBOL_0_CLK },
373         { .index = DT_BI_TCXO },
374 };
375
376 static const struct parent_map gcc_parent_map_17[] = {
377         { P_UFS_CARD_RX_SYMBOL_1_CLK, 0 },
378         { P_BI_TCXO, 2 },
379 };
380
381 static const struct clk_parent_data gcc_parent_data_17[] = {
382         { .index = DT_UFS_CARD_RX_SYMBOL_1_CLK },
383         { .index = DT_BI_TCXO },
384 };
385
386 static const struct parent_map gcc_parent_map_18[] = {
387         { P_UFS_CARD_TX_SYMBOL_0_CLK, 0 },
388         { P_BI_TCXO, 2 },
389 };
390
391 static const struct clk_parent_data gcc_parent_data_18[] = {
392         { .index = DT_UFS_CARD_TX_SYMBOL_0_CLK },
393         { .index = DT_BI_TCXO },
394 };
395
396 static const struct parent_map gcc_parent_map_19[] = {
397         { P_UFS_PHY_RX_SYMBOL_0_CLK, 0 },
398         { P_BI_TCXO, 2 },
399 };
400
401 static const struct clk_parent_data gcc_parent_data_19[] = {
402         { .index = DT_UFS_PHY_RX_SYMBOL_0_CLK },
403         { .index = DT_BI_TCXO },
404 };
405
406 static const struct parent_map gcc_parent_map_20[] = {
407         { P_UFS_PHY_RX_SYMBOL_1_CLK, 0 },
408         { P_BI_TCXO, 2 },
409 };
410
411 static const struct clk_parent_data gcc_parent_data_20[] = {
412         { .index = DT_UFS_PHY_RX_SYMBOL_1_CLK },
413         { .index = DT_BI_TCXO },
414 };
415
416 static const struct parent_map gcc_parent_map_21[] = {
417         { P_UFS_PHY_TX_SYMBOL_0_CLK, 0 },
418         { P_BI_TCXO, 2 },
419 };
420
421 static const struct clk_parent_data gcc_parent_data_21[] = {
422         { .index = DT_UFS_PHY_TX_SYMBOL_0_CLK },
423         { .index = DT_BI_TCXO },
424 };
425
426 static const struct parent_map gcc_parent_map_22[] = {
427         { P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 0 },
428         { P_BI_TCXO, 2 },
429 };
430
431 static const struct clk_parent_data gcc_parent_data_22[] = {
432         { .index = DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK },
433         { .index = DT_BI_TCXO },
434 };
435
436 static const struct parent_map gcc_parent_map_23[] = {
437         { P_USB3_UNI_PHY_SEC_GCC_USB30_PIPE_CLK, 0 },
438         { P_BI_TCXO, 2 },
439 };
440
441 static const struct clk_parent_data gcc_parent_data_23[] = {
442         { .index = DT_USB3_UNI_PHY_SEC_GCC_USB30_PIPE_CLK },
443         { .index = DT_BI_TCXO },
444 };
445
446 static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = {
447         .reg = 0xf060,
448         .shift = 0,
449         .width = 2,
450         .parent_map = gcc_parent_map_22,
451         .clkr = {
452                 .hw.init = &(const struct clk_init_data) {
453                         .name = "gcc_usb3_prim_phy_pipe_clk_src",
454                         .parent_data = gcc_parent_data_22,
455                         .num_parents = ARRAY_SIZE(gcc_parent_data_22),
456                         .ops = &clk_regmap_mux_closest_ops,
457                 },
458         },
459 };
460
461 static struct clk_regmap_mux gcc_usb3_sec_phy_pipe_clk_src = {
462         .reg = 0x10060,
463         .shift = 0,
464         .width = 2,
465         .parent_map = gcc_parent_map_23,
466         .clkr = {
467                 .hw.init = &(const struct clk_init_data) {
468                         .name = "gcc_usb3_sec_phy_pipe_clk_src",
469                         .parent_data = gcc_parent_data_23,
470                         .num_parents = ARRAY_SIZE(gcc_parent_data_23),
471                         .ops = &clk_regmap_mux_closest_ops,
472                 },
473         },
474 };
475
476 static const struct parent_map gcc_parent_map_24[] = {
477         { P_USB3_UNI_PHY_MP_GCC_USB30_PIPE_0_CLK, 0 },
478         { P_BI_TCXO, 2 },
479 };
480
481 static const struct clk_parent_data gcc_parent_data_24[] = {
482         { .index = DT_USB3_UNI_PHY_MP_GCC_USB30_PIPE_0_CLK },
483         { .index = DT_BI_TCXO },
484 };
485
486 static const struct parent_map gcc_parent_map_25[] = {
487         { P_USB3_UNI_PHY_MP_GCC_USB30_PIPE_1_CLK, 0 },
488         { P_BI_TCXO, 2 },
489 };
490
491 static const struct clk_parent_data gcc_parent_data_25[] = {
492         { .index = DT_USB3_UNI_PHY_MP_GCC_USB30_PIPE_1_CLK },
493         { .index = DT_BI_TCXO },
494 };
495
496 static const struct parent_map gcc_parent_map_26[] = {
497         { P_GCC_USB3_PRIM_PHY_PIPE_CLK_SRC, 0 },
498         { P_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 1 },
499         { P_GCC_USB4_PHY_PIPEGMUX_CLK_SRC, 3 },
500 };
501
502 static const struct clk_parent_data gcc_parent_data_26[] = {
503         { .hw = &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw },
504         { .index = DT_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK },
505         { .index = DT_GCC_USB4_PHY_PIPEGMUX_CLK_SRC },
506 };
507
508 static const struct parent_map gcc_parent_map_27[] = {
509         { P_GCC_USB3_SEC_PHY_PIPE_CLK_SRC, 0 },
510         { P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 1 },
511         { P_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC, 3 },
512 };
513
514 static const struct clk_parent_data gcc_parent_data_27[] = {
515         { .hw = &gcc_usb3_sec_phy_pipe_clk_src.clkr.hw },
516         { .index = DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK },
517         { .index = DT_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC },
518 };
519
520 static const struct parent_map gcc_parent_map_28[] = {
521         { P_GCC_USB4_1_PHY_DP_GMUX_CLK_SRC, 0 },
522         { P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 },
523 };
524
525 static const struct clk_parent_data gcc_parent_data_28[] = {
526         { .index = DT_GCC_USB4_1_PHY_DP_GMUX_CLK_SRC },
527         { .index = DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK },
528 };
529
530 static const struct parent_map gcc_parent_map_29[] = {
531         { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 },
532         { P_BI_TCXO, 2 },
533 };
534
535 static const struct clk_parent_data gcc_parent_data_29[] = {
536         { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK },
537         { .index = DT_BI_TCXO },
538 };
539
540 static const struct parent_map gcc_parent_map_30[] = {
541         { P_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, 0 },
542         { P_GCC_USB4_1_PHY_PCIE_PIPE_CLK_SRC, 1 },
543 };
544
545 static const struct clk_parent_data gcc_parent_data_30[] = {
546         { .index = DT_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC },
547         { .hw = &gcc_usb4_1_phy_pcie_pipe_clk_src.clkr.hw },
548 };
549
550 static struct clk_regmap_mux gcc_usb4_1_phy_pcie_pipegmux_clk_src = {
551         .reg = 0xb80dc,
552         .shift = 0,
553         .width = 1,
554         .parent_map = gcc_parent_map_30,
555         .clkr = {
556                 .hw.init = &(const struct clk_init_data) {
557                         .name = "gcc_usb4_1_phy_pcie_pipegmux_clk_src",
558                         .parent_data = gcc_parent_data_30,
559                         .num_parents = ARRAY_SIZE(gcc_parent_data_30),
560                         .ops = &clk_regmap_mux_closest_ops,
561                 },
562         },
563 };
564
565 static const struct parent_map gcc_parent_map_31[] = {
566         { P_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 },
567         { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 },
568 };
569
570 static const struct clk_parent_data gcc_parent_data_31[] = {
571         { .hw = &gcc_usb4_1_phy_pcie_pipegmux_clk_src.clkr.hw },
572         { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK },
573 };
574
575 static const struct parent_map gcc_parent_map_32[] = {
576         { P_QUSB4PHY_1_GCC_USB4_RX0_CLK, 0 },
577         { P_BI_TCXO, 2 },
578 };
579
580 static const struct clk_parent_data gcc_parent_data_32[] = {
581         { .index = DT_QUSB4PHY_1_GCC_USB4_RX0_CLK },
582         { .index = DT_BI_TCXO },
583 };
584
585 static const struct parent_map gcc_parent_map_33[] = {
586         { P_QUSB4PHY_1_GCC_USB4_RX1_CLK, 0 },
587         { P_BI_TCXO, 2 },
588 };
589
590 static const struct clk_parent_data gcc_parent_data_33[] = {
591         { .index = DT_QUSB4PHY_1_GCC_USB4_RX1_CLK },
592         { .index = DT_BI_TCXO },
593 };
594
595 static const struct parent_map gcc_parent_map_34[] = {
596         { P_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, 0 },
597         { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 },
598 };
599
600 static const struct clk_parent_data gcc_parent_data_34[] = {
601         { .index = DT_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC },
602         { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK },
603 };
604
605 static const struct parent_map gcc_parent_map_35[] = {
606         { P_GCC_USB4_PHY_DP_GMUX_CLK_SRC, 0 },
607         { P_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 },
608 };
609
610 static const struct clk_parent_data gcc_parent_data_35[] = {
611         { .index = DT_GCC_USB4_PHY_DP_GMUX_CLK_SRC },
612         { .index = DT_USB4_PHY_GCC_USB4RTR_MAX_PIPE_CLK },
613 };
614
615 static const struct parent_map gcc_parent_map_36[] = {
616         { P_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 },
617         { P_BI_TCXO, 2 },
618 };
619
620 static const struct clk_parent_data gcc_parent_data_36[] = {
621         { .index = DT_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK },
622         { .index = DT_BI_TCXO },
623 };
624
625 static const struct parent_map gcc_parent_map_37[] = {
626         { P_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC, 0 },
627         { P_GCC_USB4_PHY_PCIE_PIPE_CLK_SRC, 1 },
628 };
629
630 static const struct clk_parent_data gcc_parent_data_37[] = {
631         { .index = DT_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC },
632         { .hw = &gcc_usb4_phy_pcie_pipe_clk_src.clkr.hw },
633 };
634
635 static struct clk_regmap_mux gcc_usb4_phy_pcie_pipegmux_clk_src = {
636         .reg = 0x2a0dc,
637         .shift = 0,
638         .width = 1,
639         .parent_map = gcc_parent_map_37,
640         .clkr = {
641                 .hw.init = &(const struct clk_init_data) {
642                         .name = "gcc_usb4_phy_pcie_pipegmux_clk_src",
643                         .parent_data = gcc_parent_data_37,
644                         .num_parents = ARRAY_SIZE(gcc_parent_data_37),
645                         .ops = &clk_regmap_mux_closest_ops,
646                 },
647         },
648 };
649
650 static const struct parent_map gcc_parent_map_38[] = {
651         { P_GCC_USB4_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 },
652         { P_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 },
653 };
654
655 static const struct clk_parent_data gcc_parent_data_38[] = {
656         { .hw = &gcc_usb4_phy_pcie_pipegmux_clk_src.clkr.hw },
657         { .index = DT_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK },
658 };
659
660 static const struct parent_map gcc_parent_map_39[] = {
661         { P_QUSB4PHY_GCC_USB4_RX0_CLK, 0 },
662         { P_BI_TCXO, 2 },
663 };
664
665 static const struct clk_parent_data gcc_parent_data_39[] = {
666         { .index = DT_QUSB4PHY_GCC_USB4_RX0_CLK },
667         { .index = DT_BI_TCXO },
668 };
669
670 static const struct parent_map gcc_parent_map_40[] = {
671         { P_QUSB4PHY_GCC_USB4_RX1_CLK, 0 },
672         { P_BI_TCXO, 2 },
673 };
674
675 static const struct clk_parent_data gcc_parent_data_40[] = {
676         { .index = DT_QUSB4PHY_GCC_USB4_RX1_CLK },
677         { .index = DT_BI_TCXO },
678 };
679
680 static const struct parent_map gcc_parent_map_41[] = {
681         { P_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC, 0 },
682         { P_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 },
683 };
684
685 static const struct clk_parent_data gcc_parent_data_41[] = {
686         { .index = DT_GCC_USB4_PHY_SYS_PIPEGMUX_CLK_SRC },
687         { .index = DT_USB4_PHY_GCC_USB4_PCIE_PIPE_CLK },
688 };
689
690 static struct clk_regmap_phy_mux gcc_pcie_2a_pipe_clk_src = {
691         .reg = 0x9d05c,
692         .clkr = {
693                 .hw.init = &(const struct clk_init_data) {
694                         .name = "gcc_pcie_2a_pipe_clk_src",
695                         .parent_data = &(const struct clk_parent_data){
696                                 .index = DT_PCIE_2A_PIPE_CLK,
697                         },
698                         .num_parents = 1,
699                         .ops = &clk_regmap_phy_mux_ops,
700                 },
701         },
702 };
703
704 static struct clk_regmap_phy_mux gcc_pcie_2b_pipe_clk_src = {
705         .reg = 0x9e05c,
706         .clkr = {
707                 .hw.init = &(const struct clk_init_data) {
708                         .name = "gcc_pcie_2b_pipe_clk_src",
709                         .parent_data = &(const struct clk_parent_data){
710                                 .index = DT_PCIE_2B_PIPE_CLK,
711                         },
712                         .num_parents = 1,
713                         .ops = &clk_regmap_phy_mux_ops,
714                 },
715         },
716 };
717
718 static struct clk_regmap_phy_mux gcc_pcie_3a_pipe_clk_src = {
719         .reg = 0xa005c,
720         .clkr = {
721                 .hw.init = &(const struct clk_init_data) {
722                         .name = "gcc_pcie_3a_pipe_clk_src",
723                         .parent_data = &(const struct clk_parent_data){
724                                 .index = DT_PCIE_3A_PIPE_CLK,
725                         },
726                         .num_parents = 1,
727                         .ops = &clk_regmap_phy_mux_ops,
728                 },
729         },
730 };
731
732 static struct clk_regmap_phy_mux gcc_pcie_3b_pipe_clk_src = {
733         .reg = 0xa205c,
734         .clkr = {
735                 .hw.init = &(const struct clk_init_data) {
736                         .name = "gcc_pcie_3b_pipe_clk_src",
737                         .parent_data = &(const struct clk_parent_data){
738                                 .index = DT_PCIE_3B_PIPE_CLK,
739                         },
740                         .num_parents = 1,
741                         .ops = &clk_regmap_phy_mux_ops,
742                 },
743         },
744 };
745
746 static struct clk_regmap_phy_mux gcc_pcie_4_pipe_clk_src = {
747         .reg = 0x6b05c,
748         .clkr = {
749                 .hw.init = &(const struct clk_init_data) {
750                         .name = "gcc_pcie_4_pipe_clk_src",
751                         .parent_data = &(const struct clk_parent_data){
752                                 .index = DT_PCIE_4_PIPE_CLK,
753                         },
754                         .num_parents = 1,
755                         .ops = &clk_regmap_phy_mux_ops,
756                 },
757         },
758 };
759
760 static struct clk_regmap_mux gcc_ufs_card_rx_symbol_0_clk_src = {
761         .reg = 0x75058,
762         .shift = 0,
763         .width = 2,
764         .parent_map = gcc_parent_map_16,
765         .clkr = {
766                 .hw.init = &(const struct clk_init_data) {
767                         .name = "gcc_ufs_card_rx_symbol_0_clk_src",
768                         .parent_data = gcc_parent_data_16,
769                         .num_parents = ARRAY_SIZE(gcc_parent_data_16),
770                         .ops = &clk_regmap_mux_closest_ops,
771                 },
772         },
773 };
774
775 static struct clk_regmap_mux gcc_ufs_card_rx_symbol_1_clk_src = {
776         .reg = 0x750c8,
777         .shift = 0,
778         .width = 2,
779         .parent_map = gcc_parent_map_17,
780         .clkr = {
781                 .hw.init = &(const struct clk_init_data) {
782                         .name = "gcc_ufs_card_rx_symbol_1_clk_src",
783                         .parent_data = gcc_parent_data_17,
784                         .num_parents = ARRAY_SIZE(gcc_parent_data_17),
785                         .ops = &clk_regmap_mux_closest_ops,
786                 },
787         },
788 };
789
790 static struct clk_regmap_mux gcc_ufs_card_tx_symbol_0_clk_src = {
791         .reg = 0x75048,
792         .shift = 0,
793         .width = 2,
794         .parent_map = gcc_parent_map_18,
795         .clkr = {
796                 .hw.init = &(const struct clk_init_data) {
797                         .name = "gcc_ufs_card_tx_symbol_0_clk_src",
798                         .parent_data = gcc_parent_data_18,
799                         .num_parents = ARRAY_SIZE(gcc_parent_data_18),
800                         .ops = &clk_regmap_mux_closest_ops,
801                 },
802         },
803 };
804
805 static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src = {
806         .reg = 0x77058,
807         .shift = 0,
808         .width = 2,
809         .parent_map = gcc_parent_map_19,
810         .clkr = {
811                 .hw.init = &(const struct clk_init_data) {
812                         .name = "gcc_ufs_phy_rx_symbol_0_clk_src",
813                         .parent_data = gcc_parent_data_19,
814                         .num_parents = ARRAY_SIZE(gcc_parent_data_19),
815                         .ops = &clk_regmap_mux_closest_ops,
816                 },
817         },
818 };
819
820 static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src = {
821         .reg = 0x770c8,
822         .shift = 0,
823         .width = 2,
824         .parent_map = gcc_parent_map_20,
825         .clkr = {
826                 .hw.init = &(const struct clk_init_data) {
827                         .name = "gcc_ufs_phy_rx_symbol_1_clk_src",
828                         .parent_data = gcc_parent_data_20,
829                         .num_parents = ARRAY_SIZE(gcc_parent_data_20),
830                         .ops = &clk_regmap_mux_closest_ops,
831                 },
832         },
833 };
834
835 static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src = {
836         .reg = 0x77048,
837         .shift = 0,
838         .width = 2,
839         .parent_map = gcc_parent_map_21,
840         .clkr = {
841                 .hw.init = &(const struct clk_init_data) {
842                         .name = "gcc_ufs_phy_tx_symbol_0_clk_src",
843                         .parent_data = gcc_parent_data_21,
844                         .num_parents = ARRAY_SIZE(gcc_parent_data_21),
845                         .ops = &clk_regmap_mux_closest_ops,
846                 },
847         },
848 };
849
850 static struct clk_regmap_mux gcc_usb34_prim_phy_pipe_clk_src = {
851         .reg = 0xf064,
852         .shift = 0,
853         .width = 2,
854         .parent_map = gcc_parent_map_26,
855         .clkr = {
856                 .hw.init = &(const struct clk_init_data) {
857                         .name = "gcc_usb34_prim_phy_pipe_clk_src",
858                         .parent_data = gcc_parent_data_26,
859                         .num_parents = ARRAY_SIZE(gcc_parent_data_26),
860                         .ops = &clk_regmap_mux_closest_ops,
861                 },
862         },
863 };
864
865 static struct clk_regmap_mux gcc_usb34_sec_phy_pipe_clk_src = {
866         .reg = 0x10064,
867         .shift = 0,
868         .width = 2,
869         .parent_map = gcc_parent_map_27,
870         .clkr = {
871                 .hw.init = &(const struct clk_init_data) {
872                         .name = "gcc_usb34_sec_phy_pipe_clk_src",
873                         .parent_data = gcc_parent_data_27,
874                         .num_parents = ARRAY_SIZE(gcc_parent_data_27),
875                         .ops = &clk_regmap_mux_closest_ops,
876                 },
877         },
878 };
879
880 static struct clk_regmap_mux gcc_usb3_mp_phy_pipe_0_clk_src = {
881         .reg = 0xab060,
882         .shift = 0,
883         .width = 2,
884         .parent_map = gcc_parent_map_24,
885         .clkr = {
886                 .hw.init = &(const struct clk_init_data) {
887                         .name = "gcc_usb3_mp_phy_pipe_0_clk_src",
888                         .parent_data = gcc_parent_data_24,
889                         .num_parents = ARRAY_SIZE(gcc_parent_data_24),
890                         .ops = &clk_regmap_mux_closest_ops,
891                 },
892         },
893 };
894
895 static struct clk_regmap_mux gcc_usb3_mp_phy_pipe_1_clk_src = {
896         .reg = 0xab068,
897         .shift = 0,
898         .width = 2,
899         .parent_map = gcc_parent_map_25,
900         .clkr = {
901                 .hw.init = &(const struct clk_init_data) {
902                         .name = "gcc_usb3_mp_phy_pipe_1_clk_src",
903                         .parent_data = gcc_parent_data_25,
904                         .num_parents = ARRAY_SIZE(gcc_parent_data_25),
905                         .ops = &clk_regmap_mux_closest_ops,
906                 },
907         },
908 };
909
910 static struct clk_regmap_mux gcc_usb4_1_phy_dp_clk_src = {
911         .reg = 0xb8050,
912         .shift = 0,
913         .width = 2,
914         .parent_map = gcc_parent_map_28,
915         .clkr = {
916                 .hw.init = &(const struct clk_init_data) {
917                         .name = "gcc_usb4_1_phy_dp_clk_src",
918                         .parent_data = gcc_parent_data_28,
919                         .num_parents = ARRAY_SIZE(gcc_parent_data_28),
920                         .ops = &clk_regmap_mux_closest_ops,
921                 },
922         },
923 };
924
925 static struct clk_regmap_mux gcc_usb4_1_phy_p2rr2p_pipe_clk_src = {
926         .reg = 0xb80b0,
927         .shift = 0,
928         .width = 2,
929         .parent_map = gcc_parent_map_29,
930         .clkr = {
931                 .hw.init = &(const struct clk_init_data) {
932                         .name = "gcc_usb4_1_phy_p2rr2p_pipe_clk_src",
933                         .parent_data = gcc_parent_data_29,
934                         .num_parents = ARRAY_SIZE(gcc_parent_data_29),
935                         .ops = &clk_regmap_mux_closest_ops,
936                 },
937         },
938 };
939
940 static struct clk_regmap_mux gcc_usb4_1_phy_pcie_pipe_mux_clk_src = {
941         .reg = 0xb80e0,
942         .shift = 0,
943         .width = 2,
944         .parent_map = gcc_parent_map_31,
945         .clkr = {
946                 .hw.init = &(const struct clk_init_data) {
947                         .name = "gcc_usb4_1_phy_pcie_pipe_mux_clk_src",
948                         .parent_data = gcc_parent_data_31,
949                         .num_parents = ARRAY_SIZE(gcc_parent_data_31),
950                         .ops = &clk_regmap_mux_closest_ops,
951                 },
952         },
953 };
954
955 static struct clk_regmap_mux gcc_usb4_1_phy_rx0_clk_src = {
956         .reg = 0xb8090,
957         .shift = 0,
958         .width = 2,
959         .parent_map = gcc_parent_map_32,
960         .clkr = {
961                 .hw.init = &(const struct clk_init_data) {
962                         .name = "gcc_usb4_1_phy_rx0_clk_src",
963                         .parent_data = gcc_parent_data_32,
964                         .num_parents = ARRAY_SIZE(gcc_parent_data_32),
965                         .ops = &clk_regmap_mux_closest_ops,
966                 },
967         },
968 };
969
970 static struct clk_regmap_mux gcc_usb4_1_phy_rx1_clk_src = {
971         .reg = 0xb809c,
972         .shift = 0,
973         .width = 2,
974         .parent_map = gcc_parent_map_33,
975         .clkr = {
976                 .hw.init = &(const struct clk_init_data) {
977                         .name = "gcc_usb4_1_phy_rx1_clk_src",
978                         .parent_data = gcc_parent_data_33,
979                         .num_parents = ARRAY_SIZE(gcc_parent_data_33),
980                         .ops = &clk_regmap_mux_closest_ops,
981                 },
982         },
983 };
984
985 static struct clk_regmap_mux gcc_usb4_1_phy_sys_clk_src = {
986         .reg = 0xb80c0,
987         .shift = 0,
988         .width = 2,
989         .parent_map = gcc_parent_map_34,
990         .clkr = {
991                 .hw.init = &(const struct clk_init_data) {
992                         .name = "gcc_usb4_1_phy_sys_clk_src",
993                         .parent_data = gcc_parent_data_34,
994                         .num_parents = ARRAY_SIZE(gcc_parent_data_34),
995                         .ops = &clk_regmap_mux_closest_ops,
996                 },
997         },
998 };
999
1000 static struct clk_regmap_mux gcc_usb4_phy_dp_clk_src = {
1001         .reg = 0x2a050,
1002         .shift = 0,
1003         .width = 2,
1004         .parent_map = gcc_parent_map_35,
1005         .clkr = {
1006                 .hw.init = &(const struct clk_init_data) {
1007                         .name = "gcc_usb4_phy_dp_clk_src",
1008                         .parent_data = gcc_parent_data_35,
1009                         .num_parents = ARRAY_SIZE(gcc_parent_data_35),
1010                         .ops = &clk_regmap_mux_closest_ops,
1011                 },
1012         },
1013 };
1014
1015 static struct clk_regmap_mux gcc_usb4_phy_p2rr2p_pipe_clk_src = {
1016         .reg = 0x2a0b0,
1017         .shift = 0,
1018         .width = 2,
1019         .parent_map = gcc_parent_map_36,
1020         .clkr = {
1021                 .hw.init = &(const struct clk_init_data) {
1022                         .name = "gcc_usb4_phy_p2rr2p_pipe_clk_src",
1023                         .parent_data = gcc_parent_data_36,
1024                         .num_parents = ARRAY_SIZE(gcc_parent_data_36),
1025                         .ops = &clk_regmap_mux_closest_ops,
1026                 },
1027         },
1028 };
1029
1030 static struct clk_regmap_mux gcc_usb4_phy_pcie_pipe_mux_clk_src = {
1031         .reg = 0x2a0e0,
1032         .shift = 0,
1033         .width = 2,
1034         .parent_map = gcc_parent_map_38,
1035         .clkr = {
1036                 .hw.init = &(const struct clk_init_data) {
1037                         .name = "gcc_usb4_phy_pcie_pipe_mux_clk_src",
1038                         .parent_data = gcc_parent_data_38,
1039                         .num_parents = ARRAY_SIZE(gcc_parent_data_38),
1040                         .ops = &clk_regmap_mux_closest_ops,
1041                 },
1042         },
1043 };
1044
1045 static struct clk_regmap_mux gcc_usb4_phy_rx0_clk_src = {
1046         .reg = 0x2a090,
1047         .shift = 0,
1048         .width = 2,
1049         .parent_map = gcc_parent_map_39,
1050         .clkr = {
1051                 .hw.init = &(const struct clk_init_data) {
1052                         .name = "gcc_usb4_phy_rx0_clk_src",
1053                         .parent_data = gcc_parent_data_39,
1054                         .num_parents = ARRAY_SIZE(gcc_parent_data_39),
1055                         .ops = &clk_regmap_mux_closest_ops,
1056                 },
1057         },
1058 };
1059
1060 static struct clk_regmap_mux gcc_usb4_phy_rx1_clk_src = {
1061         .reg = 0x2a09c,
1062         .shift = 0,
1063         .width = 2,
1064         .parent_map = gcc_parent_map_40,
1065         .clkr = {
1066                 .hw.init = &(const struct clk_init_data) {
1067                         .name = "gcc_usb4_phy_rx1_clk_src",
1068                         .parent_data = gcc_parent_data_40,
1069                         .num_parents = ARRAY_SIZE(gcc_parent_data_40),
1070                         .ops = &clk_regmap_mux_closest_ops,
1071                 },
1072         },
1073 };
1074
1075 static struct clk_regmap_mux gcc_usb4_phy_sys_clk_src = {
1076         .reg = 0x2a0c0,
1077         .shift = 0,
1078         .width = 2,
1079         .parent_map = gcc_parent_map_41,
1080         .clkr = {
1081                 .hw.init = &(const struct clk_init_data) {
1082                         .name = "gcc_usb4_phy_sys_clk_src",
1083                         .parent_data = gcc_parent_data_41,
1084                         .num_parents = ARRAY_SIZE(gcc_parent_data_41),
1085                         .ops = &clk_regmap_mux_closest_ops,
1086                 },
1087         },
1088 };
1089
1090 static const struct freq_tbl ftbl_gcc_emac0_ptp_clk_src[] = {
1091         F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1092         F(125000000, P_GCC_GPLL7_OUT_MAIN, 4, 0, 0),
1093         F(230400000, P_GCC_GPLL4_OUT_MAIN, 3.5, 0, 0),
1094         { }
1095 };
1096
1097 static struct clk_rcg2 gcc_emac0_ptp_clk_src = {
1098         .cmd_rcgr = 0xaa020,
1099         .mnd_width = 0,
1100         .hid_width = 5,
1101         .parent_map = gcc_parent_map_4,
1102         .freq_tbl = ftbl_gcc_emac0_ptp_clk_src,
1103         .clkr.hw.init = &(const struct clk_init_data) {
1104                 .name = "gcc_emac0_ptp_clk_src",
1105                 .parent_data = gcc_parent_data_4,
1106                 .num_parents = ARRAY_SIZE(gcc_parent_data_4),
1107                 .ops = &clk_rcg2_shared_ops,
1108         },
1109 };
1110
1111 static const struct freq_tbl ftbl_gcc_emac0_rgmii_clk_src[] = {
1112         F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
1113         F(125000000, P_GCC_GPLL7_OUT_MAIN, 4, 0, 0),
1114         F(250000000, P_GCC_GPLL7_OUT_MAIN, 2, 0, 0),
1115         { }
1116 };
1117
1118 static struct clk_rcg2 gcc_emac0_rgmii_clk_src = {
1119         .cmd_rcgr = 0xaa040,
1120         .mnd_width = 8,
1121         .hid_width = 5,
1122         .parent_map = gcc_parent_map_8,
1123         .freq_tbl = ftbl_gcc_emac0_rgmii_clk_src,
1124         .clkr.hw.init = &(const struct clk_init_data) {
1125                 .name = "gcc_emac0_rgmii_clk_src",
1126                 .parent_data = gcc_parent_data_8,
1127                 .num_parents = ARRAY_SIZE(gcc_parent_data_8),
1128                 .ops = &clk_rcg2_shared_ops,
1129         },
1130 };
1131
1132 static struct clk_rcg2 gcc_emac1_ptp_clk_src = {
1133         .cmd_rcgr = 0xba020,
1134         .mnd_width = 0,
1135         .hid_width = 5,
1136         .parent_map = gcc_parent_map_4,
1137         .freq_tbl = ftbl_gcc_emac0_ptp_clk_src,
1138         .clkr.hw.init = &(const struct clk_init_data) {
1139                 .name = "gcc_emac1_ptp_clk_src",
1140                 .parent_data = gcc_parent_data_4,
1141                 .num_parents = ARRAY_SIZE(gcc_parent_data_4),
1142                 .ops = &clk_rcg2_shared_ops,
1143         },
1144 };
1145
1146 static struct clk_rcg2 gcc_emac1_rgmii_clk_src = {
1147         .cmd_rcgr = 0xba040,
1148         .mnd_width = 8,
1149         .hid_width = 5,
1150         .parent_map = gcc_parent_map_9,
1151         .freq_tbl = ftbl_gcc_emac0_rgmii_clk_src,
1152         .clkr.hw.init = &(const struct clk_init_data) {
1153                 .name = "gcc_emac1_rgmii_clk_src",
1154                 .parent_data = gcc_parent_data_9,
1155                 .num_parents = ARRAY_SIZE(gcc_parent_data_9),
1156                 .ops = &clk_rcg2_shared_ops,
1157         },
1158 };
1159
1160 static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
1161         F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
1162         F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
1163         F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
1164         { }
1165 };
1166
1167 static struct clk_rcg2 gcc_gp1_clk_src = {
1168         .cmd_rcgr = 0x64004,
1169         .mnd_width = 16,
1170         .hid_width = 5,
1171         .parent_map = gcc_parent_map_2,
1172         .freq_tbl = ftbl_gcc_gp1_clk_src,
1173         .clkr.hw.init = &(const struct clk_init_data) {
1174                 .name = "gcc_gp1_clk_src",
1175                 .parent_data = gcc_parent_data_2,
1176                 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
1177                 .ops = &clk_rcg2_shared_ops,
1178         },
1179 };
1180
1181 static struct clk_rcg2 gcc_gp2_clk_src = {
1182         .cmd_rcgr = 0x65004,
1183         .mnd_width = 16,
1184         .hid_width = 5,
1185         .parent_map = gcc_parent_map_2,
1186         .freq_tbl = ftbl_gcc_gp1_clk_src,
1187         .clkr.hw.init = &(const struct clk_init_data) {
1188                 .name = "gcc_gp2_clk_src",
1189                 .parent_data = gcc_parent_data_2,
1190                 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
1191                 .ops = &clk_rcg2_shared_ops,
1192         },
1193 };
1194
1195 static struct clk_rcg2 gcc_gp3_clk_src = {
1196         .cmd_rcgr = 0x66004,
1197         .mnd_width = 16,
1198         .hid_width = 5,
1199         .parent_map = gcc_parent_map_2,
1200         .freq_tbl = ftbl_gcc_gp1_clk_src,
1201         .clkr.hw.init = &(const struct clk_init_data) {
1202                 .name = "gcc_gp3_clk_src",
1203                 .parent_data = gcc_parent_data_2,
1204                 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
1205                 .ops = &clk_rcg2_shared_ops,
1206         },
1207 };
1208
1209 static struct clk_rcg2 gcc_gp4_clk_src = {
1210         .cmd_rcgr = 0xc2004,
1211         .mnd_width = 16,
1212         .hid_width = 5,
1213         .parent_map = gcc_parent_map_2,
1214         .freq_tbl = ftbl_gcc_gp1_clk_src,
1215         .clkr.hw.init = &(const struct clk_init_data) {
1216                 .name = "gcc_gp4_clk_src",
1217                 .parent_data = gcc_parent_data_2,
1218                 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
1219                 .ops = &clk_rcg2_shared_ops,
1220         },
1221 };
1222
1223 static struct clk_rcg2 gcc_gp5_clk_src = {
1224         .cmd_rcgr = 0xc3004,
1225         .mnd_width = 16,
1226         .hid_width = 5,
1227         .parent_map = gcc_parent_map_2,
1228         .freq_tbl = ftbl_gcc_gp1_clk_src,
1229         .clkr.hw.init = &(const struct clk_init_data) {
1230                 .name = "gcc_gp5_clk_src",
1231                 .parent_data = gcc_parent_data_2,
1232                 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
1233                 .ops = &clk_rcg2_shared_ops,
1234         },
1235 };
1236
1237 static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
1238         F(9600000, P_BI_TCXO, 2, 0, 0),
1239         F(19200000, P_BI_TCXO, 1, 0, 0),
1240         { }
1241 };
1242
1243 static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
1244         .cmd_rcgr = 0xa4054,
1245         .mnd_width = 16,
1246         .hid_width = 5,
1247         .parent_map = gcc_parent_map_1,
1248         .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
1249         .clkr.hw.init = &(const struct clk_init_data) {
1250                 .name = "gcc_pcie_0_aux_clk_src",
1251                 .parent_data = gcc_parent_data_1,
1252                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1253                 .ops = &clk_rcg2_shared_ops,
1254         },
1255 };
1256
1257 static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = {
1258         F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1259         { }
1260 };
1261
1262 static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = {
1263         .cmd_rcgr = 0xa403c,
1264         .mnd_width = 0,
1265         .hid_width = 5,
1266         .parent_map = gcc_parent_map_0,
1267         .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
1268         .clkr.hw.init = &(const struct clk_init_data) {
1269                 .name = "gcc_pcie_0_phy_rchng_clk_src",
1270                 .parent_data = gcc_parent_data_0,
1271                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1272                 .ops = &clk_rcg2_shared_ops,
1273         },
1274 };
1275
1276 static const struct freq_tbl ftbl_gcc_pcie_1_aux_clk_src[] = {
1277         F(19200000, P_BI_TCXO, 1, 0, 0),
1278         { }
1279 };
1280
1281 static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
1282         .cmd_rcgr = 0x8d054,
1283         .mnd_width = 16,
1284         .hid_width = 5,
1285         .parent_map = gcc_parent_map_1,
1286         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
1287         .clkr.hw.init = &(const struct clk_init_data) {
1288                 .name = "gcc_pcie_1_aux_clk_src",
1289                 .parent_data = gcc_parent_data_1,
1290                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1291                 .ops = &clk_rcg2_shared_ops,
1292         },
1293 };
1294
1295 static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = {
1296         .cmd_rcgr = 0x8d03c,
1297         .mnd_width = 0,
1298         .hid_width = 5,
1299         .parent_map = gcc_parent_map_0,
1300         .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
1301         .clkr.hw.init = &(const struct clk_init_data) {
1302                 .name = "gcc_pcie_1_phy_rchng_clk_src",
1303                 .parent_data = gcc_parent_data_0,
1304                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1305                 .ops = &clk_rcg2_shared_ops,
1306         },
1307 };
1308
1309 static struct clk_rcg2 gcc_pcie_2a_aux_clk_src = {
1310         .cmd_rcgr = 0x9d064,
1311         .mnd_width = 16,
1312         .hid_width = 5,
1313         .parent_map = gcc_parent_map_1,
1314         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
1315         .clkr.hw.init = &(const struct clk_init_data) {
1316                 .name = "gcc_pcie_2a_aux_clk_src",
1317                 .parent_data = gcc_parent_data_1,
1318                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1319                 .ops = &clk_rcg2_shared_ops,
1320         },
1321 };
1322
1323 static struct clk_rcg2 gcc_pcie_2a_phy_rchng_clk_src = {
1324         .cmd_rcgr = 0x9d044,
1325         .mnd_width = 0,
1326         .hid_width = 5,
1327         .parent_map = gcc_parent_map_0,
1328         .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
1329         .clkr.hw.init = &(const struct clk_init_data) {
1330                 .name = "gcc_pcie_2a_phy_rchng_clk_src",
1331                 .parent_data = gcc_parent_data_0,
1332                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1333                 .ops = &clk_rcg2_shared_ops,
1334         },
1335 };
1336
1337 static struct clk_rcg2 gcc_pcie_2b_aux_clk_src = {
1338         .cmd_rcgr = 0x9e064,
1339         .mnd_width = 16,
1340         .hid_width = 5,
1341         .parent_map = gcc_parent_map_1,
1342         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
1343         .clkr.hw.init = &(const struct clk_init_data) {
1344                 .name = "gcc_pcie_2b_aux_clk_src",
1345                 .parent_data = gcc_parent_data_1,
1346                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1347                 .ops = &clk_rcg2_shared_ops,
1348         },
1349 };
1350
1351 static struct clk_rcg2 gcc_pcie_2b_phy_rchng_clk_src = {
1352         .cmd_rcgr = 0x9e044,
1353         .mnd_width = 0,
1354         .hid_width = 5,
1355         .parent_map = gcc_parent_map_0,
1356         .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
1357         .clkr.hw.init = &(const struct clk_init_data) {
1358                 .name = "gcc_pcie_2b_phy_rchng_clk_src",
1359                 .parent_data = gcc_parent_data_0,
1360                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1361                 .ops = &clk_rcg2_shared_ops,
1362         },
1363 };
1364
1365 static struct clk_rcg2 gcc_pcie_3a_aux_clk_src = {
1366         .cmd_rcgr = 0xa0064,
1367         .mnd_width = 16,
1368         .hid_width = 5,
1369         .parent_map = gcc_parent_map_1,
1370         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
1371         .clkr.hw.init = &(const struct clk_init_data) {
1372                 .name = "gcc_pcie_3a_aux_clk_src",
1373                 .parent_data = gcc_parent_data_1,
1374                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1375                 .ops = &clk_rcg2_shared_ops,
1376         },
1377 };
1378
1379 static struct clk_rcg2 gcc_pcie_3a_phy_rchng_clk_src = {
1380         .cmd_rcgr = 0xa0044,
1381         .mnd_width = 0,
1382         .hid_width = 5,
1383         .parent_map = gcc_parent_map_0,
1384         .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
1385         .clkr.hw.init = &(const struct clk_init_data) {
1386                 .name = "gcc_pcie_3a_phy_rchng_clk_src",
1387                 .parent_data = gcc_parent_data_0,
1388                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1389                 .ops = &clk_rcg2_shared_ops,
1390         },
1391 };
1392
1393 static struct clk_rcg2 gcc_pcie_3b_aux_clk_src = {
1394         .cmd_rcgr = 0xa2064,
1395         .mnd_width = 16,
1396         .hid_width = 5,
1397         .parent_map = gcc_parent_map_1,
1398         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
1399         .clkr.hw.init = &(const struct clk_init_data) {
1400                 .name = "gcc_pcie_3b_aux_clk_src",
1401                 .parent_data = gcc_parent_data_1,
1402                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1403                 .ops = &clk_rcg2_shared_ops,
1404         },
1405 };
1406
1407 static struct clk_rcg2 gcc_pcie_3b_phy_rchng_clk_src = {
1408         .cmd_rcgr = 0xa2044,
1409         .mnd_width = 0,
1410         .hid_width = 5,
1411         .parent_map = gcc_parent_map_0,
1412         .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
1413         .clkr.hw.init = &(const struct clk_init_data) {
1414                 .name = "gcc_pcie_3b_phy_rchng_clk_src",
1415                 .parent_data = gcc_parent_data_0,
1416                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1417                 .ops = &clk_rcg2_shared_ops,
1418         },
1419 };
1420
1421 static struct clk_rcg2 gcc_pcie_4_aux_clk_src = {
1422         .cmd_rcgr = 0x6b064,
1423         .mnd_width = 16,
1424         .hid_width = 5,
1425         .parent_map = gcc_parent_map_1,
1426         .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
1427         .clkr.hw.init = &(const struct clk_init_data) {
1428                 .name = "gcc_pcie_4_aux_clk_src",
1429                 .parent_data = gcc_parent_data_1,
1430                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1431                 .ops = &clk_rcg2_shared_ops,
1432         },
1433 };
1434
1435 static struct clk_rcg2 gcc_pcie_4_phy_rchng_clk_src = {
1436         .cmd_rcgr = 0x6b044,
1437         .mnd_width = 0,
1438         .hid_width = 5,
1439         .parent_map = gcc_parent_map_0,
1440         .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
1441         .clkr.hw.init = &(const struct clk_init_data) {
1442                 .name = "gcc_pcie_4_phy_rchng_clk_src",
1443                 .parent_data = gcc_parent_data_0,
1444                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1445                 .ops = &clk_rcg2_shared_ops,
1446         },
1447 };
1448
1449 static struct clk_rcg2 gcc_pcie_rscc_xo_clk_src = {
1450         .cmd_rcgr = 0xae00c,
1451         .mnd_width = 0,
1452         .hid_width = 5,
1453         .parent_map = gcc_parent_map_3,
1454         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
1455         .clkr.hw.init = &(const struct clk_init_data) {
1456                 .name = "gcc_pcie_rscc_xo_clk_src",
1457                 .parent_data = gcc_parent_data_3,
1458                 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
1459                 .ops = &clk_rcg2_shared_ops,
1460         },
1461 };
1462
1463 static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
1464         F(60000000, P_GCC_GPLL0_OUT_EVEN, 5, 0, 0),
1465         { }
1466 };
1467
1468 static struct clk_rcg2 gcc_pdm2_clk_src = {
1469         .cmd_rcgr = 0x33010,
1470         .mnd_width = 0,
1471         .hid_width = 5,
1472         .parent_map = gcc_parent_map_0,
1473         .freq_tbl = ftbl_gcc_pdm2_clk_src,
1474         .clkr.hw.init = &(const struct clk_init_data) {
1475                 .name = "gcc_pdm2_clk_src",
1476                 .parent_data = gcc_parent_data_0,
1477                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1478                 .ops = &clk_rcg2_shared_ops,
1479         },
1480 };
1481
1482 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
1483         F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
1484         F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
1485         F(19200000, P_BI_TCXO, 1, 0, 0),
1486         F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
1487         F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
1488         F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
1489         F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
1490         F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1491         F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
1492         F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
1493         F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
1494         { }
1495 };
1496
1497 static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {
1498         .name = "gcc_qupv3_wrap0_s0_clk_src",
1499         .parent_data = gcc_parent_data_0,
1500         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1501         .flags = CLK_SET_RATE_PARENT,
1502         .ops = &clk_rcg2_shared_ops,
1503 };
1504
1505 static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
1506         .cmd_rcgr = 0x17148,
1507         .mnd_width = 16,
1508         .hid_width = 5,
1509         .parent_map = gcc_parent_map_0,
1510         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1511         .clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,
1512 };
1513
1514 static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {
1515         .name = "gcc_qupv3_wrap0_s1_clk_src",
1516         .parent_data = gcc_parent_data_0,
1517         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1518         .flags = CLK_SET_RATE_PARENT,
1519         .ops = &clk_rcg2_shared_ops,
1520 };
1521
1522 static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
1523         .cmd_rcgr = 0x17278,
1524         .mnd_width = 16,
1525         .hid_width = 5,
1526         .parent_map = gcc_parent_map_0,
1527         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1528         .clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,
1529 };
1530
1531 static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {
1532         .name = "gcc_qupv3_wrap0_s2_clk_src",
1533         .parent_data = gcc_parent_data_0,
1534         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1535         .flags = CLK_SET_RATE_PARENT,
1536         .ops = &clk_rcg2_shared_ops,
1537 };
1538
1539 static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
1540         .cmd_rcgr = 0x173a8,
1541         .mnd_width = 16,
1542         .hid_width = 5,
1543         .parent_map = gcc_parent_map_0,
1544         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1545         .clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,
1546 };
1547
1548 static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {
1549         .name = "gcc_qupv3_wrap0_s3_clk_src",
1550         .parent_data = gcc_parent_data_0,
1551         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1552         .flags = CLK_SET_RATE_PARENT,
1553         .ops = &clk_rcg2_shared_ops,
1554 };
1555
1556 static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
1557         .cmd_rcgr = 0x174d8,
1558         .mnd_width = 16,
1559         .hid_width = 5,
1560         .parent_map = gcc_parent_map_0,
1561         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1562         .clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,
1563 };
1564
1565 static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {
1566         .name = "gcc_qupv3_wrap0_s4_clk_src",
1567         .parent_data = gcc_parent_data_0,
1568         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1569         .flags = CLK_SET_RATE_PARENT,
1570         .ops = &clk_rcg2_shared_ops,
1571 };
1572
1573 static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
1574         .cmd_rcgr = 0x17608,
1575         .mnd_width = 16,
1576         .hid_width = 5,
1577         .parent_map = gcc_parent_map_0,
1578         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1579         .clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,
1580 };
1581
1582 static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {
1583         .name = "gcc_qupv3_wrap0_s5_clk_src",
1584         .parent_data = gcc_parent_data_0,
1585         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1586         .flags = CLK_SET_RATE_PARENT,
1587         .ops = &clk_rcg2_shared_ops,
1588 };
1589
1590 static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
1591         .cmd_rcgr = 0x17738,
1592         .mnd_width = 16,
1593         .hid_width = 5,
1594         .parent_map = gcc_parent_map_0,
1595         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1596         .clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,
1597 };
1598
1599 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s6_clk_src[] = {
1600         F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
1601         F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
1602         F(19200000, P_BI_TCXO, 1, 0, 0),
1603         F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
1604         F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
1605         F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
1606         F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
1607         F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1608         F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
1609         F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
1610         F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
1611         { }
1612 };
1613
1614 static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = {
1615         .name = "gcc_qupv3_wrap0_s6_clk_src",
1616         .parent_data = gcc_parent_data_0,
1617         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1618         .flags = CLK_SET_RATE_PARENT,
1619         .ops = &clk_rcg2_shared_ops,
1620 };
1621
1622 static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
1623         .cmd_rcgr = 0x17868,
1624         .mnd_width = 16,
1625         .hid_width = 5,
1626         .parent_map = gcc_parent_map_0,
1627         .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src,
1628         .clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init,
1629 };
1630
1631 static struct clk_init_data gcc_qupv3_wrap0_s7_clk_src_init = {
1632         .name = "gcc_qupv3_wrap0_s7_clk_src",
1633         .parent_data = gcc_parent_data_0,
1634         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1635         .flags = CLK_SET_RATE_PARENT,
1636         .ops = &clk_rcg2_shared_ops,
1637 };
1638
1639 static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
1640         .cmd_rcgr = 0x17998,
1641         .mnd_width = 16,
1642         .hid_width = 5,
1643         .parent_map = gcc_parent_map_0,
1644         .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src,
1645         .clkr.hw.init = &gcc_qupv3_wrap0_s7_clk_src_init,
1646 };
1647
1648 static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
1649         .name = "gcc_qupv3_wrap1_s0_clk_src",
1650         .parent_data = gcc_parent_data_0,
1651         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1652         .flags = CLK_SET_RATE_PARENT,
1653         .ops = &clk_rcg2_shared_ops,
1654 };
1655
1656 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
1657         .cmd_rcgr = 0x18148,
1658         .mnd_width = 16,
1659         .hid_width = 5,
1660         .parent_map = gcc_parent_map_0,
1661         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1662         .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
1663 };
1664
1665 static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
1666         .name = "gcc_qupv3_wrap1_s1_clk_src",
1667         .parent_data = gcc_parent_data_0,
1668         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1669         .flags = CLK_SET_RATE_PARENT,
1670         .ops = &clk_rcg2_shared_ops,
1671 };
1672
1673 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
1674         .cmd_rcgr = 0x18278,
1675         .mnd_width = 16,
1676         .hid_width = 5,
1677         .parent_map = gcc_parent_map_0,
1678         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1679         .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
1680 };
1681
1682 static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {
1683         .name = "gcc_qupv3_wrap1_s2_clk_src",
1684         .parent_data = gcc_parent_data_0,
1685         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1686         .flags = CLK_SET_RATE_PARENT,
1687         .ops = &clk_rcg2_shared_ops,
1688 };
1689
1690 static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
1691         .cmd_rcgr = 0x183a8,
1692         .mnd_width = 16,
1693         .hid_width = 5,
1694         .parent_map = gcc_parent_map_0,
1695         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1696         .clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,
1697 };
1698
1699 static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
1700         .name = "gcc_qupv3_wrap1_s3_clk_src",
1701         .parent_data = gcc_parent_data_0,
1702         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1703         .flags = CLK_SET_RATE_PARENT,
1704         .ops = &clk_rcg2_shared_ops,
1705 };
1706
1707 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
1708         .cmd_rcgr = 0x184d8,
1709         .mnd_width = 16,
1710         .hid_width = 5,
1711         .parent_map = gcc_parent_map_0,
1712         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1713         .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
1714 };
1715
1716 static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
1717         .name = "gcc_qupv3_wrap1_s4_clk_src",
1718         .parent_data = gcc_parent_data_0,
1719         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1720         .flags = CLK_SET_RATE_PARENT,
1721         .ops = &clk_rcg2_shared_ops,
1722 };
1723
1724 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
1725         .cmd_rcgr = 0x18608,
1726         .mnd_width = 16,
1727         .hid_width = 5,
1728         .parent_map = gcc_parent_map_0,
1729         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1730         .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
1731 };
1732
1733 static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
1734         .name = "gcc_qupv3_wrap1_s5_clk_src",
1735         .parent_data = gcc_parent_data_0,
1736         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1737         .flags = CLK_SET_RATE_PARENT,
1738         .ops = &clk_rcg2_shared_ops,
1739 };
1740
1741 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
1742         .cmd_rcgr = 0x18738,
1743         .mnd_width = 16,
1744         .hid_width = 5,
1745         .parent_map = gcc_parent_map_0,
1746         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1747         .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
1748 };
1749
1750 static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {
1751         .name = "gcc_qupv3_wrap1_s6_clk_src",
1752         .parent_data = gcc_parent_data_0,
1753         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1754         .flags = CLK_SET_RATE_PARENT,
1755         .ops = &clk_rcg2_shared_ops,
1756 };
1757
1758 static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {
1759         .cmd_rcgr = 0x18868,
1760         .mnd_width = 16,
1761         .hid_width = 5,
1762         .parent_map = gcc_parent_map_0,
1763         .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src,
1764         .clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,
1765 };
1766
1767 static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = {
1768         .name = "gcc_qupv3_wrap1_s7_clk_src",
1769         .parent_data = gcc_parent_data_0,
1770         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1771         .flags = CLK_SET_RATE_PARENT,
1772         .ops = &clk_rcg2_shared_ops,
1773 };
1774
1775 static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = {
1776         .cmd_rcgr = 0x18998,
1777         .mnd_width = 16,
1778         .hid_width = 5,
1779         .parent_map = gcc_parent_map_0,
1780         .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src,
1781         .clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init,
1782 };
1783
1784 static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = {
1785         .name = "gcc_qupv3_wrap2_s0_clk_src",
1786         .parent_data = gcc_parent_data_0,
1787         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1788         .flags = CLK_SET_RATE_PARENT,
1789         .ops = &clk_rcg2_shared_ops,
1790 };
1791
1792 static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
1793         .cmd_rcgr = 0x1e148,
1794         .mnd_width = 16,
1795         .hid_width = 5,
1796         .parent_map = gcc_parent_map_0,
1797         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1798         .clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init,
1799 };
1800
1801 static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = {
1802         .name = "gcc_qupv3_wrap2_s1_clk_src",
1803         .parent_data = gcc_parent_data_0,
1804         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1805         .flags = CLK_SET_RATE_PARENT,
1806         .ops = &clk_rcg2_shared_ops,
1807 };
1808
1809 static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
1810         .cmd_rcgr = 0x1e278,
1811         .mnd_width = 16,
1812         .hid_width = 5,
1813         .parent_map = gcc_parent_map_0,
1814         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1815         .clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init,
1816 };
1817
1818 static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = {
1819         .name = "gcc_qupv3_wrap2_s2_clk_src",
1820         .parent_data = gcc_parent_data_0,
1821         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1822         .flags = CLK_SET_RATE_PARENT,
1823         .ops = &clk_rcg2_shared_ops,
1824 };
1825
1826 static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
1827         .cmd_rcgr = 0x1e3a8,
1828         .mnd_width = 16,
1829         .hid_width = 5,
1830         .parent_map = gcc_parent_map_0,
1831         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1832         .clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init,
1833 };
1834
1835 static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = {
1836         .name = "gcc_qupv3_wrap2_s3_clk_src",
1837         .parent_data = gcc_parent_data_0,
1838         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1839         .flags = CLK_SET_RATE_PARENT,
1840         .ops = &clk_rcg2_shared_ops,
1841 };
1842
1843 static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
1844         .cmd_rcgr = 0x1e4d8,
1845         .mnd_width = 16,
1846         .hid_width = 5,
1847         .parent_map = gcc_parent_map_0,
1848         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1849         .clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init,
1850 };
1851
1852 static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = {
1853         .name = "gcc_qupv3_wrap2_s4_clk_src",
1854         .parent_data = gcc_parent_data_0,
1855         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1856         .flags = CLK_SET_RATE_PARENT,
1857         .ops = &clk_rcg2_shared_ops,
1858 };
1859
1860 static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
1861         .cmd_rcgr = 0x1e608,
1862         .mnd_width = 16,
1863         .hid_width = 5,
1864         .parent_map = gcc_parent_map_0,
1865         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1866         .clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init,
1867 };
1868
1869 static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = {
1870         .name = "gcc_qupv3_wrap2_s5_clk_src",
1871         .parent_data = gcc_parent_data_0,
1872         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1873         .flags = CLK_SET_RATE_PARENT,
1874         .ops = &clk_rcg2_shared_ops,
1875 };
1876
1877 static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {
1878         .cmd_rcgr = 0x1e738,
1879         .mnd_width = 16,
1880         .hid_width = 5,
1881         .parent_map = gcc_parent_map_0,
1882         .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1883         .clkr.hw.init = &gcc_qupv3_wrap2_s5_clk_src_init,
1884 };
1885
1886 static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init = {
1887         .name = "gcc_qupv3_wrap2_s6_clk_src",
1888         .parent_data = gcc_parent_data_0,
1889         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1890         .flags = CLK_SET_RATE_PARENT,
1891         .ops = &clk_rcg2_shared_ops,
1892 };
1893
1894 static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src = {
1895         .cmd_rcgr = 0x1e868,
1896         .mnd_width = 16,
1897         .hid_width = 5,
1898         .parent_map = gcc_parent_map_0,
1899         .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src,
1900         .clkr.hw.init = &gcc_qupv3_wrap2_s6_clk_src_init,
1901 };
1902
1903 static struct clk_init_data gcc_qupv3_wrap2_s7_clk_src_init = {
1904         .name = "gcc_qupv3_wrap2_s7_clk_src",
1905         .parent_data = gcc_parent_data_0,
1906         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1907         .flags = CLK_SET_RATE_PARENT,
1908         .ops = &clk_rcg2_shared_ops,
1909 };
1910
1911 static struct clk_rcg2 gcc_qupv3_wrap2_s7_clk_src = {
1912         .cmd_rcgr = 0x1e998,
1913         .mnd_width = 16,
1914         .hid_width = 5,
1915         .parent_map = gcc_parent_map_0,
1916         .freq_tbl = ftbl_gcc_qupv3_wrap0_s6_clk_src,
1917         .clkr.hw.init = &gcc_qupv3_wrap2_s7_clk_src_init,
1918 };
1919
1920 static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
1921         F(400000, P_BI_TCXO, 12, 1, 4),
1922         F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1923         F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
1924         F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1925         F(202000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0),
1926         { }
1927 };
1928
1929 static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
1930         .cmd_rcgr = 0x1400c,
1931         .mnd_width = 8,
1932         .hid_width = 5,
1933         .parent_map = gcc_parent_map_15,
1934         .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
1935         .clkr.hw.init = &(const struct clk_init_data) {
1936                 .name = "gcc_sdcc2_apps_clk_src",
1937                 .parent_data = gcc_parent_data_15,
1938                 .num_parents = ARRAY_SIZE(gcc_parent_data_15),
1939                 .ops = &clk_rcg2_shared_ops,
1940         },
1941 };
1942
1943 static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
1944         F(400000, P_BI_TCXO, 12, 1, 4),
1945         F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1946         F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1947         { }
1948 };
1949
1950 static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
1951         .cmd_rcgr = 0x1600c,
1952         .mnd_width = 8,
1953         .hid_width = 5,
1954         .parent_map = gcc_parent_map_0,
1955         .freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
1956         .clkr.hw.init = &(const struct clk_init_data) {
1957                 .name = "gcc_sdcc4_apps_clk_src",
1958                 .parent_data = gcc_parent_data_0,
1959                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1960                 .ops = &clk_rcg2_shared_ops,
1961         },
1962 };
1963
1964 static const struct freq_tbl ftbl_gcc_ufs_card_axi_clk_src[] = {
1965         F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1966         F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1967         F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
1968         F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
1969         { }
1970 };
1971
1972 static struct clk_rcg2 gcc_ufs_card_axi_clk_src = {
1973         .cmd_rcgr = 0x75024,
1974         .mnd_width = 8,
1975         .hid_width = 5,
1976         .parent_map = gcc_parent_map_0,
1977         .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,
1978         .clkr.hw.init = &(const struct clk_init_data) {
1979                 .name = "gcc_ufs_card_axi_clk_src",
1980                 .parent_data = gcc_parent_data_0,
1981                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1982                 .ops = &clk_rcg2_shared_ops,
1983         },
1984 };
1985
1986 static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src[] = {
1987         F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1988         F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
1989         F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
1990         { }
1991 };
1992
1993 static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = {
1994         .cmd_rcgr = 0x7506c,
1995         .mnd_width = 0,
1996         .hid_width = 5,
1997         .parent_map = gcc_parent_map_0,
1998         .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
1999         .clkr.hw.init = &(const struct clk_init_data) {
2000                 .name = "gcc_ufs_card_ice_core_clk_src",
2001                 .parent_data = gcc_parent_data_0,
2002                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
2003                 .ops = &clk_rcg2_shared_ops,
2004         },
2005 };
2006
2007 static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = {
2008         .cmd_rcgr = 0x750a0,
2009         .mnd_width = 0,
2010         .hid_width = 5,
2011         .parent_map = gcc_parent_map_3,
2012         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
2013         .clkr.hw.init = &(const struct clk_init_data) {
2014                 .name = "gcc_ufs_card_phy_aux_clk_src",
2015                 .parent_data = gcc_parent_data_3,
2016                 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
2017                 .ops = &clk_rcg2_shared_ops,
2018         },
2019 };
2020
2021 static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = {
2022         .cmd_rcgr = 0x75084,
2023         .mnd_width = 0,
2024         .hid_width = 5,
2025         .parent_map = gcc_parent_map_0,
2026         .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
2027         .clkr.hw.init = &(const struct clk_init_data) {
2028                 .name = "gcc_ufs_card_unipro_core_clk_src",
2029                 .parent_data = gcc_parent_data_0,
2030                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
2031                 .ops = &clk_rcg2_shared_ops,
2032         },
2033 };
2034
2035 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
2036         .cmd_rcgr = 0x77024,
2037         .mnd_width = 8,
2038         .hid_width = 5,
2039         .parent_map = gcc_parent_map_0,
2040         .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,
2041         .clkr.hw.init = &(const struct clk_init_data) {
2042                 .name = "gcc_ufs_phy_axi_clk_src",
2043                 .parent_data = gcc_parent_data_0,
2044                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
2045                 .ops = &clk_rcg2_shared_ops,
2046         },
2047 };
2048
2049 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
2050         .cmd_rcgr = 0x7706c,
2051         .mnd_width = 0,
2052         .hid_width = 5,
2053         .parent_map = gcc_parent_map_0,
2054         .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
2055         .clkr.hw.init = &(const struct clk_init_data) {
2056                 .name = "gcc_ufs_phy_ice_core_clk_src",
2057                 .parent_data = gcc_parent_data_0,
2058                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
2059                 .ops = &clk_rcg2_shared_ops,
2060         },
2061 };
2062
2063 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
2064         .cmd_rcgr = 0x770a0,
2065         .mnd_width = 0,
2066         .hid_width = 5,
2067         .parent_map = gcc_parent_map_3,
2068         .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
2069         .clkr.hw.init = &(const struct clk_init_data) {
2070                 .name = "gcc_ufs_phy_phy_aux_clk_src",
2071                 .parent_data = gcc_parent_data_3,
2072                 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
2073                 .ops = &clk_rcg2_shared_ops,
2074         },
2075 };
2076
2077 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
2078         .cmd_rcgr = 0x77084,
2079         .mnd_width = 0,
2080         .hid_width = 5,
2081         .parent_map = gcc_parent_map_0,
2082         .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
2083         .clkr.hw.init = &(const struct clk_init_data) {
2084                 .name = "gcc_ufs_phy_unipro_core_clk_src",
2085                 .parent_data = gcc_parent_data_0,
2086                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
2087                 .ops = &clk_rcg2_shared_ops,
2088         },
2089 };
2090
2091 static const struct freq_tbl ftbl_gcc_usb30_mp_master_clk_src[] = {
2092         F(66666667, P_GCC_GPLL0_OUT_EVEN, 4.5, 0, 0),
2093         F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0),
2094         F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
2095         F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),
2096         { }
2097 };
2098
2099 static struct clk_rcg2 gcc_usb30_mp_master_clk_src = {
2100         .cmd_rcgr = 0xab020,
2101         .mnd_width = 8,
2102         .hid_width = 5,
2103         .parent_map = gcc_parent_map_0,
2104         .freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
2105         .clkr.hw.init = &(const struct clk_init_data) {
2106                 .name = "gcc_usb30_mp_master_clk_src",
2107                 .parent_data = gcc_parent_data_0,
2108                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
2109                 .ops = &clk_rcg2_shared_ops,
2110         },
2111 };
2112
2113 static struct clk_rcg2 gcc_usb30_mp_mock_utmi_clk_src = {
2114         .cmd_rcgr = 0xab038,
2115         .mnd_width = 0,
2116         .hid_width = 5,
2117         .parent_map = gcc_parent_map_0,
2118         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
2119         .clkr.hw.init = &(const struct clk_init_data) {
2120                 .name = "gcc_usb30_mp_mock_utmi_clk_src",
2121                 .parent_data = gcc_parent_data_0,
2122                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
2123                 .ops = &clk_rcg2_shared_ops,
2124         },
2125 };
2126
2127 static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
2128         .cmd_rcgr = 0xf020,
2129         .mnd_width = 8,
2130         .hid_width = 5,
2131         .parent_map = gcc_parent_map_0,
2132         .freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
2133         .clkr.hw.init = &(const struct clk_init_data) {
2134                 .name = "gcc_usb30_prim_master_clk_src",
2135                 .parent_data = gcc_parent_data_0,
2136                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
2137                 .ops = &clk_rcg2_shared_ops,
2138         },
2139 };
2140
2141 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
2142         .cmd_rcgr = 0xf038,
2143         .mnd_width = 0,
2144         .hid_width = 5,
2145         .parent_map = gcc_parent_map_0,
2146         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
2147         .clkr.hw.init = &(const struct clk_init_data) {
2148                 .name = "gcc_usb30_prim_mock_utmi_clk_src",
2149                 .parent_data = gcc_parent_data_0,
2150                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
2151                 .ops = &clk_rcg2_shared_ops,
2152         },
2153 };
2154
2155 static struct clk_rcg2 gcc_usb30_sec_master_clk_src = {
2156         .cmd_rcgr = 0x10020,
2157         .mnd_width = 8,
2158         .hid_width = 5,
2159         .parent_map = gcc_parent_map_0,
2160         .freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
2161         .clkr.hw.init = &(const struct clk_init_data) {
2162                 .name = "gcc_usb30_sec_master_clk_src",
2163                 .parent_data = gcc_parent_data_0,
2164                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
2165                 .ops = &clk_rcg2_shared_ops,
2166         },
2167 };
2168
2169 static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = {
2170         .cmd_rcgr = 0x10038,
2171         .mnd_width = 0,
2172         .hid_width = 5,
2173         .parent_map = gcc_parent_map_0,
2174         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
2175         .clkr.hw.init = &(const struct clk_init_data) {
2176                 .name = "gcc_usb30_sec_mock_utmi_clk_src",
2177                 .parent_data = gcc_parent_data_0,
2178                 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
2179                 .ops = &clk_rcg2_shared_ops,
2180         },
2181 };
2182
2183 static struct clk_rcg2 gcc_usb3_mp_phy_aux_clk_src = {
2184         .cmd_rcgr = 0xab06c,
2185         .mnd_width = 0,
2186         .hid_width = 5,
2187         .parent_map = gcc_parent_map_1,
2188         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
2189         .clkr.hw.init = &(const struct clk_init_data) {
2190                 .name = "gcc_usb3_mp_phy_aux_clk_src",
2191                 .parent_data = gcc_parent_data_1,
2192                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
2193                 .ops = &clk_rcg2_shared_ops,
2194         },
2195 };
2196
2197 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
2198         .cmd_rcgr = 0xf068,
2199         .mnd_width = 0,
2200         .hid_width = 5,
2201         .parent_map = gcc_parent_map_1,
2202         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
2203         .clkr.hw.init = &(const struct clk_init_data) {
2204                 .name = "gcc_usb3_prim_phy_aux_clk_src",
2205                 .parent_data = gcc_parent_data_1,
2206                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
2207                 .ops = &clk_rcg2_shared_ops,
2208         },
2209 };
2210
2211 static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = {
2212         .cmd_rcgr = 0x10068,
2213         .mnd_width = 0,
2214         .hid_width = 5,
2215         .parent_map = gcc_parent_map_1,
2216         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
2217         .clkr.hw.init = &(const struct clk_init_data) {
2218                 .name = "gcc_usb3_sec_phy_aux_clk_src",
2219                 .parent_data = gcc_parent_data_1,
2220                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
2221                 .ops = &clk_rcg2_shared_ops,
2222         },
2223 };
2224
2225 static const struct freq_tbl ftbl_gcc_usb4_1_master_clk_src[] = {
2226         F(85714286, P_GCC_GPLL0_OUT_EVEN, 3.5, 0, 0),
2227         F(175000000, P_GCC_GPLL8_OUT_MAIN, 4, 0, 0),
2228         F(350000000, P_GCC_GPLL8_OUT_MAIN, 2, 0, 0),
2229         { }
2230 };
2231
2232 static struct clk_rcg2 gcc_usb4_1_master_clk_src = {
2233         .cmd_rcgr = 0xb8018,
2234         .mnd_width = 8,
2235         .hid_width = 5,
2236         .parent_map = gcc_parent_map_5,
2237         .freq_tbl = ftbl_gcc_usb4_1_master_clk_src,
2238         .clkr.hw.init = &(const struct clk_init_data) {
2239                 .name = "gcc_usb4_1_master_clk_src",
2240                 .parent_data = gcc_parent_data_5,
2241                 .num_parents = ARRAY_SIZE(gcc_parent_data_5),
2242                 .ops = &clk_rcg2_shared_ops,
2243         },
2244 };
2245
2246 static const struct freq_tbl ftbl_gcc_usb4_1_phy_pcie_pipe_clk_src[] = {
2247         F(19200000, P_BI_TCXO, 1, 0, 0),
2248         F(125000000, P_GCC_GPLL7_OUT_MAIN, 4, 0, 0),
2249         F(250000000, P_GCC_GPLL7_OUT_MAIN, 2, 0, 0),
2250         { }
2251 };
2252
2253 static struct clk_rcg2 gcc_usb4_1_phy_pcie_pipe_clk_src = {
2254         .cmd_rcgr = 0xb80c4,
2255         .mnd_width = 0,
2256         .hid_width = 5,
2257         .parent_map = gcc_parent_map_6,
2258         .freq_tbl = ftbl_gcc_usb4_1_phy_pcie_pipe_clk_src,
2259         .clkr.hw.init = &(const struct clk_init_data) {
2260                 .name = "gcc_usb4_1_phy_pcie_pipe_clk_src",
2261                 .parent_data = gcc_parent_data_6,
2262                 .num_parents = ARRAY_SIZE(gcc_parent_data_6),
2263                 .ops = &clk_rcg2_shared_ops,
2264         },
2265 };
2266
2267 static struct clk_rcg2 gcc_usb4_1_sb_if_clk_src = {
2268         .cmd_rcgr = 0xb8070,
2269         .mnd_width = 0,
2270         .hid_width = 5,
2271         .parent_map = gcc_parent_map_1,
2272         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
2273         .clkr.hw.init = &(const struct clk_init_data) {
2274                 .name = "gcc_usb4_1_sb_if_clk_src",
2275                 .parent_data = gcc_parent_data_1,
2276                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
2277                 .ops = &clk_rcg2_shared_ops,
2278         },
2279 };
2280
2281 static const struct freq_tbl ftbl_gcc_usb4_1_tmu_clk_src[] = {
2282         F(19200000, P_BI_TCXO, 1, 0, 0),
2283         F(250000000, P_GCC_GPLL2_OUT_MAIN, 4, 0, 0),
2284         { }
2285 };
2286
2287 static struct clk_rcg2 gcc_usb4_1_tmu_clk_src = {
2288         .cmd_rcgr = 0xb8054,
2289         .mnd_width = 0,
2290         .hid_width = 5,
2291         .parent_map = gcc_parent_map_7,
2292         .freq_tbl = ftbl_gcc_usb4_1_tmu_clk_src,
2293         .clkr.hw.init = &(const struct clk_init_data) {
2294                 .name = "gcc_usb4_1_tmu_clk_src",
2295                 .parent_data = gcc_parent_data_7,
2296                 .num_parents = ARRAY_SIZE(gcc_parent_data_7),
2297                 .ops = &clk_rcg2_shared_ops,
2298         },
2299 };
2300
2301 static struct clk_rcg2 gcc_usb4_master_clk_src = {
2302         .cmd_rcgr = 0x2a018,
2303         .mnd_width = 8,
2304         .hid_width = 5,
2305         .parent_map = gcc_parent_map_5,
2306         .freq_tbl = ftbl_gcc_usb4_1_master_clk_src,
2307         .clkr.hw.init = &(const struct clk_init_data) {
2308                 .name = "gcc_usb4_master_clk_src",
2309                 .parent_data = gcc_parent_data_5,
2310                 .num_parents = ARRAY_SIZE(gcc_parent_data_5),
2311                 .ops = &clk_rcg2_shared_ops,
2312         },
2313 };
2314
2315 static struct clk_rcg2 gcc_usb4_phy_pcie_pipe_clk_src = {
2316         .cmd_rcgr = 0x2a0c4,
2317         .mnd_width = 0,
2318         .hid_width = 5,
2319         .parent_map = gcc_parent_map_6,
2320         .freq_tbl = ftbl_gcc_usb4_1_phy_pcie_pipe_clk_src,
2321         .clkr.hw.init = &(const struct clk_init_data) {
2322                 .name = "gcc_usb4_phy_pcie_pipe_clk_src",
2323                 .parent_data = gcc_parent_data_6,
2324                 .num_parents = ARRAY_SIZE(gcc_parent_data_6),
2325                 .ops = &clk_rcg2_shared_ops,
2326         },
2327 };
2328
2329 static struct clk_rcg2 gcc_usb4_sb_if_clk_src = {
2330         .cmd_rcgr = 0x2a070,
2331         .mnd_width = 0,
2332         .hid_width = 5,
2333         .parent_map = gcc_parent_map_1,
2334         .freq_tbl = ftbl_gcc_pcie_1_aux_clk_src,
2335         .clkr.hw.init = &(const struct clk_init_data) {
2336                 .name = "gcc_usb4_sb_if_clk_src",
2337                 .parent_data = gcc_parent_data_1,
2338                 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
2339                 .ops = &clk_rcg2_shared_ops,
2340         },
2341 };
2342
2343 static struct clk_rcg2 gcc_usb4_tmu_clk_src = {
2344         .cmd_rcgr = 0x2a054,
2345         .mnd_width = 0,
2346         .hid_width = 5,
2347         .parent_map = gcc_parent_map_7,
2348         .freq_tbl = ftbl_gcc_usb4_1_tmu_clk_src,
2349         .clkr.hw.init = &(const struct clk_init_data) {
2350                 .name = "gcc_usb4_tmu_clk_src",
2351                 .parent_data = gcc_parent_data_7,
2352                 .num_parents = ARRAY_SIZE(gcc_parent_data_7),
2353                 .ops = &clk_rcg2_shared_ops,
2354         },
2355 };
2356
2357 static struct clk_regmap_div gcc_pcie_2a_pipe_div_clk_src = {
2358         .reg = 0x9d060,
2359         .shift = 0,
2360         .width = 4,
2361         .clkr.hw.init = &(const struct clk_init_data) {
2362                 .name = "gcc_pcie_2a_pipe_div_clk_src",
2363                 .parent_hws = (const struct clk_hw*[]){
2364                         &gcc_pcie_2a_pipe_clk_src.clkr.hw,
2365                 },
2366                 .num_parents = 1,
2367                 .flags = CLK_SET_RATE_PARENT,
2368                 .ops = &clk_regmap_div_ro_ops,
2369         },
2370 };
2371
2372 static struct clk_regmap_div gcc_pcie_2b_pipe_div_clk_src = {
2373         .reg = 0x9e060,
2374         .shift = 0,
2375         .width = 4,
2376         .clkr.hw.init = &(const struct clk_init_data) {
2377                 .name = "gcc_pcie_2b_pipe_div_clk_src",
2378                 .parent_hws = (const struct clk_hw*[]){
2379                         &gcc_pcie_2b_pipe_clk_src.clkr.hw,
2380                 },
2381                 .num_parents = 1,
2382                 .flags = CLK_SET_RATE_PARENT,
2383                 .ops = &clk_regmap_div_ro_ops,
2384         },
2385 };
2386
2387 static struct clk_regmap_div gcc_pcie_3a_pipe_div_clk_src = {
2388         .reg = 0xa0060,
2389         .shift = 0,
2390         .width = 4,
2391         .clkr.hw.init = &(const struct clk_init_data) {
2392                 .name = "gcc_pcie_3a_pipe_div_clk_src",
2393                 .parent_hws = (const struct clk_hw*[]){
2394                         &gcc_pcie_3a_pipe_clk_src.clkr.hw,
2395                 },
2396                 .num_parents = 1,
2397                 .flags = CLK_SET_RATE_PARENT,
2398                 .ops = &clk_regmap_div_ro_ops,
2399         },
2400 };
2401
2402 static struct clk_regmap_div gcc_pcie_3b_pipe_div_clk_src = {
2403         .reg = 0xa2060,
2404         .shift = 0,
2405         .width = 4,
2406         .clkr.hw.init = &(const struct clk_init_data) {
2407                 .name = "gcc_pcie_3b_pipe_div_clk_src",
2408                 .parent_hws = (const struct clk_hw*[]){
2409                         &gcc_pcie_3b_pipe_clk_src.clkr.hw,
2410                 },
2411                 .num_parents = 1,
2412                 .flags = CLK_SET_RATE_PARENT,
2413                 .ops = &clk_regmap_div_ro_ops,
2414         },
2415 };
2416
2417 static struct clk_regmap_div gcc_pcie_4_pipe_div_clk_src = {
2418         .reg = 0x6b060,
2419         .shift = 0,
2420         .width = 4,
2421         .clkr.hw.init = &(const struct clk_init_data) {
2422                 .name = "gcc_pcie_4_pipe_div_clk_src",
2423                 .parent_hws = (const struct clk_hw*[]){
2424                         &gcc_pcie_4_pipe_clk_src.clkr.hw,
2425                 },
2426                 .num_parents = 1,
2427                 .flags = CLK_SET_RATE_PARENT,
2428                 .ops = &clk_regmap_div_ro_ops,
2429         },
2430 };
2431
2432 static struct clk_regmap_div gcc_qupv3_wrap0_s4_div_clk_src = {
2433         .reg = 0x17ac8,
2434         .shift = 0,
2435         .width = 4,
2436         .clkr.hw.init = &(const struct clk_init_data) {
2437                 .name = "gcc_qupv3_wrap0_s4_div_clk_src",
2438                 .parent_hws = (const struct clk_hw*[]){
2439                         &gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
2440                 },
2441                 .num_parents = 1,
2442                 .flags = CLK_SET_RATE_PARENT,
2443                 .ops = &clk_regmap_div_ro_ops,
2444         },
2445 };
2446
2447 static struct clk_regmap_div gcc_qupv3_wrap1_s4_div_clk_src = {
2448         .reg = 0x18ac8,
2449         .shift = 0,
2450         .width = 4,
2451         .clkr.hw.init = &(const struct clk_init_data) {
2452                 .name = "gcc_qupv3_wrap1_s4_div_clk_src",
2453                 .parent_hws = (const struct clk_hw*[]){
2454                         &gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
2455                 },
2456                 .num_parents = 1,
2457                 .flags = CLK_SET_RATE_PARENT,
2458                 .ops = &clk_regmap_div_ro_ops,
2459         },
2460 };
2461
2462 static struct clk_regmap_div gcc_qupv3_wrap2_s4_div_clk_src = {
2463         .reg = 0x1eac8,
2464         .shift = 0,
2465         .width = 4,
2466         .clkr.hw.init = &(const struct clk_init_data) {
2467                 .name = "gcc_qupv3_wrap2_s4_div_clk_src",
2468                 .parent_hws = (const struct clk_hw*[]){
2469                         &gcc_qupv3_wrap2_s4_clk_src.clkr.hw,
2470                 },
2471                 .num_parents = 1,
2472                 .flags = CLK_SET_RATE_PARENT,
2473                 .ops = &clk_regmap_div_ro_ops,
2474         },
2475 };
2476
2477 static struct clk_regmap_div gcc_usb30_mp_mock_utmi_postdiv_clk_src = {
2478         .reg = 0xab050,
2479         .shift = 0,
2480         .width = 4,
2481         .clkr.hw.init = &(const struct clk_init_data) {
2482                 .name = "gcc_usb30_mp_mock_utmi_postdiv_clk_src",
2483                 .parent_hws = (const struct clk_hw*[]){
2484                         &gcc_usb30_mp_mock_utmi_clk_src.clkr.hw,
2485                 },
2486                 .num_parents = 1,
2487                 .flags = CLK_SET_RATE_PARENT,
2488                 .ops = &clk_regmap_div_ro_ops,
2489         },
2490 };
2491
2492 static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {
2493         .reg = 0xf050,
2494         .shift = 0,
2495         .width = 4,
2496         .clkr.hw.init = &(const struct clk_init_data) {
2497                 .name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
2498                 .parent_hws = (const struct clk_hw*[]){
2499                         &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
2500                 },
2501                 .num_parents = 1,
2502                 .flags = CLK_SET_RATE_PARENT,
2503                 .ops = &clk_regmap_div_ro_ops,
2504         },
2505 };
2506
2507 static struct clk_regmap_div gcc_usb30_sec_mock_utmi_postdiv_clk_src = {
2508         .reg = 0x10050,
2509         .shift = 0,
2510         .width = 4,
2511         .clkr.hw.init = &(const struct clk_init_data) {
2512                 .name = "gcc_usb30_sec_mock_utmi_postdiv_clk_src",
2513                 .parent_hws = (const struct clk_hw*[]){
2514                         &gcc_usb30_sec_mock_utmi_clk_src.clkr.hw,
2515                 },
2516                 .num_parents = 1,
2517                 .flags = CLK_SET_RATE_PARENT,
2518                 .ops = &clk_regmap_div_ro_ops,
2519         },
2520 };
2521
2522 static struct clk_branch gcc_aggre_noc_pcie0_tunnel_axi_clk = {
2523         .halt_reg = 0xa41a8,
2524         .halt_check = BRANCH_HALT_SKIP,
2525         .hwcg_reg = 0xa41a8,
2526         .hwcg_bit = 1,
2527         .clkr = {
2528                 .enable_reg = 0x52018,
2529                 .enable_mask = BIT(14),
2530                 .hw.init = &(const struct clk_init_data) {
2531                         .name = "gcc_aggre_noc_pcie0_tunnel_axi_clk",
2532                         .ops = &clk_branch2_ops,
2533                 },
2534         },
2535 };
2536
2537 static struct clk_branch gcc_aggre_noc_pcie1_tunnel_axi_clk = {
2538         .halt_reg = 0x8d07c,
2539         .halt_check = BRANCH_HALT_SKIP,
2540         .hwcg_reg = 0x8d07c,
2541         .hwcg_bit = 1,
2542         .clkr = {
2543                 .enable_reg = 0x52018,
2544                 .enable_mask = BIT(21),
2545                 .hw.init = &(const struct clk_init_data) {
2546                         .name = "gcc_aggre_noc_pcie1_tunnel_axi_clk",
2547                         .ops = &clk_branch2_ops,
2548                 },
2549         },
2550 };
2551
2552 static struct clk_branch gcc_aggre_noc_pcie_4_axi_clk = {
2553         .halt_reg = 0x6b1b8,
2554         .halt_check = BRANCH_HALT_SKIP,
2555         .hwcg_reg = 0x6b1b8,
2556         .hwcg_bit = 1,
2557         .clkr = {
2558                 .enable_reg = 0x52000,
2559                 .enable_mask = BIT(12),
2560                 .hw.init = &(const struct clk_init_data) {
2561                         .name = "gcc_aggre_noc_pcie_4_axi_clk",
2562                         .ops = &clk_branch2_ops,
2563                 },
2564         },
2565 };
2566
2567 static struct clk_branch gcc_aggre_noc_pcie_south_sf_axi_clk = {
2568         .halt_reg = 0xbf13c,
2569         .halt_check = BRANCH_HALT_SKIP,
2570         .hwcg_reg = 0xbf13c,
2571         .hwcg_bit = 1,
2572         .clkr = {
2573                 .enable_reg = 0x52018,
2574                 .enable_mask = BIT(13),
2575                 .hw.init = &(const struct clk_init_data) {
2576                         .name = "gcc_aggre_noc_pcie_south_sf_axi_clk",
2577                         .ops = &clk_branch2_ops,
2578                 },
2579         },
2580 };
2581
2582 static struct clk_branch gcc_aggre_ufs_card_axi_clk = {
2583         .halt_reg = 0x750cc,
2584         .halt_check = BRANCH_HALT_VOTED,
2585         .hwcg_reg = 0x750cc,
2586         .hwcg_bit = 1,
2587         .clkr = {
2588                 .enable_reg = 0x750cc,
2589                 .enable_mask = BIT(0),
2590                 .hw.init = &(const struct clk_init_data) {
2591                         .name = "gcc_aggre_ufs_card_axi_clk",
2592                         .parent_hws = (const struct clk_hw*[]){
2593                                 &gcc_ufs_card_axi_clk_src.clkr.hw,
2594                         },
2595                         .num_parents = 1,
2596                         .flags = CLK_SET_RATE_PARENT,
2597                         .ops = &clk_branch2_ops,
2598                 },
2599         },
2600 };
2601
2602 static struct clk_branch gcc_aggre_ufs_card_axi_hw_ctl_clk = {
2603         .halt_reg = 0x750cc,
2604         .halt_check = BRANCH_HALT_VOTED,
2605         .hwcg_reg = 0x750cc,
2606         .hwcg_bit = 1,
2607         .clkr = {
2608                 .enable_reg = 0x750cc,
2609                 .enable_mask = BIT(1),
2610                 .hw.init = &(const struct clk_init_data) {
2611                         .name = "gcc_aggre_ufs_card_axi_hw_ctl_clk",
2612                         .parent_hws = (const struct clk_hw*[]){
2613                                 &gcc_ufs_card_axi_clk_src.clkr.hw,
2614                         },
2615                         .num_parents = 1,
2616                         .flags = CLK_SET_RATE_PARENT,
2617                         .ops = &clk_branch2_ops,
2618                 },
2619         },
2620 };
2621
2622 static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
2623         .halt_reg = 0x770cc,
2624         .halt_check = BRANCH_HALT_VOTED,
2625         .hwcg_reg = 0x770cc,
2626         .hwcg_bit = 1,
2627         .clkr = {
2628                 .enable_reg = 0x770cc,
2629                 .enable_mask = BIT(0),
2630                 .hw.init = &(const struct clk_init_data) {
2631                         .name = "gcc_aggre_ufs_phy_axi_clk",
2632                         .parent_hws = (const struct clk_hw*[]){
2633                                 &gcc_ufs_phy_axi_clk_src.clkr.hw,
2634                         },
2635                         .num_parents = 1,
2636                         .flags = CLK_SET_RATE_PARENT,
2637                         .ops = &clk_branch2_ops,
2638                 },
2639         },
2640 };
2641
2642 static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk = {
2643         .halt_reg = 0x770cc,
2644         .halt_check = BRANCH_HALT_VOTED,
2645         .hwcg_reg = 0x770cc,
2646         .hwcg_bit = 1,
2647         .clkr = {
2648                 .enable_reg = 0x770cc,
2649                 .enable_mask = BIT(1),
2650                 .hw.init = &(const struct clk_init_data) {
2651                         .name = "gcc_aggre_ufs_phy_axi_hw_ctl_clk",
2652                         .parent_hws = (const struct clk_hw*[]){
2653                                 &gcc_ufs_phy_axi_clk_src.clkr.hw,
2654                         },
2655                         .num_parents = 1,
2656                         .flags = CLK_SET_RATE_PARENT,
2657                         .ops = &clk_branch2_ops,
2658                 },
2659         },
2660 };
2661
2662 static struct clk_branch gcc_aggre_usb3_mp_axi_clk = {
2663         .halt_reg = 0xab084,
2664         .halt_check = BRANCH_HALT_VOTED,
2665         .hwcg_reg = 0xab084,
2666         .hwcg_bit = 1,
2667         .clkr = {
2668                 .enable_reg = 0xab084,
2669                 .enable_mask = BIT(0),
2670                 .hw.init = &(const struct clk_init_data) {
2671                         .name = "gcc_aggre_usb3_mp_axi_clk",
2672                         .parent_hws = (const struct clk_hw*[]){
2673                                 &gcc_usb30_mp_master_clk_src.clkr.hw,
2674                         },
2675                         .num_parents = 1,
2676                         .flags = CLK_SET_RATE_PARENT,
2677                         .ops = &clk_branch2_ops,
2678                 },
2679         },
2680 };
2681
2682 static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
2683         .halt_reg = 0xf080,
2684         .halt_check = BRANCH_HALT_VOTED,
2685         .hwcg_reg = 0xf080,
2686         .hwcg_bit = 1,
2687         .clkr = {
2688                 .enable_reg = 0xf080,
2689                 .enable_mask = BIT(0),
2690                 .hw.init = &(const struct clk_init_data) {
2691                         .name = "gcc_aggre_usb3_prim_axi_clk",
2692                         .parent_hws = (const struct clk_hw*[]){
2693                                 &gcc_usb30_prim_master_clk_src.clkr.hw,
2694                         },
2695                         .num_parents = 1,
2696                         .flags = CLK_SET_RATE_PARENT,
2697                         .ops = &clk_branch2_ops,
2698                 },
2699         },
2700 };
2701
2702 static struct clk_branch gcc_aggre_usb3_sec_axi_clk = {
2703         .halt_reg = 0x10080,
2704         .halt_check = BRANCH_HALT_VOTED,
2705         .hwcg_reg = 0x10080,
2706         .hwcg_bit = 1,
2707         .clkr = {
2708                 .enable_reg = 0x10080,
2709                 .enable_mask = BIT(0),
2710                 .hw.init = &(const struct clk_init_data) {
2711                         .name = "gcc_aggre_usb3_sec_axi_clk",
2712                         .parent_hws = (const struct clk_hw*[]){
2713                                 &gcc_usb30_sec_master_clk_src.clkr.hw,
2714                         },
2715                         .num_parents = 1,
2716                         .flags = CLK_SET_RATE_PARENT,
2717                         .ops = &clk_branch2_ops,
2718                 },
2719         },
2720 };
2721
2722 static struct clk_branch gcc_aggre_usb4_1_axi_clk = {
2723         .halt_reg = 0xb80e4,
2724         .halt_check = BRANCH_HALT_VOTED,
2725         .hwcg_reg = 0xb80e4,
2726         .hwcg_bit = 1,
2727         .clkr = {
2728                 .enable_reg = 0xb80e4,
2729                 .enable_mask = BIT(0),
2730                 .hw.init = &(const struct clk_init_data) {
2731                         .name = "gcc_aggre_usb4_1_axi_clk",
2732                         .parent_hws = (const struct clk_hw*[]){
2733                                 &gcc_usb4_1_master_clk_src.clkr.hw,
2734                         },
2735                         .num_parents = 1,
2736                         .flags = CLK_SET_RATE_PARENT,
2737                         .ops = &clk_branch2_ops,
2738                 },
2739         },
2740 };
2741
2742 static struct clk_branch gcc_aggre_usb4_axi_clk = {
2743         .halt_reg = 0x2a0e4,
2744         .halt_check = BRANCH_HALT_VOTED,
2745         .hwcg_reg = 0x2a0e4,
2746         .hwcg_bit = 1,
2747         .clkr = {
2748                 .enable_reg = 0x2a0e4,
2749                 .enable_mask = BIT(0),
2750                 .hw.init = &(const struct clk_init_data) {
2751                         .name = "gcc_aggre_usb4_axi_clk",
2752                         .parent_hws = (const struct clk_hw*[]){
2753                                 &gcc_usb4_master_clk_src.clkr.hw,
2754                         },
2755                         .num_parents = 1,
2756                         .flags = CLK_SET_RATE_PARENT,
2757                         .ops = &clk_branch2_ops,
2758                 },
2759         },
2760 };
2761
2762 static struct clk_branch gcc_aggre_usb_noc_axi_clk = {
2763         .halt_reg = 0x5d024,
2764         .halt_check = BRANCH_HALT_VOTED,
2765         .hwcg_reg = 0x5d024,
2766         .hwcg_bit = 1,
2767         .clkr = {
2768                 .enable_reg = 0x5d024,
2769                 .enable_mask = BIT(0),
2770                 .hw.init = &(const struct clk_init_data) {
2771                         .name = "gcc_aggre_usb_noc_axi_clk",
2772                         .ops = &clk_branch2_ops,
2773                 },
2774         },
2775 };
2776
2777 static struct clk_branch gcc_aggre_usb_noc_north_axi_clk = {
2778         .halt_reg = 0x5d020,
2779         .halt_check = BRANCH_HALT_VOTED,
2780         .hwcg_reg = 0x5d020,
2781         .hwcg_bit = 1,
2782         .clkr = {
2783                 .enable_reg = 0x5d020,
2784                 .enable_mask = BIT(0),
2785                 .hw.init = &(const struct clk_init_data) {
2786                         .name = "gcc_aggre_usb_noc_north_axi_clk",
2787                         .ops = &clk_branch2_ops,
2788                 },
2789         },
2790 };
2791
2792 static struct clk_branch gcc_aggre_usb_noc_south_axi_clk = {
2793         .halt_reg = 0x5d01c,
2794         .halt_check = BRANCH_HALT_VOTED,
2795         .hwcg_reg = 0x5d01c,
2796         .hwcg_bit = 1,
2797         .clkr = {
2798                 .enable_reg = 0x5d01c,
2799                 .enable_mask = BIT(0),
2800                 .hw.init = &(const struct clk_init_data) {
2801                         .name = "gcc_aggre_usb_noc_south_axi_clk",
2802                         .ops = &clk_branch2_ops,
2803                 },
2804         },
2805 };
2806
2807 static struct clk_branch gcc_ahb2phy0_clk = {
2808         .halt_reg = 0x6a004,
2809         .halt_check = BRANCH_HALT_VOTED,
2810         .hwcg_reg = 0x6a004,
2811         .hwcg_bit = 1,
2812         .clkr = {
2813                 .enable_reg = 0x6a004,
2814                 .enable_mask = BIT(0),
2815                 .hw.init = &(const struct clk_init_data) {
2816                         .name = "gcc_ahb2phy0_clk",
2817                         .ops = &clk_branch2_ops,
2818                 },
2819         },
2820 };
2821
2822 static struct clk_branch gcc_ahb2phy2_clk = {
2823         .halt_reg = 0x6a008,
2824         .halt_check = BRANCH_HALT_VOTED,
2825         .hwcg_reg = 0x6a008,
2826         .hwcg_bit = 1,
2827         .clkr = {
2828                 .enable_reg = 0x6a008,
2829                 .enable_mask = BIT(0),
2830                 .hw.init = &(const struct clk_init_data) {
2831                         .name = "gcc_ahb2phy2_clk",
2832                         .ops = &clk_branch2_ops,
2833                 },
2834         },
2835 };
2836
2837 static struct clk_branch gcc_boot_rom_ahb_clk = {
2838         .halt_reg = 0x38004,
2839         .halt_check = BRANCH_HALT_VOTED,
2840         .hwcg_reg = 0x38004,
2841         .hwcg_bit = 1,
2842         .clkr = {
2843                 .enable_reg = 0x52000,
2844                 .enable_mask = BIT(10),
2845                 .hw.init = &(const struct clk_init_data) {
2846                         .name = "gcc_boot_rom_ahb_clk",
2847                         .ops = &clk_branch2_ops,
2848                 },
2849         },
2850 };
2851
2852 static struct clk_branch gcc_camera_hf_axi_clk = {
2853         .halt_reg = 0x26010,
2854         .halt_check = BRANCH_HALT_SKIP,
2855         .hwcg_reg = 0x26010,
2856         .hwcg_bit = 1,
2857         .clkr = {
2858                 .enable_reg = 0x26010,
2859                 .enable_mask = BIT(0),
2860                 .hw.init = &(const struct clk_init_data) {
2861                         .name = "gcc_camera_hf_axi_clk",
2862                         .ops = &clk_branch2_ops,
2863                 },
2864         },
2865 };
2866
2867 static struct clk_branch gcc_camera_sf_axi_clk = {
2868         .halt_reg = 0x26014,
2869         .halt_check = BRANCH_HALT_SKIP,
2870         .hwcg_reg = 0x26014,
2871         .hwcg_bit = 1,
2872         .clkr = {
2873                 .enable_reg = 0x26014,
2874                 .enable_mask = BIT(0),
2875                 .hw.init = &(const struct clk_init_data) {
2876                         .name = "gcc_camera_sf_axi_clk",
2877                         .ops = &clk_branch2_ops,
2878                 },
2879         },
2880 };
2881
2882 static struct clk_branch gcc_camera_throttle_nrt_axi_clk = {
2883         .halt_reg = 0x2601c,
2884         .halt_check = BRANCH_HALT_SKIP,
2885         .hwcg_reg = 0x2601c,
2886         .hwcg_bit = 1,
2887         .clkr = {
2888                 .enable_reg = 0x2601c,
2889                 .enable_mask = BIT(0),
2890                 .hw.init = &(const struct clk_init_data) {
2891                         .name = "gcc_camera_throttle_nrt_axi_clk",
2892                         .ops = &clk_branch2_ops,
2893                 },
2894         },
2895 };
2896
2897 static struct clk_branch gcc_camera_throttle_rt_axi_clk = {
2898         .halt_reg = 0x26018,
2899         .halt_check = BRANCH_HALT_SKIP,
2900         .hwcg_reg = 0x26018,
2901         .hwcg_bit = 1,
2902         .clkr = {
2903                 .enable_reg = 0x26018,
2904                 .enable_mask = BIT(0),
2905                 .hw.init = &(const struct clk_init_data) {
2906                         .name = "gcc_camera_throttle_rt_axi_clk",
2907                         .ops = &clk_branch2_ops,
2908                 },
2909         },
2910 };
2911
2912 static struct clk_branch gcc_camera_throttle_xo_clk = {
2913         .halt_reg = 0x26024,
2914         .halt_check = BRANCH_HALT,
2915         .clkr = {
2916                 .enable_reg = 0x26024,
2917                 .enable_mask = BIT(0),
2918                 .hw.init = &(const struct clk_init_data) {
2919                         .name = "gcc_camera_throttle_xo_clk",
2920                         .ops = &clk_branch2_ops,
2921                 },
2922         },
2923 };
2924
2925 static struct clk_branch gcc_cfg_noc_usb3_mp_axi_clk = {
2926         .halt_reg = 0xab088,
2927         .halt_check = BRANCH_HALT_VOTED,
2928         .hwcg_reg = 0xab088,
2929         .hwcg_bit = 1,
2930         .clkr = {
2931                 .enable_reg = 0xab088,
2932                 .enable_mask = BIT(0),
2933                 .hw.init = &(const struct clk_init_data) {
2934                         .name = "gcc_cfg_noc_usb3_mp_axi_clk",
2935                         .parent_hws = (const struct clk_hw*[]){
2936                                 &gcc_usb30_mp_master_clk_src.clkr.hw,
2937                         },
2938                         .num_parents = 1,
2939                         .flags = CLK_SET_RATE_PARENT,
2940                         .ops = &clk_branch2_ops,
2941                 },
2942         },
2943 };
2944
2945 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
2946         .halt_reg = 0xf084,
2947         .halt_check = BRANCH_HALT_VOTED,
2948         .hwcg_reg = 0xf084,
2949         .hwcg_bit = 1,
2950         .clkr = {
2951                 .enable_reg = 0xf084,
2952                 .enable_mask = BIT(0),
2953                 .hw.init = &(const struct clk_init_data) {
2954                         .name = "gcc_cfg_noc_usb3_prim_axi_clk",
2955                         .parent_hws = (const struct clk_hw*[]){
2956                                 &gcc_usb30_prim_master_clk_src.clkr.hw,
2957                         },
2958                         .num_parents = 1,
2959                         .flags = CLK_SET_RATE_PARENT,
2960                         .ops = &clk_branch2_ops,
2961                 },
2962         },
2963 };
2964
2965 static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = {
2966         .halt_reg = 0x10084,
2967         .halt_check = BRANCH_HALT_VOTED,
2968         .hwcg_reg = 0x10084,
2969         .hwcg_bit = 1,
2970         .clkr = {
2971                 .enable_reg = 0x10084,
2972                 .enable_mask = BIT(0),
2973                 .hw.init = &(const struct clk_init_data) {
2974                         .name = "gcc_cfg_noc_usb3_sec_axi_clk",
2975                         .parent_hws = (const struct clk_hw*[]){
2976                                 &gcc_usb30_sec_master_clk_src.clkr.hw,
2977                         },
2978                         .num_parents = 1,
2979                         .flags = CLK_SET_RATE_PARENT,
2980                         .ops = &clk_branch2_ops,
2981                 },
2982         },
2983 };
2984
2985 static struct clk_branch gcc_cnoc_pcie0_tunnel_clk = {
2986         .halt_reg = 0xa4074,
2987         .halt_check = BRANCH_HALT_VOTED,
2988         .clkr = {
2989                 .enable_reg = 0x52020,
2990                 .enable_mask = BIT(8),
2991                 .hw.init = &(const struct clk_init_data) {
2992                         .name = "gcc_cnoc_pcie0_tunnel_clk",
2993                         .ops = &clk_branch2_ops,
2994                 },
2995         },
2996 };
2997
2998 static struct clk_branch gcc_cnoc_pcie1_tunnel_clk = {
2999         .halt_reg = 0x8d074,
3000         .halt_check = BRANCH_HALT_VOTED,
3001         .clkr = {
3002                 .enable_reg = 0x52020,
3003                 .enable_mask = BIT(9),
3004                 .hw.init = &(const struct clk_init_data) {
3005                         .name = "gcc_cnoc_pcie1_tunnel_clk",
3006                         .ops = &clk_branch2_ops,
3007                 },
3008         },
3009 };
3010
3011 static struct clk_branch gcc_cnoc_pcie4_qx_clk = {
3012         .halt_reg = 0x6b084,
3013         .halt_check = BRANCH_HALT_VOTED,
3014         .hwcg_reg = 0x6b084,
3015         .hwcg_bit = 1,
3016         .clkr = {
3017                 .enable_reg = 0x52020,
3018                 .enable_mask = BIT(10),
3019                 .hw.init = &(const struct clk_init_data) {
3020                         .name = "gcc_cnoc_pcie4_qx_clk",
3021                         .ops = &clk_branch2_ops,
3022                 },
3023         },
3024 };
3025
3026 static struct clk_branch gcc_ddrss_gpu_axi_clk = {
3027         .halt_reg = 0x7115c,
3028         .halt_check = BRANCH_HALT_SKIP,
3029         .hwcg_reg = 0x7115c,
3030         .hwcg_bit = 1,
3031         .clkr = {
3032                 .enable_reg = 0x7115c,
3033                 .enable_mask = BIT(0),
3034                 .hw.init = &(const struct clk_init_data) {
3035                         .name = "gcc_ddrss_gpu_axi_clk",
3036                         .ops = &clk_branch2_aon_ops,
3037                 },
3038         },
3039 };
3040
3041 static struct clk_branch gcc_ddrss_pcie_sf_tbu_clk = {
3042         .halt_reg = 0xa602c,
3043         .halt_check = BRANCH_HALT_SKIP,
3044         .hwcg_reg = 0xa602c,
3045         .hwcg_bit = 1,
3046         .clkr = {
3047                 .enable_reg = 0x52000,
3048                 .enable_mask = BIT(19),
3049                 .hw.init = &(const struct clk_init_data) {
3050                         .name = "gcc_ddrss_pcie_sf_tbu_clk",
3051                         .ops = &clk_branch2_ops,
3052                 },
3053         },
3054 };
3055
3056 static struct clk_branch gcc_disp1_hf_axi_clk = {
3057         .halt_reg = 0xbb010,
3058         .halt_check = BRANCH_HALT_SKIP,
3059         .hwcg_reg = 0xbb010,
3060         .hwcg_bit = 1,
3061         .clkr = {
3062                 .enable_reg = 0xbb010,
3063                 .enable_mask = BIT(0),
3064                 .hw.init = &(const struct clk_init_data) {
3065                         .name = "gcc_disp1_hf_axi_clk",
3066                         .ops = &clk_branch2_ops,
3067                 },
3068         },
3069 };
3070
3071 static struct clk_branch gcc_disp1_sf_axi_clk = {
3072         .halt_reg = 0xbb018,
3073         .halt_check = BRANCH_HALT_SKIP,
3074         .hwcg_reg = 0xbb018,
3075         .hwcg_bit = 1,
3076         .clkr = {
3077                 .enable_reg = 0xbb018,
3078                 .enable_mask = BIT(0),
3079                 .hw.init = &(const struct clk_init_data) {
3080                         .name = "gcc_disp1_sf_axi_clk",
3081                         .ops = &clk_branch2_ops,
3082                 },
3083         },
3084 };
3085
3086 static struct clk_branch gcc_disp1_throttle_nrt_axi_clk = {
3087         .halt_reg = 0xbb024,
3088         .halt_check = BRANCH_HALT_SKIP,
3089         .hwcg_reg = 0xbb024,
3090         .hwcg_bit = 1,
3091         .clkr = {
3092                 .enable_reg = 0xbb024,
3093                 .enable_mask = BIT(0),
3094                 .hw.init = &(const struct clk_init_data) {
3095                         .name = "gcc_disp1_throttle_nrt_axi_clk",
3096                         .ops = &clk_branch2_ops,
3097                 },
3098         },
3099 };
3100
3101 static struct clk_branch gcc_disp1_throttle_rt_axi_clk = {
3102         .halt_reg = 0xbb020,
3103         .halt_check = BRANCH_HALT_SKIP,
3104         .hwcg_reg = 0xbb020,
3105         .hwcg_bit = 1,
3106         .clkr = {
3107                 .enable_reg = 0xbb020,
3108                 .enable_mask = BIT(0),
3109                 .hw.init = &(const struct clk_init_data) {
3110                         .name = "gcc_disp1_throttle_rt_axi_clk",
3111                         .ops = &clk_branch2_ops,
3112                 },
3113         },
3114 };
3115
3116 static struct clk_branch gcc_disp_hf_axi_clk = {
3117         .halt_reg = 0x27010,
3118         .halt_check = BRANCH_HALT_SKIP,
3119         .hwcg_reg = 0x27010,
3120         .hwcg_bit = 1,
3121         .clkr = {
3122                 .enable_reg = 0x27010,
3123                 .enable_mask = BIT(0),
3124                 .hw.init = &(const struct clk_init_data) {
3125                         .name = "gcc_disp_hf_axi_clk",
3126                         .ops = &clk_branch2_ops,
3127                 },
3128         },
3129 };
3130
3131 static struct clk_branch gcc_disp_sf_axi_clk = {
3132         .halt_reg = 0x27018,
3133         .halt_check = BRANCH_HALT_SKIP,
3134         .hwcg_reg = 0x27018,
3135         .hwcg_bit = 1,
3136         .clkr = {
3137                 .enable_reg = 0x27018,
3138                 .enable_mask = BIT(0),
3139                 .hw.init = &(const struct clk_init_data) {
3140                         .name = "gcc_disp_sf_axi_clk",
3141                         .ops = &clk_branch2_ops,
3142                 },
3143         },
3144 };
3145
3146 static struct clk_branch gcc_disp_throttle_nrt_axi_clk = {
3147         .halt_reg = 0x27024,
3148         .halt_check = BRANCH_HALT_SKIP,
3149         .hwcg_reg = 0x27024,
3150         .hwcg_bit = 1,
3151         .clkr = {
3152                 .enable_reg = 0x27024,
3153                 .enable_mask = BIT(0),
3154                 .hw.init = &(const struct clk_init_data) {
3155                         .name = "gcc_disp_throttle_nrt_axi_clk",
3156                         .ops = &clk_branch2_ops,
3157                 },
3158         },
3159 };
3160
3161 static struct clk_branch gcc_disp_throttle_rt_axi_clk = {
3162         .halt_reg = 0x27020,
3163         .halt_check = BRANCH_HALT_SKIP,
3164         .hwcg_reg = 0x27020,
3165         .hwcg_bit = 1,
3166         .clkr = {
3167                 .enable_reg = 0x27020,
3168                 .enable_mask = BIT(0),
3169                 .hw.init = &(const struct clk_init_data) {
3170                         .name = "gcc_disp_throttle_rt_axi_clk",
3171                         .ops = &clk_branch2_ops,
3172                 },
3173         },
3174 };
3175
3176 static struct clk_branch gcc_emac0_axi_clk = {
3177         .halt_reg = 0xaa010,
3178         .halt_check = BRANCH_HALT_VOTED,
3179         .hwcg_reg = 0xaa010,
3180         .hwcg_bit = 1,
3181         .clkr = {
3182                 .enable_reg = 0xaa010,
3183                 .enable_mask = BIT(0),
3184                 .hw.init = &(const struct clk_init_data) {
3185                         .name = "gcc_emac0_axi_clk",
3186                         .ops = &clk_branch2_ops,
3187                 },
3188         },
3189 };
3190
3191 static struct clk_branch gcc_emac0_ptp_clk = {
3192         .halt_reg = 0xaa01c,
3193         .halt_check = BRANCH_HALT,
3194         .clkr = {
3195                 .enable_reg = 0xaa01c,
3196                 .enable_mask = BIT(0),
3197                 .hw.init = &(const struct clk_init_data) {
3198                         .name = "gcc_emac0_ptp_clk",
3199                         .parent_hws = (const struct clk_hw*[]){
3200                                 &gcc_emac0_ptp_clk_src.clkr.hw,
3201                         },
3202                         .num_parents = 1,
3203                         .flags = CLK_SET_RATE_PARENT,
3204                         .ops = &clk_branch2_ops,
3205                 },
3206         },
3207 };
3208
3209 static struct clk_branch gcc_emac0_rgmii_clk = {
3210         .halt_reg = 0xaa038,
3211         .halt_check = BRANCH_HALT,
3212         .clkr = {
3213                 .enable_reg = 0xaa038,
3214                 .enable_mask = BIT(0),
3215                 .hw.init = &(const struct clk_init_data) {
3216                         .name = "gcc_emac0_rgmii_clk",
3217                         .parent_hws = (const struct clk_hw*[]){
3218                                 &gcc_emac0_rgmii_clk_src.clkr.hw,
3219                         },
3220                         .num_parents = 1,
3221                         .flags = CLK_SET_RATE_PARENT,
3222                         .ops = &clk_branch2_ops,
3223                 },
3224         },
3225 };
3226
3227 static struct clk_branch gcc_emac0_slv_ahb_clk = {
3228         .halt_reg = 0xaa018,
3229         .halt_check = BRANCH_HALT_VOTED,
3230         .hwcg_reg = 0xaa018,
3231         .hwcg_bit = 1,
3232         .clkr = {
3233                 .enable_reg = 0xaa018,
3234                 .enable_mask = BIT(0),
3235                 .hw.init = &(const struct clk_init_data) {
3236                         .name = "gcc_emac0_slv_ahb_clk",
3237                         .ops = &clk_branch2_ops,
3238                 },
3239         },
3240 };
3241
3242 static struct clk_branch gcc_emac1_axi_clk = {
3243         .halt_reg = 0xba010,
3244         .halt_check = BRANCH_HALT_VOTED,
3245         .hwcg_reg = 0xba010,
3246         .hwcg_bit = 1,
3247         .clkr = {
3248                 .enable_reg = 0xba010,
3249                 .enable_mask = BIT(0),
3250                 .hw.init = &(const struct clk_init_data) {
3251                         .name = "gcc_emac1_axi_clk",
3252                         .ops = &clk_branch2_ops,
3253                 },
3254         },
3255 };
3256
3257 static struct clk_branch gcc_emac1_ptp_clk = {
3258         .halt_reg = 0xba01c,
3259         .halt_check = BRANCH_HALT,
3260         .clkr = {
3261                 .enable_reg = 0xba01c,
3262                 .enable_mask = BIT(0),
3263                 .hw.init = &(const struct clk_init_data) {
3264                         .name = "gcc_emac1_ptp_clk",
3265                         .parent_hws = (const struct clk_hw*[]){
3266                                 &gcc_emac1_ptp_clk_src.clkr.hw,
3267                         },
3268                         .num_parents = 1,
3269                         .flags = CLK_SET_RATE_PARENT,
3270                         .ops = &clk_branch2_ops,
3271                 },
3272         },
3273 };
3274
3275 static struct clk_branch gcc_emac1_rgmii_clk = {
3276         .halt_reg = 0xba038,
3277         .halt_check = BRANCH_HALT,
3278         .clkr = {
3279                 .enable_reg = 0xba038,
3280                 .enable_mask = BIT(0),
3281                 .hw.init = &(const struct clk_init_data) {
3282                         .name = "gcc_emac1_rgmii_clk",
3283                         .parent_hws = (const struct clk_hw*[]){
3284                                 &gcc_emac1_rgmii_clk_src.clkr.hw,
3285                         },
3286                         .num_parents = 1,
3287                         .flags = CLK_SET_RATE_PARENT,
3288                         .ops = &clk_branch2_ops,
3289                 },
3290         },
3291 };
3292
3293 static struct clk_branch gcc_emac1_slv_ahb_clk = {
3294         .halt_reg = 0xba018,
3295         .halt_check = BRANCH_HALT_VOTED,
3296         .hwcg_reg = 0xba018,
3297         .hwcg_bit = 1,
3298         .clkr = {
3299                 .enable_reg = 0xba018,
3300                 .enable_mask = BIT(0),
3301                 .hw.init = &(const struct clk_init_data) {
3302                         .name = "gcc_emac1_slv_ahb_clk",
3303                         .ops = &clk_branch2_ops,
3304                 },
3305         },
3306 };
3307
3308 static struct clk_branch gcc_gp1_clk = {
3309         .halt_reg = 0x64000,
3310         .halt_check = BRANCH_HALT,
3311         .clkr = {
3312                 .enable_reg = 0x64000,
3313                 .enable_mask = BIT(0),
3314                 .hw.init = &(const struct clk_init_data) {
3315                         .name = "gcc_gp1_clk",
3316                         .parent_hws = (const struct clk_hw*[]){
3317                                 &gcc_gp1_clk_src.clkr.hw,
3318                         },
3319                         .num_parents = 1,
3320                         .flags = CLK_SET_RATE_PARENT,
3321                         .ops = &clk_branch2_ops,
3322                 },
3323         },
3324 };
3325
3326 static struct clk_branch gcc_gp2_clk = {
3327         .halt_reg = 0x65000,
3328         .halt_check = BRANCH_HALT,
3329         .clkr = {
3330                 .enable_reg = 0x65000,
3331                 .enable_mask = BIT(0),
3332                 .hw.init = &(const struct clk_init_data) {
3333                         .name = "gcc_gp2_clk",
3334                         .parent_hws = (const struct clk_hw*[]){
3335                                 &gcc_gp2_clk_src.clkr.hw,
3336                         },
3337                         .num_parents = 1,
3338                         .flags = CLK_SET_RATE_PARENT,
3339                         .ops = &clk_branch2_ops,
3340                 },
3341         },
3342 };
3343
3344 static struct clk_branch gcc_gp3_clk = {
3345         .halt_reg = 0x66000,
3346         .halt_check = BRANCH_HALT,
3347         .clkr = {
3348                 .enable_reg = 0x66000,
3349                 .enable_mask = BIT(0),
3350                 .hw.init = &(const struct clk_init_data) {
3351                         .name = "gcc_gp3_clk",
3352                         .parent_hws = (const struct clk_hw*[]){
3353                                 &gcc_gp3_clk_src.clkr.hw,
3354                         },
3355                         .num_parents = 1,
3356                         .flags = CLK_SET_RATE_PARENT,
3357                         .ops = &clk_branch2_ops,
3358                 },
3359         },
3360 };
3361
3362 static struct clk_branch gcc_gp4_clk = {
3363         .halt_reg = 0xc2000,
3364         .halt_check = BRANCH_HALT,
3365         .clkr = {
3366                 .enable_reg = 0xc2000,
3367                 .enable_mask = BIT(0),
3368                 .hw.init = &(const struct clk_init_data) {
3369                         .name = "gcc_gp4_clk",
3370                         .parent_hws = (const struct clk_hw*[]){
3371                                 &gcc_gp4_clk_src.clkr.hw,
3372                         },
3373                         .num_parents = 1,
3374                         .flags = CLK_SET_RATE_PARENT,
3375                         .ops = &clk_branch2_ops,
3376                 },
3377         },
3378 };
3379
3380 static struct clk_branch gcc_gp5_clk = {
3381         .halt_reg = 0xc3000,
3382         .halt_check = BRANCH_HALT,
3383         .clkr = {
3384                 .enable_reg = 0xc3000,
3385                 .enable_mask = BIT(0),
3386                 .hw.init = &(const struct clk_init_data) {
3387                         .name = "gcc_gp5_clk",
3388                         .parent_hws = (const struct clk_hw*[]){
3389                                 &gcc_gp5_clk_src.clkr.hw,
3390                         },
3391                         .num_parents = 1,
3392                         .flags = CLK_SET_RATE_PARENT,
3393                         .ops = &clk_branch2_ops,
3394                 },
3395         },
3396 };
3397
3398 static struct clk_branch gcc_gpu_gpll0_clk_src = {
3399         .halt_check = BRANCH_HALT_DELAY,
3400         .clkr = {
3401                 .enable_reg = 0x52000,
3402                 .enable_mask = BIT(15),
3403                 .hw.init = &(const struct clk_init_data) {
3404                         .name = "gcc_gpu_gpll0_clk_src",
3405                         .parent_hws = (const struct clk_hw*[]){
3406                                 &gcc_gpll0.clkr.hw,
3407                         },
3408                         .num_parents = 1,
3409                         .flags = CLK_SET_RATE_PARENT,
3410                         .ops = &clk_branch2_ops,
3411                 },
3412         },
3413 };
3414
3415 static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
3416         .halt_check = BRANCH_HALT_DELAY,
3417         .clkr = {
3418                 .enable_reg = 0x52000,
3419                 .enable_mask = BIT(16),
3420                 .hw.init = &(const struct clk_init_data) {
3421                         .name = "gcc_gpu_gpll0_div_clk_src",
3422                         .parent_hws = (const struct clk_hw*[]){
3423                                 &gcc_gpll0_out_even.clkr.hw,
3424                         },
3425                         .num_parents = 1,
3426                         .flags = CLK_SET_RATE_PARENT,
3427                         .ops = &clk_branch2_ops,
3428                 },
3429         },
3430 };
3431
3432 static struct clk_branch gcc_gpu_iref_en = {
3433         .halt_reg = 0x8c014,
3434         .halt_check = BRANCH_HALT,
3435         .clkr = {
3436                 .enable_reg = 0x8c014,
3437                 .enable_mask = BIT(0),
3438                 .hw.init = &(const struct clk_init_data) {
3439                         .name = "gcc_gpu_iref_en",
3440                         .ops = &clk_branch2_ops,
3441                 },
3442         },
3443 };
3444
3445 static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
3446         .halt_reg = 0x71010,
3447         .halt_check = BRANCH_HALT_VOTED,
3448         .hwcg_reg = 0x71010,
3449         .hwcg_bit = 1,
3450         .clkr = {
3451                 .enable_reg = 0x71010,
3452                 .enable_mask = BIT(0),
3453                 .hw.init = &(const struct clk_init_data) {
3454                         .name = "gcc_gpu_memnoc_gfx_clk",
3455                         .ops = &clk_branch2_aon_ops,
3456                 },
3457         },
3458 };
3459
3460 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
3461         .halt_reg = 0x71020,
3462         .halt_check = BRANCH_HALT,
3463         .clkr = {
3464                 .enable_reg = 0x71020,
3465                 .enable_mask = BIT(0),
3466                 .hw.init = &(const struct clk_init_data) {
3467                         .name = "gcc_gpu_snoc_dvm_gfx_clk",
3468                         .ops = &clk_branch2_aon_ops,
3469                 },
3470         },
3471 };
3472
3473 static struct clk_branch gcc_gpu_tcu_throttle_ahb_clk = {
3474         .halt_reg = 0x71008,
3475         .halt_check = BRANCH_HALT_VOTED,
3476         .hwcg_reg = 0x71008,
3477         .hwcg_bit = 1,
3478         .clkr = {
3479                 .enable_reg = 0x71008,
3480                 .enable_mask = BIT(0),
3481                 .hw.init = &(const struct clk_init_data) {
3482                         .name = "gcc_gpu_tcu_throttle_ahb_clk",
3483                         .ops = &clk_branch2_ops,
3484                 },
3485         },
3486 };
3487
3488 static struct clk_branch gcc_gpu_tcu_throttle_clk = {
3489         .halt_reg = 0x71018,
3490         .halt_check = BRANCH_HALT_VOTED,
3491         .hwcg_reg = 0x71018,
3492         .hwcg_bit = 1,
3493         .clkr = {
3494                 .enable_reg = 0x71018,
3495                 .enable_mask = BIT(0),
3496                 .hw.init = &(const struct clk_init_data) {
3497                         .name = "gcc_gpu_tcu_throttle_clk",
3498                         .ops = &clk_branch2_ops,
3499                 },
3500         },
3501 };
3502
3503 static struct clk_branch gcc_pcie0_phy_rchng_clk = {
3504         .halt_reg = 0xa4038,
3505         .halt_check = BRANCH_HALT_VOTED,
3506         .clkr = {
3507                 .enable_reg = 0x52018,
3508                 .enable_mask = BIT(11),
3509                 .hw.init = &(const struct clk_init_data) {
3510                         .name = "gcc_pcie0_phy_rchng_clk",
3511                         .parent_hws = (const struct clk_hw*[]){
3512                                 &gcc_pcie_0_phy_rchng_clk_src.clkr.hw,
3513                         },
3514                         .num_parents = 1,
3515                         .flags = CLK_SET_RATE_PARENT,
3516                         .ops = &clk_branch2_ops,
3517                 },
3518         },
3519 };
3520
3521 static struct clk_branch gcc_pcie1_phy_rchng_clk = {
3522         .halt_reg = 0x8d038,
3523         .halt_check = BRANCH_HALT_VOTED,
3524         .clkr = {
3525                 .enable_reg = 0x52000,
3526                 .enable_mask = BIT(23),
3527                 .hw.init = &(const struct clk_init_data) {
3528                         .name = "gcc_pcie1_phy_rchng_clk",
3529                         .parent_hws = (const struct clk_hw*[]){
3530                                 &gcc_pcie_1_phy_rchng_clk_src.clkr.hw,
3531                         },
3532                         .num_parents = 1,
3533                         .flags = CLK_SET_RATE_PARENT,
3534                         .ops = &clk_branch2_ops,
3535                 },
3536         },
3537 };
3538
3539 static struct clk_branch gcc_pcie2a_phy_rchng_clk = {
3540         .halt_reg = 0x9d040,
3541         .halt_check = BRANCH_HALT_VOTED,
3542         .clkr = {
3543                 .enable_reg = 0x52010,
3544                 .enable_mask = BIT(15),
3545                 .hw.init = &(const struct clk_init_data) {
3546                         .name = "gcc_pcie2a_phy_rchng_clk",
3547                         .parent_hws = (const struct clk_hw*[]){
3548                                 &gcc_pcie_2a_phy_rchng_clk_src.clkr.hw,
3549                         },
3550                         .num_parents = 1,
3551                         .flags = CLK_SET_RATE_PARENT,
3552                         .ops = &clk_branch2_ops,
3553                 },
3554         },
3555 };
3556
3557 static struct clk_branch gcc_pcie2b_phy_rchng_clk = {
3558         .halt_reg = 0x9e040,
3559         .halt_check = BRANCH_HALT_VOTED,
3560         .clkr = {
3561                 .enable_reg = 0x52010,
3562                 .enable_mask = BIT(22),
3563                 .hw.init = &(const struct clk_init_data) {
3564                         .name = "gcc_pcie2b_phy_rchng_clk",
3565                         .parent_hws = (const struct clk_hw*[]){
3566                                 &gcc_pcie_2b_phy_rchng_clk_src.clkr.hw,
3567                         },
3568                         .num_parents = 1,
3569                         .flags = CLK_SET_RATE_PARENT,
3570                         .ops = &clk_branch2_ops,
3571                 },
3572         },
3573 };
3574
3575 static struct clk_branch gcc_pcie3a_phy_rchng_clk = {
3576         .halt_reg = 0xa0040,
3577         .halt_check = BRANCH_HALT_VOTED,
3578         .clkr = {
3579                 .enable_reg = 0x52010,
3580                 .enable_mask = BIT(29),
3581                 .hw.init = &(const struct clk_init_data) {
3582                         .name = "gcc_pcie3a_phy_rchng_clk",
3583                         .parent_hws = (const struct clk_hw*[]){
3584                                 &gcc_pcie_3a_phy_rchng_clk_src.clkr.hw,
3585                         },
3586                         .num_parents = 1,
3587                         .flags = CLK_SET_RATE_PARENT,
3588                         .ops = &clk_branch2_ops,
3589                 },
3590         },
3591 };
3592
3593 static struct clk_branch gcc_pcie3b_phy_rchng_clk = {
3594         .halt_reg = 0xa2040,
3595         .halt_check = BRANCH_HALT_VOTED,
3596         .clkr = {
3597                 .enable_reg = 0x52018,
3598                 .enable_mask = BIT(4),
3599                 .hw.init = &(const struct clk_init_data) {
3600                         .name = "gcc_pcie3b_phy_rchng_clk",
3601                         .parent_hws = (const struct clk_hw*[]){
3602                                 &gcc_pcie_3b_phy_rchng_clk_src.clkr.hw,
3603                         },
3604                         .num_parents = 1,
3605                         .flags = CLK_SET_RATE_PARENT,
3606                         .ops = &clk_branch2_ops,
3607                 },
3608         },
3609 };
3610
3611 static struct clk_branch gcc_pcie4_phy_rchng_clk = {
3612         .halt_reg = 0x6b040,
3613         .halt_check = BRANCH_HALT_VOTED,
3614         .clkr = {
3615                 .enable_reg = 0x52000,
3616                 .enable_mask = BIT(22),
3617                 .hw.init = &(const struct clk_init_data) {
3618                         .name = "gcc_pcie4_phy_rchng_clk",
3619                         .parent_hws = (const struct clk_hw*[]){
3620                                 &gcc_pcie_4_phy_rchng_clk_src.clkr.hw,
3621                         },
3622                         .num_parents = 1,
3623                         .flags = CLK_SET_RATE_PARENT,
3624                         .ops = &clk_branch2_ops,
3625                 },
3626         },
3627 };
3628
3629 static struct clk_branch gcc_pcie_0_aux_clk = {
3630         .halt_reg = 0xa4028,
3631         .halt_check = BRANCH_HALT_VOTED,
3632         .clkr = {
3633                 .enable_reg = 0x52018,
3634                 .enable_mask = BIT(9),
3635                 .hw.init = &(const struct clk_init_data) {
3636                         .name = "gcc_pcie_0_aux_clk",
3637                         .parent_hws = (const struct clk_hw*[]){
3638                                 &gcc_pcie_0_aux_clk_src.clkr.hw,
3639                         },
3640                         .num_parents = 1,
3641                         .flags = CLK_SET_RATE_PARENT,
3642                         .ops = &clk_branch2_ops,
3643                 },
3644         },
3645 };
3646
3647 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
3648         .halt_reg = 0xa4024,
3649         .halt_check = BRANCH_HALT_VOTED,
3650         .hwcg_reg = 0xa4024,
3651         .hwcg_bit = 1,
3652         .clkr = {
3653                 .enable_reg = 0x52018,
3654                 .enable_mask = BIT(8),
3655                 .hw.init = &(const struct clk_init_data) {
3656                         .name = "gcc_pcie_0_cfg_ahb_clk",
3657                         .ops = &clk_branch2_ops,
3658                 },
3659         },
3660 };
3661
3662 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
3663         .halt_reg = 0xa401c,
3664         .halt_check = BRANCH_HALT_SKIP,
3665         .hwcg_reg = 0xa401c,
3666         .hwcg_bit = 1,
3667         .clkr = {
3668                 .enable_reg = 0x52018,
3669                 .enable_mask = BIT(7),
3670                 .hw.init = &(const struct clk_init_data) {
3671                         .name = "gcc_pcie_0_mstr_axi_clk",
3672                         .ops = &clk_branch2_ops,
3673                 },
3674         },
3675 };
3676
3677 static struct clk_branch gcc_pcie_0_pipe_clk = {
3678         .halt_reg = 0xa4030,
3679         .halt_check = BRANCH_HALT_SKIP,
3680         .clkr = {
3681                 .enable_reg = 0x52018,
3682                 .enable_mask = BIT(10),
3683                 .hw.init = &(const struct clk_init_data) {
3684                         .name = "gcc_pcie_0_pipe_clk",
3685                         .parent_hws = (const struct clk_hw*[]){
3686                                 &gcc_usb4_phy_pcie_pipe_mux_clk_src.clkr.hw,
3687                         },
3688                         .num_parents = 1,
3689                         .flags = CLK_SET_RATE_PARENT,
3690                         .ops = &clk_branch2_ops,
3691                 },
3692         },
3693 };
3694
3695 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
3696         .halt_reg = 0xa4014,
3697         .halt_check = BRANCH_HALT_VOTED,
3698         .hwcg_reg = 0xa4014,
3699         .hwcg_bit = 1,
3700         .clkr = {
3701                 .enable_reg = 0x52018,
3702                 .enable_mask = BIT(6),
3703                 .hw.init = &(const struct clk_init_data) {
3704                         .name = "gcc_pcie_0_slv_axi_clk",
3705                         .ops = &clk_branch2_ops,
3706                 },
3707         },
3708 };
3709
3710 static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
3711         .halt_reg = 0xa4010,
3712         .halt_check = BRANCH_HALT_VOTED,
3713         .clkr = {
3714                 .enable_reg = 0x52018,
3715                 .enable_mask = BIT(5),
3716                 .hw.init = &(const struct clk_init_data) {
3717                         .name = "gcc_pcie_0_slv_q2a_axi_clk",
3718                         .ops = &clk_branch2_ops,
3719                 },
3720         },
3721 };
3722
3723 static struct clk_branch gcc_pcie_1_aux_clk = {
3724         .halt_reg = 0x8d028,
3725         .halt_check = BRANCH_HALT_VOTED,
3726         .clkr = {
3727                 .enable_reg = 0x52000,
3728                 .enable_mask = BIT(29),
3729                 .hw.init = &(const struct clk_init_data) {
3730                         .name = "gcc_pcie_1_aux_clk",
3731                         .parent_hws = (const struct clk_hw*[]){
3732                                 &gcc_pcie_1_aux_clk_src.clkr.hw,
3733                         },
3734                         .num_parents = 1,
3735                         .flags = CLK_SET_RATE_PARENT,
3736                         .ops = &clk_branch2_ops,
3737                 },
3738         },
3739 };
3740
3741 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
3742         .halt_reg = 0x8d024,
3743         .halt_check = BRANCH_HALT_VOTED,
3744         .hwcg_reg = 0x8d024,
3745         .hwcg_bit = 1,
3746         .clkr = {
3747                 .enable_reg = 0x52000,
3748                 .enable_mask = BIT(28),
3749                 .hw.init = &(const struct clk_init_data) {
3750                         .name = "gcc_pcie_1_cfg_ahb_clk",
3751                         .ops = &clk_branch2_ops,
3752                 },
3753         },
3754 };
3755
3756 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
3757         .halt_reg = 0x8d01c,
3758         .halt_check = BRANCH_HALT_SKIP,
3759         .hwcg_reg = 0x8d01c,
3760         .hwcg_bit = 1,
3761         .clkr = {
3762                 .enable_reg = 0x52000,
3763                 .enable_mask = BIT(27),
3764                 .hw.init = &(const struct clk_init_data) {
3765                         .name = "gcc_pcie_1_mstr_axi_clk",
3766                         .ops = &clk_branch2_ops,
3767                 },
3768         },
3769 };
3770
3771 static struct clk_branch gcc_pcie_1_pipe_clk = {
3772         .halt_reg = 0x8d030,
3773         .halt_check = BRANCH_HALT_SKIP,
3774         .clkr = {
3775                 .enable_reg = 0x52000,
3776                 .enable_mask = BIT(30),
3777                 .hw.init = &(const struct clk_init_data) {
3778                         .name = "gcc_pcie_1_pipe_clk",
3779                         .parent_hws = (const struct clk_hw*[]){
3780                                 &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr.hw,
3781                         },
3782                         .num_parents = 1,
3783                         .flags = CLK_SET_RATE_PARENT,
3784                         .ops = &clk_branch2_ops,
3785                 },
3786         },
3787 };
3788
3789 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
3790         .halt_reg = 0x8d014,
3791         .halt_check = BRANCH_HALT_VOTED,
3792         .hwcg_reg = 0x8d014,
3793         .hwcg_bit = 1,
3794         .clkr = {
3795                 .enable_reg = 0x52000,
3796                 .enable_mask = BIT(26),
3797                 .hw.init = &(const struct clk_init_data) {
3798                         .name = "gcc_pcie_1_slv_axi_clk",
3799                         .ops = &clk_branch2_ops,
3800                 },
3801         },
3802 };
3803
3804 static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
3805         .halt_reg = 0x8d010,
3806         .halt_check = BRANCH_HALT_VOTED,
3807         .clkr = {
3808                 .enable_reg = 0x52000,
3809                 .enable_mask = BIT(25),
3810                 .hw.init = &(const struct clk_init_data) {
3811                         .name = "gcc_pcie_1_slv_q2a_axi_clk",
3812                         .ops = &clk_branch2_ops,
3813                 },
3814         },
3815 };
3816
3817 static struct clk_branch gcc_pcie_2a2b_clkref_clk = {
3818         .halt_reg = 0x8c034,
3819         .halt_check = BRANCH_HALT,
3820         .clkr = {
3821                 .enable_reg = 0x8c034,
3822                 .enable_mask = BIT(0),
3823                 .hw.init = &(const struct clk_init_data) {
3824                         .name = "gcc_pcie_2a2b_clkref_clk",
3825                         .ops = &clk_branch2_ops,
3826                 },
3827         },
3828 };
3829
3830 static struct clk_branch gcc_pcie_2a_aux_clk = {
3831         .halt_reg = 0x9d028,
3832         .halt_check = BRANCH_HALT_VOTED,
3833         .clkr = {
3834                 .enable_reg = 0x52010,
3835                 .enable_mask = BIT(13),
3836                 .hw.init = &(const struct clk_init_data) {
3837                         .name = "gcc_pcie_2a_aux_clk",
3838                         .parent_hws = (const struct clk_hw*[]){
3839                                 &gcc_pcie_2a_aux_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_pcie_2a_cfg_ahb_clk = {
3849         .halt_reg = 0x9d024,
3850         .halt_check = BRANCH_HALT_VOTED,
3851         .hwcg_reg = 0x9d024,
3852         .hwcg_bit = 1,
3853         .clkr = {
3854                 .enable_reg = 0x52010,
3855                 .enable_mask = BIT(12),
3856                 .hw.init = &(const struct clk_init_data) {
3857                         .name = "gcc_pcie_2a_cfg_ahb_clk",
3858                         .ops = &clk_branch2_ops,
3859                 },
3860         },
3861 };
3862
3863 static struct clk_branch gcc_pcie_2a_mstr_axi_clk = {
3864         .halt_reg = 0x9d01c,
3865         .halt_check = BRANCH_HALT_SKIP,
3866         .hwcg_reg = 0x9d01c,
3867         .hwcg_bit = 1,
3868         .clkr = {
3869                 .enable_reg = 0x52010,
3870                 .enable_mask = BIT(11),
3871                 .hw.init = &(const struct clk_init_data) {
3872                         .name = "gcc_pcie_2a_mstr_axi_clk",
3873                         .ops = &clk_branch2_ops,
3874                 },
3875         },
3876 };
3877
3878 static struct clk_branch gcc_pcie_2a_pipe_clk = {
3879         .halt_reg = 0x9d030,
3880         .halt_check = BRANCH_HALT_SKIP,
3881         .clkr = {
3882                 .enable_reg = 0x52010,
3883                 .enable_mask = BIT(14),
3884                 .hw.init = &(const struct clk_init_data) {
3885                         .name = "gcc_pcie_2a_pipe_clk",
3886                         .parent_hws = (const struct clk_hw*[]){
3887                                 &gcc_pcie_2a_pipe_clk_src.clkr.hw,
3888                         },
3889                         .num_parents = 1,
3890                         .flags = CLK_SET_RATE_PARENT,
3891                         .ops = &clk_branch2_ops,
3892                 },
3893         },
3894 };
3895
3896 static struct clk_branch gcc_pcie_2a_pipediv2_clk = {
3897         .halt_reg = 0x9d038,
3898         .halt_check = BRANCH_HALT_SKIP,
3899         .clkr = {
3900                 .enable_reg = 0x52018,
3901                 .enable_mask = BIT(22),
3902                 .hw.init = &(const struct clk_init_data) {
3903                         .name = "gcc_pcie_2a_pipediv2_clk",
3904                         .parent_hws = (const struct clk_hw*[]){
3905                                 &gcc_pcie_2a_pipe_div_clk_src.clkr.hw,
3906                         },
3907                         .num_parents = 1,
3908                         .flags = CLK_SET_RATE_PARENT,
3909                         .ops = &clk_branch2_ops,
3910                 },
3911         },
3912 };
3913
3914 static struct clk_branch gcc_pcie_2a_slv_axi_clk = {
3915         .halt_reg = 0x9d014,
3916         .halt_check = BRANCH_HALT_VOTED,
3917         .hwcg_reg = 0x9d014,
3918         .hwcg_bit = 1,
3919         .clkr = {
3920                 .enable_reg = 0x52010,
3921                 .enable_mask = BIT(10),
3922                 .hw.init = &(const struct clk_init_data) {
3923                         .name = "gcc_pcie_2a_slv_axi_clk",
3924                         .ops = &clk_branch2_ops,
3925                 },
3926         },
3927 };
3928
3929 static struct clk_branch gcc_pcie_2a_slv_q2a_axi_clk = {
3930         .halt_reg = 0x9d010,
3931         .halt_check = BRANCH_HALT_VOTED,
3932         .clkr = {
3933                 .enable_reg = 0x52018,
3934                 .enable_mask = BIT(12),
3935                 .hw.init = &(const struct clk_init_data) {
3936                         .name = "gcc_pcie_2a_slv_q2a_axi_clk",
3937                         .ops = &clk_branch2_ops,
3938                 },
3939         },
3940 };
3941
3942 static struct clk_branch gcc_pcie_2b_aux_clk = {
3943         .halt_reg = 0x9e028,
3944         .halt_check = BRANCH_HALT_VOTED,
3945         .clkr = {
3946                 .enable_reg = 0x52010,
3947                 .enable_mask = BIT(20),
3948                 .hw.init = &(const struct clk_init_data) {
3949                         .name = "gcc_pcie_2b_aux_clk",
3950                         .parent_hws = (const struct clk_hw*[]){
3951                                 &gcc_pcie_2b_aux_clk_src.clkr.hw,
3952                         },
3953                         .num_parents = 1,
3954                         .flags = CLK_SET_RATE_PARENT,
3955                         .ops = &clk_branch2_ops,
3956                 },
3957         },
3958 };
3959
3960 static struct clk_branch gcc_pcie_2b_cfg_ahb_clk = {
3961         .halt_reg = 0x9e024,
3962         .halt_check = BRANCH_HALT_VOTED,
3963         .hwcg_reg = 0x9e024,
3964         .hwcg_bit = 1,
3965         .clkr = {
3966                 .enable_reg = 0x52010,
3967                 .enable_mask = BIT(19),
3968                 .hw.init = &(const struct clk_init_data) {
3969                         .name = "gcc_pcie_2b_cfg_ahb_clk",
3970                         .ops = &clk_branch2_ops,
3971                 },
3972         },
3973 };
3974
3975 static struct clk_branch gcc_pcie_2b_mstr_axi_clk = {
3976         .halt_reg = 0x9e01c,
3977         .halt_check = BRANCH_HALT_SKIP,
3978         .hwcg_reg = 0x9e01c,
3979         .hwcg_bit = 1,
3980         .clkr = {
3981                 .enable_reg = 0x52010,
3982                 .enable_mask = BIT(18),
3983                 .hw.init = &(const struct clk_init_data) {
3984                         .name = "gcc_pcie_2b_mstr_axi_clk",
3985                         .ops = &clk_branch2_ops,
3986                 },
3987         },
3988 };
3989
3990 static struct clk_branch gcc_pcie_2b_pipe_clk = {
3991         .halt_reg = 0x9e030,
3992         .halt_check = BRANCH_HALT_SKIP,
3993         .clkr = {
3994                 .enable_reg = 0x52010,
3995                 .enable_mask = BIT(21),
3996                 .hw.init = &(const struct clk_init_data) {
3997                         .name = "gcc_pcie_2b_pipe_clk",
3998                         .parent_hws = (const struct clk_hw*[]){
3999                                 &gcc_pcie_2b_pipe_clk_src.clkr.hw,
4000                         },
4001                         .num_parents = 1,
4002                         .flags = CLK_SET_RATE_PARENT,
4003                         .ops = &clk_branch2_ops,
4004                 },
4005         },
4006 };
4007
4008 static struct clk_branch gcc_pcie_2b_pipediv2_clk = {
4009         .halt_reg = 0x9e038,
4010         .halt_check = BRANCH_HALT_SKIP,
4011         .clkr = {
4012                 .enable_reg = 0x52018,
4013                 .enable_mask = BIT(23),
4014                 .hw.init = &(const struct clk_init_data) {
4015                         .name = "gcc_pcie_2b_pipediv2_clk",
4016                         .parent_hws = (const struct clk_hw*[]){
4017                                 &gcc_pcie_2b_pipe_div_clk_src.clkr.hw,
4018                         },
4019                         .num_parents = 1,
4020                         .flags = CLK_SET_RATE_PARENT,
4021                         .ops = &clk_branch2_ops,
4022                 },
4023         },
4024 };
4025
4026 static struct clk_branch gcc_pcie_2b_slv_axi_clk = {
4027         .halt_reg = 0x9e014,
4028         .halt_check = BRANCH_HALT_VOTED,
4029         .hwcg_reg = 0x9e014,
4030         .hwcg_bit = 1,
4031         .clkr = {
4032                 .enable_reg = 0x52010,
4033                 .enable_mask = BIT(17),
4034                 .hw.init = &(const struct clk_init_data) {
4035                         .name = "gcc_pcie_2b_slv_axi_clk",
4036                         .ops = &clk_branch2_ops,
4037                 },
4038         },
4039 };
4040
4041 static struct clk_branch gcc_pcie_2b_slv_q2a_axi_clk = {
4042         .halt_reg = 0x9e010,
4043         .halt_check = BRANCH_HALT_VOTED,
4044         .clkr = {
4045                 .enable_reg = 0x52010,
4046                 .enable_mask = BIT(16),
4047                 .hw.init = &(const struct clk_init_data) {
4048                         .name = "gcc_pcie_2b_slv_q2a_axi_clk",
4049                         .ops = &clk_branch2_ops,
4050                 },
4051         },
4052 };
4053
4054 static struct clk_branch gcc_pcie_3a3b_clkref_clk = {
4055         .halt_reg = 0x8c038,
4056         .halt_check = BRANCH_HALT,
4057         .clkr = {
4058                 .enable_reg = 0x8c038,
4059                 .enable_mask = BIT(0),
4060                 .hw.init = &(const struct clk_init_data) {
4061                         .name = "gcc_pcie_3a3b_clkref_clk",
4062                         .ops = &clk_branch2_ops,
4063                 },
4064         },
4065 };
4066
4067 static struct clk_branch gcc_pcie_3a_aux_clk = {
4068         .halt_reg = 0xa0028,
4069         .halt_check = BRANCH_HALT_VOTED,
4070         .clkr = {
4071                 .enable_reg = 0x52010,
4072                 .enable_mask = BIT(27),
4073                 .hw.init = &(const struct clk_init_data) {
4074                         .name = "gcc_pcie_3a_aux_clk",
4075                         .parent_hws = (const struct clk_hw*[]){
4076                                 &gcc_pcie_3a_aux_clk_src.clkr.hw,
4077                         },
4078                         .num_parents = 1,
4079                         .flags = CLK_SET_RATE_PARENT,
4080                         .ops = &clk_branch2_ops,
4081                 },
4082         },
4083 };
4084
4085 static struct clk_branch gcc_pcie_3a_cfg_ahb_clk = {
4086         .halt_reg = 0xa0024,
4087         .halt_check = BRANCH_HALT_VOTED,
4088         .hwcg_reg = 0xa0024,
4089         .hwcg_bit = 1,
4090         .clkr = {
4091                 .enable_reg = 0x52010,
4092                 .enable_mask = BIT(26),
4093                 .hw.init = &(const struct clk_init_data) {
4094                         .name = "gcc_pcie_3a_cfg_ahb_clk",
4095                         .ops = &clk_branch2_ops,
4096                 },
4097         },
4098 };
4099
4100 static struct clk_branch gcc_pcie_3a_mstr_axi_clk = {
4101         .halt_reg = 0xa001c,
4102         .halt_check = BRANCH_HALT_SKIP,
4103         .hwcg_reg = 0xa001c,
4104         .hwcg_bit = 1,
4105         .clkr = {
4106                 .enable_reg = 0x52010,
4107                 .enable_mask = BIT(25),
4108                 .hw.init = &(const struct clk_init_data) {
4109                         .name = "gcc_pcie_3a_mstr_axi_clk",
4110                         .ops = &clk_branch2_ops,
4111                 },
4112         },
4113 };
4114
4115 static struct clk_branch gcc_pcie_3a_pipe_clk = {
4116         .halt_reg = 0xa0030,
4117         .halt_check = BRANCH_HALT_SKIP,
4118         .clkr = {
4119                 .enable_reg = 0x52010,
4120                 .enable_mask = BIT(28),
4121                 .hw.init = &(const struct clk_init_data) {
4122                         .name = "gcc_pcie_3a_pipe_clk",
4123                         .parent_hws = (const struct clk_hw*[]){
4124                                 &gcc_pcie_3a_pipe_clk_src.clkr.hw,
4125                         },
4126                         .num_parents = 1,
4127                         .flags = CLK_SET_RATE_PARENT,
4128                         .ops = &clk_branch2_ops,
4129                 },
4130         },
4131 };
4132
4133 static struct clk_branch gcc_pcie_3a_pipediv2_clk = {
4134         .halt_reg = 0xa0038,
4135         .halt_check = BRANCH_HALT_SKIP,
4136         .clkr = {
4137                 .enable_reg = 0x52018,
4138                 .enable_mask = BIT(24),
4139                 .hw.init = &(const struct clk_init_data) {
4140                         .name = "gcc_pcie_3a_pipediv2_clk",
4141                         .parent_hws = (const struct clk_hw*[]){
4142                                 &gcc_pcie_3a_pipe_div_clk_src.clkr.hw,
4143                         },
4144                         .num_parents = 1,
4145                         .flags = CLK_SET_RATE_PARENT,
4146                         .ops = &clk_branch2_ops,
4147                 },
4148         },
4149 };
4150
4151 static struct clk_branch gcc_pcie_3a_slv_axi_clk = {
4152         .halt_reg = 0xa0014,
4153         .halt_check = BRANCH_HALT_VOTED,
4154         .hwcg_reg = 0xa0014,
4155         .hwcg_bit = 1,
4156         .clkr = {
4157                 .enable_reg = 0x52010,
4158                 .enable_mask = BIT(24),
4159                 .hw.init = &(const struct clk_init_data) {
4160                         .name = "gcc_pcie_3a_slv_axi_clk",
4161                         .ops = &clk_branch2_ops,
4162                 },
4163         },
4164 };
4165
4166 static struct clk_branch gcc_pcie_3a_slv_q2a_axi_clk = {
4167         .halt_reg = 0xa0010,
4168         .halt_check = BRANCH_HALT_VOTED,
4169         .clkr = {
4170                 .enable_reg = 0x52010,
4171                 .enable_mask = BIT(23),
4172                 .hw.init = &(const struct clk_init_data) {
4173                         .name = "gcc_pcie_3a_slv_q2a_axi_clk",
4174                         .ops = &clk_branch2_ops,
4175                 },
4176         },
4177 };
4178
4179 static struct clk_branch gcc_pcie_3b_aux_clk = {
4180         .halt_reg = 0xa2028,
4181         .halt_check = BRANCH_HALT_VOTED,
4182         .clkr = {
4183                 .enable_reg = 0x52018,
4184                 .enable_mask = BIT(2),
4185                 .hw.init = &(const struct clk_init_data) {
4186                         .name = "gcc_pcie_3b_aux_clk",
4187                         .parent_hws = (const struct clk_hw*[]){
4188                                 &gcc_pcie_3b_aux_clk_src.clkr.hw,
4189                         },
4190                         .num_parents = 1,
4191                         .flags = CLK_SET_RATE_PARENT,
4192                         .ops = &clk_branch2_ops,
4193                 },
4194         },
4195 };
4196
4197 static struct clk_branch gcc_pcie_3b_cfg_ahb_clk = {
4198         .halt_reg = 0xa2024,
4199         .halt_check = BRANCH_HALT_VOTED,
4200         .hwcg_reg = 0xa2024,
4201         .hwcg_bit = 1,
4202         .clkr = {
4203                 .enable_reg = 0x52018,
4204                 .enable_mask = BIT(1),
4205                 .hw.init = &(const struct clk_init_data) {
4206                         .name = "gcc_pcie_3b_cfg_ahb_clk",
4207                         .ops = &clk_branch2_ops,
4208                 },
4209         },
4210 };
4211
4212 static struct clk_branch gcc_pcie_3b_mstr_axi_clk = {
4213         .halt_reg = 0xa201c,
4214         .halt_check = BRANCH_HALT_SKIP,
4215         .hwcg_reg = 0xa201c,
4216         .hwcg_bit = 1,
4217         .clkr = {
4218                 .enable_reg = 0x52018,
4219                 .enable_mask = BIT(0),
4220                 .hw.init = &(const struct clk_init_data) {
4221                         .name = "gcc_pcie_3b_mstr_axi_clk",
4222                         .ops = &clk_branch2_ops,
4223                 },
4224         },
4225 };
4226
4227 static struct clk_branch gcc_pcie_3b_pipe_clk = {
4228         .halt_reg = 0xa2030,
4229         .halt_check = BRANCH_HALT_SKIP,
4230         .clkr = {
4231                 .enable_reg = 0x52018,
4232                 .enable_mask = BIT(3),
4233                 .hw.init = &(const struct clk_init_data) {
4234                         .name = "gcc_pcie_3b_pipe_clk",
4235                         .parent_hws = (const struct clk_hw*[]){
4236                                 &gcc_pcie_3b_pipe_clk_src.clkr.hw,
4237                         },
4238                         .num_parents = 1,
4239                         .flags = CLK_SET_RATE_PARENT,
4240                         .ops = &clk_branch2_ops,
4241                 },
4242         },
4243 };
4244
4245 static struct clk_branch gcc_pcie_3b_pipediv2_clk = {
4246         .halt_reg = 0xa2038,
4247         .halt_check = BRANCH_HALT_SKIP,
4248         .clkr = {
4249                 .enable_reg = 0x52018,
4250                 .enable_mask = BIT(25),
4251                 .hw.init = &(const struct clk_init_data) {
4252                         .name = "gcc_pcie_3b_pipediv2_clk",
4253                         .parent_hws = (const struct clk_hw*[]){
4254                                 &gcc_pcie_3b_pipe_div_clk_src.clkr.hw,
4255                         },
4256                         .num_parents = 1,
4257                         .flags = CLK_SET_RATE_PARENT,
4258                         .ops = &clk_branch2_ops,
4259                 },
4260         },
4261 };
4262
4263 static struct clk_branch gcc_pcie_3b_slv_axi_clk = {
4264         .halt_reg = 0xa2014,
4265         .halt_check = BRANCH_HALT_VOTED,
4266         .hwcg_reg = 0xa2014,
4267         .hwcg_bit = 1,
4268         .clkr = {
4269                 .enable_reg = 0x52010,
4270                 .enable_mask = BIT(31),
4271                 .hw.init = &(const struct clk_init_data) {
4272                         .name = "gcc_pcie_3b_slv_axi_clk",
4273                         .ops = &clk_branch2_ops,
4274                 },
4275         },
4276 };
4277
4278 static struct clk_branch gcc_pcie_3b_slv_q2a_axi_clk = {
4279         .halt_reg = 0xa2010,
4280         .halt_check = BRANCH_HALT_VOTED,
4281         .clkr = {
4282                 .enable_reg = 0x52010,
4283                 .enable_mask = BIT(30),
4284                 .hw.init = &(const struct clk_init_data) {
4285                         .name = "gcc_pcie_3b_slv_q2a_axi_clk",
4286                         .ops = &clk_branch2_ops,
4287                 },
4288         },
4289 };
4290
4291 static struct clk_branch gcc_pcie_4_aux_clk = {
4292         .halt_reg = 0x6b028,
4293         .halt_check = BRANCH_HALT_VOTED,
4294         .clkr = {
4295                 .enable_reg = 0x52008,
4296                 .enable_mask = BIT(3),
4297                 .hw.init = &(const struct clk_init_data) {
4298                         .name = "gcc_pcie_4_aux_clk",
4299                         .parent_hws = (const struct clk_hw*[]){
4300                                 &gcc_pcie_4_aux_clk_src.clkr.hw,
4301                         },
4302                         .num_parents = 1,
4303                         .flags = CLK_SET_RATE_PARENT,
4304                         .ops = &clk_branch2_ops,
4305                 },
4306         },
4307 };
4308
4309 static struct clk_branch gcc_pcie_4_cfg_ahb_clk = {
4310         .halt_reg = 0x6b024,
4311         .halt_check = BRANCH_HALT_VOTED,
4312         .hwcg_reg = 0x6b024,
4313         .hwcg_bit = 1,
4314         .clkr = {
4315                 .enable_reg = 0x52008,
4316                 .enable_mask = BIT(2),
4317                 .hw.init = &(const struct clk_init_data) {
4318                         .name = "gcc_pcie_4_cfg_ahb_clk",
4319                         .ops = &clk_branch2_ops,
4320                 },
4321         },
4322 };
4323
4324 static struct clk_branch gcc_pcie_4_clkref_clk = {
4325         .halt_reg = 0x8c030,
4326         .halt_check = BRANCH_HALT,
4327         .clkr = {
4328                 .enable_reg = 0x8c030,
4329                 .enable_mask = BIT(0),
4330                 .hw.init = &(const struct clk_init_data) {
4331                         .name = "gcc_pcie_4_clkref_clk",
4332                         .ops = &clk_branch2_ops,
4333                 },
4334         },
4335 };
4336
4337 static struct clk_branch gcc_pcie_4_mstr_axi_clk = {
4338         .halt_reg = 0x6b01c,
4339         .halt_check = BRANCH_HALT_SKIP,
4340         .hwcg_reg = 0x6b01c,
4341         .hwcg_bit = 1,
4342         .clkr = {
4343                 .enable_reg = 0x52008,
4344                 .enable_mask = BIT(1),
4345                 .hw.init = &(const struct clk_init_data) {
4346                         .name = "gcc_pcie_4_mstr_axi_clk",
4347                         .ops = &clk_branch2_ops,
4348                 },
4349         },
4350 };
4351
4352 static struct clk_branch gcc_pcie_4_pipe_clk = {
4353         .halt_reg = 0x6b030,
4354         .halt_check = BRANCH_HALT_SKIP,
4355         .clkr = {
4356                 .enable_reg = 0x52008,
4357                 .enable_mask = BIT(4),
4358                 .hw.init = &(const struct clk_init_data) {
4359                         .name = "gcc_pcie_4_pipe_clk",
4360                         .parent_hws = (const struct clk_hw*[]){
4361                                 &gcc_pcie_4_pipe_clk_src.clkr.hw,
4362                         },
4363                         .num_parents = 1,
4364                         .flags = CLK_SET_RATE_PARENT,
4365                         .ops = &clk_branch2_ops,
4366                 },
4367         },
4368 };
4369
4370 static struct clk_branch gcc_pcie_4_pipediv2_clk = {
4371         .halt_reg = 0x6b038,
4372         .halt_check = BRANCH_HALT_SKIP,
4373         .clkr = {
4374                 .enable_reg = 0x52018,
4375                 .enable_mask = BIT(16),
4376                 .hw.init = &(const struct clk_init_data) {
4377                         .name = "gcc_pcie_4_pipediv2_clk",
4378                         .parent_hws = (const struct clk_hw*[]){
4379                                 &gcc_pcie_4_pipe_div_clk_src.clkr.hw,
4380                         },
4381                         .num_parents = 1,
4382                         .flags = CLK_SET_RATE_PARENT,
4383                         .ops = &clk_branch2_ops,
4384                 },
4385         },
4386 };
4387
4388 static struct clk_branch gcc_pcie_4_slv_axi_clk = {
4389         .halt_reg = 0x6b014,
4390         .halt_check = BRANCH_HALT_VOTED,
4391         .hwcg_reg = 0x6b014,
4392         .hwcg_bit = 1,
4393         .clkr = {
4394                 .enable_reg = 0x52008,
4395                 .enable_mask = BIT(0),
4396                 .hw.init = &(const struct clk_init_data) {
4397                         .name = "gcc_pcie_4_slv_axi_clk",
4398                         .ops = &clk_branch2_ops,
4399                 },
4400         },
4401 };
4402
4403 static struct clk_branch gcc_pcie_4_slv_q2a_axi_clk = {
4404         .halt_reg = 0x6b010,
4405         .halt_check = BRANCH_HALT_VOTED,
4406         .clkr = {
4407                 .enable_reg = 0x52008,
4408                 .enable_mask = BIT(5),
4409                 .hw.init = &(const struct clk_init_data) {
4410                         .name = "gcc_pcie_4_slv_q2a_axi_clk",
4411                         .ops = &clk_branch2_ops,
4412                 },
4413         },
4414 };
4415
4416 static struct clk_branch gcc_pcie_rscc_ahb_clk = {
4417         .halt_reg = 0xae008,
4418         .halt_check = BRANCH_HALT_VOTED,
4419         .hwcg_reg = 0xae008,
4420         .hwcg_bit = 1,
4421         .clkr = {
4422                 .enable_reg = 0x52020,
4423                 .enable_mask = BIT(17),
4424                 .hw.init = &(const struct clk_init_data) {
4425                         .name = "gcc_pcie_rscc_ahb_clk",
4426                         .ops = &clk_branch2_ops,
4427                 },
4428         },
4429 };
4430
4431 static struct clk_branch gcc_pcie_rscc_xo_clk = {
4432         .halt_reg = 0xae004,
4433         .halt_check = BRANCH_HALT_VOTED,
4434         .clkr = {
4435                 .enable_reg = 0x52020,
4436                 .enable_mask = BIT(16),
4437                 .hw.init = &(const struct clk_init_data) {
4438                         .name = "gcc_pcie_rscc_xo_clk",
4439                         .parent_hws = (const struct clk_hw*[]){
4440                                 &gcc_pcie_rscc_xo_clk_src.clkr.hw,
4441                         },
4442                         .num_parents = 1,
4443                         .flags = CLK_SET_RATE_PARENT,
4444                         .ops = &clk_branch2_ops,
4445                 },
4446         },
4447 };
4448
4449 static struct clk_branch gcc_pcie_throttle_cfg_clk = {
4450         .halt_reg = 0xa6028,
4451         .halt_check = BRANCH_HALT_VOTED,
4452         .clkr = {
4453                 .enable_reg = 0x52020,
4454                 .enable_mask = BIT(15),
4455                 .hw.init = &(const struct clk_init_data) {
4456                         .name = "gcc_pcie_throttle_cfg_clk",
4457                         .ops = &clk_branch2_ops,
4458                 },
4459         },
4460 };
4461
4462 static struct clk_branch gcc_pdm2_clk = {
4463         .halt_reg = 0x3300c,
4464         .halt_check = BRANCH_HALT,
4465         .clkr = {
4466                 .enable_reg = 0x3300c,
4467                 .enable_mask = BIT(0),
4468                 .hw.init = &(const struct clk_init_data) {
4469                         .name = "gcc_pdm2_clk",
4470                         .parent_hws = (const struct clk_hw*[]){
4471                                 &gcc_pdm2_clk_src.clkr.hw,
4472                         },
4473                         .num_parents = 1,
4474                         .flags = CLK_SET_RATE_PARENT,
4475                         .ops = &clk_branch2_ops,
4476                 },
4477         },
4478 };
4479
4480 static struct clk_branch gcc_pdm_ahb_clk = {
4481         .halt_reg = 0x33004,
4482         .halt_check = BRANCH_HALT_VOTED,
4483         .hwcg_reg = 0x33004,
4484         .hwcg_bit = 1,
4485         .clkr = {
4486                 .enable_reg = 0x33004,
4487                 .enable_mask = BIT(0),
4488                 .hw.init = &(const struct clk_init_data) {
4489                         .name = "gcc_pdm_ahb_clk",
4490                         .ops = &clk_branch2_ops,
4491                 },
4492         },
4493 };
4494
4495 static struct clk_branch gcc_pdm_xo4_clk = {
4496         .halt_reg = 0x33008,
4497         .halt_check = BRANCH_HALT,
4498         .clkr = {
4499                 .enable_reg = 0x33008,
4500                 .enable_mask = BIT(0),
4501                 .hw.init = &(const struct clk_init_data) {
4502                         .name = "gcc_pdm_xo4_clk",
4503                         .ops = &clk_branch2_ops,
4504                 },
4505         },
4506 };
4507
4508 static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
4509         .halt_reg = 0x26008,
4510         .halt_check = BRANCH_HALT_VOTED,
4511         .hwcg_reg = 0x26008,
4512         .hwcg_bit = 1,
4513         .clkr = {
4514                 .enable_reg = 0x26008,
4515                 .enable_mask = BIT(0),
4516                 .hw.init = &(const struct clk_init_data) {
4517                         .name = "gcc_qmip_camera_nrt_ahb_clk",
4518                         .ops = &clk_branch2_ops,
4519                 },
4520         },
4521 };
4522
4523 static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
4524         .halt_reg = 0x2600c,
4525         .halt_check = BRANCH_HALT_VOTED,
4526         .hwcg_reg = 0x2600c,
4527         .hwcg_bit = 1,
4528         .clkr = {
4529                 .enable_reg = 0x2600c,
4530                 .enable_mask = BIT(0),
4531                 .hw.init = &(const struct clk_init_data) {
4532                         .name = "gcc_qmip_camera_rt_ahb_clk",
4533                         .ops = &clk_branch2_ops,
4534                 },
4535         },
4536 };
4537
4538 static struct clk_branch gcc_qmip_disp1_ahb_clk = {
4539         .halt_reg = 0xbb008,
4540         .halt_check = BRANCH_HALT_VOTED,
4541         .hwcg_reg = 0xbb008,
4542         .hwcg_bit = 1,
4543         .clkr = {
4544                 .enable_reg = 0xbb008,
4545                 .enable_mask = BIT(0),
4546                 .hw.init = &(const struct clk_init_data) {
4547                         .name = "gcc_qmip_disp1_ahb_clk",
4548                         .ops = &clk_branch2_ops,
4549                 },
4550         },
4551 };
4552
4553 static struct clk_branch gcc_qmip_disp1_rot_ahb_clk = {
4554         .halt_reg = 0xbb00c,
4555         .halt_check = BRANCH_HALT_VOTED,
4556         .hwcg_reg = 0xbb00c,
4557         .hwcg_bit = 1,
4558         .clkr = {
4559                 .enable_reg = 0xbb00c,
4560                 .enable_mask = BIT(0),
4561                 .hw.init = &(const struct clk_init_data) {
4562                         .name = "gcc_qmip_disp1_rot_ahb_clk",
4563                         .ops = &clk_branch2_ops,
4564                 },
4565         },
4566 };
4567
4568 static struct clk_branch gcc_qmip_disp_ahb_clk = {
4569         .halt_reg = 0x27008,
4570         .halt_check = BRANCH_HALT_VOTED,
4571         .hwcg_reg = 0x27008,
4572         .hwcg_bit = 1,
4573         .clkr = {
4574                 .enable_reg = 0x27008,
4575                 .enable_mask = BIT(0),
4576                 .hw.init = &(const struct clk_init_data) {
4577                         .name = "gcc_qmip_disp_ahb_clk",
4578                         .ops = &clk_branch2_ops,
4579                 },
4580         },
4581 };
4582
4583 static struct clk_branch gcc_qmip_disp_rot_ahb_clk = {
4584         .halt_reg = 0x2700c,
4585         .halt_check = BRANCH_HALT_VOTED,
4586         .hwcg_reg = 0x2700c,
4587         .hwcg_bit = 1,
4588         .clkr = {
4589                 .enable_reg = 0x2700c,
4590                 .enable_mask = BIT(0),
4591                 .hw.init = &(const struct clk_init_data) {
4592                         .name = "gcc_qmip_disp_rot_ahb_clk",
4593                         .ops = &clk_branch2_ops,
4594                 },
4595         },
4596 };
4597
4598 static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {
4599         .halt_reg = 0x28008,
4600         .halt_check = BRANCH_HALT_VOTED,
4601         .hwcg_reg = 0x28008,
4602         .hwcg_bit = 1,
4603         .clkr = {
4604                 .enable_reg = 0x28008,
4605                 .enable_mask = BIT(0),
4606                 .hw.init = &(const struct clk_init_data) {
4607                         .name = "gcc_qmip_video_cvp_ahb_clk",
4608                         .ops = &clk_branch2_ops,
4609                 },
4610         },
4611 };
4612
4613 static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
4614         .halt_reg = 0x2800c,
4615         .halt_check = BRANCH_HALT_VOTED,
4616         .hwcg_reg = 0x2800c,
4617         .hwcg_bit = 1,
4618         .clkr = {
4619                 .enable_reg = 0x2800c,
4620                 .enable_mask = BIT(0),
4621                 .hw.init = &(const struct clk_init_data) {
4622                         .name = "gcc_qmip_video_vcodec_ahb_clk",
4623                         .ops = &clk_branch2_ops,
4624                 },
4625         },
4626 };
4627
4628 static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {
4629         .halt_reg = 0x17014,
4630         .halt_check = BRANCH_HALT_VOTED,
4631         .clkr = {
4632                 .enable_reg = 0x52008,
4633                 .enable_mask = BIT(9),
4634                 .hw.init = &(const struct clk_init_data) {
4635                         .name = "gcc_qupv3_wrap0_core_2x_clk",
4636                         .ops = &clk_branch2_ops,
4637                 },
4638         },
4639 };
4640
4641 static struct clk_branch gcc_qupv3_wrap0_core_clk = {
4642         .halt_reg = 0x1700c,
4643         .halt_check = BRANCH_HALT_VOTED,
4644         .clkr = {
4645                 .enable_reg = 0x52008,
4646                 .enable_mask = BIT(8),
4647                 .hw.init = &(const struct clk_init_data) {
4648                         .name = "gcc_qupv3_wrap0_core_clk",
4649                         .ops = &clk_branch2_ops,
4650                 },
4651         },
4652 };
4653
4654 static struct clk_branch gcc_qupv3_wrap0_qspi0_clk = {
4655         .halt_reg = 0x17ac4,
4656         .halt_check = BRANCH_HALT_VOTED,
4657         .clkr = {
4658                 .enable_reg = 0x52020,
4659                 .enable_mask = BIT(0),
4660                 .hw.init = &(const struct clk_init_data) {
4661                         .name = "gcc_qupv3_wrap0_qspi0_clk",
4662                         .parent_hws = (const struct clk_hw*[]){
4663                                 &gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
4664                         },
4665                         .num_parents = 1,
4666                         .flags = CLK_SET_RATE_PARENT,
4667                         .ops = &clk_branch2_ops,
4668                 },
4669         },
4670 };
4671
4672 static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
4673         .halt_reg = 0x17144,
4674         .halt_check = BRANCH_HALT_VOTED,
4675         .clkr = {
4676                 .enable_reg = 0x52008,
4677                 .enable_mask = BIT(10),
4678                 .hw.init = &(const struct clk_init_data) {
4679                         .name = "gcc_qupv3_wrap0_s0_clk",
4680                         .parent_hws = (const struct clk_hw*[]){
4681                                 &gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
4682                         },
4683                         .num_parents = 1,
4684                         .flags = CLK_SET_RATE_PARENT,
4685                         .ops = &clk_branch2_ops,
4686                 },
4687         },
4688 };
4689
4690 static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
4691         .halt_reg = 0x17274,
4692         .halt_check = BRANCH_HALT_VOTED,
4693         .clkr = {
4694                 .enable_reg = 0x52008,
4695                 .enable_mask = BIT(11),
4696                 .hw.init = &(const struct clk_init_data) {
4697                         .name = "gcc_qupv3_wrap0_s1_clk",
4698                         .parent_hws = (const struct clk_hw*[]){
4699                                 &gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
4700                         },
4701                         .num_parents = 1,
4702                         .flags = CLK_SET_RATE_PARENT,
4703                         .ops = &clk_branch2_ops,
4704                 },
4705         },
4706 };
4707
4708 static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
4709         .halt_reg = 0x173a4,
4710         .halt_check = BRANCH_HALT_VOTED,
4711         .clkr = {
4712                 .enable_reg = 0x52008,
4713                 .enable_mask = BIT(12),
4714                 .hw.init = &(const struct clk_init_data) {
4715                         .name = "gcc_qupv3_wrap0_s2_clk",
4716                         .parent_hws = (const struct clk_hw*[]){
4717                                 &gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
4718                         },
4719                         .num_parents = 1,
4720                         .flags = CLK_SET_RATE_PARENT,
4721                         .ops = &clk_branch2_ops,
4722                 },
4723         },
4724 };
4725
4726 static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
4727         .halt_reg = 0x174d4,
4728         .halt_check = BRANCH_HALT_VOTED,
4729         .clkr = {
4730                 .enable_reg = 0x52008,
4731                 .enable_mask = BIT(13),
4732                 .hw.init = &(const struct clk_init_data) {
4733                         .name = "gcc_qupv3_wrap0_s3_clk",
4734                         .parent_hws = (const struct clk_hw*[]){
4735                                 &gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
4736                         },
4737                         .num_parents = 1,
4738                         .flags = CLK_SET_RATE_PARENT,
4739                         .ops = &clk_branch2_ops,
4740                 },
4741         },
4742 };
4743
4744 static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
4745         .halt_reg = 0x17604,
4746         .halt_check = BRANCH_HALT_VOTED,
4747         .clkr = {
4748                 .enable_reg = 0x52008,
4749                 .enable_mask = BIT(14),
4750                 .hw.init = &(const struct clk_init_data) {
4751                         .name = "gcc_qupv3_wrap0_s4_clk",
4752                         .parent_hws = (const struct clk_hw*[]){
4753                                 &gcc_qupv3_wrap0_s4_div_clk_src.clkr.hw,
4754                         },
4755                         .num_parents = 1,
4756                         .flags = CLK_SET_RATE_PARENT,
4757                         .ops = &clk_branch2_ops,
4758                 },
4759         },
4760 };
4761
4762 static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
4763         .halt_reg = 0x17734,
4764         .halt_check = BRANCH_HALT_VOTED,
4765         .clkr = {
4766                 .enable_reg = 0x52008,
4767                 .enable_mask = BIT(15),
4768                 .hw.init = &(const struct clk_init_data) {
4769                         .name = "gcc_qupv3_wrap0_s5_clk",
4770                         .parent_hws = (const struct clk_hw*[]){
4771                                 &gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
4772                         },
4773                         .num_parents = 1,
4774                         .flags = CLK_SET_RATE_PARENT,
4775                         .ops = &clk_branch2_ops,
4776                 },
4777         },
4778 };
4779
4780 static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
4781         .halt_reg = 0x17864,
4782         .halt_check = BRANCH_HALT_VOTED,
4783         .clkr = {
4784                 .enable_reg = 0x52008,
4785                 .enable_mask = BIT(16),
4786                 .hw.init = &(const struct clk_init_data) {
4787                         .name = "gcc_qupv3_wrap0_s6_clk",
4788                         .parent_hws = (const struct clk_hw*[]){
4789                                 &gcc_qupv3_wrap0_s6_clk_src.clkr.hw,
4790                         },
4791                         .num_parents = 1,
4792                         .flags = CLK_SET_RATE_PARENT,
4793                         .ops = &clk_branch2_ops,
4794                 },
4795         },
4796 };
4797
4798 static struct clk_branch gcc_qupv3_wrap0_s7_clk = {
4799         .halt_reg = 0x17994,
4800         .halt_check = BRANCH_HALT_VOTED,
4801         .clkr = {
4802                 .enable_reg = 0x52008,
4803                 .enable_mask = BIT(17),
4804                 .hw.init = &(const struct clk_init_data) {
4805                         .name = "gcc_qupv3_wrap0_s7_clk",
4806                         .parent_hws = (const struct clk_hw*[]){
4807                                 &gcc_qupv3_wrap0_s7_clk_src.clkr.hw,
4808                         },
4809                         .num_parents = 1,
4810                         .flags = CLK_SET_RATE_PARENT,
4811                         .ops = &clk_branch2_ops,
4812                 },
4813         },
4814 };
4815
4816 static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
4817         .halt_reg = 0x18014,
4818         .halt_check = BRANCH_HALT_VOTED,
4819         .clkr = {
4820                 .enable_reg = 0x52008,
4821                 .enable_mask = BIT(18),
4822                 .hw.init = &(const struct clk_init_data) {
4823                         .name = "gcc_qupv3_wrap1_core_2x_clk",
4824                         .ops = &clk_branch2_ops,
4825                 },
4826         },
4827 };
4828
4829 static struct clk_branch gcc_qupv3_wrap1_core_clk = {
4830         .halt_reg = 0x1800c,
4831         .halt_check = BRANCH_HALT_VOTED,
4832         .clkr = {
4833                 .enable_reg = 0x52008,
4834                 .enable_mask = BIT(19),
4835                 .hw.init = &(const struct clk_init_data) {
4836                         .name = "gcc_qupv3_wrap1_core_clk",
4837                         .ops = &clk_branch2_ops,
4838                 },
4839         },
4840 };
4841
4842 static struct clk_branch gcc_qupv3_wrap1_qspi0_clk = {
4843         .halt_reg = 0x18ac4,
4844         .halt_check = BRANCH_HALT_VOTED,
4845         .clkr = {
4846                 .enable_reg = 0x52020,
4847                 .enable_mask = BIT(2),
4848                 .hw.init = &(const struct clk_init_data) {
4849                         .name = "gcc_qupv3_wrap1_qspi0_clk",
4850                         .parent_hws = (const struct clk_hw*[]){
4851                                 &gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
4852                         },
4853                         .num_parents = 1,
4854                         .flags = CLK_SET_RATE_PARENT,
4855                         .ops = &clk_branch2_ops,
4856                 },
4857         },
4858 };
4859
4860 static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
4861         .halt_reg = 0x18144,
4862         .halt_check = BRANCH_HALT_VOTED,
4863         .clkr = {
4864                 .enable_reg = 0x52008,
4865                 .enable_mask = BIT(22),
4866                 .hw.init = &(const struct clk_init_data) {
4867                         .name = "gcc_qupv3_wrap1_s0_clk",
4868                         .parent_hws = (const struct clk_hw*[]){
4869                                 &gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
4870                         },
4871                         .num_parents = 1,
4872                         .flags = CLK_SET_RATE_PARENT,
4873                         .ops = &clk_branch2_ops,
4874                 },
4875         },
4876 };
4877
4878 static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
4879         .halt_reg = 0x18274,
4880         .halt_check = BRANCH_HALT_VOTED,
4881         .clkr = {
4882                 .enable_reg = 0x52008,
4883                 .enable_mask = BIT(23),
4884                 .hw.init = &(const struct clk_init_data) {
4885                         .name = "gcc_qupv3_wrap1_s1_clk",
4886                         .parent_hws = (const struct clk_hw*[]){
4887                                 &gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
4888                         },
4889                         .num_parents = 1,
4890                         .flags = CLK_SET_RATE_PARENT,
4891                         .ops = &clk_branch2_ops,
4892                 },
4893         },
4894 };
4895
4896 static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
4897         .halt_reg = 0x183a4,
4898         .halt_check = BRANCH_HALT_VOTED,
4899         .clkr = {
4900                 .enable_reg = 0x52008,
4901                 .enable_mask = BIT(24),
4902                 .hw.init = &(const struct clk_init_data) {
4903                         .name = "gcc_qupv3_wrap1_s2_clk",
4904                         .parent_hws = (const struct clk_hw*[]){
4905                                 &gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
4906                         },
4907                         .num_parents = 1,
4908                         .flags = CLK_SET_RATE_PARENT,
4909                         .ops = &clk_branch2_ops,
4910                 },
4911         },
4912 };
4913
4914 static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
4915         .halt_reg = 0x184d4,
4916         .halt_check = BRANCH_HALT_VOTED,
4917         .clkr = {
4918                 .enable_reg = 0x52008,
4919                 .enable_mask = BIT(25),
4920                 .hw.init = &(const struct clk_init_data) {
4921                         .name = "gcc_qupv3_wrap1_s3_clk",
4922                         .parent_hws = (const struct clk_hw*[]){
4923                                 &gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
4924                         },
4925                         .num_parents = 1,
4926                         .flags = CLK_SET_RATE_PARENT,
4927                         .ops = &clk_branch2_ops,
4928                 },
4929         },
4930 };
4931
4932 static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
4933         .halt_reg = 0x18604,
4934         .halt_check = BRANCH_HALT_VOTED,
4935         .clkr = {
4936                 .enable_reg = 0x52008,
4937                 .enable_mask = BIT(26),
4938                 .hw.init = &(const struct clk_init_data) {
4939                         .name = "gcc_qupv3_wrap1_s4_clk",
4940                         .parent_hws = (const struct clk_hw*[]){
4941                                 &gcc_qupv3_wrap1_s4_div_clk_src.clkr.hw,
4942                         },
4943                         .num_parents = 1,
4944                         .flags = CLK_SET_RATE_PARENT,
4945                         .ops = &clk_branch2_ops,
4946                 },
4947         },
4948 };
4949
4950 static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
4951         .halt_reg = 0x18734,
4952         .halt_check = BRANCH_HALT_VOTED,
4953         .clkr = {
4954                 .enable_reg = 0x52008,
4955                 .enable_mask = BIT(27),
4956                 .hw.init = &(const struct clk_init_data) {
4957                         .name = "gcc_qupv3_wrap1_s5_clk",
4958                         .parent_hws = (const struct clk_hw*[]){
4959                                 &gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
4960                         },
4961                         .num_parents = 1,
4962                         .flags = CLK_SET_RATE_PARENT,
4963                         .ops = &clk_branch2_ops,
4964                 },
4965         },
4966 };
4967
4968 static struct clk_branch gcc_qupv3_wrap1_s6_clk = {
4969         .halt_reg = 0x18864,
4970         .halt_check = BRANCH_HALT_VOTED,
4971         .clkr = {
4972                 .enable_reg = 0x52018,
4973                 .enable_mask = BIT(27),
4974                 .hw.init = &(const struct clk_init_data) {
4975                         .name = "gcc_qupv3_wrap1_s6_clk",
4976                         .parent_hws = (const struct clk_hw*[]){
4977                                 &gcc_qupv3_wrap1_s6_clk_src.clkr.hw,
4978                         },
4979                         .num_parents = 1,
4980                         .flags = CLK_SET_RATE_PARENT,
4981                         .ops = &clk_branch2_ops,
4982                 },
4983         },
4984 };
4985
4986 static struct clk_branch gcc_qupv3_wrap1_s7_clk = {
4987         .halt_reg = 0x18994,
4988         .halt_check = BRANCH_HALT_VOTED,
4989         .clkr = {
4990                 .enable_reg = 0x52018,
4991                 .enable_mask = BIT(28),
4992                 .hw.init = &(const struct clk_init_data) {
4993                         .name = "gcc_qupv3_wrap1_s7_clk",
4994                         .parent_hws = (const struct clk_hw*[]){
4995                                 &gcc_qupv3_wrap1_s7_clk_src.clkr.hw,
4996                         },
4997                         .num_parents = 1,
4998                         .flags = CLK_SET_RATE_PARENT,
4999                         .ops = &clk_branch2_ops,
5000                 },
5001         },
5002 };
5003
5004 static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = {
5005         .halt_reg = 0x1e014,
5006         .halt_check = BRANCH_HALT_VOTED,
5007         .clkr = {
5008                 .enable_reg = 0x52010,
5009                 .enable_mask = BIT(3),
5010                 .hw.init = &(const struct clk_init_data) {
5011                         .name = "gcc_qupv3_wrap2_core_2x_clk",
5012                         .ops = &clk_branch2_ops,
5013                 },
5014         },
5015 };
5016
5017 static struct clk_branch gcc_qupv3_wrap2_core_clk = {
5018         .halt_reg = 0x1e00c,
5019         .halt_check = BRANCH_HALT_VOTED,
5020         .clkr = {
5021                 .enable_reg = 0x52010,
5022                 .enable_mask = BIT(0),
5023                 .hw.init = &(const struct clk_init_data) {
5024                         .name = "gcc_qupv3_wrap2_core_clk",
5025                         .ops = &clk_branch2_ops,
5026                 },
5027         },
5028 };
5029
5030 static struct clk_branch gcc_qupv3_wrap2_qspi0_clk = {
5031         .halt_reg = 0x1eac4,
5032         .halt_check = BRANCH_HALT_VOTED,
5033         .clkr = {
5034                 .enable_reg = 0x52020,
5035                 .enable_mask = BIT(4),
5036                 .hw.init = &(const struct clk_init_data) {
5037                         .name = "gcc_qupv3_wrap2_qspi0_clk",
5038                         .parent_hws = (const struct clk_hw*[]){
5039                                 &gcc_qupv3_wrap2_s4_clk_src.clkr.hw,
5040                         },
5041                         .num_parents = 1,
5042                         .flags = CLK_SET_RATE_PARENT,
5043                         .ops = &clk_branch2_ops,
5044                 },
5045         },
5046 };
5047
5048 static struct clk_branch gcc_qupv3_wrap2_s0_clk = {
5049         .halt_reg = 0x1e144,
5050         .halt_check = BRANCH_HALT_VOTED,
5051         .clkr = {
5052                 .enable_reg = 0x52010,
5053                 .enable_mask = BIT(4),
5054                 .hw.init = &(const struct clk_init_data) {
5055                         .name = "gcc_qupv3_wrap2_s0_clk",
5056                         .parent_hws = (const struct clk_hw*[]){
5057                                 &gcc_qupv3_wrap2_s0_clk_src.clkr.hw,
5058                         },
5059                         .num_parents = 1,
5060                         .flags = CLK_SET_RATE_PARENT,
5061                         .ops = &clk_branch2_ops,
5062                 },
5063         },
5064 };
5065
5066 static struct clk_branch gcc_qupv3_wrap2_s1_clk = {
5067         .halt_reg = 0x1e274,
5068         .halt_check = BRANCH_HALT_VOTED,
5069         .clkr = {
5070                 .enable_reg = 0x52010,
5071                 .enable_mask = BIT(5),
5072                 .hw.init = &(const struct clk_init_data) {
5073                         .name = "gcc_qupv3_wrap2_s1_clk",
5074                         .parent_hws = (const struct clk_hw*[]){
5075                                 &gcc_qupv3_wrap2_s1_clk_src.clkr.hw,
5076                         },
5077                         .num_parents = 1,
5078                         .flags = CLK_SET_RATE_PARENT,
5079                         .ops = &clk_branch2_ops,
5080                 },
5081         },
5082 };
5083
5084 static struct clk_branch gcc_qupv3_wrap2_s2_clk = {
5085         .halt_reg = 0x1e3a4,
5086         .halt_check = BRANCH_HALT_VOTED,
5087         .clkr = {
5088                 .enable_reg = 0x52010,
5089                 .enable_mask = BIT(6),
5090                 .hw.init = &(const struct clk_init_data) {
5091                         .name = "gcc_qupv3_wrap2_s2_clk",
5092                         .parent_hws = (const struct clk_hw*[]){
5093                                 &gcc_qupv3_wrap2_s2_clk_src.clkr.hw,
5094                         },
5095                         .num_parents = 1,
5096                         .flags = CLK_SET_RATE_PARENT,
5097                         .ops = &clk_branch2_ops,
5098                 },
5099         },
5100 };
5101
5102 static struct clk_branch gcc_qupv3_wrap2_s3_clk = {
5103         .halt_reg = 0x1e4d4,
5104         .halt_check = BRANCH_HALT_VOTED,
5105         .clkr = {
5106                 .enable_reg = 0x52010,
5107                 .enable_mask = BIT(7),
5108                 .hw.init = &(const struct clk_init_data) {
5109                         .name = "gcc_qupv3_wrap2_s3_clk",
5110                         .parent_hws = (const struct clk_hw*[]){
5111                                 &gcc_qupv3_wrap2_s3_clk_src.clkr.hw,
5112                         },
5113                         .num_parents = 1,
5114                         .flags = CLK_SET_RATE_PARENT,
5115                         .ops = &clk_branch2_ops,
5116                 },
5117         },
5118 };
5119
5120 static struct clk_branch gcc_qupv3_wrap2_s4_clk = {
5121         .halt_reg = 0x1e604,
5122         .halt_check = BRANCH_HALT_VOTED,
5123         .clkr = {
5124                 .enable_reg = 0x52010,
5125                 .enable_mask = BIT(8),
5126                 .hw.init = &(const struct clk_init_data) {
5127                         .name = "gcc_qupv3_wrap2_s4_clk",
5128                         .parent_hws = (const struct clk_hw*[]){
5129                                 &gcc_qupv3_wrap2_s4_div_clk_src.clkr.hw,
5130                         },
5131                         .num_parents = 1,
5132                         .flags = CLK_SET_RATE_PARENT,
5133                         .ops = &clk_branch2_ops,
5134                 },
5135         },
5136 };
5137
5138 static struct clk_branch gcc_qupv3_wrap2_s5_clk = {
5139         .halt_reg = 0x1e734,
5140         .halt_check = BRANCH_HALT_VOTED,
5141         .clkr = {
5142                 .enable_reg = 0x52010,
5143                 .enable_mask = BIT(9),
5144                 .hw.init = &(const struct clk_init_data) {
5145                         .name = "gcc_qupv3_wrap2_s5_clk",
5146                         .parent_hws = (const struct clk_hw*[]){
5147                                 &gcc_qupv3_wrap2_s5_clk_src.clkr.hw,
5148                         },
5149                         .num_parents = 1,
5150                         .flags = CLK_SET_RATE_PARENT,
5151                         .ops = &clk_branch2_ops,
5152                 },
5153         },
5154 };
5155
5156 static struct clk_branch gcc_qupv3_wrap2_s6_clk = {
5157         .halt_reg = 0x1e864,
5158         .halt_check = BRANCH_HALT_VOTED,
5159         .clkr = {
5160                 .enable_reg = 0x52018,
5161                 .enable_mask = BIT(29),
5162                 .hw.init = &(const struct clk_init_data) {
5163                         .name = "gcc_qupv3_wrap2_s6_clk",
5164                         .parent_hws = (const struct clk_hw*[]){
5165                                 &gcc_qupv3_wrap2_s6_clk_src.clkr.hw,
5166                         },
5167                         .num_parents = 1,
5168                         .flags = CLK_SET_RATE_PARENT,
5169                         .ops = &clk_branch2_ops,
5170                 },
5171         },
5172 };
5173
5174 static struct clk_branch gcc_qupv3_wrap2_s7_clk = {
5175         .halt_reg = 0x1e994,
5176         .halt_check = BRANCH_HALT_VOTED,
5177         .clkr = {
5178                 .enable_reg = 0x52018,
5179                 .enable_mask = BIT(30),
5180                 .hw.init = &(const struct clk_init_data) {
5181                         .name = "gcc_qupv3_wrap2_s7_clk",
5182                         .parent_hws = (const struct clk_hw*[]){
5183                                 &gcc_qupv3_wrap2_s7_clk_src.clkr.hw,
5184                         },
5185                         .num_parents = 1,
5186                         .flags = CLK_SET_RATE_PARENT,
5187                         .ops = &clk_branch2_ops,
5188                 },
5189         },
5190 };
5191
5192 static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
5193         .halt_reg = 0x17004,
5194         .halt_check = BRANCH_HALT_VOTED,
5195         .hwcg_reg = 0x17004,
5196         .hwcg_bit = 1,
5197         .clkr = {
5198                 .enable_reg = 0x52008,
5199                 .enable_mask = BIT(6),
5200                 .hw.init = &(const struct clk_init_data) {
5201                         .name = "gcc_qupv3_wrap_0_m_ahb_clk",
5202                         .ops = &clk_branch2_ops,
5203                 },
5204         },
5205 };
5206
5207 static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
5208         .halt_reg = 0x17008,
5209         .halt_check = BRANCH_HALT_VOTED,
5210         .hwcg_reg = 0x17008,
5211         .hwcg_bit = 1,
5212         .clkr = {
5213                 .enable_reg = 0x52008,
5214                 .enable_mask = BIT(7),
5215                 .hw.init = &(const struct clk_init_data) {
5216                         .name = "gcc_qupv3_wrap_0_s_ahb_clk",
5217                         .ops = &clk_branch2_ops,
5218                 },
5219         },
5220 };
5221
5222 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
5223         .halt_reg = 0x18004,
5224         .halt_check = BRANCH_HALT_VOTED,
5225         .hwcg_reg = 0x18004,
5226         .hwcg_bit = 1,
5227         .clkr = {
5228                 .enable_reg = 0x52008,
5229                 .enable_mask = BIT(20),
5230                 .hw.init = &(const struct clk_init_data) {
5231                         .name = "gcc_qupv3_wrap_1_m_ahb_clk",
5232                         .ops = &clk_branch2_ops,
5233                 },
5234         },
5235 };
5236
5237 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
5238         .halt_reg = 0x18008,
5239         .halt_check = BRANCH_HALT_VOTED,
5240         .hwcg_reg = 0x18008,
5241         .hwcg_bit = 1,
5242         .clkr = {
5243                 .enable_reg = 0x52008,
5244                 .enable_mask = BIT(21),
5245                 .hw.init = &(const struct clk_init_data) {
5246                         .name = "gcc_qupv3_wrap_1_s_ahb_clk",
5247                         .ops = &clk_branch2_ops,
5248                 },
5249         },
5250 };
5251
5252 static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {
5253         .halt_reg = 0x1e004,
5254         .halt_check = BRANCH_HALT_VOTED,
5255         .hwcg_reg = 0x1e004,
5256         .hwcg_bit = 1,
5257         .clkr = {
5258                 .enable_reg = 0x52010,
5259                 .enable_mask = BIT(2),
5260                 .hw.init = &(const struct clk_init_data) {
5261                         .name = "gcc_qupv3_wrap_2_m_ahb_clk",
5262                         .ops = &clk_branch2_ops,
5263                 },
5264         },
5265 };
5266
5267 static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {
5268         .halt_reg = 0x1e008,
5269         .halt_check = BRANCH_HALT_VOTED,
5270         .hwcg_reg = 0x1e008,
5271         .hwcg_bit = 1,
5272         .clkr = {
5273                 .enable_reg = 0x52010,
5274                 .enable_mask = BIT(1),
5275                 .hw.init = &(const struct clk_init_data) {
5276                         .name = "gcc_qupv3_wrap_2_s_ahb_clk",
5277                         .ops = &clk_branch2_ops,
5278                 },
5279         },
5280 };
5281
5282 static struct clk_branch gcc_sdcc2_ahb_clk = {
5283         .halt_reg = 0x14008,
5284         .halt_check = BRANCH_HALT,
5285         .clkr = {
5286                 .enable_reg = 0x14008,
5287                 .enable_mask = BIT(0),
5288                 .hw.init = &(const struct clk_init_data) {
5289                         .name = "gcc_sdcc2_ahb_clk",
5290                         .ops = &clk_branch2_ops,
5291                 },
5292         },
5293 };
5294
5295 static struct clk_branch gcc_sdcc2_apps_clk = {
5296         .halt_reg = 0x14004,
5297         .halt_check = BRANCH_HALT,
5298         .clkr = {
5299                 .enable_reg = 0x14004,
5300                 .enable_mask = BIT(0),
5301                 .hw.init = &(const struct clk_init_data) {
5302                         .name = "gcc_sdcc2_apps_clk",
5303                         .parent_hws = (const struct clk_hw*[]){
5304                                 &gcc_sdcc2_apps_clk_src.clkr.hw,
5305                         },
5306                         .num_parents = 1,
5307                         .flags = CLK_SET_RATE_PARENT,
5308                         .ops = &clk_branch2_ops,
5309                 },
5310         },
5311 };
5312
5313 static struct clk_branch gcc_sdcc4_ahb_clk = {
5314         .halt_reg = 0x16008,
5315         .halt_check = BRANCH_HALT,
5316         .clkr = {
5317                 .enable_reg = 0x16008,
5318                 .enable_mask = BIT(0),
5319                 .hw.init = &(const struct clk_init_data) {
5320                         .name = "gcc_sdcc4_ahb_clk",
5321                         .ops = &clk_branch2_ops,
5322                 },
5323         },
5324 };
5325
5326 static struct clk_branch gcc_sdcc4_apps_clk = {
5327         .halt_reg = 0x16004,
5328         .halt_check = BRANCH_HALT,
5329         .clkr = {
5330                 .enable_reg = 0x16004,
5331                 .enable_mask = BIT(0),
5332                 .hw.init = &(const struct clk_init_data) {
5333                         .name = "gcc_sdcc4_apps_clk",
5334                         .parent_hws = (const struct clk_hw*[]){
5335                                 &gcc_sdcc4_apps_clk_src.clkr.hw,
5336                         },
5337                         .num_parents = 1,
5338                         .flags = CLK_SET_RATE_PARENT,
5339                         .ops = &clk_branch2_ops,
5340                 },
5341         },
5342 };
5343
5344 static struct clk_branch gcc_sys_noc_usb_axi_clk = {
5345         .halt_reg = 0x5d000,
5346         .halt_check = BRANCH_HALT_VOTED,
5347         .hwcg_reg = 0x5d000,
5348         .hwcg_bit = 1,
5349         .clkr = {
5350                 .enable_reg = 0x5d000,
5351                 .enable_mask = BIT(0),
5352                 .hw.init = &(const struct clk_init_data) {
5353                         .name = "gcc_sys_noc_usb_axi_clk",
5354                         .ops = &clk_branch2_ops,
5355                 },
5356         },
5357 };
5358
5359 static struct clk_branch gcc_ufs_1_card_clkref_clk = {
5360         .halt_reg = 0x8c000,
5361         .halt_check = BRANCH_HALT,
5362         .clkr = {
5363                 .enable_reg = 0x8c000,
5364                 .enable_mask = BIT(0),
5365                 .hw.init = &(const struct clk_init_data) {
5366                         .name = "gcc_ufs_1_card_clkref_clk",
5367                         .ops = &clk_branch2_ops,
5368                 },
5369         },
5370 };
5371
5372 static struct clk_branch gcc_ufs_card_ahb_clk = {
5373         .halt_reg = 0x75018,
5374         .halt_check = BRANCH_HALT_VOTED,
5375         .hwcg_reg = 0x75018,
5376         .hwcg_bit = 1,
5377         .clkr = {
5378                 .enable_reg = 0x75018,
5379                 .enable_mask = BIT(0),
5380                 .hw.init = &(const struct clk_init_data) {
5381                         .name = "gcc_ufs_card_ahb_clk",
5382                         .ops = &clk_branch2_ops,
5383                 },
5384         },
5385 };
5386
5387 static struct clk_branch gcc_ufs_card_axi_clk = {
5388         .halt_reg = 0x75010,
5389         .halt_check = BRANCH_HALT_VOTED,
5390         .hwcg_reg = 0x75010,
5391         .hwcg_bit = 1,
5392         .clkr = {
5393                 .enable_reg = 0x75010,
5394                 .enable_mask = BIT(0),
5395                 .hw.init = &(const struct clk_init_data) {
5396                         .name = "gcc_ufs_card_axi_clk",
5397                         .parent_hws = (const struct clk_hw*[]){
5398                                 &gcc_ufs_card_axi_clk_src.clkr.hw,
5399                         },
5400                         .num_parents = 1,
5401                         .flags = CLK_SET_RATE_PARENT,
5402                         .ops = &clk_branch2_ops,
5403                 },
5404         },
5405 };
5406
5407 static struct clk_branch gcc_ufs_card_axi_hw_ctl_clk = {
5408         .halt_reg = 0x75010,
5409         .halt_check = BRANCH_HALT_VOTED,
5410         .hwcg_reg = 0x75010,
5411         .hwcg_bit = 1,
5412         .clkr = {
5413                 .enable_reg = 0x75010,
5414                 .enable_mask = BIT(1),
5415                 .hw.init = &(const struct clk_init_data) {
5416                         .name = "gcc_ufs_card_axi_hw_ctl_clk",
5417                         .parent_hws = (const struct clk_hw*[]){
5418                                 &gcc_ufs_card_axi_clk_src.clkr.hw,
5419                         },
5420                         .num_parents = 1,
5421                         .flags = CLK_SET_RATE_PARENT,
5422                         .ops = &clk_branch2_ops,
5423                 },
5424         },
5425 };
5426
5427 static struct clk_branch gcc_ufs_card_clkref_clk = {
5428         .halt_reg = 0x8c054,
5429         .halt_check = BRANCH_HALT,
5430         .clkr = {
5431                 .enable_reg = 0x8c054,
5432                 .enable_mask = BIT(0),
5433                 .hw.init = &(const struct clk_init_data) {
5434                         .name = "gcc_ufs_card_clkref_clk",
5435                         .ops = &clk_branch2_ops,
5436                 },
5437         },
5438 };
5439
5440 static struct clk_branch gcc_ufs_card_ice_core_clk = {
5441         .halt_reg = 0x75064,
5442         .halt_check = BRANCH_HALT_VOTED,
5443         .hwcg_reg = 0x75064,
5444         .hwcg_bit = 1,
5445         .clkr = {
5446                 .enable_reg = 0x75064,
5447                 .enable_mask = BIT(0),
5448                 .hw.init = &(const struct clk_init_data) {
5449                         .name = "gcc_ufs_card_ice_core_clk",
5450                         .parent_hws = (const struct clk_hw*[]){
5451                                 &gcc_ufs_card_ice_core_clk_src.clkr.hw,
5452                         },
5453                         .num_parents = 1,
5454                         .flags = CLK_SET_RATE_PARENT,
5455                         .ops = &clk_branch2_ops,
5456                 },
5457         },
5458 };
5459
5460 static struct clk_branch gcc_ufs_card_ice_core_hw_ctl_clk = {
5461         .halt_reg = 0x75064,
5462         .halt_check = BRANCH_HALT_VOTED,
5463         .hwcg_reg = 0x75064,
5464         .hwcg_bit = 1,
5465         .clkr = {
5466                 .enable_reg = 0x75064,
5467                 .enable_mask = BIT(1),
5468                 .hw.init = &(const struct clk_init_data) {
5469                         .name = "gcc_ufs_card_ice_core_hw_ctl_clk",
5470                         .parent_hws = (const struct clk_hw*[]){
5471                                 &gcc_ufs_card_ice_core_clk_src.clkr.hw,
5472                         },
5473                         .num_parents = 1,
5474                         .flags = CLK_SET_RATE_PARENT,
5475                         .ops = &clk_branch2_ops,
5476                 },
5477         },
5478 };
5479
5480 static struct clk_branch gcc_ufs_card_phy_aux_clk = {
5481         .halt_reg = 0x7509c,
5482         .halt_check = BRANCH_HALT_VOTED,
5483         .hwcg_reg = 0x7509c,
5484         .hwcg_bit = 1,
5485         .clkr = {
5486                 .enable_reg = 0x7509c,
5487                 .enable_mask = BIT(0),
5488                 .hw.init = &(const struct clk_init_data) {
5489                         .name = "gcc_ufs_card_phy_aux_clk",
5490                         .parent_hws = (const struct clk_hw*[]){
5491                                 &gcc_ufs_card_phy_aux_clk_src.clkr.hw,
5492                         },
5493                         .num_parents = 1,
5494                         .flags = CLK_SET_RATE_PARENT,
5495                         .ops = &clk_branch2_ops,
5496                 },
5497         },
5498 };
5499
5500 static struct clk_branch gcc_ufs_card_phy_aux_hw_ctl_clk = {
5501         .halt_reg = 0x7509c,
5502         .halt_check = BRANCH_HALT_VOTED,
5503         .hwcg_reg = 0x7509c,
5504         .hwcg_bit = 1,
5505         .clkr = {
5506                 .enable_reg = 0x7509c,
5507                 .enable_mask = BIT(1),
5508                 .hw.init = &(const struct clk_init_data) {
5509                         .name = "gcc_ufs_card_phy_aux_hw_ctl_clk",
5510                         .parent_hws = (const struct clk_hw*[]){
5511                                 &gcc_ufs_card_phy_aux_clk_src.clkr.hw,
5512                         },
5513                         .num_parents = 1,
5514                         .flags = CLK_SET_RATE_PARENT,
5515                         .ops = &clk_branch2_ops,
5516                 },
5517         },
5518 };
5519
5520 static struct clk_branch gcc_ufs_card_rx_symbol_0_clk = {
5521         .halt_reg = 0x75020,
5522         .halt_check = BRANCH_HALT_DELAY,
5523         .clkr = {
5524                 .enable_reg = 0x75020,
5525                 .enable_mask = BIT(0),
5526                 .hw.init = &(const struct clk_init_data) {
5527                         .name = "gcc_ufs_card_rx_symbol_0_clk",
5528                         .parent_hws = (const struct clk_hw*[]){
5529                                 &gcc_ufs_card_rx_symbol_0_clk_src.clkr.hw,
5530                         },
5531                         .num_parents = 1,
5532                         .flags = CLK_SET_RATE_PARENT,
5533                         .ops = &clk_branch2_ops,
5534                 },
5535         },
5536 };
5537
5538 static struct clk_branch gcc_ufs_card_rx_symbol_1_clk = {
5539         .halt_reg = 0x750b8,
5540         .halt_check = BRANCH_HALT_DELAY,
5541         .clkr = {
5542                 .enable_reg = 0x750b8,
5543                 .enable_mask = BIT(0),
5544                 .hw.init = &(const struct clk_init_data) {
5545                         .name = "gcc_ufs_card_rx_symbol_1_clk",
5546                         .parent_hws = (const struct clk_hw*[]){
5547                                 &gcc_ufs_card_rx_symbol_1_clk_src.clkr.hw,
5548                         },
5549                         .num_parents = 1,
5550                         .flags = CLK_SET_RATE_PARENT,
5551                         .ops = &clk_branch2_ops,
5552                 },
5553         },
5554 };
5555
5556 static struct clk_branch gcc_ufs_card_tx_symbol_0_clk = {
5557         .halt_reg = 0x7501c,
5558         .halt_check = BRANCH_HALT_DELAY,
5559         .clkr = {
5560                 .enable_reg = 0x7501c,
5561                 .enable_mask = BIT(0),
5562                 .hw.init = &(const struct clk_init_data) {
5563                         .name = "gcc_ufs_card_tx_symbol_0_clk",
5564                         .parent_hws = (const struct clk_hw*[]){
5565                                 &gcc_ufs_card_tx_symbol_0_clk_src.clkr.hw,
5566                         },
5567                         .num_parents = 1,
5568                         .flags = CLK_SET_RATE_PARENT,
5569                         .ops = &clk_branch2_ops,
5570                 },
5571         },
5572 };
5573
5574 static struct clk_branch gcc_ufs_card_unipro_core_clk = {
5575         .halt_reg = 0x7505c,
5576         .halt_check = BRANCH_HALT_VOTED,
5577         .hwcg_reg = 0x7505c,
5578         .hwcg_bit = 1,
5579         .clkr = {
5580                 .enable_reg = 0x7505c,
5581                 .enable_mask = BIT(0),
5582                 .hw.init = &(const struct clk_init_data) {
5583                         .name = "gcc_ufs_card_unipro_core_clk",
5584                         .parent_hws = (const struct clk_hw*[]){
5585                                 &gcc_ufs_card_unipro_core_clk_src.clkr.hw,
5586                         },
5587                         .num_parents = 1,
5588                         .flags = CLK_SET_RATE_PARENT,
5589                         .ops = &clk_branch2_ops,
5590                 },
5591         },
5592 };
5593
5594 static struct clk_branch gcc_ufs_card_unipro_core_hw_ctl_clk = {
5595         .halt_reg = 0x7505c,
5596         .halt_check = BRANCH_HALT_VOTED,
5597         .hwcg_reg = 0x7505c,
5598         .hwcg_bit = 1,
5599         .clkr = {
5600                 .enable_reg = 0x7505c,
5601                 .enable_mask = BIT(1),
5602                 .hw.init = &(const struct clk_init_data) {
5603                         .name = "gcc_ufs_card_unipro_core_hw_ctl_clk",
5604                         .parent_hws = (const struct clk_hw*[]){
5605                                 &gcc_ufs_card_unipro_core_clk_src.clkr.hw,
5606                         },
5607                         .num_parents = 1,
5608                         .flags = CLK_SET_RATE_PARENT,
5609                         .ops = &clk_branch2_ops,
5610                 },
5611         },
5612 };
5613
5614 static struct clk_branch gcc_ufs_phy_ahb_clk = {
5615         .halt_reg = 0x77018,
5616         .halt_check = BRANCH_HALT_VOTED,
5617         .hwcg_reg = 0x77018,
5618         .hwcg_bit = 1,
5619         .clkr = {
5620                 .enable_reg = 0x77018,
5621                 .enable_mask = BIT(0),
5622                 .hw.init = &(const struct clk_init_data) {
5623                         .name = "gcc_ufs_phy_ahb_clk",
5624                         .ops = &clk_branch2_ops,
5625                 },
5626         },
5627 };
5628
5629 static struct clk_branch gcc_ufs_phy_axi_clk = {
5630         .halt_reg = 0x77010,
5631         .halt_check = BRANCH_HALT_VOTED,
5632         .hwcg_reg = 0x77010,
5633         .hwcg_bit = 1,
5634         .clkr = {
5635                 .enable_reg = 0x77010,
5636                 .enable_mask = BIT(0),
5637                 .hw.init = &(const struct clk_init_data) {
5638                         .name = "gcc_ufs_phy_axi_clk",
5639                         .parent_hws = (const struct clk_hw*[]){
5640                                 &gcc_ufs_phy_axi_clk_src.clkr.hw,
5641                         },
5642                         .num_parents = 1,
5643                         .flags = CLK_SET_RATE_PARENT,
5644                         .ops = &clk_branch2_ops,
5645                 },
5646         },
5647 };
5648
5649 static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk = {
5650         .halt_reg = 0x77010,
5651         .halt_check = BRANCH_HALT_VOTED,
5652         .hwcg_reg = 0x77010,
5653         .hwcg_bit = 1,
5654         .clkr = {
5655                 .enable_reg = 0x77010,
5656                 .enable_mask = BIT(1),
5657                 .hw.init = &(const struct clk_init_data) {
5658                         .name = "gcc_ufs_phy_axi_hw_ctl_clk",
5659                         .parent_hws = (const struct clk_hw*[]){
5660                                 &gcc_ufs_phy_axi_clk_src.clkr.hw,
5661                         },
5662                         .num_parents = 1,
5663                         .flags = CLK_SET_RATE_PARENT,
5664                         .ops = &clk_branch2_ops,
5665                 },
5666         },
5667 };
5668
5669 static struct clk_branch gcc_ufs_phy_ice_core_clk = {
5670         .halt_reg = 0x77064,
5671         .halt_check = BRANCH_HALT_VOTED,
5672         .hwcg_reg = 0x77064,
5673         .hwcg_bit = 1,
5674         .clkr = {
5675                 .enable_reg = 0x77064,
5676                 .enable_mask = BIT(0),
5677                 .hw.init = &(const struct clk_init_data) {
5678                         .name = "gcc_ufs_phy_ice_core_clk",
5679                         .parent_hws = (const struct clk_hw*[]){
5680                                 &gcc_ufs_phy_ice_core_clk_src.clkr.hw,
5681                         },
5682                         .num_parents = 1,
5683                         .flags = CLK_SET_RATE_PARENT,
5684                         .ops = &clk_branch2_ops,
5685                 },
5686         },
5687 };
5688
5689 static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk = {
5690         .halt_reg = 0x77064,
5691         .halt_check = BRANCH_HALT_VOTED,
5692         .hwcg_reg = 0x77064,
5693         .hwcg_bit = 1,
5694         .clkr = {
5695                 .enable_reg = 0x77064,
5696                 .enable_mask = BIT(1),
5697                 .hw.init = &(const struct clk_init_data) {
5698                         .name = "gcc_ufs_phy_ice_core_hw_ctl_clk",
5699                         .parent_hws = (const struct clk_hw*[]){
5700                                 &gcc_ufs_phy_ice_core_clk_src.clkr.hw,
5701                         },
5702                         .num_parents = 1,
5703                         .flags = CLK_SET_RATE_PARENT,
5704                         .ops = &clk_branch2_ops,
5705                 },
5706         },
5707 };
5708
5709 static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
5710         .halt_reg = 0x7709c,
5711         .halt_check = BRANCH_HALT_VOTED,
5712         .hwcg_reg = 0x7709c,
5713         .hwcg_bit = 1,
5714         .clkr = {
5715                 .enable_reg = 0x7709c,
5716                 .enable_mask = BIT(0),
5717                 .hw.init = &(const struct clk_init_data) {
5718                         .name = "gcc_ufs_phy_phy_aux_clk",
5719                         .parent_hws = (const struct clk_hw*[]){
5720                                 &gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
5721                         },
5722                         .num_parents = 1,
5723                         .flags = CLK_SET_RATE_PARENT,
5724                         .ops = &clk_branch2_ops,
5725                 },
5726         },
5727 };
5728
5729 static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk = {
5730         .halt_reg = 0x7709c,
5731         .halt_check = BRANCH_HALT_VOTED,
5732         .hwcg_reg = 0x7709c,
5733         .hwcg_bit = 1,
5734         .clkr = {
5735                 .enable_reg = 0x7709c,
5736                 .enable_mask = BIT(1),
5737                 .hw.init = &(const struct clk_init_data) {
5738                         .name = "gcc_ufs_phy_phy_aux_hw_ctl_clk",
5739                         .parent_hws = (const struct clk_hw*[]){
5740                                 &gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
5741                         },
5742                         .num_parents = 1,
5743                         .flags = CLK_SET_RATE_PARENT,
5744                         .ops = &clk_branch2_ops,
5745                 },
5746         },
5747 };
5748
5749 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
5750         .halt_reg = 0x77020,
5751         .halt_check = BRANCH_HALT_DELAY,
5752         .clkr = {
5753                 .enable_reg = 0x77020,
5754                 .enable_mask = BIT(0),
5755                 .hw.init = &(const struct clk_init_data) {
5756                         .name = "gcc_ufs_phy_rx_symbol_0_clk",
5757                         .parent_hws = (const struct clk_hw*[]){
5758                                 &gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw,
5759                         },
5760                         .num_parents = 1,
5761                         .flags = CLK_SET_RATE_PARENT,
5762                         .ops = &clk_branch2_ops,
5763                 },
5764         },
5765 };
5766
5767 static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
5768         .halt_reg = 0x770b8,
5769         .halt_check = BRANCH_HALT_DELAY,
5770         .clkr = {
5771                 .enable_reg = 0x770b8,
5772                 .enable_mask = BIT(0),
5773                 .hw.init = &(const struct clk_init_data) {
5774                         .name = "gcc_ufs_phy_rx_symbol_1_clk",
5775                         .parent_hws = (const struct clk_hw*[]){
5776                                 &gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw,
5777                         },
5778                         .num_parents = 1,
5779                         .flags = CLK_SET_RATE_PARENT,
5780                         .ops = &clk_branch2_ops,
5781                 },
5782         },
5783 };
5784
5785 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
5786         .halt_reg = 0x7701c,
5787         .halt_check = BRANCH_HALT_DELAY,
5788         .clkr = {
5789                 .enable_reg = 0x7701c,
5790                 .enable_mask = BIT(0),
5791                 .hw.init = &(const struct clk_init_data) {
5792                         .name = "gcc_ufs_phy_tx_symbol_0_clk",
5793                         .parent_hws = (const struct clk_hw*[]){
5794                                 &gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw,
5795                         },
5796                         .num_parents = 1,
5797                         .flags = CLK_SET_RATE_PARENT,
5798                         .ops = &clk_branch2_ops,
5799                 },
5800         },
5801 };
5802
5803 static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
5804         .halt_reg = 0x7705c,
5805         .halt_check = BRANCH_HALT_VOTED,
5806         .hwcg_reg = 0x7705c,
5807         .hwcg_bit = 1,
5808         .clkr = {
5809                 .enable_reg = 0x7705c,
5810                 .enable_mask = BIT(0),
5811                 .hw.init = &(const struct clk_init_data) {
5812                         .name = "gcc_ufs_phy_unipro_core_clk",
5813                         .parent_hws = (const struct clk_hw*[]){
5814                                 &gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
5815                         },
5816                         .num_parents = 1,
5817                         .flags = CLK_SET_RATE_PARENT,
5818                         .ops = &clk_branch2_ops,
5819                 },
5820         },
5821 };
5822
5823 static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk = {
5824         .halt_reg = 0x7705c,
5825         .halt_check = BRANCH_HALT_VOTED,
5826         .hwcg_reg = 0x7705c,
5827         .hwcg_bit = 1,
5828         .clkr = {
5829                 .enable_reg = 0x7705c,
5830                 .enable_mask = BIT(1),
5831                 .hw.init = &(const struct clk_init_data) {
5832                         .name = "gcc_ufs_phy_unipro_core_hw_ctl_clk",
5833                         .parent_hws = (const struct clk_hw*[]){
5834                                 &gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
5835                         },
5836                         .num_parents = 1,
5837                         .flags = CLK_SET_RATE_PARENT,
5838                         .ops = &clk_branch2_ops,
5839                 },
5840         },
5841 };
5842
5843 static struct clk_branch gcc_ufs_ref_clkref_clk = {
5844         .halt_reg = 0x8c058,
5845         .halt_check = BRANCH_HALT,
5846         .clkr = {
5847                 .enable_reg = 0x8c058,
5848                 .enable_mask = BIT(0),
5849                 .hw.init = &(const struct clk_init_data) {
5850                         .name = "gcc_ufs_ref_clkref_clk",
5851                         .ops = &clk_branch2_ops,
5852                 },
5853         },
5854 };
5855
5856 static struct clk_branch gcc_usb2_hs0_clkref_clk = {
5857         .halt_reg = 0x8c044,
5858         .halt_check = BRANCH_HALT,
5859         .clkr = {
5860                 .enable_reg = 0x8c044,
5861                 .enable_mask = BIT(0),
5862                 .hw.init = &(const struct clk_init_data) {
5863                         .name = "gcc_usb2_hs0_clkref_clk",
5864                         .ops = &clk_branch2_ops,
5865                 },
5866         },
5867 };
5868
5869 static struct clk_branch gcc_usb2_hs1_clkref_clk = {
5870         .halt_reg = 0x8c048,
5871         .halt_check = BRANCH_HALT,
5872         .clkr = {
5873                 .enable_reg = 0x8c048,
5874                 .enable_mask = BIT(0),
5875                 .hw.init = &(const struct clk_init_data) {
5876                         .name = "gcc_usb2_hs1_clkref_clk",
5877                         .ops = &clk_branch2_ops,
5878                 },
5879         },
5880 };
5881
5882 static struct clk_branch gcc_usb2_hs2_clkref_clk = {
5883         .halt_reg = 0x8c04c,
5884         .halt_check = BRANCH_HALT,
5885         .clkr = {
5886                 .enable_reg = 0x8c04c,
5887                 .enable_mask = BIT(0),
5888                 .hw.init = &(const struct clk_init_data) {
5889                         .name = "gcc_usb2_hs2_clkref_clk",
5890                         .ops = &clk_branch2_ops,
5891                 },
5892         },
5893 };
5894
5895 static struct clk_branch gcc_usb2_hs3_clkref_clk = {
5896         .halt_reg = 0x8c050,
5897         .halt_check = BRANCH_HALT,
5898         .clkr = {
5899                 .enable_reg = 0x8c050,
5900                 .enable_mask = BIT(0),
5901                 .hw.init = &(const struct clk_init_data) {
5902                         .name = "gcc_usb2_hs3_clkref_clk",
5903                         .ops = &clk_branch2_ops,
5904                 },
5905         },
5906 };
5907
5908 static struct clk_branch gcc_usb30_mp_master_clk = {
5909         .halt_reg = 0xab010,
5910         .halt_check = BRANCH_HALT,
5911         .clkr = {
5912                 .enable_reg = 0xab010,
5913                 .enable_mask = BIT(0),
5914                 .hw.init = &(const struct clk_init_data) {
5915                         .name = "gcc_usb30_mp_master_clk",
5916                         .parent_hws = (const struct clk_hw*[]){
5917                                 &gcc_usb30_mp_master_clk_src.clkr.hw,
5918                         },
5919                         .num_parents = 1,
5920                         .flags = CLK_SET_RATE_PARENT,
5921                         .ops = &clk_branch2_ops,
5922                 },
5923         },
5924 };
5925
5926 static struct clk_branch gcc_usb30_mp_mock_utmi_clk = {
5927         .halt_reg = 0xab01c,
5928         .halt_check = BRANCH_HALT,
5929         .clkr = {
5930                 .enable_reg = 0xab01c,
5931                 .enable_mask = BIT(0),
5932                 .hw.init = &(const struct clk_init_data) {
5933                         .name = "gcc_usb30_mp_mock_utmi_clk",
5934                         .parent_hws = (const struct clk_hw*[]){
5935                                 &gcc_usb30_mp_mock_utmi_postdiv_clk_src.clkr.hw,
5936                         },
5937                         .num_parents = 1,
5938                         .flags = CLK_SET_RATE_PARENT,
5939                         .ops = &clk_branch2_ops,
5940                 },
5941         },
5942 };
5943
5944 static struct clk_branch gcc_usb30_mp_sleep_clk = {
5945         .halt_reg = 0xab018,
5946         .halt_check = BRANCH_HALT,
5947         .clkr = {
5948                 .enable_reg = 0xab018,
5949                 .enable_mask = BIT(0),
5950                 .hw.init = &(const struct clk_init_data) {
5951                         .name = "gcc_usb30_mp_sleep_clk",
5952                         .ops = &clk_branch2_ops,
5953                 },
5954         },
5955 };
5956
5957 static struct clk_branch gcc_usb30_prim_master_clk = {
5958         .halt_reg = 0xf010,
5959         .halt_check = BRANCH_HALT,
5960         .clkr = {
5961                 .enable_reg = 0xf010,
5962                 .enable_mask = BIT(0),
5963                 .hw.init = &(const struct clk_init_data) {
5964                         .name = "gcc_usb30_prim_master_clk",
5965                         .parent_hws = (const struct clk_hw*[]){
5966                                 &gcc_usb30_prim_master_clk_src.clkr.hw,
5967                         },
5968                         .num_parents = 1,
5969                         .flags = CLK_SET_RATE_PARENT,
5970                         .ops = &clk_branch2_ops,
5971                 },
5972         },
5973 };
5974
5975 static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
5976         .halt_reg = 0xf01c,
5977         .halt_check = BRANCH_HALT,
5978         .clkr = {
5979                 .enable_reg = 0xf01c,
5980                 .enable_mask = BIT(0),
5981                 .hw.init = &(const struct clk_init_data) {
5982                         .name = "gcc_usb30_prim_mock_utmi_clk",
5983                         .parent_hws = (const struct clk_hw*[]){
5984                                 &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,
5985                         },
5986                         .num_parents = 1,
5987                         .flags = CLK_SET_RATE_PARENT,
5988                         .ops = &clk_branch2_ops,
5989                 },
5990         },
5991 };
5992
5993 static struct clk_branch gcc_usb30_prim_sleep_clk = {
5994         .halt_reg = 0xf018,
5995         .halt_check = BRANCH_HALT,
5996         .clkr = {
5997                 .enable_reg = 0xf018,
5998                 .enable_mask = BIT(0),
5999                 .hw.init = &(const struct clk_init_data) {
6000                         .name = "gcc_usb30_prim_sleep_clk",
6001                         .ops = &clk_branch2_ops,
6002                 },
6003         },
6004 };
6005
6006 static struct clk_branch gcc_usb30_sec_master_clk = {
6007         .halt_reg = 0x10010,
6008         .halt_check = BRANCH_HALT,
6009         .clkr = {
6010                 .enable_reg = 0x10010,
6011                 .enable_mask = BIT(0),
6012                 .hw.init = &(const struct clk_init_data) {
6013                         .name = "gcc_usb30_sec_master_clk",
6014                         .parent_hws = (const struct clk_hw*[]){
6015                                 &gcc_usb30_sec_master_clk_src.clkr.hw,
6016                         },
6017                         .num_parents = 1,
6018                         .flags = CLK_SET_RATE_PARENT,
6019                         .ops = &clk_branch2_ops,
6020                 },
6021         },
6022 };
6023
6024 static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {
6025         .halt_reg = 0x1001c,
6026         .halt_check = BRANCH_HALT,
6027         .clkr = {
6028                 .enable_reg = 0x1001c,
6029                 .enable_mask = BIT(0),
6030                 .hw.init = &(const struct clk_init_data) {
6031                         .name = "gcc_usb30_sec_mock_utmi_clk",
6032                         .parent_hws = (const struct clk_hw*[]){
6033                                 &gcc_usb30_sec_mock_utmi_postdiv_clk_src.clkr.hw,
6034                         },
6035                         .num_parents = 1,
6036                         .flags = CLK_SET_RATE_PARENT,
6037                         .ops = &clk_branch2_ops,
6038                 },
6039         },
6040 };
6041
6042 static struct clk_branch gcc_usb30_sec_sleep_clk = {
6043         .halt_reg = 0x10018,
6044         .halt_check = BRANCH_HALT,
6045         .clkr = {
6046                 .enable_reg = 0x10018,
6047                 .enable_mask = BIT(0),
6048                 .hw.init = &(const struct clk_init_data) {
6049                         .name = "gcc_usb30_sec_sleep_clk",
6050                         .ops = &clk_branch2_ops,
6051                 },
6052         },
6053 };
6054
6055 static struct clk_branch gcc_usb3_mp0_clkref_clk = {
6056         .halt_reg = 0x8c03c,
6057         .halt_check = BRANCH_HALT,
6058         .clkr = {
6059                 .enable_reg = 0x8c03c,
6060                 .enable_mask = BIT(0),
6061                 .hw.init = &(const struct clk_init_data) {
6062                         .name = "gcc_usb3_mp0_clkref_clk",
6063                         .ops = &clk_branch2_ops,
6064                 },
6065         },
6066 };
6067
6068 static struct clk_branch gcc_usb3_mp1_clkref_clk = {
6069         .halt_reg = 0x8c040,
6070         .halt_check = BRANCH_HALT,
6071         .clkr = {
6072                 .enable_reg = 0x8c040,
6073                 .enable_mask = BIT(0),
6074                 .hw.init = &(const struct clk_init_data) {
6075                         .name = "gcc_usb3_mp1_clkref_clk",
6076                         .ops = &clk_branch2_ops,
6077                 },
6078         },
6079 };
6080
6081 static struct clk_branch gcc_usb3_mp_phy_aux_clk = {
6082         .halt_reg = 0xab054,
6083         .halt_check = BRANCH_HALT,
6084         .clkr = {
6085                 .enable_reg = 0xab054,
6086                 .enable_mask = BIT(0),
6087                 .hw.init = &(const struct clk_init_data) {
6088                         .name = "gcc_usb3_mp_phy_aux_clk",
6089                         .parent_hws = (const struct clk_hw*[]){
6090                                 &gcc_usb3_mp_phy_aux_clk_src.clkr.hw,
6091                         },
6092                         .num_parents = 1,
6093                         .flags = CLK_SET_RATE_PARENT,
6094                         .ops = &clk_branch2_ops,
6095                 },
6096         },
6097 };
6098
6099 static struct clk_branch gcc_usb3_mp_phy_com_aux_clk = {
6100         .halt_reg = 0xab058,
6101         .halt_check = BRANCH_HALT,
6102         .clkr = {
6103                 .enable_reg = 0xab058,
6104                 .enable_mask = BIT(0),
6105                 .hw.init = &(const struct clk_init_data) {
6106                         .name = "gcc_usb3_mp_phy_com_aux_clk",
6107                         .parent_hws = (const struct clk_hw*[]){
6108                                 &gcc_usb3_mp_phy_aux_clk_src.clkr.hw,
6109                         },
6110                         .num_parents = 1,
6111                         .flags = CLK_SET_RATE_PARENT,
6112                         .ops = &clk_branch2_ops,
6113                 },
6114         },
6115 };
6116
6117 static struct clk_branch gcc_usb3_mp_phy_pipe_0_clk = {
6118         .halt_reg = 0xab05c,
6119         .halt_check = BRANCH_HALT_DELAY,
6120         .clkr = {
6121                 .enable_reg = 0xab05c,
6122                 .enable_mask = BIT(0),
6123                 .hw.init = &(const struct clk_init_data) {
6124                         .name = "gcc_usb3_mp_phy_pipe_0_clk",
6125                         .parent_hws = (const struct clk_hw*[]){
6126                                 &gcc_usb3_mp_phy_pipe_0_clk_src.clkr.hw,
6127                         },
6128                         .num_parents = 1,
6129                         .flags = CLK_SET_RATE_PARENT,
6130                         .ops = &clk_branch2_ops,
6131                 },
6132         },
6133 };
6134
6135 static struct clk_branch gcc_usb3_mp_phy_pipe_1_clk = {
6136         .halt_reg = 0xab064,
6137         .halt_check = BRANCH_HALT_DELAY,
6138         .clkr = {
6139                 .enable_reg = 0xab064,
6140                 .enable_mask = BIT(0),
6141                 .hw.init = &(const struct clk_init_data) {
6142                         .name = "gcc_usb3_mp_phy_pipe_1_clk",
6143                         .parent_hws = (const struct clk_hw*[]){
6144                                 &gcc_usb3_mp_phy_pipe_1_clk_src.clkr.hw,
6145                         },
6146                         .num_parents = 1,
6147                         .flags = CLK_SET_RATE_PARENT,
6148                         .ops = &clk_branch2_ops,
6149                 },
6150         },
6151 };
6152
6153 static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
6154         .halt_reg = 0xf054,
6155         .halt_check = BRANCH_HALT,
6156         .clkr = {
6157                 .enable_reg = 0xf054,
6158                 .enable_mask = BIT(0),
6159                 .hw.init = &(const struct clk_init_data) {
6160                         .name = "gcc_usb3_prim_phy_aux_clk",
6161                         .parent_hws = (const struct clk_hw*[]){
6162                                 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
6163                         },
6164                         .num_parents = 1,
6165                         .flags = CLK_SET_RATE_PARENT,
6166                         .ops = &clk_branch2_ops,
6167                 },
6168         },
6169 };
6170
6171 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
6172         .halt_reg = 0xf058,
6173         .halt_check = BRANCH_HALT,
6174         .clkr = {
6175                 .enable_reg = 0xf058,
6176                 .enable_mask = BIT(0),
6177                 .hw.init = &(const struct clk_init_data) {
6178                         .name = "gcc_usb3_prim_phy_com_aux_clk",
6179                         .parent_hws = (const struct clk_hw*[]){
6180                                 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
6181                         },
6182                         .num_parents = 1,
6183                         .flags = CLK_SET_RATE_PARENT,
6184                         .ops = &clk_branch2_ops,
6185                 },
6186         },
6187 };
6188
6189 static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
6190         .halt_reg = 0xf05c,
6191         .halt_check = BRANCH_HALT_DELAY,
6192         .hwcg_reg = 0xf05c,
6193         .hwcg_bit = 1,
6194         .clkr = {
6195                 .enable_reg = 0xf05c,
6196                 .enable_mask = BIT(0),
6197                 .hw.init = &(const struct clk_init_data) {
6198                         .name = "gcc_usb3_prim_phy_pipe_clk",
6199                         .parent_hws = (const struct clk_hw*[]){
6200                                 &gcc_usb34_prim_phy_pipe_clk_src.clkr.hw,
6201                         },
6202                         .num_parents = 1,
6203                         .flags = CLK_SET_RATE_PARENT,
6204                         .ops = &clk_branch2_ops,
6205                 },
6206         },
6207 };
6208
6209 static struct clk_branch gcc_usb3_sec_phy_aux_clk = {
6210         .halt_reg = 0x10054,
6211         .halt_check = BRANCH_HALT,
6212         .clkr = {
6213                 .enable_reg = 0x10054,
6214                 .enable_mask = BIT(0),
6215                 .hw.init = &(const struct clk_init_data) {
6216                         .name = "gcc_usb3_sec_phy_aux_clk",
6217                         .parent_hws = (const struct clk_hw*[]){
6218                                 &gcc_usb3_sec_phy_aux_clk_src.clkr.hw,
6219                         },
6220                         .num_parents = 1,
6221                         .flags = CLK_SET_RATE_PARENT,
6222                         .ops = &clk_branch2_ops,
6223                 },
6224         },
6225 };
6226
6227 static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = {
6228         .halt_reg = 0x10058,
6229         .halt_check = BRANCH_HALT,
6230         .clkr = {
6231                 .enable_reg = 0x10058,
6232                 .enable_mask = BIT(0),
6233                 .hw.init = &(const struct clk_init_data) {
6234                         .name = "gcc_usb3_sec_phy_com_aux_clk",
6235                         .parent_hws = (const struct clk_hw*[]){
6236                                 &gcc_usb3_sec_phy_aux_clk_src.clkr.hw,
6237                         },
6238                         .num_parents = 1,
6239                         .flags = CLK_SET_RATE_PARENT,
6240                         .ops = &clk_branch2_ops,
6241                 },
6242         },
6243 };
6244
6245 static struct clk_branch gcc_usb3_sec_phy_pipe_clk = {
6246         .halt_reg = 0x1005c,
6247         .halt_check = BRANCH_HALT_DELAY,
6248         .hwcg_reg = 0x1005c,
6249         .hwcg_bit = 1,
6250         .clkr = {
6251                 .enable_reg = 0x1005c,
6252                 .enable_mask = BIT(0),
6253                 .hw.init = &(const struct clk_init_data) {
6254                         .name = "gcc_usb3_sec_phy_pipe_clk",
6255                         .parent_hws = (const struct clk_hw*[]){
6256                                 &gcc_usb34_sec_phy_pipe_clk_src.clkr.hw,
6257                         },
6258                         .num_parents = 1,
6259                         .flags = CLK_SET_RATE_PARENT,
6260                         .ops = &clk_branch2_ops,
6261                 },
6262         },
6263 };
6264
6265 static struct clk_branch gcc_usb4_1_cfg_ahb_clk = {
6266         .halt_reg = 0xb808c,
6267         .halt_check = BRANCH_HALT_VOTED,
6268         .hwcg_reg = 0xb808c,
6269         .hwcg_bit = 1,
6270         .clkr = {
6271                 .enable_reg = 0xb808c,
6272                 .enable_mask = BIT(0),
6273                 .hw.init = &(const struct clk_init_data) {
6274                         .name = "gcc_usb4_1_cfg_ahb_clk",
6275                         .ops = &clk_branch2_ops,
6276                 },
6277         },
6278 };
6279
6280 static struct clk_branch gcc_usb4_1_dp_clk = {
6281         .halt_reg = 0xb8048,
6282         .halt_check = BRANCH_HALT,
6283         .clkr = {
6284                 .enable_reg = 0xb8048,
6285                 .enable_mask = BIT(0),
6286                 .hw.init = &(const struct clk_init_data) {
6287                         .name = "gcc_usb4_1_dp_clk",
6288                         .parent_hws = (const struct clk_hw*[]){
6289                                 &gcc_usb4_1_phy_dp_clk_src.clkr.hw,
6290                         },
6291                         .num_parents = 1,
6292                         .flags = CLK_SET_RATE_PARENT,
6293                         .ops = &clk_branch2_ops,
6294                 },
6295         },
6296 };
6297
6298 static struct clk_branch gcc_usb4_1_master_clk = {
6299         .halt_reg = 0xb8010,
6300         .halt_check = BRANCH_HALT,
6301         .clkr = {
6302                 .enable_reg = 0xb8010,
6303                 .enable_mask = BIT(0),
6304                 .hw.init = &(const struct clk_init_data) {
6305                         .name = "gcc_usb4_1_master_clk",
6306                         .parent_hws = (const struct clk_hw*[]){
6307                                 &gcc_usb4_1_master_clk_src.clkr.hw,
6308                         },
6309                         .num_parents = 1,
6310                         .flags = CLK_SET_RATE_PARENT,
6311                         .ops = &clk_branch2_ops,
6312                 },
6313         },
6314 };
6315
6316 static struct clk_branch gcc_usb4_1_phy_p2rr2p_pipe_clk = {
6317         .halt_reg = 0xb80b4,
6318         .halt_check = BRANCH_HALT_DELAY,
6319         .clkr = {
6320                 .enable_reg = 0xb80b4,
6321                 .enable_mask = BIT(0),
6322                 .hw.init = &(const struct clk_init_data) {
6323                         .name = "gcc_usb4_1_phy_p2rr2p_pipe_clk",
6324                         .parent_hws = (const struct clk_hw*[]){
6325                                 &gcc_usb4_1_phy_p2rr2p_pipe_clk_src.clkr.hw,
6326                         },
6327                         .num_parents = 1,
6328                         .flags = CLK_SET_RATE_PARENT,
6329                         .ops = &clk_branch2_ops,
6330                 },
6331         },
6332 };
6333
6334 static struct clk_branch gcc_usb4_1_phy_pcie_pipe_clk = {
6335         .halt_reg = 0xb8038,
6336         .halt_check = BRANCH_HALT_DELAY,
6337         .clkr = {
6338                 .enable_reg = 0x52020,
6339                 .enable_mask = BIT(19),
6340                 .hw.init = &(const struct clk_init_data) {
6341                         .name = "gcc_usb4_1_phy_pcie_pipe_clk",
6342                         .parent_hws = (const struct clk_hw*[]){
6343                                 &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr.hw,
6344                         },
6345                         .num_parents = 1,
6346                         .flags = CLK_SET_RATE_PARENT,
6347                         .ops = &clk_branch2_ops,
6348                 },
6349         },
6350 };
6351
6352 static struct clk_branch gcc_usb4_1_phy_rx0_clk = {
6353         .halt_reg = 0xb8094,
6354         .halt_check = BRANCH_HALT,
6355         .clkr = {
6356                 .enable_reg = 0xb8094,
6357                 .enable_mask = BIT(0),
6358                 .hw.init = &(const struct clk_init_data) {
6359                         .name = "gcc_usb4_1_phy_rx0_clk",
6360                         .parent_hws = (const struct clk_hw*[]){
6361                                 &gcc_usb4_1_phy_rx0_clk_src.clkr.hw,
6362                         },
6363                         .num_parents = 1,
6364                         .flags = CLK_SET_RATE_PARENT,
6365                         .ops = &clk_branch2_ops,
6366                 },
6367         },
6368 };
6369
6370 static struct clk_branch gcc_usb4_1_phy_rx1_clk = {
6371         .halt_reg = 0xb80a0,
6372         .halt_check = BRANCH_HALT,
6373         .clkr = {
6374                 .enable_reg = 0xb80a0,
6375                 .enable_mask = BIT(0),
6376                 .hw.init = &(const struct clk_init_data) {
6377                         .name = "gcc_usb4_1_phy_rx1_clk",
6378                         .parent_hws = (const struct clk_hw*[]){
6379                                 &gcc_usb4_1_phy_rx1_clk_src.clkr.hw,
6380                         },
6381                         .num_parents = 1,
6382                         .flags = CLK_SET_RATE_PARENT,
6383                         .ops = &clk_branch2_ops,
6384                 },
6385         },
6386 };
6387
6388 static struct clk_branch gcc_usb4_1_phy_usb_pipe_clk = {
6389         .halt_reg = 0xb8088,
6390         .halt_check = BRANCH_HALT_DELAY,
6391         .hwcg_reg = 0xb8088,
6392         .hwcg_bit = 1,
6393         .clkr = {
6394                 .enable_reg = 0xb8088,
6395                 .enable_mask = BIT(0),
6396                 .hw.init = &(const struct clk_init_data) {
6397                         .name = "gcc_usb4_1_phy_usb_pipe_clk",
6398                         .parent_hws = (const struct clk_hw*[]){
6399                                 &gcc_usb34_sec_phy_pipe_clk_src.clkr.hw,
6400                         },
6401                         .num_parents = 1,
6402                         .flags = CLK_SET_RATE_PARENT,
6403                         .ops = &clk_branch2_ops,
6404                 },
6405         },
6406 };
6407
6408 static struct clk_branch gcc_usb4_1_sb_if_clk = {
6409         .halt_reg = 0xb8034,
6410         .halt_check = BRANCH_HALT,
6411         .clkr = {
6412                 .enable_reg = 0xb8034,
6413                 .enable_mask = BIT(0),
6414                 .hw.init = &(const struct clk_init_data) {
6415                         .name = "gcc_usb4_1_sb_if_clk",
6416                         .parent_hws = (const struct clk_hw*[]){
6417                                 &gcc_usb4_1_sb_if_clk_src.clkr.hw,
6418                         },
6419                         .num_parents = 1,
6420                         .flags = CLK_SET_RATE_PARENT,
6421                         .ops = &clk_branch2_ops,
6422                 },
6423         },
6424 };
6425
6426 static struct clk_branch gcc_usb4_1_sys_clk = {
6427         .halt_reg = 0xb8040,
6428         .halt_check = BRANCH_HALT,
6429         .clkr = {
6430                 .enable_reg = 0xb8040,
6431                 .enable_mask = BIT(0),
6432                 .hw.init = &(const struct clk_init_data) {
6433                         .name = "gcc_usb4_1_sys_clk",
6434                         .parent_hws = (const struct clk_hw*[]){
6435                                 &gcc_usb4_1_phy_sys_clk_src.clkr.hw,
6436                         },
6437                         .num_parents = 1,
6438                         .flags = CLK_SET_RATE_PARENT,
6439                         .ops = &clk_branch2_ops,
6440                 },
6441         },
6442 };
6443
6444 static struct clk_branch gcc_usb4_1_tmu_clk = {
6445         .halt_reg = 0xb806c,
6446         .halt_check = BRANCH_HALT_VOTED,
6447         .hwcg_reg = 0xb806c,
6448         .hwcg_bit = 1,
6449         .clkr = {
6450                 .enable_reg = 0xb806c,
6451                 .enable_mask = BIT(0),
6452                 .hw.init = &(const struct clk_init_data) {
6453                         .name = "gcc_usb4_1_tmu_clk",
6454                         .parent_hws = (const struct clk_hw*[]){
6455                                 &gcc_usb4_1_tmu_clk_src.clkr.hw,
6456                         },
6457                         .num_parents = 1,
6458                         .flags = CLK_SET_RATE_PARENT,
6459                         .ops = &clk_branch2_ops,
6460                 },
6461         },
6462 };
6463
6464 static struct clk_branch gcc_usb4_cfg_ahb_clk = {
6465         .halt_reg = 0x2a08c,
6466         .halt_check = BRANCH_HALT_VOTED,
6467         .hwcg_reg = 0x2a08c,
6468         .hwcg_bit = 1,
6469         .clkr = {
6470                 .enable_reg = 0x2a08c,
6471                 .enable_mask = BIT(0),
6472                 .hw.init = &(const struct clk_init_data) {
6473                         .name = "gcc_usb4_cfg_ahb_clk",
6474                         .ops = &clk_branch2_ops,
6475                 },
6476         },
6477 };
6478
6479 static struct clk_branch gcc_usb4_clkref_clk = {
6480         .halt_reg = 0x8c010,
6481         .halt_check = BRANCH_HALT,
6482         .clkr = {
6483                 .enable_reg = 0x8c010,
6484                 .enable_mask = BIT(0),
6485                 .hw.init = &(const struct clk_init_data) {
6486                         .name = "gcc_usb4_clkref_clk",
6487                         .ops = &clk_branch2_ops,
6488                 },
6489         },
6490 };
6491
6492 static struct clk_branch gcc_usb4_dp_clk = {
6493         .halt_reg = 0x2a048,
6494         .halt_check = BRANCH_HALT,
6495         .clkr = {
6496                 .enable_reg = 0x2a048,
6497                 .enable_mask = BIT(0),
6498                 .hw.init = &(const struct clk_init_data) {
6499                         .name = "gcc_usb4_dp_clk",
6500                         .parent_hws = (const struct clk_hw*[]){
6501                                 &gcc_usb4_phy_dp_clk_src.clkr.hw,
6502                         },
6503                         .num_parents = 1,
6504                         .flags = CLK_SET_RATE_PARENT,
6505                         .ops = &clk_branch2_ops,
6506                 },
6507         },
6508 };
6509
6510 static struct clk_branch gcc_usb4_eud_clkref_clk = {
6511         .halt_reg = 0x8c02c,
6512         .halt_check = BRANCH_HALT,
6513         .clkr = {
6514                 .enable_reg = 0x8c02c,
6515                 .enable_mask = BIT(0),
6516                 .hw.init = &(const struct clk_init_data) {
6517                         .name = "gcc_usb4_eud_clkref_clk",
6518                         .ops = &clk_branch2_ops,
6519                 },
6520         },
6521 };
6522
6523 static struct clk_branch gcc_usb4_master_clk = {
6524         .halt_reg = 0x2a010,
6525         .halt_check = BRANCH_HALT,
6526         .clkr = {
6527                 .enable_reg = 0x2a010,
6528                 .enable_mask = BIT(0),
6529                 .hw.init = &(const struct clk_init_data) {
6530                         .name = "gcc_usb4_master_clk",
6531                         .parent_hws = (const struct clk_hw*[]){
6532                                 &gcc_usb4_master_clk_src.clkr.hw,
6533                         },
6534                         .num_parents = 1,
6535                         .flags = CLK_SET_RATE_PARENT,
6536                         .ops = &clk_branch2_ops,
6537                 },
6538         },
6539 };
6540
6541 static struct clk_branch gcc_usb4_phy_p2rr2p_pipe_clk = {
6542         .halt_reg = 0x2a0b4,
6543         .halt_check = BRANCH_HALT_DELAY,
6544         .clkr = {
6545                 .enable_reg = 0x2a0b4,
6546                 .enable_mask = BIT(0),
6547                 .hw.init = &(const struct clk_init_data) {
6548                         .name = "gcc_usb4_phy_p2rr2p_pipe_clk",
6549                         .parent_hws = (const struct clk_hw*[]){
6550                                 &gcc_usb4_phy_p2rr2p_pipe_clk_src.clkr.hw,
6551                         },
6552                         .num_parents = 1,
6553                         .flags = CLK_SET_RATE_PARENT,
6554                         .ops = &clk_branch2_ops,
6555                 },
6556         },
6557 };
6558
6559 static struct clk_branch gcc_usb4_phy_pcie_pipe_clk = {
6560         .halt_reg = 0x2a038,
6561         .halt_check = BRANCH_HALT_DELAY,
6562         .clkr = {
6563                 .enable_reg = 0x52020,
6564                 .enable_mask = BIT(18),
6565                 .hw.init = &(const struct clk_init_data) {
6566                         .name = "gcc_usb4_phy_pcie_pipe_clk",
6567                         .parent_hws = (const struct clk_hw*[]){
6568                                 &gcc_usb4_phy_pcie_pipe_mux_clk_src.clkr.hw,
6569                         },
6570                         .num_parents = 1,
6571                         .flags = CLK_SET_RATE_PARENT,
6572                         .ops = &clk_branch2_ops,
6573                 },
6574         },
6575 };
6576
6577 static struct clk_branch gcc_usb4_phy_rx0_clk = {
6578         .halt_reg = 0x2a094,
6579         .halt_check = BRANCH_HALT,
6580         .clkr = {
6581                 .enable_reg = 0x2a094,
6582                 .enable_mask = BIT(0),
6583                 .hw.init = &(const struct clk_init_data) {
6584                         .name = "gcc_usb4_phy_rx0_clk",
6585                         .parent_hws = (const struct clk_hw*[]){
6586                                 &gcc_usb4_phy_rx0_clk_src.clkr.hw,
6587                         },
6588                         .num_parents = 1,
6589                         .flags = CLK_SET_RATE_PARENT,
6590                         .ops = &clk_branch2_ops,
6591                 },
6592         },
6593 };
6594
6595 static struct clk_branch gcc_usb4_phy_rx1_clk = {
6596         .halt_reg = 0x2a0a0,
6597         .halt_check = BRANCH_HALT,
6598         .clkr = {
6599                 .enable_reg = 0x2a0a0,
6600                 .enable_mask = BIT(0),
6601                 .hw.init = &(const struct clk_init_data) {
6602                         .name = "gcc_usb4_phy_rx1_clk",
6603                         .parent_hws = (const struct clk_hw*[]){
6604                                 &gcc_usb4_phy_rx1_clk_src.clkr.hw,
6605                         },
6606                         .num_parents = 1,
6607                         .flags = CLK_SET_RATE_PARENT,
6608                         .ops = &clk_branch2_ops,
6609                 },
6610         },
6611 };
6612
6613 static struct clk_branch gcc_usb4_phy_usb_pipe_clk = {
6614         .halt_reg = 0x2a088,
6615         .halt_check = BRANCH_HALT_DELAY,
6616         .hwcg_reg = 0x2a088,
6617         .hwcg_bit = 1,
6618         .clkr = {
6619                 .enable_reg = 0x2a088,
6620                 .enable_mask = BIT(0),
6621                 .hw.init = &(const struct clk_init_data) {
6622                         .name = "gcc_usb4_phy_usb_pipe_clk",
6623                         .parent_hws = (const struct clk_hw*[]){
6624                                 &gcc_usb34_prim_phy_pipe_clk_src.clkr.hw,
6625                         },
6626                         .num_parents = 1,
6627                         .flags = CLK_SET_RATE_PARENT,
6628                         .ops = &clk_branch2_ops,
6629                 },
6630         },
6631 };
6632
6633 static struct clk_branch gcc_usb4_sb_if_clk = {
6634         .halt_reg = 0x2a034,
6635         .halt_check = BRANCH_HALT,
6636         .clkr = {
6637                 .enable_reg = 0x2a034,
6638                 .enable_mask = BIT(0),
6639                 .hw.init = &(const struct clk_init_data) {
6640                         .name = "gcc_usb4_sb_if_clk",
6641                         .parent_hws = (const struct clk_hw*[]){
6642                                 &gcc_usb4_sb_if_clk_src.clkr.hw,
6643                         },
6644                         .num_parents = 1,
6645                         .flags = CLK_SET_RATE_PARENT,
6646                         .ops = &clk_branch2_ops,
6647                 },
6648         },
6649 };
6650
6651 static struct clk_branch gcc_usb4_sys_clk = {
6652         .halt_reg = 0x2a040,
6653         .halt_check = BRANCH_HALT,
6654         .clkr = {
6655                 .enable_reg = 0x2a040,
6656                 .enable_mask = BIT(0),
6657                 .hw.init = &(const struct clk_init_data) {
6658                         .name = "gcc_usb4_sys_clk",
6659                         .parent_hws = (const struct clk_hw*[]){
6660                                 &gcc_usb4_phy_sys_clk_src.clkr.hw,
6661                         },
6662                         .num_parents = 1,
6663                         .flags = CLK_SET_RATE_PARENT,
6664                         .ops = &clk_branch2_ops,
6665                 },
6666         },
6667 };
6668
6669 static struct clk_branch gcc_usb4_tmu_clk = {
6670         .halt_reg = 0x2a06c,
6671         .halt_check = BRANCH_HALT_VOTED,
6672         .hwcg_reg = 0x2a06c,
6673         .hwcg_bit = 1,
6674         .clkr = {
6675                 .enable_reg = 0x2a06c,
6676                 .enable_mask = BIT(0),
6677                 .hw.init = &(const struct clk_init_data) {
6678                         .name = "gcc_usb4_tmu_clk",
6679                         .parent_hws = (const struct clk_hw*[]){
6680                                 &gcc_usb4_tmu_clk_src.clkr.hw,
6681                         },
6682                         .num_parents = 1,
6683                         .flags = CLK_SET_RATE_PARENT,
6684                         .ops = &clk_branch2_ops,
6685                 },
6686         },
6687 };
6688
6689 static struct clk_branch gcc_video_axi0_clk = {
6690         .halt_reg = 0x28010,
6691         .halt_check = BRANCH_HALT_SKIP,
6692         .hwcg_reg = 0x28010,
6693         .hwcg_bit = 1,
6694         .clkr = {
6695                 .enable_reg = 0x28010,
6696                 .enable_mask = BIT(0),
6697                 .hw.init = &(const struct clk_init_data) {
6698                         .name = "gcc_video_axi0_clk",
6699                         .ops = &clk_branch2_ops,
6700                 },
6701         },
6702 };
6703
6704 static struct clk_branch gcc_video_axi1_clk = {
6705         .halt_reg = 0x28018,
6706         .halt_check = BRANCH_HALT_SKIP,
6707         .hwcg_reg = 0x28018,
6708         .hwcg_bit = 1,
6709         .clkr = {
6710                 .enable_reg = 0x28018,
6711                 .enable_mask = BIT(0),
6712                 .hw.init = &(const struct clk_init_data) {
6713                         .name = "gcc_video_axi1_clk",
6714                         .ops = &clk_branch2_ops,
6715                 },
6716         },
6717 };
6718
6719 static struct clk_branch gcc_video_cvp_throttle_clk = {
6720         .halt_reg = 0x28024,
6721         .halt_check = BRANCH_HALT_SKIP,
6722         .hwcg_reg = 0x28024,
6723         .hwcg_bit = 1,
6724         .clkr = {
6725                 .enable_reg = 0x28024,
6726                 .enable_mask = BIT(0),
6727                 .hw.init = &(const struct clk_init_data) {
6728                         .name = "gcc_video_cvp_throttle_clk",
6729                         .ops = &clk_branch2_ops,
6730                 },
6731         },
6732 };
6733
6734 static struct clk_branch gcc_video_vcodec_throttle_clk = {
6735         .halt_reg = 0x28020,
6736         .halt_check = BRANCH_HALT_SKIP,
6737         .hwcg_reg = 0x28020,
6738         .hwcg_bit = 1,
6739         .clkr = {
6740                 .enable_reg = 0x28020,
6741                 .enable_mask = BIT(0),
6742                 .hw.init = &(const struct clk_init_data) {
6743                         .name = "gcc_video_vcodec_throttle_clk",
6744                         .ops = &clk_branch2_ops,
6745                 },
6746         },
6747 };
6748
6749 static struct gdsc pcie_0_tunnel_gdsc = {
6750         .gdscr = 0xa4004,
6751         .collapse_ctrl = 0x52128,
6752         .collapse_mask = BIT(0),
6753         .pd = {
6754                 .name = "pcie_0_tunnel_gdsc",
6755         },
6756         .pwrsts = PWRSTS_OFF_ON,
6757         .flags = VOTABLE,
6758 };
6759
6760 static struct gdsc pcie_1_tunnel_gdsc = {
6761         .gdscr = 0x8d004,
6762         .collapse_ctrl = 0x52128,
6763         .collapse_mask = BIT(1),
6764         .pd = {
6765                 .name = "pcie_1_tunnel_gdsc",
6766         },
6767         .pwrsts = PWRSTS_OFF_ON,
6768         .flags = VOTABLE,
6769 };
6770
6771 static struct gdsc pcie_2a_gdsc = {
6772         .gdscr = 0x9d004,
6773         .collapse_ctrl = 0x52128,
6774         .collapse_mask = BIT(2),
6775         .pd = {
6776                 .name = "pcie_2a_gdsc",
6777         },
6778         .pwrsts = PWRSTS_OFF_ON,
6779         .flags = VOTABLE,
6780 };
6781
6782 static struct gdsc pcie_2b_gdsc = {
6783         .gdscr = 0x9e004,
6784         .collapse_ctrl = 0x52128,
6785         .collapse_mask = BIT(3),
6786         .pd = {
6787                 .name = "pcie_2b_gdsc",
6788         },
6789         .pwrsts = PWRSTS_OFF_ON,
6790         .flags = VOTABLE,
6791 };
6792
6793 static struct gdsc pcie_3a_gdsc = {
6794         .gdscr = 0xa0004,
6795         .collapse_ctrl = 0x52128,
6796         .collapse_mask = BIT(4),
6797         .pd = {
6798                 .name = "pcie_3a_gdsc",
6799         },
6800         .pwrsts = PWRSTS_OFF_ON,
6801         .flags = VOTABLE,
6802 };
6803
6804 static struct gdsc pcie_3b_gdsc = {
6805         .gdscr = 0xa2004,
6806         .collapse_ctrl = 0x52128,
6807         .collapse_mask = BIT(5),
6808         .pd = {
6809                 .name = "pcie_3b_gdsc",
6810         },
6811         .pwrsts = PWRSTS_OFF_ON,
6812         .flags = VOTABLE,
6813 };
6814
6815 static struct gdsc pcie_4_gdsc = {
6816         .gdscr = 0x6b004,
6817         .collapse_ctrl = 0x52128,
6818         .collapse_mask = BIT(6),
6819         .pd = {
6820                 .name = "pcie_4_gdsc",
6821         },
6822         .pwrsts = PWRSTS_OFF_ON,
6823         .flags = VOTABLE,
6824 };
6825
6826 static struct gdsc ufs_card_gdsc = {
6827         .gdscr = 0x75004,
6828         .pd = {
6829                 .name = "ufs_card_gdsc",
6830         },
6831         .pwrsts = PWRSTS_OFF_ON,
6832 };
6833
6834 static struct gdsc ufs_phy_gdsc = {
6835         .gdscr = 0x77004,
6836         .pd = {
6837                 .name = "ufs_phy_gdsc",
6838         },
6839         .pwrsts = PWRSTS_OFF_ON,
6840 };
6841
6842 static struct gdsc usb30_mp_gdsc = {
6843         .gdscr = 0xab004,
6844         .pd = {
6845                 .name = "usb30_mp_gdsc",
6846         },
6847         .pwrsts = PWRSTS_OFF_ON,
6848 };
6849
6850 static struct gdsc usb30_prim_gdsc = {
6851         .gdscr = 0xf004,
6852         .pd = {
6853                 .name = "usb30_prim_gdsc",
6854         },
6855         .pwrsts = PWRSTS_OFF_ON,
6856 };
6857
6858 static struct gdsc usb30_sec_gdsc = {
6859         .gdscr = 0x10004,
6860         .pd = {
6861                 .name = "usb30_sec_gdsc",
6862         },
6863         .pwrsts = PWRSTS_OFF_ON,
6864 };
6865
6866 static struct clk_regmap *gcc_sc8280xp_clocks[] = {
6867         [GCC_AGGRE_NOC_PCIE0_TUNNEL_AXI_CLK] = &gcc_aggre_noc_pcie0_tunnel_axi_clk.clkr,
6868         [GCC_AGGRE_NOC_PCIE1_TUNNEL_AXI_CLK] = &gcc_aggre_noc_pcie1_tunnel_axi_clk.clkr,
6869         [GCC_AGGRE_NOC_PCIE_4_AXI_CLK] = &gcc_aggre_noc_pcie_4_axi_clk.clkr,
6870         [GCC_AGGRE_NOC_PCIE_SOUTH_SF_AXI_CLK] = &gcc_aggre_noc_pcie_south_sf_axi_clk.clkr,
6871         [GCC_AGGRE_UFS_CARD_AXI_CLK] = &gcc_aggre_ufs_card_axi_clk.clkr,
6872         [GCC_AGGRE_UFS_CARD_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_card_axi_hw_ctl_clk.clkr,
6873         [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
6874         [GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_phy_axi_hw_ctl_clk.clkr,
6875         [GCC_AGGRE_USB3_MP_AXI_CLK] = &gcc_aggre_usb3_mp_axi_clk.clkr,
6876         [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
6877         [GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr,
6878         [GCC_AGGRE_USB4_1_AXI_CLK] = &gcc_aggre_usb4_1_axi_clk.clkr,
6879         [GCC_AGGRE_USB4_AXI_CLK] = &gcc_aggre_usb4_axi_clk.clkr,
6880         [GCC_AGGRE_USB_NOC_AXI_CLK] = &gcc_aggre_usb_noc_axi_clk.clkr,
6881         [GCC_AGGRE_USB_NOC_NORTH_AXI_CLK] = &gcc_aggre_usb_noc_north_axi_clk.clkr,
6882         [GCC_AGGRE_USB_NOC_SOUTH_AXI_CLK] = &gcc_aggre_usb_noc_south_axi_clk.clkr,
6883         [GCC_AHB2PHY0_CLK] = &gcc_ahb2phy0_clk.clkr,
6884         [GCC_AHB2PHY2_CLK] = &gcc_ahb2phy2_clk.clkr,
6885         [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
6886         [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
6887         [GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
6888         [GCC_CAMERA_THROTTLE_NRT_AXI_CLK] = &gcc_camera_throttle_nrt_axi_clk.clkr,
6889         [GCC_CAMERA_THROTTLE_RT_AXI_CLK] = &gcc_camera_throttle_rt_axi_clk.clkr,
6890         [GCC_CAMERA_THROTTLE_XO_CLK] = &gcc_camera_throttle_xo_clk.clkr,
6891         [GCC_CFG_NOC_USB3_MP_AXI_CLK] = &gcc_cfg_noc_usb3_mp_axi_clk.clkr,
6892         [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
6893         [GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr,
6894         [GCC_CNOC_PCIE0_TUNNEL_CLK] = &gcc_cnoc_pcie0_tunnel_clk.clkr,
6895         [GCC_CNOC_PCIE1_TUNNEL_CLK] = &gcc_cnoc_pcie1_tunnel_clk.clkr,
6896         [GCC_CNOC_PCIE4_QX_CLK] = &gcc_cnoc_pcie4_qx_clk.clkr,
6897         [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
6898         [GCC_DDRSS_PCIE_SF_TBU_CLK] = &gcc_ddrss_pcie_sf_tbu_clk.clkr,
6899         [GCC_DISP1_HF_AXI_CLK] = &gcc_disp1_hf_axi_clk.clkr,
6900         [GCC_DISP1_SF_AXI_CLK] = &gcc_disp1_sf_axi_clk.clkr,
6901         [GCC_DISP1_THROTTLE_NRT_AXI_CLK] = &gcc_disp1_throttle_nrt_axi_clk.clkr,
6902         [GCC_DISP1_THROTTLE_RT_AXI_CLK] = &gcc_disp1_throttle_rt_axi_clk.clkr,
6903         [GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
6904         [GCC_DISP_SF_AXI_CLK] = &gcc_disp_sf_axi_clk.clkr,
6905         [GCC_DISP_THROTTLE_NRT_AXI_CLK] = &gcc_disp_throttle_nrt_axi_clk.clkr,
6906         [GCC_DISP_THROTTLE_RT_AXI_CLK] = &gcc_disp_throttle_rt_axi_clk.clkr,
6907         [GCC_EMAC0_AXI_CLK] = &gcc_emac0_axi_clk.clkr,
6908         [GCC_EMAC0_PTP_CLK] = &gcc_emac0_ptp_clk.clkr,
6909         [GCC_EMAC0_PTP_CLK_SRC] = &gcc_emac0_ptp_clk_src.clkr,
6910         [GCC_EMAC0_RGMII_CLK] = &gcc_emac0_rgmii_clk.clkr,
6911         [GCC_EMAC0_RGMII_CLK_SRC] = &gcc_emac0_rgmii_clk_src.clkr,
6912         [GCC_EMAC0_SLV_AHB_CLK] = &gcc_emac0_slv_ahb_clk.clkr,
6913         [GCC_EMAC1_AXI_CLK] = &gcc_emac1_axi_clk.clkr,
6914         [GCC_EMAC1_PTP_CLK] = &gcc_emac1_ptp_clk.clkr,
6915         [GCC_EMAC1_PTP_CLK_SRC] = &gcc_emac1_ptp_clk_src.clkr,
6916         [GCC_EMAC1_RGMII_CLK] = &gcc_emac1_rgmii_clk.clkr,
6917         [GCC_EMAC1_RGMII_CLK_SRC] = &gcc_emac1_rgmii_clk_src.clkr,
6918         [GCC_EMAC1_SLV_AHB_CLK] = &gcc_emac1_slv_ahb_clk.clkr,
6919         [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
6920         [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
6921         [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
6922         [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
6923         [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
6924         [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
6925         [GCC_GP4_CLK] = &gcc_gp4_clk.clkr,
6926         [GCC_GP4_CLK_SRC] = &gcc_gp4_clk_src.clkr,
6927         [GCC_GP5_CLK] = &gcc_gp5_clk.clkr,
6928         [GCC_GP5_CLK_SRC] = &gcc_gp5_clk_src.clkr,
6929         [GCC_GPLL0] = &gcc_gpll0.clkr,
6930         [GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr,
6931         [GCC_GPLL2] = &gcc_gpll2.clkr,
6932         [GCC_GPLL4] = &gcc_gpll4.clkr,
6933         [GCC_GPLL7] = &gcc_gpll7.clkr,
6934         [GCC_GPLL8] = &gcc_gpll8.clkr,
6935         [GCC_GPLL9] = &gcc_gpll9.clkr,
6936         [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
6937         [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
6938         [GCC_GPU_IREF_EN] = &gcc_gpu_iref_en.clkr,
6939         [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
6940         [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
6941         [GCC_GPU_TCU_THROTTLE_AHB_CLK] = &gcc_gpu_tcu_throttle_ahb_clk.clkr,
6942         [GCC_GPU_TCU_THROTTLE_CLK] = &gcc_gpu_tcu_throttle_clk.clkr,
6943         [GCC_PCIE0_PHY_RCHNG_CLK] = &gcc_pcie0_phy_rchng_clk.clkr,
6944         [GCC_PCIE1_PHY_RCHNG_CLK] = &gcc_pcie1_phy_rchng_clk.clkr,
6945         [GCC_PCIE2A_PHY_RCHNG_CLK] = &gcc_pcie2a_phy_rchng_clk.clkr,
6946         [GCC_PCIE2B_PHY_RCHNG_CLK] = &gcc_pcie2b_phy_rchng_clk.clkr,
6947         [GCC_PCIE3A_PHY_RCHNG_CLK] = &gcc_pcie3a_phy_rchng_clk.clkr,
6948         [GCC_PCIE3B_PHY_RCHNG_CLK] = &gcc_pcie3b_phy_rchng_clk.clkr,
6949         [GCC_PCIE4_PHY_RCHNG_CLK] = &gcc_pcie4_phy_rchng_clk.clkr,
6950         [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
6951         [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
6952         [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
6953         [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
6954         [GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr,
6955         [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
6956         [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
6957         [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
6958         [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
6959         [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
6960         [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
6961         [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
6962         [GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr,
6963         [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
6964         [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
6965         [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
6966         [GCC_PCIE_2A2B_CLKREF_CLK] = &gcc_pcie_2a2b_clkref_clk.clkr,
6967         [GCC_PCIE_2A_AUX_CLK] = &gcc_pcie_2a_aux_clk.clkr,
6968         [GCC_PCIE_2A_AUX_CLK_SRC] = &gcc_pcie_2a_aux_clk_src.clkr,
6969         [GCC_PCIE_2A_CFG_AHB_CLK] = &gcc_pcie_2a_cfg_ahb_clk.clkr,
6970         [GCC_PCIE_2A_MSTR_AXI_CLK] = &gcc_pcie_2a_mstr_axi_clk.clkr,
6971         [GCC_PCIE_2A_PHY_RCHNG_CLK_SRC] = &gcc_pcie_2a_phy_rchng_clk_src.clkr,
6972         [GCC_PCIE_2A_PIPE_CLK] = &gcc_pcie_2a_pipe_clk.clkr,
6973         [GCC_PCIE_2A_PIPE_CLK_SRC] = &gcc_pcie_2a_pipe_clk_src.clkr,
6974         [GCC_PCIE_2A_PIPE_DIV_CLK_SRC] = &gcc_pcie_2a_pipe_div_clk_src.clkr,
6975         [GCC_PCIE_2A_PIPEDIV2_CLK] = &gcc_pcie_2a_pipediv2_clk.clkr,
6976         [GCC_PCIE_2A_SLV_AXI_CLK] = &gcc_pcie_2a_slv_axi_clk.clkr,
6977         [GCC_PCIE_2A_SLV_Q2A_AXI_CLK] = &gcc_pcie_2a_slv_q2a_axi_clk.clkr,
6978         [GCC_PCIE_2B_AUX_CLK] = &gcc_pcie_2b_aux_clk.clkr,
6979         [GCC_PCIE_2B_AUX_CLK_SRC] = &gcc_pcie_2b_aux_clk_src.clkr,
6980         [GCC_PCIE_2B_CFG_AHB_CLK] = &gcc_pcie_2b_cfg_ahb_clk.clkr,
6981         [GCC_PCIE_2B_MSTR_AXI_CLK] = &gcc_pcie_2b_mstr_axi_clk.clkr,
6982         [GCC_PCIE_2B_PHY_RCHNG_CLK_SRC] = &gcc_pcie_2b_phy_rchng_clk_src.clkr,
6983         [GCC_PCIE_2B_PIPE_CLK] = &gcc_pcie_2b_pipe_clk.clkr,
6984         [GCC_PCIE_2B_PIPE_CLK_SRC] = &gcc_pcie_2b_pipe_clk_src.clkr,
6985         [GCC_PCIE_2B_PIPE_DIV_CLK_SRC] = &gcc_pcie_2b_pipe_div_clk_src.clkr,
6986         [GCC_PCIE_2B_PIPEDIV2_CLK] = &gcc_pcie_2b_pipediv2_clk.clkr,
6987         [GCC_PCIE_2B_SLV_AXI_CLK] = &gcc_pcie_2b_slv_axi_clk.clkr,
6988         [GCC_PCIE_2B_SLV_Q2A_AXI_CLK] = &gcc_pcie_2b_slv_q2a_axi_clk.clkr,
6989         [GCC_PCIE_3A3B_CLKREF_CLK] = &gcc_pcie_3a3b_clkref_clk.clkr,
6990         [GCC_PCIE_3A_AUX_CLK] = &gcc_pcie_3a_aux_clk.clkr,
6991         [GCC_PCIE_3A_AUX_CLK_SRC] = &gcc_pcie_3a_aux_clk_src.clkr,
6992         [GCC_PCIE_3A_CFG_AHB_CLK] = &gcc_pcie_3a_cfg_ahb_clk.clkr,
6993         [GCC_PCIE_3A_MSTR_AXI_CLK] = &gcc_pcie_3a_mstr_axi_clk.clkr,
6994         [GCC_PCIE_3A_PHY_RCHNG_CLK_SRC] = &gcc_pcie_3a_phy_rchng_clk_src.clkr,
6995         [GCC_PCIE_3A_PIPE_CLK] = &gcc_pcie_3a_pipe_clk.clkr,
6996         [GCC_PCIE_3A_PIPE_CLK_SRC] = &gcc_pcie_3a_pipe_clk_src.clkr,
6997         [GCC_PCIE_3A_PIPE_DIV_CLK_SRC] = &gcc_pcie_3a_pipe_div_clk_src.clkr,
6998         [GCC_PCIE_3A_PIPEDIV2_CLK] = &gcc_pcie_3a_pipediv2_clk.clkr,
6999         [GCC_PCIE_3A_SLV_AXI_CLK] = &gcc_pcie_3a_slv_axi_clk.clkr,
7000         [GCC_PCIE_3A_SLV_Q2A_AXI_CLK] = &gcc_pcie_3a_slv_q2a_axi_clk.clkr,
7001         [GCC_PCIE_3B_AUX_CLK] = &gcc_pcie_3b_aux_clk.clkr,
7002         [GCC_PCIE_3B_AUX_CLK_SRC] = &gcc_pcie_3b_aux_clk_src.clkr,
7003         [GCC_PCIE_3B_CFG_AHB_CLK] = &gcc_pcie_3b_cfg_ahb_clk.clkr,
7004         [GCC_PCIE_3B_MSTR_AXI_CLK] = &gcc_pcie_3b_mstr_axi_clk.clkr,
7005         [GCC_PCIE_3B_PHY_RCHNG_CLK_SRC] = &gcc_pcie_3b_phy_rchng_clk_src.clkr,
7006         [GCC_PCIE_3B_PIPE_CLK] = &gcc_pcie_3b_pipe_clk.clkr,
7007         [GCC_PCIE_3B_PIPE_CLK_SRC] = &gcc_pcie_3b_pipe_clk_src.clkr,
7008         [GCC_PCIE_3B_PIPE_DIV_CLK_SRC] = &gcc_pcie_3b_pipe_div_clk_src.clkr,
7009         [GCC_PCIE_3B_PIPEDIV2_CLK] = &gcc_pcie_3b_pipediv2_clk.clkr,
7010         [GCC_PCIE_3B_SLV_AXI_CLK] = &gcc_pcie_3b_slv_axi_clk.clkr,
7011         [GCC_PCIE_3B_SLV_Q2A_AXI_CLK] = &gcc_pcie_3b_slv_q2a_axi_clk.clkr,
7012         [GCC_PCIE_4_AUX_CLK] = &gcc_pcie_4_aux_clk.clkr,
7013         [GCC_PCIE_4_AUX_CLK_SRC] = &gcc_pcie_4_aux_clk_src.clkr,
7014         [GCC_PCIE_4_CFG_AHB_CLK] = &gcc_pcie_4_cfg_ahb_clk.clkr,
7015         [GCC_PCIE_4_CLKREF_CLK] = &gcc_pcie_4_clkref_clk.clkr,
7016         [GCC_PCIE_4_MSTR_AXI_CLK] = &gcc_pcie_4_mstr_axi_clk.clkr,
7017         [GCC_PCIE_4_PHY_RCHNG_CLK_SRC] = &gcc_pcie_4_phy_rchng_clk_src.clkr,
7018         [GCC_PCIE_4_PIPE_CLK] = &gcc_pcie_4_pipe_clk.clkr,
7019         [GCC_PCIE_4_PIPE_CLK_SRC] = &gcc_pcie_4_pipe_clk_src.clkr,
7020         [GCC_PCIE_4_PIPE_DIV_CLK_SRC] = &gcc_pcie_4_pipe_div_clk_src.clkr,
7021         [GCC_PCIE_4_PIPEDIV2_CLK] = &gcc_pcie_4_pipediv2_clk.clkr,
7022         [GCC_PCIE_4_SLV_AXI_CLK] = &gcc_pcie_4_slv_axi_clk.clkr,
7023         [GCC_PCIE_4_SLV_Q2A_AXI_CLK] = &gcc_pcie_4_slv_q2a_axi_clk.clkr,
7024         [GCC_PCIE_RSCC_AHB_CLK] = &gcc_pcie_rscc_ahb_clk.clkr,
7025         [GCC_PCIE_RSCC_XO_CLK] = &gcc_pcie_rscc_xo_clk.clkr,
7026         [GCC_PCIE_RSCC_XO_CLK_SRC] = &gcc_pcie_rscc_xo_clk_src.clkr,
7027         [GCC_PCIE_THROTTLE_CFG_CLK] = &gcc_pcie_throttle_cfg_clk.clkr,
7028         [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
7029         [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
7030         [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
7031         [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
7032         [GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
7033         [GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
7034         [GCC_QMIP_DISP1_AHB_CLK] = &gcc_qmip_disp1_ahb_clk.clkr,
7035         [GCC_QMIP_DISP1_ROT_AHB_CLK] = &gcc_qmip_disp1_rot_ahb_clk.clkr,
7036         [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
7037         [GCC_QMIP_DISP_ROT_AHB_CLK] = &gcc_qmip_disp_rot_ahb_clk.clkr,
7038         [GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,
7039         [GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
7040         [GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,
7041         [GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,
7042         [GCC_QUPV3_WRAP0_QSPI0_CLK] = &gcc_qupv3_wrap0_qspi0_clk.clkr,
7043         [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
7044         [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
7045         [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
7046         [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
7047         [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
7048         [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
7049         [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
7050         [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
7051         [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
7052         [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
7053         [GCC_QUPV3_WRAP0_S4_DIV_CLK_SRC] = &gcc_qupv3_wrap0_s4_div_clk_src.clkr,
7054         [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
7055         [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
7056         [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
7057         [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
7058         [GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
7059         [GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
7060         [GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
7061         [GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
7062         [GCC_QUPV3_WRAP1_QSPI0_CLK] = &gcc_qupv3_wrap1_qspi0_clk.clkr,
7063         [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
7064         [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
7065         [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
7066         [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
7067         [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
7068         [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
7069         [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
7070         [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
7071         [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
7072         [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
7073         [GCC_QUPV3_WRAP1_S4_DIV_CLK_SRC] = &gcc_qupv3_wrap1_s4_div_clk_src.clkr,
7074         [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
7075         [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
7076         [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,
7077         [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,
7078         [GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr,
7079         [GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr,
7080         [GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr,
7081         [GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr,
7082         [GCC_QUPV3_WRAP2_QSPI0_CLK] = &gcc_qupv3_wrap2_qspi0_clk.clkr,
7083         [GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,
7084         [GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,
7085         [GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,
7086         [GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,
7087         [GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,
7088         [GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,
7089         [GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,
7090         [GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,
7091         [GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,
7092         [GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,
7093         [GCC_QUPV3_WRAP2_S4_DIV_CLK_SRC] = &gcc_qupv3_wrap2_s4_div_clk_src.clkr,
7094         [GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,
7095         [GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,
7096         [GCC_QUPV3_WRAP2_S6_CLK] = &gcc_qupv3_wrap2_s6_clk.clkr,
7097         [GCC_QUPV3_WRAP2_S6_CLK_SRC] = &gcc_qupv3_wrap2_s6_clk_src.clkr,
7098         [GCC_QUPV3_WRAP2_S7_CLK] = &gcc_qupv3_wrap2_s7_clk.clkr,
7099         [GCC_QUPV3_WRAP2_S7_CLK_SRC] = &gcc_qupv3_wrap2_s7_clk_src.clkr,
7100         [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
7101         [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
7102         [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
7103         [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
7104         [GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,
7105         [GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,
7106         [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
7107         [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
7108         [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
7109         [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
7110         [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
7111         [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
7112         [GCC_SYS_NOC_USB_AXI_CLK] = &gcc_sys_noc_usb_axi_clk.clkr,
7113         [GCC_UFS_1_CARD_CLKREF_CLK] = &gcc_ufs_1_card_clkref_clk.clkr,
7114         [GCC_UFS_CARD_AHB_CLK] = &gcc_ufs_card_ahb_clk.clkr,
7115         [GCC_UFS_CARD_AXI_CLK] = &gcc_ufs_card_axi_clk.clkr,
7116         [GCC_UFS_CARD_AXI_CLK_SRC] = &gcc_ufs_card_axi_clk_src.clkr,
7117         [GCC_UFS_CARD_AXI_HW_CTL_CLK] = &gcc_ufs_card_axi_hw_ctl_clk.clkr,
7118         [GCC_UFS_CARD_CLKREF_CLK] = &gcc_ufs_card_clkref_clk.clkr,
7119         [GCC_UFS_CARD_ICE_CORE_CLK] = &gcc_ufs_card_ice_core_clk.clkr,
7120         [GCC_UFS_CARD_ICE_CORE_CLK_SRC] = &gcc_ufs_card_ice_core_clk_src.clkr,
7121         [GCC_UFS_CARD_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_card_ice_core_hw_ctl_clk.clkr,
7122         [GCC_UFS_CARD_PHY_AUX_CLK] = &gcc_ufs_card_phy_aux_clk.clkr,
7123         [GCC_UFS_CARD_PHY_AUX_CLK_SRC] = &gcc_ufs_card_phy_aux_clk_src.clkr,
7124         [GCC_UFS_CARD_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_card_phy_aux_hw_ctl_clk.clkr,
7125         [GCC_UFS_CARD_RX_SYMBOL_0_CLK] = &gcc_ufs_card_rx_symbol_0_clk.clkr,
7126         [GCC_UFS_CARD_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_card_rx_symbol_0_clk_src.clkr,
7127         [GCC_UFS_CARD_RX_SYMBOL_1_CLK] = &gcc_ufs_card_rx_symbol_1_clk.clkr,
7128         [GCC_UFS_CARD_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_card_rx_symbol_1_clk_src.clkr,
7129         [GCC_UFS_CARD_TX_SYMBOL_0_CLK] = &gcc_ufs_card_tx_symbol_0_clk.clkr,
7130         [GCC_UFS_CARD_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_card_tx_symbol_0_clk_src.clkr,
7131         [GCC_UFS_CARD_UNIPRO_CORE_CLK] = &gcc_ufs_card_unipro_core_clk.clkr,
7132         [GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_card_unipro_core_clk_src.clkr,
7133         [GCC_UFS_CARD_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_card_unipro_core_hw_ctl_clk.clkr,
7134         [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
7135         [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
7136         [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
7137         [GCC_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_ufs_phy_axi_hw_ctl_clk.clkr,
7138         [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
7139         [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
7140         [GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_phy_ice_core_hw_ctl_clk.clkr,
7141         [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
7142         [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
7143         [GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_phy_phy_aux_hw_ctl_clk.clkr,
7144         [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
7145         [GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr,
7146         [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
7147         [GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr,
7148         [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
7149         [GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr,
7150         [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
7151         [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,
7152         [GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_phy_unipro_core_hw_ctl_clk.clkr,
7153         [GCC_UFS_REF_CLKREF_CLK] = &gcc_ufs_ref_clkref_clk.clkr,
7154         [GCC_USB2_HS0_CLKREF_CLK] = &gcc_usb2_hs0_clkref_clk.clkr,
7155         [GCC_USB2_HS1_CLKREF_CLK] = &gcc_usb2_hs1_clkref_clk.clkr,
7156         [GCC_USB2_HS2_CLKREF_CLK] = &gcc_usb2_hs2_clkref_clk.clkr,
7157         [GCC_USB2_HS3_CLKREF_CLK] = &gcc_usb2_hs3_clkref_clk.clkr,
7158         [GCC_USB30_MP_MASTER_CLK] = &gcc_usb30_mp_master_clk.clkr,
7159         [GCC_USB30_MP_MASTER_CLK_SRC] = &gcc_usb30_mp_master_clk_src.clkr,
7160         [GCC_USB30_MP_MOCK_UTMI_CLK] = &gcc_usb30_mp_mock_utmi_clk.clkr,
7161         [GCC_USB30_MP_MOCK_UTMI_CLK_SRC] = &gcc_usb30_mp_mock_utmi_clk_src.clkr,
7162         [GCC_USB30_MP_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_mp_mock_utmi_postdiv_clk_src.clkr,
7163         [GCC_USB30_MP_SLEEP_CLK] = &gcc_usb30_mp_sleep_clk.clkr,
7164         [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
7165         [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
7166         [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
7167         [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,
7168         [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,
7169         [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
7170         [GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,
7171         [GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr,
7172         [GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,
7173         [GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] = &gcc_usb30_sec_mock_utmi_clk_src.clkr,
7174         [GCC_USB30_SEC_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_sec_mock_utmi_postdiv_clk_src.clkr,
7175         [GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,
7176         [GCC_USB34_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb34_prim_phy_pipe_clk_src.clkr,
7177         [GCC_USB34_SEC_PHY_PIPE_CLK_SRC] = &gcc_usb34_sec_phy_pipe_clk_src.clkr,
7178         [GCC_USB3_MP0_CLKREF_CLK] = &gcc_usb3_mp0_clkref_clk.clkr,
7179         [GCC_USB3_MP1_CLKREF_CLK] = &gcc_usb3_mp1_clkref_clk.clkr,
7180         [GCC_USB3_MP_PHY_AUX_CLK] = &gcc_usb3_mp_phy_aux_clk.clkr,
7181         [GCC_USB3_MP_PHY_AUX_CLK_SRC] = &gcc_usb3_mp_phy_aux_clk_src.clkr,
7182         [GCC_USB3_MP_PHY_COM_AUX_CLK] = &gcc_usb3_mp_phy_com_aux_clk.clkr,
7183         [GCC_USB3_MP_PHY_PIPE_0_CLK] = &gcc_usb3_mp_phy_pipe_0_clk.clkr,
7184         [GCC_USB3_MP_PHY_PIPE_0_CLK_SRC] = &gcc_usb3_mp_phy_pipe_0_clk_src.clkr,
7185         [GCC_USB3_MP_PHY_PIPE_1_CLK] = &gcc_usb3_mp_phy_pipe_1_clk.clkr,
7186         [GCC_USB3_MP_PHY_PIPE_1_CLK_SRC] = &gcc_usb3_mp_phy_pipe_1_clk_src.clkr,
7187         [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
7188         [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
7189         [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
7190         [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
7191         [GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr,
7192         [GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr,
7193         [GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr,
7194         [GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr,
7195         [GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr,
7196         [GCC_USB3_SEC_PHY_PIPE_CLK_SRC] = &gcc_usb3_sec_phy_pipe_clk_src.clkr,
7197         [GCC_USB4_1_CFG_AHB_CLK] = &gcc_usb4_1_cfg_ahb_clk.clkr,
7198         [GCC_USB4_1_DP_CLK] = &gcc_usb4_1_dp_clk.clkr,
7199         [GCC_USB4_1_MASTER_CLK] = &gcc_usb4_1_master_clk.clkr,
7200         [GCC_USB4_1_MASTER_CLK_SRC] = &gcc_usb4_1_master_clk_src.clkr,
7201         [GCC_USB4_1_PHY_DP_CLK_SRC] = &gcc_usb4_1_phy_dp_clk_src.clkr,
7202         [GCC_USB4_1_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_1_phy_p2rr2p_pipe_clk.clkr,
7203         [GCC_USB4_1_PHY_P2RR2P_PIPE_CLK_SRC] = &gcc_usb4_1_phy_p2rr2p_pipe_clk_src.clkr,
7204         [GCC_USB4_1_PHY_PCIE_PIPE_CLK] = &gcc_usb4_1_phy_pcie_pipe_clk.clkr,
7205         [GCC_USB4_1_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_1_phy_pcie_pipe_clk_src.clkr,
7206         [GCC_USB4_1_PHY_PCIE_PIPE_MUX_CLK_SRC] = &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr,
7207         [GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC] = &gcc_usb4_1_phy_pcie_pipegmux_clk_src.clkr,
7208         [GCC_USB4_1_PHY_RX0_CLK] = &gcc_usb4_1_phy_rx0_clk.clkr,
7209         [GCC_USB4_1_PHY_RX0_CLK_SRC] = &gcc_usb4_1_phy_rx0_clk_src.clkr,
7210         [GCC_USB4_1_PHY_RX1_CLK] = &gcc_usb4_1_phy_rx1_clk.clkr,
7211         [GCC_USB4_1_PHY_RX1_CLK_SRC] = &gcc_usb4_1_phy_rx1_clk_src.clkr,
7212         [GCC_USB4_1_PHY_SYS_CLK_SRC] = &gcc_usb4_1_phy_sys_clk_src.clkr,
7213         [GCC_USB4_1_PHY_USB_PIPE_CLK] = &gcc_usb4_1_phy_usb_pipe_clk.clkr,
7214         [GCC_USB4_1_SB_IF_CLK] = &gcc_usb4_1_sb_if_clk.clkr,
7215         [GCC_USB4_1_SB_IF_CLK_SRC] = &gcc_usb4_1_sb_if_clk_src.clkr,
7216         [GCC_USB4_1_SYS_CLK] = &gcc_usb4_1_sys_clk.clkr,
7217         [GCC_USB4_1_TMU_CLK] = &gcc_usb4_1_tmu_clk.clkr,
7218         [GCC_USB4_1_TMU_CLK_SRC] = &gcc_usb4_1_tmu_clk_src.clkr,
7219         [GCC_USB4_CFG_AHB_CLK] = &gcc_usb4_cfg_ahb_clk.clkr,
7220         [GCC_USB4_CLKREF_CLK] = &gcc_usb4_clkref_clk.clkr,
7221         [GCC_USB4_DP_CLK] = &gcc_usb4_dp_clk.clkr,
7222         [GCC_USB4_EUD_CLKREF_CLK] = &gcc_usb4_eud_clkref_clk.clkr,
7223         [GCC_USB4_MASTER_CLK] = &gcc_usb4_master_clk.clkr,
7224         [GCC_USB4_MASTER_CLK_SRC] = &gcc_usb4_master_clk_src.clkr,
7225         [GCC_USB4_PHY_DP_CLK_SRC] = &gcc_usb4_phy_dp_clk_src.clkr,
7226         [GCC_USB4_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_phy_p2rr2p_pipe_clk.clkr,
7227         [GCC_USB4_PHY_P2RR2P_PIPE_CLK_SRC] = &gcc_usb4_phy_p2rr2p_pipe_clk_src.clkr,
7228         [GCC_USB4_PHY_PCIE_PIPE_CLK] = &gcc_usb4_phy_pcie_pipe_clk.clkr,
7229         [GCC_USB4_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_phy_pcie_pipe_clk_src.clkr,
7230         [GCC_USB4_PHY_PCIE_PIPE_MUX_CLK_SRC] = &gcc_usb4_phy_pcie_pipe_mux_clk_src.clkr,
7231         [GCC_USB4_PHY_PCIE_PIPEGMUX_CLK_SRC] = &gcc_usb4_phy_pcie_pipegmux_clk_src.clkr,
7232         [GCC_USB4_PHY_RX0_CLK] = &gcc_usb4_phy_rx0_clk.clkr,
7233         [GCC_USB4_PHY_RX0_CLK_SRC] = &gcc_usb4_phy_rx0_clk_src.clkr,
7234         [GCC_USB4_PHY_RX1_CLK] = &gcc_usb4_phy_rx1_clk.clkr,
7235         [GCC_USB4_PHY_RX1_CLK_SRC] = &gcc_usb4_phy_rx1_clk_src.clkr,
7236         [GCC_USB4_PHY_SYS_CLK_SRC] = &gcc_usb4_phy_sys_clk_src.clkr,
7237         [GCC_USB4_PHY_USB_PIPE_CLK] = &gcc_usb4_phy_usb_pipe_clk.clkr,
7238         [GCC_USB4_SB_IF_CLK] = &gcc_usb4_sb_if_clk.clkr,
7239         [GCC_USB4_SB_IF_CLK_SRC] = &gcc_usb4_sb_if_clk_src.clkr,
7240         [GCC_USB4_SYS_CLK] = &gcc_usb4_sys_clk.clkr,
7241         [GCC_USB4_TMU_CLK] = &gcc_usb4_tmu_clk.clkr,
7242         [GCC_USB4_TMU_CLK_SRC] = &gcc_usb4_tmu_clk_src.clkr,
7243         [GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
7244         [GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,
7245         [GCC_VIDEO_CVP_THROTTLE_CLK] = &gcc_video_cvp_throttle_clk.clkr,
7246         [GCC_VIDEO_VCODEC_THROTTLE_CLK] = &gcc_video_vcodec_throttle_clk.clkr,
7247 };
7248
7249 static const struct qcom_reset_map gcc_sc8280xp_resets[] = {
7250         [GCC_EMAC0_BCR] = { 0xaa000 },
7251         [GCC_EMAC1_BCR] = { 0xba000 },
7252         [GCC_PCIE_0_LINK_DOWN_BCR] = { 0x6c014 },
7253         [GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x6c020 },
7254         [GCC_PCIE_0_PHY_BCR] = { 0x6c01c },
7255         [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x6c028 },
7256         [GCC_PCIE_0_TUNNEL_BCR] = { 0xa4000 },
7257         [GCC_PCIE_1_LINK_DOWN_BCR] = { 0x8e014 },
7258         [GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x8e020 },
7259         [GCC_PCIE_1_PHY_BCR] = { 0x8e01c },
7260         [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x8e000 },
7261         [GCC_PCIE_1_TUNNEL_BCR] = { 0x8d000 },
7262         [GCC_PCIE_2A_BCR] = { 0x9d000 },
7263         [GCC_PCIE_2A_LINK_DOWN_BCR] = { 0x9d13c },
7264         [GCC_PCIE_2A_NOCSR_COM_PHY_BCR] = { 0x9d148 },
7265         [GCC_PCIE_2A_PHY_BCR] = { 0x9d144 },
7266         [GCC_PCIE_2A_PHY_NOCSR_COM_PHY_BCR] = { 0x9d14c },
7267         [GCC_PCIE_2B_BCR] = { 0x9e000 },
7268         [GCC_PCIE_2B_LINK_DOWN_BCR] = { 0x9e084 },
7269         [GCC_PCIE_2B_NOCSR_COM_PHY_BCR] = { 0x9e090 },
7270         [GCC_PCIE_2B_PHY_BCR] = { 0x9e08c },
7271         [GCC_PCIE_2B_PHY_NOCSR_COM_PHY_BCR] = { 0x9e094 },
7272         [GCC_PCIE_3A_BCR] = { 0xa0000 },
7273         [GCC_PCIE_3A_LINK_DOWN_BCR] = { 0xa00f0 },
7274         [GCC_PCIE_3A_NOCSR_COM_PHY_BCR] = { 0xa00fc },
7275         [GCC_PCIE_3A_PHY_BCR] = { 0xa00e0 },
7276         [GCC_PCIE_3A_PHY_NOCSR_COM_PHY_BCR] = { 0xa00e4 },
7277         [GCC_PCIE_3B_BCR] = { 0xa2000 },
7278         [GCC_PCIE_3B_LINK_DOWN_BCR] = { 0xa20e0 },
7279         [GCC_PCIE_3B_NOCSR_COM_PHY_BCR] = { 0xa20ec },
7280         [GCC_PCIE_3B_PHY_BCR] = { 0xa20e8 },
7281         [GCC_PCIE_3B_PHY_NOCSR_COM_PHY_BCR] = { 0xa20f0 },
7282         [GCC_PCIE_4_BCR] = { 0x6b000 },
7283         [GCC_PCIE_4_LINK_DOWN_BCR] = { 0x6b300 },
7284         [GCC_PCIE_4_NOCSR_COM_PHY_BCR] = { 0x6b30c },
7285         [GCC_PCIE_4_PHY_BCR] = { 0x6b308 },
7286         [GCC_PCIE_4_PHY_NOCSR_COM_PHY_BCR] = { 0x6b310 },
7287         [GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x6f00c },
7288         [GCC_PCIE_PHY_COM_BCR] = { 0x6f010 },
7289         [GCC_PCIE_RSCC_BCR] = { 0xae000 },
7290         [GCC_QUSB2PHY_HS0_MP_BCR] = { 0x12008 },
7291         [GCC_QUSB2PHY_HS1_MP_BCR] = { 0x1200c },
7292         [GCC_QUSB2PHY_HS2_MP_BCR] = { 0x12010 },
7293         [GCC_QUSB2PHY_HS3_MP_BCR] = { 0x12014 },
7294         [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
7295         [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
7296         [GCC_SDCC2_BCR] = { 0x14000 },
7297         [GCC_SDCC4_BCR] = { 0x16000 },
7298         [GCC_UFS_CARD_BCR] = { 0x75000 },
7299         [GCC_UFS_PHY_BCR] = { 0x77000 },
7300         [GCC_USB2_PHY_PRIM_BCR] = { 0x50028 },
7301         [GCC_USB2_PHY_SEC_BCR] = { 0x5002c },
7302         [GCC_USB30_MP_BCR] = { 0xab000 },
7303         [GCC_USB30_PRIM_BCR] = { 0xf000 },
7304         [GCC_USB30_SEC_BCR] = { 0x10000 },
7305         [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 },
7306         [GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 },
7307         [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 },
7308         [GCC_USB3_PHY_SEC_BCR] = { 0x5000c },
7309         [GCC_USB3_UNIPHY_MP0_BCR] = { 0x50018 },
7310         [GCC_USB3_UNIPHY_MP1_BCR] = { 0x5001c },
7311         [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 },
7312         [GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 },
7313         [GCC_USB3UNIPHY_PHY_MP0_BCR] = { 0x50020 },
7314         [GCC_USB3UNIPHY_PHY_MP1_BCR] = { 0x50024 },
7315         [GCC_USB4_1_BCR] = { 0xb8000 },
7316         [GCC_USB4_1_DP_PHY_PRIM_BCR] = { 0xb9020 },
7317         [GCC_USB4_1_DPPHY_AUX_BCR] = { 0xb9024 },
7318         [GCC_USB4_1_PHY_PRIM_BCR] = { 0xb9018 },
7319         [GCC_USB4_BCR] = { 0x2a000 },
7320         [GCC_USB4_DP_PHY_PRIM_BCR] = { 0x4a008 },
7321         [GCC_USB4_DPPHY_AUX_BCR] = { 0x4a00c },
7322         [GCC_USB4_PHY_PRIM_BCR] = { 0x4a000 },
7323         [GCC_USB4PHY_1_PHY_PRIM_BCR] = { 0xb901c },
7324         [GCC_USB4PHY_PHY_PRIM_BCR] = { 0x4a004 },
7325         [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 },
7326         [GCC_VIDEO_BCR] = { 0x28000 },
7327         [GCC_VIDEO_AXI0_CLK_ARES] = { 0x28010, 2 },
7328         [GCC_VIDEO_AXI1_CLK_ARES] = { 0x28018, 2 },
7329 };
7330
7331 static struct gdsc *gcc_sc8280xp_gdscs[] = {
7332         [PCIE_0_TUNNEL_GDSC] = &pcie_0_tunnel_gdsc,
7333         [PCIE_1_TUNNEL_GDSC] = &pcie_1_tunnel_gdsc,
7334         [PCIE_2A_GDSC] = &pcie_2a_gdsc,
7335         [PCIE_2B_GDSC] = &pcie_2b_gdsc,
7336         [PCIE_3A_GDSC] = &pcie_3a_gdsc,
7337         [PCIE_3B_GDSC] = &pcie_3b_gdsc,
7338         [PCIE_4_GDSC] = &pcie_4_gdsc,
7339         [UFS_CARD_GDSC] = &ufs_card_gdsc,
7340         [UFS_PHY_GDSC] = &ufs_phy_gdsc,
7341         [USB30_MP_GDSC] = &usb30_mp_gdsc,
7342         [USB30_PRIM_GDSC] = &usb30_prim_gdsc,
7343         [USB30_SEC_GDSC] = &usb30_sec_gdsc,
7344 };
7345
7346 static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
7347         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
7348         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
7349         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
7350         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
7351         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
7352         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
7353         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src),
7354         DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src),
7355         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
7356         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
7357         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
7358         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
7359         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
7360         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
7361         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),
7362         DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src),
7363         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src),
7364         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src),
7365         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src),
7366         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src),
7367         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src),
7368         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src),
7369         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s6_clk_src),
7370         DEFINE_RCG_DFS(gcc_qupv3_wrap2_s7_clk_src),
7371 };
7372
7373 static const struct regmap_config gcc_sc8280xp_regmap_config = {
7374         .reg_bits = 32,
7375         .reg_stride = 4,
7376         .val_bits = 32,
7377         .max_register = 0xc3014,
7378         .fast_io = true,
7379 };
7380
7381 static const struct qcom_cc_desc gcc_sc8280xp_desc = {
7382         .config = &gcc_sc8280xp_regmap_config,
7383         .clks = gcc_sc8280xp_clocks,
7384         .num_clks = ARRAY_SIZE(gcc_sc8280xp_clocks),
7385         .resets = gcc_sc8280xp_resets,
7386         .num_resets = ARRAY_SIZE(gcc_sc8280xp_resets),
7387         .gdscs = gcc_sc8280xp_gdscs,
7388         .num_gdscs = ARRAY_SIZE(gcc_sc8280xp_gdscs),
7389 };
7390
7391 static int gcc_sc8280xp_probe(struct platform_device *pdev)
7392 {
7393         struct regmap *regmap;
7394         int ret;
7395
7396         regmap = qcom_cc_map(pdev, &gcc_sc8280xp_desc);
7397         if (IS_ERR(regmap))
7398                 return PTR_ERR(regmap);
7399
7400         /*
7401          * Keep the clocks always-ON
7402          * GCC_CAMERA_AHB_CLK, GCC_CAMERA_XO_CLK, GCC_DISP_AHB_CLK,
7403          * GCC_DISP_XO_CLK, GCC_GPU_CFG_AHB_CLK, GCC_VIDEO_AHB_CLK,
7404          * GCC_VIDEO_XO_CLK, GCC_DISP1_AHB_CLK, GCC_DISP1_XO_CLK
7405          */
7406         regmap_update_bits(regmap, 0x26004, BIT(0), BIT(0));
7407         regmap_update_bits(regmap, 0x26020, BIT(0), BIT(0));
7408         regmap_update_bits(regmap, 0x27004, BIT(0), BIT(0));
7409         regmap_update_bits(regmap, 0x27028, BIT(0), BIT(0));
7410         regmap_update_bits(regmap, 0x71004, BIT(0), BIT(0));
7411         regmap_update_bits(regmap, 0x28004, BIT(0), BIT(0));
7412         regmap_update_bits(regmap, 0x28028, BIT(0), BIT(0));
7413         regmap_update_bits(regmap, 0xbb004, BIT(0), BIT(0));
7414         regmap_update_bits(regmap, 0xbb028, BIT(0), BIT(0));
7415
7416         ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks, ARRAY_SIZE(gcc_dfs_clocks));
7417         if (ret)
7418                 return ret;
7419
7420         return qcom_cc_really_probe(pdev, &gcc_sc8280xp_desc, regmap);
7421 }
7422
7423 static const struct of_device_id gcc_sc8280xp_match_table[] = {
7424         { .compatible = "qcom,gcc-sc8280xp" },
7425         { }
7426 };
7427 MODULE_DEVICE_TABLE(of, gcc_sc8280xp_match_table);
7428
7429 static struct platform_driver gcc_sc8280xp_driver = {
7430         .probe = gcc_sc8280xp_probe,
7431         .driver = {
7432                 .name = "gcc-sc8280xp",
7433                 .of_match_table = gcc_sc8280xp_match_table,
7434         },
7435 };
7436
7437 static int __init gcc_sc8280xp_init(void)
7438 {
7439         return platform_driver_register(&gcc_sc8280xp_driver);
7440 }
7441 subsys_initcall(gcc_sc8280xp_init);
7442
7443 static void __exit gcc_sc8280xp_exit(void)
7444 {
7445         platform_driver_unregister(&gcc_sc8280xp_driver);
7446 }
7447 module_exit(gcc_sc8280xp_exit);
7448
7449 MODULE_DESCRIPTION("Qualcomm SC8280XP GCC driver");
7450 MODULE_LICENSE("GPL");