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