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