1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2021, The Linux Foundation. All rights reserved.
4 * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
5 * Copyright (c) 2022, Linaro Limited
8 #include <linux/clk-provider.h>
9 #include <linux/module.h>
11 #include <linux/platform_device.h>
12 #include <linux/regmap.h>
14 #include <dt-bindings/clock/qcom,sm8550-gcc.h>
16 #include "clk-alpha-pll.h"
17 #include "clk-branch.h"
19 #include "clk-regmap.h"
20 #include "clk-regmap-divider.h"
21 #include "clk-regmap-mux.h"
22 #include "clk-regmap-phy-mux.h"
32 DT_UFS_PHY_RX_SYMBOL_0
,
33 DT_UFS_PHY_RX_SYMBOL_1
,
34 DT_UFS_PHY_TX_SYMBOL_0
,
35 DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE
,
49 P_UFS_PHY_RX_SYMBOL_0_CLK
,
50 P_UFS_PHY_RX_SYMBOL_1_CLK
,
51 P_UFS_PHY_TX_SYMBOL_0_CLK
,
52 P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK
,
55 static struct clk_alpha_pll gcc_gpll0
= {
57 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
59 .enable_reg
= 0x52018,
60 .enable_mask
= BIT(0),
61 .hw
.init
= &(struct clk_init_data
){
63 .parent_data
= &(const struct clk_parent_data
){
67 .ops
= &clk_alpha_pll_fixed_lucid_ole_ops
,
72 static const struct clk_div_table post_div_table_gcc_gpll0_out_even
[] = {
77 static struct clk_alpha_pll_postdiv gcc_gpll0_out_even
= {
80 .post_div_table
= post_div_table_gcc_gpll0_out_even
,
81 .num_post_div
= ARRAY_SIZE(post_div_table_gcc_gpll0_out_even
),
83 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
84 .clkr
.hw
.init
= &(struct clk_init_data
){
85 .name
= "gcc_gpll0_out_even",
86 .parent_hws
= (const struct clk_hw
*[]) {
90 .ops
= &clk_alpha_pll_postdiv_lucid_ole_ops
,
94 static struct clk_alpha_pll gcc_gpll4
= {
96 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
98 .enable_reg
= 0x52018,
99 .enable_mask
= BIT(4),
100 .hw
.init
= &(struct clk_init_data
){
102 .parent_data
= &(const struct clk_parent_data
){
106 .ops
= &clk_alpha_pll_fixed_lucid_ole_ops
,
111 static struct clk_alpha_pll gcc_gpll7
= {
113 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
115 .enable_reg
= 0x52018,
116 .enable_mask
= BIT(7),
117 .hw
.init
= &(struct clk_init_data
){
119 .parent_data
= &(const struct clk_parent_data
){
123 .ops
= &clk_alpha_pll_fixed_lucid_ole_ops
,
128 static struct clk_alpha_pll gcc_gpll9
= {
130 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
132 .enable_reg
= 0x52018,
133 .enable_mask
= BIT(9),
134 .hw
.init
= &(struct clk_init_data
){
136 .parent_data
= &(const struct clk_parent_data
){
140 .ops
= &clk_alpha_pll_fixed_lucid_ole_ops
,
145 static const struct parent_map gcc_parent_map_0
[] = {
147 { P_GCC_GPLL0_OUT_MAIN
, 1 },
148 { P_GCC_GPLL0_OUT_EVEN
, 6 },
151 static const struct clk_parent_data gcc_parent_data_0
[] = {
152 { .index
= DT_BI_TCXO
},
153 { .hw
= &gcc_gpll0
.clkr
.hw
},
154 { .hw
= &gcc_gpll0_out_even
.clkr
.hw
},
157 static const struct parent_map gcc_parent_map_1
[] = {
159 { P_GCC_GPLL0_OUT_MAIN
, 1 },
161 { P_GCC_GPLL0_OUT_EVEN
, 6 },
164 static const struct clk_parent_data gcc_parent_data_1
[] = {
165 { .index
= DT_BI_TCXO
},
166 { .hw
= &gcc_gpll0
.clkr
.hw
},
167 { .index
= DT_SLEEP_CLK
},
168 { .hw
= &gcc_gpll0_out_even
.clkr
.hw
},
171 static const struct parent_map gcc_parent_map_2
[] = {
176 static const struct clk_parent_data gcc_parent_data_2
[] = {
177 { .index
= DT_BI_TCXO
},
178 { .index
= DT_SLEEP_CLK
},
181 static const struct parent_map gcc_parent_map_3
[] = {
183 { P_GCC_GPLL0_OUT_MAIN
, 1 },
184 { P_GCC_GPLL4_OUT_MAIN
, 5 },
185 { P_GCC_GPLL0_OUT_EVEN
, 6 },
188 static const struct clk_parent_data gcc_parent_data_3
[] = {
189 { .index
= DT_BI_TCXO
},
190 { .hw
= &gcc_gpll0
.clkr
.hw
},
191 { .hw
= &gcc_gpll4
.clkr
.hw
},
192 { .hw
= &gcc_gpll0_out_even
.clkr
.hw
},
195 static const struct parent_map gcc_parent_map_4
[] = {
199 static const struct clk_parent_data gcc_parent_data_4
[] = {
200 { .index
= DT_BI_TCXO
},
203 static const struct parent_map gcc_parent_map_6
[] = {
204 { P_PCIE_1_PHY_AUX_CLK
, 0 },
208 static const struct clk_parent_data gcc_parent_data_6
[] = {
209 { .index
= DT_PCIE_1_PHY_AUX
},
210 { .index
= DT_BI_TCXO
},
213 static const struct parent_map gcc_parent_map_8
[] = {
215 { P_GCC_GPLL0_OUT_MAIN
, 1 },
216 { P_GCC_GPLL7_OUT_MAIN
, 2 },
217 { P_GCC_GPLL0_OUT_EVEN
, 6 },
220 static const struct clk_parent_data gcc_parent_data_8
[] = {
221 { .index
= DT_BI_TCXO
},
222 { .hw
= &gcc_gpll0
.clkr
.hw
},
223 { .hw
= &gcc_gpll7
.clkr
.hw
},
224 { .hw
= &gcc_gpll0_out_even
.clkr
.hw
},
227 static const struct parent_map gcc_parent_map_9
[] = {
229 { P_GCC_GPLL0_OUT_MAIN
, 1 },
230 { P_GCC_GPLL9_OUT_MAIN
, 2 },
231 { P_GCC_GPLL4_OUT_MAIN
, 5 },
232 { P_GCC_GPLL0_OUT_EVEN
, 6 },
235 static const struct clk_parent_data gcc_parent_data_9
[] = {
236 { .index
= DT_BI_TCXO
},
237 { .hw
= &gcc_gpll0
.clkr
.hw
},
238 { .hw
= &gcc_gpll9
.clkr
.hw
},
239 { .hw
= &gcc_gpll4
.clkr
.hw
},
240 { .hw
= &gcc_gpll0_out_even
.clkr
.hw
},
243 static const struct parent_map gcc_parent_map_10
[] = {
244 { P_UFS_PHY_RX_SYMBOL_0_CLK
, 0 },
248 static const struct clk_parent_data gcc_parent_data_10
[] = {
249 { .index
= DT_UFS_PHY_RX_SYMBOL_0
},
250 { .index
= DT_BI_TCXO
},
253 static const struct parent_map gcc_parent_map_11
[] = {
254 { P_UFS_PHY_RX_SYMBOL_1_CLK
, 0 },
258 static const struct clk_parent_data gcc_parent_data_11
[] = {
259 { .index
= DT_UFS_PHY_RX_SYMBOL_1
},
260 { .index
= DT_BI_TCXO
},
263 static const struct parent_map gcc_parent_map_12
[] = {
264 { P_UFS_PHY_TX_SYMBOL_0_CLK
, 0 },
268 static const struct clk_parent_data gcc_parent_data_12
[] = {
269 { .index
= DT_UFS_PHY_TX_SYMBOL_0
},
270 { .index
= DT_BI_TCXO
},
273 static const struct parent_map gcc_parent_map_13
[] = {
274 { P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK
, 0 },
278 static const struct clk_parent_data gcc_parent_data_13
[] = {
279 { .index
= DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE
},
280 { .index
= DT_BI_TCXO
},
283 static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src
= {
286 .hw
.init
= &(struct clk_init_data
){
287 .name
= "gcc_pcie_0_pipe_clk_src",
288 .parent_data
= &(const struct clk_parent_data
){
289 .index
= DT_PCIE_0_PIPE
,
292 .ops
= &clk_regmap_phy_mux_ops
,
297 static struct clk_regmap_mux gcc_pcie_1_phy_aux_clk_src
= {
301 .parent_map
= gcc_parent_map_6
,
303 .hw
.init
= &(struct clk_init_data
){
304 .name
= "gcc_pcie_1_phy_aux_clk_src",
305 .parent_data
= gcc_parent_data_6
,
306 .num_parents
= ARRAY_SIZE(gcc_parent_data_6
),
307 .ops
= &clk_regmap_mux_closest_ops
,
312 static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src
= {
315 .hw
.init
= &(struct clk_init_data
){
316 .name
= "gcc_pcie_1_pipe_clk_src",
317 .parent_data
= &(const struct clk_parent_data
){
318 .index
= DT_PCIE_1_PIPE
,
321 .ops
= &clk_regmap_phy_mux_ops
,
326 static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src
= {
330 .parent_map
= gcc_parent_map_10
,
332 .hw
.init
= &(struct clk_init_data
){
333 .name
= "gcc_ufs_phy_rx_symbol_0_clk_src",
334 .parent_data
= gcc_parent_data_10
,
335 .num_parents
= ARRAY_SIZE(gcc_parent_data_10
),
336 .ops
= &clk_regmap_mux_closest_ops
,
341 static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src
= {
345 .parent_map
= gcc_parent_map_11
,
347 .hw
.init
= &(struct clk_init_data
){
348 .name
= "gcc_ufs_phy_rx_symbol_1_clk_src",
349 .parent_data
= gcc_parent_data_11
,
350 .num_parents
= ARRAY_SIZE(gcc_parent_data_11
),
351 .ops
= &clk_regmap_mux_closest_ops
,
356 static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src
= {
360 .parent_map
= gcc_parent_map_12
,
362 .hw
.init
= &(struct clk_init_data
){
363 .name
= "gcc_ufs_phy_tx_symbol_0_clk_src",
364 .parent_data
= gcc_parent_data_12
,
365 .num_parents
= ARRAY_SIZE(gcc_parent_data_12
),
366 .ops
= &clk_regmap_mux_closest_ops
,
371 static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src
= {
375 .parent_map
= gcc_parent_map_13
,
377 .hw
.init
= &(struct clk_init_data
){
378 .name
= "gcc_usb3_prim_phy_pipe_clk_src",
379 .parent_data
= gcc_parent_data_13
,
380 .num_parents
= ARRAY_SIZE(gcc_parent_data_13
),
381 .ops
= &clk_regmap_mux_closest_ops
,
386 static const struct freq_tbl ftbl_gcc_gp1_clk_src
[] = {
387 F(50000000, P_GCC_GPLL0_OUT_EVEN
, 6, 0, 0),
388 F(100000000, P_GCC_GPLL0_OUT_MAIN
, 6, 0, 0),
389 F(200000000, P_GCC_GPLL0_OUT_MAIN
, 3, 0, 0),
393 static struct clk_rcg2 gcc_gp1_clk_src
= {
397 .parent_map
= gcc_parent_map_1
,
398 .freq_tbl
= ftbl_gcc_gp1_clk_src
,
399 .clkr
.hw
.init
= &(struct clk_init_data
){
400 .name
= "gcc_gp1_clk_src",
401 .parent_data
= gcc_parent_data_1
,
402 .num_parents
= ARRAY_SIZE(gcc_parent_data_1
),
403 .flags
= CLK_SET_RATE_PARENT
,
404 .ops
= &clk_rcg2_shared_ops
,
408 static struct clk_rcg2 gcc_gp2_clk_src
= {
412 .parent_map
= gcc_parent_map_1
,
413 .freq_tbl
= ftbl_gcc_gp1_clk_src
,
414 .clkr
.hw
.init
= &(struct clk_init_data
){
415 .name
= "gcc_gp2_clk_src",
416 .parent_data
= gcc_parent_data_1
,
417 .num_parents
= ARRAY_SIZE(gcc_parent_data_1
),
418 .flags
= CLK_SET_RATE_PARENT
,
419 .ops
= &clk_rcg2_shared_ops
,
423 static struct clk_rcg2 gcc_gp3_clk_src
= {
427 .parent_map
= gcc_parent_map_1
,
428 .freq_tbl
= ftbl_gcc_gp1_clk_src
,
429 .clkr
.hw
.init
= &(struct clk_init_data
){
430 .name
= "gcc_gp3_clk_src",
431 .parent_data
= gcc_parent_data_1
,
432 .num_parents
= ARRAY_SIZE(gcc_parent_data_1
),
433 .flags
= CLK_SET_RATE_PARENT
,
434 .ops
= &clk_rcg2_shared_ops
,
438 static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src
[] = {
439 F(19200000, P_BI_TCXO
, 1, 0, 0),
443 static struct clk_rcg2 gcc_pcie_0_aux_clk_src
= {
447 .parent_map
= gcc_parent_map_2
,
448 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
449 .clkr
.hw
.init
= &(struct clk_init_data
){
450 .name
= "gcc_pcie_0_aux_clk_src",
451 .parent_data
= gcc_parent_data_2
,
452 .num_parents
= ARRAY_SIZE(gcc_parent_data_2
),
453 .flags
= CLK_SET_RATE_PARENT
,
454 .ops
= &clk_rcg2_shared_ops
,
458 static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src
[] = {
459 F(100000000, P_GCC_GPLL0_OUT_EVEN
, 3, 0, 0),
463 static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src
= {
467 .parent_map
= gcc_parent_map_0
,
468 .freq_tbl
= ftbl_gcc_pcie_0_phy_rchng_clk_src
,
469 .clkr
.hw
.init
= &(struct clk_init_data
){
470 .name
= "gcc_pcie_0_phy_rchng_clk_src",
471 .parent_data
= gcc_parent_data_0
,
472 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
473 .flags
= CLK_SET_RATE_PARENT
,
474 .ops
= &clk_rcg2_shared_ops
,
478 static struct clk_rcg2 gcc_pcie_1_aux_clk_src
= {
482 .parent_map
= gcc_parent_map_2
,
483 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
484 .clkr
.hw
.init
= &(struct clk_init_data
){
485 .name
= "gcc_pcie_1_aux_clk_src",
486 .parent_data
= gcc_parent_data_2
,
487 .num_parents
= ARRAY_SIZE(gcc_parent_data_2
),
488 .flags
= CLK_SET_RATE_PARENT
,
489 .ops
= &clk_rcg2_shared_ops
,
493 static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src
= {
497 .parent_map
= gcc_parent_map_0
,
498 .freq_tbl
= ftbl_gcc_pcie_0_phy_rchng_clk_src
,
499 .clkr
.hw
.init
= &(struct clk_init_data
){
500 .name
= "gcc_pcie_1_phy_rchng_clk_src",
501 .parent_data
= gcc_parent_data_0
,
502 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
503 .flags
= CLK_SET_RATE_PARENT
,
504 .ops
= &clk_rcg2_shared_ops
,
508 static const struct freq_tbl ftbl_gcc_pdm2_clk_src
[] = {
509 F(60000000, P_GCC_GPLL0_OUT_MAIN
, 10, 0, 0),
513 static struct clk_rcg2 gcc_pdm2_clk_src
= {
517 .parent_map
= gcc_parent_map_0
,
518 .freq_tbl
= ftbl_gcc_pdm2_clk_src
,
519 .clkr
.hw
.init
= &(struct clk_init_data
){
520 .name
= "gcc_pdm2_clk_src",
521 .parent_data
= gcc_parent_data_0
,
522 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
523 .flags
= CLK_SET_RATE_PARENT
,
524 .ops
= &clk_rcg2_shared_ops
,
528 static struct clk_rcg2 gcc_qupv3_i2c_s0_clk_src
= {
532 .parent_map
= gcc_parent_map_0
,
533 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
534 .clkr
.hw
.init
= &(struct clk_init_data
){
535 .name
= "gcc_qupv3_i2c_s0_clk_src",
536 .parent_data
= gcc_parent_data_0
,
537 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
538 .flags
= CLK_SET_RATE_PARENT
,
539 .ops
= &clk_rcg2_ops
,
543 static struct clk_rcg2 gcc_qupv3_i2c_s1_clk_src
= {
547 .parent_map
= gcc_parent_map_0
,
548 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
549 .clkr
.hw
.init
= &(struct clk_init_data
){
550 .name
= "gcc_qupv3_i2c_s1_clk_src",
551 .parent_data
= gcc_parent_data_0
,
552 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
553 .flags
= CLK_SET_RATE_PARENT
,
554 .ops
= &clk_rcg2_ops
,
558 static struct clk_rcg2 gcc_qupv3_i2c_s2_clk_src
= {
562 .parent_map
= gcc_parent_map_0
,
563 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
564 .clkr
.hw
.init
= &(struct clk_init_data
){
565 .name
= "gcc_qupv3_i2c_s2_clk_src",
566 .parent_data
= gcc_parent_data_0
,
567 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
568 .flags
= CLK_SET_RATE_PARENT
,
569 .ops
= &clk_rcg2_ops
,
573 static struct clk_rcg2 gcc_qupv3_i2c_s3_clk_src
= {
577 .parent_map
= gcc_parent_map_0
,
578 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
579 .clkr
.hw
.init
= &(struct clk_init_data
){
580 .name
= "gcc_qupv3_i2c_s3_clk_src",
581 .parent_data
= gcc_parent_data_0
,
582 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
583 .flags
= CLK_SET_RATE_PARENT
,
584 .ops
= &clk_rcg2_ops
,
588 static struct clk_rcg2 gcc_qupv3_i2c_s4_clk_src
= {
592 .parent_map
= gcc_parent_map_0
,
593 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
594 .clkr
.hw
.init
= &(struct clk_init_data
){
595 .name
= "gcc_qupv3_i2c_s4_clk_src",
596 .parent_data
= gcc_parent_data_0
,
597 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
598 .flags
= CLK_SET_RATE_PARENT
,
599 .ops
= &clk_rcg2_ops
,
603 static struct clk_rcg2 gcc_qupv3_i2c_s5_clk_src
= {
607 .parent_map
= gcc_parent_map_0
,
608 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
609 .clkr
.hw
.init
= &(struct clk_init_data
){
610 .name
= "gcc_qupv3_i2c_s5_clk_src",
611 .parent_data
= gcc_parent_data_0
,
612 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
613 .flags
= CLK_SET_RATE_PARENT
,
614 .ops
= &clk_rcg2_ops
,
618 static struct clk_rcg2 gcc_qupv3_i2c_s6_clk_src
= {
622 .parent_map
= gcc_parent_map_0
,
623 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
624 .clkr
.hw
.init
= &(struct clk_init_data
){
625 .name
= "gcc_qupv3_i2c_s6_clk_src",
626 .parent_data
= gcc_parent_data_0
,
627 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
628 .flags
= CLK_SET_RATE_PARENT
,
629 .ops
= &clk_rcg2_ops
,
633 static struct clk_rcg2 gcc_qupv3_i2c_s7_clk_src
= {
637 .parent_map
= gcc_parent_map_0
,
638 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
639 .clkr
.hw
.init
= &(struct clk_init_data
){
640 .name
= "gcc_qupv3_i2c_s7_clk_src",
641 .parent_data
= gcc_parent_data_0
,
642 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
643 .flags
= CLK_SET_RATE_PARENT
,
644 .ops
= &clk_rcg2_ops
,
648 static struct clk_rcg2 gcc_qupv3_i2c_s8_clk_src
= {
652 .parent_map
= gcc_parent_map_0
,
653 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
654 .clkr
.hw
.init
= &(struct clk_init_data
){
655 .name
= "gcc_qupv3_i2c_s8_clk_src",
656 .parent_data
= gcc_parent_data_0
,
657 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
658 .flags
= CLK_SET_RATE_PARENT
,
659 .ops
= &clk_rcg2_ops
,
663 static struct clk_rcg2 gcc_qupv3_i2c_s9_clk_src
= {
667 .parent_map
= gcc_parent_map_0
,
668 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
669 .clkr
.hw
.init
= &(struct clk_init_data
){
670 .name
= "gcc_qupv3_i2c_s9_clk_src",
671 .parent_data
= gcc_parent_data_0
,
672 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
673 .flags
= CLK_SET_RATE_PARENT
,
674 .ops
= &clk_rcg2_ops
,
678 static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s0_clk_src
[] = {
679 F(7372800, P_GCC_GPLL0_OUT_EVEN
, 1, 384, 15625),
680 F(14745600, P_GCC_GPLL0_OUT_EVEN
, 1, 768, 15625),
681 F(19200000, P_BI_TCXO
, 1, 0, 0),
682 F(29491200, P_GCC_GPLL0_OUT_EVEN
, 1, 1536, 15625),
683 F(32000000, P_GCC_GPLL0_OUT_EVEN
, 1, 8, 75),
684 F(48000000, P_GCC_GPLL0_OUT_EVEN
, 1, 4, 25),
685 F(51200000, P_GCC_GPLL0_OUT_EVEN
, 1, 64, 375),
686 F(64000000, P_GCC_GPLL0_OUT_EVEN
, 1, 16, 75),
687 F(75000000, P_GCC_GPLL0_OUT_EVEN
, 4, 0, 0),
688 F(80000000, P_GCC_GPLL0_OUT_EVEN
, 1, 4, 15),
689 F(96000000, P_GCC_GPLL0_OUT_EVEN
, 1, 8, 25),
690 F(100000000, P_GCC_GPLL0_OUT_MAIN
, 6, 0, 0),
691 F(102400000, P_GCC_GPLL0_OUT_EVEN
, 1, 128, 375),
692 F(112000000, P_GCC_GPLL0_OUT_EVEN
, 1, 28, 75),
693 F(117964800, P_GCC_GPLL0_OUT_EVEN
, 1, 6144, 15625),
694 F(120000000, P_GCC_GPLL0_OUT_MAIN
, 5, 0, 0),
698 static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init
= {
699 .name
= "gcc_qupv3_wrap1_s0_clk_src",
700 .parent_data
= gcc_parent_data_0
,
701 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
702 .flags
= CLK_SET_RATE_PARENT
,
703 .ops
= &clk_rcg2_ops
,
706 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src
= {
710 .parent_map
= gcc_parent_map_0
,
711 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s0_clk_src
,
712 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s0_clk_src_init
,
715 static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init
= {
716 .name
= "gcc_qupv3_wrap1_s1_clk_src",
717 .parent_data
= gcc_parent_data_0
,
718 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
719 .flags
= CLK_SET_RATE_PARENT
,
720 .ops
= &clk_rcg2_ops
,
723 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src
= {
727 .parent_map
= gcc_parent_map_0
,
728 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s0_clk_src
,
729 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s1_clk_src_init
,
732 static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s2_clk_src
[] = {
733 F(7372800, P_GCC_GPLL0_OUT_EVEN
, 1, 384, 15625),
734 F(14745600, P_GCC_GPLL0_OUT_EVEN
, 1, 768, 15625),
735 F(19200000, P_BI_TCXO
, 1, 0, 0),
736 F(29491200, P_GCC_GPLL0_OUT_EVEN
, 1, 1536, 15625),
737 F(32000000, P_GCC_GPLL0_OUT_EVEN
, 1, 8, 75),
738 F(48000000, P_GCC_GPLL0_OUT_EVEN
, 1, 4, 25),
739 F(51200000, P_GCC_GPLL0_OUT_EVEN
, 1, 64, 375),
740 F(64000000, P_GCC_GPLL0_OUT_EVEN
, 1, 16, 75),
741 F(75000000, P_GCC_GPLL0_OUT_EVEN
, 4, 0, 0),
742 F(80000000, P_GCC_GPLL0_OUT_EVEN
, 1, 4, 15),
743 F(96000000, P_GCC_GPLL0_OUT_EVEN
, 1, 8, 25),
744 F(100000000, P_GCC_GPLL0_OUT_MAIN
, 6, 0, 0),
748 static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init
= {
749 .name
= "gcc_qupv3_wrap1_s2_clk_src",
750 .parent_data
= gcc_parent_data_0
,
751 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
752 .flags
= CLK_SET_RATE_PARENT
,
753 .ops
= &clk_rcg2_ops
,
756 static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src
= {
760 .parent_map
= gcc_parent_map_0
,
761 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s2_clk_src
,
762 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s2_clk_src_init
,
765 static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init
= {
766 .name
= "gcc_qupv3_wrap1_s3_clk_src",
767 .parent_data
= gcc_parent_data_0
,
768 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
769 .flags
= CLK_SET_RATE_PARENT
,
770 .ops
= &clk_rcg2_ops
,
773 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src
= {
777 .parent_map
= gcc_parent_map_0
,
778 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s2_clk_src
,
779 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s3_clk_src_init
,
782 static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init
= {
783 .name
= "gcc_qupv3_wrap1_s4_clk_src",
784 .parent_data
= gcc_parent_data_0
,
785 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
786 .flags
= CLK_SET_RATE_PARENT
,
787 .ops
= &clk_rcg2_ops
,
790 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src
= {
794 .parent_map
= gcc_parent_map_0
,
795 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s2_clk_src
,
796 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s4_clk_src_init
,
799 static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init
= {
800 .name
= "gcc_qupv3_wrap1_s5_clk_src",
801 .parent_data
= gcc_parent_data_0
,
802 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
803 .flags
= CLK_SET_RATE_PARENT
,
804 .ops
= &clk_rcg2_ops
,
807 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src
= {
811 .parent_map
= gcc_parent_map_0
,
812 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s2_clk_src
,
813 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s5_clk_src_init
,
816 static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init
= {
817 .name
= "gcc_qupv3_wrap1_s6_clk_src",
818 .parent_data
= gcc_parent_data_0
,
819 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
820 .flags
= CLK_SET_RATE_PARENT
,
821 .ops
= &clk_rcg2_ops
,
824 static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src
= {
828 .parent_map
= gcc_parent_map_0
,
829 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s2_clk_src
,
830 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s6_clk_src_init
,
833 static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init
= {
834 .name
= "gcc_qupv3_wrap1_s7_clk_src",
835 .parent_data
= gcc_parent_data_0
,
836 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
837 .flags
= CLK_SET_RATE_PARENT
,
838 .ops
= &clk_rcg2_ops
,
841 static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src
= {
845 .parent_map
= gcc_parent_map_0
,
846 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s2_clk_src
,
847 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s7_clk_src_init
,
850 static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init
= {
851 .name
= "gcc_qupv3_wrap2_s0_clk_src",
852 .parent_data
= gcc_parent_data_0
,
853 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
854 .flags
= CLK_SET_RATE_PARENT
,
855 .ops
= &clk_rcg2_ops
,
858 static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src
= {
862 .parent_map
= gcc_parent_map_0
,
863 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s0_clk_src
,
864 .clkr
.hw
.init
= &gcc_qupv3_wrap2_s0_clk_src_init
,
867 static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init
= {
868 .name
= "gcc_qupv3_wrap2_s1_clk_src",
869 .parent_data
= gcc_parent_data_0
,
870 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
871 .flags
= CLK_SET_RATE_PARENT
,
872 .ops
= &clk_rcg2_ops
,
875 static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src
= {
879 .parent_map
= gcc_parent_map_0
,
880 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s0_clk_src
,
881 .clkr
.hw
.init
= &gcc_qupv3_wrap2_s1_clk_src_init
,
884 static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init
= {
885 .name
= "gcc_qupv3_wrap2_s2_clk_src",
886 .parent_data
= gcc_parent_data_0
,
887 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
888 .flags
= CLK_SET_RATE_PARENT
,
889 .ops
= &clk_rcg2_ops
,
892 static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src
= {
896 .parent_map
= gcc_parent_map_0
,
897 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s2_clk_src
,
898 .clkr
.hw
.init
= &gcc_qupv3_wrap2_s2_clk_src_init
,
901 static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init
= {
902 .name
= "gcc_qupv3_wrap2_s3_clk_src",
903 .parent_data
= gcc_parent_data_0
,
904 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
905 .flags
= CLK_SET_RATE_PARENT
,
906 .ops
= &clk_rcg2_ops
,
909 static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src
= {
913 .parent_map
= gcc_parent_map_0
,
914 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s2_clk_src
,
915 .clkr
.hw
.init
= &gcc_qupv3_wrap2_s3_clk_src_init
,
918 static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init
= {
919 .name
= "gcc_qupv3_wrap2_s4_clk_src",
920 .parent_data
= gcc_parent_data_0
,
921 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
922 .flags
= CLK_SET_RATE_PARENT
,
923 .ops
= &clk_rcg2_ops
,
926 static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src
= {
930 .parent_map
= gcc_parent_map_0
,
931 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s2_clk_src
,
932 .clkr
.hw
.init
= &gcc_qupv3_wrap2_s4_clk_src_init
,
935 static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init
= {
936 .name
= "gcc_qupv3_wrap2_s5_clk_src",
937 .parent_data
= gcc_parent_data_0
,
938 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
939 .flags
= CLK_SET_RATE_PARENT
,
940 .ops
= &clk_rcg2_ops
,
943 static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src
= {
947 .parent_map
= gcc_parent_map_0
,
948 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s2_clk_src
,
949 .clkr
.hw
.init
= &gcc_qupv3_wrap2_s5_clk_src_init
,
952 static const struct freq_tbl ftbl_gcc_qupv3_wrap2_s6_clk_src
[] = {
953 F(7372800, P_GCC_GPLL0_OUT_EVEN
, 1, 384, 15625),
954 F(14745600, P_GCC_GPLL0_OUT_EVEN
, 1, 768, 15625),
955 F(19200000, P_BI_TCXO
, 1, 0, 0),
956 F(29491200, P_GCC_GPLL0_OUT_EVEN
, 1, 1536, 15625),
957 F(32000000, P_GCC_GPLL0_OUT_EVEN
, 1, 8, 75),
958 F(48000000, P_GCC_GPLL0_OUT_EVEN
, 1, 4, 25),
959 F(51200000, P_GCC_GPLL0_OUT_EVEN
, 1, 64, 375),
960 F(64000000, P_GCC_GPLL0_OUT_EVEN
, 1, 16, 75),
961 F(75000000, P_GCC_GPLL0_OUT_EVEN
, 4, 0, 0),
962 F(80000000, P_GCC_GPLL0_OUT_EVEN
, 1, 4, 15),
963 F(96000000, P_GCC_GPLL0_OUT_EVEN
, 1, 8, 25),
964 F(100000000, P_GCC_GPLL0_OUT_MAIN
, 6, 0, 0),
965 F(102400000, P_GCC_GPLL0_OUT_EVEN
, 1, 128, 375),
966 F(112000000, P_GCC_GPLL0_OUT_EVEN
, 1, 28, 75),
967 F(117964800, P_GCC_GPLL0_OUT_EVEN
, 1, 6144, 15625),
968 F(120000000, P_GCC_GPLL0_OUT_MAIN
, 5, 0, 0),
969 F(125000000, P_GCC_GPLL0_OUT_MAIN
, 1, 5, 24),
973 static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init
= {
974 .name
= "gcc_qupv3_wrap2_s6_clk_src",
975 .parent_data
= gcc_parent_data_8
,
976 .num_parents
= ARRAY_SIZE(gcc_parent_data_8
),
977 .flags
= CLK_SET_RATE_PARENT
,
978 .ops
= &clk_rcg2_ops
,
981 static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src
= {
985 .parent_map
= gcc_parent_map_8
,
986 .freq_tbl
= ftbl_gcc_qupv3_wrap2_s6_clk_src
,
987 .clkr
.hw
.init
= &gcc_qupv3_wrap2_s6_clk_src_init
,
990 static struct clk_init_data gcc_qupv3_wrap2_s7_clk_src_init
= {
991 .name
= "gcc_qupv3_wrap2_s7_clk_src",
992 .parent_data
= gcc_parent_data_0
,
993 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
994 .flags
= CLK_SET_RATE_PARENT
,
995 .ops
= &clk_rcg2_ops
,
998 static struct clk_rcg2 gcc_qupv3_wrap2_s7_clk_src
= {
1002 .parent_map
= gcc_parent_map_0
,
1003 .freq_tbl
= ftbl_gcc_qupv3_wrap1_s2_clk_src
,
1004 .clkr
.hw
.init
= &gcc_qupv3_wrap2_s7_clk_src_init
,
1007 static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src
[] = {
1008 F(400000, P_BI_TCXO
, 12, 1, 4),
1009 F(25000000, P_GCC_GPLL0_OUT_EVEN
, 12, 0, 0),
1010 F(37500000, P_GCC_GPLL0_OUT_EVEN
, 8, 0, 0),
1011 F(50000000, P_GCC_GPLL0_OUT_EVEN
, 6, 0, 0),
1012 F(100000000, P_GCC_GPLL0_OUT_EVEN
, 3, 0, 0),
1013 F(202000000, P_GCC_GPLL9_OUT_MAIN
, 4, 0, 0),
1017 static struct clk_rcg2 gcc_sdcc2_apps_clk_src
= {
1018 .cmd_rcgr
= 0x14018,
1021 .parent_map
= gcc_parent_map_9
,
1022 .freq_tbl
= ftbl_gcc_sdcc2_apps_clk_src
,
1023 .clkr
.hw
.init
= &(struct clk_init_data
){
1024 .name
= "gcc_sdcc2_apps_clk_src",
1025 .parent_data
= gcc_parent_data_9
,
1026 .num_parents
= ARRAY_SIZE(gcc_parent_data_9
),
1027 .flags
= CLK_SET_RATE_PARENT
,
1028 .ops
= &clk_rcg2_shared_ops
,
1032 static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src
[] = {
1033 F(400000, P_BI_TCXO
, 12, 1, 4),
1034 F(25000000, P_GCC_GPLL0_OUT_EVEN
, 12, 0, 0),
1035 F(37500000, P_GCC_GPLL0_OUT_EVEN
, 8, 0, 0),
1036 F(75000000, P_GCC_GPLL0_OUT_EVEN
, 4, 0, 0),
1040 static struct clk_rcg2 gcc_sdcc4_apps_clk_src
= {
1041 .cmd_rcgr
= 0x16018,
1044 .parent_map
= gcc_parent_map_0
,
1045 .freq_tbl
= ftbl_gcc_sdcc4_apps_clk_src
,
1046 .clkr
.hw
.init
= &(struct clk_init_data
){
1047 .name
= "gcc_sdcc4_apps_clk_src",
1048 .parent_data
= gcc_parent_data_0
,
1049 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
1050 .flags
= CLK_SET_RATE_PARENT
,
1051 .ops
= &clk_rcg2_shared_ops
,
1055 static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src
[] = {
1056 F(25000000, P_GCC_GPLL0_OUT_EVEN
, 12, 0, 0),
1057 F(75000000, P_GCC_GPLL0_OUT_EVEN
, 4, 0, 0),
1058 F(150000000, P_GCC_GPLL0_OUT_MAIN
, 4, 0, 0),
1059 F(300000000, P_GCC_GPLL0_OUT_MAIN
, 2, 0, 0),
1063 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src
= {
1064 .cmd_rcgr
= 0x77030,
1067 .parent_map
= gcc_parent_map_0
,
1068 .freq_tbl
= ftbl_gcc_ufs_phy_axi_clk_src
,
1069 .clkr
.hw
.init
= &(struct clk_init_data
){
1070 .name
= "gcc_ufs_phy_axi_clk_src",
1071 .parent_data
= gcc_parent_data_0
,
1072 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
1073 .flags
= CLK_SET_RATE_PARENT
,
1074 .ops
= &clk_rcg2_shared_ops
,
1078 static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src
[] = {
1079 F(100000000, P_GCC_GPLL0_OUT_EVEN
, 3, 0, 0),
1080 F(201500000, P_GCC_GPLL4_OUT_MAIN
, 4, 0, 0),
1081 F(403000000, P_GCC_GPLL4_OUT_MAIN
, 2, 0, 0),
1085 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src
= {
1086 .cmd_rcgr
= 0x77080,
1089 .parent_map
= gcc_parent_map_3
,
1090 .freq_tbl
= ftbl_gcc_ufs_phy_ice_core_clk_src
,
1091 .clkr
.hw
.init
= &(struct clk_init_data
){
1092 .name
= "gcc_ufs_phy_ice_core_clk_src",
1093 .parent_data
= gcc_parent_data_3
,
1094 .num_parents
= ARRAY_SIZE(gcc_parent_data_3
),
1095 .flags
= CLK_SET_RATE_PARENT
,
1096 .ops
= &clk_rcg2_shared_ops
,
1100 static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src
[] = {
1101 F(9600000, P_BI_TCXO
, 2, 0, 0),
1102 F(19200000, P_BI_TCXO
, 1, 0, 0),
1106 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src
= {
1107 .cmd_rcgr
= 0x770b4,
1110 .parent_map
= gcc_parent_map_4
,
1111 .freq_tbl
= ftbl_gcc_ufs_phy_phy_aux_clk_src
,
1112 .clkr
.hw
.init
= &(struct clk_init_data
){
1113 .name
= "gcc_ufs_phy_phy_aux_clk_src",
1114 .parent_data
= gcc_parent_data_4
,
1115 .num_parents
= ARRAY_SIZE(gcc_parent_data_4
),
1116 .flags
= CLK_SET_RATE_PARENT
,
1117 .ops
= &clk_rcg2_shared_ops
,
1121 static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src
[] = {
1122 F(75000000, P_GCC_GPLL0_OUT_EVEN
, 4, 0, 0),
1123 F(150000000, P_GCC_GPLL0_OUT_MAIN
, 4, 0, 0),
1124 F(300000000, P_GCC_GPLL0_OUT_MAIN
, 2, 0, 0),
1128 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src
= {
1129 .cmd_rcgr
= 0x77098,
1132 .parent_map
= gcc_parent_map_0
,
1133 .freq_tbl
= ftbl_gcc_ufs_phy_unipro_core_clk_src
,
1134 .clkr
.hw
.init
= &(struct clk_init_data
){
1135 .name
= "gcc_ufs_phy_unipro_core_clk_src",
1136 .parent_data
= gcc_parent_data_0
,
1137 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
1138 .flags
= CLK_SET_RATE_PARENT
,
1139 .ops
= &clk_rcg2_shared_ops
,
1143 static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src
[] = {
1144 F(66666667, P_GCC_GPLL0_OUT_EVEN
, 4.5, 0, 0),
1145 F(133333333, P_GCC_GPLL0_OUT_MAIN
, 4.5, 0, 0),
1146 F(200000000, P_GCC_GPLL0_OUT_MAIN
, 3, 0, 0),
1147 F(240000000, P_GCC_GPLL0_OUT_MAIN
, 2.5, 0, 0),
1151 static struct clk_rcg2 gcc_usb30_prim_master_clk_src
= {
1152 .cmd_rcgr
= 0x3902c,
1155 .parent_map
= gcc_parent_map_0
,
1156 .freq_tbl
= ftbl_gcc_usb30_prim_master_clk_src
,
1157 .clkr
.hw
.init
= &(struct clk_init_data
){
1158 .name
= "gcc_usb30_prim_master_clk_src",
1159 .parent_data
= gcc_parent_data_0
,
1160 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
1161 .flags
= CLK_SET_RATE_PARENT
,
1162 .ops
= &clk_rcg2_shared_no_init_park_ops
,
1166 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src
= {
1167 .cmd_rcgr
= 0x39044,
1170 .parent_map
= gcc_parent_map_0
,
1171 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
1172 .clkr
.hw
.init
= &(struct clk_init_data
){
1173 .name
= "gcc_usb30_prim_mock_utmi_clk_src",
1174 .parent_data
= gcc_parent_data_0
,
1175 .num_parents
= ARRAY_SIZE(gcc_parent_data_0
),
1176 .flags
= CLK_SET_RATE_PARENT
,
1177 .ops
= &clk_rcg2_shared_ops
,
1181 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src
= {
1182 .cmd_rcgr
= 0x39070,
1185 .parent_map
= gcc_parent_map_2
,
1186 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
1187 .clkr
.hw
.init
= &(struct clk_init_data
){
1188 .name
= "gcc_usb3_prim_phy_aux_clk_src",
1189 .parent_data
= gcc_parent_data_2
,
1190 .num_parents
= ARRAY_SIZE(gcc_parent_data_2
),
1191 .flags
= CLK_SET_RATE_PARENT
,
1192 .ops
= &clk_rcg2_shared_ops
,
1196 static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src
= {
1200 .clkr
.hw
.init
= &(struct clk_init_data
) {
1201 .name
= "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
1202 .parent_hws
= (const struct clk_hw
*[]) {
1203 &gcc_usb30_prim_mock_utmi_clk_src
.clkr
.hw
,
1206 .flags
= CLK_SET_RATE_PARENT
,
1207 .ops
= &clk_regmap_div_ro_ops
,
1211 static struct clk_branch gcc_aggre_noc_pcie_axi_clk
= {
1212 .halt_reg
= 0x1003c,
1213 .halt_check
= BRANCH_HALT_SKIP
,
1214 .hwcg_reg
= 0x1003c,
1217 .enable_reg
= 0x52000,
1218 .enable_mask
= BIT(12),
1219 .hw
.init
= &(struct clk_init_data
){
1220 .name
= "gcc_aggre_noc_pcie_axi_clk",
1221 .ops
= &clk_branch2_ops
,
1226 static struct clk_branch gcc_aggre_ufs_phy_axi_clk
= {
1227 .halt_reg
= 0x770e4,
1228 .halt_check
= BRANCH_HALT_VOTED
,
1229 .hwcg_reg
= 0x770e4,
1232 .enable_reg
= 0x770e4,
1233 .enable_mask
= BIT(0),
1234 .hw
.init
= &(struct clk_init_data
){
1235 .name
= "gcc_aggre_ufs_phy_axi_clk",
1236 .parent_hws
= (const struct clk_hw
*[]) {
1237 &gcc_ufs_phy_axi_clk_src
.clkr
.hw
,
1240 .flags
= CLK_SET_RATE_PARENT
,
1241 .ops
= &clk_branch2_ops
,
1246 static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk
= {
1247 .halt_reg
= 0x770e4,
1248 .halt_check
= BRANCH_HALT_VOTED
,
1249 .hwcg_reg
= 0x770e4,
1252 .enable_reg
= 0x770e4,
1253 .enable_mask
= BIT(1),
1254 .hw
.init
= &(struct clk_init_data
){
1255 .name
= "gcc_aggre_ufs_phy_axi_hw_ctl_clk",
1256 .parent_hws
= (const struct clk_hw
*[]) {
1257 &gcc_ufs_phy_axi_clk_src
.clkr
.hw
,
1260 .flags
= CLK_SET_RATE_PARENT
,
1261 .ops
= &clk_branch2_ops
,
1266 static struct clk_branch gcc_aggre_usb3_prim_axi_clk
= {
1267 .halt_reg
= 0x3908c,
1268 .halt_check
= BRANCH_HALT_VOTED
,
1269 .hwcg_reg
= 0x3908c,
1272 .enable_reg
= 0x3908c,
1273 .enable_mask
= BIT(0),
1274 .hw
.init
= &(struct clk_init_data
){
1275 .name
= "gcc_aggre_usb3_prim_axi_clk",
1276 .parent_hws
= (const struct clk_hw
*[]) {
1277 &gcc_usb30_prim_master_clk_src
.clkr
.hw
,
1280 .flags
= CLK_SET_RATE_PARENT
,
1281 .ops
= &clk_branch2_ops
,
1286 static struct clk_branch gcc_boot_rom_ahb_clk
= {
1287 .halt_reg
= 0x38004,
1288 .halt_check
= BRANCH_HALT_VOTED
,
1289 .hwcg_reg
= 0x38004,
1292 .enable_reg
= 0x52000,
1293 .enable_mask
= BIT(10),
1294 .hw
.init
= &(struct clk_init_data
){
1295 .name
= "gcc_boot_rom_ahb_clk",
1296 .ops
= &clk_branch2_ops
,
1301 static struct clk_branch gcc_camera_hf_axi_clk
= {
1302 .halt_reg
= 0x26010,
1303 .halt_check
= BRANCH_HALT_SKIP
,
1304 .hwcg_reg
= 0x26010,
1307 .enable_reg
= 0x26010,
1308 .enable_mask
= BIT(0),
1309 .hw
.init
= &(struct clk_init_data
){
1310 .name
= "gcc_camera_hf_axi_clk",
1311 .ops
= &clk_branch2_ops
,
1316 static struct clk_branch gcc_camera_sf_axi_clk
= {
1317 .halt_reg
= 0x2601c,
1318 .halt_check
= BRANCH_HALT_SKIP
,
1319 .hwcg_reg
= 0x2601c,
1322 .enable_reg
= 0x2601c,
1323 .enable_mask
= BIT(0),
1324 .hw
.init
= &(struct clk_init_data
){
1325 .name
= "gcc_camera_sf_axi_clk",
1326 .ops
= &clk_branch2_ops
,
1331 static struct clk_branch gcc_cfg_noc_pcie_anoc_ahb_clk
= {
1332 .halt_reg
= 0x10028,
1333 .halt_check
= BRANCH_HALT_SKIP
,
1334 .hwcg_reg
= 0x10028,
1337 .enable_reg
= 0x52000,
1338 .enable_mask
= BIT(20),
1339 .hw
.init
= &(struct clk_init_data
){
1340 .name
= "gcc_cfg_noc_pcie_anoc_ahb_clk",
1341 .ops
= &clk_branch2_ops
,
1346 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk
= {
1347 .halt_reg
= 0x39088,
1348 .halt_check
= BRANCH_HALT_VOTED
,
1349 .hwcg_reg
= 0x39088,
1352 .enable_reg
= 0x39088,
1353 .enable_mask
= BIT(0),
1354 .hw
.init
= &(struct clk_init_data
){
1355 .name
= "gcc_cfg_noc_usb3_prim_axi_clk",
1356 .parent_hws
= (const struct clk_hw
*[]) {
1357 &gcc_usb30_prim_master_clk_src
.clkr
.hw
,
1360 .flags
= CLK_SET_RATE_PARENT
,
1361 .ops
= &clk_branch2_ops
,
1366 static struct clk_branch gcc_cnoc_pcie_sf_axi_clk
= {
1367 .halt_reg
= 0x10030,
1368 .halt_check
= BRANCH_HALT_VOTED
,
1369 .hwcg_reg
= 0x10030,
1372 .enable_reg
= 0x52008,
1373 .enable_mask
= BIT(6),
1374 .hw
.init
= &(struct clk_init_data
){
1375 .name
= "gcc_cnoc_pcie_sf_axi_clk",
1376 .ops
= &clk_branch2_ops
,
1381 static struct clk_branch gcc_ddrss_gpu_axi_clk
= {
1382 .halt_reg
= 0x71154,
1383 .halt_check
= BRANCH_HALT_SKIP
,
1384 .hwcg_reg
= 0x71154,
1387 .enable_reg
= 0x71154,
1388 .enable_mask
= BIT(0),
1389 .hw
.init
= &(struct clk_init_data
){
1390 .name
= "gcc_ddrss_gpu_axi_clk",
1391 .ops
= &clk_branch2_aon_ops
,
1396 static struct clk_branch gcc_ddrss_pcie_sf_qtb_clk
= {
1397 .halt_reg
= 0x1004c,
1398 .halt_check
= BRANCH_HALT_SKIP
,
1399 .hwcg_reg
= 0x1004c,
1402 .enable_reg
= 0x52000,
1403 .enable_mask
= BIT(19),
1404 .hw
.init
= &(struct clk_init_data
){
1405 .name
= "gcc_ddrss_pcie_sf_qtb_clk",
1406 .ops
= &clk_branch2_ops
,
1411 static struct clk_branch gcc_disp_hf_axi_clk
= {
1412 .halt_reg
= 0x2700c,
1413 .halt_check
= BRANCH_HALT_SKIP
,
1414 .hwcg_reg
= 0x2700c,
1417 .enable_reg
= 0x2700c,
1418 .enable_mask
= BIT(0),
1419 .hw
.init
= &(struct clk_init_data
){
1420 .name
= "gcc_disp_hf_axi_clk",
1421 .ops
= &clk_branch2_ops
,
1426 static struct clk_branch gcc_gp1_clk
= {
1427 .halt_reg
= 0x64000,
1428 .halt_check
= BRANCH_HALT
,
1430 .enable_reg
= 0x64000,
1431 .enable_mask
= BIT(0),
1432 .hw
.init
= &(struct clk_init_data
){
1433 .name
= "gcc_gp1_clk",
1434 .parent_hws
= (const struct clk_hw
*[]) {
1435 &gcc_gp1_clk_src
.clkr
.hw
,
1438 .flags
= CLK_SET_RATE_PARENT
,
1439 .ops
= &clk_branch2_ops
,
1444 static struct clk_branch gcc_gp2_clk
= {
1445 .halt_reg
= 0x65000,
1446 .halt_check
= BRANCH_HALT
,
1448 .enable_reg
= 0x65000,
1449 .enable_mask
= BIT(0),
1450 .hw
.init
= &(struct clk_init_data
){
1451 .name
= "gcc_gp2_clk",
1452 .parent_hws
= (const struct clk_hw
*[]) {
1453 &gcc_gp2_clk_src
.clkr
.hw
,
1456 .flags
= CLK_SET_RATE_PARENT
,
1457 .ops
= &clk_branch2_ops
,
1462 static struct clk_branch gcc_gp3_clk
= {
1463 .halt_reg
= 0x66000,
1464 .halt_check
= BRANCH_HALT
,
1466 .enable_reg
= 0x66000,
1467 .enable_mask
= BIT(0),
1468 .hw
.init
= &(struct clk_init_data
){
1469 .name
= "gcc_gp3_clk",
1470 .parent_hws
= (const struct clk_hw
*[]) {
1471 &gcc_gp3_clk_src
.clkr
.hw
,
1474 .flags
= CLK_SET_RATE_PARENT
,
1475 .ops
= &clk_branch2_ops
,
1480 static struct clk_branch gcc_gpu_gpll0_clk_src
= {
1481 .halt_check
= BRANCH_HALT_DELAY
,
1483 .enable_reg
= 0x52000,
1484 .enable_mask
= BIT(15),
1485 .hw
.init
= &(struct clk_init_data
){
1486 .name
= "gcc_gpu_gpll0_clk_src",
1487 .parent_hws
= (const struct clk_hw
*[]) {
1491 .flags
= CLK_SET_RATE_PARENT
,
1492 .ops
= &clk_branch2_ops
,
1497 static struct clk_branch gcc_gpu_gpll0_div_clk_src
= {
1498 .halt_check
= BRANCH_HALT_DELAY
,
1500 .enable_reg
= 0x52000,
1501 .enable_mask
= BIT(16),
1502 .hw
.init
= &(struct clk_init_data
){
1503 .name
= "gcc_gpu_gpll0_div_clk_src",
1504 .parent_hws
= (const struct clk_hw
*[]) {
1505 &gcc_gpll0_out_even
.clkr
.hw
,
1508 .flags
= CLK_SET_RATE_PARENT
,
1509 .ops
= &clk_branch2_ops
,
1514 static struct clk_branch gcc_gpu_memnoc_gfx_clk
= {
1515 .halt_reg
= 0x71010,
1516 .halt_check
= BRANCH_HALT_VOTED
,
1517 .hwcg_reg
= 0x71010,
1520 .enable_reg
= 0x71010,
1521 .enable_mask
= BIT(0),
1522 .hw
.init
= &(struct clk_init_data
){
1523 .name
= "gcc_gpu_memnoc_gfx_clk",
1524 .ops
= &clk_branch2_ops
,
1529 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk
= {
1530 .halt_reg
= 0x71018,
1531 .halt_check
= BRANCH_HALT_DELAY
,
1533 .enable_reg
= 0x71018,
1534 .enable_mask
= BIT(0),
1535 .hw
.init
= &(struct clk_init_data
){
1536 .name
= "gcc_gpu_snoc_dvm_gfx_clk",
1537 .ops
= &clk_branch2_ops
,
1542 static struct clk_branch gcc_pcie_0_aux_clk
= {
1543 .halt_reg
= 0x6b03c,
1544 .halt_check
= BRANCH_HALT_VOTED
,
1546 .enable_reg
= 0x52008,
1547 .enable_mask
= BIT(3),
1548 .hw
.init
= &(struct clk_init_data
){
1549 .name
= "gcc_pcie_0_aux_clk",
1550 .parent_hws
= (const struct clk_hw
*[]) {
1551 &gcc_pcie_0_aux_clk_src
.clkr
.hw
,
1554 .flags
= CLK_SET_RATE_PARENT
,
1555 .ops
= &clk_branch2_ops
,
1560 static struct clk_branch gcc_pcie_0_cfg_ahb_clk
= {
1561 .halt_reg
= 0x6b038,
1562 .halt_check
= BRANCH_HALT_VOTED
,
1563 .hwcg_reg
= 0x6b038,
1566 .enable_reg
= 0x52008,
1567 .enable_mask
= BIT(2),
1568 .hw
.init
= &(struct clk_init_data
){
1569 .name
= "gcc_pcie_0_cfg_ahb_clk",
1570 .ops
= &clk_branch2_ops
,
1575 static struct clk_branch gcc_pcie_0_mstr_axi_clk
= {
1576 .halt_reg
= 0x6b02c,
1577 .halt_check
= BRANCH_HALT_SKIP
,
1578 .hwcg_reg
= 0x6b02c,
1581 .enable_reg
= 0x52008,
1582 .enable_mask
= BIT(1),
1583 .hw
.init
= &(struct clk_init_data
){
1584 .name
= "gcc_pcie_0_mstr_axi_clk",
1585 .ops
= &clk_branch2_ops
,
1590 static struct clk_branch gcc_pcie_0_phy_rchng_clk
= {
1591 .halt_reg
= 0x6b054,
1592 .halt_check
= BRANCH_HALT_VOTED
,
1594 .enable_reg
= 0x52000,
1595 .enable_mask
= BIT(22),
1596 .hw
.init
= &(struct clk_init_data
){
1597 .name
= "gcc_pcie_0_phy_rchng_clk",
1598 .parent_hws
= (const struct clk_hw
*[]) {
1599 &gcc_pcie_0_phy_rchng_clk_src
.clkr
.hw
,
1602 .flags
= CLK_SET_RATE_PARENT
,
1603 .ops
= &clk_branch2_ops
,
1608 static struct clk_branch gcc_pcie_0_pipe_clk
= {
1609 .halt_reg
= 0x6b048,
1610 .halt_check
= BRANCH_HALT_SKIP
,
1612 .enable_reg
= 0x52008,
1613 .enable_mask
= BIT(4),
1614 .hw
.init
= &(struct clk_init_data
){
1615 .name
= "gcc_pcie_0_pipe_clk",
1616 .parent_hws
= (const struct clk_hw
*[]) {
1617 &gcc_pcie_0_pipe_clk_src
.clkr
.hw
,
1620 .flags
= CLK_SET_RATE_PARENT
,
1621 .ops
= &clk_branch2_ops
,
1626 static struct clk_branch gcc_pcie_0_slv_axi_clk
= {
1627 .halt_reg
= 0x6b020,
1628 .halt_check
= BRANCH_HALT_VOTED
,
1629 .hwcg_reg
= 0x6b020,
1632 .enable_reg
= 0x52008,
1633 .enable_mask
= BIT(0),
1634 .hw
.init
= &(struct clk_init_data
){
1635 .name
= "gcc_pcie_0_slv_axi_clk",
1636 .ops
= &clk_branch2_ops
,
1641 static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk
= {
1642 .halt_reg
= 0x6b01c,
1643 .halt_check
= BRANCH_HALT_VOTED
,
1645 .enable_reg
= 0x52008,
1646 .enable_mask
= BIT(5),
1647 .hw
.init
= &(struct clk_init_data
){
1648 .name
= "gcc_pcie_0_slv_q2a_axi_clk",
1649 .ops
= &clk_branch2_ops
,
1654 static struct clk_branch gcc_pcie_1_aux_clk
= {
1655 .halt_reg
= 0x8d038,
1656 .halt_check
= BRANCH_HALT_VOTED
,
1658 .enable_reg
= 0x52000,
1659 .enable_mask
= BIT(29),
1660 .hw
.init
= &(struct clk_init_data
){
1661 .name
= "gcc_pcie_1_aux_clk",
1662 .parent_hws
= (const struct clk_hw
*[]) {
1663 &gcc_pcie_1_aux_clk_src
.clkr
.hw
,
1666 .flags
= CLK_SET_RATE_PARENT
,
1667 .ops
= &clk_branch2_ops
,
1672 static struct clk_branch gcc_pcie_1_cfg_ahb_clk
= {
1673 .halt_reg
= 0x8d034,
1674 .halt_check
= BRANCH_HALT_VOTED
,
1675 .hwcg_reg
= 0x8d034,
1678 .enable_reg
= 0x52000,
1679 .enable_mask
= BIT(28),
1680 .hw
.init
= &(struct clk_init_data
){
1681 .name
= "gcc_pcie_1_cfg_ahb_clk",
1682 .ops
= &clk_branch2_ops
,
1687 static struct clk_branch gcc_pcie_1_mstr_axi_clk
= {
1688 .halt_reg
= 0x8d028,
1689 .halt_check
= BRANCH_HALT_SKIP
,
1690 .hwcg_reg
= 0x8d028,
1693 .enable_reg
= 0x52000,
1694 .enable_mask
= BIT(27),
1695 .hw
.init
= &(struct clk_init_data
){
1696 .name
= "gcc_pcie_1_mstr_axi_clk",
1697 .ops
= &clk_branch2_ops
,
1702 static struct clk_branch gcc_pcie_1_phy_aux_clk
= {
1703 .halt_reg
= 0x8d044,
1704 .halt_check
= BRANCH_HALT_VOTED
,
1706 .enable_reg
= 0x52000,
1707 .enable_mask
= BIT(24),
1708 .hw
.init
= &(struct clk_init_data
){
1709 .name
= "gcc_pcie_1_phy_aux_clk",
1710 .parent_hws
= (const struct clk_hw
*[]) {
1711 &gcc_pcie_1_phy_aux_clk_src
.clkr
.hw
,
1714 .flags
= CLK_SET_RATE_PARENT
,
1715 .ops
= &clk_branch2_ops
,
1720 static struct clk_branch gcc_pcie_1_phy_rchng_clk
= {
1721 .halt_reg
= 0x8d05c,
1722 .halt_check
= BRANCH_HALT_VOTED
,
1724 .enable_reg
= 0x52000,
1725 .enable_mask
= BIT(23),
1726 .hw
.init
= &(struct clk_init_data
){
1727 .name
= "gcc_pcie_1_phy_rchng_clk",
1728 .parent_hws
= (const struct clk_hw
*[]) {
1729 &gcc_pcie_1_phy_rchng_clk_src
.clkr
.hw
,
1732 .flags
= CLK_SET_RATE_PARENT
,
1733 .ops
= &clk_branch2_ops
,
1738 static struct clk_branch gcc_pcie_1_pipe_clk
= {
1739 .halt_reg
= 0x8d050,
1740 .halt_check
= BRANCH_HALT_SKIP
,
1742 .enable_reg
= 0x52000,
1743 .enable_mask
= BIT(30),
1744 .hw
.init
= &(struct clk_init_data
){
1745 .name
= "gcc_pcie_1_pipe_clk",
1746 .parent_hws
= (const struct clk_hw
*[]) {
1747 &gcc_pcie_1_pipe_clk_src
.clkr
.hw
,
1750 .flags
= CLK_SET_RATE_PARENT
,
1751 .ops
= &clk_branch2_ops
,
1756 static struct clk_branch gcc_pcie_1_slv_axi_clk
= {
1757 .halt_reg
= 0x8d01c,
1758 .halt_check
= BRANCH_HALT_VOTED
,
1759 .hwcg_reg
= 0x8d01c,
1762 .enable_reg
= 0x52000,
1763 .enable_mask
= BIT(26),
1764 .hw
.init
= &(struct clk_init_data
){
1765 .name
= "gcc_pcie_1_slv_axi_clk",
1766 .ops
= &clk_branch2_ops
,
1771 static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk
= {
1772 .halt_reg
= 0x8d018,
1773 .halt_check
= BRANCH_HALT_VOTED
,
1775 .enable_reg
= 0x52000,
1776 .enable_mask
= BIT(25),
1777 .hw
.init
= &(struct clk_init_data
){
1778 .name
= "gcc_pcie_1_slv_q2a_axi_clk",
1779 .ops
= &clk_branch2_ops
,
1784 static struct clk_branch gcc_pdm2_clk
= {
1785 .halt_reg
= 0x3300c,
1786 .halt_check
= BRANCH_HALT
,
1788 .enable_reg
= 0x3300c,
1789 .enable_mask
= BIT(0),
1790 .hw
.init
= &(struct clk_init_data
){
1791 .name
= "gcc_pdm2_clk",
1792 .parent_hws
= (const struct clk_hw
*[]) {
1793 &gcc_pdm2_clk_src
.clkr
.hw
,
1796 .flags
= CLK_SET_RATE_PARENT
,
1797 .ops
= &clk_branch2_ops
,
1802 static struct clk_branch gcc_pdm_ahb_clk
= {
1803 .halt_reg
= 0x33004,
1804 .halt_check
= BRANCH_HALT_VOTED
,
1805 .hwcg_reg
= 0x33004,
1808 .enable_reg
= 0x33004,
1809 .enable_mask
= BIT(0),
1810 .hw
.init
= &(struct clk_init_data
){
1811 .name
= "gcc_pdm_ahb_clk",
1812 .ops
= &clk_branch2_ops
,
1817 static struct clk_branch gcc_pdm_xo4_clk
= {
1818 .halt_reg
= 0x33008,
1819 .halt_check
= BRANCH_HALT
,
1821 .enable_reg
= 0x33008,
1822 .enable_mask
= BIT(0),
1823 .hw
.init
= &(struct clk_init_data
){
1824 .name
= "gcc_pdm_xo4_clk",
1825 .ops
= &clk_branch2_ops
,
1830 static struct clk_branch gcc_qmip_camera_nrt_ahb_clk
= {
1831 .halt_reg
= 0x26008,
1832 .halt_check
= BRANCH_HALT_VOTED
,
1833 .hwcg_reg
= 0x26008,
1836 .enable_reg
= 0x26008,
1837 .enable_mask
= BIT(0),
1838 .hw
.init
= &(struct clk_init_data
){
1839 .name
= "gcc_qmip_camera_nrt_ahb_clk",
1840 .ops
= &clk_branch2_ops
,
1845 static struct clk_branch gcc_qmip_camera_rt_ahb_clk
= {
1846 .halt_reg
= 0x2600c,
1847 .halt_check
= BRANCH_HALT_VOTED
,
1848 .hwcg_reg
= 0x2600c,
1851 .enable_reg
= 0x2600c,
1852 .enable_mask
= BIT(0),
1853 .hw
.init
= &(struct clk_init_data
){
1854 .name
= "gcc_qmip_camera_rt_ahb_clk",
1855 .ops
= &clk_branch2_ops
,
1860 static struct clk_branch gcc_qmip_disp_ahb_clk
= {
1861 .halt_reg
= 0x27008,
1862 .halt_check
= BRANCH_HALT_VOTED
,
1863 .hwcg_reg
= 0x27008,
1866 .enable_reg
= 0x27008,
1867 .enable_mask
= BIT(0),
1868 .hw
.init
= &(struct clk_init_data
){
1869 .name
= "gcc_qmip_disp_ahb_clk",
1870 .ops
= &clk_branch2_ops
,
1875 static struct clk_branch gcc_qmip_gpu_ahb_clk
= {
1876 .halt_reg
= 0x71008,
1877 .halt_check
= BRANCH_HALT_VOTED
,
1878 .hwcg_reg
= 0x71008,
1881 .enable_reg
= 0x71008,
1882 .enable_mask
= BIT(0),
1883 .hw
.init
= &(struct clk_init_data
){
1884 .name
= "gcc_qmip_gpu_ahb_clk",
1885 .ops
= &clk_branch2_ops
,
1890 static struct clk_branch gcc_qmip_pcie_ahb_clk
= {
1891 .halt_reg
= 0x6b018,
1892 .halt_check
= BRANCH_HALT_VOTED
,
1893 .hwcg_reg
= 0x6b018,
1896 .enable_reg
= 0x52000,
1897 .enable_mask
= BIT(11),
1898 .hw
.init
= &(struct clk_init_data
){
1899 .name
= "gcc_qmip_pcie_ahb_clk",
1900 .ops
= &clk_branch2_ops
,
1905 static struct clk_branch gcc_qmip_video_cv_cpu_ahb_clk
= {
1906 .halt_reg
= 0x32014,
1907 .halt_check
= BRANCH_HALT_VOTED
,
1908 .hwcg_reg
= 0x32014,
1911 .enable_reg
= 0x32014,
1912 .enable_mask
= BIT(0),
1913 .hw
.init
= &(struct clk_init_data
){
1914 .name
= "gcc_qmip_video_cv_cpu_ahb_clk",
1915 .ops
= &clk_branch2_ops
,
1920 static struct clk_branch gcc_qmip_video_cvp_ahb_clk
= {
1921 .halt_reg
= 0x32008,
1922 .halt_check
= BRANCH_HALT_VOTED
,
1923 .hwcg_reg
= 0x32008,
1926 .enable_reg
= 0x32008,
1927 .enable_mask
= BIT(0),
1928 .hw
.init
= &(struct clk_init_data
){
1929 .name
= "gcc_qmip_video_cvp_ahb_clk",
1930 .ops
= &clk_branch2_ops
,
1935 static struct clk_branch gcc_qmip_video_v_cpu_ahb_clk
= {
1936 .halt_reg
= 0x32010,
1937 .halt_check
= BRANCH_HALT_VOTED
,
1938 .hwcg_reg
= 0x32010,
1941 .enable_reg
= 0x32010,
1942 .enable_mask
= BIT(0),
1943 .hw
.init
= &(struct clk_init_data
){
1944 .name
= "gcc_qmip_video_v_cpu_ahb_clk",
1945 .ops
= &clk_branch2_ops
,
1950 static struct clk_branch gcc_qmip_video_vcodec_ahb_clk
= {
1951 .halt_reg
= 0x3200c,
1952 .halt_check
= BRANCH_HALT_VOTED
,
1953 .hwcg_reg
= 0x3200c,
1956 .enable_reg
= 0x3200c,
1957 .enable_mask
= BIT(0),
1958 .hw
.init
= &(struct clk_init_data
){
1959 .name
= "gcc_qmip_video_vcodec_ahb_clk",
1960 .ops
= &clk_branch2_ops
,
1965 static struct clk_branch gcc_qupv3_i2c_core_clk
= {
1966 .halt_reg
= 0x23144,
1967 .halt_check
= BRANCH_HALT_VOTED
,
1969 .enable_reg
= 0x52008,
1970 .enable_mask
= BIT(8),
1971 .hw
.init
= &(struct clk_init_data
){
1972 .name
= "gcc_qupv3_i2c_core_clk",
1973 .ops
= &clk_branch2_ops
,
1978 static struct clk_branch gcc_qupv3_i2c_s0_clk
= {
1979 .halt_reg
= 0x17004,
1980 .halt_check
= BRANCH_HALT_VOTED
,
1982 .enable_reg
= 0x52008,
1983 .enable_mask
= BIT(10),
1984 .hw
.init
= &(struct clk_init_data
){
1985 .name
= "gcc_qupv3_i2c_s0_clk",
1986 .parent_hws
= (const struct clk_hw
*[]) {
1987 &gcc_qupv3_i2c_s0_clk_src
.clkr
.hw
,
1990 .flags
= CLK_SET_RATE_PARENT
,
1991 .ops
= &clk_branch2_ops
,
1996 static struct clk_branch gcc_qupv3_i2c_s1_clk
= {
1997 .halt_reg
= 0x17020,
1998 .halt_check
= BRANCH_HALT_VOTED
,
2000 .enable_reg
= 0x52008,
2001 .enable_mask
= BIT(11),
2002 .hw
.init
= &(struct clk_init_data
){
2003 .name
= "gcc_qupv3_i2c_s1_clk",
2004 .parent_hws
= (const struct clk_hw
*[]) {
2005 &gcc_qupv3_i2c_s1_clk_src
.clkr
.hw
,
2008 .flags
= CLK_SET_RATE_PARENT
,
2009 .ops
= &clk_branch2_ops
,
2014 static struct clk_branch gcc_qupv3_i2c_s2_clk
= {
2015 .halt_reg
= 0x1703c,
2016 .halt_check
= BRANCH_HALT_VOTED
,
2018 .enable_reg
= 0x52008,
2019 .enable_mask
= BIT(12),
2020 .hw
.init
= &(struct clk_init_data
){
2021 .name
= "gcc_qupv3_i2c_s2_clk",
2022 .parent_hws
= (const struct clk_hw
*[]) {
2023 &gcc_qupv3_i2c_s2_clk_src
.clkr
.hw
,
2026 .flags
= CLK_SET_RATE_PARENT
,
2027 .ops
= &clk_branch2_ops
,
2032 static struct clk_branch gcc_qupv3_i2c_s3_clk
= {
2033 .halt_reg
= 0x17058,
2034 .halt_check
= BRANCH_HALT_VOTED
,
2036 .enable_reg
= 0x52008,
2037 .enable_mask
= BIT(13),
2038 .hw
.init
= &(struct clk_init_data
){
2039 .name
= "gcc_qupv3_i2c_s3_clk",
2040 .parent_hws
= (const struct clk_hw
*[]) {
2041 &gcc_qupv3_i2c_s3_clk_src
.clkr
.hw
,
2044 .flags
= CLK_SET_RATE_PARENT
,
2045 .ops
= &clk_branch2_ops
,
2050 static struct clk_branch gcc_qupv3_i2c_s4_clk
= {
2051 .halt_reg
= 0x17074,
2052 .halt_check
= BRANCH_HALT_VOTED
,
2054 .enable_reg
= 0x52008,
2055 .enable_mask
= BIT(14),
2056 .hw
.init
= &(struct clk_init_data
){
2057 .name
= "gcc_qupv3_i2c_s4_clk",
2058 .parent_hws
= (const struct clk_hw
*[]) {
2059 &gcc_qupv3_i2c_s4_clk_src
.clkr
.hw
,
2062 .flags
= CLK_SET_RATE_PARENT
,
2063 .ops
= &clk_branch2_ops
,
2068 static struct clk_branch gcc_qupv3_i2c_s5_clk
= {
2069 .halt_reg
= 0x17090,
2070 .halt_check
= BRANCH_HALT_VOTED
,
2072 .enable_reg
= 0x52008,
2073 .enable_mask
= BIT(15),
2074 .hw
.init
= &(struct clk_init_data
){
2075 .name
= "gcc_qupv3_i2c_s5_clk",
2076 .parent_hws
= (const struct clk_hw
*[]) {
2077 &gcc_qupv3_i2c_s5_clk_src
.clkr
.hw
,
2080 .flags
= CLK_SET_RATE_PARENT
,
2081 .ops
= &clk_branch2_ops
,
2086 static struct clk_branch gcc_qupv3_i2c_s6_clk
= {
2087 .halt_reg
= 0x170ac,
2088 .halt_check
= BRANCH_HALT_VOTED
,
2090 .enable_reg
= 0x52008,
2091 .enable_mask
= BIT(16),
2092 .hw
.init
= &(struct clk_init_data
){
2093 .name
= "gcc_qupv3_i2c_s6_clk",
2094 .parent_hws
= (const struct clk_hw
*[]) {
2095 &gcc_qupv3_i2c_s6_clk_src
.clkr
.hw
,
2098 .flags
= CLK_SET_RATE_PARENT
,
2099 .ops
= &clk_branch2_ops
,
2104 static struct clk_branch gcc_qupv3_i2c_s7_clk
= {
2105 .halt_reg
= 0x170c8,
2106 .halt_check
= BRANCH_HALT_VOTED
,
2108 .enable_reg
= 0x52008,
2109 .enable_mask
= BIT(17),
2110 .hw
.init
= &(struct clk_init_data
){
2111 .name
= "gcc_qupv3_i2c_s7_clk",
2112 .parent_hws
= (const struct clk_hw
*[]) {
2113 &gcc_qupv3_i2c_s7_clk_src
.clkr
.hw
,
2116 .flags
= CLK_SET_RATE_PARENT
,
2117 .ops
= &clk_branch2_ops
,
2122 static struct clk_branch gcc_qupv3_i2c_s8_clk
= {
2123 .halt_reg
= 0x170e4,
2124 .halt_check
= BRANCH_HALT_VOTED
,
2126 .enable_reg
= 0x52010,
2127 .enable_mask
= BIT(14),
2128 .hw
.init
= &(struct clk_init_data
){
2129 .name
= "gcc_qupv3_i2c_s8_clk",
2130 .parent_hws
= (const struct clk_hw
*[]) {
2131 &gcc_qupv3_i2c_s8_clk_src
.clkr
.hw
,
2134 .flags
= CLK_SET_RATE_PARENT
,
2135 .ops
= &clk_branch2_ops
,
2140 static struct clk_branch gcc_qupv3_i2c_s9_clk
= {
2141 .halt_reg
= 0x17100,
2142 .halt_check
= BRANCH_HALT_VOTED
,
2144 .enable_reg
= 0x52010,
2145 .enable_mask
= BIT(15),
2146 .hw
.init
= &(struct clk_init_data
){
2147 .name
= "gcc_qupv3_i2c_s9_clk",
2148 .parent_hws
= (const struct clk_hw
*[]) {
2149 &gcc_qupv3_i2c_s9_clk_src
.clkr
.hw
,
2152 .flags
= CLK_SET_RATE_PARENT
,
2153 .ops
= &clk_branch2_ops
,
2158 static struct clk_branch gcc_qupv3_i2c_s_ahb_clk
= {
2159 .halt_reg
= 0x23140,
2160 .halt_check
= BRANCH_HALT_VOTED
,
2161 .hwcg_reg
= 0x23140,
2164 .enable_reg
= 0x52008,
2165 .enable_mask
= BIT(7),
2166 .hw
.init
= &(struct clk_init_data
){
2167 .name
= "gcc_qupv3_i2c_s_ahb_clk",
2168 .ops
= &clk_branch2_ops
,
2173 static struct clk_branch gcc_qupv3_wrap1_core_2x_clk
= {
2174 .halt_reg
= 0x23294,
2175 .halt_check
= BRANCH_HALT_VOTED
,
2177 .enable_reg
= 0x52008,
2178 .enable_mask
= BIT(18),
2179 .hw
.init
= &(struct clk_init_data
){
2180 .name
= "gcc_qupv3_wrap1_core_2x_clk",
2181 .ops
= &clk_branch2_ops
,
2186 static struct clk_branch gcc_qupv3_wrap1_core_clk
= {
2187 .halt_reg
= 0x23284,
2188 .halt_check
= BRANCH_HALT_VOTED
,
2190 .enable_reg
= 0x52008,
2191 .enable_mask
= BIT(19),
2192 .hw
.init
= &(struct clk_init_data
){
2193 .name
= "gcc_qupv3_wrap1_core_clk",
2194 .ops
= &clk_branch2_ops
,
2199 static struct clk_branch gcc_qupv3_wrap1_s0_clk
= {
2200 .halt_reg
= 0x18004,
2201 .halt_check
= BRANCH_HALT_VOTED
,
2203 .enable_reg
= 0x52008,
2204 .enable_mask
= BIT(22),
2205 .hw
.init
= &(struct clk_init_data
){
2206 .name
= "gcc_qupv3_wrap1_s0_clk",
2207 .parent_hws
= (const struct clk_hw
*[]) {
2208 &gcc_qupv3_wrap1_s0_clk_src
.clkr
.hw
,
2211 .flags
= CLK_SET_RATE_PARENT
,
2212 .ops
= &clk_branch2_ops
,
2217 static struct clk_branch gcc_qupv3_wrap1_s1_clk
= {
2218 .halt_reg
= 0x1813c,
2219 .halt_check
= BRANCH_HALT_VOTED
,
2221 .enable_reg
= 0x52008,
2222 .enable_mask
= BIT(23),
2223 .hw
.init
= &(struct clk_init_data
){
2224 .name
= "gcc_qupv3_wrap1_s1_clk",
2225 .parent_hws
= (const struct clk_hw
*[]) {
2226 &gcc_qupv3_wrap1_s1_clk_src
.clkr
.hw
,
2229 .flags
= CLK_SET_RATE_PARENT
,
2230 .ops
= &clk_branch2_ops
,
2235 static struct clk_branch gcc_qupv3_wrap1_s2_clk
= {
2236 .halt_reg
= 0x18274,
2237 .halt_check
= BRANCH_HALT_VOTED
,
2239 .enable_reg
= 0x52008,
2240 .enable_mask
= BIT(24),
2241 .hw
.init
= &(struct clk_init_data
){
2242 .name
= "gcc_qupv3_wrap1_s2_clk",
2243 .parent_hws
= (const struct clk_hw
*[]) {
2244 &gcc_qupv3_wrap1_s2_clk_src
.clkr
.hw
,
2247 .flags
= CLK_SET_RATE_PARENT
,
2248 .ops
= &clk_branch2_ops
,
2253 static struct clk_branch gcc_qupv3_wrap1_s3_clk
= {
2254 .halt_reg
= 0x183ac,
2255 .halt_check
= BRANCH_HALT_VOTED
,
2257 .enable_reg
= 0x52008,
2258 .enable_mask
= BIT(25),
2259 .hw
.init
= &(struct clk_init_data
){
2260 .name
= "gcc_qupv3_wrap1_s3_clk",
2261 .parent_hws
= (const struct clk_hw
*[]) {
2262 &gcc_qupv3_wrap1_s3_clk_src
.clkr
.hw
,
2265 .flags
= CLK_SET_RATE_PARENT
,
2266 .ops
= &clk_branch2_ops
,
2271 static struct clk_branch gcc_qupv3_wrap1_s4_clk
= {
2272 .halt_reg
= 0x184e4,
2273 .halt_check
= BRANCH_HALT_VOTED
,
2275 .enable_reg
= 0x52008,
2276 .enable_mask
= BIT(26),
2277 .hw
.init
= &(struct clk_init_data
){
2278 .name
= "gcc_qupv3_wrap1_s4_clk",
2279 .parent_hws
= (const struct clk_hw
*[]) {
2280 &gcc_qupv3_wrap1_s4_clk_src
.clkr
.hw
,
2283 .flags
= CLK_SET_RATE_PARENT
,
2284 .ops
= &clk_branch2_ops
,
2289 static struct clk_branch gcc_qupv3_wrap1_s5_clk
= {
2290 .halt_reg
= 0x1861c,
2291 .halt_check
= BRANCH_HALT_VOTED
,
2293 .enable_reg
= 0x52008,
2294 .enable_mask
= BIT(27),
2295 .hw
.init
= &(struct clk_init_data
){
2296 .name
= "gcc_qupv3_wrap1_s5_clk",
2297 .parent_hws
= (const struct clk_hw
*[]) {
2298 &gcc_qupv3_wrap1_s5_clk_src
.clkr
.hw
,
2301 .flags
= CLK_SET_RATE_PARENT
,
2302 .ops
= &clk_branch2_ops
,
2307 static struct clk_branch gcc_qupv3_wrap1_s6_clk
= {
2308 .halt_reg
= 0x18754,
2309 .halt_check
= BRANCH_HALT_VOTED
,
2311 .enable_reg
= 0x52008,
2312 .enable_mask
= BIT(28),
2313 .hw
.init
= &(struct clk_init_data
){
2314 .name
= "gcc_qupv3_wrap1_s6_clk",
2315 .parent_hws
= (const struct clk_hw
*[]) {
2316 &gcc_qupv3_wrap1_s6_clk_src
.clkr
.hw
,
2319 .flags
= CLK_SET_RATE_PARENT
,
2320 .ops
= &clk_branch2_ops
,
2325 static struct clk_branch gcc_qupv3_wrap1_s7_clk
= {
2326 .halt_reg
= 0x1888c,
2327 .halt_check
= BRANCH_HALT_VOTED
,
2329 .enable_reg
= 0x52010,
2330 .enable_mask
= BIT(16),
2331 .hw
.init
= &(struct clk_init_data
){
2332 .name
= "gcc_qupv3_wrap1_s7_clk",
2333 .parent_hws
= (const struct clk_hw
*[]) {
2334 &gcc_qupv3_wrap1_s7_clk_src
.clkr
.hw
,
2337 .flags
= CLK_SET_RATE_PARENT
,
2338 .ops
= &clk_branch2_ops
,
2343 static struct clk_branch gcc_qupv3_wrap2_core_2x_clk
= {
2344 .halt_reg
= 0x23004,
2345 .halt_check
= BRANCH_HALT_VOTED
,
2347 .enable_reg
= 0x52010,
2348 .enable_mask
= BIT(3),
2349 .hw
.init
= &(struct clk_init_data
){
2350 .name
= "gcc_qupv3_wrap2_core_2x_clk",
2351 .ops
= &clk_branch2_ops
,
2356 static struct clk_branch gcc_qupv3_wrap2_core_clk
= {
2357 .halt_reg
= 0x233d4,
2358 .halt_check
= BRANCH_HALT_VOTED
,
2360 .enable_reg
= 0x52010,
2361 .enable_mask
= BIT(0),
2362 .hw
.init
= &(struct clk_init_data
){
2363 .name
= "gcc_qupv3_wrap2_core_clk",
2364 .ops
= &clk_branch2_ops
,
2369 static struct clk_branch gcc_qupv3_wrap2_s0_clk
= {
2370 .halt_reg
= 0x1e004,
2371 .halt_check
= BRANCH_HALT_VOTED
,
2373 .enable_reg
= 0x52010,
2374 .enable_mask
= BIT(4),
2375 .hw
.init
= &(struct clk_init_data
){
2376 .name
= "gcc_qupv3_wrap2_s0_clk",
2377 .parent_hws
= (const struct clk_hw
*[]) {
2378 &gcc_qupv3_wrap2_s0_clk_src
.clkr
.hw
,
2381 .flags
= CLK_SET_RATE_PARENT
,
2382 .ops
= &clk_branch2_ops
,
2387 static struct clk_branch gcc_qupv3_wrap2_s1_clk
= {
2388 .halt_reg
= 0x1e13c,
2389 .halt_check
= BRANCH_HALT_VOTED
,
2391 .enable_reg
= 0x52010,
2392 .enable_mask
= BIT(5),
2393 .hw
.init
= &(struct clk_init_data
){
2394 .name
= "gcc_qupv3_wrap2_s1_clk",
2395 .parent_hws
= (const struct clk_hw
*[]) {
2396 &gcc_qupv3_wrap2_s1_clk_src
.clkr
.hw
,
2399 .flags
= CLK_SET_RATE_PARENT
,
2400 .ops
= &clk_branch2_ops
,
2405 static struct clk_branch gcc_qupv3_wrap2_s2_clk
= {
2406 .halt_reg
= 0x1e274,
2407 .halt_check
= BRANCH_HALT_VOTED
,
2409 .enable_reg
= 0x52010,
2410 .enable_mask
= BIT(6),
2411 .hw
.init
= &(struct clk_init_data
){
2412 .name
= "gcc_qupv3_wrap2_s2_clk",
2413 .parent_hws
= (const struct clk_hw
*[]) {
2414 &gcc_qupv3_wrap2_s2_clk_src
.clkr
.hw
,
2417 .flags
= CLK_SET_RATE_PARENT
,
2418 .ops
= &clk_branch2_ops
,
2423 static struct clk_branch gcc_qupv3_wrap2_s3_clk
= {
2424 .halt_reg
= 0x1e3ac,
2425 .halt_check
= BRANCH_HALT_VOTED
,
2427 .enable_reg
= 0x52010,
2428 .enable_mask
= BIT(7),
2429 .hw
.init
= &(struct clk_init_data
){
2430 .name
= "gcc_qupv3_wrap2_s3_clk",
2431 .parent_hws
= (const struct clk_hw
*[]) {
2432 &gcc_qupv3_wrap2_s3_clk_src
.clkr
.hw
,
2435 .flags
= CLK_SET_RATE_PARENT
,
2436 .ops
= &clk_branch2_ops
,
2441 static struct clk_branch gcc_qupv3_wrap2_s4_clk
= {
2442 .halt_reg
= 0x1e4e4,
2443 .halt_check
= BRANCH_HALT_VOTED
,
2445 .enable_reg
= 0x52010,
2446 .enable_mask
= BIT(8),
2447 .hw
.init
= &(struct clk_init_data
){
2448 .name
= "gcc_qupv3_wrap2_s4_clk",
2449 .parent_hws
= (const struct clk_hw
*[]) {
2450 &gcc_qupv3_wrap2_s4_clk_src
.clkr
.hw
,
2453 .flags
= CLK_SET_RATE_PARENT
,
2454 .ops
= &clk_branch2_ops
,
2459 static struct clk_branch gcc_qupv3_wrap2_s5_clk
= {
2460 .halt_reg
= 0x1e61c,
2461 .halt_check
= BRANCH_HALT_VOTED
,
2463 .enable_reg
= 0x52010,
2464 .enable_mask
= BIT(9),
2465 .hw
.init
= &(struct clk_init_data
){
2466 .name
= "gcc_qupv3_wrap2_s5_clk",
2467 .parent_hws
= (const struct clk_hw
*[]) {
2468 &gcc_qupv3_wrap2_s5_clk_src
.clkr
.hw
,
2471 .flags
= CLK_SET_RATE_PARENT
,
2472 .ops
= &clk_branch2_ops
,
2477 static struct clk_branch gcc_qupv3_wrap2_s6_clk
= {
2478 .halt_reg
= 0x1e754,
2479 .halt_check
= BRANCH_HALT_VOTED
,
2481 .enable_reg
= 0x52010,
2482 .enable_mask
= BIT(10),
2483 .hw
.init
= &(struct clk_init_data
){
2484 .name
= "gcc_qupv3_wrap2_s6_clk",
2485 .parent_hws
= (const struct clk_hw
*[]) {
2486 &gcc_qupv3_wrap2_s6_clk_src
.clkr
.hw
,
2489 .flags
= CLK_SET_RATE_PARENT
,
2490 .ops
= &clk_branch2_ops
,
2495 static struct clk_branch gcc_qupv3_wrap2_s7_clk
= {
2496 .halt_reg
= 0x1e88c,
2497 .halt_check
= BRANCH_HALT_VOTED
,
2499 .enable_reg
= 0x52010,
2500 .enable_mask
= BIT(17),
2501 .hw
.init
= &(struct clk_init_data
){
2502 .name
= "gcc_qupv3_wrap2_s7_clk",
2503 .parent_hws
= (const struct clk_hw
*[]) {
2504 &gcc_qupv3_wrap2_s7_clk_src
.clkr
.hw
,
2507 .flags
= CLK_SET_RATE_PARENT
,
2508 .ops
= &clk_branch2_ops
,
2513 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk
= {
2514 .halt_reg
= 0x2327c,
2515 .halt_check
= BRANCH_HALT_VOTED
,
2516 .hwcg_reg
= 0x2327c,
2519 .enable_reg
= 0x52008,
2520 .enable_mask
= BIT(20),
2521 .hw
.init
= &(struct clk_init_data
){
2522 .name
= "gcc_qupv3_wrap_1_m_ahb_clk",
2523 .ops
= &clk_branch2_ops
,
2528 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk
= {
2529 .halt_reg
= 0x23280,
2530 .halt_check
= BRANCH_HALT_VOTED
,
2531 .hwcg_reg
= 0x23280,
2534 .enable_reg
= 0x52008,
2535 .enable_mask
= BIT(21),
2536 .hw
.init
= &(struct clk_init_data
){
2537 .name
= "gcc_qupv3_wrap_1_s_ahb_clk",
2538 .ops
= &clk_branch2_ops
,
2543 static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk
= {
2544 .halt_reg
= 0x233cc,
2545 .halt_check
= BRANCH_HALT_VOTED
,
2546 .hwcg_reg
= 0x233cc,
2549 .enable_reg
= 0x52010,
2550 .enable_mask
= BIT(2),
2551 .hw
.init
= &(struct clk_init_data
){
2552 .name
= "gcc_qupv3_wrap_2_m_ahb_clk",
2553 .ops
= &clk_branch2_ops
,
2558 static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk
= {
2559 .halt_reg
= 0x233d0,
2560 .halt_check
= BRANCH_HALT_VOTED
,
2561 .hwcg_reg
= 0x233d0,
2564 .enable_reg
= 0x52010,
2565 .enable_mask
= BIT(1),
2566 .hw
.init
= &(struct clk_init_data
){
2567 .name
= "gcc_qupv3_wrap_2_s_ahb_clk",
2568 .ops
= &clk_branch2_ops
,
2573 static struct clk_branch gcc_sdcc2_ahb_clk
= {
2574 .halt_reg
= 0x14010,
2575 .halt_check
= BRANCH_HALT
,
2577 .enable_reg
= 0x14010,
2578 .enable_mask
= BIT(0),
2579 .hw
.init
= &(struct clk_init_data
){
2580 .name
= "gcc_sdcc2_ahb_clk",
2581 .ops
= &clk_branch2_ops
,
2586 static struct clk_branch gcc_sdcc2_apps_clk
= {
2587 .halt_reg
= 0x14004,
2588 .halt_check
= BRANCH_HALT
,
2590 .enable_reg
= 0x14004,
2591 .enable_mask
= BIT(0),
2592 .hw
.init
= &(struct clk_init_data
){
2593 .name
= "gcc_sdcc2_apps_clk",
2594 .parent_hws
= (const struct clk_hw
*[]) {
2595 &gcc_sdcc2_apps_clk_src
.clkr
.hw
,
2598 .flags
= CLK_SET_RATE_PARENT
,
2599 .ops
= &clk_branch2_ops
,
2604 static struct clk_branch gcc_sdcc4_ahb_clk
= {
2605 .halt_reg
= 0x16010,
2606 .halt_check
= BRANCH_HALT
,
2608 .enable_reg
= 0x16010,
2609 .enable_mask
= BIT(0),
2610 .hw
.init
= &(struct clk_init_data
){
2611 .name
= "gcc_sdcc4_ahb_clk",
2612 .ops
= &clk_branch2_ops
,
2617 static struct clk_branch gcc_sdcc4_apps_clk
= {
2618 .halt_reg
= 0x16004,
2619 .halt_check
= BRANCH_HALT
,
2621 .enable_reg
= 0x16004,
2622 .enable_mask
= BIT(0),
2623 .hw
.init
= &(struct clk_init_data
){
2624 .name
= "gcc_sdcc4_apps_clk",
2625 .parent_hws
= (const struct clk_hw
*[]) {
2626 &gcc_sdcc4_apps_clk_src
.clkr
.hw
,
2629 .flags
= CLK_SET_RATE_PARENT
,
2630 .ops
= &clk_branch2_ops
,
2635 static struct clk_branch gcc_ufs_phy_ahb_clk
= {
2636 .halt_reg
= 0x77024,
2637 .halt_check
= BRANCH_HALT_VOTED
,
2638 .hwcg_reg
= 0x77024,
2641 .enable_reg
= 0x77024,
2642 .enable_mask
= BIT(0),
2643 .hw
.init
= &(struct clk_init_data
){
2644 .name
= "gcc_ufs_phy_ahb_clk",
2645 .ops
= &clk_branch2_ops
,
2650 static struct clk_branch gcc_ufs_phy_axi_clk
= {
2651 .halt_reg
= 0x77018,
2652 .halt_check
= BRANCH_HALT_VOTED
,
2653 .hwcg_reg
= 0x77018,
2656 .enable_reg
= 0x77018,
2657 .enable_mask
= BIT(0),
2658 .hw
.init
= &(struct clk_init_data
){
2659 .name
= "gcc_ufs_phy_axi_clk",
2660 .parent_hws
= (const struct clk_hw
*[]) {
2661 &gcc_ufs_phy_axi_clk_src
.clkr
.hw
,
2664 .flags
= CLK_SET_RATE_PARENT
,
2665 .ops
= &clk_branch2_ops
,
2670 static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk
= {
2671 .halt_reg
= 0x77018,
2672 .halt_check
= BRANCH_HALT_VOTED
,
2673 .hwcg_reg
= 0x77018,
2676 .enable_reg
= 0x77018,
2677 .enable_mask
= BIT(1),
2678 .hw
.init
= &(struct clk_init_data
){
2679 .name
= "gcc_ufs_phy_axi_hw_ctl_clk",
2680 .parent_hws
= (const struct clk_hw
*[]) {
2681 &gcc_ufs_phy_axi_clk_src
.clkr
.hw
,
2684 .flags
= CLK_SET_RATE_PARENT
,
2685 .ops
= &clk_branch2_ops
,
2690 static struct clk_branch gcc_ufs_phy_ice_core_clk
= {
2691 .halt_reg
= 0x77074,
2692 .halt_check
= BRANCH_HALT_VOTED
,
2693 .hwcg_reg
= 0x77074,
2696 .enable_reg
= 0x77074,
2697 .enable_mask
= BIT(0),
2698 .hw
.init
= &(struct clk_init_data
){
2699 .name
= "gcc_ufs_phy_ice_core_clk",
2700 .parent_hws
= (const struct clk_hw
*[]) {
2701 &gcc_ufs_phy_ice_core_clk_src
.clkr
.hw
,
2704 .flags
= CLK_SET_RATE_PARENT
,
2705 .ops
= &clk_branch2_ops
,
2710 static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk
= {
2711 .halt_reg
= 0x77074,
2712 .halt_check
= BRANCH_HALT_VOTED
,
2713 .hwcg_reg
= 0x77074,
2716 .enable_reg
= 0x77074,
2717 .enable_mask
= BIT(1),
2718 .hw
.init
= &(struct clk_init_data
){
2719 .name
= "gcc_ufs_phy_ice_core_hw_ctl_clk",
2720 .parent_hws
= (const struct clk_hw
*[]) {
2721 &gcc_ufs_phy_ice_core_clk_src
.clkr
.hw
,
2724 .flags
= CLK_SET_RATE_PARENT
,
2725 .ops
= &clk_branch2_ops
,
2730 static struct clk_branch gcc_ufs_phy_phy_aux_clk
= {
2731 .halt_reg
= 0x770b0,
2732 .halt_check
= BRANCH_HALT_VOTED
,
2733 .hwcg_reg
= 0x770b0,
2736 .enable_reg
= 0x770b0,
2737 .enable_mask
= BIT(0),
2738 .hw
.init
= &(struct clk_init_data
){
2739 .name
= "gcc_ufs_phy_phy_aux_clk",
2740 .parent_hws
= (const struct clk_hw
*[]) {
2741 &gcc_ufs_phy_phy_aux_clk_src
.clkr
.hw
,
2744 .flags
= CLK_SET_RATE_PARENT
,
2745 .ops
= &clk_branch2_ops
,
2750 static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk
= {
2751 .halt_reg
= 0x770b0,
2752 .halt_check
= BRANCH_HALT_VOTED
,
2753 .hwcg_reg
= 0x770b0,
2756 .enable_reg
= 0x770b0,
2757 .enable_mask
= BIT(1),
2758 .hw
.init
= &(struct clk_init_data
){
2759 .name
= "gcc_ufs_phy_phy_aux_hw_ctl_clk",
2760 .parent_hws
= (const struct clk_hw
*[]) {
2761 &gcc_ufs_phy_phy_aux_clk_src
.clkr
.hw
,
2764 .flags
= CLK_SET_RATE_PARENT
,
2765 .ops
= &clk_branch2_ops
,
2770 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk
= {
2771 .halt_reg
= 0x7702c,
2772 .halt_check
= BRANCH_HALT_DELAY
,
2774 .enable_reg
= 0x7702c,
2775 .enable_mask
= BIT(0),
2776 .hw
.init
= &(struct clk_init_data
){
2777 .name
= "gcc_ufs_phy_rx_symbol_0_clk",
2778 .parent_hws
= (const struct clk_hw
*[]) {
2779 &gcc_ufs_phy_rx_symbol_0_clk_src
.clkr
.hw
,
2782 .flags
= CLK_SET_RATE_PARENT
,
2783 .ops
= &clk_branch2_ops
,
2788 static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk
= {
2789 .halt_reg
= 0x770cc,
2790 .halt_check
= BRANCH_HALT_DELAY
,
2792 .enable_reg
= 0x770cc,
2793 .enable_mask
= BIT(0),
2794 .hw
.init
= &(struct clk_init_data
){
2795 .name
= "gcc_ufs_phy_rx_symbol_1_clk",
2796 .parent_hws
= (const struct clk_hw
*[]) {
2797 &gcc_ufs_phy_rx_symbol_1_clk_src
.clkr
.hw
,
2800 .flags
= CLK_SET_RATE_PARENT
,
2801 .ops
= &clk_branch2_ops
,
2806 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk
= {
2807 .halt_reg
= 0x77028,
2808 .halt_check
= BRANCH_HALT_DELAY
,
2810 .enable_reg
= 0x77028,
2811 .enable_mask
= BIT(0),
2812 .hw
.init
= &(struct clk_init_data
){
2813 .name
= "gcc_ufs_phy_tx_symbol_0_clk",
2814 .parent_hws
= (const struct clk_hw
*[]) {
2815 &gcc_ufs_phy_tx_symbol_0_clk_src
.clkr
.hw
,
2818 .flags
= CLK_SET_RATE_PARENT
,
2819 .ops
= &clk_branch2_ops
,
2824 static struct clk_branch gcc_ufs_phy_unipro_core_clk
= {
2825 .halt_reg
= 0x77068,
2826 .halt_check
= BRANCH_HALT_VOTED
,
2827 .hwcg_reg
= 0x77068,
2830 .enable_reg
= 0x77068,
2831 .enable_mask
= BIT(0),
2832 .hw
.init
= &(struct clk_init_data
){
2833 .name
= "gcc_ufs_phy_unipro_core_clk",
2834 .parent_hws
= (const struct clk_hw
*[]) {
2835 &gcc_ufs_phy_unipro_core_clk_src
.clkr
.hw
,
2838 .flags
= CLK_SET_RATE_PARENT
,
2839 .ops
= &clk_branch2_ops
,
2844 static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk
= {
2845 .halt_reg
= 0x77068,
2846 .halt_check
= BRANCH_HALT_VOTED
,
2847 .hwcg_reg
= 0x77068,
2850 .enable_reg
= 0x77068,
2851 .enable_mask
= BIT(1),
2852 .hw
.init
= &(struct clk_init_data
){
2853 .name
= "gcc_ufs_phy_unipro_core_hw_ctl_clk",
2854 .parent_hws
= (const struct clk_hw
*[]) {
2855 &gcc_ufs_phy_unipro_core_clk_src
.clkr
.hw
,
2858 .flags
= CLK_SET_RATE_PARENT
,
2859 .ops
= &clk_branch2_ops
,
2864 static struct clk_branch gcc_usb30_prim_master_clk
= {
2865 .halt_reg
= 0x39018,
2866 .halt_check
= BRANCH_HALT
,
2868 .enable_reg
= 0x39018,
2869 .enable_mask
= BIT(0),
2870 .hw
.init
= &(struct clk_init_data
){
2871 .name
= "gcc_usb30_prim_master_clk",
2872 .parent_hws
= (const struct clk_hw
*[]) {
2873 &gcc_usb30_prim_master_clk_src
.clkr
.hw
,
2876 .flags
= CLK_SET_RATE_PARENT
,
2877 .ops
= &clk_branch2_ops
,
2882 static struct clk_branch gcc_usb30_prim_mock_utmi_clk
= {
2883 .halt_reg
= 0x39028,
2884 .halt_check
= BRANCH_HALT
,
2886 .enable_reg
= 0x39028,
2887 .enable_mask
= BIT(0),
2888 .hw
.init
= &(struct clk_init_data
){
2889 .name
= "gcc_usb30_prim_mock_utmi_clk",
2890 .parent_hws
= (const struct clk_hw
*[]) {
2891 &gcc_usb30_prim_mock_utmi_postdiv_clk_src
.clkr
.hw
,
2894 .flags
= CLK_SET_RATE_PARENT
,
2895 .ops
= &clk_branch2_ops
,
2900 static struct clk_branch gcc_usb30_prim_sleep_clk
= {
2901 .halt_reg
= 0x39024,
2902 .halt_check
= BRANCH_HALT
,
2904 .enable_reg
= 0x39024,
2905 .enable_mask
= BIT(0),
2906 .hw
.init
= &(struct clk_init_data
){
2907 .name
= "gcc_usb30_prim_sleep_clk",
2908 .ops
= &clk_branch2_ops
,
2913 static struct clk_branch gcc_usb3_prim_phy_aux_clk
= {
2914 .halt_reg
= 0x39060,
2915 .halt_check
= BRANCH_HALT
,
2917 .enable_reg
= 0x39060,
2918 .enable_mask
= BIT(0),
2919 .hw
.init
= &(struct clk_init_data
){
2920 .name
= "gcc_usb3_prim_phy_aux_clk",
2921 .parent_hws
= (const struct clk_hw
*[]) {
2922 &gcc_usb3_prim_phy_aux_clk_src
.clkr
.hw
,
2925 .flags
= CLK_SET_RATE_PARENT
,
2926 .ops
= &clk_branch2_ops
,
2931 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk
= {
2932 .halt_reg
= 0x39064,
2933 .halt_check
= BRANCH_HALT
,
2935 .enable_reg
= 0x39064,
2936 .enable_mask
= BIT(0),
2937 .hw
.init
= &(struct clk_init_data
){
2938 .name
= "gcc_usb3_prim_phy_com_aux_clk",
2939 .parent_hws
= (const struct clk_hw
*[]) {
2940 &gcc_usb3_prim_phy_aux_clk_src
.clkr
.hw
,
2943 .flags
= CLK_SET_RATE_PARENT
,
2944 .ops
= &clk_branch2_ops
,
2949 static struct clk_branch gcc_usb3_prim_phy_pipe_clk
= {
2950 .halt_reg
= 0x39068,
2951 .halt_check
= BRANCH_HALT_DELAY
,
2952 .hwcg_reg
= 0x39068,
2955 .enable_reg
= 0x39068,
2956 .enable_mask
= BIT(0),
2957 .hw
.init
= &(struct clk_init_data
){
2958 .name
= "gcc_usb3_prim_phy_pipe_clk",
2959 .parent_hws
= (const struct clk_hw
*[]) {
2960 &gcc_usb3_prim_phy_pipe_clk_src
.clkr
.hw
,
2963 .flags
= CLK_SET_RATE_PARENT
,
2964 .ops
= &clk_branch2_ops
,
2969 static struct clk_branch gcc_video_axi0_clk
= {
2970 .halt_reg
= 0x32018,
2971 .halt_check
= BRANCH_HALT_SKIP
,
2972 .hwcg_reg
= 0x32018,
2975 .enable_reg
= 0x32018,
2976 .enable_mask
= BIT(0),
2977 .hw
.init
= &(struct clk_init_data
){
2978 .name
= "gcc_video_axi0_clk",
2979 .ops
= &clk_branch2_ops
,
2984 static struct clk_branch gcc_video_axi1_clk
= {
2985 .halt_reg
= 0x32024,
2986 .halt_check
= BRANCH_HALT_SKIP
,
2987 .hwcg_reg
= 0x32024,
2990 .enable_reg
= 0x32024,
2991 .enable_mask
= BIT(0),
2992 .hw
.init
= &(struct clk_init_data
){
2993 .name
= "gcc_video_axi1_clk",
2994 .ops
= &clk_branch2_ops
,
2999 static struct gdsc pcie_0_gdsc
= {
3001 .collapse_ctrl
= 0x52020,
3002 .collapse_mask
= BIT(0),
3004 .name
= "pcie_0_gdsc",
3006 .pwrsts
= PWRSTS_OFF_ON
,
3007 .flags
= VOTABLE
| POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3010 static struct gdsc pcie_0_phy_gdsc
= {
3012 .collapse_ctrl
= 0x52020,
3013 .collapse_mask
= BIT(3),
3015 .name
= "pcie_0_phy_gdsc",
3017 .pwrsts
= PWRSTS_OFF_ON
,
3018 .flags
= VOTABLE
| POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3021 static struct gdsc pcie_1_gdsc
= {
3023 .collapse_ctrl
= 0x52020,
3024 .collapse_mask
= BIT(1),
3026 .name
= "pcie_1_gdsc",
3028 .pwrsts
= PWRSTS_OFF_ON
,
3029 .flags
= VOTABLE
| POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3032 static struct gdsc pcie_1_phy_gdsc
= {
3034 .collapse_ctrl
= 0x52020,
3035 .collapse_mask
= BIT(4),
3037 .name
= "pcie_1_phy_gdsc",
3039 .pwrsts
= PWRSTS_OFF_ON
,
3040 .flags
= VOTABLE
| POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3043 static struct gdsc ufs_phy_gdsc
= {
3046 .name
= "ufs_phy_gdsc",
3048 .pwrsts
= PWRSTS_OFF_ON
,
3049 .flags
= POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3052 static struct gdsc ufs_mem_phy_gdsc
= {
3055 .name
= "ufs_mem_phy_gdsc",
3057 .pwrsts
= PWRSTS_OFF_ON
,
3058 .flags
= POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3061 static struct gdsc usb30_prim_gdsc
= {
3064 .name
= "usb30_prim_gdsc",
3066 .pwrsts
= PWRSTS_OFF_ON
,
3067 .flags
= POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3070 static struct gdsc usb3_phy_gdsc
= {
3073 .name
= "usb3_phy_gdsc",
3075 .pwrsts
= PWRSTS_OFF_ON
,
3076 .flags
= POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3079 static struct clk_regmap
*gcc_sm8550_clocks
[] = {
3080 [GCC_AGGRE_NOC_PCIE_AXI_CLK
] = &gcc_aggre_noc_pcie_axi_clk
.clkr
,
3081 [GCC_AGGRE_UFS_PHY_AXI_CLK
] = &gcc_aggre_ufs_phy_axi_clk
.clkr
,
3082 [GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK
] = &gcc_aggre_ufs_phy_axi_hw_ctl_clk
.clkr
,
3083 [GCC_AGGRE_USB3_PRIM_AXI_CLK
] = &gcc_aggre_usb3_prim_axi_clk
.clkr
,
3084 [GCC_BOOT_ROM_AHB_CLK
] = &gcc_boot_rom_ahb_clk
.clkr
,
3085 [GCC_CAMERA_HF_AXI_CLK
] = &gcc_camera_hf_axi_clk
.clkr
,
3086 [GCC_CAMERA_SF_AXI_CLK
] = &gcc_camera_sf_axi_clk
.clkr
,
3087 [GCC_CFG_NOC_PCIE_ANOC_AHB_CLK
] = &gcc_cfg_noc_pcie_anoc_ahb_clk
.clkr
,
3088 [GCC_CFG_NOC_USB3_PRIM_AXI_CLK
] = &gcc_cfg_noc_usb3_prim_axi_clk
.clkr
,
3089 [GCC_CNOC_PCIE_SF_AXI_CLK
] = &gcc_cnoc_pcie_sf_axi_clk
.clkr
,
3090 [GCC_DDRSS_GPU_AXI_CLK
] = &gcc_ddrss_gpu_axi_clk
.clkr
,
3091 [GCC_DDRSS_PCIE_SF_QTB_CLK
] = &gcc_ddrss_pcie_sf_qtb_clk
.clkr
,
3092 [GCC_DISP_HF_AXI_CLK
] = &gcc_disp_hf_axi_clk
.clkr
,
3093 [GCC_GP1_CLK
] = &gcc_gp1_clk
.clkr
,
3094 [GCC_GP1_CLK_SRC
] = &gcc_gp1_clk_src
.clkr
,
3095 [GCC_GP2_CLK
] = &gcc_gp2_clk
.clkr
,
3096 [GCC_GP2_CLK_SRC
] = &gcc_gp2_clk_src
.clkr
,
3097 [GCC_GP3_CLK
] = &gcc_gp3_clk
.clkr
,
3098 [GCC_GP3_CLK_SRC
] = &gcc_gp3_clk_src
.clkr
,
3099 [GCC_GPLL0
] = &gcc_gpll0
.clkr
,
3100 [GCC_GPLL0_OUT_EVEN
] = &gcc_gpll0_out_even
.clkr
,
3101 [GCC_GPLL4
] = &gcc_gpll4
.clkr
,
3102 [GCC_GPLL7
] = &gcc_gpll7
.clkr
,
3103 [GCC_GPLL9
] = &gcc_gpll9
.clkr
,
3104 [GCC_GPU_GPLL0_CLK_SRC
] = &gcc_gpu_gpll0_clk_src
.clkr
,
3105 [GCC_GPU_GPLL0_DIV_CLK_SRC
] = &gcc_gpu_gpll0_div_clk_src
.clkr
,
3106 [GCC_GPU_MEMNOC_GFX_CLK
] = &gcc_gpu_memnoc_gfx_clk
.clkr
,
3107 [GCC_GPU_SNOC_DVM_GFX_CLK
] = &gcc_gpu_snoc_dvm_gfx_clk
.clkr
,
3108 [GCC_PCIE_0_AUX_CLK
] = &gcc_pcie_0_aux_clk
.clkr
,
3109 [GCC_PCIE_0_AUX_CLK_SRC
] = &gcc_pcie_0_aux_clk_src
.clkr
,
3110 [GCC_PCIE_0_CFG_AHB_CLK
] = &gcc_pcie_0_cfg_ahb_clk
.clkr
,
3111 [GCC_PCIE_0_MSTR_AXI_CLK
] = &gcc_pcie_0_mstr_axi_clk
.clkr
,
3112 [GCC_PCIE_0_PHY_RCHNG_CLK
] = &gcc_pcie_0_phy_rchng_clk
.clkr
,
3113 [GCC_PCIE_0_PHY_RCHNG_CLK_SRC
] = &gcc_pcie_0_phy_rchng_clk_src
.clkr
,
3114 [GCC_PCIE_0_PIPE_CLK
] = &gcc_pcie_0_pipe_clk
.clkr
,
3115 [GCC_PCIE_0_PIPE_CLK_SRC
] = &gcc_pcie_0_pipe_clk_src
.clkr
,
3116 [GCC_PCIE_0_SLV_AXI_CLK
] = &gcc_pcie_0_slv_axi_clk
.clkr
,
3117 [GCC_PCIE_0_SLV_Q2A_AXI_CLK
] = &gcc_pcie_0_slv_q2a_axi_clk
.clkr
,
3118 [GCC_PCIE_1_AUX_CLK
] = &gcc_pcie_1_aux_clk
.clkr
,
3119 [GCC_PCIE_1_AUX_CLK_SRC
] = &gcc_pcie_1_aux_clk_src
.clkr
,
3120 [GCC_PCIE_1_CFG_AHB_CLK
] = &gcc_pcie_1_cfg_ahb_clk
.clkr
,
3121 [GCC_PCIE_1_MSTR_AXI_CLK
] = &gcc_pcie_1_mstr_axi_clk
.clkr
,
3122 [GCC_PCIE_1_PHY_AUX_CLK
] = &gcc_pcie_1_phy_aux_clk
.clkr
,
3123 [GCC_PCIE_1_PHY_AUX_CLK_SRC
] = &gcc_pcie_1_phy_aux_clk_src
.clkr
,
3124 [GCC_PCIE_1_PHY_RCHNG_CLK
] = &gcc_pcie_1_phy_rchng_clk
.clkr
,
3125 [GCC_PCIE_1_PHY_RCHNG_CLK_SRC
] = &gcc_pcie_1_phy_rchng_clk_src
.clkr
,
3126 [GCC_PCIE_1_PIPE_CLK
] = &gcc_pcie_1_pipe_clk
.clkr
,
3127 [GCC_PCIE_1_PIPE_CLK_SRC
] = &gcc_pcie_1_pipe_clk_src
.clkr
,
3128 [GCC_PCIE_1_SLV_AXI_CLK
] = &gcc_pcie_1_slv_axi_clk
.clkr
,
3129 [GCC_PCIE_1_SLV_Q2A_AXI_CLK
] = &gcc_pcie_1_slv_q2a_axi_clk
.clkr
,
3130 [GCC_PDM2_CLK
] = &gcc_pdm2_clk
.clkr
,
3131 [GCC_PDM2_CLK_SRC
] = &gcc_pdm2_clk_src
.clkr
,
3132 [GCC_PDM_AHB_CLK
] = &gcc_pdm_ahb_clk
.clkr
,
3133 [GCC_PDM_XO4_CLK
] = &gcc_pdm_xo4_clk
.clkr
,
3134 [GCC_QMIP_CAMERA_NRT_AHB_CLK
] = &gcc_qmip_camera_nrt_ahb_clk
.clkr
,
3135 [GCC_QMIP_CAMERA_RT_AHB_CLK
] = &gcc_qmip_camera_rt_ahb_clk
.clkr
,
3136 [GCC_QMIP_DISP_AHB_CLK
] = &gcc_qmip_disp_ahb_clk
.clkr
,
3137 [GCC_QMIP_GPU_AHB_CLK
] = &gcc_qmip_gpu_ahb_clk
.clkr
,
3138 [GCC_QMIP_PCIE_AHB_CLK
] = &gcc_qmip_pcie_ahb_clk
.clkr
,
3139 [GCC_QMIP_VIDEO_CV_CPU_AHB_CLK
] = &gcc_qmip_video_cv_cpu_ahb_clk
.clkr
,
3140 [GCC_QMIP_VIDEO_CVP_AHB_CLK
] = &gcc_qmip_video_cvp_ahb_clk
.clkr
,
3141 [GCC_QMIP_VIDEO_V_CPU_AHB_CLK
] = &gcc_qmip_video_v_cpu_ahb_clk
.clkr
,
3142 [GCC_QMIP_VIDEO_VCODEC_AHB_CLK
] = &gcc_qmip_video_vcodec_ahb_clk
.clkr
,
3143 [GCC_QUPV3_I2C_CORE_CLK
] = &gcc_qupv3_i2c_core_clk
.clkr
,
3144 [GCC_QUPV3_I2C_S0_CLK
] = &gcc_qupv3_i2c_s0_clk
.clkr
,
3145 [GCC_QUPV3_I2C_S0_CLK_SRC
] = &gcc_qupv3_i2c_s0_clk_src
.clkr
,
3146 [GCC_QUPV3_I2C_S1_CLK
] = &gcc_qupv3_i2c_s1_clk
.clkr
,
3147 [GCC_QUPV3_I2C_S1_CLK_SRC
] = &gcc_qupv3_i2c_s1_clk_src
.clkr
,
3148 [GCC_QUPV3_I2C_S2_CLK
] = &gcc_qupv3_i2c_s2_clk
.clkr
,
3149 [GCC_QUPV3_I2C_S2_CLK_SRC
] = &gcc_qupv3_i2c_s2_clk_src
.clkr
,
3150 [GCC_QUPV3_I2C_S3_CLK
] = &gcc_qupv3_i2c_s3_clk
.clkr
,
3151 [GCC_QUPV3_I2C_S3_CLK_SRC
] = &gcc_qupv3_i2c_s3_clk_src
.clkr
,
3152 [GCC_QUPV3_I2C_S4_CLK
] = &gcc_qupv3_i2c_s4_clk
.clkr
,
3153 [GCC_QUPV3_I2C_S4_CLK_SRC
] = &gcc_qupv3_i2c_s4_clk_src
.clkr
,
3154 [GCC_QUPV3_I2C_S5_CLK
] = &gcc_qupv3_i2c_s5_clk
.clkr
,
3155 [GCC_QUPV3_I2C_S5_CLK_SRC
] = &gcc_qupv3_i2c_s5_clk_src
.clkr
,
3156 [GCC_QUPV3_I2C_S6_CLK
] = &gcc_qupv3_i2c_s6_clk
.clkr
,
3157 [GCC_QUPV3_I2C_S6_CLK_SRC
] = &gcc_qupv3_i2c_s6_clk_src
.clkr
,
3158 [GCC_QUPV3_I2C_S7_CLK
] = &gcc_qupv3_i2c_s7_clk
.clkr
,
3159 [GCC_QUPV3_I2C_S7_CLK_SRC
] = &gcc_qupv3_i2c_s7_clk_src
.clkr
,
3160 [GCC_QUPV3_I2C_S8_CLK
] = &gcc_qupv3_i2c_s8_clk
.clkr
,
3161 [GCC_QUPV3_I2C_S8_CLK_SRC
] = &gcc_qupv3_i2c_s8_clk_src
.clkr
,
3162 [GCC_QUPV3_I2C_S9_CLK
] = &gcc_qupv3_i2c_s9_clk
.clkr
,
3163 [GCC_QUPV3_I2C_S9_CLK_SRC
] = &gcc_qupv3_i2c_s9_clk_src
.clkr
,
3164 [GCC_QUPV3_I2C_S_AHB_CLK
] = &gcc_qupv3_i2c_s_ahb_clk
.clkr
,
3165 [GCC_QUPV3_WRAP1_CORE_2X_CLK
] = &gcc_qupv3_wrap1_core_2x_clk
.clkr
,
3166 [GCC_QUPV3_WRAP1_CORE_CLK
] = &gcc_qupv3_wrap1_core_clk
.clkr
,
3167 [GCC_QUPV3_WRAP1_S0_CLK
] = &gcc_qupv3_wrap1_s0_clk
.clkr
,
3168 [GCC_QUPV3_WRAP1_S0_CLK_SRC
] = &gcc_qupv3_wrap1_s0_clk_src
.clkr
,
3169 [GCC_QUPV3_WRAP1_S1_CLK
] = &gcc_qupv3_wrap1_s1_clk
.clkr
,
3170 [GCC_QUPV3_WRAP1_S1_CLK_SRC
] = &gcc_qupv3_wrap1_s1_clk_src
.clkr
,
3171 [GCC_QUPV3_WRAP1_S2_CLK
] = &gcc_qupv3_wrap1_s2_clk
.clkr
,
3172 [GCC_QUPV3_WRAP1_S2_CLK_SRC
] = &gcc_qupv3_wrap1_s2_clk_src
.clkr
,
3173 [GCC_QUPV3_WRAP1_S3_CLK
] = &gcc_qupv3_wrap1_s3_clk
.clkr
,
3174 [GCC_QUPV3_WRAP1_S3_CLK_SRC
] = &gcc_qupv3_wrap1_s3_clk_src
.clkr
,
3175 [GCC_QUPV3_WRAP1_S4_CLK
] = &gcc_qupv3_wrap1_s4_clk
.clkr
,
3176 [GCC_QUPV3_WRAP1_S4_CLK_SRC
] = &gcc_qupv3_wrap1_s4_clk_src
.clkr
,
3177 [GCC_QUPV3_WRAP1_S5_CLK
] = &gcc_qupv3_wrap1_s5_clk
.clkr
,
3178 [GCC_QUPV3_WRAP1_S5_CLK_SRC
] = &gcc_qupv3_wrap1_s5_clk_src
.clkr
,
3179 [GCC_QUPV3_WRAP1_S6_CLK
] = &gcc_qupv3_wrap1_s6_clk
.clkr
,
3180 [GCC_QUPV3_WRAP1_S6_CLK_SRC
] = &gcc_qupv3_wrap1_s6_clk_src
.clkr
,
3181 [GCC_QUPV3_WRAP1_S7_CLK
] = &gcc_qupv3_wrap1_s7_clk
.clkr
,
3182 [GCC_QUPV3_WRAP1_S7_CLK_SRC
] = &gcc_qupv3_wrap1_s7_clk_src
.clkr
,
3183 [GCC_QUPV3_WRAP2_CORE_2X_CLK
] = &gcc_qupv3_wrap2_core_2x_clk
.clkr
,
3184 [GCC_QUPV3_WRAP2_CORE_CLK
] = &gcc_qupv3_wrap2_core_clk
.clkr
,
3185 [GCC_QUPV3_WRAP2_S0_CLK
] = &gcc_qupv3_wrap2_s0_clk
.clkr
,
3186 [GCC_QUPV3_WRAP2_S0_CLK_SRC
] = &gcc_qupv3_wrap2_s0_clk_src
.clkr
,
3187 [GCC_QUPV3_WRAP2_S1_CLK
] = &gcc_qupv3_wrap2_s1_clk
.clkr
,
3188 [GCC_QUPV3_WRAP2_S1_CLK_SRC
] = &gcc_qupv3_wrap2_s1_clk_src
.clkr
,
3189 [GCC_QUPV3_WRAP2_S2_CLK
] = &gcc_qupv3_wrap2_s2_clk
.clkr
,
3190 [GCC_QUPV3_WRAP2_S2_CLK_SRC
] = &gcc_qupv3_wrap2_s2_clk_src
.clkr
,
3191 [GCC_QUPV3_WRAP2_S3_CLK
] = &gcc_qupv3_wrap2_s3_clk
.clkr
,
3192 [GCC_QUPV3_WRAP2_S3_CLK_SRC
] = &gcc_qupv3_wrap2_s3_clk_src
.clkr
,
3193 [GCC_QUPV3_WRAP2_S4_CLK
] = &gcc_qupv3_wrap2_s4_clk
.clkr
,
3194 [GCC_QUPV3_WRAP2_S4_CLK_SRC
] = &gcc_qupv3_wrap2_s4_clk_src
.clkr
,
3195 [GCC_QUPV3_WRAP2_S5_CLK
] = &gcc_qupv3_wrap2_s5_clk
.clkr
,
3196 [GCC_QUPV3_WRAP2_S5_CLK_SRC
] = &gcc_qupv3_wrap2_s5_clk_src
.clkr
,
3197 [GCC_QUPV3_WRAP2_S6_CLK
] = &gcc_qupv3_wrap2_s6_clk
.clkr
,
3198 [GCC_QUPV3_WRAP2_S6_CLK_SRC
] = &gcc_qupv3_wrap2_s6_clk_src
.clkr
,
3199 [GCC_QUPV3_WRAP2_S7_CLK
] = &gcc_qupv3_wrap2_s7_clk
.clkr
,
3200 [GCC_QUPV3_WRAP2_S7_CLK_SRC
] = &gcc_qupv3_wrap2_s7_clk_src
.clkr
,
3201 [GCC_QUPV3_WRAP_1_M_AHB_CLK
] = &gcc_qupv3_wrap_1_m_ahb_clk
.clkr
,
3202 [GCC_QUPV3_WRAP_1_S_AHB_CLK
] = &gcc_qupv3_wrap_1_s_ahb_clk
.clkr
,
3203 [GCC_QUPV3_WRAP_2_M_AHB_CLK
] = &gcc_qupv3_wrap_2_m_ahb_clk
.clkr
,
3204 [GCC_QUPV3_WRAP_2_S_AHB_CLK
] = &gcc_qupv3_wrap_2_s_ahb_clk
.clkr
,
3205 [GCC_SDCC2_AHB_CLK
] = &gcc_sdcc2_ahb_clk
.clkr
,
3206 [GCC_SDCC2_APPS_CLK
] = &gcc_sdcc2_apps_clk
.clkr
,
3207 [GCC_SDCC2_APPS_CLK_SRC
] = &gcc_sdcc2_apps_clk_src
.clkr
,
3208 [GCC_SDCC4_AHB_CLK
] = &gcc_sdcc4_ahb_clk
.clkr
,
3209 [GCC_SDCC4_APPS_CLK
] = &gcc_sdcc4_apps_clk
.clkr
,
3210 [GCC_SDCC4_APPS_CLK_SRC
] = &gcc_sdcc4_apps_clk_src
.clkr
,
3211 [GCC_UFS_PHY_AHB_CLK
] = &gcc_ufs_phy_ahb_clk
.clkr
,
3212 [GCC_UFS_PHY_AXI_CLK
] = &gcc_ufs_phy_axi_clk
.clkr
,
3213 [GCC_UFS_PHY_AXI_CLK_SRC
] = &gcc_ufs_phy_axi_clk_src
.clkr
,
3214 [GCC_UFS_PHY_AXI_HW_CTL_CLK
] = &gcc_ufs_phy_axi_hw_ctl_clk
.clkr
,
3215 [GCC_UFS_PHY_ICE_CORE_CLK
] = &gcc_ufs_phy_ice_core_clk
.clkr
,
3216 [GCC_UFS_PHY_ICE_CORE_CLK_SRC
] = &gcc_ufs_phy_ice_core_clk_src
.clkr
,
3217 [GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK
] = &gcc_ufs_phy_ice_core_hw_ctl_clk
.clkr
,
3218 [GCC_UFS_PHY_PHY_AUX_CLK
] = &gcc_ufs_phy_phy_aux_clk
.clkr
,
3219 [GCC_UFS_PHY_PHY_AUX_CLK_SRC
] = &gcc_ufs_phy_phy_aux_clk_src
.clkr
,
3220 [GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK
] = &gcc_ufs_phy_phy_aux_hw_ctl_clk
.clkr
,
3221 [GCC_UFS_PHY_RX_SYMBOL_0_CLK
] = &gcc_ufs_phy_rx_symbol_0_clk
.clkr
,
3222 [GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC
] = &gcc_ufs_phy_rx_symbol_0_clk_src
.clkr
,
3223 [GCC_UFS_PHY_RX_SYMBOL_1_CLK
] = &gcc_ufs_phy_rx_symbol_1_clk
.clkr
,
3224 [GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC
] = &gcc_ufs_phy_rx_symbol_1_clk_src
.clkr
,
3225 [GCC_UFS_PHY_TX_SYMBOL_0_CLK
] = &gcc_ufs_phy_tx_symbol_0_clk
.clkr
,
3226 [GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC
] = &gcc_ufs_phy_tx_symbol_0_clk_src
.clkr
,
3227 [GCC_UFS_PHY_UNIPRO_CORE_CLK
] = &gcc_ufs_phy_unipro_core_clk
.clkr
,
3228 [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC
] = &gcc_ufs_phy_unipro_core_clk_src
.clkr
,
3229 [GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK
] = &gcc_ufs_phy_unipro_core_hw_ctl_clk
.clkr
,
3230 [GCC_USB30_PRIM_MASTER_CLK
] = &gcc_usb30_prim_master_clk
.clkr
,
3231 [GCC_USB30_PRIM_MASTER_CLK_SRC
] = &gcc_usb30_prim_master_clk_src
.clkr
,
3232 [GCC_USB30_PRIM_MOCK_UTMI_CLK
] = &gcc_usb30_prim_mock_utmi_clk
.clkr
,
3233 [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC
] = &gcc_usb30_prim_mock_utmi_clk_src
.clkr
,
3234 [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC
] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src
.clkr
,
3235 [GCC_USB30_PRIM_SLEEP_CLK
] = &gcc_usb30_prim_sleep_clk
.clkr
,
3236 [GCC_USB3_PRIM_PHY_AUX_CLK
] = &gcc_usb3_prim_phy_aux_clk
.clkr
,
3237 [GCC_USB3_PRIM_PHY_AUX_CLK_SRC
] = &gcc_usb3_prim_phy_aux_clk_src
.clkr
,
3238 [GCC_USB3_PRIM_PHY_COM_AUX_CLK
] = &gcc_usb3_prim_phy_com_aux_clk
.clkr
,
3239 [GCC_USB3_PRIM_PHY_PIPE_CLK
] = &gcc_usb3_prim_phy_pipe_clk
.clkr
,
3240 [GCC_USB3_PRIM_PHY_PIPE_CLK_SRC
] = &gcc_usb3_prim_phy_pipe_clk_src
.clkr
,
3241 [GCC_VIDEO_AXI0_CLK
] = &gcc_video_axi0_clk
.clkr
,
3242 [GCC_VIDEO_AXI1_CLK
] = &gcc_video_axi1_clk
.clkr
,
3245 static const struct qcom_reset_map gcc_sm8550_resets
[] = {
3246 [GCC_CAMERA_BCR
] = { 0x26000 },
3247 [GCC_DISPLAY_BCR
] = { 0x27000 },
3248 [GCC_GPU_BCR
] = { 0x71000 },
3249 [GCC_PCIE_0_BCR
] = { 0x6b000 },
3250 [GCC_PCIE_0_LINK_DOWN_BCR
] = { 0x6c014 },
3251 [GCC_PCIE_0_NOCSR_COM_PHY_BCR
] = { 0x6c020 },
3252 [GCC_PCIE_0_PHY_BCR
] = { 0x6c01c },
3253 [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR
] = { 0x6c028 },
3254 [GCC_PCIE_1_BCR
] = { 0x8d000 },
3255 [GCC_PCIE_1_LINK_DOWN_BCR
] = { 0x8e014 },
3256 [GCC_PCIE_1_NOCSR_COM_PHY_BCR
] = { 0x8e020 },
3257 [GCC_PCIE_1_PHY_BCR
] = { 0x8e01c },
3258 [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR
] = { 0x8e024 },
3259 [GCC_PCIE_PHY_BCR
] = { 0x6f000 },
3260 [GCC_PCIE_PHY_CFG_AHB_BCR
] = { 0x6f00c },
3261 [GCC_PCIE_PHY_COM_BCR
] = { 0x6f010 },
3262 [GCC_PDM_BCR
] = { 0x33000 },
3263 [GCC_QUPV3_WRAPPER_1_BCR
] = { 0x18000 },
3264 [GCC_QUPV3_WRAPPER_2_BCR
] = { 0x1e000 },
3265 [GCC_QUPV3_WRAPPER_I2C_BCR
] = { 0x17000 },
3266 [GCC_QUSB2PHY_PRIM_BCR
] = { 0x12000 },
3267 [GCC_QUSB2PHY_SEC_BCR
] = { 0x12004 },
3268 [GCC_SDCC2_BCR
] = { 0x14000 },
3269 [GCC_SDCC4_BCR
] = { 0x16000 },
3270 [GCC_UFS_PHY_BCR
] = { 0x77000 },
3271 [GCC_USB30_PRIM_BCR
] = { 0x39000 },
3272 [GCC_USB3_DP_PHY_PRIM_BCR
] = { 0x50008 },
3273 [GCC_USB3_DP_PHY_SEC_BCR
] = { 0x50014 },
3274 [GCC_USB3_PHY_PRIM_BCR
] = { 0x50000 },
3275 [GCC_USB3_PHY_SEC_BCR
] = { 0x5000c },
3276 [GCC_USB3PHY_PHY_PRIM_BCR
] = { 0x50004 },
3277 [GCC_USB3PHY_PHY_SEC_BCR
] = { 0x50010 },
3278 [GCC_USB_PHY_CFG_AHB2PHY_BCR
] = { 0x6a000 },
3279 [GCC_VIDEO_AXI0_CLK_ARES
] = { .reg
= 0x32018, .bit
= 2, .udelay
= 1000 },
3280 [GCC_VIDEO_AXI1_CLK_ARES
] = { .reg
= 0x32024, .bit
= 2, .udelay
= 1000 },
3281 [GCC_VIDEO_BCR
] = { 0x32000 },
3284 static const struct clk_rcg_dfs_data gcc_dfs_clocks
[] = {
3285 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src
),
3286 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src
),
3287 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src
),
3288 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src
),
3289 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src
),
3290 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src
),
3291 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src
),
3292 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src
),
3293 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src
),
3294 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src
),
3295 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src
),
3296 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src
),
3297 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src
),
3298 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src
),
3299 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s6_clk_src
),
3300 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s7_clk_src
),
3303 static struct gdsc
*gcc_sm8550_gdscs
[] = {
3304 [PCIE_0_GDSC
] = &pcie_0_gdsc
,
3305 [PCIE_0_PHY_GDSC
] = &pcie_0_phy_gdsc
,
3306 [PCIE_1_GDSC
] = &pcie_1_gdsc
,
3307 [PCIE_1_PHY_GDSC
] = &pcie_1_phy_gdsc
,
3308 [UFS_PHY_GDSC
] = &ufs_phy_gdsc
,
3309 [UFS_MEM_PHY_GDSC
] = &ufs_mem_phy_gdsc
,
3310 [USB30_PRIM_GDSC
] = &usb30_prim_gdsc
,
3311 [USB3_PHY_GDSC
] = &usb3_phy_gdsc
,
3314 static const struct regmap_config gcc_sm8550_regmap_config
= {
3318 .max_register
= 0x1f41f0,
3322 static const struct qcom_cc_desc gcc_sm8550_desc
= {
3323 .config
= &gcc_sm8550_regmap_config
,
3324 .clks
= gcc_sm8550_clocks
,
3325 .num_clks
= ARRAY_SIZE(gcc_sm8550_clocks
),
3326 .resets
= gcc_sm8550_resets
,
3327 .num_resets
= ARRAY_SIZE(gcc_sm8550_resets
),
3328 .gdscs
= gcc_sm8550_gdscs
,
3329 .num_gdscs
= ARRAY_SIZE(gcc_sm8550_gdscs
),
3332 static const struct of_device_id gcc_sm8550_match_table
[] = {
3333 { .compatible
= "qcom,sm8550-gcc" },
3336 MODULE_DEVICE_TABLE(of
, gcc_sm8550_match_table
);
3338 static int gcc_sm8550_probe(struct platform_device
*pdev
)
3340 struct regmap
*regmap
;
3343 regmap
= qcom_cc_map(pdev
, &gcc_sm8550_desc
);
3345 return PTR_ERR(regmap
);
3347 ret
= qcom_cc_register_rcg_dfs(regmap
, gcc_dfs_clocks
,
3348 ARRAY_SIZE(gcc_dfs_clocks
));
3352 /* FORCE_MEM_CORE_ON for ufs phy ice core clocks */
3353 regmap_update_bits(regmap
, gcc_ufs_phy_ice_core_clk
.halt_reg
, BIT(14), BIT(14));
3355 /* Keep some clocks always-on */
3356 qcom_branch_set_clk_en(regmap
, 0x26004); /* GCC_CAMERA_AHB_CLK */
3357 qcom_branch_set_clk_en(regmap
, 0x26028); /* GCC_CAMERA_XO_CLK */
3358 qcom_branch_set_clk_en(regmap
, 0x27004); /* GCC_DISP_AHB_CLK */
3359 qcom_branch_set_clk_en(regmap
, 0x27018); /* GCC_DISP_XO_CLK */
3360 qcom_branch_set_clk_en(regmap
, 0x71004); /* GCC_GPU_CFG_AHB_CLK */
3361 qcom_branch_set_clk_en(regmap
, 0x32004); /* GCC_VIDEO_AHB_CLK */
3362 qcom_branch_set_clk_en(regmap
, 0x32030); /* GCC_VIDEO_XO_CLK */
3364 /* Clear GDSC_SLEEP_ENA_VOTE to stop votes being auto-removed in sleep. */
3365 regmap_write(regmap
, 0x52024, 0x0);
3367 return qcom_cc_really_probe(&pdev
->dev
, &gcc_sm8550_desc
, regmap
);
3370 static struct platform_driver gcc_sm8550_driver
= {
3371 .probe
= gcc_sm8550_probe
,
3373 .name
= "gcc-sm8550",
3374 .of_match_table
= gcc_sm8550_match_table
,
3378 static int __init
gcc_sm8550_init(void)
3380 return platform_driver_register(&gcc_sm8550_driver
);
3382 subsys_initcall(gcc_sm8550_init
);
3384 static void __exit
gcc_sm8550_exit(void)
3386 platform_driver_unregister(&gcc_sm8550_driver
);
3388 module_exit(gcc_sm8550_exit
);
3390 MODULE_DESCRIPTION("QTI GCC SM8550 Driver");
3391 MODULE_LICENSE("GPL");