1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2018, The Linux Foundation. All rights reserved.
6 #include <linux/kernel.h>
7 #include <linux/bitops.h>
9 #include <linux/platform_device.h>
10 #include <linux/module.h>
12 #include <linux/of_device.h>
13 #include <linux/clk-provider.h>
14 #include <linux/regmap.h>
15 #include <linux/reset-controller.h>
17 #include <dt-bindings/clock/qcom,gcc-sdm845.h>
20 #include "clk-regmap.h"
23 #include "clk-branch.h"
24 #include "clk-alpha-pll.h"
31 P_CORE_BI_PLL_TEST_SE,
38 static const struct parent_map gcc_parent_map_0[] = {
40 { P_GPLL0_OUT_MAIN, 1 },
41 { P_GPLL0_OUT_EVEN, 6 },
42 { P_CORE_BI_PLL_TEST_SE, 7 },
45 static const char * const gcc_parent_names_0[] = {
49 "core_bi_pll_test_se",
52 static const struct parent_map gcc_parent_map_1[] = {
54 { P_GPLL0_OUT_MAIN, 1 },
56 { P_GPLL0_OUT_EVEN, 6 },
57 { P_CORE_BI_PLL_TEST_SE, 7 },
60 static const char * const gcc_parent_names_1[] = {
65 "core_bi_pll_test_se",
68 static const struct parent_map gcc_parent_map_2[] = {
71 { P_CORE_BI_PLL_TEST_SE, 7 },
74 static const char * const gcc_parent_names_2[] = {
77 "core_bi_pll_test_se",
80 static const struct parent_map gcc_parent_map_3[] = {
82 { P_GPLL0_OUT_MAIN, 1 },
83 { P_CORE_BI_PLL_TEST_SE, 7 },
86 static const char * const gcc_parent_names_3[] = {
89 "core_bi_pll_test_se",
92 static const struct parent_map gcc_parent_map_4[] = {
94 { P_CORE_BI_PLL_TEST_SE, 7 },
97 static const char * const gcc_parent_names_4[] = {
99 "core_bi_pll_test_se",
102 static const struct parent_map gcc_parent_map_5[] = {
104 { P_GPLL0_OUT_MAIN, 1 },
105 { P_GPLL4_OUT_MAIN, 5 },
106 { P_GPLL0_OUT_EVEN, 6 },
107 { P_CORE_BI_PLL_TEST_SE, 7 },
110 static const char * const gcc_parent_names_5[] = {
115 "core_bi_pll_test_se",
118 static const struct parent_map gcc_parent_map_6[] = {
120 { P_GPLL0_OUT_MAIN, 1 },
121 { P_AUD_REF_CLK, 2 },
122 { P_GPLL0_OUT_EVEN, 6 },
123 { P_CORE_BI_PLL_TEST_SE, 7 },
126 static const char * const gcc_parent_names_6[] = {
131 "core_bi_pll_test_se",
134 static const char * const gcc_parent_names_7[] = {
138 "core_bi_pll_test_se",
141 static const char * const gcc_parent_names_8[] = {
144 "core_bi_pll_test_se",
147 static const struct parent_map gcc_parent_map_10[] = {
149 { P_GPLL0_OUT_MAIN, 1 },
150 { P_GPLL4_OUT_MAIN, 5 },
151 { P_GPLL0_OUT_EVEN, 6 },
152 { P_CORE_BI_PLL_TEST_SE, 7 },
155 static const char * const gcc_parent_names_10[] = {
160 "core_bi_pll_test_se",
163 static struct clk_alpha_pll gpll0 = {
165 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
167 .enable_reg = 0x52000,
168 .enable_mask = BIT(0),
169 .hw.init = &(struct clk_init_data){
171 .parent_names = (const char *[]){ "bi_tcxo" },
173 .ops = &clk_alpha_pll_fixed_fabia_ops,
178 static struct clk_alpha_pll gpll4 = {
180 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
182 .enable_reg = 0x52000,
183 .enable_mask = BIT(4),
184 .hw.init = &(struct clk_init_data){
186 .parent_names = (const char *[]){ "bi_tcxo" },
188 .ops = &clk_alpha_pll_fixed_fabia_ops,
193 static const struct clk_div_table post_div_table_fabia_even[] = {
201 static struct clk_alpha_pll_postdiv gpll0_out_even = {
204 .post_div_table = post_div_table_fabia_even,
205 .num_post_div = ARRAY_SIZE(post_div_table_fabia_even),
207 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
208 .clkr.hw.init = &(struct clk_init_data){
209 .name = "gpll0_out_even",
210 .parent_names = (const char *[]){ "gpll0" },
212 .ops = &clk_alpha_pll_postdiv_fabia_ops,
216 static const struct freq_tbl ftbl_gcc_cpuss_ahb_clk_src[] = {
217 F(19200000, P_BI_TCXO, 1, 0, 0),
221 static struct clk_rcg2 gcc_cpuss_ahb_clk_src = {
225 .parent_map = gcc_parent_map_0,
226 .freq_tbl = ftbl_gcc_cpuss_ahb_clk_src,
227 .clkr.hw.init = &(struct clk_init_data){
228 .name = "gcc_cpuss_ahb_clk_src",
229 .parent_names = gcc_parent_names_7,
231 .ops = &clk_rcg2_ops,
235 static const struct freq_tbl ftbl_gcc_cpuss_rbcpr_clk_src[] = {
236 F(19200000, P_BI_TCXO, 1, 0, 0),
240 static struct clk_rcg2 gcc_cpuss_rbcpr_clk_src = {
244 .parent_map = gcc_parent_map_3,
245 .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,
246 .clkr.hw.init = &(struct clk_init_data){
247 .name = "gcc_cpuss_rbcpr_clk_src",
248 .parent_names = gcc_parent_names_8,
250 .ops = &clk_rcg2_ops,
254 static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
255 F(19200000, P_BI_TCXO, 1, 0, 0),
256 F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
257 F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
258 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
259 F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
263 static struct clk_rcg2 gcc_gp1_clk_src = {
267 .parent_map = gcc_parent_map_1,
268 .freq_tbl = ftbl_gcc_gp1_clk_src,
269 .clkr.hw.init = &(struct clk_init_data){
270 .name = "gcc_gp1_clk_src",
271 .parent_names = gcc_parent_names_1,
273 .ops = &clk_rcg2_ops,
277 static struct clk_rcg2 gcc_gp2_clk_src = {
281 .parent_map = gcc_parent_map_1,
282 .freq_tbl = ftbl_gcc_gp1_clk_src,
283 .clkr.hw.init = &(struct clk_init_data){
284 .name = "gcc_gp2_clk_src",
285 .parent_names = gcc_parent_names_1,
287 .ops = &clk_rcg2_ops,
291 static struct clk_rcg2 gcc_gp3_clk_src = {
295 .parent_map = gcc_parent_map_1,
296 .freq_tbl = ftbl_gcc_gp1_clk_src,
297 .clkr.hw.init = &(struct clk_init_data){
298 .name = "gcc_gp3_clk_src",
299 .parent_names = gcc_parent_names_1,
301 .ops = &clk_rcg2_ops,
305 static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
306 F(9600000, P_BI_TCXO, 2, 0, 0),
307 F(19200000, P_BI_TCXO, 1, 0, 0),
311 static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
315 .parent_map = gcc_parent_map_2,
316 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
317 .clkr.hw.init = &(struct clk_init_data){
318 .name = "gcc_pcie_0_aux_clk_src",
319 .parent_names = gcc_parent_names_2,
321 .ops = &clk_rcg2_ops,
325 static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
329 .parent_map = gcc_parent_map_2,
330 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
331 .clkr.hw.init = &(struct clk_init_data){
332 .name = "gcc_pcie_1_aux_clk_src",
333 .parent_names = gcc_parent_names_2,
335 .ops = &clk_rcg2_ops,
339 static const struct freq_tbl ftbl_gcc_pcie_phy_refgen_clk_src[] = {
340 F(19200000, P_BI_TCXO, 1, 0, 0),
341 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
345 static struct clk_rcg2 gcc_pcie_phy_refgen_clk_src = {
349 .parent_map = gcc_parent_map_0,
350 .freq_tbl = ftbl_gcc_pcie_phy_refgen_clk_src,
351 .clkr.hw.init = &(struct clk_init_data){
352 .name = "gcc_pcie_phy_refgen_clk_src",
353 .parent_names = gcc_parent_names_0,
355 .ops = &clk_rcg2_ops,
359 static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
360 F(9600000, P_BI_TCXO, 2, 0, 0),
361 F(19200000, P_BI_TCXO, 1, 0, 0),
362 F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
366 static struct clk_rcg2 gcc_pdm2_clk_src = {
370 .parent_map = gcc_parent_map_0,
371 .freq_tbl = ftbl_gcc_pdm2_clk_src,
372 .clkr.hw.init = &(struct clk_init_data){
373 .name = "gcc_pdm2_clk_src",
374 .parent_names = gcc_parent_names_0,
376 .ops = &clk_rcg2_ops,
380 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
381 F(7372800, P_GPLL0_OUT_EVEN, 1, 384, 15625),
382 F(14745600, P_GPLL0_OUT_EVEN, 1, 768, 15625),
383 F(19200000, P_BI_TCXO, 1, 0, 0),
384 F(29491200, P_GPLL0_OUT_EVEN, 1, 1536, 15625),
385 F(32000000, P_GPLL0_OUT_EVEN, 1, 8, 75),
386 F(48000000, P_GPLL0_OUT_EVEN, 1, 4, 25),
387 F(64000000, P_GPLL0_OUT_EVEN, 1, 16, 75),
388 F(80000000, P_GPLL0_OUT_EVEN, 1, 4, 15),
389 F(96000000, P_GPLL0_OUT_EVEN, 1, 8, 25),
390 F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0),
391 F(102400000, P_GPLL0_OUT_EVEN, 1, 128, 375),
392 F(112000000, P_GPLL0_OUT_EVEN, 1, 28, 75),
393 F(117964800, P_GPLL0_OUT_EVEN, 1, 6144, 15625),
394 F(120000000, P_GPLL0_OUT_EVEN, 2.5, 0, 0),
395 F(128000000, P_GPLL0_OUT_MAIN, 1, 16, 75),
399 static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
403 .parent_map = gcc_parent_map_0,
404 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
405 .clkr.hw.init = &(struct clk_init_data){
406 .name = "gcc_qupv3_wrap0_s0_clk_src",
407 .parent_names = gcc_parent_names_0,
409 .ops = &clk_rcg2_shared_ops,
413 static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
417 .parent_map = gcc_parent_map_0,
418 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
419 .clkr.hw.init = &(struct clk_init_data){
420 .name = "gcc_qupv3_wrap0_s1_clk_src",
421 .parent_names = gcc_parent_names_0,
423 .ops = &clk_rcg2_shared_ops,
427 static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
431 .parent_map = gcc_parent_map_0,
432 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
433 .clkr.hw.init = &(struct clk_init_data){
434 .name = "gcc_qupv3_wrap0_s2_clk_src",
435 .parent_names = gcc_parent_names_0,
437 .ops = &clk_rcg2_shared_ops,
441 static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
445 .parent_map = gcc_parent_map_0,
446 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
447 .clkr.hw.init = &(struct clk_init_data){
448 .name = "gcc_qupv3_wrap0_s3_clk_src",
449 .parent_names = gcc_parent_names_0,
451 .ops = &clk_rcg2_shared_ops,
455 static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
459 .parent_map = gcc_parent_map_0,
460 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
461 .clkr.hw.init = &(struct clk_init_data){
462 .name = "gcc_qupv3_wrap0_s4_clk_src",
463 .parent_names = gcc_parent_names_0,
465 .ops = &clk_rcg2_shared_ops,
469 static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
473 .parent_map = gcc_parent_map_0,
474 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
475 .clkr.hw.init = &(struct clk_init_data){
476 .name = "gcc_qupv3_wrap0_s5_clk_src",
477 .parent_names = gcc_parent_names_0,
479 .ops = &clk_rcg2_shared_ops,
483 static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
487 .parent_map = gcc_parent_map_0,
488 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
489 .clkr.hw.init = &(struct clk_init_data){
490 .name = "gcc_qupv3_wrap0_s6_clk_src",
491 .parent_names = gcc_parent_names_0,
493 .ops = &clk_rcg2_shared_ops,
497 static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
501 .parent_map = gcc_parent_map_0,
502 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
503 .clkr.hw.init = &(struct clk_init_data){
504 .name = "gcc_qupv3_wrap0_s7_clk_src",
505 .parent_names = gcc_parent_names_0,
507 .ops = &clk_rcg2_shared_ops,
511 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
515 .parent_map = gcc_parent_map_0,
516 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
517 .clkr.hw.init = &(struct clk_init_data){
518 .name = "gcc_qupv3_wrap1_s0_clk_src",
519 .parent_names = gcc_parent_names_0,
521 .ops = &clk_rcg2_shared_ops,
525 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
529 .parent_map = gcc_parent_map_0,
530 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
531 .clkr.hw.init = &(struct clk_init_data){
532 .name = "gcc_qupv3_wrap1_s1_clk_src",
533 .parent_names = gcc_parent_names_0,
535 .ops = &clk_rcg2_shared_ops,
539 static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
543 .parent_map = gcc_parent_map_0,
544 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
545 .clkr.hw.init = &(struct clk_init_data){
546 .name = "gcc_qupv3_wrap1_s2_clk_src",
547 .parent_names = gcc_parent_names_0,
549 .ops = &clk_rcg2_shared_ops,
553 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
557 .parent_map = gcc_parent_map_0,
558 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
559 .clkr.hw.init = &(struct clk_init_data){
560 .name = "gcc_qupv3_wrap1_s3_clk_src",
561 .parent_names = gcc_parent_names_0,
563 .ops = &clk_rcg2_shared_ops,
567 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
571 .parent_map = gcc_parent_map_0,
572 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
573 .clkr.hw.init = &(struct clk_init_data){
574 .name = "gcc_qupv3_wrap1_s4_clk_src",
575 .parent_names = gcc_parent_names_0,
577 .ops = &clk_rcg2_shared_ops,
581 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
585 .parent_map = gcc_parent_map_0,
586 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
587 .clkr.hw.init = &(struct clk_init_data){
588 .name = "gcc_qupv3_wrap1_s5_clk_src",
589 .parent_names = gcc_parent_names_0,
591 .ops = &clk_rcg2_shared_ops,
595 static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {
599 .parent_map = gcc_parent_map_0,
600 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
601 .clkr.hw.init = &(struct clk_init_data){
602 .name = "gcc_qupv3_wrap1_s6_clk_src",
603 .parent_names = gcc_parent_names_0,
605 .ops = &clk_rcg2_shared_ops,
609 static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = {
613 .parent_map = gcc_parent_map_0,
614 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
615 .clkr.hw.init = &(struct clk_init_data){
616 .name = "gcc_qupv3_wrap1_s7_clk_src",
617 .parent_names = gcc_parent_names_0,
619 .ops = &clk_rcg2_shared_ops,
623 static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
624 F(400000, P_BI_TCXO, 12, 1, 4),
625 F(9600000, P_BI_TCXO, 2, 0, 0),
626 F(19200000, P_BI_TCXO, 1, 0, 0),
627 F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
628 F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
629 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
630 F(201500000, P_GPLL4_OUT_MAIN, 4, 0, 0),
634 static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
638 .parent_map = gcc_parent_map_10,
639 .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
640 .clkr.hw.init = &(struct clk_init_data){
641 .name = "gcc_sdcc2_apps_clk_src",
642 .parent_names = gcc_parent_names_10,
644 .ops = &clk_rcg2_ops,
648 static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
649 F(400000, P_BI_TCXO, 12, 1, 4),
650 F(9600000, P_BI_TCXO, 2, 0, 0),
651 F(19200000, P_BI_TCXO, 1, 0, 0),
652 F(25000000, P_GPLL0_OUT_MAIN, 12, 1, 2),
653 F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
654 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
658 static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
662 .parent_map = gcc_parent_map_0,
663 .freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
664 .clkr.hw.init = &(struct clk_init_data){
665 .name = "gcc_sdcc4_apps_clk_src",
666 .parent_names = gcc_parent_names_0,
668 .ops = &clk_rcg2_ops,
672 static const struct freq_tbl ftbl_gcc_tsif_ref_clk_src[] = {
673 F(105495, P_BI_TCXO, 2, 1, 91),
677 static struct clk_rcg2 gcc_tsif_ref_clk_src = {
681 .parent_map = gcc_parent_map_6,
682 .freq_tbl = ftbl_gcc_tsif_ref_clk_src,
683 .clkr.hw.init = &(struct clk_init_data){
684 .name = "gcc_tsif_ref_clk_src",
685 .parent_names = gcc_parent_names_6,
687 .ops = &clk_rcg2_ops,
691 static const struct freq_tbl ftbl_gcc_ufs_card_axi_clk_src[] = {
692 F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
693 F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
694 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
695 F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
696 F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
700 static struct clk_rcg2 gcc_ufs_card_axi_clk_src = {
704 .parent_map = gcc_parent_map_0,
705 .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,
706 .clkr.hw.init = &(struct clk_init_data){
707 .name = "gcc_ufs_card_axi_clk_src",
708 .parent_names = gcc_parent_names_0,
710 .ops = &clk_rcg2_shared_ops,
714 static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src[] = {
715 F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
716 F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
717 F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
718 F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
722 static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = {
726 .parent_map = gcc_parent_map_0,
727 .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
728 .clkr.hw.init = &(struct clk_init_data){
729 .name = "gcc_ufs_card_ice_core_clk_src",
730 .parent_names = gcc_parent_names_0,
732 .ops = &clk_rcg2_shared_ops,
736 static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = {
740 .parent_map = gcc_parent_map_4,
741 .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,
742 .clkr.hw.init = &(struct clk_init_data){
743 .name = "gcc_ufs_card_phy_aux_clk_src",
744 .parent_names = gcc_parent_names_4,
746 .ops = &clk_rcg2_ops,
750 static const struct freq_tbl ftbl_gcc_ufs_card_unipro_core_clk_src[] = {
751 F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
752 F(75000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
753 F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
757 static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = {
761 .parent_map = gcc_parent_map_0,
762 .freq_tbl = ftbl_gcc_ufs_card_unipro_core_clk_src,
763 .clkr.hw.init = &(struct clk_init_data){
764 .name = "gcc_ufs_card_unipro_core_clk_src",
765 .parent_names = gcc_parent_names_0,
767 .ops = &clk_rcg2_shared_ops,
771 static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
772 F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
773 F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
774 F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
775 F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
776 F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
780 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
784 .parent_map = gcc_parent_map_0,
785 .freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
786 .clkr.hw.init = &(struct clk_init_data){
787 .name = "gcc_ufs_phy_axi_clk_src",
788 .parent_names = gcc_parent_names_0,
790 .ops = &clk_rcg2_shared_ops,
794 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
798 .parent_map = gcc_parent_map_0,
799 .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
800 .clkr.hw.init = &(struct clk_init_data){
801 .name = "gcc_ufs_phy_ice_core_clk_src",
802 .parent_names = gcc_parent_names_0,
804 .ops = &clk_rcg2_shared_ops,
808 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
812 .parent_map = gcc_parent_map_4,
813 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
814 .clkr.hw.init = &(struct clk_init_data){
815 .name = "gcc_ufs_phy_phy_aux_clk_src",
816 .parent_names = gcc_parent_names_4,
818 .ops = &clk_rcg2_shared_ops,
822 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
826 .parent_map = gcc_parent_map_0,
827 .freq_tbl = ftbl_gcc_ufs_card_unipro_core_clk_src,
828 .clkr.hw.init = &(struct clk_init_data){
829 .name = "gcc_ufs_phy_unipro_core_clk_src",
830 .parent_names = gcc_parent_names_0,
832 .ops = &clk_rcg2_shared_ops,
836 static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
837 F(33333333, P_GPLL0_OUT_EVEN, 9, 0, 0),
838 F(66666667, P_GPLL0_OUT_EVEN, 4.5, 0, 0),
839 F(133333333, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
840 F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
841 F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
845 static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
849 .parent_map = gcc_parent_map_0,
850 .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
851 .clkr.hw.init = &(struct clk_init_data){
852 .name = "gcc_usb30_prim_master_clk_src",
853 .parent_names = gcc_parent_names_0,
855 .ops = &clk_rcg2_shared_ops,
859 static const struct freq_tbl ftbl_gcc_usb30_prim_mock_utmi_clk_src[] = {
860 F(19200000, P_BI_TCXO, 1, 0, 0),
861 F(20000000, P_GPLL0_OUT_EVEN, 15, 0, 0),
862 F(40000000, P_GPLL0_OUT_EVEN, 7.5, 0, 0),
863 F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
867 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
871 .parent_map = gcc_parent_map_0,
872 .freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,
873 .clkr.hw.init = &(struct clk_init_data){
874 .name = "gcc_usb30_prim_mock_utmi_clk_src",
875 .parent_names = gcc_parent_names_0,
877 .ops = &clk_rcg2_shared_ops,
881 static struct clk_rcg2 gcc_usb30_sec_master_clk_src = {
885 .parent_map = gcc_parent_map_0,
886 .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
887 .clkr.hw.init = &(struct clk_init_data){
888 .name = "gcc_usb30_sec_master_clk_src",
889 .parent_names = gcc_parent_names_0,
891 .ops = &clk_rcg2_ops,
895 static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = {
899 .parent_map = gcc_parent_map_0,
900 .freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,
901 .clkr.hw.init = &(struct clk_init_data){
902 .name = "gcc_usb30_sec_mock_utmi_clk_src",
903 .parent_names = gcc_parent_names_0,
905 .ops = &clk_rcg2_ops,
909 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
913 .parent_map = gcc_parent_map_2,
914 .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,
915 .clkr.hw.init = &(struct clk_init_data){
916 .name = "gcc_usb3_prim_phy_aux_clk_src",
917 .parent_names = gcc_parent_names_2,
919 .ops = &clk_rcg2_ops,
923 static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = {
927 .parent_map = gcc_parent_map_2,
928 .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,
929 .clkr.hw.init = &(struct clk_init_data){
930 .name = "gcc_usb3_sec_phy_aux_clk_src",
931 .parent_names = gcc_parent_names_2,
933 .ops = &clk_rcg2_shared_ops,
937 static struct clk_rcg2 gcc_vs_ctrl_clk_src = {
941 .parent_map = gcc_parent_map_3,
942 .freq_tbl = ftbl_gcc_cpuss_rbcpr_clk_src,
943 .clkr.hw.init = &(struct clk_init_data){
944 .name = "gcc_vs_ctrl_clk_src",
945 .parent_names = gcc_parent_names_3,
947 .ops = &clk_rcg2_ops,
951 static const struct freq_tbl ftbl_gcc_vsensor_clk_src[] = {
952 F(19200000, P_BI_TCXO, 1, 0, 0),
953 F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
954 F(600000000, P_GPLL0_OUT_MAIN, 1, 0, 0),
958 static struct clk_rcg2 gcc_vsensor_clk_src = {
962 .parent_map = gcc_parent_map_3,
963 .freq_tbl = ftbl_gcc_vsensor_clk_src,
964 .clkr.hw.init = &(struct clk_init_data){
965 .name = "gcc_vsensor_clk_src",
966 .parent_names = gcc_parent_names_8,
968 .ops = &clk_rcg2_ops,
972 static struct clk_branch gcc_aggre_noc_pcie_tbu_clk = {
974 .halt_check = BRANCH_HALT,
976 .enable_reg = 0x90014,
977 .enable_mask = BIT(0),
978 .hw.init = &(struct clk_init_data){
979 .name = "gcc_aggre_noc_pcie_tbu_clk",
980 .ops = &clk_branch2_ops,
985 static struct clk_branch gcc_aggre_ufs_card_axi_clk = {
987 .halt_check = BRANCH_HALT,
991 .enable_reg = 0x82028,
992 .enable_mask = BIT(0),
993 .hw.init = &(struct clk_init_data){
994 .name = "gcc_aggre_ufs_card_axi_clk",
995 .parent_names = (const char *[]){
996 "gcc_ufs_card_axi_clk_src",
999 .flags = CLK_SET_RATE_PARENT,
1000 .ops = &clk_branch2_ops,
1005 static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
1006 .halt_reg = 0x82024,
1007 .halt_check = BRANCH_HALT,
1008 .hwcg_reg = 0x82024,
1011 .enable_reg = 0x82024,
1012 .enable_mask = BIT(0),
1013 .hw.init = &(struct clk_init_data){
1014 .name = "gcc_aggre_ufs_phy_axi_clk",
1015 .parent_names = (const char *[]){
1016 "gcc_ufs_phy_axi_clk_src",
1019 .flags = CLK_SET_RATE_PARENT,
1020 .ops = &clk_branch2_ops,
1025 static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
1026 .halt_reg = 0x8201c,
1027 .halt_check = BRANCH_HALT,
1029 .enable_reg = 0x8201c,
1030 .enable_mask = BIT(0),
1031 .hw.init = &(struct clk_init_data){
1032 .name = "gcc_aggre_usb3_prim_axi_clk",
1033 .parent_names = (const char *[]){
1034 "gcc_usb30_prim_master_clk_src",
1037 .flags = CLK_SET_RATE_PARENT,
1038 .ops = &clk_branch2_ops,
1043 static struct clk_branch gcc_aggre_usb3_sec_axi_clk = {
1044 .halt_reg = 0x82020,
1045 .halt_check = BRANCH_HALT,
1047 .enable_reg = 0x82020,
1048 .enable_mask = BIT(0),
1049 .hw.init = &(struct clk_init_data){
1050 .name = "gcc_aggre_usb3_sec_axi_clk",
1051 .parent_names = (const char *[]){
1052 "gcc_usb30_sec_master_clk_src",
1055 .flags = CLK_SET_RATE_PARENT,
1056 .ops = &clk_branch2_ops,
1061 static struct clk_branch gcc_apc_vs_clk = {
1062 .halt_reg = 0x7a050,
1063 .halt_check = BRANCH_HALT,
1065 .enable_reg = 0x7a050,
1066 .enable_mask = BIT(0),
1067 .hw.init = &(struct clk_init_data){
1068 .name = "gcc_apc_vs_clk",
1069 .parent_names = (const char *[]){
1070 "gcc_vsensor_clk_src",
1073 .flags = CLK_SET_RATE_PARENT,
1074 .ops = &clk_branch2_ops,
1079 static struct clk_branch gcc_boot_rom_ahb_clk = {
1080 .halt_reg = 0x38004,
1081 .halt_check = BRANCH_HALT_VOTED,
1082 .hwcg_reg = 0x38004,
1085 .enable_reg = 0x52004,
1086 .enable_mask = BIT(10),
1087 .hw.init = &(struct clk_init_data){
1088 .name = "gcc_boot_rom_ahb_clk",
1089 .ops = &clk_branch2_ops,
1094 static struct clk_branch gcc_camera_ahb_clk = {
1096 .halt_check = BRANCH_HALT,
1100 .enable_reg = 0xb008,
1101 .enable_mask = BIT(0),
1102 .hw.init = &(struct clk_init_data){
1103 .name = "gcc_camera_ahb_clk",
1104 .flags = CLK_IS_CRITICAL,
1105 .ops = &clk_branch2_ops,
1110 static struct clk_branch gcc_camera_axi_clk = {
1112 .halt_check = BRANCH_VOTED,
1114 .enable_reg = 0xb020,
1115 .enable_mask = BIT(0),
1116 .hw.init = &(struct clk_init_data){
1117 .name = "gcc_camera_axi_clk",
1118 .ops = &clk_branch2_ops,
1123 static struct clk_branch gcc_camera_xo_clk = {
1125 .halt_check = BRANCH_HALT,
1127 .enable_reg = 0xb02c,
1128 .enable_mask = BIT(0),
1129 .hw.init = &(struct clk_init_data){
1130 .name = "gcc_camera_xo_clk",
1131 .flags = CLK_IS_CRITICAL,
1132 .ops = &clk_branch2_ops,
1137 static struct clk_branch gcc_ce1_ahb_clk = {
1138 .halt_reg = 0x4100c,
1139 .halt_check = BRANCH_HALT_VOTED,
1140 .hwcg_reg = 0x4100c,
1143 .enable_reg = 0x52004,
1144 .enable_mask = BIT(3),
1145 .hw.init = &(struct clk_init_data){
1146 .name = "gcc_ce1_ahb_clk",
1147 .ops = &clk_branch2_ops,
1152 static struct clk_branch gcc_ce1_axi_clk = {
1153 .halt_reg = 0x41008,
1154 .halt_check = BRANCH_HALT_VOTED,
1156 .enable_reg = 0x52004,
1157 .enable_mask = BIT(4),
1158 .hw.init = &(struct clk_init_data){
1159 .name = "gcc_ce1_axi_clk",
1160 .ops = &clk_branch2_ops,
1165 static struct clk_branch gcc_ce1_clk = {
1166 .halt_reg = 0x41004,
1167 .halt_check = BRANCH_HALT_VOTED,
1169 .enable_reg = 0x52004,
1170 .enable_mask = BIT(5),
1171 .hw.init = &(struct clk_init_data){
1172 .name = "gcc_ce1_clk",
1173 .ops = &clk_branch2_ops,
1178 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
1180 .halt_check = BRANCH_HALT,
1182 .enable_reg = 0x502c,
1183 .enable_mask = BIT(0),
1184 .hw.init = &(struct clk_init_data){
1185 .name = "gcc_cfg_noc_usb3_prim_axi_clk",
1186 .parent_names = (const char *[]){
1187 "gcc_usb30_prim_master_clk_src",
1190 .flags = CLK_SET_RATE_PARENT,
1191 .ops = &clk_branch2_ops,
1196 static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = {
1198 .halt_check = BRANCH_HALT,
1200 .enable_reg = 0x5030,
1201 .enable_mask = BIT(0),
1202 .hw.init = &(struct clk_init_data){
1203 .name = "gcc_cfg_noc_usb3_sec_axi_clk",
1204 .parent_names = (const char *[]){
1205 "gcc_usb30_sec_master_clk_src",
1208 .flags = CLK_SET_RATE_PARENT,
1209 .ops = &clk_branch2_ops,
1214 static struct clk_branch gcc_cpuss_ahb_clk = {
1215 .halt_reg = 0x48000,
1216 .halt_check = BRANCH_HALT_VOTED,
1218 .enable_reg = 0x52004,
1219 .enable_mask = BIT(21),
1220 .hw.init = &(struct clk_init_data){
1221 .name = "gcc_cpuss_ahb_clk",
1222 .parent_names = (const char *[]){
1223 "gcc_cpuss_ahb_clk_src",
1226 .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
1227 .ops = &clk_branch2_ops,
1232 static struct clk_branch gcc_cpuss_rbcpr_clk = {
1233 .halt_reg = 0x48008,
1234 .halt_check = BRANCH_HALT,
1236 .enable_reg = 0x48008,
1237 .enable_mask = BIT(0),
1238 .hw.init = &(struct clk_init_data){
1239 .name = "gcc_cpuss_rbcpr_clk",
1240 .parent_names = (const char *[]){
1241 "gcc_cpuss_rbcpr_clk_src",
1244 .flags = CLK_SET_RATE_PARENT,
1245 .ops = &clk_branch2_ops,
1250 static struct clk_branch gcc_ddrss_gpu_axi_clk = {
1251 .halt_reg = 0x44038,
1252 .halt_check = BRANCH_VOTED,
1254 .enable_reg = 0x44038,
1255 .enable_mask = BIT(0),
1256 .hw.init = &(struct clk_init_data){
1257 .name = "gcc_ddrss_gpu_axi_clk",
1258 .ops = &clk_branch2_ops,
1263 static struct clk_branch gcc_disp_ahb_clk = {
1265 .halt_check = BRANCH_HALT,
1269 .enable_reg = 0xb00c,
1270 .enable_mask = BIT(0),
1271 .hw.init = &(struct clk_init_data){
1272 .name = "gcc_disp_ahb_clk",
1273 .flags = CLK_IS_CRITICAL,
1274 .ops = &clk_branch2_ops,
1279 static struct clk_branch gcc_disp_axi_clk = {
1281 .halt_check = BRANCH_VOTED,
1283 .enable_reg = 0xb024,
1284 .enable_mask = BIT(0),
1285 .hw.init = &(struct clk_init_data){
1286 .name = "gcc_disp_axi_clk",
1287 .ops = &clk_branch2_ops,
1292 static struct clk_branch gcc_disp_gpll0_clk_src = {
1293 .halt_check = BRANCH_HALT_DELAY,
1295 .enable_reg = 0x52004,
1296 .enable_mask = BIT(18),
1297 .hw.init = &(struct clk_init_data){
1298 .name = "gcc_disp_gpll0_clk_src",
1299 .parent_names = (const char *[]){
1303 .ops = &clk_branch2_ops,
1308 static struct clk_branch gcc_disp_gpll0_div_clk_src = {
1309 .halt_check = BRANCH_HALT_DELAY,
1311 .enable_reg = 0x52004,
1312 .enable_mask = BIT(19),
1313 .hw.init = &(struct clk_init_data){
1314 .name = "gcc_disp_gpll0_div_clk_src",
1315 .parent_names = (const char *[]){
1319 .ops = &clk_branch2_ops,
1324 static struct clk_branch gcc_disp_xo_clk = {
1326 .halt_check = BRANCH_HALT,
1328 .enable_reg = 0xb030,
1329 .enable_mask = BIT(0),
1330 .hw.init = &(struct clk_init_data){
1331 .name = "gcc_disp_xo_clk",
1332 .flags = CLK_IS_CRITICAL,
1333 .ops = &clk_branch2_ops,
1338 static struct clk_branch gcc_gp1_clk = {
1339 .halt_reg = 0x64000,
1340 .halt_check = BRANCH_HALT,
1342 .enable_reg = 0x64000,
1343 .enable_mask = BIT(0),
1344 .hw.init = &(struct clk_init_data){
1345 .name = "gcc_gp1_clk",
1346 .parent_names = (const char *[]){
1350 .flags = CLK_SET_RATE_PARENT,
1351 .ops = &clk_branch2_ops,
1356 static struct clk_branch gcc_gp2_clk = {
1357 .halt_reg = 0x65000,
1358 .halt_check = BRANCH_HALT,
1360 .enable_reg = 0x65000,
1361 .enable_mask = BIT(0),
1362 .hw.init = &(struct clk_init_data){
1363 .name = "gcc_gp2_clk",
1364 .parent_names = (const char *[]){
1368 .flags = CLK_SET_RATE_PARENT,
1369 .ops = &clk_branch2_ops,
1374 static struct clk_branch gcc_gp3_clk = {
1375 .halt_reg = 0x66000,
1376 .halt_check = BRANCH_HALT,
1378 .enable_reg = 0x66000,
1379 .enable_mask = BIT(0),
1380 .hw.init = &(struct clk_init_data){
1381 .name = "gcc_gp3_clk",
1382 .parent_names = (const char *[]){
1386 .flags = CLK_SET_RATE_PARENT,
1387 .ops = &clk_branch2_ops,
1392 static struct clk_branch gcc_gpu_cfg_ahb_clk = {
1393 .halt_reg = 0x71004,
1394 .halt_check = BRANCH_HALT,
1395 .hwcg_reg = 0x71004,
1398 .enable_reg = 0x71004,
1399 .enable_mask = BIT(0),
1400 .hw.init = &(struct clk_init_data){
1401 .name = "gcc_gpu_cfg_ahb_clk",
1402 .flags = CLK_IS_CRITICAL,
1403 .ops = &clk_branch2_ops,
1408 static struct clk_branch gcc_gpu_gpll0_clk_src = {
1409 .halt_check = BRANCH_HALT_DELAY,
1411 .enable_reg = 0x52004,
1412 .enable_mask = BIT(15),
1413 .hw.init = &(struct clk_init_data){
1414 .name = "gcc_gpu_gpll0_clk_src",
1415 .parent_names = (const char *[]){
1419 .ops = &clk_branch2_ops,
1424 static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
1425 .halt_check = BRANCH_HALT_DELAY,
1427 .enable_reg = 0x52004,
1428 .enable_mask = BIT(16),
1429 .hw.init = &(struct clk_init_data){
1430 .name = "gcc_gpu_gpll0_div_clk_src",
1431 .parent_names = (const char *[]){
1435 .ops = &clk_branch2_ops,
1440 static struct clk_branch gcc_gpu_iref_clk = {
1441 .halt_reg = 0x8c010,
1442 .halt_check = BRANCH_HALT,
1444 .enable_reg = 0x8c010,
1445 .enable_mask = BIT(0),
1446 .hw.init = &(struct clk_init_data){
1447 .name = "gcc_gpu_iref_clk",
1448 .ops = &clk_branch2_ops,
1453 static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
1454 .halt_reg = 0x7100c,
1455 .halt_check = BRANCH_VOTED,
1457 .enable_reg = 0x7100c,
1458 .enable_mask = BIT(0),
1459 .hw.init = &(struct clk_init_data){
1460 .name = "gcc_gpu_memnoc_gfx_clk",
1461 .ops = &clk_branch2_ops,
1466 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
1467 .halt_reg = 0x71018,
1468 .halt_check = BRANCH_HALT,
1470 .enable_reg = 0x71018,
1471 .enable_mask = BIT(0),
1472 .hw.init = &(struct clk_init_data){
1473 .name = "gcc_gpu_snoc_dvm_gfx_clk",
1474 .ops = &clk_branch2_ops,
1479 static struct clk_branch gcc_gpu_vs_clk = {
1480 .halt_reg = 0x7a04c,
1481 .halt_check = BRANCH_HALT,
1483 .enable_reg = 0x7a04c,
1484 .enable_mask = BIT(0),
1485 .hw.init = &(struct clk_init_data){
1486 .name = "gcc_gpu_vs_clk",
1487 .parent_names = (const char *[]){
1488 "gcc_vsensor_clk_src",
1491 .flags = CLK_SET_RATE_PARENT,
1492 .ops = &clk_branch2_ops,
1497 static struct clk_branch gcc_mss_axis2_clk = {
1498 .halt_reg = 0x8a008,
1499 .halt_check = BRANCH_HALT,
1501 .enable_reg = 0x8a008,
1502 .enable_mask = BIT(0),
1503 .hw.init = &(struct clk_init_data){
1504 .name = "gcc_mss_axis2_clk",
1505 .ops = &clk_branch2_ops,
1510 static struct clk_branch gcc_mss_cfg_ahb_clk = {
1511 .halt_reg = 0x8a000,
1512 .halt_check = BRANCH_HALT,
1513 .hwcg_reg = 0x8a000,
1516 .enable_reg = 0x8a000,
1517 .enable_mask = BIT(0),
1518 .hw.init = &(struct clk_init_data){
1519 .name = "gcc_mss_cfg_ahb_clk",
1520 .ops = &clk_branch2_ops,
1525 static struct clk_branch gcc_mss_gpll0_div_clk_src = {
1526 .halt_check = BRANCH_HALT_DELAY,
1528 .enable_reg = 0x52004,
1529 .enable_mask = BIT(17),
1530 .hw.init = &(struct clk_init_data){
1531 .name = "gcc_mss_gpll0_div_clk_src",
1532 .ops = &clk_branch2_ops,
1537 static struct clk_branch gcc_mss_mfab_axis_clk = {
1538 .halt_reg = 0x8a004,
1539 .halt_check = BRANCH_VOTED,
1540 .hwcg_reg = 0x8a004,
1543 .enable_reg = 0x8a004,
1544 .enable_mask = BIT(0),
1545 .hw.init = &(struct clk_init_data){
1546 .name = "gcc_mss_mfab_axis_clk",
1547 .ops = &clk_branch2_ops,
1552 static struct clk_branch gcc_mss_q6_memnoc_axi_clk = {
1553 .halt_reg = 0x8a154,
1554 .halt_check = BRANCH_VOTED,
1556 .enable_reg = 0x8a154,
1557 .enable_mask = BIT(0),
1558 .hw.init = &(struct clk_init_data){
1559 .name = "gcc_mss_q6_memnoc_axi_clk",
1560 .ops = &clk_branch2_ops,
1565 static struct clk_branch gcc_mss_snoc_axi_clk = {
1566 .halt_reg = 0x8a150,
1567 .halt_check = BRANCH_HALT,
1569 .enable_reg = 0x8a150,
1570 .enable_mask = BIT(0),
1571 .hw.init = &(struct clk_init_data){
1572 .name = "gcc_mss_snoc_axi_clk",
1573 .ops = &clk_branch2_ops,
1578 static struct clk_branch gcc_mss_vs_clk = {
1579 .halt_reg = 0x7a048,
1580 .halt_check = BRANCH_HALT,
1582 .enable_reg = 0x7a048,
1583 .enable_mask = BIT(0),
1584 .hw.init = &(struct clk_init_data){
1585 .name = "gcc_mss_vs_clk",
1586 .parent_names = (const char *[]){
1587 "gcc_vsensor_clk_src",
1590 .flags = CLK_SET_RATE_PARENT,
1591 .ops = &clk_branch2_ops,
1596 static struct clk_branch gcc_pcie_0_aux_clk = {
1597 .halt_reg = 0x6b01c,
1598 .halt_check = BRANCH_HALT_VOTED,
1600 .enable_reg = 0x5200c,
1601 .enable_mask = BIT(3),
1602 .hw.init = &(struct clk_init_data){
1603 .name = "gcc_pcie_0_aux_clk",
1604 .parent_names = (const char *[]){
1605 "gcc_pcie_0_aux_clk_src",
1608 .flags = CLK_SET_RATE_PARENT,
1609 .ops = &clk_branch2_ops,
1614 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
1615 .halt_reg = 0x6b018,
1616 .halt_check = BRANCH_HALT_VOTED,
1617 .hwcg_reg = 0x6b018,
1620 .enable_reg = 0x5200c,
1621 .enable_mask = BIT(2),
1622 .hw.init = &(struct clk_init_data){
1623 .name = "gcc_pcie_0_cfg_ahb_clk",
1624 .ops = &clk_branch2_ops,
1629 static struct clk_branch gcc_pcie_0_clkref_clk = {
1630 .halt_reg = 0x8c00c,
1631 .halt_check = BRANCH_HALT,
1633 .enable_reg = 0x8c00c,
1634 .enable_mask = BIT(0),
1635 .hw.init = &(struct clk_init_data){
1636 .name = "gcc_pcie_0_clkref_clk",
1637 .ops = &clk_branch2_ops,
1642 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
1643 .halt_reg = 0x6b014,
1644 .halt_check = BRANCH_HALT_VOTED,
1646 .enable_reg = 0x5200c,
1647 .enable_mask = BIT(1),
1648 .hw.init = &(struct clk_init_data){
1649 .name = "gcc_pcie_0_mstr_axi_clk",
1650 .ops = &clk_branch2_ops,
1655 static struct clk_branch gcc_pcie_0_pipe_clk = {
1656 .halt_check = BRANCH_HALT_SKIP,
1658 .enable_reg = 0x5200c,
1659 .enable_mask = BIT(4),
1660 .hw.init = &(struct clk_init_data){
1661 .name = "gcc_pcie_0_pipe_clk",
1662 .ops = &clk_branch2_ops,
1667 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
1668 .halt_reg = 0x6b010,
1669 .halt_check = BRANCH_HALT_VOTED,
1670 .hwcg_reg = 0x6b010,
1673 .enable_reg = 0x5200c,
1674 .enable_mask = BIT(0),
1675 .hw.init = &(struct clk_init_data){
1676 .name = "gcc_pcie_0_slv_axi_clk",
1677 .ops = &clk_branch2_ops,
1682 static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
1683 .halt_reg = 0x6b00c,
1684 .halt_check = BRANCH_HALT_VOTED,
1686 .enable_reg = 0x5200c,
1687 .enable_mask = BIT(5),
1688 .hw.init = &(struct clk_init_data){
1689 .name = "gcc_pcie_0_slv_q2a_axi_clk",
1690 .ops = &clk_branch2_ops,
1695 static struct clk_branch gcc_pcie_1_aux_clk = {
1696 .halt_reg = 0x8d01c,
1697 .halt_check = BRANCH_HALT_VOTED,
1699 .enable_reg = 0x52004,
1700 .enable_mask = BIT(29),
1701 .hw.init = &(struct clk_init_data){
1702 .name = "gcc_pcie_1_aux_clk",
1703 .parent_names = (const char *[]){
1704 "gcc_pcie_1_aux_clk_src",
1707 .flags = CLK_SET_RATE_PARENT,
1708 .ops = &clk_branch2_ops,
1713 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
1714 .halt_reg = 0x8d018,
1715 .halt_check = BRANCH_HALT_VOTED,
1716 .hwcg_reg = 0x8d018,
1719 .enable_reg = 0x52004,
1720 .enable_mask = BIT(28),
1721 .hw.init = &(struct clk_init_data){
1722 .name = "gcc_pcie_1_cfg_ahb_clk",
1723 .ops = &clk_branch2_ops,
1728 static struct clk_branch gcc_pcie_1_clkref_clk = {
1729 .halt_reg = 0x8c02c,
1730 .halt_check = BRANCH_HALT,
1732 .enable_reg = 0x8c02c,
1733 .enable_mask = BIT(0),
1734 .hw.init = &(struct clk_init_data){
1735 .name = "gcc_pcie_1_clkref_clk",
1736 .ops = &clk_branch2_ops,
1741 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
1742 .halt_reg = 0x8d014,
1743 .halt_check = BRANCH_HALT_VOTED,
1745 .enable_reg = 0x52004,
1746 .enable_mask = BIT(27),
1747 .hw.init = &(struct clk_init_data){
1748 .name = "gcc_pcie_1_mstr_axi_clk",
1749 .ops = &clk_branch2_ops,
1754 static struct clk_branch gcc_pcie_1_pipe_clk = {
1755 .halt_check = BRANCH_HALT_SKIP,
1757 .enable_reg = 0x52004,
1758 .enable_mask = BIT(30),
1759 .hw.init = &(struct clk_init_data){
1760 .name = "gcc_pcie_1_pipe_clk",
1761 .ops = &clk_branch2_ops,
1766 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
1767 .halt_reg = 0x8d010,
1768 .halt_check = BRANCH_HALT_VOTED,
1769 .hwcg_reg = 0x8d010,
1772 .enable_reg = 0x52004,
1773 .enable_mask = BIT(26),
1774 .hw.init = &(struct clk_init_data){
1775 .name = "gcc_pcie_1_slv_axi_clk",
1776 .ops = &clk_branch2_ops,
1781 static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
1782 .halt_reg = 0x8d00c,
1783 .halt_check = BRANCH_HALT_VOTED,
1785 .enable_reg = 0x52004,
1786 .enable_mask = BIT(25),
1787 .hw.init = &(struct clk_init_data){
1788 .name = "gcc_pcie_1_slv_q2a_axi_clk",
1789 .ops = &clk_branch2_ops,
1794 static struct clk_branch gcc_pcie_phy_aux_clk = {
1795 .halt_reg = 0x6f004,
1796 .halt_check = BRANCH_HALT,
1798 .enable_reg = 0x6f004,
1799 .enable_mask = BIT(0),
1800 .hw.init = &(struct clk_init_data){
1801 .name = "gcc_pcie_phy_aux_clk",
1802 .parent_names = (const char *[]){
1803 "gcc_pcie_0_aux_clk_src",
1806 .flags = CLK_SET_RATE_PARENT,
1807 .ops = &clk_branch2_ops,
1812 static struct clk_branch gcc_pcie_phy_refgen_clk = {
1813 .halt_reg = 0x6f02c,
1814 .halt_check = BRANCH_HALT,
1816 .enable_reg = 0x6f02c,
1817 .enable_mask = BIT(0),
1818 .hw.init = &(struct clk_init_data){
1819 .name = "gcc_pcie_phy_refgen_clk",
1820 .parent_names = (const char *[]){
1821 "gcc_pcie_phy_refgen_clk_src",
1824 .flags = CLK_SET_RATE_PARENT,
1825 .ops = &clk_branch2_ops,
1830 static struct clk_branch gcc_pdm2_clk = {
1831 .halt_reg = 0x3300c,
1832 .halt_check = BRANCH_HALT,
1834 .enable_reg = 0x3300c,
1835 .enable_mask = BIT(0),
1836 .hw.init = &(struct clk_init_data){
1837 .name = "gcc_pdm2_clk",
1838 .parent_names = (const char *[]){
1842 .flags = CLK_SET_RATE_PARENT,
1843 .ops = &clk_branch2_ops,
1848 static struct clk_branch gcc_pdm_ahb_clk = {
1849 .halt_reg = 0x33004,
1850 .halt_check = BRANCH_HALT,
1851 .hwcg_reg = 0x33004,
1854 .enable_reg = 0x33004,
1855 .enable_mask = BIT(0),
1856 .hw.init = &(struct clk_init_data){
1857 .name = "gcc_pdm_ahb_clk",
1858 .ops = &clk_branch2_ops,
1863 static struct clk_branch gcc_pdm_xo4_clk = {
1864 .halt_reg = 0x33008,
1865 .halt_check = BRANCH_HALT,
1867 .enable_reg = 0x33008,
1868 .enable_mask = BIT(0),
1869 .hw.init = &(struct clk_init_data){
1870 .name = "gcc_pdm_xo4_clk",
1871 .ops = &clk_branch2_ops,
1876 static struct clk_branch gcc_prng_ahb_clk = {
1877 .halt_reg = 0x34004,
1878 .halt_check = BRANCH_HALT_VOTED,
1879 .hwcg_reg = 0x34004,
1882 .enable_reg = 0x52004,
1883 .enable_mask = BIT(13),
1884 .hw.init = &(struct clk_init_data){
1885 .name = "gcc_prng_ahb_clk",
1886 .ops = &clk_branch2_ops,
1891 static struct clk_branch gcc_qmip_camera_ahb_clk = {
1893 .halt_check = BRANCH_HALT,
1897 .enable_reg = 0xb014,
1898 .enable_mask = BIT(0),
1899 .hw.init = &(struct clk_init_data){
1900 .name = "gcc_qmip_camera_ahb_clk",
1901 .ops = &clk_branch2_ops,
1906 static struct clk_branch gcc_qmip_disp_ahb_clk = {
1908 .halt_check = BRANCH_HALT,
1912 .enable_reg = 0xb018,
1913 .enable_mask = BIT(0),
1914 .hw.init = &(struct clk_init_data){
1915 .name = "gcc_qmip_disp_ahb_clk",
1916 .ops = &clk_branch2_ops,
1921 static struct clk_branch gcc_qmip_video_ahb_clk = {
1923 .halt_check = BRANCH_HALT,
1927 .enable_reg = 0xb010,
1928 .enable_mask = BIT(0),
1929 .hw.init = &(struct clk_init_data){
1930 .name = "gcc_qmip_video_ahb_clk",
1931 .ops = &clk_branch2_ops,
1936 static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
1937 .halt_reg = 0x17030,
1938 .halt_check = BRANCH_HALT_VOTED,
1940 .enable_reg = 0x5200c,
1941 .enable_mask = BIT(10),
1942 .hw.init = &(struct clk_init_data){
1943 .name = "gcc_qupv3_wrap0_s0_clk",
1944 .parent_names = (const char *[]){
1945 "gcc_qupv3_wrap0_s0_clk_src",
1948 .flags = CLK_SET_RATE_PARENT,
1949 .ops = &clk_branch2_ops,
1954 static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
1955 .halt_reg = 0x17160,
1956 .halt_check = BRANCH_HALT_VOTED,
1958 .enable_reg = 0x5200c,
1959 .enable_mask = BIT(11),
1960 .hw.init = &(struct clk_init_data){
1961 .name = "gcc_qupv3_wrap0_s1_clk",
1962 .parent_names = (const char *[]){
1963 "gcc_qupv3_wrap0_s1_clk_src",
1966 .flags = CLK_SET_RATE_PARENT,
1967 .ops = &clk_branch2_ops,
1972 static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
1973 .halt_reg = 0x17290,
1974 .halt_check = BRANCH_HALT_VOTED,
1976 .enable_reg = 0x5200c,
1977 .enable_mask = BIT(12),
1978 .hw.init = &(struct clk_init_data){
1979 .name = "gcc_qupv3_wrap0_s2_clk",
1980 .parent_names = (const char *[]){
1981 "gcc_qupv3_wrap0_s2_clk_src",
1984 .flags = CLK_SET_RATE_PARENT,
1985 .ops = &clk_branch2_ops,
1990 static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
1991 .halt_reg = 0x173c0,
1992 .halt_check = BRANCH_HALT_VOTED,
1994 .enable_reg = 0x5200c,
1995 .enable_mask = BIT(13),
1996 .hw.init = &(struct clk_init_data){
1997 .name = "gcc_qupv3_wrap0_s3_clk",
1998 .parent_names = (const char *[]){
1999 "gcc_qupv3_wrap0_s3_clk_src",
2002 .flags = CLK_SET_RATE_PARENT,
2003 .ops = &clk_branch2_ops,
2008 static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
2009 .halt_reg = 0x174f0,
2010 .halt_check = BRANCH_HALT_VOTED,
2012 .enable_reg = 0x5200c,
2013 .enable_mask = BIT(14),
2014 .hw.init = &(struct clk_init_data){
2015 .name = "gcc_qupv3_wrap0_s4_clk",
2016 .parent_names = (const char *[]){
2017 "gcc_qupv3_wrap0_s4_clk_src",
2020 .flags = CLK_SET_RATE_PARENT,
2021 .ops = &clk_branch2_ops,
2026 static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
2027 .halt_reg = 0x17620,
2028 .halt_check = BRANCH_HALT_VOTED,
2030 .enable_reg = 0x5200c,
2031 .enable_mask = BIT(15),
2032 .hw.init = &(struct clk_init_data){
2033 .name = "gcc_qupv3_wrap0_s5_clk",
2034 .parent_names = (const char *[]){
2035 "gcc_qupv3_wrap0_s5_clk_src",
2038 .flags = CLK_SET_RATE_PARENT,
2039 .ops = &clk_branch2_ops,
2044 static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
2045 .halt_reg = 0x17750,
2046 .halt_check = BRANCH_HALT_VOTED,
2048 .enable_reg = 0x5200c,
2049 .enable_mask = BIT(16),
2050 .hw.init = &(struct clk_init_data){
2051 .name = "gcc_qupv3_wrap0_s6_clk",
2052 .parent_names = (const char *[]){
2053 "gcc_qupv3_wrap0_s6_clk_src",
2056 .flags = CLK_SET_RATE_PARENT,
2057 .ops = &clk_branch2_ops,
2062 static struct clk_branch gcc_qupv3_wrap0_s7_clk = {
2063 .halt_reg = 0x17880,
2064 .halt_check = BRANCH_HALT_VOTED,
2066 .enable_reg = 0x5200c,
2067 .enable_mask = BIT(17),
2068 .hw.init = &(struct clk_init_data){
2069 .name = "gcc_qupv3_wrap0_s7_clk",
2070 .parent_names = (const char *[]){
2071 "gcc_qupv3_wrap0_s7_clk_src",
2074 .flags = CLK_SET_RATE_PARENT,
2075 .ops = &clk_branch2_ops,
2080 static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
2081 .halt_reg = 0x18014,
2082 .halt_check = BRANCH_HALT_VOTED,
2084 .enable_reg = 0x5200c,
2085 .enable_mask = BIT(22),
2086 .hw.init = &(struct clk_init_data){
2087 .name = "gcc_qupv3_wrap1_s0_clk",
2088 .parent_names = (const char *[]){
2089 "gcc_qupv3_wrap1_s0_clk_src",
2092 .flags = CLK_SET_RATE_PARENT,
2093 .ops = &clk_branch2_ops,
2098 static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
2099 .halt_reg = 0x18144,
2100 .halt_check = BRANCH_HALT_VOTED,
2102 .enable_reg = 0x5200c,
2103 .enable_mask = BIT(23),
2104 .hw.init = &(struct clk_init_data){
2105 .name = "gcc_qupv3_wrap1_s1_clk",
2106 .parent_names = (const char *[]){
2107 "gcc_qupv3_wrap1_s1_clk_src",
2110 .flags = CLK_SET_RATE_PARENT,
2111 .ops = &clk_branch2_ops,
2116 static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
2117 .halt_reg = 0x18274,
2118 .halt_check = BRANCH_HALT_VOTED,
2120 .enable_reg = 0x5200c,
2121 .enable_mask = BIT(24),
2122 .hw.init = &(struct clk_init_data){
2123 .name = "gcc_qupv3_wrap1_s2_clk",
2124 .parent_names = (const char *[]){
2125 "gcc_qupv3_wrap1_s2_clk_src",
2128 .flags = CLK_SET_RATE_PARENT,
2129 .ops = &clk_branch2_ops,
2134 static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
2135 .halt_reg = 0x183a4,
2136 .halt_check = BRANCH_HALT_VOTED,
2138 .enable_reg = 0x5200c,
2139 .enable_mask = BIT(25),
2140 .hw.init = &(struct clk_init_data){
2141 .name = "gcc_qupv3_wrap1_s3_clk",
2142 .parent_names = (const char *[]){
2143 "gcc_qupv3_wrap1_s3_clk_src",
2146 .flags = CLK_SET_RATE_PARENT,
2147 .ops = &clk_branch2_ops,
2152 static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
2153 .halt_reg = 0x184d4,
2154 .halt_check = BRANCH_HALT_VOTED,
2156 .enable_reg = 0x5200c,
2157 .enable_mask = BIT(26),
2158 .hw.init = &(struct clk_init_data){
2159 .name = "gcc_qupv3_wrap1_s4_clk",
2160 .parent_names = (const char *[]){
2161 "gcc_qupv3_wrap1_s4_clk_src",
2164 .flags = CLK_SET_RATE_PARENT,
2165 .ops = &clk_branch2_ops,
2170 static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
2171 .halt_reg = 0x18604,
2172 .halt_check = BRANCH_HALT_VOTED,
2174 .enable_reg = 0x5200c,
2175 .enable_mask = BIT(27),
2176 .hw.init = &(struct clk_init_data){
2177 .name = "gcc_qupv3_wrap1_s5_clk",
2178 .parent_names = (const char *[]){
2179 "gcc_qupv3_wrap1_s5_clk_src",
2182 .flags = CLK_SET_RATE_PARENT,
2183 .ops = &clk_branch2_ops,
2188 static struct clk_branch gcc_qupv3_wrap1_s6_clk = {
2189 .halt_reg = 0x18734,
2190 .halt_check = BRANCH_HALT_VOTED,
2192 .enable_reg = 0x5200c,
2193 .enable_mask = BIT(28),
2194 .hw.init = &(struct clk_init_data){
2195 .name = "gcc_qupv3_wrap1_s6_clk",
2196 .parent_names = (const char *[]){
2197 "gcc_qupv3_wrap1_s6_clk_src",
2200 .flags = CLK_SET_RATE_PARENT,
2201 .ops = &clk_branch2_ops,
2206 static struct clk_branch gcc_qupv3_wrap1_s7_clk = {
2207 .halt_reg = 0x18864,
2208 .halt_check = BRANCH_HALT_VOTED,
2210 .enable_reg = 0x5200c,
2211 .enable_mask = BIT(29),
2212 .hw.init = &(struct clk_init_data){
2213 .name = "gcc_qupv3_wrap1_s7_clk",
2214 .parent_names = (const char *[]){
2215 "gcc_qupv3_wrap1_s7_clk_src",
2218 .flags = CLK_SET_RATE_PARENT,
2219 .ops = &clk_branch2_ops,
2224 static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
2225 .halt_reg = 0x17004,
2226 .halt_check = BRANCH_HALT_VOTED,
2228 .enable_reg = 0x5200c,
2229 .enable_mask = BIT(6),
2230 .hw.init = &(struct clk_init_data){
2231 .name = "gcc_qupv3_wrap_0_m_ahb_clk",
2232 .ops = &clk_branch2_ops,
2237 static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
2238 .halt_reg = 0x17008,
2239 .halt_check = BRANCH_HALT_VOTED,
2240 .hwcg_reg = 0x17008,
2243 .enable_reg = 0x5200c,
2244 .enable_mask = BIT(7),
2245 .hw.init = &(struct clk_init_data){
2246 .name = "gcc_qupv3_wrap_0_s_ahb_clk",
2247 .ops = &clk_branch2_ops,
2252 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
2253 .halt_reg = 0x1800c,
2254 .halt_check = BRANCH_HALT_VOTED,
2256 .enable_reg = 0x5200c,
2257 .enable_mask = BIT(20),
2258 .hw.init = &(struct clk_init_data){
2259 .name = "gcc_qupv3_wrap_1_m_ahb_clk",
2260 .ops = &clk_branch2_ops,
2265 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
2266 .halt_reg = 0x18010,
2267 .halt_check = BRANCH_HALT_VOTED,
2268 .hwcg_reg = 0x18010,
2271 .enable_reg = 0x5200c,
2272 .enable_mask = BIT(21),
2273 .hw.init = &(struct clk_init_data){
2274 .name = "gcc_qupv3_wrap_1_s_ahb_clk",
2275 .ops = &clk_branch2_ops,
2280 static struct clk_branch gcc_sdcc2_ahb_clk = {
2281 .halt_reg = 0x14008,
2282 .halt_check = BRANCH_HALT,
2284 .enable_reg = 0x14008,
2285 .enable_mask = BIT(0),
2286 .hw.init = &(struct clk_init_data){
2287 .name = "gcc_sdcc2_ahb_clk",
2288 .ops = &clk_branch2_ops,
2293 static struct clk_branch gcc_sdcc2_apps_clk = {
2294 .halt_reg = 0x14004,
2295 .halt_check = BRANCH_HALT,
2297 .enable_reg = 0x14004,
2298 .enable_mask = BIT(0),
2299 .hw.init = &(struct clk_init_data){
2300 .name = "gcc_sdcc2_apps_clk",
2301 .parent_names = (const char *[]){
2302 "gcc_sdcc2_apps_clk_src",
2305 .flags = CLK_SET_RATE_PARENT,
2306 .ops = &clk_branch2_ops,
2311 static struct clk_branch gcc_sdcc4_ahb_clk = {
2312 .halt_reg = 0x16008,
2313 .halt_check = BRANCH_HALT,
2315 .enable_reg = 0x16008,
2316 .enable_mask = BIT(0),
2317 .hw.init = &(struct clk_init_data){
2318 .name = "gcc_sdcc4_ahb_clk",
2319 .ops = &clk_branch2_ops,
2324 static struct clk_branch gcc_sdcc4_apps_clk = {
2325 .halt_reg = 0x16004,
2326 .halt_check = BRANCH_HALT,
2328 .enable_reg = 0x16004,
2329 .enable_mask = BIT(0),
2330 .hw.init = &(struct clk_init_data){
2331 .name = "gcc_sdcc4_apps_clk",
2332 .parent_names = (const char *[]){
2333 "gcc_sdcc4_apps_clk_src",
2336 .flags = CLK_SET_RATE_PARENT,
2337 .ops = &clk_branch2_ops,
2342 static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = {
2344 .halt_check = BRANCH_HALT_VOTED,
2346 .enable_reg = 0x52004,
2347 .enable_mask = BIT(0),
2348 .hw.init = &(struct clk_init_data){
2349 .name = "gcc_sys_noc_cpuss_ahb_clk",
2350 .parent_names = (const char *[]){
2351 "gcc_cpuss_ahb_clk_src",
2354 .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
2355 .ops = &clk_branch2_ops,
2360 static struct clk_branch gcc_tsif_ahb_clk = {
2361 .halt_reg = 0x36004,
2362 .halt_check = BRANCH_HALT,
2364 .enable_reg = 0x36004,
2365 .enable_mask = BIT(0),
2366 .hw.init = &(struct clk_init_data){
2367 .name = "gcc_tsif_ahb_clk",
2368 .ops = &clk_branch2_ops,
2373 static struct clk_branch gcc_tsif_inactivity_timers_clk = {
2374 .halt_reg = 0x3600c,
2375 .halt_check = BRANCH_HALT,
2377 .enable_reg = 0x3600c,
2378 .enable_mask = BIT(0),
2379 .hw.init = &(struct clk_init_data){
2380 .name = "gcc_tsif_inactivity_timers_clk",
2381 .ops = &clk_branch2_ops,
2386 static struct clk_branch gcc_tsif_ref_clk = {
2387 .halt_reg = 0x36008,
2388 .halt_check = BRANCH_HALT,
2390 .enable_reg = 0x36008,
2391 .enable_mask = BIT(0),
2392 .hw.init = &(struct clk_init_data){
2393 .name = "gcc_tsif_ref_clk",
2394 .parent_names = (const char *[]){
2395 "gcc_tsif_ref_clk_src",
2398 .flags = CLK_SET_RATE_PARENT,
2399 .ops = &clk_branch2_ops,
2404 static struct clk_branch gcc_ufs_card_ahb_clk = {
2405 .halt_reg = 0x75010,
2406 .halt_check = BRANCH_HALT,
2407 .hwcg_reg = 0x75010,
2410 .enable_reg = 0x75010,
2411 .enable_mask = BIT(0),
2412 .hw.init = &(struct clk_init_data){
2413 .name = "gcc_ufs_card_ahb_clk",
2414 .ops = &clk_branch2_ops,
2419 static struct clk_branch gcc_ufs_card_axi_clk = {
2420 .halt_reg = 0x7500c,
2421 .halt_check = BRANCH_HALT,
2422 .hwcg_reg = 0x7500c,
2425 .enable_reg = 0x7500c,
2426 .enable_mask = BIT(0),
2427 .hw.init = &(struct clk_init_data){
2428 .name = "gcc_ufs_card_axi_clk",
2429 .parent_names = (const char *[]){
2430 "gcc_ufs_card_axi_clk_src",
2433 .flags = CLK_SET_RATE_PARENT,
2434 .ops = &clk_branch2_ops,
2439 static struct clk_branch gcc_ufs_card_clkref_clk = {
2440 .halt_reg = 0x8c004,
2441 .halt_check = BRANCH_HALT,
2443 .enable_reg = 0x8c004,
2444 .enable_mask = BIT(0),
2445 .hw.init = &(struct clk_init_data){
2446 .name = "gcc_ufs_card_clkref_clk",
2447 .ops = &clk_branch2_ops,
2452 static struct clk_branch gcc_ufs_card_ice_core_clk = {
2453 .halt_reg = 0x75058,
2454 .halt_check = BRANCH_HALT,
2455 .hwcg_reg = 0x75058,
2458 .enable_reg = 0x75058,
2459 .enable_mask = BIT(0),
2460 .hw.init = &(struct clk_init_data){
2461 .name = "gcc_ufs_card_ice_core_clk",
2462 .parent_names = (const char *[]){
2463 "gcc_ufs_card_ice_core_clk_src",
2466 .flags = CLK_SET_RATE_PARENT,
2467 .ops = &clk_branch2_ops,
2472 static struct clk_branch gcc_ufs_card_phy_aux_clk = {
2473 .halt_reg = 0x7508c,
2474 .halt_check = BRANCH_HALT,
2475 .hwcg_reg = 0x7508c,
2478 .enable_reg = 0x7508c,
2479 .enable_mask = BIT(0),
2480 .hw.init = &(struct clk_init_data){
2481 .name = "gcc_ufs_card_phy_aux_clk",
2482 .parent_names = (const char *[]){
2483 "gcc_ufs_card_phy_aux_clk_src",
2486 .flags = CLK_SET_RATE_PARENT,
2487 .ops = &clk_branch2_ops,
2492 static struct clk_branch gcc_ufs_card_rx_symbol_0_clk = {
2493 .halt_check = BRANCH_HALT_SKIP,
2495 .enable_reg = 0x75018,
2496 .enable_mask = BIT(0),
2497 .hw.init = &(struct clk_init_data){
2498 .name = "gcc_ufs_card_rx_symbol_0_clk",
2499 .ops = &clk_branch2_ops,
2504 static struct clk_branch gcc_ufs_card_rx_symbol_1_clk = {
2505 .halt_check = BRANCH_HALT_SKIP,
2507 .enable_reg = 0x750a8,
2508 .enable_mask = BIT(0),
2509 .hw.init = &(struct clk_init_data){
2510 .name = "gcc_ufs_card_rx_symbol_1_clk",
2511 .ops = &clk_branch2_ops,
2516 static struct clk_branch gcc_ufs_card_tx_symbol_0_clk = {
2517 .halt_check = BRANCH_HALT_SKIP,
2519 .enable_reg = 0x75014,
2520 .enable_mask = BIT(0),
2521 .hw.init = &(struct clk_init_data){
2522 .name = "gcc_ufs_card_tx_symbol_0_clk",
2523 .ops = &clk_branch2_ops,
2528 static struct clk_branch gcc_ufs_card_unipro_core_clk = {
2529 .halt_reg = 0x75054,
2530 .halt_check = BRANCH_HALT,
2531 .hwcg_reg = 0x75054,
2534 .enable_reg = 0x75054,
2535 .enable_mask = BIT(0),
2536 .hw.init = &(struct clk_init_data){
2537 .name = "gcc_ufs_card_unipro_core_clk",
2538 .parent_names = (const char *[]){
2539 "gcc_ufs_card_unipro_core_clk_src",
2542 .flags = CLK_SET_RATE_PARENT,
2543 .ops = &clk_branch2_ops,
2548 static struct clk_branch gcc_ufs_mem_clkref_clk = {
2549 .halt_reg = 0x8c000,
2550 .halt_check = BRANCH_HALT,
2552 .enable_reg = 0x8c000,
2553 .enable_mask = BIT(0),
2554 .hw.init = &(struct clk_init_data){
2555 .name = "gcc_ufs_mem_clkref_clk",
2556 .ops = &clk_branch2_ops,
2561 static struct clk_branch gcc_ufs_phy_ahb_clk = {
2562 .halt_reg = 0x77010,
2563 .halt_check = BRANCH_HALT,
2564 .hwcg_reg = 0x77010,
2567 .enable_reg = 0x77010,
2568 .enable_mask = BIT(0),
2569 .hw.init = &(struct clk_init_data){
2570 .name = "gcc_ufs_phy_ahb_clk",
2571 .ops = &clk_branch2_ops,
2576 static struct clk_branch gcc_ufs_phy_axi_clk = {
2577 .halt_reg = 0x7700c,
2578 .halt_check = BRANCH_HALT,
2579 .hwcg_reg = 0x7700c,
2582 .enable_reg = 0x7700c,
2583 .enable_mask = BIT(0),
2584 .hw.init = &(struct clk_init_data){
2585 .name = "gcc_ufs_phy_axi_clk",
2586 .parent_names = (const char *[]){
2587 "gcc_ufs_phy_axi_clk_src",
2590 .flags = CLK_SET_RATE_PARENT,
2591 .ops = &clk_branch2_ops,
2596 static struct clk_branch gcc_ufs_phy_ice_core_clk = {
2597 .halt_reg = 0x77058,
2598 .halt_check = BRANCH_HALT,
2599 .hwcg_reg = 0x77058,
2602 .enable_reg = 0x77058,
2603 .enable_mask = BIT(0),
2604 .hw.init = &(struct clk_init_data){
2605 .name = "gcc_ufs_phy_ice_core_clk",
2606 .parent_names = (const char *[]){
2607 "gcc_ufs_phy_ice_core_clk_src",
2610 .flags = CLK_SET_RATE_PARENT,
2611 .ops = &clk_branch2_ops,
2616 static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
2617 .halt_reg = 0x7708c,
2618 .halt_check = BRANCH_HALT,
2619 .hwcg_reg = 0x7708c,
2622 .enable_reg = 0x7708c,
2623 .enable_mask = BIT(0),
2624 .hw.init = &(struct clk_init_data){
2625 .name = "gcc_ufs_phy_phy_aux_clk",
2626 .parent_names = (const char *[]){
2627 "gcc_ufs_phy_phy_aux_clk_src",
2630 .flags = CLK_SET_RATE_PARENT,
2631 .ops = &clk_branch2_ops,
2636 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
2637 .halt_check = BRANCH_HALT_SKIP,
2639 .enable_reg = 0x77018,
2640 .enable_mask = BIT(0),
2641 .hw.init = &(struct clk_init_data){
2642 .name = "gcc_ufs_phy_rx_symbol_0_clk",
2643 .ops = &clk_branch2_ops,
2648 static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
2649 .halt_check = BRANCH_HALT_SKIP,
2651 .enable_reg = 0x770a8,
2652 .enable_mask = BIT(0),
2653 .hw.init = &(struct clk_init_data){
2654 .name = "gcc_ufs_phy_rx_symbol_1_clk",
2655 .ops = &clk_branch2_ops,
2660 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
2661 .halt_check = BRANCH_HALT_SKIP,
2663 .enable_reg = 0x77014,
2664 .enable_mask = BIT(0),
2665 .hw.init = &(struct clk_init_data){
2666 .name = "gcc_ufs_phy_tx_symbol_0_clk",
2667 .ops = &clk_branch2_ops,
2672 static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
2673 .halt_reg = 0x77054,
2674 .halt_check = BRANCH_HALT,
2675 .hwcg_reg = 0x77054,
2678 .enable_reg = 0x77054,
2679 .enable_mask = BIT(0),
2680 .hw.init = &(struct clk_init_data){
2681 .name = "gcc_ufs_phy_unipro_core_clk",
2682 .parent_names = (const char *[]){
2683 "gcc_ufs_phy_unipro_core_clk_src",
2686 .flags = CLK_SET_RATE_PARENT,
2687 .ops = &clk_branch2_ops,
2692 static struct clk_branch gcc_usb30_prim_master_clk = {
2694 .halt_check = BRANCH_HALT,
2696 .enable_reg = 0xf00c,
2697 .enable_mask = BIT(0),
2698 .hw.init = &(struct clk_init_data){
2699 .name = "gcc_usb30_prim_master_clk",
2700 .parent_names = (const char *[]){
2701 "gcc_usb30_prim_master_clk_src",
2704 .flags = CLK_SET_RATE_PARENT,
2705 .ops = &clk_branch2_ops,
2710 static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
2712 .halt_check = BRANCH_HALT,
2714 .enable_reg = 0xf014,
2715 .enable_mask = BIT(0),
2716 .hw.init = &(struct clk_init_data){
2717 .name = "gcc_usb30_prim_mock_utmi_clk",
2718 .parent_names = (const char *[]){
2719 "gcc_usb30_prim_mock_utmi_clk_src",
2722 .flags = CLK_SET_RATE_PARENT,
2723 .ops = &clk_branch2_ops,
2728 static struct clk_branch gcc_usb30_prim_sleep_clk = {
2730 .halt_check = BRANCH_HALT,
2732 .enable_reg = 0xf010,
2733 .enable_mask = BIT(0),
2734 .hw.init = &(struct clk_init_data){
2735 .name = "gcc_usb30_prim_sleep_clk",
2736 .ops = &clk_branch2_ops,
2741 static struct clk_branch gcc_usb30_sec_master_clk = {
2742 .halt_reg = 0x1000c,
2743 .halt_check = BRANCH_HALT,
2745 .enable_reg = 0x1000c,
2746 .enable_mask = BIT(0),
2747 .hw.init = &(struct clk_init_data){
2748 .name = "gcc_usb30_sec_master_clk",
2749 .parent_names = (const char *[]){
2750 "gcc_usb30_sec_master_clk_src",
2753 .flags = CLK_SET_RATE_PARENT,
2754 .ops = &clk_branch2_ops,
2759 static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {
2760 .halt_reg = 0x10014,
2761 .halt_check = BRANCH_HALT,
2763 .enable_reg = 0x10014,
2764 .enable_mask = BIT(0),
2765 .hw.init = &(struct clk_init_data){
2766 .name = "gcc_usb30_sec_mock_utmi_clk",
2767 .parent_names = (const char *[]){
2768 "gcc_usb30_sec_mock_utmi_clk_src",
2771 .flags = CLK_SET_RATE_PARENT,
2772 .ops = &clk_branch2_ops,
2777 static struct clk_branch gcc_usb30_sec_sleep_clk = {
2778 .halt_reg = 0x10010,
2779 .halt_check = BRANCH_HALT,
2781 .enable_reg = 0x10010,
2782 .enable_mask = BIT(0),
2783 .hw.init = &(struct clk_init_data){
2784 .name = "gcc_usb30_sec_sleep_clk",
2785 .ops = &clk_branch2_ops,
2790 static struct clk_branch gcc_usb3_prim_clkref_clk = {
2791 .halt_reg = 0x8c008,
2792 .halt_check = BRANCH_HALT,
2794 .enable_reg = 0x8c008,
2795 .enable_mask = BIT(0),
2796 .hw.init = &(struct clk_init_data){
2797 .name = "gcc_usb3_prim_clkref_clk",
2798 .ops = &clk_branch2_ops,
2803 static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
2805 .halt_check = BRANCH_HALT,
2807 .enable_reg = 0xf04c,
2808 .enable_mask = BIT(0),
2809 .hw.init = &(struct clk_init_data){
2810 .name = "gcc_usb3_prim_phy_aux_clk",
2811 .parent_names = (const char *[]){
2812 "gcc_usb3_prim_phy_aux_clk_src",
2815 .flags = CLK_SET_RATE_PARENT,
2816 .ops = &clk_branch2_ops,
2821 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
2823 .halt_check = BRANCH_HALT,
2825 .enable_reg = 0xf050,
2826 .enable_mask = BIT(0),
2827 .hw.init = &(struct clk_init_data){
2828 .name = "gcc_usb3_prim_phy_com_aux_clk",
2829 .parent_names = (const char *[]){
2830 "gcc_usb3_prim_phy_aux_clk_src",
2833 .flags = CLK_SET_RATE_PARENT,
2834 .ops = &clk_branch2_ops,
2839 static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
2840 .halt_check = BRANCH_HALT_SKIP,
2842 .enable_reg = 0xf054,
2843 .enable_mask = BIT(0),
2844 .hw.init = &(struct clk_init_data){
2845 .name = "gcc_usb3_prim_phy_pipe_clk",
2846 .ops = &clk_branch2_ops,
2851 static struct clk_branch gcc_usb3_sec_clkref_clk = {
2852 .halt_reg = 0x8c028,
2853 .halt_check = BRANCH_HALT,
2855 .enable_reg = 0x8c028,
2856 .enable_mask = BIT(0),
2857 .hw.init = &(struct clk_init_data){
2858 .name = "gcc_usb3_sec_clkref_clk",
2859 .ops = &clk_branch2_ops,
2864 static struct clk_branch gcc_usb3_sec_phy_aux_clk = {
2865 .halt_reg = 0x1004c,
2866 .halt_check = BRANCH_HALT,
2868 .enable_reg = 0x1004c,
2869 .enable_mask = BIT(0),
2870 .hw.init = &(struct clk_init_data){
2871 .name = "gcc_usb3_sec_phy_aux_clk",
2872 .parent_names = (const char *[]){
2873 "gcc_usb3_sec_phy_aux_clk_src",
2876 .flags = CLK_SET_RATE_PARENT,
2877 .ops = &clk_branch2_ops,
2882 static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = {
2883 .halt_reg = 0x10050,
2884 .halt_check = BRANCH_HALT,
2886 .enable_reg = 0x10050,
2887 .enable_mask = BIT(0),
2888 .hw.init = &(struct clk_init_data){
2889 .name = "gcc_usb3_sec_phy_com_aux_clk",
2890 .parent_names = (const char *[]){
2891 "gcc_usb3_sec_phy_aux_clk_src",
2894 .flags = CLK_SET_RATE_PARENT,
2895 .ops = &clk_branch2_ops,
2900 static struct clk_branch gcc_usb3_sec_phy_pipe_clk = {
2901 .halt_check = BRANCH_HALT_SKIP,
2903 .enable_reg = 0x10054,
2904 .enable_mask = BIT(0),
2905 .hw.init = &(struct clk_init_data){
2906 .name = "gcc_usb3_sec_phy_pipe_clk",
2907 .ops = &clk_branch2_ops,
2912 static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
2913 .halt_reg = 0x6a004,
2914 .halt_check = BRANCH_HALT,
2915 .hwcg_reg = 0x6a004,
2918 .enable_reg = 0x6a004,
2919 .enable_mask = BIT(0),
2920 .hw.init = &(struct clk_init_data){
2921 .name = "gcc_usb_phy_cfg_ahb2phy_clk",
2922 .ops = &clk_branch2_ops,
2927 static struct clk_branch gcc_vdda_vs_clk = {
2928 .halt_reg = 0x7a00c,
2929 .halt_check = BRANCH_HALT,
2931 .enable_reg = 0x7a00c,
2932 .enable_mask = BIT(0),
2933 .hw.init = &(struct clk_init_data){
2934 .name = "gcc_vdda_vs_clk",
2935 .parent_names = (const char *[]){
2936 "gcc_vsensor_clk_src",
2939 .flags = CLK_SET_RATE_PARENT,
2940 .ops = &clk_branch2_ops,
2945 static struct clk_branch gcc_vddcx_vs_clk = {
2946 .halt_reg = 0x7a004,
2947 .halt_check = BRANCH_HALT,
2949 .enable_reg = 0x7a004,
2950 .enable_mask = BIT(0),
2951 .hw.init = &(struct clk_init_data){
2952 .name = "gcc_vddcx_vs_clk",
2953 .parent_names = (const char *[]){
2954 "gcc_vsensor_clk_src",
2957 .flags = CLK_SET_RATE_PARENT,
2958 .ops = &clk_branch2_ops,
2963 static struct clk_branch gcc_vddmx_vs_clk = {
2964 .halt_reg = 0x7a008,
2965 .halt_check = BRANCH_HALT,
2967 .enable_reg = 0x7a008,
2968 .enable_mask = BIT(0),
2969 .hw.init = &(struct clk_init_data){
2970 .name = "gcc_vddmx_vs_clk",
2971 .parent_names = (const char *[]){
2972 "gcc_vsensor_clk_src",
2975 .flags = CLK_SET_RATE_PARENT,
2976 .ops = &clk_branch2_ops,
2981 static struct clk_branch gcc_video_ahb_clk = {
2983 .halt_check = BRANCH_HALT,
2987 .enable_reg = 0xb004,
2988 .enable_mask = BIT(0),
2989 .hw.init = &(struct clk_init_data){
2990 .name = "gcc_video_ahb_clk",
2991 .flags = CLK_IS_CRITICAL,
2992 .ops = &clk_branch2_ops,
2997 static struct clk_branch gcc_video_axi_clk = {
2999 .halt_check = BRANCH_VOTED,
3001 .enable_reg = 0xb01c,
3002 .enable_mask = BIT(0),
3003 .hw.init = &(struct clk_init_data){
3004 .name = "gcc_video_axi_clk",
3005 .ops = &clk_branch2_ops,
3010 static struct clk_branch gcc_video_xo_clk = {
3012 .halt_check = BRANCH_HALT,
3014 .enable_reg = 0xb028,
3015 .enable_mask = BIT(0),
3016 .hw.init = &(struct clk_init_data){
3017 .name = "gcc_video_xo_clk",
3018 .flags = CLK_IS_CRITICAL,
3019 .ops = &clk_branch2_ops,
3024 static struct clk_branch gcc_vs_ctrl_ahb_clk = {
3025 .halt_reg = 0x7a014,
3026 .halt_check = BRANCH_HALT,
3027 .hwcg_reg = 0x7a014,
3030 .enable_reg = 0x7a014,
3031 .enable_mask = BIT(0),
3032 .hw.init = &(struct clk_init_data){
3033 .name = "gcc_vs_ctrl_ahb_clk",
3034 .ops = &clk_branch2_ops,
3039 static struct clk_branch gcc_vs_ctrl_clk = {
3040 .halt_reg = 0x7a010,
3041 .halt_check = BRANCH_HALT,
3043 .enable_reg = 0x7a010,
3044 .enable_mask = BIT(0),
3045 .hw.init = &(struct clk_init_data){
3046 .name = "gcc_vs_ctrl_clk",
3047 .parent_names = (const char *[]){
3048 "gcc_vs_ctrl_clk_src",
3051 .flags = CLK_SET_RATE_PARENT,
3052 .ops = &clk_branch2_ops,
3057 static struct clk_branch gcc_cpuss_dvm_bus_clk = {
3058 .halt_reg = 0x48190,
3059 .halt_check = BRANCH_HALT,
3061 .enable_reg = 0x48190,
3062 .enable_mask = BIT(0),
3063 .hw.init = &(struct clk_init_data){
3064 .name = "gcc_cpuss_dvm_bus_clk",
3065 .flags = CLK_IS_CRITICAL,
3066 .ops = &clk_branch2_ops,
3071 static struct clk_branch gcc_cpuss_gnoc_clk = {
3072 .halt_reg = 0x48004,
3073 .halt_check = BRANCH_HALT_VOTED,
3074 .hwcg_reg = 0x48004,
3077 .enable_reg = 0x52004,
3078 .enable_mask = BIT(22),
3079 .hw.init = &(struct clk_init_data){
3080 .name = "gcc_cpuss_gnoc_clk",
3081 .flags = CLK_IS_CRITICAL,
3082 .ops = &clk_branch2_ops,
3087 static struct gdsc pcie_0_gdsc = {
3090 .name = "pcie_0_gdsc",
3092 .pwrsts = PWRSTS_OFF_ON,
3093 .flags = POLL_CFG_GDSCR,
3096 static struct gdsc pcie_1_gdsc = {
3099 .name = "pcie_1_gdsc",
3101 .pwrsts = PWRSTS_OFF_ON,
3102 .flags = POLL_CFG_GDSCR,
3105 static struct gdsc ufs_card_gdsc = {
3108 .name = "ufs_card_gdsc",
3110 .pwrsts = PWRSTS_OFF_ON,
3111 .flags = POLL_CFG_GDSCR,
3114 static struct gdsc ufs_phy_gdsc = {
3117 .name = "ufs_phy_gdsc",
3119 .pwrsts = PWRSTS_OFF_ON,
3120 .flags = POLL_CFG_GDSCR,
3123 static struct gdsc usb30_prim_gdsc = {
3126 .name = "usb30_prim_gdsc",
3128 .pwrsts = PWRSTS_OFF_ON,
3129 .flags = POLL_CFG_GDSCR,
3132 static struct gdsc usb30_sec_gdsc = {
3135 .name = "usb30_sec_gdsc",
3137 .pwrsts = PWRSTS_OFF_ON,
3138 .flags = POLL_CFG_GDSCR,
3141 static struct gdsc hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc = {
3144 .name = "hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc",
3146 .pwrsts = PWRSTS_OFF_ON,
3149 static struct gdsc hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc = {
3152 .name = "hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc",
3154 .pwrsts = PWRSTS_OFF_ON,
3157 static struct gdsc hlos1_vote_aggre_noc_mmu_tbu1_gdsc = {
3160 .name = "hlos1_vote_aggre_noc_mmu_tbu1_gdsc",
3162 .pwrsts = PWRSTS_OFF_ON,
3165 static struct gdsc hlos1_vote_aggre_noc_mmu_tbu2_gdsc = {
3168 .name = "hlos1_vote_aggre_noc_mmu_tbu2_gdsc",
3170 .pwrsts = PWRSTS_OFF_ON,
3173 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = {
3176 .name = "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc",
3178 .pwrsts = PWRSTS_OFF_ON,
3181 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc = {
3184 .name = "hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc",
3186 .pwrsts = PWRSTS_OFF_ON,
3189 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf_gdsc = {
3192 .name = "hlos1_vote_mmnoc_mmu_tbu_sf_gdsc",
3194 .pwrsts = PWRSTS_OFF_ON,
3197 static struct clk_regmap *gcc_sdm845_clocks[] = {
3198 [GCC_AGGRE_NOC_PCIE_TBU_CLK] = &gcc_aggre_noc_pcie_tbu_clk.clkr,
3199 [GCC_AGGRE_UFS_CARD_AXI_CLK] = &gcc_aggre_ufs_card_axi_clk.clkr,
3200 [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
3201 [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
3202 [GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr,
3203 [GCC_APC_VS_CLK] = &gcc_apc_vs_clk.clkr,
3204 [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3205 [GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr,
3206 [GCC_CAMERA_AXI_CLK] = &gcc_camera_axi_clk.clkr,
3207 [GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr,
3208 [GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr,
3209 [GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr,
3210 [GCC_CE1_CLK] = &gcc_ce1_clk.clkr,
3211 [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
3212 [GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr,
3213 [GCC_CPUSS_AHB_CLK] = &gcc_cpuss_ahb_clk.clkr,
3214 [GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr,
3215 [GCC_CPUSS_RBCPR_CLK] = &gcc_cpuss_rbcpr_clk.clkr,
3216 [GCC_CPUSS_RBCPR_CLK_SRC] = &gcc_cpuss_rbcpr_clk_src.clkr,
3217 [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
3218 [GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr,
3219 [GCC_DISP_AXI_CLK] = &gcc_disp_axi_clk.clkr,
3220 [GCC_DISP_GPLL0_CLK_SRC] = &gcc_disp_gpll0_clk_src.clkr,
3221 [GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr,
3222 [GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr,
3223 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3224 [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3225 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3226 [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3227 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3228 [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
3229 [GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,
3230 [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
3231 [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
3232 [GCC_GPU_IREF_CLK] = &gcc_gpu_iref_clk.clkr,
3233 [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
3234 [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
3235 [GCC_GPU_VS_CLK] = &gcc_gpu_vs_clk.clkr,
3236 [GCC_MSS_AXIS2_CLK] = &gcc_mss_axis2_clk.clkr,
3237 [GCC_MSS_CFG_AHB_CLK] = &gcc_mss_cfg_ahb_clk.clkr,
3238 [GCC_MSS_GPLL0_DIV_CLK_SRC] = &gcc_mss_gpll0_div_clk_src.clkr,
3239 [GCC_MSS_MFAB_AXIS_CLK] = &gcc_mss_mfab_axis_clk.clkr,
3240 [GCC_MSS_Q6_MEMNOC_AXI_CLK] = &gcc_mss_q6_memnoc_axi_clk.clkr,
3241 [GCC_MSS_SNOC_AXI_CLK] = &gcc_mss_snoc_axi_clk.clkr,
3242 [GCC_MSS_VS_CLK] = &gcc_mss_vs_clk.clkr,
3243 [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
3244 [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
3245 [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
3246 [GCC_PCIE_0_CLKREF_CLK] = &gcc_pcie_0_clkref_clk.clkr,
3247 [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
3248 [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
3249 [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
3250 [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
3251 [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
3252 [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
3253 [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
3254 [GCC_PCIE_1_CLKREF_CLK] = &gcc_pcie_1_clkref_clk.clkr,
3255 [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
3256 [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
3257 [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
3258 [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
3259 [GCC_PCIE_PHY_AUX_CLK] = &gcc_pcie_phy_aux_clk.clkr,
3260 [GCC_PCIE_PHY_REFGEN_CLK] = &gcc_pcie_phy_refgen_clk.clkr,
3261 [GCC_PCIE_PHY_REFGEN_CLK_SRC] = &gcc_pcie_phy_refgen_clk_src.clkr,
3262 [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3263 [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
3264 [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3265 [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
3266 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
3267 [GCC_QMIP_CAMERA_AHB_CLK] = &gcc_qmip_camera_ahb_clk.clkr,
3268 [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
3269 [GCC_QMIP_VIDEO_AHB_CLK] = &gcc_qmip_video_ahb_clk.clkr,
3270 [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
3271 [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
3272 [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
3273 [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
3274 [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
3275 [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
3276 [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
3277 [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
3278 [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
3279 [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
3280 [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
3281 [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
3282 [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
3283 [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
3284 [GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
3285 [GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
3286 [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
3287 [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
3288 [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
3289 [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
3290 [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
3291 [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
3292 [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
3293 [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
3294 [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
3295 [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
3296 [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
3297 [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
3298 [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,
3299 [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,
3300 [GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr,
3301 [GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr,
3302 [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
3303 [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
3304 [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
3305 [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
3306 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
3307 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
3308 [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
3309 [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
3310 [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
3311 [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
3312 [GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,
3313 [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
3314 [GCC_TSIF_INACTIVITY_TIMERS_CLK] =
3315 &gcc_tsif_inactivity_timers_clk.clkr,
3316 [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
3317 [GCC_TSIF_REF_CLK_SRC] = &gcc_tsif_ref_clk_src.clkr,
3318 [GCC_UFS_CARD_AHB_CLK] = &gcc_ufs_card_ahb_clk.clkr,
3319 [GCC_UFS_CARD_AXI_CLK] = &gcc_ufs_card_axi_clk.clkr,
3320 [GCC_UFS_CARD_AXI_CLK_SRC] = &gcc_ufs_card_axi_clk_src.clkr,
3321 [GCC_UFS_CARD_CLKREF_CLK] = &gcc_ufs_card_clkref_clk.clkr,
3322 [GCC_UFS_CARD_ICE_CORE_CLK] = &gcc_ufs_card_ice_core_clk.clkr,
3323 [GCC_UFS_CARD_ICE_CORE_CLK_SRC] = &gcc_ufs_card_ice_core_clk_src.clkr,
3324 [GCC_UFS_CARD_PHY_AUX_CLK] = &gcc_ufs_card_phy_aux_clk.clkr,
3325 [GCC_UFS_CARD_PHY_AUX_CLK_SRC] = &gcc_ufs_card_phy_aux_clk_src.clkr,
3326 [GCC_UFS_CARD_RX_SYMBOL_0_CLK] = &gcc_ufs_card_rx_symbol_0_clk.clkr,
3327 [GCC_UFS_CARD_RX_SYMBOL_1_CLK] = &gcc_ufs_card_rx_symbol_1_clk.clkr,
3328 [GCC_UFS_CARD_TX_SYMBOL_0_CLK] = &gcc_ufs_card_tx_symbol_0_clk.clkr,
3329 [GCC_UFS_CARD_UNIPRO_CORE_CLK] = &gcc_ufs_card_unipro_core_clk.clkr,
3330 [GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC] =
3331 &gcc_ufs_card_unipro_core_clk_src.clkr,
3332 [GCC_UFS_MEM_CLKREF_CLK] = &gcc_ufs_mem_clkref_clk.clkr,
3333 [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
3334 [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
3335 [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
3336 [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
3337 [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
3338 [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
3339 [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
3340 [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
3341 [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
3342 [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
3343 [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
3344 [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] =
3345 &gcc_ufs_phy_unipro_core_clk_src.clkr,
3346 [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
3347 [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
3348 [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
3349 [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] =
3350 &gcc_usb30_prim_mock_utmi_clk_src.clkr,
3351 [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
3352 [GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,
3353 [GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr,
3354 [GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,
3355 [GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] =
3356 &gcc_usb30_sec_mock_utmi_clk_src.clkr,
3357 [GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,
3358 [GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,
3359 [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
3360 [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
3361 [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
3362 [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
3363 [GCC_USB3_SEC_CLKREF_CLK] = &gcc_usb3_sec_clkref_clk.clkr,
3364 [GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr,
3365 [GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr,
3366 [GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr,
3367 [GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr,
3368 [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
3369 [GCC_VDDA_VS_CLK] = &gcc_vdda_vs_clk.clkr,
3370 [GCC_VDDCX_VS_CLK] = &gcc_vddcx_vs_clk.clkr,
3371 [GCC_VDDMX_VS_CLK] = &gcc_vddmx_vs_clk.clkr,
3372 [GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr,
3373 [GCC_VIDEO_AXI_CLK] = &gcc_video_axi_clk.clkr,
3374 [GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr,
3375 [GCC_VS_CTRL_AHB_CLK] = &gcc_vs_ctrl_ahb_clk.clkr,
3376 [GCC_VS_CTRL_CLK] = &gcc_vs_ctrl_clk.clkr,
3377 [GCC_VS_CTRL_CLK_SRC] = &gcc_vs_ctrl_clk_src.clkr,
3378 [GCC_VSENSOR_CLK_SRC] = &gcc_vsensor_clk_src.clkr,
3379 [GPLL0] = &gpll0.clkr,
3380 [GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,
3381 [GPLL4] = &gpll4.clkr,
3382 [GCC_CPUSS_DVM_BUS_CLK] = &gcc_cpuss_dvm_bus_clk.clkr,
3383 [GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr,
3386 static const struct qcom_reset_map gcc_sdm845_resets[] = {
3387 [GCC_MMSS_BCR] = { 0xb000 },
3388 [GCC_PCIE_0_BCR] = { 0x6b000 },
3389 [GCC_PCIE_1_BCR] = { 0x8d000 },
3390 [GCC_PCIE_PHY_BCR] = { 0x6f000 },
3391 [GCC_PDM_BCR] = { 0x33000 },
3392 [GCC_PRNG_BCR] = { 0x34000 },
3393 [GCC_QUPV3_WRAPPER_0_BCR] = { 0x17000 },
3394 [GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 },
3395 [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
3396 [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
3397 [GCC_SDCC2_BCR] = { 0x14000 },
3398 [GCC_SDCC4_BCR] = { 0x16000 },
3399 [GCC_TSIF_BCR] = { 0x36000 },
3400 [GCC_UFS_CARD_BCR] = { 0x75000 },
3401 [GCC_UFS_PHY_BCR] = { 0x77000 },
3402 [GCC_USB30_PRIM_BCR] = { 0xf000 },
3403 [GCC_USB30_SEC_BCR] = { 0x10000 },
3404 [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 },
3405 [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 },
3406 [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 },
3407 [GCC_USB3_PHY_SEC_BCR] = { 0x5000c },
3408 [GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 },
3409 [GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 },
3410 [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 },
3411 [GCC_PCIE_0_PHY_BCR] = { 0x6c01c },
3412 [GCC_PCIE_1_PHY_BCR] = { 0x8e01c },
3415 static struct gdsc *gcc_sdm845_gdscs[] = {
3416 [PCIE_0_GDSC] = &pcie_0_gdsc,
3417 [PCIE_1_GDSC] = &pcie_1_gdsc,
3418 [UFS_CARD_GDSC] = &ufs_card_gdsc,
3419 [UFS_PHY_GDSC] = &ufs_phy_gdsc,
3420 [USB30_PRIM_GDSC] = &usb30_prim_gdsc,
3421 [USB30_SEC_GDSC] = &usb30_sec_gdsc,
3422 [HLOS1_VOTE_AGGRE_NOC_MMU_AUDIO_TBU_GDSC] =
3423 &hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc,
3424 [HLOS1_VOTE_AGGRE_NOC_MMU_PCIE_TBU_GDSC] =
3425 &hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc,
3426 [HLOS1_VOTE_AGGRE_NOC_MMU_TBU1_GDSC] =
3427 &hlos1_vote_aggre_noc_mmu_tbu1_gdsc,
3428 [HLOS1_VOTE_AGGRE_NOC_MMU_TBU2_GDSC] =
3429 &hlos1_vote_aggre_noc_mmu_tbu2_gdsc,
3430 [HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC] =
3431 &hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc,
3432 [HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC] =
3433 &hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc,
3434 [HLOS1_VOTE_MMNOC_MMU_TBU_SF_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf_gdsc,
3437 static const struct regmap_config gcc_sdm845_regmap_config = {
3441 .max_register = 0x182090,
3445 static const struct qcom_cc_desc gcc_sdm845_desc = {
3446 .config = &gcc_sdm845_regmap_config,
3447 .clks = gcc_sdm845_clocks,
3448 .num_clks = ARRAY_SIZE(gcc_sdm845_clocks),
3449 .resets = gcc_sdm845_resets,
3450 .num_resets = ARRAY_SIZE(gcc_sdm845_resets),
3451 .gdscs = gcc_sdm845_gdscs,
3452 .num_gdscs = ARRAY_SIZE(gcc_sdm845_gdscs),
3455 static const struct of_device_id gcc_sdm845_match_table[] = {
3456 { .compatible = "qcom,gcc-sdm845" },
3459 MODULE_DEVICE_TABLE(of, gcc_sdm845_match_table);
3461 static int gcc_sdm845_probe(struct platform_device *pdev)
3463 struct regmap *regmap;
3465 regmap = qcom_cc_map(pdev, &gcc_sdm845_desc);
3467 return PTR_ERR(regmap);
3469 /* Disable the GPLL0 active input to MMSS and GPU via MISC registers */
3470 regmap_update_bits(regmap, 0x09ffc, 0x3, 0x3);
3471 regmap_update_bits(regmap, 0x71028, 0x3, 0x3);
3473 return qcom_cc_really_probe(pdev, &gcc_sdm845_desc, regmap);
3476 static struct platform_driver gcc_sdm845_driver = {
3477 .probe = gcc_sdm845_probe,
3479 .name = "gcc-sdm845",
3480 .of_match_table = gcc_sdm845_match_table,
3484 static int __init gcc_sdm845_init(void)
3486 return platform_driver_register(&gcc_sdm845_driver);
3488 subsys_initcall(gcc_sdm845_init);
3490 static void __exit gcc_sdm845_exit(void)
3492 platform_driver_unregister(&gcc_sdm845_driver);
3494 module_exit(gcc_sdm845_exit);
3496 MODULE_DESCRIPTION("QTI GCC SDM845 Driver");
3497 MODULE_LICENSE("GPL v2");
3498 MODULE_ALIAS("platform:gcc-sdm845");