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