1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2018, The Linux Foundation. All rights reserved.
6 #include <linux/kernel.h>
8 #include <linux/platform_device.h>
9 #include <linux/module.h>
11 #include <linux/clk-provider.h>
12 #include <linux/regmap.h>
14 #include <linux/reset-controller.h>
15 #include <dt-bindings/clock/qcom,gcc-ipq6018.h>
16 #include <dt-bindings/reset/qcom,gcc-ipq6018.h>
19 #include "clk-regmap.h"
22 #include "clk-branch.h"
23 #include "clk-alpha-pll.h"
24 #include "clk-regmap-divider.h"
25 #include "clk-regmap-mux.h"
49 static struct clk_alpha_pll gpll0_main = {
51 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
53 .enable_reg = 0x0b000,
54 .enable_mask = BIT(0),
55 .hw.init = &(struct clk_init_data){
57 .parent_data = &(const struct clk_parent_data){
61 .ops = &clk_alpha_pll_ops,
66 static struct clk_fixed_factor gpll0_out_main_div2 = {
69 .hw.init = &(struct clk_init_data){
70 .name = "gpll0_out_main_div2",
71 .parent_hws = (const struct clk_hw *[]){
72 &gpll0_main.clkr.hw },
74 .ops = &clk_fixed_factor_ops,
78 static struct clk_alpha_pll_postdiv gpll0 = {
80 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
82 .clkr.hw.init = &(struct clk_init_data){
84 .parent_hws = (const struct clk_hw *[]){
85 &gpll0_main.clkr.hw },
87 .ops = &clk_alpha_pll_postdiv_ro_ops,
91 static const struct clk_parent_data gcc_xo_gpll0_gpll0_out_main_div2[] = {
93 { .hw = &gpll0.clkr.hw},
94 { .hw = &gpll0_out_main_div2.hw},
97 static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = {
103 static struct clk_alpha_pll ubi32_pll_main = {
105 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
106 .flags = SUPPORTS_DYNAMIC_UPDATE,
108 .enable_reg = 0x0b000,
109 .enable_mask = BIT(6),
110 .hw.init = &(struct clk_init_data){
111 .name = "ubi32_pll_main",
112 .parent_data = &(const struct clk_parent_data){
116 .ops = &clk_alpha_pll_huayra_ops,
121 static struct clk_alpha_pll_postdiv ubi32_pll = {
123 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
125 .clkr.hw.init = &(struct clk_init_data){
127 .parent_hws = (const struct clk_hw *[]){
128 &ubi32_pll_main.clkr.hw },
130 .ops = &clk_alpha_pll_postdiv_ro_ops,
131 .flags = CLK_SET_RATE_PARENT,
135 static struct clk_alpha_pll gpll6_main = {
137 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
139 .enable_reg = 0x0b000,
140 .enable_mask = BIT(7),
141 .hw.init = &(struct clk_init_data){
142 .name = "gpll6_main",
143 .parent_data = &(const struct clk_parent_data){
147 .ops = &clk_alpha_pll_ops,
152 static struct clk_alpha_pll_postdiv gpll6 = {
154 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
156 .clkr.hw.init = &(struct clk_init_data){
158 .parent_hws = (const struct clk_hw *[]){
159 &gpll6_main.clkr.hw },
161 .ops = &clk_alpha_pll_postdiv_ro_ops,
165 static struct clk_alpha_pll gpll4_main = {
167 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
169 .enable_reg = 0x0b000,
170 .enable_mask = BIT(5),
171 .hw.init = &(struct clk_init_data){
172 .name = "gpll4_main",
173 .parent_data = &(const struct clk_parent_data){
177 .ops = &clk_alpha_pll_ops,
182 static struct clk_alpha_pll_postdiv gpll4 = {
184 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
186 .clkr.hw.init = &(struct clk_init_data){
188 .parent_hws = (const struct clk_hw *[]){
189 &gpll4_main.clkr.hw },
191 .ops = &clk_alpha_pll_postdiv_ro_ops,
195 static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src[] = {
196 F(24000000, P_XO, 1, 0, 0),
197 F(50000000, P_GPLL0, 16, 0, 0),
198 F(100000000, P_GPLL0, 8, 0, 0),
202 static struct clk_rcg2 pcnoc_bfdcd_clk_src = {
204 .freq_tbl = ftbl_pcnoc_bfdcd_clk_src,
206 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
207 .clkr.hw.init = &(struct clk_init_data){
208 .name = "pcnoc_bfdcd_clk_src",
209 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
211 .ops = &clk_rcg2_ops,
215 static struct clk_alpha_pll gpll2_main = {
217 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
219 .enable_reg = 0x0b000,
220 .enable_mask = BIT(2),
221 .hw.init = &(struct clk_init_data){
222 .name = "gpll2_main",
223 .parent_data = &(const struct clk_parent_data){
227 .ops = &clk_alpha_pll_ops,
232 static struct clk_alpha_pll_postdiv gpll2 = {
234 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
236 .clkr.hw.init = &(struct clk_init_data){
238 .parent_hws = (const struct clk_hw *[]){
239 &gpll2_main.clkr.hw },
241 .ops = &clk_alpha_pll_postdiv_ro_ops,
245 static struct clk_alpha_pll nss_crypto_pll_main = {
247 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
249 .enable_reg = 0x0b000,
250 .enable_mask = BIT(4),
251 .hw.init = &(struct clk_init_data){
252 .name = "nss_crypto_pll_main",
253 .parent_data = &(const struct clk_parent_data){
257 .ops = &clk_alpha_pll_ops,
262 static struct clk_alpha_pll_postdiv nss_crypto_pll = {
264 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
266 .clkr.hw.init = &(struct clk_init_data){
267 .name = "nss_crypto_pll",
268 .parent_hws = (const struct clk_hw *[]){
269 &nss_crypto_pll_main.clkr.hw },
271 .ops = &clk_alpha_pll_postdiv_ro_ops,
275 static const struct freq_tbl ftbl_qdss_tsctr_clk_src[] = {
276 F(160000000, P_GPLL0_DIV2, 2.5, 0, 0),
277 F(320000000, P_GPLL0, 2.5, 0, 0),
278 F(600000000, P_GPLL4, 2, 0, 0),
282 static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll6_gpll0_div2[] = {
284 { .hw = &gpll4.clkr.hw },
285 { .hw = &gpll0.clkr.hw },
286 { .hw = &gpll6.clkr.hw },
287 { .hw = &gpll0_out_main_div2.hw },
290 static const struct parent_map gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map[] = {
298 static struct clk_rcg2 qdss_tsctr_clk_src = {
300 .freq_tbl = ftbl_qdss_tsctr_clk_src,
302 .parent_map = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map,
303 .clkr.hw.init = &(struct clk_init_data){
304 .name = "qdss_tsctr_clk_src",
305 .parent_data = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2,
307 .ops = &clk_rcg2_ops,
311 static struct clk_fixed_factor qdss_dap_sync_clk_src = {
314 .hw.init = &(struct clk_init_data){
315 .name = "qdss_dap_sync_clk_src",
316 .parent_hws = (const struct clk_hw *[]){
317 &qdss_tsctr_clk_src.clkr.hw },
319 .ops = &clk_fixed_factor_ops,
323 static const struct freq_tbl ftbl_qdss_at_clk_src[] = {
324 F(66670000, P_GPLL0_DIV2, 6, 0, 0),
325 F(240000000, P_GPLL4, 5, 0, 0),
329 static struct clk_rcg2 qdss_at_clk_src = {
331 .freq_tbl = ftbl_qdss_at_clk_src,
333 .parent_map = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map,
334 .clkr.hw.init = &(struct clk_init_data){
335 .name = "qdss_at_clk_src",
336 .parent_data = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2,
338 .ops = &clk_rcg2_ops,
342 static struct clk_fixed_factor qdss_tsctr_div2_clk_src = {
345 .hw.init = &(struct clk_init_data){
346 .name = "qdss_tsctr_div2_clk_src",
347 .parent_hws = (const struct clk_hw *[]){
348 &qdss_tsctr_clk_src.clkr.hw },
350 .flags = CLK_SET_RATE_PARENT,
351 .ops = &clk_fixed_factor_ops,
355 static const struct freq_tbl ftbl_nss_ppe_clk_src[] = {
356 F(24000000, P_XO, 1, 0, 0),
357 F(300000000, P_BIAS_PLL, 1, 0, 0),
361 static const struct clk_parent_data gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {
363 { .fw_name = "bias_pll_cc_clk" },
364 { .hw = &gpll0.clkr.hw },
365 { .hw = &gpll4.clkr.hw },
366 { .hw = &nss_crypto_pll.clkr.hw },
367 { .hw = &ubi32_pll.clkr.hw },
370 static const struct parent_map gcc_xo_bias_gpll0_gpll4_nss_ubi32_map[] = {
375 { P_NSS_CRYPTO_PLL, 4 },
379 static struct clk_rcg2 nss_ppe_clk_src = {
381 .freq_tbl = ftbl_nss_ppe_clk_src,
383 .parent_map = gcc_xo_bias_gpll0_gpll4_nss_ubi32_map,
384 .clkr.hw.init = &(struct clk_init_data){
385 .name = "nss_ppe_clk_src",
386 .parent_data = gcc_xo_bias_gpll0_gpll4_nss_ubi32,
388 .ops = &clk_rcg2_ops,
392 static struct clk_branch gcc_xo_clk_src = {
395 .enable_reg = 0x30018,
396 .enable_mask = BIT(1),
397 .hw.init = &(struct clk_init_data){
398 .name = "gcc_xo_clk_src",
399 .parent_data = &(const struct clk_parent_data){
403 .flags = CLK_SET_RATE_PARENT,
404 .ops = &clk_branch2_ops,
409 static const struct freq_tbl ftbl_nss_ce_clk_src[] = {
410 F(24000000, P_XO, 1, 0, 0),
411 F(200000000, P_GPLL0, 4, 0, 0),
415 static const struct clk_parent_data gcc_xo_gpll0[] = {
417 { .hw = &gpll0.clkr.hw },
420 static const struct parent_map gcc_xo_gpll0_map[] = {
425 static struct clk_rcg2 nss_ce_clk_src = {
427 .freq_tbl = ftbl_nss_ce_clk_src,
429 .parent_map = gcc_xo_gpll0_map,
430 .clkr.hw.init = &(struct clk_init_data){
431 .name = "nss_ce_clk_src",
432 .parent_data = gcc_xo_gpll0,
434 .ops = &clk_rcg2_ops,
438 static struct clk_branch gcc_sleep_clk_src = {
441 .enable_reg = 0x30000,
442 .enable_mask = BIT(1),
443 .hw.init = &(struct clk_init_data){
444 .name = "gcc_sleep_clk_src",
445 .parent_data = &(const struct clk_parent_data){
446 .fw_name = "sleep_clk",
449 .ops = &clk_branch2_ops,
454 static const struct freq_tbl ftbl_snoc_nssnoc_bfdcd_clk_src[] = {
455 F(24000000, P_XO, 1, 0, 0),
456 F(50000000, P_GPLL0_DIV2, 8, 0, 0),
457 F(100000000, P_GPLL0, 8, 0, 0),
458 F(133333333, P_GPLL0, 6, 0, 0),
459 F(160000000, P_GPLL0, 5, 0, 0),
460 F(200000000, P_GPLL0, 4, 0, 0),
461 F(266666667, P_GPLL0, 3, 0, 0),
465 static const struct clk_parent_data
466 gcc_xo_gpll0_gpll6_gpll0_out_main_div2[] = {
468 { .hw = &gpll0.clkr.hw },
469 { .hw = &gpll6.clkr.hw },
470 { .hw = &gpll0_out_main_div2.hw },
473 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map[] = {
480 static struct clk_rcg2 snoc_nssnoc_bfdcd_clk_src = {
482 .freq_tbl = ftbl_snoc_nssnoc_bfdcd_clk_src,
484 .parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
485 .clkr.hw.init = &(struct clk_init_data){
486 .name = "snoc_nssnoc_bfdcd_clk_src",
487 .parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
489 .ops = &clk_rcg2_ops,
493 static const struct freq_tbl ftbl_apss_ahb_clk_src[] = {
494 F(24000000, P_XO, 1, 0, 0),
495 F(25000000, P_GPLL0_DIV2, 16, 0, 0),
496 F(50000000, P_GPLL0, 16, 0, 0),
497 F(100000000, P_GPLL0, 8, 0, 0),
501 static struct clk_rcg2 apss_ahb_clk_src = {
503 .freq_tbl = ftbl_apss_ahb_clk_src,
505 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
506 .clkr.hw.init = &(struct clk_init_data){
507 .name = "apss_ahb_clk_src",
508 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
510 .ops = &clk_rcg2_ops,
514 static const struct freq_tbl ftbl_nss_port5_rx_clk_src[] = {
515 F(24000000, P_XO, 1, 0, 0),
516 F(25000000, P_UNIPHY1_RX, 12.5, 0, 0),
517 F(25000000, P_UNIPHY0_RX, 5, 0, 0),
518 F(78125000, P_UNIPHY1_RX, 4, 0, 0),
519 F(125000000, P_UNIPHY1_RX, 2.5, 0, 0),
520 F(125000000, P_UNIPHY0_RX, 1, 0, 0),
521 F(156250000, P_UNIPHY1_RX, 2, 0, 0),
522 F(312500000, P_UNIPHY1_RX, 1, 0, 0),
526 static const struct clk_parent_data
527 gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {
529 { .fw_name = "uniphy0_gcc_rx_clk" },
530 { .fw_name = "uniphy0_gcc_tx_clk" },
531 { .fw_name = "uniphy1_gcc_rx_clk" },
532 { .fw_name = "uniphy1_gcc_tx_clk" },
533 { .hw = &ubi32_pll.clkr.hw },
534 { .fw_name = "bias_pll_cc_clk" },
537 static const struct parent_map
538 gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map[] = {
548 static struct clk_rcg2 nss_port5_rx_clk_src = {
550 .freq_tbl = ftbl_nss_port5_rx_clk_src,
552 .parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map,
553 .clkr.hw.init = &(struct clk_init_data){
554 .name = "nss_port5_rx_clk_src",
555 .parent_data = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias,
557 .ops = &clk_rcg2_ops,
561 static const struct freq_tbl ftbl_nss_port5_tx_clk_src[] = {
562 F(24000000, P_XO, 1, 0, 0),
563 F(25000000, P_UNIPHY1_TX, 12.5, 0, 0),
564 F(25000000, P_UNIPHY0_TX, 5, 0, 0),
565 F(78125000, P_UNIPHY1_TX, 4, 0, 0),
566 F(125000000, P_UNIPHY1_TX, 2.5, 0, 0),
567 F(125000000, P_UNIPHY0_TX, 1, 0, 0),
568 F(156250000, P_UNIPHY1_TX, 2, 0, 0),
569 F(312500000, P_UNIPHY1_TX, 1, 0, 0),
573 static const struct clk_parent_data
574 gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {
576 { .fw_name = "uniphy0_gcc_tx_clk" },
577 { .fw_name = "uniphy0_gcc_rx_clk" },
578 { .fw_name = "uniphy1_gcc_tx_clk" },
579 { .fw_name = "uniphy1_gcc_rx_clk" },
580 { .hw = &ubi32_pll.clkr.hw },
581 { .fw_name = "bias_pll_cc_clk" },
584 static const struct parent_map
585 gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map[] = {
595 static struct clk_rcg2 nss_port5_tx_clk_src = {
597 .freq_tbl = ftbl_nss_port5_tx_clk_src,
599 .parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map,
600 .clkr.hw.init = &(struct clk_init_data){
601 .name = "nss_port5_tx_clk_src",
602 .parent_data = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias,
604 .ops = &clk_rcg2_ops,
608 static const struct freq_tbl ftbl_pcie_axi_clk_src[] = {
609 F(24000000, P_XO, 1, 0, 0),
610 F(200000000, P_GPLL0, 4, 0, 0),
611 F(240000000, P_GPLL4, 5, 0, 0),
615 static const struct freq_tbl ftbl_pcie_rchng_clk_src[] = {
616 F(24000000, P_XO, 1, 0, 0),
617 F(100000000, P_GPLL0, 8, 0, 0),
621 static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
623 { .hw = &gpll0.clkr.hw },
624 { .hw = &gpll4.clkr.hw },
627 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
633 static struct clk_rcg2 pcie0_axi_clk_src = {
635 .freq_tbl = ftbl_pcie_axi_clk_src,
637 .parent_map = gcc_xo_gpll0_gpll4_map,
638 .clkr.hw.init = &(struct clk_init_data){
639 .name = "pcie0_axi_clk_src",
640 .parent_data = gcc_xo_gpll0_gpll4,
642 .ops = &clk_rcg2_ops,
646 static const struct freq_tbl ftbl_usb0_master_clk_src[] = {
647 F(80000000, P_GPLL0_DIV2, 5, 0, 0),
648 F(100000000, P_GPLL0, 8, 0, 0),
649 F(133330000, P_GPLL0, 6, 0, 0),
650 F(200000000, P_GPLL0, 4, 0, 0),
654 static const struct clk_parent_data gcc_xo_gpll0_out_main_div2_gpll0[] = {
656 { .hw = &gpll0_out_main_div2.hw },
657 { .hw = &gpll0.clkr.hw },
660 static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = {
666 static struct clk_rcg2 usb0_master_clk_src = {
668 .freq_tbl = ftbl_usb0_master_clk_src,
671 .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
672 .clkr.hw.init = &(struct clk_init_data){
673 .name = "usb0_master_clk_src",
674 .parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
676 .ops = &clk_rcg2_ops,
680 static struct clk_regmap_div apss_ahb_postdiv_clk_src = {
685 .hw.init = &(struct clk_init_data){
686 .name = "apss_ahb_postdiv_clk_src",
687 .parent_hws = (const struct clk_hw *[]){
688 &apss_ahb_clk_src.clkr.hw },
690 .ops = &clk_regmap_div_ops,
695 static struct clk_fixed_factor gcc_xo_div4_clk_src = {
698 .hw.init = &(struct clk_init_data){
699 .name = "gcc_xo_div4_clk_src",
700 .parent_hws = (const struct clk_hw *[]){
701 &gcc_xo_clk_src.clkr.hw },
703 .ops = &clk_fixed_factor_ops,
704 .flags = CLK_SET_RATE_PARENT,
708 static const struct freq_tbl ftbl_nss_port1_rx_clk_src[] = {
709 F(24000000, P_XO, 1, 0, 0),
710 F(25000000, P_UNIPHY0_RX, 5, 0, 0),
711 F(125000000, P_UNIPHY0_RX, 1, 0, 0),
715 static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {
717 { .fw_name = "uniphy0_gcc_rx_clk" },
718 { .fw_name = "uniphy0_gcc_tx_clk" },
719 { .hw = &ubi32_pll.clkr.hw },
720 { .fw_name = "bias_pll_cc_clk" },
723 static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {
731 static struct clk_rcg2 nss_port1_rx_clk_src = {
733 .freq_tbl = ftbl_nss_port1_rx_clk_src,
735 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
736 .clkr.hw.init = &(struct clk_init_data){
737 .name = "nss_port1_rx_clk_src",
738 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
740 .ops = &clk_rcg2_ops,
744 static const struct freq_tbl ftbl_nss_port1_tx_clk_src[] = {
745 F(24000000, P_XO, 1, 0, 0),
746 F(25000000, P_UNIPHY0_TX, 5, 0, 0),
747 F(125000000, P_UNIPHY0_TX, 1, 0, 0),
751 static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {
753 { .fw_name = "uniphy0_gcc_tx_clk" },
754 { .fw_name = "uniphy0_gcc_rx_clk" },
755 { .hw = &ubi32_pll.clkr.hw },
756 { .fw_name = "bias_pll_cc_clk" },
759 static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {
767 static struct clk_rcg2 nss_port1_tx_clk_src = {
769 .freq_tbl = ftbl_nss_port1_tx_clk_src,
771 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
772 .clkr.hw.init = &(struct clk_init_data){
773 .name = "nss_port1_tx_clk_src",
774 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
776 .ops = &clk_rcg2_ops,
780 static struct clk_rcg2 nss_port2_rx_clk_src = {
782 .freq_tbl = ftbl_nss_port1_rx_clk_src,
784 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
785 .clkr.hw.init = &(struct clk_init_data){
786 .name = "nss_port2_rx_clk_src",
787 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
789 .ops = &clk_rcg2_ops,
793 static struct clk_rcg2 nss_port2_tx_clk_src = {
795 .freq_tbl = ftbl_nss_port1_tx_clk_src,
797 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
798 .clkr.hw.init = &(struct clk_init_data){
799 .name = "nss_port2_tx_clk_src",
800 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
802 .ops = &clk_rcg2_ops,
806 static struct clk_rcg2 nss_port3_rx_clk_src = {
808 .freq_tbl = ftbl_nss_port1_rx_clk_src,
810 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
811 .clkr.hw.init = &(struct clk_init_data){
812 .name = "nss_port3_rx_clk_src",
813 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
815 .ops = &clk_rcg2_ops,
819 static struct clk_rcg2 nss_port3_tx_clk_src = {
821 .freq_tbl = ftbl_nss_port1_tx_clk_src,
823 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
824 .clkr.hw.init = &(struct clk_init_data){
825 .name = "nss_port3_tx_clk_src",
826 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
828 .ops = &clk_rcg2_ops,
832 static struct clk_rcg2 nss_port4_rx_clk_src = {
834 .freq_tbl = ftbl_nss_port1_rx_clk_src,
836 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
837 .clkr.hw.init = &(struct clk_init_data){
838 .name = "nss_port4_rx_clk_src",
839 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
841 .ops = &clk_rcg2_ops,
845 static struct clk_rcg2 nss_port4_tx_clk_src = {
847 .freq_tbl = ftbl_nss_port1_tx_clk_src,
849 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
850 .clkr.hw.init = &(struct clk_init_data){
851 .name = "nss_port4_tx_clk_src",
852 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
854 .ops = &clk_rcg2_ops,
858 static struct clk_regmap_div nss_port5_rx_div_clk_src = {
863 .hw.init = &(struct clk_init_data){
864 .name = "nss_port5_rx_div_clk_src",
865 .parent_hws = (const struct clk_hw *[]){
866 &nss_port5_rx_clk_src.clkr.hw },
868 .ops = &clk_regmap_div_ops,
869 .flags = CLK_SET_RATE_PARENT,
874 static struct clk_regmap_div nss_port5_tx_div_clk_src = {
879 .hw.init = &(struct clk_init_data){
880 .name = "nss_port5_tx_div_clk_src",
881 .parent_hws = (const struct clk_hw *[]){
882 &nss_port5_tx_clk_src.clkr.hw },
884 .ops = &clk_regmap_div_ops,
885 .flags = CLK_SET_RATE_PARENT,
890 static const struct freq_tbl ftbl_apss_axi_clk_src[] = {
891 F(24000000, P_XO, 1, 0, 0),
892 F(100000000, P_GPLL0_DIV2, 4, 0, 0),
893 F(200000000, P_GPLL0, 4, 0, 0),
894 F(308570000, P_GPLL6, 3.5, 0, 0),
895 F(400000000, P_GPLL0, 2, 0, 0),
896 F(533000000, P_GPLL0, 1.5, 0, 0),
900 static const struct clk_parent_data gcc_xo_gpll0_gpll6_ubi32_gpll0_div2[] = {
902 { .hw = &gpll0.clkr.hw },
903 { .hw = &gpll6.clkr.hw },
904 { .hw = &ubi32_pll.clkr.hw },
905 { .hw = &gpll0_out_main_div2.hw },
908 static const struct parent_map
909 gcc_xo_gpll0_gpll6_ubi32_gpll0_div2_map[] = {
917 static struct clk_rcg2 apss_axi_clk_src = {
919 .freq_tbl = ftbl_apss_axi_clk_src,
921 .parent_map = gcc_xo_gpll0_gpll6_ubi32_gpll0_div2_map,
922 .clkr.hw.init = &(struct clk_init_data){
923 .name = "apss_axi_clk_src",
924 .parent_data = gcc_xo_gpll0_gpll6_ubi32_gpll0_div2,
926 .ops = &clk_rcg2_ops,
930 static const struct freq_tbl ftbl_nss_crypto_clk_src[] = {
931 F(24000000, P_XO, 1, 0, 0),
932 F(300000000, P_NSS_CRYPTO_PLL, 2, 0, 0),
936 static const struct clk_parent_data gcc_xo_nss_crypto_pll_gpll0[] = {
938 { .hw = &nss_crypto_pll.clkr.hw },
939 { .hw = &gpll0.clkr.hw },
942 static const struct parent_map gcc_xo_nss_crypto_pll_gpll0_map[] = {
944 { P_NSS_CRYPTO_PLL, 1 },
948 static struct clk_rcg2 nss_crypto_clk_src = {
950 .freq_tbl = ftbl_nss_crypto_clk_src,
953 .parent_map = gcc_xo_nss_crypto_pll_gpll0_map,
954 .clkr.hw.init = &(struct clk_init_data){
955 .name = "nss_crypto_clk_src",
956 .parent_data = gcc_xo_nss_crypto_pll_gpll0,
958 .ops = &clk_rcg2_ops,
962 static struct clk_regmap_div nss_port1_rx_div_clk_src = {
967 .hw.init = &(struct clk_init_data){
968 .name = "nss_port1_rx_div_clk_src",
969 .parent_hws = (const struct clk_hw *[]){
970 &nss_port1_rx_clk_src.clkr.hw },
972 .ops = &clk_regmap_div_ops,
973 .flags = CLK_SET_RATE_PARENT,
978 static struct clk_regmap_div nss_port1_tx_div_clk_src = {
983 .hw.init = &(struct clk_init_data){
984 .name = "nss_port1_tx_div_clk_src",
985 .parent_hws = (const struct clk_hw *[]){
986 &nss_port1_tx_clk_src.clkr.hw },
988 .ops = &clk_regmap_div_ops,
989 .flags = CLK_SET_RATE_PARENT,
994 static struct clk_regmap_div nss_port2_rx_div_clk_src = {
999 .hw.init = &(struct clk_init_data){
1000 .name = "nss_port2_rx_div_clk_src",
1001 .parent_hws = (const struct clk_hw *[]){
1002 &nss_port2_rx_clk_src.clkr.hw },
1004 .ops = &clk_regmap_div_ops,
1005 .flags = CLK_SET_RATE_PARENT,
1010 static struct clk_regmap_div nss_port2_tx_div_clk_src = {
1015 .hw.init = &(struct clk_init_data){
1016 .name = "nss_port2_tx_div_clk_src",
1017 .parent_hws = (const struct clk_hw *[]){
1018 &nss_port2_tx_clk_src.clkr.hw },
1020 .ops = &clk_regmap_div_ops,
1021 .flags = CLK_SET_RATE_PARENT,
1026 static struct clk_regmap_div nss_port3_rx_div_clk_src = {
1031 .hw.init = &(struct clk_init_data){
1032 .name = "nss_port3_rx_div_clk_src",
1033 .parent_hws = (const struct clk_hw *[]){
1034 &nss_port3_rx_clk_src.clkr.hw },
1036 .ops = &clk_regmap_div_ops,
1037 .flags = CLK_SET_RATE_PARENT,
1042 static struct clk_regmap_div nss_port3_tx_div_clk_src = {
1047 .hw.init = &(struct clk_init_data){
1048 .name = "nss_port3_tx_div_clk_src",
1049 .parent_hws = (const struct clk_hw *[]){
1050 &nss_port3_tx_clk_src.clkr.hw },
1052 .ops = &clk_regmap_div_ops,
1053 .flags = CLK_SET_RATE_PARENT,
1058 static struct clk_regmap_div nss_port4_rx_div_clk_src = {
1063 .hw.init = &(struct clk_init_data){
1064 .name = "nss_port4_rx_div_clk_src",
1065 .parent_hws = (const struct clk_hw *[]){
1066 &nss_port4_rx_clk_src.clkr.hw },
1068 .ops = &clk_regmap_div_ops,
1069 .flags = CLK_SET_RATE_PARENT,
1074 static struct clk_regmap_div nss_port4_tx_div_clk_src = {
1079 .hw.init = &(struct clk_init_data){
1080 .name = "nss_port4_tx_div_clk_src",
1081 .parent_hws = (const struct clk_hw *[]){
1082 &nss_port4_tx_clk_src.clkr.hw },
1084 .ops = &clk_regmap_div_ops,
1085 .flags = CLK_SET_RATE_PARENT,
1090 static const struct freq_tbl ftbl_nss_ubi_clk_src[] = {
1091 F(24000000, P_XO, 1, 0, 0),
1092 F(149760000, P_UBI32_PLL, 10, 0, 0),
1093 F(187200000, P_UBI32_PLL, 8, 0, 0),
1094 F(249600000, P_UBI32_PLL, 6, 0, 0),
1095 F(374400000, P_UBI32_PLL, 4, 0, 0),
1096 F(748800000, P_UBI32_PLL, 2, 0, 0),
1097 F(1497600000, P_UBI32_PLL, 1, 0, 0),
1101 static const struct clk_parent_data
1102 gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6[] = {
1103 { .fw_name = "xo" },
1104 { .hw = &ubi32_pll.clkr.hw },
1105 { .hw = &gpll0.clkr.hw },
1106 { .hw = &gpll2.clkr.hw },
1107 { .hw = &gpll4.clkr.hw },
1108 { .hw = &gpll6.clkr.hw },
1111 static const struct parent_map gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map[] = {
1120 static struct clk_rcg2 nss_ubi0_clk_src = {
1121 .cmd_rcgr = 0x68104,
1122 .freq_tbl = ftbl_nss_ubi_clk_src,
1124 .parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,
1125 .clkr.hw.init = &(struct clk_init_data){
1126 .name = "nss_ubi0_clk_src",
1127 .parent_data = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
1129 .ops = &clk_rcg2_ops,
1130 .flags = CLK_SET_RATE_PARENT,
1134 static const struct freq_tbl ftbl_adss_pwm_clk_src[] = {
1135 F(24000000, P_XO, 1, 0, 0),
1136 F(100000000, P_GPLL0, 8, 0, 0),
1140 static struct clk_rcg2 adss_pwm_clk_src = {
1141 .cmd_rcgr = 0x1c008,
1142 .freq_tbl = ftbl_adss_pwm_clk_src,
1144 .parent_map = gcc_xo_gpll0_map,
1145 .clkr.hw.init = &(struct clk_init_data){
1146 .name = "adss_pwm_clk_src",
1147 .parent_data = gcc_xo_gpll0,
1149 .ops = &clk_rcg2_ops,
1153 static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src[] = {
1154 F(24000000, P_XO, 1, 0, 0),
1155 F(25000000, P_GPLL0_DIV2, 16, 0, 0),
1156 F(50000000, P_GPLL0, 16, 0, 0),
1160 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
1161 .cmd_rcgr = 0x0200c,
1162 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1164 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1165 .clkr.hw.init = &(struct clk_init_data){
1166 .name = "blsp1_qup1_i2c_apps_clk_src",
1167 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1169 .ops = &clk_rcg2_ops,
1173 static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src[] = {
1174 F(960000, P_XO, 10, 2, 5),
1175 F(4800000, P_XO, 5, 0, 0),
1176 F(9600000, P_XO, 2, 4, 5),
1177 F(12500000, P_GPLL0_DIV2, 16, 1, 2),
1178 F(16000000, P_GPLL0, 10, 1, 5),
1179 F(24000000, P_XO, 1, 0, 0),
1180 F(25000000, P_GPLL0, 16, 1, 2),
1181 F(50000000, P_GPLL0, 16, 0, 0),
1185 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
1186 .cmd_rcgr = 0x02024,
1187 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1190 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1191 .clkr.hw.init = &(struct clk_init_data){
1192 .name = "blsp1_qup1_spi_apps_clk_src",
1193 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1195 .ops = &clk_rcg2_ops,
1199 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
1200 .cmd_rcgr = 0x03000,
1201 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1203 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1204 .clkr.hw.init = &(struct clk_init_data){
1205 .name = "blsp1_qup2_i2c_apps_clk_src",
1206 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1208 .ops = &clk_rcg2_ops,
1212 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
1213 .cmd_rcgr = 0x03014,
1214 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1217 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1218 .clkr.hw.init = &(struct clk_init_data){
1219 .name = "blsp1_qup2_spi_apps_clk_src",
1220 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1222 .ops = &clk_rcg2_ops,
1226 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
1227 .cmd_rcgr = 0x04000,
1228 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1230 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1231 .clkr.hw.init = &(struct clk_init_data){
1232 .name = "blsp1_qup3_i2c_apps_clk_src",
1233 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1235 .ops = &clk_rcg2_ops,
1239 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
1240 .cmd_rcgr = 0x04014,
1241 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1244 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1245 .clkr.hw.init = &(struct clk_init_data){
1246 .name = "blsp1_qup3_spi_apps_clk_src",
1247 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1249 .ops = &clk_rcg2_ops,
1253 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
1254 .cmd_rcgr = 0x05000,
1255 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1257 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1258 .clkr.hw.init = &(struct clk_init_data){
1259 .name = "blsp1_qup4_i2c_apps_clk_src",
1260 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1262 .ops = &clk_rcg2_ops,
1266 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
1267 .cmd_rcgr = 0x05014,
1268 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1271 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1272 .clkr.hw.init = &(struct clk_init_data){
1273 .name = "blsp1_qup4_spi_apps_clk_src",
1274 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1276 .ops = &clk_rcg2_ops,
1280 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
1281 .cmd_rcgr = 0x06000,
1282 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1284 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1285 .clkr.hw.init = &(struct clk_init_data){
1286 .name = "blsp1_qup5_i2c_apps_clk_src",
1287 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1289 .ops = &clk_rcg2_ops,
1293 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
1294 .cmd_rcgr = 0x06014,
1295 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1298 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1299 .clkr.hw.init = &(struct clk_init_data){
1300 .name = "blsp1_qup5_spi_apps_clk_src",
1301 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1303 .ops = &clk_rcg2_ops,
1307 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
1308 .cmd_rcgr = 0x07000,
1309 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1311 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1312 .clkr.hw.init = &(struct clk_init_data){
1313 .name = "blsp1_qup6_i2c_apps_clk_src",
1314 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1316 .ops = &clk_rcg2_ops,
1320 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
1321 .cmd_rcgr = 0x07014,
1322 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1325 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1326 .clkr.hw.init = &(struct clk_init_data){
1327 .name = "blsp1_qup6_spi_apps_clk_src",
1328 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1330 .ops = &clk_rcg2_ops,
1334 static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src[] = {
1335 F(3686400, P_GPLL0_DIV2, 1, 144, 15625),
1336 F(7372800, P_GPLL0_DIV2, 1, 288, 15625),
1337 F(14745600, P_GPLL0_DIV2, 1, 576, 15625),
1338 F(16000000, P_GPLL0_DIV2, 5, 1, 5),
1339 F(24000000, P_XO, 1, 0, 0),
1340 F(24000000, P_GPLL0, 1, 3, 100),
1341 F(25000000, P_GPLL0, 16, 1, 2),
1342 F(32000000, P_GPLL0, 1, 1, 25),
1343 F(40000000, P_GPLL0, 1, 1, 20),
1344 F(46400000, P_GPLL0, 1, 29, 500),
1345 F(48000000, P_GPLL0, 1, 3, 50),
1346 F(51200000, P_GPLL0, 1, 8, 125),
1347 F(56000000, P_GPLL0, 1, 7, 100),
1348 F(58982400, P_GPLL0, 1, 1152, 15625),
1349 F(60000000, P_GPLL0, 1, 3, 40),
1350 F(64000000, P_GPLL0, 12.5, 1, 1),
1354 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
1355 .cmd_rcgr = 0x02044,
1356 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1359 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1360 .clkr.hw.init = &(struct clk_init_data){
1361 .name = "blsp1_uart1_apps_clk_src",
1362 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1364 .ops = &clk_rcg2_ops,
1368 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
1369 .cmd_rcgr = 0x03034,
1370 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1373 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1374 .clkr.hw.init = &(struct clk_init_data){
1375 .name = "blsp1_uart2_apps_clk_src",
1376 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1378 .ops = &clk_rcg2_ops,
1382 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
1383 .cmd_rcgr = 0x04034,
1384 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1387 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1388 .clkr.hw.init = &(struct clk_init_data){
1389 .name = "blsp1_uart3_apps_clk_src",
1390 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1392 .ops = &clk_rcg2_ops,
1396 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
1397 .cmd_rcgr = 0x05034,
1398 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1401 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1402 .clkr.hw.init = &(struct clk_init_data){
1403 .name = "blsp1_uart4_apps_clk_src",
1404 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1406 .ops = &clk_rcg2_ops,
1410 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
1411 .cmd_rcgr = 0x06034,
1412 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1415 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1416 .clkr.hw.init = &(struct clk_init_data){
1417 .name = "blsp1_uart5_apps_clk_src",
1418 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1420 .ops = &clk_rcg2_ops,
1424 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
1425 .cmd_rcgr = 0x07034,
1426 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1429 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1430 .clkr.hw.init = &(struct clk_init_data){
1431 .name = "blsp1_uart6_apps_clk_src",
1432 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1434 .ops = &clk_rcg2_ops,
1438 static const struct freq_tbl ftbl_crypto_clk_src[] = {
1439 F(40000000, P_GPLL0_DIV2, 10, 0, 0),
1440 F(80000000, P_GPLL0, 10, 0, 0),
1441 F(100000000, P_GPLL0, 8, 0, 0),
1442 F(160000000, P_GPLL0, 5, 0, 0),
1446 static struct clk_rcg2 crypto_clk_src = {
1447 .cmd_rcgr = 0x16004,
1448 .freq_tbl = ftbl_crypto_clk_src,
1450 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1451 .clkr.hw.init = &(struct clk_init_data){
1452 .name = "crypto_clk_src",
1453 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1455 .ops = &clk_rcg2_ops,
1459 static const struct freq_tbl ftbl_gp_clk_src[] = {
1460 F(24000000, P_XO, 1, 0, 0),
1461 F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1462 F(100000000, P_GPLL0, 8, 0, 0),
1463 F(200000000, P_GPLL0, 4, 0, 0),
1464 F(266666666, P_GPLL0, 3, 0, 0),
1468 static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_sleep_clk[] = {
1469 { .fw_name = "xo" },
1470 { .hw = &gpll0.clkr.hw },
1471 { .hw = &gpll6.clkr.hw },
1472 { .hw = &gpll0_out_main_div2.hw },
1473 { .fw_name = "sleep_clk" },
1476 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map[] = {
1480 { P_GPLL0_DIV2, 4 },
1484 static struct clk_rcg2 gp1_clk_src = {
1485 .cmd_rcgr = 0x08004,
1486 .freq_tbl = ftbl_gp_clk_src,
1489 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1490 .clkr.hw.init = &(struct clk_init_data){
1491 .name = "gp1_clk_src",
1492 .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1494 .ops = &clk_rcg2_ops,
1498 static struct clk_rcg2 gp2_clk_src = {
1499 .cmd_rcgr = 0x09004,
1500 .freq_tbl = ftbl_gp_clk_src,
1503 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1504 .clkr.hw.init = &(struct clk_init_data){
1505 .name = "gp2_clk_src",
1506 .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1508 .ops = &clk_rcg2_ops,
1512 static struct clk_rcg2 gp3_clk_src = {
1513 .cmd_rcgr = 0x0a004,
1514 .freq_tbl = ftbl_gp_clk_src,
1517 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1518 .clkr.hw.init = &(struct clk_init_data){
1519 .name = "gp3_clk_src",
1520 .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1522 .ops = &clk_rcg2_ops,
1526 static struct clk_fixed_factor nss_ppe_cdiv_clk_src = {
1529 .hw.init = &(struct clk_init_data){
1530 .name = "nss_ppe_cdiv_clk_src",
1531 .parent_hws = (const struct clk_hw *[]){
1532 &nss_ppe_clk_src.clkr.hw },
1534 .ops = &clk_fixed_factor_ops,
1535 .flags = CLK_SET_RATE_PARENT,
1539 static struct clk_regmap_div nss_ubi0_div_clk_src = {
1544 .hw.init = &(struct clk_init_data){
1545 .name = "nss_ubi0_div_clk_src",
1546 .parent_hws = (const struct clk_hw *[]){
1547 &nss_ubi0_clk_src.clkr.hw },
1549 .ops = &clk_regmap_div_ro_ops,
1550 .flags = CLK_SET_RATE_PARENT,
1555 static const struct freq_tbl ftbl_pcie_aux_clk_src[] = {
1556 F(24000000, P_XO, 1, 0, 0),
1559 static const struct clk_parent_data gcc_xo_gpll0_core_pi_sleep_clk[] = {
1560 { .fw_name = "xo" },
1561 { .hw = &gpll0.clkr.hw },
1562 { .fw_name = "sleep_clk" },
1565 static const struct parent_map gcc_xo_gpll0_core_pi_sleep_clk_map[] = {
1571 static struct clk_rcg2 pcie0_aux_clk_src = {
1572 .cmd_rcgr = 0x75024,
1573 .freq_tbl = ftbl_pcie_aux_clk_src,
1576 .parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,
1577 .clkr.hw.init = &(struct clk_init_data){
1578 .name = "pcie0_aux_clk_src",
1579 .parent_data = gcc_xo_gpll0_core_pi_sleep_clk,
1581 .ops = &clk_rcg2_ops,
1585 static const struct clk_parent_data gcc_pcie20_phy0_pipe_clk_xo[] = {
1586 { .fw_name = "pcie20_phy0_pipe_clk" },
1587 { .fw_name = "xo" },
1590 static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = {
1591 { P_PCIE20_PHY0_PIPE, 0 },
1595 static struct clk_regmap_mux pcie0_pipe_clk_src = {
1599 .parent_map = gcc_pcie20_phy0_pipe_clk_xo_map,
1601 .hw.init = &(struct clk_init_data){
1602 .name = "pcie0_pipe_clk_src",
1603 .parent_data = gcc_pcie20_phy0_pipe_clk_xo,
1605 .ops = &clk_regmap_mux_closest_ops,
1606 .flags = CLK_SET_RATE_PARENT,
1611 static const struct freq_tbl ftbl_sdcc_apps_clk_src[] = {
1612 F(144000, P_XO, 16, 12, 125),
1613 F(400000, P_XO, 12, 1, 5),
1614 F(24000000, P_GPLL2, 12, 1, 4),
1615 F(48000000, P_GPLL2, 12, 1, 2),
1616 F(96000000, P_GPLL2, 12, 0, 0),
1617 F(177777778, P_GPLL0, 4.5, 0, 0),
1618 F(192000000, P_GPLL2, 6, 0, 0),
1619 F(384000000, P_GPLL2, 3, 0, 0),
1623 static const struct clk_parent_data
1624 gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = {
1625 { .fw_name = "xo" },
1626 { .hw = &gpll0.clkr.hw },
1627 { .hw = &gpll2.clkr.hw },
1628 { .hw = &gpll0_out_main_div2.hw },
1631 static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = {
1635 { P_GPLL0_DIV2, 4 },
1638 static struct clk_rcg2 sdcc1_apps_clk_src = {
1639 .cmd_rcgr = 0x42004,
1640 .freq_tbl = ftbl_sdcc_apps_clk_src,
1643 .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
1644 .clkr.hw.init = &(struct clk_init_data){
1645 .name = "sdcc1_apps_clk_src",
1646 .parent_data = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
1648 .ops = &clk_rcg2_floor_ops,
1652 static const struct freq_tbl ftbl_usb_aux_clk_src[] = {
1653 F(24000000, P_XO, 1, 0, 0),
1657 static struct clk_rcg2 usb0_aux_clk_src = {
1658 .cmd_rcgr = 0x3e05c,
1659 .freq_tbl = ftbl_usb_aux_clk_src,
1662 .parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,
1663 .clkr.hw.init = &(struct clk_init_data){
1664 .name = "usb0_aux_clk_src",
1665 .parent_data = gcc_xo_gpll0_core_pi_sleep_clk,
1667 .ops = &clk_rcg2_ops,
1671 static const struct freq_tbl ftbl_usb_mock_utmi_clk_src[] = {
1672 F(24000000, P_XO, 1, 0, 0),
1673 F(60000000, P_GPLL6, 6, 1, 3),
1677 static const struct clk_parent_data
1678 gcc_xo_gpll6_gpll0_gpll0_out_main_div2[] = {
1679 { .fw_name = "xo" },
1680 { .hw = &gpll6.clkr.hw },
1681 { .hw = &gpll0.clkr.hw },
1682 { .hw = &gpll0_out_main_div2.hw },
1685 static const struct parent_map gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map[] = {
1689 { P_GPLL0_DIV2, 4 },
1692 static struct clk_rcg2 usb0_mock_utmi_clk_src = {
1693 .cmd_rcgr = 0x3e020,
1694 .freq_tbl = ftbl_usb_mock_utmi_clk_src,
1697 .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1698 .clkr.hw.init = &(struct clk_init_data){
1699 .name = "usb0_mock_utmi_clk_src",
1700 .parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1702 .ops = &clk_rcg2_ops,
1706 static const struct clk_parent_data gcc_usb3phy_0_cc_pipe_clk_xo[] = {
1707 { .fw_name = "usb3phy_0_cc_pipe_clk" },
1708 { .fw_name = "xo" },
1711 static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = {
1712 { P_USB3PHY_0_PIPE, 0 },
1716 static struct clk_regmap_mux usb0_pipe_clk_src = {
1720 .parent_map = gcc_usb3phy_0_cc_pipe_clk_xo_map,
1722 .hw.init = &(struct clk_init_data){
1723 .name = "usb0_pipe_clk_src",
1724 .parent_data = gcc_usb3phy_0_cc_pipe_clk_xo,
1726 .ops = &clk_regmap_mux_closest_ops,
1727 .flags = CLK_SET_RATE_PARENT,
1732 static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = {
1733 F(80000000, P_GPLL0_DIV2, 5, 0, 0),
1734 F(160000000, P_GPLL0, 5, 0, 0),
1735 F(216000000, P_GPLL6, 5, 0, 0),
1736 F(308570000, P_GPLL6, 3.5, 0, 0),
1739 static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_div2[] = {
1741 { .hw = &gpll0.clkr.hw },
1742 { .hw = &gpll6.clkr.hw },
1743 { .hw = &gpll0_out_main_div2.hw },
1746 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_div2_map[] = {
1750 { P_GPLL0_DIV2, 4 },
1753 static struct clk_rcg2 sdcc1_ice_core_clk_src = {
1754 .cmd_rcgr = 0x5d000,
1755 .freq_tbl = ftbl_sdcc_ice_core_clk_src,
1758 .parent_map = gcc_xo_gpll0_gpll6_gpll0_div2_map,
1759 .clkr.hw.init = &(struct clk_init_data){
1760 .name = "sdcc1_ice_core_clk_src",
1761 .parent_data = gcc_xo_gpll0_gpll6_gpll0_div2,
1763 .ops = &clk_rcg2_ops,
1767 static const struct freq_tbl ftbl_qdss_stm_clk_src[] = {
1768 F(24000000, P_XO, 1, 0, 0),
1769 F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1770 F(100000000, P_GPLL0, 8, 0, 0),
1771 F(200000000, P_GPLL0, 4, 0, 0),
1775 static struct clk_rcg2 qdss_stm_clk_src = {
1776 .cmd_rcgr = 0x2902C,
1777 .freq_tbl = ftbl_qdss_stm_clk_src,
1779 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1780 .clkr.hw.init = &(struct clk_init_data){
1781 .name = "qdss_stm_clk_src",
1782 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1784 .ops = &clk_rcg2_ops,
1788 static const struct freq_tbl ftbl_qdss_traceclkin_clk_src[] = {
1789 F(80000000, P_GPLL0_DIV2, 5, 0, 0),
1790 F(160000000, P_GPLL0, 5, 0, 0),
1791 F(300000000, P_GPLL4, 4, 0, 0),
1795 static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll0_div2[] = {
1796 { .fw_name = "xo" },
1797 { .hw = &gpll4.clkr.hw },
1798 { .hw = &gpll0.clkr.hw },
1799 { .hw = &gpll0_out_main_div2.hw },
1802 static const struct parent_map gcc_xo_gpll4_gpll0_gpll0_div2_map[] = {
1806 { P_GPLL0_DIV2, 4 },
1809 static struct clk_rcg2 qdss_traceclkin_clk_src = {
1810 .cmd_rcgr = 0x29048,
1811 .freq_tbl = ftbl_qdss_traceclkin_clk_src,
1813 .parent_map = gcc_xo_gpll4_gpll0_gpll0_div2_map,
1814 .clkr.hw.init = &(struct clk_init_data){
1815 .name = "qdss_traceclkin_clk_src",
1816 .parent_data = gcc_xo_gpll4_gpll0_gpll0_div2,
1818 .ops = &clk_rcg2_ops,
1822 static struct clk_rcg2 usb1_mock_utmi_clk_src = {
1823 .cmd_rcgr = 0x3f020,
1824 .freq_tbl = ftbl_usb_mock_utmi_clk_src,
1827 .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1828 .clkr.hw.init = &(struct clk_init_data){
1829 .name = "usb1_mock_utmi_clk_src",
1830 .parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1832 .ops = &clk_rcg2_ops,
1836 static struct clk_branch gcc_adss_pwm_clk = {
1837 .halt_reg = 0x1c020,
1839 .enable_reg = 0x1c020,
1840 .enable_mask = BIT(0),
1841 .hw.init = &(struct clk_init_data){
1842 .name = "gcc_adss_pwm_clk",
1843 .parent_hws = (const struct clk_hw *[]){
1844 &adss_pwm_clk_src.clkr.hw },
1846 .flags = CLK_SET_RATE_PARENT,
1847 .ops = &clk_branch2_ops,
1852 static struct clk_branch gcc_apss_ahb_clk = {
1853 .halt_reg = 0x4601c,
1854 .halt_check = BRANCH_HALT_VOTED,
1856 .enable_reg = 0x0b004,
1857 .enable_mask = BIT(14),
1858 .hw.init = &(struct clk_init_data){
1859 .name = "gcc_apss_ahb_clk",
1860 .parent_hws = (const struct clk_hw *[]){
1861 &apss_ahb_postdiv_clk_src.clkr.hw },
1863 .flags = CLK_SET_RATE_PARENT,
1864 .ops = &clk_branch2_ops,
1869 static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src[] = {
1870 F(24000000, P_XO, 1, 0, 0),
1871 F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1872 F(100000000, P_GPLL0, 8, 0, 0),
1873 F(133333333, P_GPLL0, 6, 0, 0),
1874 F(160000000, P_GPLL0, 5, 0, 0),
1875 F(200000000, P_GPLL0, 4, 0, 0),
1876 F(266666667, P_GPLL0, 3, 0, 0),
1880 static struct clk_rcg2 system_noc_bfdcd_clk_src = {
1881 .cmd_rcgr = 0x26004,
1882 .freq_tbl = ftbl_system_noc_bfdcd_clk_src,
1884 .parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
1885 .clkr.hw.init = &(struct clk_init_data){
1886 .name = "system_noc_bfdcd_clk_src",
1887 .parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
1889 .ops = &clk_rcg2_ops,
1893 static const struct freq_tbl ftbl_ubi32_mem_noc_bfdcd_clk_src[] = {
1894 F(24000000, P_XO, 1, 0, 0),
1895 F(307670000, P_BIAS_PLL_NSS_NOC, 1.5, 0, 0),
1896 F(533333333, P_GPLL0, 1.5, 0, 0),
1900 static const struct clk_parent_data
1901 gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk[] = {
1902 { .fw_name = "xo" },
1903 { .hw = &gpll0.clkr.hw },
1904 { .hw = &gpll2.clkr.hw },
1905 { .fw_name = "bias_pll_nss_noc_clk" },
1908 static const struct parent_map gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk_map[] = {
1912 { P_BIAS_PLL_NSS_NOC, 4 },
1915 static struct clk_rcg2 ubi32_mem_noc_bfdcd_clk_src = {
1916 .cmd_rcgr = 0x68088,
1917 .freq_tbl = ftbl_ubi32_mem_noc_bfdcd_clk_src,
1919 .parent_map = gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk_map,
1920 .clkr.hw.init = &(struct clk_init_data){
1921 .name = "ubi32_mem_noc_bfdcd_clk_src",
1922 .parent_data = gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk,
1924 .ops = &clk_rcg2_ops,
1928 static struct clk_branch gcc_apss_axi_clk = {
1929 .halt_reg = 0x46020,
1930 .halt_check = BRANCH_HALT_VOTED,
1932 .enable_reg = 0x0b004,
1933 .enable_mask = BIT(13),
1934 .hw.init = &(struct clk_init_data){
1935 .name = "gcc_apss_axi_clk",
1936 .parent_hws = (const struct clk_hw *[]){
1937 &apss_axi_clk_src.clkr.hw },
1939 .flags = CLK_SET_RATE_PARENT,
1940 .ops = &clk_branch2_ops,
1945 static struct clk_branch gcc_blsp1_ahb_clk = {
1946 .halt_reg = 0x01008,
1947 .halt_check = BRANCH_HALT_VOTED,
1949 .enable_reg = 0x0b004,
1950 .enable_mask = BIT(10),
1951 .hw.init = &(struct clk_init_data){
1952 .name = "gcc_blsp1_ahb_clk",
1953 .parent_hws = (const struct clk_hw *[]){
1954 &pcnoc_bfdcd_clk_src.clkr.hw },
1956 .flags = CLK_SET_RATE_PARENT,
1957 .ops = &clk_branch2_ops,
1962 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1963 .halt_reg = 0x02008,
1965 .enable_reg = 0x02008,
1966 .enable_mask = BIT(0),
1967 .hw.init = &(struct clk_init_data){
1968 .name = "gcc_blsp1_qup1_i2c_apps_clk",
1969 .parent_hws = (const struct clk_hw *[]){
1970 &blsp1_qup1_i2c_apps_clk_src.clkr.hw },
1972 .flags = CLK_SET_RATE_PARENT,
1973 .ops = &clk_branch2_ops,
1978 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1979 .halt_reg = 0x02004,
1981 .enable_reg = 0x02004,
1982 .enable_mask = BIT(0),
1983 .hw.init = &(struct clk_init_data){
1984 .name = "gcc_blsp1_qup1_spi_apps_clk",
1985 .parent_hws = (const struct clk_hw *[]){
1986 &blsp1_qup1_spi_apps_clk_src.clkr.hw },
1988 .flags = CLK_SET_RATE_PARENT,
1989 .ops = &clk_branch2_ops,
1994 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1995 .halt_reg = 0x03010,
1997 .enable_reg = 0x03010,
1998 .enable_mask = BIT(0),
1999 .hw.init = &(struct clk_init_data){
2000 .name = "gcc_blsp1_qup2_i2c_apps_clk",
2001 .parent_hws = (const struct clk_hw *[]){
2002 &blsp1_qup2_i2c_apps_clk_src.clkr.hw },
2004 .flags = CLK_SET_RATE_PARENT,
2005 .ops = &clk_branch2_ops,
2010 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
2011 .halt_reg = 0x0300c,
2013 .enable_reg = 0x0300c,
2014 .enable_mask = BIT(0),
2015 .hw.init = &(struct clk_init_data){
2016 .name = "gcc_blsp1_qup2_spi_apps_clk",
2017 .parent_hws = (const struct clk_hw *[]){
2018 &blsp1_qup2_spi_apps_clk_src.clkr.hw },
2020 .flags = CLK_SET_RATE_PARENT,
2021 .ops = &clk_branch2_ops,
2026 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
2027 .halt_reg = 0x04010,
2029 .enable_reg = 0x04010,
2030 .enable_mask = BIT(0),
2031 .hw.init = &(struct clk_init_data){
2032 .name = "gcc_blsp1_qup3_i2c_apps_clk",
2033 .parent_hws = (const struct clk_hw *[]){
2034 &blsp1_qup3_i2c_apps_clk_src.clkr.hw },
2036 .flags = CLK_SET_RATE_PARENT,
2037 .ops = &clk_branch2_ops,
2042 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
2043 .halt_reg = 0x0400c,
2045 .enable_reg = 0x0400c,
2046 .enable_mask = BIT(0),
2047 .hw.init = &(struct clk_init_data){
2048 .name = "gcc_blsp1_qup3_spi_apps_clk",
2049 .parent_hws = (const struct clk_hw *[]){
2050 &blsp1_qup3_spi_apps_clk_src.clkr.hw },
2052 .flags = CLK_SET_RATE_PARENT,
2053 .ops = &clk_branch2_ops,
2058 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
2059 .halt_reg = 0x05010,
2061 .enable_reg = 0x05010,
2062 .enable_mask = BIT(0),
2063 .hw.init = &(struct clk_init_data){
2064 .name = "gcc_blsp1_qup4_i2c_apps_clk",
2065 .parent_hws = (const struct clk_hw *[]){
2066 &blsp1_qup4_i2c_apps_clk_src.clkr.hw },
2068 .flags = CLK_SET_RATE_PARENT,
2069 .ops = &clk_branch2_ops,
2074 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
2075 .halt_reg = 0x0500c,
2077 .enable_reg = 0x0500c,
2078 .enable_mask = BIT(0),
2079 .hw.init = &(struct clk_init_data){
2080 .name = "gcc_blsp1_qup4_spi_apps_clk",
2081 .parent_hws = (const struct clk_hw *[]){
2082 &blsp1_qup4_spi_apps_clk_src.clkr.hw },
2084 .flags = CLK_SET_RATE_PARENT,
2085 .ops = &clk_branch2_ops,
2090 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
2091 .halt_reg = 0x06010,
2093 .enable_reg = 0x06010,
2094 .enable_mask = BIT(0),
2095 .hw.init = &(struct clk_init_data){
2096 .name = "gcc_blsp1_qup5_i2c_apps_clk",
2097 .parent_hws = (const struct clk_hw *[]){
2098 &blsp1_qup5_i2c_apps_clk_src.clkr.hw },
2100 .flags = CLK_SET_RATE_PARENT,
2101 .ops = &clk_branch2_ops,
2106 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
2107 .halt_reg = 0x0600c,
2109 .enable_reg = 0x0600c,
2110 .enable_mask = BIT(0),
2111 .hw.init = &(struct clk_init_data){
2112 .name = "gcc_blsp1_qup5_spi_apps_clk",
2113 .parent_hws = (const struct clk_hw *[]){
2114 &blsp1_qup5_spi_apps_clk_src.clkr.hw },
2116 .flags = CLK_SET_RATE_PARENT,
2117 .ops = &clk_branch2_ops,
2122 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
2123 .halt_reg = 0x07010,
2125 .enable_reg = 0x07010,
2126 .enable_mask = BIT(0),
2127 .hw.init = &(struct clk_init_data){
2128 .name = "gcc_blsp1_qup6_i2c_apps_clk",
2129 .parent_hws = (const struct clk_hw *[]){
2130 &blsp1_qup6_i2c_apps_clk_src.clkr.hw },
2133 * RPM uses QUP6 I2C to communicate with the external
2134 * PMIC so it must not be disabled.
2136 .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
2137 .ops = &clk_branch2_ops,
2142 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
2143 .halt_reg = 0x0700c,
2145 .enable_reg = 0x0700c,
2146 .enable_mask = BIT(0),
2147 .hw.init = &(struct clk_init_data){
2148 .name = "gcc_blsp1_qup6_spi_apps_clk",
2149 .parent_hws = (const struct clk_hw *[]){
2150 &blsp1_qup6_spi_apps_clk_src.clkr.hw },
2152 .flags = CLK_SET_RATE_PARENT,
2153 .ops = &clk_branch2_ops,
2158 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
2159 .halt_reg = 0x0203c,
2161 .enable_reg = 0x0203c,
2162 .enable_mask = BIT(0),
2163 .hw.init = &(struct clk_init_data){
2164 .name = "gcc_blsp1_uart1_apps_clk",
2165 .parent_hws = (const struct clk_hw *[]){
2166 &blsp1_uart1_apps_clk_src.clkr.hw },
2168 .flags = CLK_SET_RATE_PARENT,
2169 .ops = &clk_branch2_ops,
2174 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
2175 .halt_reg = 0x0302c,
2177 .enable_reg = 0x0302c,
2178 .enable_mask = BIT(0),
2179 .hw.init = &(struct clk_init_data){
2180 .name = "gcc_blsp1_uart2_apps_clk",
2181 .parent_hws = (const struct clk_hw *[]){
2182 &blsp1_uart2_apps_clk_src.clkr.hw },
2184 .flags = CLK_SET_RATE_PARENT,
2185 .ops = &clk_branch2_ops,
2190 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
2191 .halt_reg = 0x0402c,
2193 .enable_reg = 0x0402c,
2194 .enable_mask = BIT(0),
2195 .hw.init = &(struct clk_init_data){
2196 .name = "gcc_blsp1_uart3_apps_clk",
2197 .parent_hws = (const struct clk_hw *[]){
2198 &blsp1_uart3_apps_clk_src.clkr.hw },
2200 .flags = CLK_SET_RATE_PARENT,
2201 .ops = &clk_branch2_ops,
2206 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
2207 .halt_reg = 0x0502c,
2209 .enable_reg = 0x0502c,
2210 .enable_mask = BIT(0),
2211 .hw.init = &(struct clk_init_data){
2212 .name = "gcc_blsp1_uart4_apps_clk",
2213 .parent_hws = (const struct clk_hw *[]){
2214 &blsp1_uart4_apps_clk_src.clkr.hw },
2216 .flags = CLK_SET_RATE_PARENT,
2217 .ops = &clk_branch2_ops,
2222 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
2223 .halt_reg = 0x0602c,
2225 .enable_reg = 0x0602c,
2226 .enable_mask = BIT(0),
2227 .hw.init = &(struct clk_init_data){
2228 .name = "gcc_blsp1_uart5_apps_clk",
2229 .parent_hws = (const struct clk_hw *[]){
2230 &blsp1_uart5_apps_clk_src.clkr.hw },
2232 .flags = CLK_SET_RATE_PARENT,
2233 .ops = &clk_branch2_ops,
2238 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
2239 .halt_reg = 0x0702c,
2241 .enable_reg = 0x0702c,
2242 .enable_mask = BIT(0),
2243 .hw.init = &(struct clk_init_data){
2244 .name = "gcc_blsp1_uart6_apps_clk",
2245 .parent_hws = (const struct clk_hw *[]){
2246 &blsp1_uart6_apps_clk_src.clkr.hw },
2248 .flags = CLK_SET_RATE_PARENT,
2249 .ops = &clk_branch2_ops,
2254 static struct clk_branch gcc_crypto_ahb_clk = {
2255 .halt_reg = 0x16024,
2256 .halt_check = BRANCH_HALT_VOTED,
2258 .enable_reg = 0x0b004,
2259 .enable_mask = BIT(0),
2260 .hw.init = &(struct clk_init_data){
2261 .name = "gcc_crypto_ahb_clk",
2262 .parent_hws = (const struct clk_hw *[]){
2263 &pcnoc_bfdcd_clk_src.clkr.hw },
2265 .flags = CLK_SET_RATE_PARENT,
2266 .ops = &clk_branch2_ops,
2271 static struct clk_branch gcc_crypto_axi_clk = {
2272 .halt_reg = 0x16020,
2273 .halt_check = BRANCH_HALT_VOTED,
2275 .enable_reg = 0x0b004,
2276 .enable_mask = BIT(1),
2277 .hw.init = &(struct clk_init_data){
2278 .name = "gcc_crypto_axi_clk",
2279 .parent_hws = (const struct clk_hw *[]){
2280 &pcnoc_bfdcd_clk_src.clkr.hw },
2282 .flags = CLK_SET_RATE_PARENT,
2283 .ops = &clk_branch2_ops,
2288 static struct clk_branch gcc_crypto_clk = {
2289 .halt_reg = 0x1601c,
2290 .halt_check = BRANCH_HALT_VOTED,
2292 .enable_reg = 0x0b004,
2293 .enable_mask = BIT(2),
2294 .hw.init = &(struct clk_init_data){
2295 .name = "gcc_crypto_clk",
2296 .parent_hws = (const struct clk_hw *[]){
2297 &crypto_clk_src.clkr.hw },
2299 .flags = CLK_SET_RATE_PARENT,
2300 .ops = &clk_branch2_ops,
2305 static struct clk_fixed_factor gpll6_out_main_div2 = {
2308 .hw.init = &(struct clk_init_data){
2309 .name = "gpll6_out_main_div2",
2310 .parent_hws = (const struct clk_hw *[]){
2311 &gpll6_main.clkr.hw },
2313 .ops = &clk_fixed_factor_ops,
2314 .flags = CLK_SET_RATE_PARENT,
2318 static struct clk_branch gcc_xo_clk = {
2319 .halt_reg = 0x30030,
2321 .enable_reg = 0x30030,
2322 .enable_mask = BIT(0),
2323 .hw.init = &(struct clk_init_data){
2324 .name = "gcc_xo_clk",
2325 .parent_hws = (const struct clk_hw *[]){
2326 &gcc_xo_clk_src.clkr.hw },
2328 .flags = CLK_SET_RATE_PARENT,
2329 .ops = &clk_branch2_ops,
2334 static struct clk_branch gcc_gp1_clk = {
2335 .halt_reg = 0x08000,
2337 .enable_reg = 0x08000,
2338 .enable_mask = BIT(0),
2339 .hw.init = &(struct clk_init_data){
2340 .name = "gcc_gp1_clk",
2341 .parent_hws = (const struct clk_hw *[]){
2342 &gp1_clk_src.clkr.hw },
2344 .flags = CLK_SET_RATE_PARENT,
2345 .ops = &clk_branch2_ops,
2350 static struct clk_branch gcc_gp2_clk = {
2351 .halt_reg = 0x09000,
2353 .enable_reg = 0x09000,
2354 .enable_mask = BIT(0),
2355 .hw.init = &(struct clk_init_data){
2356 .name = "gcc_gp2_clk",
2357 .parent_hws = (const struct clk_hw *[]){
2358 &gp2_clk_src.clkr.hw },
2360 .flags = CLK_SET_RATE_PARENT,
2361 .ops = &clk_branch2_ops,
2366 static struct clk_branch gcc_gp3_clk = {
2367 .halt_reg = 0x0a000,
2369 .enable_reg = 0x0a000,
2370 .enable_mask = BIT(0),
2371 .hw.init = &(struct clk_init_data){
2372 .name = "gcc_gp3_clk",
2373 .parent_hws = (const struct clk_hw *[]){
2374 &gp3_clk_src.clkr.hw },
2376 .flags = CLK_SET_RATE_PARENT,
2377 .ops = &clk_branch2_ops,
2382 static struct clk_branch gcc_mdio_ahb_clk = {
2383 .halt_reg = 0x58004,
2385 .enable_reg = 0x58004,
2386 .enable_mask = BIT(0),
2387 .hw.init = &(struct clk_init_data){
2388 .name = "gcc_mdio_ahb_clk",
2389 .parent_hws = (const struct clk_hw *[]){
2390 &pcnoc_bfdcd_clk_src.clkr.hw },
2392 .flags = CLK_SET_RATE_PARENT,
2393 .ops = &clk_branch2_ops,
2398 static struct clk_branch gcc_crypto_ppe_clk = {
2399 .halt_reg = 0x68310,
2401 .enable_reg = 0x68310,
2402 .enable_mask = BIT(0),
2403 .hw.init = &(struct clk_init_data){
2404 .name = "gcc_crypto_ppe_clk",
2405 .parent_hws = (const struct clk_hw *[]){
2406 &nss_ppe_clk_src.clkr.hw },
2408 .flags = CLK_SET_RATE_PARENT,
2409 .ops = &clk_branch2_ops,
2414 static struct clk_branch gcc_nss_ce_apb_clk = {
2415 .halt_reg = 0x68174,
2417 .enable_reg = 0x68174,
2418 .enable_mask = BIT(0),
2419 .hw.init = &(struct clk_init_data){
2420 .name = "gcc_nss_ce_apb_clk",
2421 .parent_hws = (const struct clk_hw *[]){
2422 &nss_ce_clk_src.clkr.hw },
2424 .flags = CLK_SET_RATE_PARENT,
2425 .ops = &clk_branch2_ops,
2430 static struct clk_branch gcc_nss_ce_axi_clk = {
2431 .halt_reg = 0x68170,
2433 .enable_reg = 0x68170,
2434 .enable_mask = BIT(0),
2435 .hw.init = &(struct clk_init_data){
2436 .name = "gcc_nss_ce_axi_clk",
2437 .parent_hws = (const struct clk_hw *[]){
2438 &nss_ce_clk_src.clkr.hw },
2440 .flags = CLK_SET_RATE_PARENT,
2441 .ops = &clk_branch2_ops,
2446 static struct clk_branch gcc_nss_cfg_clk = {
2447 .halt_reg = 0x68160,
2449 .enable_reg = 0x68160,
2450 .enable_mask = BIT(0),
2451 .hw.init = &(struct clk_init_data){
2452 .name = "gcc_nss_cfg_clk",
2453 .parent_hws = (const struct clk_hw *[]){
2454 &pcnoc_bfdcd_clk_src.clkr.hw },
2456 .flags = CLK_SET_RATE_PARENT,
2457 .ops = &clk_branch2_ops,
2462 static struct clk_branch gcc_nss_crypto_clk = {
2463 .halt_reg = 0x68164,
2465 .enable_reg = 0x68164,
2466 .enable_mask = BIT(0),
2467 .hw.init = &(struct clk_init_data){
2468 .name = "gcc_nss_crypto_clk",
2469 .parent_hws = (const struct clk_hw *[]){
2470 &nss_crypto_clk_src.clkr.hw },
2472 .flags = CLK_SET_RATE_PARENT,
2473 .ops = &clk_branch2_ops,
2478 static struct clk_branch gcc_nss_csr_clk = {
2479 .halt_reg = 0x68318,
2481 .enable_reg = 0x68318,
2482 .enable_mask = BIT(0),
2483 .hw.init = &(struct clk_init_data){
2484 .name = "gcc_nss_csr_clk",
2485 .parent_hws = (const struct clk_hw *[]){
2486 &nss_ce_clk_src.clkr.hw },
2488 .flags = CLK_SET_RATE_PARENT,
2489 .ops = &clk_branch2_ops,
2494 static struct clk_branch gcc_nss_edma_cfg_clk = {
2495 .halt_reg = 0x6819C,
2497 .enable_reg = 0x6819C,
2498 .enable_mask = BIT(0),
2499 .hw.init = &(struct clk_init_data){
2500 .name = "gcc_nss_edma_cfg_clk",
2501 .parent_hws = (const struct clk_hw *[]){
2502 &nss_ppe_clk_src.clkr.hw },
2504 .flags = CLK_SET_RATE_PARENT,
2505 .ops = &clk_branch2_ops,
2510 static struct clk_branch gcc_nss_edma_clk = {
2511 .halt_reg = 0x68198,
2513 .enable_reg = 0x68198,
2514 .enable_mask = BIT(0),
2515 .hw.init = &(struct clk_init_data){
2516 .name = "gcc_nss_edma_clk",
2517 .parent_hws = (const struct clk_hw *[]){
2518 &nss_ppe_clk_src.clkr.hw },
2520 .flags = CLK_SET_RATE_PARENT,
2521 .ops = &clk_branch2_ops,
2526 static struct clk_branch gcc_nss_noc_clk = {
2527 .halt_reg = 0x68168,
2529 .enable_reg = 0x68168,
2530 .enable_mask = BIT(0),
2531 .hw.init = &(struct clk_init_data){
2532 .name = "gcc_nss_noc_clk",
2533 .parent_hws = (const struct clk_hw *[]){
2534 &snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2536 .flags = CLK_SET_RATE_PARENT,
2537 .ops = &clk_branch2_ops,
2542 static struct clk_branch gcc_ubi0_utcm_clk = {
2543 .halt_reg = 0x2606c,
2545 .enable_reg = 0x2606c,
2546 .enable_mask = BIT(0),
2547 .hw.init = &(struct clk_init_data){
2548 .name = "gcc_ubi0_utcm_clk",
2549 .parent_hws = (const struct clk_hw *[]){
2550 &snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2552 .flags = CLK_SET_RATE_PARENT,
2553 .ops = &clk_branch2_ops,
2558 static struct clk_branch gcc_snoc_nssnoc_clk = {
2559 .halt_reg = 0x26070,
2561 .enable_reg = 0x26070,
2562 .enable_mask = BIT(0),
2563 .hw.init = &(struct clk_init_data){
2564 .name = "gcc_snoc_nssnoc_clk",
2565 .parent_hws = (const struct clk_hw *[]){
2566 &snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2568 .flags = CLK_SET_RATE_PARENT,
2569 .ops = &clk_branch2_ops,
2574 static const struct freq_tbl ftbl_wcss_ahb_clk_src[] = {
2575 F(24000000, P_XO, 1, 0, 0),
2576 F(133333333, P_GPLL0, 6, 0, 0),
2580 static const struct freq_tbl ftbl_q6_axi_clk_src[] = {
2581 F(24000000, P_XO, 1, 0, 0),
2582 F(400000000, P_GPLL0, 2, 0, 0),
2586 static struct clk_rcg2 wcss_ahb_clk_src = {
2587 .cmd_rcgr = 0x59020,
2588 .freq_tbl = ftbl_wcss_ahb_clk_src,
2590 .parent_map = gcc_xo_gpll0_map,
2591 .clkr.hw.init = &(struct clk_init_data){
2592 .name = "wcss_ahb_clk_src",
2593 .parent_data = gcc_xo_gpll0,
2595 .ops = &clk_rcg2_ops,
2599 static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll4_gpll6[] = {
2600 { .fw_name = "xo" },
2601 { .hw = &gpll0.clkr.hw },
2602 { .hw = &gpll2.clkr.hw },
2603 { .hw = &gpll4.clkr.hw },
2604 { .hw = &gpll6.clkr.hw },
2607 static const struct parent_map gcc_xo_gpll0_gpll2_gpll4_gpll6_map[] = {
2615 static struct clk_rcg2 q6_axi_clk_src = {
2616 .cmd_rcgr = 0x59120,
2617 .freq_tbl = ftbl_q6_axi_clk_src,
2619 .parent_map = gcc_xo_gpll0_gpll2_gpll4_gpll6_map,
2620 .clkr.hw.init = &(struct clk_init_data){
2621 .name = "q6_axi_clk_src",
2622 .parent_data = gcc_xo_gpll0_gpll2_gpll4_gpll6,
2624 .ops = &clk_rcg2_ops,
2628 static const struct freq_tbl ftbl_lpass_core_axim_clk_src[] = {
2629 F(24000000, P_XO, 1, 0, 0),
2630 F(100000000, P_GPLL0, 8, 0, 0),
2634 static struct clk_rcg2 lpass_core_axim_clk_src = {
2635 .cmd_rcgr = 0x1F020,
2636 .freq_tbl = ftbl_lpass_core_axim_clk_src,
2638 .parent_map = gcc_xo_gpll0_map,
2639 .clkr.hw.init = &(struct clk_init_data){
2640 .name = "lpass_core_axim_clk_src",
2641 .parent_data = gcc_xo_gpll0,
2643 .ops = &clk_rcg2_ops,
2647 static const struct freq_tbl ftbl_lpass_snoc_cfg_clk_src[] = {
2648 F(24000000, P_XO, 1, 0, 0),
2649 F(266666667, P_GPLL0, 3, 0, 0),
2653 static struct clk_rcg2 lpass_snoc_cfg_clk_src = {
2654 .cmd_rcgr = 0x1F040,
2655 .freq_tbl = ftbl_lpass_snoc_cfg_clk_src,
2657 .parent_map = gcc_xo_gpll0_map,
2658 .clkr.hw.init = &(struct clk_init_data){
2659 .name = "lpass_snoc_cfg_clk_src",
2660 .parent_data = gcc_xo_gpll0,
2662 .ops = &clk_rcg2_ops,
2666 static const struct freq_tbl ftbl_lpass_q6_axim_clk_src[] = {
2667 F(24000000, P_XO, 1, 0, 0),
2668 F(400000000, P_GPLL0, 2, 0, 0),
2672 static struct clk_rcg2 lpass_q6_axim_clk_src = {
2673 .cmd_rcgr = 0x1F008,
2674 .freq_tbl = ftbl_lpass_q6_axim_clk_src,
2676 .parent_map = gcc_xo_gpll0_map,
2677 .clkr.hw.init = &(struct clk_init_data){
2678 .name = "lpass_q6_axim_clk_src",
2679 .parent_data = gcc_xo_gpll0,
2681 .ops = &clk_rcg2_ops,
2685 static struct freq_tbl ftbl_rbcpr_wcss_clk_src[] = {
2686 F(24000000, P_XO, 1, 0, 0),
2687 F(50000000, P_GPLL0, 16, 0, 0),
2691 static struct clk_rcg2 rbcpr_wcss_clk_src = {
2692 .cmd_rcgr = 0x3a00c,
2693 .freq_tbl = ftbl_rbcpr_wcss_clk_src,
2695 .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
2696 .clkr.hw.init = &(struct clk_init_data){
2697 .name = "rbcpr_wcss_clk_src",
2698 .parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
2700 .ops = &clk_rcg2_ops,
2704 static struct clk_branch gcc_lpass_core_axim_clk = {
2705 .halt_reg = 0x1F028,
2707 .enable_reg = 0x1F028,
2708 .enable_mask = BIT(0),
2709 .hw.init = &(struct clk_init_data){
2710 .name = "gcc_lpass_core_axim_clk",
2711 .parent_hws = (const struct clk_hw *[]){
2712 &lpass_core_axim_clk_src.clkr.hw },
2714 .flags = CLK_SET_RATE_PARENT,
2715 .ops = &clk_branch2_ops,
2720 static struct clk_branch gcc_lpass_snoc_cfg_clk = {
2721 .halt_reg = 0x1F048,
2723 .enable_reg = 0x1F048,
2724 .enable_mask = BIT(0),
2725 .hw.init = &(struct clk_init_data){
2726 .name = "gcc_lpass_snoc_cfg_clk",
2727 .parent_hws = (const struct clk_hw *[]){
2728 &lpass_snoc_cfg_clk_src.clkr.hw },
2730 .flags = CLK_SET_RATE_PARENT,
2731 .ops = &clk_branch2_ops,
2736 static struct clk_branch gcc_lpass_q6_axim_clk = {
2737 .halt_reg = 0x1F010,
2739 .enable_reg = 0x1F010,
2740 .enable_mask = BIT(0),
2741 .hw.init = &(struct clk_init_data){
2742 .name = "gcc_lpass_q6_axim_clk",
2743 .parent_hws = (const struct clk_hw *[]){
2744 &lpass_q6_axim_clk_src.clkr.hw },
2746 .flags = CLK_SET_RATE_PARENT,
2747 .ops = &clk_branch2_ops,
2752 static struct clk_branch gcc_lpass_q6_atbm_at_clk = {
2753 .halt_reg = 0x1F018,
2755 .enable_reg = 0x1F018,
2756 .enable_mask = BIT(0),
2757 .hw.init = &(struct clk_init_data){
2758 .name = "gcc_lpass_q6_atbm_at_clk",
2759 .parent_hws = (const struct clk_hw *[]){
2760 &qdss_at_clk_src.clkr.hw },
2762 .flags = CLK_SET_RATE_PARENT,
2763 .ops = &clk_branch2_ops,
2768 static struct clk_branch gcc_lpass_q6_pclkdbg_clk = {
2769 .halt_reg = 0x1F01C,
2771 .enable_reg = 0x1F01C,
2772 .enable_mask = BIT(0),
2773 .hw.init = &(struct clk_init_data){
2774 .name = "gcc_lpass_q6_pclkdbg_clk",
2775 .parent_hws = (const struct clk_hw *[]){
2776 &qdss_dap_sync_clk_src.hw },
2778 .flags = CLK_SET_RATE_PARENT,
2779 .ops = &clk_branch2_ops,
2784 static struct clk_branch gcc_lpass_q6ss_tsctr_1to2_clk = {
2785 .halt_reg = 0x1F014,
2787 .enable_reg = 0x1F014,
2788 .enable_mask = BIT(0),
2789 .hw.init = &(struct clk_init_data){
2790 .name = "gcc_lpass_q6ss_tsctr_1to2_clk",
2791 .parent_hws = (const struct clk_hw *[]){
2792 &qdss_tsctr_div2_clk_src.hw },
2794 .flags = CLK_SET_RATE_PARENT,
2795 .ops = &clk_branch2_ops,
2800 static struct clk_branch gcc_lpass_q6ss_trig_clk = {
2801 .halt_reg = 0x1F038,
2803 .enable_reg = 0x1F038,
2804 .enable_mask = BIT(0),
2805 .hw.init = &(struct clk_init_data){
2806 .name = "gcc_lpass_q6ss_trig_clk",
2807 .parent_hws = (const struct clk_hw *[]){
2808 &qdss_dap_sync_clk_src.hw },
2810 .flags = CLK_SET_RATE_PARENT,
2811 .ops = &clk_branch2_ops,
2816 static struct clk_branch gcc_lpass_tbu_clk = {
2817 .halt_reg = 0x12094,
2819 .enable_reg = 0xb00c,
2820 .enable_mask = BIT(10),
2821 .hw.init = &(struct clk_init_data){
2822 .name = "gcc_lpass_tbu_clk",
2823 .parent_hws = (const struct clk_hw *[]){
2824 &lpass_q6_axim_clk_src.clkr.hw },
2826 .flags = CLK_SET_RATE_PARENT,
2827 .ops = &clk_branch2_ops,
2832 static struct clk_branch gcc_pcnoc_lpass_clk = {
2833 .halt_reg = 0x27020,
2835 .enable_reg = 0x27020,
2836 .enable_mask = BIT(0),
2837 .hw.init = &(struct clk_init_data){
2838 .name = "gcc_pcnoc_lpass_clk",
2839 .parent_hws = (const struct clk_hw *[]){
2840 &lpass_core_axim_clk_src.clkr.hw },
2842 .flags = CLK_SET_RATE_PARENT,
2843 .ops = &clk_branch2_ops,
2848 static struct clk_branch gcc_mem_noc_lpass_clk = {
2849 .halt_reg = 0x1D044,
2851 .enable_reg = 0x1D044,
2852 .enable_mask = BIT(0),
2853 .hw.init = &(struct clk_init_data){
2854 .name = "gcc_mem_noc_lpass_clk",
2855 .parent_hws = (const struct clk_hw *[]){
2856 &lpass_q6_axim_clk_src.clkr.hw },
2858 .flags = CLK_SET_RATE_PARENT,
2859 .ops = &clk_branch2_ops,
2864 static struct clk_branch gcc_snoc_lpass_cfg_clk = {
2865 .halt_reg = 0x26074,
2867 .enable_reg = 0x26074,
2868 .enable_mask = BIT(0),
2869 .hw.init = &(struct clk_init_data){
2870 .name = "gcc_snoc_lpass_cfg_clk",
2871 .parent_hws = (const struct clk_hw *[]){
2872 &lpass_snoc_cfg_clk_src.clkr.hw },
2874 .flags = CLK_SET_RATE_PARENT,
2875 .ops = &clk_branch2_ops,
2880 static struct clk_branch gcc_mem_noc_ubi32_clk = {
2881 .halt_reg = 0x1D03C,
2883 .enable_reg = 0x1D03C,
2884 .enable_mask = BIT(0),
2885 .hw.init = &(struct clk_init_data){
2886 .name = "gcc_mem_noc_ubi32_clk",
2887 .parent_hws = (const struct clk_hw *[]){
2888 &ubi32_mem_noc_bfdcd_clk_src.clkr.hw },
2890 .flags = CLK_SET_RATE_PARENT,
2891 .ops = &clk_branch2_ops,
2896 static struct clk_branch gcc_nss_port1_rx_clk = {
2897 .halt_reg = 0x68240,
2899 .enable_reg = 0x68240,
2900 .enable_mask = BIT(0),
2901 .hw.init = &(struct clk_init_data){
2902 .name = "gcc_nss_port1_rx_clk",
2903 .parent_hws = (const struct clk_hw *[]){
2904 &nss_port1_rx_div_clk_src.clkr.hw },
2906 .flags = CLK_SET_RATE_PARENT,
2907 .ops = &clk_branch2_ops,
2912 static struct clk_branch gcc_nss_port1_tx_clk = {
2913 .halt_reg = 0x68244,
2915 .enable_reg = 0x68244,
2916 .enable_mask = BIT(0),
2917 .hw.init = &(struct clk_init_data){
2918 .name = "gcc_nss_port1_tx_clk",
2919 .parent_hws = (const struct clk_hw *[]){
2920 &nss_port1_tx_div_clk_src.clkr.hw },
2922 .flags = CLK_SET_RATE_PARENT,
2923 .ops = &clk_branch2_ops,
2928 static struct clk_branch gcc_nss_port2_rx_clk = {
2929 .halt_reg = 0x68248,
2931 .enable_reg = 0x68248,
2932 .enable_mask = BIT(0),
2933 .hw.init = &(struct clk_init_data){
2934 .name = "gcc_nss_port2_rx_clk",
2935 .parent_hws = (const struct clk_hw *[]){
2936 &nss_port2_rx_div_clk_src.clkr.hw },
2938 .flags = CLK_SET_RATE_PARENT,
2939 .ops = &clk_branch2_ops,
2944 static struct clk_branch gcc_nss_port2_tx_clk = {
2945 .halt_reg = 0x6824c,
2947 .enable_reg = 0x6824c,
2948 .enable_mask = BIT(0),
2949 .hw.init = &(struct clk_init_data){
2950 .name = "gcc_nss_port2_tx_clk",
2951 .parent_hws = (const struct clk_hw *[]){
2952 &nss_port2_tx_div_clk_src.clkr.hw },
2954 .flags = CLK_SET_RATE_PARENT,
2955 .ops = &clk_branch2_ops,
2960 static struct clk_branch gcc_nss_port3_rx_clk = {
2961 .halt_reg = 0x68250,
2963 .enable_reg = 0x68250,
2964 .enable_mask = BIT(0),
2965 .hw.init = &(struct clk_init_data){
2966 .name = "gcc_nss_port3_rx_clk",
2967 .parent_hws = (const struct clk_hw *[]){
2968 &nss_port3_rx_div_clk_src.clkr.hw },
2970 .flags = CLK_SET_RATE_PARENT,
2971 .ops = &clk_branch2_ops,
2976 static struct clk_branch gcc_nss_port3_tx_clk = {
2977 .halt_reg = 0x68254,
2979 .enable_reg = 0x68254,
2980 .enable_mask = BIT(0),
2981 .hw.init = &(struct clk_init_data){
2982 .name = "gcc_nss_port3_tx_clk",
2983 .parent_hws = (const struct clk_hw *[]){
2984 &nss_port3_tx_div_clk_src.clkr.hw },
2986 .flags = CLK_SET_RATE_PARENT,
2987 .ops = &clk_branch2_ops,
2992 static struct clk_branch gcc_nss_port4_rx_clk = {
2993 .halt_reg = 0x68258,
2995 .enable_reg = 0x68258,
2996 .enable_mask = BIT(0),
2997 .hw.init = &(struct clk_init_data){
2998 .name = "gcc_nss_port4_rx_clk",
2999 .parent_hws = (const struct clk_hw *[]){
3000 &nss_port4_rx_div_clk_src.clkr.hw },
3002 .flags = CLK_SET_RATE_PARENT,
3003 .ops = &clk_branch2_ops,
3008 static struct clk_branch gcc_nss_port4_tx_clk = {
3009 .halt_reg = 0x6825c,
3011 .enable_reg = 0x6825c,
3012 .enable_mask = BIT(0),
3013 .hw.init = &(struct clk_init_data){
3014 .name = "gcc_nss_port4_tx_clk",
3015 .parent_hws = (const struct clk_hw *[]){
3016 &nss_port4_tx_div_clk_src.clkr.hw },
3018 .flags = CLK_SET_RATE_PARENT,
3019 .ops = &clk_branch2_ops,
3024 static struct clk_branch gcc_nss_port5_rx_clk = {
3025 .halt_reg = 0x68260,
3027 .enable_reg = 0x68260,
3028 .enable_mask = BIT(0),
3029 .hw.init = &(struct clk_init_data){
3030 .name = "gcc_nss_port5_rx_clk",
3031 .parent_hws = (const struct clk_hw *[]){
3032 &nss_port5_rx_div_clk_src.clkr.hw },
3034 .flags = CLK_SET_RATE_PARENT,
3035 .ops = &clk_branch2_ops,
3040 static struct clk_branch gcc_nss_port5_tx_clk = {
3041 .halt_reg = 0x68264,
3043 .enable_reg = 0x68264,
3044 .enable_mask = BIT(0),
3045 .hw.init = &(struct clk_init_data){
3046 .name = "gcc_nss_port5_tx_clk",
3047 .parent_hws = (const struct clk_hw *[]){
3048 &nss_port5_tx_div_clk_src.clkr.hw },
3050 .flags = CLK_SET_RATE_PARENT,
3051 .ops = &clk_branch2_ops,
3056 static struct clk_branch gcc_nss_ppe_cfg_clk = {
3057 .halt_reg = 0x68194,
3059 .enable_reg = 0x68194,
3060 .enable_mask = BIT(0),
3061 .hw.init = &(struct clk_init_data){
3062 .name = "gcc_nss_ppe_cfg_clk",
3063 .parent_hws = (const struct clk_hw *[]){
3064 &nss_ppe_clk_src.clkr.hw },
3066 .flags = CLK_SET_RATE_PARENT,
3067 .ops = &clk_branch2_ops,
3072 static struct clk_branch gcc_nss_ppe_clk = {
3073 .halt_reg = 0x68190,
3075 .enable_reg = 0x68190,
3076 .enable_mask = BIT(0),
3077 .hw.init = &(struct clk_init_data){
3078 .name = "gcc_nss_ppe_clk",
3079 .parent_hws = (const struct clk_hw *[]){
3080 &nss_ppe_clk_src.clkr.hw },
3082 .flags = CLK_SET_RATE_PARENT,
3083 .ops = &clk_branch2_ops,
3088 static struct clk_branch gcc_nss_ppe_ipe_clk = {
3089 .halt_reg = 0x68338,
3091 .enable_reg = 0x68338,
3092 .enable_mask = BIT(0),
3093 .hw.init = &(struct clk_init_data){
3094 .name = "gcc_nss_ppe_ipe_clk",
3095 .parent_hws = (const struct clk_hw *[]){
3096 &nss_ppe_clk_src.clkr.hw },
3098 .flags = CLK_SET_RATE_PARENT,
3099 .ops = &clk_branch2_ops,
3104 static struct clk_branch gcc_nss_ptp_ref_clk = {
3105 .halt_reg = 0x6816C,
3107 .enable_reg = 0x6816C,
3108 .enable_mask = BIT(0),
3109 .hw.init = &(struct clk_init_data){
3110 .name = "gcc_nss_ptp_ref_clk",
3111 .parent_hws = (const struct clk_hw *[]){
3112 &nss_ppe_cdiv_clk_src.hw },
3114 .flags = CLK_SET_RATE_PARENT,
3115 .ops = &clk_branch2_ops,
3120 static struct clk_branch gcc_nssnoc_ce_apb_clk = {
3121 .halt_reg = 0x6830C,
3123 .enable_reg = 0x6830C,
3124 .enable_mask = BIT(0),
3125 .hw.init = &(struct clk_init_data){
3126 .name = "gcc_nssnoc_ce_apb_clk",
3127 .parent_hws = (const struct clk_hw *[]){
3128 &nss_ce_clk_src.clkr.hw },
3130 .flags = CLK_SET_RATE_PARENT,
3131 .ops = &clk_branch2_ops,
3136 static struct clk_branch gcc_nssnoc_ce_axi_clk = {
3137 .halt_reg = 0x68308,
3139 .enable_reg = 0x68308,
3140 .enable_mask = BIT(0),
3141 .hw.init = &(struct clk_init_data){
3142 .name = "gcc_nssnoc_ce_axi_clk",
3143 .parent_hws = (const struct clk_hw *[]){
3144 &nss_ce_clk_src.clkr.hw },
3146 .flags = CLK_SET_RATE_PARENT,
3147 .ops = &clk_branch2_ops,
3152 static struct clk_branch gcc_nssnoc_crypto_clk = {
3153 .halt_reg = 0x68314,
3155 .enable_reg = 0x68314,
3156 .enable_mask = BIT(0),
3157 .hw.init = &(struct clk_init_data){
3158 .name = "gcc_nssnoc_crypto_clk",
3159 .parent_hws = (const struct clk_hw *[]){
3160 &nss_crypto_clk_src.clkr.hw },
3162 .flags = CLK_SET_RATE_PARENT,
3163 .ops = &clk_branch2_ops,
3168 static struct clk_branch gcc_nssnoc_ppe_cfg_clk = {
3169 .halt_reg = 0x68304,
3171 .enable_reg = 0x68304,
3172 .enable_mask = BIT(0),
3173 .hw.init = &(struct clk_init_data){
3174 .name = "gcc_nssnoc_ppe_cfg_clk",
3175 .parent_hws = (const struct clk_hw *[]){
3176 &nss_ppe_clk_src.clkr.hw },
3177 .flags = CLK_SET_RATE_PARENT,
3178 .ops = &clk_branch2_ops,
3183 static struct clk_branch gcc_nssnoc_ppe_clk = {
3184 .halt_reg = 0x68300,
3186 .enable_reg = 0x68300,
3187 .enable_mask = BIT(0),
3188 .hw.init = &(struct clk_init_data){
3189 .name = "gcc_nssnoc_ppe_clk",
3190 .parent_hws = (const struct clk_hw *[]){
3191 &nss_ppe_clk_src.clkr.hw },
3193 .flags = CLK_SET_RATE_PARENT,
3194 .ops = &clk_branch2_ops,
3199 static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {
3200 .halt_reg = 0x68180,
3202 .enable_reg = 0x68180,
3203 .enable_mask = BIT(0),
3204 .hw.init = &(struct clk_init_data){
3205 .name = "gcc_nssnoc_qosgen_ref_clk",
3206 .parent_hws = (const struct clk_hw *[]){
3207 &gcc_xo_clk_src.clkr.hw },
3209 .flags = CLK_SET_RATE_PARENT,
3210 .ops = &clk_branch2_ops,
3215 static struct clk_branch gcc_nssnoc_snoc_clk = {
3216 .halt_reg = 0x68188,
3218 .enable_reg = 0x68188,
3219 .enable_mask = BIT(0),
3220 .hw.init = &(struct clk_init_data){
3221 .name = "gcc_nssnoc_snoc_clk",
3222 .parent_hws = (const struct clk_hw *[]){
3223 &system_noc_bfdcd_clk_src.clkr.hw },
3225 .flags = CLK_SET_RATE_PARENT,
3226 .ops = &clk_branch2_ops,
3231 static struct clk_branch gcc_nssnoc_timeout_ref_clk = {
3232 .halt_reg = 0x68184,
3234 .enable_reg = 0x68184,
3235 .enable_mask = BIT(0),
3236 .hw.init = &(struct clk_init_data){
3237 .name = "gcc_nssnoc_timeout_ref_clk",
3238 .parent_hws = (const struct clk_hw *[]){
3239 &gcc_xo_div4_clk_src.hw },
3241 .flags = CLK_SET_RATE_PARENT,
3242 .ops = &clk_branch2_ops,
3247 static struct clk_branch gcc_nssnoc_ubi0_ahb_clk = {
3248 .halt_reg = 0x68270,
3250 .enable_reg = 0x68270,
3251 .enable_mask = BIT(0),
3252 .hw.init = &(struct clk_init_data){
3253 .name = "gcc_nssnoc_ubi0_ahb_clk",
3254 .parent_hws = (const struct clk_hw *[]){
3255 &nss_ce_clk_src.clkr.hw },
3257 .flags = CLK_SET_RATE_PARENT,
3258 .ops = &clk_branch2_ops,
3263 static struct clk_branch gcc_port1_mac_clk = {
3264 .halt_reg = 0x68320,
3266 .enable_reg = 0x68320,
3267 .enable_mask = BIT(0),
3268 .hw.init = &(struct clk_init_data){
3269 .name = "gcc_port1_mac_clk",
3270 .parent_hws = (const struct clk_hw *[]){
3271 &nss_ppe_clk_src.clkr.hw },
3273 .flags = CLK_SET_RATE_PARENT,
3274 .ops = &clk_branch2_ops,
3279 static struct clk_branch gcc_port2_mac_clk = {
3280 .halt_reg = 0x68324,
3282 .enable_reg = 0x68324,
3283 .enable_mask = BIT(0),
3284 .hw.init = &(struct clk_init_data){
3285 .name = "gcc_port2_mac_clk",
3286 .parent_hws = (const struct clk_hw *[]){
3287 &nss_ppe_clk_src.clkr.hw },
3289 .flags = CLK_SET_RATE_PARENT,
3290 .ops = &clk_branch2_ops,
3295 static struct clk_branch gcc_port3_mac_clk = {
3296 .halt_reg = 0x68328,
3298 .enable_reg = 0x68328,
3299 .enable_mask = BIT(0),
3300 .hw.init = &(struct clk_init_data){
3301 .name = "gcc_port3_mac_clk",
3302 .parent_hws = (const struct clk_hw *[]){
3303 &nss_ppe_clk_src.clkr.hw },
3305 .flags = CLK_SET_RATE_PARENT,
3306 .ops = &clk_branch2_ops,
3311 static struct clk_branch gcc_port4_mac_clk = {
3312 .halt_reg = 0x6832c,
3314 .enable_reg = 0x6832c,
3315 .enable_mask = BIT(0),
3316 .hw.init = &(struct clk_init_data){
3317 .name = "gcc_port4_mac_clk",
3318 .parent_hws = (const struct clk_hw *[]){
3319 &nss_ppe_clk_src.clkr.hw },
3321 .flags = CLK_SET_RATE_PARENT,
3322 .ops = &clk_branch2_ops,
3327 static struct clk_branch gcc_port5_mac_clk = {
3328 .halt_reg = 0x68330,
3330 .enable_reg = 0x68330,
3331 .enable_mask = BIT(0),
3332 .hw.init = &(struct clk_init_data){
3333 .name = "gcc_port5_mac_clk",
3334 .parent_hws = (const struct clk_hw *[]){
3335 &nss_ppe_clk_src.clkr.hw },
3337 .flags = CLK_SET_RATE_PARENT,
3338 .ops = &clk_branch2_ops,
3343 static struct clk_branch gcc_ubi0_ahb_clk = {
3344 .halt_reg = 0x6820C,
3345 .halt_check = BRANCH_HALT_DELAY,
3347 .enable_reg = 0x6820C,
3348 .enable_mask = BIT(0),
3349 .hw.init = &(struct clk_init_data){
3350 .name = "gcc_ubi0_ahb_clk",
3351 .parent_hws = (const struct clk_hw *[]){
3352 &nss_ce_clk_src.clkr.hw },
3354 .flags = CLK_SET_RATE_PARENT,
3355 .ops = &clk_branch2_ops,
3360 static struct clk_branch gcc_ubi0_axi_clk = {
3361 .halt_reg = 0x68200,
3362 .halt_check = BRANCH_HALT_DELAY,
3364 .enable_reg = 0x68200,
3365 .enable_mask = BIT(0),
3366 .hw.init = &(struct clk_init_data){
3367 .name = "gcc_ubi0_axi_clk",
3368 .parent_hws = (const struct clk_hw *[]){
3369 &ubi32_mem_noc_bfdcd_clk_src.clkr.hw },
3371 .flags = CLK_SET_RATE_PARENT,
3372 .ops = &clk_branch2_ops,
3377 static struct clk_branch gcc_ubi0_nc_axi_clk = {
3378 .halt_reg = 0x68204,
3379 .halt_check = BRANCH_HALT_DELAY,
3381 .enable_reg = 0x68204,
3382 .enable_mask = BIT(0),
3383 .hw.init = &(struct clk_init_data){
3384 .name = "gcc_ubi0_nc_axi_clk",
3385 .parent_hws = (const struct clk_hw *[]){
3386 &snoc_nssnoc_bfdcd_clk_src.clkr.hw },
3388 .flags = CLK_SET_RATE_PARENT,
3389 .ops = &clk_branch2_ops,
3394 static struct clk_branch gcc_ubi0_core_clk = {
3395 .halt_reg = 0x68210,
3396 .halt_check = BRANCH_HALT_DELAY,
3398 .enable_reg = 0x68210,
3399 .enable_mask = BIT(0),
3400 .hw.init = &(struct clk_init_data){
3401 .name = "gcc_ubi0_core_clk",
3402 .parent_hws = (const struct clk_hw *[]){
3403 &nss_ubi0_div_clk_src.clkr.hw },
3405 .flags = CLK_SET_RATE_PARENT,
3406 .ops = &clk_branch2_ops,
3411 static struct clk_branch gcc_pcie0_ahb_clk = {
3412 .halt_reg = 0x75010,
3414 .enable_reg = 0x75010,
3415 .enable_mask = BIT(0),
3416 .hw.init = &(struct clk_init_data){
3417 .name = "gcc_pcie0_ahb_clk",
3418 .parent_hws = (const struct clk_hw *[]){
3419 &pcnoc_bfdcd_clk_src.clkr.hw },
3421 .flags = CLK_SET_RATE_PARENT,
3422 .ops = &clk_branch2_ops,
3427 static struct clk_branch gcc_pcie0_aux_clk = {
3428 .halt_reg = 0x75014,
3430 .enable_reg = 0x75014,
3431 .enable_mask = BIT(0),
3432 .hw.init = &(struct clk_init_data){
3433 .name = "gcc_pcie0_aux_clk",
3434 .parent_hws = (const struct clk_hw *[]){
3435 &pcie0_aux_clk_src.clkr.hw },
3437 .flags = CLK_SET_RATE_PARENT,
3438 .ops = &clk_branch2_ops,
3443 static struct clk_branch gcc_pcie0_axi_m_clk = {
3444 .halt_reg = 0x75008,
3446 .enable_reg = 0x75008,
3447 .enable_mask = BIT(0),
3448 .hw.init = &(struct clk_init_data){
3449 .name = "gcc_pcie0_axi_m_clk",
3450 .parent_hws = (const struct clk_hw *[]){
3451 &pcie0_axi_clk_src.clkr.hw },
3453 .flags = CLK_SET_RATE_PARENT,
3454 .ops = &clk_branch2_ops,
3459 static struct clk_branch gcc_pcie0_axi_s_clk = {
3460 .halt_reg = 0x7500c,
3462 .enable_reg = 0x7500c,
3463 .enable_mask = BIT(0),
3464 .hw.init = &(struct clk_init_data){
3465 .name = "gcc_pcie0_axi_s_clk",
3466 .parent_hws = (const struct clk_hw *[]){
3467 &pcie0_axi_clk_src.clkr.hw },
3469 .flags = CLK_SET_RATE_PARENT,
3470 .ops = &clk_branch2_ops,
3475 static struct clk_branch gcc_sys_noc_pcie0_axi_clk = {
3476 .halt_reg = 0x26048,
3478 .enable_reg = 0x26048,
3479 .enable_mask = BIT(0),
3480 .hw.init = &(struct clk_init_data){
3481 .name = "gcc_sys_noc_pcie0_axi_clk",
3482 .parent_hws = (const struct clk_hw *[]){
3483 &pcie0_axi_clk_src.clkr.hw },
3485 .flags = CLK_SET_RATE_PARENT,
3486 .ops = &clk_branch2_ops,
3491 static struct clk_branch gcc_pcie0_pipe_clk = {
3492 .halt_reg = 0x75018,
3493 .halt_check = BRANCH_HALT_DELAY,
3495 .enable_reg = 0x75018,
3496 .enable_mask = BIT(0),
3497 .hw.init = &(struct clk_init_data){
3498 .name = "gcc_pcie0_pipe_clk",
3499 .parent_hws = (const struct clk_hw *[]){
3500 &pcie0_pipe_clk_src.clkr.hw },
3502 .flags = CLK_SET_RATE_PARENT,
3503 .ops = &clk_branch2_ops,
3508 static struct clk_branch gcc_prng_ahb_clk = {
3509 .halt_reg = 0x13004,
3510 .halt_check = BRANCH_HALT_VOTED,
3512 .enable_reg = 0x0b004,
3513 .enable_mask = BIT(8),
3514 .hw.init = &(struct clk_init_data){
3515 .name = "gcc_prng_ahb_clk",
3516 .parent_hws = (const struct clk_hw *[]){
3517 &pcnoc_bfdcd_clk_src.clkr.hw },
3519 .flags = CLK_SET_RATE_PARENT,
3520 .ops = &clk_branch2_ops,
3525 static struct clk_branch gcc_qdss_dap_clk = {
3526 .halt_reg = 0x29084,
3528 .enable_reg = 0x29084,
3529 .enable_mask = BIT(0),
3530 .hw.init = &(struct clk_init_data){
3531 .name = "gcc_qdss_dap_clk",
3532 .parent_hws = (const struct clk_hw *[]){
3533 &qdss_dap_sync_clk_src.hw },
3535 .flags = CLK_SET_RATE_PARENT,
3536 .ops = &clk_branch2_ops,
3541 static struct clk_branch gcc_qpic_ahb_clk = {
3542 .halt_reg = 0x57024,
3544 .enable_reg = 0x57024,
3545 .enable_mask = BIT(0),
3546 .hw.init = &(struct clk_init_data){
3547 .name = "gcc_qpic_ahb_clk",
3548 .parent_hws = (const struct clk_hw *[]){
3549 &pcnoc_bfdcd_clk_src.clkr.hw },
3551 .flags = CLK_SET_RATE_PARENT,
3552 .ops = &clk_branch2_ops,
3557 static struct clk_branch gcc_qpic_clk = {
3558 .halt_reg = 0x57020,
3560 .enable_reg = 0x57020,
3561 .enable_mask = BIT(0),
3562 .hw.init = &(struct clk_init_data){
3563 .name = "gcc_qpic_clk",
3564 .parent_hws = (const struct clk_hw *[]){
3565 &pcnoc_bfdcd_clk_src.clkr.hw },
3567 .flags = CLK_SET_RATE_PARENT,
3568 .ops = &clk_branch2_ops,
3573 static struct clk_branch gcc_sdcc1_ahb_clk = {
3574 .halt_reg = 0x4201c,
3576 .enable_reg = 0x4201c,
3577 .enable_mask = BIT(0),
3578 .hw.init = &(struct clk_init_data){
3579 .name = "gcc_sdcc1_ahb_clk",
3580 .parent_hws = (const struct clk_hw *[]){
3581 &pcnoc_bfdcd_clk_src.clkr.hw },
3583 .flags = CLK_SET_RATE_PARENT,
3584 .ops = &clk_branch2_ops,
3589 static struct clk_branch gcc_sdcc1_apps_clk = {
3590 .halt_reg = 0x42018,
3592 .enable_reg = 0x42018,
3593 .enable_mask = BIT(0),
3594 .hw.init = &(struct clk_init_data){
3595 .name = "gcc_sdcc1_apps_clk",
3596 .parent_hws = (const struct clk_hw *[]){
3597 &sdcc1_apps_clk_src.clkr.hw },
3599 .flags = CLK_SET_RATE_PARENT,
3600 .ops = &clk_branch2_ops,
3605 static struct clk_branch gcc_uniphy0_ahb_clk = {
3606 .halt_reg = 0x56008,
3608 .enable_reg = 0x56008,
3609 .enable_mask = BIT(0),
3610 .hw.init = &(struct clk_init_data){
3611 .name = "gcc_uniphy0_ahb_clk",
3612 .parent_hws = (const struct clk_hw *[]){
3613 &pcnoc_bfdcd_clk_src.clkr.hw },
3615 .flags = CLK_SET_RATE_PARENT,
3616 .ops = &clk_branch2_ops,
3621 static struct clk_branch gcc_uniphy0_port1_rx_clk = {
3622 .halt_reg = 0x56010,
3624 .enable_reg = 0x56010,
3625 .enable_mask = BIT(0),
3626 .hw.init = &(struct clk_init_data){
3627 .name = "gcc_uniphy0_port1_rx_clk",
3628 .parent_hws = (const struct clk_hw *[]){
3629 &nss_port1_rx_div_clk_src.clkr.hw },
3631 .flags = CLK_SET_RATE_PARENT,
3632 .ops = &clk_branch2_ops,
3637 static struct clk_branch gcc_uniphy0_port1_tx_clk = {
3638 .halt_reg = 0x56014,
3640 .enable_reg = 0x56014,
3641 .enable_mask = BIT(0),
3642 .hw.init = &(struct clk_init_data){
3643 .name = "gcc_uniphy0_port1_tx_clk",
3644 .parent_hws = (const struct clk_hw *[]){
3645 &nss_port1_tx_div_clk_src.clkr.hw },
3647 .flags = CLK_SET_RATE_PARENT,
3648 .ops = &clk_branch2_ops,
3653 static struct clk_branch gcc_uniphy0_port2_rx_clk = {
3654 .halt_reg = 0x56018,
3656 .enable_reg = 0x56018,
3657 .enable_mask = BIT(0),
3658 .hw.init = &(struct clk_init_data){
3659 .name = "gcc_uniphy0_port2_rx_clk",
3660 .parent_hws = (const struct clk_hw *[]){
3661 &nss_port2_rx_div_clk_src.clkr.hw },
3663 .flags = CLK_SET_RATE_PARENT,
3664 .ops = &clk_branch2_ops,
3669 static struct clk_branch gcc_uniphy0_port2_tx_clk = {
3670 .halt_reg = 0x5601c,
3672 .enable_reg = 0x5601c,
3673 .enable_mask = BIT(0),
3674 .hw.init = &(struct clk_init_data){
3675 .name = "gcc_uniphy0_port2_tx_clk",
3676 .parent_hws = (const struct clk_hw *[]){
3677 &nss_port2_tx_div_clk_src.clkr.hw },
3679 .flags = CLK_SET_RATE_PARENT,
3680 .ops = &clk_branch2_ops,
3685 static struct clk_branch gcc_uniphy0_port3_rx_clk = {
3686 .halt_reg = 0x56020,
3688 .enable_reg = 0x56020,
3689 .enable_mask = BIT(0),
3690 .hw.init = &(struct clk_init_data){
3691 .name = "gcc_uniphy0_port3_rx_clk",
3692 .parent_hws = (const struct clk_hw *[]){
3693 &nss_port3_rx_div_clk_src.clkr.hw },
3695 .flags = CLK_SET_RATE_PARENT,
3696 .ops = &clk_branch2_ops,
3701 static struct clk_branch gcc_uniphy0_port3_tx_clk = {
3702 .halt_reg = 0x56024,
3704 .enable_reg = 0x56024,
3705 .enable_mask = BIT(0),
3706 .hw.init = &(struct clk_init_data){
3707 .name = "gcc_uniphy0_port3_tx_clk",
3708 .parent_hws = (const struct clk_hw *[]){
3709 &nss_port3_tx_div_clk_src.clkr.hw },
3711 .flags = CLK_SET_RATE_PARENT,
3712 .ops = &clk_branch2_ops,
3717 static struct clk_branch gcc_uniphy0_port4_rx_clk = {
3718 .halt_reg = 0x56028,
3720 .enable_reg = 0x56028,
3721 .enable_mask = BIT(0),
3722 .hw.init = &(struct clk_init_data){
3723 .name = "gcc_uniphy0_port4_rx_clk",
3724 .parent_hws = (const struct clk_hw *[]){
3725 &nss_port4_rx_div_clk_src.clkr.hw },
3727 .flags = CLK_SET_RATE_PARENT,
3728 .ops = &clk_branch2_ops,
3733 static struct clk_branch gcc_uniphy0_port4_tx_clk = {
3734 .halt_reg = 0x5602c,
3736 .enable_reg = 0x5602c,
3737 .enable_mask = BIT(0),
3738 .hw.init = &(struct clk_init_data){
3739 .name = "gcc_uniphy0_port4_tx_clk",
3740 .parent_hws = (const struct clk_hw *[]){
3741 &nss_port4_tx_div_clk_src.clkr.hw },
3743 .flags = CLK_SET_RATE_PARENT,
3744 .ops = &clk_branch2_ops,
3749 static struct clk_branch gcc_uniphy0_port5_rx_clk = {
3750 .halt_reg = 0x56030,
3752 .enable_reg = 0x56030,
3753 .enable_mask = BIT(0),
3754 .hw.init = &(struct clk_init_data){
3755 .name = "gcc_uniphy0_port5_rx_clk",
3756 .parent_hws = (const struct clk_hw *[]){
3757 &nss_port5_rx_div_clk_src.clkr.hw },
3759 .flags = CLK_SET_RATE_PARENT,
3760 .ops = &clk_branch2_ops,
3765 static struct clk_branch gcc_uniphy0_port5_tx_clk = {
3766 .halt_reg = 0x56034,
3768 .enable_reg = 0x56034,
3769 .enable_mask = BIT(0),
3770 .hw.init = &(struct clk_init_data){
3771 .name = "gcc_uniphy0_port5_tx_clk",
3772 .parent_hws = (const struct clk_hw *[]){
3773 &nss_port5_tx_div_clk_src.clkr.hw },
3775 .flags = CLK_SET_RATE_PARENT,
3776 .ops = &clk_branch2_ops,
3781 static struct clk_branch gcc_uniphy0_sys_clk = {
3782 .halt_reg = 0x5600C,
3784 .enable_reg = 0x5600C,
3785 .enable_mask = BIT(0),
3786 .hw.init = &(struct clk_init_data){
3787 .name = "gcc_uniphy0_sys_clk",
3788 .parent_hws = (const struct clk_hw *[]){
3789 &gcc_xo_clk_src.clkr.hw },
3791 .flags = CLK_SET_RATE_PARENT,
3792 .ops = &clk_branch2_ops,
3797 static struct clk_branch gcc_uniphy1_ahb_clk = {
3798 .halt_reg = 0x56108,
3800 .enable_reg = 0x56108,
3801 .enable_mask = BIT(0),
3802 .hw.init = &(struct clk_init_data){
3803 .name = "gcc_uniphy1_ahb_clk",
3804 .parent_hws = (const struct clk_hw *[]){
3805 &pcnoc_bfdcd_clk_src.clkr.hw },
3807 .flags = CLK_SET_RATE_PARENT,
3808 .ops = &clk_branch2_ops,
3813 static struct clk_branch gcc_uniphy1_port5_rx_clk = {
3814 .halt_reg = 0x56110,
3816 .enable_reg = 0x56110,
3817 .enable_mask = BIT(0),
3818 .hw.init = &(struct clk_init_data){
3819 .name = "gcc_uniphy1_port5_rx_clk",
3820 .parent_hws = (const struct clk_hw *[]){
3821 &nss_port5_rx_div_clk_src.clkr.hw },
3823 .flags = CLK_SET_RATE_PARENT,
3824 .ops = &clk_branch2_ops,
3829 static struct clk_branch gcc_uniphy1_port5_tx_clk = {
3830 .halt_reg = 0x56114,
3832 .enable_reg = 0x56114,
3833 .enable_mask = BIT(0),
3834 .hw.init = &(struct clk_init_data){
3835 .name = "gcc_uniphy1_port5_tx_clk",
3836 .parent_hws = (const struct clk_hw *[]){
3837 &nss_port5_tx_div_clk_src.clkr.hw },
3839 .flags = CLK_SET_RATE_PARENT,
3840 .ops = &clk_branch2_ops,
3845 static struct clk_branch gcc_uniphy1_sys_clk = {
3846 .halt_reg = 0x5610C,
3848 .enable_reg = 0x5610C,
3849 .enable_mask = BIT(0),
3850 .hw.init = &(struct clk_init_data){
3851 .name = "gcc_uniphy1_sys_clk",
3852 .parent_hws = (const struct clk_hw *[]){
3853 &gcc_xo_clk_src.clkr.hw },
3855 .flags = CLK_SET_RATE_PARENT,
3856 .ops = &clk_branch2_ops,
3861 static struct clk_branch gcc_usb0_aux_clk = {
3862 .halt_reg = 0x3e044,
3864 .enable_reg = 0x3e044,
3865 .enable_mask = BIT(0),
3866 .hw.init = &(struct clk_init_data){
3867 .name = "gcc_usb0_aux_clk",
3868 .parent_hws = (const struct clk_hw *[]){
3869 &usb0_aux_clk_src.clkr.hw },
3871 .flags = CLK_SET_RATE_PARENT,
3872 .ops = &clk_branch2_ops,
3877 static struct clk_branch gcc_usb0_master_clk = {
3878 .halt_reg = 0x3e000,
3880 .enable_reg = 0x3e000,
3881 .enable_mask = BIT(0),
3882 .hw.init = &(struct clk_init_data){
3883 .name = "gcc_usb0_master_clk",
3884 .parent_hws = (const struct clk_hw *[]){
3885 &usb0_master_clk_src.clkr.hw },
3887 .flags = CLK_SET_RATE_PARENT,
3888 .ops = &clk_branch2_ops,
3893 static struct clk_branch gcc_snoc_bus_timeout2_ahb_clk = {
3894 .halt_reg = 0x47014,
3896 .enable_reg = 0x47014,
3897 .enable_mask = BIT(0),
3898 .hw.init = &(struct clk_init_data){
3899 .name = "gcc_snoc_bus_timeout2_ahb_clk",
3900 .parent_hws = (const struct clk_hw *[]){
3901 &usb0_master_clk_src.clkr.hw },
3903 .flags = CLK_SET_RATE_PARENT,
3904 .ops = &clk_branch2_ops,
3909 static struct clk_rcg2 pcie0_rchng_clk_src = {
3910 .cmd_rcgr = 0x75070,
3911 .freq_tbl = ftbl_pcie_rchng_clk_src,
3913 .parent_map = gcc_xo_gpll0_map,
3914 .clkr.hw.init = &(struct clk_init_data){
3915 .name = "pcie0_rchng_clk_src",
3916 .parent_data = gcc_xo_gpll0,
3918 .ops = &clk_rcg2_ops,
3922 static struct clk_branch gcc_pcie0_rchng_clk = {
3923 .halt_reg = 0x75070,
3925 .enable_reg = 0x75070,
3926 .enable_mask = BIT(1),
3927 .hw.init = &(struct clk_init_data){
3928 .name = "gcc_pcie0_rchng_clk",
3929 .parent_hws = (const struct clk_hw *[]){
3930 &pcie0_rchng_clk_src.clkr.hw },
3932 .flags = CLK_SET_RATE_PARENT,
3933 .ops = &clk_branch2_ops,
3938 static struct clk_branch gcc_pcie0_axi_s_bridge_clk = {
3939 .halt_reg = 0x75048,
3941 .enable_reg = 0x75048,
3942 .enable_mask = BIT(0),
3943 .hw.init = &(struct clk_init_data){
3944 .name = "gcc_pcie0_axi_s_bridge_clk",
3945 .parent_hws = (const struct clk_hw *[]){
3946 &pcie0_axi_clk_src.clkr.hw },
3948 .flags = CLK_SET_RATE_PARENT,
3949 .ops = &clk_branch2_ops,
3954 static struct clk_branch gcc_sys_noc_usb0_axi_clk = {
3955 .halt_reg = 0x26040,
3957 .enable_reg = 0x26040,
3958 .enable_mask = BIT(0),
3959 .hw.init = &(struct clk_init_data){
3960 .name = "gcc_sys_noc_usb0_axi_clk",
3961 .parent_hws = (const struct clk_hw *[]){
3962 &usb0_master_clk_src.clkr.hw },
3964 .flags = CLK_SET_RATE_PARENT,
3965 .ops = &clk_branch2_ops,
3970 static struct clk_branch gcc_usb0_mock_utmi_clk = {
3971 .halt_reg = 0x3e008,
3973 .enable_reg = 0x3e008,
3974 .enable_mask = BIT(0),
3975 .hw.init = &(struct clk_init_data){
3976 .name = "gcc_usb0_mock_utmi_clk",
3977 .parent_hws = (const struct clk_hw *[]){
3978 &usb0_mock_utmi_clk_src.clkr.hw },
3980 .flags = CLK_SET_RATE_PARENT,
3981 .ops = &clk_branch2_ops,
3986 static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {
3987 .halt_reg = 0x3e080,
3989 .enable_reg = 0x3e080,
3990 .enable_mask = BIT(0),
3991 .hw.init = &(struct clk_init_data){
3992 .name = "gcc_usb0_phy_cfg_ahb_clk",
3993 .parent_hws = (const struct clk_hw *[]){
3994 &pcnoc_bfdcd_clk_src.clkr.hw },
3996 .flags = CLK_SET_RATE_PARENT,
3997 .ops = &clk_branch2_ops,
4002 static struct clk_branch gcc_usb0_pipe_clk = {
4003 .halt_reg = 0x3e040,
4004 .halt_check = BRANCH_HALT_DELAY,
4006 .enable_reg = 0x3e040,
4007 .enable_mask = BIT(0),
4008 .hw.init = &(struct clk_init_data){
4009 .name = "gcc_usb0_pipe_clk",
4010 .parent_hws = (const struct clk_hw *[]){
4011 &usb0_pipe_clk_src.clkr.hw },
4013 .flags = CLK_SET_RATE_PARENT,
4014 .ops = &clk_branch2_ops,
4019 static struct clk_branch gcc_usb0_sleep_clk = {
4020 .halt_reg = 0x3e004,
4022 .enable_reg = 0x3e004,
4023 .enable_mask = BIT(0),
4024 .hw.init = &(struct clk_init_data){
4025 .name = "gcc_usb0_sleep_clk",
4026 .parent_hws = (const struct clk_hw *[]){
4027 &gcc_sleep_clk_src.clkr.hw },
4029 .flags = CLK_SET_RATE_PARENT,
4030 .ops = &clk_branch2_ops,
4035 static struct clk_branch gcc_usb1_master_clk = {
4036 .halt_reg = 0x3f000,
4038 .enable_reg = 0x3f000,
4039 .enable_mask = BIT(0),
4040 .hw.init = &(struct clk_init_data){
4041 .name = "gcc_usb1_master_clk",
4042 .parent_hws = (const struct clk_hw *[]){
4043 &pcnoc_bfdcd_clk_src.clkr.hw },
4045 .flags = CLK_SET_RATE_PARENT,
4046 .ops = &clk_branch2_ops,
4051 static struct clk_branch gcc_usb1_mock_utmi_clk = {
4052 .halt_reg = 0x3f008,
4054 .enable_reg = 0x3f008,
4055 .enable_mask = BIT(0),
4056 .hw.init = &(struct clk_init_data){
4057 .name = "gcc_usb1_mock_utmi_clk",
4058 .parent_hws = (const struct clk_hw *[]){
4059 &usb1_mock_utmi_clk_src.clkr.hw },
4061 .flags = CLK_SET_RATE_PARENT,
4062 .ops = &clk_branch2_ops,
4067 static struct clk_branch gcc_usb1_phy_cfg_ahb_clk = {
4068 .halt_reg = 0x3f080,
4070 .enable_reg = 0x3f080,
4071 .enable_mask = BIT(0),
4072 .hw.init = &(struct clk_init_data){
4073 .name = "gcc_usb1_phy_cfg_ahb_clk",
4074 .parent_hws = (const struct clk_hw *[]){
4075 &pcnoc_bfdcd_clk_src.clkr.hw },
4077 .flags = CLK_SET_RATE_PARENT,
4078 .ops = &clk_branch2_ops,
4083 static struct clk_branch gcc_usb1_sleep_clk = {
4084 .halt_reg = 0x3f004,
4086 .enable_reg = 0x3f004,
4087 .enable_mask = BIT(0),
4088 .hw.init = &(struct clk_init_data){
4089 .name = "gcc_usb1_sleep_clk",
4090 .parent_hws = (const struct clk_hw *[]){
4091 &gcc_sleep_clk_src.clkr.hw },
4093 .flags = CLK_SET_RATE_PARENT,
4094 .ops = &clk_branch2_ops,
4099 static struct clk_branch gcc_cmn_12gpll_ahb_clk = {
4100 .halt_reg = 0x56308,
4102 .enable_reg = 0x56308,
4103 .enable_mask = BIT(0),
4104 .hw.init = &(struct clk_init_data){
4105 .name = "gcc_cmn_12gpll_ahb_clk",
4106 .parent_hws = (const struct clk_hw *[]){
4107 &pcnoc_bfdcd_clk_src.clkr.hw },
4109 .flags = CLK_SET_RATE_PARENT,
4110 .ops = &clk_branch2_ops,
4115 static struct clk_branch gcc_cmn_12gpll_sys_clk = {
4116 .halt_reg = 0x5630c,
4118 .enable_reg = 0x5630c,
4119 .enable_mask = BIT(0),
4120 .hw.init = &(struct clk_init_data){
4121 .name = "gcc_cmn_12gpll_sys_clk",
4122 .parent_hws = (const struct clk_hw *[]){
4123 &gcc_xo_clk_src.clkr.hw },
4125 .flags = CLK_SET_RATE_PARENT,
4126 .ops = &clk_branch2_ops,
4131 static struct clk_branch gcc_sdcc1_ice_core_clk = {
4132 .halt_reg = 0x5d014,
4134 .enable_reg = 0x5d014,
4135 .enable_mask = BIT(0),
4136 .hw.init = &(struct clk_init_data){
4137 .name = "gcc_sdcc1_ice_core_clk",
4138 .parent_hws = (const struct clk_hw *[]){
4139 &sdcc1_ice_core_clk_src.clkr.hw },
4141 .flags = CLK_SET_RATE_PARENT,
4142 .ops = &clk_branch2_ops,
4147 static struct clk_branch gcc_dcc_clk = {
4148 .halt_reg = 0x77004,
4150 .enable_reg = 0x77004,
4151 .enable_mask = BIT(0),
4152 .hw.init = &(struct clk_init_data){
4153 .name = "gcc_dcc_clk",
4154 .parent_hws = (const struct clk_hw *[]){
4155 &pcnoc_bfdcd_clk_src.clkr.hw },
4157 .flags = CLK_SET_RATE_PARENT,
4158 .ops = &clk_branch2_ops,
4163 static const struct alpha_pll_config ubi32_pll_config = {
4166 .config_ctl_val = 0x240d4828,
4167 .config_ctl_hi_val = 0x6,
4168 .main_output_mask = BIT(0),
4169 .aux_output_mask = BIT(1),
4171 .pre_div_mask = BIT(12),
4172 .post_div_val = 0x0,
4173 .post_div_mask = GENMASK(9, 8),
4174 .alpha_en_mask = BIT(24),
4175 .test_ctl_val = 0x1C0000C0,
4176 .test_ctl_hi_val = 0x4000,
4179 static const struct alpha_pll_config nss_crypto_pll_config = {
4183 .config_ctl_val = 0x4001055b,
4184 .main_output_mask = BIT(0),
4186 .pre_div_mask = GENMASK(14, 12),
4187 .post_div_val = 0x1 << 8,
4188 .post_div_mask = GENMASK(11, 8),
4189 .vco_mask = GENMASK(21, 20),
4191 .alpha_en_mask = BIT(24),
4194 static struct clk_hw *gcc_ipq6018_hws[] = {
4195 &gpll0_out_main_div2.hw,
4196 &gcc_xo_div4_clk_src.hw,
4197 &nss_ppe_cdiv_clk_src.hw,
4198 &gpll6_out_main_div2.hw,
4199 &qdss_dap_sync_clk_src.hw,
4200 &qdss_tsctr_div2_clk_src.hw,
4203 static struct clk_regmap *gcc_ipq6018_clks[] = {
4204 [GPLL0_MAIN] = &gpll0_main.clkr,
4205 [GPLL0] = &gpll0.clkr,
4206 [UBI32_PLL_MAIN] = &ubi32_pll_main.clkr,
4207 [UBI32_PLL] = &ubi32_pll.clkr,
4208 [GPLL6_MAIN] = &gpll6_main.clkr,
4209 [GPLL6] = &gpll6.clkr,
4210 [GPLL4_MAIN] = &gpll4_main.clkr,
4211 [GPLL4] = &gpll4.clkr,
4212 [PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr,
4213 [GPLL2_MAIN] = &gpll2_main.clkr,
4214 [GPLL2] = &gpll2.clkr,
4215 [NSS_CRYPTO_PLL_MAIN] = &nss_crypto_pll_main.clkr,
4216 [NSS_CRYPTO_PLL] = &nss_crypto_pll.clkr,
4217 [QDSS_TSCTR_CLK_SRC] = &qdss_tsctr_clk_src.clkr,
4218 [QDSS_AT_CLK_SRC] = &qdss_at_clk_src.clkr,
4219 [NSS_PPE_CLK_SRC] = &nss_ppe_clk_src.clkr,
4220 [GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,
4221 [SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr,
4222 [SNOC_NSSNOC_BFDCD_CLK_SRC] = &snoc_nssnoc_bfdcd_clk_src.clkr,
4223 [NSS_CE_CLK_SRC] = &nss_ce_clk_src.clkr,
4224 [GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,
4225 [APSS_AHB_CLK_SRC] = &apss_ahb_clk_src.clkr,
4226 [NSS_PORT5_RX_CLK_SRC] = &nss_port5_rx_clk_src.clkr,
4227 [NSS_PORT5_TX_CLK_SRC] = &nss_port5_tx_clk_src.clkr,
4228 [UBI32_MEM_NOC_BFDCD_CLK_SRC] = &ubi32_mem_noc_bfdcd_clk_src.clkr,
4229 [PCIE0_AXI_CLK_SRC] = &pcie0_axi_clk_src.clkr,
4230 [USB0_MASTER_CLK_SRC] = &usb0_master_clk_src.clkr,
4231 [APSS_AHB_POSTDIV_CLK_SRC] = &apss_ahb_postdiv_clk_src.clkr,
4232 [NSS_PORT1_RX_CLK_SRC] = &nss_port1_rx_clk_src.clkr,
4233 [NSS_PORT1_TX_CLK_SRC] = &nss_port1_tx_clk_src.clkr,
4234 [NSS_PORT2_RX_CLK_SRC] = &nss_port2_rx_clk_src.clkr,
4235 [NSS_PORT2_TX_CLK_SRC] = &nss_port2_tx_clk_src.clkr,
4236 [NSS_PORT3_RX_CLK_SRC] = &nss_port3_rx_clk_src.clkr,
4237 [NSS_PORT3_TX_CLK_SRC] = &nss_port3_tx_clk_src.clkr,
4238 [NSS_PORT4_RX_CLK_SRC] = &nss_port4_rx_clk_src.clkr,
4239 [NSS_PORT4_TX_CLK_SRC] = &nss_port4_tx_clk_src.clkr,
4240 [NSS_PORT5_RX_DIV_CLK_SRC] = &nss_port5_rx_div_clk_src.clkr,
4241 [NSS_PORT5_TX_DIV_CLK_SRC] = &nss_port5_tx_div_clk_src.clkr,
4242 [APSS_AXI_CLK_SRC] = &apss_axi_clk_src.clkr,
4243 [NSS_CRYPTO_CLK_SRC] = &nss_crypto_clk_src.clkr,
4244 [NSS_PORT1_RX_DIV_CLK_SRC] = &nss_port1_rx_div_clk_src.clkr,
4245 [NSS_PORT1_TX_DIV_CLK_SRC] = &nss_port1_tx_div_clk_src.clkr,
4246 [NSS_PORT2_RX_DIV_CLK_SRC] = &nss_port2_rx_div_clk_src.clkr,
4247 [NSS_PORT2_TX_DIV_CLK_SRC] = &nss_port2_tx_div_clk_src.clkr,
4248 [NSS_PORT3_RX_DIV_CLK_SRC] = &nss_port3_rx_div_clk_src.clkr,
4249 [NSS_PORT3_TX_DIV_CLK_SRC] = &nss_port3_tx_div_clk_src.clkr,
4250 [NSS_PORT4_RX_DIV_CLK_SRC] = &nss_port4_rx_div_clk_src.clkr,
4251 [NSS_PORT4_TX_DIV_CLK_SRC] = &nss_port4_tx_div_clk_src.clkr,
4252 [NSS_UBI0_CLK_SRC] = &nss_ubi0_clk_src.clkr,
4253 [ADSS_PWM_CLK_SRC] = &adss_pwm_clk_src.clkr,
4254 [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
4255 [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
4256 [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
4257 [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
4258 [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
4259 [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
4260 [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
4261 [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
4262 [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
4263 [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
4264 [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
4265 [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
4266 [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
4267 [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
4268 [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
4269 [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
4270 [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
4271 [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
4272 [CRYPTO_CLK_SRC] = &crypto_clk_src.clkr,
4273 [GP1_CLK_SRC] = &gp1_clk_src.clkr,
4274 [GP2_CLK_SRC] = &gp2_clk_src.clkr,
4275 [GP3_CLK_SRC] = &gp3_clk_src.clkr,
4276 [NSS_UBI0_DIV_CLK_SRC] = &nss_ubi0_div_clk_src.clkr,
4277 [PCIE0_AUX_CLK_SRC] = &pcie0_aux_clk_src.clkr,
4278 [PCIE0_PIPE_CLK_SRC] = &pcie0_pipe_clk_src.clkr,
4279 [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
4280 [USB0_AUX_CLK_SRC] = &usb0_aux_clk_src.clkr,
4281 [USB0_MOCK_UTMI_CLK_SRC] = &usb0_mock_utmi_clk_src.clkr,
4282 [USB0_PIPE_CLK_SRC] = &usb0_pipe_clk_src.clkr,
4283 [USB1_MOCK_UTMI_CLK_SRC] = &usb1_mock_utmi_clk_src.clkr,
4284 [GCC_ADSS_PWM_CLK] = &gcc_adss_pwm_clk.clkr,
4285 [GCC_APSS_AHB_CLK] = &gcc_apss_ahb_clk.clkr,
4286 [GCC_APSS_AXI_CLK] = &gcc_apss_axi_clk.clkr,
4287 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
4288 [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
4289 [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
4290 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
4291 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
4292 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
4293 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
4294 [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
4295 [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
4296 [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
4297 [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
4298 [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
4299 [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
4300 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
4301 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
4302 [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
4303 [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
4304 [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
4305 [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
4306 [GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr,
4307 [GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr,
4308 [GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr,
4309 [GCC_XO_CLK] = &gcc_xo_clk.clkr,
4310 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
4311 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
4312 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
4313 [GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,
4314 [GCC_CRYPTO_PPE_CLK] = &gcc_crypto_ppe_clk.clkr,
4315 [GCC_NSS_CE_APB_CLK] = &gcc_nss_ce_apb_clk.clkr,
4316 [GCC_NSS_CE_AXI_CLK] = &gcc_nss_ce_axi_clk.clkr,
4317 [GCC_NSS_CFG_CLK] = &gcc_nss_cfg_clk.clkr,
4318 [GCC_NSS_CRYPTO_CLK] = &gcc_nss_crypto_clk.clkr,
4319 [GCC_NSS_CSR_CLK] = &gcc_nss_csr_clk.clkr,
4320 [GCC_NSS_EDMA_CFG_CLK] = &gcc_nss_edma_cfg_clk.clkr,
4321 [GCC_NSS_EDMA_CLK] = &gcc_nss_edma_clk.clkr,
4322 [GCC_NSS_NOC_CLK] = &gcc_nss_noc_clk.clkr,
4323 [GCC_UBI0_UTCM_CLK] = &gcc_ubi0_utcm_clk.clkr,
4324 [GCC_SNOC_NSSNOC_CLK] = &gcc_snoc_nssnoc_clk.clkr,
4325 [GCC_NSS_PORT1_RX_CLK] = &gcc_nss_port1_rx_clk.clkr,
4326 [GCC_NSS_PORT1_TX_CLK] = &gcc_nss_port1_tx_clk.clkr,
4327 [GCC_NSS_PORT2_RX_CLK] = &gcc_nss_port2_rx_clk.clkr,
4328 [GCC_NSS_PORT2_TX_CLK] = &gcc_nss_port2_tx_clk.clkr,
4329 [GCC_NSS_PORT3_RX_CLK] = &gcc_nss_port3_rx_clk.clkr,
4330 [GCC_NSS_PORT3_TX_CLK] = &gcc_nss_port3_tx_clk.clkr,
4331 [GCC_NSS_PORT4_RX_CLK] = &gcc_nss_port4_rx_clk.clkr,
4332 [GCC_NSS_PORT4_TX_CLK] = &gcc_nss_port4_tx_clk.clkr,
4333 [GCC_NSS_PORT5_RX_CLK] = &gcc_nss_port5_rx_clk.clkr,
4334 [GCC_NSS_PORT5_TX_CLK] = &gcc_nss_port5_tx_clk.clkr,
4335 [GCC_NSS_PPE_CFG_CLK] = &gcc_nss_ppe_cfg_clk.clkr,
4336 [GCC_NSS_PPE_CLK] = &gcc_nss_ppe_clk.clkr,
4337 [GCC_NSS_PPE_IPE_CLK] = &gcc_nss_ppe_ipe_clk.clkr,
4338 [GCC_NSS_PTP_REF_CLK] = &gcc_nss_ptp_ref_clk.clkr,
4339 [GCC_NSSNOC_CE_APB_CLK] = &gcc_nssnoc_ce_apb_clk.clkr,
4340 [GCC_NSSNOC_CE_AXI_CLK] = &gcc_nssnoc_ce_axi_clk.clkr,
4341 [GCC_NSSNOC_CRYPTO_CLK] = &gcc_nssnoc_crypto_clk.clkr,
4342 [GCC_NSSNOC_PPE_CFG_CLK] = &gcc_nssnoc_ppe_cfg_clk.clkr,
4343 [GCC_NSSNOC_PPE_CLK] = &gcc_nssnoc_ppe_clk.clkr,
4344 [GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,
4345 [GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,
4346 [GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,
4347 [GCC_NSSNOC_UBI0_AHB_CLK] = &gcc_nssnoc_ubi0_ahb_clk.clkr,
4348 [GCC_PORT1_MAC_CLK] = &gcc_port1_mac_clk.clkr,
4349 [GCC_PORT2_MAC_CLK] = &gcc_port2_mac_clk.clkr,
4350 [GCC_PORT3_MAC_CLK] = &gcc_port3_mac_clk.clkr,
4351 [GCC_PORT4_MAC_CLK] = &gcc_port4_mac_clk.clkr,
4352 [GCC_PORT5_MAC_CLK] = &gcc_port5_mac_clk.clkr,
4353 [GCC_UBI0_AHB_CLK] = &gcc_ubi0_ahb_clk.clkr,
4354 [GCC_UBI0_AXI_CLK] = &gcc_ubi0_axi_clk.clkr,
4355 [GCC_UBI0_NC_AXI_CLK] = &gcc_ubi0_nc_axi_clk.clkr,
4356 [GCC_UBI0_CORE_CLK] = &gcc_ubi0_core_clk.clkr,
4357 [GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr,
4358 [GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr,
4359 [GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr,
4360 [GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr,
4361 [GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr,
4362 [GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,
4363 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
4364 [GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,
4365 [GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
4366 [GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
4367 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
4368 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
4369 [GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,
4370 [GCC_UNIPHY0_PORT1_RX_CLK] = &gcc_uniphy0_port1_rx_clk.clkr,
4371 [GCC_UNIPHY0_PORT1_TX_CLK] = &gcc_uniphy0_port1_tx_clk.clkr,
4372 [GCC_UNIPHY0_PORT2_RX_CLK] = &gcc_uniphy0_port2_rx_clk.clkr,
4373 [GCC_UNIPHY0_PORT2_TX_CLK] = &gcc_uniphy0_port2_tx_clk.clkr,
4374 [GCC_UNIPHY0_PORT3_RX_CLK] = &gcc_uniphy0_port3_rx_clk.clkr,
4375 [GCC_UNIPHY0_PORT3_TX_CLK] = &gcc_uniphy0_port3_tx_clk.clkr,
4376 [GCC_UNIPHY0_PORT4_RX_CLK] = &gcc_uniphy0_port4_rx_clk.clkr,
4377 [GCC_UNIPHY0_PORT4_TX_CLK] = &gcc_uniphy0_port4_tx_clk.clkr,
4378 [GCC_UNIPHY0_PORT5_RX_CLK] = &gcc_uniphy0_port5_rx_clk.clkr,
4379 [GCC_UNIPHY0_PORT5_TX_CLK] = &gcc_uniphy0_port5_tx_clk.clkr,
4380 [GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,
4381 [GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,
4382 [GCC_UNIPHY1_PORT5_RX_CLK] = &gcc_uniphy1_port5_rx_clk.clkr,
4383 [GCC_UNIPHY1_PORT5_TX_CLK] = &gcc_uniphy1_port5_tx_clk.clkr,
4384 [GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,
4385 [GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,
4386 [GCC_SYS_NOC_USB0_AXI_CLK] = &gcc_sys_noc_usb0_axi_clk.clkr,
4387 [GCC_SNOC_BUS_TIMEOUT2_AHB_CLK] = &gcc_snoc_bus_timeout2_ahb_clk.clkr,
4388 [GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,
4389 [GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,
4390 [GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,
4391 [GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,
4392 [GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,
4393 [GCC_USB1_MASTER_CLK] = &gcc_usb1_master_clk.clkr,
4394 [GCC_USB1_MOCK_UTMI_CLK] = &gcc_usb1_mock_utmi_clk.clkr,
4395 [GCC_USB1_PHY_CFG_AHB_CLK] = &gcc_usb1_phy_cfg_ahb_clk.clkr,
4396 [GCC_USB1_SLEEP_CLK] = &gcc_usb1_sleep_clk.clkr,
4397 [GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,
4398 [GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,
4399 [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
4400 [SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr,
4401 [GCC_DCC_CLK] = &gcc_dcc_clk.clkr,
4402 [PCIE0_RCHNG_CLK_SRC] = &pcie0_rchng_clk_src.clkr,
4403 [GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,
4404 [PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr,
4405 [WCSS_AHB_CLK_SRC] = &wcss_ahb_clk_src.clkr,
4406 [Q6_AXI_CLK_SRC] = &q6_axi_clk_src.clkr,
4407 [RBCPR_WCSS_CLK_SRC] = &rbcpr_wcss_clk_src.clkr,
4408 [GCC_LPASS_CORE_AXIM_CLK] = &gcc_lpass_core_axim_clk.clkr,
4409 [LPASS_CORE_AXIM_CLK_SRC] = &lpass_core_axim_clk_src.clkr,
4410 [GCC_LPASS_SNOC_CFG_CLK] = &gcc_lpass_snoc_cfg_clk.clkr,
4411 [LPASS_SNOC_CFG_CLK_SRC] = &lpass_snoc_cfg_clk_src.clkr,
4412 [GCC_LPASS_Q6_AXIM_CLK] = &gcc_lpass_q6_axim_clk.clkr,
4413 [LPASS_Q6_AXIM_CLK_SRC] = &lpass_q6_axim_clk_src.clkr,
4414 [GCC_LPASS_Q6_ATBM_AT_CLK] = &gcc_lpass_q6_atbm_at_clk.clkr,
4415 [GCC_LPASS_Q6_PCLKDBG_CLK] = &gcc_lpass_q6_pclkdbg_clk.clkr,
4416 [GCC_LPASS_Q6SS_TSCTR_1TO2_CLK] = &gcc_lpass_q6ss_tsctr_1to2_clk.clkr,
4417 [GCC_LPASS_Q6SS_TRIG_CLK] = &gcc_lpass_q6ss_trig_clk.clkr,
4418 [GCC_LPASS_TBU_CLK] = &gcc_lpass_tbu_clk.clkr,
4419 [GCC_PCNOC_LPASS_CLK] = &gcc_pcnoc_lpass_clk.clkr,
4420 [GCC_MEM_NOC_UBI32_CLK] = &gcc_mem_noc_ubi32_clk.clkr,
4421 [GCC_MEM_NOC_LPASS_CLK] = &gcc_mem_noc_lpass_clk.clkr,
4422 [GCC_SNOC_LPASS_CFG_CLK] = &gcc_snoc_lpass_cfg_clk.clkr,
4423 [QDSS_STM_CLK_SRC] = &qdss_stm_clk_src.clkr,
4424 [QDSS_TRACECLKIN_CLK_SRC] = &qdss_traceclkin_clk_src.clkr,
4427 static const struct qcom_reset_map gcc_ipq6018_resets[] = {
4428 [GCC_BLSP1_BCR] = { 0x01000, 0 },
4429 [GCC_BLSP1_QUP1_BCR] = { 0x02000, 0 },
4430 [GCC_BLSP1_UART1_BCR] = { 0x02038, 0 },
4431 [GCC_BLSP1_QUP2_BCR] = { 0x03008, 0 },
4432 [GCC_BLSP1_UART2_BCR] = { 0x03028, 0 },
4433 [GCC_BLSP1_QUP3_BCR] = { 0x04008, 0 },
4434 [GCC_BLSP1_UART3_BCR] = { 0x04028, 0 },
4435 [GCC_BLSP1_QUP4_BCR] = { 0x05008, 0 },
4436 [GCC_BLSP1_UART4_BCR] = { 0x05028, 0 },
4437 [GCC_BLSP1_QUP5_BCR] = { 0x06008, 0 },
4438 [GCC_BLSP1_UART5_BCR] = { 0x06028, 0 },
4439 [GCC_BLSP1_QUP6_BCR] = { 0x07008, 0 },
4440 [GCC_BLSP1_UART6_BCR] = { 0x07028, 0 },
4441 [GCC_IMEM_BCR] = { 0x0e000, 0 },
4442 [GCC_SMMU_BCR] = { 0x12000, 0 },
4443 [GCC_APSS_TCU_BCR] = { 0x12050, 0 },
4444 [GCC_SMMU_XPU_BCR] = { 0x12054, 0 },
4445 [GCC_PCNOC_TBU_BCR] = { 0x12058, 0 },
4446 [GCC_SMMU_CFG_BCR] = { 0x1208c, 0 },
4447 [GCC_PRNG_BCR] = { 0x13000, 0 },
4448 [GCC_BOOT_ROM_BCR] = { 0x13008, 0 },
4449 [GCC_CRYPTO_BCR] = { 0x16000, 0 },
4450 [GCC_WCSS_BCR] = { 0x18000, 0 },
4451 [GCC_WCSS_Q6_BCR] = { 0x18100, 0 },
4452 [GCC_NSS_BCR] = { 0x19000, 0 },
4453 [GCC_SEC_CTRL_BCR] = { 0x1a000, 0 },
4454 [GCC_ADSS_BCR] = { 0x1c000, 0 },
4455 [GCC_DDRSS_BCR] = { 0x1e000, 0 },
4456 [GCC_SYSTEM_NOC_BCR] = { 0x26000, 0 },
4457 [GCC_PCNOC_BCR] = { 0x27018, 0 },
4458 [GCC_TCSR_BCR] = { 0x28000, 0 },
4459 [GCC_QDSS_BCR] = { 0x29000, 0 },
4460 [GCC_DCD_BCR] = { 0x2a000, 0 },
4461 [GCC_MSG_RAM_BCR] = { 0x2b000, 0 },
4462 [GCC_MPM_BCR] = { 0x2c000, 0 },
4463 [GCC_SPDM_BCR] = { 0x2f000, 0 },
4464 [GCC_RBCPR_BCR] = { 0x33000, 0 },
4465 [GCC_RBCPR_MX_BCR] = { 0x33014, 0 },
4466 [GCC_TLMM_BCR] = { 0x34000, 0 },
4467 [GCC_RBCPR_WCSS_BCR] = { 0x3a000, 0 },
4468 [GCC_USB0_PHY_BCR] = { 0x3e034, 0 },
4469 [GCC_USB3PHY_0_PHY_BCR] = { 0x3e03c, 0 },
4470 [GCC_USB0_BCR] = { 0x3e070, 0 },
4471 [GCC_USB1_BCR] = { 0x3f070, 0 },
4472 [GCC_QUSB2_0_PHY_BCR] = { 0x4103c, 0 },
4473 [GCC_QUSB2_1_PHY_BCR] = { 0x41040, 0 },
4474 [GCC_SDCC1_BCR] = { 0x42000, 0 },
4475 [GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x47000, 0 },
4476 [GCC_SNOC_BUS_TIMEOUT1_BCR] = { 0x47008, 0 },
4477 [GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x47010, 0 },
4478 [GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x48000, 0 },
4479 [GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x48008, 0 },
4480 [GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x48010, 0 },
4481 [GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x48018, 0 },
4482 [GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x48020, 0 },
4483 [GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x48028, 0 },
4484 [GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x48030, 0 },
4485 [GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x48038, 0 },
4486 [GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x48040, 0 },
4487 [GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x48048, 0 },
4488 [GCC_UNIPHY0_BCR] = { 0x56000, 0 },
4489 [GCC_UNIPHY1_BCR] = { 0x56100, 0 },
4490 [GCC_CMN_12GPLL_BCR] = { 0x56300, 0 },
4491 [GCC_QPIC_BCR] = { 0x57018, 0 },
4492 [GCC_MDIO_BCR] = { 0x58000, 0 },
4493 [GCC_WCSS_CORE_TBU_BCR] = { 0x66000, 0 },
4494 [GCC_WCSS_Q6_TBU_BCR] = { 0x67000, 0 },
4495 [GCC_USB0_TBU_BCR] = { 0x6a000, 0 },
4496 [GCC_PCIE0_TBU_BCR] = { 0x6b000, 0 },
4497 [GCC_NSS_NOC_TBU_BCR] = { 0x6e000, 0 },
4498 [GCC_PCIE0_BCR] = { 0x75004, 0 },
4499 [GCC_PCIE0_PHY_BCR] = { 0x75038, 0 },
4500 [GCC_PCIE0PHY_PHY_BCR] = { 0x7503c, 0 },
4501 [GCC_PCIE0_LINK_DOWN_BCR] = { 0x75044, 0 },
4502 [GCC_DCC_BCR] = { 0x77000, 0 },
4503 [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x78000, 0 },
4504 [GCC_SMMU_CATS_BCR] = { 0x7c000, 0 },
4505 [GCC_UBI0_AXI_ARES] = { 0x68010, 0 },
4506 [GCC_UBI0_AHB_ARES] = { 0x68010, 1 },
4507 [GCC_UBI0_NC_AXI_ARES] = { 0x68010, 2 },
4508 [GCC_UBI0_DBG_ARES] = { 0x68010, 3 },
4509 [GCC_UBI0_CORE_CLAMP_ENABLE] = { 0x68010, 4 },
4510 [GCC_UBI0_CLKRST_CLAMP_ENABLE] = { 0x68010, 5 },
4511 [GCC_UBI0_UTCM_ARES] = { 0x68010, 6 },
4512 [GCC_UBI0_CORE_ARES] = { 0x68010, 7 },
4513 [GCC_NSS_CFG_ARES] = { 0x68010, 16 },
4514 [GCC_NSS_NOC_ARES] = { 0x68010, 18 },
4515 [GCC_NSS_CRYPTO_ARES] = { 0x68010, 19 },
4516 [GCC_NSS_CSR_ARES] = { 0x68010, 20 },
4517 [GCC_NSS_CE_APB_ARES] = { 0x68010, 21 },
4518 [GCC_NSS_CE_AXI_ARES] = { 0x68010, 22 },
4519 [GCC_NSSNOC_CE_APB_ARES] = { 0x68010, 23 },
4520 [GCC_NSSNOC_CE_AXI_ARES] = { 0x68010, 24 },
4521 [GCC_NSSNOC_UBI0_AHB_ARES] = { 0x68010, 25 },
4522 [GCC_NSSNOC_SNOC_ARES] = { 0x68010, 27 },
4523 [GCC_NSSNOC_CRYPTO_ARES] = { 0x68010, 28 },
4524 [GCC_NSSNOC_ATB_ARES] = { 0x68010, 29 },
4525 [GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x68010, 30 },
4526 [GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x68010, 31 },
4527 [GCC_PCIE0_PIPE_ARES] = { 0x75040, 0 },
4528 [GCC_PCIE0_SLEEP_ARES] = { 0x75040, 1 },
4529 [GCC_PCIE0_CORE_STICKY_ARES] = { 0x75040, 2 },
4530 [GCC_PCIE0_AXI_MASTER_ARES] = { 0x75040, 3 },
4531 [GCC_PCIE0_AXI_SLAVE_ARES] = { 0x75040, 4 },
4532 [GCC_PCIE0_AHB_ARES] = { 0x75040, 5 },
4533 [GCC_PCIE0_AXI_MASTER_STICKY_ARES] = { 0x75040, 6 },
4534 [GCC_PCIE0_AXI_SLAVE_STICKY_ARES] = { 0x75040, 7 },
4535 [GCC_PPE_FULL_RESET] = { .reg = 0x68014, .bitmask = 0xf0000 },
4536 [GCC_UNIPHY0_SOFT_RESET] = { .reg = 0x56004, .bitmask = 0x3ff2 },
4537 [GCC_UNIPHY0_XPCS_RESET] = { 0x56004, 2 },
4538 [GCC_UNIPHY1_SOFT_RESET] = { .reg = 0x56104, .bitmask = 0x32 },
4539 [GCC_UNIPHY1_XPCS_RESET] = { 0x56104, 2 },
4540 [GCC_EDMA_HW_RESET] = { .reg = 0x68014, .bitmask = 0x300000 },
4541 [GCC_NSSPORT1_RESET] = { .reg = 0x68014, .bitmask = 0x1000003 },
4542 [GCC_NSSPORT2_RESET] = { .reg = 0x68014, .bitmask = 0x200000c },
4543 [GCC_NSSPORT3_RESET] = { .reg = 0x68014, .bitmask = 0x4000030 },
4544 [GCC_NSSPORT4_RESET] = { .reg = 0x68014, .bitmask = 0x8000300 },
4545 [GCC_NSSPORT5_RESET] = { .reg = 0x68014, .bitmask = 0x10000c00 },
4546 [GCC_UNIPHY0_PORT1_ARES] = { .reg = 0x56004, .bitmask = 0x30 },
4547 [GCC_UNIPHY0_PORT2_ARES] = { .reg = 0x56004, .bitmask = 0xc0 },
4548 [GCC_UNIPHY0_PORT3_ARES] = { .reg = 0x56004, .bitmask = 0x300 },
4549 [GCC_UNIPHY0_PORT4_ARES] = { .reg = 0x56004, .bitmask = 0xc00 },
4550 [GCC_UNIPHY0_PORT5_ARES] = { .reg = 0x56004, .bitmask = 0x3000 },
4551 [GCC_UNIPHY0_PORT_4_5_RESET] = { .reg = 0x56004, .bitmask = 0x3c02 },
4552 [GCC_UNIPHY0_PORT_4_RESET] = { .reg = 0x56004, .bitmask = 0xc02 },
4553 [GCC_LPASS_BCR] = {0x1F000, 0},
4554 [GCC_UBI32_TBU_BCR] = {0x65000, 0},
4555 [GCC_LPASS_TBU_BCR] = {0x6C000, 0},
4556 [GCC_WCSSAON_RESET] = {0x59010, 0},
4557 [GCC_LPASS_Q6_AXIM_ARES] = {0x1F004, 0},
4558 [GCC_LPASS_Q6SS_TSCTR_1TO2_ARES] = {0x1F004, 1},
4559 [GCC_LPASS_Q6SS_TRIG_ARES] = {0x1F004, 2},
4560 [GCC_LPASS_Q6_ATBM_AT_ARES] = {0x1F004, 3},
4561 [GCC_LPASS_Q6_PCLKDBG_ARES] = {0x1F004, 4},
4562 [GCC_LPASS_CORE_AXIM_ARES] = {0x1F004, 5},
4563 [GCC_LPASS_SNOC_CFG_ARES] = {0x1F004, 6},
4564 [GCC_WCSS_DBG_ARES] = {0x59008, 0},
4565 [GCC_WCSS_ECAHB_ARES] = {0x59008, 1},
4566 [GCC_WCSS_ACMT_ARES] = {0x59008, 2},
4567 [GCC_WCSS_DBG_BDG_ARES] = {0x59008, 3},
4568 [GCC_WCSS_AHB_S_ARES] = {0x59008, 4},
4569 [GCC_WCSS_AXI_M_ARES] = {0x59008, 5},
4570 [GCC_Q6SS_DBG_ARES] = {0x59110, 0},
4571 [GCC_Q6_AHB_S_ARES] = {0x59110, 1},
4572 [GCC_Q6_AHB_ARES] = {0x59110, 2},
4573 [GCC_Q6_AXIM2_ARES] = {0x59110, 3},
4574 [GCC_Q6_AXIM_ARES] = {0x59110, 4},
4577 static const struct of_device_id gcc_ipq6018_match_table[] = {
4578 { .compatible = "qcom,gcc-ipq6018" },
4581 MODULE_DEVICE_TABLE(of, gcc_ipq6018_match_table);
4583 static const struct regmap_config gcc_ipq6018_regmap_config = {
4587 .max_register = 0x7fffc,
4591 static const struct qcom_cc_desc gcc_ipq6018_desc = {
4592 .config = &gcc_ipq6018_regmap_config,
4593 .clks = gcc_ipq6018_clks,
4594 .num_clks = ARRAY_SIZE(gcc_ipq6018_clks),
4595 .resets = gcc_ipq6018_resets,
4596 .num_resets = ARRAY_SIZE(gcc_ipq6018_resets),
4597 .clk_hws = gcc_ipq6018_hws,
4598 .num_clk_hws = ARRAY_SIZE(gcc_ipq6018_hws),
4601 static int gcc_ipq6018_probe(struct platform_device *pdev)
4603 struct regmap *regmap;
4605 regmap = qcom_cc_map(pdev, &gcc_ipq6018_desc);
4607 return PTR_ERR(regmap);
4609 /* Disable SW_COLLAPSE for USB0 GDSCR */
4610 regmap_update_bits(regmap, 0x3e078, BIT(0), 0x0);
4611 /* Enable SW_OVERRIDE for USB0 GDSCR */
4612 regmap_update_bits(regmap, 0x3e078, BIT(2), BIT(2));
4613 /* Disable SW_COLLAPSE for USB1 GDSCR */
4614 regmap_update_bits(regmap, 0x3f078, BIT(0), 0x0);
4615 /* Enable SW_OVERRIDE for USB1 GDSCR */
4616 regmap_update_bits(regmap, 0x3f078, BIT(2), BIT(2));
4618 /* SW Workaround for UBI Huyara PLL */
4619 regmap_update_bits(regmap, 0x2501c, BIT(26), BIT(26));
4621 clk_alpha_pll_configure(&ubi32_pll_main, regmap, &ubi32_pll_config);
4623 clk_alpha_pll_configure(&nss_crypto_pll_main, regmap,
4624 &nss_crypto_pll_config);
4626 return qcom_cc_really_probe(pdev, &gcc_ipq6018_desc, regmap);
4629 static struct platform_driver gcc_ipq6018_driver = {
4630 .probe = gcc_ipq6018_probe,
4632 .name = "qcom,gcc-ipq6018",
4633 .of_match_table = gcc_ipq6018_match_table,
4637 static int __init gcc_ipq6018_init(void)
4639 return platform_driver_register(&gcc_ipq6018_driver);
4641 core_initcall(gcc_ipq6018_init);
4643 static void __exit gcc_ipq6018_exit(void)
4645 platform_driver_unregister(&gcc_ipq6018_driver);
4647 module_exit(gcc_ipq6018_exit);
4649 MODULE_DESCRIPTION("Qualcomm Technologies, Inc. GCC IPQ6018 Driver");
4650 MODULE_LICENSE("GPL v2");