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