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/of_device.h>
12 #include <linux/clk-provider.h>
13 #include <linux/regmap.h>
15 #include <linux/reset-controller.h>
16 #include <dt-bindings/clock/qcom,gcc-ipq6018.h>
17 #include <dt-bindings/reset/qcom,gcc-ipq6018.h>
20 #include "clk-regmap.h"
23 #include "clk-branch.h"
24 #include "clk-alpha-pll.h"
25 #include "clk-regmap-divider.h"
26 #include "clk-regmap-mux.h"
29 #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
52 static struct clk_alpha_pll gpll0_main = {
54 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
56 .enable_reg = 0x0b000,
57 .enable_mask = BIT(0),
58 .hw.init = &(struct clk_init_data){
60 .parent_data = &(const struct clk_parent_data){
64 .ops = &clk_alpha_pll_ops,
69 static struct clk_fixed_factor gpll0_out_main_div2 = {
72 .hw.init = &(struct clk_init_data){
73 .name = "gpll0_out_main_div2",
74 .parent_hws = (const struct clk_hw *[]){
75 &gpll0_main.clkr.hw },
77 .ops = &clk_fixed_factor_ops,
81 static struct clk_alpha_pll_postdiv gpll0 = {
83 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
85 .clkr.hw.init = &(struct clk_init_data){
87 .parent_hws = (const struct clk_hw *[]){
88 &gpll0_main.clkr.hw },
90 .ops = &clk_alpha_pll_postdiv_ro_ops,
94 static const struct clk_parent_data gcc_xo_gpll0_gpll0_out_main_div2[] = {
96 { .hw = &gpll0.clkr.hw},
97 { .hw = &gpll0_out_main_div2.hw},
100 static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = {
106 static struct clk_alpha_pll ubi32_pll_main = {
108 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
109 .flags = SUPPORTS_DYNAMIC_UPDATE,
111 .enable_reg = 0x0b000,
112 .enable_mask = BIT(6),
113 .hw.init = &(struct clk_init_data){
114 .name = "ubi32_pll_main",
115 .parent_data = &(const struct clk_parent_data){
119 .ops = &clk_alpha_pll_huayra_ops,
124 static struct clk_alpha_pll_postdiv ubi32_pll = {
126 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
128 .clkr.hw.init = &(struct clk_init_data){
130 .parent_hws = (const struct clk_hw *[]){
131 &ubi32_pll_main.clkr.hw },
133 .ops = &clk_alpha_pll_postdiv_ro_ops,
134 .flags = CLK_SET_RATE_PARENT,
138 static struct clk_alpha_pll gpll6_main = {
140 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
142 .enable_reg = 0x0b000,
143 .enable_mask = BIT(7),
144 .hw.init = &(struct clk_init_data){
145 .name = "gpll6_main",
146 .parent_data = &(const struct clk_parent_data){
150 .ops = &clk_alpha_pll_ops,
155 static struct clk_alpha_pll_postdiv gpll6 = {
157 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
159 .clkr.hw.init = &(struct clk_init_data){
161 .parent_hws = (const struct clk_hw *[]){
162 &gpll6_main.clkr.hw },
164 .ops = &clk_alpha_pll_postdiv_ro_ops,
168 static struct clk_alpha_pll gpll4_main = {
170 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
172 .enable_reg = 0x0b000,
173 .enable_mask = BIT(5),
174 .hw.init = &(struct clk_init_data){
175 .name = "gpll4_main",
176 .parent_data = &(const struct clk_parent_data){
180 .ops = &clk_alpha_pll_ops,
185 static struct clk_alpha_pll_postdiv gpll4 = {
187 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
189 .clkr.hw.init = &(struct clk_init_data){
191 .parent_hws = (const struct clk_hw *[]){
192 &gpll4_main.clkr.hw },
194 .ops = &clk_alpha_pll_postdiv_ro_ops,
198 static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src[] = {
199 F(24000000, P_XO, 1, 0, 0),
200 F(50000000, P_GPLL0, 16, 0, 0),
201 F(100000000, P_GPLL0, 8, 0, 0),
205 static struct clk_rcg2 pcnoc_bfdcd_clk_src = {
207 .freq_tbl = ftbl_pcnoc_bfdcd_clk_src,
209 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
210 .clkr.hw.init = &(struct clk_init_data){
211 .name = "pcnoc_bfdcd_clk_src",
212 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
214 .ops = &clk_rcg2_ops,
218 static struct clk_alpha_pll gpll2_main = {
220 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
222 .enable_reg = 0x0b000,
223 .enable_mask = BIT(2),
224 .hw.init = &(struct clk_init_data){
225 .name = "gpll2_main",
226 .parent_data = &(const struct clk_parent_data){
230 .ops = &clk_alpha_pll_ops,
235 static struct clk_alpha_pll_postdiv gpll2 = {
237 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
239 .clkr.hw.init = &(struct clk_init_data){
241 .parent_hws = (const struct clk_hw *[]){
242 &gpll2_main.clkr.hw },
244 .ops = &clk_alpha_pll_postdiv_ro_ops,
248 static struct clk_alpha_pll nss_crypto_pll_main = {
250 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
252 .enable_reg = 0x0b000,
253 .enable_mask = BIT(4),
254 .hw.init = &(struct clk_init_data){
255 .name = "nss_crypto_pll_main",
256 .parent_data = &(const struct clk_parent_data){
260 .ops = &clk_alpha_pll_ops,
265 static struct clk_alpha_pll_postdiv nss_crypto_pll = {
267 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
269 .clkr.hw.init = &(struct clk_init_data){
270 .name = "nss_crypto_pll",
271 .parent_hws = (const struct clk_hw *[]){
272 &nss_crypto_pll_main.clkr.hw },
274 .ops = &clk_alpha_pll_postdiv_ro_ops,
278 static const struct freq_tbl ftbl_qdss_tsctr_clk_src[] = {
279 F(160000000, P_GPLL0_DIV2, 2.5, 0, 0),
280 F(320000000, P_GPLL0, 2.5, 0, 0),
281 F(600000000, P_GPLL4, 2, 0, 0),
285 static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll6_gpll0_div2[] = {
287 { .hw = &gpll4.clkr.hw },
288 { .hw = &gpll0.clkr.hw },
289 { .hw = &gpll6.clkr.hw },
290 { .hw = &gpll0_out_main_div2.hw },
293 static const struct parent_map gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map[] = {
301 static struct clk_rcg2 qdss_tsctr_clk_src = {
303 .freq_tbl = ftbl_qdss_tsctr_clk_src,
305 .parent_map = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map,
306 .clkr.hw.init = &(struct clk_init_data){
307 .name = "qdss_tsctr_clk_src",
308 .parent_data = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2,
310 .ops = &clk_rcg2_ops,
314 static struct clk_fixed_factor qdss_dap_sync_clk_src = {
317 .hw.init = &(struct clk_init_data){
318 .name = "qdss_dap_sync_clk_src",
319 .parent_hws = (const struct clk_hw *[]){
320 &qdss_tsctr_clk_src.clkr.hw },
322 .ops = &clk_fixed_factor_ops,
326 static const struct freq_tbl ftbl_qdss_at_clk_src[] = {
327 F(66670000, P_GPLL0_DIV2, 6, 0, 0),
328 F(240000000, P_GPLL4, 5, 0, 0),
332 static struct clk_rcg2 qdss_at_clk_src = {
334 .freq_tbl = ftbl_qdss_at_clk_src,
336 .parent_map = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map,
337 .clkr.hw.init = &(struct clk_init_data){
338 .name = "qdss_at_clk_src",
339 .parent_data = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2,
341 .ops = &clk_rcg2_ops,
345 static struct clk_fixed_factor qdss_tsctr_div2_clk_src = {
348 .hw.init = &(struct clk_init_data){
349 .name = "qdss_tsctr_div2_clk_src",
350 .parent_hws = (const struct clk_hw *[]){
351 &qdss_tsctr_clk_src.clkr.hw },
353 .flags = CLK_SET_RATE_PARENT,
354 .ops = &clk_fixed_factor_ops,
358 static const struct freq_tbl ftbl_nss_ppe_clk_src[] = {
359 F(24000000, P_XO, 1, 0, 0),
360 F(300000000, P_BIAS_PLL, 1, 0, 0),
364 static const struct clk_parent_data gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {
366 { .fw_name = "bias_pll_cc_clk" },
367 { .hw = &gpll0.clkr.hw },
368 { .hw = &gpll4.clkr.hw },
369 { .hw = &nss_crypto_pll.clkr.hw },
370 { .hw = &ubi32_pll.clkr.hw },
373 static const struct parent_map gcc_xo_bias_gpll0_gpll4_nss_ubi32_map[] = {
378 { P_NSS_CRYPTO_PLL, 4 },
382 static struct clk_rcg2 nss_ppe_clk_src = {
384 .freq_tbl = ftbl_nss_ppe_clk_src,
386 .parent_map = gcc_xo_bias_gpll0_gpll4_nss_ubi32_map,
387 .clkr.hw.init = &(struct clk_init_data){
388 .name = "nss_ppe_clk_src",
389 .parent_data = gcc_xo_bias_gpll0_gpll4_nss_ubi32,
391 .ops = &clk_rcg2_ops,
395 static struct clk_branch gcc_xo_clk_src = {
398 .enable_reg = 0x30018,
399 .enable_mask = BIT(1),
400 .hw.init = &(struct clk_init_data){
401 .name = "gcc_xo_clk_src",
402 .parent_data = &(const struct clk_parent_data){
406 .flags = CLK_SET_RATE_PARENT,
407 .ops = &clk_branch2_ops,
412 static const struct freq_tbl ftbl_nss_ce_clk_src[] = {
413 F(24000000, P_XO, 1, 0, 0),
414 F(200000000, P_GPLL0, 4, 0, 0),
418 static const struct clk_parent_data gcc_xo_gpll0[] = {
420 { .hw = &gpll0.clkr.hw },
423 static const struct parent_map gcc_xo_gpll0_map[] = {
428 static struct clk_rcg2 nss_ce_clk_src = {
430 .freq_tbl = ftbl_nss_ce_clk_src,
432 .parent_map = gcc_xo_gpll0_map,
433 .clkr.hw.init = &(struct clk_init_data){
434 .name = "nss_ce_clk_src",
435 .parent_data = gcc_xo_gpll0,
437 .ops = &clk_rcg2_ops,
441 static struct clk_branch gcc_sleep_clk_src = {
444 .enable_reg = 0x30000,
445 .enable_mask = BIT(1),
446 .hw.init = &(struct clk_init_data){
447 .name = "gcc_sleep_clk_src",
448 .parent_data = &(const struct clk_parent_data){
449 .fw_name = "sleep_clk",
452 .ops = &clk_branch2_ops,
457 static const struct freq_tbl ftbl_snoc_nssnoc_bfdcd_clk_src[] = {
458 F(24000000, P_XO, 1, 0, 0),
459 F(50000000, P_GPLL0_DIV2, 8, 0, 0),
460 F(100000000, P_GPLL0, 8, 0, 0),
461 F(133333333, P_GPLL0, 6, 0, 0),
462 F(160000000, P_GPLL0, 5, 0, 0),
463 F(200000000, P_GPLL0, 4, 0, 0),
464 F(266666667, P_GPLL0, 3, 0, 0),
468 static const struct clk_parent_data
469 gcc_xo_gpll0_gpll6_gpll0_out_main_div2[] = {
471 { .hw = &gpll0.clkr.hw },
472 { .hw = &gpll6.clkr.hw },
473 { .hw = &gpll0_out_main_div2.hw },
476 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map[] = {
483 static struct clk_rcg2 snoc_nssnoc_bfdcd_clk_src = {
485 .freq_tbl = ftbl_snoc_nssnoc_bfdcd_clk_src,
487 .parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
488 .clkr.hw.init = &(struct clk_init_data){
489 .name = "snoc_nssnoc_bfdcd_clk_src",
490 .parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
492 .ops = &clk_rcg2_ops,
496 static const struct freq_tbl ftbl_apss_ahb_clk_src[] = {
497 F(24000000, P_XO, 1, 0, 0),
498 F(25000000, P_GPLL0_DIV2, 16, 0, 0),
499 F(50000000, P_GPLL0, 16, 0, 0),
500 F(100000000, P_GPLL0, 8, 0, 0),
504 static struct clk_rcg2 apss_ahb_clk_src = {
506 .freq_tbl = ftbl_apss_ahb_clk_src,
508 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
509 .clkr.hw.init = &(struct clk_init_data){
510 .name = "apss_ahb_clk_src",
511 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
513 .ops = &clk_rcg2_ops,
517 static const struct freq_tbl ftbl_nss_port5_rx_clk_src[] = {
518 F(24000000, P_XO, 1, 0, 0),
519 F(25000000, P_UNIPHY1_RX, 12.5, 0, 0),
520 F(25000000, P_UNIPHY0_RX, 5, 0, 0),
521 F(78125000, P_UNIPHY1_RX, 4, 0, 0),
522 F(125000000, P_UNIPHY1_RX, 2.5, 0, 0),
523 F(125000000, P_UNIPHY0_RX, 1, 0, 0),
524 F(156250000, P_UNIPHY1_RX, 2, 0, 0),
525 F(312500000, P_UNIPHY1_RX, 1, 0, 0),
529 static const struct clk_parent_data
530 gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {
532 { .fw_name = "uniphy0_gcc_rx_clk" },
533 { .fw_name = "uniphy0_gcc_tx_clk" },
534 { .fw_name = "uniphy1_gcc_rx_clk" },
535 { .fw_name = "uniphy1_gcc_tx_clk" },
536 { .hw = &ubi32_pll.clkr.hw },
537 { .fw_name = "bias_pll_cc_clk" },
540 static const struct parent_map
541 gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map[] = {
551 static struct clk_rcg2 nss_port5_rx_clk_src = {
553 .freq_tbl = ftbl_nss_port5_rx_clk_src,
555 .parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map,
556 .clkr.hw.init = &(struct clk_init_data){
557 .name = "nss_port5_rx_clk_src",
558 .parent_data = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias,
560 .ops = &clk_rcg2_ops,
564 static const struct freq_tbl ftbl_nss_port5_tx_clk_src[] = {
565 F(24000000, P_XO, 1, 0, 0),
566 F(25000000, P_UNIPHY1_TX, 12.5, 0, 0),
567 F(25000000, P_UNIPHY0_TX, 5, 0, 0),
568 F(78125000, P_UNIPHY1_TX, 4, 0, 0),
569 F(125000000, P_UNIPHY1_TX, 2.5, 0, 0),
570 F(125000000, P_UNIPHY0_TX, 1, 0, 0),
571 F(156250000, P_UNIPHY1_TX, 2, 0, 0),
572 F(312500000, P_UNIPHY1_TX, 1, 0, 0),
576 static const struct clk_parent_data
577 gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {
579 { .fw_name = "uniphy0_gcc_tx_clk" },
580 { .fw_name = "uniphy0_gcc_rx_clk" },
581 { .fw_name = "uniphy1_gcc_tx_clk" },
582 { .fw_name = "uniphy1_gcc_rx_clk" },
583 { .hw = &ubi32_pll.clkr.hw },
584 { .fw_name = "bias_pll_cc_clk" },
587 static const struct parent_map
588 gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map[] = {
598 static struct clk_rcg2 nss_port5_tx_clk_src = {
600 .freq_tbl = ftbl_nss_port5_tx_clk_src,
602 .parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map,
603 .clkr.hw.init = &(struct clk_init_data){
604 .name = "nss_port5_tx_clk_src",
605 .parent_data = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias,
607 .ops = &clk_rcg2_ops,
611 static const struct freq_tbl ftbl_pcie_axi_clk_src[] = {
612 F(24000000, P_XO, 1, 0, 0),
613 F(200000000, P_GPLL0, 4, 0, 0),
614 F(240000000, P_GPLL4, 5, 0, 0),
618 static const struct freq_tbl ftbl_pcie_rchng_clk_src[] = {
619 F(24000000, P_XO, 1, 0, 0),
620 F(100000000, P_GPLL0, 8, 0, 0),
624 static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
626 { .hw = &gpll0.clkr.hw },
627 { .hw = &gpll4.clkr.hw },
630 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
636 static struct clk_rcg2 pcie0_axi_clk_src = {
638 .freq_tbl = ftbl_pcie_axi_clk_src,
640 .parent_map = gcc_xo_gpll0_gpll4_map,
641 .clkr.hw.init = &(struct clk_init_data){
642 .name = "pcie0_axi_clk_src",
643 .parent_data = gcc_xo_gpll0_gpll4,
645 .ops = &clk_rcg2_ops,
649 static const struct freq_tbl ftbl_usb0_master_clk_src[] = {
650 F(80000000, P_GPLL0_DIV2, 5, 0, 0),
651 F(100000000, P_GPLL0, 8, 0, 0),
652 F(133330000, P_GPLL0, 6, 0, 0),
653 F(200000000, P_GPLL0, 4, 0, 0),
657 static const struct clk_parent_data gcc_xo_gpll0_out_main_div2_gpll0[] = {
659 { .hw = &gpll0_out_main_div2.hw },
660 { .hw = &gpll0.clkr.hw },
663 static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = {
669 static struct clk_rcg2 usb0_master_clk_src = {
671 .freq_tbl = ftbl_usb0_master_clk_src,
674 .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
675 .clkr.hw.init = &(struct clk_init_data){
676 .name = "usb0_master_clk_src",
677 .parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
679 .ops = &clk_rcg2_ops,
683 static struct clk_regmap_div apss_ahb_postdiv_clk_src = {
688 .hw.init = &(struct clk_init_data){
689 .name = "apss_ahb_postdiv_clk_src",
690 .parent_hws = (const struct clk_hw *[]){
691 &apss_ahb_clk_src.clkr.hw },
693 .ops = &clk_regmap_div_ops,
698 static struct clk_fixed_factor gcc_xo_div4_clk_src = {
701 .hw.init = &(struct clk_init_data){
702 .name = "gcc_xo_div4_clk_src",
703 .parent_hws = (const struct clk_hw *[]){
704 &gcc_xo_clk_src.clkr.hw },
706 .ops = &clk_fixed_factor_ops,
707 .flags = CLK_SET_RATE_PARENT,
711 static const struct freq_tbl ftbl_nss_port1_rx_clk_src[] = {
712 F(24000000, P_XO, 1, 0, 0),
713 F(25000000, P_UNIPHY0_RX, 5, 0, 0),
714 F(125000000, P_UNIPHY0_RX, 1, 0, 0),
718 static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {
720 { .fw_name = "uniphy0_gcc_rx_clk" },
721 { .fw_name = "uniphy0_gcc_tx_clk" },
722 { .hw = &ubi32_pll.clkr.hw },
723 { .fw_name = "bias_pll_cc_clk" },
726 static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {
734 static struct clk_rcg2 nss_port1_rx_clk_src = {
736 .freq_tbl = ftbl_nss_port1_rx_clk_src,
738 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
739 .clkr.hw.init = &(struct clk_init_data){
740 .name = "nss_port1_rx_clk_src",
741 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
743 .ops = &clk_rcg2_ops,
747 static const struct freq_tbl ftbl_nss_port1_tx_clk_src[] = {
748 F(24000000, P_XO, 1, 0, 0),
749 F(25000000, P_UNIPHY0_TX, 5, 0, 0),
750 F(125000000, P_UNIPHY0_TX, 1, 0, 0),
754 static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {
756 { .fw_name = "uniphy0_gcc_tx_clk" },
757 { .fw_name = "uniphy0_gcc_rx_clk" },
758 { .hw = &ubi32_pll.clkr.hw },
759 { .fw_name = "bias_pll_cc_clk" },
762 static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {
770 static struct clk_rcg2 nss_port1_tx_clk_src = {
772 .freq_tbl = ftbl_nss_port1_tx_clk_src,
774 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
775 .clkr.hw.init = &(struct clk_init_data){
776 .name = "nss_port1_tx_clk_src",
777 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
779 .ops = &clk_rcg2_ops,
783 static struct clk_rcg2 nss_port2_rx_clk_src = {
785 .freq_tbl = ftbl_nss_port1_rx_clk_src,
787 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
788 .clkr.hw.init = &(struct clk_init_data){
789 .name = "nss_port2_rx_clk_src",
790 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
792 .ops = &clk_rcg2_ops,
796 static struct clk_rcg2 nss_port2_tx_clk_src = {
798 .freq_tbl = ftbl_nss_port1_tx_clk_src,
800 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
801 .clkr.hw.init = &(struct clk_init_data){
802 .name = "nss_port2_tx_clk_src",
803 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
805 .ops = &clk_rcg2_ops,
809 static struct clk_rcg2 nss_port3_rx_clk_src = {
811 .freq_tbl = ftbl_nss_port1_rx_clk_src,
813 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
814 .clkr.hw.init = &(struct clk_init_data){
815 .name = "nss_port3_rx_clk_src",
816 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
818 .ops = &clk_rcg2_ops,
822 static struct clk_rcg2 nss_port3_tx_clk_src = {
824 .freq_tbl = ftbl_nss_port1_tx_clk_src,
826 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
827 .clkr.hw.init = &(struct clk_init_data){
828 .name = "nss_port3_tx_clk_src",
829 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
831 .ops = &clk_rcg2_ops,
835 static struct clk_rcg2 nss_port4_rx_clk_src = {
837 .freq_tbl = ftbl_nss_port1_rx_clk_src,
839 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
840 .clkr.hw.init = &(struct clk_init_data){
841 .name = "nss_port4_rx_clk_src",
842 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
844 .ops = &clk_rcg2_ops,
848 static struct clk_rcg2 nss_port4_tx_clk_src = {
850 .freq_tbl = ftbl_nss_port1_tx_clk_src,
852 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
853 .clkr.hw.init = &(struct clk_init_data){
854 .name = "nss_port4_tx_clk_src",
855 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
857 .ops = &clk_rcg2_ops,
861 static struct clk_regmap_div nss_port5_rx_div_clk_src = {
866 .hw.init = &(struct clk_init_data){
867 .name = "nss_port5_rx_div_clk_src",
868 .parent_hws = (const struct clk_hw *[]){
869 &nss_port5_rx_clk_src.clkr.hw },
871 .ops = &clk_regmap_div_ops,
872 .flags = CLK_SET_RATE_PARENT,
877 static struct clk_regmap_div nss_port5_tx_div_clk_src = {
882 .hw.init = &(struct clk_init_data){
883 .name = "nss_port5_tx_div_clk_src",
884 .parent_hws = (const struct clk_hw *[]){
885 &nss_port5_tx_clk_src.clkr.hw },
887 .ops = &clk_regmap_div_ops,
888 .flags = CLK_SET_RATE_PARENT,
893 static const struct freq_tbl ftbl_apss_axi_clk_src[] = {
894 F(24000000, P_XO, 1, 0, 0),
895 F(100000000, P_GPLL0_DIV2, 4, 0, 0),
896 F(200000000, P_GPLL0, 4, 0, 0),
897 F(308570000, P_GPLL6, 3.5, 0, 0),
898 F(400000000, P_GPLL0, 2, 0, 0),
899 F(533000000, P_GPLL0, 1.5, 0, 0),
903 static const struct clk_parent_data gcc_xo_gpll0_gpll6_ubi32_gpll0_div2[] = {
905 { .hw = &gpll0.clkr.hw },
906 { .hw = &gpll6.clkr.hw },
907 { .hw = &ubi32_pll.clkr.hw },
908 { .hw = &gpll0_out_main_div2.hw },
911 static const struct parent_map
912 gcc_xo_gpll0_gpll6_ubi32_gpll0_div2_map[] = {
920 static struct clk_rcg2 apss_axi_clk_src = {
922 .freq_tbl = ftbl_apss_axi_clk_src,
924 .parent_map = gcc_xo_gpll0_gpll6_ubi32_gpll0_div2_map,
925 .clkr.hw.init = &(struct clk_init_data){
926 .name = "apss_axi_clk_src",
927 .parent_data = gcc_xo_gpll0_gpll6_ubi32_gpll0_div2,
929 .ops = &clk_rcg2_ops,
933 static const struct freq_tbl ftbl_nss_crypto_clk_src[] = {
934 F(24000000, P_XO, 1, 0, 0),
935 F(300000000, P_NSS_CRYPTO_PLL, 2, 0, 0),
939 static const struct clk_parent_data gcc_xo_nss_crypto_pll_gpll0[] = {
941 { .hw = &nss_crypto_pll.clkr.hw },
942 { .hw = &gpll0.clkr.hw },
945 static const struct parent_map gcc_xo_nss_crypto_pll_gpll0_map[] = {
947 { P_NSS_CRYPTO_PLL, 1 },
951 static struct clk_rcg2 nss_crypto_clk_src = {
953 .freq_tbl = ftbl_nss_crypto_clk_src,
956 .parent_map = gcc_xo_nss_crypto_pll_gpll0_map,
957 .clkr.hw.init = &(struct clk_init_data){
958 .name = "nss_crypto_clk_src",
959 .parent_data = gcc_xo_nss_crypto_pll_gpll0,
961 .ops = &clk_rcg2_ops,
965 static struct clk_regmap_div nss_port1_rx_div_clk_src = {
970 .hw.init = &(struct clk_init_data){
971 .name = "nss_port1_rx_div_clk_src",
972 .parent_hws = (const struct clk_hw *[]){
973 &nss_port1_rx_clk_src.clkr.hw },
975 .ops = &clk_regmap_div_ops,
976 .flags = CLK_SET_RATE_PARENT,
981 static struct clk_regmap_div nss_port1_tx_div_clk_src = {
986 .hw.init = &(struct clk_init_data){
987 .name = "nss_port1_tx_div_clk_src",
988 .parent_hws = (const struct clk_hw *[]){
989 &nss_port1_tx_clk_src.clkr.hw },
991 .ops = &clk_regmap_div_ops,
992 .flags = CLK_SET_RATE_PARENT,
997 static struct clk_regmap_div nss_port2_rx_div_clk_src = {
1002 .hw.init = &(struct clk_init_data){
1003 .name = "nss_port2_rx_div_clk_src",
1004 .parent_hws = (const struct clk_hw *[]){
1005 &nss_port2_rx_clk_src.clkr.hw },
1007 .ops = &clk_regmap_div_ops,
1008 .flags = CLK_SET_RATE_PARENT,
1013 static struct clk_regmap_div nss_port2_tx_div_clk_src = {
1018 .hw.init = &(struct clk_init_data){
1019 .name = "nss_port2_tx_div_clk_src",
1020 .parent_hws = (const struct clk_hw *[]){
1021 &nss_port2_tx_clk_src.clkr.hw },
1023 .ops = &clk_regmap_div_ops,
1024 .flags = CLK_SET_RATE_PARENT,
1029 static struct clk_regmap_div nss_port3_rx_div_clk_src = {
1034 .hw.init = &(struct clk_init_data){
1035 .name = "nss_port3_rx_div_clk_src",
1036 .parent_hws = (const struct clk_hw *[]){
1037 &nss_port3_rx_clk_src.clkr.hw },
1039 .ops = &clk_regmap_div_ops,
1040 .flags = CLK_SET_RATE_PARENT,
1045 static struct clk_regmap_div nss_port3_tx_div_clk_src = {
1050 .hw.init = &(struct clk_init_data){
1051 .name = "nss_port3_tx_div_clk_src",
1052 .parent_hws = (const struct clk_hw *[]){
1053 &nss_port3_tx_clk_src.clkr.hw },
1055 .ops = &clk_regmap_div_ops,
1056 .flags = CLK_SET_RATE_PARENT,
1061 static struct clk_regmap_div nss_port4_rx_div_clk_src = {
1066 .hw.init = &(struct clk_init_data){
1067 .name = "nss_port4_rx_div_clk_src",
1068 .parent_hws = (const struct clk_hw *[]){
1069 &nss_port4_rx_clk_src.clkr.hw },
1071 .ops = &clk_regmap_div_ops,
1072 .flags = CLK_SET_RATE_PARENT,
1077 static struct clk_regmap_div nss_port4_tx_div_clk_src = {
1082 .hw.init = &(struct clk_init_data){
1083 .name = "nss_port4_tx_div_clk_src",
1084 .parent_hws = (const struct clk_hw *[]){
1085 &nss_port4_tx_clk_src.clkr.hw },
1087 .ops = &clk_regmap_div_ops,
1088 .flags = CLK_SET_RATE_PARENT,
1093 static const struct freq_tbl ftbl_nss_ubi_clk_src[] = {
1094 F(24000000, P_XO, 1, 0, 0),
1095 F(149760000, P_UBI32_PLL, 10, 0, 0),
1096 F(187200000, P_UBI32_PLL, 8, 0, 0),
1097 F(249600000, P_UBI32_PLL, 6, 0, 0),
1098 F(374400000, P_UBI32_PLL, 4, 0, 0),
1099 F(748800000, P_UBI32_PLL, 2, 0, 0),
1100 F(1497600000, P_UBI32_PLL, 1, 0, 0),
1104 static const struct clk_parent_data
1105 gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6[] = {
1106 { .fw_name = "xo" },
1107 { .hw = &ubi32_pll.clkr.hw },
1108 { .hw = &gpll0.clkr.hw },
1109 { .hw = &gpll2.clkr.hw },
1110 { .hw = &gpll4.clkr.hw },
1111 { .hw = &gpll6.clkr.hw },
1114 static const struct parent_map gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map[] = {
1123 static struct clk_rcg2 nss_ubi0_clk_src = {
1124 .cmd_rcgr = 0x68104,
1125 .freq_tbl = ftbl_nss_ubi_clk_src,
1127 .parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,
1128 .clkr.hw.init = &(struct clk_init_data){
1129 .name = "nss_ubi0_clk_src",
1130 .parent_data = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
1132 .ops = &clk_rcg2_ops,
1133 .flags = CLK_SET_RATE_PARENT,
1137 static const struct freq_tbl ftbl_adss_pwm_clk_src[] = {
1138 F(24000000, P_XO, 1, 0, 0),
1139 F(100000000, P_GPLL0, 8, 0, 0),
1143 static struct clk_rcg2 adss_pwm_clk_src = {
1144 .cmd_rcgr = 0x1c008,
1145 .freq_tbl = ftbl_adss_pwm_clk_src,
1147 .parent_map = gcc_xo_gpll0_map,
1148 .clkr.hw.init = &(struct clk_init_data){
1149 .name = "adss_pwm_clk_src",
1150 .parent_data = gcc_xo_gpll0,
1152 .ops = &clk_rcg2_ops,
1156 static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src[] = {
1157 F(24000000, P_XO, 1, 0, 0),
1158 F(25000000, P_GPLL0_DIV2, 16, 0, 0),
1159 F(50000000, P_GPLL0, 16, 0, 0),
1163 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
1164 .cmd_rcgr = 0x0200c,
1165 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1167 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1168 .clkr.hw.init = &(struct clk_init_data){
1169 .name = "blsp1_qup1_i2c_apps_clk_src",
1170 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1172 .ops = &clk_rcg2_ops,
1176 static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src[] = {
1177 F(960000, P_XO, 10, 2, 5),
1178 F(4800000, P_XO, 5, 0, 0),
1179 F(9600000, P_XO, 2, 4, 5),
1180 F(12500000, P_GPLL0_DIV2, 16, 1, 2),
1181 F(16000000, P_GPLL0, 10, 1, 5),
1182 F(24000000, P_XO, 1, 0, 0),
1183 F(25000000, P_GPLL0, 16, 1, 2),
1184 F(50000000, P_GPLL0, 16, 0, 0),
1188 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
1189 .cmd_rcgr = 0x02024,
1190 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1193 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1194 .clkr.hw.init = &(struct clk_init_data){
1195 .name = "blsp1_qup1_spi_apps_clk_src",
1196 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1198 .ops = &clk_rcg2_ops,
1202 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
1203 .cmd_rcgr = 0x03000,
1204 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1206 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1207 .clkr.hw.init = &(struct clk_init_data){
1208 .name = "blsp1_qup2_i2c_apps_clk_src",
1209 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1211 .ops = &clk_rcg2_ops,
1215 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
1216 .cmd_rcgr = 0x03014,
1217 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1220 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1221 .clkr.hw.init = &(struct clk_init_data){
1222 .name = "blsp1_qup2_spi_apps_clk_src",
1223 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1225 .ops = &clk_rcg2_ops,
1229 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
1230 .cmd_rcgr = 0x04000,
1231 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1233 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1234 .clkr.hw.init = &(struct clk_init_data){
1235 .name = "blsp1_qup3_i2c_apps_clk_src",
1236 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1238 .ops = &clk_rcg2_ops,
1242 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
1243 .cmd_rcgr = 0x04014,
1244 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1247 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1248 .clkr.hw.init = &(struct clk_init_data){
1249 .name = "blsp1_qup3_spi_apps_clk_src",
1250 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1252 .ops = &clk_rcg2_ops,
1256 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
1257 .cmd_rcgr = 0x05000,
1258 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1260 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1261 .clkr.hw.init = &(struct clk_init_data){
1262 .name = "blsp1_qup4_i2c_apps_clk_src",
1263 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1265 .ops = &clk_rcg2_ops,
1269 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
1270 .cmd_rcgr = 0x05014,
1271 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1274 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1275 .clkr.hw.init = &(struct clk_init_data){
1276 .name = "blsp1_qup4_spi_apps_clk_src",
1277 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1279 .ops = &clk_rcg2_ops,
1283 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
1284 .cmd_rcgr = 0x06000,
1285 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1287 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1288 .clkr.hw.init = &(struct clk_init_data){
1289 .name = "blsp1_qup5_i2c_apps_clk_src",
1290 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1292 .ops = &clk_rcg2_ops,
1296 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
1297 .cmd_rcgr = 0x06014,
1298 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1301 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1302 .clkr.hw.init = &(struct clk_init_data){
1303 .name = "blsp1_qup5_spi_apps_clk_src",
1304 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1306 .ops = &clk_rcg2_ops,
1310 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
1311 .cmd_rcgr = 0x07000,
1312 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1314 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1315 .clkr.hw.init = &(struct clk_init_data){
1316 .name = "blsp1_qup6_i2c_apps_clk_src",
1317 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1319 .ops = &clk_rcg2_ops,
1323 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
1324 .cmd_rcgr = 0x07014,
1325 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1328 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1329 .clkr.hw.init = &(struct clk_init_data){
1330 .name = "blsp1_qup6_spi_apps_clk_src",
1331 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1333 .ops = &clk_rcg2_ops,
1337 static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src[] = {
1338 F(3686400, P_GPLL0_DIV2, 1, 144, 15625),
1339 F(7372800, P_GPLL0_DIV2, 1, 288, 15625),
1340 F(14745600, P_GPLL0_DIV2, 1, 576, 15625),
1341 F(16000000, P_GPLL0_DIV2, 5, 1, 5),
1342 F(24000000, P_XO, 1, 0, 0),
1343 F(24000000, P_GPLL0, 1, 3, 100),
1344 F(25000000, P_GPLL0, 16, 1, 2),
1345 F(32000000, P_GPLL0, 1, 1, 25),
1346 F(40000000, P_GPLL0, 1, 1, 20),
1347 F(46400000, P_GPLL0, 1, 29, 500),
1348 F(48000000, P_GPLL0, 1, 3, 50),
1349 F(51200000, P_GPLL0, 1, 8, 125),
1350 F(56000000, P_GPLL0, 1, 7, 100),
1351 F(58982400, P_GPLL0, 1, 1152, 15625),
1352 F(60000000, P_GPLL0, 1, 3, 40),
1353 F(64000000, P_GPLL0, 12.5, 1, 1),
1357 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
1358 .cmd_rcgr = 0x02044,
1359 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1362 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1363 .clkr.hw.init = &(struct clk_init_data){
1364 .name = "blsp1_uart1_apps_clk_src",
1365 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1367 .ops = &clk_rcg2_ops,
1371 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
1372 .cmd_rcgr = 0x03034,
1373 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1376 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1377 .clkr.hw.init = &(struct clk_init_data){
1378 .name = "blsp1_uart2_apps_clk_src",
1379 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1381 .ops = &clk_rcg2_ops,
1385 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
1386 .cmd_rcgr = 0x04034,
1387 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1390 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1391 .clkr.hw.init = &(struct clk_init_data){
1392 .name = "blsp1_uart3_apps_clk_src",
1393 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1395 .ops = &clk_rcg2_ops,
1399 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
1400 .cmd_rcgr = 0x05034,
1401 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1404 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1405 .clkr.hw.init = &(struct clk_init_data){
1406 .name = "blsp1_uart4_apps_clk_src",
1407 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1409 .ops = &clk_rcg2_ops,
1413 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
1414 .cmd_rcgr = 0x06034,
1415 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1418 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1419 .clkr.hw.init = &(struct clk_init_data){
1420 .name = "blsp1_uart5_apps_clk_src",
1421 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1423 .ops = &clk_rcg2_ops,
1427 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
1428 .cmd_rcgr = 0x07034,
1429 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1432 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1433 .clkr.hw.init = &(struct clk_init_data){
1434 .name = "blsp1_uart6_apps_clk_src",
1435 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1437 .ops = &clk_rcg2_ops,
1441 static const struct freq_tbl ftbl_crypto_clk_src[] = {
1442 F(40000000, P_GPLL0_DIV2, 10, 0, 0),
1443 F(80000000, P_GPLL0, 10, 0, 0),
1444 F(100000000, P_GPLL0, 8, 0, 0),
1445 F(160000000, P_GPLL0, 5, 0, 0),
1449 static struct clk_rcg2 crypto_clk_src = {
1450 .cmd_rcgr = 0x16004,
1451 .freq_tbl = ftbl_crypto_clk_src,
1453 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1454 .clkr.hw.init = &(struct clk_init_data){
1455 .name = "crypto_clk_src",
1456 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1458 .ops = &clk_rcg2_ops,
1462 static const struct freq_tbl ftbl_gp_clk_src[] = {
1463 F(24000000, P_XO, 1, 0, 0),
1464 F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1465 F(100000000, P_GPLL0, 8, 0, 0),
1466 F(200000000, P_GPLL0, 4, 0, 0),
1467 F(266666666, P_GPLL0, 3, 0, 0),
1471 static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_sleep_clk[] = {
1472 { .fw_name = "xo" },
1473 { .hw = &gpll0.clkr.hw },
1474 { .hw = &gpll6.clkr.hw },
1475 { .hw = &gpll0_out_main_div2.hw },
1476 { .fw_name = "sleep_clk" },
1479 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map[] = {
1483 { P_GPLL0_DIV2, 4 },
1487 static struct clk_rcg2 gp1_clk_src = {
1488 .cmd_rcgr = 0x08004,
1489 .freq_tbl = ftbl_gp_clk_src,
1492 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1493 .clkr.hw.init = &(struct clk_init_data){
1494 .name = "gp1_clk_src",
1495 .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1497 .ops = &clk_rcg2_ops,
1501 static struct clk_rcg2 gp2_clk_src = {
1502 .cmd_rcgr = 0x09004,
1503 .freq_tbl = ftbl_gp_clk_src,
1506 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1507 .clkr.hw.init = &(struct clk_init_data){
1508 .name = "gp2_clk_src",
1509 .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1511 .ops = &clk_rcg2_ops,
1515 static struct clk_rcg2 gp3_clk_src = {
1516 .cmd_rcgr = 0x0a004,
1517 .freq_tbl = ftbl_gp_clk_src,
1520 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1521 .clkr.hw.init = &(struct clk_init_data){
1522 .name = "gp3_clk_src",
1523 .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1525 .ops = &clk_rcg2_ops,
1529 static struct clk_fixed_factor nss_ppe_cdiv_clk_src = {
1532 .hw.init = &(struct clk_init_data){
1533 .name = "nss_ppe_cdiv_clk_src",
1534 .parent_hws = (const struct clk_hw *[]){
1535 &nss_ppe_clk_src.clkr.hw },
1537 .ops = &clk_fixed_factor_ops,
1538 .flags = CLK_SET_RATE_PARENT,
1542 static struct clk_regmap_div nss_ubi0_div_clk_src = {
1547 .hw.init = &(struct clk_init_data){
1548 .name = "nss_ubi0_div_clk_src",
1549 .parent_hws = (const struct clk_hw *[]){
1550 &nss_ubi0_clk_src.clkr.hw },
1552 .ops = &clk_regmap_div_ro_ops,
1553 .flags = CLK_SET_RATE_PARENT,
1558 static const struct freq_tbl ftbl_pcie_aux_clk_src[] = {
1559 F(24000000, P_XO, 1, 0, 0),
1563 static const struct clk_parent_data gcc_xo_gpll0_core_pi_sleep_clk[] = {
1564 { .fw_name = "xo" },
1565 { .hw = &gpll0.clkr.hw },
1566 { .fw_name = "sleep_clk" },
1569 static const struct parent_map gcc_xo_gpll0_core_pi_sleep_clk_map[] = {
1575 static struct clk_rcg2 pcie0_aux_clk_src = {
1576 .cmd_rcgr = 0x75024,
1577 .freq_tbl = ftbl_pcie_aux_clk_src,
1580 .parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,
1581 .clkr.hw.init = &(struct clk_init_data){
1582 .name = "pcie0_aux_clk_src",
1583 .parent_data = gcc_xo_gpll0_core_pi_sleep_clk,
1585 .ops = &clk_rcg2_ops,
1589 static const struct clk_parent_data gcc_pcie20_phy0_pipe_clk_xo[] = {
1590 { .fw_name = "pcie20_phy0_pipe_clk" },
1591 { .fw_name = "xo" },
1594 static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = {
1595 { P_PCIE20_PHY0_PIPE, 0 },
1599 static struct clk_regmap_mux pcie0_pipe_clk_src = {
1603 .parent_map = gcc_pcie20_phy0_pipe_clk_xo_map,
1605 .hw.init = &(struct clk_init_data){
1606 .name = "pcie0_pipe_clk_src",
1607 .parent_data = gcc_pcie20_phy0_pipe_clk_xo,
1609 .ops = &clk_regmap_mux_closest_ops,
1610 .flags = CLK_SET_RATE_PARENT,
1615 static const struct freq_tbl ftbl_sdcc_apps_clk_src[] = {
1616 F(144000, P_XO, 16, 12, 125),
1617 F(400000, P_XO, 12, 1, 5),
1618 F(24000000, P_GPLL2, 12, 1, 4),
1619 F(48000000, P_GPLL2, 12, 1, 2),
1620 F(96000000, P_GPLL2, 12, 0, 0),
1621 F(177777778, P_GPLL0, 4.5, 0, 0),
1622 F(192000000, P_GPLL2, 6, 0, 0),
1623 F(384000000, P_GPLL2, 3, 0, 0),
1627 static const struct clk_parent_data
1628 gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = {
1629 { .fw_name = "xo" },
1630 { .hw = &gpll0.clkr.hw },
1631 { .hw = &gpll2.clkr.hw },
1632 { .hw = &gpll0_out_main_div2.hw },
1635 static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = {
1639 { P_GPLL0_DIV2, 4 },
1642 static struct clk_rcg2 sdcc1_apps_clk_src = {
1643 .cmd_rcgr = 0x42004,
1644 .freq_tbl = ftbl_sdcc_apps_clk_src,
1647 .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
1648 .clkr.hw.init = &(struct clk_init_data){
1649 .name = "sdcc1_apps_clk_src",
1650 .parent_data = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
1652 .ops = &clk_rcg2_floor_ops,
1656 static const struct freq_tbl ftbl_usb_aux_clk_src[] = {
1657 F(24000000, P_XO, 1, 0, 0),
1661 static struct clk_rcg2 usb0_aux_clk_src = {
1662 .cmd_rcgr = 0x3e05c,
1663 .freq_tbl = ftbl_usb_aux_clk_src,
1666 .parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,
1667 .clkr.hw.init = &(struct clk_init_data){
1668 .name = "usb0_aux_clk_src",
1669 .parent_data = gcc_xo_gpll0_core_pi_sleep_clk,
1671 .ops = &clk_rcg2_ops,
1675 static const struct freq_tbl ftbl_usb_mock_utmi_clk_src[] = {
1676 F(24000000, P_XO, 1, 0, 0),
1677 F(60000000, P_GPLL6, 6, 1, 3),
1681 static const struct clk_parent_data
1682 gcc_xo_gpll6_gpll0_gpll0_out_main_div2[] = {
1683 { .fw_name = "xo" },
1684 { .hw = &gpll6.clkr.hw },
1685 { .hw = &gpll0.clkr.hw },
1686 { .hw = &gpll0_out_main_div2.hw },
1689 static const struct parent_map gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map[] = {
1693 { P_GPLL0_DIV2, 4 },
1696 static struct clk_rcg2 usb0_mock_utmi_clk_src = {
1697 .cmd_rcgr = 0x3e020,
1698 .freq_tbl = ftbl_usb_mock_utmi_clk_src,
1701 .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1702 .clkr.hw.init = &(struct clk_init_data){
1703 .name = "usb0_mock_utmi_clk_src",
1704 .parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1706 .ops = &clk_rcg2_ops,
1710 static const struct clk_parent_data gcc_usb3phy_0_cc_pipe_clk_xo[] = {
1711 { .fw_name = "usb3phy_0_cc_pipe_clk" },
1712 { .fw_name = "xo" },
1715 static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = {
1716 { P_USB3PHY_0_PIPE, 0 },
1720 static struct clk_regmap_mux usb0_pipe_clk_src = {
1724 .parent_map = gcc_usb3phy_0_cc_pipe_clk_xo_map,
1726 .hw.init = &(struct clk_init_data){
1727 .name = "usb0_pipe_clk_src",
1728 .parent_data = gcc_usb3phy_0_cc_pipe_clk_xo,
1730 .ops = &clk_regmap_mux_closest_ops,
1731 .flags = CLK_SET_RATE_PARENT,
1736 static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = {
1737 F(80000000, P_GPLL0_DIV2, 5, 0, 0),
1738 F(160000000, P_GPLL0, 5, 0, 0),
1739 F(216000000, P_GPLL6, 5, 0, 0),
1740 F(308570000, P_GPLL6, 3.5, 0, 0),
1744 static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_div2[] = {
1746 { .hw = &gpll0.clkr.hw },
1747 { .hw = &gpll6.clkr.hw },
1748 { .hw = &gpll0_out_main_div2.hw },
1751 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_div2_map[] = {
1755 { P_GPLL0_DIV2, 4 },
1758 static struct clk_rcg2 sdcc1_ice_core_clk_src = {
1759 .cmd_rcgr = 0x5d000,
1760 .freq_tbl = ftbl_sdcc_ice_core_clk_src,
1763 .parent_map = gcc_xo_gpll0_gpll6_gpll0_div2_map,
1764 .clkr.hw.init = &(struct clk_init_data){
1765 .name = "sdcc1_ice_core_clk_src",
1766 .parent_data = gcc_xo_gpll0_gpll6_gpll0_div2,
1768 .ops = &clk_rcg2_ops,
1772 static const struct freq_tbl ftbl_qdss_stm_clk_src[] = {
1773 F(24000000, P_XO, 1, 0, 0),
1774 F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1775 F(100000000, P_GPLL0, 8, 0, 0),
1776 F(200000000, P_GPLL0, 4, 0, 0),
1780 static struct clk_rcg2 qdss_stm_clk_src = {
1781 .cmd_rcgr = 0x2902C,
1782 .freq_tbl = ftbl_qdss_stm_clk_src,
1784 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1785 .clkr.hw.init = &(struct clk_init_data){
1786 .name = "qdss_stm_clk_src",
1787 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1789 .ops = &clk_rcg2_ops,
1793 static const struct freq_tbl ftbl_qdss_traceclkin_clk_src[] = {
1794 F(80000000, P_GPLL0_DIV2, 5, 0, 0),
1795 F(160000000, P_GPLL0, 5, 0, 0),
1796 F(300000000, P_GPLL4, 4, 0, 0),
1800 static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll0_div2[] = {
1801 { .fw_name = "xo" },
1802 { .hw = &gpll4.clkr.hw },
1803 { .hw = &gpll0.clkr.hw },
1804 { .hw = &gpll0_out_main_div2.hw },
1807 static const struct parent_map gcc_xo_gpll4_gpll0_gpll0_div2_map[] = {
1811 { P_GPLL0_DIV2, 4 },
1814 static struct clk_rcg2 qdss_traceclkin_clk_src = {
1815 .cmd_rcgr = 0x29048,
1816 .freq_tbl = ftbl_qdss_traceclkin_clk_src,
1818 .parent_map = gcc_xo_gpll4_gpll0_gpll0_div2_map,
1819 .clkr.hw.init = &(struct clk_init_data){
1820 .name = "qdss_traceclkin_clk_src",
1821 .parent_data = gcc_xo_gpll4_gpll0_gpll0_div2,
1823 .ops = &clk_rcg2_ops,
1827 static struct clk_rcg2 usb1_mock_utmi_clk_src = {
1828 .cmd_rcgr = 0x3f020,
1829 .freq_tbl = ftbl_usb_mock_utmi_clk_src,
1832 .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1833 .clkr.hw.init = &(struct clk_init_data){
1834 .name = "usb1_mock_utmi_clk_src",
1835 .parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1837 .ops = &clk_rcg2_ops,
1841 static struct clk_branch gcc_adss_pwm_clk = {
1842 .halt_reg = 0x1c020,
1844 .enable_reg = 0x1c020,
1845 .enable_mask = BIT(0),
1846 .hw.init = &(struct clk_init_data){
1847 .name = "gcc_adss_pwm_clk",
1848 .parent_hws = (const struct clk_hw *[]){
1849 &adss_pwm_clk_src.clkr.hw },
1851 .flags = CLK_SET_RATE_PARENT,
1852 .ops = &clk_branch2_ops,
1857 static struct clk_branch gcc_apss_ahb_clk = {
1858 .halt_reg = 0x4601c,
1859 .halt_check = BRANCH_HALT_VOTED,
1861 .enable_reg = 0x0b004,
1862 .enable_mask = BIT(14),
1863 .hw.init = &(struct clk_init_data){
1864 .name = "gcc_apss_ahb_clk",
1865 .parent_hws = (const struct clk_hw *[]){
1866 &apss_ahb_postdiv_clk_src.clkr.hw },
1868 .flags = CLK_SET_RATE_PARENT,
1869 .ops = &clk_branch2_ops,
1874 static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src[] = {
1875 F(24000000, P_XO, 1, 0, 0),
1876 F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1877 F(100000000, P_GPLL0, 8, 0, 0),
1878 F(133333333, P_GPLL0, 6, 0, 0),
1879 F(160000000, P_GPLL0, 5, 0, 0),
1880 F(200000000, P_GPLL0, 4, 0, 0),
1881 F(266666667, P_GPLL0, 3, 0, 0),
1885 static struct clk_rcg2 system_noc_bfdcd_clk_src = {
1886 .cmd_rcgr = 0x26004,
1887 .freq_tbl = ftbl_system_noc_bfdcd_clk_src,
1889 .parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
1890 .clkr.hw.init = &(struct clk_init_data){
1891 .name = "system_noc_bfdcd_clk_src",
1892 .parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
1894 .ops = &clk_rcg2_ops,
1898 static const struct freq_tbl ftbl_ubi32_mem_noc_bfdcd_clk_src[] = {
1899 F(24000000, P_XO, 1, 0, 0),
1900 F(307670000, P_BIAS_PLL_NSS_NOC, 1.5, 0, 0),
1901 F(533333333, P_GPLL0, 1.5, 0, 0),
1905 static const struct clk_parent_data
1906 gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk[] = {
1907 { .fw_name = "xo" },
1908 { .hw = &gpll0.clkr.hw },
1909 { .hw = &gpll2.clkr.hw },
1910 { .fw_name = "bias_pll_nss_noc_clk" },
1913 static const struct parent_map gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk_map[] = {
1917 { P_BIAS_PLL_NSS_NOC, 4 },
1920 static struct clk_rcg2 ubi32_mem_noc_bfdcd_clk_src = {
1921 .cmd_rcgr = 0x68088,
1922 .freq_tbl = ftbl_ubi32_mem_noc_bfdcd_clk_src,
1924 .parent_map = gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk_map,
1925 .clkr.hw.init = &(struct clk_init_data){
1926 .name = "ubi32_mem_noc_bfdcd_clk_src",
1927 .parent_data = gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk,
1929 .ops = &clk_rcg2_ops,
1933 static struct clk_branch gcc_apss_axi_clk = {
1934 .halt_reg = 0x46020,
1935 .halt_check = BRANCH_HALT_VOTED,
1937 .enable_reg = 0x0b004,
1938 .enable_mask = BIT(13),
1939 .hw.init = &(struct clk_init_data){
1940 .name = "gcc_apss_axi_clk",
1941 .parent_hws = (const struct clk_hw *[]){
1942 &apss_axi_clk_src.clkr.hw },
1944 .flags = CLK_SET_RATE_PARENT,
1945 .ops = &clk_branch2_ops,
1950 static struct clk_branch gcc_blsp1_ahb_clk = {
1951 .halt_reg = 0x01008,
1952 .halt_check = BRANCH_HALT_VOTED,
1954 .enable_reg = 0x0b004,
1955 .enable_mask = BIT(10),
1956 .hw.init = &(struct clk_init_data){
1957 .name = "gcc_blsp1_ahb_clk",
1958 .parent_hws = (const struct clk_hw *[]){
1959 &pcnoc_bfdcd_clk_src.clkr.hw },
1961 .flags = CLK_SET_RATE_PARENT,
1962 .ops = &clk_branch2_ops,
1967 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1968 .halt_reg = 0x02008,
1970 .enable_reg = 0x02008,
1971 .enable_mask = BIT(0),
1972 .hw.init = &(struct clk_init_data){
1973 .name = "gcc_blsp1_qup1_i2c_apps_clk",
1974 .parent_hws = (const struct clk_hw *[]){
1975 &blsp1_qup1_i2c_apps_clk_src.clkr.hw },
1977 .flags = CLK_SET_RATE_PARENT,
1978 .ops = &clk_branch2_ops,
1983 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1984 .halt_reg = 0x02004,
1986 .enable_reg = 0x02004,
1987 .enable_mask = BIT(0),
1988 .hw.init = &(struct clk_init_data){
1989 .name = "gcc_blsp1_qup1_spi_apps_clk",
1990 .parent_hws = (const struct clk_hw *[]){
1991 &blsp1_qup1_spi_apps_clk_src.clkr.hw },
1993 .flags = CLK_SET_RATE_PARENT,
1994 .ops = &clk_branch2_ops,
1999 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
2000 .halt_reg = 0x03010,
2002 .enable_reg = 0x03010,
2003 .enable_mask = BIT(0),
2004 .hw.init = &(struct clk_init_data){
2005 .name = "gcc_blsp1_qup2_i2c_apps_clk",
2006 .parent_hws = (const struct clk_hw *[]){
2007 &blsp1_qup2_i2c_apps_clk_src.clkr.hw },
2009 .flags = CLK_SET_RATE_PARENT,
2010 .ops = &clk_branch2_ops,
2015 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
2016 .halt_reg = 0x0300c,
2018 .enable_reg = 0x0300c,
2019 .enable_mask = BIT(0),
2020 .hw.init = &(struct clk_init_data){
2021 .name = "gcc_blsp1_qup2_spi_apps_clk",
2022 .parent_hws = (const struct clk_hw *[]){
2023 &blsp1_qup2_spi_apps_clk_src.clkr.hw },
2025 .flags = CLK_SET_RATE_PARENT,
2026 .ops = &clk_branch2_ops,
2031 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
2032 .halt_reg = 0x04010,
2034 .enable_reg = 0x04010,
2035 .enable_mask = BIT(0),
2036 .hw.init = &(struct clk_init_data){
2037 .name = "gcc_blsp1_qup3_i2c_apps_clk",
2038 .parent_hws = (const struct clk_hw *[]){
2039 &blsp1_qup3_i2c_apps_clk_src.clkr.hw },
2041 .flags = CLK_SET_RATE_PARENT,
2042 .ops = &clk_branch2_ops,
2047 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
2048 .halt_reg = 0x0400c,
2050 .enable_reg = 0x0400c,
2051 .enable_mask = BIT(0),
2052 .hw.init = &(struct clk_init_data){
2053 .name = "gcc_blsp1_qup3_spi_apps_clk",
2054 .parent_hws = (const struct clk_hw *[]){
2055 &blsp1_qup3_spi_apps_clk_src.clkr.hw },
2057 .flags = CLK_SET_RATE_PARENT,
2058 .ops = &clk_branch2_ops,
2063 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
2064 .halt_reg = 0x05010,
2066 .enable_reg = 0x05010,
2067 .enable_mask = BIT(0),
2068 .hw.init = &(struct clk_init_data){
2069 .name = "gcc_blsp1_qup4_i2c_apps_clk",
2070 .parent_hws = (const struct clk_hw *[]){
2071 &blsp1_qup4_i2c_apps_clk_src.clkr.hw },
2073 .flags = CLK_SET_RATE_PARENT,
2074 .ops = &clk_branch2_ops,
2079 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
2080 .halt_reg = 0x0500c,
2082 .enable_reg = 0x0500c,
2083 .enable_mask = BIT(0),
2084 .hw.init = &(struct clk_init_data){
2085 .name = "gcc_blsp1_qup4_spi_apps_clk",
2086 .parent_hws = (const struct clk_hw *[]){
2087 &blsp1_qup4_spi_apps_clk_src.clkr.hw },
2089 .flags = CLK_SET_RATE_PARENT,
2090 .ops = &clk_branch2_ops,
2095 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
2096 .halt_reg = 0x06010,
2098 .enable_reg = 0x06010,
2099 .enable_mask = BIT(0),
2100 .hw.init = &(struct clk_init_data){
2101 .name = "gcc_blsp1_qup5_i2c_apps_clk",
2102 .parent_hws = (const struct clk_hw *[]){
2103 &blsp1_qup5_i2c_apps_clk_src.clkr.hw },
2105 .flags = CLK_SET_RATE_PARENT,
2106 .ops = &clk_branch2_ops,
2111 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
2112 .halt_reg = 0x0600c,
2114 .enable_reg = 0x0600c,
2115 .enable_mask = BIT(0),
2116 .hw.init = &(struct clk_init_data){
2117 .name = "gcc_blsp1_qup5_spi_apps_clk",
2118 .parent_hws = (const struct clk_hw *[]){
2119 &blsp1_qup5_spi_apps_clk_src.clkr.hw },
2121 .flags = CLK_SET_RATE_PARENT,
2122 .ops = &clk_branch2_ops,
2127 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
2128 .halt_reg = 0x0700c,
2130 .enable_reg = 0x0700c,
2131 .enable_mask = BIT(0),
2132 .hw.init = &(struct clk_init_data){
2133 .name = "gcc_blsp1_qup6_spi_apps_clk",
2134 .parent_hws = (const struct clk_hw *[]){
2135 &blsp1_qup6_spi_apps_clk_src.clkr.hw },
2137 .flags = CLK_SET_RATE_PARENT,
2138 .ops = &clk_branch2_ops,
2143 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
2144 .halt_reg = 0x0203c,
2146 .enable_reg = 0x0203c,
2147 .enable_mask = BIT(0),
2148 .hw.init = &(struct clk_init_data){
2149 .name = "gcc_blsp1_uart1_apps_clk",
2150 .parent_hws = (const struct clk_hw *[]){
2151 &blsp1_uart1_apps_clk_src.clkr.hw },
2153 .flags = CLK_SET_RATE_PARENT,
2154 .ops = &clk_branch2_ops,
2159 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
2160 .halt_reg = 0x0302c,
2162 .enable_reg = 0x0302c,
2163 .enable_mask = BIT(0),
2164 .hw.init = &(struct clk_init_data){
2165 .name = "gcc_blsp1_uart2_apps_clk",
2166 .parent_hws = (const struct clk_hw *[]){
2167 &blsp1_uart2_apps_clk_src.clkr.hw },
2169 .flags = CLK_SET_RATE_PARENT,
2170 .ops = &clk_branch2_ops,
2175 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
2176 .halt_reg = 0x0402c,
2178 .enable_reg = 0x0402c,
2179 .enable_mask = BIT(0),
2180 .hw.init = &(struct clk_init_data){
2181 .name = "gcc_blsp1_uart3_apps_clk",
2182 .parent_hws = (const struct clk_hw *[]){
2183 &blsp1_uart3_apps_clk_src.clkr.hw },
2185 .flags = CLK_SET_RATE_PARENT,
2186 .ops = &clk_branch2_ops,
2191 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
2192 .halt_reg = 0x0502c,
2194 .enable_reg = 0x0502c,
2195 .enable_mask = BIT(0),
2196 .hw.init = &(struct clk_init_data){
2197 .name = "gcc_blsp1_uart4_apps_clk",
2198 .parent_hws = (const struct clk_hw *[]){
2199 &blsp1_uart4_apps_clk_src.clkr.hw },
2201 .flags = CLK_SET_RATE_PARENT,
2202 .ops = &clk_branch2_ops,
2207 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
2208 .halt_reg = 0x0602c,
2210 .enable_reg = 0x0602c,
2211 .enable_mask = BIT(0),
2212 .hw.init = &(struct clk_init_data){
2213 .name = "gcc_blsp1_uart5_apps_clk",
2214 .parent_hws = (const struct clk_hw *[]){
2215 &blsp1_uart5_apps_clk_src.clkr.hw },
2217 .flags = CLK_SET_RATE_PARENT,
2218 .ops = &clk_branch2_ops,
2223 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
2224 .halt_reg = 0x0702c,
2226 .enable_reg = 0x0702c,
2227 .enable_mask = BIT(0),
2228 .hw.init = &(struct clk_init_data){
2229 .name = "gcc_blsp1_uart6_apps_clk",
2230 .parent_hws = (const struct clk_hw *[]){
2231 &blsp1_uart6_apps_clk_src.clkr.hw },
2233 .flags = CLK_SET_RATE_PARENT,
2234 .ops = &clk_branch2_ops,
2239 static struct clk_branch gcc_crypto_ahb_clk = {
2240 .halt_reg = 0x16024,
2241 .halt_check = BRANCH_HALT_VOTED,
2243 .enable_reg = 0x0b004,
2244 .enable_mask = BIT(0),
2245 .hw.init = &(struct clk_init_data){
2246 .name = "gcc_crypto_ahb_clk",
2247 .parent_hws = (const struct clk_hw *[]){
2248 &pcnoc_bfdcd_clk_src.clkr.hw },
2250 .flags = CLK_SET_RATE_PARENT,
2251 .ops = &clk_branch2_ops,
2256 static struct clk_branch gcc_crypto_axi_clk = {
2257 .halt_reg = 0x16020,
2258 .halt_check = BRANCH_HALT_VOTED,
2260 .enable_reg = 0x0b004,
2261 .enable_mask = BIT(1),
2262 .hw.init = &(struct clk_init_data){
2263 .name = "gcc_crypto_axi_clk",
2264 .parent_hws = (const struct clk_hw *[]){
2265 &pcnoc_bfdcd_clk_src.clkr.hw },
2267 .flags = CLK_SET_RATE_PARENT,
2268 .ops = &clk_branch2_ops,
2273 static struct clk_branch gcc_crypto_clk = {
2274 .halt_reg = 0x1601c,
2275 .halt_check = BRANCH_HALT_VOTED,
2277 .enable_reg = 0x0b004,
2278 .enable_mask = BIT(2),
2279 .hw.init = &(struct clk_init_data){
2280 .name = "gcc_crypto_clk",
2281 .parent_hws = (const struct clk_hw *[]){
2282 &crypto_clk_src.clkr.hw },
2284 .flags = CLK_SET_RATE_PARENT,
2285 .ops = &clk_branch2_ops,
2290 static struct clk_fixed_factor gpll6_out_main_div2 = {
2293 .hw.init = &(struct clk_init_data){
2294 .name = "gpll6_out_main_div2",
2295 .parent_hws = (const struct clk_hw *[]){
2296 &gpll6_main.clkr.hw },
2298 .ops = &clk_fixed_factor_ops,
2299 .flags = CLK_SET_RATE_PARENT,
2303 static struct clk_branch gcc_xo_clk = {
2304 .halt_reg = 0x30030,
2306 .enable_reg = 0x30030,
2307 .enable_mask = BIT(0),
2308 .hw.init = &(struct clk_init_data){
2309 .name = "gcc_xo_clk",
2310 .parent_hws = (const struct clk_hw *[]){
2311 &gcc_xo_clk_src.clkr.hw },
2313 .flags = CLK_SET_RATE_PARENT,
2314 .ops = &clk_branch2_ops,
2319 static struct clk_branch gcc_gp1_clk = {
2320 .halt_reg = 0x08000,
2322 .enable_reg = 0x08000,
2323 .enable_mask = BIT(0),
2324 .hw.init = &(struct clk_init_data){
2325 .name = "gcc_gp1_clk",
2326 .parent_hws = (const struct clk_hw *[]){
2327 &gp1_clk_src.clkr.hw },
2329 .flags = CLK_SET_RATE_PARENT,
2330 .ops = &clk_branch2_ops,
2335 static struct clk_branch gcc_gp2_clk = {
2336 .halt_reg = 0x09000,
2338 .enable_reg = 0x09000,
2339 .enable_mask = BIT(0),
2340 .hw.init = &(struct clk_init_data){
2341 .name = "gcc_gp2_clk",
2342 .parent_hws = (const struct clk_hw *[]){
2343 &gp2_clk_src.clkr.hw },
2345 .flags = CLK_SET_RATE_PARENT,
2346 .ops = &clk_branch2_ops,
2351 static struct clk_branch gcc_gp3_clk = {
2352 .halt_reg = 0x0a000,
2354 .enable_reg = 0x0a000,
2355 .enable_mask = BIT(0),
2356 .hw.init = &(struct clk_init_data){
2357 .name = "gcc_gp3_clk",
2358 .parent_hws = (const struct clk_hw *[]){
2359 &gp3_clk_src.clkr.hw },
2361 .flags = CLK_SET_RATE_PARENT,
2362 .ops = &clk_branch2_ops,
2367 static struct clk_branch gcc_mdio_ahb_clk = {
2368 .halt_reg = 0x58004,
2370 .enable_reg = 0x58004,
2371 .enable_mask = BIT(0),
2372 .hw.init = &(struct clk_init_data){
2373 .name = "gcc_mdio_ahb_clk",
2374 .parent_hws = (const struct clk_hw *[]){
2375 &pcnoc_bfdcd_clk_src.clkr.hw },
2377 .flags = CLK_SET_RATE_PARENT,
2378 .ops = &clk_branch2_ops,
2383 static struct clk_branch gcc_crypto_ppe_clk = {
2384 .halt_reg = 0x68310,
2386 .enable_reg = 0x68310,
2387 .enable_mask = BIT(0),
2388 .hw.init = &(struct clk_init_data){
2389 .name = "gcc_crypto_ppe_clk",
2390 .parent_hws = (const struct clk_hw *[]){
2391 &nss_ppe_clk_src.clkr.hw },
2393 .flags = CLK_SET_RATE_PARENT,
2394 .ops = &clk_branch2_ops,
2399 static struct clk_branch gcc_nss_ce_apb_clk = {
2400 .halt_reg = 0x68174,
2402 .enable_reg = 0x68174,
2403 .enable_mask = BIT(0),
2404 .hw.init = &(struct clk_init_data){
2405 .name = "gcc_nss_ce_apb_clk",
2406 .parent_hws = (const struct clk_hw *[]){
2407 &nss_ce_clk_src.clkr.hw },
2409 .flags = CLK_SET_RATE_PARENT,
2410 .ops = &clk_branch2_ops,
2415 static struct clk_branch gcc_nss_ce_axi_clk = {
2416 .halt_reg = 0x68170,
2418 .enable_reg = 0x68170,
2419 .enable_mask = BIT(0),
2420 .hw.init = &(struct clk_init_data){
2421 .name = "gcc_nss_ce_axi_clk",
2422 .parent_hws = (const struct clk_hw *[]){
2423 &nss_ce_clk_src.clkr.hw },
2425 .flags = CLK_SET_RATE_PARENT,
2426 .ops = &clk_branch2_ops,
2431 static struct clk_branch gcc_nss_cfg_clk = {
2432 .halt_reg = 0x68160,
2434 .enable_reg = 0x68160,
2435 .enable_mask = BIT(0),
2436 .hw.init = &(struct clk_init_data){
2437 .name = "gcc_nss_cfg_clk",
2438 .parent_hws = (const struct clk_hw *[]){
2439 &pcnoc_bfdcd_clk_src.clkr.hw },
2441 .flags = CLK_SET_RATE_PARENT,
2442 .ops = &clk_branch2_ops,
2447 static struct clk_branch gcc_nss_crypto_clk = {
2448 .halt_reg = 0x68164,
2450 .enable_reg = 0x68164,
2451 .enable_mask = BIT(0),
2452 .hw.init = &(struct clk_init_data){
2453 .name = "gcc_nss_crypto_clk",
2454 .parent_hws = (const struct clk_hw *[]){
2455 &nss_crypto_clk_src.clkr.hw },
2457 .flags = CLK_SET_RATE_PARENT,
2458 .ops = &clk_branch2_ops,
2463 static struct clk_branch gcc_nss_csr_clk = {
2464 .halt_reg = 0x68318,
2466 .enable_reg = 0x68318,
2467 .enable_mask = BIT(0),
2468 .hw.init = &(struct clk_init_data){
2469 .name = "gcc_nss_csr_clk",
2470 .parent_hws = (const struct clk_hw *[]){
2471 &nss_ce_clk_src.clkr.hw },
2473 .flags = CLK_SET_RATE_PARENT,
2474 .ops = &clk_branch2_ops,
2479 static struct clk_branch gcc_nss_edma_cfg_clk = {
2480 .halt_reg = 0x6819C,
2482 .enable_reg = 0x6819C,
2483 .enable_mask = BIT(0),
2484 .hw.init = &(struct clk_init_data){
2485 .name = "gcc_nss_edma_cfg_clk",
2486 .parent_hws = (const struct clk_hw *[]){
2487 &nss_ppe_clk_src.clkr.hw },
2489 .flags = CLK_SET_RATE_PARENT,
2490 .ops = &clk_branch2_ops,
2495 static struct clk_branch gcc_nss_edma_clk = {
2496 .halt_reg = 0x68198,
2498 .enable_reg = 0x68198,
2499 .enable_mask = BIT(0),
2500 .hw.init = &(struct clk_init_data){
2501 .name = "gcc_nss_edma_clk",
2502 .parent_hws = (const struct clk_hw *[]){
2503 &nss_ppe_clk_src.clkr.hw },
2505 .flags = CLK_SET_RATE_PARENT,
2506 .ops = &clk_branch2_ops,
2511 static struct clk_branch gcc_nss_noc_clk = {
2512 .halt_reg = 0x68168,
2514 .enable_reg = 0x68168,
2515 .enable_mask = BIT(0),
2516 .hw.init = &(struct clk_init_data){
2517 .name = "gcc_nss_noc_clk",
2518 .parent_hws = (const struct clk_hw *[]){
2519 &snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2521 .flags = CLK_SET_RATE_PARENT,
2522 .ops = &clk_branch2_ops,
2527 static struct clk_branch gcc_ubi0_utcm_clk = {
2528 .halt_reg = 0x2606c,
2530 .enable_reg = 0x2606c,
2531 .enable_mask = BIT(0),
2532 .hw.init = &(struct clk_init_data){
2533 .name = "gcc_ubi0_utcm_clk",
2534 .parent_hws = (const struct clk_hw *[]){
2535 &snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2537 .flags = CLK_SET_RATE_PARENT,
2538 .ops = &clk_branch2_ops,
2543 static struct clk_branch gcc_snoc_nssnoc_clk = {
2544 .halt_reg = 0x26070,
2546 .enable_reg = 0x26070,
2547 .enable_mask = BIT(0),
2548 .hw.init = &(struct clk_init_data){
2549 .name = "gcc_snoc_nssnoc_clk",
2550 .parent_hws = (const struct clk_hw *[]){
2551 &snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2553 .flags = CLK_SET_RATE_PARENT,
2554 .ops = &clk_branch2_ops,
2559 static const struct freq_tbl ftbl_wcss_ahb_clk_src[] = {
2560 F(24000000, P_XO, 1, 0, 0),
2561 F(133333333, P_GPLL0, 6, 0, 0),
2565 static const struct freq_tbl ftbl_q6_axi_clk_src[] = {
2566 F(24000000, P_XO, 1, 0, 0),
2567 F(400000000, P_GPLL0, 2, 0, 0),
2571 static struct clk_rcg2 wcss_ahb_clk_src = {
2572 .cmd_rcgr = 0x59020,
2573 .freq_tbl = ftbl_wcss_ahb_clk_src,
2575 .parent_map = gcc_xo_gpll0_map,
2576 .clkr.hw.init = &(struct clk_init_data){
2577 .name = "wcss_ahb_clk_src",
2578 .parent_data = gcc_xo_gpll0,
2580 .ops = &clk_rcg2_ops,
2584 static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll4_gpll6[] = {
2585 { .fw_name = "xo" },
2586 { .hw = &gpll0.clkr.hw },
2587 { .hw = &gpll2.clkr.hw },
2588 { .hw = &gpll4.clkr.hw },
2589 { .hw = &gpll6.clkr.hw },
2592 static const struct parent_map gcc_xo_gpll0_gpll2_gpll4_gpll6_map[] = {
2600 static struct clk_rcg2 q6_axi_clk_src = {
2601 .cmd_rcgr = 0x59120,
2602 .freq_tbl = ftbl_q6_axi_clk_src,
2604 .parent_map = gcc_xo_gpll0_gpll2_gpll4_gpll6_map,
2605 .clkr.hw.init = &(struct clk_init_data){
2606 .name = "q6_axi_clk_src",
2607 .parent_data = gcc_xo_gpll0_gpll2_gpll4_gpll6,
2609 .ops = &clk_rcg2_ops,
2613 static const struct freq_tbl ftbl_lpass_core_axim_clk_src[] = {
2614 F(24000000, P_XO, 1, 0, 0),
2615 F(100000000, P_GPLL0, 8, 0, 0),
2619 static struct clk_rcg2 lpass_core_axim_clk_src = {
2620 .cmd_rcgr = 0x1F020,
2621 .freq_tbl = ftbl_lpass_core_axim_clk_src,
2623 .parent_map = gcc_xo_gpll0_map,
2624 .clkr.hw.init = &(struct clk_init_data){
2625 .name = "lpass_core_axim_clk_src",
2626 .parent_data = gcc_xo_gpll0,
2628 .ops = &clk_rcg2_ops,
2632 static const struct freq_tbl ftbl_lpass_snoc_cfg_clk_src[] = {
2633 F(24000000, P_XO, 1, 0, 0),
2634 F(266666667, P_GPLL0, 3, 0, 0),
2638 static struct clk_rcg2 lpass_snoc_cfg_clk_src = {
2639 .cmd_rcgr = 0x1F040,
2640 .freq_tbl = ftbl_lpass_snoc_cfg_clk_src,
2642 .parent_map = gcc_xo_gpll0_map,
2643 .clkr.hw.init = &(struct clk_init_data){
2644 .name = "lpass_snoc_cfg_clk_src",
2645 .parent_data = gcc_xo_gpll0,
2647 .ops = &clk_rcg2_ops,
2651 static const struct freq_tbl ftbl_lpass_q6_axim_clk_src[] = {
2652 F(24000000, P_XO, 1, 0, 0),
2653 F(400000000, P_GPLL0, 2, 0, 0),
2657 static struct clk_rcg2 lpass_q6_axim_clk_src = {
2658 .cmd_rcgr = 0x1F008,
2659 .freq_tbl = ftbl_lpass_q6_axim_clk_src,
2661 .parent_map = gcc_xo_gpll0_map,
2662 .clkr.hw.init = &(struct clk_init_data){
2663 .name = "lpass_q6_axim_clk_src",
2664 .parent_data = gcc_xo_gpll0,
2666 .ops = &clk_rcg2_ops,
2670 static struct freq_tbl ftbl_rbcpr_wcss_clk_src[] = {
2671 F(24000000, P_XO, 1, 0, 0),
2672 F(50000000, P_GPLL0, 16, 0, 0),
2676 static struct clk_rcg2 rbcpr_wcss_clk_src = {
2677 .cmd_rcgr = 0x3a00c,
2678 .freq_tbl = ftbl_rbcpr_wcss_clk_src,
2680 .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
2681 .clkr.hw.init = &(struct clk_init_data){
2682 .name = "rbcpr_wcss_clk_src",
2683 .parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
2685 .ops = &clk_rcg2_ops,
2689 static struct clk_branch gcc_lpass_core_axim_clk = {
2690 .halt_reg = 0x1F028,
2692 .enable_reg = 0x1F028,
2693 .enable_mask = BIT(0),
2694 .hw.init = &(struct clk_init_data){
2695 .name = "gcc_lpass_core_axim_clk",
2696 .parent_hws = (const struct clk_hw *[]){
2697 &lpass_core_axim_clk_src.clkr.hw },
2699 .flags = CLK_SET_RATE_PARENT,
2700 .ops = &clk_branch2_ops,
2705 static struct clk_branch gcc_lpass_snoc_cfg_clk = {
2706 .halt_reg = 0x1F048,
2708 .enable_reg = 0x1F048,
2709 .enable_mask = BIT(0),
2710 .hw.init = &(struct clk_init_data){
2711 .name = "gcc_lpass_snoc_cfg_clk",
2712 .parent_hws = (const struct clk_hw *[]){
2713 &lpass_snoc_cfg_clk_src.clkr.hw },
2715 .flags = CLK_SET_RATE_PARENT,
2716 .ops = &clk_branch2_ops,
2721 static struct clk_branch gcc_lpass_q6_axim_clk = {
2722 .halt_reg = 0x1F010,
2724 .enable_reg = 0x1F010,
2725 .enable_mask = BIT(0),
2726 .hw.init = &(struct clk_init_data){
2727 .name = "gcc_lpass_q6_axim_clk",
2728 .parent_hws = (const struct clk_hw *[]){
2729 &lpass_q6_axim_clk_src.clkr.hw },
2731 .flags = CLK_SET_RATE_PARENT,
2732 .ops = &clk_branch2_ops,
2737 static struct clk_branch gcc_lpass_q6_atbm_at_clk = {
2738 .halt_reg = 0x1F018,
2740 .enable_reg = 0x1F018,
2741 .enable_mask = BIT(0),
2742 .hw.init = &(struct clk_init_data){
2743 .name = "gcc_lpass_q6_atbm_at_clk",
2744 .parent_hws = (const struct clk_hw *[]){
2745 &qdss_at_clk_src.clkr.hw },
2747 .flags = CLK_SET_RATE_PARENT,
2748 .ops = &clk_branch2_ops,
2753 static struct clk_branch gcc_lpass_q6_pclkdbg_clk = {
2754 .halt_reg = 0x1F01C,
2756 .enable_reg = 0x1F01C,
2757 .enable_mask = BIT(0),
2758 .hw.init = &(struct clk_init_data){
2759 .name = "gcc_lpass_q6_pclkdbg_clk",
2760 .parent_hws = (const struct clk_hw *[]){
2761 &qdss_dap_sync_clk_src.hw },
2763 .flags = CLK_SET_RATE_PARENT,
2764 .ops = &clk_branch2_ops,
2769 static struct clk_branch gcc_lpass_q6ss_tsctr_1to2_clk = {
2770 .halt_reg = 0x1F014,
2772 .enable_reg = 0x1F014,
2773 .enable_mask = BIT(0),
2774 .hw.init = &(struct clk_init_data){
2775 .name = "gcc_lpass_q6ss_tsctr_1to2_clk",
2776 .parent_hws = (const struct clk_hw *[]){
2777 &qdss_tsctr_div2_clk_src.hw },
2779 .flags = CLK_SET_RATE_PARENT,
2780 .ops = &clk_branch2_ops,
2785 static struct clk_branch gcc_lpass_q6ss_trig_clk = {
2786 .halt_reg = 0x1F038,
2788 .enable_reg = 0x1F038,
2789 .enable_mask = BIT(0),
2790 .hw.init = &(struct clk_init_data){
2791 .name = "gcc_lpass_q6ss_trig_clk",
2792 .parent_hws = (const struct clk_hw *[]){
2793 &qdss_dap_sync_clk_src.hw },
2795 .flags = CLK_SET_RATE_PARENT,
2796 .ops = &clk_branch2_ops,
2801 static struct clk_branch gcc_lpass_tbu_clk = {
2802 .halt_reg = 0x12094,
2804 .enable_reg = 0xb00c,
2805 .enable_mask = BIT(10),
2806 .hw.init = &(struct clk_init_data){
2807 .name = "gcc_lpass_tbu_clk",
2808 .parent_hws = (const struct clk_hw *[]){
2809 &lpass_q6_axim_clk_src.clkr.hw },
2811 .flags = CLK_SET_RATE_PARENT,
2812 .ops = &clk_branch2_ops,
2817 static struct clk_branch gcc_pcnoc_lpass_clk = {
2818 .halt_reg = 0x27020,
2820 .enable_reg = 0x27020,
2821 .enable_mask = BIT(0),
2822 .hw.init = &(struct clk_init_data){
2823 .name = "gcc_pcnoc_lpass_clk",
2824 .parent_hws = (const struct clk_hw *[]){
2825 &lpass_core_axim_clk_src.clkr.hw },
2827 .flags = CLK_SET_RATE_PARENT,
2828 .ops = &clk_branch2_ops,
2833 static struct clk_branch gcc_mem_noc_lpass_clk = {
2834 .halt_reg = 0x1D044,
2836 .enable_reg = 0x1D044,
2837 .enable_mask = BIT(0),
2838 .hw.init = &(struct clk_init_data){
2839 .name = "gcc_mem_noc_lpass_clk",
2840 .parent_hws = (const struct clk_hw *[]){
2841 &lpass_q6_axim_clk_src.clkr.hw },
2843 .flags = CLK_SET_RATE_PARENT,
2844 .ops = &clk_branch2_ops,
2849 static struct clk_branch gcc_snoc_lpass_cfg_clk = {
2850 .halt_reg = 0x26074,
2852 .enable_reg = 0x26074,
2853 .enable_mask = BIT(0),
2854 .hw.init = &(struct clk_init_data){
2855 .name = "gcc_snoc_lpass_cfg_clk",
2856 .parent_hws = (const struct clk_hw *[]){
2857 &lpass_snoc_cfg_clk_src.clkr.hw },
2859 .flags = CLK_SET_RATE_PARENT,
2860 .ops = &clk_branch2_ops,
2865 static struct clk_branch gcc_mem_noc_ubi32_clk = {
2866 .halt_reg = 0x1D03C,
2868 .enable_reg = 0x1D03C,
2869 .enable_mask = BIT(0),
2870 .hw.init = &(struct clk_init_data){
2871 .name = "gcc_mem_noc_ubi32_clk",
2872 .parent_hws = (const struct clk_hw *[]){
2873 &ubi32_mem_noc_bfdcd_clk_src.clkr.hw },
2875 .flags = CLK_SET_RATE_PARENT,
2876 .ops = &clk_branch2_ops,
2881 static struct clk_branch gcc_nss_port1_rx_clk = {
2882 .halt_reg = 0x68240,
2884 .enable_reg = 0x68240,
2885 .enable_mask = BIT(0),
2886 .hw.init = &(struct clk_init_data){
2887 .name = "gcc_nss_port1_rx_clk",
2888 .parent_hws = (const struct clk_hw *[]){
2889 &nss_port1_rx_div_clk_src.clkr.hw },
2891 .flags = CLK_SET_RATE_PARENT,
2892 .ops = &clk_branch2_ops,
2897 static struct clk_branch gcc_nss_port1_tx_clk = {
2898 .halt_reg = 0x68244,
2900 .enable_reg = 0x68244,
2901 .enable_mask = BIT(0),
2902 .hw.init = &(struct clk_init_data){
2903 .name = "gcc_nss_port1_tx_clk",
2904 .parent_hws = (const struct clk_hw *[]){
2905 &nss_port1_tx_div_clk_src.clkr.hw },
2907 .flags = CLK_SET_RATE_PARENT,
2908 .ops = &clk_branch2_ops,
2913 static struct clk_branch gcc_nss_port2_rx_clk = {
2914 .halt_reg = 0x68248,
2916 .enable_reg = 0x68248,
2917 .enable_mask = BIT(0),
2918 .hw.init = &(struct clk_init_data){
2919 .name = "gcc_nss_port2_rx_clk",
2920 .parent_hws = (const struct clk_hw *[]){
2921 &nss_port2_rx_div_clk_src.clkr.hw },
2923 .flags = CLK_SET_RATE_PARENT,
2924 .ops = &clk_branch2_ops,
2929 static struct clk_branch gcc_nss_port2_tx_clk = {
2930 .halt_reg = 0x6824c,
2932 .enable_reg = 0x6824c,
2933 .enable_mask = BIT(0),
2934 .hw.init = &(struct clk_init_data){
2935 .name = "gcc_nss_port2_tx_clk",
2936 .parent_hws = (const struct clk_hw *[]){
2937 &nss_port2_tx_div_clk_src.clkr.hw },
2939 .flags = CLK_SET_RATE_PARENT,
2940 .ops = &clk_branch2_ops,
2945 static struct clk_branch gcc_nss_port3_rx_clk = {
2946 .halt_reg = 0x68250,
2948 .enable_reg = 0x68250,
2949 .enable_mask = BIT(0),
2950 .hw.init = &(struct clk_init_data){
2951 .name = "gcc_nss_port3_rx_clk",
2952 .parent_hws = (const struct clk_hw *[]){
2953 &nss_port3_rx_div_clk_src.clkr.hw },
2955 .flags = CLK_SET_RATE_PARENT,
2956 .ops = &clk_branch2_ops,
2961 static struct clk_branch gcc_nss_port3_tx_clk = {
2962 .halt_reg = 0x68254,
2964 .enable_reg = 0x68254,
2965 .enable_mask = BIT(0),
2966 .hw.init = &(struct clk_init_data){
2967 .name = "gcc_nss_port3_tx_clk",
2968 .parent_hws = (const struct clk_hw *[]){
2969 &nss_port3_tx_div_clk_src.clkr.hw },
2971 .flags = CLK_SET_RATE_PARENT,
2972 .ops = &clk_branch2_ops,
2977 static struct clk_branch gcc_nss_port4_rx_clk = {
2978 .halt_reg = 0x68258,
2980 .enable_reg = 0x68258,
2981 .enable_mask = BIT(0),
2982 .hw.init = &(struct clk_init_data){
2983 .name = "gcc_nss_port4_rx_clk",
2984 .parent_hws = (const struct clk_hw *[]){
2985 &nss_port4_rx_div_clk_src.clkr.hw },
2987 .flags = CLK_SET_RATE_PARENT,
2988 .ops = &clk_branch2_ops,
2993 static struct clk_branch gcc_nss_port4_tx_clk = {
2994 .halt_reg = 0x6825c,
2996 .enable_reg = 0x6825c,
2997 .enable_mask = BIT(0),
2998 .hw.init = &(struct clk_init_data){
2999 .name = "gcc_nss_port4_tx_clk",
3000 .parent_hws = (const struct clk_hw *[]){
3001 &nss_port4_tx_div_clk_src.clkr.hw },
3003 .flags = CLK_SET_RATE_PARENT,
3004 .ops = &clk_branch2_ops,
3009 static struct clk_branch gcc_nss_port5_rx_clk = {
3010 .halt_reg = 0x68260,
3012 .enable_reg = 0x68260,
3013 .enable_mask = BIT(0),
3014 .hw.init = &(struct clk_init_data){
3015 .name = "gcc_nss_port5_rx_clk",
3016 .parent_hws = (const struct clk_hw *[]){
3017 &nss_port5_rx_div_clk_src.clkr.hw },
3019 .flags = CLK_SET_RATE_PARENT,
3020 .ops = &clk_branch2_ops,
3025 static struct clk_branch gcc_nss_port5_tx_clk = {
3026 .halt_reg = 0x68264,
3028 .enable_reg = 0x68264,
3029 .enable_mask = BIT(0),
3030 .hw.init = &(struct clk_init_data){
3031 .name = "gcc_nss_port5_tx_clk",
3032 .parent_hws = (const struct clk_hw *[]){
3033 &nss_port5_tx_div_clk_src.clkr.hw },
3035 .flags = CLK_SET_RATE_PARENT,
3036 .ops = &clk_branch2_ops,
3041 static struct clk_branch gcc_nss_ppe_cfg_clk = {
3042 .halt_reg = 0x68194,
3044 .enable_reg = 0x68194,
3045 .enable_mask = BIT(0),
3046 .hw.init = &(struct clk_init_data){
3047 .name = "gcc_nss_ppe_cfg_clk",
3048 .parent_hws = (const struct clk_hw *[]){
3049 &nss_ppe_clk_src.clkr.hw },
3051 .flags = CLK_SET_RATE_PARENT,
3052 .ops = &clk_branch2_ops,
3057 static struct clk_branch gcc_nss_ppe_clk = {
3058 .halt_reg = 0x68190,
3060 .enable_reg = 0x68190,
3061 .enable_mask = BIT(0),
3062 .hw.init = &(struct clk_init_data){
3063 .name = "gcc_nss_ppe_clk",
3064 .parent_hws = (const struct clk_hw *[]){
3065 &nss_ppe_clk_src.clkr.hw },
3067 .flags = CLK_SET_RATE_PARENT,
3068 .ops = &clk_branch2_ops,
3073 static struct clk_branch gcc_nss_ppe_ipe_clk = {
3074 .halt_reg = 0x68338,
3076 .enable_reg = 0x68338,
3077 .enable_mask = BIT(0),
3078 .hw.init = &(struct clk_init_data){
3079 .name = "gcc_nss_ppe_ipe_clk",
3080 .parent_hws = (const struct clk_hw *[]){
3081 &nss_ppe_clk_src.clkr.hw },
3083 .flags = CLK_SET_RATE_PARENT,
3084 .ops = &clk_branch2_ops,
3089 static struct clk_branch gcc_nss_ptp_ref_clk = {
3090 .halt_reg = 0x6816C,
3092 .enable_reg = 0x6816C,
3093 .enable_mask = BIT(0),
3094 .hw.init = &(struct clk_init_data){
3095 .name = "gcc_nss_ptp_ref_clk",
3096 .parent_hws = (const struct clk_hw *[]){
3097 &nss_ppe_cdiv_clk_src.hw },
3099 .flags = CLK_SET_RATE_PARENT,
3100 .ops = &clk_branch2_ops,
3105 static struct clk_branch gcc_nssnoc_ce_apb_clk = {
3106 .halt_reg = 0x6830C,
3108 .enable_reg = 0x6830C,
3109 .enable_mask = BIT(0),
3110 .hw.init = &(struct clk_init_data){
3111 .name = "gcc_nssnoc_ce_apb_clk",
3112 .parent_hws = (const struct clk_hw *[]){
3113 &nss_ce_clk_src.clkr.hw },
3115 .flags = CLK_SET_RATE_PARENT,
3116 .ops = &clk_branch2_ops,
3121 static struct clk_branch gcc_nssnoc_ce_axi_clk = {
3122 .halt_reg = 0x68308,
3124 .enable_reg = 0x68308,
3125 .enable_mask = BIT(0),
3126 .hw.init = &(struct clk_init_data){
3127 .name = "gcc_nssnoc_ce_axi_clk",
3128 .parent_hws = (const struct clk_hw *[]){
3129 &nss_ce_clk_src.clkr.hw },
3131 .flags = CLK_SET_RATE_PARENT,
3132 .ops = &clk_branch2_ops,
3137 static struct clk_branch gcc_nssnoc_crypto_clk = {
3138 .halt_reg = 0x68314,
3140 .enable_reg = 0x68314,
3141 .enable_mask = BIT(0),
3142 .hw.init = &(struct clk_init_data){
3143 .name = "gcc_nssnoc_crypto_clk",
3144 .parent_hws = (const struct clk_hw *[]){
3145 &nss_crypto_clk_src.clkr.hw },
3147 .flags = CLK_SET_RATE_PARENT,
3148 .ops = &clk_branch2_ops,
3153 static struct clk_branch gcc_nssnoc_ppe_cfg_clk = {
3154 .halt_reg = 0x68304,
3156 .enable_reg = 0x68304,
3157 .enable_mask = BIT(0),
3158 .hw.init = &(struct clk_init_data){
3159 .name = "gcc_nssnoc_ppe_cfg_clk",
3160 .parent_hws = (const struct clk_hw *[]){
3161 &nss_ppe_clk_src.clkr.hw },
3162 .flags = CLK_SET_RATE_PARENT,
3163 .ops = &clk_branch2_ops,
3168 static struct clk_branch gcc_nssnoc_ppe_clk = {
3169 .halt_reg = 0x68300,
3171 .enable_reg = 0x68300,
3172 .enable_mask = BIT(0),
3173 .hw.init = &(struct clk_init_data){
3174 .name = "gcc_nssnoc_ppe_clk",
3175 .parent_hws = (const struct clk_hw *[]){
3176 &nss_ppe_clk_src.clkr.hw },
3178 .flags = CLK_SET_RATE_PARENT,
3179 .ops = &clk_branch2_ops,
3184 static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {
3185 .halt_reg = 0x68180,
3187 .enable_reg = 0x68180,
3188 .enable_mask = BIT(0),
3189 .hw.init = &(struct clk_init_data){
3190 .name = "gcc_nssnoc_qosgen_ref_clk",
3191 .parent_hws = (const struct clk_hw *[]){
3192 &gcc_xo_clk_src.clkr.hw },
3194 .flags = CLK_SET_RATE_PARENT,
3195 .ops = &clk_branch2_ops,
3200 static struct clk_branch gcc_nssnoc_snoc_clk = {
3201 .halt_reg = 0x68188,
3203 .enable_reg = 0x68188,
3204 .enable_mask = BIT(0),
3205 .hw.init = &(struct clk_init_data){
3206 .name = "gcc_nssnoc_snoc_clk",
3207 .parent_hws = (const struct clk_hw *[]){
3208 &system_noc_bfdcd_clk_src.clkr.hw },
3210 .flags = CLK_SET_RATE_PARENT,
3211 .ops = &clk_branch2_ops,
3216 static struct clk_branch gcc_nssnoc_timeout_ref_clk = {
3217 .halt_reg = 0x68184,
3219 .enable_reg = 0x68184,
3220 .enable_mask = BIT(0),
3221 .hw.init = &(struct clk_init_data){
3222 .name = "gcc_nssnoc_timeout_ref_clk",
3223 .parent_hws = (const struct clk_hw *[]){
3224 &gcc_xo_div4_clk_src.hw },
3226 .flags = CLK_SET_RATE_PARENT,
3227 .ops = &clk_branch2_ops,
3232 static struct clk_branch gcc_nssnoc_ubi0_ahb_clk = {
3233 .halt_reg = 0x68270,
3235 .enable_reg = 0x68270,
3236 .enable_mask = BIT(0),
3237 .hw.init = &(struct clk_init_data){
3238 .name = "gcc_nssnoc_ubi0_ahb_clk",
3239 .parent_hws = (const struct clk_hw *[]){
3240 &nss_ce_clk_src.clkr.hw },
3242 .flags = CLK_SET_RATE_PARENT,
3243 .ops = &clk_branch2_ops,
3248 static struct clk_branch gcc_port1_mac_clk = {
3249 .halt_reg = 0x68320,
3251 .enable_reg = 0x68320,
3252 .enable_mask = BIT(0),
3253 .hw.init = &(struct clk_init_data){
3254 .name = "gcc_port1_mac_clk",
3255 .parent_hws = (const struct clk_hw *[]){
3256 &nss_ppe_clk_src.clkr.hw },
3258 .flags = CLK_SET_RATE_PARENT,
3259 .ops = &clk_branch2_ops,
3264 static struct clk_branch gcc_port2_mac_clk = {
3265 .halt_reg = 0x68324,
3267 .enable_reg = 0x68324,
3268 .enable_mask = BIT(0),
3269 .hw.init = &(struct clk_init_data){
3270 .name = "gcc_port2_mac_clk",
3271 .parent_hws = (const struct clk_hw *[]){
3272 &nss_ppe_clk_src.clkr.hw },
3274 .flags = CLK_SET_RATE_PARENT,
3275 .ops = &clk_branch2_ops,
3280 static struct clk_branch gcc_port3_mac_clk = {
3281 .halt_reg = 0x68328,
3283 .enable_reg = 0x68328,
3284 .enable_mask = BIT(0),
3285 .hw.init = &(struct clk_init_data){
3286 .name = "gcc_port3_mac_clk",
3287 .parent_hws = (const struct clk_hw *[]){
3288 &nss_ppe_clk_src.clkr.hw },
3290 .flags = CLK_SET_RATE_PARENT,
3291 .ops = &clk_branch2_ops,
3296 static struct clk_branch gcc_port4_mac_clk = {
3297 .halt_reg = 0x6832c,
3299 .enable_reg = 0x6832c,
3300 .enable_mask = BIT(0),
3301 .hw.init = &(struct clk_init_data){
3302 .name = "gcc_port4_mac_clk",
3303 .parent_hws = (const struct clk_hw *[]){
3304 &nss_ppe_clk_src.clkr.hw },
3306 .flags = CLK_SET_RATE_PARENT,
3307 .ops = &clk_branch2_ops,
3312 static struct clk_branch gcc_port5_mac_clk = {
3313 .halt_reg = 0x68330,
3315 .enable_reg = 0x68330,
3316 .enable_mask = BIT(0),
3317 .hw.init = &(struct clk_init_data){
3318 .name = "gcc_port5_mac_clk",
3319 .parent_hws = (const struct clk_hw *[]){
3320 &nss_ppe_clk_src.clkr.hw },
3322 .flags = CLK_SET_RATE_PARENT,
3323 .ops = &clk_branch2_ops,
3328 static struct clk_branch gcc_ubi0_ahb_clk = {
3329 .halt_reg = 0x6820C,
3330 .halt_check = BRANCH_HALT_DELAY,
3332 .enable_reg = 0x6820C,
3333 .enable_mask = BIT(0),
3334 .hw.init = &(struct clk_init_data){
3335 .name = "gcc_ubi0_ahb_clk",
3336 .parent_hws = (const struct clk_hw *[]){
3337 &nss_ce_clk_src.clkr.hw },
3339 .flags = CLK_SET_RATE_PARENT,
3340 .ops = &clk_branch2_ops,
3345 static struct clk_branch gcc_ubi0_axi_clk = {
3346 .halt_reg = 0x68200,
3347 .halt_check = BRANCH_HALT_DELAY,
3349 .enable_reg = 0x68200,
3350 .enable_mask = BIT(0),
3351 .hw.init = &(struct clk_init_data){
3352 .name = "gcc_ubi0_axi_clk",
3353 .parent_hws = (const struct clk_hw *[]){
3354 &ubi32_mem_noc_bfdcd_clk_src.clkr.hw },
3356 .flags = CLK_SET_RATE_PARENT,
3357 .ops = &clk_branch2_ops,
3362 static struct clk_branch gcc_ubi0_nc_axi_clk = {
3363 .halt_reg = 0x68204,
3364 .halt_check = BRANCH_HALT_DELAY,
3366 .enable_reg = 0x68204,
3367 .enable_mask = BIT(0),
3368 .hw.init = &(struct clk_init_data){
3369 .name = "gcc_ubi0_nc_axi_clk",
3370 .parent_hws = (const struct clk_hw *[]){
3371 &snoc_nssnoc_bfdcd_clk_src.clkr.hw },
3373 .flags = CLK_SET_RATE_PARENT,
3374 .ops = &clk_branch2_ops,
3379 static struct clk_branch gcc_ubi0_core_clk = {
3380 .halt_reg = 0x68210,
3381 .halt_check = BRANCH_HALT_DELAY,
3383 .enable_reg = 0x68210,
3384 .enable_mask = BIT(0),
3385 .hw.init = &(struct clk_init_data){
3386 .name = "gcc_ubi0_core_clk",
3387 .parent_hws = (const struct clk_hw *[]){
3388 &nss_ubi0_div_clk_src.clkr.hw },
3390 .flags = CLK_SET_RATE_PARENT,
3391 .ops = &clk_branch2_ops,
3396 static struct clk_branch gcc_pcie0_ahb_clk = {
3397 .halt_reg = 0x75010,
3399 .enable_reg = 0x75010,
3400 .enable_mask = BIT(0),
3401 .hw.init = &(struct clk_init_data){
3402 .name = "gcc_pcie0_ahb_clk",
3403 .parent_hws = (const struct clk_hw *[]){
3404 &pcnoc_bfdcd_clk_src.clkr.hw },
3406 .flags = CLK_SET_RATE_PARENT,
3407 .ops = &clk_branch2_ops,
3412 static struct clk_branch gcc_pcie0_aux_clk = {
3413 .halt_reg = 0x75014,
3415 .enable_reg = 0x75014,
3416 .enable_mask = BIT(0),
3417 .hw.init = &(struct clk_init_data){
3418 .name = "gcc_pcie0_aux_clk",
3419 .parent_hws = (const struct clk_hw *[]){
3420 &pcie0_aux_clk_src.clkr.hw },
3422 .flags = CLK_SET_RATE_PARENT,
3423 .ops = &clk_branch2_ops,
3428 static struct clk_branch gcc_pcie0_axi_m_clk = {
3429 .halt_reg = 0x75008,
3431 .enable_reg = 0x75008,
3432 .enable_mask = BIT(0),
3433 .hw.init = &(struct clk_init_data){
3434 .name = "gcc_pcie0_axi_m_clk",
3435 .parent_hws = (const struct clk_hw *[]){
3436 &pcie0_axi_clk_src.clkr.hw },
3438 .flags = CLK_SET_RATE_PARENT,
3439 .ops = &clk_branch2_ops,
3444 static struct clk_branch gcc_pcie0_axi_s_clk = {
3445 .halt_reg = 0x7500c,
3447 .enable_reg = 0x7500c,
3448 .enable_mask = BIT(0),
3449 .hw.init = &(struct clk_init_data){
3450 .name = "gcc_pcie0_axi_s_clk",
3451 .parent_hws = (const struct clk_hw *[]){
3452 &pcie0_axi_clk_src.clkr.hw },
3454 .flags = CLK_SET_RATE_PARENT,
3455 .ops = &clk_branch2_ops,
3460 static struct clk_branch gcc_sys_noc_pcie0_axi_clk = {
3461 .halt_reg = 0x26048,
3463 .enable_reg = 0x26048,
3464 .enable_mask = BIT(0),
3465 .hw.init = &(struct clk_init_data){
3466 .name = "gcc_sys_noc_pcie0_axi_clk",
3467 .parent_hws = (const struct clk_hw *[]){
3468 &pcie0_axi_clk_src.clkr.hw },
3470 .flags = CLK_SET_RATE_PARENT,
3471 .ops = &clk_branch2_ops,
3476 static struct clk_branch gcc_pcie0_pipe_clk = {
3477 .halt_reg = 0x75018,
3478 .halt_check = BRANCH_HALT_DELAY,
3480 .enable_reg = 0x75018,
3481 .enable_mask = BIT(0),
3482 .hw.init = &(struct clk_init_data){
3483 .name = "gcc_pcie0_pipe_clk",
3484 .parent_hws = (const struct clk_hw *[]){
3485 &pcie0_pipe_clk_src.clkr.hw },
3487 .flags = CLK_SET_RATE_PARENT,
3488 .ops = &clk_branch2_ops,
3493 static struct clk_branch gcc_prng_ahb_clk = {
3494 .halt_reg = 0x13004,
3495 .halt_check = BRANCH_HALT_VOTED,
3497 .enable_reg = 0x0b004,
3498 .enable_mask = BIT(8),
3499 .hw.init = &(struct clk_init_data){
3500 .name = "gcc_prng_ahb_clk",
3501 .parent_hws = (const struct clk_hw *[]){
3502 &pcnoc_bfdcd_clk_src.clkr.hw },
3504 .flags = CLK_SET_RATE_PARENT,
3505 .ops = &clk_branch2_ops,
3510 static struct clk_branch gcc_qdss_dap_clk = {
3511 .halt_reg = 0x29084,
3513 .enable_reg = 0x29084,
3514 .enable_mask = BIT(0),
3515 .hw.init = &(struct clk_init_data){
3516 .name = "gcc_qdss_dap_clk",
3517 .parent_hws = (const struct clk_hw *[]){
3518 &qdss_dap_sync_clk_src.hw },
3520 .flags = CLK_SET_RATE_PARENT,
3521 .ops = &clk_branch2_ops,
3526 static struct clk_branch gcc_qpic_ahb_clk = {
3527 .halt_reg = 0x57024,
3529 .enable_reg = 0x57024,
3530 .enable_mask = BIT(0),
3531 .hw.init = &(struct clk_init_data){
3532 .name = "gcc_qpic_ahb_clk",
3533 .parent_hws = (const struct clk_hw *[]){
3534 &pcnoc_bfdcd_clk_src.clkr.hw },
3536 .flags = CLK_SET_RATE_PARENT,
3537 .ops = &clk_branch2_ops,
3542 static struct clk_branch gcc_qpic_clk = {
3543 .halt_reg = 0x57020,
3545 .enable_reg = 0x57020,
3546 .enable_mask = BIT(0),
3547 .hw.init = &(struct clk_init_data){
3548 .name = "gcc_qpic_clk",
3549 .parent_hws = (const struct clk_hw *[]){
3550 &pcnoc_bfdcd_clk_src.clkr.hw },
3552 .flags = CLK_SET_RATE_PARENT,
3553 .ops = &clk_branch2_ops,
3558 static struct clk_branch gcc_sdcc1_ahb_clk = {
3559 .halt_reg = 0x4201c,
3561 .enable_reg = 0x4201c,
3562 .enable_mask = BIT(0),
3563 .hw.init = &(struct clk_init_data){
3564 .name = "gcc_sdcc1_ahb_clk",
3565 .parent_hws = (const struct clk_hw *[]){
3566 &pcnoc_bfdcd_clk_src.clkr.hw },
3568 .flags = CLK_SET_RATE_PARENT,
3569 .ops = &clk_branch2_ops,
3574 static struct clk_branch gcc_sdcc1_apps_clk = {
3575 .halt_reg = 0x42018,
3577 .enable_reg = 0x42018,
3578 .enable_mask = BIT(0),
3579 .hw.init = &(struct clk_init_data){
3580 .name = "gcc_sdcc1_apps_clk",
3581 .parent_hws = (const struct clk_hw *[]){
3582 &sdcc1_apps_clk_src.clkr.hw },
3584 .flags = CLK_SET_RATE_PARENT,
3585 .ops = &clk_branch2_ops,
3590 static struct clk_branch gcc_uniphy0_ahb_clk = {
3591 .halt_reg = 0x56008,
3593 .enable_reg = 0x56008,
3594 .enable_mask = BIT(0),
3595 .hw.init = &(struct clk_init_data){
3596 .name = "gcc_uniphy0_ahb_clk",
3597 .parent_hws = (const struct clk_hw *[]){
3598 &pcnoc_bfdcd_clk_src.clkr.hw },
3600 .flags = CLK_SET_RATE_PARENT,
3601 .ops = &clk_branch2_ops,
3606 static struct clk_branch gcc_uniphy0_port1_rx_clk = {
3607 .halt_reg = 0x56010,
3609 .enable_reg = 0x56010,
3610 .enable_mask = BIT(0),
3611 .hw.init = &(struct clk_init_data){
3612 .name = "gcc_uniphy0_port1_rx_clk",
3613 .parent_hws = (const struct clk_hw *[]){
3614 &nss_port1_rx_div_clk_src.clkr.hw },
3616 .flags = CLK_SET_RATE_PARENT,
3617 .ops = &clk_branch2_ops,
3622 static struct clk_branch gcc_uniphy0_port1_tx_clk = {
3623 .halt_reg = 0x56014,
3625 .enable_reg = 0x56014,
3626 .enable_mask = BIT(0),
3627 .hw.init = &(struct clk_init_data){
3628 .name = "gcc_uniphy0_port1_tx_clk",
3629 .parent_hws = (const struct clk_hw *[]){
3630 &nss_port1_tx_div_clk_src.clkr.hw },
3632 .flags = CLK_SET_RATE_PARENT,
3633 .ops = &clk_branch2_ops,
3638 static struct clk_branch gcc_uniphy0_port2_rx_clk = {
3639 .halt_reg = 0x56018,
3641 .enable_reg = 0x56018,
3642 .enable_mask = BIT(0),
3643 .hw.init = &(struct clk_init_data){
3644 .name = "gcc_uniphy0_port2_rx_clk",
3645 .parent_hws = (const struct clk_hw *[]){
3646 &nss_port2_rx_div_clk_src.clkr.hw },
3648 .flags = CLK_SET_RATE_PARENT,
3649 .ops = &clk_branch2_ops,
3654 static struct clk_branch gcc_uniphy0_port2_tx_clk = {
3655 .halt_reg = 0x5601c,
3657 .enable_reg = 0x5601c,
3658 .enable_mask = BIT(0),
3659 .hw.init = &(struct clk_init_data){
3660 .name = "gcc_uniphy0_port2_tx_clk",
3661 .parent_hws = (const struct clk_hw *[]){
3662 &nss_port2_tx_div_clk_src.clkr.hw },
3664 .flags = CLK_SET_RATE_PARENT,
3665 .ops = &clk_branch2_ops,
3670 static struct clk_branch gcc_uniphy0_port3_rx_clk = {
3671 .halt_reg = 0x56020,
3673 .enable_reg = 0x56020,
3674 .enable_mask = BIT(0),
3675 .hw.init = &(struct clk_init_data){
3676 .name = "gcc_uniphy0_port3_rx_clk",
3677 .parent_hws = (const struct clk_hw *[]){
3678 &nss_port3_rx_div_clk_src.clkr.hw },
3680 .flags = CLK_SET_RATE_PARENT,
3681 .ops = &clk_branch2_ops,
3686 static struct clk_branch gcc_uniphy0_port3_tx_clk = {
3687 .halt_reg = 0x56024,
3689 .enable_reg = 0x56024,
3690 .enable_mask = BIT(0),
3691 .hw.init = &(struct clk_init_data){
3692 .name = "gcc_uniphy0_port3_tx_clk",
3693 .parent_hws = (const struct clk_hw *[]){
3694 &nss_port3_tx_div_clk_src.clkr.hw },
3696 .flags = CLK_SET_RATE_PARENT,
3697 .ops = &clk_branch2_ops,
3702 static struct clk_branch gcc_uniphy0_port4_rx_clk = {
3703 .halt_reg = 0x56028,
3705 .enable_reg = 0x56028,
3706 .enable_mask = BIT(0),
3707 .hw.init = &(struct clk_init_data){
3708 .name = "gcc_uniphy0_port4_rx_clk",
3709 .parent_hws = (const struct clk_hw *[]){
3710 &nss_port4_rx_div_clk_src.clkr.hw },
3712 .flags = CLK_SET_RATE_PARENT,
3713 .ops = &clk_branch2_ops,
3718 static struct clk_branch gcc_uniphy0_port4_tx_clk = {
3719 .halt_reg = 0x5602c,
3721 .enable_reg = 0x5602c,
3722 .enable_mask = BIT(0),
3723 .hw.init = &(struct clk_init_data){
3724 .name = "gcc_uniphy0_port4_tx_clk",
3725 .parent_hws = (const struct clk_hw *[]){
3726 &nss_port4_tx_div_clk_src.clkr.hw },
3728 .flags = CLK_SET_RATE_PARENT,
3729 .ops = &clk_branch2_ops,
3734 static struct clk_branch gcc_uniphy0_port5_rx_clk = {
3735 .halt_reg = 0x56030,
3737 .enable_reg = 0x56030,
3738 .enable_mask = BIT(0),
3739 .hw.init = &(struct clk_init_data){
3740 .name = "gcc_uniphy0_port5_rx_clk",
3741 .parent_hws = (const struct clk_hw *[]){
3742 &nss_port5_rx_div_clk_src.clkr.hw },
3744 .flags = CLK_SET_RATE_PARENT,
3745 .ops = &clk_branch2_ops,
3750 static struct clk_branch gcc_uniphy0_port5_tx_clk = {
3751 .halt_reg = 0x56034,
3753 .enable_reg = 0x56034,
3754 .enable_mask = BIT(0),
3755 .hw.init = &(struct clk_init_data){
3756 .name = "gcc_uniphy0_port5_tx_clk",
3757 .parent_hws = (const struct clk_hw *[]){
3758 &nss_port5_tx_div_clk_src.clkr.hw },
3760 .flags = CLK_SET_RATE_PARENT,
3761 .ops = &clk_branch2_ops,
3766 static struct clk_branch gcc_uniphy0_sys_clk = {
3767 .halt_reg = 0x5600C,
3769 .enable_reg = 0x5600C,
3770 .enable_mask = BIT(0),
3771 .hw.init = &(struct clk_init_data){
3772 .name = "gcc_uniphy0_sys_clk",
3773 .parent_hws = (const struct clk_hw *[]){
3774 &gcc_xo_clk_src.clkr.hw },
3776 .flags = CLK_SET_RATE_PARENT,
3777 .ops = &clk_branch2_ops,
3782 static struct clk_branch gcc_uniphy1_ahb_clk = {
3783 .halt_reg = 0x56108,
3785 .enable_reg = 0x56108,
3786 .enable_mask = BIT(0),
3787 .hw.init = &(struct clk_init_data){
3788 .name = "gcc_uniphy1_ahb_clk",
3789 .parent_hws = (const struct clk_hw *[]){
3790 &pcnoc_bfdcd_clk_src.clkr.hw },
3792 .flags = CLK_SET_RATE_PARENT,
3793 .ops = &clk_branch2_ops,
3798 static struct clk_branch gcc_uniphy1_port5_rx_clk = {
3799 .halt_reg = 0x56110,
3801 .enable_reg = 0x56110,
3802 .enable_mask = BIT(0),
3803 .hw.init = &(struct clk_init_data){
3804 .name = "gcc_uniphy1_port5_rx_clk",
3805 .parent_hws = (const struct clk_hw *[]){
3806 &nss_port5_rx_div_clk_src.clkr.hw },
3808 .flags = CLK_SET_RATE_PARENT,
3809 .ops = &clk_branch2_ops,
3814 static struct clk_branch gcc_uniphy1_port5_tx_clk = {
3815 .halt_reg = 0x56114,
3817 .enable_reg = 0x56114,
3818 .enable_mask = BIT(0),
3819 .hw.init = &(struct clk_init_data){
3820 .name = "gcc_uniphy1_port5_tx_clk",
3821 .parent_hws = (const struct clk_hw *[]){
3822 &nss_port5_tx_div_clk_src.clkr.hw },
3824 .flags = CLK_SET_RATE_PARENT,
3825 .ops = &clk_branch2_ops,
3830 static struct clk_branch gcc_uniphy1_sys_clk = {
3831 .halt_reg = 0x5610C,
3833 .enable_reg = 0x5610C,
3834 .enable_mask = BIT(0),
3835 .hw.init = &(struct clk_init_data){
3836 .name = "gcc_uniphy1_sys_clk",
3837 .parent_hws = (const struct clk_hw *[]){
3838 &gcc_xo_clk_src.clkr.hw },
3840 .flags = CLK_SET_RATE_PARENT,
3841 .ops = &clk_branch2_ops,
3846 static struct clk_branch gcc_usb0_aux_clk = {
3847 .halt_reg = 0x3e044,
3849 .enable_reg = 0x3e044,
3850 .enable_mask = BIT(0),
3851 .hw.init = &(struct clk_init_data){
3852 .name = "gcc_usb0_aux_clk",
3853 .parent_hws = (const struct clk_hw *[]){
3854 &usb0_aux_clk_src.clkr.hw },
3856 .flags = CLK_SET_RATE_PARENT,
3857 .ops = &clk_branch2_ops,
3862 static struct clk_branch gcc_usb0_master_clk = {
3863 .halt_reg = 0x3e000,
3865 .enable_reg = 0x3e000,
3866 .enable_mask = BIT(0),
3867 .hw.init = &(struct clk_init_data){
3868 .name = "gcc_usb0_master_clk",
3869 .parent_hws = (const struct clk_hw *[]){
3870 &usb0_master_clk_src.clkr.hw },
3872 .flags = CLK_SET_RATE_PARENT,
3873 .ops = &clk_branch2_ops,
3878 static struct clk_branch gcc_snoc_bus_timeout2_ahb_clk = {
3879 .halt_reg = 0x47014,
3881 .enable_reg = 0x47014,
3882 .enable_mask = BIT(0),
3883 .hw.init = &(struct clk_init_data){
3884 .name = "gcc_snoc_bus_timeout2_ahb_clk",
3885 .parent_hws = (const struct clk_hw *[]){
3886 &usb0_master_clk_src.clkr.hw },
3888 .flags = CLK_SET_RATE_PARENT,
3889 .ops = &clk_branch2_ops,
3894 static struct clk_rcg2 pcie0_rchng_clk_src = {
3895 .cmd_rcgr = 0x75070,
3896 .freq_tbl = ftbl_pcie_rchng_clk_src,
3898 .parent_map = gcc_xo_gpll0_map,
3899 .clkr.hw.init = &(struct clk_init_data){
3900 .name = "pcie0_rchng_clk_src",
3901 .parent_data = gcc_xo_gpll0,
3903 .ops = &clk_rcg2_ops,
3907 static struct clk_branch gcc_pcie0_rchng_clk = {
3908 .halt_reg = 0x75070,
3910 .enable_reg = 0x75070,
3911 .enable_mask = BIT(1),
3912 .hw.init = &(struct clk_init_data){
3913 .name = "gcc_pcie0_rchng_clk",
3914 .parent_hws = (const struct clk_hw *[]){
3915 &pcie0_rchng_clk_src.clkr.hw },
3917 .flags = CLK_SET_RATE_PARENT,
3918 .ops = &clk_branch2_ops,
3923 static struct clk_branch gcc_pcie0_axi_s_bridge_clk = {
3924 .halt_reg = 0x75048,
3926 .enable_reg = 0x75048,
3927 .enable_mask = BIT(0),
3928 .hw.init = &(struct clk_init_data){
3929 .name = "gcc_pcie0_axi_s_bridge_clk",
3930 .parent_hws = (const struct clk_hw *[]){
3931 &pcie0_axi_clk_src.clkr.hw },
3933 .flags = CLK_SET_RATE_PARENT,
3934 .ops = &clk_branch2_ops,
3939 static struct clk_branch gcc_sys_noc_usb0_axi_clk = {
3940 .halt_reg = 0x26040,
3942 .enable_reg = 0x26040,
3943 .enable_mask = BIT(0),
3944 .hw.init = &(struct clk_init_data){
3945 .name = "gcc_sys_noc_usb0_axi_clk",
3946 .parent_hws = (const struct clk_hw *[]){
3947 &usb0_master_clk_src.clkr.hw },
3949 .flags = CLK_SET_RATE_PARENT,
3950 .ops = &clk_branch2_ops,
3955 static struct clk_branch gcc_usb0_mock_utmi_clk = {
3956 .halt_reg = 0x3e008,
3958 .enable_reg = 0x3e008,
3959 .enable_mask = BIT(0),
3960 .hw.init = &(struct clk_init_data){
3961 .name = "gcc_usb0_mock_utmi_clk",
3962 .parent_hws = (const struct clk_hw *[]){
3963 &usb0_mock_utmi_clk_src.clkr.hw },
3965 .flags = CLK_SET_RATE_PARENT,
3966 .ops = &clk_branch2_ops,
3971 static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {
3972 .halt_reg = 0x3e080,
3974 .enable_reg = 0x3e080,
3975 .enable_mask = BIT(0),
3976 .hw.init = &(struct clk_init_data){
3977 .name = "gcc_usb0_phy_cfg_ahb_clk",
3978 .parent_hws = (const struct clk_hw *[]){
3979 &pcnoc_bfdcd_clk_src.clkr.hw },
3981 .flags = CLK_SET_RATE_PARENT,
3982 .ops = &clk_branch2_ops,
3987 static struct clk_branch gcc_usb0_pipe_clk = {
3988 .halt_reg = 0x3e040,
3989 .halt_check = BRANCH_HALT_DELAY,
3991 .enable_reg = 0x3e040,
3992 .enable_mask = BIT(0),
3993 .hw.init = &(struct clk_init_data){
3994 .name = "gcc_usb0_pipe_clk",
3995 .parent_hws = (const struct clk_hw *[]){
3996 &usb0_pipe_clk_src.clkr.hw },
3998 .flags = CLK_SET_RATE_PARENT,
3999 .ops = &clk_branch2_ops,
4004 static struct clk_branch gcc_usb0_sleep_clk = {
4005 .halt_reg = 0x3e004,
4007 .enable_reg = 0x3e004,
4008 .enable_mask = BIT(0),
4009 .hw.init = &(struct clk_init_data){
4010 .name = "gcc_usb0_sleep_clk",
4011 .parent_hws = (const struct clk_hw *[]){
4012 &gcc_sleep_clk_src.clkr.hw },
4014 .flags = CLK_SET_RATE_PARENT,
4015 .ops = &clk_branch2_ops,
4020 static struct clk_branch gcc_usb1_master_clk = {
4021 .halt_reg = 0x3f000,
4023 .enable_reg = 0x3f000,
4024 .enable_mask = BIT(0),
4025 .hw.init = &(struct clk_init_data){
4026 .name = "gcc_usb1_master_clk",
4027 .parent_hws = (const struct clk_hw *[]){
4028 &pcnoc_bfdcd_clk_src.clkr.hw },
4030 .flags = CLK_SET_RATE_PARENT,
4031 .ops = &clk_branch2_ops,
4036 static struct clk_branch gcc_usb1_mock_utmi_clk = {
4037 .halt_reg = 0x3f008,
4039 .enable_reg = 0x3f008,
4040 .enable_mask = BIT(0),
4041 .hw.init = &(struct clk_init_data){
4042 .name = "gcc_usb1_mock_utmi_clk",
4043 .parent_hws = (const struct clk_hw *[]){
4044 &usb1_mock_utmi_clk_src.clkr.hw },
4046 .flags = CLK_SET_RATE_PARENT,
4047 .ops = &clk_branch2_ops,
4052 static struct clk_branch gcc_usb1_phy_cfg_ahb_clk = {
4053 .halt_reg = 0x3f080,
4055 .enable_reg = 0x3f080,
4056 .enable_mask = BIT(0),
4057 .hw.init = &(struct clk_init_data){
4058 .name = "gcc_usb1_phy_cfg_ahb_clk",
4059 .parent_hws = (const struct clk_hw *[]){
4060 &pcnoc_bfdcd_clk_src.clkr.hw },
4062 .flags = CLK_SET_RATE_PARENT,
4063 .ops = &clk_branch2_ops,
4068 static struct clk_branch gcc_usb1_sleep_clk = {
4069 .halt_reg = 0x3f004,
4071 .enable_reg = 0x3f004,
4072 .enable_mask = BIT(0),
4073 .hw.init = &(struct clk_init_data){
4074 .name = "gcc_usb1_sleep_clk",
4075 .parent_hws = (const struct clk_hw *[]){
4076 &gcc_sleep_clk_src.clkr.hw },
4078 .flags = CLK_SET_RATE_PARENT,
4079 .ops = &clk_branch2_ops,
4084 static struct clk_branch gcc_cmn_12gpll_ahb_clk = {
4085 .halt_reg = 0x56308,
4087 .enable_reg = 0x56308,
4088 .enable_mask = BIT(0),
4089 .hw.init = &(struct clk_init_data){
4090 .name = "gcc_cmn_12gpll_ahb_clk",
4091 .parent_hws = (const struct clk_hw *[]){
4092 &pcnoc_bfdcd_clk_src.clkr.hw },
4094 .flags = CLK_SET_RATE_PARENT,
4095 .ops = &clk_branch2_ops,
4100 static struct clk_branch gcc_cmn_12gpll_sys_clk = {
4101 .halt_reg = 0x5630c,
4103 .enable_reg = 0x5630c,
4104 .enable_mask = BIT(0),
4105 .hw.init = &(struct clk_init_data){
4106 .name = "gcc_cmn_12gpll_sys_clk",
4107 .parent_hws = (const struct clk_hw *[]){
4108 &gcc_xo_clk_src.clkr.hw },
4110 .flags = CLK_SET_RATE_PARENT,
4111 .ops = &clk_branch2_ops,
4116 static struct clk_branch gcc_sdcc1_ice_core_clk = {
4117 .halt_reg = 0x5d014,
4119 .enable_reg = 0x5d014,
4120 .enable_mask = BIT(0),
4121 .hw.init = &(struct clk_init_data){
4122 .name = "gcc_sdcc1_ice_core_clk",
4123 .parent_hws = (const struct clk_hw *[]){
4124 &sdcc1_ice_core_clk_src.clkr.hw },
4126 .flags = CLK_SET_RATE_PARENT,
4127 .ops = &clk_branch2_ops,
4132 static struct clk_branch gcc_dcc_clk = {
4133 .halt_reg = 0x77004,
4135 .enable_reg = 0x77004,
4136 .enable_mask = BIT(0),
4137 .hw.init = &(struct clk_init_data){
4138 .name = "gcc_dcc_clk",
4139 .parent_hws = (const struct clk_hw *[]){
4140 &pcnoc_bfdcd_clk_src.clkr.hw },
4142 .flags = CLK_SET_RATE_PARENT,
4143 .ops = &clk_branch2_ops,
4148 static const struct alpha_pll_config ubi32_pll_config = {
4151 .config_ctl_val = 0x240d6aa8,
4152 .config_ctl_hi_val = 0x3c2,
4153 .main_output_mask = BIT(0),
4154 .aux_output_mask = BIT(1),
4156 .pre_div_mask = BIT(12),
4157 .post_div_val = 0x0,
4158 .post_div_mask = GENMASK(9, 8),
4161 static const struct alpha_pll_config nss_crypto_pll_config = {
4165 .config_ctl_val = 0x4001055b,
4166 .main_output_mask = BIT(0),
4168 .pre_div_mask = GENMASK(14, 12),
4169 .post_div_val = 0x1 << 8,
4170 .post_div_mask = GENMASK(11, 8),
4171 .vco_mask = GENMASK(21, 20),
4173 .alpha_en_mask = BIT(24),
4176 static struct clk_hw *gcc_ipq6018_hws[] = {
4177 &gpll0_out_main_div2.hw,
4178 &gcc_xo_div4_clk_src.hw,
4179 &nss_ppe_cdiv_clk_src.hw,
4180 &gpll6_out_main_div2.hw,
4181 &qdss_dap_sync_clk_src.hw,
4182 &qdss_tsctr_div2_clk_src.hw,
4185 static struct clk_regmap *gcc_ipq6018_clks[] = {
4186 [GPLL0_MAIN] = &gpll0_main.clkr,
4187 [GPLL0] = &gpll0.clkr,
4188 [UBI32_PLL_MAIN] = &ubi32_pll_main.clkr,
4189 [UBI32_PLL] = &ubi32_pll.clkr,
4190 [GPLL6_MAIN] = &gpll6_main.clkr,
4191 [GPLL6] = &gpll6.clkr,
4192 [GPLL4_MAIN] = &gpll4_main.clkr,
4193 [GPLL4] = &gpll4.clkr,
4194 [PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr,
4195 [GPLL2_MAIN] = &gpll2_main.clkr,
4196 [GPLL2] = &gpll2.clkr,
4197 [NSS_CRYPTO_PLL_MAIN] = &nss_crypto_pll_main.clkr,
4198 [NSS_CRYPTO_PLL] = &nss_crypto_pll.clkr,
4199 [QDSS_TSCTR_CLK_SRC] = &qdss_tsctr_clk_src.clkr,
4200 [QDSS_AT_CLK_SRC] = &qdss_at_clk_src.clkr,
4201 [NSS_PPE_CLK_SRC] = &nss_ppe_clk_src.clkr,
4202 [GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,
4203 [SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr,
4204 [SNOC_NSSNOC_BFDCD_CLK_SRC] = &snoc_nssnoc_bfdcd_clk_src.clkr,
4205 [NSS_CE_CLK_SRC] = &nss_ce_clk_src.clkr,
4206 [GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,
4207 [APSS_AHB_CLK_SRC] = &apss_ahb_clk_src.clkr,
4208 [NSS_PORT5_RX_CLK_SRC] = &nss_port5_rx_clk_src.clkr,
4209 [NSS_PORT5_TX_CLK_SRC] = &nss_port5_tx_clk_src.clkr,
4210 [UBI32_MEM_NOC_BFDCD_CLK_SRC] = &ubi32_mem_noc_bfdcd_clk_src.clkr,
4211 [PCIE0_AXI_CLK_SRC] = &pcie0_axi_clk_src.clkr,
4212 [USB0_MASTER_CLK_SRC] = &usb0_master_clk_src.clkr,
4213 [APSS_AHB_POSTDIV_CLK_SRC] = &apss_ahb_postdiv_clk_src.clkr,
4214 [NSS_PORT1_RX_CLK_SRC] = &nss_port1_rx_clk_src.clkr,
4215 [NSS_PORT1_TX_CLK_SRC] = &nss_port1_tx_clk_src.clkr,
4216 [NSS_PORT2_RX_CLK_SRC] = &nss_port2_rx_clk_src.clkr,
4217 [NSS_PORT2_TX_CLK_SRC] = &nss_port2_tx_clk_src.clkr,
4218 [NSS_PORT3_RX_CLK_SRC] = &nss_port3_rx_clk_src.clkr,
4219 [NSS_PORT3_TX_CLK_SRC] = &nss_port3_tx_clk_src.clkr,
4220 [NSS_PORT4_RX_CLK_SRC] = &nss_port4_rx_clk_src.clkr,
4221 [NSS_PORT4_TX_CLK_SRC] = &nss_port4_tx_clk_src.clkr,
4222 [NSS_PORT5_RX_DIV_CLK_SRC] = &nss_port5_rx_div_clk_src.clkr,
4223 [NSS_PORT5_TX_DIV_CLK_SRC] = &nss_port5_tx_div_clk_src.clkr,
4224 [APSS_AXI_CLK_SRC] = &apss_axi_clk_src.clkr,
4225 [NSS_CRYPTO_CLK_SRC] = &nss_crypto_clk_src.clkr,
4226 [NSS_PORT1_RX_DIV_CLK_SRC] = &nss_port1_rx_div_clk_src.clkr,
4227 [NSS_PORT1_TX_DIV_CLK_SRC] = &nss_port1_tx_div_clk_src.clkr,
4228 [NSS_PORT2_RX_DIV_CLK_SRC] = &nss_port2_rx_div_clk_src.clkr,
4229 [NSS_PORT2_TX_DIV_CLK_SRC] = &nss_port2_tx_div_clk_src.clkr,
4230 [NSS_PORT3_RX_DIV_CLK_SRC] = &nss_port3_rx_div_clk_src.clkr,
4231 [NSS_PORT3_TX_DIV_CLK_SRC] = &nss_port3_tx_div_clk_src.clkr,
4232 [NSS_PORT4_RX_DIV_CLK_SRC] = &nss_port4_rx_div_clk_src.clkr,
4233 [NSS_PORT4_TX_DIV_CLK_SRC] = &nss_port4_tx_div_clk_src.clkr,
4234 [NSS_UBI0_CLK_SRC] = &nss_ubi0_clk_src.clkr,
4235 [ADSS_PWM_CLK_SRC] = &adss_pwm_clk_src.clkr,
4236 [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
4237 [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
4238 [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
4239 [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
4240 [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
4241 [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
4242 [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
4243 [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
4244 [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
4245 [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
4246 [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
4247 [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
4248 [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
4249 [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
4250 [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
4251 [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
4252 [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
4253 [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
4254 [CRYPTO_CLK_SRC] = &crypto_clk_src.clkr,
4255 [GP1_CLK_SRC] = &gp1_clk_src.clkr,
4256 [GP2_CLK_SRC] = &gp2_clk_src.clkr,
4257 [GP3_CLK_SRC] = &gp3_clk_src.clkr,
4258 [NSS_UBI0_DIV_CLK_SRC] = &nss_ubi0_div_clk_src.clkr,
4259 [PCIE0_AUX_CLK_SRC] = &pcie0_aux_clk_src.clkr,
4260 [PCIE0_PIPE_CLK_SRC] = &pcie0_pipe_clk_src.clkr,
4261 [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
4262 [USB0_AUX_CLK_SRC] = &usb0_aux_clk_src.clkr,
4263 [USB0_MOCK_UTMI_CLK_SRC] = &usb0_mock_utmi_clk_src.clkr,
4264 [USB0_PIPE_CLK_SRC] = &usb0_pipe_clk_src.clkr,
4265 [USB1_MOCK_UTMI_CLK_SRC] = &usb1_mock_utmi_clk_src.clkr,
4266 [GCC_ADSS_PWM_CLK] = &gcc_adss_pwm_clk.clkr,
4267 [GCC_APSS_AHB_CLK] = &gcc_apss_ahb_clk.clkr,
4268 [GCC_APSS_AXI_CLK] = &gcc_apss_axi_clk.clkr,
4269 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
4270 [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
4271 [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
4272 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
4273 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
4274 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
4275 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
4276 [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
4277 [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
4278 [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
4279 [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
4280 [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
4281 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
4282 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
4283 [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
4284 [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
4285 [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
4286 [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
4287 [GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr,
4288 [GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr,
4289 [GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr,
4290 [GCC_XO_CLK] = &gcc_xo_clk.clkr,
4291 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
4292 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
4293 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
4294 [GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,
4295 [GCC_CRYPTO_PPE_CLK] = &gcc_crypto_ppe_clk.clkr,
4296 [GCC_NSS_CE_APB_CLK] = &gcc_nss_ce_apb_clk.clkr,
4297 [GCC_NSS_CE_AXI_CLK] = &gcc_nss_ce_axi_clk.clkr,
4298 [GCC_NSS_CFG_CLK] = &gcc_nss_cfg_clk.clkr,
4299 [GCC_NSS_CRYPTO_CLK] = &gcc_nss_crypto_clk.clkr,
4300 [GCC_NSS_CSR_CLK] = &gcc_nss_csr_clk.clkr,
4301 [GCC_NSS_EDMA_CFG_CLK] = &gcc_nss_edma_cfg_clk.clkr,
4302 [GCC_NSS_EDMA_CLK] = &gcc_nss_edma_clk.clkr,
4303 [GCC_NSS_NOC_CLK] = &gcc_nss_noc_clk.clkr,
4304 [GCC_UBI0_UTCM_CLK] = &gcc_ubi0_utcm_clk.clkr,
4305 [GCC_SNOC_NSSNOC_CLK] = &gcc_snoc_nssnoc_clk.clkr,
4306 [GCC_NSS_PORT1_RX_CLK] = &gcc_nss_port1_rx_clk.clkr,
4307 [GCC_NSS_PORT1_TX_CLK] = &gcc_nss_port1_tx_clk.clkr,
4308 [GCC_NSS_PORT2_RX_CLK] = &gcc_nss_port2_rx_clk.clkr,
4309 [GCC_NSS_PORT2_TX_CLK] = &gcc_nss_port2_tx_clk.clkr,
4310 [GCC_NSS_PORT3_RX_CLK] = &gcc_nss_port3_rx_clk.clkr,
4311 [GCC_NSS_PORT3_TX_CLK] = &gcc_nss_port3_tx_clk.clkr,
4312 [GCC_NSS_PORT4_RX_CLK] = &gcc_nss_port4_rx_clk.clkr,
4313 [GCC_NSS_PORT4_TX_CLK] = &gcc_nss_port4_tx_clk.clkr,
4314 [GCC_NSS_PORT5_RX_CLK] = &gcc_nss_port5_rx_clk.clkr,
4315 [GCC_NSS_PORT5_TX_CLK] = &gcc_nss_port5_tx_clk.clkr,
4316 [GCC_NSS_PPE_CFG_CLK] = &gcc_nss_ppe_cfg_clk.clkr,
4317 [GCC_NSS_PPE_CLK] = &gcc_nss_ppe_clk.clkr,
4318 [GCC_NSS_PPE_IPE_CLK] = &gcc_nss_ppe_ipe_clk.clkr,
4319 [GCC_NSS_PTP_REF_CLK] = &gcc_nss_ptp_ref_clk.clkr,
4320 [GCC_NSSNOC_CE_APB_CLK] = &gcc_nssnoc_ce_apb_clk.clkr,
4321 [GCC_NSSNOC_CE_AXI_CLK] = &gcc_nssnoc_ce_axi_clk.clkr,
4322 [GCC_NSSNOC_CRYPTO_CLK] = &gcc_nssnoc_crypto_clk.clkr,
4323 [GCC_NSSNOC_PPE_CFG_CLK] = &gcc_nssnoc_ppe_cfg_clk.clkr,
4324 [GCC_NSSNOC_PPE_CLK] = &gcc_nssnoc_ppe_clk.clkr,
4325 [GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,
4326 [GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,
4327 [GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,
4328 [GCC_NSSNOC_UBI0_AHB_CLK] = &gcc_nssnoc_ubi0_ahb_clk.clkr,
4329 [GCC_PORT1_MAC_CLK] = &gcc_port1_mac_clk.clkr,
4330 [GCC_PORT2_MAC_CLK] = &gcc_port2_mac_clk.clkr,
4331 [GCC_PORT3_MAC_CLK] = &gcc_port3_mac_clk.clkr,
4332 [GCC_PORT4_MAC_CLK] = &gcc_port4_mac_clk.clkr,
4333 [GCC_PORT5_MAC_CLK] = &gcc_port5_mac_clk.clkr,
4334 [GCC_UBI0_AHB_CLK] = &gcc_ubi0_ahb_clk.clkr,
4335 [GCC_UBI0_AXI_CLK] = &gcc_ubi0_axi_clk.clkr,
4336 [GCC_UBI0_NC_AXI_CLK] = &gcc_ubi0_nc_axi_clk.clkr,
4337 [GCC_UBI0_CORE_CLK] = &gcc_ubi0_core_clk.clkr,
4338 [GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr,
4339 [GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr,
4340 [GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr,
4341 [GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr,
4342 [GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr,
4343 [GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,
4344 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
4345 [GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,
4346 [GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
4347 [GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
4348 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
4349 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
4350 [GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,
4351 [GCC_UNIPHY0_PORT1_RX_CLK] = &gcc_uniphy0_port1_rx_clk.clkr,
4352 [GCC_UNIPHY0_PORT1_TX_CLK] = &gcc_uniphy0_port1_tx_clk.clkr,
4353 [GCC_UNIPHY0_PORT2_RX_CLK] = &gcc_uniphy0_port2_rx_clk.clkr,
4354 [GCC_UNIPHY0_PORT2_TX_CLK] = &gcc_uniphy0_port2_tx_clk.clkr,
4355 [GCC_UNIPHY0_PORT3_RX_CLK] = &gcc_uniphy0_port3_rx_clk.clkr,
4356 [GCC_UNIPHY0_PORT3_TX_CLK] = &gcc_uniphy0_port3_tx_clk.clkr,
4357 [GCC_UNIPHY0_PORT4_RX_CLK] = &gcc_uniphy0_port4_rx_clk.clkr,
4358 [GCC_UNIPHY0_PORT4_TX_CLK] = &gcc_uniphy0_port4_tx_clk.clkr,
4359 [GCC_UNIPHY0_PORT5_RX_CLK] = &gcc_uniphy0_port5_rx_clk.clkr,
4360 [GCC_UNIPHY0_PORT5_TX_CLK] = &gcc_uniphy0_port5_tx_clk.clkr,
4361 [GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,
4362 [GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,
4363 [GCC_UNIPHY1_PORT5_RX_CLK] = &gcc_uniphy1_port5_rx_clk.clkr,
4364 [GCC_UNIPHY1_PORT5_TX_CLK] = &gcc_uniphy1_port5_tx_clk.clkr,
4365 [GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,
4366 [GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,
4367 [GCC_SYS_NOC_USB0_AXI_CLK] = &gcc_sys_noc_usb0_axi_clk.clkr,
4368 [GCC_SNOC_BUS_TIMEOUT2_AHB_CLK] = &gcc_snoc_bus_timeout2_ahb_clk.clkr,
4369 [GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,
4370 [GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,
4371 [GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,
4372 [GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,
4373 [GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,
4374 [GCC_USB1_MASTER_CLK] = &gcc_usb1_master_clk.clkr,
4375 [GCC_USB1_MOCK_UTMI_CLK] = &gcc_usb1_mock_utmi_clk.clkr,
4376 [GCC_USB1_PHY_CFG_AHB_CLK] = &gcc_usb1_phy_cfg_ahb_clk.clkr,
4377 [GCC_USB1_SLEEP_CLK] = &gcc_usb1_sleep_clk.clkr,
4378 [GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,
4379 [GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,
4380 [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
4381 [SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr,
4382 [GCC_DCC_CLK] = &gcc_dcc_clk.clkr,
4383 [PCIE0_RCHNG_CLK_SRC] = &pcie0_rchng_clk_src.clkr,
4384 [GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,
4385 [PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr,
4386 [WCSS_AHB_CLK_SRC] = &wcss_ahb_clk_src.clkr,
4387 [Q6_AXI_CLK_SRC] = &q6_axi_clk_src.clkr,
4388 [RBCPR_WCSS_CLK_SRC] = &rbcpr_wcss_clk_src.clkr,
4389 [GCC_LPASS_CORE_AXIM_CLK] = &gcc_lpass_core_axim_clk.clkr,
4390 [LPASS_CORE_AXIM_CLK_SRC] = &lpass_core_axim_clk_src.clkr,
4391 [GCC_LPASS_SNOC_CFG_CLK] = &gcc_lpass_snoc_cfg_clk.clkr,
4392 [LPASS_SNOC_CFG_CLK_SRC] = &lpass_snoc_cfg_clk_src.clkr,
4393 [GCC_LPASS_Q6_AXIM_CLK] = &gcc_lpass_q6_axim_clk.clkr,
4394 [LPASS_Q6_AXIM_CLK_SRC] = &lpass_q6_axim_clk_src.clkr,
4395 [GCC_LPASS_Q6_ATBM_AT_CLK] = &gcc_lpass_q6_atbm_at_clk.clkr,
4396 [GCC_LPASS_Q6_PCLKDBG_CLK] = &gcc_lpass_q6_pclkdbg_clk.clkr,
4397 [GCC_LPASS_Q6SS_TSCTR_1TO2_CLK] = &gcc_lpass_q6ss_tsctr_1to2_clk.clkr,
4398 [GCC_LPASS_Q6SS_TRIG_CLK] = &gcc_lpass_q6ss_trig_clk.clkr,
4399 [GCC_LPASS_TBU_CLK] = &gcc_lpass_tbu_clk.clkr,
4400 [GCC_PCNOC_LPASS_CLK] = &gcc_pcnoc_lpass_clk.clkr,
4401 [GCC_MEM_NOC_UBI32_CLK] = &gcc_mem_noc_ubi32_clk.clkr,
4402 [GCC_MEM_NOC_LPASS_CLK] = &gcc_mem_noc_lpass_clk.clkr,
4403 [GCC_SNOC_LPASS_CFG_CLK] = &gcc_snoc_lpass_cfg_clk.clkr,
4404 [QDSS_STM_CLK_SRC] = &qdss_stm_clk_src.clkr,
4405 [QDSS_TRACECLKIN_CLK_SRC] = &qdss_traceclkin_clk_src.clkr,
4408 static const struct qcom_reset_map gcc_ipq6018_resets[] = {
4409 [GCC_BLSP1_BCR] = { 0x01000, 0 },
4410 [GCC_BLSP1_QUP1_BCR] = { 0x02000, 0 },
4411 [GCC_BLSP1_UART1_BCR] = { 0x02038, 0 },
4412 [GCC_BLSP1_QUP2_BCR] = { 0x03008, 0 },
4413 [GCC_BLSP1_UART2_BCR] = { 0x03028, 0 },
4414 [GCC_BLSP1_QUP3_BCR] = { 0x04008, 0 },
4415 [GCC_BLSP1_UART3_BCR] = { 0x04028, 0 },
4416 [GCC_BLSP1_QUP4_BCR] = { 0x05008, 0 },
4417 [GCC_BLSP1_UART4_BCR] = { 0x05028, 0 },
4418 [GCC_BLSP1_QUP5_BCR] = { 0x06008, 0 },
4419 [GCC_BLSP1_UART5_BCR] = { 0x06028, 0 },
4420 [GCC_BLSP1_QUP6_BCR] = { 0x07008, 0 },
4421 [GCC_BLSP1_UART6_BCR] = { 0x07028, 0 },
4422 [GCC_IMEM_BCR] = { 0x0e000, 0 },
4423 [GCC_SMMU_BCR] = { 0x12000, 0 },
4424 [GCC_APSS_TCU_BCR] = { 0x12050, 0 },
4425 [GCC_SMMU_XPU_BCR] = { 0x12054, 0 },
4426 [GCC_PCNOC_TBU_BCR] = { 0x12058, 0 },
4427 [GCC_SMMU_CFG_BCR] = { 0x1208c, 0 },
4428 [GCC_PRNG_BCR] = { 0x13000, 0 },
4429 [GCC_BOOT_ROM_BCR] = { 0x13008, 0 },
4430 [GCC_CRYPTO_BCR] = { 0x16000, 0 },
4431 [GCC_WCSS_BCR] = { 0x18000, 0 },
4432 [GCC_WCSS_Q6_BCR] = { 0x18100, 0 },
4433 [GCC_NSS_BCR] = { 0x19000, 0 },
4434 [GCC_SEC_CTRL_BCR] = { 0x1a000, 0 },
4435 [GCC_ADSS_BCR] = { 0x1c000, 0 },
4436 [GCC_DDRSS_BCR] = { 0x1e000, 0 },
4437 [GCC_SYSTEM_NOC_BCR] = { 0x26000, 0 },
4438 [GCC_PCNOC_BCR] = { 0x27018, 0 },
4439 [GCC_TCSR_BCR] = { 0x28000, 0 },
4440 [GCC_QDSS_BCR] = { 0x29000, 0 },
4441 [GCC_DCD_BCR] = { 0x2a000, 0 },
4442 [GCC_MSG_RAM_BCR] = { 0x2b000, 0 },
4443 [GCC_MPM_BCR] = { 0x2c000, 0 },
4444 [GCC_SPDM_BCR] = { 0x2f000, 0 },
4445 [GCC_RBCPR_BCR] = { 0x33000, 0 },
4446 [GCC_RBCPR_MX_BCR] = { 0x33014, 0 },
4447 [GCC_TLMM_BCR] = { 0x34000, 0 },
4448 [GCC_RBCPR_WCSS_BCR] = { 0x3a000, 0 },
4449 [GCC_USB0_PHY_BCR] = { 0x3e034, 0 },
4450 [GCC_USB3PHY_0_PHY_BCR] = { 0x3e03c, 0 },
4451 [GCC_USB0_BCR] = { 0x3e070, 0 },
4452 [GCC_USB1_BCR] = { 0x3f070, 0 },
4453 [GCC_QUSB2_0_PHY_BCR] = { 0x4103c, 0 },
4454 [GCC_QUSB2_1_PHY_BCR] = { 0x41040, 0 },
4455 [GCC_SDCC1_BCR] = { 0x42000, 0 },
4456 [GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x47000, 0 },
4457 [GCC_SNOC_BUS_TIMEOUT1_BCR] = { 0x47008, 0 },
4458 [GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x47010, 0 },
4459 [GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x48000, 0 },
4460 [GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x48008, 0 },
4461 [GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x48010, 0 },
4462 [GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x48018, 0 },
4463 [GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x48020, 0 },
4464 [GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x48028, 0 },
4465 [GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x48030, 0 },
4466 [GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x48038, 0 },
4467 [GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x48040, 0 },
4468 [GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x48048, 0 },
4469 [GCC_UNIPHY0_BCR] = { 0x56000, 0 },
4470 [GCC_UNIPHY1_BCR] = { 0x56100, 0 },
4471 [GCC_CMN_12GPLL_BCR] = { 0x56300, 0 },
4472 [GCC_QPIC_BCR] = { 0x57018, 0 },
4473 [GCC_MDIO_BCR] = { 0x58000, 0 },
4474 [GCC_WCSS_CORE_TBU_BCR] = { 0x66000, 0 },
4475 [GCC_WCSS_Q6_TBU_BCR] = { 0x67000, 0 },
4476 [GCC_USB0_TBU_BCR] = { 0x6a000, 0 },
4477 [GCC_PCIE0_TBU_BCR] = { 0x6b000, 0 },
4478 [GCC_NSS_NOC_TBU_BCR] = { 0x6e000, 0 },
4479 [GCC_PCIE0_BCR] = { 0x75004, 0 },
4480 [GCC_PCIE0_PHY_BCR] = { 0x75038, 0 },
4481 [GCC_PCIE0PHY_PHY_BCR] = { 0x7503c, 0 },
4482 [GCC_PCIE0_LINK_DOWN_BCR] = { 0x75044, 0 },
4483 [GCC_DCC_BCR] = { 0x77000, 0 },
4484 [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x78000, 0 },
4485 [GCC_SMMU_CATS_BCR] = { 0x7c000, 0 },
4486 [GCC_UBI0_AXI_ARES] = { 0x68010, 0 },
4487 [GCC_UBI0_AHB_ARES] = { 0x68010, 1 },
4488 [GCC_UBI0_NC_AXI_ARES] = { 0x68010, 2 },
4489 [GCC_UBI0_DBG_ARES] = { 0x68010, 3 },
4490 [GCC_UBI0_CORE_CLAMP_ENABLE] = { 0x68010, 4 },
4491 [GCC_UBI0_CLKRST_CLAMP_ENABLE] = { 0x68010, 5 },
4492 [GCC_UBI0_UTCM_ARES] = { 0x68010, 6 },
4493 [GCC_UBI0_CORE_ARES] = { 0x68010, 7 },
4494 [GCC_NSS_CFG_ARES] = { 0x68010, 16 },
4495 [GCC_NSS_NOC_ARES] = { 0x68010, 18 },
4496 [GCC_NSS_CRYPTO_ARES] = { 0x68010, 19 },
4497 [GCC_NSS_CSR_ARES] = { 0x68010, 20 },
4498 [GCC_NSS_CE_APB_ARES] = { 0x68010, 21 },
4499 [GCC_NSS_CE_AXI_ARES] = { 0x68010, 22 },
4500 [GCC_NSSNOC_CE_APB_ARES] = { 0x68010, 23 },
4501 [GCC_NSSNOC_CE_AXI_ARES] = { 0x68010, 24 },
4502 [GCC_NSSNOC_UBI0_AHB_ARES] = { 0x68010, 25 },
4503 [GCC_NSSNOC_SNOC_ARES] = { 0x68010, 27 },
4504 [GCC_NSSNOC_CRYPTO_ARES] = { 0x68010, 28 },
4505 [GCC_NSSNOC_ATB_ARES] = { 0x68010, 29 },
4506 [GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x68010, 30 },
4507 [GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x68010, 31 },
4508 [GCC_PCIE0_PIPE_ARES] = { 0x75040, 0 },
4509 [GCC_PCIE0_SLEEP_ARES] = { 0x75040, 1 },
4510 [GCC_PCIE0_CORE_STICKY_ARES] = { 0x75040, 2 },
4511 [GCC_PCIE0_AXI_MASTER_ARES] = { 0x75040, 3 },
4512 [GCC_PCIE0_AXI_SLAVE_ARES] = { 0x75040, 4 },
4513 [GCC_PCIE0_AHB_ARES] = { 0x75040, 5 },
4514 [GCC_PCIE0_AXI_MASTER_STICKY_ARES] = { 0x75040, 6 },
4515 [GCC_PCIE0_AXI_SLAVE_STICKY_ARES] = { 0x75040, 7 },
4516 [GCC_PPE_FULL_RESET] = { .reg = 0x68014, .bitmask = 0xf0000 },
4517 [GCC_UNIPHY0_SOFT_RESET] = { .reg = 0x56004, .bitmask = 0x3ff2 },
4518 [GCC_UNIPHY0_XPCS_RESET] = { 0x56004, 2 },
4519 [GCC_UNIPHY1_SOFT_RESET] = { .reg = 0x56104, .bitmask = 0x32 },
4520 [GCC_UNIPHY1_XPCS_RESET] = { 0x56104, 2 },
4521 [GCC_EDMA_HW_RESET] = { .reg = 0x68014, .bitmask = 0x300000 },
4522 [GCC_NSSPORT1_RESET] = { .reg = 0x68014, .bitmask = 0x1000003 },
4523 [GCC_NSSPORT2_RESET] = { .reg = 0x68014, .bitmask = 0x200000c },
4524 [GCC_NSSPORT3_RESET] = { .reg = 0x68014, .bitmask = 0x4000030 },
4525 [GCC_NSSPORT4_RESET] = { .reg = 0x68014, .bitmask = 0x8000300 },
4526 [GCC_NSSPORT5_RESET] = { .reg = 0x68014, .bitmask = 0x10000c00 },
4527 [GCC_UNIPHY0_PORT1_ARES] = { .reg = 0x56004, .bitmask = 0x30 },
4528 [GCC_UNIPHY0_PORT2_ARES] = { .reg = 0x56004, .bitmask = 0xc0 },
4529 [GCC_UNIPHY0_PORT3_ARES] = { .reg = 0x56004, .bitmask = 0x300 },
4530 [GCC_UNIPHY0_PORT4_ARES] = { .reg = 0x56004, .bitmask = 0xc00 },
4531 [GCC_UNIPHY0_PORT5_ARES] = { .reg = 0x56004, .bitmask = 0x3000 },
4532 [GCC_UNIPHY0_PORT_4_5_RESET] = { .reg = 0x56004, .bitmask = 0x3c02 },
4533 [GCC_UNIPHY0_PORT_4_RESET] = { .reg = 0x56004, .bitmask = 0xc02 },
4534 [GCC_LPASS_BCR] = {0x1F000, 0},
4535 [GCC_UBI32_TBU_BCR] = {0x65000, 0},
4536 [GCC_LPASS_TBU_BCR] = {0x6C000, 0},
4537 [GCC_WCSSAON_RESET] = {0x59010, 0},
4538 [GCC_LPASS_Q6_AXIM_ARES] = {0x1F004, 0},
4539 [GCC_LPASS_Q6SS_TSCTR_1TO2_ARES] = {0x1F004, 1},
4540 [GCC_LPASS_Q6SS_TRIG_ARES] = {0x1F004, 2},
4541 [GCC_LPASS_Q6_ATBM_AT_ARES] = {0x1F004, 3},
4542 [GCC_LPASS_Q6_PCLKDBG_ARES] = {0x1F004, 4},
4543 [GCC_LPASS_CORE_AXIM_ARES] = {0x1F004, 5},
4544 [GCC_LPASS_SNOC_CFG_ARES] = {0x1F004, 6},
4545 [GCC_WCSS_DBG_ARES] = {0x59008, 0},
4546 [GCC_WCSS_ECAHB_ARES] = {0x59008, 1},
4547 [GCC_WCSS_ACMT_ARES] = {0x59008, 2},
4548 [GCC_WCSS_DBG_BDG_ARES] = {0x59008, 3},
4549 [GCC_WCSS_AHB_S_ARES] = {0x59008, 4},
4550 [GCC_WCSS_AXI_M_ARES] = {0x59008, 5},
4551 [GCC_Q6SS_DBG_ARES] = {0x59110, 0},
4552 [GCC_Q6_AHB_S_ARES] = {0x59110, 1},
4553 [GCC_Q6_AHB_ARES] = {0x59110, 2},
4554 [GCC_Q6_AXIM2_ARES] = {0x59110, 3},
4555 [GCC_Q6_AXIM_ARES] = {0x59110, 4},
4558 static const struct of_device_id gcc_ipq6018_match_table[] = {
4559 { .compatible = "qcom,gcc-ipq6018" },
4562 MODULE_DEVICE_TABLE(of, gcc_ipq6018_match_table);
4564 static const struct regmap_config gcc_ipq6018_regmap_config = {
4568 .max_register = 0x7fffc,
4572 static const struct qcom_cc_desc gcc_ipq6018_desc = {
4573 .config = &gcc_ipq6018_regmap_config,
4574 .clks = gcc_ipq6018_clks,
4575 .num_clks = ARRAY_SIZE(gcc_ipq6018_clks),
4576 .resets = gcc_ipq6018_resets,
4577 .num_resets = ARRAY_SIZE(gcc_ipq6018_resets),
4578 .clk_hws = gcc_ipq6018_hws,
4579 .num_clk_hws = ARRAY_SIZE(gcc_ipq6018_hws),
4582 static int gcc_ipq6018_probe(struct platform_device *pdev)
4584 struct regmap *regmap;
4586 regmap = qcom_cc_map(pdev, &gcc_ipq6018_desc);
4588 return PTR_ERR(regmap);
4590 /* Disable SW_COLLAPSE for USB0 GDSCR */
4591 regmap_update_bits(regmap, 0x3e078, BIT(0), 0x0);
4592 /* Enable SW_OVERRIDE for USB0 GDSCR */
4593 regmap_update_bits(regmap, 0x3e078, BIT(2), BIT(2));
4594 /* Disable SW_COLLAPSE for USB1 GDSCR */
4595 regmap_update_bits(regmap, 0x3f078, BIT(0), 0x0);
4596 /* Enable SW_OVERRIDE for USB1 GDSCR */
4597 regmap_update_bits(regmap, 0x3f078, BIT(2), BIT(2));
4599 /* SW Workaround for UBI Huyara PLL */
4600 regmap_update_bits(regmap, 0x2501c, BIT(26), BIT(26));
4602 clk_alpha_pll_configure(&ubi32_pll_main, regmap, &ubi32_pll_config);
4604 clk_alpha_pll_configure(&nss_crypto_pll_main, regmap,
4605 &nss_crypto_pll_config);
4607 return qcom_cc_really_probe(pdev, &gcc_ipq6018_desc, regmap);
4610 static struct platform_driver gcc_ipq6018_driver = {
4611 .probe = gcc_ipq6018_probe,
4613 .name = "qcom,gcc-ipq6018",
4614 .of_match_table = gcc_ipq6018_match_table,
4618 static int __init gcc_ipq6018_init(void)
4620 return platform_driver_register(&gcc_ipq6018_driver);
4622 core_initcall(gcc_ipq6018_init);
4624 static void __exit gcc_ipq6018_exit(void)
4626 platform_driver_unregister(&gcc_ipq6018_driver);
4628 module_exit(gcc_ipq6018_exit);
4630 MODULE_DESCRIPTION("Qualcomm Technologies, Inc. GCC IPQ6018 Driver");
4631 MODULE_LICENSE("GPL v2");