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