GNU Linux-libre 6.7.9-gnu
[releases.git] / drivers / clk / qcom / gcc-ipq9574.c
1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 /*
3  * Copyright (c) 2023 The Linux Foundation. All rights reserved.
4  */
5
6 #include <linux/clk-provider.h>
7 #include <linux/kernel.h>
8 #include <linux/module.h>
9 #include <linux/of.h>
10 #include <linux/platform_device.h>
11 #include <linux/regmap.h>
12
13 #include <dt-bindings/clock/qcom,ipq9574-gcc.h>
14 #include <dt-bindings/reset/qcom,ipq9574-gcc.h>
15
16 #include "clk-alpha-pll.h"
17 #include "clk-branch.h"
18 #include "clk-rcg.h"
19 #include "clk-regmap.h"
20 #include "clk-regmap-divider.h"
21 #include "clk-regmap-mux.h"
22 #include "clk-regmap-phy-mux.h"
23 #include "common.h"
24 #include "reset.h"
25
26 /* Need to match the order of clocks in DT binding */
27 enum {
28         DT_XO,
29         DT_SLEEP_CLK,
30         DT_BIAS_PLL_UBI_NC_CLK,
31         DT_PCIE30_PHY0_PIPE_CLK,
32         DT_PCIE30_PHY1_PIPE_CLK,
33         DT_PCIE30_PHY2_PIPE_CLK,
34         DT_PCIE30_PHY3_PIPE_CLK,
35         DT_USB3PHY_0_CC_PIPE_CLK,
36 };
37
38 enum {
39         P_XO,
40         P_PCIE30_PHY0_PIPE,
41         P_PCIE30_PHY1_PIPE,
42         P_PCIE30_PHY2_PIPE,
43         P_PCIE30_PHY3_PIPE,
44         P_USB3PHY_0_PIPE,
45         P_GPLL0,
46         P_GPLL0_DIV2,
47         P_GPLL0_OUT_AUX,
48         P_GPLL2,
49         P_GPLL4,
50         P_PI_SLEEP,
51         P_BIAS_PLL_UBI_NC_CLK,
52 };
53
54 static const struct parent_map gcc_xo_map[] = {
55         { P_XO, 0 },
56 };
57
58 static const struct clk_parent_data gcc_xo_data[] = {
59         { .index = DT_XO },
60 };
61
62 static const struct clk_parent_data gcc_sleep_clk_data[] = {
63         { .index = DT_SLEEP_CLK },
64 };
65
66 static struct clk_alpha_pll gpll0_main = {
67         .offset = 0x20000,
68         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
69         .clkr = {
70                 .enable_reg = 0x0b000,
71                 .enable_mask = BIT(0),
72                 .hw.init = &(const struct clk_init_data) {
73                         .name = "gpll0_main",
74                         .parent_data = gcc_xo_data,
75                         .num_parents = ARRAY_SIZE(gcc_xo_data),
76                         .ops = &clk_alpha_pll_ops,
77                 },
78         },
79 };
80
81 static struct clk_fixed_factor gpll0_out_main_div2 = {
82         .mult = 1,
83         .div = 2,
84         .hw.init = &(const struct clk_init_data) {
85                 .name = "gpll0_out_main_div2",
86                 .parent_hws = (const struct clk_hw *[]) {
87                         &gpll0_main.clkr.hw
88                 },
89                 .num_parents = 1,
90                 .ops = &clk_fixed_factor_ops,
91         },
92 };
93
94 static struct clk_alpha_pll_postdiv gpll0 = {
95         .offset = 0x20000,
96         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
97         .width = 4,
98         .clkr.hw.init = &(const struct clk_init_data) {
99                 .name = "gpll0",
100                 .parent_hws = (const struct clk_hw *[]) {
101                         &gpll0_main.clkr.hw
102                 },
103                 .num_parents = 1,
104                 .ops = &clk_alpha_pll_postdiv_ro_ops,
105         },
106 };
107
108 static struct clk_alpha_pll gpll4_main = {
109         .offset = 0x22000,
110         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
111         .clkr = {
112                 .enable_reg = 0x0b000,
113                 .enable_mask = BIT(2),
114                 .hw.init = &(const struct clk_init_data) {
115                         .name = "gpll4_main",
116                         .parent_data = gcc_xo_data,
117                         .num_parents = ARRAY_SIZE(gcc_xo_data),
118                         .ops = &clk_alpha_pll_ops,
119                 },
120         },
121 };
122
123 static struct clk_alpha_pll_postdiv gpll4 = {
124         .offset = 0x22000,
125         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
126         .width = 4,
127         .clkr.hw.init = &(const struct clk_init_data) {
128                 .name = "gpll4",
129                 .parent_hws = (const struct clk_hw *[]) {
130                         &gpll4_main.clkr.hw
131                 },
132                 .num_parents = 1,
133                 .ops = &clk_alpha_pll_postdiv_ro_ops,
134         },
135 };
136
137 static struct clk_alpha_pll gpll2_main = {
138         .offset = 0x21000,
139         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
140         .clkr = {
141                 .enable_reg = 0x0b000,
142                 .enable_mask = BIT(1),
143                 .hw.init = &(const struct clk_init_data) {
144                         .name = "gpll2_main",
145                         .parent_data = gcc_xo_data,
146                         .num_parents = ARRAY_SIZE(gcc_xo_data),
147                         .ops = &clk_alpha_pll_ops,
148                 },
149         },
150 };
151
152 static struct clk_alpha_pll_postdiv gpll2 = {
153         .offset = 0x21000,
154         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
155         .width = 4,
156         .clkr.hw.init = &(const struct clk_init_data) {
157                 .name = "gpll2",
158                 .parent_hws = (const struct clk_hw *[]) {
159                         &gpll2_main.clkr.hw
160                 },
161                 .num_parents = 1,
162                 .ops = &clk_alpha_pll_postdiv_ro_ops,
163         },
164 };
165
166 static struct clk_branch gcc_sleep_clk_src = {
167         .halt_reg = 0x3400c,
168         .clkr = {
169                 .enable_reg = 0x3400c,
170                 .enable_mask = BIT(1),
171                 .hw.init = &(const struct clk_init_data) {
172                         .name = "gcc_sleep_clk_src",
173                         .parent_data = gcc_sleep_clk_data,
174                         .num_parents = ARRAY_SIZE(gcc_sleep_clk_data),
175                         .flags = CLK_IS_CRITICAL,
176                         .ops = &clk_branch2_ops,
177                 },
178         },
179 };
180
181 static const struct clk_parent_data gcc_xo_gpll0_gpll0_out_main_div2[] = {
182         { .index = DT_XO },
183         { .hw = &gpll0.clkr.hw },
184         { .hw = &gpll0_out_main_div2.hw },
185 };
186
187 static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = {
188         { P_XO, 0 },
189         { P_GPLL0, 1 },
190         { P_GPLL0_DIV2, 4 },
191 };
192
193 static const struct clk_parent_data gcc_xo_gpll0[] = {
194         { .index = DT_XO },
195         { .hw = &gpll0.clkr.hw },
196 };
197
198 static const struct parent_map gcc_xo_gpll0_map[] = {
199         { P_XO, 0 },
200         { P_GPLL0, 1 },
201 };
202
203 static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
204         { .index = DT_XO },
205         { .hw = &gpll0.clkr.hw },
206         { .hw = &gpll4.clkr.hw },
207 };
208
209 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
210         { P_XO, 0 },
211         { P_GPLL0, 1 },
212         { P_GPLL4, 2 },
213 };
214
215 static const struct clk_parent_data gcc_xo_gpll0_gpll0_div2_gpll0[] = {
216         { .index = DT_XO },
217         { .hw = &gpll0.clkr.hw },
218         { .hw = &gpll0_out_main_div2.hw },
219         { .hw = &gpll0.clkr.hw },
220 };
221
222 static const struct parent_map gcc_xo_gpll0_gpll0_div2_gpll0_map[] = {
223         { P_XO, 0 },
224         { P_GPLL0, 1 },
225         { P_GPLL0_DIV2, 4 },
226         { P_GPLL0, 5 },
227 };
228
229 static const struct clk_parent_data gcc_xo_gpll0_gpll0_sleep_clk[] = {
230         { .index = DT_XO },
231         { .hw = &gpll0.clkr.hw },
232         { .hw = &gpll0_out_main_div2.hw },
233         { .index = DT_SLEEP_CLK },
234 };
235
236 static const struct parent_map gcc_xo_gpll0_gpll0_sleep_clk_map[] = {
237         { P_XO, 0 },
238         { P_GPLL0, 1 },
239         { P_GPLL0_DIV2, 4 },
240         { P_PI_SLEEP, 6 },
241 };
242
243 static const struct clk_parent_data gcc_xo_gpll0_core_pi_sleep_clk[] = {
244         { .index = DT_XO },
245         { .hw = &gpll0.clkr.hw },
246         { .index = DT_SLEEP_CLK },
247 };
248
249 static const struct parent_map gcc_xo_gpll0_core_pi_sleep_clk_map[] = {
250         { P_XO, 0 },
251         { P_GPLL0, 2 },
252         { P_PI_SLEEP, 6 },
253 };
254
255 static const struct clk_parent_data gcc_xo_gpll0_gpll4_bias_pll_ubi_nc_clk[] = {
256         { .index = DT_XO },
257         { .hw = &gpll0.clkr.hw },
258         { .hw = &gpll4.clkr.hw },
259         { .index = DT_BIAS_PLL_UBI_NC_CLK },
260 };
261
262 static const struct parent_map gcc_xo_gpll0_gpll4_bias_pll_ubi_nc_clk_map[] = {
263         { P_XO, 0 },
264         { P_GPLL0, 1 },
265         { P_GPLL4, 2 },
266         { P_BIAS_PLL_UBI_NC_CLK, 3 },
267 };
268
269 static const struct clk_parent_data
270                         gcc_xo_gpll0_gpll0_aux_core_pi_sleep_clk[] = {
271         { .index = DT_XO },
272         { .hw = &gpll0.clkr.hw },
273         { .hw = &gpll0.clkr.hw },
274         { .index = DT_SLEEP_CLK },
275 };
276
277 static const struct parent_map
278                         gcc_xo_gpll0_gpll0_aux_core_pi_sleep_clk_map[] = {
279         { P_XO, 0 },
280         { P_GPLL0, 1 },
281         { P_GPLL0_OUT_AUX, 2 },
282         { P_PI_SLEEP, 6 },
283 };
284
285 static const struct clk_parent_data gcc_xo_gpll0_out_main_div2_gpll0[] = {
286         { .index = DT_XO },
287         { .hw = &gpll0.clkr.hw },
288         { .hw = &gpll0_out_main_div2.hw },
289 };
290
291 static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = {
292         { P_XO, 0 },
293         { P_GPLL0, 1 },
294         { P_GPLL0_DIV2, 4 },
295 };
296
297 static const struct clk_parent_data
298                         gcc_xo_gpll4_gpll0_gpll0_out_main_div2[] = {
299         { .index = DT_XO },
300         { .hw = &gpll4.clkr.hw },
301         { .hw = &gpll0.clkr.hw },
302         { .hw = &gpll0_out_main_div2.hw },
303 };
304
305 static const struct parent_map gcc_xo_gpll4_gpll0_gpll0_out_main_div2_map[] = {
306         { P_XO, 0 },
307         { P_GPLL4, 1 },
308         { P_GPLL0, 3 },
309         { P_GPLL0_DIV2, 4 },
310 };
311
312 static const struct clk_parent_data gcc_usb3phy_0_cc_pipe_clk_xo[] = {
313         { .index = DT_USB3PHY_0_CC_PIPE_CLK },
314         { .index = DT_XO },
315 };
316
317 static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = {
318         { P_USB3PHY_0_PIPE, 0 },
319         { P_XO, 2 },
320 };
321
322 static const struct clk_parent_data
323                         gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = {
324         { .index = DT_XO },
325         { .hw = &gpll0.clkr.hw },
326         { .hw = &gpll2.clkr.hw },
327         { .hw = &gpll0_out_main_div2.hw },
328 };
329
330 static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = {
331         { P_XO, 0 },
332         { P_GPLL0, 1 },
333         { P_GPLL2, 2 },
334         { P_GPLL0_DIV2, 4 },
335 };
336
337 static const struct clk_parent_data gcc_xo_gpll0_gpll4_gpll0_div2[] = {
338         { .index = DT_XO},
339         { .hw = &gpll0.clkr.hw },
340         { .hw = &gpll4.clkr.hw },
341         { .hw = &gpll0_out_main_div2.hw },
342 };
343
344 static const struct parent_map gcc_xo_gpll0_gpll4_gpll0_div2_map[] = {
345         { P_XO, 0 },
346         { P_GPLL0, 1 },
347         { P_GPLL4, 2 },
348         { P_GPLL0_DIV2, 4 },
349 };
350
351 static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll0_div2[] = {
352         { .index = DT_XO },
353         { .hw = &gpll4.clkr.hw },
354         { .hw = &gpll0.clkr.hw },
355         { .hw = &gpll0_out_main_div2.hw },
356 };
357
358 static const struct parent_map gcc_xo_gpll4_gpll0_gpll0_div2_map[] = {
359         { P_XO, 0 },
360         { P_GPLL4, 1 },
361         { P_GPLL0, 2 },
362         { P_GPLL0_DIV2, 4 },
363 };
364
365 static const struct clk_parent_data gcc_xo_gpll0_gpll2[] = {
366         { .index = DT_XO },
367         { .hw = &gpll0.clkr.hw },
368         { .hw = &gpll2.clkr.hw },
369 };
370
371 static const struct parent_map gcc_xo_gpll0_gpll2_map[] = {
372         { P_XO, 0 },
373         { P_GPLL0, 1 },
374         { P_GPLL2, 2 },
375 };
376
377 static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll4_pi_sleep[] = {
378         { .index = DT_XO },
379         { .hw = &gpll0.clkr.hw },
380         { .hw = &gpll2.clkr.hw },
381         { .hw = &gpll4.clkr.hw },
382         { .index = DT_SLEEP_CLK },
383 };
384
385 static const struct parent_map gcc_xo_gpll0_gpll2_gpll4_pi_sleep_map[] = {
386         { P_XO, 0 },
387         { P_GPLL0, 1 },
388         { P_GPLL2, 2 },
389         { P_GPLL4, 3 },
390         { P_PI_SLEEP, 6 },
391 };
392
393 static const struct clk_parent_data gcc_xo_gpll0_gpll0_aux_gpll2[] = {
394         { .index = DT_XO },
395         { .hw = &gpll0.clkr.hw },
396         { .hw = &gpll0.clkr.hw },
397         { .hw = &gpll2.clkr.hw },
398 };
399
400 static const struct parent_map gcc_xo_gpll0_gpll0_aux_gpll2_map[] = {
401         { P_XO, 0 },
402         { P_GPLL0, 1 },
403         { P_GPLL0_OUT_AUX, 2 },
404         { P_GPLL2, 3 },
405 };
406
407 static const struct freq_tbl ftbl_apss_ahb_clk_src[] = {
408         F(24000000, P_XO, 1, 0, 0),
409         F(50000000, P_GPLL0, 16, 0, 0),
410         F(100000000, P_GPLL0, 8, 0, 0),
411         { }
412 };
413
414 static struct clk_rcg2 apss_ahb_clk_src = {
415         .cmd_rcgr = 0x2400c,
416         .freq_tbl = ftbl_apss_ahb_clk_src,
417         .hid_width = 5,
418         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
419         .clkr.hw.init = &(const struct clk_init_data) {
420                 .name = "apss_ahb_clk_src",
421                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
422                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
423                 .ops = &clk_rcg2_ops,
424         },
425 };
426
427 static const struct freq_tbl ftbl_apss_axi_clk_src[] = {
428         F(533000000, P_GPLL0, 1.5, 0, 0),
429         { }
430 };
431
432 static struct clk_rcg2 apss_axi_clk_src = {
433         .cmd_rcgr = 0x24004,
434         .freq_tbl = ftbl_apss_axi_clk_src,
435         .hid_width = 5,
436         .parent_map = gcc_xo_gpll0_gpll0_div2_gpll0_map,
437         .clkr.hw.init = &(const struct clk_init_data) {
438                 .name = "apss_axi_clk_src",
439                 .parent_data = gcc_xo_gpll0_gpll0_div2_gpll0,
440                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_div2_gpll0),
441                 .ops = &clk_rcg2_ops,
442         },
443 };
444
445 static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src[] = {
446         F(9600000, P_XO, 2.5, 0, 0),
447         F(24000000, P_XO, 1, 0, 0),
448         F(50000000, P_GPLL0, 16, 0, 0),
449         { }
450 };
451
452 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
453         .cmd_rcgr = 0x02018,
454         .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
455         .hid_width = 5,
456         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
457         .clkr.hw.init = &(const struct clk_init_data) {
458                 .name = "blsp1_qup1_i2c_apps_clk_src",
459                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
460                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
461                 .ops = &clk_rcg2_ops,
462         },
463 };
464
465 static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src[] = {
466         F(960000, P_XO, 10, 2, 5),
467         F(4800000, P_XO, 5, 0, 0),
468         F(9600000, P_XO, 2, 4, 5),
469         F(16000000, P_GPLL0, 10, 1, 5),
470         F(24000000, P_XO, 1, 0, 0),
471         F(25000000, P_GPLL0, 16, 1, 2),
472         F(50000000, P_GPLL0, 16, 0, 0),
473         { }
474 };
475
476 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
477         .cmd_rcgr = 0x02004,
478         .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
479         .mnd_width = 8,
480         .hid_width = 5,
481         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
482         .clkr.hw.init = &(const struct clk_init_data) {
483                 .name = "blsp1_qup1_spi_apps_clk_src",
484                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
485                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
486                 .ops = &clk_rcg2_ops,
487         },
488 };
489
490 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
491         .cmd_rcgr = 0x03018,
492         .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
493         .hid_width = 5,
494         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
495         .clkr.hw.init = &(const struct clk_init_data) {
496                 .name = "blsp1_qup2_i2c_apps_clk_src",
497                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
498                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
499                 .ops = &clk_rcg2_ops,
500         },
501 };
502
503 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
504         .cmd_rcgr = 0x03004,
505         .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
506         .mnd_width = 8,
507         .hid_width = 5,
508         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
509         .clkr.hw.init = &(const struct clk_init_data) {
510                 .name = "blsp1_qup2_spi_apps_clk_src",
511                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
512                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
513                 .ops = &clk_rcg2_ops,
514         },
515 };
516
517 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
518         .cmd_rcgr = 0x04018,
519         .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
520         .hid_width = 5,
521         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
522         .clkr.hw.init = &(const struct clk_init_data) {
523                 .name = "blsp1_qup3_i2c_apps_clk_src",
524                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
525                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
526                 .ops = &clk_rcg2_ops,
527         },
528 };
529
530 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
531         .cmd_rcgr = 0x04004,
532         .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
533         .mnd_width = 8,
534         .hid_width = 5,
535         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
536         .clkr.hw.init = &(const struct clk_init_data) {
537                 .name = "blsp1_qup3_spi_apps_clk_src",
538                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
539                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
540                 .ops = &clk_rcg2_ops,
541         },
542 };
543
544 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
545         .cmd_rcgr = 0x05018,
546         .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
547         .hid_width = 5,
548         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
549         .clkr.hw.init = &(const struct clk_init_data) {
550                 .name = "blsp1_qup4_i2c_apps_clk_src",
551                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
552                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
553                 .ops = &clk_rcg2_ops,
554         },
555 };
556
557 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
558         .cmd_rcgr = 0x05004,
559         .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
560         .mnd_width = 8,
561         .hid_width = 5,
562         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
563         .clkr.hw.init = &(const struct clk_init_data) {
564                 .name = "blsp1_qup4_spi_apps_clk_src",
565                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
566                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
567                 .ops = &clk_rcg2_ops,
568         },
569 };
570
571 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
572         .cmd_rcgr = 0x06018,
573         .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
574         .hid_width = 5,
575         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
576         .clkr.hw.init = &(const struct clk_init_data) {
577                 .name = "blsp1_qup5_i2c_apps_clk_src",
578                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
579                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
580                 .ops = &clk_rcg2_ops,
581         },
582 };
583
584 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
585         .cmd_rcgr = 0x06004,
586         .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
587         .mnd_width = 8,
588         .hid_width = 5,
589         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
590         .clkr.hw.init = &(const struct clk_init_data) {
591                 .name = "blsp1_qup5_spi_apps_clk_src",
592                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
593                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
594                 .ops = &clk_rcg2_ops,
595         },
596 };
597
598 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
599         .cmd_rcgr = 0x07018,
600         .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
601         .hid_width = 5,
602         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
603         .clkr.hw.init = &(const struct clk_init_data) {
604                 .name = "blsp1_qup6_i2c_apps_clk_src",
605                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
606                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
607                 .ops = &clk_rcg2_ops,
608         },
609 };
610
611 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
612         .cmd_rcgr = 0x07004,
613         .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
614         .mnd_width = 8,
615         .hid_width = 5,
616         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
617         .clkr.hw.init = &(const struct clk_init_data) {
618                 .name = "blsp1_qup6_spi_apps_clk_src",
619                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
620                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
621                 .ops = &clk_rcg2_ops,
622         },
623 };
624
625 static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src[] = {
626         F(3686400, P_GPLL0_DIV2, 1, 144, 15625),
627         F(7372800, P_GPLL0_DIV2, 1, 288, 15625),
628         F(14745600, P_GPLL0_DIV2, 1, 576, 15625),
629         F(24000000, P_XO, 1, 0, 0),
630         F(25000000, P_GPLL0, 16, 1, 2),
631         F(32000000, P_GPLL0, 1, 1, 25),
632         F(40000000, P_GPLL0, 1, 1, 20),
633         F(46400000, P_GPLL0, 1, 29, 500),
634         F(48000000, P_GPLL0, 1, 3, 50),
635         F(51200000, P_GPLL0, 1, 8, 125),
636         F(56000000, P_GPLL0, 1, 7, 100),
637         F(58982400, P_GPLL0, 1, 1152, 15625),
638         F(60000000, P_GPLL0, 1, 3, 40),
639         F(64000000, P_GPLL0, 12.5, 0, 0),
640         { }
641 };
642
643 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
644         .cmd_rcgr = 0x0202c,
645         .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
646         .mnd_width = 16,
647         .hid_width = 5,
648         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
649         .clkr.hw.init = &(const struct clk_init_data) {
650                 .name = "blsp1_uart1_apps_clk_src",
651                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
652                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
653                 .ops = &clk_rcg2_ops,
654         },
655 };
656
657 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
658         .cmd_rcgr = 0x0302c,
659         .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
660         .mnd_width = 16,
661         .hid_width = 5,
662         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
663         .clkr.hw.init = &(const struct clk_init_data) {
664                 .name = "blsp1_uart2_apps_clk_src",
665                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
666                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
667                 .ops = &clk_rcg2_ops,
668         },
669 };
670
671 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
672         .cmd_rcgr = 0x0402c,
673         .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
674         .mnd_width = 16,
675         .hid_width = 5,
676         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
677         .clkr.hw.init = &(const struct clk_init_data) {
678                 .name = "blsp1_uart3_apps_clk_src",
679                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
680                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
681                 .ops = &clk_rcg2_ops,
682         },
683 };
684
685 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
686         .cmd_rcgr = 0x0502c,
687         .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
688         .mnd_width = 16,
689         .hid_width = 5,
690         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
691         .clkr.hw.init = &(const struct clk_init_data) {
692                 .name = "blsp1_uart4_apps_clk_src",
693                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
694                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
695                 .ops = &clk_rcg2_ops,
696         },
697 };
698
699 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
700         .cmd_rcgr = 0x0602c,
701         .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
702         .mnd_width = 16,
703         .hid_width = 5,
704         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
705         .clkr.hw.init = &(const struct clk_init_data) {
706                 .name = "blsp1_uart5_apps_clk_src",
707                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
708                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
709                 .ops = &clk_rcg2_ops,
710         },
711 };
712
713 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
714         .cmd_rcgr = 0x0702c,
715         .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
716         .mnd_width = 16,
717         .hid_width = 5,
718         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
719         .clkr.hw.init = &(const struct clk_init_data) {
720                 .name = "blsp1_uart6_apps_clk_src",
721                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
722                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
723                 .ops = &clk_rcg2_ops,
724         },
725 };
726
727 static const struct freq_tbl ftbl_gcc_crypto_clk_src[] = {
728         F(160000000, P_GPLL0, 5, 0, 0),
729         { }
730 };
731
732 static struct clk_rcg2 gcc_crypto_clk_src = {
733         .cmd_rcgr = 0x16004,
734         .freq_tbl = ftbl_gcc_crypto_clk_src,
735         .hid_width = 5,
736         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
737         .clkr.hw.init = &(const struct clk_init_data) {
738                 .name = "gcc_crypto_clk_src",
739                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
740                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
741                 .ops = &clk_rcg2_ops,
742         },
743 };
744
745 static struct clk_branch gcc_crypto_clk = {
746         .halt_reg = 0x1600c,
747         .halt_check = BRANCH_HALT_VOTED,
748         .clkr = {
749                 .enable_reg = 0x0b004,
750                 .enable_mask = BIT(14),
751                 .hw.init = &(const struct clk_init_data) {
752                         .name = "gcc_crypto_clk",
753                         .parent_hws = (const struct clk_hw *[]) {
754                                 &gcc_crypto_clk_src.clkr.hw },
755                         .num_parents = 1,
756                         .flags = CLK_SET_RATE_PARENT,
757                         .ops = &clk_branch2_ops,
758                 },
759         },
760 };
761
762 static struct clk_branch gcc_apss_ahb_clk = {
763         .halt_reg = 0x24018,
764         .halt_check = BRANCH_HALT_VOTED,
765         .clkr = {
766                 .enable_reg = 0x0b004,
767                 .enable_mask = BIT(0),
768                 .hw.init = &(const struct clk_init_data) {
769                         .name = "gcc_apss_ahb_clk",
770                         .parent_hws = (const struct clk_hw *[]) {
771                                 &apss_ahb_clk_src.clkr.hw
772                         },
773                         .num_parents = 1,
774                         .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
775                         .ops = &clk_branch2_ops,
776                 },
777         },
778 };
779
780 static struct clk_branch gcc_apss_axi_clk = {
781         .halt_reg = 0x2401c,
782         .halt_check = BRANCH_HALT_VOTED,
783         .clkr = {
784                 .enable_reg = 0x0b004,
785                 .enable_mask = BIT(1),
786                 .hw.init = &(const struct clk_init_data) {
787                         .name = "gcc_apss_axi_clk",
788                         .parent_hws = (const struct clk_hw *[]) {
789                                 &apss_axi_clk_src.clkr.hw
790                         },
791                         .num_parents = 1,
792                         .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
793                         .ops = &clk_branch2_ops,
794                 },
795         },
796 };
797
798 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
799         .halt_reg = 0x2024,
800         .clkr = {
801                 .enable_reg = 0x2024,
802                 .enable_mask = BIT(0),
803                 .hw.init = &(const struct clk_init_data) {
804                         .name = "gcc_blsp1_qup1_i2c_apps_clk",
805                         .parent_hws = (const struct clk_hw *[]) {
806                                 &blsp1_qup1_i2c_apps_clk_src.clkr.hw
807                         },
808                         .num_parents = 1,
809                         .flags = CLK_SET_RATE_PARENT,
810                         .ops = &clk_branch2_ops,
811                 },
812         },
813 };
814
815 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
816         .halt_reg = 0x02020,
817         .clkr = {
818                 .enable_reg = 0x02020,
819                 .enable_mask = BIT(0),
820                 .hw.init = &(const struct clk_init_data) {
821                         .name = "gcc_blsp1_qup1_spi_apps_clk",
822                         .parent_hws = (const struct clk_hw *[]) {
823                                 &blsp1_qup1_spi_apps_clk_src.clkr.hw
824                         },
825                         .num_parents = 1,
826                         .flags = CLK_SET_RATE_PARENT,
827                         .ops = &clk_branch2_ops,
828                 },
829         },
830 };
831
832 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
833         .halt_reg = 0x03024,
834         .clkr = {
835                 .enable_reg = 0x03024,
836                 .enable_mask = BIT(0),
837                 .hw.init = &(const struct clk_init_data) {
838                         .name = "gcc_blsp1_qup2_i2c_apps_clk",
839                         .parent_hws = (const struct clk_hw *[]) {
840                                 &blsp1_qup2_i2c_apps_clk_src.clkr.hw
841                         },
842                         .num_parents = 1,
843                         .flags = CLK_SET_RATE_PARENT,
844                         .ops = &clk_branch2_ops,
845                 },
846         },
847 };
848
849 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
850         .halt_reg = 0x03020,
851         .clkr = {
852                 .enable_reg = 0x03020,
853                 .enable_mask = BIT(0),
854                 .hw.init = &(const struct clk_init_data) {
855                         .name = "gcc_blsp1_qup2_spi_apps_clk",
856                         .parent_hws = (const struct clk_hw *[]) {
857                                 &blsp1_qup2_spi_apps_clk_src.clkr.hw
858                         },
859                         .num_parents = 1,
860                         .flags = CLK_SET_RATE_PARENT,
861                         .ops = &clk_branch2_ops,
862                 },
863         },
864 };
865
866 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
867         .halt_reg = 0x04024,
868         .clkr = {
869                 .enable_reg = 0x04024,
870                 .enable_mask = BIT(0),
871                 .hw.init = &(const struct clk_init_data) {
872                         .name = "gcc_blsp1_qup3_i2c_apps_clk",
873                         .parent_hws = (const struct clk_hw *[]) {
874                                 &blsp1_qup3_i2c_apps_clk_src.clkr.hw
875                         },
876                         .num_parents = 1,
877                         .flags = CLK_SET_RATE_PARENT,
878                         .ops = &clk_branch2_ops,
879                 },
880         },
881 };
882
883 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
884         .halt_reg = 0x04020,
885         .clkr = {
886                 .enable_reg = 0x04020,
887                 .enable_mask = BIT(0),
888                 .hw.init = &(const struct clk_init_data) {
889                         .name = "gcc_blsp1_qup3_spi_apps_clk",
890                         .parent_hws = (const struct clk_hw *[]) {
891                                 &blsp1_qup3_spi_apps_clk_src.clkr.hw
892                         },
893                         .num_parents = 1,
894                         .flags = CLK_SET_RATE_PARENT,
895                         .ops = &clk_branch2_ops,
896                 },
897         },
898 };
899
900 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
901         .halt_reg = 0x05024,
902         .clkr = {
903                 .enable_reg = 0x05024,
904                 .enable_mask = BIT(0),
905                 .hw.init = &(const struct clk_init_data) {
906                         .name = "gcc_blsp1_qup4_i2c_apps_clk",
907                         .parent_hws = (const struct clk_hw *[]) {
908                                 &blsp1_qup4_i2c_apps_clk_src.clkr.hw
909                         },
910                         .num_parents = 1,
911                         .flags = CLK_SET_RATE_PARENT,
912                         .ops = &clk_branch2_ops,
913                 },
914         },
915 };
916
917 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
918         .halt_reg = 0x05020,
919         .clkr = {
920                 .enable_reg = 0x05020,
921                 .enable_mask = BIT(0),
922                 .hw.init = &(const struct clk_init_data) {
923                         .name = "gcc_blsp1_qup4_spi_apps_clk",
924                         .parent_hws = (const struct clk_hw *[]) {
925                                 &blsp1_qup4_spi_apps_clk_src.clkr.hw
926                         },
927                         .num_parents = 1,
928                         .flags = CLK_SET_RATE_PARENT,
929                         .ops = &clk_branch2_ops,
930                 },
931         },
932 };
933
934 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
935         .halt_reg = 0x06024,
936         .clkr = {
937                 .enable_reg = 0x06024,
938                 .enable_mask = BIT(0),
939                 .hw.init = &(const struct clk_init_data) {
940                         .name = "gcc_blsp1_qup5_i2c_apps_clk",
941                         .parent_hws = (const struct clk_hw *[]) {
942                                 &blsp1_qup5_i2c_apps_clk_src.clkr.hw
943                         },
944                         .num_parents = 1,
945                         .flags = CLK_SET_RATE_PARENT,
946                         .ops = &clk_branch2_ops,
947                 },
948         },
949 };
950
951 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
952         .halt_reg = 0x06020,
953         .clkr = {
954                 .enable_reg = 0x06020,
955                 .enable_mask = BIT(0),
956                 .hw.init = &(const struct clk_init_data) {
957                         .name = "gcc_blsp1_qup5_spi_apps_clk",
958                         .parent_hws = (const struct clk_hw *[]) {
959                                 &blsp1_qup5_spi_apps_clk_src.clkr.hw
960                         },
961                         .num_parents = 1,
962                         .flags = CLK_SET_RATE_PARENT,
963                         .ops = &clk_branch2_ops,
964                 },
965         },
966 };
967
968 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
969         .halt_reg = 0x07024,
970         .clkr = {
971                 .enable_reg = 0x07024,
972                 .enable_mask = BIT(0),
973                 .hw.init = &(const struct clk_init_data) {
974                         .name = "gcc_blsp1_qup6_i2c_apps_clk",
975                         .parent_hws = (const struct clk_hw *[]) {
976                                 &blsp1_qup6_i2c_apps_clk_src.clkr.hw
977                         },
978                         .num_parents = 1,
979                         .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
980                         .ops = &clk_branch2_ops,
981                 },
982         },
983 };
984
985 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
986         .halt_reg = 0x07020,
987         .clkr = {
988                 .enable_reg = 0x07020,
989                 .enable_mask = BIT(0),
990                 .hw.init = &(const struct clk_init_data) {
991                         .name = "gcc_blsp1_qup6_spi_apps_clk",
992                         .parent_hws = (const struct clk_hw *[]) {
993                                 &blsp1_qup6_spi_apps_clk_src.clkr.hw
994                         },
995                         .num_parents = 1,
996                         .flags = CLK_SET_RATE_PARENT,
997                         .ops = &clk_branch2_ops,
998                 },
999         },
1000 };
1001
1002 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1003         .halt_reg = 0x02040,
1004         .clkr = {
1005                 .enable_reg = 0x02040,
1006                 .enable_mask = BIT(0),
1007                 .hw.init = &(const struct clk_init_data) {
1008                         .name = "gcc_blsp1_uart1_apps_clk",
1009                         .parent_hws = (const struct clk_hw *[]) {
1010                                 &blsp1_uart1_apps_clk_src.clkr.hw
1011                         },
1012                         .num_parents = 1,
1013                         .flags = CLK_SET_RATE_PARENT,
1014                         .ops = &clk_branch2_ops,
1015                 },
1016         },
1017 };
1018
1019 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1020         .halt_reg = 0x03040,
1021         .clkr = {
1022                 .enable_reg = 0x03040,
1023                 .enable_mask = BIT(0),
1024                 .hw.init = &(const struct clk_init_data) {
1025                         .name = "gcc_blsp1_uart2_apps_clk",
1026                         .parent_hws = (const struct clk_hw *[]) {
1027                                 &blsp1_uart2_apps_clk_src.clkr.hw
1028                         },
1029                         .num_parents = 1,
1030                         .flags = CLK_SET_RATE_PARENT,
1031                         .ops = &clk_branch2_ops,
1032                 },
1033         },
1034 };
1035
1036 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1037         .halt_reg = 0x04054,
1038         .clkr = {
1039                 .enable_reg = 0x04054,
1040                 .enable_mask = BIT(0),
1041                 .hw.init = &(const struct clk_init_data) {
1042                         .name = "gcc_blsp1_uart3_apps_clk",
1043                         .parent_hws = (const struct clk_hw *[]) {
1044                                 &blsp1_uart3_apps_clk_src.clkr.hw
1045                         },
1046                         .num_parents = 1,
1047                         .flags = CLK_SET_RATE_PARENT,
1048                         .ops = &clk_branch2_ops,
1049                 },
1050         },
1051 };
1052
1053 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1054         .halt_reg = 0x05040,
1055         .clkr = {
1056                 .enable_reg = 0x05040,
1057                 .enable_mask = BIT(0),
1058                 .hw.init = &(const struct clk_init_data) {
1059                         .name = "gcc_blsp1_uart4_apps_clk",
1060                         .parent_hws = (const struct clk_hw *[]) {
1061                                 &blsp1_uart4_apps_clk_src.clkr.hw
1062                         },
1063                         .num_parents = 1,
1064                         .flags = CLK_SET_RATE_PARENT,
1065                         .ops = &clk_branch2_ops,
1066                 },
1067         },
1068 };
1069
1070 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1071         .halt_reg = 0x06040,
1072         .clkr = {
1073                 .enable_reg = 0x06040,
1074                 .enable_mask = BIT(0),
1075                 .hw.init = &(const struct clk_init_data) {
1076                         .name = "gcc_blsp1_uart5_apps_clk",
1077                         .parent_hws = (const struct clk_hw *[]) {
1078                                 &blsp1_uart5_apps_clk_src.clkr.hw
1079                         },
1080                         .num_parents = 1,
1081                         .flags = CLK_SET_RATE_PARENT,
1082                         .ops = &clk_branch2_ops,
1083                 },
1084         },
1085 };
1086
1087 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1088         .halt_reg = 0x07040,
1089         .clkr = {
1090                 .enable_reg = 0x07040,
1091                 .enable_mask = BIT(0),
1092                 .hw.init = &(const struct clk_init_data) {
1093                         .name = "gcc_blsp1_uart6_apps_clk",
1094                         .parent_hws = (const struct clk_hw *[]) {
1095                                 &blsp1_uart6_apps_clk_src.clkr.hw
1096                         },
1097                         .num_parents = 1,
1098                         .flags = CLK_SET_RATE_PARENT,
1099                         .ops = &clk_branch2_ops,
1100                 },
1101         },
1102 };
1103
1104 static const struct freq_tbl ftbl_pcie0_axi_m_clk_src[] = {
1105         F(240000000, P_GPLL4, 5, 0, 0),
1106         { }
1107 };
1108
1109 static struct clk_rcg2 pcie0_axi_m_clk_src = {
1110         .cmd_rcgr = 0x28018,
1111         .freq_tbl = ftbl_pcie0_axi_m_clk_src,
1112         .hid_width = 5,
1113         .parent_map = gcc_xo_gpll0_gpll4_map,
1114         .clkr.hw.init = &(const struct clk_init_data) {
1115                 .name = "pcie0_axi_m_clk_src",
1116                 .parent_data = gcc_xo_gpll0_gpll4,
1117                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),
1118                 .ops = &clk_rcg2_ops,
1119         },
1120 };
1121
1122 static struct clk_branch gcc_pcie0_axi_m_clk = {
1123         .halt_reg = 0x28038,
1124         .clkr = {
1125                 .enable_reg = 0x28038,
1126                 .enable_mask = BIT(0),
1127                 .hw.init = &(const struct clk_init_data) {
1128                         .name = "gcc_pcie0_axi_m_clk",
1129                         .parent_hws = (const struct clk_hw *[]) {
1130                                 &pcie0_axi_m_clk_src.clkr.hw
1131                         },
1132                         .num_parents = 1,
1133                         .flags = CLK_SET_RATE_PARENT,
1134                         .ops = &clk_branch2_ops,
1135                 },
1136         },
1137 };
1138
1139 static struct clk_branch gcc_anoc_pcie0_1lane_m_clk = {
1140         .halt_reg = 0x2e07c,
1141         .clkr = {
1142                 .enable_reg = 0x2e07c,
1143                 .enable_mask = BIT(0),
1144                 .hw.init = &(const struct clk_init_data) {
1145                         .name = "gcc_anoc_pcie0_1lane_m_clk",
1146                         .parent_hws = (const struct clk_hw *[]) {
1147                                 &pcie0_axi_m_clk_src.clkr.hw
1148                         },
1149                         .num_parents = 1,
1150                         .flags = CLK_SET_RATE_PARENT,
1151                         .ops = &clk_branch2_ops,
1152                 },
1153         },
1154 };
1155
1156 static struct clk_rcg2 pcie1_axi_m_clk_src = {
1157         .cmd_rcgr = 0x29018,
1158         .freq_tbl = ftbl_pcie0_axi_m_clk_src,
1159         .hid_width = 5,
1160         .parent_map = gcc_xo_gpll0_gpll4_map,
1161         .clkr.hw.init = &(const struct clk_init_data) {
1162                 .name = "pcie1_axi_m_clk_src",
1163                 .parent_data = gcc_xo_gpll0_gpll4,
1164                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),
1165                 .ops = &clk_rcg2_ops,
1166         },
1167 };
1168
1169 static struct clk_branch gcc_pcie1_axi_m_clk = {
1170         .halt_reg = 0x29038,
1171         .clkr = {
1172                 .enable_reg = 0x29038,
1173                 .enable_mask = BIT(0),
1174                 .hw.init = &(const struct clk_init_data) {
1175                         .name = "gcc_pcie1_axi_m_clk",
1176                         .parent_hws = (const struct clk_hw *[]) {
1177                                 &pcie1_axi_m_clk_src.clkr.hw
1178                         },
1179                         .num_parents = 1,
1180                         .flags = CLK_SET_RATE_PARENT,
1181                         .ops = &clk_branch2_ops,
1182                 },
1183         },
1184 };
1185
1186 static struct clk_branch gcc_anoc_pcie1_1lane_m_clk = {
1187         .halt_reg = 0x2e08c,
1188         .clkr = {
1189                 .enable_reg = 0x2e08c,
1190                 .enable_mask = BIT(0),
1191                 .hw.init = &(const struct clk_init_data) {
1192                         .name = "gcc_anoc_pcie1_1lane_m_clk",
1193                         .parent_hws = (const struct clk_hw *[]) {
1194                                 &pcie1_axi_m_clk_src.clkr.hw
1195                         },
1196                         .num_parents = 1,
1197                         .flags = CLK_SET_RATE_PARENT,
1198                         .ops = &clk_branch2_ops,
1199                 },
1200         },
1201 };
1202
1203 static const struct freq_tbl ftbl_pcie2_axi_m_clk_src[] = {
1204         F(342857143, P_GPLL4, 3.5, 0, 0),
1205         { }
1206 };
1207
1208 static struct clk_rcg2 pcie2_axi_m_clk_src = {
1209         .cmd_rcgr = 0x2a018,
1210         .freq_tbl = ftbl_pcie2_axi_m_clk_src,
1211         .hid_width = 5,
1212         .parent_map = gcc_xo_gpll0_gpll4_bias_pll_ubi_nc_clk_map,
1213         .clkr.hw.init = &(const struct clk_init_data) {
1214                 .name = "pcie2_axi_m_clk_src",
1215                 .parent_data = gcc_xo_gpll0_gpll4_bias_pll_ubi_nc_clk,
1216                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4_bias_pll_ubi_nc_clk),
1217                 .ops = &clk_rcg2_ops,
1218         },
1219 };
1220
1221 static struct clk_branch gcc_pcie2_axi_m_clk = {
1222         .halt_reg = 0x2a038,
1223         .clkr = {
1224                 .enable_reg = 0x2a038,
1225                 .enable_mask = BIT(0),
1226                 .hw.init = &(const struct clk_init_data) {
1227                         .name = "gcc_pcie2_axi_m_clk",
1228                         .parent_hws = (const struct clk_hw *[]) {
1229                                 &pcie2_axi_m_clk_src.clkr.hw
1230                         },
1231                         .num_parents = 1,
1232                         .flags = CLK_SET_RATE_PARENT,
1233                         .ops = &clk_branch2_ops,
1234                 },
1235         },
1236 };
1237
1238 static struct clk_branch gcc_anoc_pcie2_2lane_m_clk = {
1239         .halt_reg = 0x2e080,
1240         .clkr = {
1241                 .enable_reg = 0x2e080,
1242                 .enable_mask = BIT(0),
1243                 .hw.init = &(const struct clk_init_data) {
1244                         .name = "gcc_anoc_pcie2_2lane_m_clk",
1245                         .parent_hws = (const struct clk_hw *[]) {
1246                                 &pcie2_axi_m_clk_src.clkr.hw
1247                         },
1248                         .num_parents = 1,
1249                         .flags = CLK_SET_RATE_PARENT,
1250                         .ops = &clk_branch2_ops,
1251                 },
1252         },
1253 };
1254
1255 static struct clk_rcg2 pcie3_axi_m_clk_src = {
1256         .cmd_rcgr = 0x2b018,
1257         .freq_tbl = ftbl_pcie2_axi_m_clk_src,
1258         .hid_width = 5,
1259         .parent_map = gcc_xo_gpll0_gpll4_bias_pll_ubi_nc_clk_map,
1260         .clkr.hw.init = &(const struct clk_init_data) {
1261                 .name = "pcie3_axi_m_clk_src",
1262                 .parent_data = gcc_xo_gpll0_gpll4_bias_pll_ubi_nc_clk,
1263                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4_bias_pll_ubi_nc_clk),
1264                 .ops = &clk_rcg2_ops,
1265         },
1266 };
1267
1268 static struct clk_branch gcc_pcie3_axi_m_clk = {
1269         .halt_reg = 0x2b038,
1270         .clkr = {
1271                 .enable_reg = 0x2b038,
1272                 .enable_mask = BIT(0),
1273                 .hw.init = &(const struct clk_init_data) {
1274                         .name = "gcc_pcie3_axi_m_clk",
1275                         .parent_hws = (const struct clk_hw *[]) {
1276                                 &pcie3_axi_m_clk_src.clkr.hw
1277                         },
1278                         .num_parents = 1,
1279                         .flags = CLK_SET_RATE_PARENT,
1280                         .ops = &clk_branch2_ops,
1281                 },
1282         },
1283 };
1284
1285 static struct clk_branch gcc_anoc_pcie3_2lane_m_clk = {
1286         .halt_reg = 0x2e090,
1287         .clkr = {
1288                 .enable_reg = 0x2e090,
1289                 .enable_mask = BIT(0),
1290                 .hw.init = &(const struct clk_init_data) {
1291                         .name = "gcc_anoc_pcie3_2lane_m_clk",
1292                         .parent_hws = (const struct clk_hw *[]) {
1293                                 &pcie3_axi_m_clk_src.clkr.hw
1294                         },
1295                         .num_parents = 1,
1296                         .flags = CLK_SET_RATE_PARENT,
1297                         .ops = &clk_branch2_ops,
1298                 },
1299         },
1300 };
1301
1302 static struct clk_rcg2 pcie0_axi_s_clk_src = {
1303         .cmd_rcgr = 0x28020,
1304         .freq_tbl = ftbl_pcie0_axi_m_clk_src,
1305         .hid_width = 5,
1306         .parent_map = gcc_xo_gpll0_gpll4_map,
1307         .clkr.hw.init = &(const struct clk_init_data) {
1308                 .name = "pcie0_axi_s_clk_src",
1309                 .parent_data = gcc_xo_gpll0_gpll4,
1310                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),
1311                 .ops = &clk_rcg2_ops,
1312         },
1313 };
1314
1315 static struct clk_branch gcc_pcie0_axi_s_clk = {
1316         .halt_reg = 0x2803c,
1317         .clkr = {
1318                 .enable_reg = 0x2803c,
1319                 .enable_mask = BIT(0),
1320                 .hw.init = &(const struct clk_init_data) {
1321                         .name = "gcc_pcie0_axi_s_clk",
1322                         .parent_hws = (const struct clk_hw *[]) {
1323                                 &pcie0_axi_s_clk_src.clkr.hw
1324                         },
1325                         .num_parents = 1,
1326                         .flags = CLK_SET_RATE_PARENT,
1327                         .ops = &clk_branch2_ops,
1328                 },
1329         },
1330 };
1331
1332 static struct clk_branch gcc_pcie0_axi_s_bridge_clk = {
1333         .halt_reg = 0x28040,
1334         .clkr = {
1335                 .enable_reg = 0x28040,
1336                 .enable_mask = BIT(0),
1337                 .hw.init = &(const struct clk_init_data) {
1338                         .name = "gcc_pcie0_axi_s_bridge_clk",
1339                         .parent_hws = (const struct clk_hw *[]) {
1340                                 &pcie0_axi_s_clk_src.clkr.hw
1341                         },
1342                         .num_parents = 1,
1343                         .flags = CLK_SET_RATE_PARENT,
1344                         .ops = &clk_branch2_ops,
1345                 },
1346         },
1347 };
1348
1349 static struct clk_branch gcc_snoc_pcie0_1lane_s_clk = {
1350         .halt_reg = 0x2e048,
1351         .clkr = {
1352                 .enable_reg = 0x2e048,
1353                 .enable_mask = BIT(0),
1354                 .hw.init = &(const struct clk_init_data) {
1355                         .name = "gcc_snoc_pcie0_1lane_s_clk",
1356                         .parent_hws = (const struct clk_hw *[]) {
1357                                 &pcie0_axi_s_clk_src.clkr.hw
1358                         },
1359                         .num_parents = 1,
1360                         .flags = CLK_SET_RATE_PARENT,
1361                         .ops = &clk_branch2_ops,
1362                 },
1363         },
1364 };
1365
1366 static struct clk_rcg2 pcie1_axi_s_clk_src = {
1367         .cmd_rcgr = 0x29020,
1368         .freq_tbl = ftbl_pcie0_axi_m_clk_src,
1369         .hid_width = 5,
1370         .parent_map = gcc_xo_gpll0_gpll4_map,
1371         .clkr.hw.init = &(const struct clk_init_data) {
1372                 .name = "pcie1_axi_s_clk_src",
1373                 .parent_data = gcc_xo_gpll0_gpll4,
1374                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),
1375                 .ops = &clk_rcg2_ops,
1376         },
1377 };
1378
1379 static struct clk_branch gcc_pcie1_axi_s_clk = {
1380         .halt_reg = 0x2903c,
1381         .clkr = {
1382                 .enable_reg = 0x2903c,
1383                 .enable_mask = BIT(0),
1384                 .hw.init = &(const struct clk_init_data) {
1385                         .name = "gcc_pcie1_axi_s_clk",
1386                         .parent_hws = (const struct clk_hw *[]) {
1387                                 &pcie1_axi_s_clk_src.clkr.hw
1388                         },
1389                         .num_parents = 1,
1390                         .flags = CLK_SET_RATE_PARENT,
1391                         .ops = &clk_branch2_ops,
1392                 },
1393         },
1394 };
1395
1396 static struct clk_branch gcc_pcie1_axi_s_bridge_clk = {
1397         .halt_reg = 0x29040,
1398         .clkr = {
1399                 .enable_reg = 0x29040,
1400                 .enable_mask = BIT(0),
1401                 .hw.init = &(const struct clk_init_data) {
1402                         .name = "gcc_pcie1_axi_s_bridge_clk",
1403                         .parent_hws = (const struct clk_hw *[]) {
1404                                 &pcie1_axi_s_clk_src.clkr.hw
1405                         },
1406                         .num_parents = 1,
1407                         .flags = CLK_SET_RATE_PARENT,
1408                         .ops = &clk_branch2_ops,
1409                 },
1410         },
1411 };
1412
1413 static struct clk_branch gcc_snoc_pcie1_1lane_s_clk = {
1414         .halt_reg = 0x2e04c,
1415         .clkr = {
1416                 .enable_reg = 0x2e04c,
1417                 .enable_mask = BIT(0),
1418                 .hw.init = &(const struct clk_init_data) {
1419                         .name = "gcc_snoc_pcie1_1lane_s_clk",
1420                         .parent_hws = (const struct clk_hw *[]) {
1421                                 &pcie1_axi_s_clk_src.clkr.hw
1422                         },
1423                         .num_parents = 1,
1424                         .flags = CLK_SET_RATE_PARENT,
1425                         .ops = &clk_branch2_ops,
1426                 },
1427         },
1428 };
1429
1430 static struct clk_rcg2 pcie2_axi_s_clk_src = {
1431         .cmd_rcgr = 0x2a020,
1432         .freq_tbl = ftbl_pcie0_axi_m_clk_src,
1433         .hid_width = 5,
1434         .parent_map = gcc_xo_gpll0_gpll4_map,
1435         .clkr.hw.init = &(const struct clk_init_data) {
1436                 .name = "pcie2_axi_s_clk_src",
1437                 .parent_data = gcc_xo_gpll0_gpll4,
1438                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),
1439                 .ops = &clk_rcg2_ops,
1440         },
1441 };
1442
1443 static struct clk_branch gcc_pcie2_axi_s_clk = {
1444         .halt_reg = 0x2a03c,
1445         .clkr = {
1446                 .enable_reg = 0x2a03c,
1447                 .enable_mask = BIT(0),
1448                 .hw.init = &(const struct clk_init_data) {
1449                         .name = "gcc_pcie2_axi_s_clk",
1450                         .parent_hws = (const struct clk_hw *[]) {
1451                                 &pcie2_axi_s_clk_src.clkr.hw
1452                         },
1453                         .num_parents = 1,
1454                         .flags = CLK_SET_RATE_PARENT,
1455                         .ops = &clk_branch2_ops,
1456                 },
1457         },
1458 };
1459
1460 static struct clk_branch gcc_pcie2_axi_s_bridge_clk = {
1461         .halt_reg = 0x2a040,
1462         .clkr = {
1463                 .enable_reg = 0x2a040,
1464                 .enable_mask = BIT(0),
1465                 .hw.init = &(const struct clk_init_data) {
1466                         .name = "gcc_pcie2_axi_s_bridge_clk",
1467                         .parent_hws = (const struct clk_hw *[]) {
1468                                 &pcie2_axi_s_clk_src.clkr.hw
1469                         },
1470                         .num_parents = 1,
1471                         .flags = CLK_SET_RATE_PARENT,
1472                         .ops = &clk_branch2_ops,
1473                 },
1474         },
1475 };
1476
1477 static struct clk_branch gcc_snoc_pcie2_2lane_s_clk = {
1478         .halt_reg = 0x2e050,
1479         .clkr = {
1480                 .enable_reg = 0x2e050,
1481                 .enable_mask = BIT(0),
1482                 .hw.init = &(const struct clk_init_data) {
1483                         .name = "gcc_snoc_pcie2_2lane_s_clk",
1484                         .parent_hws = (const struct clk_hw *[]) {
1485                                 &pcie2_axi_s_clk_src.clkr.hw
1486                         },
1487                         .num_parents = 1,
1488                         .flags = CLK_SET_RATE_PARENT,
1489                         .ops = &clk_branch2_ops,
1490                 },
1491         },
1492 };
1493
1494 static struct clk_rcg2 pcie3_axi_s_clk_src = {
1495         .cmd_rcgr = 0x2b020,
1496         .freq_tbl = ftbl_pcie0_axi_m_clk_src,
1497         .hid_width = 5,
1498         .parent_map = gcc_xo_gpll0_gpll4_map,
1499         .clkr.hw.init = &(const struct clk_init_data) {
1500                 .name = "pcie3_axi_s_clk_src",
1501                 .parent_data = gcc_xo_gpll0_gpll4,
1502                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),
1503                 .ops = &clk_rcg2_ops,
1504         },
1505 };
1506
1507 static struct clk_branch gcc_pcie3_axi_s_clk = {
1508         .halt_reg = 0x2b03c,
1509         .clkr = {
1510                 .enable_reg = 0x2b03c,
1511                 .enable_mask = BIT(0),
1512                 .hw.init = &(const struct clk_init_data) {
1513                         .name = "gcc_pcie3_axi_s_clk",
1514                         .parent_hws = (const struct clk_hw *[]) {
1515                                 &pcie3_axi_s_clk_src.clkr.hw
1516                         },
1517                         .num_parents = 1,
1518                         .flags = CLK_SET_RATE_PARENT,
1519                         .ops = &clk_branch2_ops,
1520                 },
1521         },
1522 };
1523
1524 static struct clk_branch gcc_pcie3_axi_s_bridge_clk = {
1525         .halt_reg = 0x2b040,
1526         .clkr = {
1527                 .enable_reg = 0x2b040,
1528                 .enable_mask = BIT(0),
1529                 .hw.init = &(const struct clk_init_data) {
1530                         .name = "gcc_pcie3_axi_s_bridge_clk",
1531                         .parent_hws = (const struct clk_hw *[]) {
1532                                 &pcie3_axi_s_clk_src.clkr.hw
1533                         },
1534                         .num_parents = 1,
1535                         .flags = CLK_SET_RATE_PARENT,
1536                         .ops = &clk_branch2_ops,
1537                 },
1538         },
1539 };
1540
1541 static struct clk_branch gcc_snoc_pcie3_2lane_s_clk = {
1542         .halt_reg = 0x2e054,
1543         .clkr = {
1544                 .enable_reg = 0x2e054,
1545                 .enable_mask = BIT(0),
1546                 .hw.init = &(const struct clk_init_data) {
1547                         .name = "gcc_snoc_pcie3_2lane_s_clk",
1548                         .parent_hws = (const struct clk_hw *[]) {
1549                                 &pcie3_axi_s_clk_src.clkr.hw
1550                         },
1551                         .num_parents = 1,
1552                         .flags = CLK_SET_RATE_PARENT,
1553                         .ops = &clk_branch2_ops,
1554                 },
1555         },
1556 };
1557
1558 static struct clk_regmap_phy_mux pcie0_pipe_clk_src = {
1559         .reg = 0x28064,
1560         .clkr = {
1561                 .hw.init = &(const struct clk_init_data) {
1562                         .name = "pcie0_pipe_clk_src",
1563                         .parent_data = &(const struct clk_parent_data) {
1564                                 .index = DT_PCIE30_PHY0_PIPE_CLK,
1565                         },
1566                         .num_parents = 1,
1567                         .ops = &clk_regmap_phy_mux_ops,
1568                 },
1569         },
1570 };
1571
1572 static struct clk_regmap_phy_mux pcie1_pipe_clk_src = {
1573         .reg = 0x29064,
1574         .clkr = {
1575                 .hw.init = &(const struct clk_init_data) {
1576                         .name = "pcie1_pipe_clk_src",
1577                         .parent_data = &(const struct clk_parent_data) {
1578                                 .index = DT_PCIE30_PHY1_PIPE_CLK,
1579                         },
1580                         .num_parents = 1,
1581                         .ops = &clk_regmap_phy_mux_ops,
1582                 },
1583         },
1584 };
1585
1586 static struct clk_regmap_phy_mux pcie2_pipe_clk_src = {
1587         .reg = 0x2a064,
1588         .clkr = {
1589                 .hw.init = &(const struct clk_init_data) {
1590                         .name = "pcie2_pipe_clk_src",
1591                         .parent_data = &(const struct clk_parent_data) {
1592                                 .index = DT_PCIE30_PHY2_PIPE_CLK,
1593                         },
1594                         .num_parents = 1,
1595                         .ops = &clk_regmap_phy_mux_ops,
1596                 },
1597         },
1598 };
1599
1600 static struct clk_regmap_phy_mux pcie3_pipe_clk_src = {
1601         .reg = 0x2b064,
1602         .clkr = {
1603                 .hw.init = &(const struct clk_init_data) {
1604                         .name = "pcie3_pipe_clk_src",
1605                         .parent_data = &(const struct clk_parent_data) {
1606                                 .index = DT_PCIE30_PHY3_PIPE_CLK,
1607                         },
1608                         .num_parents = 1,
1609                         .ops = &clk_regmap_phy_mux_ops,
1610                 },
1611         },
1612 };
1613
1614 static const struct freq_tbl ftbl_pcie_rchng_clk_src[] = {
1615         F(24000000, P_XO, 1, 0, 0),
1616         F(100000000, P_GPLL0, 8, 0, 0),
1617         { }
1618 };
1619
1620 static struct clk_rcg2 pcie0_rchng_clk_src = {
1621         .cmd_rcgr = 0x28028,
1622         .freq_tbl = ftbl_pcie_rchng_clk_src,
1623         .hid_width = 5,
1624         .parent_map = gcc_xo_gpll0_map,
1625         .clkr.hw.init = &(const struct clk_init_data) {
1626                 .name = "pcie0_rchng_clk_src",
1627                 .parent_data = gcc_xo_gpll0,
1628                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1629                 .ops = &clk_rcg2_ops,
1630         },
1631 };
1632
1633 static struct clk_branch gcc_pcie0_rchng_clk = {
1634         .halt_reg = 0x28028,
1635         .clkr = {
1636                 .enable_reg = 0x28028,
1637                 .enable_mask = BIT(1),
1638                 .hw.init = &(const struct clk_init_data) {
1639                         .name = "gcc_pcie0_rchng_clk",
1640                         .parent_hws = (const struct clk_hw *[]) {
1641                                 &pcie0_rchng_clk_src.clkr.hw
1642
1643                         },
1644                         .num_parents = 1,
1645                         .flags = CLK_SET_RATE_PARENT,
1646                         .ops = &clk_branch2_ops,
1647                 },
1648         },
1649 };
1650
1651 static struct clk_rcg2 pcie1_rchng_clk_src = {
1652         .cmd_rcgr = 0x29028,
1653         .freq_tbl = ftbl_pcie_rchng_clk_src,
1654         .hid_width = 5,
1655         .parent_map = gcc_xo_gpll0_map,
1656         .clkr.hw.init = &(const struct clk_init_data) {
1657                 .name = "pcie1_rchng_clk_src",
1658                 .parent_data = gcc_xo_gpll0,
1659                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1660                 .ops = &clk_rcg2_ops,
1661         },
1662 };
1663
1664 static struct clk_branch gcc_pcie1_rchng_clk = {
1665         .halt_reg = 0x29028,
1666         .clkr = {
1667                 .enable_reg = 0x29028,
1668                 .enable_mask = BIT(1),
1669                 .hw.init = &(const struct clk_init_data) {
1670                         .name = "gcc_pcie1_rchng_clk",
1671                         .parent_hws = (const struct clk_hw *[]) {
1672                                 &pcie1_rchng_clk_src.clkr.hw
1673                         },
1674                         .num_parents = 1,
1675                         .flags = CLK_SET_RATE_PARENT,
1676                         .ops = &clk_branch2_ops,
1677                 },
1678         },
1679 };
1680
1681 static struct clk_rcg2 pcie2_rchng_clk_src = {
1682         .cmd_rcgr = 0x2a028,
1683         .freq_tbl = ftbl_pcie_rchng_clk_src,
1684         .hid_width = 5,
1685         .parent_map = gcc_xo_gpll0_map,
1686         .clkr.hw.init = &(const struct clk_init_data) {
1687                 .name = "pcie2_rchng_clk_src",
1688                 .parent_data = gcc_xo_gpll0,
1689                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1690                 .ops = &clk_rcg2_ops,
1691         },
1692 };
1693
1694 static struct clk_branch gcc_pcie2_rchng_clk = {
1695         .halt_reg = 0x2a028,
1696         .clkr = {
1697                 .enable_reg = 0x2a028,
1698                 .enable_mask = BIT(1),
1699                 .hw.init = &(const struct clk_init_data) {
1700                         .name = "gcc_pcie2_rchng_clk",
1701                         .parent_hws = (const struct clk_hw *[]) {
1702                                 &pcie2_rchng_clk_src.clkr.hw
1703                         },
1704                         .num_parents = 1,
1705                         .flags = CLK_SET_RATE_PARENT,
1706                         .ops = &clk_branch2_ops,
1707                 },
1708         },
1709 };
1710
1711 static struct clk_rcg2 pcie3_rchng_clk_src = {
1712         .cmd_rcgr = 0x2b028,
1713         .freq_tbl = ftbl_pcie_rchng_clk_src,
1714         .hid_width = 5,
1715         .parent_map = gcc_xo_gpll0_map,
1716         .clkr.hw.init = &(const struct clk_init_data) {
1717                 .name = "pcie3_rchng_clk_src",
1718                 .parent_data = gcc_xo_gpll0,
1719                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1720                 .ops = &clk_rcg2_ops,
1721         },
1722 };
1723
1724 static struct clk_branch gcc_pcie3_rchng_clk = {
1725         .halt_reg = 0x2b028,
1726         .clkr = {
1727                 .enable_reg = 0x2b028,
1728                 .enable_mask = BIT(1),
1729                 .hw.init = &(const struct clk_init_data) {
1730                         .name = "gcc_pcie3_rchng_clk",
1731                         .parent_hws = (const struct clk_hw *[]) {
1732                                 &pcie3_rchng_clk_src.clkr.hw
1733                         },
1734                         .num_parents = 1,
1735                         .flags = CLK_SET_RATE_PARENT,
1736                         .ops = &clk_branch2_ops,
1737                 },
1738         },
1739 };
1740
1741 static const struct freq_tbl ftbl_pcie_aux_clk_src[] = {
1742         F(20000000, P_GPLL0, 10, 1, 4),
1743         { }
1744 };
1745
1746 static struct clk_rcg2 pcie_aux_clk_src = {
1747         .cmd_rcgr = 0x28004,
1748         .freq_tbl = ftbl_pcie_aux_clk_src,
1749         .mnd_width = 16,
1750         .hid_width = 5,
1751         .parent_map = gcc_xo_gpll0_gpll0_aux_core_pi_sleep_clk_map,
1752         .clkr.hw.init = &(const struct clk_init_data) {
1753                 .name = "pcie_aux_clk_src",
1754                 .parent_data = gcc_xo_gpll0_gpll0_aux_core_pi_sleep_clk,
1755                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_aux_core_pi_sleep_clk),
1756                 .ops = &clk_rcg2_ops,
1757         },
1758 };
1759
1760 static struct clk_branch gcc_pcie0_aux_clk = {
1761         .halt_reg = 0x28034,
1762         .clkr = {
1763                 .enable_reg = 0x28034,
1764                 .enable_mask = BIT(0),
1765                 .hw.init = &(const struct clk_init_data) {
1766                         .name = "gcc_pcie0_aux_clk",
1767                         .parent_hws = (const struct clk_hw *[]) {
1768                                 &pcie_aux_clk_src.clkr.hw
1769                         },
1770                         .num_parents = 1,
1771                         .flags = CLK_SET_RATE_PARENT,
1772                         .ops = &clk_branch2_ops,
1773                 },
1774         },
1775 };
1776
1777 static struct clk_branch gcc_pcie1_aux_clk = {
1778         .halt_reg = 0x29034,
1779         .clkr = {
1780                 .enable_reg = 0x29034,
1781                 .enable_mask = BIT(0),
1782                 .hw.init = &(const struct clk_init_data) {
1783                         .name = "gcc_pcie1_aux_clk",
1784                         .parent_hws = (const struct clk_hw *[]) {
1785                                 &pcie_aux_clk_src.clkr.hw
1786                         },
1787                         .num_parents = 1,
1788                         .flags = CLK_SET_RATE_PARENT,
1789                         .ops = &clk_branch2_ops,
1790                 },
1791         },
1792 };
1793
1794 static struct clk_branch gcc_pcie2_aux_clk = {
1795         .halt_reg = 0x2a034,
1796         .clkr = {
1797                 .enable_reg = 0x2a034,
1798                 .enable_mask = BIT(0),
1799                 .hw.init = &(const struct clk_init_data) {
1800                         .name = "gcc_pcie2_aux_clk",
1801                         .parent_hws = (const struct clk_hw *[]) {
1802                                 &pcie_aux_clk_src.clkr.hw
1803                         },
1804                         .num_parents = 1,
1805                         .flags = CLK_SET_RATE_PARENT,
1806                         .ops = &clk_branch2_ops,
1807                 },
1808         },
1809 };
1810
1811 static struct clk_branch gcc_pcie3_aux_clk = {
1812         .halt_reg = 0x2b034,
1813         .clkr = {
1814                 .enable_reg = 0x2b034,
1815                 .enable_mask = BIT(0),
1816                 .hw.init = &(const struct clk_init_data) {
1817                         .name = "gcc_pcie3_aux_clk",
1818                         .parent_hws = (const struct clk_hw *[]) {
1819                                 &pcie_aux_clk_src.clkr.hw
1820                         },
1821                         .num_parents = 1,
1822                         .flags = CLK_SET_RATE_PARENT,
1823                         .ops = &clk_branch2_ops,
1824                 },
1825         },
1826 };
1827
1828 static const struct freq_tbl ftbl_usb_aux_clk_src[] = {
1829         F(24000000, P_XO, 1, 0, 0),
1830         { }
1831 };
1832
1833 static struct clk_rcg2 usb0_aux_clk_src = {
1834         .cmd_rcgr = 0x2c018,
1835         .freq_tbl = ftbl_usb_aux_clk_src,
1836         .mnd_width = 16,
1837         .hid_width = 5,
1838         .parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,
1839         .clkr.hw.init = &(const struct clk_init_data) {
1840                 .name = "usb0_aux_clk_src",
1841                 .parent_data = gcc_xo_gpll0_core_pi_sleep_clk,
1842                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_core_pi_sleep_clk),
1843                 .ops = &clk_rcg2_ops,
1844         },
1845 };
1846
1847 static struct clk_branch gcc_usb0_aux_clk = {
1848         .halt_reg = 0x2c048,
1849         .clkr = {
1850                 .enable_reg = 0x2c048,
1851                 .enable_mask = BIT(0),
1852                 .hw.init = &(const struct clk_init_data) {
1853                         .name = "gcc_usb0_aux_clk",
1854                         .parent_hws = (const struct clk_hw *[]) {
1855                                 &usb0_aux_clk_src.clkr.hw
1856                         },
1857                         .num_parents = 1,
1858                         .flags = CLK_SET_RATE_PARENT,
1859                         .ops = &clk_branch2_ops,
1860                 },
1861         },
1862 };
1863
1864 static const struct freq_tbl ftbl_usb0_master_clk_src[] = {
1865         F(100000000, P_GPLL0, 8, 0, 0),
1866         F(200000000, P_GPLL0, 4, 0, 0),
1867         { }
1868 };
1869
1870 static struct clk_rcg2 usb0_master_clk_src = {
1871         .cmd_rcgr = 0x2c004,
1872         .freq_tbl = ftbl_usb0_master_clk_src,
1873         .mnd_width = 8,
1874         .hid_width = 5,
1875         .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
1876         .clkr.hw.init = &(const struct clk_init_data) {
1877                 .name = "usb0_master_clk_src",
1878                 .parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
1879                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_out_main_div2_gpll0),
1880                 .ops = &clk_rcg2_ops,
1881         },
1882 };
1883
1884 static struct clk_branch gcc_usb0_master_clk = {
1885         .halt_reg = 0x2c044,
1886         .clkr = {
1887                 .enable_reg = 0x2c044,
1888                 .enable_mask = BIT(0),
1889                 .hw.init = &(const struct clk_init_data) {
1890                         .name = "gcc_usb0_master_clk",
1891                         .parent_hws = (const struct clk_hw *[]) {
1892                                 &usb0_master_clk_src.clkr.hw
1893                         },
1894                         .num_parents = 1,
1895                         .flags = CLK_SET_RATE_PARENT,
1896                         .ops = &clk_branch2_ops,
1897                 },
1898         },
1899 };
1900
1901 static struct clk_branch gcc_snoc_usb_clk = {
1902         .halt_reg = 0x2e058,
1903         .clkr = {
1904                 .enable_reg = 0x2e058,
1905                 .enable_mask = BIT(0),
1906                 .hw.init = &(const struct clk_init_data) {
1907                         .name = "gcc_snoc_usb_clk",
1908                         .parent_hws = (const struct clk_hw *[]) {
1909                                 &usb0_master_clk_src.clkr.hw
1910                         },
1911                         .num_parents = 1,
1912                         .flags = CLK_SET_RATE_PARENT,
1913                         .ops = &clk_branch2_ops,
1914                 },
1915         },
1916 };
1917
1918 static struct clk_branch gcc_anoc_usb_axi_clk = {
1919         .halt_reg = 0x2e084,
1920         .clkr = {
1921                 .enable_reg = 0x2e084,
1922                 .enable_mask = BIT(0),
1923                 .hw.init = &(const struct clk_init_data) {
1924                         .name = "gcc_anoc_usb_axi_clk",
1925                         .parent_hws = (const struct clk_hw *[]) {
1926                                 &usb0_master_clk_src.clkr.hw
1927                         },
1928                         .num_parents = 1,
1929                         .flags = CLK_SET_RATE_PARENT,
1930                         .ops = &clk_branch2_ops,
1931                 },
1932         },
1933 };
1934
1935 static const struct freq_tbl ftbl_usb0_mock_utmi_clk_src[] = {
1936         F(24000000, P_XO, 1, 0, 0),
1937         F(60000000, P_GPLL4, 10, 1, 2),
1938         { }
1939 };
1940
1941 static struct clk_rcg2 usb0_mock_utmi_clk_src = {
1942         .cmd_rcgr = 0x2c02c,
1943         .freq_tbl = ftbl_usb0_mock_utmi_clk_src,
1944         .mnd_width = 8,
1945         .hid_width = 5,
1946         .parent_map = gcc_xo_gpll4_gpll0_gpll0_out_main_div2_map,
1947         .clkr.hw.init = &(const struct clk_init_data) {
1948                 .name = "usb0_mock_utmi_clk_src",
1949                 .parent_data = gcc_xo_gpll4_gpll0_gpll0_out_main_div2,
1950                 .num_parents = ARRAY_SIZE(gcc_xo_gpll4_gpll0_gpll0_out_main_div2),
1951                 .ops = &clk_rcg2_ops,
1952         },
1953 };
1954
1955 static struct clk_regmap_div usb0_mock_utmi_div_clk_src = {
1956         .reg = 0x2c040,
1957         .shift = 0,
1958         .width = 2,
1959         .clkr.hw.init = &(const struct clk_init_data) {
1960                 .name = "usb0_mock_utmi_div_clk_src",
1961                 .parent_data = &(const struct clk_parent_data) {
1962                         .hw = &usb0_mock_utmi_clk_src.clkr.hw,
1963                 },
1964                 .num_parents = 1,
1965                 .flags = CLK_SET_RATE_PARENT,
1966                 .ops = &clk_regmap_div_ro_ops,
1967         },
1968 };
1969
1970 static struct clk_branch gcc_usb0_mock_utmi_clk = {
1971         .halt_reg = 0x2c04c,
1972         .clkr = {
1973                 .enable_reg = 0x2c04c,
1974                 .enable_mask = BIT(0),
1975                 .hw.init = &(const struct clk_init_data) {
1976                         .name = "gcc_usb0_mock_utmi_clk",
1977                         .parent_hws = (const struct clk_hw *[]) {
1978                                 &usb0_mock_utmi_div_clk_src.clkr.hw
1979                         },
1980                         .num_parents = 1,
1981                         .flags = CLK_SET_RATE_PARENT,
1982                         .ops = &clk_branch2_ops,
1983                 },
1984         },
1985 };
1986
1987 static struct clk_regmap_mux usb0_pipe_clk_src = {
1988         .reg = 0x2C074,
1989         .shift = 8,
1990         .width = 2,
1991         .parent_map = gcc_usb3phy_0_cc_pipe_clk_xo_map,
1992         .clkr = {
1993                 .hw.init = &(const struct clk_init_data) {
1994                         .name = "usb0_pipe_clk_src",
1995                         .parent_data = gcc_usb3phy_0_cc_pipe_clk_xo,
1996                         .num_parents = ARRAY_SIZE(gcc_usb3phy_0_cc_pipe_clk_xo),
1997                         .flags = CLK_SET_RATE_PARENT,
1998                         .ops = &clk_regmap_mux_closest_ops,
1999                 },
2000         },
2001 };
2002
2003 static struct clk_branch gcc_usb0_pipe_clk = {
2004         .halt_reg = 0x2c054,
2005         .halt_check = BRANCH_HALT_DELAY,
2006         .clkr = {
2007                 .enable_reg = 0x2c054,
2008                 .enable_mask = BIT(0),
2009                 .hw.init = &(const struct clk_init_data){
2010                         .name = "gcc_usb0_pipe_clk",
2011                         .parent_hws = (const struct clk_hw *[]) {
2012                                 &usb0_pipe_clk_src.clkr.hw
2013                         },
2014                         .num_parents = 1,
2015                         .flags = CLK_SET_RATE_PARENT,
2016                         .ops = &clk_branch2_ops,
2017                 },
2018         },
2019 };
2020
2021 static struct clk_branch gcc_usb0_sleep_clk = {
2022         .halt_reg = 0x2c058,
2023         .clkr = {
2024                 .enable_reg = 0x2c058,
2025                 .enable_mask = BIT(0),
2026                 .hw.init = &(const struct clk_init_data){
2027                         .name = "gcc_usb0_sleep_clk",
2028                         .parent_hws = (const struct clk_hw *[]) {
2029                                 &gcc_sleep_clk_src.clkr.hw
2030                         },
2031                         .num_parents = 1,
2032                         .flags = CLK_SET_RATE_PARENT,
2033                         .ops = &clk_branch2_ops,
2034                 },
2035         },
2036 };
2037
2038 static const struct freq_tbl ftbl_sdcc_apps_clk_src[] = {
2039         F(144000, P_XO, 16, 12, 125),
2040         F(400000, P_XO, 12, 1, 5),
2041         F(24000000, P_GPLL2, 12, 1, 4),
2042         F(48000000, P_GPLL2, 12, 1, 2),
2043         F(96000000, P_GPLL2, 12, 0, 0),
2044         F(177777778, P_GPLL0, 4.5, 0, 0),
2045         F(192000000, P_GPLL2, 6, 0, 0),
2046         F(384000000, P_GPLL2, 3, 0, 0),
2047         F(400000000, P_GPLL0, 2, 0, 0),
2048         { }
2049 };
2050
2051 static struct clk_rcg2 sdcc1_apps_clk_src = {
2052         .cmd_rcgr = 0x33004,
2053         .freq_tbl = ftbl_sdcc_apps_clk_src,
2054         .mnd_width = 8,
2055         .hid_width = 5,
2056         .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
2057         .clkr.hw.init = &(const struct clk_init_data) {
2058                 .name = "sdcc1_apps_clk_src",
2059                 .parent_data = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
2060                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll2_gpll0_out_main_div2),
2061                 .ops = &clk_rcg2_floor_ops,
2062         },
2063 };
2064
2065 static struct clk_branch gcc_sdcc1_apps_clk = {
2066         .halt_reg = 0x3302c,
2067         .clkr = {
2068                 .enable_reg = 0x3302c,
2069                 .enable_mask = BIT(0),
2070                 .hw.init = &(const struct clk_init_data) {
2071                         .name = "gcc_sdcc1_apps_clk",
2072                         .parent_hws = (const struct clk_hw *[]) {
2073                                 &sdcc1_apps_clk_src.clkr.hw
2074                         },
2075                         .num_parents = 1,
2076                         .flags = CLK_SET_RATE_PARENT,
2077                         .ops = &clk_branch2_ops,
2078                 },
2079         },
2080 };
2081
2082 static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = {
2083         F(150000000, P_GPLL4, 8, 0, 0),
2084         F(300000000, P_GPLL4, 4, 0, 0),
2085 };
2086
2087 static struct clk_rcg2 sdcc1_ice_core_clk_src = {
2088         .cmd_rcgr = 0x33018,
2089         .freq_tbl = ftbl_sdcc_ice_core_clk_src,
2090         .mnd_width = 8,
2091         .hid_width = 5,
2092         .parent_map = gcc_xo_gpll0_gpll4_gpll0_div2_map,
2093         .clkr.hw.init = &(const struct clk_init_data) {
2094                 .name = "sdcc1_ice_core_clk_src",
2095                 .parent_data = gcc_xo_gpll0_gpll4_gpll0_div2,
2096                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4_gpll0_div2),
2097                 .ops = &clk_rcg2_ops,
2098         },
2099 };
2100
2101 static struct clk_branch gcc_sdcc1_ice_core_clk = {
2102         .halt_reg = 0x33030,
2103         .clkr = {
2104                 .enable_reg = 0x33030,
2105                 .enable_mask = BIT(0),
2106                 .hw.init = &(const struct clk_init_data) {
2107                         .name = "gcc_sdcc1_ice_core_clk",
2108                         .parent_hws = (const struct clk_hw *[]) {
2109                                 &sdcc1_ice_core_clk_src.clkr.hw
2110                         },
2111                         .num_parents = 1,
2112                         .flags = CLK_SET_RATE_PARENT,
2113                         .ops = &clk_branch2_ops,
2114                 },
2115         },
2116 };
2117
2118 static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src[] = {
2119         F(24000000, P_XO, 1, 0, 0),
2120         F(50000000, P_GPLL0, 16, 0, 0),
2121         F(80000000, P_GPLL0, 10, 0, 0),
2122         F(100000000, P_GPLL0, 8, 0, 0),
2123         { }
2124 };
2125
2126 static struct clk_rcg2 pcnoc_bfdcd_clk_src = {
2127         .cmd_rcgr = 0x31004,
2128         .freq_tbl = ftbl_pcnoc_bfdcd_clk_src,
2129         .hid_width = 5,
2130         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
2131         .clkr.hw.init = &(const struct clk_init_data) {
2132                 .name = "pcnoc_bfdcd_clk_src",
2133                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
2134                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
2135                 .flags = CLK_IS_CRITICAL,
2136                 .ops = &clk_rcg2_ops,
2137         },
2138 };
2139
2140 static struct clk_branch gcc_crypto_axi_clk = {
2141         .halt_reg = 0x16010,
2142         .clkr = {
2143                 .enable_reg = 0x16010,
2144                 .enable_mask = BIT(0),
2145                 .hw.init = &(const struct clk_init_data) {
2146                         .name = "gcc_crypto_axi_clk",
2147                         .parent_hws = (const struct clk_hw *[]) {
2148                                 &pcnoc_bfdcd_clk_src.clkr.hw },
2149                         .num_parents = 1,
2150                         .flags = CLK_SET_RATE_PARENT,
2151                         .ops = &clk_branch2_ops,
2152                 },
2153         },
2154 };
2155
2156 static struct clk_branch gcc_crypto_ahb_clk = {
2157         .halt_reg = 0x16014,
2158         .clkr = {
2159                 .enable_reg = 0x16014,
2160                 .enable_mask = BIT(0),
2161                 .hw.init = &(const struct clk_init_data) {
2162                         .name = "gcc_crypto_ahb_clk",
2163                         .parent_hws = (const struct clk_hw *[]) {
2164                                 &pcnoc_bfdcd_clk_src.clkr.hw },
2165                         .num_parents = 1,
2166                         .flags = CLK_SET_RATE_PARENT,
2167                         .ops = &clk_branch2_ops,
2168                 },
2169         },
2170 };
2171
2172 static struct clk_branch gcc_nsscfg_clk = {
2173         .halt_reg = 0x1702c,
2174         .clkr = {
2175                 .enable_reg = 0x1702c,
2176                 .enable_mask = BIT(0),
2177                 .hw.init = &(const struct clk_init_data) {
2178                         .name = "gcc_nsscfg_clk",
2179                         .parent_hws = (const struct clk_hw *[]) {
2180                                 &pcnoc_bfdcd_clk_src.clkr.hw
2181                         },
2182                         .num_parents = 1,
2183                         .flags = CLK_SET_RATE_PARENT,
2184                         .ops = &clk_branch2_ops,
2185                 },
2186         },
2187 };
2188
2189 static struct clk_branch gcc_nssnoc_nsscc_clk = {
2190         .halt_reg = 0x17030,
2191         .clkr = {
2192                 .enable_reg = 0x17030,
2193                 .enable_mask = BIT(0),
2194                 .hw.init = &(const struct clk_init_data) {
2195                         .name = "gcc_nssnoc_nsscc_clk",
2196                         .parent_hws = (const struct clk_hw *[]) {
2197                                 &pcnoc_bfdcd_clk_src.clkr.hw
2198                         },
2199                         .num_parents = 1,
2200                         .flags = CLK_SET_RATE_PARENT,
2201                         .ops = &clk_branch2_ops,
2202                 },
2203         },
2204 };
2205
2206 static struct clk_branch gcc_nsscc_clk = {
2207         .halt_reg = 0x17034,
2208         .clkr = {
2209                 .enable_reg = 0x17034,
2210                 .enable_mask = BIT(0),
2211                 .hw.init = &(const struct clk_init_data) {
2212                         .name = "gcc_nsscc_clk",
2213                         .parent_hws = (const struct clk_hw *[]) {
2214                                 &pcnoc_bfdcd_clk_src.clkr.hw
2215                         },
2216                         .num_parents = 1,
2217                         .flags = CLK_SET_RATE_PARENT,
2218                         .ops = &clk_branch2_ops,
2219                 },
2220         },
2221 };
2222
2223 static struct clk_branch gcc_nssnoc_pcnoc_1_clk = {
2224         .halt_reg = 0x17080,
2225         .clkr = {
2226                 .enable_reg = 0x17080,
2227                 .enable_mask = BIT(0),
2228                 .hw.init = &(const struct clk_init_data) {
2229                         .name = "gcc_nssnoc_pcnoc_1_clk",
2230                         .parent_hws = (const struct clk_hw *[]) {
2231                                 &pcnoc_bfdcd_clk_src.clkr.hw
2232                         },
2233                         .num_parents = 1,
2234                         .flags = CLK_SET_RATE_PARENT,
2235                         .ops = &clk_branch2_ops,
2236                 },
2237         },
2238 };
2239
2240 static struct clk_branch gcc_qdss_dap_ahb_clk = {
2241         .halt_reg = 0x2d064,
2242         .clkr = {
2243                 .enable_reg = 0x2d064,
2244                 .enable_mask = BIT(0),
2245                 .hw.init = &(const struct clk_init_data) {
2246                         .name = "gcc_qdss_dap_ahb_clk",
2247                         .parent_hws = (const struct clk_hw *[]) {
2248                                 &pcnoc_bfdcd_clk_src.clkr.hw
2249                         },
2250                         .num_parents = 1,
2251                         .flags = CLK_SET_RATE_PARENT,
2252                         .ops = &clk_branch2_ops,
2253                 },
2254         },
2255 };
2256
2257 static struct clk_branch gcc_qdss_cfg_ahb_clk = {
2258         .halt_reg = 0x2d068,
2259         .clkr = {
2260                 .enable_reg = 0x2d068,
2261                 .enable_mask = BIT(0),
2262                 .hw.init = &(const struct clk_init_data) {
2263                         .name = "gcc_qdss_cfg_ahb_clk",
2264                         .parent_hws = (const struct clk_hw *[]) {
2265                                 &pcnoc_bfdcd_clk_src.clkr.hw
2266                         },
2267                         .num_parents = 1,
2268                         .flags = CLK_SET_RATE_PARENT,
2269                         .ops = &clk_branch2_ops,
2270                 },
2271         },
2272 };
2273
2274 static struct clk_branch gcc_qpic_ahb_clk = {
2275         .halt_reg = 0x32010,
2276         .clkr = {
2277                 .enable_reg = 0x32010,
2278                 .enable_mask = BIT(0),
2279                 .hw.init = &(const struct clk_init_data) {
2280                         .name = "gcc_qpic_ahb_clk",
2281                         .parent_hws = (const struct clk_hw *[]) {
2282                                 &pcnoc_bfdcd_clk_src.clkr.hw
2283                         },
2284                         .num_parents = 1,
2285                         .flags = CLK_SET_RATE_PARENT,
2286                         .ops = &clk_branch2_ops,
2287                 },
2288         },
2289 };
2290
2291 static struct clk_branch gcc_qpic_clk = {
2292         .halt_reg = 0x32014,
2293         .clkr = {
2294                 .enable_reg = 0x32014,
2295                 .enable_mask = BIT(0),
2296                 .hw.init = &(const struct clk_init_data) {
2297                         .name = "gcc_qpic_clk",
2298                         .parent_hws = (const struct clk_hw *[]) {
2299                                 &pcnoc_bfdcd_clk_src.clkr.hw
2300                         },
2301                         .num_parents = 1,
2302                         .flags = CLK_SET_RATE_PARENT,
2303                         .ops = &clk_branch2_ops,
2304                 },
2305         },
2306 };
2307
2308 static struct clk_branch gcc_blsp1_ahb_clk = {
2309         .halt_reg = 0x01004,
2310         .halt_check = BRANCH_HALT_VOTED,
2311         .clkr = {
2312                 .enable_reg = 0x0b004,
2313                 .enable_mask = BIT(4),
2314                 .hw.init = &(const struct clk_init_data) {
2315                         .name = "gcc_blsp1_ahb_clk",
2316                         .parent_hws = (const struct clk_hw *[]) {
2317                                 &pcnoc_bfdcd_clk_src.clkr.hw
2318                         },
2319                         .num_parents = 1,
2320                         .flags = CLK_SET_RATE_PARENT,
2321                         .ops = &clk_branch2_ops,
2322                 },
2323         },
2324 };
2325
2326 static struct clk_branch gcc_mdio_ahb_clk = {
2327         .halt_reg = 0x17040,
2328         .clkr = {
2329                 .enable_reg = 0x17040,
2330                 .enable_mask = BIT(0),
2331                 .hw.init = &(const struct clk_init_data) {
2332                         .name = "gcc_mdio_ahb_clk",
2333                         .parent_hws = (const struct clk_hw *[]) {
2334                                 &pcnoc_bfdcd_clk_src.clkr.hw
2335                         },
2336                         .num_parents = 1,
2337                         .flags = CLK_SET_RATE_PARENT,
2338                         .ops = &clk_branch2_ops,
2339                 },
2340         },
2341 };
2342
2343 static struct clk_branch gcc_prng_ahb_clk = {
2344         .halt_reg = 0x13024,
2345         .halt_check = BRANCH_HALT_VOTED,
2346         .clkr = {
2347                 .enable_reg = 0x0b004,
2348                 .enable_mask = BIT(10),
2349                 .hw.init = &(const struct clk_init_data) {
2350                         .name = "gcc_prng_ahb_clk",
2351                         .parent_hws = (const struct clk_hw *[]) {
2352                                 &pcnoc_bfdcd_clk_src.clkr.hw
2353                         },
2354                         .num_parents = 1,
2355                         .flags = CLK_SET_RATE_PARENT,
2356                         .ops = &clk_branch2_ops,
2357                 },
2358         },
2359 };
2360
2361 static struct clk_branch gcc_uniphy0_ahb_clk = {
2362         .halt_reg = 0x1704c,
2363         .clkr = {
2364                 .enable_reg = 0x1704c,
2365                 .enable_mask = BIT(0),
2366                 .hw.init = &(const struct clk_init_data) {
2367                         .name = "gcc_uniphy0_ahb_clk",
2368                         .parent_hws = (const struct clk_hw *[]) {
2369                                 &pcnoc_bfdcd_clk_src.clkr.hw
2370                         },
2371                         .num_parents = 1,
2372                         .flags = CLK_SET_RATE_PARENT,
2373                         .ops = &clk_branch2_ops,
2374                 },
2375         },
2376 };
2377
2378 static struct clk_branch gcc_uniphy1_ahb_clk = {
2379         .halt_reg = 0x1705c,
2380         .clkr = {
2381                 .enable_reg = 0x1705c,
2382                 .enable_mask = BIT(0),
2383                 .hw.init = &(const struct clk_init_data) {
2384                         .name = "gcc_uniphy1_ahb_clk",
2385                         .parent_hws = (const struct clk_hw *[]) {
2386                                 &pcnoc_bfdcd_clk_src.clkr.hw
2387                         },
2388                         .num_parents = 1,
2389                         .flags = CLK_SET_RATE_PARENT,
2390                         .ops = &clk_branch2_ops,
2391                 },
2392         },
2393 };
2394
2395 static struct clk_branch gcc_uniphy2_ahb_clk = {
2396         .halt_reg = 0x1706c,
2397         .clkr = {
2398                 .enable_reg = 0x1706c,
2399                 .enable_mask = BIT(0),
2400                 .hw.init = &(const struct clk_init_data) {
2401                         .name = "gcc_uniphy2_ahb_clk",
2402                         .parent_hws = (const struct clk_hw *[]) {
2403                                 &pcnoc_bfdcd_clk_src.clkr.hw
2404                         },
2405                         .num_parents = 1,
2406                         .flags = CLK_SET_RATE_PARENT,
2407                         .ops = &clk_branch2_ops,
2408                 },
2409         },
2410 };
2411
2412 static struct clk_branch gcc_cmn_12gpll_ahb_clk = {
2413         .halt_reg = 0x3a004,
2414         .clkr = {
2415                 .enable_reg = 0x3a004,
2416                 .enable_mask = BIT(0),
2417                 .hw.init = &(const struct clk_init_data) {
2418                         .name = "gcc_cmn_12gpll_ahb_clk",
2419                         .parent_hws = (const struct clk_hw *[]) {
2420                                 &pcnoc_bfdcd_clk_src.clkr.hw
2421                         },
2422                         .num_parents = 1,
2423                         .flags = CLK_SET_RATE_PARENT,
2424                         .ops = &clk_branch2_ops,
2425                 },
2426         },
2427 };
2428
2429 static struct clk_branch gcc_cmn_12gpll_apu_clk = {
2430         .halt_reg = 0x3a00c,
2431         .clkr = {
2432                 .enable_reg = 0x3a00c,
2433                 .enable_mask = BIT(0),
2434                 .hw.init = &(const struct clk_init_data) {
2435                         .name = "gcc_cmn_12gpll_apu_clk",
2436                         .parent_hws = (const struct clk_hw *[]) {
2437                                 &pcnoc_bfdcd_clk_src.clkr.hw
2438                         },
2439                         .num_parents = 1,
2440                         .flags = CLK_SET_RATE_PARENT,
2441                         .ops = &clk_branch2_ops,
2442                 },
2443         },
2444 };
2445
2446 static struct clk_branch gcc_pcie0_ahb_clk = {
2447         .halt_reg = 0x28030,
2448         .clkr = {
2449                 .enable_reg = 0x28030,
2450                 .enable_mask = BIT(0),
2451                 .hw.init = &(const struct clk_init_data) {
2452                         .name = "gcc_pcie0_ahb_clk",
2453                         .parent_hws = (const struct clk_hw *[]) {
2454                                 &pcnoc_bfdcd_clk_src.clkr.hw
2455                         },
2456                         .num_parents = 1,
2457                         .flags = CLK_SET_RATE_PARENT,
2458                         .ops = &clk_branch2_ops,
2459                 },
2460         },
2461 };
2462
2463 static struct clk_branch gcc_pcie1_ahb_clk = {
2464         .halt_reg = 0x29030,
2465         .clkr = {
2466                 .enable_reg = 0x29030,
2467                 .enable_mask = BIT(0),
2468                 .hw.init = &(const struct clk_init_data) {
2469                         .name = "gcc_pcie1_ahb_clk",
2470                         .parent_hws = (const struct clk_hw *[]) {
2471                                 &pcnoc_bfdcd_clk_src.clkr.hw
2472                         },
2473                         .num_parents = 1,
2474                         .flags = CLK_SET_RATE_PARENT,
2475                         .ops = &clk_branch2_ops,
2476                 },
2477         },
2478 };
2479
2480 static struct clk_branch gcc_pcie2_ahb_clk = {
2481         .halt_reg = 0x2a030,
2482         .clkr = {
2483                 .enable_reg = 0x2a030,
2484                 .enable_mask = BIT(0),
2485                 .hw.init = &(const struct clk_init_data) {
2486                         .name = "gcc_pcie2_ahb_clk",
2487                         .parent_hws = (const struct clk_hw *[]) {
2488                                 &pcnoc_bfdcd_clk_src.clkr.hw
2489                         },
2490                         .num_parents = 1,
2491                         .flags = CLK_SET_RATE_PARENT,
2492                         .ops = &clk_branch2_ops,
2493                 },
2494         },
2495 };
2496
2497 static struct clk_branch gcc_pcie3_ahb_clk = {
2498         .halt_reg = 0x2b030,
2499         .clkr = {
2500                 .enable_reg = 0x2b030,
2501                 .enable_mask = BIT(0),
2502                 .hw.init = &(const struct clk_init_data) {
2503                         .name = "gcc_pcie3_ahb_clk",
2504                         .parent_hws = (const struct clk_hw *[]) {
2505                                 &pcnoc_bfdcd_clk_src.clkr.hw
2506                         },
2507                         .num_parents = 1,
2508                         .flags = CLK_SET_RATE_PARENT,
2509                         .ops = &clk_branch2_ops,
2510                 },
2511         },
2512 };
2513
2514 static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {
2515         .halt_reg = 0x2c05c,
2516         .clkr = {
2517                 .enable_reg = 0x2c05c,
2518                 .enable_mask = BIT(0),
2519                 .hw.init = &(const struct clk_init_data) {
2520                         .name = "gcc_usb0_phy_cfg_ahb_clk",
2521                         .parent_hws = (const struct clk_hw *[]) {
2522                                 &pcnoc_bfdcd_clk_src.clkr.hw
2523                         },
2524                         .num_parents = 1,
2525                         .flags = CLK_SET_RATE_PARENT,
2526                         .ops = &clk_branch2_ops,
2527                 },
2528         },
2529 };
2530
2531 static struct clk_branch gcc_sdcc1_ahb_clk = {
2532         .halt_reg = 0x33034,
2533         .clkr = {
2534                 .enable_reg = 0x33034,
2535                 .enable_mask = BIT(0),
2536                 .hw.init = &(const struct clk_init_data) {
2537                         .name = "gcc_sdcc1_ahb_clk",
2538                         .parent_hws = (const struct clk_hw *[]) {
2539                                 &pcnoc_bfdcd_clk_src.clkr.hw
2540                         },
2541                         .num_parents = 1,
2542                         .flags = CLK_SET_RATE_PARENT,
2543                         .ops = &clk_branch2_ops,
2544                 },
2545         },
2546 };
2547
2548 static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src[] = {
2549         F(24000000, P_XO, 1, 0, 0),
2550         F(133333333, P_GPLL0, 6, 0, 0),
2551         F(200000000, P_GPLL0, 4, 0, 0),
2552         F(342850000, P_GPLL4, 3.5, 0, 0),
2553         { }
2554 };
2555
2556 static struct clk_rcg2 system_noc_bfdcd_clk_src = {
2557         .cmd_rcgr = 0x2e004,
2558         .freq_tbl = ftbl_system_noc_bfdcd_clk_src,
2559         .hid_width = 5,
2560         .parent_map = gcc_xo_gpll0_gpll4_map,
2561         .clkr.hw.init = &(const struct clk_init_data) {
2562                 .name = "system_noc_bfdcd_clk_src",
2563                 .parent_data = gcc_xo_gpll0_gpll4,
2564                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),
2565                 .flags = CLK_IS_CRITICAL,
2566                 .ops = &clk_rcg2_ops,
2567         },
2568 };
2569
2570 static struct clk_branch gcc_q6ss_boot_clk = {
2571         .halt_reg = 0x25080,
2572         .halt_check = BRANCH_HALT_SKIP,
2573         .clkr = {
2574                 .enable_reg = 0x25080,
2575                 .enable_mask = BIT(0),
2576                 .hw.init = &(const struct clk_init_data) {
2577                         .name = "gcc_q6ss_boot_clk",
2578                         .parent_hws = (const struct clk_hw *[]) {
2579                                 &system_noc_bfdcd_clk_src.clkr.hw
2580                         },
2581                         .num_parents = 1,
2582                         .flags = CLK_SET_RATE_PARENT,
2583                         .ops = &clk_branch2_ops,
2584                 },
2585         },
2586 };
2587
2588 static struct clk_branch gcc_nssnoc_snoc_clk = {
2589         .halt_reg = 0x17028,
2590         .clkr = {
2591                 .enable_reg = 0x17028,
2592                 .enable_mask = BIT(0),
2593                 .hw.init = &(const struct clk_init_data) {
2594                         .name = "gcc_nssnoc_snoc_clk",
2595                         .parent_hws = (const struct clk_hw *[]) {
2596                                 &system_noc_bfdcd_clk_src.clkr.hw
2597                         },
2598                         .num_parents = 1,
2599                         .flags = CLK_SET_RATE_PARENT,
2600                         .ops = &clk_branch2_ops,
2601                 },
2602         },
2603 };
2604
2605 static struct clk_branch gcc_nssnoc_snoc_1_clk = {
2606         .halt_reg = 0x1707c,
2607         .clkr = {
2608                 .enable_reg = 0x1707c,
2609                 .enable_mask = BIT(0),
2610                 .hw.init = &(const struct clk_init_data) {
2611                         .name = "gcc_nssnoc_snoc_1_clk",
2612                         .parent_hws = (const struct clk_hw *[]) {
2613                                 &system_noc_bfdcd_clk_src.clkr.hw
2614                         },
2615                         .num_parents = 1,
2616                         .flags = CLK_SET_RATE_PARENT,
2617                         .ops = &clk_branch2_ops,
2618                 },
2619         },
2620 };
2621
2622 static struct clk_branch gcc_qdss_etr_usb_clk = {
2623         .halt_reg = 0x2d060,
2624         .clkr = {
2625                 .enable_reg = 0x2d060,
2626                 .enable_mask = BIT(0),
2627                 .hw.init = &(const struct clk_init_data) {
2628                         .name = "gcc_qdss_etr_usb_clk",
2629                         .parent_hws = (const struct clk_hw *[]) {
2630                                 &system_noc_bfdcd_clk_src.clkr.hw
2631                         },
2632                         .num_parents = 1,
2633                         .flags = CLK_SET_RATE_PARENT,
2634                         .ops = &clk_branch2_ops,
2635                 },
2636         },
2637 };
2638
2639 static const struct freq_tbl ftbl_wcss_ahb_clk_src[] = {
2640         F(24000000, P_XO, 1, 0, 0),
2641         F(133333333, P_GPLL0, 6, 0, 0),
2642         { }
2643 };
2644
2645 static struct clk_rcg2 wcss_ahb_clk_src = {
2646         .cmd_rcgr = 0x25030,
2647         .freq_tbl = ftbl_wcss_ahb_clk_src,
2648         .hid_width = 5,
2649         .parent_map = gcc_xo_gpll0_map,
2650         .clkr.hw.init = &(const struct clk_init_data) {
2651                 .name = "wcss_ahb_clk_src",
2652                 .parent_data = gcc_xo_gpll0,
2653                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
2654                 .ops = &clk_rcg2_ops,
2655         },
2656 };
2657
2658 static struct clk_branch gcc_q6_ahb_clk = {
2659         .halt_reg = 0x25014,
2660         .clkr = {
2661                 .enable_reg = 0x25014,
2662                 .enable_mask = BIT(0),
2663                 .hw.init = &(const struct clk_init_data) {
2664                         .name = "gcc_q6_ahb_clk",
2665                         .parent_hws = (const struct clk_hw *[]) {
2666                                 &wcss_ahb_clk_src.clkr.hw
2667                         },
2668                         .num_parents = 1,
2669                         .flags = CLK_SET_RATE_PARENT,
2670                         .ops = &clk_branch2_ops,
2671                 },
2672         },
2673 };
2674
2675 static struct clk_branch gcc_q6_ahb_s_clk = {
2676         .halt_reg = 0x25018,
2677         .clkr = {
2678                 .enable_reg = 0x25018,
2679                 .enable_mask = BIT(0),
2680                 .hw.init = &(const struct clk_init_data) {
2681                         .name = "gcc_q6_ahb_s_clk",
2682                         .parent_hws = (const struct clk_hw *[]) {
2683                                 &wcss_ahb_clk_src.clkr.hw
2684                         },
2685                         .num_parents = 1,
2686                         .flags = CLK_SET_RATE_PARENT,
2687                         .ops = &clk_branch2_ops,
2688                 },
2689         },
2690 };
2691
2692 static struct clk_branch gcc_wcss_ecahb_clk = {
2693         .halt_reg = 0x25058,
2694         .clkr = {
2695                 .enable_reg = 0x25058,
2696                 .enable_mask = BIT(0),
2697                 .hw.init = &(const struct clk_init_data) {
2698                         .name = "gcc_wcss_ecahb_clk",
2699                         .parent_hws = (const struct clk_hw *[]) {
2700                                 &wcss_ahb_clk_src.clkr.hw
2701                         },
2702                         .num_parents = 1,
2703                         .flags = CLK_SET_RATE_PARENT,
2704                         .ops = &clk_branch2_ops,
2705                 },
2706         },
2707 };
2708
2709 static struct clk_branch gcc_wcss_acmt_clk = {
2710         .halt_reg = 0x2505c,
2711         .clkr = {
2712                 .enable_reg = 0x2505c,
2713                 .enable_mask = BIT(0),
2714                 .hw.init = &(const struct clk_init_data) {
2715                         .name = "gcc_wcss_acmt_clk",
2716                         .parent_hws = (const struct clk_hw *[]) {
2717                                 &wcss_ahb_clk_src.clkr.hw
2718                         },
2719                         .num_parents = 1,
2720                         .flags = CLK_SET_RATE_PARENT,
2721                         .ops = &clk_branch2_ops,
2722                 },
2723         },
2724 };
2725
2726 static struct clk_branch gcc_sys_noc_wcss_ahb_clk = {
2727         .halt_reg = 0x2e030,
2728         .clkr = {
2729                 .enable_reg = 0x2e030,
2730                 .enable_mask = BIT(0),
2731                 .hw.init = &(const struct clk_init_data) {
2732                         .name = "gcc_sys_noc_wcss_ahb_clk",
2733                         .parent_hws = (const struct clk_hw *[]) {
2734                                 &wcss_ahb_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 const struct freq_tbl ftbl_wcss_axi_m_clk_src[] = {
2744         F(24000000, P_XO, 1, 0, 0),
2745         F(133333333, P_GPLL0, 6, 0, 0),
2746         F(266666667, P_GPLL0, 3, 0, 0),
2747         { }
2748 };
2749
2750 static struct clk_rcg2 wcss_axi_m_clk_src = {
2751         .cmd_rcgr = 0x25078,
2752         .freq_tbl = ftbl_wcss_axi_m_clk_src,
2753         .hid_width = 5,
2754         .parent_map = gcc_xo_gpll0_map,
2755         .clkr.hw.init = &(const struct clk_init_data) {
2756                 .name = "wcss_axi_m_clk_src",
2757                 .parent_data = gcc_xo_gpll0,
2758                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
2759                 .ops = &clk_rcg2_ops,
2760         },
2761 };
2762
2763 static struct clk_branch gcc_anoc_wcss_axi_m_clk = {
2764         .halt_reg = 0x2e0a8,
2765         .clkr = {
2766                 .enable_reg = 0x2e0a8,
2767                 .enable_mask = BIT(0),
2768                 .hw.init = &(const struct clk_init_data) {
2769                         .name = "gcc_anoc_wcss_axi_m_clk",
2770                         .parent_hws = (const struct clk_hw *[]) {
2771                                 &wcss_axi_m_clk_src.clkr.hw
2772                         },
2773                         .num_parents = 1,
2774                         .flags = CLK_SET_RATE_PARENT,
2775                         .ops = &clk_branch2_ops,
2776                 },
2777         },
2778 };
2779
2780 static const struct freq_tbl ftbl_qdss_at_clk_src[] = {
2781         F(240000000, P_GPLL4, 5, 0, 0),
2782         { }
2783 };
2784
2785 static struct clk_rcg2 qdss_at_clk_src = {
2786         .cmd_rcgr = 0x2d004,
2787         .freq_tbl = ftbl_qdss_at_clk_src,
2788         .hid_width = 5,
2789         .parent_map = gcc_xo_gpll4_gpll0_gpll0_div2_map,
2790         .clkr.hw.init = &(const struct clk_init_data) {
2791                 .name = "qdss_at_clk_src",
2792                 .parent_data = gcc_xo_gpll4_gpll0_gpll0_div2,
2793                 .num_parents = ARRAY_SIZE(gcc_xo_gpll4_gpll0_gpll0_div2),
2794                 .ops = &clk_rcg2_ops,
2795         },
2796 };
2797
2798 static struct clk_branch gcc_q6ss_atbm_clk = {
2799         .halt_reg = 0x2501c,
2800         .clkr = {
2801                 .enable_reg = 0x2501c,
2802                 .enable_mask = BIT(0),
2803                 .hw.init = &(const struct clk_init_data) {
2804                         .name = "gcc_q6ss_atbm_clk",
2805                         .parent_hws = (const struct clk_hw *[]) {
2806                                 &qdss_at_clk_src.clkr.hw
2807                         },
2808                         .num_parents = 1,
2809                         .flags = CLK_SET_RATE_PARENT,
2810                         .ops = &clk_branch2_ops,
2811                 },
2812         },
2813 };
2814
2815 static struct clk_branch gcc_wcss_dbg_ifc_atb_clk = {
2816         .halt_reg = 0x2503c,
2817         .clkr = {
2818                 .enable_reg = 0x2503c,
2819                 .enable_mask = BIT(0),
2820                 .hw.init = &(const struct clk_init_data) {
2821                         .name = "gcc_wcss_dbg_ifc_atb_clk",
2822                         .parent_hws = (const struct clk_hw *[]) {
2823                                 &qdss_at_clk_src.clkr.hw
2824                         },
2825                         .num_parents = 1,
2826                         .flags = CLK_SET_RATE_PARENT,
2827                         .ops = &clk_branch2_ops,
2828                 },
2829         },
2830 };
2831
2832 static struct clk_branch gcc_nssnoc_atb_clk = {
2833         .halt_reg = 0x17014,
2834         .clkr = {
2835                 .enable_reg = 0x17014,
2836                 .enable_mask = BIT(0),
2837                 .hw.init = &(const struct clk_init_data) {
2838                         .name = "gcc_nssnoc_atb_clk",
2839                         .parent_hws = (const struct clk_hw *[]) {
2840                                 &qdss_at_clk_src.clkr.hw
2841                         },
2842                         .num_parents = 1,
2843                         .flags = CLK_SET_RATE_PARENT,
2844                         .ops = &clk_branch2_ops,
2845                 },
2846         },
2847 };
2848
2849 static struct clk_branch gcc_qdss_at_clk = {
2850         .halt_reg = 0x2d038,
2851         .clkr = {
2852                 .enable_reg = 0x2d038,
2853                 .enable_mask = BIT(0),
2854                 .hw.init = &(const struct clk_init_data) {
2855                         .name = "gcc_qdss_at_clk",
2856                         .parent_hws = (const struct clk_hw *[]) {
2857                                 &qdss_at_clk_src.clkr.hw
2858                         },
2859                         .num_parents = 1,
2860                         .flags = CLK_SET_RATE_PARENT,
2861                         .ops = &clk_branch2_ops,
2862                 },
2863         },
2864 };
2865
2866 static struct clk_branch gcc_sys_noc_at_clk = {
2867         .halt_reg = 0x2e038,
2868         .clkr = {
2869                 .enable_reg = 0x2e038,
2870                 .enable_mask = BIT(0),
2871                 .hw.init = &(const struct clk_init_data) {
2872                         .name = "gcc_sys_noc_at_clk",
2873                         .parent_hws = (const struct clk_hw *[]) {
2874                                 &qdss_at_clk_src.clkr.hw
2875                         },
2876                         .num_parents = 1,
2877                         .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
2878                         .ops = &clk_branch2_ops,
2879                 },
2880         },
2881 };
2882
2883 static struct clk_branch gcc_pcnoc_at_clk = {
2884         .halt_reg = 0x31024,
2885         .clkr = {
2886                 .enable_reg = 0x31024,
2887                 .enable_mask = BIT(0),
2888                 .hw.init = &(const struct clk_init_data) {
2889                         .name = "gcc_pcnoc_at_clk",
2890                         .parent_hws = (const struct clk_hw *[]) {
2891                                 &qdss_at_clk_src.clkr.hw
2892                         },
2893                         .num_parents = 1,
2894                         .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
2895                         .ops = &clk_branch2_ops,
2896                 },
2897         },
2898 };
2899
2900 static struct clk_fixed_factor gcc_eud_at_div_clk_src = {
2901         .mult = 1,
2902         .div = 6,
2903         .hw.init = &(const struct clk_init_data) {
2904                 .name = "gcc_eud_at_div_clk_src",
2905                 .parent_hws = (const struct clk_hw *[]) {
2906                         &qdss_at_clk_src.clkr.hw
2907                 },
2908                 .num_parents = 1,
2909                 .flags = CLK_SET_RATE_PARENT,
2910                 .ops = &clk_fixed_factor_ops,
2911         },
2912 };
2913
2914 static struct clk_branch gcc_usb0_eud_at_clk = {
2915         .halt_reg = 0x30004,
2916         .clkr = {
2917                 .enable_reg = 0x30004,
2918                 .enable_mask = BIT(0),
2919                 .hw.init = &(const struct clk_init_data) {
2920                         .name = "gcc_usb0_eud_at_clk",
2921                         .parent_hws = (const struct clk_hw *[]) {
2922                                 &gcc_eud_at_div_clk_src.hw
2923                         },
2924                         .num_parents = 1,
2925                         .flags = CLK_SET_RATE_PARENT,
2926                         .ops = &clk_branch2_ops,
2927                 },
2928         },
2929 };
2930
2931 static struct clk_branch gcc_qdss_eud_at_clk = {
2932         .halt_reg = 0x2d06c,
2933         .clkr = {
2934                 .enable_reg = 0x2d06c,
2935                 .enable_mask = BIT(0),
2936                 .hw.init = &(const struct clk_init_data) {
2937                         .name = "gcc_qdss_eud_at_clk",
2938                         .parent_hws = (const struct clk_hw *[]) {
2939                                 &gcc_eud_at_div_clk_src.hw
2940                         },
2941                         .num_parents = 1,
2942                         .flags = CLK_SET_RATE_PARENT,
2943                         .ops = &clk_branch2_ops,
2944                 },
2945         },
2946 };
2947
2948 static const struct freq_tbl ftbl_qdss_stm_clk_src[] = {
2949         F(24000000, P_XO, 1, 0, 0),
2950         F(200000000, P_GPLL0, 4, 0, 0),
2951         { }
2952 };
2953
2954 static struct clk_rcg2 qdss_stm_clk_src = {
2955         .cmd_rcgr = 0x2d00c,
2956         .freq_tbl = ftbl_qdss_stm_clk_src,
2957         .hid_width = 5,
2958         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
2959         .clkr.hw.init = &(const struct clk_init_data) {
2960                 .name = "qdss_stm_clk_src",
2961                 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
2962                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
2963                 .ops = &clk_rcg2_ops,
2964         },
2965 };
2966
2967 static struct clk_branch gcc_qdss_stm_clk = {
2968         .halt_reg = 0x2d03c,
2969         .clkr = {
2970                 .enable_reg = 0x2d03c,
2971                 .enable_mask = BIT(0),
2972                 .hw.init = &(const struct clk_init_data) {
2973                         .name = "gcc_qdss_stm_clk",
2974                         .parent_hws = (const struct clk_hw *[]) {
2975                                 &qdss_stm_clk_src.clkr.hw
2976                         },
2977                         .num_parents = 1,
2978                         .flags = CLK_SET_RATE_PARENT,
2979                         .ops = &clk_branch2_ops,
2980                 },
2981         },
2982 };
2983
2984 static struct clk_branch gcc_sys_noc_qdss_stm_axi_clk = {
2985         .halt_reg = 0x2e034,
2986         .clkr = {
2987                 .enable_reg = 0x2e034,
2988                 .enable_mask = BIT(0),
2989                 .hw.init = &(const struct clk_init_data) {
2990                         .name = "gcc_sys_noc_qdss_stm_axi_clk",
2991                         .parent_hws = (const struct clk_hw *[]) {
2992                                 &qdss_stm_clk_src.clkr.hw
2993                         },
2994                         .num_parents = 1,
2995                         .flags = CLK_SET_RATE_PARENT,
2996                         .ops = &clk_branch2_ops,
2997                 },
2998         },
2999 };
3000
3001 static const struct freq_tbl ftbl_qdss_traceclkin_clk_src[] = {
3002         F(300000000, P_GPLL4, 4, 0, 0),
3003         { }
3004 };
3005
3006 static struct clk_rcg2 qdss_traceclkin_clk_src = {
3007         .cmd_rcgr = 0x2d014,
3008         .freq_tbl = ftbl_qdss_traceclkin_clk_src,
3009         .hid_width = 5,
3010         .parent_map = gcc_xo_gpll4_gpll0_gpll0_div2_map,
3011         .clkr.hw.init = &(const struct clk_init_data) {
3012                 .name = "qdss_traceclkin_clk_src",
3013                 .parent_data = gcc_xo_gpll4_gpll0_gpll0_div2,
3014                 .num_parents = ARRAY_SIZE(gcc_xo_gpll4_gpll0_gpll0_div2),
3015                 .ops = &clk_rcg2_ops,
3016         },
3017 };
3018
3019 static struct clk_branch gcc_qdss_traceclkin_clk = {
3020         .halt_reg = 0x2d040,
3021         .clkr = {
3022                 .enable_reg = 0x2d040,
3023                 .enable_mask = BIT(0),
3024                 .hw.init = &(const struct clk_init_data) {
3025                         .name = "gcc_qdss_traceclkin_clk",
3026                         .parent_hws = (const struct clk_hw *[]) {
3027                                 &qdss_traceclkin_clk_src.clkr.hw
3028                         },
3029                         .num_parents = 1,
3030                         .flags = CLK_SET_RATE_PARENT,
3031                         .ops = &clk_branch2_ops,
3032                 },
3033         },
3034 };
3035
3036 static const struct freq_tbl ftbl_qdss_tsctr_clk_src[] = {
3037         F(600000000, P_GPLL4, 2, 0, 0),
3038         { }
3039 };
3040
3041 static struct clk_rcg2 qdss_tsctr_clk_src = {
3042         .cmd_rcgr = 0x2d01c,
3043         .freq_tbl = ftbl_qdss_tsctr_clk_src,
3044         .hid_width = 5,
3045         .parent_map = gcc_xo_gpll4_gpll0_gpll0_div2_map,
3046         .clkr.hw.init = &(const struct clk_init_data) {
3047                 .name = "qdss_tsctr_clk_src",
3048                 .parent_data = gcc_xo_gpll4_gpll0_gpll0_div2,
3049                 .num_parents = ARRAY_SIZE(gcc_xo_gpll4_gpll0_gpll0_div2),
3050                 .ops = &clk_rcg2_ops,
3051         },
3052 };
3053
3054 static struct clk_fixed_factor qdss_tsctr_div2_clk_src = {
3055         .mult = 1,
3056         .div = 2,
3057         .hw.init = &(const struct clk_init_data) {
3058                 .name = "qdss_tsctr_div2_clk_src",
3059                 .parent_hws = (const struct clk_hw *[]) {
3060                         &qdss_tsctr_clk_src.clkr.hw
3061                 },
3062                 .num_parents = 1,
3063                 .flags = CLK_SET_RATE_PARENT,
3064                 .ops = &clk_fixed_factor_ops,
3065         },
3066 };
3067
3068 static struct clk_branch gcc_q6_tsctr_1to2_clk = {
3069         .halt_reg = 0x25020,
3070         .clkr = {
3071                 .enable_reg = 0x25020,
3072                 .enable_mask = BIT(0),
3073                 .hw.init = &(const struct clk_init_data) {
3074                         .name = "gcc_q6_tsctr_1to2_clk",
3075                         .parent_hws = (const struct clk_hw *[]) {
3076                                 &qdss_tsctr_div2_clk_src.hw
3077                         },
3078                         .num_parents = 1,
3079                         .flags = CLK_SET_RATE_PARENT,
3080                         .ops = &clk_branch2_ops,
3081                 },
3082         },
3083 };
3084
3085 static struct clk_branch gcc_wcss_dbg_ifc_nts_clk = {
3086         .halt_reg = 0x25040,
3087         .clkr = {
3088                 .enable_reg = 0x25040,
3089                 .enable_mask = BIT(0),
3090                 .hw.init = &(const struct clk_init_data) {
3091                         .name = "gcc_wcss_dbg_ifc_nts_clk",
3092                         .parent_hws = (const struct clk_hw *[]) {
3093                                 &qdss_tsctr_div2_clk_src.hw
3094                         },
3095                         .num_parents = 1,
3096                         .flags = CLK_SET_RATE_PARENT,
3097                         .ops = &clk_branch2_ops,
3098                 },
3099         },
3100 };
3101
3102 static struct clk_branch gcc_qdss_tsctr_div2_clk = {
3103         .halt_reg = 0x2d044,
3104         .clkr = {
3105                 .enable_reg = 0x2d044,
3106                 .enable_mask = BIT(0),
3107                 .hw.init = &(const struct clk_init_data) {
3108                         .name = "gcc_qdss_tsctr_div2_clk",
3109                         .parent_hws = (const struct clk_hw *[]) {
3110                                 &qdss_tsctr_div2_clk_src.hw
3111                         },
3112                         .num_parents = 1,
3113                         .flags = CLK_SET_RATE_PARENT,
3114                         .ops = &clk_branch2_ops,
3115                 },
3116         },
3117 };
3118
3119 static const struct freq_tbl ftbl_uniphy_sys_clk_src[] = {
3120         F(24000000, P_XO, 1, 0, 0),
3121         { }
3122 };
3123
3124 static struct clk_rcg2 uniphy_sys_clk_src = {
3125         .cmd_rcgr = 0x17090,
3126         .freq_tbl = ftbl_uniphy_sys_clk_src,
3127         .mnd_width = 8,
3128         .hid_width = 5,
3129         .parent_map = gcc_xo_map,
3130         .clkr.hw.init = &(const struct clk_init_data) {
3131                 .name = "uniphy_sys_clk_src",
3132                 .parent_data = gcc_xo_data,
3133                 .num_parents = ARRAY_SIZE(gcc_xo_data),
3134                 .ops = &clk_rcg2_ops,
3135         },
3136 };
3137
3138 static struct clk_rcg2 nss_ts_clk_src = {
3139         .cmd_rcgr = 0x17088,
3140         .freq_tbl = ftbl_uniphy_sys_clk_src,
3141         .mnd_width = 8,
3142         .hid_width = 5,
3143         .parent_map = gcc_xo_map,
3144         .clkr.hw.init = &(const struct clk_init_data) {
3145                 .name = "nss_ts_clk_src",
3146                 .parent_data = gcc_xo_data,
3147                 .num_parents = ARRAY_SIZE(gcc_xo_data),
3148                 .ops = &clk_rcg2_ops,
3149         },
3150 };
3151
3152 static struct clk_branch gcc_qdss_ts_clk = {
3153         .halt_reg = 0x2d078,
3154         .clkr = {
3155                 .enable_reg = 0x2d078,
3156                 .enable_mask = BIT(0),
3157                 .hw.init = &(const struct clk_init_data) {
3158                         .name = "gcc_qdss_ts_clk",
3159                         .parent_hws = (const struct clk_hw *[]) {
3160                                 &nss_ts_clk_src.clkr.hw
3161                         },
3162                         .num_parents = 1,
3163                         .flags = CLK_SET_RATE_PARENT,
3164                         .ops = &clk_branch2_ops,
3165                 },
3166         },
3167 };
3168
3169 static struct clk_fixed_factor qdss_dap_sync_clk_src = {
3170         .mult = 1,
3171         .div = 4,
3172         .hw.init = &(const struct clk_init_data) {
3173                 .name = "qdss_dap_sync_clk_src",
3174                 .parent_hws = (const struct clk_hw *[]) {
3175                         &qdss_tsctr_clk_src.clkr.hw
3176                 },
3177                 .num_parents = 1,
3178                 .ops = &clk_fixed_factor_ops,
3179         },
3180 };
3181
3182 static struct clk_branch gcc_qdss_tsctr_div4_clk = {
3183         .halt_reg = 0x2d04c,
3184         .clkr = {
3185                 .enable_reg = 0x2d04c,
3186                 .enable_mask = BIT(0),
3187                 .hw.init = &(const struct clk_init_data) {
3188                         .name = "gcc_qdss_tsctr_div4_clk",
3189                         .parent_hws = (const struct clk_hw *[]) {
3190                                 &qdss_dap_sync_clk_src.hw
3191                         },
3192                         .num_parents = 1,
3193                         .flags = CLK_SET_RATE_PARENT,
3194                         .ops = &clk_branch2_ops,
3195                 },
3196         },
3197 };
3198
3199 static struct clk_fixed_factor qdss_tsctr_div8_clk_src = {
3200         .mult = 1,
3201         .div = 8,
3202         .hw.init = &(const struct clk_init_data) {
3203                 .name = "qdss_tsctr_div8_clk_src",
3204                 .parent_hws = (const struct clk_hw *[]) {
3205                         &qdss_tsctr_clk_src.clkr.hw
3206                 },
3207                 .num_parents = 1,
3208                 .ops = &clk_fixed_factor_ops,
3209         },
3210 };
3211
3212 static struct clk_branch gcc_nss_ts_clk = {
3213         .halt_reg = 0x17018,
3214         .clkr = {
3215                 .enable_reg = 0x17018,
3216                 .enable_mask = BIT(0),
3217                 .hw.init = &(const struct clk_init_data) {
3218                         .name = "gcc_nss_ts_clk",
3219                         .parent_hws = (const struct clk_hw *[]) {
3220                                 &nss_ts_clk_src.clkr.hw
3221                         },
3222                         .num_parents = 1,
3223                         .flags = CLK_SET_RATE_PARENT,
3224                         .ops = &clk_branch2_ops,
3225                 },
3226         },
3227 };
3228
3229 static struct clk_branch gcc_qdss_tsctr_div8_clk = {
3230         .halt_reg = 0x2d050,
3231         .clkr = {
3232                 .enable_reg = 0x2d050,
3233                 .enable_mask = BIT(0),
3234                 .hw.init = &(const struct clk_init_data) {
3235                         .name = "gcc_qdss_tsctr_div8_clk",
3236                         .parent_hws = (const struct clk_hw *[]) {
3237                                 &qdss_tsctr_div8_clk_src.hw
3238                         },
3239                         .num_parents = 1,
3240                         .flags = CLK_SET_RATE_PARENT,
3241                         .ops = &clk_branch2_ops,
3242                 },
3243         },
3244 };
3245
3246 static struct clk_fixed_factor qdss_tsctr_div16_clk_src = {
3247         .mult = 1,
3248         .div = 16,
3249         .hw.init = &(const struct clk_init_data) {
3250                 .name = "qdss_tsctr_div16_clk_src",
3251                 .parent_hws = (const struct clk_hw *[]) {
3252                         &qdss_tsctr_clk_src.clkr.hw
3253                 },
3254                 .num_parents = 1,
3255                 .ops = &clk_fixed_factor_ops,
3256         },
3257 };
3258
3259 static struct clk_branch gcc_qdss_tsctr_div16_clk = {
3260         .halt_reg = 0x2d054,
3261         .clkr = {
3262                 .enable_reg = 0x2d054,
3263                 .enable_mask = BIT(0),
3264                 .hw.init = &(const struct clk_init_data) {
3265                         .name = "gcc_qdss_tsctr_div16_clk",
3266                         .parent_hws = (const struct clk_hw *[]) {
3267                                 &qdss_tsctr_div16_clk_src.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_q6ss_pclkdbg_clk = {
3277         .halt_reg = 0x25024,
3278         .clkr = {
3279                 .enable_reg = 0x25024,
3280                 .enable_mask = BIT(0),
3281                 .hw.init = &(const struct clk_init_data) {
3282                         .name = "gcc_q6ss_pclkdbg_clk",
3283                         .parent_hws = (const struct clk_hw *[]) {
3284                                 &qdss_dap_sync_clk_src.hw
3285                         },
3286                         .num_parents = 1,
3287                         .flags = CLK_SET_RATE_PARENT,
3288                         .ops = &clk_branch2_ops,
3289                 },
3290         },
3291 };
3292
3293 static struct clk_branch gcc_q6ss_trig_clk = {
3294         .halt_reg = 0x25068,
3295         .clkr = {
3296                 .enable_reg = 0x25068,
3297                 .enable_mask = BIT(0),
3298                 .hw.init = &(const struct clk_init_data) {
3299                         .name = "gcc_q6ss_trig_clk",
3300                         .parent_hws = (const struct clk_hw *[]) {
3301                                 &qdss_dap_sync_clk_src.hw
3302                         },
3303                         .num_parents = 1,
3304                         .flags = CLK_SET_RATE_PARENT,
3305                         .ops = &clk_branch2_ops,
3306                 },
3307         },
3308 };
3309
3310 static struct clk_branch gcc_wcss_dbg_ifc_apb_clk = {
3311         .halt_reg = 0x25038,
3312         .clkr = {
3313                 .enable_reg = 0x25038,
3314                 .enable_mask = BIT(0),
3315                 .hw.init = &(const struct clk_init_data) {
3316                         .name = "gcc_wcss_dbg_ifc_apb_clk",
3317                         .parent_hws = (const struct clk_hw *[]) {
3318                                 &qdss_dap_sync_clk_src.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_wcss_dbg_ifc_dapbus_clk = {
3328         .halt_reg = 0x25044,
3329         .clkr = {
3330                 .enable_reg = 0x25044,
3331                 .enable_mask = BIT(0),
3332                 .hw.init = &(const struct clk_init_data) {
3333                         .name = "gcc_wcss_dbg_ifc_dapbus_clk",
3334                         .parent_hws = (const struct clk_hw *[]) {
3335                                 &qdss_dap_sync_clk_src.hw
3336                         },
3337                         .num_parents = 1,
3338                         .flags = CLK_SET_RATE_PARENT,
3339                         .ops = &clk_branch2_ops,
3340                 },
3341         },
3342 };
3343
3344 static struct clk_branch gcc_qdss_dap_clk = {
3345         .halt_reg = 0x2d058,
3346         .clkr = {
3347                 .enable_reg = 0x2d058,
3348                 .enable_mask = BIT(0),
3349                 .hw.init = &(const struct clk_init_data) {
3350                         .name = "gcc_qdss_dap_clk",
3351                         .parent_hws = (const struct clk_hw *[]) {
3352                                 &qdss_dap_sync_clk_src.hw
3353                         },
3354                         .num_parents = 1,
3355                         .flags = CLK_SET_RATE_PARENT,
3356                         .ops = &clk_branch2_ops,
3357                 },
3358         },
3359 };
3360
3361 static struct clk_branch gcc_qdss_apb2jtag_clk = {
3362         .halt_reg = 0x2d05c,
3363         .clkr = {
3364                 .enable_reg = 0x2d05c,
3365                 .enable_mask = BIT(0),
3366                 .hw.init = &(const struct clk_init_data) {
3367                         .name = "gcc_qdss_apb2jtag_clk",
3368                         .parent_hws = (const struct clk_hw *[]) {
3369                                 &qdss_dap_sync_clk_src.hw
3370                         },
3371                         .num_parents = 1,
3372                         .flags = CLK_SET_RATE_PARENT,
3373                         .ops = &clk_branch2_ops,
3374                 },
3375         },
3376 };
3377
3378 static struct clk_fixed_factor qdss_tsctr_div3_clk_src = {
3379         .mult = 1,
3380         .div = 3,
3381         .hw.init = &(const struct clk_init_data) {
3382                 .name = "qdss_tsctr_div3_clk_src",
3383                 .parent_hws = (const struct clk_hw *[]) {
3384                         &qdss_tsctr_clk_src.clkr.hw
3385                 },
3386                 .num_parents = 1,
3387                 .ops = &clk_fixed_factor_ops,
3388         },
3389 };
3390
3391 static struct clk_branch gcc_qdss_tsctr_div3_clk = {
3392         .halt_reg = 0x2d048,
3393         .clkr = {
3394                 .enable_reg = 0x2d048,
3395                 .enable_mask = BIT(0),
3396                 .hw.init = &(const struct clk_init_data) {
3397                         .name = "gcc_qdss_tsctr_div3_clk",
3398                         .parent_hws = (const struct clk_hw *[]) {
3399                                 &qdss_tsctr_div3_clk_src.hw
3400                         },
3401                         .num_parents = 1,
3402                         .flags = CLK_SET_RATE_PARENT,
3403                         .ops = &clk_branch2_ops,
3404                 },
3405         },
3406 };
3407
3408 static const struct freq_tbl ftbl_qpic_io_macro_clk_src[] = {
3409         F(24000000, P_XO, 1, 0, 0),
3410         F(100000000, P_GPLL0, 8, 0, 0),
3411         F(200000000, P_GPLL0, 4, 0, 0),
3412         F(320000000, P_GPLL0, 2.5, 0, 0),
3413         F(400000000, P_GPLL0, 2, 0, 0),
3414         { }
3415 };
3416
3417 static struct clk_rcg2 qpic_io_macro_clk_src = {
3418         .cmd_rcgr = 0x32004,
3419         .freq_tbl = ftbl_qpic_io_macro_clk_src,
3420         .hid_width = 5,
3421         .parent_map = gcc_xo_gpll0_gpll2_map,
3422         .clkr.hw.init = &(const struct clk_init_data) {
3423                 .name = "qpic_io_macro_clk_src",
3424                 .parent_data = gcc_xo_gpll0_gpll2,
3425                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll2),
3426                 .ops = &clk_rcg2_ops,
3427         },
3428 };
3429
3430 static struct clk_branch gcc_qpic_io_macro_clk = {
3431         .halt_reg = 0x3200c,
3432         .clkr = {
3433                 .enable_reg = 0x3200c,
3434                 .enable_mask = BIT(0),
3435                 .hw.init = &(const struct clk_init_data){
3436                         .name = "gcc_qpic_io_macro_clk",
3437                         .parent_hws = (const struct clk_hw *[]){
3438                                 &qpic_io_macro_clk_src.clkr.hw
3439                         },
3440                         .num_parents = 1,
3441                         .flags = CLK_SET_RATE_PARENT,
3442                         .ops = &clk_branch2_ops,
3443                 },
3444         },
3445 };
3446
3447 static const struct freq_tbl ftbl_q6_axi_clk_src[] = {
3448         F(533333333, P_GPLL0, 1.5, 0, 0),
3449         { }
3450 };
3451
3452 static struct clk_rcg2 q6_axi_clk_src = {
3453         .cmd_rcgr = 0x25004,
3454         .freq_tbl = ftbl_q6_axi_clk_src,
3455         .hid_width = 5,
3456         .parent_map = gcc_xo_gpll0_gpll2_gpll4_pi_sleep_map,
3457         .clkr.hw.init = &(const struct clk_init_data) {
3458                 .name = "q6_axi_clk_src",
3459                 .parent_data = gcc_xo_gpll0_gpll2_gpll4_pi_sleep,
3460                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll2_gpll4_pi_sleep),
3461                 .ops = &clk_rcg2_ops,
3462         },
3463 };
3464
3465 static struct clk_branch gcc_q6_axim_clk = {
3466         .halt_reg = 0x2500c,
3467         .clkr = {
3468                 .enable_reg = 0x2500c,
3469                 .enable_mask = BIT(0),
3470                 .hw.init = &(const struct clk_init_data) {
3471                         .name = "gcc_q6_axim_clk",
3472                         .parent_hws = (const struct clk_hw *[]) {
3473                                 &q6_axi_clk_src.clkr.hw
3474                         },
3475                         .num_parents = 1,
3476                         .flags = CLK_SET_RATE_PARENT,
3477                         .ops = &clk_branch2_ops,
3478                 },
3479         },
3480 };
3481
3482 static struct clk_branch gcc_wcss_q6_tbu_clk = {
3483         .halt_reg = 0x12050,
3484         .halt_check = BRANCH_HALT_DELAY,
3485         .clkr = {
3486                 .enable_reg = 0xb00c,
3487                 .enable_mask = BIT(6),
3488                 .hw.init = &(const struct clk_init_data) {
3489                         .name = "gcc_wcss_q6_tbu_clk",
3490                         .parent_hws = (const struct clk_hw *[]) {
3491                                 &q6_axi_clk_src.clkr.hw
3492                         },
3493                         .num_parents = 1,
3494                         .flags = CLK_SET_RATE_PARENT,
3495                         .ops = &clk_branch2_ops,
3496                 },
3497         },
3498 };
3499
3500 static struct clk_branch gcc_mem_noc_q6_axi_clk = {
3501         .halt_reg = 0x19010,
3502         .clkr = {
3503                 .enable_reg = 0x19010,
3504                 .enable_mask = BIT(0),
3505                 .hw.init = &(const struct clk_init_data) {
3506                         .name = "gcc_mem_noc_q6_axi_clk",
3507                         .parent_hws = (const struct clk_hw *[]) {
3508                                 &q6_axi_clk_src.clkr.hw
3509                         },
3510                         .num_parents = 1,
3511                         .flags = CLK_SET_RATE_PARENT,
3512                         .ops = &clk_branch2_ops,
3513                 },
3514         },
3515 };
3516
3517 static const struct freq_tbl ftbl_q6_axim2_clk_src[] = {
3518         F(342857143, P_GPLL4, 3.5, 0, 0),
3519         { }
3520 };
3521
3522 static const struct parent_map gcc_xo_gpll0_gpll4_bias_pll_ubinc_clk_map[] = {
3523         { P_XO, 0 },
3524         { P_GPLL0, 1 },
3525         { P_GPLL4, 2 },
3526         { P_BIAS_PLL_UBI_NC_CLK, 4 },
3527 };
3528
3529 static struct clk_rcg2 q6_axim2_clk_src = {
3530         .cmd_rcgr = 0x25028,
3531         .freq_tbl = ftbl_q6_axim2_clk_src,
3532         .hid_width = 5,
3533         .parent_map = gcc_xo_gpll0_gpll4_bias_pll_ubinc_clk_map,
3534         .clkr.hw.init = &(const struct clk_init_data) {
3535                 .name = "q6_axim2_clk_src",
3536                 .parent_data = gcc_xo_gpll0_gpll4_bias_pll_ubi_nc_clk,
3537                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4_bias_pll_ubi_nc_clk),
3538                 .ops = &clk_rcg2_ops,
3539         },
3540 };
3541
3542 static const struct freq_tbl ftbl_nssnoc_memnoc_bfdcd_clk_src[] = {
3543         F(533333333, P_GPLL0, 1.5, 0, 0),
3544         { }
3545 };
3546
3547 static struct clk_rcg2 nssnoc_memnoc_bfdcd_clk_src = {
3548         .cmd_rcgr = 0x17004,
3549         .freq_tbl = ftbl_nssnoc_memnoc_bfdcd_clk_src,
3550         .hid_width = 5,
3551         .parent_map = gcc_xo_gpll0_gpll0_aux_gpll2_map,
3552         .clkr.hw.init = &(const struct clk_init_data) {
3553                 .name = "nssnoc_memnoc_bfdcd_clk_src",
3554                 .parent_data = gcc_xo_gpll0_gpll0_aux_gpll2,
3555                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_aux_gpll2),
3556                 .ops = &clk_rcg2_ops,
3557         },
3558 };
3559
3560 static struct clk_branch gcc_nssnoc_memnoc_clk = {
3561         .halt_reg = 0x17024,
3562         .clkr = {
3563                 .enable_reg = 0x17024,
3564                 .enable_mask = BIT(0),
3565                 .hw.init = &(const struct clk_init_data) {
3566                         .name = "gcc_nssnoc_memnoc_clk",
3567                         .parent_hws = (const struct clk_hw *[]) {
3568                                 &nssnoc_memnoc_bfdcd_clk_src.clkr.hw
3569                         },
3570                         .num_parents = 1,
3571                         .flags = CLK_SET_RATE_PARENT,
3572                         .ops = &clk_branch2_ops,
3573                 },
3574         },
3575 };
3576
3577 static struct clk_branch gcc_nssnoc_mem_noc_1_clk = {
3578         .halt_reg = 0x17084,
3579         .clkr = {
3580                 .enable_reg = 0x17084,
3581                 .enable_mask = BIT(0),
3582                 .hw.init = &(const struct clk_init_data) {
3583                         .name = "gcc_nssnoc_mem_noc_1_clk",
3584                         .parent_hws = (const struct clk_hw *[]) {
3585                                 &nssnoc_memnoc_bfdcd_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_nss_tbu_clk = {
3595         .halt_reg = 0x12040,
3596         .clkr = {
3597                 .enable_reg = 0xb00c,
3598                 .enable_mask = BIT(4),
3599                 .hw.init = &(const struct clk_init_data) {
3600                         .name = "gcc_nss_tbu_clk",
3601                         .parent_hws = (const struct clk_hw *[]) {
3602                                 &nssnoc_memnoc_bfdcd_clk_src.clkr.hw
3603                         },
3604                         .num_parents = 1,
3605                         .flags = CLK_SET_RATE_PARENT,
3606                         .ops = &clk_branch2_ops,
3607                 },
3608         },
3609 };
3610
3611 static struct clk_branch gcc_mem_noc_nssnoc_clk = {
3612         .halt_reg = 0x19014,
3613         .clkr = {
3614                 .enable_reg = 0x19014,
3615                 .enable_mask = BIT(0),
3616                 .hw.init = &(const struct clk_init_data) {
3617                         .name = "gcc_mem_noc_nssnoc_clk",
3618                         .parent_hws = (const struct clk_hw *[]) {
3619                                 &nssnoc_memnoc_bfdcd_clk_src.clkr.hw
3620                         },
3621                         .num_parents = 1,
3622                         .flags = CLK_SET_RATE_PARENT,
3623                         .ops = &clk_branch2_ops,
3624                 },
3625         },
3626 };
3627
3628 static const struct freq_tbl ftbl_lpass_axim_clk_src[] = {
3629         F(133333333, P_GPLL0, 6, 0, 0),
3630         { }
3631 };
3632
3633 static struct clk_rcg2 lpass_axim_clk_src = {
3634         .cmd_rcgr = 0x2700c,
3635         .freq_tbl = ftbl_lpass_axim_clk_src,
3636         .hid_width = 5,
3637         .parent_map = gcc_xo_gpll0_map,
3638         .clkr.hw.init = &(const struct clk_init_data) {
3639                 .name = "lpass_axim_clk_src",
3640                 .parent_data = gcc_xo_gpll0,
3641                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
3642                 .ops = &clk_rcg2_ops,
3643         },
3644 };
3645
3646 static struct clk_rcg2 lpass_sway_clk_src = {
3647         .cmd_rcgr = 0x27004,
3648         .freq_tbl = ftbl_lpass_axim_clk_src,
3649         .hid_width = 5,
3650         .parent_map = gcc_xo_gpll0_map,
3651         .clkr.hw.init = &(const struct clk_init_data) {
3652                 .name = "lpass_sway_clk_src",
3653                 .parent_data = gcc_xo_gpll0,
3654                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
3655                 .ops = &clk_rcg2_ops,
3656         },
3657 };
3658
3659 static const struct freq_tbl ftbl_adss_pwm_clk_src[] = {
3660         F(24000000, P_XO, 1, 0, 0),
3661         F(100000000, P_GPLL0, 8, 0, 0),
3662         { }
3663 };
3664
3665 static struct clk_rcg2 adss_pwm_clk_src = {
3666         .cmd_rcgr = 0x1c004,
3667         .freq_tbl = ftbl_adss_pwm_clk_src,
3668         .hid_width = 5,
3669         .parent_map = gcc_xo_gpll0_map,
3670         .clkr.hw.init = &(const struct clk_init_data) {
3671                 .name = "adss_pwm_clk_src",
3672                 .parent_data = gcc_xo_gpll0,
3673                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
3674                 .ops = &clk_rcg2_ops,
3675         },
3676 };
3677
3678 static struct clk_branch gcc_adss_pwm_clk = {
3679         .halt_reg = 0x1c00c,
3680         .clkr = {
3681                 .enable_reg = 0x1c00c,
3682                 .enable_mask = BIT(0),
3683                 .hw.init = &(const struct clk_init_data) {
3684                         .name = "gcc_adss_pwm_clk",
3685                         .parent_hws = (const struct clk_hw *[]) {
3686                                 &adss_pwm_clk_src.clkr.hw
3687                         },
3688                         .num_parents = 1,
3689                         .flags = CLK_SET_RATE_PARENT,
3690                         .ops = &clk_branch2_ops,
3691                 },
3692         },
3693 };
3694
3695 static const struct freq_tbl ftbl_gp1_clk_src[] = {
3696         F(24000000, P_XO, 1, 0, 0),
3697         F(200000000, P_GPLL0, 4, 0, 0),
3698         { }
3699 };
3700
3701 static struct clk_rcg2 gp1_clk_src = {
3702         .cmd_rcgr = 0x8004,
3703         .freq_tbl = ftbl_gp1_clk_src,
3704         .hid_width = 5,
3705         .parent_map = gcc_xo_gpll0_gpll0_sleep_clk_map,
3706         .clkr.hw.init = &(const struct clk_init_data) {
3707                 .name = "gp1_clk_src",
3708                 .parent_data = gcc_xo_gpll0_gpll0_sleep_clk,
3709                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_sleep_clk),
3710                 .ops = &clk_rcg2_ops,
3711         },
3712 };
3713
3714 static struct clk_rcg2 gp2_clk_src = {
3715         .cmd_rcgr = 0x9004,
3716         .freq_tbl = ftbl_gp1_clk_src,
3717         .hid_width = 5,
3718         .parent_map = gcc_xo_gpll0_gpll0_sleep_clk_map,
3719         .clkr.hw.init = &(const struct clk_init_data) {
3720                 .name = "gp2_clk_src",
3721                 .parent_data = gcc_xo_gpll0_gpll0_sleep_clk,
3722                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_sleep_clk),
3723                 .ops = &clk_rcg2_ops,
3724         },
3725 };
3726
3727 static struct clk_rcg2 gp3_clk_src = {
3728         .cmd_rcgr = 0xa004,
3729         .freq_tbl = ftbl_gp1_clk_src,
3730         .hid_width = 5,
3731         .parent_map = gcc_xo_gpll0_gpll0_sleep_clk_map,
3732         .clkr.hw.init = &(const struct clk_init_data) {
3733                 .name = "gp3_clk_src",
3734                 .parent_data = gcc_xo_gpll0_gpll0_sleep_clk,
3735                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_sleep_clk),
3736                 .ops = &clk_rcg2_ops,
3737         },
3738 };
3739
3740 static struct clk_branch gcc_xo_clk_src = {
3741         .halt_reg = 0x34004,
3742         .clkr = {
3743                 .enable_reg = 0x34004,
3744                 .enable_mask = BIT(1),
3745                 .hw.init = &(const struct clk_init_data) {
3746                         .name = "gcc_xo_clk_src",
3747                         .parent_data = gcc_xo_data,
3748                         .num_parents = ARRAY_SIZE(gcc_xo_data),
3749                         .flags = CLK_SET_RATE_PARENT,
3750                         .ops = &clk_branch2_ops,
3751                 },
3752         },
3753 };
3754
3755 static struct clk_branch gcc_nssnoc_xo_dcd_clk = {
3756         .halt_reg = 0x17074,
3757         .clkr = {
3758                 .enable_reg = 0x17074,
3759                 .enable_mask = BIT(0),
3760                 .hw.init = &(const struct clk_init_data) {
3761                         .name = "gcc_nssnoc_xo_dcd_clk",
3762                         .parent_hws = (const struct clk_hw *[]) {
3763                                 &gcc_xo_clk_src.clkr.hw
3764                         },
3765                         .num_parents = 1,
3766                         .flags = CLK_SET_RATE_PARENT,
3767                         .ops = &clk_branch2_ops,
3768                 },
3769         },
3770 };
3771
3772 static struct clk_branch gcc_xo_clk = {
3773         .halt_reg = 0x34018,
3774         .clkr = {
3775                 .enable_reg = 0x34018,
3776                 .enable_mask = BIT(0),
3777                 .hw.init = &(const struct clk_init_data) {
3778                         .name = "gcc_xo_clk",
3779                         .parent_hws = (const struct clk_hw *[]) {
3780                                 &gcc_xo_clk_src.clkr.hw
3781                         },
3782                         .num_parents = 1,
3783                         .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
3784                         .ops = &clk_branch2_ops,
3785                 },
3786         },
3787 };
3788
3789 static struct clk_branch gcc_uniphy0_sys_clk = {
3790         .halt_reg = 0x17048,
3791         .clkr = {
3792                 .enable_reg = 0x17048,
3793                 .enable_mask = BIT(0),
3794                 .hw.init = &(const struct clk_init_data) {
3795                         .name = "gcc_uniphy0_sys_clk",
3796                         .parent_hws = (const struct clk_hw *[]) {
3797                                 &uniphy_sys_clk_src.clkr.hw
3798                         },
3799                         .num_parents = 1,
3800                         .flags = CLK_SET_RATE_PARENT,
3801                         .ops = &clk_branch2_ops,
3802                 },
3803         },
3804 };
3805
3806 static struct clk_branch gcc_uniphy1_sys_clk = {
3807         .halt_reg = 0x17058,
3808         .clkr = {
3809                 .enable_reg = 0x17058,
3810                 .enable_mask = BIT(0),
3811                 .hw.init = &(const struct clk_init_data) {
3812                         .name = "gcc_uniphy1_sys_clk",
3813                         .parent_hws = (const struct clk_hw *[]) {
3814                                 &uniphy_sys_clk_src.clkr.hw
3815                         },
3816                         .num_parents = 1,
3817                         .flags = CLK_SET_RATE_PARENT,
3818                         .ops = &clk_branch2_ops,
3819                 },
3820         },
3821 };
3822
3823 static struct clk_branch gcc_uniphy2_sys_clk = {
3824         .halt_reg = 0x17068,
3825         .clkr = {
3826                 .enable_reg = 0x17068,
3827                 .enable_mask = BIT(0),
3828                 .hw.init = &(const struct clk_init_data) {
3829                         .name = "gcc_uniphy2_sys_clk",
3830                         .parent_hws = (const struct clk_hw *[]) {
3831                                 &uniphy_sys_clk_src.clkr.hw
3832                         },
3833                         .num_parents = 1,
3834                         .flags = CLK_SET_RATE_PARENT,
3835                         .ops = &clk_branch2_ops,
3836                 },
3837         },
3838 };
3839
3840 static struct clk_branch gcc_cmn_12gpll_sys_clk = {
3841         .halt_reg = 0x3a008,
3842         .clkr = {
3843                 .enable_reg = 0x3a008,
3844                 .enable_mask = BIT(0),
3845                 .hw.init = &(const struct clk_init_data) {
3846                         .name = "gcc_cmn_12gpll_sys_clk",
3847                         .parent_hws = (const struct clk_hw *[]) {
3848                                 &uniphy_sys_clk_src.clkr.hw
3849                         },
3850                         .num_parents = 1,
3851                         .flags = CLK_SET_RATE_PARENT,
3852                         .ops = &clk_branch2_ops,
3853                 },
3854         },
3855 };
3856
3857 static struct clk_fixed_factor gcc_xo_div4_clk_src = {
3858         .mult = 1,
3859         .div = 4,
3860         .hw.init = &(const struct clk_init_data) {
3861                 .name = "gcc_xo_div4_clk_src",
3862                 .parent_hws = (const struct clk_hw *[]) {
3863                         &gcc_xo_clk_src.clkr.hw
3864                 },
3865                 .num_parents = 1,
3866                 .flags = CLK_SET_RATE_PARENT,
3867                 .ops = &clk_fixed_factor_ops,
3868         },
3869 };
3870
3871 static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {
3872         .halt_reg = 0x1701c,
3873         .clkr = {
3874                 .enable_reg = 0x1701c,
3875                 .enable_mask = BIT(0),
3876                 .hw.init = &(const struct clk_init_data) {
3877                         .name = "gcc_nssnoc_qosgen_ref_clk",
3878                         .parent_hws = (const struct clk_hw *[]) {
3879                                 &gcc_xo_div4_clk_src.hw
3880                         },
3881                         .num_parents = 1,
3882                         .flags = CLK_SET_RATE_PARENT,
3883                         .ops = &clk_branch2_ops,
3884                 },
3885         },
3886 };
3887
3888 static struct clk_branch gcc_nssnoc_timeout_ref_clk = {
3889         .halt_reg = 0x17020,
3890         .clkr = {
3891                 .enable_reg = 0x17020,
3892                 .enable_mask = BIT(0),
3893                 .hw.init = &(const struct clk_init_data) {
3894                         .name = "gcc_nssnoc_timeout_ref_clk",
3895                         .parent_hws = (const struct clk_hw *[]) {
3896                                 &gcc_xo_div4_clk_src.hw
3897                         },
3898                         .num_parents = 1,
3899                         .flags = CLK_SET_RATE_PARENT,
3900                         .ops = &clk_branch2_ops,
3901                 },
3902         },
3903 };
3904
3905 static struct clk_branch gcc_xo_div4_clk = {
3906         .halt_reg = 0x3401c,
3907         .clkr = {
3908                 .enable_reg = 0x3401c,
3909                 .enable_mask = BIT(0),
3910                 .hw.init = &(const struct clk_init_data) {
3911                         .name = "gcc_xo_div4_clk",
3912                         .parent_hws = (const struct clk_hw *[]) {
3913                                 &gcc_xo_div4_clk_src.hw
3914                         },
3915                         .num_parents = 1,
3916                         .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
3917                         .ops = &clk_branch2_ops,
3918                 },
3919         },
3920 };
3921
3922 static struct clk_hw *gcc_ipq9574_hws[] = {
3923         &gpll0_out_main_div2.hw,
3924         &gcc_xo_div4_clk_src.hw,
3925         &qdss_dap_sync_clk_src.hw,
3926         &qdss_tsctr_div2_clk_src.hw,
3927         &qdss_tsctr_div8_clk_src.hw,
3928         &qdss_tsctr_div16_clk_src.hw,
3929         &qdss_tsctr_div3_clk_src.hw,
3930         &gcc_eud_at_div_clk_src.hw,
3931 };
3932
3933 static struct clk_regmap *gcc_ipq9574_clks[] = {
3934         [GPLL0_MAIN] = &gpll0_main.clkr,
3935         [GPLL0] = &gpll0.clkr,
3936         [GPLL4_MAIN] = &gpll4_main.clkr,
3937         [GPLL4] = &gpll4.clkr,
3938         [GPLL2_MAIN] = &gpll2_main.clkr,
3939         [GPLL2] = &gpll2.clkr,
3940         [GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,
3941         [APSS_AHB_CLK_SRC] = &apss_ahb_clk_src.clkr,
3942         [APSS_AXI_CLK_SRC] = &apss_axi_clk_src.clkr,
3943         [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
3944         [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
3945         [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
3946         [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
3947         [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
3948         [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
3949         [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
3950         [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
3951         [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
3952         [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
3953         [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
3954         [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
3955         [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
3956         [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
3957         [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
3958         [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
3959         [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
3960         [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
3961         [GCC_APSS_AHB_CLK] = &gcc_apss_ahb_clk.clkr,
3962         [GCC_APSS_AXI_CLK] = &gcc_apss_axi_clk.clkr,
3963         [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
3964         [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
3965         [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
3966         [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
3967         [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
3968         [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
3969         [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
3970         [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
3971         [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
3972         [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
3973         [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
3974         [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
3975         [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
3976         [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
3977         [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
3978         [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
3979         [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
3980         [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
3981         [GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr,
3982         [GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr,
3983         [GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr,
3984         [GCC_CRYPTO_CLK_SRC] = &gcc_crypto_clk_src.clkr,
3985         [PCIE0_AXI_M_CLK_SRC] = &pcie0_axi_m_clk_src.clkr,
3986         [GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr,
3987         [PCIE1_AXI_M_CLK_SRC] = &pcie1_axi_m_clk_src.clkr,
3988         [GCC_PCIE1_AXI_M_CLK] = &gcc_pcie1_axi_m_clk.clkr,
3989         [PCIE2_AXI_M_CLK_SRC] = &pcie2_axi_m_clk_src.clkr,
3990         [GCC_PCIE2_AXI_M_CLK] = &gcc_pcie2_axi_m_clk.clkr,
3991         [PCIE3_AXI_M_CLK_SRC] = &pcie3_axi_m_clk_src.clkr,
3992         [GCC_PCIE3_AXI_M_CLK] = &gcc_pcie3_axi_m_clk.clkr,
3993         [PCIE0_AXI_S_CLK_SRC] = &pcie0_axi_s_clk_src.clkr,
3994         [GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,
3995         [GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr,
3996         [PCIE1_AXI_S_CLK_SRC] = &pcie1_axi_s_clk_src.clkr,
3997         [GCC_PCIE1_AXI_S_BRIDGE_CLK] = &gcc_pcie1_axi_s_bridge_clk.clkr,
3998         [GCC_PCIE1_AXI_S_CLK] = &gcc_pcie1_axi_s_clk.clkr,
3999         [PCIE2_AXI_S_CLK_SRC] = &pcie2_axi_s_clk_src.clkr,
4000         [GCC_PCIE2_AXI_S_BRIDGE_CLK] = &gcc_pcie2_axi_s_bridge_clk.clkr,
4001         [GCC_PCIE2_AXI_S_CLK] = &gcc_pcie2_axi_s_clk.clkr,
4002         [PCIE3_AXI_S_CLK_SRC] = &pcie3_axi_s_clk_src.clkr,
4003         [GCC_PCIE3_AXI_S_BRIDGE_CLK] = &gcc_pcie3_axi_s_bridge_clk.clkr,
4004         [GCC_PCIE3_AXI_S_CLK] = &gcc_pcie3_axi_s_clk.clkr,
4005         [PCIE0_PIPE_CLK_SRC] = &pcie0_pipe_clk_src.clkr,
4006         [PCIE1_PIPE_CLK_SRC] = &pcie1_pipe_clk_src.clkr,
4007         [PCIE2_PIPE_CLK_SRC] = &pcie2_pipe_clk_src.clkr,
4008         [PCIE3_PIPE_CLK_SRC] = &pcie3_pipe_clk_src.clkr,
4009         [PCIE_AUX_CLK_SRC] = &pcie_aux_clk_src.clkr,
4010         [GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr,
4011         [GCC_PCIE1_AUX_CLK] = &gcc_pcie1_aux_clk.clkr,
4012         [GCC_PCIE2_AUX_CLK] = &gcc_pcie2_aux_clk.clkr,
4013         [GCC_PCIE3_AUX_CLK] = &gcc_pcie3_aux_clk.clkr,
4014         [PCIE0_RCHNG_CLK_SRC] = &pcie0_rchng_clk_src.clkr,
4015         [GCC_PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr,
4016         [PCIE1_RCHNG_CLK_SRC] = &pcie1_rchng_clk_src.clkr,
4017         [GCC_PCIE1_RCHNG_CLK] = &gcc_pcie1_rchng_clk.clkr,
4018         [PCIE2_RCHNG_CLK_SRC] = &pcie2_rchng_clk_src.clkr,
4019         [GCC_PCIE2_RCHNG_CLK] = &gcc_pcie2_rchng_clk.clkr,
4020         [PCIE3_RCHNG_CLK_SRC] = &pcie3_rchng_clk_src.clkr,
4021         [GCC_PCIE3_RCHNG_CLK] = &gcc_pcie3_rchng_clk.clkr,
4022         [GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr,
4023         [GCC_PCIE1_AHB_CLK] = &gcc_pcie1_ahb_clk.clkr,
4024         [GCC_PCIE2_AHB_CLK] = &gcc_pcie2_ahb_clk.clkr,
4025         [GCC_PCIE3_AHB_CLK] = &gcc_pcie3_ahb_clk.clkr,
4026         [USB0_AUX_CLK_SRC] = &usb0_aux_clk_src.clkr,
4027         [GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,
4028         [USB0_MASTER_CLK_SRC] = &usb0_master_clk_src.clkr,
4029         [GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,
4030         [GCC_SNOC_USB_CLK] = &gcc_snoc_usb_clk.clkr,
4031         [GCC_ANOC_USB_AXI_CLK] = &gcc_anoc_usb_axi_clk.clkr,
4032         [USB0_MOCK_UTMI_CLK_SRC] = &usb0_mock_utmi_clk_src.clkr,
4033         [USB0_MOCK_UTMI_DIV_CLK_SRC] = &usb0_mock_utmi_div_clk_src.clkr,
4034         [GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,
4035         [USB0_PIPE_CLK_SRC] = &usb0_pipe_clk_src.clkr,
4036         [GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,
4037         [GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,
4038         [GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,
4039         [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
4040         [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
4041         [SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr,
4042         [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
4043         [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
4044         [PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr,
4045         [GCC_NSSCFG_CLK] = &gcc_nsscfg_clk.clkr,
4046         [GCC_NSSNOC_NSSCC_CLK] = &gcc_nssnoc_nsscc_clk.clkr,
4047         [GCC_NSSCC_CLK] = &gcc_nsscc_clk.clkr,
4048         [GCC_NSSNOC_PCNOC_1_CLK] = &gcc_nssnoc_pcnoc_1_clk.clkr,
4049         [GCC_QDSS_DAP_AHB_CLK] = &gcc_qdss_dap_ahb_clk.clkr,
4050         [GCC_QDSS_CFG_AHB_CLK] = &gcc_qdss_cfg_ahb_clk.clkr,
4051         [GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
4052         [GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
4053         [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
4054         [GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,
4055         [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
4056         [GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,
4057         [GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,
4058         [GCC_UNIPHY2_AHB_CLK] = &gcc_uniphy2_ahb_clk.clkr,
4059         [GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,
4060         [GCC_CMN_12GPLL_APU_CLK] = &gcc_cmn_12gpll_apu_clk.clkr,
4061         [SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr,
4062         [GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,
4063         [GCC_NSSNOC_SNOC_1_CLK] = &gcc_nssnoc_snoc_1_clk.clkr,
4064         [GCC_QDSS_ETR_USB_CLK] = &gcc_qdss_etr_usb_clk.clkr,
4065         [WCSS_AHB_CLK_SRC] = &wcss_ahb_clk_src.clkr,
4066         [GCC_Q6_AHB_CLK] = &gcc_q6_ahb_clk.clkr,
4067         [GCC_Q6_AHB_S_CLK] = &gcc_q6_ahb_s_clk.clkr,
4068         [GCC_WCSS_ECAHB_CLK] = &gcc_wcss_ecahb_clk.clkr,
4069         [GCC_WCSS_ACMT_CLK] = &gcc_wcss_acmt_clk.clkr,
4070         [GCC_SYS_NOC_WCSS_AHB_CLK] = &gcc_sys_noc_wcss_ahb_clk.clkr,
4071         [WCSS_AXI_M_CLK_SRC] = &wcss_axi_m_clk_src.clkr,
4072         [GCC_ANOC_WCSS_AXI_M_CLK] = &gcc_anoc_wcss_axi_m_clk.clkr,
4073         [QDSS_AT_CLK_SRC] = &qdss_at_clk_src.clkr,
4074         [GCC_Q6SS_ATBM_CLK] = &gcc_q6ss_atbm_clk.clkr,
4075         [GCC_WCSS_DBG_IFC_ATB_CLK] = &gcc_wcss_dbg_ifc_atb_clk.clkr,
4076         [GCC_NSSNOC_ATB_CLK] = &gcc_nssnoc_atb_clk.clkr,
4077         [GCC_QDSS_AT_CLK] = &gcc_qdss_at_clk.clkr,
4078         [GCC_SYS_NOC_AT_CLK] = &gcc_sys_noc_at_clk.clkr,
4079         [GCC_PCNOC_AT_CLK] = &gcc_pcnoc_at_clk.clkr,
4080         [GCC_USB0_EUD_AT_CLK] = &gcc_usb0_eud_at_clk.clkr,
4081         [GCC_QDSS_EUD_AT_CLK] = &gcc_qdss_eud_at_clk.clkr,
4082         [QDSS_STM_CLK_SRC] = &qdss_stm_clk_src.clkr,
4083         [GCC_QDSS_STM_CLK] = &gcc_qdss_stm_clk.clkr,
4084         [GCC_SYS_NOC_QDSS_STM_AXI_CLK] = &gcc_sys_noc_qdss_stm_axi_clk.clkr,
4085         [QDSS_TRACECLKIN_CLK_SRC] = &qdss_traceclkin_clk_src.clkr,
4086         [GCC_QDSS_TRACECLKIN_CLK] = &gcc_qdss_traceclkin_clk.clkr,
4087         [QDSS_TSCTR_CLK_SRC] = &qdss_tsctr_clk_src.clkr,
4088         [GCC_Q6_TSCTR_1TO2_CLK] = &gcc_q6_tsctr_1to2_clk.clkr,
4089         [GCC_WCSS_DBG_IFC_NTS_CLK] = &gcc_wcss_dbg_ifc_nts_clk.clkr,
4090         [GCC_QDSS_TSCTR_DIV2_CLK] = &gcc_qdss_tsctr_div2_clk.clkr,
4091         [GCC_QDSS_TS_CLK] = &gcc_qdss_ts_clk.clkr,
4092         [GCC_QDSS_TSCTR_DIV4_CLK] = &gcc_qdss_tsctr_div4_clk.clkr,
4093         [GCC_NSS_TS_CLK] = &gcc_nss_ts_clk.clkr,
4094         [GCC_QDSS_TSCTR_DIV8_CLK] = &gcc_qdss_tsctr_div8_clk.clkr,
4095         [GCC_QDSS_TSCTR_DIV16_CLK] = &gcc_qdss_tsctr_div16_clk.clkr,
4096         [GCC_Q6SS_PCLKDBG_CLK] = &gcc_q6ss_pclkdbg_clk.clkr,
4097         [GCC_Q6SS_TRIG_CLK] = &gcc_q6ss_trig_clk.clkr,
4098         [GCC_WCSS_DBG_IFC_APB_CLK] = &gcc_wcss_dbg_ifc_apb_clk.clkr,
4099         [GCC_WCSS_DBG_IFC_DAPBUS_CLK] = &gcc_wcss_dbg_ifc_dapbus_clk.clkr,
4100         [GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,
4101         [GCC_QDSS_APB2JTAG_CLK] = &gcc_qdss_apb2jtag_clk.clkr,
4102         [GCC_QDSS_TSCTR_DIV3_CLK] = &gcc_qdss_tsctr_div3_clk.clkr,
4103         [QPIC_IO_MACRO_CLK_SRC] = &qpic_io_macro_clk_src.clkr,
4104         [GCC_QPIC_IO_MACRO_CLK] = &gcc_qpic_io_macro_clk.clkr,
4105         [Q6_AXI_CLK_SRC] = &q6_axi_clk_src.clkr,
4106         [GCC_Q6_AXIM_CLK] = &gcc_q6_axim_clk.clkr,
4107         [GCC_WCSS_Q6_TBU_CLK] = &gcc_wcss_q6_tbu_clk.clkr,
4108         [GCC_MEM_NOC_Q6_AXI_CLK] = &gcc_mem_noc_q6_axi_clk.clkr,
4109         [Q6_AXIM2_CLK_SRC] = &q6_axim2_clk_src.clkr,
4110         [NSSNOC_MEMNOC_BFDCD_CLK_SRC] = &nssnoc_memnoc_bfdcd_clk_src.clkr,
4111         [GCC_NSSNOC_MEMNOC_CLK] = &gcc_nssnoc_memnoc_clk.clkr,
4112         [GCC_NSSNOC_MEM_NOC_1_CLK] = &gcc_nssnoc_mem_noc_1_clk.clkr,
4113         [GCC_NSS_TBU_CLK] = &gcc_nss_tbu_clk.clkr,
4114         [GCC_MEM_NOC_NSSNOC_CLK] = &gcc_mem_noc_nssnoc_clk.clkr,
4115         [LPASS_AXIM_CLK_SRC] = &lpass_axim_clk_src.clkr,
4116         [LPASS_SWAY_CLK_SRC] = &lpass_sway_clk_src.clkr,
4117         [ADSS_PWM_CLK_SRC] = &adss_pwm_clk_src.clkr,
4118         [GCC_ADSS_PWM_CLK] = &gcc_adss_pwm_clk.clkr,
4119         [GP1_CLK_SRC] = &gp1_clk_src.clkr,
4120         [GP2_CLK_SRC] = &gp2_clk_src.clkr,
4121         [GP3_CLK_SRC] = &gp3_clk_src.clkr,
4122         [GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,
4123         [GCC_NSSNOC_XO_DCD_CLK] = &gcc_nssnoc_xo_dcd_clk.clkr,
4124         [GCC_XO_CLK] = &gcc_xo_clk.clkr,
4125         [GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,
4126         [GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,
4127         [GCC_XO_DIV4_CLK] = &gcc_xo_div4_clk.clkr,
4128         [GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,
4129         [GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,
4130         [GCC_UNIPHY2_SYS_CLK] = &gcc_uniphy2_sys_clk.clkr,
4131         [GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,
4132         [GCC_Q6SS_BOOT_CLK] = &gcc_q6ss_boot_clk.clkr,
4133         [UNIPHY_SYS_CLK_SRC] = &uniphy_sys_clk_src.clkr,
4134         [NSS_TS_CLK_SRC] = &nss_ts_clk_src.clkr,
4135         [GCC_ANOC_PCIE0_1LANE_M_CLK] = &gcc_anoc_pcie0_1lane_m_clk.clkr,
4136         [GCC_ANOC_PCIE1_1LANE_M_CLK] = &gcc_anoc_pcie1_1lane_m_clk.clkr,
4137         [GCC_ANOC_PCIE2_2LANE_M_CLK] = &gcc_anoc_pcie2_2lane_m_clk.clkr,
4138         [GCC_ANOC_PCIE3_2LANE_M_CLK] = &gcc_anoc_pcie3_2lane_m_clk.clkr,
4139         [GCC_SNOC_PCIE0_1LANE_S_CLK] = &gcc_snoc_pcie0_1lane_s_clk.clkr,
4140         [GCC_SNOC_PCIE1_1LANE_S_CLK] = &gcc_snoc_pcie1_1lane_s_clk.clkr,
4141         [GCC_SNOC_PCIE2_2LANE_S_CLK] = &gcc_snoc_pcie2_2lane_s_clk.clkr,
4142         [GCC_SNOC_PCIE3_2LANE_S_CLK] = &gcc_snoc_pcie3_2lane_s_clk.clkr,
4143 };
4144
4145 static const struct qcom_reset_map gcc_ipq9574_resets[] = {
4146         [GCC_ADSS_BCR] = { 0x1c000, 0 },
4147         [GCC_ANOC0_TBU_BCR] = { 0x1203c, 0 },
4148         [GCC_ANOC1_TBU_BCR] = { 0x1204c, 0 },
4149         [GCC_ANOC_BCR] = { 0x2e074, 0 },
4150         [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x38000, 0 },
4151         [GCC_APSS_TCU_BCR] = { 0x12014, 0 },
4152         [GCC_BLSP1_BCR] = { 0x01000, 0 },
4153         [GCC_BLSP1_QUP1_BCR] = { 0x02000, 0 },
4154         [GCC_BLSP1_QUP2_BCR] = { 0x03000, 0 },
4155         [GCC_BLSP1_QUP3_BCR] = { 0x04000, 0 },
4156         [GCC_BLSP1_QUP4_BCR] = { 0x05000, 0 },
4157         [GCC_BLSP1_QUP5_BCR] = { 0x06000, 0 },
4158         [GCC_BLSP1_QUP6_BCR] = { 0x07000, 0 },
4159         [GCC_BLSP1_UART1_BCR] = { 0x02028, 0 },
4160         [GCC_BLSP1_UART2_BCR] = { 0x03028, 0 },
4161         [GCC_BLSP1_UART3_BCR] = { 0x04028, 0 },
4162         [GCC_BLSP1_UART4_BCR] = { 0x05028, 0 },
4163         [GCC_BLSP1_UART5_BCR] = { 0x06028, 0 },
4164         [GCC_BLSP1_UART6_BCR] = { 0x07028, 0 },
4165         [GCC_BOOT_ROM_BCR] = { 0x13028, 0 },
4166         [GCC_CMN_BLK_BCR] = { 0x3a000, 0 },
4167         [GCC_CMN_BLK_AHB_ARES] = { 0x3a010, 0 },
4168         [GCC_CMN_BLK_SYS_ARES] = { 0x3a010, 1 },
4169         [GCC_CMN_BLK_APU_ARES] = { 0x3a010, 2 },
4170         [GCC_CRYPTO_BCR] = { 0x16000, 0 },
4171         [GCC_DCC_BCR] = { 0x35000, 0 },
4172         [GCC_DDRSS_BCR] = { 0x11000, 0 },
4173         [GCC_IMEM_BCR] = { 0x0e000, 0 },
4174         [GCC_LPASS_BCR] = { 0x27000, 0 },
4175         [GCC_MDIO_BCR] = { 0x1703c, 0 },
4176         [GCC_MPM_BCR] = { 0x37000, 0 },
4177         [GCC_MSG_RAM_BCR] = { 0x26000, 0 },
4178         [GCC_NSS_BCR] = { 0x17000, 0 },
4179         [GCC_NSS_TBU_BCR] = { 0x12044, 0 },
4180         [GCC_NSSNOC_MEMNOC_1_ARES] = { 0x17038, 13 },
4181         [GCC_NSSNOC_PCNOC_1_ARES] = { 0x17038, 12 },
4182         [GCC_NSSNOC_SNOC_1_ARES] = { 0x17038,  11 },
4183         [GCC_NSSNOC_XO_DCD_ARES] = { 0x17038,  10 },
4184         [GCC_NSSNOC_TS_ARES] = { 0x17038, 9 },
4185         [GCC_NSSCC_ARES] = { 0x17038, 8 },
4186         [GCC_NSSNOC_NSSCC_ARES] = { 0x17038, 7 },
4187         [GCC_NSSNOC_ATB_ARES] = { 0x17038, 6 },
4188         [GCC_NSSNOC_MEMNOC_ARES] = { 0x17038, 5 },
4189         [GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x17038, 4 },
4190         [GCC_NSSNOC_SNOC_ARES] = { 0x17038, 3 },
4191         [GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x17038, 2 },
4192         [GCC_NSS_CFG_ARES] = { 0x17038, 1 },
4193         [GCC_UBI0_DBG_ARES] = { 0x17038, 0 },
4194         [GCC_PCIE0PHY_PHY_BCR] = { 0x2805c, 0 },
4195         [GCC_PCIE0_AHB_ARES] = { 0x28058, 7 },
4196         [GCC_PCIE0_AUX_ARES] = { 0x28058, 6 },
4197         [GCC_PCIE0_AXI_M_ARES] = { 0x28058, 5 },
4198         [GCC_PCIE0_AXI_M_STICKY_ARES] = { 0x28058, 4 },
4199         [GCC_PCIE0_AXI_S_ARES] = { 0x28058, 3 },
4200         [GCC_PCIE0_AXI_S_STICKY_ARES] = { 0x28058, 2 },
4201         [GCC_PCIE0_CORE_STICKY_ARES] = { 0x28058, 1 },
4202         [GCC_PCIE0_PIPE_ARES] = { 0x28058, 0 },
4203         [GCC_PCIE1_AHB_ARES] = { 0x29058, 7 },
4204         [GCC_PCIE1_AUX_ARES] = { 0x29058, 6 },
4205         [GCC_PCIE1_AXI_M_ARES] = { 0x29058, 5 },
4206         [GCC_PCIE1_AXI_M_STICKY_ARES] = { 0x29058, 4 },
4207         [GCC_PCIE1_AXI_S_ARES] = { 0x29058, 3 },
4208         [GCC_PCIE1_AXI_S_STICKY_ARES] = { 0x29058, 2 },
4209         [GCC_PCIE1_CORE_STICKY_ARES] = { 0x29058, 1 },
4210         [GCC_PCIE1_PIPE_ARES] = { 0x29058, 0 },
4211         [GCC_PCIE2_AHB_ARES] = { 0x2a058, 7 },
4212         [GCC_PCIE2_AUX_ARES] = { 0x2a058, 6 },
4213         [GCC_PCIE2_AXI_M_ARES] = { 0x2a058, 5 },
4214         [GCC_PCIE2_AXI_M_STICKY_ARES] = { 0x2a058, 4 },
4215         [GCC_PCIE2_AXI_S_ARES] = { 0x2a058, 3 },
4216         [GCC_PCIE2_AXI_S_STICKY_ARES] = { 0x2a058, 2 },
4217         [GCC_PCIE2_CORE_STICKY_ARES] = { 0x2a058, 1 },
4218         [GCC_PCIE2_PIPE_ARES] = { 0x2a058, 0 },
4219         [GCC_PCIE3_AHB_ARES] = { 0x2b058, 7 },
4220         [GCC_PCIE3_AUX_ARES] = { 0x2b058, 6 },
4221         [GCC_PCIE3_AXI_M_ARES] = { 0x2b058, 5 },
4222         [GCC_PCIE3_AXI_M_STICKY_ARES] = { 0x2b058, 4 },
4223         [GCC_PCIE3_AXI_S_ARES] = { 0x2b058, 3 },
4224         [GCC_PCIE3_AXI_S_STICKY_ARES] = { 0x2b058, 2 },
4225         [GCC_PCIE3_CORE_STICKY_ARES] = { 0x2b058, 1 },
4226         [GCC_PCIE3_PIPE_ARES] = { 0x2b058, 0 },
4227         [GCC_PCIE0_BCR] = { 0x28000, 0 },
4228         [GCC_PCIE0_LINK_DOWN_BCR] = { 0x28054, 0 },
4229         [GCC_PCIE0_PHY_BCR] = { 0x28060, 0 },
4230         [GCC_PCIE1_BCR] = { 0x29000, 0 },
4231         [GCC_PCIE1_LINK_DOWN_BCR] = { 0x29054, 0 },
4232         [GCC_PCIE1_PHY_BCR] = { 0x29060, 0 },
4233         [GCC_PCIE1PHY_PHY_BCR] = { 0x2905c, 0 },
4234         [GCC_PCIE2_BCR] = { 0x2a000, 0 },
4235         [GCC_PCIE2_LINK_DOWN_BCR] = { 0x2a054, 0 },
4236         [GCC_PCIE2_PHY_BCR] = { 0x2a060, 0 },
4237         [GCC_PCIE2PHY_PHY_BCR] = { 0x2a05c, 0 },
4238         [GCC_PCIE3_BCR] = { 0x2b000, 0 },
4239         [GCC_PCIE3_LINK_DOWN_BCR] = { 0x2b054, 0 },
4240         [GCC_PCIE3PHY_PHY_BCR] = { 0x2b05c, 0 },
4241         [GCC_PCIE3_PHY_BCR] = { 0x2b060, 0 },
4242         [GCC_PCNOC_BCR] = { 0x31000, 0 },
4243         [GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x31030, 0 },
4244         [GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x31038, 0 },
4245         [GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x31040, 0 },
4246         [GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x31048, 0 },
4247         [GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x31050, 0 },
4248         [GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x31058, 0 },
4249         [GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x31060, 0 },
4250         [GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x31068, 0 },
4251         [GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x31070, 0 },
4252         [GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x31078, 0 },
4253         [GCC_PCNOC_TBU_BCR] = { 0x12034, 0 },
4254         [GCC_PRNG_BCR] = { 0x13020, 0 },
4255         [GCC_Q6SS_DBG_ARES] = { 0x2506c, 4 },
4256         [GCC_Q6_AHB_ARES] = { 0x2506c, 3 },
4257         [GCC_Q6_AHB_S_ARES] = { 0x2506c, 2 },
4258         [GCC_Q6_AXIM2_ARES] = { 0x2506c, 1 },
4259         [GCC_Q6_AXIM_ARES] = { 0x2506c, 0 },
4260         [GCC_QDSS_BCR] = { 0x2d000, 0 },
4261         [GCC_QPIC_BCR] = { 0x32000, 0 },
4262         [GCC_QPIC_AHB_ARES] = { 0x3201c, 1 },
4263         [GCC_QPIC_ARES] = { 0x3201c, 0 },
4264         [GCC_QUSB2_0_PHY_BCR] = { 0x2c068, 0 },
4265         [GCC_RBCPR_BCR] = { 0x39000, 0 },
4266         [GCC_RBCPR_MX_BCR] = { 0x39014, 0 },
4267         [GCC_SDCC_BCR] = { 0x33000, 0 },
4268         [GCC_SEC_CTRL_BCR] = { 0x1a000, 0 },
4269         [GCC_SMMU_CFG_BCR] = { 0x1202c, 0 },
4270         [GCC_SNOC_BCR] = { 0x2e000, 0 },
4271         [GCC_SPDM_BCR] = { 0x36000, 0 },
4272         [GCC_TCSR_BCR] = { 0x3d000, 0 },
4273         [GCC_TLMM_BCR] = { 0x3e000, 0 },
4274         [GCC_TME_BCR] = { 0x10000, 0 },
4275         [GCC_UNIPHY0_BCR] = { 0x17044, 0 },
4276         [GCC_UNIPHY0_SYS_RESET] = { 0x17050, 0 },
4277         [GCC_UNIPHY0_AHB_RESET] = { 0x17050, 1 },
4278         [GCC_UNIPHY0_XPCS_RESET] = { 0x17050, 2 },
4279         [GCC_UNIPHY1_SYS_RESET] = { 0x17060, 0 },
4280         [GCC_UNIPHY1_AHB_RESET] = { 0x17060, 1 },
4281         [GCC_UNIPHY1_XPCS_RESET] = { 0x17060, 2 },
4282         [GCC_UNIPHY2_SYS_RESET] = { 0x17070, 0 },
4283         [GCC_UNIPHY2_AHB_RESET] = { 0x17070, 1 },
4284         [GCC_UNIPHY2_XPCS_RESET] = { 0x17070, 2 },
4285         [GCC_UNIPHY1_BCR] = { 0x17054, 0 },
4286         [GCC_UNIPHY2_BCR] = { 0x17064, 0 },
4287         [GCC_USB0_PHY_BCR] = { 0x2c06c, 0 },
4288         [GCC_USB3PHY_0_PHY_BCR] = { 0x2c070, 0 },
4289         [GCC_USB_BCR] = { 0x2c000, 0 },
4290         [GCC_USB_MISC_RESET] = { 0x2c064, 0 },
4291         [GCC_WCSSAON_RESET] = { 0x25074, 0 },
4292         [GCC_WCSS_ACMT_ARES] = { 0x25070, 5 },
4293         [GCC_WCSS_AHB_S_ARES] = { 0x25070, 4 },
4294         [GCC_WCSS_AXI_M_ARES] = { 0x25070, 3 },
4295         [GCC_WCSS_BCR] = { 0x18004, 0 },
4296         [GCC_WCSS_DBG_ARES] = { 0x25070, 2 },
4297         [GCC_WCSS_DBG_BDG_ARES] = { 0x25070, 1 },
4298         [GCC_WCSS_ECAHB_ARES] = { 0x25070, 0 },
4299         [GCC_WCSS_Q6_BCR] = { 0x18000, 0 },
4300         [GCC_WCSS_Q6_TBU_BCR] = { 0x12054, 0 },
4301 };
4302
4303 static const struct of_device_id gcc_ipq9574_match_table[] = {
4304         { .compatible = "qcom,ipq9574-gcc" },
4305         { }
4306 };
4307 MODULE_DEVICE_TABLE(of, gcc_ipq9574_match_table);
4308
4309 static const struct regmap_config gcc_ipq9574_regmap_config = {
4310         .reg_bits       = 32,
4311         .reg_stride     = 4,
4312         .val_bits       = 32,
4313         .max_register   = 0x7fffc,
4314         .fast_io        = true,
4315 };
4316
4317 static const struct qcom_cc_desc gcc_ipq9574_desc = {
4318         .config = &gcc_ipq9574_regmap_config,
4319         .clks = gcc_ipq9574_clks,
4320         .num_clks = ARRAY_SIZE(gcc_ipq9574_clks),
4321         .resets = gcc_ipq9574_resets,
4322         .num_resets = ARRAY_SIZE(gcc_ipq9574_resets),
4323         .clk_hws = gcc_ipq9574_hws,
4324         .num_clk_hws = ARRAY_SIZE(gcc_ipq9574_hws),
4325 };
4326
4327 static int gcc_ipq9574_probe(struct platform_device *pdev)
4328 {
4329         return qcom_cc_probe(pdev, &gcc_ipq9574_desc);
4330 }
4331
4332 static struct platform_driver gcc_ipq9574_driver = {
4333         .probe = gcc_ipq9574_probe,
4334         .driver = {
4335                 .name   = "qcom,gcc-ipq9574",
4336                 .of_match_table = gcc_ipq9574_match_table,
4337         },
4338 };
4339
4340 static int __init gcc_ipq9574_init(void)
4341 {
4342         return platform_driver_register(&gcc_ipq9574_driver);
4343 }
4344 core_initcall(gcc_ipq9574_init);
4345
4346 static void __exit gcc_ipq9574_exit(void)
4347 {
4348         platform_driver_unregister(&gcc_ipq9574_driver);
4349 }
4350 module_exit(gcc_ipq9574_exit);
4351
4352 MODULE_DESCRIPTION("Qualcomm Technologies, Inc. GCC IPQ9574 Driver");
4353 MODULE_LICENSE("GPL");