1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
3 * Copyright (c) 2023, The Linux Foundation. All rights reserved.
5 #include <linux/clk-provider.h>
6 #include <linux/mod_devicetable.h>
7 #include <linux/module.h>
8 #include <linux/platform_device.h>
9 #include <linux/regmap.h>
11 #include <dt-bindings/clock/qcom,gcc-ipq5018.h>
12 #include <dt-bindings/reset/qcom,gcc-ipq5018.h>
14 #include "clk-alpha-pll.h"
15 #include "clk-branch.h"
17 #include "clk-regmap.h"
18 #include "clk-regmap-divider.h"
19 #include "clk-regmap-mux.h"
20 #include "clk-regmap-phy-mux.h"
23 /* Need to match the order of clocks in DT binding */
27 DT_PCIE20_PHY0_PIPE_CLK
,
28 DT_PCIE20_PHY1_PIPE_CLK
,
29 DT_USB3_PHY0_CC_PIPE_CLK
,
53 static const struct clk_parent_data gcc_xo_data
[] = {
57 static const struct clk_parent_data gcc_sleep_clk_data
[] = {
58 { .index
= DT_SLEEP_CLK
},
61 static struct clk_alpha_pll gpll0_main
= {
63 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
65 .enable_reg
= 0x0b000,
66 .enable_mask
= BIT(0),
67 .hw
.init
= &(struct clk_init_data
) {
69 .parent_data
= gcc_xo_data
,
70 .num_parents
= ARRAY_SIZE(gcc_xo_data
),
71 .ops
= &clk_alpha_pll_stromer_ops
,
76 static struct clk_alpha_pll gpll2_main
= {
78 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
80 .enable_reg
= 0x0b000,
81 .enable_mask
= BIT(2),
82 .hw
.init
= &(struct clk_init_data
) {
84 .parent_data
= gcc_xo_data
,
85 .num_parents
= ARRAY_SIZE(gcc_xo_data
),
86 .ops
= &clk_alpha_pll_stromer_ops
,
91 static struct clk_alpha_pll gpll4_main
= {
93 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
95 .enable_reg
= 0x0b000,
96 .enable_mask
= BIT(5),
97 .hw
.init
= &(struct clk_init_data
) {
99 .parent_data
= gcc_xo_data
,
100 .num_parents
= ARRAY_SIZE(gcc_xo_data
),
101 .ops
= &clk_alpha_pll_stromer_ops
,
106 static struct clk_alpha_pll ubi32_pll_main
= {
108 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
110 .enable_reg
= 0x0b000,
111 .enable_mask
= BIT(6),
112 .hw
.init
= &(struct clk_init_data
) {
113 .name
= "ubi32_pll_main",
114 .parent_data
= gcc_xo_data
,
115 .num_parents
= ARRAY_SIZE(gcc_xo_data
),
116 .ops
= &clk_alpha_pll_stromer_ops
,
121 static struct clk_alpha_pll_postdiv gpll0
= {
123 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
125 .clkr
.hw
.init
= &(struct clk_init_data
) {
127 .parent_hws
= (const struct clk_hw
*[]) {
131 .ops
= &clk_alpha_pll_postdiv_ro_ops
,
135 static struct clk_alpha_pll_postdiv gpll2
= {
137 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
139 .clkr
.hw
.init
= &(struct clk_init_data
) {
141 .parent_hws
= (const struct clk_hw
*[]) {
145 .ops
= &clk_alpha_pll_postdiv_ro_ops
,
149 static struct clk_alpha_pll_postdiv gpll4
= {
151 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
153 .clkr
.hw
.init
= &(struct clk_init_data
) {
155 .parent_hws
= (const struct clk_hw
*[]) {
159 .ops
= &clk_alpha_pll_postdiv_ro_ops
,
163 static struct clk_alpha_pll_postdiv ubi32_pll
= {
165 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
167 .clkr
.hw
.init
= &(struct clk_init_data
) {
169 .parent_hws
= (const struct clk_hw
*[]) {
170 &ubi32_pll_main
.clkr
.hw
,
173 .ops
= &clk_alpha_pll_postdiv_ro_ops
,
174 .flags
= CLK_SET_RATE_PARENT
,
178 static struct clk_fixed_factor gpll0_out_main_div2
= {
181 .hw
.init
= &(struct clk_init_data
) {
182 .name
= "gpll0_out_main_div2",
183 .parent_hws
= (const struct clk_hw
*[]) {
187 .ops
= &clk_fixed_factor_ops
,
188 .flags
= CLK_SET_RATE_PARENT
,
192 static const struct clk_parent_data gcc_xo_gpll0_gpll0_out_main_div2
[] = {
194 { .hw
= &gpll0
.clkr
.hw
},
195 { .hw
= &gpll0_out_main_div2
.hw
},
198 static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map
[] = {
204 static const struct clk_parent_data gcc_xo_gpll0
[] = {
206 { .hw
= &gpll0
.clkr
.hw
},
209 static const struct parent_map gcc_xo_gpll0_map
[] = {
214 static const struct clk_parent_data gcc_xo_gpll0_out_main_div2_gpll0
[] = {
216 { .hw
= &gpll0_out_main_div2
.hw
},
217 { .hw
= &gpll0
.clkr
.hw
},
220 static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map
[] = {
226 static const struct clk_parent_data gcc_xo_ubi32_gpll0
[] = {
228 { .hw
= &ubi32_pll
.clkr
.hw
},
229 { .hw
= &gpll0
.clkr
.hw
},
232 static const struct parent_map gcc_xo_ubi32_gpll0_map
[] = {
238 static const struct clk_parent_data gcc_xo_gpll0_gpll2
[] = {
240 { .hw
= &gpll0
.clkr
.hw
},
241 { .hw
= &gpll2
.clkr
.hw
},
244 static const struct parent_map gcc_xo_gpll0_gpll2_map
[] = {
250 static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll4
[] = {
252 { .hw
= &gpll0
.clkr
.hw
},
253 { .hw
= &gpll2
.clkr
.hw
},
254 { .hw
= &gpll4
.clkr
.hw
},
257 static const struct parent_map gcc_xo_gpll0_gpll2_gpll4_map
[] = {
264 static const struct clk_parent_data gcc_xo_gpll0_gpll4
[] = {
266 { .hw
= &gpll0
.clkr
.hw
},
267 { .hw
= &gpll4
.clkr
.hw
},
270 static const struct parent_map gcc_xo_gpll0_gpll4_map
[] = {
276 static const struct clk_parent_data gcc_xo_gpll0_core_pi_sleep_clk
[] = {
278 { .hw
= &gpll0
.clkr
.hw
},
279 { .index
= DT_SLEEP_CLK
},
282 static const struct parent_map gcc_xo_gpll0_core_pi_sleep_clk_map
[] = {
285 { P_CORE_PI_SLEEP_CLK
, 6 },
288 static const struct clk_parent_data gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk
[] = {
290 { .hw
= &gpll0
.clkr
.hw
},
291 { .hw
= &gpll0_out_main_div2
.hw
},
292 { .index
= DT_SLEEP_CLK
},
295 static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk_map
[] = {
299 { P_CORE_PI_SLEEP_CLK
, 6 },
302 static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll0_out_main_div2
[] = {
304 { .hw
= &gpll0
.clkr
.hw
},
305 { .hw
= &gpll2
.clkr
.hw
},
306 { .hw
= &gpll0_out_main_div2
.hw
},
309 static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map
[] = {
316 static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll0_out_main_div2
[] = {
318 { .hw
= &gpll4
.clkr
.hw
},
319 { .hw
= &gpll0
.clkr
.hw
},
320 { .hw
= &gpll0_out_main_div2
.hw
},
323 static const struct parent_map gcc_xo_gpll4_gpll0_gpll0_out_main_div2_map1
[] = {
330 static const struct parent_map gcc_xo_gpll4_gpll0_gpll0_out_main_div2_map2
[] = {
337 static const struct clk_parent_data gcc_xo_gephy_gcc_rx_gephy_gcc_tx_ubi32_pll_gpll0
[] = {
339 { .index
= DT_GEPHY_RX_CLK
},
340 { .index
= DT_GEPHY_TX_CLK
},
341 { .hw
= &ubi32_pll
.clkr
.hw
},
342 { .hw
= &gpll0
.clkr
.hw
},
345 static const struct parent_map gcc_xo_gephy_gcc_rx_gephy_gcc_tx_ubi32_pll_gpll0_map
[] = {
353 static const struct clk_parent_data gcc_xo_gephy_gcc_tx_gephy_gcc_rx_ubi32_pll_gpll0
[] = {
355 { .index
= DT_GEPHY_TX_CLK
},
356 { .index
= DT_GEPHY_RX_CLK
},
357 { .hw
= &ubi32_pll
.clkr
.hw
},
358 { .hw
= &gpll0
.clkr
.hw
},
361 static const struct parent_map gcc_xo_gephy_gcc_tx_gephy_gcc_rx_ubi32_pll_gpll0_map
[] = {
369 static const struct clk_parent_data gcc_xo_uniphy_gcc_rx_uniphy_gcc_tx_ubi32_pll_gpll0
[] = {
371 { .index
= DT_UNIPHY_RX_CLK
},
372 { .index
= DT_UNIPHY_TX_CLK
},
373 { .hw
= &ubi32_pll
.clkr
.hw
},
374 { .hw
= &gpll0
.clkr
.hw
},
377 static const struct parent_map gcc_xo_uniphy_gcc_rx_uniphy_gcc_tx_ubi32_pll_gpll0_map
[] = {
385 static const struct clk_parent_data gcc_xo_uniphy_gcc_tx_uniphy_gcc_rx_ubi32_pll_gpll0
[] = {
387 { .index
= DT_UNIPHY_TX_CLK
},
388 { .index
= DT_UNIPHY_RX_CLK
},
389 { .hw
= &ubi32_pll
.clkr
.hw
},
390 { .hw
= &gpll0
.clkr
.hw
},
393 static const struct parent_map gcc_xo_uniphy_gcc_tx_uniphy_gcc_rx_ubi32_pll_gpll0_map
[] = {
401 static const struct clk_parent_data gcc_pcie20_phy0_pipe_clk_xo
[] = {
402 { .index
= DT_PCIE20_PHY0_PIPE_CLK
},
406 static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map
[] = {
407 { P_PCIE20_PHY0_PIPE
, 0 },
411 static const struct clk_parent_data gcc_pcie20_phy1_pipe_clk_xo
[] = {
412 { .index
= DT_PCIE20_PHY1_PIPE_CLK
},
416 static const struct parent_map gcc_pcie20_phy1_pipe_clk_xo_map
[] = {
417 { P_PCIE20_PHY1_PIPE
, 0 },
421 static const struct clk_parent_data gcc_usb3phy_0_cc_pipe_clk_xo
[] = {
422 { .index
= DT_USB3_PHY0_CC_PIPE_CLK
},
426 static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map
[] = {
427 { P_USB3PHY_0_PIPE
, 0 },
431 static const struct freq_tbl ftbl_adss_pwm_clk_src
[] = {
432 F(24000000, P_XO
, 1, 0, 0),
433 F(100000000, P_GPLL0
, 8, 0, 0),
437 static struct clk_rcg2 adss_pwm_clk_src
= {
439 .freq_tbl
= ftbl_adss_pwm_clk_src
,
441 .parent_map
= gcc_xo_gpll0_map
,
442 .clkr
.hw
.init
= &(struct clk_init_data
) {
443 .name
= "adss_pwm_clk_src",
444 .parent_data
= gcc_xo_gpll0
,
445 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0
),
446 .ops
= &clk_rcg2_ops
,
450 static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src
[] = {
451 F(50000000, P_GPLL0
, 16, 0, 0),
455 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src
= {
457 .freq_tbl
= ftbl_blsp1_qup_i2c_apps_clk_src
,
459 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_map
,
460 .clkr
.hw
.init
= &(struct clk_init_data
) {
461 .name
= "blsp1_qup1_i2c_apps_clk_src",
462 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2
,
463 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2
),
464 .ops
= &clk_rcg2_ops
,
468 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src
= {
470 .freq_tbl
= ftbl_blsp1_qup_i2c_apps_clk_src
,
472 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_map
,
473 .clkr
.hw
.init
= &(struct clk_init_data
) {
474 .name
= "blsp1_qup2_i2c_apps_clk_src",
475 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2
,
476 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2
),
477 .ops
= &clk_rcg2_ops
,
481 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src
= {
483 .freq_tbl
= ftbl_blsp1_qup_i2c_apps_clk_src
,
485 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_map
,
486 .clkr
.hw
.init
= &(struct clk_init_data
) {
487 .name
= "blsp1_qup3_i2c_apps_clk_src",
488 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2
,
489 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2
),
490 .ops
= &clk_rcg2_ops
,
494 static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src
[] = {
495 F(960000, P_XO
, 10, 2, 5),
496 F(4800000, P_XO
, 5, 0, 0),
497 F(9600000, P_XO
, 2, 4, 5),
498 F(16000000, P_GPLL0
, 10, 1, 5),
499 F(24000000, P_XO
, 1, 0, 0),
500 F(50000000, P_GPLL0
, 16, 0, 0),
504 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src
= {
506 .freq_tbl
= ftbl_blsp1_qup_spi_apps_clk_src
,
509 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_map
,
510 .clkr
.hw
.init
= &(struct clk_init_data
) {
511 .name
= "blsp1_qup1_spi_apps_clk_src",
512 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2
,
513 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2
),
514 .ops
= &clk_rcg2_ops
,
518 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src
= {
520 .freq_tbl
= ftbl_blsp1_qup_spi_apps_clk_src
,
523 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_map
,
524 .clkr
.hw
.init
= &(struct clk_init_data
) {
525 .name
= "blsp1_qup2_spi_apps_clk_src",
526 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2
,
527 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2
),
528 .ops
= &clk_rcg2_ops
,
532 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src
= {
534 .freq_tbl
= ftbl_blsp1_qup_spi_apps_clk_src
,
537 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_map
,
538 .clkr
.hw
.init
= &(struct clk_init_data
) {
539 .name
= "blsp1_qup3_spi_apps_clk_src",
540 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2
,
541 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2
),
542 .ops
= &clk_rcg2_ops
,
546 static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src
[] = {
547 F(3686400, P_GPLL0_DIV2
, 1, 144, 15625),
548 F(7372800, P_GPLL0_DIV2
, 1, 288, 15625),
549 F(14745600, P_GPLL0_DIV2
, 1, 576, 15625),
550 F(24000000, P_XO
, 1, 0, 0),
551 F(25000000, P_GPLL0
, 16, 1, 2),
552 F(40000000, P_GPLL0
, 1, 1, 20),
553 F(46400000, P_GPLL0
, 1, 29, 500),
554 F(48000000, P_GPLL0
, 1, 3, 50),
555 F(51200000, P_GPLL0
, 1, 8, 125),
556 F(56000000, P_GPLL0
, 1, 7, 100),
557 F(58982400, P_GPLL0
, 1, 1152, 15625),
558 F(60000000, P_GPLL0
, 1, 3, 40),
559 F(64000000, P_GPLL0
, 10, 4, 5),
563 static struct clk_rcg2 blsp1_uart1_apps_clk_src
= {
565 .freq_tbl
= ftbl_blsp1_uart_apps_clk_src
,
568 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_map
,
569 .clkr
.hw
.init
= &(struct clk_init_data
) {
570 .name
= "blsp1_uart1_apps_clk_src",
571 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2
,
572 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2
),
573 .ops
= &clk_rcg2_ops
,
577 static struct clk_rcg2 blsp1_uart2_apps_clk_src
= {
579 .freq_tbl
= ftbl_blsp1_uart_apps_clk_src
,
582 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_map
,
583 .clkr
.hw
.init
= &(struct clk_init_data
) {
584 .name
= "blsp1_uart2_apps_clk_src",
585 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2
,
586 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2
),
587 .ops
= &clk_rcg2_ops
,
591 static const struct freq_tbl ftbl_crypto_clk_src
[] = {
592 F(160000000, P_GPLL0
, 5, 0, 0),
596 static struct clk_rcg2 crypto_clk_src
= {
598 .freq_tbl
= ftbl_crypto_clk_src
,
600 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_map
,
601 .clkr
.hw
.init
= &(struct clk_init_data
) {
602 .name
= "crypto_clk_src",
603 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2
,
604 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2
),
605 .ops
= &clk_rcg2_ops
,
609 static const struct freq_tbl ftbl_gmac0_tx_clk_src
[] = {
610 F(2500000, P_GEPHY_TX
, 5, 0, 0),
611 F(24000000, P_XO
, 1, 0, 0),
612 F(25000000, P_GEPHY_TX
, 5, 0, 0),
613 F(125000000, P_GEPHY_TX
, 1, 0, 0),
617 static struct clk_rcg2 gmac0_rx_clk_src
= {
619 .parent_map
= gcc_xo_gephy_gcc_rx_gephy_gcc_tx_ubi32_pll_gpll0_map
,
621 .freq_tbl
= ftbl_gmac0_tx_clk_src
,
622 .clkr
.hw
.init
= &(struct clk_init_data
) {
623 .name
= "gmac0_rx_clk_src",
624 .parent_data
= gcc_xo_gephy_gcc_rx_gephy_gcc_tx_ubi32_pll_gpll0
,
625 .num_parents
= ARRAY_SIZE(gcc_xo_gephy_gcc_rx_gephy_gcc_tx_ubi32_pll_gpll0
),
626 .ops
= &clk_rcg2_ops
,
630 static struct clk_regmap_div gmac0_rx_div_clk_src
= {
635 .hw
.init
= &(struct clk_init_data
) {
636 .name
= "gmac0_rx_div_clk_src",
637 .parent_hws
= (const struct clk_hw
*[]) {
638 &gmac0_rx_clk_src
.clkr
.hw
,
641 .ops
= &clk_regmap_div_ops
,
642 .flags
= CLK_SET_RATE_PARENT
,
647 static struct clk_rcg2 gmac0_tx_clk_src
= {
649 .parent_map
= gcc_xo_gephy_gcc_tx_gephy_gcc_rx_ubi32_pll_gpll0_map
,
651 .freq_tbl
= ftbl_gmac0_tx_clk_src
,
652 .clkr
.hw
.init
= &(struct clk_init_data
) {
653 .name
= "gmac0_tx_clk_src",
654 .parent_data
= gcc_xo_gephy_gcc_tx_gephy_gcc_rx_ubi32_pll_gpll0
,
655 .num_parents
= ARRAY_SIZE(gcc_xo_gephy_gcc_tx_gephy_gcc_rx_ubi32_pll_gpll0
),
656 .ops
= &clk_rcg2_ops
,
660 static struct clk_regmap_div gmac0_tx_div_clk_src
= {
665 .hw
.init
= &(struct clk_init_data
) {
666 .name
= "gmac0_tx_div_clk_src",
667 .parent_hws
= (const struct clk_hw
*[]) {
668 &gmac0_tx_clk_src
.clkr
.hw
,
671 .ops
= &clk_regmap_div_ops
,
672 .flags
= CLK_SET_RATE_PARENT
,
677 static const struct freq_tbl ftbl_gmac1_rx_clk_src
[] = {
678 F(2500000, P_UNIPHY_RX
, 12.5, 0, 0),
679 F(24000000, P_XO
, 1, 0, 0),
680 F(25000000, P_UNIPHY_RX
, 2.5, 0, 0),
681 F(125000000, P_UNIPHY_RX
, 2.5, 0, 0),
682 F(125000000, P_UNIPHY_RX
, 1, 0, 0),
683 F(312500000, P_UNIPHY_RX
, 1, 0, 0),
687 static struct clk_rcg2 gmac1_rx_clk_src
= {
689 .parent_map
= gcc_xo_uniphy_gcc_rx_uniphy_gcc_tx_ubi32_pll_gpll0_map
,
691 .freq_tbl
= ftbl_gmac1_rx_clk_src
,
692 .clkr
.hw
.init
= &(struct clk_init_data
) {
693 .name
= "gmac1_rx_clk_src",
694 .parent_data
= gcc_xo_uniphy_gcc_rx_uniphy_gcc_tx_ubi32_pll_gpll0
,
695 .num_parents
= ARRAY_SIZE(gcc_xo_uniphy_gcc_rx_uniphy_gcc_tx_ubi32_pll_gpll0
),
696 .ops
= &clk_rcg2_ops
,
700 static struct clk_regmap_div gmac1_rx_div_clk_src
= {
705 .hw
.init
= &(struct clk_init_data
) {
706 .name
= "gmac1_rx_div_clk_src",
707 .parent_hws
= (const struct clk_hw
*[]) {
708 &gmac1_rx_clk_src
.clkr
.hw
,
711 .ops
= &clk_regmap_div_ops
,
712 .flags
= CLK_SET_RATE_PARENT
,
717 static const struct freq_tbl ftbl_gmac1_tx_clk_src
[] = {
718 F(2500000, P_UNIPHY_TX
, 12.5, 0, 0),
719 F(24000000, P_XO
, 1, 0, 0),
720 F(25000000, P_UNIPHY_TX
, 2.5, 0, 0),
721 F(125000000, P_UNIPHY_TX
, 2.5, 0, 0),
722 F(125000000, P_UNIPHY_TX
, 1, 0, 0),
723 F(312500000, P_UNIPHY_TX
, 1, 0, 0),
727 static struct clk_rcg2 gmac1_tx_clk_src
= {
729 .parent_map
= gcc_xo_uniphy_gcc_tx_uniphy_gcc_rx_ubi32_pll_gpll0_map
,
731 .freq_tbl
= ftbl_gmac1_tx_clk_src
,
732 .clkr
.hw
.init
= &(struct clk_init_data
) {
733 .name
= "gmac1_tx_clk_src",
734 .parent_data
= gcc_xo_uniphy_gcc_tx_uniphy_gcc_rx_ubi32_pll_gpll0
,
735 .num_parents
= ARRAY_SIZE(gcc_xo_uniphy_gcc_tx_uniphy_gcc_rx_ubi32_pll_gpll0
),
736 .ops
= &clk_rcg2_ops
,
740 static struct clk_regmap_div gmac1_tx_div_clk_src
= {
745 .hw
.init
= &(struct clk_init_data
) {
746 .name
= "gmac1_tx_div_clk_src",
747 .parent_hws
= (const struct clk_hw
*[]) {
748 &gmac1_tx_clk_src
.clkr
.hw
,
751 .ops
= &clk_regmap_div_ops
,
752 .flags
= CLK_SET_RATE_PARENT
,
757 static const struct freq_tbl ftbl_gmac_clk_src
[] = {
758 F(240000000, P_GPLL4
, 5, 0, 0),
762 static struct clk_rcg2 gmac_clk_src
= {
764 .parent_map
= gcc_xo_gpll0_gpll4_map
,
766 .freq_tbl
= ftbl_gmac_clk_src
,
767 .clkr
.hw
.init
= &(struct clk_init_data
) {
768 .name
= "gmac_clk_src",
769 .parent_data
= gcc_xo_gpll0_gpll4
,
770 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll4
),
771 .ops
= &clk_rcg2_ops
,
775 static const struct freq_tbl ftbl_gp_clk_src
[] = {
776 F(200000000, P_GPLL0
, 4, 0, 0),
780 static struct clk_rcg2 gp1_clk_src
= {
782 .freq_tbl
= ftbl_gp_clk_src
,
785 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk_map
,
786 .clkr
.hw
.init
= &(struct clk_init_data
) {
787 .name
= "gp1_clk_src",
788 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk
,
789 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk
),
790 .ops
= &clk_rcg2_ops
,
794 static struct clk_rcg2 gp2_clk_src
= {
796 .freq_tbl
= ftbl_gp_clk_src
,
799 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk_map
,
800 .clkr
.hw
.init
= &(struct clk_init_data
) {
801 .name
= "gp2_clk_src",
802 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk
,
803 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk
),
804 .ops
= &clk_rcg2_ops
,
808 static struct clk_rcg2 gp3_clk_src
= {
810 .freq_tbl
= ftbl_gp_clk_src
,
813 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk_map
,
814 .clkr
.hw
.init
= &(struct clk_init_data
) {
815 .name
= "gp3_clk_src",
816 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk
,
817 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2_sleep_clk
),
818 .ops
= &clk_rcg2_ops
,
822 static const struct freq_tbl ftbl_lpass_axim_clk_src
[] = {
823 F(133333334, P_GPLL0
, 6, 0, 0),
827 static struct clk_rcg2 lpass_axim_clk_src
= {
829 .freq_tbl
= ftbl_lpass_axim_clk_src
,
831 .parent_map
= gcc_xo_gpll0_map
,
832 .clkr
.hw
.init
= &(struct clk_init_data
) {
833 .name
= "lpass_axim_clk_src",
834 .parent_data
= gcc_xo_gpll0
,
835 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0
),
836 .ops
= &clk_rcg2_ops
,
840 static const struct freq_tbl ftbl_lpass_sway_clk_src
[] = {
841 F(66666667, P_GPLL0
, 12, 0, 0),
845 static struct clk_rcg2 lpass_sway_clk_src
= {
847 .freq_tbl
= ftbl_lpass_sway_clk_src
,
849 .parent_map
= gcc_xo_gpll0_map
,
850 .clkr
.hw
.init
= &(struct clk_init_data
) {
851 .name
= "lpass_sway_clk_src",
852 .parent_data
= gcc_xo_gpll0
,
853 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0
),
854 .ops
= &clk_rcg2_ops
,
858 static const struct freq_tbl ftbl_pcie0_aux_clk_src
[] = {
859 F(2000000, P_XO
, 12, 0, 0),
863 static struct clk_rcg2 pcie0_aux_clk_src
= {
865 .freq_tbl
= ftbl_pcie0_aux_clk_src
,
868 .parent_map
= gcc_xo_gpll0_core_pi_sleep_clk_map
,
869 .clkr
.hw
.init
= &(struct clk_init_data
) {
870 .name
= "pcie0_aux_clk_src",
871 .parent_data
= gcc_xo_gpll0_core_pi_sleep_clk
,
872 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_core_pi_sleep_clk
),
873 .ops
= &clk_rcg2_ops
,
877 static const struct freq_tbl ftbl_pcie0_axi_clk_src
[] = {
878 F(240000000, P_GPLL4
, 5, 0, 0),
882 static struct clk_rcg2 pcie0_axi_clk_src
= {
884 .freq_tbl
= ftbl_pcie0_axi_clk_src
,
886 .parent_map
= gcc_xo_gpll0_gpll4_map
,
887 .clkr
.hw
.init
= &(struct clk_init_data
) {
888 .name
= "pcie0_axi_clk_src",
889 .parent_data
= gcc_xo_gpll0_gpll4
,
890 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll4
),
891 .ops
= &clk_rcg2_ops
,
895 static struct clk_rcg2 pcie1_aux_clk_src
= {
897 .freq_tbl
= ftbl_pcie0_aux_clk_src
,
900 .parent_map
= gcc_xo_gpll0_core_pi_sleep_clk_map
,
901 .clkr
.hw
.init
= &(struct clk_init_data
) {
902 .name
= "pcie1_aux_clk_src",
903 .parent_data
= gcc_xo_gpll0_core_pi_sleep_clk
,
904 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_core_pi_sleep_clk
),
905 .ops
= &clk_rcg2_ops
,
909 static struct clk_rcg2 pcie1_axi_clk_src
= {
911 .freq_tbl
= ftbl_gp_clk_src
,
913 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_map
,
914 .clkr
.hw
.init
= &(struct clk_init_data
) {
915 .name
= "pcie1_axi_clk_src",
916 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2
,
917 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2
),
918 .ops
= &clk_rcg2_ops
,
922 static struct clk_regmap_mux pcie0_pipe_clk_src
= {
926 .parent_map
= gcc_pcie20_phy0_pipe_clk_xo_map
,
928 .hw
.init
= &(struct clk_init_data
) {
929 .name
= "pcie0_pipe_clk_src",
930 .parent_data
= gcc_pcie20_phy0_pipe_clk_xo
,
931 .num_parents
= ARRAY_SIZE(gcc_pcie20_phy0_pipe_clk_xo
),
932 .ops
= &clk_regmap_mux_closest_ops
,
933 .flags
= CLK_SET_RATE_PARENT
,
938 static struct clk_regmap_mux pcie1_pipe_clk_src
= {
942 .parent_map
= gcc_pcie20_phy1_pipe_clk_xo_map
, .clkr
= {
943 .hw
.init
= &(struct clk_init_data
) {
944 .name
= "pcie1_pipe_clk_src",
945 .parent_data
= gcc_pcie20_phy1_pipe_clk_xo
,
946 .num_parents
= ARRAY_SIZE(gcc_pcie20_phy1_pipe_clk_xo
),
947 .ops
= &clk_regmap_mux_closest_ops
,
948 .flags
= CLK_SET_RATE_PARENT
,
953 static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src
[] = {
954 F(100000000, P_GPLL0
, 8, 0, 0),
958 static struct clk_rcg2 pcnoc_bfdcd_clk_src
= {
960 .freq_tbl
= ftbl_pcnoc_bfdcd_clk_src
,
962 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_map
,
963 .clkr
.hw
.init
= &(struct clk_init_data
) {
964 .name
= "pcnoc_bfdcd_clk_src",
965 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2
,
966 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2
),
967 .ops
= &clk_rcg2_ops
,
971 static struct clk_fixed_factor pcnoc_clk_src
= {
974 .hw
.init
= &(struct clk_init_data
) {
975 .name
= "pcnoc_clk_src",
976 .parent_hws
= (const struct clk_hw
*[]) {
977 &pcnoc_bfdcd_clk_src
.clkr
.hw
,
980 .ops
= &clk_fixed_factor_ops
,
981 .flags
= CLK_SET_RATE_PARENT
,
985 static const struct freq_tbl ftbl_qdss_at_clk_src
[] = {
986 F(240000000, P_GPLL4
, 5, 0, 0),
990 static struct clk_rcg2 qdss_at_clk_src
= {
992 .freq_tbl
= ftbl_qdss_at_clk_src
,
994 .parent_map
= gcc_xo_gpll4_gpll0_gpll0_out_main_div2_map1
,
995 .clkr
.hw
.init
= &(struct clk_init_data
) {
996 .name
= "qdss_at_clk_src",
997 .parent_data
= gcc_xo_gpll4_gpll0_gpll0_out_main_div2
,
998 .num_parents
= ARRAY_SIZE(gcc_xo_gpll4_gpll0_gpll0_out_main_div2
),
999 .ops
= &clk_rcg2_ops
,
1003 static const struct freq_tbl ftbl_qdss_stm_clk_src
[] = {
1004 F(200000000, P_GPLL0
, 4, 0, 0),
1008 static struct clk_rcg2 qdss_stm_clk_src
= {
1009 .cmd_rcgr
= 0x2902c,
1010 .freq_tbl
= ftbl_qdss_stm_clk_src
,
1012 .parent_map
= gcc_xo_gpll0_gpll0_out_main_div2_map
,
1013 .clkr
.hw
.init
= &(struct clk_init_data
) {
1014 .name
= "qdss_stm_clk_src",
1015 .parent_data
= gcc_xo_gpll0_gpll0_out_main_div2
,
1016 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2
),
1017 .ops
= &clk_rcg2_ops
,
1021 static const struct freq_tbl ftbl_qdss_traceclkin_clk_src
[] = {
1022 F(266666667, P_GPLL0
, 3, 0, 0),
1026 static struct clk_rcg2 qdss_traceclkin_clk_src
= {
1027 .cmd_rcgr
= 0x29048,
1028 .freq_tbl
= ftbl_qdss_traceclkin_clk_src
,
1030 .parent_map
= gcc_xo_gpll4_gpll0_gpll0_out_main_div2_map1
,
1031 .clkr
.hw
.init
= &(struct clk_init_data
) {
1032 .name
= "qdss_traceclkin_clk_src",
1033 .parent_data
= gcc_xo_gpll4_gpll0_gpll0_out_main_div2
,
1034 .num_parents
= ARRAY_SIZE(gcc_xo_gpll4_gpll0_gpll0_out_main_div2
),
1035 .ops
= &clk_rcg2_ops
,
1039 static const struct freq_tbl ftbl_qdss_tsctr_clk_src
[] = {
1040 F(600000000, P_GPLL4
, 2, 0, 0),
1044 static struct clk_rcg2 qdss_tsctr_clk_src
= {
1045 .cmd_rcgr
= 0x29064,
1046 .freq_tbl
= ftbl_qdss_tsctr_clk_src
,
1048 .parent_map
= gcc_xo_gpll4_gpll0_gpll0_out_main_div2_map1
,
1049 .clkr
.hw
.init
= &(struct clk_init_data
) {
1050 .name
= "qdss_tsctr_clk_src",
1051 .parent_data
= gcc_xo_gpll4_gpll0_gpll0_out_main_div2
,
1052 .num_parents
= ARRAY_SIZE(gcc_xo_gpll4_gpll0_gpll0_out_main_div2
),
1053 .ops
= &clk_rcg2_ops
,
1057 static struct clk_fixed_factor qdss_tsctr_div2_clk_src
= {
1060 .hw
.init
= &(struct clk_init_data
) {
1061 .name
= "qdss_tsctr_div2_clk_src",
1062 .parent_hws
= (const struct clk_hw
*[]) {
1063 &qdss_tsctr_clk_src
.clkr
.hw
,
1066 .flags
= CLK_SET_RATE_PARENT
,
1067 .ops
= &clk_fixed_factor_ops
,
1071 static struct clk_fixed_factor qdss_dap_sync_clk_src
= {
1074 .hw
.init
= &(struct clk_init_data
) {
1075 .name
= "qdss_dap_sync_clk_src",
1076 .parent_hws
= (const struct clk_hw
*[]) {
1077 &qdss_tsctr_clk_src
.clkr
.hw
,
1080 .ops
= &clk_fixed_factor_ops
,
1084 static struct clk_fixed_factor eud_at_clk_src
= {
1087 .hw
.init
= &(struct clk_init_data
) {
1088 .name
= "eud_at_clk_src",
1089 .parent_hws
= (const struct clk_hw
*[]) {
1090 &qdss_at_clk_src
.clkr
.hw
,
1093 .ops
= &clk_fixed_factor_ops
,
1094 .flags
= CLK_SET_RATE_PARENT
,
1098 static const struct freq_tbl ftbl_qpic_io_macro_clk_src
[] = {
1099 F(24000000, P_XO
, 1, 0, 0),
1100 F(100000000, P_GPLL0
, 8, 0, 0),
1101 F(200000000, P_GPLL0
, 4, 0, 0),
1102 F(320000000, P_GPLL0
, 2.5, 0, 0),
1106 static struct clk_rcg2 qpic_io_macro_clk_src
= {
1107 .cmd_rcgr
= 0x57010,
1108 .freq_tbl
= ftbl_qpic_io_macro_clk_src
,
1110 .parent_map
= gcc_xo_gpll0_gpll2_map
,
1111 .clkr
.hw
.init
= &(struct clk_init_data
) {
1112 .name
= "qpic_io_macro_clk_src",
1113 .parent_data
= gcc_xo_gpll0_gpll2
,
1114 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll2
),
1115 .ops
= &clk_rcg2_ops
,
1119 static const struct freq_tbl ftbl_sdcc1_apps_clk_src
[] = {
1120 F(143713, P_XO
, 1, 1, 167),
1121 F(400000, P_XO
, 1, 1, 60),
1122 F(24000000, P_XO
, 1, 0, 0),
1123 F(48000000, P_GPLL2
, 12, 1, 2),
1124 F(96000000, P_GPLL2
, 12, 0, 0),
1125 F(177777778, P_GPLL0
, 1, 2, 9),
1126 F(192000000, P_GPLL2
, 6, 0, 0),
1127 F(200000000, P_GPLL0
, 4, 0, 0),
1131 static struct clk_rcg2 sdcc1_apps_clk_src
= {
1132 .cmd_rcgr
= 0x42004,
1133 .freq_tbl
= ftbl_sdcc1_apps_clk_src
,
1136 .parent_map
= gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map
,
1137 .clkr
.hw
.init
= &(struct clk_init_data
) {
1138 .name
= "sdcc1_apps_clk_src",
1139 .parent_data
= gcc_xo_gpll0_gpll2_gpll0_out_main_div2
,
1140 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll2_gpll0_out_main_div2
),
1141 .ops
= &clk_rcg2_floor_ops
,
1145 static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src
[] = {
1146 F(266666667, P_GPLL0
, 3, 0, 0),
1150 static struct clk_rcg2 system_noc_bfdcd_clk_src
= {
1151 .cmd_rcgr
= 0x26004,
1152 .freq_tbl
= ftbl_system_noc_bfdcd_clk_src
,
1154 .parent_map
= gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map
,
1155 .clkr
.hw
.init
= &(struct clk_init_data
) {
1156 .name
= "system_noc_bfdcd_clk_src",
1157 .parent_data
= gcc_xo_gpll0_gpll2_gpll0_out_main_div2
,
1158 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll2_gpll0_out_main_div2
),
1159 .ops
= &clk_rcg2_ops
,
1163 static struct clk_fixed_factor system_noc_clk_src
= {
1166 .hw
.init
= &(struct clk_init_data
) {
1167 .name
= "system_noc_clk_src",
1168 .parent_hws
= (const struct clk_hw
*[]) {
1169 &system_noc_bfdcd_clk_src
.clkr
.hw
,
1172 .ops
= &clk_fixed_factor_ops
,
1173 .flags
= CLK_SET_RATE_PARENT
,
1177 static const struct freq_tbl ftbl_apss_axi_clk_src
[] = {
1178 F(400000000, P_GPLL0
, 2, 0, 0),
1182 static struct clk_rcg2 ubi0_axi_clk_src
= {
1183 .cmd_rcgr
= 0x68088,
1184 .freq_tbl
= ftbl_apss_axi_clk_src
,
1186 .parent_map
= gcc_xo_gpll0_gpll2_map
,
1187 .clkr
.hw
.init
= &(struct clk_init_data
) {
1188 .name
= "ubi0_axi_clk_src",
1189 .parent_data
= gcc_xo_gpll0_gpll2
,
1190 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll2
),
1191 .ops
= &clk_rcg2_ops
,
1192 .flags
= CLK_SET_RATE_PARENT
,
1196 static const struct freq_tbl ftbl_ubi0_core_clk_src
[] = {
1197 F(850000000, P_UBI32_PLL
, 1, 0, 0),
1198 F(1000000000, P_UBI32_PLL
, 1, 0, 0),
1202 static struct clk_rcg2 ubi0_core_clk_src
= {
1203 .cmd_rcgr
= 0x68100,
1204 .freq_tbl
= ftbl_ubi0_core_clk_src
,
1206 .parent_map
= gcc_xo_ubi32_gpll0_map
,
1207 .clkr
.hw
.init
= &(struct clk_init_data
) {
1208 .name
= "ubi0_core_clk_src",
1209 .parent_data
= gcc_xo_ubi32_gpll0
,
1210 .num_parents
= ARRAY_SIZE(gcc_xo_ubi32_gpll0
),
1211 .ops
= &clk_rcg2_ops
,
1212 .flags
= CLK_SET_RATE_PARENT
,
1216 static struct clk_rcg2 usb0_aux_clk_src
= {
1217 .cmd_rcgr
= 0x3e05c,
1218 .freq_tbl
= ftbl_pcie0_aux_clk_src
,
1221 .parent_map
= gcc_xo_gpll0_core_pi_sleep_clk_map
,
1222 .clkr
.hw
.init
= &(struct clk_init_data
) {
1223 .name
= "usb0_aux_clk_src",
1224 .parent_data
= gcc_xo_gpll0_core_pi_sleep_clk
,
1225 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_core_pi_sleep_clk
),
1226 .ops
= &clk_rcg2_ops
,
1230 static const struct freq_tbl ftbl_usb0_lfps_clk_src
[] = {
1231 F(25000000, P_GPLL0
, 16, 1, 2),
1235 static struct clk_rcg2 usb0_lfps_clk_src
= {
1236 .cmd_rcgr
= 0x3e090,
1237 .freq_tbl
= ftbl_usb0_lfps_clk_src
,
1240 .parent_map
= gcc_xo_gpll0_map
,
1241 .clkr
.hw
.init
= &(struct clk_init_data
) {
1242 .name
= "usb0_lfps_clk_src",
1243 .parent_data
= gcc_xo_gpll0
,
1244 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0
),
1245 .ops
= &clk_rcg2_ops
,
1249 static struct clk_rcg2 usb0_master_clk_src
= {
1250 .cmd_rcgr
= 0x3e00c,
1251 .freq_tbl
= ftbl_gp_clk_src
,
1254 .parent_map
= gcc_xo_gpll0_out_main_div2_gpll0_map
,
1255 .clkr
.hw
.init
= &(struct clk_init_data
) {
1256 .name
= "usb0_master_clk_src",
1257 .parent_data
= gcc_xo_gpll0_out_main_div2_gpll0
,
1258 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_out_main_div2_gpll0
),
1259 .ops
= &clk_rcg2_ops
,
1263 static const struct freq_tbl ftbl_usb0_mock_utmi_clk_src
[] = {
1264 F(60000000, P_GPLL4
, 10, 1, 2),
1268 static struct clk_rcg2 usb0_mock_utmi_clk_src
= {
1269 .cmd_rcgr
= 0x3e020,
1270 .freq_tbl
= ftbl_usb0_mock_utmi_clk_src
,
1273 .parent_map
= gcc_xo_gpll4_gpll0_gpll0_out_main_div2_map2
,
1274 .clkr
.hw
.init
= &(struct clk_init_data
) {
1275 .name
= "usb0_mock_utmi_clk_src",
1276 .parent_data
= gcc_xo_gpll4_gpll0_gpll0_out_main_div2
,
1277 .num_parents
= ARRAY_SIZE(gcc_xo_gpll4_gpll0_gpll0_out_main_div2
),
1278 .ops
= &clk_rcg2_ops
,
1282 static struct clk_regmap_mux usb0_pipe_clk_src
= {
1286 .parent_map
= gcc_usb3phy_0_cc_pipe_clk_xo_map
,
1288 .hw
.init
= &(struct clk_init_data
) {
1289 .name
= "usb0_pipe_clk_src",
1290 .parent_data
= gcc_usb3phy_0_cc_pipe_clk_xo
,
1291 .num_parents
= ARRAY_SIZE(gcc_usb3phy_0_cc_pipe_clk_xo
),
1292 .ops
= &clk_regmap_mux_closest_ops
,
1293 .flags
= CLK_SET_RATE_PARENT
,
1298 static const struct freq_tbl ftbl_q6_axi_clk_src
[] = {
1299 F(400000000, P_GPLL0
, 2, 0, 0),
1303 static struct clk_rcg2 q6_axi_clk_src
= {
1304 .cmd_rcgr
= 0x59120,
1305 .freq_tbl
= ftbl_q6_axi_clk_src
,
1307 .parent_map
= gcc_xo_gpll0_gpll2_gpll4_map
,
1308 .clkr
.hw
.init
= &(struct clk_init_data
) {
1309 .name
= "q6_axi_clk_src",
1310 .parent_data
= gcc_xo_gpll0_gpll2_gpll4
,
1311 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll2_gpll4
),
1312 .ops
= &clk_rcg2_ops
,
1316 static const struct freq_tbl ftbl_wcss_ahb_clk_src
[] = {
1317 F(133333333, P_GPLL0
, 6, 0, 0),
1321 static struct clk_rcg2 wcss_ahb_clk_src
= {
1322 .cmd_rcgr
= 0x59020,
1323 .freq_tbl
= ftbl_wcss_ahb_clk_src
,
1325 .parent_map
= gcc_xo_gpll0_map
,
1326 .clkr
.hw
.init
= &(struct clk_init_data
) {
1327 .name
= "wcss_ahb_clk_src",
1328 .parent_data
= gcc_xo_gpll0
,
1329 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0
),
1330 .ops
= &clk_rcg2_ops
,
1334 static struct clk_branch gcc_sleep_clk_src
= {
1335 .halt_reg
= 0x30000,
1337 .enable_reg
= 0x30000,
1338 .enable_mask
= BIT(1),
1339 .hw
.init
= &(struct clk_init_data
) {
1340 .name
= "gcc_sleep_clk_src",
1341 .parent_data
= gcc_sleep_clk_data
,
1342 .num_parents
= ARRAY_SIZE(gcc_sleep_clk_data
),
1343 .ops
= &clk_branch2_ops
,
1348 static struct clk_branch gcc_xo_clk_src
= {
1349 .halt_reg
= 0x30018,
1351 .enable_reg
= 0x30018,
1352 .enable_mask
= BIT(1),
1353 .hw
.init
= &(struct clk_init_data
) {
1354 .name
= "gcc_xo_clk_src",
1355 .parent_data
= gcc_xo_data
,
1356 .num_parents
= ARRAY_SIZE(gcc_xo_data
),
1357 .flags
= CLK_SET_RATE_PARENT
,
1358 .ops
= &clk_branch2_ops
,
1363 static struct clk_branch gcc_xo_clk
= {
1364 .halt_reg
= 0x30030,
1366 .enable_reg
= 0x30030,
1367 .enable_mask
= BIT(0),
1368 .hw
.init
= &(struct clk_init_data
) {
1369 .name
= "gcc_xo_clk",
1370 .parent_hws
= (const struct clk_hw
*[]) {
1371 &gcc_xo_clk_src
.clkr
.hw
,
1374 .flags
= CLK_SET_RATE_PARENT
,
1375 .ops
= &clk_branch2_ops
,
1380 static struct clk_branch gcc_adss_pwm_clk
= {
1381 .halt_reg
= 0x1f020,
1383 .enable_reg
= 0x1f020,
1384 .enable_mask
= BIT(0),
1385 .hw
.init
= &(struct clk_init_data
) {
1386 .name
= "gcc_adss_pwm_clk",
1387 .parent_hws
= (const struct clk_hw
*[]) {
1388 &adss_pwm_clk_src
.clkr
.hw
,
1391 .flags
= CLK_SET_RATE_PARENT
,
1392 .ops
= &clk_branch2_ops
,
1397 static struct clk_branch gcc_blsp1_ahb_clk
= {
1398 .halt_reg
= 0x01008,
1399 .halt_check
= BRANCH_HALT_VOTED
,
1401 .enable_reg
= 0x0b004,
1402 .enable_mask
= BIT(10),
1403 .hw
.init
= &(struct clk_init_data
) {
1404 .name
= "gcc_blsp1_ahb_clk",
1405 .parent_hws
= (const struct clk_hw
*[]) {
1409 .flags
= CLK_SET_RATE_PARENT
,
1410 .ops
= &clk_branch2_ops
,
1415 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk
= {
1416 .halt_reg
= 0x02008,
1418 .enable_reg
= 0x02008,
1419 .enable_mask
= BIT(0),
1420 .hw
.init
= &(struct clk_init_data
) {
1421 .name
= "gcc_blsp1_qup1_i2c_apps_clk",
1422 .parent_hws
= (const struct clk_hw
*[]) {
1423 &blsp1_qup1_i2c_apps_clk_src
.clkr
.hw
,
1426 .flags
= CLK_SET_RATE_PARENT
,
1427 .ops
= &clk_branch2_ops
,
1432 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk
= {
1433 .halt_reg
= 0x02004,
1435 .enable_reg
= 0x02004,
1436 .enable_mask
= BIT(0),
1437 .hw
.init
= &(struct clk_init_data
) {
1438 .name
= "gcc_blsp1_qup1_spi_apps_clk",
1439 .parent_hws
= (const struct clk_hw
*[]) {
1440 &blsp1_qup1_spi_apps_clk_src
.clkr
.hw
,
1443 .flags
= CLK_SET_RATE_PARENT
,
1444 .ops
= &clk_branch2_ops
,
1449 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk
= {
1450 .halt_reg
= 0x03010,
1452 .enable_reg
= 0x03010,
1453 .enable_mask
= BIT(0),
1454 .hw
.init
= &(struct clk_init_data
) {
1455 .name
= "gcc_blsp1_qup2_i2c_apps_clk",
1456 .parent_hws
= (const struct clk_hw
*[]) {
1457 &blsp1_qup2_i2c_apps_clk_src
.clkr
.hw
,
1460 .flags
= CLK_SET_RATE_PARENT
,
1461 .ops
= &clk_branch2_ops
,
1466 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk
= {
1467 .halt_reg
= 0x0300c,
1469 .enable_reg
= 0x0300c,
1470 .enable_mask
= BIT(0),
1471 .hw
.init
= &(struct clk_init_data
) {
1472 .name
= "gcc_blsp1_qup2_spi_apps_clk",
1473 .parent_hws
= (const struct clk_hw
*[]) {
1474 &blsp1_qup2_spi_apps_clk_src
.clkr
.hw
,
1477 .flags
= CLK_SET_RATE_PARENT
,
1478 .ops
= &clk_branch2_ops
,
1483 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk
= {
1484 .halt_reg
= 0x04010,
1486 .enable_reg
= 0x04010,
1487 .enable_mask
= BIT(0),
1488 .hw
.init
= &(struct clk_init_data
) {
1489 .name
= "gcc_blsp1_qup3_i2c_apps_clk",
1490 .parent_hws
= (const struct clk_hw
*[]) {
1491 &blsp1_qup3_i2c_apps_clk_src
.clkr
.hw
,
1494 .flags
= CLK_SET_RATE_PARENT
,
1495 .ops
= &clk_branch2_ops
,
1500 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk
= {
1501 .halt_reg
= 0x0400c,
1503 .enable_reg
= 0x0400c,
1504 .enable_mask
= BIT(0),
1505 .hw
.init
= &(struct clk_init_data
) {
1506 .name
= "gcc_blsp1_qup3_spi_apps_clk",
1507 .parent_hws
= (const struct clk_hw
*[]) {
1508 &blsp1_qup3_spi_apps_clk_src
.clkr
.hw
,
1511 .flags
= CLK_SET_RATE_PARENT
,
1512 .ops
= &clk_branch2_ops
,
1517 static struct clk_branch gcc_blsp1_uart1_apps_clk
= {
1518 .halt_reg
= 0x0203c,
1520 .enable_reg
= 0x0203c,
1521 .enable_mask
= BIT(0),
1522 .hw
.init
= &(struct clk_init_data
) {
1523 .name
= "gcc_blsp1_uart1_apps_clk",
1524 .parent_hws
= (const struct clk_hw
*[]) {
1525 &blsp1_uart1_apps_clk_src
.clkr
.hw
,
1528 .flags
= CLK_SET_RATE_PARENT
,
1529 .ops
= &clk_branch2_ops
,
1534 static struct clk_branch gcc_blsp1_uart2_apps_clk
= {
1535 .halt_reg
= 0x0302c,
1537 .enable_reg
= 0x0302c,
1538 .enable_mask
= BIT(0),
1539 .hw
.init
= &(struct clk_init_data
) {
1540 .name
= "gcc_blsp1_uart2_apps_clk",
1541 .parent_hws
= (const struct clk_hw
*[]) {
1542 &blsp1_uart2_apps_clk_src
.clkr
.hw
,
1545 .flags
= CLK_SET_RATE_PARENT
,
1546 .ops
= &clk_branch2_ops
,
1551 static struct clk_branch gcc_btss_lpo_clk
= {
1552 .halt_reg
= 0x1c004,
1554 .enable_reg
= 0x1c004,
1555 .enable_mask
= BIT(0),
1556 .hw
.init
= &(struct clk_init_data
) {
1557 .name
= "gcc_btss_lpo_clk",
1558 .ops
= &clk_branch2_ops
,
1563 static struct clk_branch gcc_cmn_blk_ahb_clk
= {
1564 .halt_reg
= 0x56308,
1566 .enable_reg
= 0x56308,
1567 .enable_mask
= BIT(0),
1568 .hw
.init
= &(struct clk_init_data
) {
1569 .name
= "gcc_cmn_blk_ahb_clk",
1570 .parent_hws
= (const struct clk_hw
*[]) {
1574 .flags
= CLK_SET_RATE_PARENT
,
1575 .ops
= &clk_branch2_ops
,
1580 static struct clk_branch gcc_cmn_blk_sys_clk
= {
1581 .halt_reg
= 0x5630c,
1583 .enable_reg
= 0x5630c,
1584 .enable_mask
= BIT(0),
1585 .hw
.init
= &(struct clk_init_data
) {
1586 .name
= "gcc_cmn_blk_sys_clk",
1587 .parent_hws
= (const struct clk_hw
*[]) {
1588 &gcc_xo_clk_src
.clkr
.hw
,
1591 .flags
= CLK_SET_RATE_PARENT
,
1592 .ops
= &clk_branch2_ops
,
1597 static struct clk_branch gcc_crypto_ahb_clk
= {
1598 .halt_reg
= 0x16024,
1599 .halt_check
= BRANCH_HALT_VOTED
,
1601 .enable_reg
= 0x0b004,
1602 .enable_mask
= BIT(0),
1603 .hw
.init
= &(struct clk_init_data
) {
1604 .name
= "gcc_crypto_ahb_clk",
1605 .parent_hws
= (const struct clk_hw
*[]) {
1609 .flags
= CLK_SET_RATE_PARENT
,
1610 .ops
= &clk_branch2_ops
,
1615 static struct clk_branch gcc_crypto_axi_clk
= {
1616 .halt_reg
= 0x16020,
1617 .halt_check
= BRANCH_HALT_VOTED
,
1619 .enable_reg
= 0x0b004,
1620 .enable_mask
= BIT(1),
1621 .hw
.init
= &(struct clk_init_data
) {
1622 .name
= "gcc_crypto_axi_clk",
1623 .parent_hws
= (const struct clk_hw
*[]) {
1627 .flags
= CLK_SET_RATE_PARENT
,
1628 .ops
= &clk_branch2_ops
,
1633 static struct clk_branch gcc_crypto_clk
= {
1634 .halt_reg
= 0x1601c,
1635 .halt_check
= BRANCH_HALT_VOTED
,
1637 .enable_reg
= 0x0b004,
1638 .enable_mask
= BIT(2),
1639 .hw
.init
= &(struct clk_init_data
) {
1640 .name
= "gcc_crypto_clk",
1641 .parent_hws
= (const struct clk_hw
*[]) {
1642 &crypto_clk_src
.clkr
.hw
,
1645 .flags
= CLK_SET_RATE_PARENT
,
1646 .ops
= &clk_branch2_ops
,
1651 static struct clk_branch gcc_dcc_clk
= {
1652 .halt_reg
= 0x77004,
1654 .enable_reg
= 0x77004,
1655 .enable_mask
= BIT(0),
1656 .hw
.init
= &(struct clk_init_data
) {
1657 .name
= "gcc_dcc_clk",
1658 .parent_hws
= (const struct clk_hw
*[]) {
1662 .flags
= CLK_SET_RATE_PARENT
,
1663 .ops
= &clk_branch2_ops
,
1668 static struct clk_branch gcc_gephy_rx_clk
= {
1669 .halt_reg
= 0x56010,
1670 .halt_check
= BRANCH_HALT_DELAY
,
1672 .enable_reg
= 0x56010,
1673 .enable_mask
= BIT(0),
1674 .hw
.init
= &(struct clk_init_data
) {
1675 .name
= "gcc_gephy_rx_clk",
1676 .parent_hws
= (const struct clk_hw
*[]) {
1677 &gmac0_rx_div_clk_src
.clkr
.hw
,
1680 .ops
= &clk_branch2_ops
,
1681 .flags
= CLK_SET_RATE_PARENT
,
1686 static struct clk_branch gcc_gephy_tx_clk
= {
1687 .halt_reg
= 0x56014,
1688 .halt_check
= BRANCH_HALT_DELAY
,
1690 .enable_reg
= 0x56014,
1691 .enable_mask
= BIT(0),
1692 .hw
.init
= &(struct clk_init_data
) {
1693 .name
= "gcc_gephy_tx_clk",
1694 .parent_hws
= (const struct clk_hw
*[]) {
1695 &gmac0_tx_div_clk_src
.clkr
.hw
,
1698 .ops
= &clk_branch2_ops
,
1699 .flags
= CLK_SET_RATE_PARENT
,
1704 static struct clk_branch gcc_gmac0_cfg_clk
= {
1705 .halt_reg
= 0x68304,
1707 .enable_reg
= 0x68304,
1708 .enable_mask
= BIT(0),
1709 .hw
.init
= &(struct clk_init_data
) {
1710 .name
= "gcc_gmac0_cfg_clk",
1711 .parent_hws
= (const struct clk_hw
*[]) {
1712 &gmac_clk_src
.clkr
.hw
,
1715 .flags
= CLK_SET_RATE_PARENT
,
1716 .ops
= &clk_branch2_ops
,
1721 static struct clk_branch gcc_gmac0_ptp_clk
= {
1722 .halt_reg
= 0x68300,
1724 .enable_reg
= 0x68300,
1725 .enable_mask
= BIT(0),
1726 .hw
.init
= &(struct clk_init_data
) {
1727 .name
= "gcc_gmac0_ptp_clk",
1728 .parent_hws
= (const struct clk_hw
*[]) {
1729 &gmac_clk_src
.clkr
.hw
,
1732 .flags
= CLK_SET_RATE_PARENT
,
1733 .ops
= &clk_branch2_ops
,
1738 static struct clk_branch gcc_gmac0_rx_clk
= {
1739 .halt_reg
= 0x68240,
1741 .enable_reg
= 0x68240,
1742 .enable_mask
= BIT(0),
1743 .hw
.init
= &(struct clk_init_data
) {
1744 .name
= "gcc_gmac0_rx_clk",
1745 .parent_hws
= (const struct clk_hw
*[]) {
1746 &gmac0_rx_div_clk_src
.clkr
.hw
,
1749 .ops
= &clk_branch2_ops
,
1750 .flags
= CLK_SET_RATE_PARENT
,
1755 static struct clk_branch gcc_gmac0_sys_clk
= {
1756 .halt_reg
= 0x68190,
1757 .halt_check
= BRANCH_HALT_DELAY
,
1760 .enable_reg
= 0x68190,
1761 .enable_mask
= BIT(0),
1762 .hw
.init
= &(struct clk_init_data
) {
1763 .name
= "gcc_gmac0_sys_clk",
1764 .parent_hws
= (const struct clk_hw
*[]) {
1765 &gmac_clk_src
.clkr
.hw
,
1768 .flags
= CLK_SET_RATE_PARENT
,
1769 .ops
= &clk_branch2_ops
,
1774 static struct clk_branch gcc_gmac0_tx_clk
= {
1775 .halt_reg
= 0x68244,
1777 .enable_reg
= 0x68244,
1778 .enable_mask
= BIT(0),
1779 .hw
.init
= &(struct clk_init_data
) {
1780 .name
= "gcc_gmac0_tx_clk",
1781 .parent_hws
= (const struct clk_hw
*[]) {
1782 &gmac0_tx_div_clk_src
.clkr
.hw
,
1785 .ops
= &clk_branch2_ops
,
1786 .flags
= CLK_SET_RATE_PARENT
,
1791 static struct clk_branch gcc_gmac1_cfg_clk
= {
1792 .halt_reg
= 0x68324,
1794 .enable_reg
= 0x68324,
1795 .enable_mask
= BIT(0),
1796 .hw
.init
= &(struct clk_init_data
) {
1797 .name
= "gcc_gmac1_cfg_clk",
1798 .parent_hws
= (const struct clk_hw
*[]) {
1799 &gmac_clk_src
.clkr
.hw
,
1802 .flags
= CLK_SET_RATE_PARENT
,
1803 .ops
= &clk_branch2_ops
,
1808 static struct clk_branch gcc_gmac1_ptp_clk
= {
1809 .halt_reg
= 0x68320,
1811 .enable_reg
= 0x68320,
1812 .enable_mask
= BIT(0),
1813 .hw
.init
= &(struct clk_init_data
) {
1814 .name
= "gcc_gmac1_ptp_clk",
1815 .parent_hws
= (const struct clk_hw
*[]) {
1816 &gmac_clk_src
.clkr
.hw
,
1819 .flags
= CLK_SET_RATE_PARENT
,
1820 .ops
= &clk_branch2_ops
,
1825 static struct clk_branch gcc_gmac1_rx_clk
= {
1826 .halt_reg
= 0x68248,
1828 .enable_reg
= 0x68248,
1829 .enable_mask
= BIT(0),
1830 .hw
.init
= &(struct clk_init_data
) {
1831 .name
= "gcc_gmac1_rx_clk",
1832 .parent_hws
= (const struct clk_hw
*[]) {
1833 &gmac1_rx_div_clk_src
.clkr
.hw
,
1836 .ops
= &clk_branch2_ops
,
1837 .flags
= CLK_SET_RATE_PARENT
,
1842 static struct clk_branch gcc_gmac1_sys_clk
= {
1843 .halt_reg
= 0x68310,
1845 .enable_reg
= 0x68310,
1846 .enable_mask
= BIT(0),
1847 .hw
.init
= &(struct clk_init_data
) {
1848 .name
= "gcc_gmac1_sys_clk",
1849 .parent_hws
= (const struct clk_hw
*[]) {
1850 &gmac_clk_src
.clkr
.hw
,
1853 .flags
= CLK_SET_RATE_PARENT
,
1854 .ops
= &clk_branch2_ops
,
1859 static struct clk_branch gcc_gmac1_tx_clk
= {
1860 .halt_reg
= 0x6824c,
1862 .enable_reg
= 0x6824c,
1863 .enable_mask
= BIT(0),
1864 .hw
.init
= &(struct clk_init_data
) {
1865 .name
= "gcc_gmac1_tx_clk",
1866 .parent_hws
= (const struct clk_hw
*[]) {
1867 &gmac1_tx_div_clk_src
.clkr
.hw
,
1870 .ops
= &clk_branch2_ops
,
1871 .flags
= CLK_SET_RATE_PARENT
,
1876 static struct clk_branch gcc_gp1_clk
= {
1877 .halt_reg
= 0x08000,
1879 .enable_reg
= 0x08000,
1880 .enable_mask
= BIT(0),
1881 .hw
.init
= &(struct clk_init_data
) {
1882 .name
= "gcc_gp1_clk",
1883 .parent_hws
= (const struct clk_hw
*[]) {
1884 &gp1_clk_src
.clkr
.hw
,
1887 .flags
= CLK_SET_RATE_PARENT
,
1888 .ops
= &clk_branch2_ops
,
1893 static struct clk_branch gcc_gp2_clk
= {
1894 .halt_reg
= 0x09000,
1896 .enable_reg
= 0x09000,
1897 .enable_mask
= BIT(0),
1898 .hw
.init
= &(struct clk_init_data
) {
1899 .name
= "gcc_gp2_clk",
1900 .parent_hws
= (const struct clk_hw
*[]) {
1901 &gp2_clk_src
.clkr
.hw
,
1904 .flags
= CLK_SET_RATE_PARENT
,
1905 .ops
= &clk_branch2_ops
,
1910 static struct clk_branch gcc_gp3_clk
= {
1911 .halt_reg
= 0x0a000,
1913 .enable_reg
= 0x0a000,
1914 .enable_mask
= BIT(0),
1915 .hw
.init
= &(struct clk_init_data
) {
1916 .name
= "gcc_gp3_clk",
1917 .parent_hws
= (const struct clk_hw
*[]) {
1918 &gp3_clk_src
.clkr
.hw
,
1921 .flags
= CLK_SET_RATE_PARENT
,
1922 .ops
= &clk_branch2_ops
,
1927 static struct clk_branch gcc_lpass_core_axim_clk
= {
1928 .halt_reg
= 0x2e048,
1929 .halt_check
= BRANCH_VOTED
,
1931 .enable_reg
= 0x2e048,
1932 .enable_mask
= BIT(0),
1933 .hw
.init
= &(struct clk_init_data
) {
1934 .name
= "gcc_lpass_core_axim_clk",
1935 .parent_hws
= (const struct clk_hw
*[]) {
1936 &lpass_axim_clk_src
.clkr
.hw
,
1939 .flags
= CLK_SET_RATE_PARENT
,
1940 .ops
= &clk_branch2_ops
,
1945 static struct clk_branch gcc_lpass_sway_clk
= {
1946 .halt_reg
= 0x2e04c,
1948 .enable_reg
= 0x2e04c,
1949 .enable_mask
= BIT(0),
1950 .hw
.init
= &(struct clk_init_data
) {
1951 .name
= "gcc_lpass_sway_clk",
1952 .parent_hws
= (const struct clk_hw
*[]) {
1953 &lpass_sway_clk_src
.clkr
.hw
,
1956 .flags
= CLK_SET_RATE_PARENT
,
1957 .ops
= &clk_branch2_ops
,
1962 static struct clk_branch gcc_mdio0_ahb_clk
= {
1963 .halt_reg
= 0x58004,
1965 .enable_reg
= 0x58004,
1966 .enable_mask
= BIT(0),
1967 .hw
.init
= &(struct clk_init_data
) {
1968 .name
= "gcc_mdioi0_ahb_clk",
1969 .parent_hws
= (const struct clk_hw
*[]) {
1973 .flags
= CLK_SET_RATE_PARENT
,
1974 .ops
= &clk_branch2_ops
,
1979 static struct clk_branch gcc_mdio1_ahb_clk
= {
1980 .halt_reg
= 0x58014,
1982 .enable_reg
= 0x58014,
1983 .enable_mask
= BIT(0),
1984 .hw
.init
= &(struct clk_init_data
) {
1985 .name
= "gcc_mdio1_ahb_clk",
1986 .parent_hws
= (const struct clk_hw
*[]) {
1990 .flags
= CLK_SET_RATE_PARENT
,
1991 .ops
= &clk_branch2_ops
,
1996 static struct clk_branch gcc_pcie0_ahb_clk
= {
1997 .halt_reg
= 0x75010,
1999 .enable_reg
= 0x75010,
2000 .enable_mask
= BIT(0),
2001 .hw
.init
= &(struct clk_init_data
) {
2002 .name
= "gcc_pcie0_ahb_clk",
2003 .parent_hws
= (const struct clk_hw
*[]) {
2007 .flags
= CLK_SET_RATE_PARENT
,
2008 .ops
= &clk_branch2_ops
,
2013 static struct clk_branch gcc_pcie0_aux_clk
= {
2014 .halt_reg
= 0x75014,
2016 .enable_reg
= 0x75014,
2017 .enable_mask
= BIT(0),
2018 .hw
.init
= &(struct clk_init_data
) {
2019 .name
= "gcc_pcie0_aux_clk",
2020 .parent_hws
= (const struct clk_hw
*[]) {
2021 &pcie0_aux_clk_src
.clkr
.hw
,
2024 .flags
= CLK_SET_RATE_PARENT
,
2025 .ops
= &clk_branch2_ops
,
2030 static struct clk_branch gcc_pcie0_axi_m_clk
= {
2031 .halt_reg
= 0x75008,
2033 .enable_reg
= 0x75008,
2034 .enable_mask
= BIT(0),
2035 .hw
.init
= &(struct clk_init_data
) {
2036 .name
= "gcc_pcie0_axi_m_clk",
2037 .parent_hws
= (const struct clk_hw
*[]) {
2038 &pcie0_axi_clk_src
.clkr
.hw
,
2041 .flags
= CLK_SET_RATE_PARENT
,
2042 .ops
= &clk_branch2_ops
,
2047 static struct clk_branch gcc_pcie0_axi_s_bridge_clk
= {
2048 .halt_reg
= 0x75048,
2050 .enable_reg
= 0x75048,
2051 .enable_mask
= BIT(0),
2052 .hw
.init
= &(struct clk_init_data
) {
2053 .name
= "gcc_pcie0_axi_s_bridge_clk",
2054 .parent_hws
= (const struct clk_hw
*[]) {
2055 &pcie0_axi_clk_src
.clkr
.hw
,
2058 .flags
= CLK_SET_RATE_PARENT
,
2059 .ops
= &clk_branch2_ops
,
2064 static struct clk_branch gcc_pcie0_axi_s_clk
= {
2065 .halt_reg
= 0x7500c,
2067 .enable_reg
= 0x7500c,
2068 .enable_mask
= BIT(0),
2069 .hw
.init
= &(struct clk_init_data
) {
2070 .name
= "gcc_pcie0_axi_s_clk",
2071 .parent_hws
= (const struct clk_hw
*[]) {
2072 &pcie0_axi_clk_src
.clkr
.hw
,
2075 .flags
= CLK_SET_RATE_PARENT
,
2076 .ops
= &clk_branch2_ops
,
2081 static struct clk_branch gcc_pcie0_pipe_clk
= {
2082 .halt_reg
= 0x75018,
2083 .halt_check
= BRANCH_HALT_DELAY
,
2086 .enable_reg
= 0x75018,
2087 .enable_mask
= BIT(0),
2088 .hw
.init
= &(struct clk_init_data
) {
2089 .name
= "gcc_pcie0_pipe_clk",
2090 .parent_hws
= (const struct clk_hw
*[]) {
2091 &pcie0_pipe_clk_src
.clkr
.hw
,
2094 .flags
= CLK_SET_RATE_PARENT
,
2095 .ops
= &clk_branch2_ops
,
2100 static struct clk_branch gcc_pcie1_ahb_clk
= {
2101 .halt_reg
= 0x76010,
2103 .enable_reg
= 0x76010,
2104 .enable_mask
= BIT(0),
2105 .hw
.init
= &(struct clk_init_data
) {
2106 .name
= "gcc_pcie1_ahb_clk",
2107 .parent_hws
= (const struct clk_hw
*[]) {
2111 .flags
= CLK_SET_RATE_PARENT
,
2112 .ops
= &clk_branch2_ops
,
2117 static struct clk_branch gcc_pcie1_aux_clk
= {
2118 .halt_reg
= 0x76014,
2120 .enable_reg
= 0x76014,
2121 .enable_mask
= BIT(0),
2122 .hw
.init
= &(struct clk_init_data
) {
2123 .name
= "gcc_pcie1_aux_clk",
2124 .parent_hws
= (const struct clk_hw
*[]) {
2125 &pcie1_aux_clk_src
.clkr
.hw
,
2128 .flags
= CLK_SET_RATE_PARENT
,
2129 .ops
= &clk_branch2_ops
,
2134 static struct clk_branch gcc_pcie1_axi_m_clk
= {
2135 .halt_reg
= 0x76008,
2137 .enable_reg
= 0x76008,
2138 .enable_mask
= BIT(0),
2139 .hw
.init
= &(struct clk_init_data
) {
2140 .name
= "gcc_pcie1_axi_m_clk",
2141 .parent_hws
= (const struct clk_hw
*[]) {
2142 &pcie1_axi_clk_src
.clkr
.hw
,
2145 .flags
= CLK_SET_RATE_PARENT
,
2146 .ops
= &clk_branch2_ops
,
2151 static struct clk_branch gcc_pcie1_axi_s_bridge_clk
= {
2152 .halt_reg
= 0x76048,
2154 .enable_reg
= 0x76048,
2155 .enable_mask
= BIT(0),
2156 .hw
.init
= &(struct clk_init_data
) {
2157 .name
= "gcc_pcie1_axi_s_bridge_clk",
2158 .parent_hws
= (const struct clk_hw
*[]) {
2159 &pcie1_axi_clk_src
.clkr
.hw
,
2162 .flags
= CLK_SET_RATE_PARENT
,
2163 .ops
= &clk_branch2_ops
,
2168 static struct clk_branch gcc_pcie1_axi_s_clk
= {
2169 .halt_reg
= 0x7600c,
2171 .enable_reg
= 0x7600c,
2172 .enable_mask
= BIT(0),
2173 .hw
.init
= &(struct clk_init_data
) {
2174 .name
= "gcc_pcie1_axi_s_clk",
2175 .parent_hws
= (const struct clk_hw
*[]) {
2176 &pcie1_axi_clk_src
.clkr
.hw
,
2179 .flags
= CLK_SET_RATE_PARENT
,
2180 .ops
= &clk_branch2_ops
,
2185 static struct clk_branch gcc_pcie1_pipe_clk
= {
2186 .halt_reg
= 0x76018,
2187 .halt_check
= BRANCH_HALT_DELAY
,
2190 .enable_reg
= 0x76018,
2191 .enable_mask
= BIT(0),
2192 .hw
.init
= &(struct clk_init_data
) {
2193 .name
= "gcc_pcie1_pipe_clk",
2194 .parent_hws
= (const struct clk_hw
*[]) {
2195 &pcie1_pipe_clk_src
.clkr
.hw
,
2198 .flags
= CLK_SET_RATE_PARENT
,
2199 .ops
= &clk_branch2_ops
,
2204 static struct clk_branch gcc_prng_ahb_clk
= {
2205 .halt_reg
= 0x13004,
2206 .halt_check
= BRANCH_HALT_VOTED
,
2208 .enable_reg
= 0x0b004,
2209 .enable_mask
= BIT(8),
2210 .hw
.init
= &(struct clk_init_data
) {
2211 .name
= "gcc_prng_ahb_clk",
2212 .parent_hws
= (const struct clk_hw
*[]) {
2216 .flags
= CLK_SET_RATE_PARENT
,
2217 .ops
= &clk_branch2_ops
,
2222 static struct clk_branch gcc_q6_ahb_clk
= {
2223 .halt_reg
= 0x59138,
2225 .enable_reg
= 0x59138,
2226 .enable_mask
= BIT(0),
2227 .hw
.init
= &(struct clk_init_data
) {
2228 .name
= "gcc_q6_ahb_clk",
2229 .parent_hws
= (const struct clk_hw
*[]) {
2230 &wcss_ahb_clk_src
.clkr
.hw
,
2233 .flags
= CLK_SET_RATE_PARENT
,
2234 .ops
= &clk_branch2_ops
,
2239 static struct clk_branch gcc_q6_ahb_s_clk
= {
2240 .halt_reg
= 0x5914c,
2242 .enable_reg
= 0x5914c,
2243 .enable_mask
= BIT(0),
2244 .hw
.init
= &(struct clk_init_data
) {
2245 .name
= "gcc_q6_ahb_s_clk",
2246 .parent_hws
= (const struct clk_hw
*[]) {
2247 &wcss_ahb_clk_src
.clkr
.hw
,
2250 .flags
= CLK_SET_RATE_PARENT
,
2251 .ops
= &clk_branch2_ops
,
2256 static struct clk_branch gcc_q6_axim_clk
= {
2257 .halt_reg
= 0x5913c,
2259 .enable_reg
= 0x5913c,
2260 .enable_mask
= BIT(0),
2261 .hw
.init
= &(struct clk_init_data
) {
2262 .name
= "gcc_q6_axim_clk",
2263 .parent_hws
= (const struct clk_hw
*[]) {
2264 &q6_axi_clk_src
.clkr
.hw
,
2267 .flags
= CLK_SET_RATE_PARENT
,
2268 .ops
= &clk_branch2_ops
,
2273 static struct clk_branch gcc_q6_axim2_clk
= {
2274 .halt_reg
= 0x59150,
2276 .enable_reg
= 0x59150,
2277 .enable_mask
= BIT(0),
2278 .hw
.init
= &(struct clk_init_data
) {
2279 .name
= "gcc_q6_axim2_clk",
2280 .parent_hws
= (const struct clk_hw
*[]) {
2281 &q6_axi_clk_src
.clkr
.hw
,
2284 .flags
= CLK_SET_RATE_PARENT
,
2285 .ops
= &clk_branch2_ops
,
2290 static struct clk_branch gcc_q6_axis_clk
= {
2291 .halt_reg
= 0x59154,
2293 .enable_reg
= 0x59154,
2294 .enable_mask
= BIT(0),
2295 .hw
.init
= &(struct clk_init_data
) {
2296 .name
= "gcc_q6_axis_clk",
2297 .parent_hws
= (const struct clk_hw
*[]) {
2298 &system_noc_clk_src
.hw
,
2301 .flags
= CLK_SET_RATE_PARENT
,
2302 .ops
= &clk_branch2_ops
,
2307 static struct clk_branch gcc_q6_tsctr_1to2_clk
= {
2308 .halt_reg
= 0x59148,
2310 .enable_reg
= 0x59148,
2311 .enable_mask
= BIT(0),
2312 .hw
.init
= &(struct clk_init_data
) {
2313 .name
= "gcc_q6_tsctr_1to2_clk",
2314 .parent_hws
= (const struct clk_hw
*[]) {
2315 &qdss_tsctr_div2_clk_src
.hw
,
2318 .flags
= CLK_SET_RATE_PARENT
,
2319 .ops
= &clk_branch2_ops
,
2324 static struct clk_branch gcc_q6ss_atbm_clk
= {
2325 .halt_reg
= 0x59144,
2327 .enable_reg
= 0x59144,
2328 .enable_mask
= BIT(0),
2329 .hw
.init
= &(struct clk_init_data
) {
2330 .name
= "gcc_q6ss_atbm_clk",
2331 .parent_hws
= (const struct clk_hw
*[]) {
2332 &qdss_at_clk_src
.clkr
.hw
,
2335 .flags
= CLK_SET_RATE_PARENT
,
2336 .ops
= &clk_branch2_ops
,
2341 static struct clk_branch gcc_q6ss_pclkdbg_clk
= {
2342 .halt_reg
= 0x59140,
2344 .enable_reg
= 0x59140,
2345 .enable_mask
= BIT(0),
2346 .hw
.init
= &(struct clk_init_data
) {
2347 .name
= "gcc_q6ss_pclkdbg_clk",
2348 .parent_hws
= (const struct clk_hw
*[]) {
2349 &qdss_dap_sync_clk_src
.hw
,
2352 .flags
= CLK_SET_RATE_PARENT
,
2353 .ops
= &clk_branch2_ops
,
2358 static struct clk_branch gcc_q6ss_trig_clk
= {
2359 .halt_reg
= 0x59128,
2361 .enable_reg
= 0x59128,
2362 .enable_mask
= BIT(0),
2363 .hw
.init
= &(struct clk_init_data
) {
2364 .name
= "gcc_q6ss_trig_clk",
2365 .parent_hws
= (const struct clk_hw
*[]) {
2366 &qdss_dap_sync_clk_src
.hw
,
2369 .flags
= CLK_SET_RATE_PARENT
,
2370 .ops
= &clk_branch2_ops
,
2375 static struct clk_branch gcc_qdss_at_clk
= {
2376 .halt_reg
= 0x29024,
2378 .enable_reg
= 0x29024,
2379 .enable_mask
= BIT(0),
2380 .hw
.init
= &(struct clk_init_data
) {
2381 .name
= "gcc_qdss_at_clk",
2382 .parent_hws
= (const struct clk_hw
*[]) {
2383 &qdss_at_clk_src
.clkr
.hw
,
2386 .flags
= CLK_SET_RATE_PARENT
,
2387 .ops
= &clk_branch2_ops
,
2392 static struct clk_branch gcc_qdss_dap_clk
= {
2393 .halt_reg
= 0x29084,
2395 .enable_reg
= 0x29084,
2396 .enable_mask
= BIT(0),
2397 .hw
.init
= &(struct clk_init_data
) {
2398 .name
= "gcc_qdss_dap_clk",
2399 .parent_hws
= (const struct clk_hw
*[]) {
2400 &qdss_tsctr_clk_src
.clkr
.hw
,
2403 .flags
= CLK_SET_RATE_PARENT
,
2404 .ops
= &clk_branch2_ops
,
2409 static struct clk_branch gcc_qdss_cfg_ahb_clk
= {
2410 .halt_reg
= 0x29008,
2412 .enable_reg
= 0x29008,
2413 .enable_mask
= BIT(0),
2414 .hw
.init
= &(struct clk_init_data
) {
2415 .name
= "gcc_qdss_cfg_ahb_clk",
2416 .parent_hws
= (const struct clk_hw
*[]) {
2420 .flags
= CLK_SET_RATE_PARENT
,
2421 .ops
= &clk_branch2_ops
,
2426 static struct clk_branch gcc_qdss_dap_ahb_clk
= {
2427 .halt_reg
= 0x29004,
2429 .enable_reg
= 0x29004,
2430 .enable_mask
= BIT(0),
2431 .hw
.init
= &(struct clk_init_data
) {
2432 .name
= "gcc_qdss_dap_ahb_clk",
2433 .parent_hws
= (const struct clk_hw
*[]) {
2437 .flags
= CLK_SET_RATE_PARENT
,
2438 .ops
= &clk_branch2_ops
,
2443 static struct clk_branch gcc_qdss_etr_usb_clk
= {
2444 .halt_reg
= 0x29028,
2446 .enable_reg
= 0x29028,
2447 .enable_mask
= BIT(0),
2448 .hw
.init
= &(struct clk_init_data
) {
2449 .name
= "gcc_qdss_etr_usb_clk",
2450 .parent_hws
= (const struct clk_hw
*[]) {
2451 &system_noc_clk_src
.hw
,
2454 .flags
= CLK_SET_RATE_PARENT
,
2455 .ops
= &clk_branch2_ops
,
2460 static struct clk_branch gcc_qdss_eud_at_clk
= {
2461 .halt_reg
= 0x29020,
2463 .enable_reg
= 0x29020,
2464 .enable_mask
= BIT(0),
2465 .hw
.init
= &(struct clk_init_data
) {
2466 .name
= "gcc_qdss_eud_at_clk",
2467 .parent_hws
= (const struct clk_hw
*[]) {
2471 .flags
= CLK_SET_RATE_PARENT
,
2472 .ops
= &clk_branch2_ops
,
2477 static struct clk_branch gcc_qdss_stm_clk
= {
2478 .halt_reg
= 0x29044,
2480 .enable_reg
= 0x29044,
2481 .enable_mask
= BIT(0),
2482 .hw
.init
= &(struct clk_init_data
) {
2483 .name
= "gcc_qdss_stm_clk",
2484 .parent_hws
= (const struct clk_hw
*[]) {
2485 &qdss_stm_clk_src
.clkr
.hw
,
2488 .flags
= CLK_SET_RATE_PARENT
,
2489 .ops
= &clk_branch2_ops
,
2494 static struct clk_branch gcc_qdss_traceclkin_clk
= {
2495 .halt_reg
= 0x29060,
2497 .enable_reg
= 0x29060,
2498 .enable_mask
= BIT(0),
2499 .hw
.init
= &(struct clk_init_data
) {
2500 .name
= "gcc_qdss_traceclkin_clk",
2501 .parent_hws
= (const struct clk_hw
*[]) {
2502 &qdss_traceclkin_clk_src
.clkr
.hw
,
2505 .flags
= CLK_SET_RATE_PARENT
,
2506 .ops
= &clk_branch2_ops
,
2511 static struct clk_branch gcc_qdss_tsctr_div8_clk
= {
2512 .halt_reg
= 0x2908c,
2514 .enable_reg
= 0x2908c,
2515 .enable_mask
= BIT(0),
2516 .hw
.init
= &(struct clk_init_data
) {
2517 .name
= "gcc_qdss_tsctr_div8_clk",
2518 .parent_hws
= (const struct clk_hw
*[]) {
2519 &qdss_tsctr_clk_src
.clkr
.hw
,
2522 .flags
= CLK_SET_RATE_PARENT
,
2523 .ops
= &clk_branch2_ops
,
2528 static struct clk_branch gcc_qpic_ahb_clk
= {
2529 .halt_reg
= 0x57024,
2531 .enable_reg
= 0x57024,
2532 .enable_mask
= BIT(0),
2533 .hw
.init
= &(struct clk_init_data
) {
2534 .name
= "gcc_qpic_ahb_clk",
2535 .parent_hws
= (const struct clk_hw
*[]) {
2539 .flags
= CLK_SET_RATE_PARENT
,
2540 .ops
= &clk_branch2_ops
,
2545 static struct clk_branch gcc_qpic_clk
= {
2546 .halt_reg
= 0x57020,
2548 .enable_reg
= 0x57020,
2549 .enable_mask
= BIT(0),
2550 .hw
.init
= &(struct clk_init_data
) {
2551 .name
= "gcc_qpic_clk",
2552 .parent_hws
= (const struct clk_hw
*[]) {
2556 .flags
= CLK_SET_RATE_PARENT
,
2557 .ops
= &clk_branch2_ops
,
2562 static struct clk_branch gcc_qpic_io_macro_clk
= {
2563 .halt_reg
= 0x5701c,
2565 .enable_reg
= 0x5701c,
2566 .enable_mask
= BIT(0),
2567 .hw
.init
= &(struct clk_init_data
) {
2568 .name
= "gcc_qpic_io_macro_clk",
2569 .parent_hws
= (const struct clk_hw
*[]) {
2570 &qpic_io_macro_clk_src
.clkr
.hw
,
2573 .flags
= CLK_SET_RATE_PARENT
,
2574 .ops
= &clk_branch2_ops
,
2579 static struct clk_branch gcc_sdcc1_ahb_clk
= {
2580 .halt_reg
= 0x4201c,
2582 .enable_reg
= 0x4201c,
2583 .enable_mask
= BIT(0),
2584 .hw
.init
= &(struct clk_init_data
) {
2585 .name
= "gcc_sdcc1_ahb_clk",
2586 .parent_hws
= (const struct clk_hw
*[]) {
2590 .flags
= CLK_SET_RATE_PARENT
,
2591 .ops
= &clk_branch2_ops
,
2596 static struct clk_branch gcc_sdcc1_apps_clk
= {
2597 .halt_reg
= 0x42018,
2599 .enable_reg
= 0x42018,
2600 .enable_mask
= BIT(0),
2601 .hw
.init
= &(struct clk_init_data
) {
2602 .name
= "gcc_sdcc1_apps_clk",
2603 .parent_hws
= (const struct clk_hw
*[]) {
2604 &sdcc1_apps_clk_src
.clkr
.hw
,
2607 .flags
= CLK_SET_RATE_PARENT
,
2608 .ops
= &clk_branch2_ops
,
2613 static struct clk_branch gcc_snoc_gmac0_ahb_clk
= {
2614 .halt_reg
= 0x260a0,
2616 .enable_reg
= 0x260a0,
2617 .enable_mask
= BIT(0),
2618 .hw
.init
= &(struct clk_init_data
) {
2619 .name
= "gcc_snoc_gmac0_ahb_clk",
2620 .parent_hws
= (const struct clk_hw
*[]) {
2621 &gmac_clk_src
.clkr
.hw
,
2624 .flags
= CLK_SET_RATE_PARENT
,
2625 .ops
= &clk_branch2_ops
,
2630 static struct clk_branch gcc_snoc_gmac0_axi_clk
= {
2631 .halt_reg
= 0x26084,
2633 .enable_reg
= 0x26084,
2634 .enable_mask
= BIT(0),
2635 .hw
.init
= &(struct clk_init_data
) {
2636 .name
= "gcc_snoc_gmac0_axi_clk",
2637 .parent_hws
= (const struct clk_hw
*[]) {
2638 &gmac_clk_src
.clkr
.hw
,
2641 .flags
= CLK_SET_RATE_PARENT
,
2642 .ops
= &clk_branch2_ops
,
2647 static struct clk_branch gcc_snoc_gmac1_ahb_clk
= {
2648 .halt_reg
= 0x260a4,
2650 .enable_reg
= 0x260a4,
2651 .enable_mask
= BIT(0),
2652 .hw
.init
= &(struct clk_init_data
) {
2653 .name
= "gcc_snoc_gmac1_ahb_clk",
2654 .parent_hws
= (const struct clk_hw
*[]) {
2655 &gmac_clk_src
.clkr
.hw
,
2658 .flags
= CLK_SET_RATE_PARENT
,
2659 .ops
= &clk_branch2_ops
,
2664 static struct clk_branch gcc_snoc_gmac1_axi_clk
= {
2665 .halt_reg
= 0x26088,
2667 .enable_reg
= 0x26088,
2668 .enable_mask
= BIT(0),
2669 .hw
.init
= &(struct clk_init_data
) {
2670 .name
= "gcc_snoc_gmac1_axi_clk",
2671 .parent_hws
= (const struct clk_hw
*[]) {
2672 &gmac_clk_src
.clkr
.hw
,
2675 .flags
= CLK_SET_RATE_PARENT
,
2676 .ops
= &clk_branch2_ops
,
2681 static struct clk_branch gcc_snoc_lpass_axim_clk
= {
2682 .halt_reg
= 0x26074,
2684 .enable_reg
= 0x26074,
2685 .enable_mask
= BIT(0),
2686 .hw
.init
= &(struct clk_init_data
) {
2687 .name
= "gcc_snoc_lpass_axim_clk",
2688 .parent_hws
= (const struct clk_hw
*[]) {
2689 &lpass_axim_clk_src
.clkr
.hw
,
2692 .flags
= CLK_SET_RATE_PARENT
,
2693 .ops
= &clk_branch2_ops
,
2698 static struct clk_branch gcc_snoc_lpass_sway_clk
= {
2699 .halt_reg
= 0x26078,
2701 .enable_reg
= 0x26078,
2702 .enable_mask
= BIT(0),
2703 .hw
.init
= &(struct clk_init_data
) {
2704 .name
= "gcc_snoc_lpass_sway_clk",
2705 .parent_hws
= (const struct clk_hw
*[]) {
2706 &lpass_sway_clk_src
.clkr
.hw
,
2709 .flags
= CLK_SET_RATE_PARENT
,
2710 .ops
= &clk_branch2_ops
,
2715 static struct clk_branch gcc_snoc_ubi0_axi_clk
= {
2716 .halt_reg
= 0x26094,
2718 .enable_reg
= 0x26094,
2719 .enable_mask
= BIT(0),
2720 .hw
.init
= &(struct clk_init_data
) {
2721 .name
= "gcc_snoc_ubi0_axi_clk",
2722 .parent_hws
= (const struct clk_hw
*[]) {
2723 &ubi0_axi_clk_src
.clkr
.hw
,
2726 .flags
= CLK_SET_RATE_PARENT
,
2727 .ops
= &clk_branch2_ops
,
2732 static struct clk_branch gcc_sys_noc_pcie0_axi_clk
= {
2733 .halt_reg
= 0x26048,
2735 .enable_reg
= 0x26048,
2736 .enable_mask
= BIT(0),
2737 .hw
.init
= &(struct clk_init_data
) {
2738 .name
= "gcc_sys_noc_pcie0_axi_clk",
2739 .parent_hws
= (const struct clk_hw
*[]) {
2740 &pcie0_axi_clk_src
.clkr
.hw
,
2743 .flags
= CLK_SET_RATE_PARENT
,
2744 .ops
= &clk_branch2_ops
,
2749 static struct clk_branch gcc_sys_noc_pcie1_axi_clk
= {
2750 .halt_reg
= 0x2604c,
2752 .enable_reg
= 0x2604c,
2753 .enable_mask
= BIT(0),
2754 .hw
.init
= &(struct clk_init_data
) {
2755 .name
= "gcc_sys_noc_pcie1_axi_clk",
2756 .parent_hws
= (const struct clk_hw
*[]) {
2757 &pcie1_axi_clk_src
.clkr
.hw
,
2760 .flags
= CLK_SET_RATE_PARENT
,
2761 .ops
= &clk_branch2_ops
,
2766 static struct clk_branch gcc_sys_noc_qdss_stm_axi_clk
= {
2767 .halt_reg
= 0x26024,
2769 .enable_reg
= 0x26024,
2770 .enable_mask
= BIT(0),
2771 .hw
.init
= &(struct clk_init_data
) {
2772 .name
= "gcc_sys_noc_qdss_stm_axi_clk",
2773 .parent_hws
= (const struct clk_hw
*[]) {
2774 &qdss_stm_clk_src
.clkr
.hw
,
2777 .flags
= CLK_SET_RATE_PARENT
,
2778 .ops
= &clk_branch2_ops
,
2783 static struct clk_branch gcc_sys_noc_usb0_axi_clk
= {
2784 .halt_reg
= 0x26040,
2786 .enable_reg
= 0x26040,
2787 .enable_mask
= BIT(0),
2788 .hw
.init
= &(struct clk_init_data
) {
2789 .name
= "gcc_sys_noc_usb0_axi_clk",
2790 .parent_hws
= (const struct clk_hw
*[]) {
2791 &usb0_master_clk_src
.clkr
.hw
,
2794 .flags
= CLK_SET_RATE_PARENT
,
2795 .ops
= &clk_branch2_ops
,
2800 static struct clk_branch gcc_sys_noc_wcss_ahb_clk
= {
2801 .halt_reg
= 0x26034,
2803 .enable_reg
= 0x26034,
2804 .enable_mask
= BIT(0),
2805 .hw
.init
= &(struct clk_init_data
) {
2806 .name
= "gcc_sys_noc_wcss_ahb_clk",
2807 .parent_hws
= (const struct clk_hw
*[]) {
2808 &wcss_ahb_clk_src
.clkr
.hw
,
2811 .flags
= CLK_SET_RATE_PARENT
,
2812 .ops
= &clk_branch2_ops
,
2817 static struct clk_branch gcc_ubi0_axi_clk
= {
2818 .halt_reg
= 0x68200,
2819 .halt_check
= BRANCH_HALT_DELAY
,
2821 .enable_reg
= 0x68200,
2822 .enable_mask
= BIT(0),
2823 .hw
.init
= &(struct clk_init_data
) {
2824 .name
= "gcc_ubi0_axi_clk",
2825 .parent_hws
= (const struct clk_hw
*[]) {
2826 &ubi0_axi_clk_src
.clkr
.hw
,
2829 .flags
= CLK_SET_RATE_PARENT
,
2830 .ops
= &clk_branch2_ops
,
2835 static struct clk_branch gcc_ubi0_cfg_clk
= {
2836 .halt_reg
= 0x68160,
2837 .halt_check
= BRANCH_HALT_DELAY
,
2839 .enable_reg
= 0x68160,
2840 .enable_mask
= BIT(0),
2841 .hw
.init
= &(struct clk_init_data
) {
2842 .name
= "gcc_ubi0_cfg_clk",
2843 .parent_hws
= (const struct clk_hw
*[]) {
2847 .flags
= CLK_SET_RATE_PARENT
,
2848 .ops
= &clk_branch2_ops
,
2853 static struct clk_branch gcc_ubi0_dbg_clk
= {
2854 .halt_reg
= 0x68214,
2855 .halt_check
= BRANCH_HALT_DELAY
,
2857 .enable_reg
= 0x68214,
2858 .enable_mask
= BIT(0),
2859 .hw
.init
= &(struct clk_init_data
) {
2860 .name
= "gcc_ubi0_dbg_clk",
2861 .parent_hws
= (const struct clk_hw
*[]) {
2862 &qdss_tsctr_clk_src
.clkr
.hw
,
2865 .flags
= CLK_SET_RATE_PARENT
,
2866 .ops
= &clk_branch2_ops
,
2871 static struct clk_branch gcc_ubi0_core_clk
= {
2872 .halt_reg
= 0x68210,
2873 .halt_check
= BRANCH_HALT_DELAY
,
2875 .enable_reg
= 0x68210,
2876 .enable_mask
= BIT(0),
2877 .hw
.init
= &(struct clk_init_data
) {
2878 .name
= "gcc_ubi0_core_clk",
2879 .parent_hws
= (const struct clk_hw
*[]) {
2880 &ubi0_core_clk_src
.clkr
.hw
,
2883 .flags
= CLK_SET_RATE_PARENT
,
2884 .ops
= &clk_branch2_ops
,
2889 static struct clk_branch gcc_ubi0_nc_axi_clk
= {
2890 .halt_reg
= 0x68204,
2891 .halt_check
= BRANCH_HALT_DELAY
,
2893 .enable_reg
= 0x68204,
2894 .enable_mask
= BIT(0),
2895 .hw
.init
= &(struct clk_init_data
) {
2896 .name
= "gcc_ubi0_nc_axi_clk",
2897 .parent_hws
= (const struct clk_hw
*[]) {
2898 &system_noc_clk_src
.hw
,
2901 .flags
= CLK_SET_RATE_PARENT
,
2902 .ops
= &clk_branch2_ops
,
2907 static struct clk_branch gcc_ubi0_utcm_clk
= {
2908 .halt_reg
= 0x68208,
2909 .halt_check
= BRANCH_HALT_DELAY
,
2911 .enable_reg
= 0x68208,
2912 .enable_mask
= BIT(0),
2913 .hw
.init
= &(struct clk_init_data
) {
2914 .name
= "gcc_ubi0_utcm_clk",
2915 .parent_hws
= (const struct clk_hw
*[]) {
2916 &system_noc_clk_src
.hw
,
2919 .flags
= CLK_SET_RATE_PARENT
,
2920 .ops
= &clk_branch2_ops
,
2925 static struct clk_branch gcc_uniphy_ahb_clk
= {
2926 .halt_reg
= 0x56108,
2928 .enable_reg
= 0x56108,
2929 .enable_mask
= BIT(0),
2930 .hw
.init
= &(struct clk_init_data
) {
2931 .name
= "gcc_uniphy_ahb_clk",
2932 .parent_hws
= (const struct clk_hw
*[]) {
2936 .flags
= CLK_SET_RATE_PARENT
,
2937 .ops
= &clk_branch2_ops
,
2942 static struct clk_branch gcc_uniphy_rx_clk
= {
2943 .halt_reg
= 0x56110,
2945 .enable_reg
= 0x56110,
2946 .enable_mask
= BIT(0),
2947 .hw
.init
= &(struct clk_init_data
) {
2948 .name
= "gcc_uniphy_rx_clk",
2949 .parent_hws
= (const struct clk_hw
*[]) {
2950 &gmac1_rx_div_clk_src
.clkr
.hw
,
2953 .ops
= &clk_branch2_ops
,
2954 .flags
= CLK_SET_RATE_PARENT
,
2959 static struct clk_branch gcc_uniphy_tx_clk
= {
2960 .halt_reg
= 0x56114,
2962 .enable_reg
= 0x56114,
2963 .enable_mask
= BIT(0),
2964 .hw
.init
= &(struct clk_init_data
) {
2965 .name
= "gcc_uniphy_tx_clk",
2966 .parent_hws
= (const struct clk_hw
*[]) {
2967 &gmac1_tx_div_clk_src
.clkr
.hw
,
2970 .ops
= &clk_branch2_ops
,
2971 .flags
= CLK_SET_RATE_PARENT
,
2976 static struct clk_branch gcc_uniphy_sys_clk
= {
2977 .halt_reg
= 0x5610c,
2979 .enable_reg
= 0x5610c,
2980 .enable_mask
= BIT(0),
2981 .hw
.init
= &(struct clk_init_data
) {
2982 .name
= "gcc_uniphy_sys_clk",
2983 .parent_hws
= (const struct clk_hw
*[]) {
2984 &gcc_xo_clk_src
.clkr
.hw
,
2987 .flags
= CLK_SET_RATE_PARENT
,
2988 .ops
= &clk_branch2_ops
,
2993 static struct clk_branch gcc_usb0_aux_clk
= {
2994 .halt_reg
= 0x3e044,
2996 .enable_reg
= 0x3e044,
2997 .enable_mask
= BIT(0),
2998 .hw
.init
= &(struct clk_init_data
) {
2999 .name
= "gcc_usb0_aux_clk",
3000 .parent_hws
= (const struct clk_hw
*[]) {
3001 &usb0_aux_clk_src
.clkr
.hw
,
3004 .flags
= CLK_SET_RATE_PARENT
,
3005 .ops
= &clk_branch2_ops
,
3010 static struct clk_branch gcc_usb0_eud_at_clk
= {
3011 .halt_reg
= 0x3e04c,
3012 .halt_check
= BRANCH_HALT_VOTED
,
3014 .enable_reg
= 0x3e04c,
3015 .enable_mask
= BIT(0),
3016 .hw
.init
= &(struct clk_init_data
) {
3017 .name
= "gcc_usb0_eud_at_clk",
3018 .parent_hws
= (const struct clk_hw
*[]) {
3022 .flags
= CLK_SET_RATE_PARENT
,
3023 .ops
= &clk_branch2_ops
,
3028 static struct clk_branch gcc_usb0_lfps_clk
= {
3029 .halt_reg
= 0x3e050,
3031 .enable_reg
= 0x3e050,
3032 .enable_mask
= BIT(0),
3033 .hw
.init
= &(struct clk_init_data
) {
3034 .name
= "gcc_usb0_lfps_clk",
3035 .parent_hws
= (const struct clk_hw
*[]) {
3036 &usb0_lfps_clk_src
.clkr
.hw
,
3039 .flags
= CLK_SET_RATE_PARENT
,
3040 .ops
= &clk_branch2_ops
,
3045 static struct clk_branch gcc_usb0_master_clk
= {
3046 .halt_reg
= 0x3e000,
3048 .enable_reg
= 0x3e000,
3049 .enable_mask
= BIT(0),
3050 .hw
.init
= &(struct clk_init_data
) {
3051 .name
= "gcc_usb0_master_clk",
3052 .parent_hws
= (const struct clk_hw
*[]) {
3053 &usb0_master_clk_src
.clkr
.hw
,
3056 .flags
= CLK_SET_RATE_PARENT
,
3057 .ops
= &clk_branch2_ops
,
3062 static struct clk_branch gcc_usb0_mock_utmi_clk
= {
3063 .halt_reg
= 0x3e008,
3065 .enable_reg
= 0x3e008,
3066 .enable_mask
= BIT(0),
3067 .hw
.init
= &(struct clk_init_data
) {
3068 .name
= "gcc_usb0_mock_utmi_clk",
3069 .parent_hws
= (const struct clk_hw
*[]) {
3070 &usb0_mock_utmi_clk_src
.clkr
.hw
,
3073 .flags
= CLK_SET_RATE_PARENT
,
3074 .ops
= &clk_branch2_ops
,
3079 static struct clk_branch gcc_usb0_phy_cfg_ahb_clk
= {
3080 .halt_reg
= 0x3e080,
3082 .enable_reg
= 0x3e080,
3083 .enable_mask
= BIT(0),
3084 .hw
.init
= &(struct clk_init_data
) {
3085 .name
= "gcc_usb0_phy_cfg_ahb_clk",
3086 .parent_hws
= (const struct clk_hw
*[]) {
3090 .flags
= CLK_SET_RATE_PARENT
,
3091 .ops
= &clk_branch2_ops
,
3096 static struct clk_branch gcc_usb0_sleep_clk
= {
3097 .halt_reg
= 0x3e004,
3099 .enable_reg
= 0x3e004,
3100 .enable_mask
= BIT(0),
3101 .hw
.init
= &(struct clk_init_data
) {
3102 .name
= "gcc_usb0_sleep_clk",
3103 .parent_hws
= (const struct clk_hw
*[]) {
3104 &gcc_sleep_clk_src
.clkr
.hw
,
3107 .flags
= CLK_SET_RATE_PARENT
,
3108 .ops
= &clk_branch2_ops
,
3113 static struct clk_branch gcc_usb0_pipe_clk
= {
3114 .halt_reg
= 0x3e040,
3115 .halt_check
= BRANCH_HALT_DELAY
,
3117 .enable_reg
= 0x3e040,
3118 .enable_mask
= BIT(0),
3119 .hw
.init
= &(struct clk_init_data
) {
3120 .name
= "gcc_usb0_pipe_clk",
3121 .parent_hws
= (const struct clk_hw
*[]) {
3122 &usb0_pipe_clk_src
.clkr
.hw
,
3125 .flags
= CLK_SET_RATE_PARENT
,
3126 .ops
= &clk_branch2_ops
,
3131 static struct clk_branch gcc_wcss_acmt_clk
= {
3132 .halt_reg
= 0x59064,
3134 .enable_reg
= 0x59064,
3135 .enable_mask
= BIT(0),
3136 .hw
.init
= &(struct clk_init_data
) {
3137 .name
= "gcc_wcss_acmt_clk",
3138 .parent_hws
= (const struct clk_hw
*[]) {
3139 &wcss_ahb_clk_src
.clkr
.hw
,
3142 .flags
= CLK_SET_RATE_PARENT
,
3143 .ops
= &clk_branch2_ops
,
3148 static struct clk_branch gcc_wcss_ahb_s_clk
= {
3149 .halt_reg
= 0x59034,
3151 .enable_reg
= 0x59034,
3152 .enable_mask
= BIT(0),
3153 .hw
.init
= &(struct clk_init_data
) {
3154 .name
= "gcc_wcss_ahb_s_clk",
3155 .parent_hws
= (const struct clk_hw
*[]) {
3156 &wcss_ahb_clk_src
.clkr
.hw
,
3159 .flags
= CLK_SET_RATE_PARENT
,
3160 .ops
= &clk_branch2_ops
,
3165 static struct clk_branch gcc_wcss_axi_m_clk
= {
3166 .halt_reg
= 0x5903c,
3168 .enable_reg
= 0x5903c,
3169 .enable_mask
= BIT(0),
3170 .hw
.init
= &(struct clk_init_data
) {
3171 .name
= "gcc_wcss_axi_m_clk",
3172 .parent_hws
= (const struct clk_hw
*[]) {
3173 &system_noc_clk_src
.hw
,
3176 .flags
= CLK_SET_RATE_PARENT
,
3177 .ops
= &clk_branch2_ops
,
3182 static struct clk_branch gcc_wcss_axi_s_clk
= {
3183 .halt_reg
= 0x59068,
3185 .enable_reg
= 0x59068,
3186 .enable_mask
= BIT(0),
3187 .hw
.init
= &(struct clk_init_data
) {
3188 .name
= "gcc_wi_s_clk",
3189 .parent_hws
= (const struct clk_hw
*[]) {
3190 &system_noc_clk_src
.hw
,
3193 .flags
= CLK_SET_RATE_PARENT
,
3194 .ops
= &clk_branch2_ops
,
3199 static struct clk_branch gcc_wcss_dbg_ifc_apb_bdg_clk
= {
3200 .halt_reg
= 0x59050,
3202 .enable_reg
= 0x59050,
3203 .enable_mask
= BIT(0),
3204 .hw
.init
= &(struct clk_init_data
) {
3205 .name
= "gcc_wcss_dbg_ifc_apb_bdg_clk",
3206 .parent_hws
= (const struct clk_hw
*[]) {
3207 &qdss_dap_sync_clk_src
.hw
,
3210 .flags
= CLK_SET_RATE_PARENT
,
3211 .ops
= &clk_branch2_ops
,
3216 static struct clk_branch gcc_wcss_dbg_ifc_apb_clk
= {
3217 .halt_reg
= 0x59040,
3219 .enable_reg
= 0x59040,
3220 .enable_mask
= BIT(0),
3221 .hw
.init
= &(struct clk_init_data
) {
3222 .name
= "gcc_wcss_dbg_ifc_apb_clk",
3223 .parent_hws
= (const struct clk_hw
*[]) {
3224 &qdss_dap_sync_clk_src
.hw
,
3227 .flags
= CLK_SET_RATE_PARENT
,
3228 .ops
= &clk_branch2_ops
,
3233 static struct clk_branch gcc_wcss_dbg_ifc_atb_bdg_clk
= {
3234 .halt_reg
= 0x59054,
3236 .enable_reg
= 0x59054,
3237 .enable_mask
= BIT(0),
3238 .hw
.init
= &(struct clk_init_data
) {
3239 .name
= "gcc_wcss_dbg_ifc_atb_bdg_clk",
3240 .parent_hws
= (const struct clk_hw
*[]) {
3241 &qdss_at_clk_src
.clkr
.hw
,
3244 .flags
= CLK_SET_RATE_PARENT
,
3245 .ops
= &clk_branch2_ops
,
3250 static struct clk_branch gcc_wcss_dbg_ifc_atb_clk
= {
3251 .halt_reg
= 0x59044,
3253 .enable_reg
= 0x59044,
3254 .enable_mask
= BIT(0),
3255 .hw
.init
= &(struct clk_init_data
) {
3256 .name
= "gcc_wcss_dbg_ifc_atb_clk",
3257 .parent_hws
= (const struct clk_hw
*[]) {
3258 &qdss_at_clk_src
.clkr
.hw
,
3261 .flags
= CLK_SET_RATE_PARENT
,
3262 .ops
= &clk_branch2_ops
,
3267 static struct clk_branch gcc_wcss_dbg_ifc_dapbus_bdg_clk
= {
3268 .halt_reg
= 0x59060,
3270 .enable_reg
= 0x59060,
3271 .enable_mask
= BIT(0),
3272 .hw
.init
= &(struct clk_init_data
) {
3273 .name
= "gcc_wcss_dbg_ifc_dapbus_bdg_clk",
3274 .parent_hws
= (const struct clk_hw
*[]) {
3275 &qdss_dap_sync_clk_src
.hw
,
3278 .flags
= CLK_SET_RATE_PARENT
,
3279 .ops
= &clk_branch2_ops
,
3284 static struct clk_branch gcc_wcss_dbg_ifc_dapbus_clk
= {
3285 .halt_reg
= 0x5905c,
3287 .enable_reg
= 0x5905c,
3288 .enable_mask
= BIT(0),
3289 .hw
.init
= &(struct clk_init_data
) {
3290 .name
= "gcc_wcss_dbg_ifc_dapbus_clk",
3291 .parent_hws
= (const struct clk_hw
*[]) {
3292 &qdss_dap_sync_clk_src
.hw
,
3295 .flags
= CLK_SET_RATE_PARENT
,
3296 .ops
= &clk_branch2_ops
,
3301 static struct clk_branch gcc_wcss_dbg_ifc_nts_bdg_clk
= {
3302 .halt_reg
= 0x59058,
3304 .enable_reg
= 0x59058,
3305 .enable_mask
= BIT(0),
3306 .hw
.init
= &(struct clk_init_data
) {
3307 .name
= "gcc_wcss_dbg_ifc_nts_bdg_clk",
3308 .parent_hws
= (const struct clk_hw
*[]) {
3309 &qdss_tsctr_div2_clk_src
.hw
,
3312 .flags
= CLK_SET_RATE_PARENT
,
3313 .ops
= &clk_branch2_ops
,
3318 static struct clk_branch gcc_wcss_dbg_ifc_nts_clk
= {
3319 .halt_reg
= 0x59048,
3321 .enable_reg
= 0x59048,
3322 .enable_mask
= BIT(0),
3323 .hw
.init
= &(struct clk_init_data
) {
3324 .name
= "gcc_wcss_dbg_ifc_nts_clk",
3325 .parent_hws
= (const struct clk_hw
*[]) {
3326 &qdss_tsctr_div2_clk_src
.hw
,
3329 .flags
= CLK_SET_RATE_PARENT
,
3330 .ops
= &clk_branch2_ops
,
3335 static struct clk_branch gcc_wcss_ecahb_clk
= {
3336 .halt_reg
= 0x59038,
3338 .enable_reg
= 0x59038,
3339 .enable_mask
= BIT(0),
3340 .hw
.init
= &(struct clk_init_data
) {
3341 .name
= "gcc_wcss_ecahb_clk",
3342 .parent_hws
= (const struct clk_hw
*[]) {
3343 &wcss_ahb_clk_src
.clkr
.hw
,
3346 .flags
= CLK_SET_RATE_PARENT
,
3347 .ops
= &clk_branch2_ops
,
3352 static struct clk_hw
*gcc_ipq5018_hws
[] = {
3353 &gpll0_out_main_div2
.hw
,
3355 &system_noc_clk_src
.hw
,
3356 &qdss_dap_sync_clk_src
.hw
,
3357 &qdss_tsctr_div2_clk_src
.hw
,
3361 static const struct alpha_pll_config ubi32_pll_config
= {
3363 .alpha
= 0xaaaaaaaa,
3365 .config_ctl_val
= 0x4001075b,
3366 .main_output_mask
= BIT(0),
3367 .aux_output_mask
= BIT(1),
3368 .alpha_en_mask
= BIT(24),
3370 .vco_mask
= GENMASK(21, 20),
3371 .test_ctl_val
= 0x0,
3372 .test_ctl_hi_val
= 0x0,
3375 static struct clk_regmap
*gcc_ipq5018_clks
[] = {
3376 [GPLL0_MAIN
] = &gpll0_main
.clkr
,
3377 [GPLL0
] = &gpll0
.clkr
,
3378 [GPLL2_MAIN
] = &gpll2_main
.clkr
,
3379 [GPLL2
] = &gpll2
.clkr
,
3380 [GPLL4_MAIN
] = &gpll4_main
.clkr
,
3381 [GPLL4
] = &gpll4
.clkr
,
3382 [UBI32_PLL_MAIN
] = &ubi32_pll_main
.clkr
,
3383 [UBI32_PLL
] = &ubi32_pll
.clkr
,
3384 [ADSS_PWM_CLK_SRC
] = &adss_pwm_clk_src
.clkr
,
3385 [BLSP1_QUP1_I2C_APPS_CLK_SRC
] = &blsp1_qup1_i2c_apps_clk_src
.clkr
,
3386 [BLSP1_QUP1_SPI_APPS_CLK_SRC
] = &blsp1_qup1_spi_apps_clk_src
.clkr
,
3387 [BLSP1_QUP2_I2C_APPS_CLK_SRC
] = &blsp1_qup2_i2c_apps_clk_src
.clkr
,
3388 [BLSP1_QUP2_SPI_APPS_CLK_SRC
] = &blsp1_qup2_spi_apps_clk_src
.clkr
,
3389 [BLSP1_QUP3_I2C_APPS_CLK_SRC
] = &blsp1_qup3_i2c_apps_clk_src
.clkr
,
3390 [BLSP1_QUP3_SPI_APPS_CLK_SRC
] = &blsp1_qup3_spi_apps_clk_src
.clkr
,
3391 [BLSP1_UART1_APPS_CLK_SRC
] = &blsp1_uart1_apps_clk_src
.clkr
,
3392 [BLSP1_UART2_APPS_CLK_SRC
] = &blsp1_uart2_apps_clk_src
.clkr
,
3393 [CRYPTO_CLK_SRC
] = &crypto_clk_src
.clkr
,
3394 [GCC_ADSS_PWM_CLK
] = &gcc_adss_pwm_clk
.clkr
,
3395 [GCC_BLSP1_AHB_CLK
] = &gcc_blsp1_ahb_clk
.clkr
,
3396 [GCC_BLSP1_QUP1_I2C_APPS_CLK
] = &gcc_blsp1_qup1_i2c_apps_clk
.clkr
,
3397 [GCC_BLSP1_QUP1_SPI_APPS_CLK
] = &gcc_blsp1_qup1_spi_apps_clk
.clkr
,
3398 [GCC_BLSP1_QUP2_I2C_APPS_CLK
] = &gcc_blsp1_qup2_i2c_apps_clk
.clkr
,
3399 [GCC_BLSP1_QUP2_SPI_APPS_CLK
] = &gcc_blsp1_qup2_spi_apps_clk
.clkr
,
3400 [GCC_BLSP1_QUP3_I2C_APPS_CLK
] = &gcc_blsp1_qup3_i2c_apps_clk
.clkr
,
3401 [GCC_BLSP1_QUP3_SPI_APPS_CLK
] = &gcc_blsp1_qup3_spi_apps_clk
.clkr
,
3402 [GCC_BLSP1_UART1_APPS_CLK
] = &gcc_blsp1_uart1_apps_clk
.clkr
,
3403 [GCC_BLSP1_UART2_APPS_CLK
] = &gcc_blsp1_uart2_apps_clk
.clkr
,
3404 [GCC_BTSS_LPO_CLK
] = &gcc_btss_lpo_clk
.clkr
,
3405 [GCC_CMN_BLK_AHB_CLK
] = &gcc_cmn_blk_ahb_clk
.clkr
,
3406 [GCC_CMN_BLK_SYS_CLK
] = &gcc_cmn_blk_sys_clk
.clkr
,
3407 [GCC_CRYPTO_AHB_CLK
] = &gcc_crypto_ahb_clk
.clkr
,
3408 [GCC_CRYPTO_AXI_CLK
] = &gcc_crypto_axi_clk
.clkr
,
3409 [GCC_CRYPTO_CLK
] = &gcc_crypto_clk
.clkr
,
3410 [GCC_DCC_CLK
] = &gcc_dcc_clk
.clkr
,
3411 [GCC_GEPHY_RX_CLK
] = &gcc_gephy_rx_clk
.clkr
,
3412 [GCC_GEPHY_TX_CLK
] = &gcc_gephy_tx_clk
.clkr
,
3413 [GCC_GMAC0_CFG_CLK
] = &gcc_gmac0_cfg_clk
.clkr
,
3414 [GCC_GMAC0_PTP_CLK
] = &gcc_gmac0_ptp_clk
.clkr
,
3415 [GCC_GMAC0_RX_CLK
] = &gcc_gmac0_rx_clk
.clkr
,
3416 [GCC_GMAC0_SYS_CLK
] = &gcc_gmac0_sys_clk
.clkr
,
3417 [GCC_GMAC0_TX_CLK
] = &gcc_gmac0_tx_clk
.clkr
,
3418 [GCC_GMAC1_CFG_CLK
] = &gcc_gmac1_cfg_clk
.clkr
,
3419 [GCC_GMAC1_PTP_CLK
] = &gcc_gmac1_ptp_clk
.clkr
,
3420 [GCC_GMAC1_RX_CLK
] = &gcc_gmac1_rx_clk
.clkr
,
3421 [GCC_GMAC1_SYS_CLK
] = &gcc_gmac1_sys_clk
.clkr
,
3422 [GCC_GMAC1_TX_CLK
] = &gcc_gmac1_tx_clk
.clkr
,
3423 [GCC_GP1_CLK
] = &gcc_gp1_clk
.clkr
,
3424 [GCC_GP2_CLK
] = &gcc_gp2_clk
.clkr
,
3425 [GCC_GP3_CLK
] = &gcc_gp3_clk
.clkr
,
3426 [GCC_LPASS_CORE_AXIM_CLK
] = &gcc_lpass_core_axim_clk
.clkr
,
3427 [GCC_LPASS_SWAY_CLK
] = &gcc_lpass_sway_clk
.clkr
,
3428 [GCC_MDIO0_AHB_CLK
] = &gcc_mdio0_ahb_clk
.clkr
,
3429 [GCC_MDIO1_AHB_CLK
] = &gcc_mdio1_ahb_clk
.clkr
,
3430 [GCC_PCIE0_AHB_CLK
] = &gcc_pcie0_ahb_clk
.clkr
,
3431 [GCC_PCIE0_AUX_CLK
] = &gcc_pcie0_aux_clk
.clkr
,
3432 [GCC_PCIE0_AXI_M_CLK
] = &gcc_pcie0_axi_m_clk
.clkr
,
3433 [GCC_PCIE0_AXI_S_BRIDGE_CLK
] = &gcc_pcie0_axi_s_bridge_clk
.clkr
,
3434 [GCC_PCIE0_AXI_S_CLK
] = &gcc_pcie0_axi_s_clk
.clkr
,
3435 [GCC_PCIE1_AHB_CLK
] = &gcc_pcie1_ahb_clk
.clkr
,
3436 [GCC_PCIE1_AUX_CLK
] = &gcc_pcie1_aux_clk
.clkr
,
3437 [GCC_PCIE1_AXI_M_CLK
] = &gcc_pcie1_axi_m_clk
.clkr
,
3438 [GCC_PCIE1_AXI_S_BRIDGE_CLK
] = &gcc_pcie1_axi_s_bridge_clk
.clkr
,
3439 [GCC_PCIE1_AXI_S_CLK
] = &gcc_pcie1_axi_s_clk
.clkr
,
3440 [GCC_PRNG_AHB_CLK
] = &gcc_prng_ahb_clk
.clkr
,
3441 [GCC_Q6_AXIM_CLK
] = &gcc_q6_axim_clk
.clkr
,
3442 [GCC_Q6_AXIM2_CLK
] = &gcc_q6_axim2_clk
.clkr
,
3443 [GCC_Q6_AXIS_CLK
] = &gcc_q6_axis_clk
.clkr
,
3444 [GCC_Q6_AHB_CLK
] = &gcc_q6_ahb_clk
.clkr
,
3445 [GCC_Q6_AHB_S_CLK
] = &gcc_q6_ahb_s_clk
.clkr
,
3446 [GCC_Q6_TSCTR_1TO2_CLK
] = &gcc_q6_tsctr_1to2_clk
.clkr
,
3447 [GCC_Q6SS_ATBM_CLK
] = &gcc_q6ss_atbm_clk
.clkr
,
3448 [GCC_Q6SS_PCLKDBG_CLK
] = &gcc_q6ss_pclkdbg_clk
.clkr
,
3449 [GCC_Q6SS_TRIG_CLK
] = &gcc_q6ss_trig_clk
.clkr
,
3450 [GCC_QDSS_AT_CLK
] = &gcc_qdss_at_clk
.clkr
,
3451 [GCC_QDSS_CFG_AHB_CLK
] = &gcc_qdss_cfg_ahb_clk
.clkr
,
3452 [GCC_QDSS_DAP_AHB_CLK
] = &gcc_qdss_dap_ahb_clk
.clkr
,
3453 [GCC_QDSS_DAP_CLK
] = &gcc_qdss_dap_clk
.clkr
,
3454 [GCC_QDSS_ETR_USB_CLK
] = &gcc_qdss_etr_usb_clk
.clkr
,
3455 [GCC_QDSS_EUD_AT_CLK
] = &gcc_qdss_eud_at_clk
.clkr
,
3456 [GCC_QDSS_STM_CLK
] = &gcc_qdss_stm_clk
.clkr
,
3457 [GCC_QDSS_TRACECLKIN_CLK
] = &gcc_qdss_traceclkin_clk
.clkr
,
3458 [GCC_QDSS_TSCTR_DIV8_CLK
] = &gcc_qdss_tsctr_div8_clk
.clkr
,
3459 [GCC_QPIC_AHB_CLK
] = &gcc_qpic_ahb_clk
.clkr
,
3460 [GCC_QPIC_CLK
] = &gcc_qpic_clk
.clkr
,
3461 [GCC_QPIC_IO_MACRO_CLK
] = &gcc_qpic_io_macro_clk
.clkr
,
3462 [GCC_SDCC1_AHB_CLK
] = &gcc_sdcc1_ahb_clk
.clkr
,
3463 [GCC_SDCC1_APPS_CLK
] = &gcc_sdcc1_apps_clk
.clkr
,
3464 [GCC_SLEEP_CLK_SRC
] = &gcc_sleep_clk_src
.clkr
,
3465 [GCC_SNOC_GMAC0_AHB_CLK
] = &gcc_snoc_gmac0_ahb_clk
.clkr
,
3466 [GCC_SNOC_GMAC0_AXI_CLK
] = &gcc_snoc_gmac0_axi_clk
.clkr
,
3467 [GCC_SNOC_GMAC1_AHB_CLK
] = &gcc_snoc_gmac1_ahb_clk
.clkr
,
3468 [GCC_SNOC_GMAC1_AXI_CLK
] = &gcc_snoc_gmac1_axi_clk
.clkr
,
3469 [GCC_SNOC_LPASS_AXIM_CLK
] = &gcc_snoc_lpass_axim_clk
.clkr
,
3470 [GCC_SNOC_LPASS_SWAY_CLK
] = &gcc_snoc_lpass_sway_clk
.clkr
,
3471 [GCC_SNOC_UBI0_AXI_CLK
] = &gcc_snoc_ubi0_axi_clk
.clkr
,
3472 [GCC_SYS_NOC_PCIE0_AXI_CLK
] = &gcc_sys_noc_pcie0_axi_clk
.clkr
,
3473 [GCC_SYS_NOC_PCIE1_AXI_CLK
] = &gcc_sys_noc_pcie1_axi_clk
.clkr
,
3474 [GCC_SYS_NOC_QDSS_STM_AXI_CLK
] = &gcc_sys_noc_qdss_stm_axi_clk
.clkr
,
3475 [GCC_SYS_NOC_USB0_AXI_CLK
] = &gcc_sys_noc_usb0_axi_clk
.clkr
,
3476 [GCC_SYS_NOC_WCSS_AHB_CLK
] = &gcc_sys_noc_wcss_ahb_clk
.clkr
,
3477 [GCC_UBI0_AXI_CLK
] = &gcc_ubi0_axi_clk
.clkr
,
3478 [GCC_UBI0_CFG_CLK
] = &gcc_ubi0_cfg_clk
.clkr
,
3479 [GCC_UBI0_CORE_CLK
] = &gcc_ubi0_core_clk
.clkr
,
3480 [GCC_UBI0_DBG_CLK
] = &gcc_ubi0_dbg_clk
.clkr
,
3481 [GCC_UBI0_NC_AXI_CLK
] = &gcc_ubi0_nc_axi_clk
.clkr
,
3482 [GCC_UBI0_UTCM_CLK
] = &gcc_ubi0_utcm_clk
.clkr
,
3483 [GCC_UNIPHY_AHB_CLK
] = &gcc_uniphy_ahb_clk
.clkr
,
3484 [GCC_UNIPHY_RX_CLK
] = &gcc_uniphy_rx_clk
.clkr
,
3485 [GCC_UNIPHY_SYS_CLK
] = &gcc_uniphy_sys_clk
.clkr
,
3486 [GCC_UNIPHY_TX_CLK
] = &gcc_uniphy_tx_clk
.clkr
,
3487 [GCC_USB0_AUX_CLK
] = &gcc_usb0_aux_clk
.clkr
,
3488 [GCC_USB0_EUD_AT_CLK
] = &gcc_usb0_eud_at_clk
.clkr
,
3489 [GCC_USB0_LFPS_CLK
] = &gcc_usb0_lfps_clk
.clkr
,
3490 [GCC_USB0_MASTER_CLK
] = &gcc_usb0_master_clk
.clkr
,
3491 [GCC_USB0_MOCK_UTMI_CLK
] = &gcc_usb0_mock_utmi_clk
.clkr
,
3492 [GCC_USB0_PHY_CFG_AHB_CLK
] = &gcc_usb0_phy_cfg_ahb_clk
.clkr
,
3493 [GCC_USB0_SLEEP_CLK
] = &gcc_usb0_sleep_clk
.clkr
,
3494 [GCC_WCSS_ACMT_CLK
] = &gcc_wcss_acmt_clk
.clkr
,
3495 [GCC_WCSS_AHB_S_CLK
] = &gcc_wcss_ahb_s_clk
.clkr
,
3496 [GCC_WCSS_AXI_M_CLK
] = &gcc_wcss_axi_m_clk
.clkr
,
3497 [GCC_WCSS_AXI_S_CLK
] = &gcc_wcss_axi_s_clk
.clkr
,
3498 [GCC_WCSS_DBG_IFC_APB_BDG_CLK
] = &gcc_wcss_dbg_ifc_apb_bdg_clk
.clkr
,
3499 [GCC_WCSS_DBG_IFC_APB_CLK
] = &gcc_wcss_dbg_ifc_apb_clk
.clkr
,
3500 [GCC_WCSS_DBG_IFC_ATB_BDG_CLK
] = &gcc_wcss_dbg_ifc_atb_bdg_clk
.clkr
,
3501 [GCC_WCSS_DBG_IFC_ATB_CLK
] = &gcc_wcss_dbg_ifc_atb_clk
.clkr
,
3502 [GCC_WCSS_DBG_IFC_DAPBUS_BDG_CLK
] = &gcc_wcss_dbg_ifc_dapbus_bdg_clk
.clkr
,
3503 [GCC_WCSS_DBG_IFC_DAPBUS_CLK
] = &gcc_wcss_dbg_ifc_dapbus_clk
.clkr
,
3504 [GCC_WCSS_DBG_IFC_NTS_BDG_CLK
] = &gcc_wcss_dbg_ifc_nts_bdg_clk
.clkr
,
3505 [GCC_WCSS_DBG_IFC_NTS_CLK
] = &gcc_wcss_dbg_ifc_nts_clk
.clkr
,
3506 [GCC_WCSS_ECAHB_CLK
] = &gcc_wcss_ecahb_clk
.clkr
,
3507 [GCC_XO_CLK
] = &gcc_xo_clk
.clkr
,
3508 [GCC_XO_CLK_SRC
] = &gcc_xo_clk_src
.clkr
,
3509 [GMAC0_RX_CLK_SRC
] = &gmac0_rx_clk_src
.clkr
,
3510 [GMAC0_RX_DIV_CLK_SRC
] = &gmac0_rx_div_clk_src
.clkr
,
3511 [GMAC0_TX_CLK_SRC
] = &gmac0_tx_clk_src
.clkr
,
3512 [GMAC0_TX_DIV_CLK_SRC
] = &gmac0_tx_div_clk_src
.clkr
,
3513 [GMAC1_RX_CLK_SRC
] = &gmac1_rx_clk_src
.clkr
,
3514 [GMAC1_RX_DIV_CLK_SRC
] = &gmac1_rx_div_clk_src
.clkr
,
3515 [GMAC1_TX_CLK_SRC
] = &gmac1_tx_clk_src
.clkr
,
3516 [GMAC1_TX_DIV_CLK_SRC
] = &gmac1_tx_div_clk_src
.clkr
,
3517 [GMAC_CLK_SRC
] = &gmac_clk_src
.clkr
,
3518 [GP1_CLK_SRC
] = &gp1_clk_src
.clkr
,
3519 [GP2_CLK_SRC
] = &gp2_clk_src
.clkr
,
3520 [GP3_CLK_SRC
] = &gp3_clk_src
.clkr
,
3521 [LPASS_AXIM_CLK_SRC
] = &lpass_axim_clk_src
.clkr
,
3522 [LPASS_SWAY_CLK_SRC
] = &lpass_sway_clk_src
.clkr
,
3523 [PCIE0_AUX_CLK_SRC
] = &pcie0_aux_clk_src
.clkr
,
3524 [PCIE0_AXI_CLK_SRC
] = &pcie0_axi_clk_src
.clkr
,
3525 [PCIE1_AUX_CLK_SRC
] = &pcie1_aux_clk_src
.clkr
,
3526 [PCIE1_AXI_CLK_SRC
] = &pcie1_axi_clk_src
.clkr
,
3527 [PCNOC_BFDCD_CLK_SRC
] = &pcnoc_bfdcd_clk_src
.clkr
,
3528 [Q6_AXI_CLK_SRC
] = &q6_axi_clk_src
.clkr
,
3529 [QDSS_AT_CLK_SRC
] = &qdss_at_clk_src
.clkr
,
3530 [QDSS_STM_CLK_SRC
] = &qdss_stm_clk_src
.clkr
,
3531 [QDSS_TSCTR_CLK_SRC
] = &qdss_tsctr_clk_src
.clkr
,
3532 [QDSS_TRACECLKIN_CLK_SRC
] = &qdss_traceclkin_clk_src
.clkr
,
3533 [QPIC_IO_MACRO_CLK_SRC
] = &qpic_io_macro_clk_src
.clkr
,
3534 [SDCC1_APPS_CLK_SRC
] = &sdcc1_apps_clk_src
.clkr
,
3535 [SYSTEM_NOC_BFDCD_CLK_SRC
] = &system_noc_bfdcd_clk_src
.clkr
,
3536 [UBI0_AXI_CLK_SRC
] = &ubi0_axi_clk_src
.clkr
,
3537 [UBI0_CORE_CLK_SRC
] = &ubi0_core_clk_src
.clkr
,
3538 [USB0_AUX_CLK_SRC
] = &usb0_aux_clk_src
.clkr
,
3539 [USB0_LFPS_CLK_SRC
] = &usb0_lfps_clk_src
.clkr
,
3540 [USB0_MASTER_CLK_SRC
] = &usb0_master_clk_src
.clkr
,
3541 [USB0_MOCK_UTMI_CLK_SRC
] = &usb0_mock_utmi_clk_src
.clkr
,
3542 [WCSS_AHB_CLK_SRC
] = &wcss_ahb_clk_src
.clkr
,
3543 [PCIE0_PIPE_CLK_SRC
] = &pcie0_pipe_clk_src
.clkr
,
3544 [PCIE1_PIPE_CLK_SRC
] = &pcie1_pipe_clk_src
.clkr
,
3545 [GCC_PCIE0_PIPE_CLK
] = &gcc_pcie0_pipe_clk
.clkr
,
3546 [GCC_PCIE1_PIPE_CLK
] = &gcc_pcie1_pipe_clk
.clkr
,
3547 [USB0_PIPE_CLK_SRC
] = &usb0_pipe_clk_src
.clkr
,
3548 [GCC_USB0_PIPE_CLK
] = &gcc_usb0_pipe_clk
.clkr
,
3551 static const struct qcom_reset_map gcc_ipq5018_resets
[] = {
3552 [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR
] = { 0x78000, 0 },
3553 [GCC_BLSP1_BCR
] = { 0x01000, 0 },
3554 [GCC_BLSP1_QUP1_BCR
] = { 0x02000, 0 },
3555 [GCC_BLSP1_QUP2_BCR
] = { 0x03008, 0 },
3556 [GCC_BLSP1_QUP3_BCR
] = { 0x04008, 0 },
3557 [GCC_BLSP1_UART1_BCR
] = { 0x02038, 0 },
3558 [GCC_BLSP1_UART2_BCR
] = { 0x03028, 0 },
3559 [GCC_BOOT_ROM_BCR
] = { 0x13008, 0 },
3560 [GCC_BTSS_BCR
] = { 0x1c000, 0 },
3561 [GCC_CMN_BLK_BCR
] = { 0x56300, 0 },
3562 [GCC_CMN_LDO_BCR
] = { 0x33000, 0 },
3563 [GCC_CE_BCR
] = { 0x33014, 0 },
3564 [GCC_CRYPTO_BCR
] = { 0x16000, 0 },
3565 [GCC_DCC_BCR
] = { 0x77000, 0 },
3566 [GCC_DCD_BCR
] = { 0x2a000, 0 },
3567 [GCC_DDRSS_BCR
] = { 0x1e000, 0 },
3568 [GCC_EDPD_BCR
] = { 0x3a000, 0 },
3569 [GCC_GEPHY_BCR
] = { 0x56000, 0 },
3570 [GCC_GEPHY_MDC_SW_ARES
] = { 0x56004, 0 },
3571 [GCC_GEPHY_DSP_HW_ARES
] = { 0x56004, 1 },
3572 [GCC_GEPHY_RX_ARES
] = { 0x56004, 2 },
3573 [GCC_GEPHY_TX_ARES
] = { 0x56004, 3 },
3574 [GCC_GMAC0_BCR
] = { 0x19000, 0 },
3575 [GCC_GMAC0_CFG_ARES
] = { 0x68428, 0 },
3576 [GCC_GMAC0_SYS_ARES
] = { 0x68428, 1 },
3577 [GCC_GMAC1_BCR
] = { 0x19100, 0 },
3578 [GCC_GMAC1_CFG_ARES
] = { 0x68438, 0 },
3579 [GCC_GMAC1_SYS_ARES
] = { 0x68438, 1 },
3580 [GCC_IMEM_BCR
] = { 0x0e000, 0 },
3581 [GCC_LPASS_BCR
] = { 0x2e000, 0 },
3582 [GCC_MDIO0_BCR
] = { 0x58000, 0 },
3583 [GCC_MDIO1_BCR
] = { 0x58010, 0 },
3584 [GCC_MPM_BCR
] = { 0x2c000, 0 },
3585 [GCC_PCIE0_BCR
] = { 0x75004, 0 },
3586 [GCC_PCIE0_LINK_DOWN_BCR
] = { 0x750a8, 0 },
3587 [GCC_PCIE0_PHY_BCR
] = { 0x75038, 0 },
3588 [GCC_PCIE0PHY_PHY_BCR
] = { 0x7503c, 0 },
3589 [GCC_PCIE0_PIPE_ARES
] = { 0x75040, 0 },
3590 [GCC_PCIE0_SLEEP_ARES
] = { 0x75040, 1 },
3591 [GCC_PCIE0_CORE_STICKY_ARES
] = { 0x75040, 2 },
3592 [GCC_PCIE0_AXI_MASTER_ARES
] = { 0x75040, 3 },
3593 [GCC_PCIE0_AXI_SLAVE_ARES
] = { 0x75040, 4 },
3594 [GCC_PCIE0_AHB_ARES
] = { 0x75040, 5 },
3595 [GCC_PCIE0_AXI_MASTER_STICKY_ARES
] = { 0x75040, 6 },
3596 [GCC_PCIE0_AXI_SLAVE_STICKY_ARES
] = { 0x75040, 7 },
3597 [GCC_PCIE1_BCR
] = { 0x76004, 0 },
3598 [GCC_PCIE1_LINK_DOWN_BCR
] = { 0x76044, 0 },
3599 [GCC_PCIE1_PHY_BCR
] = { 0x76038, 0 },
3600 [GCC_PCIE1PHY_PHY_BCR
] = { 0x7603c, 0 },
3601 [GCC_PCIE1_PIPE_ARES
] = { 0x76040, 0 },
3602 [GCC_PCIE1_SLEEP_ARES
] = { 0x76040, 1 },
3603 [GCC_PCIE1_CORE_STICKY_ARES
] = { 0x76040, 2 },
3604 [GCC_PCIE1_AXI_MASTER_ARES
] = { 0x76040, 3 },
3605 [GCC_PCIE1_AXI_SLAVE_ARES
] = { 0x76040, 4 },
3606 [GCC_PCIE1_AHB_ARES
] = { 0x76040, 5 },
3607 [GCC_PCIE1_AXI_MASTER_STICKY_ARES
] = { 0x76040, 6 },
3608 [GCC_PCIE1_AXI_SLAVE_STICKY_ARES
] = { 0x76040, 7 },
3609 [GCC_PCNOC_BCR
] = { 0x27018, 0 },
3610 [GCC_PCNOC_BUS_TIMEOUT0_BCR
] = { 0x48000, 0 },
3611 [GCC_PCNOC_BUS_TIMEOUT1_BCR
] = { 0x48008, 0 },
3612 [GCC_PCNOC_BUS_TIMEOUT2_BCR
] = { 0x48010, 0 },
3613 [GCC_PCNOC_BUS_TIMEOUT3_BCR
] = { 0x48018, 0 },
3614 [GCC_PCNOC_BUS_TIMEOUT4_BCR
] = { 0x48020, 0 },
3615 [GCC_PCNOC_BUS_TIMEOUT5_BCR
] = { 0x48028, 0 },
3616 [GCC_PCNOC_BUS_TIMEOUT6_BCR
] = { 0x48030, 0 },
3617 [GCC_PCNOC_BUS_TIMEOUT7_BCR
] = { 0x48038, 0 },
3618 [GCC_PCNOC_BUS_TIMEOUT8_BCR
] = { 0x48040, 0 },
3619 [GCC_PCNOC_BUS_TIMEOUT9_BCR
] = { 0x48048, 0 },
3620 [GCC_PCNOC_BUS_TIMEOUT10_BCR
] = { 0x48050, 0 },
3621 [GCC_PCNOC_BUS_TIMEOUT11_BCR
] = { 0x48058, 0 },
3622 [GCC_PRNG_BCR
] = { 0x13000, 0 },
3623 [GCC_Q6SS_DBG_ARES
] = { 0x59110, 0 },
3624 [GCC_Q6_AHB_S_ARES
] = { 0x59110, 1 },
3625 [GCC_Q6_AHB_ARES
] = { 0x59110, 2 },
3626 [GCC_Q6_AXIM2_ARES
] = { 0x59110, 3 },
3627 [GCC_Q6_AXIM_ARES
] = { 0x59110, 4 },
3628 [GCC_Q6_AXIS_ARES
] = { 0x59158, 0 },
3629 [GCC_QDSS_BCR
] = { 0x29000, 0 },
3630 [GCC_QPIC_BCR
] = { 0x57018, 0 },
3631 [GCC_QUSB2_0_PHY_BCR
] = { 0x41030, 0 },
3632 [GCC_SDCC1_BCR
] = { 0x42000, 0 },
3633 [GCC_SEC_CTRL_BCR
] = { 0x1a000, 0 },
3634 [GCC_SPDM_BCR
] = { 0x2f000, 0 },
3635 [GCC_SYSTEM_NOC_BCR
] = { 0x26000, 0 },
3636 [GCC_TCSR_BCR
] = { 0x28000, 0 },
3637 [GCC_TLMM_BCR
] = { 0x34000, 0 },
3638 [GCC_UBI0_AXI_ARES
] = { 0x68010, 0 },
3639 [GCC_UBI0_AHB_ARES
] = { 0x68010, 1 },
3640 [GCC_UBI0_NC_AXI_ARES
] = { 0x68010, 2 },
3641 [GCC_UBI0_DBG_ARES
] = { 0x68010, 3 },
3642 [GCC_UBI0_UTCM_ARES
] = { 0x68010, 6 },
3643 [GCC_UBI0_CORE_ARES
] = { 0x68010, 7 },
3644 [GCC_UBI32_BCR
] = { 0x19064, 0 },
3645 [GCC_UNIPHY_BCR
] = { 0x56100, 0 },
3646 [GCC_UNIPHY_AHB_ARES
] = { 0x56104, 0 },
3647 [GCC_UNIPHY_SYS_ARES
] = { 0x56104, 1 },
3648 [GCC_UNIPHY_RX_ARES
] = { 0x56104, 4 },
3649 [GCC_UNIPHY_TX_ARES
] = { 0x56104, 5 },
3650 [GCC_UNIPHY_SOFT_RESET
] = {0x56104, 0 },
3651 [GCC_USB0_BCR
] = { 0x3e070, 0 },
3652 [GCC_USB0_PHY_BCR
] = { 0x3e034, 0 },
3653 [GCC_WCSS_BCR
] = { 0x18000, 0 },
3654 [GCC_WCSS_DBG_ARES
] = { 0x59008, 0 },
3655 [GCC_WCSS_ECAHB_ARES
] = { 0x59008, 1 },
3656 [GCC_WCSS_ACMT_ARES
] = { 0x59008, 2 },
3657 [GCC_WCSS_DBG_BDG_ARES
] = { 0x59008, 3 },
3658 [GCC_WCSS_AHB_S_ARES
] = { 0x59008, 4 },
3659 [GCC_WCSS_AXI_M_ARES
] = { 0x59008, 5 },
3660 [GCC_WCSS_AXI_S_ARES
] = { 0x59008, 6 },
3661 [GCC_WCSS_Q6_BCR
] = { 0x18004, 0 },
3662 [GCC_WCSSAON_RESET
] = { 0x59010, 0},
3663 [GCC_GEPHY_MISC_ARES
] = { 0x56004, 0 },
3666 static const struct of_device_id gcc_ipq5018_match_table
[] = {
3667 { .compatible
= "qcom,gcc-ipq5018" },
3670 MODULE_DEVICE_TABLE(of
, gcc_ipq5018_match_table
);
3672 static const struct regmap_config gcc_ipq5018_regmap_config
= {
3676 .max_register
= 0x7fffc,
3680 static const struct qcom_cc_desc gcc_ipq5018_desc
= {
3681 .config
= &gcc_ipq5018_regmap_config
,
3682 .clks
= gcc_ipq5018_clks
,
3683 .num_clks
= ARRAY_SIZE(gcc_ipq5018_clks
),
3684 .resets
= gcc_ipq5018_resets
,
3685 .num_resets
= ARRAY_SIZE(gcc_ipq5018_resets
),
3686 .clk_hws
= gcc_ipq5018_hws
,
3687 .num_clk_hws
= ARRAY_SIZE(gcc_ipq5018_hws
),
3690 static int gcc_ipq5018_probe(struct platform_device
*pdev
)
3692 struct regmap
*regmap
;
3693 struct qcom_cc_desc ipq5018_desc
= gcc_ipq5018_desc
;
3695 regmap
= qcom_cc_map(pdev
, &ipq5018_desc
);
3697 return PTR_ERR(regmap
);
3699 clk_alpha_pll_configure(&ubi32_pll_main
, regmap
, &ubi32_pll_config
);
3701 return qcom_cc_really_probe(&pdev
->dev
, &ipq5018_desc
, regmap
);
3704 static struct platform_driver gcc_ipq5018_driver
= {
3705 .probe
= gcc_ipq5018_probe
,
3707 .name
= "qcom,gcc-ipq5018",
3708 .of_match_table
= gcc_ipq5018_match_table
,
3712 static int __init
gcc_ipq5018_init(void)
3714 return platform_driver_register(&gcc_ipq5018_driver
);
3716 core_initcall(gcc_ipq5018_init
);
3718 static void __exit
gcc_ipq5018_exit(void)
3720 platform_driver_unregister(&gcc_ipq5018_driver
);
3722 module_exit(gcc_ipq5018_exit
);
3724 MODULE_DESCRIPTION("Qualcomm Technologies, Inc. GCC IPQ5018 Driver");
3725 MODULE_LICENSE("GPL");