GNU Linux-libre 4.19.242-gnu1
[releases.git] / drivers / clk / qcom / gcc-ipq8074.c
1 /*
2  * Copyright (c) 2017, The Linux Foundation. All rights reserved.
3  *
4  * This software is licensed under the terms of the GNU General Public
5  * License version 2, as published by the Free Software Foundation, and
6  * may be copied, distributed, and modified under those terms.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  */
13
14 #include <linux/kernel.h>
15 #include <linux/err.h>
16 #include <linux/platform_device.h>
17 #include <linux/module.h>
18 #include <linux/of.h>
19 #include <linux/of_device.h>
20 #include <linux/clk-provider.h>
21 #include <linux/regmap.h>
22
23 #include <dt-bindings/clock/qcom,gcc-ipq8074.h>
24
25 #include "common.h"
26 #include "clk-regmap.h"
27 #include "clk-pll.h"
28 #include "clk-rcg.h"
29 #include "clk-branch.h"
30 #include "clk-alpha-pll.h"
31 #include "clk-regmap-divider.h"
32 #include "clk-regmap-mux.h"
33 #include "reset.h"
34
35 enum {
36         P_XO,
37         P_GPLL0,
38         P_GPLL0_DIV2,
39         P_GPLL2,
40         P_GPLL4,
41         P_GPLL6,
42         P_SLEEP_CLK,
43         P_PCIE20_PHY0_PIPE,
44         P_PCIE20_PHY1_PIPE,
45         P_USB3PHY_0_PIPE,
46         P_USB3PHY_1_PIPE,
47         P_UBI32_PLL,
48         P_NSS_CRYPTO_PLL,
49         P_BIAS_PLL,
50         P_BIAS_PLL_NSS_NOC,
51         P_UNIPHY0_RX,
52         P_UNIPHY0_TX,
53         P_UNIPHY1_RX,
54         P_UNIPHY1_TX,
55         P_UNIPHY2_RX,
56         P_UNIPHY2_TX,
57 };
58
59 static const char * const gcc_xo_gpll0_gpll0_out_main_div2[] = {
60         "xo",
61         "gpll0",
62         "gpll0_out_main_div2",
63 };
64
65 static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = {
66         { P_XO, 0 },
67         { P_GPLL0, 1 },
68         { P_GPLL0_DIV2, 4 },
69 };
70
71 static const char * const gcc_xo_gpll0[] = {
72         "xo",
73         "gpll0",
74 };
75
76 static const struct parent_map gcc_xo_gpll0_map[] = {
77         { P_XO, 0 },
78         { P_GPLL0, 1 },
79 };
80
81 static const char * const gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = {
82         "xo",
83         "gpll0",
84         "gpll2",
85         "gpll0_out_main_div2",
86 };
87
88 static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = {
89         { P_XO, 0 },
90         { P_GPLL0, 1 },
91         { P_GPLL2, 2 },
92         { P_GPLL0_DIV2, 4 },
93 };
94
95 static const char * const gcc_xo_gpll0_sleep_clk[] = {
96         "xo",
97         "gpll0",
98         "sleep_clk",
99 };
100
101 static const struct parent_map gcc_xo_gpll0_sleep_clk_map[] = {
102         { P_XO, 0 },
103         { P_GPLL0, 2 },
104         { P_SLEEP_CLK, 6 },
105 };
106
107 static const char * const gcc_xo_gpll6_gpll0_gpll0_out_main_div2[] = {
108         "xo",
109         "gpll6",
110         "gpll0",
111         "gpll0_out_main_div2",
112 };
113
114 static const struct parent_map gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map[] = {
115         { P_XO, 0 },
116         { P_GPLL6, 1 },
117         { P_GPLL0, 3 },
118         { P_GPLL0_DIV2, 4 },
119 };
120
121 static const char * const gcc_xo_gpll0_out_main_div2_gpll0[] = {
122         "xo",
123         "gpll0_out_main_div2",
124         "gpll0",
125 };
126
127 static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = {
128         { P_XO, 0 },
129         { P_GPLL0_DIV2, 2 },
130         { P_GPLL0, 1 },
131 };
132
133 static const char * const gcc_usb3phy_0_cc_pipe_clk_xo[] = {
134         "usb3phy_0_cc_pipe_clk",
135         "xo",
136 };
137
138 static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = {
139         { P_USB3PHY_0_PIPE, 0 },
140         { P_XO, 2 },
141 };
142
143 static const char * const gcc_usb3phy_1_cc_pipe_clk_xo[] = {
144         "usb3phy_1_cc_pipe_clk",
145         "xo",
146 };
147
148 static const struct parent_map gcc_usb3phy_1_cc_pipe_clk_xo_map[] = {
149         { P_USB3PHY_1_PIPE, 0 },
150         { P_XO, 2 },
151 };
152
153 static const char * const gcc_pcie20_phy0_pipe_clk_xo[] = {
154         "pcie20_phy0_pipe_clk",
155         "xo",
156 };
157
158 static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = {
159         { P_PCIE20_PHY0_PIPE, 0 },
160         { P_XO, 2 },
161 };
162
163 static const char * const gcc_pcie20_phy1_pipe_clk_xo[] = {
164         "pcie20_phy1_pipe_clk",
165         "xo",
166 };
167
168 static const struct parent_map gcc_pcie20_phy1_pipe_clk_xo_map[] = {
169         { P_PCIE20_PHY1_PIPE, 0 },
170         { P_XO, 2 },
171 };
172
173 static const char * const gcc_xo_gpll0_gpll6_gpll0_div2[] = {
174         "xo",
175         "gpll0",
176         "gpll6",
177         "gpll0_out_main_div2",
178 };
179
180 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_div2_map[] = {
181         { P_XO, 0 },
182         { P_GPLL0, 1 },
183         { P_GPLL6, 2 },
184         { P_GPLL0_DIV2, 4 },
185 };
186
187 static const char * const gcc_xo_gpll0_gpll6_gpll0_out_main_div2[] = {
188         "xo",
189         "gpll0",
190         "gpll6",
191         "gpll0_out_main_div2",
192 };
193
194 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map[] = {
195         { P_XO, 0 },
196         { P_GPLL0, 1 },
197         { P_GPLL6, 2 },
198         { P_GPLL0_DIV2, 3 },
199 };
200
201 static const char * const gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2[] = {
202         "xo",
203         "bias_pll_nss_noc_clk",
204         "gpll0",
205         "gpll2",
206 };
207
208 static const struct parent_map gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2_map[] = {
209         { P_XO, 0 },
210         { P_BIAS_PLL_NSS_NOC, 1 },
211         { P_GPLL0, 2 },
212         { P_GPLL2, 3 },
213 };
214
215 static const char * const gcc_xo_nss_crypto_pll_gpll0[] = {
216         "xo",
217         "nss_crypto_pll",
218         "gpll0",
219 };
220
221 static const struct parent_map gcc_xo_nss_crypto_pll_gpll0_map[] = {
222         { P_XO, 0 },
223         { P_NSS_CRYPTO_PLL, 1 },
224         { P_GPLL0, 2 },
225 };
226
227 static const char * const gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6[] = {
228         "xo",
229         "ubi32_pll",
230         "gpll0",
231         "gpll2",
232         "gpll4",
233         "gpll6",
234 };
235
236 static const struct parent_map gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map[] = {
237         { P_XO, 0 },
238         { P_UBI32_PLL, 1 },
239         { P_GPLL0, 2 },
240         { P_GPLL2, 3 },
241         { P_GPLL4, 4 },
242         { P_GPLL6, 5 },
243 };
244
245 static const char * const gcc_xo_gpll0_out_main_div2[] = {
246         "xo",
247         "gpll0_out_main_div2",
248 };
249
250 static const struct parent_map gcc_xo_gpll0_out_main_div2_map[] = {
251         { P_XO, 0 },
252         { P_GPLL0_DIV2, 1 },
253 };
254
255 static const char * const gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {
256         "xo",
257         "bias_pll_cc_clk",
258         "gpll0",
259         "gpll4",
260         "nss_crypto_pll",
261         "ubi32_pll",
262 };
263
264 static const struct parent_map gcc_xo_bias_gpll0_gpll4_nss_ubi32_map[] = {
265         { P_XO, 0 },
266         { P_BIAS_PLL, 1 },
267         { P_GPLL0, 2 },
268         { P_GPLL4, 3 },
269         { P_NSS_CRYPTO_PLL, 4 },
270         { P_UBI32_PLL, 5 },
271 };
272
273 static const char * const gcc_xo_gpll0_gpll4[] = {
274         "xo",
275         "gpll0",
276         "gpll4",
277 };
278
279 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
280         { P_XO, 0 },
281         { P_GPLL0, 1 },
282         { P_GPLL4, 2 },
283 };
284
285 static const char * const gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {
286         "xo",
287         "uniphy0_gcc_rx_clk",
288         "uniphy0_gcc_tx_clk",
289         "ubi32_pll",
290         "bias_pll_cc_clk",
291 };
292
293 static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {
294         { P_XO, 0 },
295         { P_UNIPHY0_RX, 1 },
296         { P_UNIPHY0_TX, 2 },
297         { P_UBI32_PLL, 5 },
298         { P_BIAS_PLL, 6 },
299 };
300
301 static const char * const gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {
302         "xo",
303         "uniphy0_gcc_tx_clk",
304         "uniphy0_gcc_rx_clk",
305         "ubi32_pll",
306         "bias_pll_cc_clk",
307 };
308
309 static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {
310         { P_XO, 0 },
311         { P_UNIPHY0_TX, 1 },
312         { P_UNIPHY0_RX, 2 },
313         { P_UBI32_PLL, 5 },
314         { P_BIAS_PLL, 6 },
315 };
316
317 static const char * const gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {
318         "xo",
319         "uniphy0_gcc_rx_clk",
320         "uniphy0_gcc_tx_clk",
321         "uniphy1_gcc_rx_clk",
322         "uniphy1_gcc_tx_clk",
323         "ubi32_pll",
324         "bias_pll_cc_clk",
325 };
326
327 static const struct parent_map
328 gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map[] = {
329         { P_XO, 0 },
330         { P_UNIPHY0_RX, 1 },
331         { P_UNIPHY0_TX, 2 },
332         { P_UNIPHY1_RX, 3 },
333         { P_UNIPHY1_TX, 4 },
334         { P_UBI32_PLL, 5 },
335         { P_BIAS_PLL, 6 },
336 };
337
338 static const char * const gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {
339         "xo",
340         "uniphy0_gcc_tx_clk",
341         "uniphy0_gcc_rx_clk",
342         "uniphy1_gcc_tx_clk",
343         "uniphy1_gcc_rx_clk",
344         "ubi32_pll",
345         "bias_pll_cc_clk",
346 };
347
348 static const struct parent_map
349 gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map[] = {
350         { P_XO, 0 },
351         { P_UNIPHY0_TX, 1 },
352         { P_UNIPHY0_RX, 2 },
353         { P_UNIPHY1_TX, 3 },
354         { P_UNIPHY1_RX, 4 },
355         { P_UBI32_PLL, 5 },
356         { P_BIAS_PLL, 6 },
357 };
358
359 static const char * const gcc_xo_uniphy2_rx_tx_ubi32_bias[] = {
360         "xo",
361         "uniphy2_gcc_rx_clk",
362         "uniphy2_gcc_tx_clk",
363         "ubi32_pll",
364         "bias_pll_cc_clk",
365 };
366
367 static const struct parent_map gcc_xo_uniphy2_rx_tx_ubi32_bias_map[] = {
368         { P_XO, 0 },
369         { P_UNIPHY2_RX, 1 },
370         { P_UNIPHY2_TX, 2 },
371         { P_UBI32_PLL, 5 },
372         { P_BIAS_PLL, 6 },
373 };
374
375 static const char * const gcc_xo_uniphy2_tx_rx_ubi32_bias[] = {
376         "xo",
377         "uniphy2_gcc_tx_clk",
378         "uniphy2_gcc_rx_clk",
379         "ubi32_pll",
380         "bias_pll_cc_clk",
381 };
382
383 static const struct parent_map gcc_xo_uniphy2_tx_rx_ubi32_bias_map[] = {
384         { P_XO, 0 },
385         { P_UNIPHY2_TX, 1 },
386         { P_UNIPHY2_RX, 2 },
387         { P_UBI32_PLL, 5 },
388         { P_BIAS_PLL, 6 },
389 };
390
391 static const char * const gcc_xo_gpll0_gpll6_gpll0_sleep_clk[] = {
392         "xo",
393         "gpll0",
394         "gpll6",
395         "gpll0_out_main_div2",
396         "sleep_clk",
397 };
398
399 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map[] = {
400         { P_XO, 0 },
401         { P_GPLL0, 1 },
402         { P_GPLL6, 2 },
403         { P_GPLL0_DIV2, 4 },
404         { P_SLEEP_CLK, 6 },
405 };
406
407 static struct clk_alpha_pll gpll0_main = {
408         .offset = 0x21000,
409         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
410         .clkr = {
411                 .enable_reg = 0x0b000,
412                 .enable_mask = BIT(0),
413                 .hw.init = &(struct clk_init_data){
414                         .name = "gpll0_main",
415                         .parent_names = (const char *[]){
416                                 "xo"
417                         },
418                         .num_parents = 1,
419                         .ops = &clk_alpha_pll_ops,
420                 },
421         },
422 };
423
424 static struct clk_fixed_factor gpll0_out_main_div2 = {
425         .mult = 1,
426         .div = 2,
427         .hw.init = &(struct clk_init_data){
428                 .name = "gpll0_out_main_div2",
429                 .parent_names = (const char *[]){
430                         "gpll0_main"
431                 },
432                 .num_parents = 1,
433                 .ops = &clk_fixed_factor_ops,
434                 .flags = CLK_SET_RATE_PARENT,
435         },
436 };
437
438 static struct clk_alpha_pll_postdiv gpll0 = {
439         .offset = 0x21000,
440         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
441         .width = 4,
442         .clkr.hw.init = &(struct clk_init_data){
443                 .name = "gpll0",
444                 .parent_names = (const char *[]){
445                         "gpll0_main"
446                 },
447                 .num_parents = 1,
448                 .ops = &clk_alpha_pll_postdiv_ro_ops,
449         },
450 };
451
452 static struct clk_alpha_pll gpll2_main = {
453         .offset = 0x4a000,
454         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
455         .clkr = {
456                 .enable_reg = 0x0b000,
457                 .enable_mask = BIT(2),
458                 .hw.init = &(struct clk_init_data){
459                         .name = "gpll2_main",
460                         .parent_names = (const char *[]){
461                                 "xo"
462                         },
463                         .num_parents = 1,
464                         .ops = &clk_alpha_pll_ops,
465                         .flags = CLK_IS_CRITICAL,
466                 },
467         },
468 };
469
470 static struct clk_alpha_pll_postdiv gpll2 = {
471         .offset = 0x4a000,
472         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
473         .width = 4,
474         .clkr.hw.init = &(struct clk_init_data){
475                 .name = "gpll2",
476                 .parent_names = (const char *[]){
477                         "gpll2_main"
478                 },
479                 .num_parents = 1,
480                 .ops = &clk_alpha_pll_postdiv_ro_ops,
481                 .flags = CLK_SET_RATE_PARENT,
482         },
483 };
484
485 static struct clk_alpha_pll gpll4_main = {
486         .offset = 0x24000,
487         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
488         .clkr = {
489                 .enable_reg = 0x0b000,
490                 .enable_mask = BIT(5),
491                 .hw.init = &(struct clk_init_data){
492                         .name = "gpll4_main",
493                         .parent_names = (const char *[]){
494                                 "xo"
495                         },
496                         .num_parents = 1,
497                         .ops = &clk_alpha_pll_ops,
498                         .flags = CLK_IS_CRITICAL,
499                 },
500         },
501 };
502
503 static struct clk_alpha_pll_postdiv gpll4 = {
504         .offset = 0x24000,
505         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
506         .width = 4,
507         .clkr.hw.init = &(struct clk_init_data){
508                 .name = "gpll4",
509                 .parent_names = (const char *[]){
510                         "gpll4_main"
511                 },
512                 .num_parents = 1,
513                 .ops = &clk_alpha_pll_postdiv_ro_ops,
514                 .flags = CLK_SET_RATE_PARENT,
515         },
516 };
517
518 static struct clk_alpha_pll gpll6_main = {
519         .offset = 0x37000,
520         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
521         .flags = SUPPORTS_DYNAMIC_UPDATE,
522         .clkr = {
523                 .enable_reg = 0x0b000,
524                 .enable_mask = BIT(7),
525                 .hw.init = &(struct clk_init_data){
526                         .name = "gpll6_main",
527                         .parent_names = (const char *[]){
528                                 "xo"
529                         },
530                         .num_parents = 1,
531                         .ops = &clk_alpha_pll_ops,
532                         .flags = CLK_IS_CRITICAL,
533                 },
534         },
535 };
536
537 static struct clk_alpha_pll_postdiv gpll6 = {
538         .offset = 0x37000,
539         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
540         .width = 2,
541         .clkr.hw.init = &(struct clk_init_data){
542                 .name = "gpll6",
543                 .parent_names = (const char *[]){
544                         "gpll6_main"
545                 },
546                 .num_parents = 1,
547                 .ops = &clk_alpha_pll_postdiv_ro_ops,
548                 .flags = CLK_SET_RATE_PARENT,
549         },
550 };
551
552 static struct clk_fixed_factor gpll6_out_main_div2 = {
553         .mult = 1,
554         .div = 2,
555         .hw.init = &(struct clk_init_data){
556                 .name = "gpll6_out_main_div2",
557                 .parent_names = (const char *[]){
558                         "gpll6_main"
559                 },
560                 .num_parents = 1,
561                 .ops = &clk_fixed_factor_ops,
562                 .flags = CLK_SET_RATE_PARENT,
563         },
564 };
565
566 static struct clk_alpha_pll ubi32_pll_main = {
567         .offset = 0x25000,
568         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
569         .flags = SUPPORTS_DYNAMIC_UPDATE,
570         .clkr = {
571                 .enable_reg = 0x0b000,
572                 .enable_mask = BIT(6),
573                 .hw.init = &(struct clk_init_data){
574                         .name = "ubi32_pll_main",
575                         .parent_names = (const char *[]){
576                                 "xo"
577                         },
578                         .num_parents = 1,
579                         .ops = &clk_alpha_pll_huayra_ops,
580                 },
581         },
582 };
583
584 static struct clk_alpha_pll_postdiv ubi32_pll = {
585         .offset = 0x25000,
586         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
587         .width = 2,
588         .clkr.hw.init = &(struct clk_init_data){
589                 .name = "ubi32_pll",
590                 .parent_names = (const char *[]){
591                         "ubi32_pll_main"
592                 },
593                 .num_parents = 1,
594                 .ops = &clk_alpha_pll_postdiv_ro_ops,
595                 .flags = CLK_SET_RATE_PARENT,
596         },
597 };
598
599 static struct clk_alpha_pll nss_crypto_pll_main = {
600         .offset = 0x22000,
601         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
602         .clkr = {
603                 .enable_reg = 0x0b000,
604                 .enable_mask = BIT(4),
605                 .hw.init = &(struct clk_init_data){
606                         .name = "nss_crypto_pll_main",
607                         .parent_names = (const char *[]){
608                                 "xo"
609                         },
610                         .num_parents = 1,
611                         .ops = &clk_alpha_pll_ops,
612                 },
613         },
614 };
615
616 static struct clk_alpha_pll_postdiv nss_crypto_pll = {
617         .offset = 0x22000,
618         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
619         .width = 4,
620         .clkr.hw.init = &(struct clk_init_data){
621                 .name = "nss_crypto_pll",
622                 .parent_names = (const char *[]){
623                         "nss_crypto_pll_main"
624                 },
625                 .num_parents = 1,
626                 .ops = &clk_alpha_pll_postdiv_ro_ops,
627                 .flags = CLK_SET_RATE_PARENT,
628         },
629 };
630
631 static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src[] = {
632         F(19200000, P_XO, 1, 0, 0),
633         F(50000000, P_GPLL0, 16, 0, 0),
634         F(100000000, P_GPLL0, 8, 0, 0),
635         { }
636 };
637
638 static struct clk_rcg2 pcnoc_bfdcd_clk_src = {
639         .cmd_rcgr = 0x27000,
640         .freq_tbl = ftbl_pcnoc_bfdcd_clk_src,
641         .hid_width = 5,
642         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
643         .clkr.hw.init = &(struct clk_init_data){
644                 .name = "pcnoc_bfdcd_clk_src",
645                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
646                 .num_parents = 3,
647                 .ops = &clk_rcg2_ops,
648                 .flags = CLK_IS_CRITICAL,
649         },
650 };
651
652 static struct clk_fixed_factor pcnoc_clk_src = {
653         .mult = 1,
654         .div = 1,
655         .hw.init = &(struct clk_init_data){
656                 .name = "pcnoc_clk_src",
657                 .parent_names = (const char *[]){
658                         "pcnoc_bfdcd_clk_src"
659                 },
660                 .num_parents = 1,
661                 .ops = &clk_fixed_factor_ops,
662                 .flags = CLK_SET_RATE_PARENT,
663         },
664 };
665
666 static struct clk_branch gcc_sleep_clk_src = {
667         .halt_reg = 0x30000,
668         .clkr = {
669                 .enable_reg = 0x30000,
670                 .enable_mask = BIT(1),
671                 .hw.init = &(struct clk_init_data){
672                         .name = "gcc_sleep_clk_src",
673                         .parent_names = (const char *[]){
674                                 "sleep_clk"
675                         },
676                         .num_parents = 1,
677                         .ops = &clk_branch2_ops,
678                 },
679         },
680 };
681
682 static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src[] = {
683         F(19200000, P_XO, 1, 0, 0),
684         F(25000000, P_GPLL0_DIV2, 16, 0, 0),
685         F(50000000, P_GPLL0, 16, 0, 0),
686         { }
687 };
688
689 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
690         .cmd_rcgr = 0x0200c,
691         .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
692         .hid_width = 5,
693         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
694         .clkr.hw.init = &(struct clk_init_data){
695                 .name = "blsp1_qup1_i2c_apps_clk_src",
696                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
697                 .num_parents = 3,
698                 .ops = &clk_rcg2_ops,
699         },
700 };
701
702 static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src[] = {
703         F(960000, P_XO, 10, 1, 2),
704         F(4800000, P_XO, 4, 0, 0),
705         F(9600000, P_XO, 2, 0, 0),
706         F(12500000, P_GPLL0_DIV2, 16, 1, 2),
707         F(16000000, P_GPLL0, 10, 1, 5),
708         F(19200000, P_XO, 1, 0, 0),
709         F(25000000, P_GPLL0, 16, 1, 2),
710         F(50000000, P_GPLL0, 16, 0, 0),
711         { }
712 };
713
714 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
715         .cmd_rcgr = 0x02024,
716         .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
717         .mnd_width = 8,
718         .hid_width = 5,
719         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
720         .clkr.hw.init = &(struct clk_init_data){
721                 .name = "blsp1_qup1_spi_apps_clk_src",
722                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
723                 .num_parents = 3,
724                 .ops = &clk_rcg2_ops,
725         },
726 };
727
728 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
729         .cmd_rcgr = 0x03000,
730         .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
731         .hid_width = 5,
732         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
733         .clkr.hw.init = &(struct clk_init_data){
734                 .name = "blsp1_qup2_i2c_apps_clk_src",
735                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
736                 .num_parents = 3,
737                 .ops = &clk_rcg2_ops,
738         },
739 };
740
741 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
742         .cmd_rcgr = 0x03014,
743         .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
744         .mnd_width = 8,
745         .hid_width = 5,
746         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
747         .clkr.hw.init = &(struct clk_init_data){
748                 .name = "blsp1_qup2_spi_apps_clk_src",
749                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
750                 .num_parents = 3,
751                 .ops = &clk_rcg2_ops,
752         },
753 };
754
755 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
756         .cmd_rcgr = 0x04000,
757         .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
758         .hid_width = 5,
759         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
760         .clkr.hw.init = &(struct clk_init_data){
761                 .name = "blsp1_qup3_i2c_apps_clk_src",
762                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
763                 .num_parents = 3,
764                 .ops = &clk_rcg2_ops,
765         },
766 };
767
768 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
769         .cmd_rcgr = 0x04014,
770         .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
771         .mnd_width = 8,
772         .hid_width = 5,
773         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
774         .clkr.hw.init = &(struct clk_init_data){
775                 .name = "blsp1_qup3_spi_apps_clk_src",
776                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
777                 .num_parents = 3,
778                 .ops = &clk_rcg2_ops,
779         },
780 };
781
782 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
783         .cmd_rcgr = 0x05000,
784         .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
785         .hid_width = 5,
786         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
787         .clkr.hw.init = &(struct clk_init_data){
788                 .name = "blsp1_qup4_i2c_apps_clk_src",
789                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
790                 .num_parents = 3,
791                 .ops = &clk_rcg2_ops,
792         },
793 };
794
795 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
796         .cmd_rcgr = 0x05014,
797         .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
798         .mnd_width = 8,
799         .hid_width = 5,
800         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
801         .clkr.hw.init = &(struct clk_init_data){
802                 .name = "blsp1_qup4_spi_apps_clk_src",
803                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
804                 .num_parents = 3,
805                 .ops = &clk_rcg2_ops,
806         },
807 };
808
809 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
810         .cmd_rcgr = 0x06000,
811         .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
812         .hid_width = 5,
813         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
814         .clkr.hw.init = &(struct clk_init_data){
815                 .name = "blsp1_qup5_i2c_apps_clk_src",
816                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
817                 .num_parents = 3,
818                 .ops = &clk_rcg2_ops,
819         },
820 };
821
822 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
823         .cmd_rcgr = 0x06014,
824         .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
825         .mnd_width = 8,
826         .hid_width = 5,
827         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
828         .clkr.hw.init = &(struct clk_init_data){
829                 .name = "blsp1_qup5_spi_apps_clk_src",
830                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
831                 .num_parents = 3,
832                 .ops = &clk_rcg2_ops,
833         },
834 };
835
836 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
837         .cmd_rcgr = 0x07000,
838         .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
839         .hid_width = 5,
840         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
841         .clkr.hw.init = &(struct clk_init_data){
842                 .name = "blsp1_qup6_i2c_apps_clk_src",
843                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
844                 .num_parents = 3,
845                 .ops = &clk_rcg2_ops,
846         },
847 };
848
849 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
850         .cmd_rcgr = 0x07014,
851         .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
852         .mnd_width = 8,
853         .hid_width = 5,
854         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
855         .clkr.hw.init = &(struct clk_init_data){
856                 .name = "blsp1_qup6_spi_apps_clk_src",
857                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
858                 .num_parents = 3,
859                 .ops = &clk_rcg2_ops,
860         },
861 };
862
863 static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src[] = {
864         F(3686400, P_GPLL0_DIV2, 1, 144, 15625),
865         F(7372800, P_GPLL0_DIV2, 1, 288, 15625),
866         F(14745600, P_GPLL0_DIV2, 1, 576, 15625),
867         F(16000000, P_GPLL0_DIV2, 5, 1, 5),
868         F(19200000, P_XO, 1, 0, 0),
869         F(24000000, P_GPLL0, 1, 3, 100),
870         F(25000000, P_GPLL0, 16, 1, 2),
871         F(32000000, P_GPLL0, 1, 1, 25),
872         F(40000000, P_GPLL0, 1, 1, 20),
873         F(46400000, P_GPLL0, 1, 29, 500),
874         F(48000000, P_GPLL0, 1, 3, 50),
875         F(51200000, P_GPLL0, 1, 8, 125),
876         F(56000000, P_GPLL0, 1, 7, 100),
877         F(58982400, P_GPLL0, 1, 1152, 15625),
878         F(60000000, P_GPLL0, 1, 3, 40),
879         F(64000000, P_GPLL0, 12.5, 1, 1),
880         { }
881 };
882
883 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
884         .cmd_rcgr = 0x02044,
885         .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
886         .mnd_width = 16,
887         .hid_width = 5,
888         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
889         .clkr.hw.init = &(struct clk_init_data){
890                 .name = "blsp1_uart1_apps_clk_src",
891                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
892                 .num_parents = 3,
893                 .ops = &clk_rcg2_ops,
894         },
895 };
896
897 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
898         .cmd_rcgr = 0x03034,
899         .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
900         .mnd_width = 16,
901         .hid_width = 5,
902         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
903         .clkr.hw.init = &(struct clk_init_data){
904                 .name = "blsp1_uart2_apps_clk_src",
905                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
906                 .num_parents = 3,
907                 .ops = &clk_rcg2_ops,
908         },
909 };
910
911 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
912         .cmd_rcgr = 0x04034,
913         .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
914         .mnd_width = 16,
915         .hid_width = 5,
916         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
917         .clkr.hw.init = &(struct clk_init_data){
918                 .name = "blsp1_uart3_apps_clk_src",
919                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
920                 .num_parents = 3,
921                 .ops = &clk_rcg2_ops,
922         },
923 };
924
925 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
926         .cmd_rcgr = 0x05034,
927         .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
928         .mnd_width = 16,
929         .hid_width = 5,
930         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
931         .clkr.hw.init = &(struct clk_init_data){
932                 .name = "blsp1_uart4_apps_clk_src",
933                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
934                 .num_parents = 3,
935                 .ops = &clk_rcg2_ops,
936         },
937 };
938
939 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
940         .cmd_rcgr = 0x06034,
941         .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
942         .mnd_width = 16,
943         .hid_width = 5,
944         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
945         .clkr.hw.init = &(struct clk_init_data){
946                 .name = "blsp1_uart5_apps_clk_src",
947                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
948                 .num_parents = 3,
949                 .ops = &clk_rcg2_ops,
950         },
951 };
952
953 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
954         .cmd_rcgr = 0x07034,
955         .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
956         .mnd_width = 16,
957         .hid_width = 5,
958         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
959         .clkr.hw.init = &(struct clk_init_data){
960                 .name = "blsp1_uart6_apps_clk_src",
961                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
962                 .num_parents = 3,
963                 .ops = &clk_rcg2_ops,
964         },
965 };
966
967 static const struct freq_tbl ftbl_pcie_axi_clk_src[] = {
968         F(19200000, P_XO, 1, 0, 0),
969         F(200000000, P_GPLL0, 4, 0, 0),
970         { }
971 };
972
973 static struct clk_rcg2 pcie0_axi_clk_src = {
974         .cmd_rcgr = 0x75054,
975         .freq_tbl = ftbl_pcie_axi_clk_src,
976         .hid_width = 5,
977         .parent_map = gcc_xo_gpll0_map,
978         .clkr.hw.init = &(struct clk_init_data){
979                 .name = "pcie0_axi_clk_src",
980                 .parent_names = gcc_xo_gpll0,
981                 .num_parents = 2,
982                 .ops = &clk_rcg2_ops,
983         },
984 };
985
986 static const struct freq_tbl ftbl_pcie_aux_clk_src[] = {
987         F(19200000, P_XO, 1, 0, 0),
988 };
989
990 static struct clk_rcg2 pcie0_aux_clk_src = {
991         .cmd_rcgr = 0x75024,
992         .freq_tbl = ftbl_pcie_aux_clk_src,
993         .mnd_width = 16,
994         .hid_width = 5,
995         .parent_map = gcc_xo_gpll0_sleep_clk_map,
996         .clkr.hw.init = &(struct clk_init_data){
997                 .name = "pcie0_aux_clk_src",
998                 .parent_names = gcc_xo_gpll0_sleep_clk,
999                 .num_parents = 3,
1000                 .ops = &clk_rcg2_ops,
1001         },
1002 };
1003
1004 static struct clk_regmap_mux pcie0_pipe_clk_src = {
1005         .reg = 0x7501c,
1006         .shift = 8,
1007         .width = 2,
1008         .parent_map = gcc_pcie20_phy0_pipe_clk_xo_map,
1009         .clkr = {
1010                 .hw.init = &(struct clk_init_data){
1011                         .name = "pcie0_pipe_clk_src",
1012                         .parent_names = gcc_pcie20_phy0_pipe_clk_xo,
1013                         .num_parents = 2,
1014                         .ops = &clk_regmap_mux_closest_ops,
1015                         .flags = CLK_SET_RATE_PARENT,
1016                 },
1017         },
1018 };
1019
1020 static struct clk_rcg2 pcie1_axi_clk_src = {
1021         .cmd_rcgr = 0x76054,
1022         .freq_tbl = ftbl_pcie_axi_clk_src,
1023         .hid_width = 5,
1024         .parent_map = gcc_xo_gpll0_map,
1025         .clkr.hw.init = &(struct clk_init_data){
1026                 .name = "pcie1_axi_clk_src",
1027                 .parent_names = gcc_xo_gpll0,
1028                 .num_parents = 2,
1029                 .ops = &clk_rcg2_ops,
1030         },
1031 };
1032
1033 static struct clk_rcg2 pcie1_aux_clk_src = {
1034         .cmd_rcgr = 0x76024,
1035         .freq_tbl = ftbl_pcie_aux_clk_src,
1036         .mnd_width = 16,
1037         .hid_width = 5,
1038         .parent_map = gcc_xo_gpll0_sleep_clk_map,
1039         .clkr.hw.init = &(struct clk_init_data){
1040                 .name = "pcie1_aux_clk_src",
1041                 .parent_names = gcc_xo_gpll0_sleep_clk,
1042                 .num_parents = 3,
1043                 .ops = &clk_rcg2_ops,
1044         },
1045 };
1046
1047 static struct clk_regmap_mux pcie1_pipe_clk_src = {
1048         .reg = 0x7601c,
1049         .shift = 8,
1050         .width = 2,
1051         .parent_map = gcc_pcie20_phy1_pipe_clk_xo_map,
1052         .clkr = {
1053                 .hw.init = &(struct clk_init_data){
1054                         .name = "pcie1_pipe_clk_src",
1055                         .parent_names = gcc_pcie20_phy1_pipe_clk_xo,
1056                         .num_parents = 2,
1057                         .ops = &clk_regmap_mux_closest_ops,
1058                         .flags = CLK_SET_RATE_PARENT,
1059                 },
1060         },
1061 };
1062
1063 static const struct freq_tbl ftbl_sdcc_apps_clk_src[] = {
1064         F(144000, P_XO, 16, 3, 25),
1065         F(400000, P_XO, 12, 1, 4),
1066         F(24000000, P_GPLL2, 12, 1, 4),
1067         F(48000000, P_GPLL2, 12, 1, 2),
1068         F(96000000, P_GPLL2, 12, 0, 0),
1069         F(177777778, P_GPLL0, 4.5, 0, 0),
1070         F(192000000, P_GPLL2, 6, 0, 0),
1071         F(384000000, P_GPLL2, 3, 0, 0),
1072         { }
1073 };
1074
1075 static struct clk_rcg2 sdcc1_apps_clk_src = {
1076         .cmd_rcgr = 0x42004,
1077         .freq_tbl = ftbl_sdcc_apps_clk_src,
1078         .mnd_width = 8,
1079         .hid_width = 5,
1080         .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
1081         .clkr.hw.init = &(struct clk_init_data){
1082                 .name = "sdcc1_apps_clk_src",
1083                 .parent_names = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
1084                 .num_parents = 4,
1085                 .ops = &clk_rcg2_floor_ops,
1086         },
1087 };
1088
1089 static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = {
1090         F(19200000, P_XO, 1, 0, 0),
1091         F(160000000, P_GPLL0, 5, 0, 0),
1092         F(308570000, P_GPLL6, 3.5, 0, 0),
1093 };
1094
1095 static struct clk_rcg2 sdcc1_ice_core_clk_src = {
1096         .cmd_rcgr = 0x5d000,
1097         .freq_tbl = ftbl_sdcc_ice_core_clk_src,
1098         .mnd_width = 8,
1099         .hid_width = 5,
1100         .parent_map = gcc_xo_gpll0_gpll6_gpll0_div2_map,
1101         .clkr.hw.init = &(struct clk_init_data){
1102                 .name = "sdcc1_ice_core_clk_src",
1103                 .parent_names = gcc_xo_gpll0_gpll6_gpll0_div2,
1104                 .num_parents = 4,
1105                 .ops = &clk_rcg2_ops,
1106         },
1107 };
1108
1109 static struct clk_rcg2 sdcc2_apps_clk_src = {
1110         .cmd_rcgr = 0x43004,
1111         .freq_tbl = ftbl_sdcc_apps_clk_src,
1112         .mnd_width = 8,
1113         .hid_width = 5,
1114         .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
1115         .clkr.hw.init = &(struct clk_init_data){
1116                 .name = "sdcc2_apps_clk_src",
1117                 .parent_names = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
1118                 .num_parents = 4,
1119                 .ops = &clk_rcg2_ops,
1120         },
1121 };
1122
1123 static const struct freq_tbl ftbl_usb_master_clk_src[] = {
1124         F(80000000, P_GPLL0_DIV2, 5, 0, 0),
1125         F(100000000, P_GPLL0, 8, 0, 0),
1126         F(133330000, P_GPLL0, 6, 0, 0),
1127         { }
1128 };
1129
1130 static struct clk_rcg2 usb0_master_clk_src = {
1131         .cmd_rcgr = 0x3e00c,
1132         .freq_tbl = ftbl_usb_master_clk_src,
1133         .mnd_width = 8,
1134         .hid_width = 5,
1135         .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
1136         .clkr.hw.init = &(struct clk_init_data){
1137                 .name = "usb0_master_clk_src",
1138                 .parent_names = gcc_xo_gpll0_out_main_div2_gpll0,
1139                 .num_parents = 3,
1140                 .ops = &clk_rcg2_ops,
1141         },
1142 };
1143
1144 static const struct freq_tbl ftbl_usb_aux_clk_src[] = {
1145         F(19200000, P_XO, 1, 0, 0),
1146         { }
1147 };
1148
1149 static struct clk_rcg2 usb0_aux_clk_src = {
1150         .cmd_rcgr = 0x3e05c,
1151         .freq_tbl = ftbl_usb_aux_clk_src,
1152         .mnd_width = 16,
1153         .hid_width = 5,
1154         .parent_map = gcc_xo_gpll0_sleep_clk_map,
1155         .clkr.hw.init = &(struct clk_init_data){
1156                 .name = "usb0_aux_clk_src",
1157                 .parent_names = gcc_xo_gpll0_sleep_clk,
1158                 .num_parents = 3,
1159                 .ops = &clk_rcg2_ops,
1160         },
1161 };
1162
1163 static const struct freq_tbl ftbl_usb_mock_utmi_clk_src[] = {
1164         F(19200000, P_XO, 1, 0, 0),
1165         F(20000000, P_GPLL6, 6, 1, 9),
1166         F(60000000, P_GPLL6, 6, 1, 3),
1167         { }
1168 };
1169
1170 static struct clk_rcg2 usb0_mock_utmi_clk_src = {
1171         .cmd_rcgr = 0x3e020,
1172         .freq_tbl = ftbl_usb_mock_utmi_clk_src,
1173         .mnd_width = 8,
1174         .hid_width = 5,
1175         .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1176         .clkr.hw.init = &(struct clk_init_data){
1177                 .name = "usb0_mock_utmi_clk_src",
1178                 .parent_names = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1179                 .num_parents = 4,
1180                 .ops = &clk_rcg2_ops,
1181         },
1182 };
1183
1184 static struct clk_regmap_mux usb0_pipe_clk_src = {
1185         .reg = 0x3e048,
1186         .shift = 8,
1187         .width = 2,
1188         .parent_map = gcc_usb3phy_0_cc_pipe_clk_xo_map,
1189         .clkr = {
1190                 .hw.init = &(struct clk_init_data){
1191                         .name = "usb0_pipe_clk_src",
1192                         .parent_names = gcc_usb3phy_0_cc_pipe_clk_xo,
1193                         .num_parents = 2,
1194                         .ops = &clk_regmap_mux_closest_ops,
1195                         .flags = CLK_SET_RATE_PARENT,
1196                 },
1197         },
1198 };
1199
1200 static struct clk_rcg2 usb1_master_clk_src = {
1201         .cmd_rcgr = 0x3f00c,
1202         .freq_tbl = ftbl_usb_master_clk_src,
1203         .mnd_width = 8,
1204         .hid_width = 5,
1205         .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
1206         .clkr.hw.init = &(struct clk_init_data){
1207                 .name = "usb1_master_clk_src",
1208                 .parent_names = gcc_xo_gpll0_out_main_div2_gpll0,
1209                 .num_parents = 3,
1210                 .ops = &clk_rcg2_ops,
1211         },
1212 };
1213
1214 static struct clk_rcg2 usb1_aux_clk_src = {
1215         .cmd_rcgr = 0x3f05c,
1216         .freq_tbl = ftbl_usb_aux_clk_src,
1217         .mnd_width = 16,
1218         .hid_width = 5,
1219         .parent_map = gcc_xo_gpll0_sleep_clk_map,
1220         .clkr.hw.init = &(struct clk_init_data){
1221                 .name = "usb1_aux_clk_src",
1222                 .parent_names = gcc_xo_gpll0_sleep_clk,
1223                 .num_parents = 3,
1224                 .ops = &clk_rcg2_ops,
1225         },
1226 };
1227
1228 static struct clk_rcg2 usb1_mock_utmi_clk_src = {
1229         .cmd_rcgr = 0x3f020,
1230         .freq_tbl = ftbl_usb_mock_utmi_clk_src,
1231         .mnd_width = 8,
1232         .hid_width = 5,
1233         .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1234         .clkr.hw.init = &(struct clk_init_data){
1235                 .name = "usb1_mock_utmi_clk_src",
1236                 .parent_names = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1237                 .num_parents = 4,
1238                 .ops = &clk_rcg2_ops,
1239         },
1240 };
1241
1242 static struct clk_regmap_mux usb1_pipe_clk_src = {
1243         .reg = 0x3f048,
1244         .shift = 8,
1245         .width = 2,
1246         .parent_map = gcc_usb3phy_1_cc_pipe_clk_xo_map,
1247         .clkr = {
1248                 .hw.init = &(struct clk_init_data){
1249                         .name = "usb1_pipe_clk_src",
1250                         .parent_names = gcc_usb3phy_1_cc_pipe_clk_xo,
1251                         .num_parents = 2,
1252                         .ops = &clk_regmap_mux_closest_ops,
1253                         .flags = CLK_SET_RATE_PARENT,
1254                 },
1255         },
1256 };
1257
1258 static struct clk_branch gcc_xo_clk_src = {
1259         .halt_reg = 0x30018,
1260         .clkr = {
1261                 .enable_reg = 0x30018,
1262                 .enable_mask = BIT(1),
1263                 .hw.init = &(struct clk_init_data){
1264                         .name = "gcc_xo_clk_src",
1265                         .parent_names = (const char *[]){
1266                                 "xo"
1267                         },
1268                         .num_parents = 1,
1269                         .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
1270                         .ops = &clk_branch2_ops,
1271                 },
1272         },
1273 };
1274
1275 static struct clk_fixed_factor gcc_xo_div4_clk_src = {
1276         .mult = 1,
1277         .div = 4,
1278         .hw.init = &(struct clk_init_data){
1279                 .name = "gcc_xo_div4_clk_src",
1280                 .parent_names = (const char *[]){
1281                         "gcc_xo_clk_src"
1282                 },
1283                 .num_parents = 1,
1284                 .ops = &clk_fixed_factor_ops,
1285                 .flags = CLK_SET_RATE_PARENT,
1286         },
1287 };
1288
1289 static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src[] = {
1290         F(19200000, P_XO, 1, 0, 0),
1291         F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1292         F(100000000, P_GPLL0, 8, 0, 0),
1293         F(133333333, P_GPLL0, 6, 0, 0),
1294         F(160000000, P_GPLL0, 5, 0, 0),
1295         F(200000000, P_GPLL0, 4, 0, 0),
1296         F(266666667, P_GPLL0, 3, 0, 0),
1297         { }
1298 };
1299
1300 static struct clk_rcg2 system_noc_bfdcd_clk_src = {
1301         .cmd_rcgr = 0x26004,
1302         .freq_tbl = ftbl_system_noc_bfdcd_clk_src,
1303         .hid_width = 5,
1304         .parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
1305         .clkr.hw.init = &(struct clk_init_data){
1306                 .name = "system_noc_bfdcd_clk_src",
1307                 .parent_names = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
1308                 .num_parents = 4,
1309                 .ops = &clk_rcg2_ops,
1310                 .flags = CLK_IS_CRITICAL,
1311         },
1312 };
1313
1314 static struct clk_fixed_factor system_noc_clk_src = {
1315         .mult = 1,
1316         .div = 1,
1317         .hw.init = &(struct clk_init_data){
1318                 .name = "system_noc_clk_src",
1319                 .parent_names = (const char *[]){
1320                         "system_noc_bfdcd_clk_src"
1321                 },
1322                 .num_parents = 1,
1323                 .ops = &clk_fixed_factor_ops,
1324                 .flags = CLK_SET_RATE_PARENT,
1325         },
1326 };
1327
1328 static const struct freq_tbl ftbl_nss_ce_clk_src[] = {
1329         F(19200000, P_XO, 1, 0, 0),
1330         F(200000000, P_GPLL0, 4, 0, 0),
1331         { }
1332 };
1333
1334 static struct clk_rcg2 nss_ce_clk_src = {
1335         .cmd_rcgr = 0x68098,
1336         .freq_tbl = ftbl_nss_ce_clk_src,
1337         .hid_width = 5,
1338         .parent_map = gcc_xo_gpll0_map,
1339         .clkr.hw.init = &(struct clk_init_data){
1340                 .name = "nss_ce_clk_src",
1341                 .parent_names = gcc_xo_gpll0,
1342                 .num_parents = 2,
1343                 .ops = &clk_rcg2_ops,
1344         },
1345 };
1346
1347 static const struct freq_tbl ftbl_nss_noc_bfdcd_clk_src[] = {
1348         F(19200000, P_XO, 1, 0, 0),
1349         F(461500000, P_BIAS_PLL_NSS_NOC, 1, 0, 0),
1350         { }
1351 };
1352
1353 static struct clk_rcg2 nss_noc_bfdcd_clk_src = {
1354         .cmd_rcgr = 0x68088,
1355         .freq_tbl = ftbl_nss_noc_bfdcd_clk_src,
1356         .hid_width = 5,
1357         .parent_map = gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2_map,
1358         .clkr.hw.init = &(struct clk_init_data){
1359                 .name = "nss_noc_bfdcd_clk_src",
1360                 .parent_names = gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2,
1361                 .num_parents = 4,
1362                 .ops = &clk_rcg2_ops,
1363         },
1364 };
1365
1366 static struct clk_fixed_factor nss_noc_clk_src = {
1367         .mult = 1,
1368         .div = 1,
1369         .hw.init = &(struct clk_init_data){
1370                 .name = "nss_noc_clk_src",
1371                 .parent_names = (const char *[]){
1372                         "nss_noc_bfdcd_clk_src"
1373                 },
1374                 .num_parents = 1,
1375                 .ops = &clk_fixed_factor_ops,
1376                 .flags = CLK_SET_RATE_PARENT,
1377         },
1378 };
1379
1380 static const struct freq_tbl ftbl_nss_crypto_clk_src[] = {
1381         F(19200000, P_XO, 1, 0, 0),
1382         F(600000000, P_NSS_CRYPTO_PLL, 1, 0, 0),
1383         { }
1384 };
1385
1386 static struct clk_rcg2 nss_crypto_clk_src = {
1387         .cmd_rcgr = 0x68144,
1388         .freq_tbl = ftbl_nss_crypto_clk_src,
1389         .mnd_width = 16,
1390         .hid_width = 5,
1391         .parent_map = gcc_xo_nss_crypto_pll_gpll0_map,
1392         .clkr.hw.init = &(struct clk_init_data){
1393                 .name = "nss_crypto_clk_src",
1394                 .parent_names = gcc_xo_nss_crypto_pll_gpll0,
1395                 .num_parents = 3,
1396                 .ops = &clk_rcg2_ops,
1397         },
1398 };
1399
1400 static const struct freq_tbl ftbl_nss_ubi_clk_src[] = {
1401         F(19200000, P_XO, 1, 0, 0),
1402         F(187200000, P_UBI32_PLL, 8, 0, 0),
1403         F(748800000, P_UBI32_PLL, 2, 0, 0),
1404         F(1497600000, P_UBI32_PLL, 1, 0, 0),
1405         F(1689600000, P_UBI32_PLL, 1, 0, 0),
1406         { }
1407 };
1408
1409 static struct clk_rcg2 nss_ubi0_clk_src = {
1410         .cmd_rcgr = 0x68104,
1411         .freq_tbl = ftbl_nss_ubi_clk_src,
1412         .hid_width = 5,
1413         .parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,
1414         .clkr.hw.init = &(struct clk_init_data){
1415                 .name = "nss_ubi0_clk_src",
1416                 .parent_names = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
1417                 .num_parents = 6,
1418                 .ops = &clk_rcg2_ops,
1419                 .flags = CLK_SET_RATE_PARENT,
1420         },
1421 };
1422
1423 static struct clk_regmap_div nss_ubi0_div_clk_src = {
1424         .reg = 0x68118,
1425         .shift = 0,
1426         .width = 4,
1427         .clkr = {
1428                 .hw.init = &(struct clk_init_data){
1429                         .name = "nss_ubi0_div_clk_src",
1430                         .parent_names = (const char *[]){
1431                                 "nss_ubi0_clk_src"
1432                         },
1433                         .num_parents = 1,
1434                         .ops = &clk_regmap_div_ro_ops,
1435                         .flags = CLK_SET_RATE_PARENT,
1436                 },
1437         },
1438 };
1439
1440 static struct clk_rcg2 nss_ubi1_clk_src = {
1441         .cmd_rcgr = 0x68124,
1442         .freq_tbl = ftbl_nss_ubi_clk_src,
1443         .hid_width = 5,
1444         .parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,
1445         .clkr.hw.init = &(struct clk_init_data){
1446                 .name = "nss_ubi1_clk_src",
1447                 .parent_names = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
1448                 .num_parents = 6,
1449                 .ops = &clk_rcg2_ops,
1450                 .flags = CLK_SET_RATE_PARENT,
1451         },
1452 };
1453
1454 static struct clk_regmap_div nss_ubi1_div_clk_src = {
1455         .reg = 0x68138,
1456         .shift = 0,
1457         .width = 4,
1458         .clkr = {
1459                 .hw.init = &(struct clk_init_data){
1460                         .name = "nss_ubi1_div_clk_src",
1461                         .parent_names = (const char *[]){
1462                                 "nss_ubi1_clk_src"
1463                         },
1464                         .num_parents = 1,
1465                         .ops = &clk_regmap_div_ro_ops,
1466                         .flags = CLK_SET_RATE_PARENT,
1467                 },
1468         },
1469 };
1470
1471 static const struct freq_tbl ftbl_ubi_mpt_clk_src[] = {
1472         F(19200000, P_XO, 1, 0, 0),
1473         F(25000000, P_GPLL0_DIV2, 16, 0, 0),
1474         { }
1475 };
1476
1477 static struct clk_rcg2 ubi_mpt_clk_src = {
1478         .cmd_rcgr = 0x68090,
1479         .freq_tbl = ftbl_ubi_mpt_clk_src,
1480         .hid_width = 5,
1481         .parent_map = gcc_xo_gpll0_out_main_div2_map,
1482         .clkr.hw.init = &(struct clk_init_data){
1483                 .name = "ubi_mpt_clk_src",
1484                 .parent_names = gcc_xo_gpll0_out_main_div2,
1485                 .num_parents = 2,
1486                 .ops = &clk_rcg2_ops,
1487         },
1488 };
1489
1490 static const struct freq_tbl ftbl_nss_imem_clk_src[] = {
1491         F(19200000, P_XO, 1, 0, 0),
1492         F(400000000, P_GPLL0, 2, 0, 0),
1493         { }
1494 };
1495
1496 static struct clk_rcg2 nss_imem_clk_src = {
1497         .cmd_rcgr = 0x68158,
1498         .freq_tbl = ftbl_nss_imem_clk_src,
1499         .hid_width = 5,
1500         .parent_map = gcc_xo_gpll0_gpll4_map,
1501         .clkr.hw.init = &(struct clk_init_data){
1502                 .name = "nss_imem_clk_src",
1503                 .parent_names = gcc_xo_gpll0_gpll4,
1504                 .num_parents = 3,
1505                 .ops = &clk_rcg2_ops,
1506         },
1507 };
1508
1509 static const struct freq_tbl ftbl_nss_ppe_clk_src[] = {
1510         F(19200000, P_XO, 1, 0, 0),
1511         F(300000000, P_BIAS_PLL, 1, 0, 0),
1512         { }
1513 };
1514
1515 static struct clk_rcg2 nss_ppe_clk_src = {
1516         .cmd_rcgr = 0x68080,
1517         .freq_tbl = ftbl_nss_ppe_clk_src,
1518         .hid_width = 5,
1519         .parent_map = gcc_xo_bias_gpll0_gpll4_nss_ubi32_map,
1520         .clkr.hw.init = &(struct clk_init_data){
1521                 .name = "nss_ppe_clk_src",
1522                 .parent_names = gcc_xo_bias_gpll0_gpll4_nss_ubi32,
1523                 .num_parents = 6,
1524                 .ops = &clk_rcg2_ops,
1525         },
1526 };
1527
1528 static struct clk_fixed_factor nss_ppe_cdiv_clk_src = {
1529         .mult = 1,
1530         .div = 4,
1531         .hw.init = &(struct clk_init_data){
1532                 .name = "nss_ppe_cdiv_clk_src",
1533                 .parent_names = (const char *[]){
1534                         "nss_ppe_clk_src"
1535                 },
1536                 .num_parents = 1,
1537                 .ops = &clk_fixed_factor_ops,
1538                 .flags = CLK_SET_RATE_PARENT,
1539         },
1540 };
1541
1542 static const struct freq_tbl ftbl_nss_port1_rx_clk_src[] = {
1543         F(19200000, P_XO, 1, 0, 0),
1544         F(25000000, P_UNIPHY0_RX, 5, 0, 0),
1545         F(125000000, P_UNIPHY0_RX, 1, 0, 0),
1546         { }
1547 };
1548
1549 static struct clk_rcg2 nss_port1_rx_clk_src = {
1550         .cmd_rcgr = 0x68020,
1551         .freq_tbl = ftbl_nss_port1_rx_clk_src,
1552         .hid_width = 5,
1553         .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
1554         .clkr.hw.init = &(struct clk_init_data){
1555                 .name = "nss_port1_rx_clk_src",
1556                 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
1557                 .num_parents = 5,
1558                 .ops = &clk_rcg2_ops,
1559         },
1560 };
1561
1562 static struct clk_regmap_div nss_port1_rx_div_clk_src = {
1563         .reg = 0x68400,
1564         .shift = 0,
1565         .width = 4,
1566         .clkr = {
1567                 .hw.init = &(struct clk_init_data){
1568                         .name = "nss_port1_rx_div_clk_src",
1569                         .parent_names = (const char *[]){
1570                                 "nss_port1_rx_clk_src"
1571                         },
1572                         .num_parents = 1,
1573                         .ops = &clk_regmap_div_ops,
1574                         .flags = CLK_SET_RATE_PARENT,
1575                 },
1576         },
1577 };
1578
1579 static const struct freq_tbl ftbl_nss_port1_tx_clk_src[] = {
1580         F(19200000, P_XO, 1, 0, 0),
1581         F(25000000, P_UNIPHY0_TX, 5, 0, 0),
1582         F(125000000, P_UNIPHY0_TX, 1, 0, 0),
1583         { }
1584 };
1585
1586 static struct clk_rcg2 nss_port1_tx_clk_src = {
1587         .cmd_rcgr = 0x68028,
1588         .freq_tbl = ftbl_nss_port1_tx_clk_src,
1589         .hid_width = 5,
1590         .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
1591         .clkr.hw.init = &(struct clk_init_data){
1592                 .name = "nss_port1_tx_clk_src",
1593                 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
1594                 .num_parents = 5,
1595                 .ops = &clk_rcg2_ops,
1596         },
1597 };
1598
1599 static struct clk_regmap_div nss_port1_tx_div_clk_src = {
1600         .reg = 0x68404,
1601         .shift = 0,
1602         .width = 4,
1603         .clkr = {
1604                 .hw.init = &(struct clk_init_data){
1605                         .name = "nss_port1_tx_div_clk_src",
1606                         .parent_names = (const char *[]){
1607                                 "nss_port1_tx_clk_src"
1608                         },
1609                         .num_parents = 1,
1610                         .ops = &clk_regmap_div_ops,
1611                         .flags = CLK_SET_RATE_PARENT,
1612                 },
1613         },
1614 };
1615
1616 static struct clk_rcg2 nss_port2_rx_clk_src = {
1617         .cmd_rcgr = 0x68030,
1618         .freq_tbl = ftbl_nss_port1_rx_clk_src,
1619         .hid_width = 5,
1620         .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
1621         .clkr.hw.init = &(struct clk_init_data){
1622                 .name = "nss_port2_rx_clk_src",
1623                 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
1624                 .num_parents = 5,
1625                 .ops = &clk_rcg2_ops,
1626         },
1627 };
1628
1629 static struct clk_regmap_div nss_port2_rx_div_clk_src = {
1630         .reg = 0x68410,
1631         .shift = 0,
1632         .width = 4,
1633         .clkr = {
1634                 .hw.init = &(struct clk_init_data){
1635                         .name = "nss_port2_rx_div_clk_src",
1636                         .parent_names = (const char *[]){
1637                                 "nss_port2_rx_clk_src"
1638                         },
1639                         .num_parents = 1,
1640                         .ops = &clk_regmap_div_ops,
1641                         .flags = CLK_SET_RATE_PARENT,
1642                 },
1643         },
1644 };
1645
1646 static struct clk_rcg2 nss_port2_tx_clk_src = {
1647         .cmd_rcgr = 0x68038,
1648         .freq_tbl = ftbl_nss_port1_tx_clk_src,
1649         .hid_width = 5,
1650         .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
1651         .clkr.hw.init = &(struct clk_init_data){
1652                 .name = "nss_port2_tx_clk_src",
1653                 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
1654                 .num_parents = 5,
1655                 .ops = &clk_rcg2_ops,
1656         },
1657 };
1658
1659 static struct clk_regmap_div nss_port2_tx_div_clk_src = {
1660         .reg = 0x68414,
1661         .shift = 0,
1662         .width = 4,
1663         .clkr = {
1664                 .hw.init = &(struct clk_init_data){
1665                         .name = "nss_port2_tx_div_clk_src",
1666                         .parent_names = (const char *[]){
1667                                 "nss_port2_tx_clk_src"
1668                         },
1669                         .num_parents = 1,
1670                         .ops = &clk_regmap_div_ops,
1671                         .flags = CLK_SET_RATE_PARENT,
1672                 },
1673         },
1674 };
1675
1676 static struct clk_rcg2 nss_port3_rx_clk_src = {
1677         .cmd_rcgr = 0x68040,
1678         .freq_tbl = ftbl_nss_port1_rx_clk_src,
1679         .hid_width = 5,
1680         .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
1681         .clkr.hw.init = &(struct clk_init_data){
1682                 .name = "nss_port3_rx_clk_src",
1683                 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
1684                 .num_parents = 5,
1685                 .ops = &clk_rcg2_ops,
1686         },
1687 };
1688
1689 static struct clk_regmap_div nss_port3_rx_div_clk_src = {
1690         .reg = 0x68420,
1691         .shift = 0,
1692         .width = 4,
1693         .clkr = {
1694                 .hw.init = &(struct clk_init_data){
1695                         .name = "nss_port3_rx_div_clk_src",
1696                         .parent_names = (const char *[]){
1697                                 "nss_port3_rx_clk_src"
1698                         },
1699                         .num_parents = 1,
1700                         .ops = &clk_regmap_div_ops,
1701                         .flags = CLK_SET_RATE_PARENT,
1702                 },
1703         },
1704 };
1705
1706 static struct clk_rcg2 nss_port3_tx_clk_src = {
1707         .cmd_rcgr = 0x68048,
1708         .freq_tbl = ftbl_nss_port1_tx_clk_src,
1709         .hid_width = 5,
1710         .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
1711         .clkr.hw.init = &(struct clk_init_data){
1712                 .name = "nss_port3_tx_clk_src",
1713                 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
1714                 .num_parents = 5,
1715                 .ops = &clk_rcg2_ops,
1716         },
1717 };
1718
1719 static struct clk_regmap_div nss_port3_tx_div_clk_src = {
1720         .reg = 0x68424,
1721         .shift = 0,
1722         .width = 4,
1723         .clkr = {
1724                 .hw.init = &(struct clk_init_data){
1725                         .name = "nss_port3_tx_div_clk_src",
1726                         .parent_names = (const char *[]){
1727                                 "nss_port3_tx_clk_src"
1728                         },
1729                         .num_parents = 1,
1730                         .ops = &clk_regmap_div_ops,
1731                         .flags = CLK_SET_RATE_PARENT,
1732                 },
1733         },
1734 };
1735
1736 static struct clk_rcg2 nss_port4_rx_clk_src = {
1737         .cmd_rcgr = 0x68050,
1738         .freq_tbl = ftbl_nss_port1_rx_clk_src,
1739         .hid_width = 5,
1740         .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
1741         .clkr.hw.init = &(struct clk_init_data){
1742                 .name = "nss_port4_rx_clk_src",
1743                 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
1744                 .num_parents = 5,
1745                 .ops = &clk_rcg2_ops,
1746         },
1747 };
1748
1749 static struct clk_regmap_div nss_port4_rx_div_clk_src = {
1750         .reg = 0x68430,
1751         .shift = 0,
1752         .width = 4,
1753         .clkr = {
1754                 .hw.init = &(struct clk_init_data){
1755                         .name = "nss_port4_rx_div_clk_src",
1756                         .parent_names = (const char *[]){
1757                                 "nss_port4_rx_clk_src"
1758                         },
1759                         .num_parents = 1,
1760                         .ops = &clk_regmap_div_ops,
1761                         .flags = CLK_SET_RATE_PARENT,
1762                 },
1763         },
1764 };
1765
1766 static struct clk_rcg2 nss_port4_tx_clk_src = {
1767         .cmd_rcgr = 0x68058,
1768         .freq_tbl = ftbl_nss_port1_tx_clk_src,
1769         .hid_width = 5,
1770         .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
1771         .clkr.hw.init = &(struct clk_init_data){
1772                 .name = "nss_port4_tx_clk_src",
1773                 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
1774                 .num_parents = 5,
1775                 .ops = &clk_rcg2_ops,
1776         },
1777 };
1778
1779 static struct clk_regmap_div nss_port4_tx_div_clk_src = {
1780         .reg = 0x68434,
1781         .shift = 0,
1782         .width = 4,
1783         .clkr = {
1784                 .hw.init = &(struct clk_init_data){
1785                         .name = "nss_port4_tx_div_clk_src",
1786                         .parent_names = (const char *[]){
1787                                 "nss_port4_tx_clk_src"
1788                         },
1789                         .num_parents = 1,
1790                         .ops = &clk_regmap_div_ops,
1791                         .flags = CLK_SET_RATE_PARENT,
1792                 },
1793         },
1794 };
1795
1796 static const struct freq_tbl ftbl_nss_port5_rx_clk_src[] = {
1797         F(19200000, P_XO, 1, 0, 0),
1798         F(25000000, P_UNIPHY1_RX, 12.5, 0, 0),
1799         F(78125000, P_UNIPHY1_RX, 4, 0, 0),
1800         F(125000000, P_UNIPHY1_RX, 2.5, 0, 0),
1801         F(156250000, P_UNIPHY1_RX, 2, 0, 0),
1802         F(312500000, P_UNIPHY1_RX, 1, 0, 0),
1803         { }
1804 };
1805
1806 static struct clk_rcg2 nss_port5_rx_clk_src = {
1807         .cmd_rcgr = 0x68060,
1808         .freq_tbl = ftbl_nss_port5_rx_clk_src,
1809         .hid_width = 5,
1810         .parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map,
1811         .clkr.hw.init = &(struct clk_init_data){
1812                 .name = "nss_port5_rx_clk_src",
1813                 .parent_names = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias,
1814                 .num_parents = 7,
1815                 .ops = &clk_rcg2_ops,
1816         },
1817 };
1818
1819 static struct clk_regmap_div nss_port5_rx_div_clk_src = {
1820         .reg = 0x68440,
1821         .shift = 0,
1822         .width = 4,
1823         .clkr = {
1824                 .hw.init = &(struct clk_init_data){
1825                         .name = "nss_port5_rx_div_clk_src",
1826                         .parent_names = (const char *[]){
1827                                 "nss_port5_rx_clk_src"
1828                         },
1829                         .num_parents = 1,
1830                         .ops = &clk_regmap_div_ops,
1831                         .flags = CLK_SET_RATE_PARENT,
1832                 },
1833         },
1834 };
1835
1836 static const struct freq_tbl ftbl_nss_port5_tx_clk_src[] = {
1837         F(19200000, P_XO, 1, 0, 0),
1838         F(25000000, P_UNIPHY1_TX, 12.5, 0, 0),
1839         F(78125000, P_UNIPHY1_TX, 4, 0, 0),
1840         F(125000000, P_UNIPHY1_TX, 2.5, 0, 0),
1841         F(156250000, P_UNIPHY1_TX, 2, 0, 0),
1842         F(312500000, P_UNIPHY1_TX, 1, 0, 0),
1843         { }
1844 };
1845
1846 static struct clk_rcg2 nss_port5_tx_clk_src = {
1847         .cmd_rcgr = 0x68068,
1848         .freq_tbl = ftbl_nss_port5_tx_clk_src,
1849         .hid_width = 5,
1850         .parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map,
1851         .clkr.hw.init = &(struct clk_init_data){
1852                 .name = "nss_port5_tx_clk_src",
1853                 .parent_names = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias,
1854                 .num_parents = 7,
1855                 .ops = &clk_rcg2_ops,
1856         },
1857 };
1858
1859 static struct clk_regmap_div nss_port5_tx_div_clk_src = {
1860         .reg = 0x68444,
1861         .shift = 0,
1862         .width = 4,
1863         .clkr = {
1864                 .hw.init = &(struct clk_init_data){
1865                         .name = "nss_port5_tx_div_clk_src",
1866                         .parent_names = (const char *[]){
1867                                 "nss_port5_tx_clk_src"
1868                         },
1869                         .num_parents = 1,
1870                         .ops = &clk_regmap_div_ops,
1871                         .flags = CLK_SET_RATE_PARENT,
1872                 },
1873         },
1874 };
1875
1876 static const struct freq_tbl ftbl_nss_port6_rx_clk_src[] = {
1877         F(19200000, P_XO, 1, 0, 0),
1878         F(25000000, P_UNIPHY2_RX, 12.5, 0, 0),
1879         F(78125000, P_UNIPHY2_RX, 4, 0, 0),
1880         F(125000000, P_UNIPHY2_RX, 2.5, 0, 0),
1881         F(156250000, P_UNIPHY2_RX, 2, 0, 0),
1882         F(312500000, P_UNIPHY2_RX, 1, 0, 0),
1883         { }
1884 };
1885
1886 static struct clk_rcg2 nss_port6_rx_clk_src = {
1887         .cmd_rcgr = 0x68070,
1888         .freq_tbl = ftbl_nss_port6_rx_clk_src,
1889         .hid_width = 5,
1890         .parent_map = gcc_xo_uniphy2_rx_tx_ubi32_bias_map,
1891         .clkr.hw.init = &(struct clk_init_data){
1892                 .name = "nss_port6_rx_clk_src",
1893                 .parent_names = gcc_xo_uniphy2_rx_tx_ubi32_bias,
1894                 .num_parents = 5,
1895                 .ops = &clk_rcg2_ops,
1896         },
1897 };
1898
1899 static struct clk_regmap_div nss_port6_rx_div_clk_src = {
1900         .reg = 0x68450,
1901         .shift = 0,
1902         .width = 4,
1903         .clkr = {
1904                 .hw.init = &(struct clk_init_data){
1905                         .name = "nss_port6_rx_div_clk_src",
1906                         .parent_names = (const char *[]){
1907                                 "nss_port6_rx_clk_src"
1908                         },
1909                         .num_parents = 1,
1910                         .ops = &clk_regmap_div_ops,
1911                         .flags = CLK_SET_RATE_PARENT,
1912                 },
1913         },
1914 };
1915
1916 static const struct freq_tbl ftbl_nss_port6_tx_clk_src[] = {
1917         F(19200000, P_XO, 1, 0, 0),
1918         F(25000000, P_UNIPHY2_TX, 12.5, 0, 0),
1919         F(78125000, P_UNIPHY2_TX, 4, 0, 0),
1920         F(125000000, P_UNIPHY2_TX, 2.5, 0, 0),
1921         F(156250000, P_UNIPHY2_TX, 2, 0, 0),
1922         F(312500000, P_UNIPHY2_TX, 1, 0, 0),
1923         { }
1924 };
1925
1926 static struct clk_rcg2 nss_port6_tx_clk_src = {
1927         .cmd_rcgr = 0x68078,
1928         .freq_tbl = ftbl_nss_port6_tx_clk_src,
1929         .hid_width = 5,
1930         .parent_map = gcc_xo_uniphy2_tx_rx_ubi32_bias_map,
1931         .clkr.hw.init = &(struct clk_init_data){
1932                 .name = "nss_port6_tx_clk_src",
1933                 .parent_names = gcc_xo_uniphy2_tx_rx_ubi32_bias,
1934                 .num_parents = 5,
1935                 .ops = &clk_rcg2_ops,
1936         },
1937 };
1938
1939 static struct clk_regmap_div nss_port6_tx_div_clk_src = {
1940         .reg = 0x68454,
1941         .shift = 0,
1942         .width = 4,
1943         .clkr = {
1944                 .hw.init = &(struct clk_init_data){
1945                         .name = "nss_port6_tx_div_clk_src",
1946                         .parent_names = (const char *[]){
1947                                 "nss_port6_tx_clk_src"
1948                         },
1949                         .num_parents = 1,
1950                         .ops = &clk_regmap_div_ops,
1951                         .flags = CLK_SET_RATE_PARENT,
1952                 },
1953         },
1954 };
1955
1956 static struct freq_tbl ftbl_crypto_clk_src[] = {
1957         F(40000000, P_GPLL0_DIV2, 10, 0, 0),
1958         F(80000000, P_GPLL0, 10, 0, 0),
1959         F(100000000, P_GPLL0, 8, 0, 0),
1960         F(160000000, P_GPLL0, 5, 0, 0),
1961         { }
1962 };
1963
1964 static struct clk_rcg2 crypto_clk_src = {
1965         .cmd_rcgr = 0x16004,
1966         .freq_tbl = ftbl_crypto_clk_src,
1967         .hid_width = 5,
1968         .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1969         .clkr.hw.init = &(struct clk_init_data){
1970                 .name = "crypto_clk_src",
1971                 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
1972                 .num_parents = 3,
1973                 .ops = &clk_rcg2_ops,
1974         },
1975 };
1976
1977 static struct freq_tbl ftbl_gp_clk_src[] = {
1978         F(19200000, P_XO, 1, 0, 0),
1979         { }
1980 };
1981
1982 static struct clk_rcg2 gp1_clk_src = {
1983         .cmd_rcgr = 0x08004,
1984         .freq_tbl = ftbl_gp_clk_src,
1985         .mnd_width = 8,
1986         .hid_width = 5,
1987         .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1988         .clkr.hw.init = &(struct clk_init_data){
1989                 .name = "gp1_clk_src",
1990                 .parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1991                 .num_parents = 5,
1992                 .ops = &clk_rcg2_ops,
1993         },
1994 };
1995
1996 static struct clk_rcg2 gp2_clk_src = {
1997         .cmd_rcgr = 0x09004,
1998         .freq_tbl = ftbl_gp_clk_src,
1999         .mnd_width = 8,
2000         .hid_width = 5,
2001         .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
2002         .clkr.hw.init = &(struct clk_init_data){
2003                 .name = "gp2_clk_src",
2004                 .parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
2005                 .num_parents = 5,
2006                 .ops = &clk_rcg2_ops,
2007         },
2008 };
2009
2010 static struct clk_rcg2 gp3_clk_src = {
2011         .cmd_rcgr = 0x0a004,
2012         .freq_tbl = ftbl_gp_clk_src,
2013         .mnd_width = 8,
2014         .hid_width = 5,
2015         .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
2016         .clkr.hw.init = &(struct clk_init_data){
2017                 .name = "gp3_clk_src",
2018                 .parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
2019                 .num_parents = 5,
2020                 .ops = &clk_rcg2_ops,
2021         },
2022 };
2023
2024 static struct clk_branch gcc_blsp1_ahb_clk = {
2025         .halt_reg = 0x01008,
2026         .clkr = {
2027                 .enable_reg = 0x01008,
2028                 .enable_mask = BIT(0),
2029                 .hw.init = &(struct clk_init_data){
2030                         .name = "gcc_blsp1_ahb_clk",
2031                         .parent_names = (const char *[]){
2032                                 "pcnoc_clk_src"
2033                         },
2034                         .num_parents = 1,
2035                         .flags = CLK_SET_RATE_PARENT,
2036                         .ops = &clk_branch2_ops,
2037                 },
2038         },
2039 };
2040
2041 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
2042         .halt_reg = 0x02008,
2043         .clkr = {
2044                 .enable_reg = 0x02008,
2045                 .enable_mask = BIT(0),
2046                 .hw.init = &(struct clk_init_data){
2047                         .name = "gcc_blsp1_qup1_i2c_apps_clk",
2048                         .parent_names = (const char *[]){
2049                                 "blsp1_qup1_i2c_apps_clk_src"
2050                         },
2051                         .num_parents = 1,
2052                         .flags = CLK_SET_RATE_PARENT,
2053                         .ops = &clk_branch2_ops,
2054                 },
2055         },
2056 };
2057
2058 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
2059         .halt_reg = 0x02004,
2060         .clkr = {
2061                 .enable_reg = 0x02004,
2062                 .enable_mask = BIT(0),
2063                 .hw.init = &(struct clk_init_data){
2064                         .name = "gcc_blsp1_qup1_spi_apps_clk",
2065                         .parent_names = (const char *[]){
2066                                 "blsp1_qup1_spi_apps_clk_src"
2067                         },
2068                         .num_parents = 1,
2069                         .flags = CLK_SET_RATE_PARENT,
2070                         .ops = &clk_branch2_ops,
2071                 },
2072         },
2073 };
2074
2075 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
2076         .halt_reg = 0x03010,
2077         .clkr = {
2078                 .enable_reg = 0x03010,
2079                 .enable_mask = BIT(0),
2080                 .hw.init = &(struct clk_init_data){
2081                         .name = "gcc_blsp1_qup2_i2c_apps_clk",
2082                         .parent_names = (const char *[]){
2083                                 "blsp1_qup2_i2c_apps_clk_src"
2084                         },
2085                         .num_parents = 1,
2086                         .flags = CLK_SET_RATE_PARENT,
2087                         .ops = &clk_branch2_ops,
2088                 },
2089         },
2090 };
2091
2092 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
2093         .halt_reg = 0x0300c,
2094         .clkr = {
2095                 .enable_reg = 0x0300c,
2096                 .enable_mask = BIT(0),
2097                 .hw.init = &(struct clk_init_data){
2098                         .name = "gcc_blsp1_qup2_spi_apps_clk",
2099                         .parent_names = (const char *[]){
2100                                 "blsp1_qup2_spi_apps_clk_src"
2101                         },
2102                         .num_parents = 1,
2103                         .flags = CLK_SET_RATE_PARENT,
2104                         .ops = &clk_branch2_ops,
2105                 },
2106         },
2107 };
2108
2109 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
2110         .halt_reg = 0x04010,
2111         .clkr = {
2112                 .enable_reg = 0x04010,
2113                 .enable_mask = BIT(0),
2114                 .hw.init = &(struct clk_init_data){
2115                         .name = "gcc_blsp1_qup3_i2c_apps_clk",
2116                         .parent_names = (const char *[]){
2117                                 "blsp1_qup3_i2c_apps_clk_src"
2118                         },
2119                         .num_parents = 1,
2120                         .flags = CLK_SET_RATE_PARENT,
2121                         .ops = &clk_branch2_ops,
2122                 },
2123         },
2124 };
2125
2126 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
2127         .halt_reg = 0x0400c,
2128         .clkr = {
2129                 .enable_reg = 0x0400c,
2130                 .enable_mask = BIT(0),
2131                 .hw.init = &(struct clk_init_data){
2132                         .name = "gcc_blsp1_qup3_spi_apps_clk",
2133                         .parent_names = (const char *[]){
2134                                 "blsp1_qup3_spi_apps_clk_src"
2135                         },
2136                         .num_parents = 1,
2137                         .flags = CLK_SET_RATE_PARENT,
2138                         .ops = &clk_branch2_ops,
2139                 },
2140         },
2141 };
2142
2143 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
2144         .halt_reg = 0x05010,
2145         .clkr = {
2146                 .enable_reg = 0x05010,
2147                 .enable_mask = BIT(0),
2148                 .hw.init = &(struct clk_init_data){
2149                         .name = "gcc_blsp1_qup4_i2c_apps_clk",
2150                         .parent_names = (const char *[]){
2151                                 "blsp1_qup4_i2c_apps_clk_src"
2152                         },
2153                         .num_parents = 1,
2154                         .flags = CLK_SET_RATE_PARENT,
2155                         .ops = &clk_branch2_ops,
2156                 },
2157         },
2158 };
2159
2160 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
2161         .halt_reg = 0x0500c,
2162         .clkr = {
2163                 .enable_reg = 0x0500c,
2164                 .enable_mask = BIT(0),
2165                 .hw.init = &(struct clk_init_data){
2166                         .name = "gcc_blsp1_qup4_spi_apps_clk",
2167                         .parent_names = (const char *[]){
2168                                 "blsp1_qup4_spi_apps_clk_src"
2169                         },
2170                         .num_parents = 1,
2171                         .flags = CLK_SET_RATE_PARENT,
2172                         .ops = &clk_branch2_ops,
2173                 },
2174         },
2175 };
2176
2177 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
2178         .halt_reg = 0x06010,
2179         .clkr = {
2180                 .enable_reg = 0x06010,
2181                 .enable_mask = BIT(0),
2182                 .hw.init = &(struct clk_init_data){
2183                         .name = "gcc_blsp1_qup5_i2c_apps_clk",
2184                         .parent_names = (const char *[]){
2185                                 "blsp1_qup5_i2c_apps_clk_src"
2186                         },
2187                         .num_parents = 1,
2188                         .flags = CLK_SET_RATE_PARENT,
2189                         .ops = &clk_branch2_ops,
2190                 },
2191         },
2192 };
2193
2194 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
2195         .halt_reg = 0x0600c,
2196         .clkr = {
2197                 .enable_reg = 0x0600c,
2198                 .enable_mask = BIT(0),
2199                 .hw.init = &(struct clk_init_data){
2200                         .name = "gcc_blsp1_qup5_spi_apps_clk",
2201                         .parent_names = (const char *[]){
2202                                 "blsp1_qup5_spi_apps_clk_src"
2203                         },
2204                         .num_parents = 1,
2205                         .flags = CLK_SET_RATE_PARENT,
2206                         .ops = &clk_branch2_ops,
2207                 },
2208         },
2209 };
2210
2211 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
2212         .halt_reg = 0x07010,
2213         .clkr = {
2214                 .enable_reg = 0x07010,
2215                 .enable_mask = BIT(0),
2216                 .hw.init = &(struct clk_init_data){
2217                         .name = "gcc_blsp1_qup6_i2c_apps_clk",
2218                         .parent_names = (const char *[]){
2219                                 "blsp1_qup6_i2c_apps_clk_src"
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_blsp1_qup6_spi_apps_clk = {
2229         .halt_reg = 0x0700c,
2230         .clkr = {
2231                 .enable_reg = 0x0700c,
2232                 .enable_mask = BIT(0),
2233                 .hw.init = &(struct clk_init_data){
2234                         .name = "gcc_blsp1_qup6_spi_apps_clk",
2235                         .parent_names = (const char *[]){
2236                                 "blsp1_qup6_spi_apps_clk_src"
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_blsp1_uart1_apps_clk = {
2246         .halt_reg = 0x0203c,
2247         .clkr = {
2248                 .enable_reg = 0x0203c,
2249                 .enable_mask = BIT(0),
2250                 .hw.init = &(struct clk_init_data){
2251                         .name = "gcc_blsp1_uart1_apps_clk",
2252                         .parent_names = (const char *[]){
2253                                 "blsp1_uart1_apps_clk_src"
2254                         },
2255                         .num_parents = 1,
2256                         .flags = CLK_SET_RATE_PARENT,
2257                         .ops = &clk_branch2_ops,
2258                 },
2259         },
2260 };
2261
2262 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
2263         .halt_reg = 0x0302c,
2264         .clkr = {
2265                 .enable_reg = 0x0302c,
2266                 .enable_mask = BIT(0),
2267                 .hw.init = &(struct clk_init_data){
2268                         .name = "gcc_blsp1_uart2_apps_clk",
2269                         .parent_names = (const char *[]){
2270                                 "blsp1_uart2_apps_clk_src"
2271                         },
2272                         .num_parents = 1,
2273                         .flags = CLK_SET_RATE_PARENT,
2274                         .ops = &clk_branch2_ops,
2275                 },
2276         },
2277 };
2278
2279 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
2280         .halt_reg = 0x0402c,
2281         .clkr = {
2282                 .enable_reg = 0x0402c,
2283                 .enable_mask = BIT(0),
2284                 .hw.init = &(struct clk_init_data){
2285                         .name = "gcc_blsp1_uart3_apps_clk",
2286                         .parent_names = (const char *[]){
2287                                 "blsp1_uart3_apps_clk_src"
2288                         },
2289                         .num_parents = 1,
2290                         .flags = CLK_SET_RATE_PARENT,
2291                         .ops = &clk_branch2_ops,
2292                 },
2293         },
2294 };
2295
2296 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
2297         .halt_reg = 0x0502c,
2298         .clkr = {
2299                 .enable_reg = 0x0502c,
2300                 .enable_mask = BIT(0),
2301                 .hw.init = &(struct clk_init_data){
2302                         .name = "gcc_blsp1_uart4_apps_clk",
2303                         .parent_names = (const char *[]){
2304                                 "blsp1_uart4_apps_clk_src"
2305                         },
2306                         .num_parents = 1,
2307                         .flags = CLK_SET_RATE_PARENT,
2308                         .ops = &clk_branch2_ops,
2309                 },
2310         },
2311 };
2312
2313 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
2314         .halt_reg = 0x0602c,
2315         .clkr = {
2316                 .enable_reg = 0x0602c,
2317                 .enable_mask = BIT(0),
2318                 .hw.init = &(struct clk_init_data){
2319                         .name = "gcc_blsp1_uart5_apps_clk",
2320                         .parent_names = (const char *[]){
2321                                 "blsp1_uart5_apps_clk_src"
2322                         },
2323                         .num_parents = 1,
2324                         .flags = CLK_SET_RATE_PARENT,
2325                         .ops = &clk_branch2_ops,
2326                 },
2327         },
2328 };
2329
2330 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
2331         .halt_reg = 0x0702c,
2332         .clkr = {
2333                 .enable_reg = 0x0702c,
2334                 .enable_mask = BIT(0),
2335                 .hw.init = &(struct clk_init_data){
2336                         .name = "gcc_blsp1_uart6_apps_clk",
2337                         .parent_names = (const char *[]){
2338                                 "blsp1_uart6_apps_clk_src"
2339                         },
2340                         .num_parents = 1,
2341                         .flags = CLK_SET_RATE_PARENT,
2342                         .ops = &clk_branch2_ops,
2343                 },
2344         },
2345 };
2346
2347 static struct clk_branch gcc_prng_ahb_clk = {
2348         .halt_reg = 0x13004,
2349         .halt_check = BRANCH_HALT_VOTED,
2350         .clkr = {
2351                 .enable_reg = 0x0b004,
2352                 .enable_mask = BIT(8),
2353                 .hw.init = &(struct clk_init_data){
2354                         .name = "gcc_prng_ahb_clk",
2355                         .parent_names = (const char *[]){
2356                                 "pcnoc_clk_src"
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_qpic_ahb_clk = {
2366         .halt_reg = 0x57024,
2367         .clkr = {
2368                 .enable_reg = 0x57024,
2369                 .enable_mask = BIT(0),
2370                 .hw.init = &(struct clk_init_data){
2371                         .name = "gcc_qpic_ahb_clk",
2372                         .parent_names = (const char *[]){
2373                                 "pcnoc_clk_src"
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_qpic_clk = {
2383         .halt_reg = 0x57020,
2384         .clkr = {
2385                 .enable_reg = 0x57020,
2386                 .enable_mask = BIT(0),
2387                 .hw.init = &(struct clk_init_data){
2388                         .name = "gcc_qpic_clk",
2389                         .parent_names = (const char *[]){
2390                                 "pcnoc_clk_src"
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_pcie0_ahb_clk = {
2400         .halt_reg = 0x75010,
2401         .clkr = {
2402                 .enable_reg = 0x75010,
2403                 .enable_mask = BIT(0),
2404                 .hw.init = &(struct clk_init_data){
2405                         .name = "gcc_pcie0_ahb_clk",
2406                         .parent_names = (const char *[]){
2407                                 "pcnoc_clk_src"
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_pcie0_aux_clk = {
2417         .halt_reg = 0x75014,
2418         .clkr = {
2419                 .enable_reg = 0x75014,
2420                 .enable_mask = BIT(0),
2421                 .hw.init = &(struct clk_init_data){
2422                         .name = "gcc_pcie0_aux_clk",
2423                         .parent_names = (const char *[]){
2424                                 "pcie0_aux_clk_src"
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_pcie0_axi_m_clk = {
2434         .halt_reg = 0x75008,
2435         .clkr = {
2436                 .enable_reg = 0x75008,
2437                 .enable_mask = BIT(0),
2438                 .hw.init = &(struct clk_init_data){
2439                         .name = "gcc_pcie0_axi_m_clk",
2440                         .parent_names = (const char *[]){
2441                                 "pcie0_axi_clk_src"
2442                         },
2443                         .num_parents = 1,
2444                         .flags = CLK_SET_RATE_PARENT,
2445                         .ops = &clk_branch2_ops,
2446                 },
2447         },
2448 };
2449
2450 static struct clk_branch gcc_pcie0_axi_s_clk = {
2451         .halt_reg = 0x7500c,
2452         .clkr = {
2453                 .enable_reg = 0x7500c,
2454                 .enable_mask = BIT(0),
2455                 .hw.init = &(struct clk_init_data){
2456                         .name = "gcc_pcie0_axi_s_clk",
2457                         .parent_names = (const char *[]){
2458                                 "pcie0_axi_clk_src"
2459                         },
2460                         .num_parents = 1,
2461                         .flags = CLK_SET_RATE_PARENT,
2462                         .ops = &clk_branch2_ops,
2463                 },
2464         },
2465 };
2466
2467 static struct clk_branch gcc_pcie0_pipe_clk = {
2468         .halt_reg = 0x75018,
2469         .halt_check = BRANCH_HALT_DELAY,
2470         .clkr = {
2471                 .enable_reg = 0x75018,
2472                 .enable_mask = BIT(0),
2473                 .hw.init = &(struct clk_init_data){
2474                         .name = "gcc_pcie0_pipe_clk",
2475                         .parent_names = (const char *[]){
2476                                 "pcie0_pipe_clk_src"
2477                         },
2478                         .num_parents = 1,
2479                         .flags = CLK_SET_RATE_PARENT,
2480                         .ops = &clk_branch2_ops,
2481                 },
2482         },
2483 };
2484
2485 static struct clk_branch gcc_sys_noc_pcie0_axi_clk = {
2486         .halt_reg = 0x26048,
2487         .clkr = {
2488                 .enable_reg = 0x26048,
2489                 .enable_mask = BIT(0),
2490                 .hw.init = &(struct clk_init_data){
2491                         .name = "gcc_sys_noc_pcie0_axi_clk",
2492                         .parent_names = (const char *[]){
2493                                 "pcie0_axi_clk_src"
2494                         },
2495                         .num_parents = 1,
2496                         .flags = CLK_SET_RATE_PARENT,
2497                         .ops = &clk_branch2_ops,
2498                 },
2499         },
2500 };
2501
2502 static struct clk_branch gcc_pcie1_ahb_clk = {
2503         .halt_reg = 0x76010,
2504         .clkr = {
2505                 .enable_reg = 0x76010,
2506                 .enable_mask = BIT(0),
2507                 .hw.init = &(struct clk_init_data){
2508                         .name = "gcc_pcie1_ahb_clk",
2509                         .parent_names = (const char *[]){
2510                                 "pcnoc_clk_src"
2511                         },
2512                         .num_parents = 1,
2513                         .flags = CLK_SET_RATE_PARENT,
2514                         .ops = &clk_branch2_ops,
2515                 },
2516         },
2517 };
2518
2519 static struct clk_branch gcc_pcie1_aux_clk = {
2520         .halt_reg = 0x76014,
2521         .clkr = {
2522                 .enable_reg = 0x76014,
2523                 .enable_mask = BIT(0),
2524                 .hw.init = &(struct clk_init_data){
2525                         .name = "gcc_pcie1_aux_clk",
2526                         .parent_names = (const char *[]){
2527                                 "pcie1_aux_clk_src"
2528                         },
2529                         .num_parents = 1,
2530                         .flags = CLK_SET_RATE_PARENT,
2531                         .ops = &clk_branch2_ops,
2532                 },
2533         },
2534 };
2535
2536 static struct clk_branch gcc_pcie1_axi_m_clk = {
2537         .halt_reg = 0x76008,
2538         .clkr = {
2539                 .enable_reg = 0x76008,
2540                 .enable_mask = BIT(0),
2541                 .hw.init = &(struct clk_init_data){
2542                         .name = "gcc_pcie1_axi_m_clk",
2543                         .parent_names = (const char *[]){
2544                                 "pcie1_axi_clk_src"
2545                         },
2546                         .num_parents = 1,
2547                         .flags = CLK_SET_RATE_PARENT,
2548                         .ops = &clk_branch2_ops,
2549                 },
2550         },
2551 };
2552
2553 static struct clk_branch gcc_pcie1_axi_s_clk = {
2554         .halt_reg = 0x7600c,
2555         .clkr = {
2556                 .enable_reg = 0x7600c,
2557                 .enable_mask = BIT(0),
2558                 .hw.init = &(struct clk_init_data){
2559                         .name = "gcc_pcie1_axi_s_clk",
2560                         .parent_names = (const char *[]){
2561                                 "pcie1_axi_clk_src"
2562                         },
2563                         .num_parents = 1,
2564                         .flags = CLK_SET_RATE_PARENT,
2565                         .ops = &clk_branch2_ops,
2566                 },
2567         },
2568 };
2569
2570 static struct clk_branch gcc_pcie1_pipe_clk = {
2571         .halt_reg = 0x76018,
2572         .halt_check = BRANCH_HALT_DELAY,
2573         .clkr = {
2574                 .enable_reg = 0x76018,
2575                 .enable_mask = BIT(0),
2576                 .hw.init = &(struct clk_init_data){
2577                         .name = "gcc_pcie1_pipe_clk",
2578                         .parent_names = (const char *[]){
2579                                 "pcie1_pipe_clk_src"
2580                         },
2581                         .num_parents = 1,
2582                         .flags = CLK_SET_RATE_PARENT,
2583                         .ops = &clk_branch2_ops,
2584                 },
2585         },
2586 };
2587
2588 static struct clk_branch gcc_sys_noc_pcie1_axi_clk = {
2589         .halt_reg = 0x2604c,
2590         .clkr = {
2591                 .enable_reg = 0x2604c,
2592                 .enable_mask = BIT(0),
2593                 .hw.init = &(struct clk_init_data){
2594                         .name = "gcc_sys_noc_pcie1_axi_clk",
2595                         .parent_names = (const char *[]){
2596                                 "pcie1_axi_clk_src"
2597                         },
2598                         .num_parents = 1,
2599                         .flags = CLK_SET_RATE_PARENT,
2600                         .ops = &clk_branch2_ops,
2601                 },
2602         },
2603 };
2604
2605 static struct clk_branch gcc_usb0_aux_clk = {
2606         .halt_reg = 0x3e044,
2607         .clkr = {
2608                 .enable_reg = 0x3e044,
2609                 .enable_mask = BIT(0),
2610                 .hw.init = &(struct clk_init_data){
2611                         .name = "gcc_usb0_aux_clk",
2612                         .parent_names = (const char *[]){
2613                                 "usb0_aux_clk_src"
2614                         },
2615                         .num_parents = 1,
2616                         .flags = CLK_SET_RATE_PARENT,
2617                         .ops = &clk_branch2_ops,
2618                 },
2619         },
2620 };
2621
2622 static struct clk_branch gcc_sys_noc_usb0_axi_clk = {
2623         .halt_reg = 0x26040,
2624         .clkr = {
2625                 .enable_reg = 0x26040,
2626                 .enable_mask = BIT(0),
2627                 .hw.init = &(struct clk_init_data){
2628                         .name = "gcc_sys_noc_usb0_axi_clk",
2629                         .parent_names = (const char *[]){
2630                                 "usb0_master_clk_src"
2631                         },
2632                         .num_parents = 1,
2633                         .flags = CLK_SET_RATE_PARENT,
2634                         .ops = &clk_branch2_ops,
2635                 },
2636         },
2637 };
2638
2639 static struct clk_branch gcc_usb0_master_clk = {
2640         .halt_reg = 0x3e000,
2641         .clkr = {
2642                 .enable_reg = 0x3e000,
2643                 .enable_mask = BIT(0),
2644                 .hw.init = &(struct clk_init_data){
2645                         .name = "gcc_usb0_master_clk",
2646                         .parent_names = (const char *[]){
2647                                 "usb0_master_clk_src"
2648                         },
2649                         .num_parents = 1,
2650                         .flags = CLK_SET_RATE_PARENT,
2651                         .ops = &clk_branch2_ops,
2652                 },
2653         },
2654 };
2655
2656 static struct clk_branch gcc_usb0_mock_utmi_clk = {
2657         .halt_reg = 0x3e008,
2658         .clkr = {
2659                 .enable_reg = 0x3e008,
2660                 .enable_mask = BIT(0),
2661                 .hw.init = &(struct clk_init_data){
2662                         .name = "gcc_usb0_mock_utmi_clk",
2663                         .parent_names = (const char *[]){
2664                                 "usb0_mock_utmi_clk_src"
2665                         },
2666                         .num_parents = 1,
2667                         .flags = CLK_SET_RATE_PARENT,
2668                         .ops = &clk_branch2_ops,
2669                 },
2670         },
2671 };
2672
2673 static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {
2674         .halt_reg = 0x3e080,
2675         .clkr = {
2676                 .enable_reg = 0x3e080,
2677                 .enable_mask = BIT(0),
2678                 .hw.init = &(struct clk_init_data){
2679                         .name = "gcc_usb0_phy_cfg_ahb_clk",
2680                         .parent_names = (const char *[]){
2681                                 "pcnoc_clk_src"
2682                         },
2683                         .num_parents = 1,
2684                         .flags = CLK_SET_RATE_PARENT,
2685                         .ops = &clk_branch2_ops,
2686                 },
2687         },
2688 };
2689
2690 static struct clk_branch gcc_usb0_pipe_clk = {
2691         .halt_reg = 0x3e040,
2692         .halt_check = BRANCH_HALT_DELAY,
2693         .clkr = {
2694                 .enable_reg = 0x3e040,
2695                 .enable_mask = BIT(0),
2696                 .hw.init = &(struct clk_init_data){
2697                         .name = "gcc_usb0_pipe_clk",
2698                         .parent_names = (const char *[]){
2699                                 "usb0_pipe_clk_src"
2700                         },
2701                         .num_parents = 1,
2702                         .flags = CLK_SET_RATE_PARENT,
2703                         .ops = &clk_branch2_ops,
2704                 },
2705         },
2706 };
2707
2708 static struct clk_branch gcc_usb0_sleep_clk = {
2709         .halt_reg = 0x3e004,
2710         .clkr = {
2711                 .enable_reg = 0x3e004,
2712                 .enable_mask = BIT(0),
2713                 .hw.init = &(struct clk_init_data){
2714                         .name = "gcc_usb0_sleep_clk",
2715                         .parent_names = (const char *[]){
2716                                 "gcc_sleep_clk_src"
2717                         },
2718                         .num_parents = 1,
2719                         .flags = CLK_SET_RATE_PARENT,
2720                         .ops = &clk_branch2_ops,
2721                 },
2722         },
2723 };
2724
2725 static struct clk_branch gcc_usb1_aux_clk = {
2726         .halt_reg = 0x3f044,
2727         .clkr = {
2728                 .enable_reg = 0x3f044,
2729                 .enable_mask = BIT(0),
2730                 .hw.init = &(struct clk_init_data){
2731                         .name = "gcc_usb1_aux_clk",
2732                         .parent_names = (const char *[]){
2733                                 "usb1_aux_clk_src"
2734                         },
2735                         .num_parents = 1,
2736                         .flags = CLK_SET_RATE_PARENT,
2737                         .ops = &clk_branch2_ops,
2738                 },
2739         },
2740 };
2741
2742 static struct clk_branch gcc_sys_noc_usb1_axi_clk = {
2743         .halt_reg = 0x26044,
2744         .clkr = {
2745                 .enable_reg = 0x26044,
2746                 .enable_mask = BIT(0),
2747                 .hw.init = &(struct clk_init_data){
2748                         .name = "gcc_sys_noc_usb1_axi_clk",
2749                         .parent_names = (const char *[]){
2750                                 "usb1_master_clk_src"
2751                         },
2752                         .num_parents = 1,
2753                         .flags = CLK_SET_RATE_PARENT,
2754                         .ops = &clk_branch2_ops,
2755                 },
2756         },
2757 };
2758
2759 static struct clk_branch gcc_usb1_master_clk = {
2760         .halt_reg = 0x3f000,
2761         .clkr = {
2762                 .enable_reg = 0x3f000,
2763                 .enable_mask = BIT(0),
2764                 .hw.init = &(struct clk_init_data){
2765                         .name = "gcc_usb1_master_clk",
2766                         .parent_names = (const char *[]){
2767                                 "usb1_master_clk_src"
2768                         },
2769                         .num_parents = 1,
2770                         .flags = CLK_SET_RATE_PARENT,
2771                         .ops = &clk_branch2_ops,
2772                 },
2773         },
2774 };
2775
2776 static struct clk_branch gcc_usb1_mock_utmi_clk = {
2777         .halt_reg = 0x3f008,
2778         .clkr = {
2779                 .enable_reg = 0x3f008,
2780                 .enable_mask = BIT(0),
2781                 .hw.init = &(struct clk_init_data){
2782                         .name = "gcc_usb1_mock_utmi_clk",
2783                         .parent_names = (const char *[]){
2784                                 "usb1_mock_utmi_clk_src"
2785                         },
2786                         .num_parents = 1,
2787                         .flags = CLK_SET_RATE_PARENT,
2788                         .ops = &clk_branch2_ops,
2789                 },
2790         },
2791 };
2792
2793 static struct clk_branch gcc_usb1_phy_cfg_ahb_clk = {
2794         .halt_reg = 0x3f080,
2795         .clkr = {
2796                 .enable_reg = 0x3f080,
2797                 .enable_mask = BIT(0),
2798                 .hw.init = &(struct clk_init_data){
2799                         .name = "gcc_usb1_phy_cfg_ahb_clk",
2800                         .parent_names = (const char *[]){
2801                                 "pcnoc_clk_src"
2802                         },
2803                         .num_parents = 1,
2804                         .flags = CLK_SET_RATE_PARENT,
2805                         .ops = &clk_branch2_ops,
2806                 },
2807         },
2808 };
2809
2810 static struct clk_branch gcc_usb1_pipe_clk = {
2811         .halt_reg = 0x3f040,
2812         .halt_check = BRANCH_HALT_DELAY,
2813         .clkr = {
2814                 .enable_reg = 0x3f040,
2815                 .enable_mask = BIT(0),
2816                 .hw.init = &(struct clk_init_data){
2817                         .name = "gcc_usb1_pipe_clk",
2818                         .parent_names = (const char *[]){
2819                                 "usb1_pipe_clk_src"
2820                         },
2821                         .num_parents = 1,
2822                         .flags = CLK_SET_RATE_PARENT,
2823                         .ops = &clk_branch2_ops,
2824                 },
2825         },
2826 };
2827
2828 static struct clk_branch gcc_usb1_sleep_clk = {
2829         .halt_reg = 0x3f004,
2830         .clkr = {
2831                 .enable_reg = 0x3f004,
2832                 .enable_mask = BIT(0),
2833                 .hw.init = &(struct clk_init_data){
2834                         .name = "gcc_usb1_sleep_clk",
2835                         .parent_names = (const char *[]){
2836                                 "gcc_sleep_clk_src"
2837                         },
2838                         .num_parents = 1,
2839                         .flags = CLK_SET_RATE_PARENT,
2840                         .ops = &clk_branch2_ops,
2841                 },
2842         },
2843 };
2844
2845 static struct clk_branch gcc_sdcc1_ahb_clk = {
2846         .halt_reg = 0x4201c,
2847         .clkr = {
2848                 .enable_reg = 0x4201c,
2849                 .enable_mask = BIT(0),
2850                 .hw.init = &(struct clk_init_data){
2851                         .name = "gcc_sdcc1_ahb_clk",
2852                         .parent_names = (const char *[]){
2853                                 "pcnoc_clk_src"
2854                         },
2855                         .num_parents = 1,
2856                         .flags = CLK_SET_RATE_PARENT,
2857                         .ops = &clk_branch2_ops,
2858                 },
2859         },
2860 };
2861
2862 static struct clk_branch gcc_sdcc1_apps_clk = {
2863         .halt_reg = 0x42018,
2864         .clkr = {
2865                 .enable_reg = 0x42018,
2866                 .enable_mask = BIT(0),
2867                 .hw.init = &(struct clk_init_data){
2868                         .name = "gcc_sdcc1_apps_clk",
2869                         .parent_names = (const char *[]){
2870                                 "sdcc1_apps_clk_src"
2871                         },
2872                         .num_parents = 1,
2873                         .flags = CLK_SET_RATE_PARENT,
2874                         .ops = &clk_branch2_ops,
2875                 },
2876         },
2877 };
2878
2879 static struct clk_branch gcc_sdcc1_ice_core_clk = {
2880         .halt_reg = 0x5d014,
2881         .clkr = {
2882                 .enable_reg = 0x5d014,
2883                 .enable_mask = BIT(0),
2884                 .hw.init = &(struct clk_init_data){
2885                         .name = "gcc_sdcc1_ice_core_clk",
2886                         .parent_names = (const char *[]){
2887                                 "sdcc1_ice_core_clk_src"
2888                         },
2889                         .num_parents = 1,
2890                         .flags = CLK_SET_RATE_PARENT,
2891                         .ops = &clk_branch2_ops,
2892                 },
2893         },
2894 };
2895
2896 static struct clk_branch gcc_sdcc2_ahb_clk = {
2897         .halt_reg = 0x4301c,
2898         .clkr = {
2899                 .enable_reg = 0x4301c,
2900                 .enable_mask = BIT(0),
2901                 .hw.init = &(struct clk_init_data){
2902                         .name = "gcc_sdcc2_ahb_clk",
2903                         .parent_names = (const char *[]){
2904                                 "pcnoc_clk_src"
2905                         },
2906                         .num_parents = 1,
2907                         .flags = CLK_SET_RATE_PARENT,
2908                         .ops = &clk_branch2_ops,
2909                 },
2910         },
2911 };
2912
2913 static struct clk_branch gcc_sdcc2_apps_clk = {
2914         .halt_reg = 0x43018,
2915         .clkr = {
2916                 .enable_reg = 0x43018,
2917                 .enable_mask = BIT(0),
2918                 .hw.init = &(struct clk_init_data){
2919                         .name = "gcc_sdcc2_apps_clk",
2920                         .parent_names = (const char *[]){
2921                                 "sdcc2_apps_clk_src"
2922                         },
2923                         .num_parents = 1,
2924                         .flags = CLK_SET_RATE_PARENT,
2925                         .ops = &clk_branch2_ops,
2926                 },
2927         },
2928 };
2929
2930 static struct clk_branch gcc_mem_noc_nss_axi_clk = {
2931         .halt_reg = 0x1d03c,
2932         .clkr = {
2933                 .enable_reg = 0x1d03c,
2934                 .enable_mask = BIT(0),
2935                 .hw.init = &(struct clk_init_data){
2936                         .name = "gcc_mem_noc_nss_axi_clk",
2937                         .parent_names = (const char *[]){
2938                                 "nss_noc_clk_src"
2939                         },
2940                         .num_parents = 1,
2941                         .flags = CLK_SET_RATE_PARENT,
2942                         .ops = &clk_branch2_ops,
2943                 },
2944         },
2945 };
2946
2947 static struct clk_branch gcc_nss_ce_apb_clk = {
2948         .halt_reg = 0x68174,
2949         .clkr = {
2950                 .enable_reg = 0x68174,
2951                 .enable_mask = BIT(0),
2952                 .hw.init = &(struct clk_init_data){
2953                         .name = "gcc_nss_ce_apb_clk",
2954                         .parent_names = (const char *[]){
2955                                 "nss_ce_clk_src"
2956                         },
2957                         .num_parents = 1,
2958                         .flags = CLK_SET_RATE_PARENT,
2959                         .ops = &clk_branch2_ops,
2960                 },
2961         },
2962 };
2963
2964 static struct clk_branch gcc_nss_ce_axi_clk = {
2965         .halt_reg = 0x68170,
2966         .clkr = {
2967                 .enable_reg = 0x68170,
2968                 .enable_mask = BIT(0),
2969                 .hw.init = &(struct clk_init_data){
2970                         .name = "gcc_nss_ce_axi_clk",
2971                         .parent_names = (const char *[]){
2972                                 "nss_ce_clk_src"
2973                         },
2974                         .num_parents = 1,
2975                         .flags = CLK_SET_RATE_PARENT,
2976                         .ops = &clk_branch2_ops,
2977                 },
2978         },
2979 };
2980
2981 static struct clk_branch gcc_nss_cfg_clk = {
2982         .halt_reg = 0x68160,
2983         .clkr = {
2984                 .enable_reg = 0x68160,
2985                 .enable_mask = BIT(0),
2986                 .hw.init = &(struct clk_init_data){
2987                         .name = "gcc_nss_cfg_clk",
2988                         .parent_names = (const char *[]){
2989                                 "pcnoc_clk_src"
2990                         },
2991                         .num_parents = 1,
2992                         .flags = CLK_SET_RATE_PARENT,
2993                         .ops = &clk_branch2_ops,
2994                 },
2995         },
2996 };
2997
2998 static struct clk_branch gcc_nss_crypto_clk = {
2999         .halt_reg = 0x68164,
3000         .clkr = {
3001                 .enable_reg = 0x68164,
3002                 .enable_mask = BIT(0),
3003                 .hw.init = &(struct clk_init_data){
3004                         .name = "gcc_nss_crypto_clk",
3005                         .parent_names = (const char *[]){
3006                                 "nss_crypto_clk_src"
3007                         },
3008                         .num_parents = 1,
3009                         .flags = CLK_SET_RATE_PARENT,
3010                         .ops = &clk_branch2_ops,
3011                 },
3012         },
3013 };
3014
3015 static struct clk_branch gcc_nss_csr_clk = {
3016         .halt_reg = 0x68318,
3017         .clkr = {
3018                 .enable_reg = 0x68318,
3019                 .enable_mask = BIT(0),
3020                 .hw.init = &(struct clk_init_data){
3021                         .name = "gcc_nss_csr_clk",
3022                         .parent_names = (const char *[]){
3023                                 "nss_ce_clk_src"
3024                         },
3025                         .num_parents = 1,
3026                         .flags = CLK_SET_RATE_PARENT,
3027                         .ops = &clk_branch2_ops,
3028                 },
3029         },
3030 };
3031
3032 static struct clk_branch gcc_nss_edma_cfg_clk = {
3033         .halt_reg = 0x6819c,
3034         .clkr = {
3035                 .enable_reg = 0x6819c,
3036                 .enable_mask = BIT(0),
3037                 .hw.init = &(struct clk_init_data){
3038                         .name = "gcc_nss_edma_cfg_clk",
3039                         .parent_names = (const char *[]){
3040                                 "nss_ppe_clk_src"
3041                         },
3042                         .num_parents = 1,
3043                         .flags = CLK_SET_RATE_PARENT,
3044                         .ops = &clk_branch2_ops,
3045                 },
3046         },
3047 };
3048
3049 static struct clk_branch gcc_nss_edma_clk = {
3050         .halt_reg = 0x68198,
3051         .clkr = {
3052                 .enable_reg = 0x68198,
3053                 .enable_mask = BIT(0),
3054                 .hw.init = &(struct clk_init_data){
3055                         .name = "gcc_nss_edma_clk",
3056                         .parent_names = (const char *[]){
3057                                 "nss_ppe_clk_src"
3058                         },
3059                         .num_parents = 1,
3060                         .flags = CLK_SET_RATE_PARENT,
3061                         .ops = &clk_branch2_ops,
3062                 },
3063         },
3064 };
3065
3066 static struct clk_branch gcc_nss_imem_clk = {
3067         .halt_reg = 0x68178,
3068         .clkr = {
3069                 .enable_reg = 0x68178,
3070                 .enable_mask = BIT(0),
3071                 .hw.init = &(struct clk_init_data){
3072                         .name = "gcc_nss_imem_clk",
3073                         .parent_names = (const char *[]){
3074                                 "nss_imem_clk_src"
3075                         },
3076                         .num_parents = 1,
3077                         .flags = CLK_SET_RATE_PARENT,
3078                         .ops = &clk_branch2_ops,
3079                 },
3080         },
3081 };
3082
3083 static struct clk_branch gcc_nss_noc_clk = {
3084         .halt_reg = 0x68168,
3085         .clkr = {
3086                 .enable_reg = 0x68168,
3087                 .enable_mask = BIT(0),
3088                 .hw.init = &(struct clk_init_data){
3089                         .name = "gcc_nss_noc_clk",
3090                         .parent_names = (const char *[]){
3091                                 "nss_noc_clk_src"
3092                         },
3093                         .num_parents = 1,
3094                         .flags = CLK_SET_RATE_PARENT,
3095                         .ops = &clk_branch2_ops,
3096                 },
3097         },
3098 };
3099
3100 static struct clk_branch gcc_nss_ppe_btq_clk = {
3101         .halt_reg = 0x6833c,
3102         .clkr = {
3103                 .enable_reg = 0x6833c,
3104                 .enable_mask = BIT(0),
3105                 .hw.init = &(struct clk_init_data){
3106                         .name = "gcc_nss_ppe_btq_clk",
3107                         .parent_names = (const char *[]){
3108                                 "nss_ppe_clk_src"
3109                         },
3110                         .num_parents = 1,
3111                         .flags = CLK_SET_RATE_PARENT,
3112                         .ops = &clk_branch2_ops,
3113                 },
3114         },
3115 };
3116
3117 static struct clk_branch gcc_nss_ppe_cfg_clk = {
3118         .halt_reg = 0x68194,
3119         .clkr = {
3120                 .enable_reg = 0x68194,
3121                 .enable_mask = BIT(0),
3122                 .hw.init = &(struct clk_init_data){
3123                         .name = "gcc_nss_ppe_cfg_clk",
3124                         .parent_names = (const char *[]){
3125                                 "nss_ppe_clk_src"
3126                         },
3127                         .num_parents = 1,
3128                         .flags = CLK_SET_RATE_PARENT,
3129                         .ops = &clk_branch2_ops,
3130                 },
3131         },
3132 };
3133
3134 static struct clk_branch gcc_nss_ppe_clk = {
3135         .halt_reg = 0x68190,
3136         .clkr = {
3137                 .enable_reg = 0x68190,
3138                 .enable_mask = BIT(0),
3139                 .hw.init = &(struct clk_init_data){
3140                         .name = "gcc_nss_ppe_clk",
3141                         .parent_names = (const char *[]){
3142                                 "nss_ppe_clk_src"
3143                         },
3144                         .num_parents = 1,
3145                         .flags = CLK_SET_RATE_PARENT,
3146                         .ops = &clk_branch2_ops,
3147                 },
3148         },
3149 };
3150
3151 static struct clk_branch gcc_nss_ppe_ipe_clk = {
3152         .halt_reg = 0x68338,
3153         .clkr = {
3154                 .enable_reg = 0x68338,
3155                 .enable_mask = BIT(0),
3156                 .hw.init = &(struct clk_init_data){
3157                         .name = "gcc_nss_ppe_ipe_clk",
3158                         .parent_names = (const char *[]){
3159                                 "nss_ppe_clk_src"
3160                         },
3161                         .num_parents = 1,
3162                         .flags = CLK_SET_RATE_PARENT,
3163                         .ops = &clk_branch2_ops,
3164                 },
3165         },
3166 };
3167
3168 static struct clk_branch gcc_nss_ptp_ref_clk = {
3169         .halt_reg = 0x6816c,
3170         .clkr = {
3171                 .enable_reg = 0x6816c,
3172                 .enable_mask = BIT(0),
3173                 .hw.init = &(struct clk_init_data){
3174                         .name = "gcc_nss_ptp_ref_clk",
3175                         .parent_names = (const char *[]){
3176                                 "nss_ppe_cdiv_clk_src"
3177                         },
3178                         .num_parents = 1,
3179                         .flags = CLK_SET_RATE_PARENT,
3180                         .ops = &clk_branch2_ops,
3181                 },
3182         },
3183 };
3184
3185 static struct clk_branch gcc_nssnoc_ce_apb_clk = {
3186         .halt_reg = 0x6830c,
3187         .clkr = {
3188                 .enable_reg = 0x6830c,
3189                 .enable_mask = BIT(0),
3190                 .hw.init = &(struct clk_init_data){
3191                         .name = "gcc_nssnoc_ce_apb_clk",
3192                         .parent_names = (const char *[]){
3193                                 "nss_ce_clk_src"
3194                         },
3195                         .num_parents = 1,
3196                         .flags = CLK_SET_RATE_PARENT,
3197                         .ops = &clk_branch2_ops,
3198                 },
3199         },
3200 };
3201
3202 static struct clk_branch gcc_nssnoc_ce_axi_clk = {
3203         .halt_reg = 0x68308,
3204         .clkr = {
3205                 .enable_reg = 0x68308,
3206                 .enable_mask = BIT(0),
3207                 .hw.init = &(struct clk_init_data){
3208                         .name = "gcc_nssnoc_ce_axi_clk",
3209                         .parent_names = (const char *[]){
3210                                 "nss_ce_clk_src"
3211                         },
3212                         .num_parents = 1,
3213                         .flags = CLK_SET_RATE_PARENT,
3214                         .ops = &clk_branch2_ops,
3215                 },
3216         },
3217 };
3218
3219 static struct clk_branch gcc_nssnoc_crypto_clk = {
3220         .halt_reg = 0x68314,
3221         .clkr = {
3222                 .enable_reg = 0x68314,
3223                 .enable_mask = BIT(0),
3224                 .hw.init = &(struct clk_init_data){
3225                         .name = "gcc_nssnoc_crypto_clk",
3226                         .parent_names = (const char *[]){
3227                                 "nss_crypto_clk_src"
3228                         },
3229                         .num_parents = 1,
3230                         .flags = CLK_SET_RATE_PARENT,
3231                         .ops = &clk_branch2_ops,
3232                 },
3233         },
3234 };
3235
3236 static struct clk_branch gcc_nssnoc_ppe_cfg_clk = {
3237         .halt_reg = 0x68304,
3238         .clkr = {
3239                 .enable_reg = 0x68304,
3240                 .enable_mask = BIT(0),
3241                 .hw.init = &(struct clk_init_data){
3242                         .name = "gcc_nssnoc_ppe_cfg_clk",
3243                         .parent_names = (const char *[]){
3244                                 "nss_ppe_clk_src"
3245                         },
3246                         .num_parents = 1,
3247                         .flags = CLK_SET_RATE_PARENT,
3248                         .ops = &clk_branch2_ops,
3249                 },
3250         },
3251 };
3252
3253 static struct clk_branch gcc_nssnoc_ppe_clk = {
3254         .halt_reg = 0x68300,
3255         .clkr = {
3256                 .enable_reg = 0x68300,
3257                 .enable_mask = BIT(0),
3258                 .hw.init = &(struct clk_init_data){
3259                         .name = "gcc_nssnoc_ppe_clk",
3260                         .parent_names = (const char *[]){
3261                                 "nss_ppe_clk_src"
3262                         },
3263                         .num_parents = 1,
3264                         .flags = CLK_SET_RATE_PARENT,
3265                         .ops = &clk_branch2_ops,
3266                 },
3267         },
3268 };
3269
3270 static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {
3271         .halt_reg = 0x68180,
3272         .clkr = {
3273                 .enable_reg = 0x68180,
3274                 .enable_mask = BIT(0),
3275                 .hw.init = &(struct clk_init_data){
3276                         .name = "gcc_nssnoc_qosgen_ref_clk",
3277                         .parent_names = (const char *[]){
3278                                 "gcc_xo_clk_src"
3279                         },
3280                         .num_parents = 1,
3281                         .flags = CLK_SET_RATE_PARENT,
3282                         .ops = &clk_branch2_ops,
3283                 },
3284         },
3285 };
3286
3287 static struct clk_branch gcc_nssnoc_snoc_clk = {
3288         .halt_reg = 0x68188,
3289         .clkr = {
3290                 .enable_reg = 0x68188,
3291                 .enable_mask = BIT(0),
3292                 .hw.init = &(struct clk_init_data){
3293                         .name = "gcc_nssnoc_snoc_clk",
3294                         .parent_names = (const char *[]){
3295                                 "system_noc_clk_src"
3296                         },
3297                         .num_parents = 1,
3298                         .flags = CLK_SET_RATE_PARENT,
3299                         .ops = &clk_branch2_ops,
3300                 },
3301         },
3302 };
3303
3304 static struct clk_branch gcc_nssnoc_timeout_ref_clk = {
3305         .halt_reg = 0x68184,
3306         .clkr = {
3307                 .enable_reg = 0x68184,
3308                 .enable_mask = BIT(0),
3309                 .hw.init = &(struct clk_init_data){
3310                         .name = "gcc_nssnoc_timeout_ref_clk",
3311                         .parent_names = (const char *[]){
3312                                 "gcc_xo_div4_clk_src"
3313                         },
3314                         .num_parents = 1,
3315                         .flags = CLK_SET_RATE_PARENT,
3316                         .ops = &clk_branch2_ops,
3317                 },
3318         },
3319 };
3320
3321 static struct clk_branch gcc_nssnoc_ubi0_ahb_clk = {
3322         .halt_reg = 0x68270,
3323         .clkr = {
3324                 .enable_reg = 0x68270,
3325                 .enable_mask = BIT(0),
3326                 .hw.init = &(struct clk_init_data){
3327                         .name = "gcc_nssnoc_ubi0_ahb_clk",
3328                         .parent_names = (const char *[]){
3329                                 "nss_ce_clk_src"
3330                         },
3331                         .num_parents = 1,
3332                         .flags = CLK_SET_RATE_PARENT,
3333                         .ops = &clk_branch2_ops,
3334                 },
3335         },
3336 };
3337
3338 static struct clk_branch gcc_nssnoc_ubi1_ahb_clk = {
3339         .halt_reg = 0x68274,
3340         .clkr = {
3341                 .enable_reg = 0x68274,
3342                 .enable_mask = BIT(0),
3343                 .hw.init = &(struct clk_init_data){
3344                         .name = "gcc_nssnoc_ubi1_ahb_clk",
3345                         .parent_names = (const char *[]){
3346                                 "nss_ce_clk_src"
3347                         },
3348                         .num_parents = 1,
3349                         .flags = CLK_SET_RATE_PARENT,
3350                         .ops = &clk_branch2_ops,
3351                 },
3352         },
3353 };
3354
3355 static struct clk_branch gcc_ubi0_ahb_clk = {
3356         .halt_reg = 0x6820c,
3357         .clkr = {
3358                 .enable_reg = 0x6820c,
3359                 .enable_mask = BIT(0),
3360                 .hw.init = &(struct clk_init_data){
3361                         .name = "gcc_ubi0_ahb_clk",
3362                         .parent_names = (const char *[]){
3363                                 "nss_ce_clk_src"
3364                         },
3365                         .num_parents = 1,
3366                         .flags = CLK_SET_RATE_PARENT,
3367                         .ops = &clk_branch2_ops,
3368                 },
3369         },
3370 };
3371
3372 static struct clk_branch gcc_ubi0_axi_clk = {
3373         .halt_reg = 0x68200,
3374         .clkr = {
3375                 .enable_reg = 0x68200,
3376                 .enable_mask = BIT(0),
3377                 .hw.init = &(struct clk_init_data){
3378                         .name = "gcc_ubi0_axi_clk",
3379                         .parent_names = (const char *[]){
3380                                 "nss_noc_clk_src"
3381                         },
3382                         .num_parents = 1,
3383                         .flags = CLK_SET_RATE_PARENT,
3384                         .ops = &clk_branch2_ops,
3385                 },
3386         },
3387 };
3388
3389 static struct clk_branch gcc_ubi0_nc_axi_clk = {
3390         .halt_reg = 0x68204,
3391         .clkr = {
3392                 .enable_reg = 0x68204,
3393                 .enable_mask = BIT(0),
3394                 .hw.init = &(struct clk_init_data){
3395                         .name = "gcc_ubi0_nc_axi_clk",
3396                         .parent_names = (const char *[]){
3397                                 "nss_noc_clk_src"
3398                         },
3399                         .num_parents = 1,
3400                         .flags = CLK_SET_RATE_PARENT,
3401                         .ops = &clk_branch2_ops,
3402                 },
3403         },
3404 };
3405
3406 static struct clk_branch gcc_ubi0_core_clk = {
3407         .halt_reg = 0x68210,
3408         .clkr = {
3409                 .enable_reg = 0x68210,
3410                 .enable_mask = BIT(0),
3411                 .hw.init = &(struct clk_init_data){
3412                         .name = "gcc_ubi0_core_clk",
3413                         .parent_names = (const char *[]){
3414                                 "nss_ubi0_div_clk_src"
3415                         },
3416                         .num_parents = 1,
3417                         .flags = CLK_SET_RATE_PARENT,
3418                         .ops = &clk_branch2_ops,
3419                 },
3420         },
3421 };
3422
3423 static struct clk_branch gcc_ubi0_mpt_clk = {
3424         .halt_reg = 0x68208,
3425         .clkr = {
3426                 .enable_reg = 0x68208,
3427                 .enable_mask = BIT(0),
3428                 .hw.init = &(struct clk_init_data){
3429                         .name = "gcc_ubi0_mpt_clk",
3430                         .parent_names = (const char *[]){
3431                                 "ubi_mpt_clk_src"
3432                         },
3433                         .num_parents = 1,
3434                         .flags = CLK_SET_RATE_PARENT,
3435                         .ops = &clk_branch2_ops,
3436                 },
3437         },
3438 };
3439
3440 static struct clk_branch gcc_ubi1_ahb_clk = {
3441         .halt_reg = 0x6822c,
3442         .clkr = {
3443                 .enable_reg = 0x6822c,
3444                 .enable_mask = BIT(0),
3445                 .hw.init = &(struct clk_init_data){
3446                         .name = "gcc_ubi1_ahb_clk",
3447                         .parent_names = (const char *[]){
3448                                 "nss_ce_clk_src"
3449                         },
3450                         .num_parents = 1,
3451                         .flags = CLK_SET_RATE_PARENT,
3452                         .ops = &clk_branch2_ops,
3453                 },
3454         },
3455 };
3456
3457 static struct clk_branch gcc_ubi1_axi_clk = {
3458         .halt_reg = 0x68220,
3459         .clkr = {
3460                 .enable_reg = 0x68220,
3461                 .enable_mask = BIT(0),
3462                 .hw.init = &(struct clk_init_data){
3463                         .name = "gcc_ubi1_axi_clk",
3464                         .parent_names = (const char *[]){
3465                                 "nss_noc_clk_src"
3466                         },
3467                         .num_parents = 1,
3468                         .flags = CLK_SET_RATE_PARENT,
3469                         .ops = &clk_branch2_ops,
3470                 },
3471         },
3472 };
3473
3474 static struct clk_branch gcc_ubi1_nc_axi_clk = {
3475         .halt_reg = 0x68224,
3476         .clkr = {
3477                 .enable_reg = 0x68224,
3478                 .enable_mask = BIT(0),
3479                 .hw.init = &(struct clk_init_data){
3480                         .name = "gcc_ubi1_nc_axi_clk",
3481                         .parent_names = (const char *[]){
3482                                 "nss_noc_clk_src"
3483                         },
3484                         .num_parents = 1,
3485                         .flags = CLK_SET_RATE_PARENT,
3486                         .ops = &clk_branch2_ops,
3487                 },
3488         },
3489 };
3490
3491 static struct clk_branch gcc_ubi1_core_clk = {
3492         .halt_reg = 0x68230,
3493         .clkr = {
3494                 .enable_reg = 0x68230,
3495                 .enable_mask = BIT(0),
3496                 .hw.init = &(struct clk_init_data){
3497                         .name = "gcc_ubi1_core_clk",
3498                         .parent_names = (const char *[]){
3499                                 "nss_ubi1_div_clk_src"
3500                         },
3501                         .num_parents = 1,
3502                         .flags = CLK_SET_RATE_PARENT,
3503                         .ops = &clk_branch2_ops,
3504                 },
3505         },
3506 };
3507
3508 static struct clk_branch gcc_ubi1_mpt_clk = {
3509         .halt_reg = 0x68228,
3510         .clkr = {
3511                 .enable_reg = 0x68228,
3512                 .enable_mask = BIT(0),
3513                 .hw.init = &(struct clk_init_data){
3514                         .name = "gcc_ubi1_mpt_clk",
3515                         .parent_names = (const char *[]){
3516                                 "ubi_mpt_clk_src"
3517                         },
3518                         .num_parents = 1,
3519                         .flags = CLK_SET_RATE_PARENT,
3520                         .ops = &clk_branch2_ops,
3521                 },
3522         },
3523 };
3524
3525 static struct clk_branch gcc_cmn_12gpll_ahb_clk = {
3526         .halt_reg = 0x56308,
3527         .clkr = {
3528                 .enable_reg = 0x56308,
3529                 .enable_mask = BIT(0),
3530                 .hw.init = &(struct clk_init_data){
3531                         .name = "gcc_cmn_12gpll_ahb_clk",
3532                         .parent_names = (const char *[]){
3533                                 "pcnoc_clk_src"
3534                         },
3535                         .num_parents = 1,
3536                         .flags = CLK_SET_RATE_PARENT,
3537                         .ops = &clk_branch2_ops,
3538                 },
3539         },
3540 };
3541
3542 static struct clk_branch gcc_cmn_12gpll_sys_clk = {
3543         .halt_reg = 0x5630c,
3544         .clkr = {
3545                 .enable_reg = 0x5630c,
3546                 .enable_mask = BIT(0),
3547                 .hw.init = &(struct clk_init_data){
3548                         .name = "gcc_cmn_12gpll_sys_clk",
3549                         .parent_names = (const char *[]){
3550                                 "gcc_xo_clk_src"
3551                         },
3552                         .num_parents = 1,
3553                         .flags = CLK_SET_RATE_PARENT,
3554                         .ops = &clk_branch2_ops,
3555                 },
3556         },
3557 };
3558
3559 static struct clk_branch gcc_mdio_ahb_clk = {
3560         .halt_reg = 0x58004,
3561         .clkr = {
3562                 .enable_reg = 0x58004,
3563                 .enable_mask = BIT(0),
3564                 .hw.init = &(struct clk_init_data){
3565                         .name = "gcc_mdio_ahb_clk",
3566                         .parent_names = (const char *[]){
3567                                 "pcnoc_clk_src"
3568                         },
3569                         .num_parents = 1,
3570                         .flags = CLK_SET_RATE_PARENT,
3571                         .ops = &clk_branch2_ops,
3572                 },
3573         },
3574 };
3575
3576 static struct clk_branch gcc_uniphy0_ahb_clk = {
3577         .halt_reg = 0x56008,
3578         .clkr = {
3579                 .enable_reg = 0x56008,
3580                 .enable_mask = BIT(0),
3581                 .hw.init = &(struct clk_init_data){
3582                         .name = "gcc_uniphy0_ahb_clk",
3583                         .parent_names = (const char *[]){
3584                                 "pcnoc_clk_src"
3585                         },
3586                         .num_parents = 1,
3587                         .flags = CLK_SET_RATE_PARENT,
3588                         .ops = &clk_branch2_ops,
3589                 },
3590         },
3591 };
3592
3593 static struct clk_branch gcc_uniphy0_sys_clk = {
3594         .halt_reg = 0x5600c,
3595         .clkr = {
3596                 .enable_reg = 0x5600c,
3597                 .enable_mask = BIT(0),
3598                 .hw.init = &(struct clk_init_data){
3599                         .name = "gcc_uniphy0_sys_clk",
3600                         .parent_names = (const char *[]){
3601                                 "gcc_xo_clk_src"
3602                         },
3603                         .num_parents = 1,
3604                         .flags = CLK_SET_RATE_PARENT,
3605                         .ops = &clk_branch2_ops,
3606                 },
3607         },
3608 };
3609
3610 static struct clk_branch gcc_uniphy1_ahb_clk = {
3611         .halt_reg = 0x56108,
3612         .clkr = {
3613                 .enable_reg = 0x56108,
3614                 .enable_mask = BIT(0),
3615                 .hw.init = &(struct clk_init_data){
3616                         .name = "gcc_uniphy1_ahb_clk",
3617                         .parent_names = (const char *[]){
3618                                 "pcnoc_clk_src"
3619                         },
3620                         .num_parents = 1,
3621                         .flags = CLK_SET_RATE_PARENT,
3622                         .ops = &clk_branch2_ops,
3623                 },
3624         },
3625 };
3626
3627 static struct clk_branch gcc_uniphy1_sys_clk = {
3628         .halt_reg = 0x5610c,
3629         .clkr = {
3630                 .enable_reg = 0x5610c,
3631                 .enable_mask = BIT(0),
3632                 .hw.init = &(struct clk_init_data){
3633                         .name = "gcc_uniphy1_sys_clk",
3634                         .parent_names = (const char *[]){
3635                                 "gcc_xo_clk_src"
3636                         },
3637                         .num_parents = 1,
3638                         .flags = CLK_SET_RATE_PARENT,
3639                         .ops = &clk_branch2_ops,
3640                 },
3641         },
3642 };
3643
3644 static struct clk_branch gcc_uniphy2_ahb_clk = {
3645         .halt_reg = 0x56208,
3646         .clkr = {
3647                 .enable_reg = 0x56208,
3648                 .enable_mask = BIT(0),
3649                 .hw.init = &(struct clk_init_data){
3650                         .name = "gcc_uniphy2_ahb_clk",
3651                         .parent_names = (const char *[]){
3652                                 "pcnoc_clk_src"
3653                         },
3654                         .num_parents = 1,
3655                         .flags = CLK_SET_RATE_PARENT,
3656                         .ops = &clk_branch2_ops,
3657                 },
3658         },
3659 };
3660
3661 static struct clk_branch gcc_uniphy2_sys_clk = {
3662         .halt_reg = 0x5620c,
3663         .clkr = {
3664                 .enable_reg = 0x5620c,
3665                 .enable_mask = BIT(0),
3666                 .hw.init = &(struct clk_init_data){
3667                         .name = "gcc_uniphy2_sys_clk",
3668                         .parent_names = (const char *[]){
3669                                 "gcc_xo_clk_src"
3670                         },
3671                         .num_parents = 1,
3672                         .flags = CLK_SET_RATE_PARENT,
3673                         .ops = &clk_branch2_ops,
3674                 },
3675         },
3676 };
3677
3678 static struct clk_branch gcc_nss_port1_rx_clk = {
3679         .halt_reg = 0x68240,
3680         .clkr = {
3681                 .enable_reg = 0x68240,
3682                 .enable_mask = BIT(0),
3683                 .hw.init = &(struct clk_init_data){
3684                         .name = "gcc_nss_port1_rx_clk",
3685                         .parent_names = (const char *[]){
3686                                 "nss_port1_rx_div_clk_src"
3687                         },
3688                         .num_parents = 1,
3689                         .flags = CLK_SET_RATE_PARENT,
3690                         .ops = &clk_branch2_ops,
3691                 },
3692         },
3693 };
3694
3695 static struct clk_branch gcc_nss_port1_tx_clk = {
3696         .halt_reg = 0x68244,
3697         .clkr = {
3698                 .enable_reg = 0x68244,
3699                 .enable_mask = BIT(0),
3700                 .hw.init = &(struct clk_init_data){
3701                         .name = "gcc_nss_port1_tx_clk",
3702                         .parent_names = (const char *[]){
3703                                 "nss_port1_tx_div_clk_src"
3704                         },
3705                         .num_parents = 1,
3706                         .flags = CLK_SET_RATE_PARENT,
3707                         .ops = &clk_branch2_ops,
3708                 },
3709         },
3710 };
3711
3712 static struct clk_branch gcc_nss_port2_rx_clk = {
3713         .halt_reg = 0x68248,
3714         .clkr = {
3715                 .enable_reg = 0x68248,
3716                 .enable_mask = BIT(0),
3717                 .hw.init = &(struct clk_init_data){
3718                         .name = "gcc_nss_port2_rx_clk",
3719                         .parent_names = (const char *[]){
3720                                 "nss_port2_rx_div_clk_src"
3721                         },
3722                         .num_parents = 1,
3723                         .flags = CLK_SET_RATE_PARENT,
3724                         .ops = &clk_branch2_ops,
3725                 },
3726         },
3727 };
3728
3729 static struct clk_branch gcc_nss_port2_tx_clk = {
3730         .halt_reg = 0x6824c,
3731         .clkr = {
3732                 .enable_reg = 0x6824c,
3733                 .enable_mask = BIT(0),
3734                 .hw.init = &(struct clk_init_data){
3735                         .name = "gcc_nss_port2_tx_clk",
3736                         .parent_names = (const char *[]){
3737                                 "nss_port2_tx_div_clk_src"
3738                         },
3739                         .num_parents = 1,
3740                         .flags = CLK_SET_RATE_PARENT,
3741                         .ops = &clk_branch2_ops,
3742                 },
3743         },
3744 };
3745
3746 static struct clk_branch gcc_nss_port3_rx_clk = {
3747         .halt_reg = 0x68250,
3748         .clkr = {
3749                 .enable_reg = 0x68250,
3750                 .enable_mask = BIT(0),
3751                 .hw.init = &(struct clk_init_data){
3752                         .name = "gcc_nss_port3_rx_clk",
3753                         .parent_names = (const char *[]){
3754                                 "nss_port3_rx_div_clk_src"
3755                         },
3756                         .num_parents = 1,
3757                         .flags = CLK_SET_RATE_PARENT,
3758                         .ops = &clk_branch2_ops,
3759                 },
3760         },
3761 };
3762
3763 static struct clk_branch gcc_nss_port3_tx_clk = {
3764         .halt_reg = 0x68254,
3765         .clkr = {
3766                 .enable_reg = 0x68254,
3767                 .enable_mask = BIT(0),
3768                 .hw.init = &(struct clk_init_data){
3769                         .name = "gcc_nss_port3_tx_clk",
3770                         .parent_names = (const char *[]){
3771                                 "nss_port3_tx_div_clk_src"
3772                         },
3773                         .num_parents = 1,
3774                         .flags = CLK_SET_RATE_PARENT,
3775                         .ops = &clk_branch2_ops,
3776                 },
3777         },
3778 };
3779
3780 static struct clk_branch gcc_nss_port4_rx_clk = {
3781         .halt_reg = 0x68258,
3782         .clkr = {
3783                 .enable_reg = 0x68258,
3784                 .enable_mask = BIT(0),
3785                 .hw.init = &(struct clk_init_data){
3786                         .name = "gcc_nss_port4_rx_clk",
3787                         .parent_names = (const char *[]){
3788                                 "nss_port4_rx_div_clk_src"
3789                         },
3790                         .num_parents = 1,
3791                         .flags = CLK_SET_RATE_PARENT,
3792                         .ops = &clk_branch2_ops,
3793                 },
3794         },
3795 };
3796
3797 static struct clk_branch gcc_nss_port4_tx_clk = {
3798         .halt_reg = 0x6825c,
3799         .clkr = {
3800                 .enable_reg = 0x6825c,
3801                 .enable_mask = BIT(0),
3802                 .hw.init = &(struct clk_init_data){
3803                         .name = "gcc_nss_port4_tx_clk",
3804                         .parent_names = (const char *[]){
3805                                 "nss_port4_tx_div_clk_src"
3806                         },
3807                         .num_parents = 1,
3808                         .flags = CLK_SET_RATE_PARENT,
3809                         .ops = &clk_branch2_ops,
3810                 },
3811         },
3812 };
3813
3814 static struct clk_branch gcc_nss_port5_rx_clk = {
3815         .halt_reg = 0x68260,
3816         .clkr = {
3817                 .enable_reg = 0x68260,
3818                 .enable_mask = BIT(0),
3819                 .hw.init = &(struct clk_init_data){
3820                         .name = "gcc_nss_port5_rx_clk",
3821                         .parent_names = (const char *[]){
3822                                 "nss_port5_rx_div_clk_src"
3823                         },
3824                         .num_parents = 1,
3825                         .flags = CLK_SET_RATE_PARENT,
3826                         .ops = &clk_branch2_ops,
3827                 },
3828         },
3829 };
3830
3831 static struct clk_branch gcc_nss_port5_tx_clk = {
3832         .halt_reg = 0x68264,
3833         .clkr = {
3834                 .enable_reg = 0x68264,
3835                 .enable_mask = BIT(0),
3836                 .hw.init = &(struct clk_init_data){
3837                         .name = "gcc_nss_port5_tx_clk",
3838                         .parent_names = (const char *[]){
3839                                 "nss_port5_tx_div_clk_src"
3840                         },
3841                         .num_parents = 1,
3842                         .flags = CLK_SET_RATE_PARENT,
3843                         .ops = &clk_branch2_ops,
3844                 },
3845         },
3846 };
3847
3848 static struct clk_branch gcc_nss_port6_rx_clk = {
3849         .halt_reg = 0x68268,
3850         .clkr = {
3851                 .enable_reg = 0x68268,
3852                 .enable_mask = BIT(0),
3853                 .hw.init = &(struct clk_init_data){
3854                         .name = "gcc_nss_port6_rx_clk",
3855                         .parent_names = (const char *[]){
3856                                 "nss_port6_rx_div_clk_src"
3857                         },
3858                         .num_parents = 1,
3859                         .flags = CLK_SET_RATE_PARENT,
3860                         .ops = &clk_branch2_ops,
3861                 },
3862         },
3863 };
3864
3865 static struct clk_branch gcc_nss_port6_tx_clk = {
3866         .halt_reg = 0x6826c,
3867         .clkr = {
3868                 .enable_reg = 0x6826c,
3869                 .enable_mask = BIT(0),
3870                 .hw.init = &(struct clk_init_data){
3871                         .name = "gcc_nss_port6_tx_clk",
3872                         .parent_names = (const char *[]){
3873                                 "nss_port6_tx_div_clk_src"
3874                         },
3875                         .num_parents = 1,
3876                         .flags = CLK_SET_RATE_PARENT,
3877                         .ops = &clk_branch2_ops,
3878                 },
3879         },
3880 };
3881
3882 static struct clk_branch gcc_port1_mac_clk = {
3883         .halt_reg = 0x68320,
3884         .clkr = {
3885                 .enable_reg = 0x68320,
3886                 .enable_mask = BIT(0),
3887                 .hw.init = &(struct clk_init_data){
3888                         .name = "gcc_port1_mac_clk",
3889                         .parent_names = (const char *[]){
3890                                 "nss_ppe_clk_src"
3891                         },
3892                         .num_parents = 1,
3893                         .flags = CLK_SET_RATE_PARENT,
3894                         .ops = &clk_branch2_ops,
3895                 },
3896         },
3897 };
3898
3899 static struct clk_branch gcc_port2_mac_clk = {
3900         .halt_reg = 0x68324,
3901         .clkr = {
3902                 .enable_reg = 0x68324,
3903                 .enable_mask = BIT(0),
3904                 .hw.init = &(struct clk_init_data){
3905                         .name = "gcc_port2_mac_clk",
3906                         .parent_names = (const char *[]){
3907                                 "nss_ppe_clk_src"
3908                         },
3909                         .num_parents = 1,
3910                         .flags = CLK_SET_RATE_PARENT,
3911                         .ops = &clk_branch2_ops,
3912                 },
3913         },
3914 };
3915
3916 static struct clk_branch gcc_port3_mac_clk = {
3917         .halt_reg = 0x68328,
3918         .clkr = {
3919                 .enable_reg = 0x68328,
3920                 .enable_mask = BIT(0),
3921                 .hw.init = &(struct clk_init_data){
3922                         .name = "gcc_port3_mac_clk",
3923                         .parent_names = (const char *[]){
3924                                 "nss_ppe_clk_src"
3925                         },
3926                         .num_parents = 1,
3927                         .flags = CLK_SET_RATE_PARENT,
3928                         .ops = &clk_branch2_ops,
3929                 },
3930         },
3931 };
3932
3933 static struct clk_branch gcc_port4_mac_clk = {
3934         .halt_reg = 0x6832c,
3935         .clkr = {
3936                 .enable_reg = 0x6832c,
3937                 .enable_mask = BIT(0),
3938                 .hw.init = &(struct clk_init_data){
3939                         .name = "gcc_port4_mac_clk",
3940                         .parent_names = (const char *[]){
3941                                 "nss_ppe_clk_src"
3942                         },
3943                         .num_parents = 1,
3944                         .flags = CLK_SET_RATE_PARENT,
3945                         .ops = &clk_branch2_ops,
3946                 },
3947         },
3948 };
3949
3950 static struct clk_branch gcc_port5_mac_clk = {
3951         .halt_reg = 0x68330,
3952         .clkr = {
3953                 .enable_reg = 0x68330,
3954                 .enable_mask = BIT(0),
3955                 .hw.init = &(struct clk_init_data){
3956                         .name = "gcc_port5_mac_clk",
3957                         .parent_names = (const char *[]){
3958                                 "nss_ppe_clk_src"
3959                         },
3960                         .num_parents = 1,
3961                         .flags = CLK_SET_RATE_PARENT,
3962                         .ops = &clk_branch2_ops,
3963                 },
3964         },
3965 };
3966
3967 static struct clk_branch gcc_port6_mac_clk = {
3968         .halt_reg = 0x68334,
3969         .clkr = {
3970                 .enable_reg = 0x68334,
3971                 .enable_mask = BIT(0),
3972                 .hw.init = &(struct clk_init_data){
3973                         .name = "gcc_port6_mac_clk",
3974                         .parent_names = (const char *[]){
3975                                 "nss_ppe_clk_src"
3976                         },
3977                         .num_parents = 1,
3978                         .flags = CLK_SET_RATE_PARENT,
3979                         .ops = &clk_branch2_ops,
3980                 },
3981         },
3982 };
3983
3984 static struct clk_branch gcc_uniphy0_port1_rx_clk = {
3985         .halt_reg = 0x56010,
3986         .clkr = {
3987                 .enable_reg = 0x56010,
3988                 .enable_mask = BIT(0),
3989                 .hw.init = &(struct clk_init_data){
3990                         .name = "gcc_uniphy0_port1_rx_clk",
3991                         .parent_names = (const char *[]){
3992                                 "nss_port1_rx_div_clk_src"
3993                         },
3994                         .num_parents = 1,
3995                         .flags = CLK_SET_RATE_PARENT,
3996                         .ops = &clk_branch2_ops,
3997                 },
3998         },
3999 };
4000
4001 static struct clk_branch gcc_uniphy0_port1_tx_clk = {
4002         .halt_reg = 0x56014,
4003         .clkr = {
4004                 .enable_reg = 0x56014,
4005                 .enable_mask = BIT(0),
4006                 .hw.init = &(struct clk_init_data){
4007                         .name = "gcc_uniphy0_port1_tx_clk",
4008                         .parent_names = (const char *[]){
4009                                 "nss_port1_tx_div_clk_src"
4010                         },
4011                         .num_parents = 1,
4012                         .flags = CLK_SET_RATE_PARENT,
4013                         .ops = &clk_branch2_ops,
4014                 },
4015         },
4016 };
4017
4018 static struct clk_branch gcc_uniphy0_port2_rx_clk = {
4019         .halt_reg = 0x56018,
4020         .clkr = {
4021                 .enable_reg = 0x56018,
4022                 .enable_mask = BIT(0),
4023                 .hw.init = &(struct clk_init_data){
4024                         .name = "gcc_uniphy0_port2_rx_clk",
4025                         .parent_names = (const char *[]){
4026                                 "nss_port2_rx_div_clk_src"
4027                         },
4028                         .num_parents = 1,
4029                         .flags = CLK_SET_RATE_PARENT,
4030                         .ops = &clk_branch2_ops,
4031                 },
4032         },
4033 };
4034
4035 static struct clk_branch gcc_uniphy0_port2_tx_clk = {
4036         .halt_reg = 0x5601c,
4037         .clkr = {
4038                 .enable_reg = 0x5601c,
4039                 .enable_mask = BIT(0),
4040                 .hw.init = &(struct clk_init_data){
4041                         .name = "gcc_uniphy0_port2_tx_clk",
4042                         .parent_names = (const char *[]){
4043                                 "nss_port2_tx_div_clk_src"
4044                         },
4045                         .num_parents = 1,
4046                         .flags = CLK_SET_RATE_PARENT,
4047                         .ops = &clk_branch2_ops,
4048                 },
4049         },
4050 };
4051
4052 static struct clk_branch gcc_uniphy0_port3_rx_clk = {
4053         .halt_reg = 0x56020,
4054         .clkr = {
4055                 .enable_reg = 0x56020,
4056                 .enable_mask = BIT(0),
4057                 .hw.init = &(struct clk_init_data){
4058                         .name = "gcc_uniphy0_port3_rx_clk",
4059                         .parent_names = (const char *[]){
4060                                 "nss_port3_rx_div_clk_src"
4061                         },
4062                         .num_parents = 1,
4063                         .flags = CLK_SET_RATE_PARENT,
4064                         .ops = &clk_branch2_ops,
4065                 },
4066         },
4067 };
4068
4069 static struct clk_branch gcc_uniphy0_port3_tx_clk = {
4070         .halt_reg = 0x56024,
4071         .clkr = {
4072                 .enable_reg = 0x56024,
4073                 .enable_mask = BIT(0),
4074                 .hw.init = &(struct clk_init_data){
4075                         .name = "gcc_uniphy0_port3_tx_clk",
4076                         .parent_names = (const char *[]){
4077                                 "nss_port3_tx_div_clk_src"
4078                         },
4079                         .num_parents = 1,
4080                         .flags = CLK_SET_RATE_PARENT,
4081                         .ops = &clk_branch2_ops,
4082                 },
4083         },
4084 };
4085
4086 static struct clk_branch gcc_uniphy0_port4_rx_clk = {
4087         .halt_reg = 0x56028,
4088         .clkr = {
4089                 .enable_reg = 0x56028,
4090                 .enable_mask = BIT(0),
4091                 .hw.init = &(struct clk_init_data){
4092                         .name = "gcc_uniphy0_port4_rx_clk",
4093                         .parent_names = (const char *[]){
4094                                 "nss_port4_rx_div_clk_src"
4095                         },
4096                         .num_parents = 1,
4097                         .flags = CLK_SET_RATE_PARENT,
4098                         .ops = &clk_branch2_ops,
4099                 },
4100         },
4101 };
4102
4103 static struct clk_branch gcc_uniphy0_port4_tx_clk = {
4104         .halt_reg = 0x5602c,
4105         .clkr = {
4106                 .enable_reg = 0x5602c,
4107                 .enable_mask = BIT(0),
4108                 .hw.init = &(struct clk_init_data){
4109                         .name = "gcc_uniphy0_port4_tx_clk",
4110                         .parent_names = (const char *[]){
4111                                 "nss_port4_tx_div_clk_src"
4112                         },
4113                         .num_parents = 1,
4114                         .flags = CLK_SET_RATE_PARENT,
4115                         .ops = &clk_branch2_ops,
4116                 },
4117         },
4118 };
4119
4120 static struct clk_branch gcc_uniphy0_port5_rx_clk = {
4121         .halt_reg = 0x56030,
4122         .clkr = {
4123                 .enable_reg = 0x56030,
4124                 .enable_mask = BIT(0),
4125                 .hw.init = &(struct clk_init_data){
4126                         .name = "gcc_uniphy0_port5_rx_clk",
4127                         .parent_names = (const char *[]){
4128                                 "nss_port5_rx_div_clk_src"
4129                         },
4130                         .num_parents = 1,
4131                         .flags = CLK_SET_RATE_PARENT,
4132                         .ops = &clk_branch2_ops,
4133                 },
4134         },
4135 };
4136
4137 static struct clk_branch gcc_uniphy0_port5_tx_clk = {
4138         .halt_reg = 0x56034,
4139         .clkr = {
4140                 .enable_reg = 0x56034,
4141                 .enable_mask = BIT(0),
4142                 .hw.init = &(struct clk_init_data){
4143                         .name = "gcc_uniphy0_port5_tx_clk",
4144                         .parent_names = (const char *[]){
4145                                 "nss_port5_tx_div_clk_src"
4146                         },
4147                         .num_parents = 1,
4148                         .flags = CLK_SET_RATE_PARENT,
4149                         .ops = &clk_branch2_ops,
4150                 },
4151         },
4152 };
4153
4154 static struct clk_branch gcc_uniphy1_port5_rx_clk = {
4155         .halt_reg = 0x56110,
4156         .clkr = {
4157                 .enable_reg = 0x56110,
4158                 .enable_mask = BIT(0),
4159                 .hw.init = &(struct clk_init_data){
4160                         .name = "gcc_uniphy1_port5_rx_clk",
4161                         .parent_names = (const char *[]){
4162                                 "nss_port5_rx_div_clk_src"
4163                         },
4164                         .num_parents = 1,
4165                         .flags = CLK_SET_RATE_PARENT,
4166                         .ops = &clk_branch2_ops,
4167                 },
4168         },
4169 };
4170
4171 static struct clk_branch gcc_uniphy1_port5_tx_clk = {
4172         .halt_reg = 0x56114,
4173         .clkr = {
4174                 .enable_reg = 0x56114,
4175                 .enable_mask = BIT(0),
4176                 .hw.init = &(struct clk_init_data){
4177                         .name = "gcc_uniphy1_port5_tx_clk",
4178                         .parent_names = (const char *[]){
4179                                 "nss_port5_tx_div_clk_src"
4180                         },
4181                         .num_parents = 1,
4182                         .flags = CLK_SET_RATE_PARENT,
4183                         .ops = &clk_branch2_ops,
4184                 },
4185         },
4186 };
4187
4188 static struct clk_branch gcc_uniphy2_port6_rx_clk = {
4189         .halt_reg = 0x56210,
4190         .clkr = {
4191                 .enable_reg = 0x56210,
4192                 .enable_mask = BIT(0),
4193                 .hw.init = &(struct clk_init_data){
4194                         .name = "gcc_uniphy2_port6_rx_clk",
4195                         .parent_names = (const char *[]){
4196                                 "nss_port6_rx_div_clk_src"
4197                         },
4198                         .num_parents = 1,
4199                         .flags = CLK_SET_RATE_PARENT,
4200                         .ops = &clk_branch2_ops,
4201                 },
4202         },
4203 };
4204
4205 static struct clk_branch gcc_uniphy2_port6_tx_clk = {
4206         .halt_reg = 0x56214,
4207         .clkr = {
4208                 .enable_reg = 0x56214,
4209                 .enable_mask = BIT(0),
4210                 .hw.init = &(struct clk_init_data){
4211                         .name = "gcc_uniphy2_port6_tx_clk",
4212                         .parent_names = (const char *[]){
4213                                 "nss_port6_tx_div_clk_src"
4214                         },
4215                         .num_parents = 1,
4216                         .flags = CLK_SET_RATE_PARENT,
4217                         .ops = &clk_branch2_ops,
4218                 },
4219         },
4220 };
4221
4222 static struct clk_branch gcc_crypto_ahb_clk = {
4223         .halt_reg = 0x16024,
4224         .halt_check = BRANCH_HALT_VOTED,
4225         .clkr = {
4226                 .enable_reg = 0x0b004,
4227                 .enable_mask = BIT(0),
4228                 .hw.init = &(struct clk_init_data){
4229                         .name = "gcc_crypto_ahb_clk",
4230                         .parent_names = (const char *[]){
4231                                 "pcnoc_clk_src"
4232                         },
4233                         .num_parents = 1,
4234                         .flags = CLK_SET_RATE_PARENT,
4235                         .ops = &clk_branch2_ops,
4236                 },
4237         },
4238 };
4239
4240 static struct clk_branch gcc_crypto_axi_clk = {
4241         .halt_reg = 0x16020,
4242         .halt_check = BRANCH_HALT_VOTED,
4243         .clkr = {
4244                 .enable_reg = 0x0b004,
4245                 .enable_mask = BIT(1),
4246                 .hw.init = &(struct clk_init_data){
4247                         .name = "gcc_crypto_axi_clk",
4248                         .parent_names = (const char *[]){
4249                                 "pcnoc_clk_src"
4250                         },
4251                         .num_parents = 1,
4252                         .flags = CLK_SET_RATE_PARENT,
4253                         .ops = &clk_branch2_ops,
4254                 },
4255         },
4256 };
4257
4258 static struct clk_branch gcc_crypto_clk = {
4259         .halt_reg = 0x1601c,
4260         .halt_check = BRANCH_HALT_VOTED,
4261         .clkr = {
4262                 .enable_reg = 0x0b004,
4263                 .enable_mask = BIT(2),
4264                 .hw.init = &(struct clk_init_data){
4265                         .name = "gcc_crypto_clk",
4266                         .parent_names = (const char *[]){
4267                                 "crypto_clk_src"
4268                         },
4269                         .num_parents = 1,
4270                         .flags = CLK_SET_RATE_PARENT,
4271                         .ops = &clk_branch2_ops,
4272                 },
4273         },
4274 };
4275
4276 static struct clk_branch gcc_gp1_clk = {
4277         .halt_reg = 0x08000,
4278         .clkr = {
4279                 .enable_reg = 0x08000,
4280                 .enable_mask = BIT(0),
4281                 .hw.init = &(struct clk_init_data){
4282                         .name = "gcc_gp1_clk",
4283                         .parent_names = (const char *[]){
4284                                 "gp1_clk_src"
4285                         },
4286                         .num_parents = 1,
4287                         .flags = CLK_SET_RATE_PARENT,
4288                         .ops = &clk_branch2_ops,
4289                 },
4290         },
4291 };
4292
4293 static struct clk_branch gcc_gp2_clk = {
4294         .halt_reg = 0x09000,
4295         .clkr = {
4296                 .enable_reg = 0x09000,
4297                 .enable_mask = BIT(0),
4298                 .hw.init = &(struct clk_init_data){
4299                         .name = "gcc_gp2_clk",
4300                         .parent_names = (const char *[]){
4301                                 "gp2_clk_src"
4302                         },
4303                         .num_parents = 1,
4304                         .flags = CLK_SET_RATE_PARENT,
4305                         .ops = &clk_branch2_ops,
4306                 },
4307         },
4308 };
4309
4310 static struct clk_branch gcc_gp3_clk = {
4311         .halt_reg = 0x0a000,
4312         .clkr = {
4313                 .enable_reg = 0x0a000,
4314                 .enable_mask = BIT(0),
4315                 .hw.init = &(struct clk_init_data){
4316                         .name = "gcc_gp3_clk",
4317                         .parent_names = (const char *[]){
4318                                 "gp3_clk_src"
4319                         },
4320                         .num_parents = 1,
4321                         .flags = CLK_SET_RATE_PARENT,
4322                         .ops = &clk_branch2_ops,
4323                 },
4324         },
4325 };
4326
4327 static struct clk_hw *gcc_ipq8074_hws[] = {
4328         &gpll0_out_main_div2.hw,
4329         &gpll6_out_main_div2.hw,
4330         &pcnoc_clk_src.hw,
4331         &system_noc_clk_src.hw,
4332         &gcc_xo_div4_clk_src.hw,
4333         &nss_noc_clk_src.hw,
4334         &nss_ppe_cdiv_clk_src.hw,
4335 };
4336
4337 static struct clk_regmap *gcc_ipq8074_clks[] = {
4338         [GPLL0_MAIN] = &gpll0_main.clkr,
4339         [GPLL0] = &gpll0.clkr,
4340         [GPLL2_MAIN] = &gpll2_main.clkr,
4341         [GPLL2] = &gpll2.clkr,
4342         [GPLL4_MAIN] = &gpll4_main.clkr,
4343         [GPLL4] = &gpll4.clkr,
4344         [GPLL6_MAIN] = &gpll6_main.clkr,
4345         [GPLL6] = &gpll6.clkr,
4346         [UBI32_PLL_MAIN] = &ubi32_pll_main.clkr,
4347         [UBI32_PLL] = &ubi32_pll.clkr,
4348         [NSS_CRYPTO_PLL_MAIN] = &nss_crypto_pll_main.clkr,
4349         [NSS_CRYPTO_PLL] = &nss_crypto_pll.clkr,
4350         [PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr,
4351         [GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,
4352         [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
4353         [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
4354         [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
4355         [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
4356         [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
4357         [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
4358         [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
4359         [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
4360         [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
4361         [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
4362         [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
4363         [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
4364         [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
4365         [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
4366         [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
4367         [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
4368         [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
4369         [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
4370         [PCIE0_AXI_CLK_SRC] = &pcie0_axi_clk_src.clkr,
4371         [PCIE0_AUX_CLK_SRC] = &pcie0_aux_clk_src.clkr,
4372         [PCIE0_PIPE_CLK_SRC] = &pcie0_pipe_clk_src.clkr,
4373         [PCIE1_AXI_CLK_SRC] = &pcie1_axi_clk_src.clkr,
4374         [PCIE1_AUX_CLK_SRC] = &pcie1_aux_clk_src.clkr,
4375         [PCIE1_PIPE_CLK_SRC] = &pcie1_pipe_clk_src.clkr,
4376         [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
4377         [SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr,
4378         [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
4379         [USB0_MASTER_CLK_SRC] = &usb0_master_clk_src.clkr,
4380         [USB0_AUX_CLK_SRC] = &usb0_aux_clk_src.clkr,
4381         [USB0_MOCK_UTMI_CLK_SRC] = &usb0_mock_utmi_clk_src.clkr,
4382         [USB0_PIPE_CLK_SRC] = &usb0_pipe_clk_src.clkr,
4383         [USB1_MASTER_CLK_SRC] = &usb1_master_clk_src.clkr,
4384         [USB1_AUX_CLK_SRC] = &usb1_aux_clk_src.clkr,
4385         [USB1_MOCK_UTMI_CLK_SRC] = &usb1_mock_utmi_clk_src.clkr,
4386         [USB1_PIPE_CLK_SRC] = &usb1_pipe_clk_src.clkr,
4387         [GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,
4388         [SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr,
4389         [NSS_CE_CLK_SRC] = &nss_ce_clk_src.clkr,
4390         [NSS_NOC_BFDCD_CLK_SRC] = &nss_noc_bfdcd_clk_src.clkr,
4391         [NSS_CRYPTO_CLK_SRC] = &nss_crypto_clk_src.clkr,
4392         [NSS_UBI0_CLK_SRC] = &nss_ubi0_clk_src.clkr,
4393         [NSS_UBI0_DIV_CLK_SRC] = &nss_ubi0_div_clk_src.clkr,
4394         [NSS_UBI1_CLK_SRC] = &nss_ubi1_clk_src.clkr,
4395         [NSS_UBI1_DIV_CLK_SRC] = &nss_ubi1_div_clk_src.clkr,
4396         [UBI_MPT_CLK_SRC] = &ubi_mpt_clk_src.clkr,
4397         [NSS_IMEM_CLK_SRC] = &nss_imem_clk_src.clkr,
4398         [NSS_PPE_CLK_SRC] = &nss_ppe_clk_src.clkr,
4399         [NSS_PORT1_RX_CLK_SRC] = &nss_port1_rx_clk_src.clkr,
4400         [NSS_PORT1_RX_DIV_CLK_SRC] = &nss_port1_rx_div_clk_src.clkr,
4401         [NSS_PORT1_TX_CLK_SRC] = &nss_port1_tx_clk_src.clkr,
4402         [NSS_PORT1_TX_DIV_CLK_SRC] = &nss_port1_tx_div_clk_src.clkr,
4403         [NSS_PORT2_RX_CLK_SRC] = &nss_port2_rx_clk_src.clkr,
4404         [NSS_PORT2_RX_DIV_CLK_SRC] = &nss_port2_rx_div_clk_src.clkr,
4405         [NSS_PORT2_TX_CLK_SRC] = &nss_port2_tx_clk_src.clkr,
4406         [NSS_PORT2_TX_DIV_CLK_SRC] = &nss_port2_tx_div_clk_src.clkr,
4407         [NSS_PORT3_RX_CLK_SRC] = &nss_port3_rx_clk_src.clkr,
4408         [NSS_PORT3_RX_DIV_CLK_SRC] = &nss_port3_rx_div_clk_src.clkr,
4409         [NSS_PORT3_TX_CLK_SRC] = &nss_port3_tx_clk_src.clkr,
4410         [NSS_PORT3_TX_DIV_CLK_SRC] = &nss_port3_tx_div_clk_src.clkr,
4411         [NSS_PORT4_RX_CLK_SRC] = &nss_port4_rx_clk_src.clkr,
4412         [NSS_PORT4_RX_DIV_CLK_SRC] = &nss_port4_rx_div_clk_src.clkr,
4413         [NSS_PORT4_TX_CLK_SRC] = &nss_port4_tx_clk_src.clkr,
4414         [NSS_PORT4_TX_DIV_CLK_SRC] = &nss_port4_tx_div_clk_src.clkr,
4415         [NSS_PORT5_RX_CLK_SRC] = &nss_port5_rx_clk_src.clkr,
4416         [NSS_PORT5_RX_DIV_CLK_SRC] = &nss_port5_rx_div_clk_src.clkr,
4417         [NSS_PORT5_TX_CLK_SRC] = &nss_port5_tx_clk_src.clkr,
4418         [NSS_PORT5_TX_DIV_CLK_SRC] = &nss_port5_tx_div_clk_src.clkr,
4419         [NSS_PORT6_RX_CLK_SRC] = &nss_port6_rx_clk_src.clkr,
4420         [NSS_PORT6_RX_DIV_CLK_SRC] = &nss_port6_rx_div_clk_src.clkr,
4421         [NSS_PORT6_TX_CLK_SRC] = &nss_port6_tx_clk_src.clkr,
4422         [NSS_PORT6_TX_DIV_CLK_SRC] = &nss_port6_tx_div_clk_src.clkr,
4423         [CRYPTO_CLK_SRC] = &crypto_clk_src.clkr,
4424         [GP1_CLK_SRC] = &gp1_clk_src.clkr,
4425         [GP2_CLK_SRC] = &gp2_clk_src.clkr,
4426         [GP3_CLK_SRC] = &gp3_clk_src.clkr,
4427         [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
4428         [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
4429         [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
4430         [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
4431         [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
4432         [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
4433         [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
4434         [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
4435         [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
4436         [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
4437         [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
4438         [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
4439         [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
4440         [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
4441         [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
4442         [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
4443         [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
4444         [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
4445         [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
4446         [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
4447         [GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
4448         [GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
4449         [GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr,
4450         [GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr,
4451         [GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr,
4452         [GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr,
4453         [GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,
4454         [GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr,
4455         [GCC_PCIE1_AHB_CLK] = &gcc_pcie1_ahb_clk.clkr,
4456         [GCC_PCIE1_AUX_CLK] = &gcc_pcie1_aux_clk.clkr,
4457         [GCC_PCIE1_AXI_M_CLK] = &gcc_pcie1_axi_m_clk.clkr,
4458         [GCC_PCIE1_AXI_S_CLK] = &gcc_pcie1_axi_s_clk.clkr,
4459         [GCC_PCIE1_PIPE_CLK] = &gcc_pcie1_pipe_clk.clkr,
4460         [GCC_SYS_NOC_PCIE1_AXI_CLK] = &gcc_sys_noc_pcie1_axi_clk.clkr,
4461         [GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,
4462         [GCC_SYS_NOC_USB0_AXI_CLK] = &gcc_sys_noc_usb0_axi_clk.clkr,
4463         [GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,
4464         [GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,
4465         [GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,
4466         [GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,
4467         [GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,
4468         [GCC_USB1_AUX_CLK] = &gcc_usb1_aux_clk.clkr,
4469         [GCC_SYS_NOC_USB1_AXI_CLK] = &gcc_sys_noc_usb1_axi_clk.clkr,
4470         [GCC_USB1_MASTER_CLK] = &gcc_usb1_master_clk.clkr,
4471         [GCC_USB1_MOCK_UTMI_CLK] = &gcc_usb1_mock_utmi_clk.clkr,
4472         [GCC_USB1_PHY_CFG_AHB_CLK] = &gcc_usb1_phy_cfg_ahb_clk.clkr,
4473         [GCC_USB1_PIPE_CLK] = &gcc_usb1_pipe_clk.clkr,
4474         [GCC_USB1_SLEEP_CLK] = &gcc_usb1_sleep_clk.clkr,
4475         [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
4476         [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
4477         [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
4478         [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
4479         [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
4480         [GCC_MEM_NOC_NSS_AXI_CLK] = &gcc_mem_noc_nss_axi_clk.clkr,
4481         [GCC_NSS_CE_APB_CLK] = &gcc_nss_ce_apb_clk.clkr,
4482         [GCC_NSS_CE_AXI_CLK] = &gcc_nss_ce_axi_clk.clkr,
4483         [GCC_NSS_CFG_CLK] = &gcc_nss_cfg_clk.clkr,
4484         [GCC_NSS_CRYPTO_CLK] = &gcc_nss_crypto_clk.clkr,
4485         [GCC_NSS_CSR_CLK] = &gcc_nss_csr_clk.clkr,
4486         [GCC_NSS_EDMA_CFG_CLK] = &gcc_nss_edma_cfg_clk.clkr,
4487         [GCC_NSS_EDMA_CLK] = &gcc_nss_edma_clk.clkr,
4488         [GCC_NSS_IMEM_CLK] = &gcc_nss_imem_clk.clkr,
4489         [GCC_NSS_NOC_CLK] = &gcc_nss_noc_clk.clkr,
4490         [GCC_NSS_PPE_BTQ_CLK] = &gcc_nss_ppe_btq_clk.clkr,
4491         [GCC_NSS_PPE_CFG_CLK] = &gcc_nss_ppe_cfg_clk.clkr,
4492         [GCC_NSS_PPE_CLK] = &gcc_nss_ppe_clk.clkr,
4493         [GCC_NSS_PPE_IPE_CLK] = &gcc_nss_ppe_ipe_clk.clkr,
4494         [GCC_NSS_PTP_REF_CLK] = &gcc_nss_ptp_ref_clk.clkr,
4495         [GCC_NSSNOC_CE_APB_CLK] = &gcc_nssnoc_ce_apb_clk.clkr,
4496         [GCC_NSSNOC_CE_AXI_CLK] = &gcc_nssnoc_ce_axi_clk.clkr,
4497         [GCC_NSSNOC_CRYPTO_CLK] = &gcc_nssnoc_crypto_clk.clkr,
4498         [GCC_NSSNOC_PPE_CFG_CLK] = &gcc_nssnoc_ppe_cfg_clk.clkr,
4499         [GCC_NSSNOC_PPE_CLK] = &gcc_nssnoc_ppe_clk.clkr,
4500         [GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,
4501         [GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,
4502         [GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,
4503         [GCC_NSSNOC_UBI0_AHB_CLK] = &gcc_nssnoc_ubi0_ahb_clk.clkr,
4504         [GCC_NSSNOC_UBI1_AHB_CLK] = &gcc_nssnoc_ubi1_ahb_clk.clkr,
4505         [GCC_UBI0_AHB_CLK] = &gcc_ubi0_ahb_clk.clkr,
4506         [GCC_UBI0_AXI_CLK] = &gcc_ubi0_axi_clk.clkr,
4507         [GCC_UBI0_NC_AXI_CLK] = &gcc_ubi0_nc_axi_clk.clkr,
4508         [GCC_UBI0_CORE_CLK] = &gcc_ubi0_core_clk.clkr,
4509         [GCC_UBI0_MPT_CLK] = &gcc_ubi0_mpt_clk.clkr,
4510         [GCC_UBI1_AHB_CLK] = &gcc_ubi1_ahb_clk.clkr,
4511         [GCC_UBI1_AXI_CLK] = &gcc_ubi1_axi_clk.clkr,
4512         [GCC_UBI1_NC_AXI_CLK] = &gcc_ubi1_nc_axi_clk.clkr,
4513         [GCC_UBI1_CORE_CLK] = &gcc_ubi1_core_clk.clkr,
4514         [GCC_UBI1_MPT_CLK] = &gcc_ubi1_mpt_clk.clkr,
4515         [GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,
4516         [GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,
4517         [GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,
4518         [GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,
4519         [GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,
4520         [GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,
4521         [GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,
4522         [GCC_UNIPHY2_AHB_CLK] = &gcc_uniphy2_ahb_clk.clkr,
4523         [GCC_UNIPHY2_SYS_CLK] = &gcc_uniphy2_sys_clk.clkr,
4524         [GCC_NSS_PORT1_RX_CLK] = &gcc_nss_port1_rx_clk.clkr,
4525         [GCC_NSS_PORT1_TX_CLK] = &gcc_nss_port1_tx_clk.clkr,
4526         [GCC_NSS_PORT2_RX_CLK] = &gcc_nss_port2_rx_clk.clkr,
4527         [GCC_NSS_PORT2_TX_CLK] = &gcc_nss_port2_tx_clk.clkr,
4528         [GCC_NSS_PORT3_RX_CLK] = &gcc_nss_port3_rx_clk.clkr,
4529         [GCC_NSS_PORT3_TX_CLK] = &gcc_nss_port3_tx_clk.clkr,
4530         [GCC_NSS_PORT4_RX_CLK] = &gcc_nss_port4_rx_clk.clkr,
4531         [GCC_NSS_PORT4_TX_CLK] = &gcc_nss_port4_tx_clk.clkr,
4532         [GCC_NSS_PORT5_RX_CLK] = &gcc_nss_port5_rx_clk.clkr,
4533         [GCC_NSS_PORT5_TX_CLK] = &gcc_nss_port5_tx_clk.clkr,
4534         [GCC_NSS_PORT6_RX_CLK] = &gcc_nss_port6_rx_clk.clkr,
4535         [GCC_NSS_PORT6_TX_CLK] = &gcc_nss_port6_tx_clk.clkr,
4536         [GCC_PORT1_MAC_CLK] = &gcc_port1_mac_clk.clkr,
4537         [GCC_PORT2_MAC_CLK] = &gcc_port2_mac_clk.clkr,
4538         [GCC_PORT3_MAC_CLK] = &gcc_port3_mac_clk.clkr,
4539         [GCC_PORT4_MAC_CLK] = &gcc_port4_mac_clk.clkr,
4540         [GCC_PORT5_MAC_CLK] = &gcc_port5_mac_clk.clkr,
4541         [GCC_PORT6_MAC_CLK] = &gcc_port6_mac_clk.clkr,
4542         [GCC_UNIPHY0_PORT1_RX_CLK] = &gcc_uniphy0_port1_rx_clk.clkr,
4543         [GCC_UNIPHY0_PORT1_TX_CLK] = &gcc_uniphy0_port1_tx_clk.clkr,
4544         [GCC_UNIPHY0_PORT2_RX_CLK] = &gcc_uniphy0_port2_rx_clk.clkr,
4545         [GCC_UNIPHY0_PORT2_TX_CLK] = &gcc_uniphy0_port2_tx_clk.clkr,
4546         [GCC_UNIPHY0_PORT3_RX_CLK] = &gcc_uniphy0_port3_rx_clk.clkr,
4547         [GCC_UNIPHY0_PORT3_TX_CLK] = &gcc_uniphy0_port3_tx_clk.clkr,
4548         [GCC_UNIPHY0_PORT4_RX_CLK] = &gcc_uniphy0_port4_rx_clk.clkr,
4549         [GCC_UNIPHY0_PORT4_TX_CLK] = &gcc_uniphy0_port4_tx_clk.clkr,
4550         [GCC_UNIPHY0_PORT5_RX_CLK] = &gcc_uniphy0_port5_rx_clk.clkr,
4551         [GCC_UNIPHY0_PORT5_TX_CLK] = &gcc_uniphy0_port5_tx_clk.clkr,
4552         [GCC_UNIPHY1_PORT5_RX_CLK] = &gcc_uniphy1_port5_rx_clk.clkr,
4553         [GCC_UNIPHY1_PORT5_TX_CLK] = &gcc_uniphy1_port5_tx_clk.clkr,
4554         [GCC_UNIPHY2_PORT6_RX_CLK] = &gcc_uniphy2_port6_rx_clk.clkr,
4555         [GCC_UNIPHY2_PORT6_TX_CLK] = &gcc_uniphy2_port6_tx_clk.clkr,
4556         [GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr,
4557         [GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr,
4558         [GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr,
4559         [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
4560         [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
4561         [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
4562 };
4563
4564 static const struct qcom_reset_map gcc_ipq8074_resets[] = {
4565         [GCC_BLSP1_BCR] = { 0x01000, 0 },
4566         [GCC_BLSP1_QUP1_BCR] = { 0x02000, 0 },
4567         [GCC_BLSP1_UART1_BCR] = { 0x02038, 0 },
4568         [GCC_BLSP1_QUP2_BCR] = { 0x03008, 0 },
4569         [GCC_BLSP1_UART2_BCR] = { 0x03028, 0 },
4570         [GCC_BLSP1_QUP3_BCR] = { 0x04008, 0 },
4571         [GCC_BLSP1_UART3_BCR] = { 0x04028, 0 },
4572         [GCC_BLSP1_QUP4_BCR] = { 0x05008, 0 },
4573         [GCC_BLSP1_UART4_BCR] = { 0x05028, 0 },
4574         [GCC_BLSP1_QUP5_BCR] = { 0x06008, 0 },
4575         [GCC_BLSP1_UART5_BCR] = { 0x06028, 0 },
4576         [GCC_BLSP1_QUP6_BCR] = { 0x07008, 0 },
4577         [GCC_BLSP1_UART6_BCR] = { 0x07028, 0 },
4578         [GCC_IMEM_BCR] = { 0x0e000, 0 },
4579         [GCC_SMMU_BCR] = { 0x12000, 0 },
4580         [GCC_APSS_TCU_BCR] = { 0x12050, 0 },
4581         [GCC_SMMU_XPU_BCR] = { 0x12054, 0 },
4582         [GCC_PCNOC_TBU_BCR] = { 0x12058, 0 },
4583         [GCC_SMMU_CFG_BCR] = { 0x1208c, 0 },
4584         [GCC_PRNG_BCR] = { 0x13000, 0 },
4585         [GCC_BOOT_ROM_BCR] = { 0x13008, 0 },
4586         [GCC_CRYPTO_BCR] = { 0x16000, 0 },
4587         [GCC_WCSS_BCR] = { 0x18000, 0 },
4588         [GCC_WCSS_Q6_BCR] = { 0x18100, 0 },
4589         [GCC_NSS_BCR] = { 0x19000, 0 },
4590         [GCC_SEC_CTRL_BCR] = { 0x1a000, 0 },
4591         [GCC_ADSS_BCR] = { 0x1c000, 0 },
4592         [GCC_DDRSS_BCR] = { 0x1e000, 0 },
4593         [GCC_SYSTEM_NOC_BCR] = { 0x26000, 0 },
4594         [GCC_PCNOC_BCR] = { 0x27018, 0 },
4595         [GCC_TCSR_BCR] = { 0x28000, 0 },
4596         [GCC_QDSS_BCR] = { 0x29000, 0 },
4597         [GCC_DCD_BCR] = { 0x2a000, 0 },
4598         [GCC_MSG_RAM_BCR] = { 0x2b000, 0 },
4599         [GCC_MPM_BCR] = { 0x2c000, 0 },
4600         [GCC_SPMI_BCR] = { 0x2e000, 0 },
4601         [GCC_SPDM_BCR] = { 0x2f000, 0 },
4602         [GCC_RBCPR_BCR] = { 0x33000, 0 },
4603         [GCC_RBCPR_MX_BCR] = { 0x33014, 0 },
4604         [GCC_TLMM_BCR] = { 0x34000, 0 },
4605         [GCC_RBCPR_WCSS_BCR] = { 0x3a000, 0 },
4606         [GCC_USB0_PHY_BCR] = { 0x3e034, 0 },
4607         [GCC_USB3PHY_0_PHY_BCR] = { 0x3e03c, 0 },
4608         [GCC_USB0_BCR] = { 0x3e070, 0 },
4609         [GCC_USB1_PHY_BCR] = { 0x3f034, 0 },
4610         [GCC_USB3PHY_1_PHY_BCR] = { 0x3f03c, 0 },
4611         [GCC_USB1_BCR] = { 0x3f070, 0 },
4612         [GCC_QUSB2_0_PHY_BCR] = { 0x4103c, 0 },
4613         [GCC_QUSB2_1_PHY_BCR] = { 0x41040, 0 },
4614         [GCC_SDCC1_BCR] = { 0x42000, 0 },
4615         [GCC_SDCC2_BCR] = { 0x43000, 0 },
4616         [GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x47000, 0 },
4617         [GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x47008, 0 },
4618         [GCC_SNOC_BUS_TIMEOUT3_BCR] = { 0x47010, 0 },
4619         [GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x48000, 0 },
4620         [GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x48008, 0 },
4621         [GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x48010, 0 },
4622         [GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x48018, 0 },
4623         [GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x48020, 0 },
4624         [GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x48028, 0 },
4625         [GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x48030, 0 },
4626         [GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x48038, 0 },
4627         [GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x48040, 0 },
4628         [GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x48048, 0 },
4629         [GCC_UNIPHY0_BCR] = { 0x56000, 0 },
4630         [GCC_UNIPHY1_BCR] = { 0x56100, 0 },
4631         [GCC_UNIPHY2_BCR] = { 0x56200, 0 },
4632         [GCC_CMN_12GPLL_BCR] = { 0x56300, 0 },
4633         [GCC_QPIC_BCR] = { 0x57018, 0 },
4634         [GCC_MDIO_BCR] = { 0x58000, 0 },
4635         [GCC_PCIE1_TBU_BCR] = { 0x65000, 0 },
4636         [GCC_WCSS_CORE_TBU_BCR] = { 0x66000, 0 },
4637         [GCC_WCSS_Q6_TBU_BCR] = { 0x67000, 0 },
4638         [GCC_USB0_TBU_BCR] = { 0x6a000, 0 },
4639         [GCC_USB1_TBU_BCR] = { 0x6a004, 0 },
4640         [GCC_PCIE0_TBU_BCR] = { 0x6b000, 0 },
4641         [GCC_NSS_NOC_TBU_BCR] = { 0x6e000, 0 },
4642         [GCC_PCIE0_BCR] = { 0x75004, 0 },
4643         [GCC_PCIE0_PHY_BCR] = { 0x75038, 0 },
4644         [GCC_PCIE0PHY_PHY_BCR] = { 0x7503c, 0 },
4645         [GCC_PCIE0_LINK_DOWN_BCR] = { 0x75044, 0 },
4646         [GCC_PCIE1_BCR] = { 0x76004, 0 },
4647         [GCC_PCIE1_PHY_BCR] = { 0x76038, 0 },
4648         [GCC_PCIE1PHY_PHY_BCR] = { 0x7603c, 0 },
4649         [GCC_PCIE1_LINK_DOWN_BCR] = { 0x76044, 0 },
4650         [GCC_DCC_BCR] = { 0x77000, 0 },
4651         [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x78000, 0 },
4652         [GCC_APC1_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x79000, 0 },
4653         [GCC_SMMU_CATS_BCR] = { 0x7c000, 0 },
4654         [GCC_UBI0_AXI_ARES] = { 0x68010, 0 },
4655         [GCC_UBI0_AHB_ARES] = { 0x68010, 1 },
4656         [GCC_UBI0_NC_AXI_ARES] = { 0x68010, 2 },
4657         [GCC_UBI0_DBG_ARES] = { 0x68010, 3 },
4658         [GCC_UBI0_CORE_CLAMP_ENABLE] = { 0x68010, 4 },
4659         [GCC_UBI0_CLKRST_CLAMP_ENABLE] = { 0x68010, 5 },
4660         [GCC_UBI1_AXI_ARES] = { 0x68010, 8 },
4661         [GCC_UBI1_AHB_ARES] = { 0x68010, 9 },
4662         [GCC_UBI1_NC_AXI_ARES] = { 0x68010, 10 },
4663         [GCC_UBI1_DBG_ARES] = { 0x68010, 11 },
4664         [GCC_UBI1_CORE_CLAMP_ENABLE] = { 0x68010, 12 },
4665         [GCC_UBI1_CLKRST_CLAMP_ENABLE] = { 0x68010, 13 },
4666         [GCC_NSS_CFG_ARES] = { 0x68010, 16 },
4667         [GCC_NSS_IMEM_ARES] = { 0x68010, 17 },
4668         [GCC_NSS_NOC_ARES] = { 0x68010, 18 },
4669         [GCC_NSS_CRYPTO_ARES] = { 0x68010, 19 },
4670         [GCC_NSS_CSR_ARES] = { 0x68010, 20 },
4671         [GCC_NSS_CE_APB_ARES] = { 0x68010, 21 },
4672         [GCC_NSS_CE_AXI_ARES] = { 0x68010, 22 },
4673         [GCC_NSSNOC_CE_APB_ARES] = { 0x68010, 23 },
4674         [GCC_NSSNOC_CE_AXI_ARES] = { 0x68010, 24 },
4675         [GCC_NSSNOC_UBI0_AHB_ARES] = { 0x68010, 25 },
4676         [GCC_NSSNOC_UBI1_AHB_ARES] = { 0x68010, 26 },
4677         [GCC_NSSNOC_SNOC_ARES] = { 0x68010, 27 },
4678         [GCC_NSSNOC_CRYPTO_ARES] = { 0x68010, 28 },
4679         [GCC_NSSNOC_ATB_ARES] = { 0x68010, 29 },
4680         [GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x68010, 30 },
4681         [GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x68010, 31 },
4682         [GCC_PCIE0_PIPE_ARES] = { 0x75040, 0 },
4683         [GCC_PCIE0_SLEEP_ARES] = { 0x75040, 1 },
4684         [GCC_PCIE0_CORE_STICKY_ARES] = { 0x75040, 2 },
4685         [GCC_PCIE0_AXI_MASTER_ARES] = { 0x75040, 3 },
4686         [GCC_PCIE0_AXI_SLAVE_ARES] = { 0x75040, 4 },
4687         [GCC_PCIE0_AHB_ARES] = { 0x75040, 5 },
4688         [GCC_PCIE0_AXI_MASTER_STICKY_ARES] = { 0x75040, 6 },
4689         [GCC_PCIE1_PIPE_ARES] = { 0x76040, 0 },
4690         [GCC_PCIE1_SLEEP_ARES] = { 0x76040, 1 },
4691         [GCC_PCIE1_CORE_STICKY_ARES] = { 0x76040, 2 },
4692         [GCC_PCIE1_AXI_MASTER_ARES] = { 0x76040, 3 },
4693         [GCC_PCIE1_AXI_SLAVE_ARES] = { 0x76040, 4 },
4694         [GCC_PCIE1_AHB_ARES] = { 0x76040, 5 },
4695         [GCC_PCIE1_AXI_MASTER_STICKY_ARES] = { 0x76040, 6 },
4696 };
4697
4698 static const struct of_device_id gcc_ipq8074_match_table[] = {
4699         { .compatible = "qcom,gcc-ipq8074" },
4700         { }
4701 };
4702 MODULE_DEVICE_TABLE(of, gcc_ipq8074_match_table);
4703
4704 static const struct regmap_config gcc_ipq8074_regmap_config = {
4705         .reg_bits       = 32,
4706         .reg_stride     = 4,
4707         .val_bits       = 32,
4708         .max_register   = 0x7fffc,
4709         .fast_io        = true,
4710 };
4711
4712 static const struct qcom_cc_desc gcc_ipq8074_desc = {
4713         .config = &gcc_ipq8074_regmap_config,
4714         .clks = gcc_ipq8074_clks,
4715         .num_clks = ARRAY_SIZE(gcc_ipq8074_clks),
4716         .resets = gcc_ipq8074_resets,
4717         .num_resets = ARRAY_SIZE(gcc_ipq8074_resets),
4718 };
4719
4720 static int gcc_ipq8074_probe(struct platform_device *pdev)
4721 {
4722         int ret, i;
4723
4724         for (i = 0; i < ARRAY_SIZE(gcc_ipq8074_hws); i++) {
4725                 ret = devm_clk_hw_register(&pdev->dev, gcc_ipq8074_hws[i]);
4726                 if (ret)
4727                         return ret;
4728         }
4729
4730         return qcom_cc_probe(pdev, &gcc_ipq8074_desc);
4731 }
4732
4733 static struct platform_driver gcc_ipq8074_driver = {
4734         .probe = gcc_ipq8074_probe,
4735         .driver = {
4736                 .name   = "qcom,gcc-ipq8074",
4737                 .of_match_table = gcc_ipq8074_match_table,
4738         },
4739 };
4740
4741 static int __init gcc_ipq8074_init(void)
4742 {
4743         return platform_driver_register(&gcc_ipq8074_driver);
4744 }
4745 core_initcall(gcc_ipq8074_init);
4746
4747 static void __exit gcc_ipq8074_exit(void)
4748 {
4749         platform_driver_unregister(&gcc_ipq8074_driver);
4750 }
4751 module_exit(gcc_ipq8074_exit);
4752
4753 MODULE_DESCRIPTION("QCOM GCC IPQ8074 Driver");
4754 MODULE_LICENSE("GPL v2");
4755 MODULE_ALIAS("platform:gcc-ipq8074");