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"
52 static const char * const gcc_xo_gpll0_gpll0_out_main_div2[] = {
55 "gpll0_out_main_div2",
58 static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = {
64 static const struct parent_map gcc_xo_gpll0_map[] = {
69 static const char * const gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = {
73 "gpll0_out_main_div2",
76 static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = {
83 static const char * const gcc_xo_gpll0_sleep_clk[] = {
89 static const struct parent_map gcc_xo_gpll0_sleep_clk_map[] = {
95 static const char * const gcc_xo_gpll6_gpll0_gpll0_out_main_div2[] = {
99 "gpll0_out_main_div2",
102 static const struct parent_map gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map[] = {
109 static const char * const gcc_xo_gpll0_out_main_div2_gpll0[] = {
111 "gpll0_out_main_div2",
115 static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = {
121 static const char * const gcc_usb3phy_0_cc_pipe_clk_xo[] = {
122 "usb3phy_0_cc_pipe_clk",
126 static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = {
127 { P_USB3PHY_0_PIPE, 0 },
131 static const char * const gcc_usb3phy_1_cc_pipe_clk_xo[] = {
132 "usb3phy_1_cc_pipe_clk",
136 static const struct parent_map gcc_usb3phy_1_cc_pipe_clk_xo_map[] = {
137 { P_USB3PHY_1_PIPE, 0 },
141 static const char * const gcc_pcie20_phy0_pipe_clk_xo[] = {
142 "pcie20_phy0_pipe_clk",
146 static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = {
147 { P_PCIE20_PHY0_PIPE, 0 },
151 static const char * const gcc_pcie20_phy1_pipe_clk_xo[] = {
152 "pcie20_phy1_pipe_clk",
156 static const struct parent_map gcc_pcie20_phy1_pipe_clk_xo_map[] = {
157 { P_PCIE20_PHY1_PIPE, 0 },
161 static const char * const gcc_xo_gpll0_gpll6_gpll0_div2[] = {
165 "gpll0_out_main_div2",
168 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_div2_map[] = {
175 static const char * const gcc_xo_gpll0_gpll6_gpll0_out_main_div2[] = {
179 "gpll0_out_main_div2",
182 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map[] = {
189 static const char * const gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2[] = {
191 "bias_pll_nss_noc_clk",
196 static const struct parent_map gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2_map[] = {
198 { P_BIAS_PLL_NSS_NOC, 1 },
203 static const char * const gcc_xo_nss_crypto_pll_gpll0[] = {
209 static const struct parent_map gcc_xo_nss_crypto_pll_gpll0_map[] = {
211 { P_NSS_CRYPTO_PLL, 1 },
215 static const char * const gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6[] = {
224 static const struct parent_map gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map[] = {
233 static const char * const gcc_xo_gpll0_out_main_div2[] = {
235 "gpll0_out_main_div2",
238 static const struct parent_map gcc_xo_gpll0_out_main_div2_map[] = {
243 static const char * const gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {
252 static const struct parent_map gcc_xo_bias_gpll0_gpll4_nss_ubi32_map[] = {
257 { P_NSS_CRYPTO_PLL, 4 },
261 static const char * const gcc_xo_gpll0_gpll4[] = {
267 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
273 static const char * const gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {
275 "uniphy0_gcc_rx_clk",
276 "uniphy0_gcc_tx_clk",
281 static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {
289 static const char * const gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {
291 "uniphy0_gcc_tx_clk",
292 "uniphy0_gcc_rx_clk",
297 static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {
305 static const char * const gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {
307 "uniphy0_gcc_rx_clk",
308 "uniphy0_gcc_tx_clk",
309 "uniphy1_gcc_rx_clk",
310 "uniphy1_gcc_tx_clk",
315 static const struct parent_map
316 gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map[] = {
326 static const char * const gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {
328 "uniphy0_gcc_tx_clk",
329 "uniphy0_gcc_rx_clk",
330 "uniphy1_gcc_tx_clk",
331 "uniphy1_gcc_rx_clk",
336 static const struct parent_map
337 gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map[] = {
347 static const char * const gcc_xo_uniphy2_rx_tx_ubi32_bias[] = {
349 "uniphy2_gcc_rx_clk",
350 "uniphy2_gcc_tx_clk",
355 static const struct parent_map gcc_xo_uniphy2_rx_tx_ubi32_bias_map[] = {
363 static const char * const gcc_xo_uniphy2_tx_rx_ubi32_bias[] = {
365 "uniphy2_gcc_tx_clk",
366 "uniphy2_gcc_rx_clk",
371 static const struct parent_map gcc_xo_uniphy2_tx_rx_ubi32_bias_map[] = {
379 static const char * const gcc_xo_gpll0_gpll6_gpll0_sleep_clk[] = {
383 "gpll0_out_main_div2",
387 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map[] = {
395 static struct clk_alpha_pll gpll0_main = {
397 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
399 .enable_reg = 0x0b000,
400 .enable_mask = BIT(0),
401 .hw.init = &(struct clk_init_data){
402 .name = "gpll0_main",
403 .parent_names = (const char *[]){
407 .ops = &clk_alpha_pll_ops,
412 static struct clk_fixed_factor gpll0_out_main_div2 = {
415 .hw.init = &(struct clk_init_data){
416 .name = "gpll0_out_main_div2",
417 .parent_names = (const char *[]){
421 .ops = &clk_fixed_factor_ops,
422 .flags = CLK_SET_RATE_PARENT,
426 static struct clk_alpha_pll_postdiv gpll0 = {
428 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
430 .clkr.hw.init = &(struct clk_init_data){
432 .parent_names = (const char *[]){
436 .ops = &clk_alpha_pll_postdiv_ro_ops,
440 static struct clk_alpha_pll gpll2_main = {
442 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
444 .enable_reg = 0x0b000,
445 .enable_mask = BIT(2),
446 .hw.init = &(struct clk_init_data){
447 .name = "gpll2_main",
448 .parent_names = (const char *[]){
452 .ops = &clk_alpha_pll_ops,
453 .flags = CLK_IS_CRITICAL,
458 static struct clk_alpha_pll_postdiv gpll2 = {
460 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
462 .clkr.hw.init = &(struct clk_init_data){
464 .parent_names = (const char *[]){
468 .ops = &clk_alpha_pll_postdiv_ro_ops,
469 .flags = CLK_SET_RATE_PARENT,
473 static struct clk_alpha_pll gpll4_main = {
475 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
477 .enable_reg = 0x0b000,
478 .enable_mask = BIT(5),
479 .hw.init = &(struct clk_init_data){
480 .name = "gpll4_main",
481 .parent_names = (const char *[]){
485 .ops = &clk_alpha_pll_ops,
486 .flags = CLK_IS_CRITICAL,
491 static struct clk_alpha_pll_postdiv gpll4 = {
493 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
495 .clkr.hw.init = &(struct clk_init_data){
497 .parent_names = (const char *[]){
501 .ops = &clk_alpha_pll_postdiv_ro_ops,
502 .flags = CLK_SET_RATE_PARENT,
506 static struct clk_alpha_pll gpll6_main = {
508 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
509 .flags = SUPPORTS_DYNAMIC_UPDATE,
511 .enable_reg = 0x0b000,
512 .enable_mask = BIT(7),
513 .hw.init = &(struct clk_init_data){
514 .name = "gpll6_main",
515 .parent_names = (const char *[]){
519 .ops = &clk_alpha_pll_ops,
520 .flags = CLK_IS_CRITICAL,
525 static struct clk_alpha_pll_postdiv gpll6 = {
527 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
529 .clkr.hw.init = &(struct clk_init_data){
531 .parent_names = (const char *[]){
535 .ops = &clk_alpha_pll_postdiv_ro_ops,
536 .flags = CLK_SET_RATE_PARENT,
540 static struct clk_fixed_factor gpll6_out_main_div2 = {
543 .hw.init = &(struct clk_init_data){
544 .name = "gpll6_out_main_div2",
545 .parent_names = (const char *[]){
549 .ops = &clk_fixed_factor_ops,
550 .flags = CLK_SET_RATE_PARENT,
554 static struct clk_alpha_pll ubi32_pll_main = {
556 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
557 .flags = SUPPORTS_DYNAMIC_UPDATE,
559 .enable_reg = 0x0b000,
560 .enable_mask = BIT(6),
561 .hw.init = &(struct clk_init_data){
562 .name = "ubi32_pll_main",
563 .parent_names = (const char *[]){
567 .ops = &clk_alpha_pll_huayra_ops,
572 static struct clk_alpha_pll_postdiv ubi32_pll = {
574 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
576 .clkr.hw.init = &(struct clk_init_data){
578 .parent_names = (const char *[]){
582 .ops = &clk_alpha_pll_postdiv_ro_ops,
583 .flags = CLK_SET_RATE_PARENT,
587 static struct clk_alpha_pll nss_crypto_pll_main = {
589 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
591 .enable_reg = 0x0b000,
592 .enable_mask = BIT(4),
593 .hw.init = &(struct clk_init_data){
594 .name = "nss_crypto_pll_main",
595 .parent_names = (const char *[]){
599 .ops = &clk_alpha_pll_ops,
604 static struct clk_alpha_pll_postdiv nss_crypto_pll = {
606 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
608 .clkr.hw.init = &(struct clk_init_data){
609 .name = "nss_crypto_pll",
610 .parent_names = (const char *[]){
611 "nss_crypto_pll_main"
614 .ops = &clk_alpha_pll_postdiv_ro_ops,
615 .flags = CLK_SET_RATE_PARENT,
619 static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src[] = {
620 F(19200000, P_XO, 1, 0, 0),
621 F(50000000, P_GPLL0, 16, 0, 0),
622 F(100000000, P_GPLL0, 8, 0, 0),
626 static struct clk_rcg2 pcnoc_bfdcd_clk_src = {
628 .freq_tbl = ftbl_pcnoc_bfdcd_clk_src,
630 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
631 .clkr.hw.init = &(struct clk_init_data){
632 .name = "pcnoc_bfdcd_clk_src",
633 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
635 .ops = &clk_rcg2_ops,
636 .flags = CLK_IS_CRITICAL,
640 static struct clk_fixed_factor pcnoc_clk_src = {
643 .hw.init = &(struct clk_init_data){
644 .name = "pcnoc_clk_src",
645 .parent_names = (const char *[]){
646 "pcnoc_bfdcd_clk_src"
649 .ops = &clk_fixed_factor_ops,
650 .flags = CLK_SET_RATE_PARENT,
654 static struct clk_branch gcc_sleep_clk_src = {
657 .enable_reg = 0x30000,
658 .enable_mask = BIT(1),
659 .hw.init = &(struct clk_init_data){
660 .name = "gcc_sleep_clk_src",
661 .parent_names = (const char *[]){
665 .ops = &clk_branch2_ops,
666 .flags = CLK_IS_CRITICAL,
671 static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src[] = {
672 F(19200000, P_XO, 1, 0, 0),
673 F(25000000, P_GPLL0_DIV2, 16, 0, 0),
674 F(50000000, P_GPLL0, 16, 0, 0),
678 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
680 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
682 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
683 .clkr.hw.init = &(struct clk_init_data){
684 .name = "blsp1_qup1_i2c_apps_clk_src",
685 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
687 .ops = &clk_rcg2_ops,
691 static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src[] = {
692 F(960000, P_XO, 10, 1, 2),
693 F(4800000, P_XO, 4, 0, 0),
694 F(9600000, P_XO, 2, 0, 0),
695 F(12500000, P_GPLL0_DIV2, 16, 1, 2),
696 F(16000000, P_GPLL0, 10, 1, 5),
697 F(19200000, P_XO, 1, 0, 0),
698 F(25000000, P_GPLL0, 16, 1, 2),
699 F(50000000, P_GPLL0, 16, 0, 0),
703 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
705 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
708 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
709 .clkr.hw.init = &(struct clk_init_data){
710 .name = "blsp1_qup1_spi_apps_clk_src",
711 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
713 .ops = &clk_rcg2_ops,
717 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
719 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
721 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
722 .clkr.hw.init = &(struct clk_init_data){
723 .name = "blsp1_qup2_i2c_apps_clk_src",
724 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
726 .ops = &clk_rcg2_ops,
730 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
732 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
735 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
736 .clkr.hw.init = &(struct clk_init_data){
737 .name = "blsp1_qup2_spi_apps_clk_src",
738 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
740 .ops = &clk_rcg2_ops,
744 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
746 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
748 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
749 .clkr.hw.init = &(struct clk_init_data){
750 .name = "blsp1_qup3_i2c_apps_clk_src",
751 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
753 .ops = &clk_rcg2_ops,
757 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
759 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
762 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
763 .clkr.hw.init = &(struct clk_init_data){
764 .name = "blsp1_qup3_spi_apps_clk_src",
765 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
767 .ops = &clk_rcg2_ops,
771 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
773 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
775 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
776 .clkr.hw.init = &(struct clk_init_data){
777 .name = "blsp1_qup4_i2c_apps_clk_src",
778 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
780 .ops = &clk_rcg2_ops,
784 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
786 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
789 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
790 .clkr.hw.init = &(struct clk_init_data){
791 .name = "blsp1_qup4_spi_apps_clk_src",
792 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
794 .ops = &clk_rcg2_ops,
798 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
800 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
802 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
803 .clkr.hw.init = &(struct clk_init_data){
804 .name = "blsp1_qup5_i2c_apps_clk_src",
805 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
807 .ops = &clk_rcg2_ops,
811 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
813 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
816 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
817 .clkr.hw.init = &(struct clk_init_data){
818 .name = "blsp1_qup5_spi_apps_clk_src",
819 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
821 .ops = &clk_rcg2_ops,
825 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
827 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
829 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
830 .clkr.hw.init = &(struct clk_init_data){
831 .name = "blsp1_qup6_i2c_apps_clk_src",
832 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
834 .ops = &clk_rcg2_ops,
838 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
840 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
843 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
844 .clkr.hw.init = &(struct clk_init_data){
845 .name = "blsp1_qup6_spi_apps_clk_src",
846 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
848 .ops = &clk_rcg2_ops,
852 static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src[] = {
853 F(3686400, P_GPLL0_DIV2, 1, 144, 15625),
854 F(7372800, P_GPLL0_DIV2, 1, 288, 15625),
855 F(14745600, P_GPLL0_DIV2, 1, 576, 15625),
856 F(16000000, P_GPLL0_DIV2, 5, 1, 5),
857 F(19200000, P_XO, 1, 0, 0),
858 F(24000000, P_GPLL0, 1, 3, 100),
859 F(25000000, P_GPLL0, 16, 1, 2),
860 F(32000000, P_GPLL0, 1, 1, 25),
861 F(40000000, P_GPLL0, 1, 1, 20),
862 F(46400000, P_GPLL0, 1, 29, 500),
863 F(48000000, P_GPLL0, 1, 3, 50),
864 F(51200000, P_GPLL0, 1, 8, 125),
865 F(56000000, P_GPLL0, 1, 7, 100),
866 F(58982400, P_GPLL0, 1, 1152, 15625),
867 F(60000000, P_GPLL0, 1, 3, 40),
868 F(64000000, P_GPLL0, 12.5, 1, 1),
872 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
874 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
877 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
878 .clkr.hw.init = &(struct clk_init_data){
879 .name = "blsp1_uart1_apps_clk_src",
880 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
882 .ops = &clk_rcg2_ops,
886 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
888 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
891 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
892 .clkr.hw.init = &(struct clk_init_data){
893 .name = "blsp1_uart2_apps_clk_src",
894 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
896 .ops = &clk_rcg2_ops,
900 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
902 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
905 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
906 .clkr.hw.init = &(struct clk_init_data){
907 .name = "blsp1_uart3_apps_clk_src",
908 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
910 .ops = &clk_rcg2_ops,
914 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
916 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
919 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
920 .clkr.hw.init = &(struct clk_init_data){
921 .name = "blsp1_uart4_apps_clk_src",
922 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
924 .ops = &clk_rcg2_ops,
928 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
930 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
933 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
934 .clkr.hw.init = &(struct clk_init_data){
935 .name = "blsp1_uart5_apps_clk_src",
936 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
938 .ops = &clk_rcg2_ops,
942 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
944 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
947 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
948 .clkr.hw.init = &(struct clk_init_data){
949 .name = "blsp1_uart6_apps_clk_src",
950 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
952 .ops = &clk_rcg2_ops,
956 static const struct clk_parent_data gcc_xo_gpll0[] = {
958 { .hw = &gpll0.clkr.hw },
961 static const struct freq_tbl ftbl_pcie_axi_clk_src[] = {
962 F(19200000, P_XO, 1, 0, 0),
963 F(200000000, P_GPLL0, 4, 0, 0),
967 static struct clk_rcg2 pcie0_axi_clk_src = {
969 .freq_tbl = ftbl_pcie_axi_clk_src,
971 .parent_map = gcc_xo_gpll0_map,
972 .clkr.hw.init = &(struct clk_init_data){
973 .name = "pcie0_axi_clk_src",
974 .parent_data = gcc_xo_gpll0,
976 .ops = &clk_rcg2_ops,
980 static const struct freq_tbl ftbl_pcie_aux_clk_src[] = {
981 F(19200000, P_XO, 1, 0, 0),
984 static struct clk_rcg2 pcie0_aux_clk_src = {
986 .freq_tbl = ftbl_pcie_aux_clk_src,
989 .parent_map = gcc_xo_gpll0_sleep_clk_map,
990 .clkr.hw.init = &(struct clk_init_data){
991 .name = "pcie0_aux_clk_src",
992 .parent_names = gcc_xo_gpll0_sleep_clk,
994 .ops = &clk_rcg2_ops,
998 static struct clk_regmap_mux pcie0_pipe_clk_src = {
1002 .parent_map = gcc_pcie20_phy0_pipe_clk_xo_map,
1004 .hw.init = &(struct clk_init_data){
1005 .name = "pcie0_pipe_clk_src",
1006 .parent_names = gcc_pcie20_phy0_pipe_clk_xo,
1008 .ops = &clk_regmap_mux_closest_ops,
1009 .flags = CLK_SET_RATE_PARENT,
1014 static struct clk_rcg2 pcie1_axi_clk_src = {
1015 .cmd_rcgr = 0x76054,
1016 .freq_tbl = ftbl_pcie_axi_clk_src,
1018 .parent_map = gcc_xo_gpll0_map,
1019 .clkr.hw.init = &(struct clk_init_data){
1020 .name = "pcie1_axi_clk_src",
1021 .parent_data = gcc_xo_gpll0,
1023 .ops = &clk_rcg2_ops,
1027 static struct clk_rcg2 pcie1_aux_clk_src = {
1028 .cmd_rcgr = 0x76024,
1029 .freq_tbl = ftbl_pcie_aux_clk_src,
1032 .parent_map = gcc_xo_gpll0_sleep_clk_map,
1033 .clkr.hw.init = &(struct clk_init_data){
1034 .name = "pcie1_aux_clk_src",
1035 .parent_names = gcc_xo_gpll0_sleep_clk,
1037 .ops = &clk_rcg2_ops,
1041 static struct clk_regmap_mux pcie1_pipe_clk_src = {
1045 .parent_map = gcc_pcie20_phy1_pipe_clk_xo_map,
1047 .hw.init = &(struct clk_init_data){
1048 .name = "pcie1_pipe_clk_src",
1049 .parent_names = gcc_pcie20_phy1_pipe_clk_xo,
1051 .ops = &clk_regmap_mux_closest_ops,
1052 .flags = CLK_SET_RATE_PARENT,
1057 static const struct freq_tbl ftbl_sdcc_apps_clk_src[] = {
1058 F(144000, P_XO, 16, 3, 25),
1059 F(400000, P_XO, 12, 1, 4),
1060 F(24000000, P_GPLL2, 12, 1, 4),
1061 F(48000000, P_GPLL2, 12, 1, 2),
1062 F(96000000, P_GPLL2, 12, 0, 0),
1063 F(177777778, P_GPLL0, 4.5, 0, 0),
1064 F(192000000, P_GPLL2, 6, 0, 0),
1065 F(384000000, P_GPLL2, 3, 0, 0),
1069 static struct clk_rcg2 sdcc1_apps_clk_src = {
1070 .cmd_rcgr = 0x42004,
1071 .freq_tbl = ftbl_sdcc_apps_clk_src,
1074 .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
1075 .clkr.hw.init = &(struct clk_init_data){
1076 .name = "sdcc1_apps_clk_src",
1077 .parent_names = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
1079 .ops = &clk_rcg2_floor_ops,
1083 static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = {
1084 F(19200000, P_XO, 1, 0, 0),
1085 F(160000000, P_GPLL0, 5, 0, 0),
1086 F(308570000, P_GPLL6, 3.5, 0, 0),
1089 static struct clk_rcg2 sdcc1_ice_core_clk_src = {
1090 .cmd_rcgr = 0x5d000,
1091 .freq_tbl = ftbl_sdcc_ice_core_clk_src,
1094 .parent_map = gcc_xo_gpll0_gpll6_gpll0_div2_map,
1095 .clkr.hw.init = &(struct clk_init_data){
1096 .name = "sdcc1_ice_core_clk_src",
1097 .parent_names = gcc_xo_gpll0_gpll6_gpll0_div2,
1099 .ops = &clk_rcg2_ops,
1103 static struct clk_rcg2 sdcc2_apps_clk_src = {
1104 .cmd_rcgr = 0x43004,
1105 .freq_tbl = ftbl_sdcc_apps_clk_src,
1108 .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
1109 .clkr.hw.init = &(struct clk_init_data){
1110 .name = "sdcc2_apps_clk_src",
1111 .parent_names = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
1113 .ops = &clk_rcg2_floor_ops,
1117 static const struct freq_tbl ftbl_usb_master_clk_src[] = {
1118 F(80000000, P_GPLL0_DIV2, 5, 0, 0),
1119 F(100000000, P_GPLL0, 8, 0, 0),
1120 F(133330000, P_GPLL0, 6, 0, 0),
1124 static struct clk_rcg2 usb0_master_clk_src = {
1125 .cmd_rcgr = 0x3e00c,
1126 .freq_tbl = ftbl_usb_master_clk_src,
1129 .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
1130 .clkr.hw.init = &(struct clk_init_data){
1131 .name = "usb0_master_clk_src",
1132 .parent_names = gcc_xo_gpll0_out_main_div2_gpll0,
1134 .ops = &clk_rcg2_ops,
1138 static const struct freq_tbl ftbl_usb_aux_clk_src[] = {
1139 F(19200000, P_XO, 1, 0, 0),
1143 static struct clk_rcg2 usb0_aux_clk_src = {
1144 .cmd_rcgr = 0x3e05c,
1145 .freq_tbl = ftbl_usb_aux_clk_src,
1148 .parent_map = gcc_xo_gpll0_sleep_clk_map,
1149 .clkr.hw.init = &(struct clk_init_data){
1150 .name = "usb0_aux_clk_src",
1151 .parent_names = gcc_xo_gpll0_sleep_clk,
1153 .ops = &clk_rcg2_ops,
1157 static const struct freq_tbl ftbl_usb_mock_utmi_clk_src[] = {
1158 F(19200000, P_XO, 1, 0, 0),
1159 F(20000000, P_GPLL6, 6, 1, 9),
1160 F(60000000, P_GPLL6, 6, 1, 3),
1164 static struct clk_rcg2 usb0_mock_utmi_clk_src = {
1165 .cmd_rcgr = 0x3e020,
1166 .freq_tbl = ftbl_usb_mock_utmi_clk_src,
1169 .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1170 .clkr.hw.init = &(struct clk_init_data){
1171 .name = "usb0_mock_utmi_clk_src",
1172 .parent_names = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1174 .ops = &clk_rcg2_ops,
1178 static struct clk_regmap_mux usb0_pipe_clk_src = {
1182 .parent_map = gcc_usb3phy_0_cc_pipe_clk_xo_map,
1184 .hw.init = &(struct clk_init_data){
1185 .name = "usb0_pipe_clk_src",
1186 .parent_names = gcc_usb3phy_0_cc_pipe_clk_xo,
1188 .ops = &clk_regmap_mux_closest_ops,
1189 .flags = CLK_SET_RATE_PARENT,
1194 static struct clk_rcg2 usb1_master_clk_src = {
1195 .cmd_rcgr = 0x3f00c,
1196 .freq_tbl = ftbl_usb_master_clk_src,
1199 .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
1200 .clkr.hw.init = &(struct clk_init_data){
1201 .name = "usb1_master_clk_src",
1202 .parent_names = gcc_xo_gpll0_out_main_div2_gpll0,
1204 .ops = &clk_rcg2_ops,
1208 static struct clk_rcg2 usb1_aux_clk_src = {
1209 .cmd_rcgr = 0x3f05c,
1210 .freq_tbl = ftbl_usb_aux_clk_src,
1213 .parent_map = gcc_xo_gpll0_sleep_clk_map,
1214 .clkr.hw.init = &(struct clk_init_data){
1215 .name = "usb1_aux_clk_src",
1216 .parent_names = gcc_xo_gpll0_sleep_clk,
1218 .ops = &clk_rcg2_ops,
1222 static struct clk_rcg2 usb1_mock_utmi_clk_src = {
1223 .cmd_rcgr = 0x3f020,
1224 .freq_tbl = ftbl_usb_mock_utmi_clk_src,
1227 .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1228 .clkr.hw.init = &(struct clk_init_data){
1229 .name = "usb1_mock_utmi_clk_src",
1230 .parent_names = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1232 .ops = &clk_rcg2_ops,
1236 static struct clk_regmap_mux usb1_pipe_clk_src = {
1240 .parent_map = gcc_usb3phy_1_cc_pipe_clk_xo_map,
1242 .hw.init = &(struct clk_init_data){
1243 .name = "usb1_pipe_clk_src",
1244 .parent_names = gcc_usb3phy_1_cc_pipe_clk_xo,
1246 .ops = &clk_regmap_mux_closest_ops,
1247 .flags = CLK_SET_RATE_PARENT,
1252 static struct clk_branch gcc_xo_clk_src = {
1253 .halt_reg = 0x30018,
1255 .enable_reg = 0x30018,
1256 .enable_mask = BIT(1),
1257 .hw.init = &(struct clk_init_data){
1258 .name = "gcc_xo_clk_src",
1259 .parent_names = (const char *[]){
1263 .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
1264 .ops = &clk_branch2_ops,
1269 static struct clk_fixed_factor gcc_xo_div4_clk_src = {
1272 .hw.init = &(struct clk_init_data){
1273 .name = "gcc_xo_div4_clk_src",
1274 .parent_names = (const char *[]){
1278 .ops = &clk_fixed_factor_ops,
1279 .flags = CLK_SET_RATE_PARENT,
1283 static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src[] = {
1284 F(19200000, P_XO, 1, 0, 0),
1285 F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1286 F(100000000, P_GPLL0, 8, 0, 0),
1287 F(133333333, P_GPLL0, 6, 0, 0),
1288 F(160000000, P_GPLL0, 5, 0, 0),
1289 F(200000000, P_GPLL0, 4, 0, 0),
1290 F(266666667, P_GPLL0, 3, 0, 0),
1294 static struct clk_rcg2 system_noc_bfdcd_clk_src = {
1295 .cmd_rcgr = 0x26004,
1296 .freq_tbl = ftbl_system_noc_bfdcd_clk_src,
1298 .parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
1299 .clkr.hw.init = &(struct clk_init_data){
1300 .name = "system_noc_bfdcd_clk_src",
1301 .parent_names = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
1303 .ops = &clk_rcg2_ops,
1304 .flags = CLK_IS_CRITICAL,
1308 static struct clk_fixed_factor system_noc_clk_src = {
1311 .hw.init = &(struct clk_init_data){
1312 .name = "system_noc_clk_src",
1313 .parent_names = (const char *[]){
1314 "system_noc_bfdcd_clk_src"
1317 .ops = &clk_fixed_factor_ops,
1318 .flags = CLK_SET_RATE_PARENT,
1322 static const struct freq_tbl ftbl_nss_ce_clk_src[] = {
1323 F(19200000, P_XO, 1, 0, 0),
1324 F(200000000, P_GPLL0, 4, 0, 0),
1328 static struct clk_rcg2 nss_ce_clk_src = {
1329 .cmd_rcgr = 0x68098,
1330 .freq_tbl = ftbl_nss_ce_clk_src,
1332 .parent_map = gcc_xo_gpll0_map,
1333 .clkr.hw.init = &(struct clk_init_data){
1334 .name = "nss_ce_clk_src",
1335 .parent_data = gcc_xo_gpll0,
1337 .ops = &clk_rcg2_ops,
1341 static const struct freq_tbl ftbl_nss_noc_bfdcd_clk_src[] = {
1342 F(19200000, P_XO, 1, 0, 0),
1343 F(461500000, P_BIAS_PLL_NSS_NOC, 1, 0, 0),
1347 static struct clk_rcg2 nss_noc_bfdcd_clk_src = {
1348 .cmd_rcgr = 0x68088,
1349 .freq_tbl = ftbl_nss_noc_bfdcd_clk_src,
1351 .parent_map = gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2_map,
1352 .clkr.hw.init = &(struct clk_init_data){
1353 .name = "nss_noc_bfdcd_clk_src",
1354 .parent_names = gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2,
1356 .ops = &clk_rcg2_ops,
1360 static struct clk_fixed_factor nss_noc_clk_src = {
1363 .hw.init = &(struct clk_init_data){
1364 .name = "nss_noc_clk_src",
1365 .parent_names = (const char *[]){
1366 "nss_noc_bfdcd_clk_src"
1369 .ops = &clk_fixed_factor_ops,
1370 .flags = CLK_SET_RATE_PARENT,
1374 static const struct freq_tbl ftbl_nss_crypto_clk_src[] = {
1375 F(19200000, P_XO, 1, 0, 0),
1376 F(600000000, P_NSS_CRYPTO_PLL, 1, 0, 0),
1380 static struct clk_rcg2 nss_crypto_clk_src = {
1381 .cmd_rcgr = 0x68144,
1382 .freq_tbl = ftbl_nss_crypto_clk_src,
1385 .parent_map = gcc_xo_nss_crypto_pll_gpll0_map,
1386 .clkr.hw.init = &(struct clk_init_data){
1387 .name = "nss_crypto_clk_src",
1388 .parent_names = gcc_xo_nss_crypto_pll_gpll0,
1390 .ops = &clk_rcg2_ops,
1394 static const struct freq_tbl ftbl_nss_ubi_clk_src[] = {
1395 F(19200000, P_XO, 1, 0, 0),
1396 F(187200000, P_UBI32_PLL, 8, 0, 0),
1397 F(748800000, P_UBI32_PLL, 2, 0, 0),
1398 F(1497600000, P_UBI32_PLL, 1, 0, 0),
1399 F(1689600000, P_UBI32_PLL, 1, 0, 0),
1403 static struct clk_rcg2 nss_ubi0_clk_src = {
1404 .cmd_rcgr = 0x68104,
1405 .freq_tbl = ftbl_nss_ubi_clk_src,
1407 .parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,
1408 .clkr.hw.init = &(struct clk_init_data){
1409 .name = "nss_ubi0_clk_src",
1410 .parent_names = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
1412 .ops = &clk_rcg2_ops,
1413 .flags = CLK_SET_RATE_PARENT,
1417 static struct clk_regmap_div nss_ubi0_div_clk_src = {
1422 .hw.init = &(struct clk_init_data){
1423 .name = "nss_ubi0_div_clk_src",
1424 .parent_names = (const char *[]){
1428 .ops = &clk_regmap_div_ro_ops,
1429 .flags = CLK_SET_RATE_PARENT,
1434 static struct clk_rcg2 nss_ubi1_clk_src = {
1435 .cmd_rcgr = 0x68124,
1436 .freq_tbl = ftbl_nss_ubi_clk_src,
1438 .parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,
1439 .clkr.hw.init = &(struct clk_init_data){
1440 .name = "nss_ubi1_clk_src",
1441 .parent_names = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
1443 .ops = &clk_rcg2_ops,
1444 .flags = CLK_SET_RATE_PARENT,
1448 static struct clk_regmap_div nss_ubi1_div_clk_src = {
1453 .hw.init = &(struct clk_init_data){
1454 .name = "nss_ubi1_div_clk_src",
1455 .parent_names = (const char *[]){
1459 .ops = &clk_regmap_div_ro_ops,
1460 .flags = CLK_SET_RATE_PARENT,
1465 static const struct freq_tbl ftbl_ubi_mpt_clk_src[] = {
1466 F(19200000, P_XO, 1, 0, 0),
1467 F(25000000, P_GPLL0_DIV2, 16, 0, 0),
1471 static struct clk_rcg2 ubi_mpt_clk_src = {
1472 .cmd_rcgr = 0x68090,
1473 .freq_tbl = ftbl_ubi_mpt_clk_src,
1475 .parent_map = gcc_xo_gpll0_out_main_div2_map,
1476 .clkr.hw.init = &(struct clk_init_data){
1477 .name = "ubi_mpt_clk_src",
1478 .parent_names = gcc_xo_gpll0_out_main_div2,
1480 .ops = &clk_rcg2_ops,
1484 static const struct freq_tbl ftbl_nss_imem_clk_src[] = {
1485 F(19200000, P_XO, 1, 0, 0),
1486 F(400000000, P_GPLL0, 2, 0, 0),
1490 static struct clk_rcg2 nss_imem_clk_src = {
1491 .cmd_rcgr = 0x68158,
1492 .freq_tbl = ftbl_nss_imem_clk_src,
1494 .parent_map = gcc_xo_gpll0_gpll4_map,
1495 .clkr.hw.init = &(struct clk_init_data){
1496 .name = "nss_imem_clk_src",
1497 .parent_names = gcc_xo_gpll0_gpll4,
1499 .ops = &clk_rcg2_ops,
1503 static const struct freq_tbl ftbl_nss_ppe_clk_src[] = {
1504 F(19200000, P_XO, 1, 0, 0),
1505 F(300000000, P_BIAS_PLL, 1, 0, 0),
1509 static struct clk_rcg2 nss_ppe_clk_src = {
1510 .cmd_rcgr = 0x68080,
1511 .freq_tbl = ftbl_nss_ppe_clk_src,
1513 .parent_map = gcc_xo_bias_gpll0_gpll4_nss_ubi32_map,
1514 .clkr.hw.init = &(struct clk_init_data){
1515 .name = "nss_ppe_clk_src",
1516 .parent_names = gcc_xo_bias_gpll0_gpll4_nss_ubi32,
1518 .ops = &clk_rcg2_ops,
1522 static struct clk_fixed_factor nss_ppe_cdiv_clk_src = {
1525 .hw.init = &(struct clk_init_data){
1526 .name = "nss_ppe_cdiv_clk_src",
1527 .parent_names = (const char *[]){
1531 .ops = &clk_fixed_factor_ops,
1532 .flags = CLK_SET_RATE_PARENT,
1536 static const struct freq_tbl ftbl_nss_port1_rx_clk_src[] = {
1537 F(19200000, P_XO, 1, 0, 0),
1538 F(25000000, P_UNIPHY0_RX, 5, 0, 0),
1539 F(125000000, P_UNIPHY0_RX, 1, 0, 0),
1543 static struct clk_rcg2 nss_port1_rx_clk_src = {
1544 .cmd_rcgr = 0x68020,
1545 .freq_tbl = ftbl_nss_port1_rx_clk_src,
1547 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
1548 .clkr.hw.init = &(struct clk_init_data){
1549 .name = "nss_port1_rx_clk_src",
1550 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
1552 .ops = &clk_rcg2_ops,
1556 static struct clk_regmap_div nss_port1_rx_div_clk_src = {
1561 .hw.init = &(struct clk_init_data){
1562 .name = "nss_port1_rx_div_clk_src",
1563 .parent_names = (const char *[]){
1564 "nss_port1_rx_clk_src"
1567 .ops = &clk_regmap_div_ops,
1568 .flags = CLK_SET_RATE_PARENT,
1573 static const struct freq_tbl ftbl_nss_port1_tx_clk_src[] = {
1574 F(19200000, P_XO, 1, 0, 0),
1575 F(25000000, P_UNIPHY0_TX, 5, 0, 0),
1576 F(125000000, P_UNIPHY0_TX, 1, 0, 0),
1580 static struct clk_rcg2 nss_port1_tx_clk_src = {
1581 .cmd_rcgr = 0x68028,
1582 .freq_tbl = ftbl_nss_port1_tx_clk_src,
1584 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
1585 .clkr.hw.init = &(struct clk_init_data){
1586 .name = "nss_port1_tx_clk_src",
1587 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
1589 .ops = &clk_rcg2_ops,
1593 static struct clk_regmap_div nss_port1_tx_div_clk_src = {
1598 .hw.init = &(struct clk_init_data){
1599 .name = "nss_port1_tx_div_clk_src",
1600 .parent_names = (const char *[]){
1601 "nss_port1_tx_clk_src"
1604 .ops = &clk_regmap_div_ops,
1605 .flags = CLK_SET_RATE_PARENT,
1610 static struct clk_rcg2 nss_port2_rx_clk_src = {
1611 .cmd_rcgr = 0x68030,
1612 .freq_tbl = ftbl_nss_port1_rx_clk_src,
1614 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
1615 .clkr.hw.init = &(struct clk_init_data){
1616 .name = "nss_port2_rx_clk_src",
1617 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
1619 .ops = &clk_rcg2_ops,
1623 static struct clk_regmap_div nss_port2_rx_div_clk_src = {
1628 .hw.init = &(struct clk_init_data){
1629 .name = "nss_port2_rx_div_clk_src",
1630 .parent_names = (const char *[]){
1631 "nss_port2_rx_clk_src"
1634 .ops = &clk_regmap_div_ops,
1635 .flags = CLK_SET_RATE_PARENT,
1640 static struct clk_rcg2 nss_port2_tx_clk_src = {
1641 .cmd_rcgr = 0x68038,
1642 .freq_tbl = ftbl_nss_port1_tx_clk_src,
1644 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
1645 .clkr.hw.init = &(struct clk_init_data){
1646 .name = "nss_port2_tx_clk_src",
1647 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
1649 .ops = &clk_rcg2_ops,
1653 static struct clk_regmap_div nss_port2_tx_div_clk_src = {
1658 .hw.init = &(struct clk_init_data){
1659 .name = "nss_port2_tx_div_clk_src",
1660 .parent_names = (const char *[]){
1661 "nss_port2_tx_clk_src"
1664 .ops = &clk_regmap_div_ops,
1665 .flags = CLK_SET_RATE_PARENT,
1670 static struct clk_rcg2 nss_port3_rx_clk_src = {
1671 .cmd_rcgr = 0x68040,
1672 .freq_tbl = ftbl_nss_port1_rx_clk_src,
1674 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
1675 .clkr.hw.init = &(struct clk_init_data){
1676 .name = "nss_port3_rx_clk_src",
1677 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
1679 .ops = &clk_rcg2_ops,
1683 static struct clk_regmap_div nss_port3_rx_div_clk_src = {
1688 .hw.init = &(struct clk_init_data){
1689 .name = "nss_port3_rx_div_clk_src",
1690 .parent_names = (const char *[]){
1691 "nss_port3_rx_clk_src"
1694 .ops = &clk_regmap_div_ops,
1695 .flags = CLK_SET_RATE_PARENT,
1700 static struct clk_rcg2 nss_port3_tx_clk_src = {
1701 .cmd_rcgr = 0x68048,
1702 .freq_tbl = ftbl_nss_port1_tx_clk_src,
1704 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
1705 .clkr.hw.init = &(struct clk_init_data){
1706 .name = "nss_port3_tx_clk_src",
1707 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
1709 .ops = &clk_rcg2_ops,
1713 static struct clk_regmap_div nss_port3_tx_div_clk_src = {
1718 .hw.init = &(struct clk_init_data){
1719 .name = "nss_port3_tx_div_clk_src",
1720 .parent_names = (const char *[]){
1721 "nss_port3_tx_clk_src"
1724 .ops = &clk_regmap_div_ops,
1725 .flags = CLK_SET_RATE_PARENT,
1730 static struct clk_rcg2 nss_port4_rx_clk_src = {
1731 .cmd_rcgr = 0x68050,
1732 .freq_tbl = ftbl_nss_port1_rx_clk_src,
1734 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
1735 .clkr.hw.init = &(struct clk_init_data){
1736 .name = "nss_port4_rx_clk_src",
1737 .parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
1739 .ops = &clk_rcg2_ops,
1743 static struct clk_regmap_div nss_port4_rx_div_clk_src = {
1748 .hw.init = &(struct clk_init_data){
1749 .name = "nss_port4_rx_div_clk_src",
1750 .parent_names = (const char *[]){
1751 "nss_port4_rx_clk_src"
1754 .ops = &clk_regmap_div_ops,
1755 .flags = CLK_SET_RATE_PARENT,
1760 static struct clk_rcg2 nss_port4_tx_clk_src = {
1761 .cmd_rcgr = 0x68058,
1762 .freq_tbl = ftbl_nss_port1_tx_clk_src,
1764 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
1765 .clkr.hw.init = &(struct clk_init_data){
1766 .name = "nss_port4_tx_clk_src",
1767 .parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
1769 .ops = &clk_rcg2_ops,
1773 static struct clk_regmap_div nss_port4_tx_div_clk_src = {
1778 .hw.init = &(struct clk_init_data){
1779 .name = "nss_port4_tx_div_clk_src",
1780 .parent_names = (const char *[]){
1781 "nss_port4_tx_clk_src"
1784 .ops = &clk_regmap_div_ops,
1785 .flags = CLK_SET_RATE_PARENT,
1790 static const struct freq_tbl ftbl_nss_port5_rx_clk_src[] = {
1791 F(19200000, P_XO, 1, 0, 0),
1792 F(25000000, P_UNIPHY1_RX, 12.5, 0, 0),
1793 F(25000000, P_UNIPHY0_RX, 5, 0, 0),
1794 F(78125000, P_UNIPHY1_RX, 4, 0, 0),
1795 F(125000000, P_UNIPHY1_RX, 2.5, 0, 0),
1796 F(125000000, P_UNIPHY0_RX, 1, 0, 0),
1797 F(156250000, P_UNIPHY1_RX, 2, 0, 0),
1798 F(312500000, P_UNIPHY1_RX, 1, 0, 0),
1802 static struct clk_rcg2 nss_port5_rx_clk_src = {
1803 .cmd_rcgr = 0x68060,
1804 .freq_tbl = ftbl_nss_port5_rx_clk_src,
1806 .parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map,
1807 .clkr.hw.init = &(struct clk_init_data){
1808 .name = "nss_port5_rx_clk_src",
1809 .parent_names = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias,
1811 .ops = &clk_rcg2_ops,
1815 static struct clk_regmap_div nss_port5_rx_div_clk_src = {
1820 .hw.init = &(struct clk_init_data){
1821 .name = "nss_port5_rx_div_clk_src",
1822 .parent_names = (const char *[]){
1823 "nss_port5_rx_clk_src"
1826 .ops = &clk_regmap_div_ops,
1827 .flags = CLK_SET_RATE_PARENT,
1832 static const struct freq_tbl ftbl_nss_port5_tx_clk_src[] = {
1833 F(19200000, P_XO, 1, 0, 0),
1834 F(25000000, P_UNIPHY1_TX, 12.5, 0, 0),
1835 F(25000000, P_UNIPHY0_TX, 5, 0, 0),
1836 F(78125000, P_UNIPHY1_TX, 4, 0, 0),
1837 F(125000000, P_UNIPHY1_TX, 2.5, 0, 0),
1838 F(125000000, P_UNIPHY0_TX, 1, 0, 0),
1839 F(156250000, P_UNIPHY1_TX, 2, 0, 0),
1840 F(312500000, P_UNIPHY1_TX, 1, 0, 0),
1844 static struct clk_rcg2 nss_port5_tx_clk_src = {
1845 .cmd_rcgr = 0x68068,
1846 .freq_tbl = ftbl_nss_port5_tx_clk_src,
1848 .parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map,
1849 .clkr.hw.init = &(struct clk_init_data){
1850 .name = "nss_port5_tx_clk_src",
1851 .parent_names = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias,
1853 .ops = &clk_rcg2_ops,
1857 static struct clk_regmap_div nss_port5_tx_div_clk_src = {
1862 .hw.init = &(struct clk_init_data){
1863 .name = "nss_port5_tx_div_clk_src",
1864 .parent_names = (const char *[]){
1865 "nss_port5_tx_clk_src"
1868 .ops = &clk_regmap_div_ops,
1869 .flags = CLK_SET_RATE_PARENT,
1874 static const struct freq_tbl ftbl_nss_port6_rx_clk_src[] = {
1875 F(19200000, P_XO, 1, 0, 0),
1876 F(25000000, P_UNIPHY2_RX, 5, 0, 0),
1877 F(25000000, P_UNIPHY2_RX, 12.5, 0, 0),
1878 F(78125000, P_UNIPHY2_RX, 4, 0, 0),
1879 F(125000000, P_UNIPHY2_RX, 1, 0, 0),
1880 F(125000000, P_UNIPHY2_RX, 2.5, 0, 0),
1881 F(156250000, P_UNIPHY2_RX, 2, 0, 0),
1882 F(312500000, P_UNIPHY2_RX, 1, 0, 0),
1886 static struct clk_rcg2 nss_port6_rx_clk_src = {
1887 .cmd_rcgr = 0x68070,
1888 .freq_tbl = ftbl_nss_port6_rx_clk_src,
1890 .parent_map = gcc_xo_uniphy2_rx_tx_ubi32_bias_map,
1891 .clkr.hw.init = &(struct clk_init_data){
1892 .name = "nss_port6_rx_clk_src",
1893 .parent_names = gcc_xo_uniphy2_rx_tx_ubi32_bias,
1895 .ops = &clk_rcg2_ops,
1899 static struct clk_regmap_div nss_port6_rx_div_clk_src = {
1904 .hw.init = &(struct clk_init_data){
1905 .name = "nss_port6_rx_div_clk_src",
1906 .parent_names = (const char *[]){
1907 "nss_port6_rx_clk_src"
1910 .ops = &clk_regmap_div_ops,
1911 .flags = CLK_SET_RATE_PARENT,
1916 static const struct freq_tbl ftbl_nss_port6_tx_clk_src[] = {
1917 F(19200000, P_XO, 1, 0, 0),
1918 F(25000000, P_UNIPHY2_TX, 5, 0, 0),
1919 F(25000000, P_UNIPHY2_TX, 12.5, 0, 0),
1920 F(78125000, P_UNIPHY2_TX, 4, 0, 0),
1921 F(125000000, P_UNIPHY2_TX, 1, 0, 0),
1922 F(125000000, P_UNIPHY2_TX, 2.5, 0, 0),
1923 F(156250000, P_UNIPHY2_TX, 2, 0, 0),
1924 F(312500000, P_UNIPHY2_TX, 1, 0, 0),
1928 static struct clk_rcg2 nss_port6_tx_clk_src = {
1929 .cmd_rcgr = 0x68078,
1930 .freq_tbl = ftbl_nss_port6_tx_clk_src,
1932 .parent_map = gcc_xo_uniphy2_tx_rx_ubi32_bias_map,
1933 .clkr.hw.init = &(struct clk_init_data){
1934 .name = "nss_port6_tx_clk_src",
1935 .parent_names = gcc_xo_uniphy2_tx_rx_ubi32_bias,
1937 .ops = &clk_rcg2_ops,
1941 static struct clk_regmap_div nss_port6_tx_div_clk_src = {
1946 .hw.init = &(struct clk_init_data){
1947 .name = "nss_port6_tx_div_clk_src",
1948 .parent_names = (const char *[]){
1949 "nss_port6_tx_clk_src"
1952 .ops = &clk_regmap_div_ops,
1953 .flags = CLK_SET_RATE_PARENT,
1958 static struct freq_tbl ftbl_crypto_clk_src[] = {
1959 F(40000000, P_GPLL0_DIV2, 10, 0, 0),
1960 F(80000000, P_GPLL0, 10, 0, 0),
1961 F(100000000, P_GPLL0, 8, 0, 0),
1962 F(160000000, P_GPLL0, 5, 0, 0),
1966 static struct clk_rcg2 crypto_clk_src = {
1967 .cmd_rcgr = 0x16004,
1968 .freq_tbl = ftbl_crypto_clk_src,
1970 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1971 .clkr.hw.init = &(struct clk_init_data){
1972 .name = "crypto_clk_src",
1973 .parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
1975 .ops = &clk_rcg2_ops,
1979 static struct freq_tbl ftbl_gp_clk_src[] = {
1980 F(19200000, P_XO, 1, 0, 0),
1984 static struct clk_rcg2 gp1_clk_src = {
1985 .cmd_rcgr = 0x08004,
1986 .freq_tbl = ftbl_gp_clk_src,
1989 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1990 .clkr.hw.init = &(struct clk_init_data){
1991 .name = "gp1_clk_src",
1992 .parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1994 .ops = &clk_rcg2_ops,
1998 static struct clk_rcg2 gp2_clk_src = {
1999 .cmd_rcgr = 0x09004,
2000 .freq_tbl = ftbl_gp_clk_src,
2003 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
2004 .clkr.hw.init = &(struct clk_init_data){
2005 .name = "gp2_clk_src",
2006 .parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
2008 .ops = &clk_rcg2_ops,
2012 static struct clk_rcg2 gp3_clk_src = {
2013 .cmd_rcgr = 0x0a004,
2014 .freq_tbl = ftbl_gp_clk_src,
2017 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
2018 .clkr.hw.init = &(struct clk_init_data){
2019 .name = "gp3_clk_src",
2020 .parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
2022 .ops = &clk_rcg2_ops,
2026 static struct clk_branch gcc_blsp1_ahb_clk = {
2027 .halt_reg = 0x01008,
2029 .enable_reg = 0x01008,
2030 .enable_mask = BIT(0),
2031 .hw.init = &(struct clk_init_data){
2032 .name = "gcc_blsp1_ahb_clk",
2033 .parent_names = (const char *[]){
2037 .flags = CLK_SET_RATE_PARENT,
2038 .ops = &clk_branch2_ops,
2043 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
2044 .halt_reg = 0x02008,
2046 .enable_reg = 0x02008,
2047 .enable_mask = BIT(0),
2048 .hw.init = &(struct clk_init_data){
2049 .name = "gcc_blsp1_qup1_i2c_apps_clk",
2050 .parent_names = (const char *[]){
2051 "blsp1_qup1_i2c_apps_clk_src"
2054 .flags = CLK_SET_RATE_PARENT,
2055 .ops = &clk_branch2_ops,
2060 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
2061 .halt_reg = 0x02004,
2063 .enable_reg = 0x02004,
2064 .enable_mask = BIT(0),
2065 .hw.init = &(struct clk_init_data){
2066 .name = "gcc_blsp1_qup1_spi_apps_clk",
2067 .parent_names = (const char *[]){
2068 "blsp1_qup1_spi_apps_clk_src"
2071 .flags = CLK_SET_RATE_PARENT,
2072 .ops = &clk_branch2_ops,
2077 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
2078 .halt_reg = 0x03010,
2080 .enable_reg = 0x03010,
2081 .enable_mask = BIT(0),
2082 .hw.init = &(struct clk_init_data){
2083 .name = "gcc_blsp1_qup2_i2c_apps_clk",
2084 .parent_names = (const char *[]){
2085 "blsp1_qup2_i2c_apps_clk_src"
2088 .flags = CLK_SET_RATE_PARENT,
2089 .ops = &clk_branch2_ops,
2094 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
2095 .halt_reg = 0x0300c,
2097 .enable_reg = 0x0300c,
2098 .enable_mask = BIT(0),
2099 .hw.init = &(struct clk_init_data){
2100 .name = "gcc_blsp1_qup2_spi_apps_clk",
2101 .parent_names = (const char *[]){
2102 "blsp1_qup2_spi_apps_clk_src"
2105 .flags = CLK_SET_RATE_PARENT,
2106 .ops = &clk_branch2_ops,
2111 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
2112 .halt_reg = 0x04010,
2114 .enable_reg = 0x04010,
2115 .enable_mask = BIT(0),
2116 .hw.init = &(struct clk_init_data){
2117 .name = "gcc_blsp1_qup3_i2c_apps_clk",
2118 .parent_names = (const char *[]){
2119 "blsp1_qup3_i2c_apps_clk_src"
2122 .flags = CLK_SET_RATE_PARENT,
2123 .ops = &clk_branch2_ops,
2128 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
2129 .halt_reg = 0x0400c,
2131 .enable_reg = 0x0400c,
2132 .enable_mask = BIT(0),
2133 .hw.init = &(struct clk_init_data){
2134 .name = "gcc_blsp1_qup3_spi_apps_clk",
2135 .parent_names = (const char *[]){
2136 "blsp1_qup3_spi_apps_clk_src"
2139 .flags = CLK_SET_RATE_PARENT,
2140 .ops = &clk_branch2_ops,
2145 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
2146 .halt_reg = 0x05010,
2148 .enable_reg = 0x05010,
2149 .enable_mask = BIT(0),
2150 .hw.init = &(struct clk_init_data){
2151 .name = "gcc_blsp1_qup4_i2c_apps_clk",
2152 .parent_names = (const char *[]){
2153 "blsp1_qup4_i2c_apps_clk_src"
2156 .flags = CLK_SET_RATE_PARENT,
2157 .ops = &clk_branch2_ops,
2162 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
2163 .halt_reg = 0x0500c,
2165 .enable_reg = 0x0500c,
2166 .enable_mask = BIT(0),
2167 .hw.init = &(struct clk_init_data){
2168 .name = "gcc_blsp1_qup4_spi_apps_clk",
2169 .parent_names = (const char *[]){
2170 "blsp1_qup4_spi_apps_clk_src"
2173 .flags = CLK_SET_RATE_PARENT,
2174 .ops = &clk_branch2_ops,
2179 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
2180 .halt_reg = 0x06010,
2182 .enable_reg = 0x06010,
2183 .enable_mask = BIT(0),
2184 .hw.init = &(struct clk_init_data){
2185 .name = "gcc_blsp1_qup5_i2c_apps_clk",
2186 .parent_names = (const char *[]){
2187 "blsp1_qup5_i2c_apps_clk_src"
2190 .flags = CLK_SET_RATE_PARENT,
2191 .ops = &clk_branch2_ops,
2196 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
2197 .halt_reg = 0x0600c,
2199 .enable_reg = 0x0600c,
2200 .enable_mask = BIT(0),
2201 .hw.init = &(struct clk_init_data){
2202 .name = "gcc_blsp1_qup5_spi_apps_clk",
2203 .parent_names = (const char *[]){
2204 "blsp1_qup5_spi_apps_clk_src"
2207 .flags = CLK_SET_RATE_PARENT,
2208 .ops = &clk_branch2_ops,
2213 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
2214 .halt_reg = 0x07010,
2216 .enable_reg = 0x07010,
2217 .enable_mask = BIT(0),
2218 .hw.init = &(struct clk_init_data){
2219 .name = "gcc_blsp1_qup6_i2c_apps_clk",
2220 .parent_names = (const char *[]){
2221 "blsp1_qup6_i2c_apps_clk_src"
2224 .flags = CLK_SET_RATE_PARENT,
2225 .ops = &clk_branch2_ops,
2230 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
2231 .halt_reg = 0x0700c,
2233 .enable_reg = 0x0700c,
2234 .enable_mask = BIT(0),
2235 .hw.init = &(struct clk_init_data){
2236 .name = "gcc_blsp1_qup6_spi_apps_clk",
2237 .parent_names = (const char *[]){
2238 "blsp1_qup6_spi_apps_clk_src"
2241 .flags = CLK_SET_RATE_PARENT,
2242 .ops = &clk_branch2_ops,
2247 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
2248 .halt_reg = 0x0203c,
2250 .enable_reg = 0x0203c,
2251 .enable_mask = BIT(0),
2252 .hw.init = &(struct clk_init_data){
2253 .name = "gcc_blsp1_uart1_apps_clk",
2254 .parent_names = (const char *[]){
2255 "blsp1_uart1_apps_clk_src"
2258 .flags = CLK_SET_RATE_PARENT,
2259 .ops = &clk_branch2_ops,
2264 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
2265 .halt_reg = 0x0302c,
2267 .enable_reg = 0x0302c,
2268 .enable_mask = BIT(0),
2269 .hw.init = &(struct clk_init_data){
2270 .name = "gcc_blsp1_uart2_apps_clk",
2271 .parent_names = (const char *[]){
2272 "blsp1_uart2_apps_clk_src"
2275 .flags = CLK_SET_RATE_PARENT,
2276 .ops = &clk_branch2_ops,
2281 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
2282 .halt_reg = 0x0402c,
2284 .enable_reg = 0x0402c,
2285 .enable_mask = BIT(0),
2286 .hw.init = &(struct clk_init_data){
2287 .name = "gcc_blsp1_uart3_apps_clk",
2288 .parent_names = (const char *[]){
2289 "blsp1_uart3_apps_clk_src"
2292 .flags = CLK_SET_RATE_PARENT,
2293 .ops = &clk_branch2_ops,
2298 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
2299 .halt_reg = 0x0502c,
2301 .enable_reg = 0x0502c,
2302 .enable_mask = BIT(0),
2303 .hw.init = &(struct clk_init_data){
2304 .name = "gcc_blsp1_uart4_apps_clk",
2305 .parent_names = (const char *[]){
2306 "blsp1_uart4_apps_clk_src"
2309 .flags = CLK_SET_RATE_PARENT,
2310 .ops = &clk_branch2_ops,
2315 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
2316 .halt_reg = 0x0602c,
2318 .enable_reg = 0x0602c,
2319 .enable_mask = BIT(0),
2320 .hw.init = &(struct clk_init_data){
2321 .name = "gcc_blsp1_uart5_apps_clk",
2322 .parent_names = (const char *[]){
2323 "blsp1_uart5_apps_clk_src"
2326 .flags = CLK_SET_RATE_PARENT,
2327 .ops = &clk_branch2_ops,
2332 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
2333 .halt_reg = 0x0702c,
2335 .enable_reg = 0x0702c,
2336 .enable_mask = BIT(0),
2337 .hw.init = &(struct clk_init_data){
2338 .name = "gcc_blsp1_uart6_apps_clk",
2339 .parent_names = (const char *[]){
2340 "blsp1_uart6_apps_clk_src"
2343 .flags = CLK_SET_RATE_PARENT,
2344 .ops = &clk_branch2_ops,
2349 static struct clk_branch gcc_prng_ahb_clk = {
2350 .halt_reg = 0x13004,
2351 .halt_check = BRANCH_HALT_VOTED,
2353 .enable_reg = 0x0b004,
2354 .enable_mask = BIT(8),
2355 .hw.init = &(struct clk_init_data){
2356 .name = "gcc_prng_ahb_clk",
2357 .parent_names = (const char *[]){
2361 .flags = CLK_SET_RATE_PARENT,
2362 .ops = &clk_branch2_ops,
2367 static struct clk_branch gcc_qpic_ahb_clk = {
2368 .halt_reg = 0x57024,
2370 .enable_reg = 0x57024,
2371 .enable_mask = BIT(0),
2372 .hw.init = &(struct clk_init_data){
2373 .name = "gcc_qpic_ahb_clk",
2374 .parent_names = (const char *[]){
2378 .flags = CLK_SET_RATE_PARENT,
2379 .ops = &clk_branch2_ops,
2384 static struct clk_branch gcc_qpic_clk = {
2385 .halt_reg = 0x57020,
2387 .enable_reg = 0x57020,
2388 .enable_mask = BIT(0),
2389 .hw.init = &(struct clk_init_data){
2390 .name = "gcc_qpic_clk",
2391 .parent_names = (const char *[]){
2395 .flags = CLK_SET_RATE_PARENT,
2396 .ops = &clk_branch2_ops,
2401 static struct clk_branch gcc_pcie0_ahb_clk = {
2402 .halt_reg = 0x75010,
2404 .enable_reg = 0x75010,
2405 .enable_mask = BIT(0),
2406 .hw.init = &(struct clk_init_data){
2407 .name = "gcc_pcie0_ahb_clk",
2408 .parent_names = (const char *[]){
2412 .flags = CLK_SET_RATE_PARENT,
2413 .ops = &clk_branch2_ops,
2418 static struct clk_branch gcc_pcie0_aux_clk = {
2419 .halt_reg = 0x75014,
2421 .enable_reg = 0x75014,
2422 .enable_mask = BIT(0),
2423 .hw.init = &(struct clk_init_data){
2424 .name = "gcc_pcie0_aux_clk",
2425 .parent_names = (const char *[]){
2429 .flags = CLK_SET_RATE_PARENT,
2430 .ops = &clk_branch2_ops,
2435 static struct clk_branch gcc_pcie0_axi_m_clk = {
2436 .halt_reg = 0x75008,
2438 .enable_reg = 0x75008,
2439 .enable_mask = BIT(0),
2440 .hw.init = &(struct clk_init_data){
2441 .name = "gcc_pcie0_axi_m_clk",
2442 .parent_names = (const char *[]){
2446 .flags = CLK_SET_RATE_PARENT,
2447 .ops = &clk_branch2_ops,
2452 static struct clk_branch gcc_pcie0_axi_s_clk = {
2453 .halt_reg = 0x7500c,
2455 .enable_reg = 0x7500c,
2456 .enable_mask = BIT(0),
2457 .hw.init = &(struct clk_init_data){
2458 .name = "gcc_pcie0_axi_s_clk",
2459 .parent_names = (const char *[]){
2463 .flags = CLK_SET_RATE_PARENT,
2464 .ops = &clk_branch2_ops,
2469 static struct clk_branch gcc_pcie0_pipe_clk = {
2470 .halt_reg = 0x75018,
2471 .halt_check = BRANCH_HALT_DELAY,
2473 .enable_reg = 0x75018,
2474 .enable_mask = BIT(0),
2475 .hw.init = &(struct clk_init_data){
2476 .name = "gcc_pcie0_pipe_clk",
2477 .parent_names = (const char *[]){
2478 "pcie0_pipe_clk_src"
2481 .flags = CLK_SET_RATE_PARENT,
2482 .ops = &clk_branch2_ops,
2487 static struct clk_branch gcc_sys_noc_pcie0_axi_clk = {
2488 .halt_reg = 0x26048,
2490 .enable_reg = 0x26048,
2491 .enable_mask = BIT(0),
2492 .hw.init = &(struct clk_init_data){
2493 .name = "gcc_sys_noc_pcie0_axi_clk",
2494 .parent_names = (const char *[]){
2498 .flags = CLK_SET_RATE_PARENT,
2499 .ops = &clk_branch2_ops,
2504 static struct clk_branch gcc_pcie1_ahb_clk = {
2505 .halt_reg = 0x76010,
2507 .enable_reg = 0x76010,
2508 .enable_mask = BIT(0),
2509 .hw.init = &(struct clk_init_data){
2510 .name = "gcc_pcie1_ahb_clk",
2511 .parent_names = (const char *[]){
2515 .flags = CLK_SET_RATE_PARENT,
2516 .ops = &clk_branch2_ops,
2521 static struct clk_branch gcc_pcie1_aux_clk = {
2522 .halt_reg = 0x76014,
2524 .enable_reg = 0x76014,
2525 .enable_mask = BIT(0),
2526 .hw.init = &(struct clk_init_data){
2527 .name = "gcc_pcie1_aux_clk",
2528 .parent_names = (const char *[]){
2532 .flags = CLK_SET_RATE_PARENT,
2533 .ops = &clk_branch2_ops,
2538 static struct clk_branch gcc_pcie1_axi_m_clk = {
2539 .halt_reg = 0x76008,
2541 .enable_reg = 0x76008,
2542 .enable_mask = BIT(0),
2543 .hw.init = &(struct clk_init_data){
2544 .name = "gcc_pcie1_axi_m_clk",
2545 .parent_names = (const char *[]){
2549 .flags = CLK_SET_RATE_PARENT,
2550 .ops = &clk_branch2_ops,
2555 static struct clk_branch gcc_pcie1_axi_s_clk = {
2556 .halt_reg = 0x7600c,
2558 .enable_reg = 0x7600c,
2559 .enable_mask = BIT(0),
2560 .hw.init = &(struct clk_init_data){
2561 .name = "gcc_pcie1_axi_s_clk",
2562 .parent_names = (const char *[]){
2566 .flags = CLK_SET_RATE_PARENT,
2567 .ops = &clk_branch2_ops,
2572 static struct clk_branch gcc_pcie1_pipe_clk = {
2573 .halt_reg = 0x76018,
2574 .halt_check = BRANCH_HALT_DELAY,
2576 .enable_reg = 0x76018,
2577 .enable_mask = BIT(0),
2578 .hw.init = &(struct clk_init_data){
2579 .name = "gcc_pcie1_pipe_clk",
2580 .parent_names = (const char *[]){
2581 "pcie1_pipe_clk_src"
2584 .flags = CLK_SET_RATE_PARENT,
2585 .ops = &clk_branch2_ops,
2590 static struct clk_branch gcc_sys_noc_pcie1_axi_clk = {
2591 .halt_reg = 0x2604c,
2593 .enable_reg = 0x2604c,
2594 .enable_mask = BIT(0),
2595 .hw.init = &(struct clk_init_data){
2596 .name = "gcc_sys_noc_pcie1_axi_clk",
2597 .parent_names = (const char *[]){
2601 .flags = CLK_SET_RATE_PARENT,
2602 .ops = &clk_branch2_ops,
2607 static struct clk_branch gcc_usb0_aux_clk = {
2608 .halt_reg = 0x3e044,
2610 .enable_reg = 0x3e044,
2611 .enable_mask = BIT(0),
2612 .hw.init = &(struct clk_init_data){
2613 .name = "gcc_usb0_aux_clk",
2614 .parent_names = (const char *[]){
2618 .flags = CLK_SET_RATE_PARENT,
2619 .ops = &clk_branch2_ops,
2624 static struct clk_branch gcc_sys_noc_usb0_axi_clk = {
2625 .halt_reg = 0x26040,
2627 .enable_reg = 0x26040,
2628 .enable_mask = BIT(0),
2629 .hw.init = &(struct clk_init_data){
2630 .name = "gcc_sys_noc_usb0_axi_clk",
2631 .parent_names = (const char *[]){
2632 "usb0_master_clk_src"
2635 .flags = CLK_SET_RATE_PARENT,
2636 .ops = &clk_branch2_ops,
2641 static struct clk_branch gcc_usb0_master_clk = {
2642 .halt_reg = 0x3e000,
2644 .enable_reg = 0x3e000,
2645 .enable_mask = BIT(0),
2646 .hw.init = &(struct clk_init_data){
2647 .name = "gcc_usb0_master_clk",
2648 .parent_names = (const char *[]){
2649 "usb0_master_clk_src"
2652 .flags = CLK_SET_RATE_PARENT,
2653 .ops = &clk_branch2_ops,
2658 static struct clk_branch gcc_usb0_mock_utmi_clk = {
2659 .halt_reg = 0x3e008,
2661 .enable_reg = 0x3e008,
2662 .enable_mask = BIT(0),
2663 .hw.init = &(struct clk_init_data){
2664 .name = "gcc_usb0_mock_utmi_clk",
2665 .parent_names = (const char *[]){
2666 "usb0_mock_utmi_clk_src"
2669 .flags = CLK_SET_RATE_PARENT,
2670 .ops = &clk_branch2_ops,
2675 static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {
2676 .halt_reg = 0x3e080,
2678 .enable_reg = 0x3e080,
2679 .enable_mask = BIT(0),
2680 .hw.init = &(struct clk_init_data){
2681 .name = "gcc_usb0_phy_cfg_ahb_clk",
2682 .parent_names = (const char *[]){
2686 .flags = CLK_SET_RATE_PARENT,
2687 .ops = &clk_branch2_ops,
2692 static struct clk_branch gcc_usb0_pipe_clk = {
2693 .halt_reg = 0x3e040,
2694 .halt_check = BRANCH_HALT_DELAY,
2696 .enable_reg = 0x3e040,
2697 .enable_mask = BIT(0),
2698 .hw.init = &(struct clk_init_data){
2699 .name = "gcc_usb0_pipe_clk",
2700 .parent_names = (const char *[]){
2704 .flags = CLK_SET_RATE_PARENT,
2705 .ops = &clk_branch2_ops,
2710 static struct clk_branch gcc_usb0_sleep_clk = {
2711 .halt_reg = 0x3e004,
2713 .enable_reg = 0x3e004,
2714 .enable_mask = BIT(0),
2715 .hw.init = &(struct clk_init_data){
2716 .name = "gcc_usb0_sleep_clk",
2717 .parent_names = (const char *[]){
2721 .flags = CLK_SET_RATE_PARENT,
2722 .ops = &clk_branch2_ops,
2727 static struct clk_branch gcc_usb1_aux_clk = {
2728 .halt_reg = 0x3f044,
2730 .enable_reg = 0x3f044,
2731 .enable_mask = BIT(0),
2732 .hw.init = &(struct clk_init_data){
2733 .name = "gcc_usb1_aux_clk",
2734 .parent_names = (const char *[]){
2738 .flags = CLK_SET_RATE_PARENT,
2739 .ops = &clk_branch2_ops,
2744 static struct clk_branch gcc_sys_noc_usb1_axi_clk = {
2745 .halt_reg = 0x26044,
2747 .enable_reg = 0x26044,
2748 .enable_mask = BIT(0),
2749 .hw.init = &(struct clk_init_data){
2750 .name = "gcc_sys_noc_usb1_axi_clk",
2751 .parent_names = (const char *[]){
2752 "usb1_master_clk_src"
2755 .flags = CLK_SET_RATE_PARENT,
2756 .ops = &clk_branch2_ops,
2761 static struct clk_branch gcc_usb1_master_clk = {
2762 .halt_reg = 0x3f000,
2764 .enable_reg = 0x3f000,
2765 .enable_mask = BIT(0),
2766 .hw.init = &(struct clk_init_data){
2767 .name = "gcc_usb1_master_clk",
2768 .parent_names = (const char *[]){
2769 "usb1_master_clk_src"
2772 .flags = CLK_SET_RATE_PARENT,
2773 .ops = &clk_branch2_ops,
2778 static struct clk_branch gcc_usb1_mock_utmi_clk = {
2779 .halt_reg = 0x3f008,
2781 .enable_reg = 0x3f008,
2782 .enable_mask = BIT(0),
2783 .hw.init = &(struct clk_init_data){
2784 .name = "gcc_usb1_mock_utmi_clk",
2785 .parent_names = (const char *[]){
2786 "usb1_mock_utmi_clk_src"
2789 .flags = CLK_SET_RATE_PARENT,
2790 .ops = &clk_branch2_ops,
2795 static struct clk_branch gcc_usb1_phy_cfg_ahb_clk = {
2796 .halt_reg = 0x3f080,
2798 .enable_reg = 0x3f080,
2799 .enable_mask = BIT(0),
2800 .hw.init = &(struct clk_init_data){
2801 .name = "gcc_usb1_phy_cfg_ahb_clk",
2802 .parent_names = (const char *[]){
2806 .flags = CLK_SET_RATE_PARENT,
2807 .ops = &clk_branch2_ops,
2812 static struct clk_branch gcc_usb1_pipe_clk = {
2813 .halt_reg = 0x3f040,
2814 .halt_check = BRANCH_HALT_DELAY,
2816 .enable_reg = 0x3f040,
2817 .enable_mask = BIT(0),
2818 .hw.init = &(struct clk_init_data){
2819 .name = "gcc_usb1_pipe_clk",
2820 .parent_names = (const char *[]){
2824 .flags = CLK_SET_RATE_PARENT,
2825 .ops = &clk_branch2_ops,
2830 static struct clk_branch gcc_usb1_sleep_clk = {
2831 .halt_reg = 0x3f004,
2833 .enable_reg = 0x3f004,
2834 .enable_mask = BIT(0),
2835 .hw.init = &(struct clk_init_data){
2836 .name = "gcc_usb1_sleep_clk",
2837 .parent_names = (const char *[]){
2841 .flags = CLK_SET_RATE_PARENT,
2842 .ops = &clk_branch2_ops,
2847 static struct clk_branch gcc_sdcc1_ahb_clk = {
2848 .halt_reg = 0x4201c,
2850 .enable_reg = 0x4201c,
2851 .enable_mask = BIT(0),
2852 .hw.init = &(struct clk_init_data){
2853 .name = "gcc_sdcc1_ahb_clk",
2854 .parent_names = (const char *[]){
2858 .flags = CLK_SET_RATE_PARENT,
2859 .ops = &clk_branch2_ops,
2864 static struct clk_branch gcc_sdcc1_apps_clk = {
2865 .halt_reg = 0x42018,
2867 .enable_reg = 0x42018,
2868 .enable_mask = BIT(0),
2869 .hw.init = &(struct clk_init_data){
2870 .name = "gcc_sdcc1_apps_clk",
2871 .parent_names = (const char *[]){
2872 "sdcc1_apps_clk_src"
2875 .flags = CLK_SET_RATE_PARENT,
2876 .ops = &clk_branch2_ops,
2881 static struct clk_branch gcc_sdcc1_ice_core_clk = {
2882 .halt_reg = 0x5d014,
2884 .enable_reg = 0x5d014,
2885 .enable_mask = BIT(0),
2886 .hw.init = &(struct clk_init_data){
2887 .name = "gcc_sdcc1_ice_core_clk",
2888 .parent_names = (const char *[]){
2889 "sdcc1_ice_core_clk_src"
2892 .flags = CLK_SET_RATE_PARENT,
2893 .ops = &clk_branch2_ops,
2898 static struct clk_branch gcc_sdcc2_ahb_clk = {
2899 .halt_reg = 0x4301c,
2901 .enable_reg = 0x4301c,
2902 .enable_mask = BIT(0),
2903 .hw.init = &(struct clk_init_data){
2904 .name = "gcc_sdcc2_ahb_clk",
2905 .parent_names = (const char *[]){
2909 .flags = CLK_SET_RATE_PARENT,
2910 .ops = &clk_branch2_ops,
2915 static struct clk_branch gcc_sdcc2_apps_clk = {
2916 .halt_reg = 0x43018,
2918 .enable_reg = 0x43018,
2919 .enable_mask = BIT(0),
2920 .hw.init = &(struct clk_init_data){
2921 .name = "gcc_sdcc2_apps_clk",
2922 .parent_names = (const char *[]){
2923 "sdcc2_apps_clk_src"
2926 .flags = CLK_SET_RATE_PARENT,
2927 .ops = &clk_branch2_ops,
2932 static struct clk_branch gcc_mem_noc_nss_axi_clk = {
2933 .halt_reg = 0x1d03c,
2935 .enable_reg = 0x1d03c,
2936 .enable_mask = BIT(0),
2937 .hw.init = &(struct clk_init_data){
2938 .name = "gcc_mem_noc_nss_axi_clk",
2939 .parent_names = (const char *[]){
2943 .flags = CLK_SET_RATE_PARENT,
2944 .ops = &clk_branch2_ops,
2949 static struct clk_branch gcc_nss_ce_apb_clk = {
2950 .halt_reg = 0x68174,
2952 .enable_reg = 0x68174,
2953 .enable_mask = BIT(0),
2954 .hw.init = &(struct clk_init_data){
2955 .name = "gcc_nss_ce_apb_clk",
2956 .parent_names = (const char *[]){
2960 .flags = CLK_SET_RATE_PARENT,
2961 .ops = &clk_branch2_ops,
2966 static struct clk_branch gcc_nss_ce_axi_clk = {
2967 .halt_reg = 0x68170,
2969 .enable_reg = 0x68170,
2970 .enable_mask = BIT(0),
2971 .hw.init = &(struct clk_init_data){
2972 .name = "gcc_nss_ce_axi_clk",
2973 .parent_names = (const char *[]){
2977 .flags = CLK_SET_RATE_PARENT,
2978 .ops = &clk_branch2_ops,
2983 static struct clk_branch gcc_nss_cfg_clk = {
2984 .halt_reg = 0x68160,
2986 .enable_reg = 0x68160,
2987 .enable_mask = BIT(0),
2988 .hw.init = &(struct clk_init_data){
2989 .name = "gcc_nss_cfg_clk",
2990 .parent_names = (const char *[]){
2994 .flags = CLK_SET_RATE_PARENT,
2995 .ops = &clk_branch2_ops,
3000 static struct clk_branch gcc_nss_crypto_clk = {
3001 .halt_reg = 0x68164,
3003 .enable_reg = 0x68164,
3004 .enable_mask = BIT(0),
3005 .hw.init = &(struct clk_init_data){
3006 .name = "gcc_nss_crypto_clk",
3007 .parent_names = (const char *[]){
3008 "nss_crypto_clk_src"
3011 .flags = CLK_SET_RATE_PARENT,
3012 .ops = &clk_branch2_ops,
3017 static struct clk_branch gcc_nss_csr_clk = {
3018 .halt_reg = 0x68318,
3020 .enable_reg = 0x68318,
3021 .enable_mask = BIT(0),
3022 .hw.init = &(struct clk_init_data){
3023 .name = "gcc_nss_csr_clk",
3024 .parent_names = (const char *[]){
3028 .flags = CLK_SET_RATE_PARENT,
3029 .ops = &clk_branch2_ops,
3034 static struct clk_branch gcc_nss_edma_cfg_clk = {
3035 .halt_reg = 0x6819c,
3037 .enable_reg = 0x6819c,
3038 .enable_mask = BIT(0),
3039 .hw.init = &(struct clk_init_data){
3040 .name = "gcc_nss_edma_cfg_clk",
3041 .parent_names = (const char *[]){
3045 .flags = CLK_SET_RATE_PARENT,
3046 .ops = &clk_branch2_ops,
3051 static struct clk_branch gcc_nss_edma_clk = {
3052 .halt_reg = 0x68198,
3054 .enable_reg = 0x68198,
3055 .enable_mask = BIT(0),
3056 .hw.init = &(struct clk_init_data){
3057 .name = "gcc_nss_edma_clk",
3058 .parent_names = (const char *[]){
3062 .flags = CLK_SET_RATE_PARENT,
3063 .ops = &clk_branch2_ops,
3068 static struct clk_branch gcc_nss_imem_clk = {
3069 .halt_reg = 0x68178,
3071 .enable_reg = 0x68178,
3072 .enable_mask = BIT(0),
3073 .hw.init = &(struct clk_init_data){
3074 .name = "gcc_nss_imem_clk",
3075 .parent_names = (const char *[]){
3079 .flags = CLK_SET_RATE_PARENT,
3080 .ops = &clk_branch2_ops,
3085 static struct clk_branch gcc_nss_noc_clk = {
3086 .halt_reg = 0x68168,
3088 .enable_reg = 0x68168,
3089 .enable_mask = BIT(0),
3090 .hw.init = &(struct clk_init_data){
3091 .name = "gcc_nss_noc_clk",
3092 .parent_names = (const char *[]){
3096 .flags = CLK_SET_RATE_PARENT,
3097 .ops = &clk_branch2_ops,
3102 static struct clk_branch gcc_nss_ppe_btq_clk = {
3103 .halt_reg = 0x6833c,
3105 .enable_reg = 0x6833c,
3106 .enable_mask = BIT(0),
3107 .hw.init = &(struct clk_init_data){
3108 .name = "gcc_nss_ppe_btq_clk",
3109 .parent_names = (const char *[]){
3113 .flags = CLK_SET_RATE_PARENT,
3114 .ops = &clk_branch2_ops,
3119 static struct clk_branch gcc_nss_ppe_cfg_clk = {
3120 .halt_reg = 0x68194,
3122 .enable_reg = 0x68194,
3123 .enable_mask = BIT(0),
3124 .hw.init = &(struct clk_init_data){
3125 .name = "gcc_nss_ppe_cfg_clk",
3126 .parent_names = (const char *[]){
3130 .flags = CLK_SET_RATE_PARENT,
3131 .ops = &clk_branch2_ops,
3136 static struct clk_branch gcc_nss_ppe_clk = {
3137 .halt_reg = 0x68190,
3139 .enable_reg = 0x68190,
3140 .enable_mask = BIT(0),
3141 .hw.init = &(struct clk_init_data){
3142 .name = "gcc_nss_ppe_clk",
3143 .parent_names = (const char *[]){
3147 .flags = CLK_SET_RATE_PARENT,
3148 .ops = &clk_branch2_ops,
3153 static struct clk_branch gcc_nss_ppe_ipe_clk = {
3154 .halt_reg = 0x68338,
3156 .enable_reg = 0x68338,
3157 .enable_mask = BIT(0),
3158 .hw.init = &(struct clk_init_data){
3159 .name = "gcc_nss_ppe_ipe_clk",
3160 .parent_names = (const char *[]){
3164 .flags = CLK_SET_RATE_PARENT,
3165 .ops = &clk_branch2_ops,
3170 static struct clk_branch gcc_nss_ptp_ref_clk = {
3171 .halt_reg = 0x6816c,
3173 .enable_reg = 0x6816c,
3174 .enable_mask = BIT(0),
3175 .hw.init = &(struct clk_init_data){
3176 .name = "gcc_nss_ptp_ref_clk",
3177 .parent_names = (const char *[]){
3178 "nss_ppe_cdiv_clk_src"
3181 .flags = CLK_SET_RATE_PARENT,
3182 .ops = &clk_branch2_ops,
3187 static struct clk_branch gcc_crypto_ppe_clk = {
3188 .halt_reg = 0x68310,
3191 .enable_reg = 0x68310,
3192 .enable_mask = BIT(0),
3193 .hw.init = &(struct clk_init_data){
3194 .name = "gcc_crypto_ppe_clk",
3195 .parent_names = (const char *[]){
3199 .flags = CLK_SET_RATE_PARENT,
3200 .ops = &clk_branch2_ops,
3205 static struct clk_branch gcc_nssnoc_ce_apb_clk = {
3206 .halt_reg = 0x6830c,
3208 .enable_reg = 0x6830c,
3209 .enable_mask = BIT(0),
3210 .hw.init = &(struct clk_init_data){
3211 .name = "gcc_nssnoc_ce_apb_clk",
3212 .parent_names = (const char *[]){
3216 .flags = CLK_SET_RATE_PARENT,
3217 .ops = &clk_branch2_ops,
3222 static struct clk_branch gcc_nssnoc_ce_axi_clk = {
3223 .halt_reg = 0x68308,
3225 .enable_reg = 0x68308,
3226 .enable_mask = BIT(0),
3227 .hw.init = &(struct clk_init_data){
3228 .name = "gcc_nssnoc_ce_axi_clk",
3229 .parent_names = (const char *[]){
3233 .flags = CLK_SET_RATE_PARENT,
3234 .ops = &clk_branch2_ops,
3239 static struct clk_branch gcc_nssnoc_crypto_clk = {
3240 .halt_reg = 0x68314,
3242 .enable_reg = 0x68314,
3243 .enable_mask = BIT(0),
3244 .hw.init = &(struct clk_init_data){
3245 .name = "gcc_nssnoc_crypto_clk",
3246 .parent_names = (const char *[]){
3247 "nss_crypto_clk_src"
3250 .flags = CLK_SET_RATE_PARENT,
3251 .ops = &clk_branch2_ops,
3256 static struct clk_branch gcc_nssnoc_ppe_cfg_clk = {
3257 .halt_reg = 0x68304,
3259 .enable_reg = 0x68304,
3260 .enable_mask = BIT(0),
3261 .hw.init = &(struct clk_init_data){
3262 .name = "gcc_nssnoc_ppe_cfg_clk",
3263 .parent_names = (const char *[]){
3267 .flags = CLK_SET_RATE_PARENT,
3268 .ops = &clk_branch2_ops,
3273 static struct clk_branch gcc_nssnoc_ppe_clk = {
3274 .halt_reg = 0x68300,
3276 .enable_reg = 0x68300,
3277 .enable_mask = BIT(0),
3278 .hw.init = &(struct clk_init_data){
3279 .name = "gcc_nssnoc_ppe_clk",
3280 .parent_names = (const char *[]){
3284 .flags = CLK_SET_RATE_PARENT,
3285 .ops = &clk_branch2_ops,
3290 static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {
3291 .halt_reg = 0x68180,
3293 .enable_reg = 0x68180,
3294 .enable_mask = BIT(0),
3295 .hw.init = &(struct clk_init_data){
3296 .name = "gcc_nssnoc_qosgen_ref_clk",
3297 .parent_names = (const char *[]){
3301 .flags = CLK_SET_RATE_PARENT,
3302 .ops = &clk_branch2_ops,
3307 static struct clk_branch gcc_nssnoc_snoc_clk = {
3308 .halt_reg = 0x68188,
3310 .enable_reg = 0x68188,
3311 .enable_mask = BIT(0),
3312 .hw.init = &(struct clk_init_data){
3313 .name = "gcc_nssnoc_snoc_clk",
3314 .parent_names = (const char *[]){
3315 "system_noc_clk_src"
3318 .flags = CLK_SET_RATE_PARENT,
3319 .ops = &clk_branch2_ops,
3324 static struct clk_branch gcc_nssnoc_timeout_ref_clk = {
3325 .halt_reg = 0x68184,
3327 .enable_reg = 0x68184,
3328 .enable_mask = BIT(0),
3329 .hw.init = &(struct clk_init_data){
3330 .name = "gcc_nssnoc_timeout_ref_clk",
3331 .parent_names = (const char *[]){
3332 "gcc_xo_div4_clk_src"
3335 .flags = CLK_SET_RATE_PARENT,
3336 .ops = &clk_branch2_ops,
3341 static struct clk_branch gcc_nssnoc_ubi0_ahb_clk = {
3342 .halt_reg = 0x68270,
3344 .enable_reg = 0x68270,
3345 .enable_mask = BIT(0),
3346 .hw.init = &(struct clk_init_data){
3347 .name = "gcc_nssnoc_ubi0_ahb_clk",
3348 .parent_names = (const char *[]){
3352 .flags = CLK_SET_RATE_PARENT,
3353 .ops = &clk_branch2_ops,
3358 static struct clk_branch gcc_nssnoc_ubi1_ahb_clk = {
3359 .halt_reg = 0x68274,
3361 .enable_reg = 0x68274,
3362 .enable_mask = BIT(0),
3363 .hw.init = &(struct clk_init_data){
3364 .name = "gcc_nssnoc_ubi1_ahb_clk",
3365 .parent_names = (const char *[]){
3369 .flags = CLK_SET_RATE_PARENT,
3370 .ops = &clk_branch2_ops,
3375 static struct clk_branch gcc_ubi0_ahb_clk = {
3376 .halt_reg = 0x6820c,
3377 .halt_check = BRANCH_HALT_DELAY,
3379 .enable_reg = 0x6820c,
3380 .enable_mask = BIT(0),
3381 .hw.init = &(struct clk_init_data){
3382 .name = "gcc_ubi0_ahb_clk",
3383 .parent_names = (const char *[]){
3387 .flags = CLK_SET_RATE_PARENT,
3388 .ops = &clk_branch2_ops,
3393 static struct clk_branch gcc_ubi0_axi_clk = {
3394 .halt_reg = 0x68200,
3395 .halt_check = BRANCH_HALT_DELAY,
3397 .enable_reg = 0x68200,
3398 .enable_mask = BIT(0),
3399 .hw.init = &(struct clk_init_data){
3400 .name = "gcc_ubi0_axi_clk",
3401 .parent_names = (const char *[]){
3405 .flags = CLK_SET_RATE_PARENT,
3406 .ops = &clk_branch2_ops,
3411 static struct clk_branch gcc_ubi0_nc_axi_clk = {
3412 .halt_reg = 0x68204,
3413 .halt_check = BRANCH_HALT_DELAY,
3415 .enable_reg = 0x68204,
3416 .enable_mask = BIT(0),
3417 .hw.init = &(struct clk_init_data){
3418 .name = "gcc_ubi0_nc_axi_clk",
3419 .parent_names = (const char *[]){
3423 .flags = CLK_SET_RATE_PARENT,
3424 .ops = &clk_branch2_ops,
3429 static struct clk_branch gcc_ubi0_core_clk = {
3430 .halt_reg = 0x68210,
3431 .halt_check = BRANCH_HALT_DELAY,
3433 .enable_reg = 0x68210,
3434 .enable_mask = BIT(0),
3435 .hw.init = &(struct clk_init_data){
3436 .name = "gcc_ubi0_core_clk",
3437 .parent_names = (const char *[]){
3438 "nss_ubi0_div_clk_src"
3441 .flags = CLK_SET_RATE_PARENT,
3442 .ops = &clk_branch2_ops,
3447 static struct clk_branch gcc_ubi0_mpt_clk = {
3448 .halt_reg = 0x68208,
3449 .halt_check = BRANCH_HALT_DELAY,
3451 .enable_reg = 0x68208,
3452 .enable_mask = BIT(0),
3453 .hw.init = &(struct clk_init_data){
3454 .name = "gcc_ubi0_mpt_clk",
3455 .parent_names = (const char *[]){
3459 .flags = CLK_SET_RATE_PARENT,
3460 .ops = &clk_branch2_ops,
3465 static struct clk_branch gcc_ubi1_ahb_clk = {
3466 .halt_reg = 0x6822c,
3467 .halt_check = BRANCH_HALT_DELAY,
3469 .enable_reg = 0x6822c,
3470 .enable_mask = BIT(0),
3471 .hw.init = &(struct clk_init_data){
3472 .name = "gcc_ubi1_ahb_clk",
3473 .parent_names = (const char *[]){
3477 .flags = CLK_SET_RATE_PARENT,
3478 .ops = &clk_branch2_ops,
3483 static struct clk_branch gcc_ubi1_axi_clk = {
3484 .halt_reg = 0x68220,
3485 .halt_check = BRANCH_HALT_DELAY,
3487 .enable_reg = 0x68220,
3488 .enable_mask = BIT(0),
3489 .hw.init = &(struct clk_init_data){
3490 .name = "gcc_ubi1_axi_clk",
3491 .parent_names = (const char *[]){
3495 .flags = CLK_SET_RATE_PARENT,
3496 .ops = &clk_branch2_ops,
3501 static struct clk_branch gcc_ubi1_nc_axi_clk = {
3502 .halt_reg = 0x68224,
3503 .halt_check = BRANCH_HALT_DELAY,
3505 .enable_reg = 0x68224,
3506 .enable_mask = BIT(0),
3507 .hw.init = &(struct clk_init_data){
3508 .name = "gcc_ubi1_nc_axi_clk",
3509 .parent_names = (const char *[]){
3513 .flags = CLK_SET_RATE_PARENT,
3514 .ops = &clk_branch2_ops,
3519 static struct clk_branch gcc_ubi1_core_clk = {
3520 .halt_reg = 0x68230,
3521 .halt_check = BRANCH_HALT_DELAY,
3523 .enable_reg = 0x68230,
3524 .enable_mask = BIT(0),
3525 .hw.init = &(struct clk_init_data){
3526 .name = "gcc_ubi1_core_clk",
3527 .parent_names = (const char *[]){
3528 "nss_ubi1_div_clk_src"
3531 .flags = CLK_SET_RATE_PARENT,
3532 .ops = &clk_branch2_ops,
3537 static struct clk_branch gcc_ubi1_mpt_clk = {
3538 .halt_reg = 0x68228,
3539 .halt_check = BRANCH_HALT_DELAY,
3541 .enable_reg = 0x68228,
3542 .enable_mask = BIT(0),
3543 .hw.init = &(struct clk_init_data){
3544 .name = "gcc_ubi1_mpt_clk",
3545 .parent_names = (const char *[]){
3549 .flags = CLK_SET_RATE_PARENT,
3550 .ops = &clk_branch2_ops,
3555 static struct clk_branch gcc_cmn_12gpll_ahb_clk = {
3556 .halt_reg = 0x56308,
3558 .enable_reg = 0x56308,
3559 .enable_mask = BIT(0),
3560 .hw.init = &(struct clk_init_data){
3561 .name = "gcc_cmn_12gpll_ahb_clk",
3562 .parent_names = (const char *[]){
3566 .flags = CLK_SET_RATE_PARENT,
3567 .ops = &clk_branch2_ops,
3572 static struct clk_branch gcc_cmn_12gpll_sys_clk = {
3573 .halt_reg = 0x5630c,
3575 .enable_reg = 0x5630c,
3576 .enable_mask = BIT(0),
3577 .hw.init = &(struct clk_init_data){
3578 .name = "gcc_cmn_12gpll_sys_clk",
3579 .parent_names = (const char *[]){
3583 .flags = CLK_SET_RATE_PARENT,
3584 .ops = &clk_branch2_ops,
3589 static struct clk_branch gcc_mdio_ahb_clk = {
3590 .halt_reg = 0x58004,
3592 .enable_reg = 0x58004,
3593 .enable_mask = BIT(0),
3594 .hw.init = &(struct clk_init_data){
3595 .name = "gcc_mdio_ahb_clk",
3596 .parent_names = (const char *[]){
3600 .flags = CLK_SET_RATE_PARENT,
3601 .ops = &clk_branch2_ops,
3606 static struct clk_branch gcc_uniphy0_ahb_clk = {
3607 .halt_reg = 0x56008,
3609 .enable_reg = 0x56008,
3610 .enable_mask = BIT(0),
3611 .hw.init = &(struct clk_init_data){
3612 .name = "gcc_uniphy0_ahb_clk",
3613 .parent_names = (const char *[]){
3617 .flags = CLK_SET_RATE_PARENT,
3618 .ops = &clk_branch2_ops,
3623 static struct clk_branch gcc_uniphy0_sys_clk = {
3624 .halt_reg = 0x5600c,
3626 .enable_reg = 0x5600c,
3627 .enable_mask = BIT(0),
3628 .hw.init = &(struct clk_init_data){
3629 .name = "gcc_uniphy0_sys_clk",
3630 .parent_names = (const char *[]){
3634 .flags = CLK_SET_RATE_PARENT,
3635 .ops = &clk_branch2_ops,
3640 static struct clk_branch gcc_uniphy1_ahb_clk = {
3641 .halt_reg = 0x56108,
3643 .enable_reg = 0x56108,
3644 .enable_mask = BIT(0),
3645 .hw.init = &(struct clk_init_data){
3646 .name = "gcc_uniphy1_ahb_clk",
3647 .parent_names = (const char *[]){
3651 .flags = CLK_SET_RATE_PARENT,
3652 .ops = &clk_branch2_ops,
3657 static struct clk_branch gcc_uniphy1_sys_clk = {
3658 .halt_reg = 0x5610c,
3660 .enable_reg = 0x5610c,
3661 .enable_mask = BIT(0),
3662 .hw.init = &(struct clk_init_data){
3663 .name = "gcc_uniphy1_sys_clk",
3664 .parent_names = (const char *[]){
3668 .flags = CLK_SET_RATE_PARENT,
3669 .ops = &clk_branch2_ops,
3674 static struct clk_branch gcc_uniphy2_ahb_clk = {
3675 .halt_reg = 0x56208,
3677 .enable_reg = 0x56208,
3678 .enable_mask = BIT(0),
3679 .hw.init = &(struct clk_init_data){
3680 .name = "gcc_uniphy2_ahb_clk",
3681 .parent_names = (const char *[]){
3685 .flags = CLK_SET_RATE_PARENT,
3686 .ops = &clk_branch2_ops,
3691 static struct clk_branch gcc_uniphy2_sys_clk = {
3692 .halt_reg = 0x5620c,
3694 .enable_reg = 0x5620c,
3695 .enable_mask = BIT(0),
3696 .hw.init = &(struct clk_init_data){
3697 .name = "gcc_uniphy2_sys_clk",
3698 .parent_names = (const char *[]){
3702 .flags = CLK_SET_RATE_PARENT,
3703 .ops = &clk_branch2_ops,
3708 static struct clk_branch gcc_nss_port1_rx_clk = {
3709 .halt_reg = 0x68240,
3711 .enable_reg = 0x68240,
3712 .enable_mask = BIT(0),
3713 .hw.init = &(struct clk_init_data){
3714 .name = "gcc_nss_port1_rx_clk",
3715 .parent_names = (const char *[]){
3716 "nss_port1_rx_div_clk_src"
3719 .flags = CLK_SET_RATE_PARENT,
3720 .ops = &clk_branch2_ops,
3725 static struct clk_branch gcc_nss_port1_tx_clk = {
3726 .halt_reg = 0x68244,
3728 .enable_reg = 0x68244,
3729 .enable_mask = BIT(0),
3730 .hw.init = &(struct clk_init_data){
3731 .name = "gcc_nss_port1_tx_clk",
3732 .parent_names = (const char *[]){
3733 "nss_port1_tx_div_clk_src"
3736 .flags = CLK_SET_RATE_PARENT,
3737 .ops = &clk_branch2_ops,
3742 static struct clk_branch gcc_nss_port2_rx_clk = {
3743 .halt_reg = 0x68248,
3745 .enable_reg = 0x68248,
3746 .enable_mask = BIT(0),
3747 .hw.init = &(struct clk_init_data){
3748 .name = "gcc_nss_port2_rx_clk",
3749 .parent_names = (const char *[]){
3750 "nss_port2_rx_div_clk_src"
3753 .flags = CLK_SET_RATE_PARENT,
3754 .ops = &clk_branch2_ops,
3759 static struct clk_branch gcc_nss_port2_tx_clk = {
3760 .halt_reg = 0x6824c,
3762 .enable_reg = 0x6824c,
3763 .enable_mask = BIT(0),
3764 .hw.init = &(struct clk_init_data){
3765 .name = "gcc_nss_port2_tx_clk",
3766 .parent_names = (const char *[]){
3767 "nss_port2_tx_div_clk_src"
3770 .flags = CLK_SET_RATE_PARENT,
3771 .ops = &clk_branch2_ops,
3776 static struct clk_branch gcc_nss_port3_rx_clk = {
3777 .halt_reg = 0x68250,
3779 .enable_reg = 0x68250,
3780 .enable_mask = BIT(0),
3781 .hw.init = &(struct clk_init_data){
3782 .name = "gcc_nss_port3_rx_clk",
3783 .parent_names = (const char *[]){
3784 "nss_port3_rx_div_clk_src"
3787 .flags = CLK_SET_RATE_PARENT,
3788 .ops = &clk_branch2_ops,
3793 static struct clk_branch gcc_nss_port3_tx_clk = {
3794 .halt_reg = 0x68254,
3796 .enable_reg = 0x68254,
3797 .enable_mask = BIT(0),
3798 .hw.init = &(struct clk_init_data){
3799 .name = "gcc_nss_port3_tx_clk",
3800 .parent_names = (const char *[]){
3801 "nss_port3_tx_div_clk_src"
3804 .flags = CLK_SET_RATE_PARENT,
3805 .ops = &clk_branch2_ops,
3810 static struct clk_branch gcc_nss_port4_rx_clk = {
3811 .halt_reg = 0x68258,
3813 .enable_reg = 0x68258,
3814 .enable_mask = BIT(0),
3815 .hw.init = &(struct clk_init_data){
3816 .name = "gcc_nss_port4_rx_clk",
3817 .parent_names = (const char *[]){
3818 "nss_port4_rx_div_clk_src"
3821 .flags = CLK_SET_RATE_PARENT,
3822 .ops = &clk_branch2_ops,
3827 static struct clk_branch gcc_nss_port4_tx_clk = {
3828 .halt_reg = 0x6825c,
3830 .enable_reg = 0x6825c,
3831 .enable_mask = BIT(0),
3832 .hw.init = &(struct clk_init_data){
3833 .name = "gcc_nss_port4_tx_clk",
3834 .parent_names = (const char *[]){
3835 "nss_port4_tx_div_clk_src"
3838 .flags = CLK_SET_RATE_PARENT,
3839 .ops = &clk_branch2_ops,
3844 static struct clk_branch gcc_nss_port5_rx_clk = {
3845 .halt_reg = 0x68260,
3847 .enable_reg = 0x68260,
3848 .enable_mask = BIT(0),
3849 .hw.init = &(struct clk_init_data){
3850 .name = "gcc_nss_port5_rx_clk",
3851 .parent_names = (const char *[]){
3852 "nss_port5_rx_div_clk_src"
3855 .flags = CLK_SET_RATE_PARENT,
3856 .ops = &clk_branch2_ops,
3861 static struct clk_branch gcc_nss_port5_tx_clk = {
3862 .halt_reg = 0x68264,
3864 .enable_reg = 0x68264,
3865 .enable_mask = BIT(0),
3866 .hw.init = &(struct clk_init_data){
3867 .name = "gcc_nss_port5_tx_clk",
3868 .parent_names = (const char *[]){
3869 "nss_port5_tx_div_clk_src"
3872 .flags = CLK_SET_RATE_PARENT,
3873 .ops = &clk_branch2_ops,
3878 static struct clk_branch gcc_nss_port6_rx_clk = {
3879 .halt_reg = 0x68268,
3881 .enable_reg = 0x68268,
3882 .enable_mask = BIT(0),
3883 .hw.init = &(struct clk_init_data){
3884 .name = "gcc_nss_port6_rx_clk",
3885 .parent_names = (const char *[]){
3886 "nss_port6_rx_div_clk_src"
3889 .flags = CLK_SET_RATE_PARENT,
3890 .ops = &clk_branch2_ops,
3895 static struct clk_branch gcc_nss_port6_tx_clk = {
3896 .halt_reg = 0x6826c,
3898 .enable_reg = 0x6826c,
3899 .enable_mask = BIT(0),
3900 .hw.init = &(struct clk_init_data){
3901 .name = "gcc_nss_port6_tx_clk",
3902 .parent_names = (const char *[]){
3903 "nss_port6_tx_div_clk_src"
3906 .flags = CLK_SET_RATE_PARENT,
3907 .ops = &clk_branch2_ops,
3912 static struct clk_branch gcc_port1_mac_clk = {
3913 .halt_reg = 0x68320,
3915 .enable_reg = 0x68320,
3916 .enable_mask = BIT(0),
3917 .hw.init = &(struct clk_init_data){
3918 .name = "gcc_port1_mac_clk",
3919 .parent_names = (const char *[]){
3923 .flags = CLK_SET_RATE_PARENT,
3924 .ops = &clk_branch2_ops,
3929 static struct clk_branch gcc_port2_mac_clk = {
3930 .halt_reg = 0x68324,
3932 .enable_reg = 0x68324,
3933 .enable_mask = BIT(0),
3934 .hw.init = &(struct clk_init_data){
3935 .name = "gcc_port2_mac_clk",
3936 .parent_names = (const char *[]){
3940 .flags = CLK_SET_RATE_PARENT,
3941 .ops = &clk_branch2_ops,
3946 static struct clk_branch gcc_port3_mac_clk = {
3947 .halt_reg = 0x68328,
3949 .enable_reg = 0x68328,
3950 .enable_mask = BIT(0),
3951 .hw.init = &(struct clk_init_data){
3952 .name = "gcc_port3_mac_clk",
3953 .parent_names = (const char *[]){
3957 .flags = CLK_SET_RATE_PARENT,
3958 .ops = &clk_branch2_ops,
3963 static struct clk_branch gcc_port4_mac_clk = {
3964 .halt_reg = 0x6832c,
3966 .enable_reg = 0x6832c,
3967 .enable_mask = BIT(0),
3968 .hw.init = &(struct clk_init_data){
3969 .name = "gcc_port4_mac_clk",
3970 .parent_names = (const char *[]){
3974 .flags = CLK_SET_RATE_PARENT,
3975 .ops = &clk_branch2_ops,
3980 static struct clk_branch gcc_port5_mac_clk = {
3981 .halt_reg = 0x68330,
3983 .enable_reg = 0x68330,
3984 .enable_mask = BIT(0),
3985 .hw.init = &(struct clk_init_data){
3986 .name = "gcc_port5_mac_clk",
3987 .parent_names = (const char *[]){
3991 .flags = CLK_SET_RATE_PARENT,
3992 .ops = &clk_branch2_ops,
3997 static struct clk_branch gcc_port6_mac_clk = {
3998 .halt_reg = 0x68334,
4000 .enable_reg = 0x68334,
4001 .enable_mask = BIT(0),
4002 .hw.init = &(struct clk_init_data){
4003 .name = "gcc_port6_mac_clk",
4004 .parent_names = (const char *[]){
4008 .flags = CLK_SET_RATE_PARENT,
4009 .ops = &clk_branch2_ops,
4014 static struct clk_branch gcc_uniphy0_port1_rx_clk = {
4015 .halt_reg = 0x56010,
4017 .enable_reg = 0x56010,
4018 .enable_mask = BIT(0),
4019 .hw.init = &(struct clk_init_data){
4020 .name = "gcc_uniphy0_port1_rx_clk",
4021 .parent_names = (const char *[]){
4022 "nss_port1_rx_div_clk_src"
4025 .flags = CLK_SET_RATE_PARENT,
4026 .ops = &clk_branch2_ops,
4031 static struct clk_branch gcc_uniphy0_port1_tx_clk = {
4032 .halt_reg = 0x56014,
4034 .enable_reg = 0x56014,
4035 .enable_mask = BIT(0),
4036 .hw.init = &(struct clk_init_data){
4037 .name = "gcc_uniphy0_port1_tx_clk",
4038 .parent_names = (const char *[]){
4039 "nss_port1_tx_div_clk_src"
4042 .flags = CLK_SET_RATE_PARENT,
4043 .ops = &clk_branch2_ops,
4048 static struct clk_branch gcc_uniphy0_port2_rx_clk = {
4049 .halt_reg = 0x56018,
4051 .enable_reg = 0x56018,
4052 .enable_mask = BIT(0),
4053 .hw.init = &(struct clk_init_data){
4054 .name = "gcc_uniphy0_port2_rx_clk",
4055 .parent_names = (const char *[]){
4056 "nss_port2_rx_div_clk_src"
4059 .flags = CLK_SET_RATE_PARENT,
4060 .ops = &clk_branch2_ops,
4065 static struct clk_branch gcc_uniphy0_port2_tx_clk = {
4066 .halt_reg = 0x5601c,
4068 .enable_reg = 0x5601c,
4069 .enable_mask = BIT(0),
4070 .hw.init = &(struct clk_init_data){
4071 .name = "gcc_uniphy0_port2_tx_clk",
4072 .parent_names = (const char *[]){
4073 "nss_port2_tx_div_clk_src"
4076 .flags = CLK_SET_RATE_PARENT,
4077 .ops = &clk_branch2_ops,
4082 static struct clk_branch gcc_uniphy0_port3_rx_clk = {
4083 .halt_reg = 0x56020,
4085 .enable_reg = 0x56020,
4086 .enable_mask = BIT(0),
4087 .hw.init = &(struct clk_init_data){
4088 .name = "gcc_uniphy0_port3_rx_clk",
4089 .parent_names = (const char *[]){
4090 "nss_port3_rx_div_clk_src"
4093 .flags = CLK_SET_RATE_PARENT,
4094 .ops = &clk_branch2_ops,
4099 static struct clk_branch gcc_uniphy0_port3_tx_clk = {
4100 .halt_reg = 0x56024,
4102 .enable_reg = 0x56024,
4103 .enable_mask = BIT(0),
4104 .hw.init = &(struct clk_init_data){
4105 .name = "gcc_uniphy0_port3_tx_clk",
4106 .parent_names = (const char *[]){
4107 "nss_port3_tx_div_clk_src"
4110 .flags = CLK_SET_RATE_PARENT,
4111 .ops = &clk_branch2_ops,
4116 static struct clk_branch gcc_uniphy0_port4_rx_clk = {
4117 .halt_reg = 0x56028,
4119 .enable_reg = 0x56028,
4120 .enable_mask = BIT(0),
4121 .hw.init = &(struct clk_init_data){
4122 .name = "gcc_uniphy0_port4_rx_clk",
4123 .parent_names = (const char *[]){
4124 "nss_port4_rx_div_clk_src"
4127 .flags = CLK_SET_RATE_PARENT,
4128 .ops = &clk_branch2_ops,
4133 static struct clk_branch gcc_uniphy0_port4_tx_clk = {
4134 .halt_reg = 0x5602c,
4136 .enable_reg = 0x5602c,
4137 .enable_mask = BIT(0),
4138 .hw.init = &(struct clk_init_data){
4139 .name = "gcc_uniphy0_port4_tx_clk",
4140 .parent_names = (const char *[]){
4141 "nss_port4_tx_div_clk_src"
4144 .flags = CLK_SET_RATE_PARENT,
4145 .ops = &clk_branch2_ops,
4150 static struct clk_branch gcc_uniphy0_port5_rx_clk = {
4151 .halt_reg = 0x56030,
4153 .enable_reg = 0x56030,
4154 .enable_mask = BIT(0),
4155 .hw.init = &(struct clk_init_data){
4156 .name = "gcc_uniphy0_port5_rx_clk",
4157 .parent_names = (const char *[]){
4158 "nss_port5_rx_div_clk_src"
4161 .flags = CLK_SET_RATE_PARENT,
4162 .ops = &clk_branch2_ops,
4167 static struct clk_branch gcc_uniphy0_port5_tx_clk = {
4168 .halt_reg = 0x56034,
4170 .enable_reg = 0x56034,
4171 .enable_mask = BIT(0),
4172 .hw.init = &(struct clk_init_data){
4173 .name = "gcc_uniphy0_port5_tx_clk",
4174 .parent_names = (const char *[]){
4175 "nss_port5_tx_div_clk_src"
4178 .flags = CLK_SET_RATE_PARENT,
4179 .ops = &clk_branch2_ops,
4184 static struct clk_branch gcc_uniphy1_port5_rx_clk = {
4185 .halt_reg = 0x56110,
4187 .enable_reg = 0x56110,
4188 .enable_mask = BIT(0),
4189 .hw.init = &(struct clk_init_data){
4190 .name = "gcc_uniphy1_port5_rx_clk",
4191 .parent_names = (const char *[]){
4192 "nss_port5_rx_div_clk_src"
4195 .flags = CLK_SET_RATE_PARENT,
4196 .ops = &clk_branch2_ops,
4201 static struct clk_branch gcc_uniphy1_port5_tx_clk = {
4202 .halt_reg = 0x56114,
4204 .enable_reg = 0x56114,
4205 .enable_mask = BIT(0),
4206 .hw.init = &(struct clk_init_data){
4207 .name = "gcc_uniphy1_port5_tx_clk",
4208 .parent_names = (const char *[]){
4209 "nss_port5_tx_div_clk_src"
4212 .flags = CLK_SET_RATE_PARENT,
4213 .ops = &clk_branch2_ops,
4218 static struct clk_branch gcc_uniphy2_port6_rx_clk = {
4219 .halt_reg = 0x56210,
4221 .enable_reg = 0x56210,
4222 .enable_mask = BIT(0),
4223 .hw.init = &(struct clk_init_data){
4224 .name = "gcc_uniphy2_port6_rx_clk",
4225 .parent_names = (const char *[]){
4226 "nss_port6_rx_div_clk_src"
4229 .flags = CLK_SET_RATE_PARENT,
4230 .ops = &clk_branch2_ops,
4235 static struct clk_branch gcc_uniphy2_port6_tx_clk = {
4236 .halt_reg = 0x56214,
4238 .enable_reg = 0x56214,
4239 .enable_mask = BIT(0),
4240 .hw.init = &(struct clk_init_data){
4241 .name = "gcc_uniphy2_port6_tx_clk",
4242 .parent_names = (const char *[]){
4243 "nss_port6_tx_div_clk_src"
4246 .flags = CLK_SET_RATE_PARENT,
4247 .ops = &clk_branch2_ops,
4252 static struct clk_branch gcc_crypto_ahb_clk = {
4253 .halt_reg = 0x16024,
4254 .halt_check = BRANCH_HALT_VOTED,
4256 .enable_reg = 0x0b004,
4257 .enable_mask = BIT(0),
4258 .hw.init = &(struct clk_init_data){
4259 .name = "gcc_crypto_ahb_clk",
4260 .parent_names = (const char *[]){
4264 .flags = CLK_SET_RATE_PARENT,
4265 .ops = &clk_branch2_ops,
4270 static struct clk_branch gcc_crypto_axi_clk = {
4271 .halt_reg = 0x16020,
4272 .halt_check = BRANCH_HALT_VOTED,
4274 .enable_reg = 0x0b004,
4275 .enable_mask = BIT(1),
4276 .hw.init = &(struct clk_init_data){
4277 .name = "gcc_crypto_axi_clk",
4278 .parent_names = (const char *[]){
4282 .flags = CLK_SET_RATE_PARENT,
4283 .ops = &clk_branch2_ops,
4288 static struct clk_branch gcc_crypto_clk = {
4289 .halt_reg = 0x1601c,
4290 .halt_check = BRANCH_HALT_VOTED,
4292 .enable_reg = 0x0b004,
4293 .enable_mask = BIT(2),
4294 .hw.init = &(struct clk_init_data){
4295 .name = "gcc_crypto_clk",
4296 .parent_names = (const char *[]){
4300 .flags = CLK_SET_RATE_PARENT,
4301 .ops = &clk_branch2_ops,
4306 static struct clk_branch gcc_gp1_clk = {
4307 .halt_reg = 0x08000,
4309 .enable_reg = 0x08000,
4310 .enable_mask = BIT(0),
4311 .hw.init = &(struct clk_init_data){
4312 .name = "gcc_gp1_clk",
4313 .parent_names = (const char *[]){
4317 .flags = CLK_SET_RATE_PARENT,
4318 .ops = &clk_branch2_ops,
4323 static struct clk_branch gcc_gp2_clk = {
4324 .halt_reg = 0x09000,
4326 .enable_reg = 0x09000,
4327 .enable_mask = BIT(0),
4328 .hw.init = &(struct clk_init_data){
4329 .name = "gcc_gp2_clk",
4330 .parent_names = (const char *[]){
4334 .flags = CLK_SET_RATE_PARENT,
4335 .ops = &clk_branch2_ops,
4340 static struct clk_branch gcc_gp3_clk = {
4341 .halt_reg = 0x0a000,
4343 .enable_reg = 0x0a000,
4344 .enable_mask = BIT(0),
4345 .hw.init = &(struct clk_init_data){
4346 .name = "gcc_gp3_clk",
4347 .parent_names = (const char *[]){
4351 .flags = CLK_SET_RATE_PARENT,
4352 .ops = &clk_branch2_ops,
4357 static const struct freq_tbl ftbl_pcie_rchng_clk_src[] = {
4358 F(19200000, P_XO, 1, 0, 0),
4359 F(100000000, P_GPLL0, 8, 0, 0),
4363 static struct clk_rcg2 pcie0_rchng_clk_src = {
4364 .cmd_rcgr = 0x75070,
4365 .freq_tbl = ftbl_pcie_rchng_clk_src,
4367 .parent_map = gcc_xo_gpll0_map,
4368 .clkr.hw.init = &(struct clk_init_data){
4369 .name = "pcie0_rchng_clk_src",
4370 .parent_data = gcc_xo_gpll0,
4372 .ops = &clk_rcg2_ops,
4376 static struct clk_branch gcc_pcie0_rchng_clk = {
4377 .halt_reg = 0x75070,
4380 .enable_reg = 0x75070,
4381 .enable_mask = BIT(1),
4382 .hw.init = &(struct clk_init_data){
4383 .name = "gcc_pcie0_rchng_clk",
4384 .parent_hws = (const struct clk_hw *[]){
4385 &pcie0_rchng_clk_src.clkr.hw,
4388 .flags = CLK_SET_RATE_PARENT,
4389 .ops = &clk_branch2_ops,
4394 static struct clk_branch gcc_pcie0_axi_s_bridge_clk = {
4395 .halt_reg = 0x75048,
4398 .enable_reg = 0x75048,
4399 .enable_mask = BIT(0),
4400 .hw.init = &(struct clk_init_data){
4401 .name = "gcc_pcie0_axi_s_bridge_clk",
4402 .parent_hws = (const struct clk_hw *[]){
4403 &pcie0_axi_clk_src.clkr.hw,
4406 .flags = CLK_SET_RATE_PARENT,
4407 .ops = &clk_branch2_ops,
4412 static struct gdsc usb0_gdsc = {
4415 .name = "usb0_gdsc",
4417 .pwrsts = PWRSTS_OFF_ON,
4420 static struct gdsc usb1_gdsc = {
4423 .name = "usb1_gdsc",
4425 .pwrsts = PWRSTS_OFF_ON,
4428 static const struct alpha_pll_config ubi32_pll_config = {
4430 .config_ctl_val = 0x200d4aa8,
4431 .config_ctl_hi_val = 0x3c2,
4432 .main_output_mask = BIT(0),
4433 .aux_output_mask = BIT(1),
4435 .pre_div_mask = BIT(12),
4436 .post_div_val = 0x0,
4437 .post_div_mask = GENMASK(9, 8),
4440 static const struct alpha_pll_config nss_crypto_pll_config = {
4444 .config_ctl_val = 0x4001055b,
4445 .main_output_mask = BIT(0),
4447 .pre_div_mask = GENMASK(14, 12),
4448 .post_div_val = 0x1 << 8,
4449 .post_div_mask = GENMASK(11, 8),
4450 .vco_mask = GENMASK(21, 20),
4452 .alpha_en_mask = BIT(24),
4455 static struct clk_hw *gcc_ipq8074_hws[] = {
4456 &gpll0_out_main_div2.hw,
4457 &gpll6_out_main_div2.hw,
4459 &system_noc_clk_src.hw,
4460 &gcc_xo_div4_clk_src.hw,
4461 &nss_noc_clk_src.hw,
4462 &nss_ppe_cdiv_clk_src.hw,
4465 static struct clk_regmap *gcc_ipq8074_clks[] = {
4466 [GPLL0_MAIN] = &gpll0_main.clkr,
4467 [GPLL0] = &gpll0.clkr,
4468 [GPLL2_MAIN] = &gpll2_main.clkr,
4469 [GPLL2] = &gpll2.clkr,
4470 [GPLL4_MAIN] = &gpll4_main.clkr,
4471 [GPLL4] = &gpll4.clkr,
4472 [GPLL6_MAIN] = &gpll6_main.clkr,
4473 [GPLL6] = &gpll6.clkr,
4474 [UBI32_PLL_MAIN] = &ubi32_pll_main.clkr,
4475 [UBI32_PLL] = &ubi32_pll.clkr,
4476 [NSS_CRYPTO_PLL_MAIN] = &nss_crypto_pll_main.clkr,
4477 [NSS_CRYPTO_PLL] = &nss_crypto_pll.clkr,
4478 [PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr,
4479 [GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,
4480 [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
4481 [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
4482 [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
4483 [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
4484 [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
4485 [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
4486 [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
4487 [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
4488 [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
4489 [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
4490 [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
4491 [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
4492 [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
4493 [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
4494 [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
4495 [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
4496 [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
4497 [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
4498 [PCIE0_AXI_CLK_SRC] = &pcie0_axi_clk_src.clkr,
4499 [PCIE0_AUX_CLK_SRC] = &pcie0_aux_clk_src.clkr,
4500 [PCIE0_PIPE_CLK_SRC] = &pcie0_pipe_clk_src.clkr,
4501 [PCIE1_AXI_CLK_SRC] = &pcie1_axi_clk_src.clkr,
4502 [PCIE1_AUX_CLK_SRC] = &pcie1_aux_clk_src.clkr,
4503 [PCIE1_PIPE_CLK_SRC] = &pcie1_pipe_clk_src.clkr,
4504 [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
4505 [SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr,
4506 [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
4507 [USB0_MASTER_CLK_SRC] = &usb0_master_clk_src.clkr,
4508 [USB0_AUX_CLK_SRC] = &usb0_aux_clk_src.clkr,
4509 [USB0_MOCK_UTMI_CLK_SRC] = &usb0_mock_utmi_clk_src.clkr,
4510 [USB0_PIPE_CLK_SRC] = &usb0_pipe_clk_src.clkr,
4511 [USB1_MASTER_CLK_SRC] = &usb1_master_clk_src.clkr,
4512 [USB1_AUX_CLK_SRC] = &usb1_aux_clk_src.clkr,
4513 [USB1_MOCK_UTMI_CLK_SRC] = &usb1_mock_utmi_clk_src.clkr,
4514 [USB1_PIPE_CLK_SRC] = &usb1_pipe_clk_src.clkr,
4515 [GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,
4516 [SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr,
4517 [NSS_CE_CLK_SRC] = &nss_ce_clk_src.clkr,
4518 [NSS_NOC_BFDCD_CLK_SRC] = &nss_noc_bfdcd_clk_src.clkr,
4519 [NSS_CRYPTO_CLK_SRC] = &nss_crypto_clk_src.clkr,
4520 [NSS_UBI0_CLK_SRC] = &nss_ubi0_clk_src.clkr,
4521 [NSS_UBI0_DIV_CLK_SRC] = &nss_ubi0_div_clk_src.clkr,
4522 [NSS_UBI1_CLK_SRC] = &nss_ubi1_clk_src.clkr,
4523 [NSS_UBI1_DIV_CLK_SRC] = &nss_ubi1_div_clk_src.clkr,
4524 [UBI_MPT_CLK_SRC] = &ubi_mpt_clk_src.clkr,
4525 [NSS_IMEM_CLK_SRC] = &nss_imem_clk_src.clkr,
4526 [NSS_PPE_CLK_SRC] = &nss_ppe_clk_src.clkr,
4527 [NSS_PORT1_RX_CLK_SRC] = &nss_port1_rx_clk_src.clkr,
4528 [NSS_PORT1_RX_DIV_CLK_SRC] = &nss_port1_rx_div_clk_src.clkr,
4529 [NSS_PORT1_TX_CLK_SRC] = &nss_port1_tx_clk_src.clkr,
4530 [NSS_PORT1_TX_DIV_CLK_SRC] = &nss_port1_tx_div_clk_src.clkr,
4531 [NSS_PORT2_RX_CLK_SRC] = &nss_port2_rx_clk_src.clkr,
4532 [NSS_PORT2_RX_DIV_CLK_SRC] = &nss_port2_rx_div_clk_src.clkr,
4533 [NSS_PORT2_TX_CLK_SRC] = &nss_port2_tx_clk_src.clkr,
4534 [NSS_PORT2_TX_DIV_CLK_SRC] = &nss_port2_tx_div_clk_src.clkr,
4535 [NSS_PORT3_RX_CLK_SRC] = &nss_port3_rx_clk_src.clkr,
4536 [NSS_PORT3_RX_DIV_CLK_SRC] = &nss_port3_rx_div_clk_src.clkr,
4537 [NSS_PORT3_TX_CLK_SRC] = &nss_port3_tx_clk_src.clkr,
4538 [NSS_PORT3_TX_DIV_CLK_SRC] = &nss_port3_tx_div_clk_src.clkr,
4539 [NSS_PORT4_RX_CLK_SRC] = &nss_port4_rx_clk_src.clkr,
4540 [NSS_PORT4_RX_DIV_CLK_SRC] = &nss_port4_rx_div_clk_src.clkr,
4541 [NSS_PORT4_TX_CLK_SRC] = &nss_port4_tx_clk_src.clkr,
4542 [NSS_PORT4_TX_DIV_CLK_SRC] = &nss_port4_tx_div_clk_src.clkr,
4543 [NSS_PORT5_RX_CLK_SRC] = &nss_port5_rx_clk_src.clkr,
4544 [NSS_PORT5_RX_DIV_CLK_SRC] = &nss_port5_rx_div_clk_src.clkr,
4545 [NSS_PORT5_TX_CLK_SRC] = &nss_port5_tx_clk_src.clkr,
4546 [NSS_PORT5_TX_DIV_CLK_SRC] = &nss_port5_tx_div_clk_src.clkr,
4547 [NSS_PORT6_RX_CLK_SRC] = &nss_port6_rx_clk_src.clkr,
4548 [NSS_PORT6_RX_DIV_CLK_SRC] = &nss_port6_rx_div_clk_src.clkr,
4549 [NSS_PORT6_TX_CLK_SRC] = &nss_port6_tx_clk_src.clkr,
4550 [NSS_PORT6_TX_DIV_CLK_SRC] = &nss_port6_tx_div_clk_src.clkr,
4551 [CRYPTO_CLK_SRC] = &crypto_clk_src.clkr,
4552 [GP1_CLK_SRC] = &gp1_clk_src.clkr,
4553 [GP2_CLK_SRC] = &gp2_clk_src.clkr,
4554 [GP3_CLK_SRC] = &gp3_clk_src.clkr,
4555 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
4556 [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
4557 [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
4558 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
4559 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
4560 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
4561 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
4562 [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
4563 [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
4564 [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
4565 [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
4566 [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
4567 [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
4568 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
4569 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
4570 [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
4571 [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
4572 [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
4573 [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
4574 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
4575 [GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
4576 [GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
4577 [GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr,
4578 [GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr,
4579 [GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr,
4580 [GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr,
4581 [GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,
4582 [GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr,
4583 [GCC_PCIE1_AHB_CLK] = &gcc_pcie1_ahb_clk.clkr,
4584 [GCC_PCIE1_AUX_CLK] = &gcc_pcie1_aux_clk.clkr,
4585 [GCC_PCIE1_AXI_M_CLK] = &gcc_pcie1_axi_m_clk.clkr,
4586 [GCC_PCIE1_AXI_S_CLK] = &gcc_pcie1_axi_s_clk.clkr,
4587 [GCC_PCIE1_PIPE_CLK] = &gcc_pcie1_pipe_clk.clkr,
4588 [GCC_SYS_NOC_PCIE1_AXI_CLK] = &gcc_sys_noc_pcie1_axi_clk.clkr,
4589 [GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,
4590 [GCC_SYS_NOC_USB0_AXI_CLK] = &gcc_sys_noc_usb0_axi_clk.clkr,
4591 [GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,
4592 [GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,
4593 [GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,
4594 [GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,
4595 [GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,
4596 [GCC_USB1_AUX_CLK] = &gcc_usb1_aux_clk.clkr,
4597 [GCC_SYS_NOC_USB1_AXI_CLK] = &gcc_sys_noc_usb1_axi_clk.clkr,
4598 [GCC_USB1_MASTER_CLK] = &gcc_usb1_master_clk.clkr,
4599 [GCC_USB1_MOCK_UTMI_CLK] = &gcc_usb1_mock_utmi_clk.clkr,
4600 [GCC_USB1_PHY_CFG_AHB_CLK] = &gcc_usb1_phy_cfg_ahb_clk.clkr,
4601 [GCC_USB1_PIPE_CLK] = &gcc_usb1_pipe_clk.clkr,
4602 [GCC_USB1_SLEEP_CLK] = &gcc_usb1_sleep_clk.clkr,
4603 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
4604 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
4605 [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
4606 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
4607 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
4608 [GCC_MEM_NOC_NSS_AXI_CLK] = &gcc_mem_noc_nss_axi_clk.clkr,
4609 [GCC_NSS_CE_APB_CLK] = &gcc_nss_ce_apb_clk.clkr,
4610 [GCC_NSS_CE_AXI_CLK] = &gcc_nss_ce_axi_clk.clkr,
4611 [GCC_NSS_CFG_CLK] = &gcc_nss_cfg_clk.clkr,
4612 [GCC_NSS_CRYPTO_CLK] = &gcc_nss_crypto_clk.clkr,
4613 [GCC_NSS_CSR_CLK] = &gcc_nss_csr_clk.clkr,
4614 [GCC_NSS_EDMA_CFG_CLK] = &gcc_nss_edma_cfg_clk.clkr,
4615 [GCC_NSS_EDMA_CLK] = &gcc_nss_edma_clk.clkr,
4616 [GCC_NSS_IMEM_CLK] = &gcc_nss_imem_clk.clkr,
4617 [GCC_NSS_NOC_CLK] = &gcc_nss_noc_clk.clkr,
4618 [GCC_NSS_PPE_BTQ_CLK] = &gcc_nss_ppe_btq_clk.clkr,
4619 [GCC_NSS_PPE_CFG_CLK] = &gcc_nss_ppe_cfg_clk.clkr,
4620 [GCC_NSS_PPE_CLK] = &gcc_nss_ppe_clk.clkr,
4621 [GCC_NSS_PPE_IPE_CLK] = &gcc_nss_ppe_ipe_clk.clkr,
4622 [GCC_NSS_PTP_REF_CLK] = &gcc_nss_ptp_ref_clk.clkr,
4623 [GCC_NSSNOC_CE_APB_CLK] = &gcc_nssnoc_ce_apb_clk.clkr,
4624 [GCC_NSSNOC_CE_AXI_CLK] = &gcc_nssnoc_ce_axi_clk.clkr,
4625 [GCC_NSSNOC_CRYPTO_CLK] = &gcc_nssnoc_crypto_clk.clkr,
4626 [GCC_NSSNOC_PPE_CFG_CLK] = &gcc_nssnoc_ppe_cfg_clk.clkr,
4627 [GCC_NSSNOC_PPE_CLK] = &gcc_nssnoc_ppe_clk.clkr,
4628 [GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,
4629 [GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,
4630 [GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,
4631 [GCC_NSSNOC_UBI0_AHB_CLK] = &gcc_nssnoc_ubi0_ahb_clk.clkr,
4632 [GCC_NSSNOC_UBI1_AHB_CLK] = &gcc_nssnoc_ubi1_ahb_clk.clkr,
4633 [GCC_UBI0_AHB_CLK] = &gcc_ubi0_ahb_clk.clkr,
4634 [GCC_UBI0_AXI_CLK] = &gcc_ubi0_axi_clk.clkr,
4635 [GCC_UBI0_NC_AXI_CLK] = &gcc_ubi0_nc_axi_clk.clkr,
4636 [GCC_UBI0_CORE_CLK] = &gcc_ubi0_core_clk.clkr,
4637 [GCC_UBI0_MPT_CLK] = &gcc_ubi0_mpt_clk.clkr,
4638 [GCC_UBI1_AHB_CLK] = &gcc_ubi1_ahb_clk.clkr,
4639 [GCC_UBI1_AXI_CLK] = &gcc_ubi1_axi_clk.clkr,
4640 [GCC_UBI1_NC_AXI_CLK] = &gcc_ubi1_nc_axi_clk.clkr,
4641 [GCC_UBI1_CORE_CLK] = &gcc_ubi1_core_clk.clkr,
4642 [GCC_UBI1_MPT_CLK] = &gcc_ubi1_mpt_clk.clkr,
4643 [GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,
4644 [GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,
4645 [GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,
4646 [GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,
4647 [GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,
4648 [GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,
4649 [GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,
4650 [GCC_UNIPHY2_AHB_CLK] = &gcc_uniphy2_ahb_clk.clkr,
4651 [GCC_UNIPHY2_SYS_CLK] = &gcc_uniphy2_sys_clk.clkr,
4652 [GCC_NSS_PORT1_RX_CLK] = &gcc_nss_port1_rx_clk.clkr,
4653 [GCC_NSS_PORT1_TX_CLK] = &gcc_nss_port1_tx_clk.clkr,
4654 [GCC_NSS_PORT2_RX_CLK] = &gcc_nss_port2_rx_clk.clkr,
4655 [GCC_NSS_PORT2_TX_CLK] = &gcc_nss_port2_tx_clk.clkr,
4656 [GCC_NSS_PORT3_RX_CLK] = &gcc_nss_port3_rx_clk.clkr,
4657 [GCC_NSS_PORT3_TX_CLK] = &gcc_nss_port3_tx_clk.clkr,
4658 [GCC_NSS_PORT4_RX_CLK] = &gcc_nss_port4_rx_clk.clkr,
4659 [GCC_NSS_PORT4_TX_CLK] = &gcc_nss_port4_tx_clk.clkr,
4660 [GCC_NSS_PORT5_RX_CLK] = &gcc_nss_port5_rx_clk.clkr,
4661 [GCC_NSS_PORT5_TX_CLK] = &gcc_nss_port5_tx_clk.clkr,
4662 [GCC_NSS_PORT6_RX_CLK] = &gcc_nss_port6_rx_clk.clkr,
4663 [GCC_NSS_PORT6_TX_CLK] = &gcc_nss_port6_tx_clk.clkr,
4664 [GCC_PORT1_MAC_CLK] = &gcc_port1_mac_clk.clkr,
4665 [GCC_PORT2_MAC_CLK] = &gcc_port2_mac_clk.clkr,
4666 [GCC_PORT3_MAC_CLK] = &gcc_port3_mac_clk.clkr,
4667 [GCC_PORT4_MAC_CLK] = &gcc_port4_mac_clk.clkr,
4668 [GCC_PORT5_MAC_CLK] = &gcc_port5_mac_clk.clkr,
4669 [GCC_PORT6_MAC_CLK] = &gcc_port6_mac_clk.clkr,
4670 [GCC_UNIPHY0_PORT1_RX_CLK] = &gcc_uniphy0_port1_rx_clk.clkr,
4671 [GCC_UNIPHY0_PORT1_TX_CLK] = &gcc_uniphy0_port1_tx_clk.clkr,
4672 [GCC_UNIPHY0_PORT2_RX_CLK] = &gcc_uniphy0_port2_rx_clk.clkr,
4673 [GCC_UNIPHY0_PORT2_TX_CLK] = &gcc_uniphy0_port2_tx_clk.clkr,
4674 [GCC_UNIPHY0_PORT3_RX_CLK] = &gcc_uniphy0_port3_rx_clk.clkr,
4675 [GCC_UNIPHY0_PORT3_TX_CLK] = &gcc_uniphy0_port3_tx_clk.clkr,
4676 [GCC_UNIPHY0_PORT4_RX_CLK] = &gcc_uniphy0_port4_rx_clk.clkr,
4677 [GCC_UNIPHY0_PORT4_TX_CLK] = &gcc_uniphy0_port4_tx_clk.clkr,
4678 [GCC_UNIPHY0_PORT5_RX_CLK] = &gcc_uniphy0_port5_rx_clk.clkr,
4679 [GCC_UNIPHY0_PORT5_TX_CLK] = &gcc_uniphy0_port5_tx_clk.clkr,
4680 [GCC_UNIPHY1_PORT5_RX_CLK] = &gcc_uniphy1_port5_rx_clk.clkr,
4681 [GCC_UNIPHY1_PORT5_TX_CLK] = &gcc_uniphy1_port5_tx_clk.clkr,
4682 [GCC_UNIPHY2_PORT6_RX_CLK] = &gcc_uniphy2_port6_rx_clk.clkr,
4683 [GCC_UNIPHY2_PORT6_TX_CLK] = &gcc_uniphy2_port6_tx_clk.clkr,
4684 [GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr,
4685 [GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr,
4686 [GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr,
4687 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
4688 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
4689 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
4690 [GCC_PCIE0_RCHNG_CLK_SRC] = &pcie0_rchng_clk_src.clkr,
4691 [GCC_PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr,
4692 [GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,
4693 [GCC_CRYPTO_PPE_CLK] = &gcc_crypto_ppe_clk.clkr,
4696 static const struct qcom_reset_map gcc_ipq8074_resets[] = {
4697 [GCC_BLSP1_BCR] = { 0x01000, 0 },
4698 [GCC_BLSP1_QUP1_BCR] = { 0x02000, 0 },
4699 [GCC_BLSP1_UART1_BCR] = { 0x02038, 0 },
4700 [GCC_BLSP1_QUP2_BCR] = { 0x03008, 0 },
4701 [GCC_BLSP1_UART2_BCR] = { 0x03028, 0 },
4702 [GCC_BLSP1_QUP3_BCR] = { 0x04008, 0 },
4703 [GCC_BLSP1_UART3_BCR] = { 0x04028, 0 },
4704 [GCC_BLSP1_QUP4_BCR] = { 0x05008, 0 },
4705 [GCC_BLSP1_UART4_BCR] = { 0x05028, 0 },
4706 [GCC_BLSP1_QUP5_BCR] = { 0x06008, 0 },
4707 [GCC_BLSP1_UART5_BCR] = { 0x06028, 0 },
4708 [GCC_BLSP1_QUP6_BCR] = { 0x07008, 0 },
4709 [GCC_BLSP1_UART6_BCR] = { 0x07028, 0 },
4710 [GCC_IMEM_BCR] = { 0x0e000, 0 },
4711 [GCC_SMMU_BCR] = { 0x12000, 0 },
4712 [GCC_APSS_TCU_BCR] = { 0x12050, 0 },
4713 [GCC_SMMU_XPU_BCR] = { 0x12054, 0 },
4714 [GCC_PCNOC_TBU_BCR] = { 0x12058, 0 },
4715 [GCC_SMMU_CFG_BCR] = { 0x1208c, 0 },
4716 [GCC_PRNG_BCR] = { 0x13000, 0 },
4717 [GCC_BOOT_ROM_BCR] = { 0x13008, 0 },
4718 [GCC_CRYPTO_BCR] = { 0x16000, 0 },
4719 [GCC_WCSS_BCR] = { 0x18000, 0 },
4720 [GCC_WCSS_Q6_BCR] = { 0x18100, 0 },
4721 [GCC_NSS_BCR] = { 0x19000, 0 },
4722 [GCC_SEC_CTRL_BCR] = { 0x1a000, 0 },
4723 [GCC_ADSS_BCR] = { 0x1c000, 0 },
4724 [GCC_DDRSS_BCR] = { 0x1e000, 0 },
4725 [GCC_SYSTEM_NOC_BCR] = { 0x26000, 0 },
4726 [GCC_PCNOC_BCR] = { 0x27018, 0 },
4727 [GCC_TCSR_BCR] = { 0x28000, 0 },
4728 [GCC_QDSS_BCR] = { 0x29000, 0 },
4729 [GCC_DCD_BCR] = { 0x2a000, 0 },
4730 [GCC_MSG_RAM_BCR] = { 0x2b000, 0 },
4731 [GCC_MPM_BCR] = { 0x2c000, 0 },
4732 [GCC_SPMI_BCR] = { 0x2e000, 0 },
4733 [GCC_SPDM_BCR] = { 0x2f000, 0 },
4734 [GCC_RBCPR_BCR] = { 0x33000, 0 },
4735 [GCC_RBCPR_MX_BCR] = { 0x33014, 0 },
4736 [GCC_TLMM_BCR] = { 0x34000, 0 },
4737 [GCC_RBCPR_WCSS_BCR] = { 0x3a000, 0 },
4738 [GCC_USB0_PHY_BCR] = { 0x3e034, 0 },
4739 [GCC_USB3PHY_0_PHY_BCR] = { 0x3e03c, 0 },
4740 [GCC_USB0_BCR] = { 0x3e070, 0 },
4741 [GCC_USB1_PHY_BCR] = { 0x3f034, 0 },
4742 [GCC_USB3PHY_1_PHY_BCR] = { 0x3f03c, 0 },
4743 [GCC_USB1_BCR] = { 0x3f070, 0 },
4744 [GCC_QUSB2_0_PHY_BCR] = { 0x4103c, 0 },
4745 [GCC_QUSB2_1_PHY_BCR] = { 0x41040, 0 },
4746 [GCC_SDCC1_BCR] = { 0x42000, 0 },
4747 [GCC_SDCC2_BCR] = { 0x43000, 0 },
4748 [GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x47000, 0 },
4749 [GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x47008, 0 },
4750 [GCC_SNOC_BUS_TIMEOUT3_BCR] = { 0x47010, 0 },
4751 [GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x48000, 0 },
4752 [GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x48008, 0 },
4753 [GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x48010, 0 },
4754 [GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x48018, 0 },
4755 [GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x48020, 0 },
4756 [GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x48028, 0 },
4757 [GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x48030, 0 },
4758 [GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x48038, 0 },
4759 [GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x48040, 0 },
4760 [GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x48048, 0 },
4761 [GCC_UNIPHY0_BCR] = { 0x56000, 0 },
4762 [GCC_UNIPHY1_BCR] = { 0x56100, 0 },
4763 [GCC_UNIPHY2_BCR] = { 0x56200, 0 },
4764 [GCC_CMN_12GPLL_BCR] = { 0x56300, 0 },
4765 [GCC_QPIC_BCR] = { 0x57018, 0 },
4766 [GCC_MDIO_BCR] = { 0x58000, 0 },
4767 [GCC_PCIE1_TBU_BCR] = { 0x65000, 0 },
4768 [GCC_WCSS_CORE_TBU_BCR] = { 0x66000, 0 },
4769 [GCC_WCSS_Q6_TBU_BCR] = { 0x67000, 0 },
4770 [GCC_USB0_TBU_BCR] = { 0x6a000, 0 },
4771 [GCC_USB1_TBU_BCR] = { 0x6a004, 0 },
4772 [GCC_PCIE0_TBU_BCR] = { 0x6b000, 0 },
4773 [GCC_NSS_NOC_TBU_BCR] = { 0x6e000, 0 },
4774 [GCC_PCIE0_BCR] = { 0x75004, 0 },
4775 [GCC_PCIE0_PHY_BCR] = { 0x75038, 0 },
4776 [GCC_PCIE0PHY_PHY_BCR] = { 0x7503c, 0 },
4777 [GCC_PCIE0_LINK_DOWN_BCR] = { 0x75044, 0 },
4778 [GCC_PCIE1_BCR] = { 0x76004, 0 },
4779 [GCC_PCIE1_PHY_BCR] = { 0x76038, 0 },
4780 [GCC_PCIE1PHY_PHY_BCR] = { 0x7603c, 0 },
4781 [GCC_PCIE1_LINK_DOWN_BCR] = { 0x76044, 0 },
4782 [GCC_DCC_BCR] = { 0x77000, 0 },
4783 [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x78000, 0 },
4784 [GCC_APC1_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x79000, 0 },
4785 [GCC_SMMU_CATS_BCR] = { 0x7c000, 0 },
4786 [GCC_UBI0_AXI_ARES] = { 0x68010, 0 },
4787 [GCC_UBI0_AHB_ARES] = { 0x68010, 1 },
4788 [GCC_UBI0_NC_AXI_ARES] = { 0x68010, 2 },
4789 [GCC_UBI0_DBG_ARES] = { 0x68010, 3 },
4790 [GCC_UBI0_CORE_CLAMP_ENABLE] = { 0x68010, 4 },
4791 [GCC_UBI0_CLKRST_CLAMP_ENABLE] = { 0x68010, 5 },
4792 [GCC_UBI1_AXI_ARES] = { 0x68010, 8 },
4793 [GCC_UBI1_AHB_ARES] = { 0x68010, 9 },
4794 [GCC_UBI1_NC_AXI_ARES] = { 0x68010, 10 },
4795 [GCC_UBI1_DBG_ARES] = { 0x68010, 11 },
4796 [GCC_UBI1_CORE_CLAMP_ENABLE] = { 0x68010, 12 },
4797 [GCC_UBI1_CLKRST_CLAMP_ENABLE] = { 0x68010, 13 },
4798 [GCC_NSS_CFG_ARES] = { 0x68010, 16 },
4799 [GCC_NSS_IMEM_ARES] = { 0x68010, 17 },
4800 [GCC_NSS_NOC_ARES] = { 0x68010, 18 },
4801 [GCC_NSS_CRYPTO_ARES] = { 0x68010, 19 },
4802 [GCC_NSS_CSR_ARES] = { 0x68010, 20 },
4803 [GCC_NSS_CE_APB_ARES] = { 0x68010, 21 },
4804 [GCC_NSS_CE_AXI_ARES] = { 0x68010, 22 },
4805 [GCC_NSSNOC_CE_APB_ARES] = { 0x68010, 23 },
4806 [GCC_NSSNOC_CE_AXI_ARES] = { 0x68010, 24 },
4807 [GCC_NSSNOC_UBI0_AHB_ARES] = { 0x68010, 25 },
4808 [GCC_NSSNOC_UBI1_AHB_ARES] = { 0x68010, 26 },
4809 [GCC_NSSNOC_SNOC_ARES] = { 0x68010, 27 },
4810 [GCC_NSSNOC_CRYPTO_ARES] = { 0x68010, 28 },
4811 [GCC_NSSNOC_ATB_ARES] = { 0x68010, 29 },
4812 [GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x68010, 30 },
4813 [GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x68010, 31 },
4814 [GCC_PCIE0_PIPE_ARES] = { 0x75040, 0 },
4815 [GCC_PCIE0_SLEEP_ARES] = { 0x75040, 1 },
4816 [GCC_PCIE0_CORE_STICKY_ARES] = { 0x75040, 2 },
4817 [GCC_PCIE0_AXI_MASTER_ARES] = { 0x75040, 3 },
4818 [GCC_PCIE0_AXI_SLAVE_ARES] = { 0x75040, 4 },
4819 [GCC_PCIE0_AHB_ARES] = { 0x75040, 5 },
4820 [GCC_PCIE0_AXI_MASTER_STICKY_ARES] = { 0x75040, 6 },
4821 [GCC_PCIE0_AXI_SLAVE_STICKY_ARES] = { 0x75040, 7 },
4822 [GCC_PCIE1_PIPE_ARES] = { 0x76040, 0 },
4823 [GCC_PCIE1_SLEEP_ARES] = { 0x76040, 1 },
4824 [GCC_PCIE1_CORE_STICKY_ARES] = { 0x76040, 2 },
4825 [GCC_PCIE1_AXI_MASTER_ARES] = { 0x76040, 3 },
4826 [GCC_PCIE1_AXI_SLAVE_ARES] = { 0x76040, 4 },
4827 [GCC_PCIE1_AHB_ARES] = { 0x76040, 5 },
4828 [GCC_PCIE1_AXI_MASTER_STICKY_ARES] = { 0x76040, 6 },
4831 static struct gdsc *gcc_ipq8074_gdscs[] = {
4832 [USB0_GDSC] = &usb0_gdsc,
4833 [USB1_GDSC] = &usb1_gdsc,
4836 static const struct of_device_id gcc_ipq8074_match_table[] = {
4837 { .compatible = "qcom,gcc-ipq8074" },
4840 MODULE_DEVICE_TABLE(of, gcc_ipq8074_match_table);
4842 static const struct regmap_config gcc_ipq8074_regmap_config = {
4846 .max_register = 0x7fffc,
4850 static const struct qcom_cc_desc gcc_ipq8074_desc = {
4851 .config = &gcc_ipq8074_regmap_config,
4852 .clks = gcc_ipq8074_clks,
4853 .num_clks = ARRAY_SIZE(gcc_ipq8074_clks),
4854 .resets = gcc_ipq8074_resets,
4855 .num_resets = ARRAY_SIZE(gcc_ipq8074_resets),
4856 .clk_hws = gcc_ipq8074_hws,
4857 .num_clk_hws = ARRAY_SIZE(gcc_ipq8074_hws),
4858 .gdscs = gcc_ipq8074_gdscs,
4859 .num_gdscs = ARRAY_SIZE(gcc_ipq8074_gdscs),
4862 static int gcc_ipq8074_probe(struct platform_device *pdev)
4864 struct regmap *regmap;
4866 regmap = qcom_cc_map(pdev, &gcc_ipq8074_desc);
4868 return PTR_ERR(regmap);
4870 /* SW Workaround for UBI32 Huayra PLL */
4871 regmap_update_bits(regmap, 0x2501c, BIT(26), BIT(26));
4873 clk_alpha_pll_configure(&ubi32_pll_main, regmap, &ubi32_pll_config);
4874 clk_alpha_pll_configure(&nss_crypto_pll_main, regmap,
4875 &nss_crypto_pll_config);
4877 return qcom_cc_really_probe(pdev, &gcc_ipq8074_desc, regmap);
4880 static struct platform_driver gcc_ipq8074_driver = {
4881 .probe = gcc_ipq8074_probe,
4883 .name = "qcom,gcc-ipq8074",
4884 .of_match_table = gcc_ipq8074_match_table,
4888 static int __init gcc_ipq8074_init(void)
4890 return platform_driver_register(&gcc_ipq8074_driver);
4892 core_initcall(gcc_ipq8074_init);
4894 static void __exit gcc_ipq8074_exit(void)
4896 platform_driver_unregister(&gcc_ipq8074_driver);
4898 module_exit(gcc_ipq8074_exit);
4900 MODULE_DESCRIPTION("QCOM GCC IPQ8074 Driver");
4901 MODULE_LICENSE("GPL v2");
4902 MODULE_ALIAS("platform:gcc-ipq8074");