1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2017, 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 <dt-bindings/clock/qcom,gcc-ipq8074.h>
18 #include "clk-regmap.h"
21 #include "clk-branch.h"
22 #include "clk-alpha-pll.h"
23 #include "clk-regmap-divider.h"
24 #include "clk-regmap-mux.h"
51 static const char * const gcc_xo_gpll0_gpll0_out_main_div2[] = {
54 "gpll0_out_main_div2",
57 static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = {
63 static const struct parent_map gcc_xo_gpll0_map[] = {
68 static const char * const gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = {
72 "gpll0_out_main_div2",
75 static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = {
82 static const char * const gcc_xo_gpll0_sleep_clk[] = {
88 static const struct parent_map gcc_xo_gpll0_sleep_clk_map[] = {
94 static const char * const gcc_xo_gpll6_gpll0_gpll0_out_main_div2[] = {
98 "gpll0_out_main_div2",
101 static const struct parent_map gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map[] = {
108 static const char * const gcc_xo_gpll0_out_main_div2_gpll0[] = {
110 "gpll0_out_main_div2",
114 static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = {
120 static const char * const gcc_usb3phy_0_cc_pipe_clk_xo[] = {
121 "usb3phy_0_cc_pipe_clk",
125 static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = {
126 { P_USB3PHY_0_PIPE, 0 },
130 static const char * const gcc_usb3phy_1_cc_pipe_clk_xo[] = {
131 "usb3phy_1_cc_pipe_clk",
135 static const struct parent_map gcc_usb3phy_1_cc_pipe_clk_xo_map[] = {
136 { P_USB3PHY_1_PIPE, 0 },
140 static const char * const gcc_pcie20_phy0_pipe_clk_xo[] = {
141 "pcie20_phy0_pipe_clk",
145 static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = {
146 { P_PCIE20_PHY0_PIPE, 0 },
150 static const char * const gcc_pcie20_phy1_pipe_clk_xo[] = {
151 "pcie20_phy1_pipe_clk",
155 static const struct parent_map gcc_pcie20_phy1_pipe_clk_xo_map[] = {
156 { P_PCIE20_PHY1_PIPE, 0 },
160 static const char * const gcc_xo_gpll0_gpll6_gpll0_div2[] = {
164 "gpll0_out_main_div2",
167 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_div2_map[] = {
174 static const char * const gcc_xo_gpll0_gpll6_gpll0_out_main_div2[] = {
178 "gpll0_out_main_div2",
181 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map[] = {
188 static const char * const gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2[] = {
190 "bias_pll_nss_noc_clk",
195 static const struct parent_map gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2_map[] = {
197 { P_BIAS_PLL_NSS_NOC, 1 },
202 static const char * const gcc_xo_nss_crypto_pll_gpll0[] = {
208 static const struct parent_map gcc_xo_nss_crypto_pll_gpll0_map[] = {
210 { P_NSS_CRYPTO_PLL, 1 },
214 static const char * const gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6[] = {
223 static const struct parent_map gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map[] = {
232 static const char * const gcc_xo_gpll0_out_main_div2[] = {
234 "gpll0_out_main_div2",
237 static const struct parent_map gcc_xo_gpll0_out_main_div2_map[] = {
242 static const char * const gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {
251 static const struct parent_map gcc_xo_bias_gpll0_gpll4_nss_ubi32_map[] = {
256 { P_NSS_CRYPTO_PLL, 4 },
260 static const char * const gcc_xo_gpll0_gpll4[] = {
266 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
272 static const char * const gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {
274 "uniphy0_gcc_rx_clk",
275 "uniphy0_gcc_tx_clk",
280 static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {
288 static const char * const gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {
290 "uniphy0_gcc_tx_clk",
291 "uniphy0_gcc_rx_clk",
296 static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {
304 static const char * const gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {
306 "uniphy0_gcc_rx_clk",
307 "uniphy0_gcc_tx_clk",
308 "uniphy1_gcc_rx_clk",
309 "uniphy1_gcc_tx_clk",
314 static const struct parent_map
315 gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map[] = {
325 static const char * const gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {
327 "uniphy0_gcc_tx_clk",
328 "uniphy0_gcc_rx_clk",
329 "uniphy1_gcc_tx_clk",
330 "uniphy1_gcc_rx_clk",
335 static const struct parent_map
336 gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map[] = {
346 static const char * const gcc_xo_uniphy2_rx_tx_ubi32_bias[] = {
348 "uniphy2_gcc_rx_clk",
349 "uniphy2_gcc_tx_clk",
354 static const struct parent_map gcc_xo_uniphy2_rx_tx_ubi32_bias_map[] = {
362 static const char * const gcc_xo_uniphy2_tx_rx_ubi32_bias[] = {
364 "uniphy2_gcc_tx_clk",
365 "uniphy2_gcc_rx_clk",
370 static const struct parent_map gcc_xo_uniphy2_tx_rx_ubi32_bias_map[] = {
378 static const char * const gcc_xo_gpll0_gpll6_gpll0_sleep_clk[] = {
382 "gpll0_out_main_div2",
386 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map[] = {
394 static struct clk_alpha_pll gpll0_main = {
396 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
398 .enable_reg = 0x0b000,
399 .enable_mask = BIT(0),
400 .hw.init = &(struct clk_init_data){
401 .name = "gpll0_main",
402 .parent_names = (const char *[]){
406 .ops = &clk_alpha_pll_ops,
411 static struct clk_fixed_factor gpll0_out_main_div2 = {
414 .hw.init = &(struct clk_init_data){
415 .name = "gpll0_out_main_div2",
416 .parent_names = (const char *[]){
420 .ops = &clk_fixed_factor_ops,
421 .flags = CLK_SET_RATE_PARENT,
425 static struct clk_alpha_pll_postdiv gpll0 = {
427 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
429 .clkr.hw.init = &(struct clk_init_data){
431 .parent_names = (const char *[]){
435 .ops = &clk_alpha_pll_postdiv_ro_ops,
439 static struct clk_alpha_pll gpll2_main = {
441 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
443 .enable_reg = 0x0b000,
444 .enable_mask = BIT(2),
445 .hw.init = &(struct clk_init_data){
446 .name = "gpll2_main",
447 .parent_names = (const char *[]){
451 .ops = &clk_alpha_pll_ops,
452 .flags = CLK_IS_CRITICAL,
457 static struct clk_alpha_pll_postdiv gpll2 = {
459 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
461 .clkr.hw.init = &(struct clk_init_data){
463 .parent_names = (const char *[]){
467 .ops = &clk_alpha_pll_postdiv_ro_ops,
468 .flags = CLK_SET_RATE_PARENT,
472 static struct clk_alpha_pll gpll4_main = {
474 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
476 .enable_reg = 0x0b000,
477 .enable_mask = BIT(5),
478 .hw.init = &(struct clk_init_data){
479 .name = "gpll4_main",
480 .parent_names = (const char *[]){
484 .ops = &clk_alpha_pll_ops,
485 .flags = CLK_IS_CRITICAL,
490 static struct clk_alpha_pll_postdiv gpll4 = {
492 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
494 .clkr.hw.init = &(struct clk_init_data){
496 .parent_names = (const char *[]){
500 .ops = &clk_alpha_pll_postdiv_ro_ops,
501 .flags = CLK_SET_RATE_PARENT,
505 static struct clk_alpha_pll gpll6_main = {
507 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
508 .flags = SUPPORTS_DYNAMIC_UPDATE,
510 .enable_reg = 0x0b000,
511 .enable_mask = BIT(7),
512 .hw.init = &(struct clk_init_data){
513 .name = "gpll6_main",
514 .parent_names = (const char *[]){
518 .ops = &clk_alpha_pll_ops,
519 .flags = CLK_IS_CRITICAL,
524 static struct clk_alpha_pll_postdiv gpll6 = {
526 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
528 .clkr.hw.init = &(struct clk_init_data){
530 .parent_names = (const char *[]){
534 .ops = &clk_alpha_pll_postdiv_ro_ops,
535 .flags = CLK_SET_RATE_PARENT,
539 static struct clk_fixed_factor gpll6_out_main_div2 = {
542 .hw.init = &(struct clk_init_data){
543 .name = "gpll6_out_main_div2",
544 .parent_names = (const char *[]){
548 .ops = &clk_fixed_factor_ops,
549 .flags = CLK_SET_RATE_PARENT,
553 static struct clk_alpha_pll ubi32_pll_main = {
555 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
556 .flags = SUPPORTS_DYNAMIC_UPDATE,
558 .enable_reg = 0x0b000,
559 .enable_mask = BIT(6),
560 .hw.init = &(struct clk_init_data){
561 .name = "ubi32_pll_main",
562 .parent_names = (const char *[]){
566 .ops = &clk_alpha_pll_huayra_ops,
571 static struct clk_alpha_pll_postdiv ubi32_pll = {
573 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
575 .clkr.hw.init = &(struct clk_init_data){
577 .parent_names = (const char *[]){
581 .ops = &clk_alpha_pll_postdiv_ro_ops,
582 .flags = CLK_SET_RATE_PARENT,
586 static struct clk_alpha_pll nss_crypto_pll_main = {
588 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
590 .enable_reg = 0x0b000,
591 .enable_mask = BIT(4),
592 .hw.init = &(struct clk_init_data){
593 .name = "nss_crypto_pll_main",
594 .parent_names = (const char *[]){
598 .ops = &clk_alpha_pll_ops,
603 static struct clk_alpha_pll_postdiv nss_crypto_pll = {
605 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
607 .clkr.hw.init = &(struct clk_init_data){
608 .name = "nss_crypto_pll",
609 .parent_names = (const char *[]){
610 "nss_crypto_pll_main"
613 .ops = &clk_alpha_pll_postdiv_ro_ops,
614 .flags = CLK_SET_RATE_PARENT,
618 static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src[] = {
619 F(19200000, P_XO, 1, 0, 0),
620 F(50000000, P_GPLL0, 16, 0, 0),
621 F(100000000, P_GPLL0, 8, 0, 0),
625 static struct clk_rcg2 pcnoc_bfdcd_clk_src = {
627 .freq_tbl = ftbl_pcnoc_bfdcd_clk_src,
629 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
630 .clkr.hw.init = &(struct clk_init_data){
631 .name = "pcnoc_bfdcd_clk_src",
632 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
634 .ops = &clk_rcg2_ops,
635 .flags = CLK_IS_CRITICAL,
639 static struct clk_fixed_factor pcnoc_clk_src = {
642 .hw.init = &(struct clk_init_data){
643 .name = "pcnoc_clk_src",
644 .parent_names = (const char *[]){
645 "pcnoc_bfdcd_clk_src"
648 .ops = &clk_fixed_factor_ops,
649 .flags = CLK_SET_RATE_PARENT,
653 static struct clk_branch gcc_sleep_clk_src = {
656 .enable_reg = 0x30000,
657 .enable_mask = BIT(1),
658 .hw.init = &(struct clk_init_data){
659 .name = "gcc_sleep_clk_src",
660 .parent_names = (const char *[]){
664 .ops = &clk_branch2_ops,
665 .flags = CLK_IS_CRITICAL,
670 static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src[] = {
671 F(19200000, P_XO, 1, 0, 0),
672 F(25000000, P_GPLL0_DIV2, 16, 0, 0),
673 F(50000000, P_GPLL0, 16, 0, 0),
677 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
679 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
681 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
682 .clkr.hw.init = &(struct clk_init_data){
683 .name = "blsp1_qup1_i2c_apps_clk_src",
684 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
686 .ops = &clk_rcg2_ops,
690 static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src[] = {
691 F(960000, P_XO, 10, 1, 2),
692 F(4800000, P_XO, 4, 0, 0),
693 F(9600000, P_XO, 2, 0, 0),
694 F(12500000, P_GPLL0_DIV2, 16, 1, 2),
695 F(16000000, P_GPLL0, 10, 1, 5),
696 F(19200000, P_XO, 1, 0, 0),
697 F(25000000, P_GPLL0, 16, 1, 2),
698 F(50000000, P_GPLL0, 16, 0, 0),
702 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
704 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
707 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
708 .clkr.hw.init = &(struct clk_init_data){
709 .name = "blsp1_qup1_spi_apps_clk_src",
710 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
712 .ops = &clk_rcg2_ops,
716 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
718 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
720 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
721 .clkr.hw.init = &(struct clk_init_data){
722 .name = "blsp1_qup2_i2c_apps_clk_src",
723 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
725 .ops = &clk_rcg2_ops,
729 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
731 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
734 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
735 .clkr.hw.init = &(struct clk_init_data){
736 .name = "blsp1_qup2_spi_apps_clk_src",
737 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
739 .ops = &clk_rcg2_ops,
743 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
745 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
747 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
748 .clkr.hw.init = &(struct clk_init_data){
749 .name = "blsp1_qup3_i2c_apps_clk_src",
750 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
752 .ops = &clk_rcg2_ops,
756 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
758 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
761 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
762 .clkr.hw.init = &(struct clk_init_data){
763 .name = "blsp1_qup3_spi_apps_clk_src",
764 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
766 .ops = &clk_rcg2_ops,
770 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
772 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
774 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
775 .clkr.hw.init = &(struct clk_init_data){
776 .name = "blsp1_qup4_i2c_apps_clk_src",
777 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
779 .ops = &clk_rcg2_ops,
783 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
785 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
788 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
789 .clkr.hw.init = &(struct clk_init_data){
790 .name = "blsp1_qup4_spi_apps_clk_src",
791 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
793 .ops = &clk_rcg2_ops,
797 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
799 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
801 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
802 .clkr.hw.init = &(struct clk_init_data){
803 .name = "blsp1_qup5_i2c_apps_clk_src",
804 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
806 .ops = &clk_rcg2_ops,
810 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
812 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
815 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
816 .clkr.hw.init = &(struct clk_init_data){
817 .name = "blsp1_qup5_spi_apps_clk_src",
818 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
820 .ops = &clk_rcg2_ops,
824 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
826 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
828 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
829 .clkr.hw.init = &(struct clk_init_data){
830 .name = "blsp1_qup6_i2c_apps_clk_src",
831 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
833 .ops = &clk_rcg2_ops,
837 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
839 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
842 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
843 .clkr.hw.init = &(struct clk_init_data){
844 .name = "blsp1_qup6_spi_apps_clk_src",
845 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
847 .ops = &clk_rcg2_ops,
851 static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src[] = {
852 F(3686400, P_GPLL0_DIV2, 1, 144, 15625),
853 F(7372800, P_GPLL0_DIV2, 1, 288, 15625),
854 F(14745600, P_GPLL0_DIV2, 1, 576, 15625),
855 F(16000000, P_GPLL0_DIV2, 5, 1, 5),
856 F(19200000, P_XO, 1, 0, 0),
857 F(24000000, P_GPLL0, 1, 3, 100),
858 F(25000000, P_GPLL0, 16, 1, 2),
859 F(32000000, P_GPLL0, 1, 1, 25),
860 F(40000000, P_GPLL0, 1, 1, 20),
861 F(46400000, P_GPLL0, 1, 29, 500),
862 F(48000000, P_GPLL0, 1, 3, 50),
863 F(51200000, P_GPLL0, 1, 8, 125),
864 F(56000000, P_GPLL0, 1, 7, 100),
865 F(58982400, P_GPLL0, 1, 1152, 15625),
866 F(60000000, P_GPLL0, 1, 3, 40),
867 F(64000000, P_GPLL0, 12.5, 1, 1),
871 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
873 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
876 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
877 .clkr.hw.init = &(struct clk_init_data){
878 .name = "blsp1_uart1_apps_clk_src",
879 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
881 .ops = &clk_rcg2_ops,
885 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
887 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
890 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
891 .clkr.hw.init = &(struct clk_init_data){
892 .name = "blsp1_uart2_apps_clk_src",
893 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
895 .ops = &clk_rcg2_ops,
899 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
901 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
904 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
905 .clkr.hw.init = &(struct clk_init_data){
906 .name = "blsp1_uart3_apps_clk_src",
907 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
909 .ops = &clk_rcg2_ops,
913 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
915 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
918 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
919 .clkr.hw.init = &(struct clk_init_data){
920 .name = "blsp1_uart4_apps_clk_src",
921 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
923 .ops = &clk_rcg2_ops,
927 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
929 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
932 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
933 .clkr.hw.init = &(struct clk_init_data){
934 .name = "blsp1_uart5_apps_clk_src",
935 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
937 .ops = &clk_rcg2_ops,
941 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
943 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
946 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
947 .clkr.hw.init = &(struct clk_init_data){
948 .name = "blsp1_uart6_apps_clk_src",
949 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
951 .ops = &clk_rcg2_ops,
955 static const struct clk_parent_data gcc_xo_gpll0[] = {
957 { .hw = &gpll0.clkr.hw },
960 static const struct freq_tbl ftbl_pcie_axi_clk_src[] = {
961 F(19200000, P_XO, 1, 0, 0),
962 F(200000000, P_GPLL0, 4, 0, 0),
966 static struct clk_rcg2 pcie0_axi_clk_src = {
968 .freq_tbl = ftbl_pcie_axi_clk_src,
970 .parent_map = gcc_xo_gpll0_map,
971 .clkr.hw.init = &(struct clk_init_data){
972 .name = "pcie0_axi_clk_src",
973 .parent_data = gcc_xo_gpll0,
975 .ops = &clk_rcg2_ops,
979 static const struct freq_tbl ftbl_pcie_aux_clk_src[] = {
980 F(19200000, P_XO, 1, 0, 0),
983 static struct clk_rcg2 pcie0_aux_clk_src = {
985 .freq_tbl = ftbl_pcie_aux_clk_src,
988 .parent_map = gcc_xo_gpll0_sleep_clk_map,
989 .clkr.hw.init = &(struct clk_init_data){
990 .name = "pcie0_aux_clk_src",
991 .parent_names = gcc_xo_gpll0_sleep_clk,
993 .ops = &clk_rcg2_ops,
997 static struct clk_regmap_mux pcie0_pipe_clk_src = {
1001 .parent_map = gcc_pcie20_phy0_pipe_clk_xo_map,
1003 .hw.init = &(struct clk_init_data){
1004 .name = "pcie0_pipe_clk_src",
1005 .parent_names = gcc_pcie20_phy0_pipe_clk_xo,
1007 .ops = &clk_regmap_mux_closest_ops,
1008 .flags = CLK_SET_RATE_PARENT,
1013 static struct clk_rcg2 pcie1_axi_clk_src = {
1014 .cmd_rcgr = 0x76054,
1015 .freq_tbl = ftbl_pcie_axi_clk_src,
1017 .parent_map = gcc_xo_gpll0_map,
1018 .clkr.hw.init = &(struct clk_init_data){
1019 .name = "pcie1_axi_clk_src",
1020 .parent_data = gcc_xo_gpll0,
1022 .ops = &clk_rcg2_ops,
1026 static struct clk_rcg2 pcie1_aux_clk_src = {
1027 .cmd_rcgr = 0x76024,
1028 .freq_tbl = ftbl_pcie_aux_clk_src,
1031 .parent_map = gcc_xo_gpll0_sleep_clk_map,
1032 .clkr.hw.init = &(struct clk_init_data){
1033 .name = "pcie1_aux_clk_src",
1034 .parent_names = gcc_xo_gpll0_sleep_clk,
1036 .ops = &clk_rcg2_ops,
1040 static struct clk_regmap_mux pcie1_pipe_clk_src = {
1044 .parent_map = gcc_pcie20_phy1_pipe_clk_xo_map,
1046 .hw.init = &(struct clk_init_data){
1047 .name = "pcie1_pipe_clk_src",
1048 .parent_names = gcc_pcie20_phy1_pipe_clk_xo,
1050 .ops = &clk_regmap_mux_closest_ops,
1051 .flags = CLK_SET_RATE_PARENT,
1056 static const struct freq_tbl ftbl_sdcc_apps_clk_src[] = {
1057 F(144000, P_XO, 16, 3, 25),
1058 F(400000, P_XO, 12, 1, 4),
1059 F(24000000, P_GPLL2, 12, 1, 4),
1060 F(48000000, P_GPLL2, 12, 1, 2),
1061 F(96000000, P_GPLL2, 12, 0, 0),
1062 F(177777778, P_GPLL0, 4.5, 0, 0),
1063 F(192000000, P_GPLL2, 6, 0, 0),
1064 F(384000000, P_GPLL2, 3, 0, 0),
1068 static struct clk_rcg2 sdcc1_apps_clk_src = {
1069 .cmd_rcgr = 0x42004,
1070 .freq_tbl = ftbl_sdcc_apps_clk_src,
1073 .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
1074 .clkr.hw.init = &(struct clk_init_data){
1075 .name = "sdcc1_apps_clk_src",
1076 .parent_names = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
1078 .ops = &clk_rcg2_floor_ops,
1082 static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = {
1083 F(19200000, P_XO, 1, 0, 0),
1084 F(160000000, P_GPLL0, 5, 0, 0),
1085 F(308570000, P_GPLL6, 3.5, 0, 0),
1088 static struct clk_rcg2 sdcc1_ice_core_clk_src = {
1089 .cmd_rcgr = 0x5d000,
1090 .freq_tbl = ftbl_sdcc_ice_core_clk_src,
1093 .parent_map = gcc_xo_gpll0_gpll6_gpll0_div2_map,
1094 .clkr.hw.init = &(struct clk_init_data){
1095 .name = "sdcc1_ice_core_clk_src",
1096 .parent_names = gcc_xo_gpll0_gpll6_gpll0_div2,
1098 .ops = &clk_rcg2_ops,
1102 static struct clk_rcg2 sdcc2_apps_clk_src = {
1103 .cmd_rcgr = 0x43004,
1104 .freq_tbl = ftbl_sdcc_apps_clk_src,
1107 .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
1108 .clkr.hw.init = &(struct clk_init_data){
1109 .name = "sdcc2_apps_clk_src",
1110 .parent_names = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
1112 .ops = &clk_rcg2_floor_ops,
1116 static const struct freq_tbl ftbl_usb_master_clk_src[] = {
1117 F(80000000, P_GPLL0_DIV2, 5, 0, 0),
1118 F(100000000, P_GPLL0, 8, 0, 0),
1119 F(133330000, P_GPLL0, 6, 0, 0),
1123 static struct clk_rcg2 usb0_master_clk_src = {
1124 .cmd_rcgr = 0x3e00c,
1125 .freq_tbl = ftbl_usb_master_clk_src,
1128 .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
1129 .clkr.hw.init = &(struct clk_init_data){
1130 .name = "usb0_master_clk_src",
1131 .parent_names = gcc_xo_gpll0_out_main_div2_gpll0,
1133 .ops = &clk_rcg2_ops,
1137 static const struct freq_tbl ftbl_usb_aux_clk_src[] = {
1138 F(19200000, P_XO, 1, 0, 0),
1142 static struct clk_rcg2 usb0_aux_clk_src = {
1143 .cmd_rcgr = 0x3e05c,
1144 .freq_tbl = ftbl_usb_aux_clk_src,
1147 .parent_map = gcc_xo_gpll0_sleep_clk_map,
1148 .clkr.hw.init = &(struct clk_init_data){
1149 .name = "usb0_aux_clk_src",
1150 .parent_names = gcc_xo_gpll0_sleep_clk,
1152 .ops = &clk_rcg2_ops,
1156 static const struct freq_tbl ftbl_usb_mock_utmi_clk_src[] = {
1157 F(19200000, P_XO, 1, 0, 0),
1158 F(20000000, P_GPLL6, 6, 1, 9),
1159 F(60000000, P_GPLL6, 6, 1, 3),
1163 static struct clk_rcg2 usb0_mock_utmi_clk_src = {
1164 .cmd_rcgr = 0x3e020,
1165 .freq_tbl = ftbl_usb_mock_utmi_clk_src,
1168 .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1169 .clkr.hw.init = &(struct clk_init_data){
1170 .name = "usb0_mock_utmi_clk_src",
1171 .parent_names = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1173 .ops = &clk_rcg2_ops,
1177 static struct clk_regmap_mux usb0_pipe_clk_src = {
1181 .parent_map = gcc_usb3phy_0_cc_pipe_clk_xo_map,
1183 .hw.init = &(struct clk_init_data){
1184 .name = "usb0_pipe_clk_src",
1185 .parent_names = gcc_usb3phy_0_cc_pipe_clk_xo,
1187 .ops = &clk_regmap_mux_closest_ops,
1188 .flags = CLK_SET_RATE_PARENT,
1193 static struct clk_rcg2 usb1_master_clk_src = {
1194 .cmd_rcgr = 0x3f00c,
1195 .freq_tbl = ftbl_usb_master_clk_src,
1198 .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
1199 .clkr.hw.init = &(struct clk_init_data){
1200 .name = "usb1_master_clk_src",
1201 .parent_names = gcc_xo_gpll0_out_main_div2_gpll0,
1203 .ops = &clk_rcg2_ops,
1207 static struct clk_rcg2 usb1_aux_clk_src = {
1208 .cmd_rcgr = 0x3f05c,
1209 .freq_tbl = ftbl_usb_aux_clk_src,
1212 .parent_map = gcc_xo_gpll0_sleep_clk_map,
1213 .clkr.hw.init = &(struct clk_init_data){
1214 .name = "usb1_aux_clk_src",
1215 .parent_names = gcc_xo_gpll0_sleep_clk,
1217 .ops = &clk_rcg2_ops,
1221 static struct clk_rcg2 usb1_mock_utmi_clk_src = {
1222 .cmd_rcgr = 0x3f020,
1223 .freq_tbl = ftbl_usb_mock_utmi_clk_src,
1226 .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1227 .clkr.hw.init = &(struct clk_init_data){
1228 .name = "usb1_mock_utmi_clk_src",
1229 .parent_names = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1231 .ops = &clk_rcg2_ops,
1235 static struct clk_regmap_mux usb1_pipe_clk_src = {
1239 .parent_map = gcc_usb3phy_1_cc_pipe_clk_xo_map,
1241 .hw.init = &(struct clk_init_data){
1242 .name = "usb1_pipe_clk_src",
1243 .parent_names = gcc_usb3phy_1_cc_pipe_clk_xo,
1245 .ops = &clk_regmap_mux_closest_ops,
1246 .flags = CLK_SET_RATE_PARENT,
1251 static struct clk_branch gcc_xo_clk_src = {
1252 .halt_reg = 0x30018,
1254 .enable_reg = 0x30018,
1255 .enable_mask = BIT(1),
1256 .hw.init = &(struct clk_init_data){
1257 .name = "gcc_xo_clk_src",
1258 .parent_names = (const char *[]){
1262 .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
1263 .ops = &clk_branch2_ops,
1268 static struct clk_fixed_factor gcc_xo_div4_clk_src = {
1271 .hw.init = &(struct clk_init_data){
1272 .name = "gcc_xo_div4_clk_src",
1273 .parent_names = (const char *[]){
1277 .ops = &clk_fixed_factor_ops,
1278 .flags = CLK_SET_RATE_PARENT,
1282 static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src[] = {
1283 F(19200000, P_XO, 1, 0, 0),
1284 F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1285 F(100000000, P_GPLL0, 8, 0, 0),
1286 F(133333333, P_GPLL0, 6, 0, 0),
1287 F(160000000, P_GPLL0, 5, 0, 0),
1288 F(200000000, P_GPLL0, 4, 0, 0),
1289 F(266666667, P_GPLL0, 3, 0, 0),
1293 static struct clk_rcg2 system_noc_bfdcd_clk_src = {
1294 .cmd_rcgr = 0x26004,
1295 .freq_tbl = ftbl_system_noc_bfdcd_clk_src,
1297 .parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
1298 .clkr.hw.init = &(struct clk_init_data){
1299 .name = "system_noc_bfdcd_clk_src",
1300 .parent_names = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
1302 .ops = &clk_rcg2_ops,
1303 .flags = CLK_IS_CRITICAL,
1307 static struct clk_fixed_factor system_noc_clk_src = {
1310 .hw.init = &(struct clk_init_data){
1311 .name = "system_noc_clk_src",
1312 .parent_names = (const char *[]){
1313 "system_noc_bfdcd_clk_src"
1316 .ops = &clk_fixed_factor_ops,
1317 .flags = CLK_SET_RATE_PARENT,
1321 static const struct freq_tbl ftbl_nss_ce_clk_src[] = {
1322 F(19200000, P_XO, 1, 0, 0),
1323 F(200000000, P_GPLL0, 4, 0, 0),
1327 static struct clk_rcg2 nss_ce_clk_src = {
1328 .cmd_rcgr = 0x68098,
1329 .freq_tbl = ftbl_nss_ce_clk_src,
1331 .parent_map = gcc_xo_gpll0_map,
1332 .clkr.hw.init = &(struct clk_init_data){
1333 .name = "nss_ce_clk_src",
1334 .parent_data = gcc_xo_gpll0,
1336 .ops = &clk_rcg2_ops,
1340 static const struct freq_tbl ftbl_nss_noc_bfdcd_clk_src[] = {
1341 F(19200000, P_XO, 1, 0, 0),
1342 F(461500000, P_BIAS_PLL_NSS_NOC, 1, 0, 0),
1346 static struct clk_rcg2 nss_noc_bfdcd_clk_src = {
1347 .cmd_rcgr = 0x68088,
1348 .freq_tbl = ftbl_nss_noc_bfdcd_clk_src,
1350 .parent_map = gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2_map,
1351 .clkr.hw.init = &(struct clk_init_data){
1352 .name = "nss_noc_bfdcd_clk_src",
1353 .parent_names = gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2,
1355 .ops = &clk_rcg2_ops,
1359 static struct clk_fixed_factor nss_noc_clk_src = {
1362 .hw.init = &(struct clk_init_data){
1363 .name = "nss_noc_clk_src",
1364 .parent_names = (const char *[]){
1365 "nss_noc_bfdcd_clk_src"
1368 .ops = &clk_fixed_factor_ops,
1369 .flags = CLK_SET_RATE_PARENT,
1373 static const struct freq_tbl ftbl_nss_crypto_clk_src[] = {
1374 F(19200000, P_XO, 1, 0, 0),
1375 F(600000000, P_NSS_CRYPTO_PLL, 1, 0, 0),
1379 static struct clk_rcg2 nss_crypto_clk_src = {
1380 .cmd_rcgr = 0x68144,
1381 .freq_tbl = ftbl_nss_crypto_clk_src,
1384 .parent_map = gcc_xo_nss_crypto_pll_gpll0_map,
1385 .clkr.hw.init = &(struct clk_init_data){
1386 .name = "nss_crypto_clk_src",
1387 .parent_names = gcc_xo_nss_crypto_pll_gpll0,
1389 .ops = &clk_rcg2_ops,
1393 static const struct freq_tbl ftbl_nss_ubi_clk_src[] = {
1394 F(19200000, P_XO, 1, 0, 0),
1395 F(187200000, P_UBI32_PLL, 8, 0, 0),
1396 F(748800000, P_UBI32_PLL, 2, 0, 0),
1397 F(1497600000, P_UBI32_PLL, 1, 0, 0),
1398 F(1689600000, P_UBI32_PLL, 1, 0, 0),
1402 static struct clk_rcg2 nss_ubi0_clk_src = {
1403 .cmd_rcgr = 0x68104,
1404 .freq_tbl = ftbl_nss_ubi_clk_src,
1406 .parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,
1407 .clkr.hw.init = &(struct clk_init_data){
1408 .name = "nss_ubi0_clk_src",
1409 .parent_names = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
1411 .ops = &clk_rcg2_ops,
1412 .flags = CLK_SET_RATE_PARENT,
1416 static struct clk_regmap_div nss_ubi0_div_clk_src = {
1421 .hw.init = &(struct clk_init_data){
1422 .name = "nss_ubi0_div_clk_src",
1423 .parent_names = (const char *[]){
1427 .ops = &clk_regmap_div_ro_ops,
1428 .flags = CLK_SET_RATE_PARENT,
1433 static struct clk_rcg2 nss_ubi1_clk_src = {
1434 .cmd_rcgr = 0x68124,
1435 .freq_tbl = ftbl_nss_ubi_clk_src,
1437 .parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,
1438 .clkr.hw.init = &(struct clk_init_data){
1439 .name = "nss_ubi1_clk_src",
1440 .parent_names = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
1442 .ops = &clk_rcg2_ops,
1443 .flags = CLK_SET_RATE_PARENT,
1447 static struct clk_regmap_div nss_ubi1_div_clk_src = {
1452 .hw.init = &(struct clk_init_data){
1453 .name = "nss_ubi1_div_clk_src",
1454 .parent_names = (const char *[]){
1458 .ops = &clk_regmap_div_ro_ops,
1459 .flags = CLK_SET_RATE_PARENT,
1464 static const struct freq_tbl ftbl_ubi_mpt_clk_src[] = {
1465 F(19200000, P_XO, 1, 0, 0),
1466 F(25000000, P_GPLL0_DIV2, 16, 0, 0),
1470 static struct clk_rcg2 ubi_mpt_clk_src = {
1471 .cmd_rcgr = 0x68090,
1472 .freq_tbl = ftbl_ubi_mpt_clk_src,
1474 .parent_map = gcc_xo_gpll0_out_main_div2_map,
1475 .clkr.hw.init = &(struct clk_init_data){
1476 .name = "ubi_mpt_clk_src",
1477 .parent_names = gcc_xo_gpll0_out_main_div2,
1479 .ops = &clk_rcg2_ops,
1483 static const struct freq_tbl ftbl_nss_imem_clk_src[] = {
1484 F(19200000, P_XO, 1, 0, 0),
1485 F(400000000, P_GPLL0, 2, 0, 0),
1489 static struct clk_rcg2 nss_imem_clk_src = {
1490 .cmd_rcgr = 0x68158,
1491 .freq_tbl = ftbl_nss_imem_clk_src,
1493 .parent_map = gcc_xo_gpll0_gpll4_map,
1494 .clkr.hw.init = &(struct clk_init_data){
1495 .name = "nss_imem_clk_src",
1496 .parent_names = gcc_xo_gpll0_gpll4,
1498 .ops = &clk_rcg2_ops,
1502 static const struct freq_tbl ftbl_nss_ppe_clk_src[] = {
1503 F(19200000, P_XO, 1, 0, 0),
1504 F(300000000, P_BIAS_PLL, 1, 0, 0),
1508 static struct clk_rcg2 nss_ppe_clk_src = {
1509 .cmd_rcgr = 0x68080,
1510 .freq_tbl = ftbl_nss_ppe_clk_src,
1512 .parent_map = gcc_xo_bias_gpll0_gpll4_nss_ubi32_map,
1513 .clkr.hw.init = &(struct clk_init_data){
1514 .name = "nss_ppe_clk_src",
1515 .parent_names = gcc_xo_bias_gpll0_gpll4_nss_ubi32,
1517 .ops = &clk_rcg2_ops,
1521 static struct clk_fixed_factor nss_ppe_cdiv_clk_src = {
1524 .hw.init = &(struct clk_init_data){
1525 .name = "nss_ppe_cdiv_clk_src",
1526 .parent_names = (const char *[]){
1530 .ops = &clk_fixed_factor_ops,
1531 .flags = CLK_SET_RATE_PARENT,
1535 static const struct freq_tbl ftbl_nss_port1_rx_clk_src[] = {
1536 F(19200000, P_XO, 1, 0, 0),
1537 F(25000000, P_UNIPHY0_RX, 5, 0, 0),
1538 F(125000000, P_UNIPHY0_RX, 1, 0, 0),
1542 static struct clk_rcg2 nss_port1_rx_clk_src = {
1543 .cmd_rcgr = 0x68020,
1544 .freq_tbl = ftbl_nss_port1_rx_clk_src,
1546 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
1547 .clkr.hw.init = &(struct clk_init_data){
1548 .name = "nss_port1_rx_clk_src",
1549 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
1551 .ops = &clk_rcg2_ops,
1555 static struct clk_regmap_div nss_port1_rx_div_clk_src = {
1560 .hw.init = &(struct clk_init_data){
1561 .name = "nss_port1_rx_div_clk_src",
1562 .parent_names = (const char *[]){
1563 "nss_port1_rx_clk_src"
1566 .ops = &clk_regmap_div_ops,
1567 .flags = CLK_SET_RATE_PARENT,
1572 static const struct freq_tbl ftbl_nss_port1_tx_clk_src[] = {
1573 F(19200000, P_XO, 1, 0, 0),
1574 F(25000000, P_UNIPHY0_TX, 5, 0, 0),
1575 F(125000000, P_UNIPHY0_TX, 1, 0, 0),
1579 static struct clk_rcg2 nss_port1_tx_clk_src = {
1580 .cmd_rcgr = 0x68028,
1581 .freq_tbl = ftbl_nss_port1_tx_clk_src,
1583 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
1584 .clkr.hw.init = &(struct clk_init_data){
1585 .name = "nss_port1_tx_clk_src",
1586 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
1588 .ops = &clk_rcg2_ops,
1592 static struct clk_regmap_div nss_port1_tx_div_clk_src = {
1597 .hw.init = &(struct clk_init_data){
1598 .name = "nss_port1_tx_div_clk_src",
1599 .parent_names = (const char *[]){
1600 "nss_port1_tx_clk_src"
1603 .ops = &clk_regmap_div_ops,
1604 .flags = CLK_SET_RATE_PARENT,
1609 static struct clk_rcg2 nss_port2_rx_clk_src = {
1610 .cmd_rcgr = 0x68030,
1611 .freq_tbl = ftbl_nss_port1_rx_clk_src,
1613 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
1614 .clkr.hw.init = &(struct clk_init_data){
1615 .name = "nss_port2_rx_clk_src",
1616 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
1618 .ops = &clk_rcg2_ops,
1622 static struct clk_regmap_div nss_port2_rx_div_clk_src = {
1627 .hw.init = &(struct clk_init_data){
1628 .name = "nss_port2_rx_div_clk_src",
1629 .parent_names = (const char *[]){
1630 "nss_port2_rx_clk_src"
1633 .ops = &clk_regmap_div_ops,
1634 .flags = CLK_SET_RATE_PARENT,
1639 static struct clk_rcg2 nss_port2_tx_clk_src = {
1640 .cmd_rcgr = 0x68038,
1641 .freq_tbl = ftbl_nss_port1_tx_clk_src,
1643 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
1644 .clkr.hw.init = &(struct clk_init_data){
1645 .name = "nss_port2_tx_clk_src",
1646 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
1648 .ops = &clk_rcg2_ops,
1652 static struct clk_regmap_div nss_port2_tx_div_clk_src = {
1657 .hw.init = &(struct clk_init_data){
1658 .name = "nss_port2_tx_div_clk_src",
1659 .parent_names = (const char *[]){
1660 "nss_port2_tx_clk_src"
1663 .ops = &clk_regmap_div_ops,
1664 .flags = CLK_SET_RATE_PARENT,
1669 static struct clk_rcg2 nss_port3_rx_clk_src = {
1670 .cmd_rcgr = 0x68040,
1671 .freq_tbl = ftbl_nss_port1_rx_clk_src,
1673 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
1674 .clkr.hw.init = &(struct clk_init_data){
1675 .name = "nss_port3_rx_clk_src",
1676 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
1678 .ops = &clk_rcg2_ops,
1682 static struct clk_regmap_div nss_port3_rx_div_clk_src = {
1687 .hw.init = &(struct clk_init_data){
1688 .name = "nss_port3_rx_div_clk_src",
1689 .parent_names = (const char *[]){
1690 "nss_port3_rx_clk_src"
1693 .ops = &clk_regmap_div_ops,
1694 .flags = CLK_SET_RATE_PARENT,
1699 static struct clk_rcg2 nss_port3_tx_clk_src = {
1700 .cmd_rcgr = 0x68048,
1701 .freq_tbl = ftbl_nss_port1_tx_clk_src,
1703 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
1704 .clkr.hw.init = &(struct clk_init_data){
1705 .name = "nss_port3_tx_clk_src",
1706 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
1708 .ops = &clk_rcg2_ops,
1712 static struct clk_regmap_div nss_port3_tx_div_clk_src = {
1717 .hw.init = &(struct clk_init_data){
1718 .name = "nss_port3_tx_div_clk_src",
1719 .parent_names = (const char *[]){
1720 "nss_port3_tx_clk_src"
1723 .ops = &clk_regmap_div_ops,
1724 .flags = CLK_SET_RATE_PARENT,
1729 static struct clk_rcg2 nss_port4_rx_clk_src = {
1730 .cmd_rcgr = 0x68050,
1731 .freq_tbl = ftbl_nss_port1_rx_clk_src,
1733 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
1734 .clkr.hw.init = &(struct clk_init_data){
1735 .name = "nss_port4_rx_clk_src",
1736 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
1738 .ops = &clk_rcg2_ops,
1742 static struct clk_regmap_div nss_port4_rx_div_clk_src = {
1747 .hw.init = &(struct clk_init_data){
1748 .name = "nss_port4_rx_div_clk_src",
1749 .parent_names = (const char *[]){
1750 "nss_port4_rx_clk_src"
1753 .ops = &clk_regmap_div_ops,
1754 .flags = CLK_SET_RATE_PARENT,
1759 static struct clk_rcg2 nss_port4_tx_clk_src = {
1760 .cmd_rcgr = 0x68058,
1761 .freq_tbl = ftbl_nss_port1_tx_clk_src,
1763 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
1764 .clkr.hw.init = &(struct clk_init_data){
1765 .name = "nss_port4_tx_clk_src",
1766 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
1768 .ops = &clk_rcg2_ops,
1772 static struct clk_regmap_div nss_port4_tx_div_clk_src = {
1777 .hw.init = &(struct clk_init_data){
1778 .name = "nss_port4_tx_div_clk_src",
1779 .parent_names = (const char *[]){
1780 "nss_port4_tx_clk_src"
1783 .ops = &clk_regmap_div_ops,
1784 .flags = CLK_SET_RATE_PARENT,
1789 static const struct freq_tbl ftbl_nss_port5_rx_clk_src[] = {
1790 F(19200000, P_XO, 1, 0, 0),
1791 F(25000000, P_UNIPHY1_RX, 12.5, 0, 0),
1792 F(25000000, P_UNIPHY0_RX, 5, 0, 0),
1793 F(78125000, P_UNIPHY1_RX, 4, 0, 0),
1794 F(125000000, P_UNIPHY1_RX, 2.5, 0, 0),
1795 F(125000000, P_UNIPHY0_RX, 1, 0, 0),
1796 F(156250000, P_UNIPHY1_RX, 2, 0, 0),
1797 F(312500000, P_UNIPHY1_RX, 1, 0, 0),
1801 static struct clk_rcg2 nss_port5_rx_clk_src = {
1802 .cmd_rcgr = 0x68060,
1803 .freq_tbl = ftbl_nss_port5_rx_clk_src,
1805 .parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map,
1806 .clkr.hw.init = &(struct clk_init_data){
1807 .name = "nss_port5_rx_clk_src",
1808 .parent_names = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias,
1810 .ops = &clk_rcg2_ops,
1814 static struct clk_regmap_div nss_port5_rx_div_clk_src = {
1819 .hw.init = &(struct clk_init_data){
1820 .name = "nss_port5_rx_div_clk_src",
1821 .parent_names = (const char *[]){
1822 "nss_port5_rx_clk_src"
1825 .ops = &clk_regmap_div_ops,
1826 .flags = CLK_SET_RATE_PARENT,
1831 static const struct freq_tbl ftbl_nss_port5_tx_clk_src[] = {
1832 F(19200000, P_XO, 1, 0, 0),
1833 F(25000000, P_UNIPHY1_TX, 12.5, 0, 0),
1834 F(25000000, P_UNIPHY0_TX, 5, 0, 0),
1835 F(78125000, P_UNIPHY1_TX, 4, 0, 0),
1836 F(125000000, P_UNIPHY1_TX, 2.5, 0, 0),
1837 F(125000000, P_UNIPHY0_TX, 1, 0, 0),
1838 F(156250000, P_UNIPHY1_TX, 2, 0, 0),
1839 F(312500000, P_UNIPHY1_TX, 1, 0, 0),
1843 static struct clk_rcg2 nss_port5_tx_clk_src = {
1844 .cmd_rcgr = 0x68068,
1845 .freq_tbl = ftbl_nss_port5_tx_clk_src,
1847 .parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map,
1848 .clkr.hw.init = &(struct clk_init_data){
1849 .name = "nss_port5_tx_clk_src",
1850 .parent_names = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias,
1852 .ops = &clk_rcg2_ops,
1856 static struct clk_regmap_div nss_port5_tx_div_clk_src = {
1861 .hw.init = &(struct clk_init_data){
1862 .name = "nss_port5_tx_div_clk_src",
1863 .parent_names = (const char *[]){
1864 "nss_port5_tx_clk_src"
1867 .ops = &clk_regmap_div_ops,
1868 .flags = CLK_SET_RATE_PARENT,
1873 static const struct freq_tbl ftbl_nss_port6_rx_clk_src[] = {
1874 F(19200000, P_XO, 1, 0, 0),
1875 F(25000000, P_UNIPHY2_RX, 5, 0, 0),
1876 F(25000000, P_UNIPHY2_RX, 12.5, 0, 0),
1877 F(78125000, P_UNIPHY2_RX, 4, 0, 0),
1878 F(125000000, P_UNIPHY2_RX, 1, 0, 0),
1879 F(125000000, P_UNIPHY2_RX, 2.5, 0, 0),
1880 F(156250000, P_UNIPHY2_RX, 2, 0, 0),
1881 F(312500000, P_UNIPHY2_RX, 1, 0, 0),
1885 static struct clk_rcg2 nss_port6_rx_clk_src = {
1886 .cmd_rcgr = 0x68070,
1887 .freq_tbl = ftbl_nss_port6_rx_clk_src,
1889 .parent_map = gcc_xo_uniphy2_rx_tx_ubi32_bias_map,
1890 .clkr.hw.init = &(struct clk_init_data){
1891 .name = "nss_port6_rx_clk_src",
1892 .parent_names = gcc_xo_uniphy2_rx_tx_ubi32_bias,
1894 .ops = &clk_rcg2_ops,
1898 static struct clk_regmap_div nss_port6_rx_div_clk_src = {
1903 .hw.init = &(struct clk_init_data){
1904 .name = "nss_port6_rx_div_clk_src",
1905 .parent_names = (const char *[]){
1906 "nss_port6_rx_clk_src"
1909 .ops = &clk_regmap_div_ops,
1910 .flags = CLK_SET_RATE_PARENT,
1915 static const struct freq_tbl ftbl_nss_port6_tx_clk_src[] = {
1916 F(19200000, P_XO, 1, 0, 0),
1917 F(25000000, P_UNIPHY2_TX, 5, 0, 0),
1918 F(25000000, P_UNIPHY2_TX, 12.5, 0, 0),
1919 F(78125000, P_UNIPHY2_TX, 4, 0, 0),
1920 F(125000000, P_UNIPHY2_TX, 1, 0, 0),
1921 F(125000000, P_UNIPHY2_TX, 2.5, 0, 0),
1922 F(156250000, P_UNIPHY2_TX, 2, 0, 0),
1923 F(312500000, P_UNIPHY2_TX, 1, 0, 0),
1927 static struct clk_rcg2 nss_port6_tx_clk_src = {
1928 .cmd_rcgr = 0x68078,
1929 .freq_tbl = ftbl_nss_port6_tx_clk_src,
1931 .parent_map = gcc_xo_uniphy2_tx_rx_ubi32_bias_map,
1932 .clkr.hw.init = &(struct clk_init_data){
1933 .name = "nss_port6_tx_clk_src",
1934 .parent_names = gcc_xo_uniphy2_tx_rx_ubi32_bias,
1936 .ops = &clk_rcg2_ops,
1940 static struct clk_regmap_div nss_port6_tx_div_clk_src = {
1945 .hw.init = &(struct clk_init_data){
1946 .name = "nss_port6_tx_div_clk_src",
1947 .parent_names = (const char *[]){
1948 "nss_port6_tx_clk_src"
1951 .ops = &clk_regmap_div_ops,
1952 .flags = CLK_SET_RATE_PARENT,
1957 static struct freq_tbl ftbl_crypto_clk_src[] = {
1958 F(40000000, P_GPLL0_DIV2, 10, 0, 0),
1959 F(80000000, P_GPLL0, 10, 0, 0),
1960 F(100000000, P_GPLL0, 8, 0, 0),
1961 F(160000000, P_GPLL0, 5, 0, 0),
1965 static struct clk_rcg2 crypto_clk_src = {
1966 .cmd_rcgr = 0x16004,
1967 .freq_tbl = ftbl_crypto_clk_src,
1969 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1970 .clkr.hw.init = &(struct clk_init_data){
1971 .name = "crypto_clk_src",
1972 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
1974 .ops = &clk_rcg2_ops,
1978 static struct freq_tbl ftbl_gp_clk_src[] = {
1979 F(19200000, P_XO, 1, 0, 0),
1983 static struct clk_rcg2 gp1_clk_src = {
1984 .cmd_rcgr = 0x08004,
1985 .freq_tbl = ftbl_gp_clk_src,
1988 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1989 .clkr.hw.init = &(struct clk_init_data){
1990 .name = "gp1_clk_src",
1991 .parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1993 .ops = &clk_rcg2_ops,
1997 static struct clk_rcg2 gp2_clk_src = {
1998 .cmd_rcgr = 0x09004,
1999 .freq_tbl = ftbl_gp_clk_src,
2002 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
2003 .clkr.hw.init = &(struct clk_init_data){
2004 .name = "gp2_clk_src",
2005 .parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
2007 .ops = &clk_rcg2_ops,
2011 static struct clk_rcg2 gp3_clk_src = {
2012 .cmd_rcgr = 0x0a004,
2013 .freq_tbl = ftbl_gp_clk_src,
2016 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
2017 .clkr.hw.init = &(struct clk_init_data){
2018 .name = "gp3_clk_src",
2019 .parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
2021 .ops = &clk_rcg2_ops,
2025 static struct clk_branch gcc_blsp1_ahb_clk = {
2026 .halt_reg = 0x01008,
2028 .enable_reg = 0x01008,
2029 .enable_mask = BIT(0),
2030 .hw.init = &(struct clk_init_data){
2031 .name = "gcc_blsp1_ahb_clk",
2032 .parent_names = (const char *[]){
2036 .flags = CLK_SET_RATE_PARENT,
2037 .ops = &clk_branch2_ops,
2042 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
2043 .halt_reg = 0x02008,
2045 .enable_reg = 0x02008,
2046 .enable_mask = BIT(0),
2047 .hw.init = &(struct clk_init_data){
2048 .name = "gcc_blsp1_qup1_i2c_apps_clk",
2049 .parent_names = (const char *[]){
2050 "blsp1_qup1_i2c_apps_clk_src"
2053 .flags = CLK_SET_RATE_PARENT,
2054 .ops = &clk_branch2_ops,
2059 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
2060 .halt_reg = 0x02004,
2062 .enable_reg = 0x02004,
2063 .enable_mask = BIT(0),
2064 .hw.init = &(struct clk_init_data){
2065 .name = "gcc_blsp1_qup1_spi_apps_clk",
2066 .parent_names = (const char *[]){
2067 "blsp1_qup1_spi_apps_clk_src"
2070 .flags = CLK_SET_RATE_PARENT,
2071 .ops = &clk_branch2_ops,
2076 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
2077 .halt_reg = 0x03010,
2079 .enable_reg = 0x03010,
2080 .enable_mask = BIT(0),
2081 .hw.init = &(struct clk_init_data){
2082 .name = "gcc_blsp1_qup2_i2c_apps_clk",
2083 .parent_names = (const char *[]){
2084 "blsp1_qup2_i2c_apps_clk_src"
2087 .flags = CLK_SET_RATE_PARENT,
2088 .ops = &clk_branch2_ops,
2093 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
2094 .halt_reg = 0x0300c,
2096 .enable_reg = 0x0300c,
2097 .enable_mask = BIT(0),
2098 .hw.init = &(struct clk_init_data){
2099 .name = "gcc_blsp1_qup2_spi_apps_clk",
2100 .parent_names = (const char *[]){
2101 "blsp1_qup2_spi_apps_clk_src"
2104 .flags = CLK_SET_RATE_PARENT,
2105 .ops = &clk_branch2_ops,
2110 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
2111 .halt_reg = 0x04010,
2113 .enable_reg = 0x04010,
2114 .enable_mask = BIT(0),
2115 .hw.init = &(struct clk_init_data){
2116 .name = "gcc_blsp1_qup3_i2c_apps_clk",
2117 .parent_names = (const char *[]){
2118 "blsp1_qup3_i2c_apps_clk_src"
2121 .flags = CLK_SET_RATE_PARENT,
2122 .ops = &clk_branch2_ops,
2127 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
2128 .halt_reg = 0x0400c,
2130 .enable_reg = 0x0400c,
2131 .enable_mask = BIT(0),
2132 .hw.init = &(struct clk_init_data){
2133 .name = "gcc_blsp1_qup3_spi_apps_clk",
2134 .parent_names = (const char *[]){
2135 "blsp1_qup3_spi_apps_clk_src"
2138 .flags = CLK_SET_RATE_PARENT,
2139 .ops = &clk_branch2_ops,
2144 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
2145 .halt_reg = 0x05010,
2147 .enable_reg = 0x05010,
2148 .enable_mask = BIT(0),
2149 .hw.init = &(struct clk_init_data){
2150 .name = "gcc_blsp1_qup4_i2c_apps_clk",
2151 .parent_names = (const char *[]){
2152 "blsp1_qup4_i2c_apps_clk_src"
2155 .flags = CLK_SET_RATE_PARENT,
2156 .ops = &clk_branch2_ops,
2161 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
2162 .halt_reg = 0x0500c,
2164 .enable_reg = 0x0500c,
2165 .enable_mask = BIT(0),
2166 .hw.init = &(struct clk_init_data){
2167 .name = "gcc_blsp1_qup4_spi_apps_clk",
2168 .parent_names = (const char *[]){
2169 "blsp1_qup4_spi_apps_clk_src"
2172 .flags = CLK_SET_RATE_PARENT,
2173 .ops = &clk_branch2_ops,
2178 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
2179 .halt_reg = 0x06010,
2181 .enable_reg = 0x06010,
2182 .enable_mask = BIT(0),
2183 .hw.init = &(struct clk_init_data){
2184 .name = "gcc_blsp1_qup5_i2c_apps_clk",
2185 .parent_names = (const char *[]){
2186 "blsp1_qup5_i2c_apps_clk_src"
2189 .flags = CLK_SET_RATE_PARENT,
2190 .ops = &clk_branch2_ops,
2195 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
2196 .halt_reg = 0x0600c,
2198 .enable_reg = 0x0600c,
2199 .enable_mask = BIT(0),
2200 .hw.init = &(struct clk_init_data){
2201 .name = "gcc_blsp1_qup5_spi_apps_clk",
2202 .parent_names = (const char *[]){
2203 "blsp1_qup5_spi_apps_clk_src"
2206 .flags = CLK_SET_RATE_PARENT,
2207 .ops = &clk_branch2_ops,
2212 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
2213 .halt_reg = 0x07010,
2215 .enable_reg = 0x07010,
2216 .enable_mask = BIT(0),
2217 .hw.init = &(struct clk_init_data){
2218 .name = "gcc_blsp1_qup6_i2c_apps_clk",
2219 .parent_names = (const char *[]){
2220 "blsp1_qup6_i2c_apps_clk_src"
2223 .flags = CLK_SET_RATE_PARENT,
2224 .ops = &clk_branch2_ops,
2229 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
2230 .halt_reg = 0x0700c,
2232 .enable_reg = 0x0700c,
2233 .enable_mask = BIT(0),
2234 .hw.init = &(struct clk_init_data){
2235 .name = "gcc_blsp1_qup6_spi_apps_clk",
2236 .parent_names = (const char *[]){
2237 "blsp1_qup6_spi_apps_clk_src"
2240 .flags = CLK_SET_RATE_PARENT,
2241 .ops = &clk_branch2_ops,
2246 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
2247 .halt_reg = 0x0203c,
2249 .enable_reg = 0x0203c,
2250 .enable_mask = BIT(0),
2251 .hw.init = &(struct clk_init_data){
2252 .name = "gcc_blsp1_uart1_apps_clk",
2253 .parent_names = (const char *[]){
2254 "blsp1_uart1_apps_clk_src"
2257 .flags = CLK_SET_RATE_PARENT,
2258 .ops = &clk_branch2_ops,
2263 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
2264 .halt_reg = 0x0302c,
2266 .enable_reg = 0x0302c,
2267 .enable_mask = BIT(0),
2268 .hw.init = &(struct clk_init_data){
2269 .name = "gcc_blsp1_uart2_apps_clk",
2270 .parent_names = (const char *[]){
2271 "blsp1_uart2_apps_clk_src"
2274 .flags = CLK_SET_RATE_PARENT,
2275 .ops = &clk_branch2_ops,
2280 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
2281 .halt_reg = 0x0402c,
2283 .enable_reg = 0x0402c,
2284 .enable_mask = BIT(0),
2285 .hw.init = &(struct clk_init_data){
2286 .name = "gcc_blsp1_uart3_apps_clk",
2287 .parent_names = (const char *[]){
2288 "blsp1_uart3_apps_clk_src"
2291 .flags = CLK_SET_RATE_PARENT,
2292 .ops = &clk_branch2_ops,
2297 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
2298 .halt_reg = 0x0502c,
2300 .enable_reg = 0x0502c,
2301 .enable_mask = BIT(0),
2302 .hw.init = &(struct clk_init_data){
2303 .name = "gcc_blsp1_uart4_apps_clk",
2304 .parent_names = (const char *[]){
2305 "blsp1_uart4_apps_clk_src"
2308 .flags = CLK_SET_RATE_PARENT,
2309 .ops = &clk_branch2_ops,
2314 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
2315 .halt_reg = 0x0602c,
2317 .enable_reg = 0x0602c,
2318 .enable_mask = BIT(0),
2319 .hw.init = &(struct clk_init_data){
2320 .name = "gcc_blsp1_uart5_apps_clk",
2321 .parent_names = (const char *[]){
2322 "blsp1_uart5_apps_clk_src"
2325 .flags = CLK_SET_RATE_PARENT,
2326 .ops = &clk_branch2_ops,
2331 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
2332 .halt_reg = 0x0702c,
2334 .enable_reg = 0x0702c,
2335 .enable_mask = BIT(0),
2336 .hw.init = &(struct clk_init_data){
2337 .name = "gcc_blsp1_uart6_apps_clk",
2338 .parent_names = (const char *[]){
2339 "blsp1_uart6_apps_clk_src"
2342 .flags = CLK_SET_RATE_PARENT,
2343 .ops = &clk_branch2_ops,
2348 static struct clk_branch gcc_prng_ahb_clk = {
2349 .halt_reg = 0x13004,
2350 .halt_check = BRANCH_HALT_VOTED,
2352 .enable_reg = 0x0b004,
2353 .enable_mask = BIT(8),
2354 .hw.init = &(struct clk_init_data){
2355 .name = "gcc_prng_ahb_clk",
2356 .parent_names = (const char *[]){
2360 .flags = CLK_SET_RATE_PARENT,
2361 .ops = &clk_branch2_ops,
2366 static struct clk_branch gcc_qpic_ahb_clk = {
2367 .halt_reg = 0x57024,
2369 .enable_reg = 0x57024,
2370 .enable_mask = BIT(0),
2371 .hw.init = &(struct clk_init_data){
2372 .name = "gcc_qpic_ahb_clk",
2373 .parent_names = (const char *[]){
2377 .flags = CLK_SET_RATE_PARENT,
2378 .ops = &clk_branch2_ops,
2383 static struct clk_branch gcc_qpic_clk = {
2384 .halt_reg = 0x57020,
2386 .enable_reg = 0x57020,
2387 .enable_mask = BIT(0),
2388 .hw.init = &(struct clk_init_data){
2389 .name = "gcc_qpic_clk",
2390 .parent_names = (const char *[]){
2394 .flags = CLK_SET_RATE_PARENT,
2395 .ops = &clk_branch2_ops,
2400 static struct clk_branch gcc_pcie0_ahb_clk = {
2401 .halt_reg = 0x75010,
2403 .enable_reg = 0x75010,
2404 .enable_mask = BIT(0),
2405 .hw.init = &(struct clk_init_data){
2406 .name = "gcc_pcie0_ahb_clk",
2407 .parent_names = (const char *[]){
2411 .flags = CLK_SET_RATE_PARENT,
2412 .ops = &clk_branch2_ops,
2417 static struct clk_branch gcc_pcie0_aux_clk = {
2418 .halt_reg = 0x75014,
2420 .enable_reg = 0x75014,
2421 .enable_mask = BIT(0),
2422 .hw.init = &(struct clk_init_data){
2423 .name = "gcc_pcie0_aux_clk",
2424 .parent_names = (const char *[]){
2428 .flags = CLK_SET_RATE_PARENT,
2429 .ops = &clk_branch2_ops,
2434 static struct clk_branch gcc_pcie0_axi_m_clk = {
2435 .halt_reg = 0x75008,
2437 .enable_reg = 0x75008,
2438 .enable_mask = BIT(0),
2439 .hw.init = &(struct clk_init_data){
2440 .name = "gcc_pcie0_axi_m_clk",
2441 .parent_names = (const char *[]){
2445 .flags = CLK_SET_RATE_PARENT,
2446 .ops = &clk_branch2_ops,
2451 static struct clk_branch gcc_pcie0_axi_s_clk = {
2452 .halt_reg = 0x7500c,
2454 .enable_reg = 0x7500c,
2455 .enable_mask = BIT(0),
2456 .hw.init = &(struct clk_init_data){
2457 .name = "gcc_pcie0_axi_s_clk",
2458 .parent_names = (const char *[]){
2462 .flags = CLK_SET_RATE_PARENT,
2463 .ops = &clk_branch2_ops,
2468 static struct clk_branch gcc_pcie0_pipe_clk = {
2469 .halt_reg = 0x75018,
2470 .halt_check = BRANCH_HALT_DELAY,
2472 .enable_reg = 0x75018,
2473 .enable_mask = BIT(0),
2474 .hw.init = &(struct clk_init_data){
2475 .name = "gcc_pcie0_pipe_clk",
2476 .parent_names = (const char *[]){
2477 "pcie0_pipe_clk_src"
2480 .flags = CLK_SET_RATE_PARENT,
2481 .ops = &clk_branch2_ops,
2486 static struct clk_branch gcc_sys_noc_pcie0_axi_clk = {
2487 .halt_reg = 0x26048,
2489 .enable_reg = 0x26048,
2490 .enable_mask = BIT(0),
2491 .hw.init = &(struct clk_init_data){
2492 .name = "gcc_sys_noc_pcie0_axi_clk",
2493 .parent_names = (const char *[]){
2497 .flags = CLK_SET_RATE_PARENT,
2498 .ops = &clk_branch2_ops,
2503 static struct clk_branch gcc_pcie1_ahb_clk = {
2504 .halt_reg = 0x76010,
2506 .enable_reg = 0x76010,
2507 .enable_mask = BIT(0),
2508 .hw.init = &(struct clk_init_data){
2509 .name = "gcc_pcie1_ahb_clk",
2510 .parent_names = (const char *[]){
2514 .flags = CLK_SET_RATE_PARENT,
2515 .ops = &clk_branch2_ops,
2520 static struct clk_branch gcc_pcie1_aux_clk = {
2521 .halt_reg = 0x76014,
2523 .enable_reg = 0x76014,
2524 .enable_mask = BIT(0),
2525 .hw.init = &(struct clk_init_data){
2526 .name = "gcc_pcie1_aux_clk",
2527 .parent_names = (const char *[]){
2531 .flags = CLK_SET_RATE_PARENT,
2532 .ops = &clk_branch2_ops,
2537 static struct clk_branch gcc_pcie1_axi_m_clk = {
2538 .halt_reg = 0x76008,
2540 .enable_reg = 0x76008,
2541 .enable_mask = BIT(0),
2542 .hw.init = &(struct clk_init_data){
2543 .name = "gcc_pcie1_axi_m_clk",
2544 .parent_names = (const char *[]){
2548 .flags = CLK_SET_RATE_PARENT,
2549 .ops = &clk_branch2_ops,
2554 static struct clk_branch gcc_pcie1_axi_s_clk = {
2555 .halt_reg = 0x7600c,
2557 .enable_reg = 0x7600c,
2558 .enable_mask = BIT(0),
2559 .hw.init = &(struct clk_init_data){
2560 .name = "gcc_pcie1_axi_s_clk",
2561 .parent_names = (const char *[]){
2565 .flags = CLK_SET_RATE_PARENT,
2566 .ops = &clk_branch2_ops,
2571 static struct clk_branch gcc_pcie1_pipe_clk = {
2572 .halt_reg = 0x76018,
2573 .halt_check = BRANCH_HALT_DELAY,
2575 .enable_reg = 0x76018,
2576 .enable_mask = BIT(0),
2577 .hw.init = &(struct clk_init_data){
2578 .name = "gcc_pcie1_pipe_clk",
2579 .parent_names = (const char *[]){
2580 "pcie1_pipe_clk_src"
2583 .flags = CLK_SET_RATE_PARENT,
2584 .ops = &clk_branch2_ops,
2589 static struct clk_branch gcc_sys_noc_pcie1_axi_clk = {
2590 .halt_reg = 0x2604c,
2592 .enable_reg = 0x2604c,
2593 .enable_mask = BIT(0),
2594 .hw.init = &(struct clk_init_data){
2595 .name = "gcc_sys_noc_pcie1_axi_clk",
2596 .parent_names = (const char *[]){
2600 .flags = CLK_SET_RATE_PARENT,
2601 .ops = &clk_branch2_ops,
2606 static struct clk_branch gcc_usb0_aux_clk = {
2607 .halt_reg = 0x3e044,
2609 .enable_reg = 0x3e044,
2610 .enable_mask = BIT(0),
2611 .hw.init = &(struct clk_init_data){
2612 .name = "gcc_usb0_aux_clk",
2613 .parent_names = (const char *[]){
2617 .flags = CLK_SET_RATE_PARENT,
2618 .ops = &clk_branch2_ops,
2623 static struct clk_branch gcc_sys_noc_usb0_axi_clk = {
2624 .halt_reg = 0x26040,
2626 .enable_reg = 0x26040,
2627 .enable_mask = BIT(0),
2628 .hw.init = &(struct clk_init_data){
2629 .name = "gcc_sys_noc_usb0_axi_clk",
2630 .parent_names = (const char *[]){
2631 "usb0_master_clk_src"
2634 .flags = CLK_SET_RATE_PARENT,
2635 .ops = &clk_branch2_ops,
2640 static struct clk_branch gcc_usb0_master_clk = {
2641 .halt_reg = 0x3e000,
2643 .enable_reg = 0x3e000,
2644 .enable_mask = BIT(0),
2645 .hw.init = &(struct clk_init_data){
2646 .name = "gcc_usb0_master_clk",
2647 .parent_names = (const char *[]){
2648 "usb0_master_clk_src"
2651 .flags = CLK_SET_RATE_PARENT,
2652 .ops = &clk_branch2_ops,
2657 static struct clk_branch gcc_usb0_mock_utmi_clk = {
2658 .halt_reg = 0x3e008,
2660 .enable_reg = 0x3e008,
2661 .enable_mask = BIT(0),
2662 .hw.init = &(struct clk_init_data){
2663 .name = "gcc_usb0_mock_utmi_clk",
2664 .parent_names = (const char *[]){
2665 "usb0_mock_utmi_clk_src"
2668 .flags = CLK_SET_RATE_PARENT,
2669 .ops = &clk_branch2_ops,
2674 static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {
2675 .halt_reg = 0x3e080,
2677 .enable_reg = 0x3e080,
2678 .enable_mask = BIT(0),
2679 .hw.init = &(struct clk_init_data){
2680 .name = "gcc_usb0_phy_cfg_ahb_clk",
2681 .parent_names = (const char *[]){
2685 .flags = CLK_SET_RATE_PARENT,
2686 .ops = &clk_branch2_ops,
2691 static struct clk_branch gcc_usb0_pipe_clk = {
2692 .halt_reg = 0x3e040,
2693 .halt_check = BRANCH_HALT_DELAY,
2695 .enable_reg = 0x3e040,
2696 .enable_mask = BIT(0),
2697 .hw.init = &(struct clk_init_data){
2698 .name = "gcc_usb0_pipe_clk",
2699 .parent_names = (const char *[]){
2703 .flags = CLK_SET_RATE_PARENT,
2704 .ops = &clk_branch2_ops,
2709 static struct clk_branch gcc_usb0_sleep_clk = {
2710 .halt_reg = 0x3e004,
2712 .enable_reg = 0x3e004,
2713 .enable_mask = BIT(0),
2714 .hw.init = &(struct clk_init_data){
2715 .name = "gcc_usb0_sleep_clk",
2716 .parent_names = (const char *[]){
2720 .flags = CLK_SET_RATE_PARENT,
2721 .ops = &clk_branch2_ops,
2726 static struct clk_branch gcc_usb1_aux_clk = {
2727 .halt_reg = 0x3f044,
2729 .enable_reg = 0x3f044,
2730 .enable_mask = BIT(0),
2731 .hw.init = &(struct clk_init_data){
2732 .name = "gcc_usb1_aux_clk",
2733 .parent_names = (const char *[]){
2737 .flags = CLK_SET_RATE_PARENT,
2738 .ops = &clk_branch2_ops,
2743 static struct clk_branch gcc_sys_noc_usb1_axi_clk = {
2744 .halt_reg = 0x26044,
2746 .enable_reg = 0x26044,
2747 .enable_mask = BIT(0),
2748 .hw.init = &(struct clk_init_data){
2749 .name = "gcc_sys_noc_usb1_axi_clk",
2750 .parent_names = (const char *[]){
2751 "usb1_master_clk_src"
2754 .flags = CLK_SET_RATE_PARENT,
2755 .ops = &clk_branch2_ops,
2760 static struct clk_branch gcc_usb1_master_clk = {
2761 .halt_reg = 0x3f000,
2763 .enable_reg = 0x3f000,
2764 .enable_mask = BIT(0),
2765 .hw.init = &(struct clk_init_data){
2766 .name = "gcc_usb1_master_clk",
2767 .parent_names = (const char *[]){
2768 "usb1_master_clk_src"
2771 .flags = CLK_SET_RATE_PARENT,
2772 .ops = &clk_branch2_ops,
2777 static struct clk_branch gcc_usb1_mock_utmi_clk = {
2778 .halt_reg = 0x3f008,
2780 .enable_reg = 0x3f008,
2781 .enable_mask = BIT(0),
2782 .hw.init = &(struct clk_init_data){
2783 .name = "gcc_usb1_mock_utmi_clk",
2784 .parent_names = (const char *[]){
2785 "usb1_mock_utmi_clk_src"
2788 .flags = CLK_SET_RATE_PARENT,
2789 .ops = &clk_branch2_ops,
2794 static struct clk_branch gcc_usb1_phy_cfg_ahb_clk = {
2795 .halt_reg = 0x3f080,
2797 .enable_reg = 0x3f080,
2798 .enable_mask = BIT(0),
2799 .hw.init = &(struct clk_init_data){
2800 .name = "gcc_usb1_phy_cfg_ahb_clk",
2801 .parent_names = (const char *[]){
2805 .flags = CLK_SET_RATE_PARENT,
2806 .ops = &clk_branch2_ops,
2811 static struct clk_branch gcc_usb1_pipe_clk = {
2812 .halt_reg = 0x3f040,
2813 .halt_check = BRANCH_HALT_DELAY,
2815 .enable_reg = 0x3f040,
2816 .enable_mask = BIT(0),
2817 .hw.init = &(struct clk_init_data){
2818 .name = "gcc_usb1_pipe_clk",
2819 .parent_names = (const char *[]){
2823 .flags = CLK_SET_RATE_PARENT,
2824 .ops = &clk_branch2_ops,
2829 static struct clk_branch gcc_usb1_sleep_clk = {
2830 .halt_reg = 0x3f004,
2832 .enable_reg = 0x3f004,
2833 .enable_mask = BIT(0),
2834 .hw.init = &(struct clk_init_data){
2835 .name = "gcc_usb1_sleep_clk",
2836 .parent_names = (const char *[]){
2840 .flags = CLK_SET_RATE_PARENT,
2841 .ops = &clk_branch2_ops,
2846 static struct clk_branch gcc_sdcc1_ahb_clk = {
2847 .halt_reg = 0x4201c,
2849 .enable_reg = 0x4201c,
2850 .enable_mask = BIT(0),
2851 .hw.init = &(struct clk_init_data){
2852 .name = "gcc_sdcc1_ahb_clk",
2853 .parent_names = (const char *[]){
2857 .flags = CLK_SET_RATE_PARENT,
2858 .ops = &clk_branch2_ops,
2863 static struct clk_branch gcc_sdcc1_apps_clk = {
2864 .halt_reg = 0x42018,
2866 .enable_reg = 0x42018,
2867 .enable_mask = BIT(0),
2868 .hw.init = &(struct clk_init_data){
2869 .name = "gcc_sdcc1_apps_clk",
2870 .parent_names = (const char *[]){
2871 "sdcc1_apps_clk_src"
2874 .flags = CLK_SET_RATE_PARENT,
2875 .ops = &clk_branch2_ops,
2880 static struct clk_branch gcc_sdcc1_ice_core_clk = {
2881 .halt_reg = 0x5d014,
2883 .enable_reg = 0x5d014,
2884 .enable_mask = BIT(0),
2885 .hw.init = &(struct clk_init_data){
2886 .name = "gcc_sdcc1_ice_core_clk",
2887 .parent_names = (const char *[]){
2888 "sdcc1_ice_core_clk_src"
2891 .flags = CLK_SET_RATE_PARENT,
2892 .ops = &clk_branch2_ops,
2897 static struct clk_branch gcc_sdcc2_ahb_clk = {
2898 .halt_reg = 0x4301c,
2900 .enable_reg = 0x4301c,
2901 .enable_mask = BIT(0),
2902 .hw.init = &(struct clk_init_data){
2903 .name = "gcc_sdcc2_ahb_clk",
2904 .parent_names = (const char *[]){
2908 .flags = CLK_SET_RATE_PARENT,
2909 .ops = &clk_branch2_ops,
2914 static struct clk_branch gcc_sdcc2_apps_clk = {
2915 .halt_reg = 0x43018,
2917 .enable_reg = 0x43018,
2918 .enable_mask = BIT(0),
2919 .hw.init = &(struct clk_init_data){
2920 .name = "gcc_sdcc2_apps_clk",
2921 .parent_names = (const char *[]){
2922 "sdcc2_apps_clk_src"
2925 .flags = CLK_SET_RATE_PARENT,
2926 .ops = &clk_branch2_ops,
2931 static struct clk_branch gcc_mem_noc_nss_axi_clk = {
2932 .halt_reg = 0x1d03c,
2934 .enable_reg = 0x1d03c,
2935 .enable_mask = BIT(0),
2936 .hw.init = &(struct clk_init_data){
2937 .name = "gcc_mem_noc_nss_axi_clk",
2938 .parent_names = (const char *[]){
2942 .flags = CLK_SET_RATE_PARENT,
2943 .ops = &clk_branch2_ops,
2948 static struct clk_branch gcc_nss_ce_apb_clk = {
2949 .halt_reg = 0x68174,
2951 .enable_reg = 0x68174,
2952 .enable_mask = BIT(0),
2953 .hw.init = &(struct clk_init_data){
2954 .name = "gcc_nss_ce_apb_clk",
2955 .parent_names = (const char *[]){
2959 .flags = CLK_SET_RATE_PARENT,
2960 .ops = &clk_branch2_ops,
2965 static struct clk_branch gcc_nss_ce_axi_clk = {
2966 .halt_reg = 0x68170,
2968 .enable_reg = 0x68170,
2969 .enable_mask = BIT(0),
2970 .hw.init = &(struct clk_init_data){
2971 .name = "gcc_nss_ce_axi_clk",
2972 .parent_names = (const char *[]){
2976 .flags = CLK_SET_RATE_PARENT,
2977 .ops = &clk_branch2_ops,
2982 static struct clk_branch gcc_nss_cfg_clk = {
2983 .halt_reg = 0x68160,
2985 .enable_reg = 0x68160,
2986 .enable_mask = BIT(0),
2987 .hw.init = &(struct clk_init_data){
2988 .name = "gcc_nss_cfg_clk",
2989 .parent_names = (const char *[]){
2993 .flags = CLK_SET_RATE_PARENT,
2994 .ops = &clk_branch2_ops,
2999 static struct clk_branch gcc_nss_crypto_clk = {
3000 .halt_reg = 0x68164,
3002 .enable_reg = 0x68164,
3003 .enable_mask = BIT(0),
3004 .hw.init = &(struct clk_init_data){
3005 .name = "gcc_nss_crypto_clk",
3006 .parent_names = (const char *[]){
3007 "nss_crypto_clk_src"
3010 .flags = CLK_SET_RATE_PARENT,
3011 .ops = &clk_branch2_ops,
3016 static struct clk_branch gcc_nss_csr_clk = {
3017 .halt_reg = 0x68318,
3019 .enable_reg = 0x68318,
3020 .enable_mask = BIT(0),
3021 .hw.init = &(struct clk_init_data){
3022 .name = "gcc_nss_csr_clk",
3023 .parent_names = (const char *[]){
3027 .flags = CLK_SET_RATE_PARENT,
3028 .ops = &clk_branch2_ops,
3033 static struct clk_branch gcc_nss_edma_cfg_clk = {
3034 .halt_reg = 0x6819c,
3036 .enable_reg = 0x6819c,
3037 .enable_mask = BIT(0),
3038 .hw.init = &(struct clk_init_data){
3039 .name = "gcc_nss_edma_cfg_clk",
3040 .parent_names = (const char *[]){
3044 .flags = CLK_SET_RATE_PARENT,
3045 .ops = &clk_branch2_ops,
3050 static struct clk_branch gcc_nss_edma_clk = {
3051 .halt_reg = 0x68198,
3053 .enable_reg = 0x68198,
3054 .enable_mask = BIT(0),
3055 .hw.init = &(struct clk_init_data){
3056 .name = "gcc_nss_edma_clk",
3057 .parent_names = (const char *[]){
3061 .flags = CLK_SET_RATE_PARENT,
3062 .ops = &clk_branch2_ops,
3067 static struct clk_branch gcc_nss_imem_clk = {
3068 .halt_reg = 0x68178,
3070 .enable_reg = 0x68178,
3071 .enable_mask = BIT(0),
3072 .hw.init = &(struct clk_init_data){
3073 .name = "gcc_nss_imem_clk",
3074 .parent_names = (const char *[]){
3078 .flags = CLK_SET_RATE_PARENT,
3079 .ops = &clk_branch2_ops,
3084 static struct clk_branch gcc_nss_noc_clk = {
3085 .halt_reg = 0x68168,
3087 .enable_reg = 0x68168,
3088 .enable_mask = BIT(0),
3089 .hw.init = &(struct clk_init_data){
3090 .name = "gcc_nss_noc_clk",
3091 .parent_names = (const char *[]){
3095 .flags = CLK_SET_RATE_PARENT,
3096 .ops = &clk_branch2_ops,
3101 static struct clk_branch gcc_nss_ppe_btq_clk = {
3102 .halt_reg = 0x6833c,
3104 .enable_reg = 0x6833c,
3105 .enable_mask = BIT(0),
3106 .hw.init = &(struct clk_init_data){
3107 .name = "gcc_nss_ppe_btq_clk",
3108 .parent_names = (const char *[]){
3112 .flags = CLK_SET_RATE_PARENT,
3113 .ops = &clk_branch2_ops,
3118 static struct clk_branch gcc_nss_ppe_cfg_clk = {
3119 .halt_reg = 0x68194,
3121 .enable_reg = 0x68194,
3122 .enable_mask = BIT(0),
3123 .hw.init = &(struct clk_init_data){
3124 .name = "gcc_nss_ppe_cfg_clk",
3125 .parent_names = (const char *[]){
3129 .flags = CLK_SET_RATE_PARENT,
3130 .ops = &clk_branch2_ops,
3135 static struct clk_branch gcc_nss_ppe_clk = {
3136 .halt_reg = 0x68190,
3138 .enable_reg = 0x68190,
3139 .enable_mask = BIT(0),
3140 .hw.init = &(struct clk_init_data){
3141 .name = "gcc_nss_ppe_clk",
3142 .parent_names = (const char *[]){
3146 .flags = CLK_SET_RATE_PARENT,
3147 .ops = &clk_branch2_ops,
3152 static struct clk_branch gcc_nss_ppe_ipe_clk = {
3153 .halt_reg = 0x68338,
3155 .enable_reg = 0x68338,
3156 .enable_mask = BIT(0),
3157 .hw.init = &(struct clk_init_data){
3158 .name = "gcc_nss_ppe_ipe_clk",
3159 .parent_names = (const char *[]){
3163 .flags = CLK_SET_RATE_PARENT,
3164 .ops = &clk_branch2_ops,
3169 static struct clk_branch gcc_nss_ptp_ref_clk = {
3170 .halt_reg = 0x6816c,
3172 .enable_reg = 0x6816c,
3173 .enable_mask = BIT(0),
3174 .hw.init = &(struct clk_init_data){
3175 .name = "gcc_nss_ptp_ref_clk",
3176 .parent_names = (const char *[]){
3177 "nss_ppe_cdiv_clk_src"
3180 .flags = CLK_SET_RATE_PARENT,
3181 .ops = &clk_branch2_ops,
3186 static struct clk_branch gcc_nssnoc_ce_apb_clk = {
3187 .halt_reg = 0x6830c,
3189 .enable_reg = 0x6830c,
3190 .enable_mask = BIT(0),
3191 .hw.init = &(struct clk_init_data){
3192 .name = "gcc_nssnoc_ce_apb_clk",
3193 .parent_names = (const char *[]){
3197 .flags = CLK_SET_RATE_PARENT,
3198 .ops = &clk_branch2_ops,
3203 static struct clk_branch gcc_nssnoc_ce_axi_clk = {
3204 .halt_reg = 0x68308,
3206 .enable_reg = 0x68308,
3207 .enable_mask = BIT(0),
3208 .hw.init = &(struct clk_init_data){
3209 .name = "gcc_nssnoc_ce_axi_clk",
3210 .parent_names = (const char *[]){
3214 .flags = CLK_SET_RATE_PARENT,
3215 .ops = &clk_branch2_ops,
3220 static struct clk_branch gcc_nssnoc_crypto_clk = {
3221 .halt_reg = 0x68314,
3223 .enable_reg = 0x68314,
3224 .enable_mask = BIT(0),
3225 .hw.init = &(struct clk_init_data){
3226 .name = "gcc_nssnoc_crypto_clk",
3227 .parent_names = (const char *[]){
3228 "nss_crypto_clk_src"
3231 .flags = CLK_SET_RATE_PARENT,
3232 .ops = &clk_branch2_ops,
3237 static struct clk_branch gcc_nssnoc_ppe_cfg_clk = {
3238 .halt_reg = 0x68304,
3240 .enable_reg = 0x68304,
3241 .enable_mask = BIT(0),
3242 .hw.init = &(struct clk_init_data){
3243 .name = "gcc_nssnoc_ppe_cfg_clk",
3244 .parent_names = (const char *[]){
3248 .flags = CLK_SET_RATE_PARENT,
3249 .ops = &clk_branch2_ops,
3254 static struct clk_branch gcc_nssnoc_ppe_clk = {
3255 .halt_reg = 0x68300,
3257 .enable_reg = 0x68300,
3258 .enable_mask = BIT(0),
3259 .hw.init = &(struct clk_init_data){
3260 .name = "gcc_nssnoc_ppe_clk",
3261 .parent_names = (const char *[]){
3265 .flags = CLK_SET_RATE_PARENT,
3266 .ops = &clk_branch2_ops,
3271 static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {
3272 .halt_reg = 0x68180,
3274 .enable_reg = 0x68180,
3275 .enable_mask = BIT(0),
3276 .hw.init = &(struct clk_init_data){
3277 .name = "gcc_nssnoc_qosgen_ref_clk",
3278 .parent_names = (const char *[]){
3282 .flags = CLK_SET_RATE_PARENT,
3283 .ops = &clk_branch2_ops,
3288 static struct clk_branch gcc_nssnoc_snoc_clk = {
3289 .halt_reg = 0x68188,
3291 .enable_reg = 0x68188,
3292 .enable_mask = BIT(0),
3293 .hw.init = &(struct clk_init_data){
3294 .name = "gcc_nssnoc_snoc_clk",
3295 .parent_names = (const char *[]){
3296 "system_noc_clk_src"
3299 .flags = CLK_SET_RATE_PARENT,
3300 .ops = &clk_branch2_ops,
3305 static struct clk_branch gcc_nssnoc_timeout_ref_clk = {
3306 .halt_reg = 0x68184,
3308 .enable_reg = 0x68184,
3309 .enable_mask = BIT(0),
3310 .hw.init = &(struct clk_init_data){
3311 .name = "gcc_nssnoc_timeout_ref_clk",
3312 .parent_names = (const char *[]){
3313 "gcc_xo_div4_clk_src"
3316 .flags = CLK_SET_RATE_PARENT,
3317 .ops = &clk_branch2_ops,
3322 static struct clk_branch gcc_nssnoc_ubi0_ahb_clk = {
3323 .halt_reg = 0x68270,
3325 .enable_reg = 0x68270,
3326 .enable_mask = BIT(0),
3327 .hw.init = &(struct clk_init_data){
3328 .name = "gcc_nssnoc_ubi0_ahb_clk",
3329 .parent_names = (const char *[]){
3333 .flags = CLK_SET_RATE_PARENT,
3334 .ops = &clk_branch2_ops,
3339 static struct clk_branch gcc_nssnoc_ubi1_ahb_clk = {
3340 .halt_reg = 0x68274,
3342 .enable_reg = 0x68274,
3343 .enable_mask = BIT(0),
3344 .hw.init = &(struct clk_init_data){
3345 .name = "gcc_nssnoc_ubi1_ahb_clk",
3346 .parent_names = (const char *[]){
3350 .flags = CLK_SET_RATE_PARENT,
3351 .ops = &clk_branch2_ops,
3356 static struct clk_branch gcc_ubi0_ahb_clk = {
3357 .halt_reg = 0x6820c,
3358 .halt_check = BRANCH_HALT_DELAY,
3360 .enable_reg = 0x6820c,
3361 .enable_mask = BIT(0),
3362 .hw.init = &(struct clk_init_data){
3363 .name = "gcc_ubi0_ahb_clk",
3364 .parent_names = (const char *[]){
3368 .flags = CLK_SET_RATE_PARENT,
3369 .ops = &clk_branch2_ops,
3374 static struct clk_branch gcc_ubi0_axi_clk = {
3375 .halt_reg = 0x68200,
3376 .halt_check = BRANCH_HALT_DELAY,
3378 .enable_reg = 0x68200,
3379 .enable_mask = BIT(0),
3380 .hw.init = &(struct clk_init_data){
3381 .name = "gcc_ubi0_axi_clk",
3382 .parent_names = (const char *[]){
3386 .flags = CLK_SET_RATE_PARENT,
3387 .ops = &clk_branch2_ops,
3392 static struct clk_branch gcc_ubi0_nc_axi_clk = {
3393 .halt_reg = 0x68204,
3394 .halt_check = BRANCH_HALT_DELAY,
3396 .enable_reg = 0x68204,
3397 .enable_mask = BIT(0),
3398 .hw.init = &(struct clk_init_data){
3399 .name = "gcc_ubi0_nc_axi_clk",
3400 .parent_names = (const char *[]){
3404 .flags = CLK_SET_RATE_PARENT,
3405 .ops = &clk_branch2_ops,
3410 static struct clk_branch gcc_ubi0_core_clk = {
3411 .halt_reg = 0x68210,
3412 .halt_check = BRANCH_HALT_DELAY,
3414 .enable_reg = 0x68210,
3415 .enable_mask = BIT(0),
3416 .hw.init = &(struct clk_init_data){
3417 .name = "gcc_ubi0_core_clk",
3418 .parent_names = (const char *[]){
3419 "nss_ubi0_div_clk_src"
3422 .flags = CLK_SET_RATE_PARENT,
3423 .ops = &clk_branch2_ops,
3428 static struct clk_branch gcc_ubi0_mpt_clk = {
3429 .halt_reg = 0x68208,
3430 .halt_check = BRANCH_HALT_DELAY,
3432 .enable_reg = 0x68208,
3433 .enable_mask = BIT(0),
3434 .hw.init = &(struct clk_init_data){
3435 .name = "gcc_ubi0_mpt_clk",
3436 .parent_names = (const char *[]){
3440 .flags = CLK_SET_RATE_PARENT,
3441 .ops = &clk_branch2_ops,
3446 static struct clk_branch gcc_ubi1_ahb_clk = {
3447 .halt_reg = 0x6822c,
3448 .halt_check = BRANCH_HALT_DELAY,
3450 .enable_reg = 0x6822c,
3451 .enable_mask = BIT(0),
3452 .hw.init = &(struct clk_init_data){
3453 .name = "gcc_ubi1_ahb_clk",
3454 .parent_names = (const char *[]){
3458 .flags = CLK_SET_RATE_PARENT,
3459 .ops = &clk_branch2_ops,
3464 static struct clk_branch gcc_ubi1_axi_clk = {
3465 .halt_reg = 0x68220,
3466 .halt_check = BRANCH_HALT_DELAY,
3468 .enable_reg = 0x68220,
3469 .enable_mask = BIT(0),
3470 .hw.init = &(struct clk_init_data){
3471 .name = "gcc_ubi1_axi_clk",
3472 .parent_names = (const char *[]){
3476 .flags = CLK_SET_RATE_PARENT,
3477 .ops = &clk_branch2_ops,
3482 static struct clk_branch gcc_ubi1_nc_axi_clk = {
3483 .halt_reg = 0x68224,
3484 .halt_check = BRANCH_HALT_DELAY,
3486 .enable_reg = 0x68224,
3487 .enable_mask = BIT(0),
3488 .hw.init = &(struct clk_init_data){
3489 .name = "gcc_ubi1_nc_axi_clk",
3490 .parent_names = (const char *[]){
3494 .flags = CLK_SET_RATE_PARENT,
3495 .ops = &clk_branch2_ops,
3500 static struct clk_branch gcc_ubi1_core_clk = {
3501 .halt_reg = 0x68230,
3502 .halt_check = BRANCH_HALT_DELAY,
3504 .enable_reg = 0x68230,
3505 .enable_mask = BIT(0),
3506 .hw.init = &(struct clk_init_data){
3507 .name = "gcc_ubi1_core_clk",
3508 .parent_names = (const char *[]){
3509 "nss_ubi1_div_clk_src"
3512 .flags = CLK_SET_RATE_PARENT,
3513 .ops = &clk_branch2_ops,
3518 static struct clk_branch gcc_ubi1_mpt_clk = {
3519 .halt_reg = 0x68228,
3520 .halt_check = BRANCH_HALT_DELAY,
3522 .enable_reg = 0x68228,
3523 .enable_mask = BIT(0),
3524 .hw.init = &(struct clk_init_data){
3525 .name = "gcc_ubi1_mpt_clk",
3526 .parent_names = (const char *[]){
3530 .flags = CLK_SET_RATE_PARENT,
3531 .ops = &clk_branch2_ops,
3536 static struct clk_branch gcc_cmn_12gpll_ahb_clk = {
3537 .halt_reg = 0x56308,
3539 .enable_reg = 0x56308,
3540 .enable_mask = BIT(0),
3541 .hw.init = &(struct clk_init_data){
3542 .name = "gcc_cmn_12gpll_ahb_clk",
3543 .parent_names = (const char *[]){
3547 .flags = CLK_SET_RATE_PARENT,
3548 .ops = &clk_branch2_ops,
3553 static struct clk_branch gcc_cmn_12gpll_sys_clk = {
3554 .halt_reg = 0x5630c,
3556 .enable_reg = 0x5630c,
3557 .enable_mask = BIT(0),
3558 .hw.init = &(struct clk_init_data){
3559 .name = "gcc_cmn_12gpll_sys_clk",
3560 .parent_names = (const char *[]){
3564 .flags = CLK_SET_RATE_PARENT,
3565 .ops = &clk_branch2_ops,
3570 static struct clk_branch gcc_mdio_ahb_clk = {
3571 .halt_reg = 0x58004,
3573 .enable_reg = 0x58004,
3574 .enable_mask = BIT(0),
3575 .hw.init = &(struct clk_init_data){
3576 .name = "gcc_mdio_ahb_clk",
3577 .parent_names = (const char *[]){
3581 .flags = CLK_SET_RATE_PARENT,
3582 .ops = &clk_branch2_ops,
3587 static struct clk_branch gcc_uniphy0_ahb_clk = {
3588 .halt_reg = 0x56008,
3590 .enable_reg = 0x56008,
3591 .enable_mask = BIT(0),
3592 .hw.init = &(struct clk_init_data){
3593 .name = "gcc_uniphy0_ahb_clk",
3594 .parent_names = (const char *[]){
3598 .flags = CLK_SET_RATE_PARENT,
3599 .ops = &clk_branch2_ops,
3604 static struct clk_branch gcc_uniphy0_sys_clk = {
3605 .halt_reg = 0x5600c,
3607 .enable_reg = 0x5600c,
3608 .enable_mask = BIT(0),
3609 .hw.init = &(struct clk_init_data){
3610 .name = "gcc_uniphy0_sys_clk",
3611 .parent_names = (const char *[]){
3615 .flags = CLK_SET_RATE_PARENT,
3616 .ops = &clk_branch2_ops,
3621 static struct clk_branch gcc_uniphy1_ahb_clk = {
3622 .halt_reg = 0x56108,
3624 .enable_reg = 0x56108,
3625 .enable_mask = BIT(0),
3626 .hw.init = &(struct clk_init_data){
3627 .name = "gcc_uniphy1_ahb_clk",
3628 .parent_names = (const char *[]){
3632 .flags = CLK_SET_RATE_PARENT,
3633 .ops = &clk_branch2_ops,
3638 static struct clk_branch gcc_uniphy1_sys_clk = {
3639 .halt_reg = 0x5610c,
3641 .enable_reg = 0x5610c,
3642 .enable_mask = BIT(0),
3643 .hw.init = &(struct clk_init_data){
3644 .name = "gcc_uniphy1_sys_clk",
3645 .parent_names = (const char *[]){
3649 .flags = CLK_SET_RATE_PARENT,
3650 .ops = &clk_branch2_ops,
3655 static struct clk_branch gcc_uniphy2_ahb_clk = {
3656 .halt_reg = 0x56208,
3658 .enable_reg = 0x56208,
3659 .enable_mask = BIT(0),
3660 .hw.init = &(struct clk_init_data){
3661 .name = "gcc_uniphy2_ahb_clk",
3662 .parent_names = (const char *[]){
3666 .flags = CLK_SET_RATE_PARENT,
3667 .ops = &clk_branch2_ops,
3672 static struct clk_branch gcc_uniphy2_sys_clk = {
3673 .halt_reg = 0x5620c,
3675 .enable_reg = 0x5620c,
3676 .enable_mask = BIT(0),
3677 .hw.init = &(struct clk_init_data){
3678 .name = "gcc_uniphy2_sys_clk",
3679 .parent_names = (const char *[]){
3683 .flags = CLK_SET_RATE_PARENT,
3684 .ops = &clk_branch2_ops,
3689 static struct clk_branch gcc_nss_port1_rx_clk = {
3690 .halt_reg = 0x68240,
3692 .enable_reg = 0x68240,
3693 .enable_mask = BIT(0),
3694 .hw.init = &(struct clk_init_data){
3695 .name = "gcc_nss_port1_rx_clk",
3696 .parent_names = (const char *[]){
3697 "nss_port1_rx_div_clk_src"
3700 .flags = CLK_SET_RATE_PARENT,
3701 .ops = &clk_branch2_ops,
3706 static struct clk_branch gcc_nss_port1_tx_clk = {
3707 .halt_reg = 0x68244,
3709 .enable_reg = 0x68244,
3710 .enable_mask = BIT(0),
3711 .hw.init = &(struct clk_init_data){
3712 .name = "gcc_nss_port1_tx_clk",
3713 .parent_names = (const char *[]){
3714 "nss_port1_tx_div_clk_src"
3717 .flags = CLK_SET_RATE_PARENT,
3718 .ops = &clk_branch2_ops,
3723 static struct clk_branch gcc_nss_port2_rx_clk = {
3724 .halt_reg = 0x68248,
3726 .enable_reg = 0x68248,
3727 .enable_mask = BIT(0),
3728 .hw.init = &(struct clk_init_data){
3729 .name = "gcc_nss_port2_rx_clk",
3730 .parent_names = (const char *[]){
3731 "nss_port2_rx_div_clk_src"
3734 .flags = CLK_SET_RATE_PARENT,
3735 .ops = &clk_branch2_ops,
3740 static struct clk_branch gcc_nss_port2_tx_clk = {
3741 .halt_reg = 0x6824c,
3743 .enable_reg = 0x6824c,
3744 .enable_mask = BIT(0),
3745 .hw.init = &(struct clk_init_data){
3746 .name = "gcc_nss_port2_tx_clk",
3747 .parent_names = (const char *[]){
3748 "nss_port2_tx_div_clk_src"
3751 .flags = CLK_SET_RATE_PARENT,
3752 .ops = &clk_branch2_ops,
3757 static struct clk_branch gcc_nss_port3_rx_clk = {
3758 .halt_reg = 0x68250,
3760 .enable_reg = 0x68250,
3761 .enable_mask = BIT(0),
3762 .hw.init = &(struct clk_init_data){
3763 .name = "gcc_nss_port3_rx_clk",
3764 .parent_names = (const char *[]){
3765 "nss_port3_rx_div_clk_src"
3768 .flags = CLK_SET_RATE_PARENT,
3769 .ops = &clk_branch2_ops,
3774 static struct clk_branch gcc_nss_port3_tx_clk = {
3775 .halt_reg = 0x68254,
3777 .enable_reg = 0x68254,
3778 .enable_mask = BIT(0),
3779 .hw.init = &(struct clk_init_data){
3780 .name = "gcc_nss_port3_tx_clk",
3781 .parent_names = (const char *[]){
3782 "nss_port3_tx_div_clk_src"
3785 .flags = CLK_SET_RATE_PARENT,
3786 .ops = &clk_branch2_ops,
3791 static struct clk_branch gcc_nss_port4_rx_clk = {
3792 .halt_reg = 0x68258,
3794 .enable_reg = 0x68258,
3795 .enable_mask = BIT(0),
3796 .hw.init = &(struct clk_init_data){
3797 .name = "gcc_nss_port4_rx_clk",
3798 .parent_names = (const char *[]){
3799 "nss_port4_rx_div_clk_src"
3802 .flags = CLK_SET_RATE_PARENT,
3803 .ops = &clk_branch2_ops,
3808 static struct clk_branch gcc_nss_port4_tx_clk = {
3809 .halt_reg = 0x6825c,
3811 .enable_reg = 0x6825c,
3812 .enable_mask = BIT(0),
3813 .hw.init = &(struct clk_init_data){
3814 .name = "gcc_nss_port4_tx_clk",
3815 .parent_names = (const char *[]){
3816 "nss_port4_tx_div_clk_src"
3819 .flags = CLK_SET_RATE_PARENT,
3820 .ops = &clk_branch2_ops,
3825 static struct clk_branch gcc_nss_port5_rx_clk = {
3826 .halt_reg = 0x68260,
3828 .enable_reg = 0x68260,
3829 .enable_mask = BIT(0),
3830 .hw.init = &(struct clk_init_data){
3831 .name = "gcc_nss_port5_rx_clk",
3832 .parent_names = (const char *[]){
3833 "nss_port5_rx_div_clk_src"
3836 .flags = CLK_SET_RATE_PARENT,
3837 .ops = &clk_branch2_ops,
3842 static struct clk_branch gcc_nss_port5_tx_clk = {
3843 .halt_reg = 0x68264,
3845 .enable_reg = 0x68264,
3846 .enable_mask = BIT(0),
3847 .hw.init = &(struct clk_init_data){
3848 .name = "gcc_nss_port5_tx_clk",
3849 .parent_names = (const char *[]){
3850 "nss_port5_tx_div_clk_src"
3853 .flags = CLK_SET_RATE_PARENT,
3854 .ops = &clk_branch2_ops,
3859 static struct clk_branch gcc_nss_port6_rx_clk = {
3860 .halt_reg = 0x68268,
3862 .enable_reg = 0x68268,
3863 .enable_mask = BIT(0),
3864 .hw.init = &(struct clk_init_data){
3865 .name = "gcc_nss_port6_rx_clk",
3866 .parent_names = (const char *[]){
3867 "nss_port6_rx_div_clk_src"
3870 .flags = CLK_SET_RATE_PARENT,
3871 .ops = &clk_branch2_ops,
3876 static struct clk_branch gcc_nss_port6_tx_clk = {
3877 .halt_reg = 0x6826c,
3879 .enable_reg = 0x6826c,
3880 .enable_mask = BIT(0),
3881 .hw.init = &(struct clk_init_data){
3882 .name = "gcc_nss_port6_tx_clk",
3883 .parent_names = (const char *[]){
3884 "nss_port6_tx_div_clk_src"
3887 .flags = CLK_SET_RATE_PARENT,
3888 .ops = &clk_branch2_ops,
3893 static struct clk_branch gcc_port1_mac_clk = {
3894 .halt_reg = 0x68320,
3896 .enable_reg = 0x68320,
3897 .enable_mask = BIT(0),
3898 .hw.init = &(struct clk_init_data){
3899 .name = "gcc_port1_mac_clk",
3900 .parent_names = (const char *[]){
3904 .flags = CLK_SET_RATE_PARENT,
3905 .ops = &clk_branch2_ops,
3910 static struct clk_branch gcc_port2_mac_clk = {
3911 .halt_reg = 0x68324,
3913 .enable_reg = 0x68324,
3914 .enable_mask = BIT(0),
3915 .hw.init = &(struct clk_init_data){
3916 .name = "gcc_port2_mac_clk",
3917 .parent_names = (const char *[]){
3921 .flags = CLK_SET_RATE_PARENT,
3922 .ops = &clk_branch2_ops,
3927 static struct clk_branch gcc_port3_mac_clk = {
3928 .halt_reg = 0x68328,
3930 .enable_reg = 0x68328,
3931 .enable_mask = BIT(0),
3932 .hw.init = &(struct clk_init_data){
3933 .name = "gcc_port3_mac_clk",
3934 .parent_names = (const char *[]){
3938 .flags = CLK_SET_RATE_PARENT,
3939 .ops = &clk_branch2_ops,
3944 static struct clk_branch gcc_port4_mac_clk = {
3945 .halt_reg = 0x6832c,
3947 .enable_reg = 0x6832c,
3948 .enable_mask = BIT(0),
3949 .hw.init = &(struct clk_init_data){
3950 .name = "gcc_port4_mac_clk",
3951 .parent_names = (const char *[]){
3955 .flags = CLK_SET_RATE_PARENT,
3956 .ops = &clk_branch2_ops,
3961 static struct clk_branch gcc_port5_mac_clk = {
3962 .halt_reg = 0x68330,
3964 .enable_reg = 0x68330,
3965 .enable_mask = BIT(0),
3966 .hw.init = &(struct clk_init_data){
3967 .name = "gcc_port5_mac_clk",
3968 .parent_names = (const char *[]){
3972 .flags = CLK_SET_RATE_PARENT,
3973 .ops = &clk_branch2_ops,
3978 static struct clk_branch gcc_port6_mac_clk = {
3979 .halt_reg = 0x68334,
3981 .enable_reg = 0x68334,
3982 .enable_mask = BIT(0),
3983 .hw.init = &(struct clk_init_data){
3984 .name = "gcc_port6_mac_clk",
3985 .parent_names = (const char *[]){
3989 .flags = CLK_SET_RATE_PARENT,
3990 .ops = &clk_branch2_ops,
3995 static struct clk_branch gcc_uniphy0_port1_rx_clk = {
3996 .halt_reg = 0x56010,
3998 .enable_reg = 0x56010,
3999 .enable_mask = BIT(0),
4000 .hw.init = &(struct clk_init_data){
4001 .name = "gcc_uniphy0_port1_rx_clk",
4002 .parent_names = (const char *[]){
4003 "nss_port1_rx_div_clk_src"
4006 .flags = CLK_SET_RATE_PARENT,
4007 .ops = &clk_branch2_ops,
4012 static struct clk_branch gcc_uniphy0_port1_tx_clk = {
4013 .halt_reg = 0x56014,
4015 .enable_reg = 0x56014,
4016 .enable_mask = BIT(0),
4017 .hw.init = &(struct clk_init_data){
4018 .name = "gcc_uniphy0_port1_tx_clk",
4019 .parent_names = (const char *[]){
4020 "nss_port1_tx_div_clk_src"
4023 .flags = CLK_SET_RATE_PARENT,
4024 .ops = &clk_branch2_ops,
4029 static struct clk_branch gcc_uniphy0_port2_rx_clk = {
4030 .halt_reg = 0x56018,
4032 .enable_reg = 0x56018,
4033 .enable_mask = BIT(0),
4034 .hw.init = &(struct clk_init_data){
4035 .name = "gcc_uniphy0_port2_rx_clk",
4036 .parent_names = (const char *[]){
4037 "nss_port2_rx_div_clk_src"
4040 .flags = CLK_SET_RATE_PARENT,
4041 .ops = &clk_branch2_ops,
4046 static struct clk_branch gcc_uniphy0_port2_tx_clk = {
4047 .halt_reg = 0x5601c,
4049 .enable_reg = 0x5601c,
4050 .enable_mask = BIT(0),
4051 .hw.init = &(struct clk_init_data){
4052 .name = "gcc_uniphy0_port2_tx_clk",
4053 .parent_names = (const char *[]){
4054 "nss_port2_tx_div_clk_src"
4057 .flags = CLK_SET_RATE_PARENT,
4058 .ops = &clk_branch2_ops,
4063 static struct clk_branch gcc_uniphy0_port3_rx_clk = {
4064 .halt_reg = 0x56020,
4066 .enable_reg = 0x56020,
4067 .enable_mask = BIT(0),
4068 .hw.init = &(struct clk_init_data){
4069 .name = "gcc_uniphy0_port3_rx_clk",
4070 .parent_names = (const char *[]){
4071 "nss_port3_rx_div_clk_src"
4074 .flags = CLK_SET_RATE_PARENT,
4075 .ops = &clk_branch2_ops,
4080 static struct clk_branch gcc_uniphy0_port3_tx_clk = {
4081 .halt_reg = 0x56024,
4083 .enable_reg = 0x56024,
4084 .enable_mask = BIT(0),
4085 .hw.init = &(struct clk_init_data){
4086 .name = "gcc_uniphy0_port3_tx_clk",
4087 .parent_names = (const char *[]){
4088 "nss_port3_tx_div_clk_src"
4091 .flags = CLK_SET_RATE_PARENT,
4092 .ops = &clk_branch2_ops,
4097 static struct clk_branch gcc_uniphy0_port4_rx_clk = {
4098 .halt_reg = 0x56028,
4100 .enable_reg = 0x56028,
4101 .enable_mask = BIT(0),
4102 .hw.init = &(struct clk_init_data){
4103 .name = "gcc_uniphy0_port4_rx_clk",
4104 .parent_names = (const char *[]){
4105 "nss_port4_rx_div_clk_src"
4108 .flags = CLK_SET_RATE_PARENT,
4109 .ops = &clk_branch2_ops,
4114 static struct clk_branch gcc_uniphy0_port4_tx_clk = {
4115 .halt_reg = 0x5602c,
4117 .enable_reg = 0x5602c,
4118 .enable_mask = BIT(0),
4119 .hw.init = &(struct clk_init_data){
4120 .name = "gcc_uniphy0_port4_tx_clk",
4121 .parent_names = (const char *[]){
4122 "nss_port4_tx_div_clk_src"
4125 .flags = CLK_SET_RATE_PARENT,
4126 .ops = &clk_branch2_ops,
4131 static struct clk_branch gcc_uniphy0_port5_rx_clk = {
4132 .halt_reg = 0x56030,
4134 .enable_reg = 0x56030,
4135 .enable_mask = BIT(0),
4136 .hw.init = &(struct clk_init_data){
4137 .name = "gcc_uniphy0_port5_rx_clk",
4138 .parent_names = (const char *[]){
4139 "nss_port5_rx_div_clk_src"
4142 .flags = CLK_SET_RATE_PARENT,
4143 .ops = &clk_branch2_ops,
4148 static struct clk_branch gcc_uniphy0_port5_tx_clk = {
4149 .halt_reg = 0x56034,
4151 .enable_reg = 0x56034,
4152 .enable_mask = BIT(0),
4153 .hw.init = &(struct clk_init_data){
4154 .name = "gcc_uniphy0_port5_tx_clk",
4155 .parent_names = (const char *[]){
4156 "nss_port5_tx_div_clk_src"
4159 .flags = CLK_SET_RATE_PARENT,
4160 .ops = &clk_branch2_ops,
4165 static struct clk_branch gcc_uniphy1_port5_rx_clk = {
4166 .halt_reg = 0x56110,
4168 .enable_reg = 0x56110,
4169 .enable_mask = BIT(0),
4170 .hw.init = &(struct clk_init_data){
4171 .name = "gcc_uniphy1_port5_rx_clk",
4172 .parent_names = (const char *[]){
4173 "nss_port5_rx_div_clk_src"
4176 .flags = CLK_SET_RATE_PARENT,
4177 .ops = &clk_branch2_ops,
4182 static struct clk_branch gcc_uniphy1_port5_tx_clk = {
4183 .halt_reg = 0x56114,
4185 .enable_reg = 0x56114,
4186 .enable_mask = BIT(0),
4187 .hw.init = &(struct clk_init_data){
4188 .name = "gcc_uniphy1_port5_tx_clk",
4189 .parent_names = (const char *[]){
4190 "nss_port5_tx_div_clk_src"
4193 .flags = CLK_SET_RATE_PARENT,
4194 .ops = &clk_branch2_ops,
4199 static struct clk_branch gcc_uniphy2_port6_rx_clk = {
4200 .halt_reg = 0x56210,
4202 .enable_reg = 0x56210,
4203 .enable_mask = BIT(0),
4204 .hw.init = &(struct clk_init_data){
4205 .name = "gcc_uniphy2_port6_rx_clk",
4206 .parent_names = (const char *[]){
4207 "nss_port6_rx_div_clk_src"
4210 .flags = CLK_SET_RATE_PARENT,
4211 .ops = &clk_branch2_ops,
4216 static struct clk_branch gcc_uniphy2_port6_tx_clk = {
4217 .halt_reg = 0x56214,
4219 .enable_reg = 0x56214,
4220 .enable_mask = BIT(0),
4221 .hw.init = &(struct clk_init_data){
4222 .name = "gcc_uniphy2_port6_tx_clk",
4223 .parent_names = (const char *[]){
4224 "nss_port6_tx_div_clk_src"
4227 .flags = CLK_SET_RATE_PARENT,
4228 .ops = &clk_branch2_ops,
4233 static struct clk_branch gcc_crypto_ahb_clk = {
4234 .halt_reg = 0x16024,
4235 .halt_check = BRANCH_HALT_VOTED,
4237 .enable_reg = 0x0b004,
4238 .enable_mask = BIT(0),
4239 .hw.init = &(struct clk_init_data){
4240 .name = "gcc_crypto_ahb_clk",
4241 .parent_names = (const char *[]){
4245 .flags = CLK_SET_RATE_PARENT,
4246 .ops = &clk_branch2_ops,
4251 static struct clk_branch gcc_crypto_axi_clk = {
4252 .halt_reg = 0x16020,
4253 .halt_check = BRANCH_HALT_VOTED,
4255 .enable_reg = 0x0b004,
4256 .enable_mask = BIT(1),
4257 .hw.init = &(struct clk_init_data){
4258 .name = "gcc_crypto_axi_clk",
4259 .parent_names = (const char *[]){
4263 .flags = CLK_SET_RATE_PARENT,
4264 .ops = &clk_branch2_ops,
4269 static struct clk_branch gcc_crypto_clk = {
4270 .halt_reg = 0x1601c,
4271 .halt_check = BRANCH_HALT_VOTED,
4273 .enable_reg = 0x0b004,
4274 .enable_mask = BIT(2),
4275 .hw.init = &(struct clk_init_data){
4276 .name = "gcc_crypto_clk",
4277 .parent_names = (const char *[]){
4281 .flags = CLK_SET_RATE_PARENT,
4282 .ops = &clk_branch2_ops,
4287 static struct clk_branch gcc_gp1_clk = {
4288 .halt_reg = 0x08000,
4290 .enable_reg = 0x08000,
4291 .enable_mask = BIT(0),
4292 .hw.init = &(struct clk_init_data){
4293 .name = "gcc_gp1_clk",
4294 .parent_names = (const char *[]){
4298 .flags = CLK_SET_RATE_PARENT,
4299 .ops = &clk_branch2_ops,
4304 static struct clk_branch gcc_gp2_clk = {
4305 .halt_reg = 0x09000,
4307 .enable_reg = 0x09000,
4308 .enable_mask = BIT(0),
4309 .hw.init = &(struct clk_init_data){
4310 .name = "gcc_gp2_clk",
4311 .parent_names = (const char *[]){
4315 .flags = CLK_SET_RATE_PARENT,
4316 .ops = &clk_branch2_ops,
4321 static struct clk_branch gcc_gp3_clk = {
4322 .halt_reg = 0x0a000,
4324 .enable_reg = 0x0a000,
4325 .enable_mask = BIT(0),
4326 .hw.init = &(struct clk_init_data){
4327 .name = "gcc_gp3_clk",
4328 .parent_names = (const char *[]){
4332 .flags = CLK_SET_RATE_PARENT,
4333 .ops = &clk_branch2_ops,
4338 static const struct freq_tbl ftbl_pcie_rchng_clk_src[] = {
4339 F(19200000, P_XO, 1, 0, 0),
4340 F(100000000, P_GPLL0, 8, 0, 0),
4344 static struct clk_rcg2 pcie0_rchng_clk_src = {
4345 .cmd_rcgr = 0x75070,
4346 .freq_tbl = ftbl_pcie_rchng_clk_src,
4348 .parent_map = gcc_xo_gpll0_map,
4349 .clkr.hw.init = &(struct clk_init_data){
4350 .name = "pcie0_rchng_clk_src",
4351 .parent_data = gcc_xo_gpll0,
4353 .ops = &clk_rcg2_ops,
4357 static struct clk_branch gcc_pcie0_rchng_clk = {
4358 .halt_reg = 0x75070,
4361 .enable_reg = 0x75070,
4362 .enable_mask = BIT(1),
4363 .hw.init = &(struct clk_init_data){
4364 .name = "gcc_pcie0_rchng_clk",
4365 .parent_hws = (const struct clk_hw *[]){
4366 &pcie0_rchng_clk_src.clkr.hw,
4369 .flags = CLK_SET_RATE_PARENT,
4370 .ops = &clk_branch2_ops,
4375 static struct clk_branch gcc_pcie0_axi_s_bridge_clk = {
4376 .halt_reg = 0x75048,
4379 .enable_reg = 0x75048,
4380 .enable_mask = BIT(0),
4381 .hw.init = &(struct clk_init_data){
4382 .name = "gcc_pcie0_axi_s_bridge_clk",
4383 .parent_hws = (const struct clk_hw *[]){
4384 &pcie0_axi_clk_src.clkr.hw,
4387 .flags = CLK_SET_RATE_PARENT,
4388 .ops = &clk_branch2_ops,
4393 static const struct alpha_pll_config ubi32_pll_config = {
4395 .config_ctl_val = 0x200d4aa8,
4396 .config_ctl_hi_val = 0x3c2,
4397 .main_output_mask = BIT(0),
4398 .aux_output_mask = BIT(1),
4400 .pre_div_mask = BIT(12),
4401 .post_div_val = 0x0,
4402 .post_div_mask = GENMASK(9, 8),
4405 static const struct alpha_pll_config nss_crypto_pll_config = {
4409 .config_ctl_val = 0x4001055b,
4410 .main_output_mask = BIT(0),
4412 .pre_div_mask = GENMASK(14, 12),
4413 .post_div_val = 0x1 << 8,
4414 .post_div_mask = GENMASK(11, 8),
4415 .vco_mask = GENMASK(21, 20),
4417 .alpha_en_mask = BIT(24),
4420 static struct clk_hw *gcc_ipq8074_hws[] = {
4421 &gpll0_out_main_div2.hw,
4422 &gpll6_out_main_div2.hw,
4424 &system_noc_clk_src.hw,
4425 &gcc_xo_div4_clk_src.hw,
4426 &nss_noc_clk_src.hw,
4427 &nss_ppe_cdiv_clk_src.hw,
4430 static struct clk_regmap *gcc_ipq8074_clks[] = {
4431 [GPLL0_MAIN] = &gpll0_main.clkr,
4432 [GPLL0] = &gpll0.clkr,
4433 [GPLL2_MAIN] = &gpll2_main.clkr,
4434 [GPLL2] = &gpll2.clkr,
4435 [GPLL4_MAIN] = &gpll4_main.clkr,
4436 [GPLL4] = &gpll4.clkr,
4437 [GPLL6_MAIN] = &gpll6_main.clkr,
4438 [GPLL6] = &gpll6.clkr,
4439 [UBI32_PLL_MAIN] = &ubi32_pll_main.clkr,
4440 [UBI32_PLL] = &ubi32_pll.clkr,
4441 [NSS_CRYPTO_PLL_MAIN] = &nss_crypto_pll_main.clkr,
4442 [NSS_CRYPTO_PLL] = &nss_crypto_pll.clkr,
4443 [PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr,
4444 [GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,
4445 [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
4446 [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
4447 [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
4448 [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
4449 [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
4450 [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
4451 [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
4452 [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
4453 [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
4454 [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
4455 [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
4456 [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
4457 [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
4458 [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
4459 [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
4460 [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
4461 [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
4462 [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
4463 [PCIE0_AXI_CLK_SRC] = &pcie0_axi_clk_src.clkr,
4464 [PCIE0_AUX_CLK_SRC] = &pcie0_aux_clk_src.clkr,
4465 [PCIE0_PIPE_CLK_SRC] = &pcie0_pipe_clk_src.clkr,
4466 [PCIE1_AXI_CLK_SRC] = &pcie1_axi_clk_src.clkr,
4467 [PCIE1_AUX_CLK_SRC] = &pcie1_aux_clk_src.clkr,
4468 [PCIE1_PIPE_CLK_SRC] = &pcie1_pipe_clk_src.clkr,
4469 [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
4470 [SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr,
4471 [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
4472 [USB0_MASTER_CLK_SRC] = &usb0_master_clk_src.clkr,
4473 [USB0_AUX_CLK_SRC] = &usb0_aux_clk_src.clkr,
4474 [USB0_MOCK_UTMI_CLK_SRC] = &usb0_mock_utmi_clk_src.clkr,
4475 [USB0_PIPE_CLK_SRC] = &usb0_pipe_clk_src.clkr,
4476 [USB1_MASTER_CLK_SRC] = &usb1_master_clk_src.clkr,
4477 [USB1_AUX_CLK_SRC] = &usb1_aux_clk_src.clkr,
4478 [USB1_MOCK_UTMI_CLK_SRC] = &usb1_mock_utmi_clk_src.clkr,
4479 [USB1_PIPE_CLK_SRC] = &usb1_pipe_clk_src.clkr,
4480 [GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,
4481 [SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr,
4482 [NSS_CE_CLK_SRC] = &nss_ce_clk_src.clkr,
4483 [NSS_NOC_BFDCD_CLK_SRC] = &nss_noc_bfdcd_clk_src.clkr,
4484 [NSS_CRYPTO_CLK_SRC] = &nss_crypto_clk_src.clkr,
4485 [NSS_UBI0_CLK_SRC] = &nss_ubi0_clk_src.clkr,
4486 [NSS_UBI0_DIV_CLK_SRC] = &nss_ubi0_div_clk_src.clkr,
4487 [NSS_UBI1_CLK_SRC] = &nss_ubi1_clk_src.clkr,
4488 [NSS_UBI1_DIV_CLK_SRC] = &nss_ubi1_div_clk_src.clkr,
4489 [UBI_MPT_CLK_SRC] = &ubi_mpt_clk_src.clkr,
4490 [NSS_IMEM_CLK_SRC] = &nss_imem_clk_src.clkr,
4491 [NSS_PPE_CLK_SRC] = &nss_ppe_clk_src.clkr,
4492 [NSS_PORT1_RX_CLK_SRC] = &nss_port1_rx_clk_src.clkr,
4493 [NSS_PORT1_RX_DIV_CLK_SRC] = &nss_port1_rx_div_clk_src.clkr,
4494 [NSS_PORT1_TX_CLK_SRC] = &nss_port1_tx_clk_src.clkr,
4495 [NSS_PORT1_TX_DIV_CLK_SRC] = &nss_port1_tx_div_clk_src.clkr,
4496 [NSS_PORT2_RX_CLK_SRC] = &nss_port2_rx_clk_src.clkr,
4497 [NSS_PORT2_RX_DIV_CLK_SRC] = &nss_port2_rx_div_clk_src.clkr,
4498 [NSS_PORT2_TX_CLK_SRC] = &nss_port2_tx_clk_src.clkr,
4499 [NSS_PORT2_TX_DIV_CLK_SRC] = &nss_port2_tx_div_clk_src.clkr,
4500 [NSS_PORT3_RX_CLK_SRC] = &nss_port3_rx_clk_src.clkr,
4501 [NSS_PORT3_RX_DIV_CLK_SRC] = &nss_port3_rx_div_clk_src.clkr,
4502 [NSS_PORT3_TX_CLK_SRC] = &nss_port3_tx_clk_src.clkr,
4503 [NSS_PORT3_TX_DIV_CLK_SRC] = &nss_port3_tx_div_clk_src.clkr,
4504 [NSS_PORT4_RX_CLK_SRC] = &nss_port4_rx_clk_src.clkr,
4505 [NSS_PORT4_RX_DIV_CLK_SRC] = &nss_port4_rx_div_clk_src.clkr,
4506 [NSS_PORT4_TX_CLK_SRC] = &nss_port4_tx_clk_src.clkr,
4507 [NSS_PORT4_TX_DIV_CLK_SRC] = &nss_port4_tx_div_clk_src.clkr,
4508 [NSS_PORT5_RX_CLK_SRC] = &nss_port5_rx_clk_src.clkr,
4509 [NSS_PORT5_RX_DIV_CLK_SRC] = &nss_port5_rx_div_clk_src.clkr,
4510 [NSS_PORT5_TX_CLK_SRC] = &nss_port5_tx_clk_src.clkr,
4511 [NSS_PORT5_TX_DIV_CLK_SRC] = &nss_port5_tx_div_clk_src.clkr,
4512 [NSS_PORT6_RX_CLK_SRC] = &nss_port6_rx_clk_src.clkr,
4513 [NSS_PORT6_RX_DIV_CLK_SRC] = &nss_port6_rx_div_clk_src.clkr,
4514 [NSS_PORT6_TX_CLK_SRC] = &nss_port6_tx_clk_src.clkr,
4515 [NSS_PORT6_TX_DIV_CLK_SRC] = &nss_port6_tx_div_clk_src.clkr,
4516 [CRYPTO_CLK_SRC] = &crypto_clk_src.clkr,
4517 [GP1_CLK_SRC] = &gp1_clk_src.clkr,
4518 [GP2_CLK_SRC] = &gp2_clk_src.clkr,
4519 [GP3_CLK_SRC] = &gp3_clk_src.clkr,
4520 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
4521 [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
4522 [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
4523 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
4524 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
4525 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
4526 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
4527 [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
4528 [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
4529 [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
4530 [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
4531 [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
4532 [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
4533 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
4534 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
4535 [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
4536 [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
4537 [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
4538 [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
4539 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
4540 [GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
4541 [GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
4542 [GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr,
4543 [GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr,
4544 [GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr,
4545 [GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr,
4546 [GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,
4547 [GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr,
4548 [GCC_PCIE1_AHB_CLK] = &gcc_pcie1_ahb_clk.clkr,
4549 [GCC_PCIE1_AUX_CLK] = &gcc_pcie1_aux_clk.clkr,
4550 [GCC_PCIE1_AXI_M_CLK] = &gcc_pcie1_axi_m_clk.clkr,
4551 [GCC_PCIE1_AXI_S_CLK] = &gcc_pcie1_axi_s_clk.clkr,
4552 [GCC_PCIE1_PIPE_CLK] = &gcc_pcie1_pipe_clk.clkr,
4553 [GCC_SYS_NOC_PCIE1_AXI_CLK] = &gcc_sys_noc_pcie1_axi_clk.clkr,
4554 [GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,
4555 [GCC_SYS_NOC_USB0_AXI_CLK] = &gcc_sys_noc_usb0_axi_clk.clkr,
4556 [GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,
4557 [GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,
4558 [GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,
4559 [GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,
4560 [GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,
4561 [GCC_USB1_AUX_CLK] = &gcc_usb1_aux_clk.clkr,
4562 [GCC_SYS_NOC_USB1_AXI_CLK] = &gcc_sys_noc_usb1_axi_clk.clkr,
4563 [GCC_USB1_MASTER_CLK] = &gcc_usb1_master_clk.clkr,
4564 [GCC_USB1_MOCK_UTMI_CLK] = &gcc_usb1_mock_utmi_clk.clkr,
4565 [GCC_USB1_PHY_CFG_AHB_CLK] = &gcc_usb1_phy_cfg_ahb_clk.clkr,
4566 [GCC_USB1_PIPE_CLK] = &gcc_usb1_pipe_clk.clkr,
4567 [GCC_USB1_SLEEP_CLK] = &gcc_usb1_sleep_clk.clkr,
4568 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
4569 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
4570 [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
4571 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
4572 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
4573 [GCC_MEM_NOC_NSS_AXI_CLK] = &gcc_mem_noc_nss_axi_clk.clkr,
4574 [GCC_NSS_CE_APB_CLK] = &gcc_nss_ce_apb_clk.clkr,
4575 [GCC_NSS_CE_AXI_CLK] = &gcc_nss_ce_axi_clk.clkr,
4576 [GCC_NSS_CFG_CLK] = &gcc_nss_cfg_clk.clkr,
4577 [GCC_NSS_CRYPTO_CLK] = &gcc_nss_crypto_clk.clkr,
4578 [GCC_NSS_CSR_CLK] = &gcc_nss_csr_clk.clkr,
4579 [GCC_NSS_EDMA_CFG_CLK] = &gcc_nss_edma_cfg_clk.clkr,
4580 [GCC_NSS_EDMA_CLK] = &gcc_nss_edma_clk.clkr,
4581 [GCC_NSS_IMEM_CLK] = &gcc_nss_imem_clk.clkr,
4582 [GCC_NSS_NOC_CLK] = &gcc_nss_noc_clk.clkr,
4583 [GCC_NSS_PPE_BTQ_CLK] = &gcc_nss_ppe_btq_clk.clkr,
4584 [GCC_NSS_PPE_CFG_CLK] = &gcc_nss_ppe_cfg_clk.clkr,
4585 [GCC_NSS_PPE_CLK] = &gcc_nss_ppe_clk.clkr,
4586 [GCC_NSS_PPE_IPE_CLK] = &gcc_nss_ppe_ipe_clk.clkr,
4587 [GCC_NSS_PTP_REF_CLK] = &gcc_nss_ptp_ref_clk.clkr,
4588 [GCC_NSSNOC_CE_APB_CLK] = &gcc_nssnoc_ce_apb_clk.clkr,
4589 [GCC_NSSNOC_CE_AXI_CLK] = &gcc_nssnoc_ce_axi_clk.clkr,
4590 [GCC_NSSNOC_CRYPTO_CLK] = &gcc_nssnoc_crypto_clk.clkr,
4591 [GCC_NSSNOC_PPE_CFG_CLK] = &gcc_nssnoc_ppe_cfg_clk.clkr,
4592 [GCC_NSSNOC_PPE_CLK] = &gcc_nssnoc_ppe_clk.clkr,
4593 [GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,
4594 [GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,
4595 [GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,
4596 [GCC_NSSNOC_UBI0_AHB_CLK] = &gcc_nssnoc_ubi0_ahb_clk.clkr,
4597 [GCC_NSSNOC_UBI1_AHB_CLK] = &gcc_nssnoc_ubi1_ahb_clk.clkr,
4598 [GCC_UBI0_AHB_CLK] = &gcc_ubi0_ahb_clk.clkr,
4599 [GCC_UBI0_AXI_CLK] = &gcc_ubi0_axi_clk.clkr,
4600 [GCC_UBI0_NC_AXI_CLK] = &gcc_ubi0_nc_axi_clk.clkr,
4601 [GCC_UBI0_CORE_CLK] = &gcc_ubi0_core_clk.clkr,
4602 [GCC_UBI0_MPT_CLK] = &gcc_ubi0_mpt_clk.clkr,
4603 [GCC_UBI1_AHB_CLK] = &gcc_ubi1_ahb_clk.clkr,
4604 [GCC_UBI1_AXI_CLK] = &gcc_ubi1_axi_clk.clkr,
4605 [GCC_UBI1_NC_AXI_CLK] = &gcc_ubi1_nc_axi_clk.clkr,
4606 [GCC_UBI1_CORE_CLK] = &gcc_ubi1_core_clk.clkr,
4607 [GCC_UBI1_MPT_CLK] = &gcc_ubi1_mpt_clk.clkr,
4608 [GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,
4609 [GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,
4610 [GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,
4611 [GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,
4612 [GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,
4613 [GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,
4614 [GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,
4615 [GCC_UNIPHY2_AHB_CLK] = &gcc_uniphy2_ahb_clk.clkr,
4616 [GCC_UNIPHY2_SYS_CLK] = &gcc_uniphy2_sys_clk.clkr,
4617 [GCC_NSS_PORT1_RX_CLK] = &gcc_nss_port1_rx_clk.clkr,
4618 [GCC_NSS_PORT1_TX_CLK] = &gcc_nss_port1_tx_clk.clkr,
4619 [GCC_NSS_PORT2_RX_CLK] = &gcc_nss_port2_rx_clk.clkr,
4620 [GCC_NSS_PORT2_TX_CLK] = &gcc_nss_port2_tx_clk.clkr,
4621 [GCC_NSS_PORT3_RX_CLK] = &gcc_nss_port3_rx_clk.clkr,
4622 [GCC_NSS_PORT3_TX_CLK] = &gcc_nss_port3_tx_clk.clkr,
4623 [GCC_NSS_PORT4_RX_CLK] = &gcc_nss_port4_rx_clk.clkr,
4624 [GCC_NSS_PORT4_TX_CLK] = &gcc_nss_port4_tx_clk.clkr,
4625 [GCC_NSS_PORT5_RX_CLK] = &gcc_nss_port5_rx_clk.clkr,
4626 [GCC_NSS_PORT5_TX_CLK] = &gcc_nss_port5_tx_clk.clkr,
4627 [GCC_NSS_PORT6_RX_CLK] = &gcc_nss_port6_rx_clk.clkr,
4628 [GCC_NSS_PORT6_TX_CLK] = &gcc_nss_port6_tx_clk.clkr,
4629 [GCC_PORT1_MAC_CLK] = &gcc_port1_mac_clk.clkr,
4630 [GCC_PORT2_MAC_CLK] = &gcc_port2_mac_clk.clkr,
4631 [GCC_PORT3_MAC_CLK] = &gcc_port3_mac_clk.clkr,
4632 [GCC_PORT4_MAC_CLK] = &gcc_port4_mac_clk.clkr,
4633 [GCC_PORT5_MAC_CLK] = &gcc_port5_mac_clk.clkr,
4634 [GCC_PORT6_MAC_CLK] = &gcc_port6_mac_clk.clkr,
4635 [GCC_UNIPHY0_PORT1_RX_CLK] = &gcc_uniphy0_port1_rx_clk.clkr,
4636 [GCC_UNIPHY0_PORT1_TX_CLK] = &gcc_uniphy0_port1_tx_clk.clkr,
4637 [GCC_UNIPHY0_PORT2_RX_CLK] = &gcc_uniphy0_port2_rx_clk.clkr,
4638 [GCC_UNIPHY0_PORT2_TX_CLK] = &gcc_uniphy0_port2_tx_clk.clkr,
4639 [GCC_UNIPHY0_PORT3_RX_CLK] = &gcc_uniphy0_port3_rx_clk.clkr,
4640 [GCC_UNIPHY0_PORT3_TX_CLK] = &gcc_uniphy0_port3_tx_clk.clkr,
4641 [GCC_UNIPHY0_PORT4_RX_CLK] = &gcc_uniphy0_port4_rx_clk.clkr,
4642 [GCC_UNIPHY0_PORT4_TX_CLK] = &gcc_uniphy0_port4_tx_clk.clkr,
4643 [GCC_UNIPHY0_PORT5_RX_CLK] = &gcc_uniphy0_port5_rx_clk.clkr,
4644 [GCC_UNIPHY0_PORT5_TX_CLK] = &gcc_uniphy0_port5_tx_clk.clkr,
4645 [GCC_UNIPHY1_PORT5_RX_CLK] = &gcc_uniphy1_port5_rx_clk.clkr,
4646 [GCC_UNIPHY1_PORT5_TX_CLK] = &gcc_uniphy1_port5_tx_clk.clkr,
4647 [GCC_UNIPHY2_PORT6_RX_CLK] = &gcc_uniphy2_port6_rx_clk.clkr,
4648 [GCC_UNIPHY2_PORT6_TX_CLK] = &gcc_uniphy2_port6_tx_clk.clkr,
4649 [GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr,
4650 [GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr,
4651 [GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr,
4652 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
4653 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
4654 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
4655 [GCC_PCIE0_RCHNG_CLK_SRC] = &pcie0_rchng_clk_src.clkr,
4656 [GCC_PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr,
4657 [GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,
4660 static const struct qcom_reset_map gcc_ipq8074_resets[] = {
4661 [GCC_BLSP1_BCR] = { 0x01000, 0 },
4662 [GCC_BLSP1_QUP1_BCR] = { 0x02000, 0 },
4663 [GCC_BLSP1_UART1_BCR] = { 0x02038, 0 },
4664 [GCC_BLSP1_QUP2_BCR] = { 0x03008, 0 },
4665 [GCC_BLSP1_UART2_BCR] = { 0x03028, 0 },
4666 [GCC_BLSP1_QUP3_BCR] = { 0x04008, 0 },
4667 [GCC_BLSP1_UART3_BCR] = { 0x04028, 0 },
4668 [GCC_BLSP1_QUP4_BCR] = { 0x05008, 0 },
4669 [GCC_BLSP1_UART4_BCR] = { 0x05028, 0 },
4670 [GCC_BLSP1_QUP5_BCR] = { 0x06008, 0 },
4671 [GCC_BLSP1_UART5_BCR] = { 0x06028, 0 },
4672 [GCC_BLSP1_QUP6_BCR] = { 0x07008, 0 },
4673 [GCC_BLSP1_UART6_BCR] = { 0x07028, 0 },
4674 [GCC_IMEM_BCR] = { 0x0e000, 0 },
4675 [GCC_SMMU_BCR] = { 0x12000, 0 },
4676 [GCC_APSS_TCU_BCR] = { 0x12050, 0 },
4677 [GCC_SMMU_XPU_BCR] = { 0x12054, 0 },
4678 [GCC_PCNOC_TBU_BCR] = { 0x12058, 0 },
4679 [GCC_SMMU_CFG_BCR] = { 0x1208c, 0 },
4680 [GCC_PRNG_BCR] = { 0x13000, 0 },
4681 [GCC_BOOT_ROM_BCR] = { 0x13008, 0 },
4682 [GCC_CRYPTO_BCR] = { 0x16000, 0 },
4683 [GCC_WCSS_BCR] = { 0x18000, 0 },
4684 [GCC_WCSS_Q6_BCR] = { 0x18100, 0 },
4685 [GCC_NSS_BCR] = { 0x19000, 0 },
4686 [GCC_SEC_CTRL_BCR] = { 0x1a000, 0 },
4687 [GCC_ADSS_BCR] = { 0x1c000, 0 },
4688 [GCC_DDRSS_BCR] = { 0x1e000, 0 },
4689 [GCC_SYSTEM_NOC_BCR] = { 0x26000, 0 },
4690 [GCC_PCNOC_BCR] = { 0x27018, 0 },
4691 [GCC_TCSR_BCR] = { 0x28000, 0 },
4692 [GCC_QDSS_BCR] = { 0x29000, 0 },
4693 [GCC_DCD_BCR] = { 0x2a000, 0 },
4694 [GCC_MSG_RAM_BCR] = { 0x2b000, 0 },
4695 [GCC_MPM_BCR] = { 0x2c000, 0 },
4696 [GCC_SPMI_BCR] = { 0x2e000, 0 },
4697 [GCC_SPDM_BCR] = { 0x2f000, 0 },
4698 [GCC_RBCPR_BCR] = { 0x33000, 0 },
4699 [GCC_RBCPR_MX_BCR] = { 0x33014, 0 },
4700 [GCC_TLMM_BCR] = { 0x34000, 0 },
4701 [GCC_RBCPR_WCSS_BCR] = { 0x3a000, 0 },
4702 [GCC_USB0_PHY_BCR] = { 0x3e034, 0 },
4703 [GCC_USB3PHY_0_PHY_BCR] = { 0x3e03c, 0 },
4704 [GCC_USB0_BCR] = { 0x3e070, 0 },
4705 [GCC_USB1_PHY_BCR] = { 0x3f034, 0 },
4706 [GCC_USB3PHY_1_PHY_BCR] = { 0x3f03c, 0 },
4707 [GCC_USB1_BCR] = { 0x3f070, 0 },
4708 [GCC_QUSB2_0_PHY_BCR] = { 0x4103c, 0 },
4709 [GCC_QUSB2_1_PHY_BCR] = { 0x41040, 0 },
4710 [GCC_SDCC1_BCR] = { 0x42000, 0 },
4711 [GCC_SDCC2_BCR] = { 0x43000, 0 },
4712 [GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x47000, 0 },
4713 [GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x47008, 0 },
4714 [GCC_SNOC_BUS_TIMEOUT3_BCR] = { 0x47010, 0 },
4715 [GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x48000, 0 },
4716 [GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x48008, 0 },
4717 [GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x48010, 0 },
4718 [GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x48018, 0 },
4719 [GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x48020, 0 },
4720 [GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x48028, 0 },
4721 [GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x48030, 0 },
4722 [GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x48038, 0 },
4723 [GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x48040, 0 },
4724 [GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x48048, 0 },
4725 [GCC_UNIPHY0_BCR] = { 0x56000, 0 },
4726 [GCC_UNIPHY1_BCR] = { 0x56100, 0 },
4727 [GCC_UNIPHY2_BCR] = { 0x56200, 0 },
4728 [GCC_CMN_12GPLL_BCR] = { 0x56300, 0 },
4729 [GCC_QPIC_BCR] = { 0x57018, 0 },
4730 [GCC_MDIO_BCR] = { 0x58000, 0 },
4731 [GCC_PCIE1_TBU_BCR] = { 0x65000, 0 },
4732 [GCC_WCSS_CORE_TBU_BCR] = { 0x66000, 0 },
4733 [GCC_WCSS_Q6_TBU_BCR] = { 0x67000, 0 },
4734 [GCC_USB0_TBU_BCR] = { 0x6a000, 0 },
4735 [GCC_USB1_TBU_BCR] = { 0x6a004, 0 },
4736 [GCC_PCIE0_TBU_BCR] = { 0x6b000, 0 },
4737 [GCC_NSS_NOC_TBU_BCR] = { 0x6e000, 0 },
4738 [GCC_PCIE0_BCR] = { 0x75004, 0 },
4739 [GCC_PCIE0_PHY_BCR] = { 0x75038, 0 },
4740 [GCC_PCIE0PHY_PHY_BCR] = { 0x7503c, 0 },
4741 [GCC_PCIE0_LINK_DOWN_BCR] = { 0x75044, 0 },
4742 [GCC_PCIE1_BCR] = { 0x76004, 0 },
4743 [GCC_PCIE1_PHY_BCR] = { 0x76038, 0 },
4744 [GCC_PCIE1PHY_PHY_BCR] = { 0x7603c, 0 },
4745 [GCC_PCIE1_LINK_DOWN_BCR] = { 0x76044, 0 },
4746 [GCC_DCC_BCR] = { 0x77000, 0 },
4747 [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x78000, 0 },
4748 [GCC_APC1_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x79000, 0 },
4749 [GCC_SMMU_CATS_BCR] = { 0x7c000, 0 },
4750 [GCC_UBI0_AXI_ARES] = { 0x68010, 0 },
4751 [GCC_UBI0_AHB_ARES] = { 0x68010, 1 },
4752 [GCC_UBI0_NC_AXI_ARES] = { 0x68010, 2 },
4753 [GCC_UBI0_DBG_ARES] = { 0x68010, 3 },
4754 [GCC_UBI0_CORE_CLAMP_ENABLE] = { 0x68010, 4 },
4755 [GCC_UBI0_CLKRST_CLAMP_ENABLE] = { 0x68010, 5 },
4756 [GCC_UBI1_AXI_ARES] = { 0x68010, 8 },
4757 [GCC_UBI1_AHB_ARES] = { 0x68010, 9 },
4758 [GCC_UBI1_NC_AXI_ARES] = { 0x68010, 10 },
4759 [GCC_UBI1_DBG_ARES] = { 0x68010, 11 },
4760 [GCC_UBI1_CORE_CLAMP_ENABLE] = { 0x68010, 12 },
4761 [GCC_UBI1_CLKRST_CLAMP_ENABLE] = { 0x68010, 13 },
4762 [GCC_NSS_CFG_ARES] = { 0x68010, 16 },
4763 [GCC_NSS_IMEM_ARES] = { 0x68010, 17 },
4764 [GCC_NSS_NOC_ARES] = { 0x68010, 18 },
4765 [GCC_NSS_CRYPTO_ARES] = { 0x68010, 19 },
4766 [GCC_NSS_CSR_ARES] = { 0x68010, 20 },
4767 [GCC_NSS_CE_APB_ARES] = { 0x68010, 21 },
4768 [GCC_NSS_CE_AXI_ARES] = { 0x68010, 22 },
4769 [GCC_NSSNOC_CE_APB_ARES] = { 0x68010, 23 },
4770 [GCC_NSSNOC_CE_AXI_ARES] = { 0x68010, 24 },
4771 [GCC_NSSNOC_UBI0_AHB_ARES] = { 0x68010, 25 },
4772 [GCC_NSSNOC_UBI1_AHB_ARES] = { 0x68010, 26 },
4773 [GCC_NSSNOC_SNOC_ARES] = { 0x68010, 27 },
4774 [GCC_NSSNOC_CRYPTO_ARES] = { 0x68010, 28 },
4775 [GCC_NSSNOC_ATB_ARES] = { 0x68010, 29 },
4776 [GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x68010, 30 },
4777 [GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x68010, 31 },
4778 [GCC_PCIE0_PIPE_ARES] = { 0x75040, 0 },
4779 [GCC_PCIE0_SLEEP_ARES] = { 0x75040, 1 },
4780 [GCC_PCIE0_CORE_STICKY_ARES] = { 0x75040, 2 },
4781 [GCC_PCIE0_AXI_MASTER_ARES] = { 0x75040, 3 },
4782 [GCC_PCIE0_AXI_SLAVE_ARES] = { 0x75040, 4 },
4783 [GCC_PCIE0_AHB_ARES] = { 0x75040, 5 },
4784 [GCC_PCIE0_AXI_MASTER_STICKY_ARES] = { 0x75040, 6 },
4785 [GCC_PCIE0_AXI_SLAVE_STICKY_ARES] = { 0x75040, 7 },
4786 [GCC_PCIE1_PIPE_ARES] = { 0x76040, 0 },
4787 [GCC_PCIE1_SLEEP_ARES] = { 0x76040, 1 },
4788 [GCC_PCIE1_CORE_STICKY_ARES] = { 0x76040, 2 },
4789 [GCC_PCIE1_AXI_MASTER_ARES] = { 0x76040, 3 },
4790 [GCC_PCIE1_AXI_SLAVE_ARES] = { 0x76040, 4 },
4791 [GCC_PCIE1_AHB_ARES] = { 0x76040, 5 },
4792 [GCC_PCIE1_AXI_MASTER_STICKY_ARES] = { 0x76040, 6 },
4795 static const struct of_device_id gcc_ipq8074_match_table[] = {
4796 { .compatible = "qcom,gcc-ipq8074" },
4799 MODULE_DEVICE_TABLE(of, gcc_ipq8074_match_table);
4801 static const struct regmap_config gcc_ipq8074_regmap_config = {
4805 .max_register = 0x7fffc,
4809 static const struct qcom_cc_desc gcc_ipq8074_desc = {
4810 .config = &gcc_ipq8074_regmap_config,
4811 .clks = gcc_ipq8074_clks,
4812 .num_clks = ARRAY_SIZE(gcc_ipq8074_clks),
4813 .resets = gcc_ipq8074_resets,
4814 .num_resets = ARRAY_SIZE(gcc_ipq8074_resets),
4815 .clk_hws = gcc_ipq8074_hws,
4816 .num_clk_hws = ARRAY_SIZE(gcc_ipq8074_hws),
4819 static int gcc_ipq8074_probe(struct platform_device *pdev)
4821 struct regmap *regmap;
4823 regmap = qcom_cc_map(pdev, &gcc_ipq8074_desc);
4825 return PTR_ERR(regmap);
4827 /* SW Workaround for UBI32 Huayra PLL */
4828 regmap_update_bits(regmap, 0x2501c, BIT(26), BIT(26));
4830 clk_alpha_pll_configure(&ubi32_pll_main, regmap, &ubi32_pll_config);
4831 clk_alpha_pll_configure(&nss_crypto_pll_main, regmap,
4832 &nss_crypto_pll_config);
4834 return qcom_cc_really_probe(pdev, &gcc_ipq8074_desc, regmap);
4837 static struct platform_driver gcc_ipq8074_driver = {
4838 .probe = gcc_ipq8074_probe,
4840 .name = "qcom,gcc-ipq8074",
4841 .of_match_table = gcc_ipq8074_match_table,
4845 static int __init gcc_ipq8074_init(void)
4847 return platform_driver_register(&gcc_ipq8074_driver);
4849 core_initcall(gcc_ipq8074_init);
4851 static void __exit gcc_ipq8074_exit(void)
4853 platform_driver_unregister(&gcc_ipq8074_driver);
4855 module_exit(gcc_ipq8074_exit);
4857 MODULE_DESCRIPTION("QCOM GCC IPQ8074 Driver");
4858 MODULE_LICENSE("GPL v2");
4859 MODULE_ALIAS("platform:gcc-ipq8074");