1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
4 * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved.
7 #include <linux/clk-provider.h>
8 #include <linux/kernel.h>
9 #include <linux/module.h>
11 #include <linux/platform_device.h>
12 #include <linux/regmap.h>
14 #include <dt-bindings/clock/qcom,gcc-sc7280.h>
16 #include "clk-alpha-pll.h"
17 #include "clk-branch.h"
19 #include "clk-regmap-divider.h"
20 #include "clk-regmap-mux.h"
21 #include "clk-regmap-phy-mux.h"
31 P_GCC_GPLL10_OUT_MAIN
,
37 P_UFS_PHY_RX_SYMBOL_0_CLK
,
38 P_UFS_PHY_RX_SYMBOL_1_CLK
,
39 P_UFS_PHY_TX_SYMBOL_0_CLK
,
40 P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK
,
41 P_GCC_MSS_GPLL0_MAIN_DIV_CLK
,
44 static struct clk_alpha_pll gcc_gpll0
= {
46 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
48 .enable_reg
= 0x52010,
49 .enable_mask
= BIT(0),
50 .hw
.init
= &(struct clk_init_data
){
52 .parent_data
= &(const struct clk_parent_data
){
56 .ops
= &clk_alpha_pll_fixed_lucid_ops
,
61 static const struct clk_div_table post_div_table_gcc_gpll0_out_even
[] = {
66 static struct clk_alpha_pll_postdiv gcc_gpll0_out_even
= {
69 .post_div_table
= post_div_table_gcc_gpll0_out_even
,
70 .num_post_div
= ARRAY_SIZE(post_div_table_gcc_gpll0_out_even
),
72 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
73 .clkr
.hw
.init
= &(struct clk_init_data
){
74 .name
= "gcc_gpll0_out_even",
75 .parent_hws
= (const struct clk_hw
*[]){
79 .ops
= &clk_alpha_pll_postdiv_lucid_ops
,
83 static const struct clk_div_table post_div_table_gcc_gpll0_out_odd
[] = {
88 static struct clk_alpha_pll_postdiv gcc_gpll0_out_odd
= {
91 .post_div_table
= post_div_table_gcc_gpll0_out_odd
,
92 .num_post_div
= ARRAY_SIZE(post_div_table_gcc_gpll0_out_odd
),
94 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
95 .clkr
.hw
.init
= &(struct clk_init_data
){
96 .name
= "gcc_gpll0_out_odd",
97 .parent_hws
= (const struct clk_hw
*[]){
101 .ops
= &clk_alpha_pll_postdiv_lucid_ops
,
105 static struct clk_alpha_pll gcc_gpll1
= {
107 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
109 .enable_reg
= 0x52010,
110 .enable_mask
= BIT(1),
111 .hw
.init
= &(struct clk_init_data
){
113 .parent_data
= &(const struct clk_parent_data
){
114 .fw_name
= "bi_tcxo",
117 .ops
= &clk_alpha_pll_fixed_lucid_ops
,
122 static struct clk_alpha_pll gcc_gpll10
= {
124 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
126 .enable_reg
= 0x52010,
127 .enable_mask
= BIT(9),
128 .hw
.init
= &(struct clk_init_data
){
129 .name
= "gcc_gpll10",
130 .parent_data
= &(const struct clk_parent_data
){
131 .fw_name
= "bi_tcxo",
134 .ops
= &clk_alpha_pll_fixed_lucid_ops
,
139 static struct clk_alpha_pll gcc_gpll4
= {
141 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
143 .enable_reg
= 0x52010,
144 .enable_mask
= BIT(4),
145 .hw
.init
= &(struct clk_init_data
){
147 .parent_data
= &(const struct clk_parent_data
){
148 .fw_name
= "bi_tcxo",
151 .ops
= &clk_alpha_pll_fixed_lucid_ops
,
156 static struct clk_alpha_pll gcc_gpll9
= {
158 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
160 .enable_reg
= 0x52010,
161 .enable_mask
= BIT(8),
162 .hw
.init
= &(struct clk_init_data
){
164 .parent_data
= &(const struct clk_parent_data
){
165 .fw_name
= "bi_tcxo",
168 .ops
= &clk_alpha_pll_fixed_lucid_ops
,
173 static struct clk_branch gcc_mss_gpll0_main_div_clk_src
= {
174 .halt_check
= BRANCH_HALT_DELAY
,
176 .enable_reg
= 0x52000,
177 .enable_mask
= BIT(17),
178 .hw
.init
= &(struct clk_init_data
){
179 .name
= "gcc_mss_gpll0_main_div_clk_src",
180 .parent_hws
= (const struct clk_hw
*[]){
181 &gcc_gpll0_out_even
.clkr
.hw
,
184 .flags
= CLK_SET_RATE_PARENT
,
185 .ops
= &clk_branch2_ops
,
190 static const struct parent_map gcc_parent_map_0
[] = {
192 { P_GCC_GPLL0_OUT_MAIN
, 1 },
193 { P_GCC_GPLL0_OUT_EVEN
, 6 },
196 static const struct clk_parent_data gcc_parent_data_0
[] = {
197 { .fw_name
= "bi_tcxo" },
198 { .hw
= &gcc_gpll0
.clkr
.hw
},
199 { .hw
= &gcc_gpll0_out_even
.clkr
.hw
},
202 static const struct parent_map gcc_parent_map_1
[] = {
204 { P_GCC_GPLL0_OUT_MAIN
, 1 },
205 { P_GCC_GPLL0_OUT_ODD
, 3 },
206 { P_GCC_GPLL0_OUT_EVEN
, 6 },
209 static const struct clk_parent_data gcc_parent_data_1
[] = {
210 { .fw_name
= "bi_tcxo" },
211 { .hw
= &gcc_gpll0
.clkr
.hw
},
212 { .hw
= &gcc_gpll0_out_odd
.clkr
.hw
},
213 { .hw
= &gcc_gpll0_out_even
.clkr
.hw
},
216 static const struct parent_map gcc_parent_map_2
[] = {
221 static const struct clk_parent_data gcc_parent_data_2
[] = {
222 { .fw_name
= "bi_tcxo" },
223 { .fw_name
= "sleep_clk" },
226 static const struct parent_map gcc_parent_map_3
[] = {
230 static const struct clk_parent_data gcc_parent_data_3
[] = {
231 { .fw_name
= "bi_tcxo" },
234 static const struct parent_map gcc_parent_map_4
[] = {
236 { P_GCC_GPLL0_OUT_MAIN
, 1 },
237 { P_GCC_GPLL0_OUT_ODD
, 3 },
239 { P_GCC_GPLL0_OUT_EVEN
, 6 },
242 static const struct clk_parent_data gcc_parent_data_4
[] = {
243 { .fw_name
= "bi_tcxo" },
244 { .hw
= &gcc_gpll0
.clkr
.hw
},
245 { .hw
= &gcc_gpll0_out_odd
.clkr
.hw
},
246 { .fw_name
= "sleep_clk" },
247 { .hw
= &gcc_gpll0_out_even
.clkr
.hw
},
250 static const struct parent_map gcc_parent_map_5
[] = {
252 { P_GCC_GPLL0_OUT_EVEN
, 6 },
255 static const struct clk_parent_data gcc_parent_data_5
[] = {
256 { .fw_name
= "bi_tcxo" },
257 { .hw
= &gcc_gpll0_out_even
.clkr
.hw
},
260 static const struct parent_map gcc_parent_map_8
[] = {
262 { P_GCC_GPLL0_OUT_MAIN
, 1 },
263 { P_GCC_GPLL0_OUT_ODD
, 3 },
264 { P_GCC_GPLL10_OUT_MAIN
, 5 },
265 { P_GCC_GPLL0_OUT_EVEN
, 6 },
268 static const struct clk_parent_data gcc_parent_data_8
[] = {
269 { .fw_name
= "bi_tcxo" },
270 { .hw
= &gcc_gpll0
.clkr
.hw
},
271 { .hw
= &gcc_gpll0_out_odd
.clkr
.hw
},
272 { .hw
= &gcc_gpll10
.clkr
.hw
},
273 { .hw
= &gcc_gpll0_out_even
.clkr
.hw
},
276 static const struct parent_map gcc_parent_map_9
[] = {
278 { P_GCC_GPLL0_OUT_MAIN
, 1 },
279 { P_GCC_GPLL9_OUT_MAIN
, 2 },
280 { P_GCC_GPLL0_OUT_ODD
, 3 },
281 { P_GCC_GPLL4_OUT_MAIN
, 5 },
282 { P_GCC_GPLL0_OUT_EVEN
, 6 },
285 static const struct clk_parent_data gcc_parent_data_9
[] = {
286 { .fw_name
= "bi_tcxo" },
287 { .hw
= &gcc_gpll0
.clkr
.hw
},
288 { .hw
= &gcc_gpll9
.clkr
.hw
},
289 { .hw
= &gcc_gpll0_out_odd
.clkr
.hw
},
290 { .hw
= &gcc_gpll4
.clkr
.hw
},
291 { .hw
= &gcc_gpll0_out_even
.clkr
.hw
},
294 static const struct parent_map gcc_parent_map_10
[] = {
295 { P_UFS_PHY_RX_SYMBOL_0_CLK
, 0 },
299 static const struct clk_parent_data gcc_parent_data_10
[] = {
300 { .fw_name
= "ufs_phy_rx_symbol_0_clk" },
301 { .fw_name
= "bi_tcxo" },
304 static const struct parent_map gcc_parent_map_11
[] = {
305 { P_UFS_PHY_RX_SYMBOL_1_CLK
, 0 },
309 static const struct clk_parent_data gcc_parent_data_11
[] = {
310 { .fw_name
= "ufs_phy_rx_symbol_1_clk" },
311 { .fw_name
= "bi_tcxo" },
314 static const struct parent_map gcc_parent_map_12
[] = {
315 { P_UFS_PHY_TX_SYMBOL_0_CLK
, 0 },
319 static const struct clk_parent_data gcc_parent_data_12
[] = {
320 { .fw_name
= "ufs_phy_tx_symbol_0_clk" },
321 { .fw_name
= "bi_tcxo" },
324 static const struct parent_map gcc_parent_map_13
[] = {
325 { P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK
, 0 },
329 static const struct clk_parent_data gcc_parent_data_13
[] = {
330 { .fw_name
= "usb3_phy_wrapper_gcc_usb30_pipe_clk" },
331 { .fw_name
= "bi_tcxo" },
334 static const struct parent_map gcc_parent_map_14
[] = {
335 { P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK
, 0 },
339 static const struct clk_parent_data gcc_parent_data_14
[] = {
340 { .fw_name
= "usb3_phy_wrapper_gcc_usb30_pipe_clk" },
341 { .fw_name
= "bi_tcxo" },
344 static const struct parent_map gcc_parent_map_15
[] = {
346 { P_GCC_MSS_GPLL0_MAIN_DIV_CLK
, 1 },
349 static const struct clk_parent_data gcc_parent_data_15
[] = {
350 { .fw_name
= "bi_tcxo" },
351 { .hw
= &gcc_mss_gpll0_main_div_clk_src
.clkr
.hw
},
354 static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src
= {
357 .hw
.init
= &(struct clk_init_data
){
358 .name
= "gcc_pcie_0_pipe_clk_src",
359 .parent_data
= &(const struct clk_parent_data
){
360 .fw_name
= "pcie_0_pipe_clk",
361 .name
= "pcie_0_pipe_clk",
364 .ops
= &clk_regmap_phy_mux_ops
,
369 static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src
= {
372 .hw
.init
= &(struct clk_init_data
){
373 .name
= "gcc_pcie_1_pipe_clk_src",
374 .parent_data
= &(const struct clk_parent_data
){
375 .fw_name
= "pcie_1_pipe_clk",
376 .name
= "pcie_1_pipe_clk",
379 .ops
= &clk_regmap_phy_mux_ops
,
384 static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src
= {
388 .parent_map
= gcc_parent_map_10
,
390 .hw
.init
= &(struct clk_init_data
){
391 .name
= "gcc_ufs_phy_rx_symbol_0_clk_src",
392 .parent_data
= gcc_parent_data_10
,
393 .num_parents
= ARRAY_SIZE(gcc_parent_data_10
),
394 .ops
= &clk_regmap_mux_closest_ops
,
399 static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src
= {
403 .parent_map
= gcc_parent_map_11
,
405 .hw
.init
= &(struct clk_init_data
){
406 .name
= "gcc_ufs_phy_rx_symbol_1_clk_src",
407 .parent_data
= gcc_parent_data_11
,
408 .num_parents
= ARRAY_SIZE(gcc_parent_data_11
),
409 .ops
= &clk_regmap_mux_closest_ops
,
414 static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src
= {
418 .parent_map
= gcc_parent_map_12
,
420 .hw
.init
= &(struct clk_init_data
){
421 .name
= "gcc_ufs_phy_tx_symbol_0_clk_src",
422 .parent_data
= gcc_parent_data_12
,
423 .num_parents
= ARRAY_SIZE(gcc_parent_data_12
),
424 .ops
= &clk_regmap_mux_closest_ops
,
429 static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src
= {
433 .parent_map
= gcc_parent_map_13
,
435 .hw
.init
= &(struct clk_init_data
){
436 .name
= "gcc_usb3_prim_phy_pipe_clk_src",
437 .parent_data
= gcc_parent_data_13
,
438 .num_parents
= ARRAY_SIZE(gcc_parent_data_13
),
439 .ops
= &clk_regmap_mux_closest_ops
,
444 static struct clk_regmap_mux gcc_usb3_sec_phy_pipe_clk_src
= {
448 .parent_map
= gcc_parent_map_14
,
450 .hw
.init
= &(struct clk_init_data
){
451 .name
= "gcc_usb3_sec_phy_pipe_clk_src",
452 .parent_data
= gcc_parent_data_14
,
453 .num_parents
= ARRAY_SIZE(gcc_parent_data_14
),
454 .ops
= &clk_regmap_mux_closest_ops
,
459 static const struct freq_tbl ftbl_gcc_gp1_clk_src
[] = {
460 F(50000000, P_GCC_GPLL0_OUT_EVEN
, 6, 0, 0),
461 F(100000000, P_GCC_GPLL0_OUT_EVEN
, 3, 0, 0),
462 F(200000000, P_GCC_GPLL0_OUT_ODD
, 1, 0, 0),
466 static struct clk_rcg2 gcc_gp1_clk_src
= {
470 .parent_map
= gcc_parent_map_4
,
471 .freq_tbl
= ftbl_gcc_gp1_clk_src
,
472 .clkr
.hw
.init
= &(struct clk_init_data
){
473 .name
= "gcc_gp1_clk_src",
474 .parent_data
= gcc_parent_data_4
,
475 .num_parents
= ARRAY_SIZE(gcc_parent_data_4
),
476 .ops
= &clk_rcg2_ops
,
480 static struct clk_rcg2 gcc_gp2_clk_src
= {
484 .parent_map
= gcc_parent_map_4
,
485 .freq_tbl
= ftbl_gcc_gp1_clk_src
,
486 .clkr
.hw
.init
= &(struct clk_init_data
){
487 .name
= "gcc_gp2_clk_src",
488 .parent_data
= gcc_parent_data_4
,
489 .num_parents
= ARRAY_SIZE(gcc_parent_data_4
),
490 .ops
= &clk_rcg2_ops
,
494 static struct clk_rcg2 gcc_gp3_clk_src
= {
498 .parent_map
= gcc_parent_map_4
,
499 .freq_tbl
= ftbl_gcc_gp1_clk_src
,
500 .clkr
.hw
.init
= &(struct clk_init_data
){
501 .name
= "gcc_gp3_clk_src",
502 .parent_data
= gcc_parent_data_4
,
503 .num_parents
= ARRAY_SIZE(gcc_parent_data_4
),
504 .ops
= &clk_rcg2_ops
,
508 static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src
[] = {
509 F(9600000, P_BI_TCXO
, 2, 0, 0),
510 F(19200000, P_BI_TCXO
, 1, 0, 0),
514 static struct clk_rcg2 gcc_pcie_0_aux_clk_src
= {
518 .parent_map
= gcc_parent_map_2
,
519 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
520 .clkr
.hw
.init
= &(struct clk_init_data
){
521 .name
= "gcc_pcie_0_aux_clk_src",
522 .parent_data
= gcc_parent_data_2
,
523 .num_parents
= ARRAY_SIZE(gcc_parent_data_2
),
524 .ops
= &clk_rcg2_ops
,
528 static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src
[] = {
529 F(19200000, P_BI_TCXO
, 1, 0, 0),
530 F(100000000, P_GCC_GPLL0_OUT_EVEN
, 3, 0, 0),
534 static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src
= {
538 .parent_map
= gcc_parent_map_0
,
539 .freq_tbl
= ftbl_gcc_pcie_0_phy_rchng_clk_src
,
540 .clkr
.hw
.init
= &(struct clk_init_data
){
541 .name
= "gcc_pcie_0_phy_rchng_clk_src",
542 .parent_data
= gcc_parent_data_0
,
543 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
544 .ops
= &clk_rcg2_ops
,
548 static struct clk_rcg2 gcc_pcie_1_aux_clk_src
= {
552 .parent_map
= gcc_parent_map_2
,
553 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
554 .clkr
.hw
.init
= &(struct clk_init_data
){
555 .name
= "gcc_pcie_1_aux_clk_src",
556 .parent_data
= gcc_parent_data_2
,
557 .num_parents
= ARRAY_SIZE(gcc_parent_data_2
),
558 .ops
= &clk_rcg2_ops
,
562 static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src
= {
566 .parent_map
= gcc_parent_map_0
,
567 .freq_tbl
= ftbl_gcc_pcie_0_phy_rchng_clk_src
,
568 .clkr
.hw
.init
= &(struct clk_init_data
){
569 .name
= "gcc_pcie_1_phy_rchng_clk_src",
570 .parent_data
= gcc_parent_data_0
,
571 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
572 .flags
= CLK_SET_RATE_PARENT
,
573 .ops
= &clk_rcg2_ops
,
577 static const struct freq_tbl ftbl_gcc_pdm2_clk_src
[] = {
578 F(60000000, P_GCC_GPLL0_OUT_EVEN
, 5, 0, 0),
582 static struct clk_rcg2 gcc_pdm2_clk_src
= {
586 .parent_map
= gcc_parent_map_0
,
587 .freq_tbl
= ftbl_gcc_pdm2_clk_src
,
588 .clkr
.hw
.init
= &(struct clk_init_data
){
589 .name
= "gcc_pdm2_clk_src",
590 .parent_data
= gcc_parent_data_0
,
591 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
592 .flags
= CLK_SET_RATE_PARENT
,
593 .ops
= &clk_rcg2_ops
,
597 static const struct freq_tbl ftbl_gcc_qspi_core_clk_src
[] = {
598 F(100000000, P_GCC_GPLL0_OUT_MAIN
, 6, 0, 0),
599 F(150000000, P_GCC_GPLL0_OUT_MAIN
, 4, 0, 0),
600 F(200000000, P_GCC_GPLL0_OUT_MAIN
, 3, 0, 0),
601 F(300000000, P_GCC_GPLL0_OUT_MAIN
, 2, 0, 0),
605 static struct clk_rcg2 gcc_qspi_core_clk_src
= {
609 .parent_map
= gcc_parent_map_0
,
610 .freq_tbl
= ftbl_gcc_qspi_core_clk_src
,
611 .clkr
.hw
.init
= &(struct clk_init_data
){
612 .name
= "gcc_qspi_core_clk_src",
613 .parent_data
= gcc_parent_data_0
,
614 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
615 .ops
= &clk_rcg2_floor_ops
,
619 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src
[] = {
620 F(7372800, P_GCC_GPLL0_OUT_EVEN
, 1, 384, 15625),
621 F(14745600, P_GCC_GPLL0_OUT_EVEN
, 1, 768, 15625),
622 F(19200000, P_BI_TCXO
, 1, 0, 0),
623 F(29491200, P_GCC_GPLL0_OUT_EVEN
, 1, 1536, 15625),
624 F(32000000, P_GCC_GPLL0_OUT_EVEN
, 1, 8, 75),
625 F(48000000, P_GCC_GPLL0_OUT_EVEN
, 1, 4, 25),
626 F(64000000, P_GCC_GPLL0_OUT_EVEN
, 1, 16, 75),
627 F(75000000, P_GCC_GPLL0_OUT_EVEN
, 4, 0, 0),
628 F(80000000, P_GCC_GPLL0_OUT_EVEN
, 1, 4, 15),
629 F(96000000, P_GCC_GPLL0_OUT_EVEN
, 1, 8, 25),
630 F(100000000, P_GCC_GPLL0_OUT_MAIN
, 6, 0, 0),
631 F(102400000, P_GCC_GPLL0_OUT_EVEN
, 1, 128, 375),
632 F(112000000, P_GCC_GPLL0_OUT_EVEN
, 1, 28, 75),
633 F(117964800, P_GCC_GPLL0_OUT_EVEN
, 1, 6144, 15625),
634 F(120000000, P_GCC_GPLL0_OUT_EVEN
, 2.5, 0, 0),
638 static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init
= {
639 .name
= "gcc_qupv3_wrap0_s0_clk_src",
640 .parent_data
= gcc_parent_data_0
,
641 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
642 .ops
= &clk_rcg2_ops
,
645 static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src
= {
649 .parent_map
= gcc_parent_map_0
,
650 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s0_clk_src
,
651 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s0_clk_src_init
,
654 static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init
= {
655 .name
= "gcc_qupv3_wrap0_s1_clk_src",
656 .parent_data
= gcc_parent_data_0
,
657 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
658 .ops
= &clk_rcg2_ops
,
661 static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src
= {
665 .parent_map
= gcc_parent_map_0
,
666 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s0_clk_src
,
667 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s1_clk_src_init
,
670 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s2_clk_src
[] = {
671 F(7372800, P_GCC_GPLL0_OUT_EVEN
, 1, 384, 15625),
672 F(14745600, P_GCC_GPLL0_OUT_EVEN
, 1, 768, 15625),
673 F(19200000, P_BI_TCXO
, 1, 0, 0),
674 F(29491200, P_GCC_GPLL0_OUT_EVEN
, 1, 1536, 15625),
675 F(32000000, P_GCC_GPLL0_OUT_EVEN
, 1, 8, 75),
676 F(48000000, P_GCC_GPLL0_OUT_EVEN
, 1, 4, 25),
677 F(52174000, P_GCC_GPLL0_OUT_MAIN
, 1, 2, 23),
678 F(64000000, P_GCC_GPLL0_OUT_EVEN
, 1, 16, 75),
679 F(75000000, P_GCC_GPLL0_OUT_EVEN
, 4, 0, 0),
680 F(80000000, P_GCC_GPLL0_OUT_EVEN
, 1, 4, 15),
681 F(96000000, P_GCC_GPLL0_OUT_EVEN
, 1, 8, 25),
682 F(100000000, P_GCC_GPLL0_OUT_MAIN
, 6, 0, 0),
686 static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init
= {
687 .name
= "gcc_qupv3_wrap0_s2_clk_src",
688 .parent_data
= gcc_parent_data_0
,
689 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
690 .ops
= &clk_rcg2_ops
,
693 static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src
= {
697 .parent_map
= gcc_parent_map_0
,
698 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
699 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s2_clk_src_init
,
702 static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init
= {
703 .name
= "gcc_qupv3_wrap0_s3_clk_src",
704 .parent_data
= gcc_parent_data_0
,
705 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
706 .ops
= &clk_rcg2_ops
,
709 static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src
= {
713 .parent_map
= gcc_parent_map_0
,
714 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
715 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s3_clk_src_init
,
718 static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init
= {
719 .name
= "gcc_qupv3_wrap0_s4_clk_src",
720 .parent_data
= gcc_parent_data_0
,
721 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
722 .ops
= &clk_rcg2_ops
,
725 static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src
= {
729 .parent_map
= gcc_parent_map_0
,
730 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
731 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s4_clk_src_init
,
734 static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init
= {
735 .name
= "gcc_qupv3_wrap0_s5_clk_src",
736 .parent_data
= gcc_parent_data_0
,
737 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
738 .ops
= &clk_rcg2_ops
,
741 static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src
= {
745 .parent_map
= gcc_parent_map_0
,
746 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
747 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s5_clk_src_init
,
750 static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init
= {
751 .name
= "gcc_qupv3_wrap0_s6_clk_src",
752 .parent_data
= gcc_parent_data_0
,
753 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
754 .ops
= &clk_rcg2_ops
,
757 static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src
= {
761 .parent_map
= gcc_parent_map_0
,
762 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
763 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s6_clk_src_init
,
766 static struct clk_init_data gcc_qupv3_wrap0_s7_clk_src_init
= {
767 .name
= "gcc_qupv3_wrap0_s7_clk_src",
768 .parent_data
= gcc_parent_data_0
,
769 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
770 .ops
= &clk_rcg2_ops
,
773 static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src
= {
777 .parent_map
= gcc_parent_map_0
,
778 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
779 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s7_clk_src_init
,
782 static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init
= {
783 .name
= "gcc_qupv3_wrap1_s0_clk_src",
784 .parent_data
= gcc_parent_data_0
,
785 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
786 .ops
= &clk_rcg2_ops
,
789 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src
= {
793 .parent_map
= gcc_parent_map_0
,
794 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s0_clk_src
,
795 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s0_clk_src_init
,
798 static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init
= {
799 .name
= "gcc_qupv3_wrap1_s1_clk_src",
800 .parent_data
= gcc_parent_data_0
,
801 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
802 .ops
= &clk_rcg2_ops
,
805 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src
= {
809 .parent_map
= gcc_parent_map_0
,
810 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s0_clk_src
,
811 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s1_clk_src_init
,
814 static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init
= {
815 .name
= "gcc_qupv3_wrap1_s2_clk_src",
816 .parent_data
= gcc_parent_data_0
,
817 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
818 .ops
= &clk_rcg2_ops
,
821 static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src
= {
825 .parent_map
= gcc_parent_map_0
,
826 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
827 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s2_clk_src_init
,
830 static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init
= {
831 .name
= "gcc_qupv3_wrap1_s3_clk_src",
832 .parent_data
= gcc_parent_data_0
,
833 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
834 .ops
= &clk_rcg2_ops
,
837 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src
= {
841 .parent_map
= gcc_parent_map_0
,
842 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
843 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s3_clk_src_init
,
846 static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init
= {
847 .name
= "gcc_qupv3_wrap1_s4_clk_src",
848 .parent_data
= gcc_parent_data_0
,
849 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
850 .ops
= &clk_rcg2_ops
,
853 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src
= {
857 .parent_map
= gcc_parent_map_0
,
858 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
859 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s4_clk_src_init
,
862 static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init
= {
863 .name
= "gcc_qupv3_wrap1_s5_clk_src",
864 .parent_data
= gcc_parent_data_0
,
865 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
866 .ops
= &clk_rcg2_ops
,
869 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src
= {
873 .parent_map
= gcc_parent_map_0
,
874 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
875 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s5_clk_src_init
,
878 static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init
= {
879 .name
= "gcc_qupv3_wrap1_s6_clk_src",
880 .parent_data
= gcc_parent_data_0
,
881 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
882 .ops
= &clk_rcg2_ops
,
885 static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src
= {
889 .parent_map
= gcc_parent_map_0
,
890 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
891 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s6_clk_src_init
,
894 static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init
= {
895 .name
= "gcc_qupv3_wrap1_s7_clk_src",
896 .parent_data
= gcc_parent_data_0
,
897 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
898 .ops
= &clk_rcg2_ops
,
901 static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src
= {
905 .parent_map
= gcc_parent_map_0
,
906 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
907 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s7_clk_src_init
,
910 static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src
[] = {
911 F(144000, P_BI_TCXO
, 16, 3, 25),
912 F(400000, P_BI_TCXO
, 12, 1, 4),
913 F(19200000, P_BI_TCXO
, 1, 0, 0),
914 F(20000000, P_GCC_GPLL0_OUT_EVEN
, 5, 1, 3),
915 F(25000000, P_GCC_GPLL0_OUT_EVEN
, 12, 0, 0),
916 F(50000000, P_GCC_GPLL0_OUT_EVEN
, 6, 0, 0),
917 F(100000000, P_GCC_GPLL0_OUT_EVEN
, 3, 0, 0),
918 F(192000000, P_GCC_GPLL10_OUT_MAIN
, 2, 0, 0),
919 F(384000000, P_GCC_GPLL10_OUT_MAIN
, 1, 0, 0),
923 static struct clk_rcg2 gcc_sdcc1_apps_clk_src
= {
927 .parent_map
= gcc_parent_map_8
,
928 .freq_tbl
= ftbl_gcc_sdcc1_apps_clk_src
,
929 .clkr
.hw
.init
= &(struct clk_init_data
){
930 .name
= "gcc_sdcc1_apps_clk_src",
931 .parent_data
= gcc_parent_data_8
,
932 .num_parents
= ARRAY_SIZE(gcc_parent_data_8
),
933 .ops
= &clk_rcg2_floor_ops
,
937 static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src
[] = {
938 F(100000000, P_GCC_GPLL0_OUT_EVEN
, 3, 0, 0),
939 F(150000000, P_GCC_GPLL0_OUT_EVEN
, 2, 0, 0),
940 F(300000000, P_GCC_GPLL0_OUT_EVEN
, 1, 0, 0),
944 static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src
= {
948 .parent_map
= gcc_parent_map_1
,
949 .freq_tbl
= ftbl_gcc_sdcc1_ice_core_clk_src
,
950 .clkr
.hw
.init
= &(struct clk_init_data
){
951 .name
= "gcc_sdcc1_ice_core_clk_src",
952 .parent_data
= gcc_parent_data_1
,
953 .num_parents
= ARRAY_SIZE(gcc_parent_data_1
),
954 .ops
= &clk_rcg2_floor_ops
,
958 static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src
[] = {
959 F(400000, P_BI_TCXO
, 12, 1, 4),
960 F(19200000, P_BI_TCXO
, 1, 0, 0),
961 F(25000000, P_GCC_GPLL0_OUT_EVEN
, 12, 0, 0),
962 F(50000000, P_GCC_GPLL0_OUT_EVEN
, 6, 0, 0),
963 F(100000000, P_GCC_GPLL0_OUT_EVEN
, 3, 0, 0),
964 F(202000000, P_GCC_GPLL9_OUT_MAIN
, 4, 0, 0),
968 static struct clk_rcg2 gcc_sdcc2_apps_clk_src
= {
972 .parent_map
= gcc_parent_map_9
,
973 .freq_tbl
= ftbl_gcc_sdcc2_apps_clk_src
,
974 .clkr
.hw
.init
= &(struct clk_init_data
){
975 .name
= "gcc_sdcc2_apps_clk_src",
976 .parent_data
= gcc_parent_data_9
,
977 .num_parents
= ARRAY_SIZE(gcc_parent_data_9
),
978 .flags
= CLK_OPS_PARENT_ENABLE
,
979 .ops
= &clk_rcg2_floor_ops
,
983 static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src
[] = {
984 F(400000, P_BI_TCXO
, 12, 1, 4),
985 F(19200000, P_BI_TCXO
, 1, 0, 0),
986 F(25000000, P_GCC_GPLL0_OUT_EVEN
, 12, 0, 0),
987 F(50000000, P_GCC_GPLL0_OUT_EVEN
, 6, 0, 0),
988 F(100000000, P_GCC_GPLL0_OUT_EVEN
, 3, 0, 0),
992 static struct clk_rcg2 gcc_sdcc4_apps_clk_src
= {
996 .parent_map
= gcc_parent_map_1
,
997 .freq_tbl
= ftbl_gcc_sdcc4_apps_clk_src
,
998 .clkr
.hw
.init
= &(struct clk_init_data
){
999 .name
= "gcc_sdcc4_apps_clk_src",
1000 .parent_data
= gcc_parent_data_1
,
1001 .num_parents
= ARRAY_SIZE(gcc_parent_data_1
),
1002 .ops
= &clk_rcg2_floor_ops
,
1006 static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src
[] = {
1007 F(25000000, P_GCC_GPLL0_OUT_EVEN
, 12, 0, 0),
1008 F(75000000, P_GCC_GPLL0_OUT_EVEN
, 4, 0, 0),
1009 F(150000000, P_GCC_GPLL0_OUT_EVEN
, 2, 0, 0),
1010 F(300000000, P_GCC_GPLL0_OUT_EVEN
, 1, 0, 0),
1014 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src
= {
1015 .cmd_rcgr
= 0x77024,
1018 .parent_map
= gcc_parent_map_0
,
1019 .freq_tbl
= ftbl_gcc_ufs_phy_axi_clk_src
,
1020 .clkr
.hw
.init
= &(struct clk_init_data
){
1021 .name
= "gcc_ufs_phy_axi_clk_src",
1022 .parent_data
= gcc_parent_data_0
,
1023 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
1024 .ops
= &clk_rcg2_ops
,
1028 static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src
[] = {
1029 F(75000000, P_GCC_GPLL0_OUT_EVEN
, 4, 0, 0),
1030 F(150000000, P_GCC_GPLL0_OUT_EVEN
, 2, 0, 0),
1031 F(300000000, P_GCC_GPLL0_OUT_EVEN
, 1, 0, 0),
1035 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src
= {
1036 .cmd_rcgr
= 0x7706c,
1039 .parent_map
= gcc_parent_map_0
,
1040 .freq_tbl
= ftbl_gcc_ufs_phy_ice_core_clk_src
,
1041 .clkr
.hw
.init
= &(struct clk_init_data
){
1042 .name
= "gcc_ufs_phy_ice_core_clk_src",
1043 .parent_data
= gcc_parent_data_0
,
1044 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
1045 .ops
= &clk_rcg2_ops
,
1049 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src
= {
1050 .cmd_rcgr
= 0x770a0,
1053 .parent_map
= gcc_parent_map_3
,
1054 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
1055 .clkr
.hw
.init
= &(struct clk_init_data
){
1056 .name
= "gcc_ufs_phy_phy_aux_clk_src",
1057 .parent_data
= gcc_parent_data_3
,
1058 .num_parents
= ARRAY_SIZE(gcc_parent_data_3
),
1059 .ops
= &clk_rcg2_ops
,
1063 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src
= {
1064 .cmd_rcgr
= 0x77084,
1067 .parent_map
= gcc_parent_map_0
,
1068 .freq_tbl
= ftbl_gcc_ufs_phy_ice_core_clk_src
,
1069 .clkr
.hw
.init
= &(struct clk_init_data
){
1070 .name
= "gcc_ufs_phy_unipro_core_clk_src",
1071 .parent_data
= gcc_parent_data_0
,
1072 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
1073 .ops
= &clk_rcg2_ops
,
1077 static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src
[] = {
1078 F(66666667, P_GCC_GPLL0_OUT_EVEN
, 4.5, 0, 0),
1079 F(133333333, P_GCC_GPLL0_OUT_MAIN
, 4.5, 0, 0),
1080 F(200000000, P_GCC_GPLL0_OUT_ODD
, 1, 0, 0),
1081 F(240000000, P_GCC_GPLL0_OUT_MAIN
, 2.5, 0, 0),
1085 static struct clk_rcg2 gcc_usb30_prim_master_clk_src
= {
1089 .parent_map
= gcc_parent_map_1
,
1090 .freq_tbl
= ftbl_gcc_usb30_prim_master_clk_src
,
1091 .clkr
.hw
.init
= &(struct clk_init_data
){
1092 .name
= "gcc_usb30_prim_master_clk_src",
1093 .parent_data
= gcc_parent_data_1
,
1094 .num_parents
= ARRAY_SIZE(gcc_parent_data_1
),
1095 .ops
= &clk_rcg2_ops
,
1099 static const struct freq_tbl ftbl_gcc_usb30_prim_mock_utmi_clk_src
[] = {
1100 F(19200000, P_BI_TCXO
, 1, 0, 0),
1104 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src
= {
1108 .parent_map
= gcc_parent_map_3
,
1109 .freq_tbl
= ftbl_gcc_usb30_prim_mock_utmi_clk_src
,
1110 .clkr
.hw
.init
= &(struct clk_init_data
){
1111 .name
= "gcc_usb30_prim_mock_utmi_clk_src",
1112 .parent_data
= gcc_parent_data_3
,
1113 .num_parents
= ARRAY_SIZE(gcc_parent_data_3
),
1114 .ops
= &clk_rcg2_ops
,
1118 static const struct freq_tbl ftbl_gcc_usb30_sec_master_clk_src
[] = {
1119 F(60000000, P_GCC_GPLL0_OUT_EVEN
, 5, 0, 0),
1120 F(120000000, P_GCC_GPLL0_OUT_EVEN
, 2.5, 0, 0),
1124 static struct clk_rcg2 gcc_usb30_sec_master_clk_src
= {
1125 .cmd_rcgr
= 0x9e020,
1128 .parent_map
= gcc_parent_map_5
,
1129 .freq_tbl
= ftbl_gcc_usb30_sec_master_clk_src
,
1130 .clkr
.hw
.init
= &(struct clk_init_data
){
1131 .name
= "gcc_usb30_sec_master_clk_src",
1132 .parent_data
= gcc_parent_data_5
,
1133 .num_parents
= ARRAY_SIZE(gcc_parent_data_5
),
1134 .ops
= &clk_rcg2_ops
,
1138 static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src
= {
1139 .cmd_rcgr
= 0x9e038,
1142 .parent_map
= gcc_parent_map_3
,
1143 .freq_tbl
= ftbl_gcc_usb30_prim_mock_utmi_clk_src
,
1144 .clkr
.hw
.init
= &(struct clk_init_data
){
1145 .name
= "gcc_usb30_sec_mock_utmi_clk_src",
1146 .parent_data
= gcc_parent_data_3
,
1147 .num_parents
= ARRAY_SIZE(gcc_parent_data_3
),
1148 .ops
= &clk_rcg2_ops
,
1152 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src
= {
1156 .parent_map
= gcc_parent_map_2
,
1157 .freq_tbl
= ftbl_gcc_usb30_prim_mock_utmi_clk_src
,
1158 .clkr
.hw
.init
= &(struct clk_init_data
){
1159 .name
= "gcc_usb3_prim_phy_aux_clk_src",
1160 .parent_data
= gcc_parent_data_2
,
1161 .num_parents
= ARRAY_SIZE(gcc_parent_data_2
),
1162 .ops
= &clk_rcg2_ops
,
1166 static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src
= {
1167 .cmd_rcgr
= 0x9e064,
1170 .parent_map
= gcc_parent_map_2
,
1171 .freq_tbl
= ftbl_gcc_usb30_prim_mock_utmi_clk_src
,
1172 .clkr
.hw
.init
= &(struct clk_init_data
){
1173 .name
= "gcc_usb3_sec_phy_aux_clk_src",
1174 .parent_data
= gcc_parent_data_2
,
1175 .num_parents
= ARRAY_SIZE(gcc_parent_data_2
),
1176 .ops
= &clk_rcg2_ops
,
1180 static const struct freq_tbl ftbl_gcc_sec_ctrl_clk_src
[] = {
1181 F(4800000, P_BI_TCXO
, 4, 0, 0),
1182 F(19200000, P_BI_TCXO
, 1, 0, 0),
1186 static struct clk_rcg2 gcc_sec_ctrl_clk_src
= {
1187 .cmd_rcgr
= 0x3d02c,
1190 .parent_map
= gcc_parent_map_3
,
1191 .freq_tbl
= ftbl_gcc_sec_ctrl_clk_src
,
1192 .clkr
.hw
.init
= &(struct clk_init_data
){
1193 .name
= "gcc_sec_ctrl_clk_src",
1194 .parent_data
= gcc_parent_data_3
,
1195 .num_parents
= ARRAY_SIZE(gcc_parent_data_3
),
1196 .ops
= &clk_rcg2_ops
,
1200 static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src
= {
1204 .clkr
.hw
.init
= &(struct clk_init_data
) {
1205 .name
= "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
1206 .parent_hws
= (const struct clk_hw
*[]){
1207 &gcc_usb30_prim_mock_utmi_clk_src
.clkr
.hw
,
1210 .flags
= CLK_SET_RATE_PARENT
,
1211 .ops
= &clk_regmap_div_ro_ops
,
1215 static struct clk_regmap_div gcc_usb30_sec_mock_utmi_postdiv_clk_src
= {
1219 .clkr
.hw
.init
= &(struct clk_init_data
) {
1220 .name
= "gcc_usb30_sec_mock_utmi_postdiv_clk_src",
1221 .parent_hws
= (const struct clk_hw
*[]){
1222 &gcc_usb30_sec_mock_utmi_clk_src
.clkr
.hw
,
1225 .flags
= CLK_SET_RATE_PARENT
,
1226 .ops
= &clk_regmap_div_ro_ops
,
1230 static struct clk_branch gcc_pcie_clkref_en
= {
1231 .halt_reg
= 0x8c004,
1232 .halt_check
= BRANCH_HALT
,
1234 .enable_reg
= 0x8c004,
1235 .enable_mask
= BIT(0),
1236 .hw
.init
= &(struct clk_init_data
){
1237 .name
= "gcc_pcie_clkref_en",
1238 .ops
= &clk_branch2_ops
,
1243 static struct clk_branch gcc_edp_clkref_en
= {
1244 .halt_reg
= 0x8c008,
1245 .halt_check
= BRANCH_HALT
,
1247 .enable_reg
= 0x8c008,
1248 .enable_mask
= BIT(0),
1249 .hw
.init
= &(struct clk_init_data
){
1250 .name
= "gcc_edp_clkref_en",
1251 .ops
= &clk_branch2_ops
,
1256 static struct clk_branch gcc_aggre_noc_pcie_0_axi_clk
= {
1257 .halt_reg
= 0x6b080,
1258 .halt_check
= BRANCH_HALT_SKIP
,
1259 .hwcg_reg
= 0x6b080,
1262 .enable_reg
= 0x52000,
1263 .enable_mask
= BIT(12),
1264 .hw
.init
= &(struct clk_init_data
){
1265 .name
= "gcc_aggre_noc_pcie_0_axi_clk",
1266 .ops
= &clk_branch2_ops
,
1271 static struct clk_branch gcc_aggre_noc_pcie_1_axi_clk
= {
1272 .halt_reg
= 0x8d084,
1273 .halt_check
= BRANCH_HALT_SKIP
,
1274 .hwcg_reg
= 0x8d084,
1277 .enable_reg
= 0x52000,
1278 .enable_mask
= BIT(11),
1279 .hw
.init
= &(struct clk_init_data
){
1280 .name
= "gcc_aggre_noc_pcie_1_axi_clk",
1281 .ops
= &clk_branch2_ops
,
1286 static struct clk_branch gcc_aggre_noc_pcie_tbu_clk
= {
1287 .halt_reg
= 0x90010,
1288 .halt_check
= BRANCH_HALT_VOTED
,
1289 .hwcg_reg
= 0x90010,
1292 .enable_reg
= 0x52000,
1293 .enable_mask
= BIT(18),
1294 .hw
.init
= &(struct clk_init_data
){
1295 .name
= "gcc_aggre_noc_pcie_tbu_clk",
1296 .ops
= &clk_branch2_ops
,
1301 static struct clk_branch gcc_aggre_noc_pcie_center_sf_axi_clk
= {
1302 .halt_reg
= 0x8d088,
1303 .halt_check
= BRANCH_HALT_VOTED
,
1304 .hwcg_reg
= 0x8d088,
1307 .enable_reg
= 0x52008,
1308 .enable_mask
= BIT(28),
1309 .hw
.init
= &(struct clk_init_data
){
1310 .name
= "gcc_aggre_noc_pcie_center_sf_axi_clk",
1311 .ops
= &clk_branch2_ops
,
1316 static struct clk_branch gcc_aggre_ufs_phy_axi_clk
= {
1317 .halt_reg
= 0x770cc,
1318 .halt_check
= BRANCH_HALT_VOTED
,
1319 .hwcg_reg
= 0x770cc,
1322 .enable_reg
= 0x770cc,
1323 .enable_mask
= BIT(0),
1324 .hw
.init
= &(struct clk_init_data
){
1325 .name
= "gcc_aggre_ufs_phy_axi_clk",
1326 .parent_hws
= (const struct clk_hw
*[]){
1327 &gcc_ufs_phy_axi_clk_src
.clkr
.hw
,
1330 .flags
= CLK_SET_RATE_PARENT
,
1331 .ops
= &clk_branch2_ops
,
1336 static struct clk_branch gcc_aggre_usb3_prim_axi_clk
= {
1338 .halt_check
= BRANCH_HALT_VOTED
,
1342 .enable_reg
= 0xf080,
1343 .enable_mask
= BIT(0),
1344 .hw
.init
= &(struct clk_init_data
){
1345 .name
= "gcc_aggre_usb3_prim_axi_clk",
1346 .parent_hws
= (const struct clk_hw
*[]){
1347 &gcc_usb30_prim_master_clk_src
.clkr
.hw
,
1350 .flags
= CLK_SET_RATE_PARENT
,
1351 .ops
= &clk_branch2_ops
,
1356 static struct clk_branch gcc_aggre_usb3_sec_axi_clk
= {
1357 .halt_reg
= 0x9e080,
1358 .halt_check
= BRANCH_HALT_VOTED
,
1359 .hwcg_reg
= 0x9e080,
1362 .enable_reg
= 0x9e080,
1363 .enable_mask
= BIT(0),
1364 .hw
.init
= &(struct clk_init_data
){
1365 .name
= "gcc_aggre_usb3_sec_axi_clk",
1366 .parent_hws
= (const struct clk_hw
*[]){
1367 &gcc_usb30_sec_master_clk_src
.clkr
.hw
,
1370 .flags
= CLK_SET_RATE_PARENT
,
1371 .ops
= &clk_branch2_ops
,
1376 static struct clk_branch gcc_camera_hf_axi_clk
= {
1377 .halt_reg
= 0x26010,
1378 .halt_check
= BRANCH_HALT_SKIP
,
1379 .hwcg_reg
= 0x26010,
1382 .enable_reg
= 0x26010,
1383 .enable_mask
= BIT(0),
1384 .hw
.init
= &(struct clk_init_data
){
1385 .name
= "gcc_camera_hf_axi_clk",
1386 .ops
= &clk_branch2_ops
,
1391 static struct clk_branch gcc_camera_sf_axi_clk
= {
1392 .halt_reg
= 0x2601c,
1393 .halt_check
= BRANCH_HALT_SKIP
,
1394 .hwcg_reg
= 0x2601c,
1397 .enable_reg
= 0x2601c,
1398 .enable_mask
= BIT(0),
1399 .hw
.init
= &(struct clk_init_data
){
1400 .name
= "gcc_camera_sf_axi_clk",
1401 .ops
= &clk_branch2_ops
,
1406 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk
= {
1408 .halt_check
= BRANCH_HALT_VOTED
,
1412 .enable_reg
= 0xf07c,
1413 .enable_mask
= BIT(0),
1414 .hw
.init
= &(struct clk_init_data
){
1415 .name
= "gcc_cfg_noc_usb3_prim_axi_clk",
1416 .parent_hws
= (const struct clk_hw
*[]){
1417 &gcc_usb30_prim_master_clk_src
.clkr
.hw
,
1420 .flags
= CLK_SET_RATE_PARENT
,
1421 .ops
= &clk_branch2_ops
,
1426 static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk
= {
1427 .halt_reg
= 0x9e07c,
1428 .halt_check
= BRANCH_HALT_VOTED
,
1429 .hwcg_reg
= 0x9e07c,
1432 .enable_reg
= 0x9e07c,
1433 .enable_mask
= BIT(0),
1434 .hw
.init
= &(struct clk_init_data
){
1435 .name
= "gcc_cfg_noc_usb3_sec_axi_clk",
1436 .parent_hws
= (const struct clk_hw
*[]){
1437 &gcc_usb30_sec_master_clk_src
.clkr
.hw
,
1440 .flags
= CLK_SET_RATE_PARENT
,
1441 .ops
= &clk_branch2_ops
,
1446 static struct clk_branch gcc_ddrss_gpu_axi_clk
= {
1447 .halt_reg
= 0x71154,
1448 .halt_check
= BRANCH_HALT_SKIP
,
1449 .hwcg_reg
= 0x71154,
1452 .enable_reg
= 0x71154,
1453 .enable_mask
= BIT(0),
1454 .hw
.init
= &(struct clk_init_data
){
1455 .name
= "gcc_ddrss_gpu_axi_clk",
1456 .ops
= &clk_branch2_aon_ops
,
1461 static struct clk_branch gcc_ddrss_pcie_sf_clk
= {
1462 .halt_reg
= 0x8d080,
1463 .halt_check
= BRANCH_HALT_SKIP
,
1464 .hwcg_reg
= 0x8d080,
1467 .enable_reg
= 0x52000,
1468 .enable_mask
= BIT(19),
1469 .hw
.init
= &(struct clk_init_data
){
1470 .name
= "gcc_ddrss_pcie_sf_clk",
1471 .ops
= &clk_branch2_ops
,
1476 static struct clk_branch gcc_disp_gpll0_clk_src
= {
1477 .halt_check
= BRANCH_HALT_DELAY
,
1479 .enable_reg
= 0x52000,
1480 .enable_mask
= BIT(7),
1481 .hw
.init
= &(struct clk_init_data
){
1482 .name
= "gcc_disp_gpll0_clk_src",
1483 .parent_hws
= (const struct clk_hw
*[]){
1487 .flags
= CLK_SET_RATE_PARENT
,
1488 .ops
= &clk_branch2_ops
,
1493 static struct clk_branch gcc_disp_hf_axi_clk
= {
1494 .halt_reg
= 0x2700c,
1495 .halt_check
= BRANCH_HALT_SKIP
,
1496 .hwcg_reg
= 0x2700c,
1499 .enable_reg
= 0x2700c,
1500 .enable_mask
= BIT(0),
1501 .hw
.init
= &(struct clk_init_data
){
1502 .name
= "gcc_disp_hf_axi_clk",
1503 .ops
= &clk_branch2_ops
,
1508 static struct clk_branch gcc_disp_sf_axi_clk
= {
1509 .halt_reg
= 0x27014,
1510 .halt_check
= BRANCH_HALT_SKIP
,
1511 .hwcg_reg
= 0x27014,
1514 .enable_reg
= 0x27014,
1515 .enable_mask
= BIT(0),
1516 .hw
.init
= &(struct clk_init_data
){
1517 .name
= "gcc_disp_sf_axi_clk",
1518 .ops
= &clk_branch2_ops
,
1523 static struct clk_branch gcc_gp1_clk
= {
1524 .halt_reg
= 0x64000,
1525 .halt_check
= BRANCH_HALT
,
1527 .enable_reg
= 0x64000,
1528 .enable_mask
= BIT(0),
1529 .hw
.init
= &(struct clk_init_data
){
1530 .name
= "gcc_gp1_clk",
1531 .parent_hws
= (const struct clk_hw
*[]){
1532 &gcc_gp1_clk_src
.clkr
.hw
,
1535 .flags
= CLK_SET_RATE_PARENT
,
1536 .ops
= &clk_branch2_ops
,
1541 static struct clk_branch gcc_gp2_clk
= {
1542 .halt_reg
= 0x65000,
1543 .halt_check
= BRANCH_HALT
,
1545 .enable_reg
= 0x65000,
1546 .enable_mask
= BIT(0),
1547 .hw
.init
= &(struct clk_init_data
){
1548 .name
= "gcc_gp2_clk",
1549 .parent_hws
= (const struct clk_hw
*[]){
1550 &gcc_gp2_clk_src
.clkr
.hw
,
1553 .flags
= CLK_SET_RATE_PARENT
,
1554 .ops
= &clk_branch2_ops
,
1559 static struct clk_branch gcc_gp3_clk
= {
1560 .halt_reg
= 0x66000,
1561 .halt_check
= BRANCH_HALT
,
1563 .enable_reg
= 0x66000,
1564 .enable_mask
= BIT(0),
1565 .hw
.init
= &(struct clk_init_data
){
1566 .name
= "gcc_gp3_clk",
1567 .parent_hws
= (const struct clk_hw
*[]){
1568 &gcc_gp3_clk_src
.clkr
.hw
,
1571 .flags
= CLK_SET_RATE_PARENT
,
1572 .ops
= &clk_branch2_ops
,
1577 static struct clk_branch gcc_gpu_gpll0_clk_src
= {
1578 .halt_check
= BRANCH_HALT_DELAY
,
1580 .enable_reg
= 0x52000,
1581 .enable_mask
= BIT(15),
1582 .hw
.init
= &(struct clk_init_data
){
1583 .name
= "gcc_gpu_gpll0_clk_src",
1584 .parent_hws
= (const struct clk_hw
*[]){
1588 .flags
= CLK_SET_RATE_PARENT
,
1589 .ops
= &clk_branch2_ops
,
1594 static struct clk_branch gcc_gpu_gpll0_div_clk_src
= {
1595 .halt_check
= BRANCH_HALT_DELAY
,
1597 .enable_reg
= 0x52000,
1598 .enable_mask
= BIT(16),
1599 .hw
.init
= &(struct clk_init_data
){
1600 .name
= "gcc_gpu_gpll0_div_clk_src",
1601 .parent_hws
= (const struct clk_hw
*[]){
1602 &gcc_gpll0_out_even
.clkr
.hw
,
1605 .flags
= CLK_SET_RATE_PARENT
,
1606 .ops
= &clk_branch2_ops
,
1611 static struct clk_branch gcc_gpu_iref_en
= {
1612 .halt_reg
= 0x8c014,
1613 .halt_check
= BRANCH_HALT
,
1615 .enable_reg
= 0x8c014,
1616 .enable_mask
= BIT(0),
1617 .hw
.init
= &(struct clk_init_data
){
1618 .name
= "gcc_gpu_iref_en",
1619 .ops
= &clk_branch2_ops
,
1624 static struct clk_branch gcc_gpu_memnoc_gfx_clk
= {
1625 .halt_reg
= 0x7100c,
1626 .halt_check
= BRANCH_HALT_VOTED
,
1627 .hwcg_reg
= 0x7100c,
1630 .enable_reg
= 0x7100c,
1631 .enable_mask
= BIT(0),
1632 .hw
.init
= &(struct clk_init_data
){
1633 .name
= "gcc_gpu_memnoc_gfx_clk",
1634 .ops
= &clk_branch2_aon_ops
,
1639 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk
= {
1640 .halt_reg
= 0x71018,
1641 .halt_check
= BRANCH_HALT
,
1643 .enable_reg
= 0x71018,
1644 .enable_mask
= BIT(0),
1645 .hw
.init
= &(struct clk_init_data
){
1646 .name
= "gcc_gpu_snoc_dvm_gfx_clk",
1647 .ops
= &clk_branch2_aon_ops
,
1652 static struct clk_branch gcc_pcie0_phy_rchng_clk
= {
1653 .halt_reg
= 0x6b038,
1654 .halt_check
= BRANCH_HALT_VOTED
,
1656 .enable_reg
= 0x52000,
1657 .enable_mask
= BIT(22),
1658 .hw
.init
= &(struct clk_init_data
){
1659 .name
= "gcc_pcie0_phy_rchng_clk",
1660 .parent_hws
= (const struct clk_hw
*[]){
1661 &gcc_pcie_0_phy_rchng_clk_src
.clkr
.hw
,
1664 .flags
= CLK_SET_RATE_PARENT
,
1665 .ops
= &clk_branch2_ops
,
1670 static struct clk_branch gcc_pcie1_phy_rchng_clk
= {
1671 .halt_reg
= 0x8d038,
1672 .halt_check
= BRANCH_HALT_VOTED
,
1674 .enable_reg
= 0x52000,
1675 .enable_mask
= BIT(23),
1676 .hw
.init
= &(struct clk_init_data
){
1677 .name
= "gcc_pcie1_phy_rchng_clk",
1678 .parent_hws
= (const struct clk_hw
*[]){
1679 &gcc_pcie_1_phy_rchng_clk_src
.clkr
.hw
,
1682 .flags
= CLK_SET_RATE_PARENT
,
1683 .ops
= &clk_branch2_ops
,
1688 static struct clk_branch gcc_pcie_0_aux_clk
= {
1689 .halt_reg
= 0x6b028,
1690 .halt_check
= BRANCH_HALT_VOTED
,
1692 .enable_reg
= 0x52008,
1693 .enable_mask
= BIT(3),
1694 .hw
.init
= &(struct clk_init_data
){
1695 .name
= "gcc_pcie_0_aux_clk",
1696 .parent_hws
= (const struct clk_hw
*[]){
1697 &gcc_pcie_0_aux_clk_src
.clkr
.hw
,
1700 .flags
= CLK_SET_RATE_PARENT
,
1701 .ops
= &clk_branch2_ops
,
1706 static struct clk_branch gcc_pcie_0_cfg_ahb_clk
= {
1707 .halt_reg
= 0x6b024,
1708 .halt_check
= BRANCH_HALT_VOTED
,
1709 .hwcg_reg
= 0x6b024,
1712 .enable_reg
= 0x52008,
1713 .enable_mask
= BIT(2),
1714 .hw
.init
= &(struct clk_init_data
){
1715 .name
= "gcc_pcie_0_cfg_ahb_clk",
1716 .ops
= &clk_branch2_ops
,
1721 static struct clk_branch gcc_pcie_0_mstr_axi_clk
= {
1722 .halt_reg
= 0x6b01c,
1723 .halt_check
= BRANCH_HALT_SKIP
,
1725 .enable_reg
= 0x52008,
1726 .enable_mask
= BIT(1),
1727 .hw
.init
= &(struct clk_init_data
){
1728 .name
= "gcc_pcie_0_mstr_axi_clk",
1729 .ops
= &clk_branch2_ops
,
1734 static struct clk_branch gcc_pcie_0_pipe_clk
= {
1735 .halt_reg
= 0x6b030,
1736 .halt_check
= BRANCH_HALT_SKIP
,
1738 .enable_reg
= 0x52008,
1739 .enable_mask
= BIT(4),
1740 .hw
.init
= &(struct clk_init_data
){
1741 .name
= "gcc_pcie_0_pipe_clk",
1742 .parent_hws
= (const struct clk_hw
*[]){
1743 &gcc_pcie_0_pipe_clk_src
.clkr
.hw
,
1746 .flags
= CLK_SET_RATE_PARENT
,
1747 .ops
= &clk_branch2_ops
,
1752 static struct clk_branch gcc_pcie_0_slv_axi_clk
= {
1753 .halt_reg
= 0x6b014,
1754 .halt_check
= BRANCH_HALT_VOTED
,
1756 .enable_reg
= 0x52008,
1757 .enable_mask
= BIT(0),
1758 .hw
.init
= &(struct clk_init_data
){
1759 .name
= "gcc_pcie_0_slv_axi_clk",
1760 .ops
= &clk_branch2_ops
,
1765 static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk
= {
1766 .halt_reg
= 0x6b010,
1767 .halt_check
= BRANCH_HALT_VOTED
,
1769 .enable_reg
= 0x52008,
1770 .enable_mask
= BIT(5),
1771 .hw
.init
= &(struct clk_init_data
){
1772 .name
= "gcc_pcie_0_slv_q2a_axi_clk",
1773 .ops
= &clk_branch2_ops
,
1778 static struct clk_branch gcc_pcie_1_aux_clk
= {
1779 .halt_reg
= 0x8d028,
1780 .halt_check
= BRANCH_HALT_VOTED
,
1782 .enable_reg
= 0x52000,
1783 .enable_mask
= BIT(29),
1784 .hw
.init
= &(struct clk_init_data
){
1785 .name
= "gcc_pcie_1_aux_clk",
1786 .parent_hws
= (const struct clk_hw
*[]){
1787 &gcc_pcie_1_aux_clk_src
.clkr
.hw
,
1790 .flags
= CLK_SET_RATE_PARENT
,
1791 .ops
= &clk_branch2_ops
,
1796 static struct clk_branch gcc_pcie_1_cfg_ahb_clk
= {
1797 .halt_reg
= 0x8d024,
1798 .halt_check
= BRANCH_HALT_VOTED
,
1799 .hwcg_reg
= 0x8d024,
1802 .enable_reg
= 0x52000,
1803 .enable_mask
= BIT(28),
1804 .hw
.init
= &(struct clk_init_data
){
1805 .name
= "gcc_pcie_1_cfg_ahb_clk",
1806 .ops
= &clk_branch2_ops
,
1811 static struct clk_branch gcc_pcie_1_mstr_axi_clk
= {
1812 .halt_reg
= 0x8d01c,
1813 .halt_check
= BRANCH_HALT_SKIP
,
1815 .enable_reg
= 0x52000,
1816 .enable_mask
= BIT(27),
1817 .hw
.init
= &(struct clk_init_data
){
1818 .name
= "gcc_pcie_1_mstr_axi_clk",
1819 .ops
= &clk_branch2_ops
,
1824 static struct clk_branch gcc_pcie_1_pipe_clk
= {
1825 .halt_reg
= 0x8d030,
1826 .halt_check
= BRANCH_HALT_SKIP
,
1828 .enable_reg
= 0x52000,
1829 .enable_mask
= BIT(30),
1830 .hw
.init
= &(struct clk_init_data
){
1831 .name
= "gcc_pcie_1_pipe_clk",
1832 .parent_hws
= (const struct clk_hw
*[]){
1833 &gcc_pcie_1_pipe_clk_src
.clkr
.hw
,
1836 .flags
= CLK_SET_RATE_PARENT
,
1837 .ops
= &clk_branch2_ops
,
1842 static struct clk_branch gcc_pcie_1_slv_axi_clk
= {
1843 .halt_reg
= 0x8d014,
1844 .halt_check
= BRANCH_HALT_VOTED
,
1846 .enable_reg
= 0x52000,
1847 .enable_mask
= BIT(26),
1848 .hw
.init
= &(struct clk_init_data
){
1849 .name
= "gcc_pcie_1_slv_axi_clk",
1850 .ops
= &clk_branch2_ops
,
1855 static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk
= {
1856 .halt_reg
= 0x8d010,
1857 .halt_check
= BRANCH_HALT_VOTED
,
1859 .enable_reg
= 0x52000,
1860 .enable_mask
= BIT(25),
1861 .hw
.init
= &(struct clk_init_data
){
1862 .name
= "gcc_pcie_1_slv_q2a_axi_clk",
1863 .ops
= &clk_branch2_ops
,
1868 static struct clk_branch gcc_pcie_throttle_core_clk
= {
1869 .halt_reg
= 0x90018,
1870 .halt_check
= BRANCH_HALT_SKIP
,
1871 .hwcg_reg
= 0x90018,
1874 .enable_reg
= 0x52000,
1875 .enable_mask
= BIT(20),
1876 .hw
.init
= &(struct clk_init_data
){
1877 .name
= "gcc_pcie_throttle_core_clk",
1878 .ops
= &clk_branch2_ops
,
1883 static struct clk_branch gcc_pdm2_clk
= {
1884 .halt_reg
= 0x3300c,
1885 .halt_check
= BRANCH_HALT
,
1887 .enable_reg
= 0x3300c,
1888 .enable_mask
= BIT(0),
1889 .hw
.init
= &(struct clk_init_data
){
1890 .name
= "gcc_pdm2_clk",
1891 .parent_hws
= (const struct clk_hw
*[]){
1892 &gcc_pdm2_clk_src
.clkr
.hw
,
1895 .flags
= CLK_SET_RATE_PARENT
,
1896 .ops
= &clk_branch2_ops
,
1901 static struct clk_branch gcc_pdm_ahb_clk
= {
1902 .halt_reg
= 0x33004,
1903 .halt_check
= BRANCH_HALT_VOTED
,
1904 .hwcg_reg
= 0x33004,
1907 .enable_reg
= 0x33004,
1908 .enable_mask
= BIT(0),
1909 .hw
.init
= &(struct clk_init_data
){
1910 .name
= "gcc_pdm_ahb_clk",
1911 .ops
= &clk_branch2_ops
,
1916 static struct clk_branch gcc_pdm_xo4_clk
= {
1917 .halt_reg
= 0x33008,
1918 .halt_check
= BRANCH_HALT
,
1920 .enable_reg
= 0x33008,
1921 .enable_mask
= BIT(0),
1922 .hw
.init
= &(struct clk_init_data
){
1923 .name
= "gcc_pdm_xo4_clk",
1924 .ops
= &clk_branch2_ops
,
1929 static struct clk_branch gcc_qmip_camera_nrt_ahb_clk
= {
1930 .halt_reg
= 0x26008,
1931 .halt_check
= BRANCH_HALT_VOTED
,
1932 .hwcg_reg
= 0x26008,
1935 .enable_reg
= 0x26008,
1936 .enable_mask
= BIT(0),
1937 .hw
.init
= &(struct clk_init_data
){
1938 .name
= "gcc_qmip_camera_nrt_ahb_clk",
1939 .ops
= &clk_branch2_ops
,
1944 static struct clk_branch gcc_qmip_camera_rt_ahb_clk
= {
1945 .halt_reg
= 0x2600c,
1946 .halt_check
= BRANCH_HALT_VOTED
,
1947 .hwcg_reg
= 0x2600c,
1950 .enable_reg
= 0x2600c,
1951 .enable_mask
= BIT(0),
1952 .hw
.init
= &(struct clk_init_data
){
1953 .name
= "gcc_qmip_camera_rt_ahb_clk",
1954 .ops
= &clk_branch2_ops
,
1959 static struct clk_branch gcc_qmip_disp_ahb_clk
= {
1960 .halt_reg
= 0x27008,
1961 .halt_check
= BRANCH_HALT_VOTED
,
1963 .enable_reg
= 0x27008,
1964 .enable_mask
= BIT(0),
1965 .hw
.init
= &(struct clk_init_data
){
1966 .name
= "gcc_qmip_disp_ahb_clk",
1967 .ops
= &clk_branch2_ops
,
1972 static struct clk_branch gcc_qmip_video_vcodec_ahb_clk
= {
1973 .halt_reg
= 0x28008,
1974 .halt_check
= BRANCH_HALT_VOTED
,
1975 .hwcg_reg
= 0x28008,
1978 .enable_reg
= 0x28008,
1979 .enable_mask
= BIT(0),
1980 .hw
.init
= &(struct clk_init_data
){
1981 .name
= "gcc_qmip_video_vcodec_ahb_clk",
1982 .ops
= &clk_branch2_ops
,
1987 static struct clk_branch gcc_qspi_cnoc_periph_ahb_clk
= {
1988 .halt_reg
= 0x4b004,
1989 .halt_check
= BRANCH_HALT
,
1990 .hwcg_reg
= 0x4b004,
1993 .enable_reg
= 0x4b004,
1994 .enable_mask
= BIT(0),
1995 .hw
.init
= &(struct clk_init_data
){
1996 .name
= "gcc_qspi_cnoc_periph_ahb_clk",
1997 .ops
= &clk_branch2_ops
,
2002 static struct clk_branch gcc_qspi_core_clk
= {
2003 .halt_reg
= 0x4b008,
2004 .halt_check
= BRANCH_HALT
,
2006 .enable_reg
= 0x4b008,
2007 .enable_mask
= BIT(0),
2008 .hw
.init
= &(struct clk_init_data
){
2009 .name
= "gcc_qspi_core_clk",
2010 .parent_hws
= (const struct clk_hw
*[]){
2011 &gcc_qspi_core_clk_src
.clkr
.hw
,
2014 .flags
= CLK_SET_RATE_PARENT
,
2015 .ops
= &clk_branch2_ops
,
2020 static struct clk_branch gcc_qupv3_wrap0_core_2x_clk
= {
2021 .halt_reg
= 0x23008,
2022 .halt_check
= BRANCH_HALT_VOTED
,
2024 .enable_reg
= 0x52008,
2025 .enable_mask
= BIT(9),
2026 .hw
.init
= &(struct clk_init_data
){
2027 .name
= "gcc_qupv3_wrap0_core_2x_clk",
2028 .ops
= &clk_branch2_ops
,
2033 static struct clk_branch gcc_qupv3_wrap0_core_clk
= {
2034 .halt_reg
= 0x23000,
2035 .halt_check
= BRANCH_HALT_VOTED
,
2037 .enable_reg
= 0x52008,
2038 .enable_mask
= BIT(8),
2039 .hw
.init
= &(struct clk_init_data
){
2040 .name
= "gcc_qupv3_wrap0_core_clk",
2041 .ops
= &clk_branch2_ops
,
2046 static struct clk_branch gcc_qupv3_wrap0_s0_clk
= {
2047 .halt_reg
= 0x1700c,
2048 .halt_check
= BRANCH_HALT_VOTED
,
2050 .enable_reg
= 0x52008,
2051 .enable_mask
= BIT(10),
2052 .hw
.init
= &(struct clk_init_data
){
2053 .name
= "gcc_qupv3_wrap0_s0_clk",
2054 .parent_hws
= (const struct clk_hw
*[]){
2055 &gcc_qupv3_wrap0_s0_clk_src
.clkr
.hw
,
2058 .flags
= CLK_SET_RATE_PARENT
,
2059 .ops
= &clk_branch2_ops
,
2064 static struct clk_branch gcc_qupv3_wrap0_s1_clk
= {
2065 .halt_reg
= 0x1713c,
2066 .halt_check
= BRANCH_HALT_VOTED
,
2068 .enable_reg
= 0x52008,
2069 .enable_mask
= BIT(11),
2070 .hw
.init
= &(struct clk_init_data
){
2071 .name
= "gcc_qupv3_wrap0_s1_clk",
2072 .parent_hws
= (const struct clk_hw
*[]){
2073 &gcc_qupv3_wrap0_s1_clk_src
.clkr
.hw
,
2076 .flags
= CLK_SET_RATE_PARENT
,
2077 .ops
= &clk_branch2_ops
,
2082 static struct clk_branch gcc_qupv3_wrap0_s2_clk
= {
2083 .halt_reg
= 0x1726c,
2084 .halt_check
= BRANCH_HALT_VOTED
,
2086 .enable_reg
= 0x52008,
2087 .enable_mask
= BIT(12),
2088 .hw
.init
= &(struct clk_init_data
){
2089 .name
= "gcc_qupv3_wrap0_s2_clk",
2090 .parent_hws
= (const struct clk_hw
*[]){
2091 &gcc_qupv3_wrap0_s2_clk_src
.clkr
.hw
,
2094 .flags
= CLK_SET_RATE_PARENT
,
2095 .ops
= &clk_branch2_ops
,
2100 static struct clk_branch gcc_qupv3_wrap0_s3_clk
= {
2101 .halt_reg
= 0x1739c,
2102 .halt_check
= BRANCH_HALT_VOTED
,
2104 .enable_reg
= 0x52008,
2105 .enable_mask
= BIT(13),
2106 .hw
.init
= &(struct clk_init_data
){
2107 .name
= "gcc_qupv3_wrap0_s3_clk",
2108 .parent_hws
= (const struct clk_hw
*[]){
2109 &gcc_qupv3_wrap0_s3_clk_src
.clkr
.hw
,
2112 .flags
= CLK_SET_RATE_PARENT
,
2113 .ops
= &clk_branch2_ops
,
2118 static struct clk_branch gcc_qupv3_wrap0_s4_clk
= {
2119 .halt_reg
= 0x174cc,
2120 .halt_check
= BRANCH_HALT_VOTED
,
2122 .enable_reg
= 0x52008,
2123 .enable_mask
= BIT(14),
2124 .hw
.init
= &(struct clk_init_data
){
2125 .name
= "gcc_qupv3_wrap0_s4_clk",
2126 .parent_hws
= (const struct clk_hw
*[]){
2127 &gcc_qupv3_wrap0_s4_clk_src
.clkr
.hw
,
2130 .flags
= CLK_SET_RATE_PARENT
,
2131 .ops
= &clk_branch2_ops
,
2136 static struct clk_branch gcc_qupv3_wrap0_s5_clk
= {
2137 .halt_reg
= 0x175fc,
2138 .halt_check
= BRANCH_HALT_VOTED
,
2140 .enable_reg
= 0x52008,
2141 .enable_mask
= BIT(15),
2142 .hw
.init
= &(struct clk_init_data
){
2143 .name
= "gcc_qupv3_wrap0_s5_clk",
2144 .parent_hws
= (const struct clk_hw
*[]){
2145 &gcc_qupv3_wrap0_s5_clk_src
.clkr
.hw
,
2148 .flags
= CLK_SET_RATE_PARENT
,
2149 .ops
= &clk_branch2_ops
,
2154 static struct clk_branch gcc_qupv3_wrap0_s6_clk
= {
2155 .halt_reg
= 0x1772c,
2156 .halt_check
= BRANCH_HALT_VOTED
,
2158 .enable_reg
= 0x52008,
2159 .enable_mask
= BIT(16),
2160 .hw
.init
= &(struct clk_init_data
){
2161 .name
= "gcc_qupv3_wrap0_s6_clk",
2162 .parent_hws
= (const struct clk_hw
*[]){
2163 &gcc_qupv3_wrap0_s6_clk_src
.clkr
.hw
,
2166 .flags
= CLK_SET_RATE_PARENT
,
2167 .ops
= &clk_branch2_ops
,
2172 static struct clk_branch gcc_qupv3_wrap0_s7_clk
= {
2173 .halt_reg
= 0x1785c,
2174 .halt_check
= BRANCH_HALT_VOTED
,
2176 .enable_reg
= 0x52008,
2177 .enable_mask
= BIT(17),
2178 .hw
.init
= &(struct clk_init_data
){
2179 .name
= "gcc_qupv3_wrap0_s7_clk",
2180 .parent_hws
= (const struct clk_hw
*[]){
2181 &gcc_qupv3_wrap0_s7_clk_src
.clkr
.hw
,
2184 .flags
= CLK_SET_RATE_PARENT
,
2185 .ops
= &clk_branch2_ops
,
2190 static struct clk_branch gcc_qupv3_wrap1_core_2x_clk
= {
2191 .halt_reg
= 0x23140,
2192 .halt_check
= BRANCH_HALT_VOTED
,
2194 .enable_reg
= 0x52008,
2195 .enable_mask
= BIT(18),
2196 .hw
.init
= &(struct clk_init_data
){
2197 .name
= "gcc_qupv3_wrap1_core_2x_clk",
2198 .ops
= &clk_branch2_ops
,
2203 static struct clk_branch gcc_qupv3_wrap1_core_clk
= {
2204 .halt_reg
= 0x23138,
2205 .halt_check
= BRANCH_HALT_VOTED
,
2207 .enable_reg
= 0x52008,
2208 .enable_mask
= BIT(19),
2209 .hw
.init
= &(struct clk_init_data
){
2210 .name
= "gcc_qupv3_wrap1_core_clk",
2211 .ops
= &clk_branch2_ops
,
2216 static struct clk_branch gcc_qupv3_wrap1_s0_clk
= {
2217 .halt_reg
= 0x1800c,
2218 .halt_check
= BRANCH_HALT_VOTED
,
2220 .enable_reg
= 0x52008,
2221 .enable_mask
= BIT(22),
2222 .hw
.init
= &(struct clk_init_data
){
2223 .name
= "gcc_qupv3_wrap1_s0_clk",
2224 .parent_hws
= (const struct clk_hw
*[]){
2225 &gcc_qupv3_wrap1_s0_clk_src
.clkr
.hw
,
2228 .flags
= CLK_SET_RATE_PARENT
,
2229 .ops
= &clk_branch2_ops
,
2234 static struct clk_branch gcc_qupv3_wrap1_s1_clk
= {
2235 .halt_reg
= 0x1813c,
2236 .halt_check
= BRANCH_HALT_VOTED
,
2238 .enable_reg
= 0x52008,
2239 .enable_mask
= BIT(23),
2240 .hw
.init
= &(struct clk_init_data
){
2241 .name
= "gcc_qupv3_wrap1_s1_clk",
2242 .parent_hws
= (const struct clk_hw
*[]){
2243 &gcc_qupv3_wrap1_s1_clk_src
.clkr
.hw
,
2246 .flags
= CLK_SET_RATE_PARENT
,
2247 .ops
= &clk_branch2_ops
,
2252 static struct clk_branch gcc_qupv3_wrap1_s2_clk
= {
2253 .halt_reg
= 0x1826c,
2254 .halt_check
= BRANCH_HALT_VOTED
,
2256 .enable_reg
= 0x52008,
2257 .enable_mask
= BIT(24),
2258 .hw
.init
= &(struct clk_init_data
){
2259 .name
= "gcc_qupv3_wrap1_s2_clk",
2260 .parent_hws
= (const struct clk_hw
*[]){
2261 &gcc_qupv3_wrap1_s2_clk_src
.clkr
.hw
,
2264 .flags
= CLK_SET_RATE_PARENT
,
2265 .ops
= &clk_branch2_ops
,
2270 static struct clk_branch gcc_qupv3_wrap1_s3_clk
= {
2271 .halt_reg
= 0x1839c,
2272 .halt_check
= BRANCH_HALT_VOTED
,
2274 .enable_reg
= 0x52008,
2275 .enable_mask
= BIT(25),
2276 .hw
.init
= &(struct clk_init_data
){
2277 .name
= "gcc_qupv3_wrap1_s3_clk",
2278 .parent_hws
= (const struct clk_hw
*[]){
2279 &gcc_qupv3_wrap1_s3_clk_src
.clkr
.hw
,
2282 .flags
= CLK_SET_RATE_PARENT
,
2283 .ops
= &clk_branch2_ops
,
2288 static struct clk_branch gcc_qupv3_wrap1_s4_clk
= {
2289 .halt_reg
= 0x184cc,
2290 .halt_check
= BRANCH_HALT_VOTED
,
2292 .enable_reg
= 0x52008,
2293 .enable_mask
= BIT(26),
2294 .hw
.init
= &(struct clk_init_data
){
2295 .name
= "gcc_qupv3_wrap1_s4_clk",
2296 .parent_hws
= (const struct clk_hw
*[]){
2297 &gcc_qupv3_wrap1_s4_clk_src
.clkr
.hw
,
2300 .flags
= CLK_SET_RATE_PARENT
,
2301 .ops
= &clk_branch2_ops
,
2306 static struct clk_branch gcc_qupv3_wrap1_s5_clk
= {
2307 .halt_reg
= 0x185fc,
2308 .halt_check
= BRANCH_HALT_VOTED
,
2310 .enable_reg
= 0x52008,
2311 .enable_mask
= BIT(27),
2312 .hw
.init
= &(struct clk_init_data
){
2313 .name
= "gcc_qupv3_wrap1_s5_clk",
2314 .parent_hws
= (const struct clk_hw
*[]){
2315 &gcc_qupv3_wrap1_s5_clk_src
.clkr
.hw
,
2318 .flags
= CLK_SET_RATE_PARENT
,
2319 .ops
= &clk_branch2_ops
,
2324 static struct clk_branch gcc_qupv3_wrap1_s6_clk
= {
2325 .halt_reg
= 0x1872c,
2326 .halt_check
= BRANCH_HALT_VOTED
,
2328 .enable_reg
= 0x52000,
2329 .enable_mask
= BIT(13),
2330 .hw
.init
= &(struct clk_init_data
){
2331 .name
= "gcc_qupv3_wrap1_s6_clk",
2332 .parent_hws
= (const struct clk_hw
*[]){
2333 &gcc_qupv3_wrap1_s6_clk_src
.clkr
.hw
,
2336 .flags
= CLK_SET_RATE_PARENT
,
2337 .ops
= &clk_branch2_ops
,
2342 static struct clk_branch gcc_qupv3_wrap1_s7_clk
= {
2343 .halt_reg
= 0x1885c,
2344 .halt_check
= BRANCH_HALT_VOTED
,
2346 .enable_reg
= 0x52000,
2347 .enable_mask
= BIT(14),
2348 .hw
.init
= &(struct clk_init_data
){
2349 .name
= "gcc_qupv3_wrap1_s7_clk",
2350 .parent_hws
= (const struct clk_hw
*[]){
2351 &gcc_qupv3_wrap1_s7_clk_src
.clkr
.hw
,
2354 .flags
= CLK_SET_RATE_PARENT
,
2355 .ops
= &clk_branch2_ops
,
2360 static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk
= {
2361 .halt_reg
= 0x17004,
2362 .halt_check
= BRANCH_HALT_VOTED
,
2363 .hwcg_reg
= 0x17004,
2366 .enable_reg
= 0x52008,
2367 .enable_mask
= BIT(6),
2368 .hw
.init
= &(struct clk_init_data
){
2369 .name
= "gcc_qupv3_wrap_0_m_ahb_clk",
2370 .ops
= &clk_branch2_ops
,
2375 static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk
= {
2376 .halt_reg
= 0x17008,
2377 .halt_check
= BRANCH_HALT_VOTED
,
2378 .hwcg_reg
= 0x17008,
2381 .enable_reg
= 0x52008,
2382 .enable_mask
= BIT(7),
2383 .hw
.init
= &(struct clk_init_data
){
2384 .name
= "gcc_qupv3_wrap_0_s_ahb_clk",
2385 .ops
= &clk_branch2_ops
,
2390 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk
= {
2391 .halt_reg
= 0x18004,
2392 .halt_check
= BRANCH_HALT_VOTED
,
2393 .hwcg_reg
= 0x18004,
2396 .enable_reg
= 0x52008,
2397 .enable_mask
= BIT(20),
2398 .hw
.init
= &(struct clk_init_data
){
2399 .name
= "gcc_qupv3_wrap_1_m_ahb_clk",
2400 .ops
= &clk_branch2_ops
,
2405 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk
= {
2406 .halt_reg
= 0x18008,
2407 .halt_check
= BRANCH_HALT_VOTED
,
2408 .hwcg_reg
= 0x18008,
2411 .enable_reg
= 0x52008,
2412 .enable_mask
= BIT(21),
2413 .hw
.init
= &(struct clk_init_data
){
2414 .name
= "gcc_qupv3_wrap_1_s_ahb_clk",
2415 .ops
= &clk_branch2_ops
,
2420 static struct clk_branch gcc_sdcc1_ahb_clk
= {
2421 .halt_reg
= 0x75004,
2422 .halt_check
= BRANCH_HALT
,
2424 .enable_reg
= 0x75004,
2425 .enable_mask
= BIT(0),
2426 .hw
.init
= &(struct clk_init_data
){
2427 .name
= "gcc_sdcc1_ahb_clk",
2428 .ops
= &clk_branch2_ops
,
2433 static struct clk_branch gcc_sdcc1_apps_clk
= {
2434 .halt_reg
= 0x75008,
2435 .halt_check
= BRANCH_HALT
,
2437 .enable_reg
= 0x75008,
2438 .enable_mask
= BIT(0),
2439 .hw
.init
= &(struct clk_init_data
){
2440 .name
= "gcc_sdcc1_apps_clk",
2441 .parent_hws
= (const struct clk_hw
*[]){
2442 &gcc_sdcc1_apps_clk_src
.clkr
.hw
,
2445 .flags
= CLK_SET_RATE_PARENT
,
2446 .ops
= &clk_branch2_ops
,
2451 static struct clk_branch gcc_sdcc1_ice_core_clk
= {
2452 .halt_reg
= 0x75024,
2453 .halt_check
= BRANCH_HALT_VOTED
,
2454 .hwcg_reg
= 0x75024,
2457 .enable_reg
= 0x75024,
2458 .enable_mask
= BIT(0),
2459 .hw
.init
= &(struct clk_init_data
){
2460 .name
= "gcc_sdcc1_ice_core_clk",
2461 .parent_hws
= (const struct clk_hw
*[]){
2462 &gcc_sdcc1_ice_core_clk_src
.clkr
.hw
,
2465 .flags
= CLK_SET_RATE_PARENT
,
2466 .ops
= &clk_branch2_ops
,
2471 static struct clk_branch gcc_sdcc2_ahb_clk
= {
2472 .halt_reg
= 0x14008,
2473 .halt_check
= BRANCH_HALT
,
2475 .enable_reg
= 0x14008,
2476 .enable_mask
= BIT(0),
2477 .hw
.init
= &(struct clk_init_data
){
2478 .name
= "gcc_sdcc2_ahb_clk",
2479 .ops
= &clk_branch2_ops
,
2484 static struct clk_branch gcc_sdcc2_apps_clk
= {
2485 .halt_reg
= 0x14004,
2486 .halt_check
= BRANCH_HALT
,
2488 .enable_reg
= 0x14004,
2489 .enable_mask
= BIT(0),
2490 .hw
.init
= &(struct clk_init_data
){
2491 .name
= "gcc_sdcc2_apps_clk",
2492 .parent_hws
= (const struct clk_hw
*[]){
2493 &gcc_sdcc2_apps_clk_src
.clkr
.hw
,
2496 .flags
= CLK_SET_RATE_PARENT
,
2497 .ops
= &clk_branch2_ops
,
2502 static struct clk_branch gcc_sdcc4_ahb_clk
= {
2503 .halt_reg
= 0x16008,
2504 .halt_check
= BRANCH_HALT
,
2506 .enable_reg
= 0x16008,
2507 .enable_mask
= BIT(0),
2508 .hw
.init
= &(struct clk_init_data
){
2509 .name
= "gcc_sdcc4_ahb_clk",
2510 .ops
= &clk_branch2_ops
,
2515 static struct clk_branch gcc_sdcc4_apps_clk
= {
2516 .halt_reg
= 0x16004,
2517 .halt_check
= BRANCH_HALT
,
2519 .enable_reg
= 0x16004,
2520 .enable_mask
= BIT(0),
2521 .hw
.init
= &(struct clk_init_data
){
2522 .name
= "gcc_sdcc4_apps_clk",
2523 .parent_hws
= (const struct clk_hw
*[]){
2524 &gcc_sdcc4_apps_clk_src
.clkr
.hw
,
2527 .flags
= CLK_SET_RATE_PARENT
,
2528 .ops
= &clk_branch2_ops
,
2533 static struct clk_branch gcc_throttle_pcie_ahb_clk
= {
2534 .halt_reg
= 0x9001c,
2535 .halt_check
= BRANCH_HALT
,
2537 .enable_reg
= 0x9001c,
2538 .enable_mask
= BIT(0),
2539 .hw
.init
= &(struct clk_init_data
){
2540 .name
= "gcc_throttle_pcie_ahb_clk",
2541 .ops
= &clk_branch2_ops
,
2546 static struct clk_branch gcc_titan_nrt_throttle_core_clk
= {
2547 .halt_reg
= 0x26024,
2548 .halt_check
= BRANCH_HALT_SKIP
,
2549 .hwcg_reg
= 0x26024,
2552 .enable_reg
= 0x26024,
2553 .enable_mask
= BIT(0),
2554 .hw
.init
= &(struct clk_init_data
){
2555 .name
= "gcc_titan_nrt_throttle_core_clk",
2556 .ops
= &clk_branch2_ops
,
2561 static struct clk_branch gcc_titan_rt_throttle_core_clk
= {
2562 .halt_reg
= 0x26018,
2563 .halt_check
= BRANCH_HALT_SKIP
,
2564 .hwcg_reg
= 0x26018,
2567 .enable_reg
= 0x26018,
2568 .enable_mask
= BIT(0),
2569 .hw
.init
= &(struct clk_init_data
){
2570 .name
= "gcc_titan_rt_throttle_core_clk",
2571 .ops
= &clk_branch2_ops
,
2576 static struct clk_branch gcc_ufs_1_clkref_en
= {
2577 .halt_reg
= 0x8c000,
2578 .halt_check
= BRANCH_HALT
,
2580 .enable_reg
= 0x8c000,
2581 .enable_mask
= BIT(0),
2582 .hw
.init
= &(struct clk_init_data
){
2583 .name
= "gcc_ufs_1_clkref_en",
2584 .ops
= &clk_branch2_ops
,
2589 static struct clk_branch gcc_ufs_phy_ahb_clk
= {
2590 .halt_reg
= 0x77018,
2591 .halt_check
= BRANCH_HALT_VOTED
,
2592 .hwcg_reg
= 0x77018,
2595 .enable_reg
= 0x77018,
2596 .enable_mask
= BIT(0),
2597 .hw
.init
= &(struct clk_init_data
){
2598 .name
= "gcc_ufs_phy_ahb_clk",
2599 .ops
= &clk_branch2_ops
,
2604 static struct clk_branch gcc_ufs_phy_axi_clk
= {
2605 .halt_reg
= 0x77010,
2606 .halt_check
= BRANCH_HALT_VOTED
,
2607 .hwcg_reg
= 0x77010,
2610 .enable_reg
= 0x77010,
2611 .enable_mask
= BIT(0),
2612 .hw
.init
= &(struct clk_init_data
){
2613 .name
= "gcc_ufs_phy_axi_clk",
2614 .parent_hws
= (const struct clk_hw
*[]){
2615 &gcc_ufs_phy_axi_clk_src
.clkr
.hw
,
2618 .flags
= CLK_SET_RATE_PARENT
,
2619 .ops
= &clk_branch2_ops
,
2624 static struct clk_branch gcc_ufs_phy_ice_core_clk
= {
2625 .halt_reg
= 0x77064,
2626 .halt_check
= BRANCH_HALT_VOTED
,
2627 .hwcg_reg
= 0x77064,
2630 .enable_reg
= 0x77064,
2631 .enable_mask
= BIT(0),
2632 .hw
.init
= &(struct clk_init_data
){
2633 .name
= "gcc_ufs_phy_ice_core_clk",
2634 .parent_hws
= (const struct clk_hw
*[]){
2635 &gcc_ufs_phy_ice_core_clk_src
.clkr
.hw
,
2638 .flags
= CLK_SET_RATE_PARENT
,
2639 .ops
= &clk_branch2_ops
,
2644 static struct clk_branch gcc_ufs_phy_phy_aux_clk
= {
2645 .halt_reg
= 0x7709c,
2646 .halt_check
= BRANCH_HALT_VOTED
,
2647 .hwcg_reg
= 0x7709c,
2650 .enable_reg
= 0x7709c,
2651 .enable_mask
= BIT(0),
2652 .hw
.init
= &(struct clk_init_data
){
2653 .name
= "gcc_ufs_phy_phy_aux_clk",
2654 .parent_hws
= (const struct clk_hw
*[]){
2655 &gcc_ufs_phy_phy_aux_clk_src
.clkr
.hw
,
2658 .flags
= CLK_SET_RATE_PARENT
,
2659 .ops
= &clk_branch2_ops
,
2664 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk
= {
2665 .halt_reg
= 0x77020,
2666 .halt_check
= BRANCH_HALT_DELAY
,
2668 .enable_reg
= 0x77020,
2669 .enable_mask
= BIT(0),
2670 .hw
.init
= &(struct clk_init_data
){
2671 .name
= "gcc_ufs_phy_rx_symbol_0_clk",
2672 .parent_hws
= (const struct clk_hw
*[]){
2673 &gcc_ufs_phy_rx_symbol_0_clk_src
.clkr
.hw
,
2676 .flags
= CLK_SET_RATE_PARENT
,
2677 .ops
= &clk_branch2_ops
,
2682 static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk
= {
2683 .halt_reg
= 0x770b8,
2684 .halt_check
= BRANCH_HALT_DELAY
,
2686 .enable_reg
= 0x770b8,
2687 .enable_mask
= BIT(0),
2688 .hw
.init
= &(struct clk_init_data
){
2689 .name
= "gcc_ufs_phy_rx_symbol_1_clk",
2690 .parent_hws
= (const struct clk_hw
*[]){
2691 &gcc_ufs_phy_rx_symbol_1_clk_src
.clkr
.hw
,
2694 .flags
= CLK_SET_RATE_PARENT
,
2695 .ops
= &clk_branch2_ops
,
2700 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk
= {
2701 .halt_reg
= 0x7701c,
2702 .halt_check
= BRANCH_HALT_DELAY
,
2704 .enable_reg
= 0x7701c,
2705 .enable_mask
= BIT(0),
2706 .hw
.init
= &(struct clk_init_data
){
2707 .name
= "gcc_ufs_phy_tx_symbol_0_clk",
2708 .parent_hws
= (const struct clk_hw
*[]){
2709 &gcc_ufs_phy_tx_symbol_0_clk_src
.clkr
.hw
,
2712 .flags
= CLK_SET_RATE_PARENT
,
2713 .ops
= &clk_branch2_ops
,
2718 static struct clk_branch gcc_ufs_phy_unipro_core_clk
= {
2719 .halt_reg
= 0x7705c,
2720 .halt_check
= BRANCH_HALT_VOTED
,
2721 .hwcg_reg
= 0x7705c,
2724 .enable_reg
= 0x7705c,
2725 .enable_mask
= BIT(0),
2726 .hw
.init
= &(struct clk_init_data
){
2727 .name
= "gcc_ufs_phy_unipro_core_clk",
2728 .parent_hws
= (const struct clk_hw
*[]){
2729 &gcc_ufs_phy_unipro_core_clk_src
.clkr
.hw
,
2732 .flags
= CLK_SET_RATE_PARENT
,
2733 .ops
= &clk_branch2_ops
,
2738 static struct clk_branch gcc_usb30_prim_master_clk
= {
2740 .halt_check
= BRANCH_HALT
,
2742 .enable_reg
= 0xf010,
2743 .enable_mask
= BIT(0),
2744 .hw
.init
= &(struct clk_init_data
){
2745 .name
= "gcc_usb30_prim_master_clk",
2746 .parent_hws
= (const struct clk_hw
*[]){
2747 &gcc_usb30_prim_master_clk_src
.clkr
.hw
,
2750 .flags
= CLK_SET_RATE_PARENT
,
2751 .ops
= &clk_branch2_ops
,
2756 static struct clk_branch gcc_usb30_prim_mock_utmi_clk
= {
2758 .halt_check
= BRANCH_HALT
,
2760 .enable_reg
= 0xf01c,
2761 .enable_mask
= BIT(0),
2762 .hw
.init
= &(struct clk_init_data
){
2763 .name
= "gcc_usb30_prim_mock_utmi_clk",
2764 .parent_hws
= (const struct clk_hw
*[]) {
2765 &gcc_usb30_prim_mock_utmi_postdiv_clk_src
.clkr
.hw
,
2768 .flags
= CLK_SET_RATE_PARENT
,
2769 .ops
= &clk_branch2_ops
,
2774 static struct clk_branch gcc_usb30_prim_sleep_clk
= {
2776 .halt_check
= BRANCH_HALT
,
2778 .enable_reg
= 0xf018,
2779 .enable_mask
= BIT(0),
2780 .hw
.init
= &(struct clk_init_data
){
2781 .name
= "gcc_usb30_prim_sleep_clk",
2782 .ops
= &clk_branch2_ops
,
2787 static struct clk_branch gcc_usb30_sec_master_clk
= {
2788 .halt_reg
= 0x9e010,
2789 .halt_check
= BRANCH_HALT
,
2791 .enable_reg
= 0x9e010,
2792 .enable_mask
= BIT(0),
2793 .hw
.init
= &(struct clk_init_data
){
2794 .name
= "gcc_usb30_sec_master_clk",
2795 .parent_hws
= (const struct clk_hw
*[]){
2796 &gcc_usb30_sec_master_clk_src
.clkr
.hw
,
2799 .flags
= CLK_SET_RATE_PARENT
,
2800 .ops
= &clk_branch2_ops
,
2805 static struct clk_branch gcc_usb30_sec_mock_utmi_clk
= {
2806 .halt_reg
= 0x9e01c,
2807 .halt_check
= BRANCH_HALT
,
2809 .enable_reg
= 0x9e01c,
2810 .enable_mask
= BIT(0),
2811 .hw
.init
= &(struct clk_init_data
){
2812 .name
= "gcc_usb30_sec_mock_utmi_clk",
2813 .parent_hws
= (const struct clk_hw
*[]) {
2814 &gcc_usb30_sec_mock_utmi_postdiv_clk_src
.clkr
.hw
,
2817 .flags
= CLK_SET_RATE_PARENT
,
2818 .ops
= &clk_branch2_ops
,
2823 static struct clk_branch gcc_usb30_sec_sleep_clk
= {
2824 .halt_reg
= 0x9e018,
2825 .halt_check
= BRANCH_HALT
,
2827 .enable_reg
= 0x9e018,
2828 .enable_mask
= BIT(0),
2829 .hw
.init
= &(struct clk_init_data
){
2830 .name
= "gcc_usb30_sec_sleep_clk",
2831 .ops
= &clk_branch2_ops
,
2836 static struct clk_branch gcc_usb3_prim_phy_aux_clk
= {
2838 .halt_check
= BRANCH_HALT
,
2840 .enable_reg
= 0xf054,
2841 .enable_mask
= BIT(0),
2842 .hw
.init
= &(struct clk_init_data
){
2843 .name
= "gcc_usb3_prim_phy_aux_clk",
2844 .parent_hws
= (const struct clk_hw
*[]){
2845 &gcc_usb3_prim_phy_aux_clk_src
.clkr
.hw
,
2848 .flags
= CLK_SET_RATE_PARENT
,
2849 .ops
= &clk_branch2_ops
,
2854 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk
= {
2856 .halt_check
= BRANCH_HALT
,
2858 .enable_reg
= 0xf058,
2859 .enable_mask
= BIT(0),
2860 .hw
.init
= &(struct clk_init_data
){
2861 .name
= "gcc_usb3_prim_phy_com_aux_clk",
2862 .parent_hws
= (const struct clk_hw
*[]){
2863 &gcc_usb3_prim_phy_aux_clk_src
.clkr
.hw
,
2866 .flags
= CLK_SET_RATE_PARENT
,
2867 .ops
= &clk_branch2_ops
,
2872 static struct clk_branch gcc_usb3_prim_phy_pipe_clk
= {
2874 .halt_check
= BRANCH_HALT_DELAY
,
2878 .enable_reg
= 0xf05c,
2879 .enable_mask
= BIT(0),
2880 .hw
.init
= &(struct clk_init_data
){
2881 .name
= "gcc_usb3_prim_phy_pipe_clk",
2882 .parent_hws
= (const struct clk_hw
*[]){
2883 &gcc_usb3_prim_phy_pipe_clk_src
.clkr
.hw
,
2886 .flags
= CLK_SET_RATE_PARENT
,
2887 .ops
= &clk_branch2_ops
,
2892 static struct clk_branch gcc_cfg_noc_lpass_clk
= {
2893 .halt_reg
= 0x47020,
2894 .halt_check
= BRANCH_HALT
,
2896 .enable_reg
= 0x47020,
2897 .enable_mask
= BIT(0),
2898 .hw
.init
= &(struct clk_init_data
){
2899 .name
= "gcc_cfg_noc_lpass_clk",
2900 .ops
= &clk_branch2_aon_ops
,
2904 static struct clk_branch gcc_mss_cfg_ahb_clk
= {
2905 .halt_reg
= 0x8a000,
2906 .halt_check
= BRANCH_HALT
,
2908 .enable_reg
= 0x8a000,
2909 .enable_mask
= BIT(0),
2910 .hw
.init
= &(struct clk_init_data
){
2911 .name
= "gcc_mss_cfg_ahb_clk",
2912 .ops
= &clk_branch2_ops
,
2917 static struct clk_branch gcc_mss_offline_axi_clk
= {
2918 .halt_reg
= 0x8a004,
2919 .halt_check
= BRANCH_HALT_DELAY
,
2921 .enable_reg
= 0x8a004,
2922 .enable_mask
= BIT(0),
2923 .hw
.init
= &(struct clk_init_data
){
2924 .name
= "gcc_mss_offline_axi_clk",
2925 .ops
= &clk_branch2_ops
,
2930 static struct clk_branch gcc_mss_snoc_axi_clk
= {
2931 .halt_reg
= 0x8a154,
2932 .halt_check
= BRANCH_HALT_DELAY
,
2934 .enable_reg
= 0x8a154,
2935 .enable_mask
= BIT(0),
2936 .hw
.init
= &(struct clk_init_data
){
2937 .name
= "gcc_mss_snoc_axi_clk",
2938 .ops
= &clk_branch2_ops
,
2943 static struct clk_branch gcc_mss_q6_memnoc_axi_clk
= {
2944 .halt_reg
= 0x8a158,
2945 .halt_check
= BRANCH_HALT
,
2947 .enable_reg
= 0x8a158,
2948 .enable_mask
= BIT(0),
2949 .hw
.init
= &(struct clk_init_data
){
2950 .name
= "gcc_mss_q6_memnoc_axi_clk",
2951 .ops
= &clk_branch2_ops
,
2956 static struct clk_regmap_mux gcc_mss_q6ss_boot_clk_src
= {
2960 .parent_map
= gcc_parent_map_15
,
2962 .hw
.init
= &(struct clk_init_data
){
2963 .name
= "gcc_mss_q6ss_boot_clk_src",
2964 .parent_data
= gcc_parent_data_15
,
2965 .num_parents
= ARRAY_SIZE(gcc_parent_data_15
),
2966 .ops
= &clk_regmap_mux_closest_ops
,
2971 static struct clk_branch gcc_usb3_sec_phy_aux_clk
= {
2972 .halt_reg
= 0x9e054,
2973 .halt_check
= BRANCH_HALT
,
2975 .enable_reg
= 0x9e054,
2976 .enable_mask
= BIT(0),
2977 .hw
.init
= &(struct clk_init_data
){
2978 .name
= "gcc_usb3_sec_phy_aux_clk",
2979 .parent_hws
= (const struct clk_hw
*[]){
2980 &gcc_usb3_sec_phy_aux_clk_src
.clkr
.hw
,
2983 .flags
= CLK_SET_RATE_PARENT
,
2984 .ops
= &clk_branch2_ops
,
2989 static struct clk_branch gcc_usb3_sec_phy_com_aux_clk
= {
2990 .halt_reg
= 0x9e058,
2991 .halt_check
= BRANCH_HALT
,
2993 .enable_reg
= 0x9e058,
2994 .enable_mask
= BIT(0),
2995 .hw
.init
= &(struct clk_init_data
){
2996 .name
= "gcc_usb3_sec_phy_com_aux_clk",
2997 .parent_hws
= (const struct clk_hw
*[]){
2998 &gcc_usb3_sec_phy_aux_clk_src
.clkr
.hw
,
3001 .flags
= CLK_SET_RATE_PARENT
,
3002 .ops
= &clk_branch2_ops
,
3007 static struct clk_branch gcc_usb3_sec_phy_pipe_clk
= {
3008 .halt_reg
= 0x9e05c,
3009 .halt_check
= BRANCH_HALT_SKIP
,
3010 .hwcg_reg
= 0x9e05c,
3013 .enable_reg
= 0x9e05c,
3014 .enable_mask
= BIT(0),
3015 .hw
.init
= &(struct clk_init_data
){
3016 .name
= "gcc_usb3_sec_phy_pipe_clk",
3017 .parent_hws
= (const struct clk_hw
*[]){
3018 &gcc_usb3_sec_phy_pipe_clk_src
.clkr
.hw
,
3021 .flags
= CLK_SET_RATE_PARENT
,
3022 .ops
= &clk_branch2_ops
,
3027 static struct clk_branch gcc_video_axi0_clk
= {
3028 .halt_reg
= 0x2800c,
3029 .halt_check
= BRANCH_HALT_SKIP
,
3030 .hwcg_reg
= 0x2800c,
3033 .enable_reg
= 0x2800c,
3034 .enable_mask
= BIT(0),
3035 .hw
.init
= &(struct clk_init_data
){
3036 .name
= "gcc_video_axi0_clk",
3037 .ops
= &clk_branch2_ops
,
3042 static struct clk_branch gcc_video_mvp_throttle_core_clk
= {
3043 .halt_reg
= 0x28010,
3044 .halt_check
= BRANCH_HALT_SKIP
,
3045 .hwcg_reg
= 0x28010,
3048 .enable_reg
= 0x28010,
3049 .enable_mask
= BIT(0),
3050 .hw
.init
= &(struct clk_init_data
){
3051 .name
= "gcc_video_mvp_throttle_core_clk",
3052 .ops
= &clk_branch2_ops
,
3057 static struct clk_branch gcc_wpss_ahb_clk
= {
3058 .halt_reg
= 0x9d154,
3059 .halt_check
= BRANCH_HALT
,
3061 .enable_reg
= 0x9d154,
3062 .enable_mask
= BIT(0),
3063 .hw
.init
= &(struct clk_init_data
){
3064 .name
= "gcc_wpss_ahb_clk",
3065 .ops
= &clk_branch2_ops
,
3070 static struct clk_branch gcc_wpss_ahb_bdg_mst_clk
= {
3071 .halt_reg
= 0x9d158,
3072 .halt_check
= BRANCH_HALT
,
3074 .enable_reg
= 0x9d158,
3075 .enable_mask
= BIT(0),
3076 .hw
.init
= &(struct clk_init_data
){
3077 .name
= "gcc_wpss_ahb_bdg_mst_clk",
3078 .ops
= &clk_branch2_ops
,
3083 static struct clk_branch gcc_wpss_rscp_clk
= {
3084 .halt_reg
= 0x9d16c,
3085 .halt_check
= BRANCH_HALT
,
3087 .enable_reg
= 0x9d16c,
3088 .enable_mask
= BIT(0),
3089 .hw
.init
= &(struct clk_init_data
){
3090 .name
= "gcc_wpss_rscp_clk",
3091 .ops
= &clk_branch2_ops
,
3096 static struct gdsc gcc_pcie_0_gdsc
= {
3098 .en_rest_wait_val
= 0x2,
3099 .en_few_wait_val
= 0x2,
3100 .clk_dis_wait_val
= 0xf,
3102 .name
= "gcc_pcie_0_gdsc",
3104 .pwrsts
= PWRSTS_OFF_ON
,
3108 static struct gdsc gcc_pcie_1_gdsc
= {
3111 .name
= "gcc_pcie_1_gdsc",
3113 .pwrsts
= PWRSTS_RET_ON
,
3117 static struct gdsc gcc_ufs_phy_gdsc
= {
3119 .en_rest_wait_val
= 0x2,
3120 .en_few_wait_val
= 0x2,
3121 .clk_dis_wait_val
= 0xf,
3123 .name
= "gcc_ufs_phy_gdsc",
3125 .pwrsts
= PWRSTS_OFF_ON
,
3129 static struct gdsc gcc_usb30_prim_gdsc
= {
3131 .en_rest_wait_val
= 0x2,
3132 .en_few_wait_val
= 0x2,
3133 .clk_dis_wait_val
= 0xf,
3135 .name
= "gcc_usb30_prim_gdsc",
3137 .pwrsts
= PWRSTS_RET_ON
,
3141 static struct gdsc gcc_usb30_sec_gdsc
= {
3144 .name
= "gcc_usb30_sec_gdsc",
3146 .pwrsts
= PWRSTS_RET_ON
,
3150 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc
= {
3153 .name
= "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc",
3155 .pwrsts
= PWRSTS_OFF_ON
,
3159 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc
= {
3162 .name
= "hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc",
3164 .pwrsts
= PWRSTS_OFF_ON
,
3168 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc
= {
3171 .name
= "hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc",
3173 .pwrsts
= PWRSTS_OFF_ON
,
3177 static struct gdsc hlos1_vote_turing_mmu_tbu0_gdsc
= {
3180 .name
= "hlos1_vote_turing_mmu_tbu0_gdsc",
3182 .pwrsts
= PWRSTS_OFF_ON
,
3186 static struct gdsc hlos1_vote_turing_mmu_tbu1_gdsc
= {
3189 .name
= "hlos1_vote_turing_mmu_tbu1_gdsc",
3191 .pwrsts
= PWRSTS_OFF_ON
,
3195 static struct clk_regmap
*gcc_sc7280_clocks
[] = {
3196 [GCC_AGGRE_NOC_PCIE_0_AXI_CLK
] = &gcc_aggre_noc_pcie_0_axi_clk
.clkr
,
3197 [GCC_AGGRE_NOC_PCIE_1_AXI_CLK
] = &gcc_aggre_noc_pcie_1_axi_clk
.clkr
,
3198 [GCC_AGGRE_UFS_PHY_AXI_CLK
] = &gcc_aggre_ufs_phy_axi_clk
.clkr
,
3199 [GCC_AGGRE_USB3_PRIM_AXI_CLK
] = &gcc_aggre_usb3_prim_axi_clk
.clkr
,
3200 [GCC_AGGRE_USB3_SEC_AXI_CLK
] = &gcc_aggre_usb3_sec_axi_clk
.clkr
,
3201 [GCC_CAMERA_HF_AXI_CLK
] = &gcc_camera_hf_axi_clk
.clkr
,
3202 [GCC_CAMERA_SF_AXI_CLK
] = &gcc_camera_sf_axi_clk
.clkr
,
3203 [GCC_CFG_NOC_USB3_PRIM_AXI_CLK
] = &gcc_cfg_noc_usb3_prim_axi_clk
.clkr
,
3204 [GCC_CFG_NOC_USB3_SEC_AXI_CLK
] = &gcc_cfg_noc_usb3_sec_axi_clk
.clkr
,
3205 [GCC_DDRSS_GPU_AXI_CLK
] = &gcc_ddrss_gpu_axi_clk
.clkr
,
3206 [GCC_DDRSS_PCIE_SF_CLK
] = &gcc_ddrss_pcie_sf_clk
.clkr
,
3207 [GCC_DISP_GPLL0_CLK_SRC
] = &gcc_disp_gpll0_clk_src
.clkr
,
3208 [GCC_DISP_HF_AXI_CLK
] = &gcc_disp_hf_axi_clk
.clkr
,
3209 [GCC_DISP_SF_AXI_CLK
] = &gcc_disp_sf_axi_clk
.clkr
,
3210 [GCC_GP1_CLK
] = &gcc_gp1_clk
.clkr
,
3211 [GCC_GP1_CLK_SRC
] = &gcc_gp1_clk_src
.clkr
,
3212 [GCC_GP2_CLK
] = &gcc_gp2_clk
.clkr
,
3213 [GCC_GP2_CLK_SRC
] = &gcc_gp2_clk_src
.clkr
,
3214 [GCC_GP3_CLK
] = &gcc_gp3_clk
.clkr
,
3215 [GCC_GP3_CLK_SRC
] = &gcc_gp3_clk_src
.clkr
,
3216 [GCC_GPLL0
] = &gcc_gpll0
.clkr
,
3217 [GCC_GPLL0_OUT_EVEN
] = &gcc_gpll0_out_even
.clkr
,
3218 [GCC_GPLL0_OUT_ODD
] = &gcc_gpll0_out_odd
.clkr
,
3219 [GCC_GPLL1
] = &gcc_gpll1
.clkr
,
3220 [GCC_GPLL10
] = &gcc_gpll10
.clkr
,
3221 [GCC_GPLL4
] = &gcc_gpll4
.clkr
,
3222 [GCC_GPLL9
] = &gcc_gpll9
.clkr
,
3223 [GCC_GPU_GPLL0_CLK_SRC
] = &gcc_gpu_gpll0_clk_src
.clkr
,
3224 [GCC_GPU_GPLL0_DIV_CLK_SRC
] = &gcc_gpu_gpll0_div_clk_src
.clkr
,
3225 [GCC_GPU_IREF_EN
] = &gcc_gpu_iref_en
.clkr
,
3226 [GCC_GPU_MEMNOC_GFX_CLK
] = &gcc_gpu_memnoc_gfx_clk
.clkr
,
3227 [GCC_GPU_SNOC_DVM_GFX_CLK
] = &gcc_gpu_snoc_dvm_gfx_clk
.clkr
,
3228 [GCC_PCIE0_PHY_RCHNG_CLK
] = &gcc_pcie0_phy_rchng_clk
.clkr
,
3229 [GCC_PCIE1_PHY_RCHNG_CLK
] = &gcc_pcie1_phy_rchng_clk
.clkr
,
3230 [GCC_PCIE_0_AUX_CLK
] = &gcc_pcie_0_aux_clk
.clkr
,
3231 [GCC_PCIE_0_AUX_CLK_SRC
] = &gcc_pcie_0_aux_clk_src
.clkr
,
3232 [GCC_PCIE_0_CFG_AHB_CLK
] = &gcc_pcie_0_cfg_ahb_clk
.clkr
,
3233 [GCC_PCIE_0_MSTR_AXI_CLK
] = &gcc_pcie_0_mstr_axi_clk
.clkr
,
3234 [GCC_PCIE_0_PHY_RCHNG_CLK_SRC
] = &gcc_pcie_0_phy_rchng_clk_src
.clkr
,
3235 [GCC_PCIE_0_PIPE_CLK
] = &gcc_pcie_0_pipe_clk
.clkr
,
3236 [GCC_PCIE_0_PIPE_CLK_SRC
] = &gcc_pcie_0_pipe_clk_src
.clkr
,
3237 [GCC_PCIE_0_SLV_AXI_CLK
] = &gcc_pcie_0_slv_axi_clk
.clkr
,
3238 [GCC_PCIE_0_SLV_Q2A_AXI_CLK
] = &gcc_pcie_0_slv_q2a_axi_clk
.clkr
,
3239 [GCC_PCIE_1_AUX_CLK
] = &gcc_pcie_1_aux_clk
.clkr
,
3240 [GCC_PCIE_1_AUX_CLK_SRC
] = &gcc_pcie_1_aux_clk_src
.clkr
,
3241 [GCC_PCIE_1_CFG_AHB_CLK
] = &gcc_pcie_1_cfg_ahb_clk
.clkr
,
3242 [GCC_PCIE_1_MSTR_AXI_CLK
] = &gcc_pcie_1_mstr_axi_clk
.clkr
,
3243 [GCC_PCIE_1_PHY_RCHNG_CLK_SRC
] = &gcc_pcie_1_phy_rchng_clk_src
.clkr
,
3244 [GCC_PCIE_1_PIPE_CLK
] = &gcc_pcie_1_pipe_clk
.clkr
,
3245 [GCC_PCIE_1_PIPE_CLK_SRC
] = &gcc_pcie_1_pipe_clk_src
.clkr
,
3246 [GCC_PCIE_1_SLV_AXI_CLK
] = &gcc_pcie_1_slv_axi_clk
.clkr
,
3247 [GCC_PCIE_1_SLV_Q2A_AXI_CLK
] = &gcc_pcie_1_slv_q2a_axi_clk
.clkr
,
3248 [GCC_PCIE_THROTTLE_CORE_CLK
] = &gcc_pcie_throttle_core_clk
.clkr
,
3249 [GCC_PDM2_CLK
] = &gcc_pdm2_clk
.clkr
,
3250 [GCC_PDM2_CLK_SRC
] = &gcc_pdm2_clk_src
.clkr
,
3251 [GCC_PDM_AHB_CLK
] = &gcc_pdm_ahb_clk
.clkr
,
3252 [GCC_PDM_XO4_CLK
] = &gcc_pdm_xo4_clk
.clkr
,
3253 [GCC_QMIP_CAMERA_NRT_AHB_CLK
] = &gcc_qmip_camera_nrt_ahb_clk
.clkr
,
3254 [GCC_QMIP_CAMERA_RT_AHB_CLK
] = &gcc_qmip_camera_rt_ahb_clk
.clkr
,
3255 [GCC_QMIP_DISP_AHB_CLK
] = &gcc_qmip_disp_ahb_clk
.clkr
,
3256 [GCC_QMIP_VIDEO_VCODEC_AHB_CLK
] = &gcc_qmip_video_vcodec_ahb_clk
.clkr
,
3257 [GCC_QSPI_CNOC_PERIPH_AHB_CLK
] = &gcc_qspi_cnoc_periph_ahb_clk
.clkr
,
3258 [GCC_QSPI_CORE_CLK
] = &gcc_qspi_core_clk
.clkr
,
3259 [GCC_QSPI_CORE_CLK_SRC
] = &gcc_qspi_core_clk_src
.clkr
,
3260 [GCC_QUPV3_WRAP0_CORE_2X_CLK
] = &gcc_qupv3_wrap0_core_2x_clk
.clkr
,
3261 [GCC_QUPV3_WRAP0_CORE_CLK
] = &gcc_qupv3_wrap0_core_clk
.clkr
,
3262 [GCC_QUPV3_WRAP0_S0_CLK
] = &gcc_qupv3_wrap0_s0_clk
.clkr
,
3263 [GCC_QUPV3_WRAP0_S0_CLK_SRC
] = &gcc_qupv3_wrap0_s0_clk_src
.clkr
,
3264 [GCC_QUPV3_WRAP0_S1_CLK
] = &gcc_qupv3_wrap0_s1_clk
.clkr
,
3265 [GCC_QUPV3_WRAP0_S1_CLK_SRC
] = &gcc_qupv3_wrap0_s1_clk_src
.clkr
,
3266 [GCC_QUPV3_WRAP0_S2_CLK
] = &gcc_qupv3_wrap0_s2_clk
.clkr
,
3267 [GCC_QUPV3_WRAP0_S2_CLK_SRC
] = &gcc_qupv3_wrap0_s2_clk_src
.clkr
,
3268 [GCC_QUPV3_WRAP0_S3_CLK
] = &gcc_qupv3_wrap0_s3_clk
.clkr
,
3269 [GCC_QUPV3_WRAP0_S3_CLK_SRC
] = &gcc_qupv3_wrap0_s3_clk_src
.clkr
,
3270 [GCC_QUPV3_WRAP0_S4_CLK
] = &gcc_qupv3_wrap0_s4_clk
.clkr
,
3271 [GCC_QUPV3_WRAP0_S4_CLK_SRC
] = &gcc_qupv3_wrap0_s4_clk_src
.clkr
,
3272 [GCC_QUPV3_WRAP0_S5_CLK
] = &gcc_qupv3_wrap0_s5_clk
.clkr
,
3273 [GCC_QUPV3_WRAP0_S5_CLK_SRC
] = &gcc_qupv3_wrap0_s5_clk_src
.clkr
,
3274 [GCC_QUPV3_WRAP0_S6_CLK
] = &gcc_qupv3_wrap0_s6_clk
.clkr
,
3275 [GCC_QUPV3_WRAP0_S6_CLK_SRC
] = &gcc_qupv3_wrap0_s6_clk_src
.clkr
,
3276 [GCC_QUPV3_WRAP0_S7_CLK
] = &gcc_qupv3_wrap0_s7_clk
.clkr
,
3277 [GCC_QUPV3_WRAP0_S7_CLK_SRC
] = &gcc_qupv3_wrap0_s7_clk_src
.clkr
,
3278 [GCC_QUPV3_WRAP1_CORE_2X_CLK
] = &gcc_qupv3_wrap1_core_2x_clk
.clkr
,
3279 [GCC_QUPV3_WRAP1_CORE_CLK
] = &gcc_qupv3_wrap1_core_clk
.clkr
,
3280 [GCC_QUPV3_WRAP1_S0_CLK
] = &gcc_qupv3_wrap1_s0_clk
.clkr
,
3281 [GCC_QUPV3_WRAP1_S0_CLK_SRC
] = &gcc_qupv3_wrap1_s0_clk_src
.clkr
,
3282 [GCC_QUPV3_WRAP1_S1_CLK
] = &gcc_qupv3_wrap1_s1_clk
.clkr
,
3283 [GCC_QUPV3_WRAP1_S1_CLK_SRC
] = &gcc_qupv3_wrap1_s1_clk_src
.clkr
,
3284 [GCC_QUPV3_WRAP1_S2_CLK
] = &gcc_qupv3_wrap1_s2_clk
.clkr
,
3285 [GCC_QUPV3_WRAP1_S2_CLK_SRC
] = &gcc_qupv3_wrap1_s2_clk_src
.clkr
,
3286 [GCC_QUPV3_WRAP1_S3_CLK
] = &gcc_qupv3_wrap1_s3_clk
.clkr
,
3287 [GCC_QUPV3_WRAP1_S3_CLK_SRC
] = &gcc_qupv3_wrap1_s3_clk_src
.clkr
,
3288 [GCC_QUPV3_WRAP1_S4_CLK
] = &gcc_qupv3_wrap1_s4_clk
.clkr
,
3289 [GCC_QUPV3_WRAP1_S4_CLK_SRC
] = &gcc_qupv3_wrap1_s4_clk_src
.clkr
,
3290 [GCC_QUPV3_WRAP1_S5_CLK
] = &gcc_qupv3_wrap1_s5_clk
.clkr
,
3291 [GCC_QUPV3_WRAP1_S5_CLK_SRC
] = &gcc_qupv3_wrap1_s5_clk_src
.clkr
,
3292 [GCC_QUPV3_WRAP1_S6_CLK
] = &gcc_qupv3_wrap1_s6_clk
.clkr
,
3293 [GCC_QUPV3_WRAP1_S6_CLK_SRC
] = &gcc_qupv3_wrap1_s6_clk_src
.clkr
,
3294 [GCC_QUPV3_WRAP1_S7_CLK
] = &gcc_qupv3_wrap1_s7_clk
.clkr
,
3295 [GCC_QUPV3_WRAP1_S7_CLK_SRC
] = &gcc_qupv3_wrap1_s7_clk_src
.clkr
,
3296 [GCC_QUPV3_WRAP_0_M_AHB_CLK
] = &gcc_qupv3_wrap_0_m_ahb_clk
.clkr
,
3297 [GCC_QUPV3_WRAP_0_S_AHB_CLK
] = &gcc_qupv3_wrap_0_s_ahb_clk
.clkr
,
3298 [GCC_QUPV3_WRAP_1_M_AHB_CLK
] = &gcc_qupv3_wrap_1_m_ahb_clk
.clkr
,
3299 [GCC_QUPV3_WRAP_1_S_AHB_CLK
] = &gcc_qupv3_wrap_1_s_ahb_clk
.clkr
,
3300 [GCC_SDCC1_AHB_CLK
] = &gcc_sdcc1_ahb_clk
.clkr
,
3301 [GCC_SDCC1_APPS_CLK
] = &gcc_sdcc1_apps_clk
.clkr
,
3302 [GCC_SDCC1_APPS_CLK_SRC
] = &gcc_sdcc1_apps_clk_src
.clkr
,
3303 [GCC_SDCC1_ICE_CORE_CLK
] = &gcc_sdcc1_ice_core_clk
.clkr
,
3304 [GCC_SDCC1_ICE_CORE_CLK_SRC
] = &gcc_sdcc1_ice_core_clk_src
.clkr
,
3305 [GCC_SDCC2_AHB_CLK
] = &gcc_sdcc2_ahb_clk
.clkr
,
3306 [GCC_SDCC2_APPS_CLK
] = &gcc_sdcc2_apps_clk
.clkr
,
3307 [GCC_SDCC2_APPS_CLK_SRC
] = &gcc_sdcc2_apps_clk_src
.clkr
,
3308 [GCC_SDCC4_AHB_CLK
] = &gcc_sdcc4_ahb_clk
.clkr
,
3309 [GCC_SDCC4_APPS_CLK
] = &gcc_sdcc4_apps_clk
.clkr
,
3310 [GCC_SDCC4_APPS_CLK_SRC
] = &gcc_sdcc4_apps_clk_src
.clkr
,
3311 [GCC_THROTTLE_PCIE_AHB_CLK
] = &gcc_throttle_pcie_ahb_clk
.clkr
,
3312 [GCC_TITAN_NRT_THROTTLE_CORE_CLK
] =
3313 &gcc_titan_nrt_throttle_core_clk
.clkr
,
3314 [GCC_TITAN_RT_THROTTLE_CORE_CLK
] = &gcc_titan_rt_throttle_core_clk
.clkr
,
3315 [GCC_UFS_1_CLKREF_EN
] = &gcc_ufs_1_clkref_en
.clkr
,
3316 [GCC_UFS_PHY_AHB_CLK
] = &gcc_ufs_phy_ahb_clk
.clkr
,
3317 [GCC_UFS_PHY_AXI_CLK
] = &gcc_ufs_phy_axi_clk
.clkr
,
3318 [GCC_UFS_PHY_AXI_CLK_SRC
] = &gcc_ufs_phy_axi_clk_src
.clkr
,
3319 [GCC_UFS_PHY_ICE_CORE_CLK
] = &gcc_ufs_phy_ice_core_clk
.clkr
,
3320 [GCC_UFS_PHY_ICE_CORE_CLK_SRC
] = &gcc_ufs_phy_ice_core_clk_src
.clkr
,
3321 [GCC_UFS_PHY_PHY_AUX_CLK
] = &gcc_ufs_phy_phy_aux_clk
.clkr
,
3322 [GCC_UFS_PHY_PHY_AUX_CLK_SRC
] = &gcc_ufs_phy_phy_aux_clk_src
.clkr
,
3323 [GCC_UFS_PHY_RX_SYMBOL_0_CLK
] = &gcc_ufs_phy_rx_symbol_0_clk
.clkr
,
3324 [GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC
] =
3325 &gcc_ufs_phy_rx_symbol_0_clk_src
.clkr
,
3326 [GCC_UFS_PHY_RX_SYMBOL_1_CLK
] = &gcc_ufs_phy_rx_symbol_1_clk
.clkr
,
3327 [GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC
] =
3328 &gcc_ufs_phy_rx_symbol_1_clk_src
.clkr
,
3329 [GCC_UFS_PHY_TX_SYMBOL_0_CLK
] = &gcc_ufs_phy_tx_symbol_0_clk
.clkr
,
3330 [GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC
] =
3331 &gcc_ufs_phy_tx_symbol_0_clk_src
.clkr
,
3332 [GCC_UFS_PHY_UNIPRO_CORE_CLK
] = &gcc_ufs_phy_unipro_core_clk
.clkr
,
3333 [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC
] =
3334 &gcc_ufs_phy_unipro_core_clk_src
.clkr
,
3335 [GCC_USB30_PRIM_MASTER_CLK
] = &gcc_usb30_prim_master_clk
.clkr
,
3336 [GCC_USB30_PRIM_MASTER_CLK_SRC
] = &gcc_usb30_prim_master_clk_src
.clkr
,
3337 [GCC_USB30_PRIM_MOCK_UTMI_CLK
] = &gcc_usb30_prim_mock_utmi_clk
.clkr
,
3338 [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC
] =
3339 &gcc_usb30_prim_mock_utmi_clk_src
.clkr
,
3340 [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC
] =
3341 &gcc_usb30_prim_mock_utmi_postdiv_clk_src
.clkr
,
3342 [GCC_USB30_PRIM_SLEEP_CLK
] = &gcc_usb30_prim_sleep_clk
.clkr
,
3343 [GCC_USB30_SEC_MASTER_CLK
] = &gcc_usb30_sec_master_clk
.clkr
,
3344 [GCC_USB30_SEC_MASTER_CLK_SRC
] = &gcc_usb30_sec_master_clk_src
.clkr
,
3345 [GCC_USB30_SEC_MOCK_UTMI_CLK
] = &gcc_usb30_sec_mock_utmi_clk
.clkr
,
3346 [GCC_USB30_SEC_MOCK_UTMI_CLK_SRC
] =
3347 &gcc_usb30_sec_mock_utmi_clk_src
.clkr
,
3348 [GCC_USB30_SEC_MOCK_UTMI_POSTDIV_CLK_SRC
] =
3349 &gcc_usb30_sec_mock_utmi_postdiv_clk_src
.clkr
,
3350 [GCC_USB30_SEC_SLEEP_CLK
] = &gcc_usb30_sec_sleep_clk
.clkr
,
3351 [GCC_USB3_PRIM_PHY_AUX_CLK
] = &gcc_usb3_prim_phy_aux_clk
.clkr
,
3352 [GCC_USB3_PRIM_PHY_AUX_CLK_SRC
] = &gcc_usb3_prim_phy_aux_clk_src
.clkr
,
3353 [GCC_USB3_PRIM_PHY_COM_AUX_CLK
] = &gcc_usb3_prim_phy_com_aux_clk
.clkr
,
3354 [GCC_USB3_PRIM_PHY_PIPE_CLK
] = &gcc_usb3_prim_phy_pipe_clk
.clkr
,
3355 [GCC_USB3_PRIM_PHY_PIPE_CLK_SRC
] = &gcc_usb3_prim_phy_pipe_clk_src
.clkr
,
3356 [GCC_USB3_SEC_PHY_AUX_CLK
] = &gcc_usb3_sec_phy_aux_clk
.clkr
,
3357 [GCC_USB3_SEC_PHY_AUX_CLK_SRC
] = &gcc_usb3_sec_phy_aux_clk_src
.clkr
,
3358 [GCC_USB3_SEC_PHY_COM_AUX_CLK
] = &gcc_usb3_sec_phy_com_aux_clk
.clkr
,
3359 [GCC_USB3_SEC_PHY_PIPE_CLK
] = &gcc_usb3_sec_phy_pipe_clk
.clkr
,
3360 [GCC_USB3_SEC_PHY_PIPE_CLK_SRC
] = &gcc_usb3_sec_phy_pipe_clk_src
.clkr
,
3361 [GCC_VIDEO_AXI0_CLK
] = &gcc_video_axi0_clk
.clkr
,
3362 [GCC_VIDEO_MVP_THROTTLE_CORE_CLK
] =
3363 &gcc_video_mvp_throttle_core_clk
.clkr
,
3364 [GCC_CFG_NOC_LPASS_CLK
] = &gcc_cfg_noc_lpass_clk
.clkr
,
3365 [GCC_MSS_GPLL0_MAIN_DIV_CLK_SRC
] = &gcc_mss_gpll0_main_div_clk_src
.clkr
,
3366 [GCC_MSS_CFG_AHB_CLK
] = &gcc_mss_cfg_ahb_clk
.clkr
,
3367 [GCC_MSS_OFFLINE_AXI_CLK
] = &gcc_mss_offline_axi_clk
.clkr
,
3368 [GCC_MSS_SNOC_AXI_CLK
] = &gcc_mss_snoc_axi_clk
.clkr
,
3369 [GCC_MSS_Q6_MEMNOC_AXI_CLK
] = &gcc_mss_q6_memnoc_axi_clk
.clkr
,
3370 [GCC_MSS_Q6SS_BOOT_CLK_SRC
] = &gcc_mss_q6ss_boot_clk_src
.clkr
,
3371 [GCC_AGGRE_NOC_PCIE_TBU_CLK
] = &gcc_aggre_noc_pcie_tbu_clk
.clkr
,
3372 [GCC_AGGRE_NOC_PCIE_CENTER_SF_AXI_CLK
] =
3373 &gcc_aggre_noc_pcie_center_sf_axi_clk
.clkr
,
3374 [GCC_PCIE_CLKREF_EN
] = &gcc_pcie_clkref_en
.clkr
,
3375 [GCC_EDP_CLKREF_EN
] = &gcc_edp_clkref_en
.clkr
,
3376 [GCC_SEC_CTRL_CLK_SRC
] = &gcc_sec_ctrl_clk_src
.clkr
,
3377 [GCC_WPSS_AHB_CLK
] = &gcc_wpss_ahb_clk
.clkr
,
3378 [GCC_WPSS_AHB_BDG_MST_CLK
] = &gcc_wpss_ahb_bdg_mst_clk
.clkr
,
3379 [GCC_WPSS_RSCP_CLK
] = &gcc_wpss_rscp_clk
.clkr
,
3382 static struct gdsc
*gcc_sc7280_gdscs
[] = {
3383 [GCC_PCIE_0_GDSC
] = &gcc_pcie_0_gdsc
,
3384 [GCC_PCIE_1_GDSC
] = &gcc_pcie_1_gdsc
,
3385 [GCC_UFS_PHY_GDSC
] = &gcc_ufs_phy_gdsc
,
3386 [GCC_USB30_PRIM_GDSC
] = &gcc_usb30_prim_gdsc
,
3387 [GCC_USB30_SEC_GDSC
] = &gcc_usb30_sec_gdsc
,
3388 [HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC
] = &hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc
,
3389 [HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC
] = &hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc
,
3390 [HLOS1_VOTE_MMNOC_MMU_TBU_SF0_GDSC
] = &hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc
,
3391 [HLOS1_VOTE_TURING_MMU_TBU0_GDSC
] = &hlos1_vote_turing_mmu_tbu0_gdsc
,
3392 [HLOS1_VOTE_TURING_MMU_TBU1_GDSC
] = &hlos1_vote_turing_mmu_tbu1_gdsc
,
3395 static const struct qcom_reset_map gcc_sc7280_resets
[] = {
3396 [GCC_PCIE_0_BCR
] = { 0x6b000 },
3397 [GCC_PCIE_0_PHY_BCR
] = { 0x6c01c },
3398 [GCC_PCIE_1_BCR
] = { 0x8d000 },
3399 [GCC_PCIE_1_PHY_BCR
] = { 0x8e01c },
3400 [GCC_QUSB2PHY_PRIM_BCR
] = { 0x12000 },
3401 [GCC_QUSB2PHY_SEC_BCR
] = { 0x12004 },
3402 [GCC_SDCC1_BCR
] = { 0x75000 },
3403 [GCC_SDCC2_BCR
] = { 0x14000 },
3404 [GCC_SDCC4_BCR
] = { 0x16000 },
3405 [GCC_UFS_PHY_BCR
] = { 0x77000 },
3406 [GCC_USB30_PRIM_BCR
] = { 0xf000 },
3407 [GCC_USB30_SEC_BCR
] = { 0x9e000 },
3408 [GCC_USB3_DP_PHY_PRIM_BCR
] = { 0x50008 },
3409 [GCC_USB3_PHY_PRIM_BCR
] = { 0x50000 },
3410 [GCC_USB3PHY_PHY_PRIM_BCR
] = { 0x50004 },
3411 [GCC_USB_PHY_CFG_AHB2PHY_BCR
] = { 0x6a000 },
3414 static const struct clk_rcg_dfs_data gcc_dfs_clocks
[] = {
3415 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src
),
3416 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src
),
3417 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src
),
3418 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src
),
3419 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src
),
3420 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src
),
3421 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src
),
3422 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src
),
3423 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src
),
3424 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src
),
3425 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src
),
3426 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src
),
3427 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src
),
3428 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src
),
3429 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src
),
3430 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src
),
3433 static const struct regmap_config gcc_sc7280_regmap_config
= {
3437 .max_register
= 0x9f128,
3441 static const struct qcom_cc_desc gcc_sc7280_desc
= {
3442 .config
= &gcc_sc7280_regmap_config
,
3443 .clks
= gcc_sc7280_clocks
,
3444 .num_clks
= ARRAY_SIZE(gcc_sc7280_clocks
),
3445 .resets
= gcc_sc7280_resets
,
3446 .num_resets
= ARRAY_SIZE(gcc_sc7280_resets
),
3447 .gdscs
= gcc_sc7280_gdscs
,
3448 .num_gdscs
= ARRAY_SIZE(gcc_sc7280_gdscs
),
3451 static const struct of_device_id gcc_sc7280_match_table
[] = {
3452 { .compatible
= "qcom,gcc-sc7280" },
3455 MODULE_DEVICE_TABLE(of
, gcc_sc7280_match_table
);
3457 static int gcc_sc7280_probe(struct platform_device
*pdev
)
3459 struct regmap
*regmap
;
3462 regmap
= qcom_cc_map(pdev
, &gcc_sc7280_desc
);
3464 return PTR_ERR(regmap
);
3466 /* Keep some clocks always-on */
3467 qcom_branch_set_clk_en(regmap
, 0x26004);/* GCC_CAMERA_AHB_CLK */
3468 qcom_branch_set_clk_en(regmap
, 0x26028);/* GCC_CAMERA_XO_CLK */
3469 qcom_branch_set_clk_en(regmap
, 0x27004);/* GCC_DISP_AHB_CLK */
3470 qcom_branch_set_clk_en(regmap
, 0x2701c);/* GCC_DISP_XO_CLK */
3471 qcom_branch_set_clk_en(regmap
, 0x28004);/* GCC_VIDEO_AHB_CLK */
3472 qcom_branch_set_clk_en(regmap
, 0x28014);/* GCC_VIDEO_XO_CLK */
3473 qcom_branch_set_clk_en(regmap
, 0x71004);/* GCC_GPU_CFG_AHB_CLK */
3474 regmap_update_bits(regmap
, 0x7100C, BIT(13), BIT(13));
3476 /* FORCE_MEM_CORE_ON for ufs phy ice core clocks */
3477 qcom_branch_set_force_mem_core(regmap
, gcc_ufs_phy_ice_core_clk
, true);
3479 ret
= qcom_cc_register_rcg_dfs(regmap
, gcc_dfs_clocks
,
3480 ARRAY_SIZE(gcc_dfs_clocks
));
3484 return qcom_cc_really_probe(&pdev
->dev
, &gcc_sc7280_desc
, regmap
);
3487 static struct platform_driver gcc_sc7280_driver
= {
3488 .probe
= gcc_sc7280_probe
,
3490 .name
= "gcc-sc7280",
3491 .of_match_table
= gcc_sc7280_match_table
,
3495 static int __init
gcc_sc7280_init(void)
3497 return platform_driver_register(&gcc_sc7280_driver
);
3499 subsys_initcall(gcc_sc7280_init
);
3501 static void __exit
gcc_sc7280_exit(void)
3503 platform_driver_unregister(&gcc_sc7280_driver
);
3505 module_exit(gcc_sc7280_exit
);
3507 MODULE_DESCRIPTION("QTI GCC SC7280 Driver");
3508 MODULE_LICENSE("GPL v2");