1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2020, The Linux Foundation. All rights reserved.
6 #include <linux/clk-provider.h>
8 #include <linux/kernel.h>
9 #include <linux/module.h>
10 #include <linux/of_device.h>
12 #include <linux/regmap.h>
14 #include <dt-bindings/clock/qcom,gcc-sm8250.h>
16 #include "clk-alpha-pll.h"
17 #include "clk-branch.h"
19 #include "clk-regmap.h"
20 #include "clk-regmap-divider.h"
28 P_CORE_BI_PLL_TEST_SE
,
36 static struct clk_alpha_pll gpll0
= {
38 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
40 .enable_reg
= 0x52018,
41 .enable_mask
= BIT(0),
42 .hw
.init
= &(struct clk_init_data
){
44 .parent_data
= &(const struct clk_parent_data
){
48 .ops
= &clk_alpha_pll_fixed_lucid_ops
,
53 static const struct clk_div_table post_div_table_gpll0_out_even
[] = {
58 static struct clk_alpha_pll_postdiv gpll0_out_even
= {
61 .post_div_table
= post_div_table_gpll0_out_even
,
62 .num_post_div
= ARRAY_SIZE(post_div_table_gpll0_out_even
),
64 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
65 .clkr
.hw
.init
= &(struct clk_init_data
){
66 .name
= "gpll0_out_even",
67 .parent_data
= &(const struct clk_parent_data
){
71 .ops
= &clk_alpha_pll_postdiv_lucid_ops
,
75 static struct clk_alpha_pll gpll4
= {
77 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
79 .enable_reg
= 0x52018,
80 .enable_mask
= BIT(4),
81 .hw
.init
= &(struct clk_init_data
){
83 .parent_data
= &(const struct clk_parent_data
){
87 .ops
= &clk_alpha_pll_fixed_lucid_ops
,
92 static struct clk_alpha_pll gpll9
= {
94 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID
],
96 .enable_reg
= 0x52018,
97 .enable_mask
= BIT(9),
98 .hw
.init
= &(struct clk_init_data
){
100 .parent_data
= &(const struct clk_parent_data
){
101 .fw_name
= "bi_tcxo",
104 .ops
= &clk_alpha_pll_fixed_lucid_ops
,
109 static const struct parent_map gcc_parent_map_0
[] = {
111 { P_GPLL0_OUT_MAIN
, 1 },
112 { P_GPLL0_OUT_EVEN
, 6 },
115 static const struct clk_parent_data gcc_parent_data_0
[] = {
116 { .fw_name
= "bi_tcxo" },
117 { .hw
= &gpll0
.clkr
.hw
},
118 { .hw
= &gpll0_out_even
.clkr
.hw
},
121 static const struct clk_parent_data gcc_parent_data_0_ao
[] = {
122 { .fw_name
= "bi_tcxo_ao" },
123 { .hw
= &gpll0
.clkr
.hw
},
124 { .hw
= &gpll0_out_even
.clkr
.hw
},
127 static const struct parent_map gcc_parent_map_1
[] = {
129 { P_GPLL0_OUT_MAIN
, 1 },
131 { P_GPLL0_OUT_EVEN
, 6 },
134 static const struct clk_parent_data gcc_parent_data_1
[] = {
135 { .fw_name
= "bi_tcxo" },
136 { .hw
= &gpll0
.clkr
.hw
},
137 { .fw_name
= "sleep_clk" },
138 { .hw
= &gpll0_out_even
.clkr
.hw
},
141 static const struct parent_map gcc_parent_map_2
[] = {
146 static const struct clk_parent_data gcc_parent_data_2
[] = {
147 { .fw_name
= "bi_tcxo" },
148 { .fw_name
= "sleep_clk" },
151 static const struct parent_map gcc_parent_map_3
[] = {
155 static const struct clk_parent_data gcc_parent_data_3
[] = {
156 { .fw_name
= "bi_tcxo" },
159 static const struct parent_map gcc_parent_map_4
[] = {
161 { P_GPLL0_OUT_MAIN
, 1 },
162 { P_GPLL9_OUT_MAIN
, 2 },
163 { P_GPLL4_OUT_MAIN
, 5 },
164 { P_GPLL0_OUT_EVEN
, 6 },
167 static const struct clk_parent_data gcc_parent_data_4
[] = {
168 { .fw_name
= "bi_tcxo" },
169 { .hw
= &gpll0
.clkr
.hw
},
170 { .hw
= &gpll9
.clkr
.hw
},
171 { .hw
= &gpll4
.clkr
.hw
},
172 { .hw
= &gpll0_out_even
.clkr
.hw
},
175 static const struct parent_map gcc_parent_map_5
[] = {
177 { P_GPLL0_OUT_MAIN
, 1 },
178 { P_AUD_REF_CLK
, 2 },
179 { P_GPLL0_OUT_EVEN
, 6 },
182 static const struct clk_parent_data gcc_parent_data_5
[] = {
183 { .fw_name
= "bi_tcxo" },
184 { .hw
= &gpll0
.clkr
.hw
},
185 { .fw_name
= "aud_ref_clk" },
186 { .hw
= &gpll0_out_even
.clkr
.hw
},
189 static const struct freq_tbl ftbl_gcc_cpuss_ahb_clk_src
[] = {
190 F(19200000, P_BI_TCXO
, 1, 0, 0),
194 static struct clk_rcg2 gcc_cpuss_ahb_clk_src
= {
198 .parent_map
= gcc_parent_map_0
,
199 .freq_tbl
= ftbl_gcc_cpuss_ahb_clk_src
,
200 .clkr
.hw
.init
= &(struct clk_init_data
){
201 .name
= "gcc_cpuss_ahb_clk_src",
202 .parent_data
= gcc_parent_data_0_ao
,
204 .flags
= CLK_SET_RATE_PARENT
,
205 .ops
= &clk_rcg2_ops
,
209 static const struct freq_tbl ftbl_gcc_gp1_clk_src
[] = {
210 F(19200000, P_BI_TCXO
, 1, 0, 0),
211 F(25000000, P_GPLL0_OUT_EVEN
, 12, 0, 0),
212 F(50000000, P_GPLL0_OUT_EVEN
, 6, 0, 0),
213 F(100000000, P_GPLL0_OUT_MAIN
, 6, 0, 0),
214 F(200000000, P_GPLL0_OUT_MAIN
, 3, 0, 0),
218 static struct clk_rcg2 gcc_gp1_clk_src
= {
222 .parent_map
= gcc_parent_map_1
,
223 .freq_tbl
= ftbl_gcc_gp1_clk_src
,
224 .clkr
.hw
.init
= &(struct clk_init_data
){
225 .name
= "gcc_gp1_clk_src",
226 .parent_data
= gcc_parent_data_1
,
228 .ops
= &clk_rcg2_ops
,
232 static struct clk_rcg2 gcc_gp2_clk_src
= {
236 .parent_map
= gcc_parent_map_1
,
237 .freq_tbl
= ftbl_gcc_gp1_clk_src
,
238 .clkr
.hw
.init
= &(struct clk_init_data
){
239 .name
= "gcc_gp2_clk_src",
240 .parent_data
= gcc_parent_data_1
,
242 .ops
= &clk_rcg2_ops
,
246 static struct clk_rcg2 gcc_gp3_clk_src
= {
250 .parent_map
= gcc_parent_map_1
,
251 .freq_tbl
= ftbl_gcc_gp1_clk_src
,
252 .clkr
.hw
.init
= &(struct clk_init_data
){
253 .name
= "gcc_gp3_clk_src",
254 .parent_data
= gcc_parent_data_1
,
256 .ops
= &clk_rcg2_ops
,
260 static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src
[] = {
261 F(9600000, P_BI_TCXO
, 2, 0, 0),
262 F(19200000, P_BI_TCXO
, 1, 0, 0),
266 static struct clk_rcg2 gcc_pcie_0_aux_clk_src
= {
270 .parent_map
= gcc_parent_map_2
,
271 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
272 .clkr
.hw
.init
= &(struct clk_init_data
){
273 .name
= "gcc_pcie_0_aux_clk_src",
274 .parent_data
= gcc_parent_data_2
,
276 .ops
= &clk_rcg2_ops
,
280 static struct clk_rcg2 gcc_pcie_1_aux_clk_src
= {
284 .parent_map
= gcc_parent_map_2
,
285 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
286 .clkr
.hw
.init
= &(struct clk_init_data
){
287 .name
= "gcc_pcie_1_aux_clk_src",
288 .parent_data
= gcc_parent_data_2
,
290 .ops
= &clk_rcg2_ops
,
294 static struct clk_rcg2 gcc_pcie_2_aux_clk_src
= {
298 .parent_map
= gcc_parent_map_2
,
299 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
300 .clkr
.hw
.init
= &(struct clk_init_data
){
301 .name
= "gcc_pcie_2_aux_clk_src",
302 .parent_data
= gcc_parent_data_2
,
304 .ops
= &clk_rcg2_ops
,
308 static const struct freq_tbl ftbl_gcc_pcie_phy_refgen_clk_src
[] = {
309 F(19200000, P_BI_TCXO
, 1, 0, 0),
310 F(100000000, P_GPLL0_OUT_MAIN
, 6, 0, 0),
314 static struct clk_rcg2 gcc_pcie_phy_refgen_clk_src
= {
318 .parent_map
= gcc_parent_map_0
,
319 .freq_tbl
= ftbl_gcc_pcie_phy_refgen_clk_src
,
320 .clkr
.hw
.init
= &(struct clk_init_data
){
321 .name
= "gcc_pcie_phy_refgen_clk_src",
322 .parent_data
= gcc_parent_data_0_ao
,
324 .ops
= &clk_rcg2_ops
,
328 static const struct freq_tbl ftbl_gcc_pdm2_clk_src
[] = {
329 F(9600000, P_BI_TCXO
, 2, 0, 0),
330 F(19200000, P_BI_TCXO
, 1, 0, 0),
331 F(60000000, P_GPLL0_OUT_MAIN
, 10, 0, 0),
335 static struct clk_rcg2 gcc_pdm2_clk_src
= {
339 .parent_map
= gcc_parent_map_0
,
340 .freq_tbl
= ftbl_gcc_pdm2_clk_src
,
341 .clkr
.hw
.init
= &(struct clk_init_data
){
342 .name
= "gcc_pdm2_clk_src",
343 .parent_data
= gcc_parent_data_0
,
345 .ops
= &clk_rcg2_ops
,
349 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src
[] = {
350 F(7372800, P_GPLL0_OUT_EVEN
, 1, 384, 15625),
351 F(14745600, P_GPLL0_OUT_EVEN
, 1, 768, 15625),
352 F(19200000, P_BI_TCXO
, 1, 0, 0),
353 F(29491200, P_GPLL0_OUT_EVEN
, 1, 1536, 15625),
354 F(32000000, P_GPLL0_OUT_EVEN
, 1, 8, 75),
355 F(48000000, P_GPLL0_OUT_EVEN
, 1, 4, 25),
356 F(50000000, P_GPLL0_OUT_EVEN
, 6, 0, 0),
357 F(64000000, P_GPLL0_OUT_EVEN
, 1, 16, 75),
358 F(75000000, P_GPLL0_OUT_EVEN
, 4, 0, 0),
359 F(80000000, P_GPLL0_OUT_EVEN
, 1, 4, 15),
360 F(96000000, P_GPLL0_OUT_EVEN
, 1, 8, 25),
361 F(100000000, P_GPLL0_OUT_MAIN
, 6, 0, 0),
362 F(102400000, P_GPLL0_OUT_EVEN
, 1, 128, 375),
363 F(112000000, P_GPLL0_OUT_EVEN
, 1, 28, 75),
364 F(117964800, P_GPLL0_OUT_EVEN
, 1, 6144, 15625),
365 F(120000000, P_GPLL0_OUT_EVEN
, 2.5, 0, 0),
369 static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init
= {
370 .name
= "gcc_qupv3_wrap0_s0_clk_src",
371 .parent_data
= gcc_parent_data_0
,
373 .ops
= &clk_rcg2_ops
,
376 static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src
= {
380 .parent_map
= gcc_parent_map_0
,
381 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s0_clk_src
,
382 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s0_clk_src_init
,
385 static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init
= {
386 .name
= "gcc_qupv3_wrap0_s1_clk_src",
387 .parent_data
= gcc_parent_data_0
,
389 .ops
= &clk_rcg2_ops
,
392 static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src
= {
396 .parent_map
= gcc_parent_map_0
,
397 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s0_clk_src
,
398 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s1_clk_src_init
,
401 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s2_clk_src
[] = {
402 F(7372800, P_GPLL0_OUT_EVEN
, 1, 384, 15625),
403 F(14745600, P_GPLL0_OUT_EVEN
, 1, 768, 15625),
404 F(19200000, P_BI_TCXO
, 1, 0, 0),
405 F(29491200, P_GPLL0_OUT_EVEN
, 1, 1536, 15625),
406 F(32000000, P_GPLL0_OUT_EVEN
, 1, 8, 75),
407 F(48000000, P_GPLL0_OUT_EVEN
, 1, 4, 25),
408 F(50000000, P_GPLL0_OUT_EVEN
, 6, 0, 0),
409 F(64000000, P_GPLL0_OUT_EVEN
, 1, 16, 75),
410 F(75000000, P_GPLL0_OUT_EVEN
, 4, 0, 0),
411 F(80000000, P_GPLL0_OUT_EVEN
, 1, 4, 15),
412 F(96000000, P_GPLL0_OUT_EVEN
, 1, 8, 25),
413 F(100000000, P_GPLL0_OUT_MAIN
, 6, 0, 0),
417 static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init
= {
418 .name
= "gcc_qupv3_wrap0_s2_clk_src",
419 .parent_data
= gcc_parent_data_0
,
421 .ops
= &clk_rcg2_ops
,
424 static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src
= {
428 .parent_map
= gcc_parent_map_0
,
429 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
430 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s2_clk_src_init
,
433 static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init
= {
434 .name
= "gcc_qupv3_wrap0_s3_clk_src",
435 .parent_data
= gcc_parent_data_0
,
437 .ops
= &clk_rcg2_ops
,
440 static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src
= {
444 .parent_map
= gcc_parent_map_0
,
445 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
446 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s3_clk_src_init
,
449 static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init
= {
450 .name
= "gcc_qupv3_wrap0_s4_clk_src",
451 .parent_data
= gcc_parent_data_0
,
453 .ops
= &clk_rcg2_ops
,
456 static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src
= {
460 .parent_map
= gcc_parent_map_0
,
461 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
462 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s4_clk_src_init
,
465 static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init
= {
466 .name
= "gcc_qupv3_wrap0_s5_clk_src",
467 .parent_data
= gcc_parent_data_0
,
469 .ops
= &clk_rcg2_ops
,
472 static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src
= {
476 .parent_map
= gcc_parent_map_0
,
477 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
478 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s5_clk_src_init
,
481 static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init
= {
482 .name
= "gcc_qupv3_wrap0_s6_clk_src",
483 .parent_data
= gcc_parent_data_0
,
485 .ops
= &clk_rcg2_ops
,
488 static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src
= {
492 .parent_map
= gcc_parent_map_0
,
493 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
494 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s6_clk_src_init
,
497 static struct clk_init_data gcc_qupv3_wrap0_s7_clk_src_init
= {
498 .name
= "gcc_qupv3_wrap0_s7_clk_src",
499 .parent_data
= gcc_parent_data_0
,
501 .ops
= &clk_rcg2_ops
,
504 static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src
= {
508 .parent_map
= gcc_parent_map_0
,
509 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
510 .clkr
.hw
.init
= &gcc_qupv3_wrap0_s7_clk_src_init
,
513 static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init
= {
514 .name
= "gcc_qupv3_wrap1_s0_clk_src",
515 .parent_data
= gcc_parent_data_0
,
517 .ops
= &clk_rcg2_ops
,
520 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src
= {
524 .parent_map
= gcc_parent_map_0
,
525 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s0_clk_src
,
526 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s0_clk_src_init
,
529 static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init
= {
530 .name
= "gcc_qupv3_wrap1_s1_clk_src",
531 .parent_data
= gcc_parent_data_0
,
533 .ops
= &clk_rcg2_ops
,
536 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src
= {
540 .parent_map
= gcc_parent_map_0
,
541 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
542 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s1_clk_src_init
,
545 static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init
= {
546 .name
= "gcc_qupv3_wrap1_s2_clk_src",
547 .parent_data
= gcc_parent_data_0
,
549 .ops
= &clk_rcg2_ops
,
552 static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src
= {
556 .parent_map
= gcc_parent_map_0
,
557 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
558 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s2_clk_src_init
,
561 static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init
= {
562 .name
= "gcc_qupv3_wrap1_s3_clk_src",
563 .parent_data
= gcc_parent_data_0
,
565 .ops
= &clk_rcg2_ops
,
568 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src
= {
572 .parent_map
= gcc_parent_map_0
,
573 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
574 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s3_clk_src_init
,
577 static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init
= {
578 .name
= "gcc_qupv3_wrap1_s4_clk_src",
579 .parent_data
= gcc_parent_data_0
,
581 .ops
= &clk_rcg2_ops
,
584 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src
= {
588 .parent_map
= gcc_parent_map_0
,
589 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
590 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s4_clk_src_init
,
593 static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init
= {
594 .name
= "gcc_qupv3_wrap1_s5_clk_src",
595 .parent_data
= gcc_parent_data_0
,
597 .ops
= &clk_rcg2_ops
,
600 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src
= {
604 .parent_map
= gcc_parent_map_0
,
605 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
606 .clkr
.hw
.init
= &gcc_qupv3_wrap1_s5_clk_src_init
,
609 static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init
= {
610 .name
= "gcc_qupv3_wrap2_s0_clk_src",
611 .parent_data
= gcc_parent_data_0
,
613 .ops
= &clk_rcg2_ops
,
616 static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src
= {
620 .parent_map
= gcc_parent_map_0
,
621 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s0_clk_src
,
622 .clkr
.hw
.init
= &gcc_qupv3_wrap2_s0_clk_src_init
,
625 static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init
= {
626 .name
= "gcc_qupv3_wrap2_s1_clk_src",
627 .parent_data
= gcc_parent_data_0
,
629 .ops
= &clk_rcg2_ops
,
632 static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src
= {
636 .parent_map
= gcc_parent_map_0
,
637 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
638 .clkr
.hw
.init
= &gcc_qupv3_wrap2_s1_clk_src_init
,
641 static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init
= {
642 .name
= "gcc_qupv3_wrap2_s2_clk_src",
643 .parent_data
= gcc_parent_data_0
,
645 .ops
= &clk_rcg2_ops
,
648 static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src
= {
652 .parent_map
= gcc_parent_map_0
,
653 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
654 .clkr
.hw
.init
= &gcc_qupv3_wrap2_s2_clk_src_init
,
657 static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init
= {
658 .name
= "gcc_qupv3_wrap2_s3_clk_src",
659 .parent_data
= gcc_parent_data_0
,
661 .ops
= &clk_rcg2_ops
,
664 static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src
= {
668 .parent_map
= gcc_parent_map_0
,
669 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
670 .clkr
.hw
.init
= &gcc_qupv3_wrap2_s3_clk_src_init
,
673 static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init
= {
674 .name
= "gcc_qupv3_wrap2_s4_clk_src",
675 .parent_data
= gcc_parent_data_0
,
677 .ops
= &clk_rcg2_ops
,
680 static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src
= {
684 .parent_map
= gcc_parent_map_0
,
685 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
686 .clkr
.hw
.init
= &gcc_qupv3_wrap2_s4_clk_src_init
,
689 static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init
= {
690 .name
= "gcc_qupv3_wrap2_s5_clk_src",
691 .parent_data
= gcc_parent_data_0
,
693 .ops
= &clk_rcg2_ops
,
696 static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src
= {
700 .parent_map
= gcc_parent_map_0
,
701 .freq_tbl
= ftbl_gcc_qupv3_wrap0_s2_clk_src
,
702 .clkr
.hw
.init
= &gcc_qupv3_wrap2_s5_clk_src_init
,
705 static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src
[] = {
706 F(400000, P_BI_TCXO
, 12, 1, 4),
707 F(19200000, P_BI_TCXO
, 1, 0, 0),
708 F(25000000, P_GPLL0_OUT_EVEN
, 12, 0, 0),
709 F(50000000, P_GPLL0_OUT_EVEN
, 6, 0, 0),
710 F(100000000, P_GPLL0_OUT_MAIN
, 6, 0, 0),
711 F(202000000, P_GPLL9_OUT_MAIN
, 4, 0, 0),
715 static struct clk_rcg2 gcc_sdcc2_apps_clk_src
= {
719 .parent_map
= gcc_parent_map_4
,
720 .freq_tbl
= ftbl_gcc_sdcc2_apps_clk_src
,
721 .clkr
.hw
.init
= &(struct clk_init_data
){
722 .name
= "gcc_sdcc2_apps_clk_src",
723 .parent_data
= gcc_parent_data_4
,
725 .ops
= &clk_rcg2_ops
,
729 static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src
[] = {
730 F(400000, P_BI_TCXO
, 12, 1, 4),
731 F(19200000, P_BI_TCXO
, 1, 0, 0),
732 F(25000000, P_GPLL0_OUT_EVEN
, 12, 0, 0),
733 F(50000000, P_GPLL0_OUT_EVEN
, 6, 0, 0),
734 F(100000000, P_GPLL0_OUT_MAIN
, 6, 0, 0),
738 static struct clk_rcg2 gcc_sdcc4_apps_clk_src
= {
742 .parent_map
= gcc_parent_map_0
,
743 .freq_tbl
= ftbl_gcc_sdcc4_apps_clk_src
,
744 .clkr
.hw
.init
= &(struct clk_init_data
){
745 .name
= "gcc_sdcc4_apps_clk_src",
746 .parent_data
= gcc_parent_data_0
,
748 .ops
= &clk_rcg2_ops
,
752 static const struct freq_tbl ftbl_gcc_tsif_ref_clk_src
[] = {
753 F(105495, P_BI_TCXO
, 2, 1, 91),
757 static struct clk_rcg2 gcc_tsif_ref_clk_src
= {
761 .parent_map
= gcc_parent_map_5
,
762 .freq_tbl
= ftbl_gcc_tsif_ref_clk_src
,
763 .clkr
.hw
.init
= &(struct clk_init_data
){
764 .name
= "gcc_tsif_ref_clk_src",
765 .parent_data
= gcc_parent_data_5
,
767 .ops
= &clk_rcg2_ops
,
771 static const struct freq_tbl ftbl_gcc_ufs_card_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),
779 static struct clk_rcg2 gcc_ufs_card_axi_clk_src
= {
783 .parent_map
= gcc_parent_map_0
,
784 .freq_tbl
= ftbl_gcc_ufs_card_axi_clk_src
,
785 .clkr
.hw
.init
= &(struct clk_init_data
){
786 .name
= "gcc_ufs_card_axi_clk_src",
787 .parent_data
= gcc_parent_data_0
,
789 .ops
= &clk_rcg2_ops
,
793 static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src
[] = {
794 F(37500000, P_GPLL0_OUT_EVEN
, 8, 0, 0),
795 F(75000000, P_GPLL0_OUT_EVEN
, 4, 0, 0),
796 F(150000000, P_GPLL0_OUT_MAIN
, 4, 0, 0),
797 F(300000000, P_GPLL0_OUT_MAIN
, 2, 0, 0),
801 static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src
= {
805 .parent_map
= gcc_parent_map_0
,
806 .freq_tbl
= ftbl_gcc_ufs_card_ice_core_clk_src
,
807 .clkr
.hw
.init
= &(struct clk_init_data
){
808 .name
= "gcc_ufs_card_ice_core_clk_src",
809 .parent_data
= gcc_parent_data_0
,
811 .ops
= &clk_rcg2_ops
,
815 static const struct freq_tbl ftbl_gcc_ufs_card_phy_aux_clk_src
[] = {
816 F(19200000, P_BI_TCXO
, 1, 0, 0),
820 static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src
= {
824 .parent_map
= gcc_parent_map_3
,
825 .freq_tbl
= ftbl_gcc_ufs_card_phy_aux_clk_src
,
826 .clkr
.hw
.init
= &(struct clk_init_data
){
827 .name
= "gcc_ufs_card_phy_aux_clk_src",
828 .parent_data
= gcc_parent_data_3
,
830 .ops
= &clk_rcg2_ops
,
834 static const struct freq_tbl ftbl_gcc_ufs_card_unipro_core_clk_src
[] = {
835 F(37500000, P_GPLL0_OUT_EVEN
, 8, 0, 0),
836 F(75000000, P_GPLL0_OUT_MAIN
, 8, 0, 0),
837 F(150000000, P_GPLL0_OUT_MAIN
, 4, 0, 0),
841 static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src
= {
845 .parent_map
= gcc_parent_map_0
,
846 .freq_tbl
= ftbl_gcc_ufs_card_unipro_core_clk_src
,
847 .clkr
.hw
.init
= &(struct clk_init_data
){
848 .name
= "gcc_ufs_card_unipro_core_clk_src",
849 .parent_data
= gcc_parent_data_0
,
851 .ops
= &clk_rcg2_ops
,
855 static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src
[] = {
856 F(25000000, P_GPLL0_OUT_EVEN
, 12, 0, 0),
857 F(37500000, P_GPLL0_OUT_EVEN
, 8, 0, 0),
858 F(75000000, P_GPLL0_OUT_EVEN
, 4, 0, 0),
859 F(150000000, P_GPLL0_OUT_MAIN
, 4, 0, 0),
860 F(300000000, P_GPLL0_OUT_MAIN
, 2, 0, 0),
864 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src
= {
868 .parent_map
= gcc_parent_map_0
,
869 .freq_tbl
= ftbl_gcc_ufs_phy_axi_clk_src
,
870 .clkr
.hw
.init
= &(struct clk_init_data
){
871 .name
= "gcc_ufs_phy_axi_clk_src",
872 .parent_data
= gcc_parent_data_0
,
874 .ops
= &clk_rcg2_ops
,
878 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src
= {
882 .parent_map
= gcc_parent_map_0
,
883 .freq_tbl
= ftbl_gcc_ufs_card_ice_core_clk_src
,
884 .clkr
.hw
.init
= &(struct clk_init_data
){
885 .name
= "gcc_ufs_phy_ice_core_clk_src",
886 .parent_data
= gcc_parent_data_0
,
888 .ops
= &clk_rcg2_ops
,
892 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src
= {
896 .parent_map
= gcc_parent_map_3
,
897 .freq_tbl
= ftbl_gcc_pcie_0_aux_clk_src
,
898 .clkr
.hw
.init
= &(struct clk_init_data
){
899 .name
= "gcc_ufs_phy_phy_aux_clk_src",
900 .parent_data
= gcc_parent_data_3
,
902 .ops
= &clk_rcg2_ops
,
906 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src
= {
910 .parent_map
= gcc_parent_map_0
,
911 .freq_tbl
= ftbl_gcc_ufs_card_ice_core_clk_src
,
912 .clkr
.hw
.init
= &(struct clk_init_data
){
913 .name
= "gcc_ufs_phy_unipro_core_clk_src",
914 .parent_data
= gcc_parent_data_0
,
916 .ops
= &clk_rcg2_ops
,
920 static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src
[] = {
921 F(33333333, P_GPLL0_OUT_EVEN
, 9, 0, 0),
922 F(66666667, P_GPLL0_OUT_EVEN
, 4.5, 0, 0),
923 F(133333333, P_GPLL0_OUT_MAIN
, 4.5, 0, 0),
924 F(200000000, P_GPLL0_OUT_MAIN
, 3, 0, 0),
925 F(240000000, P_GPLL0_OUT_MAIN
, 2.5, 0, 0),
929 static struct clk_rcg2 gcc_usb30_prim_master_clk_src
= {
933 .parent_map
= gcc_parent_map_0
,
934 .freq_tbl
= ftbl_gcc_usb30_prim_master_clk_src
,
935 .clkr
.hw
.init
= &(struct clk_init_data
){
936 .name
= "gcc_usb30_prim_master_clk_src",
937 .parent_data
= gcc_parent_data_0
,
939 .ops
= &clk_rcg2_ops
,
943 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src
= {
947 .parent_map
= gcc_parent_map_0
,
948 .freq_tbl
= ftbl_gcc_ufs_card_phy_aux_clk_src
,
949 .clkr
.hw
.init
= &(struct clk_init_data
){
950 .name
= "gcc_usb30_prim_mock_utmi_clk_src",
951 .parent_data
= gcc_parent_data_0
,
953 .ops
= &clk_rcg2_ops
,
957 static struct clk_rcg2 gcc_usb30_sec_master_clk_src
= {
961 .parent_map
= gcc_parent_map_0
,
962 .freq_tbl
= ftbl_gcc_usb30_prim_master_clk_src
,
963 .clkr
.hw
.init
= &(struct clk_init_data
){
964 .name
= "gcc_usb30_sec_master_clk_src",
965 .parent_data
= gcc_parent_data_0
,
967 .ops
= &clk_rcg2_ops
,
971 static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src
= {
975 .parent_map
= gcc_parent_map_0
,
976 .freq_tbl
= ftbl_gcc_ufs_card_phy_aux_clk_src
,
977 .clkr
.hw
.init
= &(struct clk_init_data
){
978 .name
= "gcc_usb30_sec_mock_utmi_clk_src",
979 .parent_data
= gcc_parent_data_0
,
981 .ops
= &clk_rcg2_ops
,
985 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src
= {
989 .parent_map
= gcc_parent_map_2
,
990 .freq_tbl
= ftbl_gcc_ufs_card_phy_aux_clk_src
,
991 .clkr
.hw
.init
= &(struct clk_init_data
){
992 .name
= "gcc_usb3_prim_phy_aux_clk_src",
993 .parent_data
= gcc_parent_data_2
,
995 .ops
= &clk_rcg2_ops
,
999 static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src
= {
1000 .cmd_rcgr
= 0x10064,
1003 .parent_map
= gcc_parent_map_2
,
1004 .freq_tbl
= ftbl_gcc_ufs_card_phy_aux_clk_src
,
1005 .clkr
.hw
.init
= &(struct clk_init_data
){
1006 .name
= "gcc_usb3_sec_phy_aux_clk_src",
1007 .parent_data
= gcc_parent_data_2
,
1009 .ops
= &clk_rcg2_ops
,
1013 static struct clk_regmap_div gcc_cpuss_ahb_postdiv_clk_src
= {
1017 .clkr
.hw
.init
= &(struct clk_init_data
) {
1018 .name
= "gcc_cpuss_ahb_postdiv_clk_src",
1019 .parent_data
= &(const struct clk_parent_data
){
1020 .hw
= &gcc_cpuss_ahb_clk_src
.clkr
.hw
,
1023 .flags
= CLK_SET_RATE_PARENT
,
1024 .ops
= &clk_regmap_div_ro_ops
,
1028 static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src
= {
1032 .clkr
.hw
.init
= &(struct clk_init_data
) {
1033 .name
= "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
1034 .parent_data
= &(const struct clk_parent_data
){
1035 .hw
= &gcc_usb30_prim_mock_utmi_clk_src
.clkr
.hw
,
1038 .flags
= CLK_SET_RATE_PARENT
,
1039 .ops
= &clk_regmap_div_ro_ops
,
1043 static struct clk_regmap_div gcc_usb30_sec_mock_utmi_postdiv_clk_src
= {
1047 .clkr
.hw
.init
= &(struct clk_init_data
) {
1048 .name
= "gcc_usb30_sec_mock_utmi_postdiv_clk_src",
1049 .parent_data
= &(const struct clk_parent_data
){
1050 .hw
= &gcc_usb30_sec_mock_utmi_clk_src
.clkr
.hw
,
1053 .flags
= CLK_SET_RATE_PARENT
,
1054 .ops
= &clk_regmap_div_ro_ops
,
1058 static struct clk_branch gcc_aggre_noc_pcie_tbu_clk
= {
1059 .halt_reg
= 0x9000c,
1060 .halt_check
= BRANCH_HALT_VOTED
,
1062 .enable_reg
= 0x9000c,
1063 .enable_mask
= BIT(0),
1064 .hw
.init
= &(struct clk_init_data
){
1065 .name
= "gcc_aggre_noc_pcie_tbu_clk",
1066 .ops
= &clk_branch2_ops
,
1071 static struct clk_branch gcc_aggre_ufs_card_axi_clk
= {
1072 .halt_reg
= 0x750cc,
1073 .halt_check
= BRANCH_HALT_VOTED
,
1074 .hwcg_reg
= 0x750cc,
1077 .enable_reg
= 0x750cc,
1078 .enable_mask
= BIT(0),
1079 .hw
.init
= &(struct clk_init_data
){
1080 .name
= "gcc_aggre_ufs_card_axi_clk",
1081 .parent_data
= &(const struct clk_parent_data
){
1082 .hw
= &gcc_ufs_card_axi_clk_src
.clkr
.hw
,
1085 .flags
= CLK_SET_RATE_PARENT
,
1086 .ops
= &clk_branch2_ops
,
1091 static struct clk_branch gcc_aggre_ufs_phy_axi_clk
= {
1092 .halt_reg
= 0x770cc,
1093 .halt_check
= BRANCH_HALT_VOTED
,
1094 .hwcg_reg
= 0x770cc,
1097 .enable_reg
= 0x770cc,
1098 .enable_mask
= BIT(0),
1099 .hw
.init
= &(struct clk_init_data
){
1100 .name
= "gcc_aggre_ufs_phy_axi_clk",
1101 .parent_data
= &(const struct clk_parent_data
){
1102 .hw
= &gcc_ufs_phy_axi_clk_src
.clkr
.hw
,
1105 .flags
= CLK_SET_RATE_PARENT
,
1106 .ops
= &clk_branch2_ops
,
1111 static struct clk_branch gcc_aggre_usb3_prim_axi_clk
= {
1113 .halt_check
= BRANCH_HALT_VOTED
,
1115 .enable_reg
= 0xf080,
1116 .enable_mask
= BIT(0),
1117 .hw
.init
= &(struct clk_init_data
){
1118 .name
= "gcc_aggre_usb3_prim_axi_clk",
1119 .parent_data
= &(const struct clk_parent_data
){
1120 .hw
= &gcc_usb30_prim_master_clk_src
.clkr
.hw
,
1123 .flags
= CLK_SET_RATE_PARENT
,
1124 .ops
= &clk_branch2_ops
,
1129 static struct clk_branch gcc_aggre_usb3_sec_axi_clk
= {
1130 .halt_reg
= 0x10080,
1131 .halt_check
= BRANCH_HALT_VOTED
,
1133 .enable_reg
= 0x10080,
1134 .enable_mask
= BIT(0),
1135 .hw
.init
= &(struct clk_init_data
){
1136 .name
= "gcc_aggre_usb3_sec_axi_clk",
1137 .parent_data
= &(const struct clk_parent_data
){
1138 .hw
= &gcc_usb30_sec_master_clk_src
.clkr
.hw
,
1141 .flags
= CLK_SET_RATE_PARENT
,
1142 .ops
= &clk_branch2_ops
,
1147 static struct clk_branch gcc_boot_rom_ahb_clk
= {
1148 .halt_reg
= 0x38004,
1149 .halt_check
= BRANCH_HALT_VOTED
,
1150 .hwcg_reg
= 0x38004,
1153 .enable_reg
= 0x52000,
1154 .enable_mask
= BIT(10),
1155 .hw
.init
= &(struct clk_init_data
){
1156 .name
= "gcc_boot_rom_ahb_clk",
1157 .ops
= &clk_branch2_ops
,
1162 static struct clk_branch gcc_camera_hf_axi_clk
= {
1164 .halt_check
= BRANCH_HALT_VOTED
,
1166 .enable_reg
= 0xb02c,
1167 .enable_mask
= BIT(0),
1168 .hw
.init
= &(struct clk_init_data
){
1169 .name
= "gcc_camera_hf_axi_clk",
1170 .ops
= &clk_branch2_ops
,
1175 static struct clk_branch gcc_camera_sf_axi_clk
= {
1177 .halt_check
= BRANCH_HALT_VOTED
,
1179 .enable_reg
= 0xb030,
1180 .enable_mask
= BIT(0),
1181 .hw
.init
= &(struct clk_init_data
){
1182 .name
= "gcc_camera_sf_axi_clk",
1183 .ops
= &clk_branch2_ops
,
1188 static struct clk_branch gcc_camera_xo_clk
= {
1190 .halt_check
= BRANCH_HALT
,
1192 .enable_reg
= 0xb040,
1193 .enable_mask
= BIT(0),
1194 .hw
.init
= &(struct clk_init_data
){
1195 .name
= "gcc_camera_xo_clk",
1196 .ops
= &clk_branch2_ops
,
1201 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk
= {
1203 .halt_check
= BRANCH_HALT_VOTED
,
1205 .enable_reg
= 0xf07c,
1206 .enable_mask
= BIT(0),
1207 .hw
.init
= &(struct clk_init_data
){
1208 .name
= "gcc_cfg_noc_usb3_prim_axi_clk",
1209 .parent_data
= &(const struct clk_parent_data
){
1210 .hw
= &gcc_usb30_prim_master_clk_src
.clkr
.hw
,
1213 .flags
= CLK_SET_RATE_PARENT
,
1214 .ops
= &clk_branch2_ops
,
1219 static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk
= {
1220 .halt_reg
= 0x1007c,
1221 .halt_check
= BRANCH_HALT_VOTED
,
1223 .enable_reg
= 0x1007c,
1224 .enable_mask
= BIT(0),
1225 .hw
.init
= &(struct clk_init_data
){
1226 .name
= "gcc_cfg_noc_usb3_sec_axi_clk",
1227 .parent_data
= &(const struct clk_parent_data
){
1228 .hw
= &gcc_usb30_sec_master_clk_src
.clkr
.hw
,
1231 .flags
= CLK_SET_RATE_PARENT
,
1232 .ops
= &clk_branch2_ops
,
1237 static struct clk_branch gcc_cpuss_ahb_clk
= {
1238 .halt_reg
= 0x48000,
1239 .halt_check
= BRANCH_HALT_VOTED
,
1241 .enable_reg
= 0x52000,
1242 .enable_mask
= BIT(21),
1243 .hw
.init
= &(struct clk_init_data
){
1244 .name
= "gcc_cpuss_ahb_clk",
1245 .parent_data
= &(const struct clk_parent_data
){
1246 .hw
= &gcc_cpuss_ahb_postdiv_clk_src
.clkr
.hw
,
1249 .flags
= CLK_IS_CRITICAL
| CLK_SET_RATE_PARENT
,
1250 .ops
= &clk_branch2_ops
,
1255 static struct clk_branch gcc_cpuss_rbcpr_clk
= {
1256 .halt_reg
= 0x48004,
1257 .halt_check
= BRANCH_HALT
,
1259 .enable_reg
= 0x48004,
1260 .enable_mask
= BIT(0),
1261 .hw
.init
= &(struct clk_init_data
){
1262 .name
= "gcc_cpuss_rbcpr_clk",
1263 .ops
= &clk_branch2_ops
,
1268 static struct clk_branch gcc_ddrss_gpu_axi_clk
= {
1269 .halt_reg
= 0x71154,
1270 .halt_check
= BRANCH_HALT_VOTED
,
1272 .enable_reg
= 0x71154,
1273 .enable_mask
= BIT(0),
1274 .hw
.init
= &(struct clk_init_data
){
1275 .name
= "gcc_ddrss_gpu_axi_clk",
1276 .ops
= &clk_branch2_ops
,
1281 static struct clk_branch gcc_ddrss_pcie_sf_tbu_clk
= {
1282 .halt_reg
= 0x8d058,
1283 .halt_check
= BRANCH_HALT_VOTED
,
1285 .enable_reg
= 0x8d058,
1286 .enable_mask
= BIT(0),
1287 .hw
.init
= &(struct clk_init_data
){
1288 .name
= "gcc_ddrss_pcie_sf_tbu_clk",
1289 .ops
= &clk_branch2_ops
,
1294 static struct clk_branch gcc_disp_hf_axi_clk
= {
1296 .halt_check
= BRANCH_HALT_VOTED
,
1298 .enable_reg
= 0xb034,
1299 .enable_mask
= BIT(0),
1300 .hw
.init
= &(struct clk_init_data
){
1301 .name
= "gcc_disp_hf_axi_clk",
1302 .ops
= &clk_branch2_ops
,
1307 static struct clk_branch gcc_disp_sf_axi_clk
= {
1309 .halt_check
= BRANCH_HALT_VOTED
,
1311 .enable_reg
= 0xb038,
1312 .enable_mask
= BIT(0),
1313 .hw
.init
= &(struct clk_init_data
){
1314 .name
= "gcc_disp_sf_axi_clk",
1315 .ops
= &clk_branch2_ops
,
1320 static struct clk_branch gcc_disp_xo_clk
= {
1322 .halt_check
= BRANCH_HALT
,
1324 .enable_reg
= 0xb044,
1325 .enable_mask
= BIT(0),
1326 .hw
.init
= &(struct clk_init_data
){
1327 .name
= "gcc_disp_xo_clk",
1328 .ops
= &clk_branch2_ops
,
1333 static struct clk_branch gcc_gp1_clk
= {
1334 .halt_reg
= 0x64000,
1335 .halt_check
= BRANCH_HALT
,
1337 .enable_reg
= 0x64000,
1338 .enable_mask
= BIT(0),
1339 .hw
.init
= &(struct clk_init_data
){
1340 .name
= "gcc_gp1_clk",
1341 .parent_data
= &(const struct clk_parent_data
){
1342 .hw
= &gcc_gp1_clk_src
.clkr
.hw
,
1345 .flags
= CLK_SET_RATE_PARENT
,
1346 .ops
= &clk_branch2_ops
,
1351 static struct clk_branch gcc_gp2_clk
= {
1352 .halt_reg
= 0x65000,
1353 .halt_check
= BRANCH_HALT
,
1355 .enable_reg
= 0x65000,
1356 .enable_mask
= BIT(0),
1357 .hw
.init
= &(struct clk_init_data
){
1358 .name
= "gcc_gp2_clk",
1359 .parent_data
= &(const struct clk_parent_data
){
1360 .hw
= &gcc_gp2_clk_src
.clkr
.hw
,
1363 .flags
= CLK_SET_RATE_PARENT
,
1364 .ops
= &clk_branch2_ops
,
1369 static struct clk_branch gcc_gp3_clk
= {
1370 .halt_reg
= 0x66000,
1371 .halt_check
= BRANCH_HALT
,
1373 .enable_reg
= 0x66000,
1374 .enable_mask
= BIT(0),
1375 .hw
.init
= &(struct clk_init_data
){
1376 .name
= "gcc_gp3_clk",
1377 .parent_data
= &(const struct clk_parent_data
){
1378 .hw
= &gcc_gp3_clk_src
.clkr
.hw
,
1381 .flags
= CLK_SET_RATE_PARENT
,
1382 .ops
= &clk_branch2_ops
,
1387 static struct clk_branch gcc_gpu_gpll0_clk_src
= {
1388 .halt_check
= BRANCH_HALT_DELAY
,
1390 .enable_reg
= 0x52000,
1391 .enable_mask
= BIT(15),
1392 .hw
.init
= &(struct clk_init_data
){
1393 .name
= "gcc_gpu_gpll0_clk_src",
1394 .parent_data
= &(const struct clk_parent_data
){
1395 .hw
= &gpll0
.clkr
.hw
,
1398 .flags
= CLK_SET_RATE_PARENT
,
1399 .ops
= &clk_branch2_ops
,
1404 static struct clk_branch gcc_gpu_gpll0_div_clk_src
= {
1405 .halt_check
= BRANCH_HALT_DELAY
,
1407 .enable_reg
= 0x52000,
1408 .enable_mask
= BIT(16),
1409 .hw
.init
= &(struct clk_init_data
){
1410 .name
= "gcc_gpu_gpll0_div_clk_src",
1411 .parent_data
= &(const struct clk_parent_data
){
1412 .hw
= &gpll0_out_even
.clkr
.hw
,
1415 .flags
= CLK_SET_RATE_PARENT
,
1416 .ops
= &clk_branch2_ops
,
1421 static struct clk_branch gcc_gpu_iref_en
= {
1422 .halt_reg
= 0x8c014,
1423 .halt_check
= BRANCH_HALT
,
1425 .enable_reg
= 0x8c014,
1426 .enable_mask
= BIT(0),
1427 .hw
.init
= &(struct clk_init_data
){
1428 .name
= "gcc_gpu_iref_en",
1429 .ops
= &clk_branch2_ops
,
1434 static struct clk_branch gcc_gpu_memnoc_gfx_clk
= {
1435 .halt_reg
= 0x7100c,
1436 .halt_check
= BRANCH_HALT_VOTED
,
1438 .enable_reg
= 0x7100c,
1439 .enable_mask
= BIT(0),
1440 .hw
.init
= &(struct clk_init_data
){
1441 .name
= "gcc_gpu_memnoc_gfx_clk",
1442 .ops
= &clk_branch2_ops
,
1447 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk
= {
1448 .halt_reg
= 0x71018,
1449 .halt_check
= BRANCH_HALT
,
1451 .enable_reg
= 0x71018,
1452 .enable_mask
= BIT(0),
1453 .hw
.init
= &(struct clk_init_data
){
1454 .name
= "gcc_gpu_snoc_dvm_gfx_clk",
1455 .ops
= &clk_branch2_ops
,
1460 static struct clk_branch gcc_npu_axi_clk
= {
1461 .halt_reg
= 0x4d008,
1462 .halt_check
= BRANCH_HALT_VOTED
,
1464 .enable_reg
= 0x4d008,
1465 .enable_mask
= BIT(0),
1466 .hw
.init
= &(struct clk_init_data
){
1467 .name
= "gcc_npu_axi_clk",
1468 .ops
= &clk_branch2_ops
,
1473 static struct clk_branch gcc_npu_bwmon_axi_clk
= {
1474 .halt_reg
= 0x73008,
1475 .halt_check
= BRANCH_HALT_VOTED
,
1477 .enable_reg
= 0x73008,
1478 .enable_mask
= BIT(0),
1479 .hw
.init
= &(struct clk_init_data
){
1480 .name
= "gcc_npu_bwmon_axi_clk",
1481 .ops
= &clk_branch2_ops
,
1486 static struct clk_branch gcc_npu_bwmon_cfg_ahb_clk
= {
1487 .halt_reg
= 0x73004,
1488 .halt_check
= BRANCH_HALT
,
1490 .enable_reg
= 0x73004,
1491 .enable_mask
= BIT(0),
1492 .hw
.init
= &(struct clk_init_data
){
1493 .name
= "gcc_npu_bwmon_cfg_ahb_clk",
1494 .ops
= &clk_branch2_ops
,
1499 static struct clk_branch gcc_npu_cfg_ahb_clk
= {
1500 .halt_reg
= 0x4d004,
1501 .halt_check
= BRANCH_HALT
,
1502 .hwcg_reg
= 0x4d004,
1505 .enable_reg
= 0x4d004,
1506 .enable_mask
= BIT(0),
1507 .hw
.init
= &(struct clk_init_data
){
1508 .name
= "gcc_npu_cfg_ahb_clk",
1509 .ops
= &clk_branch2_ops
,
1514 static struct clk_branch gcc_npu_dma_clk
= {
1515 .halt_reg
= 0x4d00c,
1516 .halt_check
= BRANCH_HALT_VOTED
,
1518 .enable_reg
= 0x4d00c,
1519 .enable_mask
= BIT(0),
1520 .hw
.init
= &(struct clk_init_data
){
1521 .name
= "gcc_npu_dma_clk",
1522 .ops
= &clk_branch2_ops
,
1527 static struct clk_branch gcc_npu_gpll0_clk_src
= {
1528 .halt_check
= BRANCH_HALT_DELAY
,
1530 .enable_reg
= 0x52000,
1531 .enable_mask
= BIT(18),
1532 .hw
.init
= &(struct clk_init_data
){
1533 .name
= "gcc_npu_gpll0_clk_src",
1534 .parent_data
= &(const struct clk_parent_data
){
1535 .hw
= &gpll0
.clkr
.hw
,
1538 .flags
= CLK_SET_RATE_PARENT
,
1539 .ops
= &clk_branch2_ops
,
1544 static struct clk_branch gcc_npu_gpll0_div_clk_src
= {
1545 .halt_check
= BRANCH_HALT_DELAY
,
1547 .enable_reg
= 0x52000,
1548 .enable_mask
= BIT(19),
1549 .hw
.init
= &(struct clk_init_data
){
1550 .name
= "gcc_npu_gpll0_div_clk_src",
1551 .parent_data
= &(const struct clk_parent_data
){
1552 .hw
= &gpll0_out_even
.clkr
.hw
,
1555 .flags
= CLK_SET_RATE_PARENT
,
1556 .ops
= &clk_branch2_ops
,
1561 static struct clk_branch gcc_pcie0_phy_refgen_clk
= {
1562 .halt_reg
= 0x6f02c,
1563 .halt_check
= BRANCH_HALT
,
1565 .enable_reg
= 0x6f02c,
1566 .enable_mask
= BIT(0),
1567 .hw
.init
= &(struct clk_init_data
){
1568 .name
= "gcc_pcie0_phy_refgen_clk",
1569 .parent_data
= &(const struct clk_parent_data
){
1570 .hw
= &gcc_pcie_phy_refgen_clk_src
.clkr
.hw
,
1573 .flags
= CLK_SET_RATE_PARENT
,
1574 .ops
= &clk_branch2_ops
,
1579 static struct clk_branch gcc_pcie1_phy_refgen_clk
= {
1580 .halt_reg
= 0x6f030,
1581 .halt_check
= BRANCH_HALT
,
1583 .enable_reg
= 0x6f030,
1584 .enable_mask
= BIT(0),
1585 .hw
.init
= &(struct clk_init_data
){
1586 .name
= "gcc_pcie1_phy_refgen_clk",
1587 .parent_data
= &(const struct clk_parent_data
){
1588 .hw
= &gcc_pcie_phy_refgen_clk_src
.clkr
.hw
,
1591 .flags
= CLK_SET_RATE_PARENT
,
1592 .ops
= &clk_branch2_ops
,
1597 static struct clk_branch gcc_pcie2_phy_refgen_clk
= {
1598 .halt_reg
= 0x6f034,
1599 .halt_check
= BRANCH_HALT
,
1601 .enable_reg
= 0x6f034,
1602 .enable_mask
= BIT(0),
1603 .hw
.init
= &(struct clk_init_data
){
1604 .name
= "gcc_pcie2_phy_refgen_clk",
1605 .parent_data
= &(const struct clk_parent_data
){
1606 .hw
= &gcc_pcie_phy_refgen_clk_src
.clkr
.hw
,
1609 .flags
= CLK_SET_RATE_PARENT
,
1610 .ops
= &clk_branch2_ops
,
1615 static struct clk_branch gcc_pcie_0_aux_clk
= {
1616 .halt_reg
= 0x6b028,
1617 .halt_check
= BRANCH_HALT_VOTED
,
1619 .enable_reg
= 0x52008,
1620 .enable_mask
= BIT(3),
1621 .hw
.init
= &(struct clk_init_data
){
1622 .name
= "gcc_pcie_0_aux_clk",
1623 .parent_data
= &(const struct clk_parent_data
){
1624 .hw
= &gcc_pcie_0_aux_clk_src
.clkr
.hw
,
1627 .flags
= CLK_SET_RATE_PARENT
,
1628 .ops
= &clk_branch2_ops
,
1633 static struct clk_branch gcc_pcie_0_cfg_ahb_clk
= {
1634 .halt_reg
= 0x6b024,
1635 .halt_check
= BRANCH_HALT_VOTED
,
1636 .hwcg_reg
= 0x6b024,
1639 .enable_reg
= 0x52008,
1640 .enable_mask
= BIT(2),
1641 .hw
.init
= &(struct clk_init_data
){
1642 .name
= "gcc_pcie_0_cfg_ahb_clk",
1643 .ops
= &clk_branch2_ops
,
1648 static struct clk_branch gcc_pcie_0_mstr_axi_clk
= {
1649 .halt_reg
= 0x6b01c,
1650 .halt_check
= BRANCH_HALT_VOTED
,
1652 .enable_reg
= 0x52008,
1653 .enable_mask
= BIT(1),
1654 .hw
.init
= &(struct clk_init_data
){
1655 .name
= "gcc_pcie_0_mstr_axi_clk",
1656 .ops
= &clk_branch2_ops
,
1661 static struct clk_branch gcc_pcie_0_pipe_clk
= {
1662 .halt_reg
= 0x6b02c,
1663 .halt_check
= BRANCH_HALT_SKIP
,
1665 .enable_reg
= 0x52008,
1666 .enable_mask
= BIT(4),
1667 .hw
.init
= &(struct clk_init_data
){
1668 .name
= "gcc_pcie_0_pipe_clk",
1669 .ops
= &clk_branch2_ops
,
1674 static struct clk_branch gcc_pcie_0_slv_axi_clk
= {
1675 .halt_reg
= 0x6b014,
1676 .halt_check
= BRANCH_HALT_VOTED
,
1677 .hwcg_reg
= 0x6b014,
1680 .enable_reg
= 0x52008,
1681 .enable_mask
= BIT(0),
1682 .hw
.init
= &(struct clk_init_data
){
1683 .name
= "gcc_pcie_0_slv_axi_clk",
1684 .ops
= &clk_branch2_ops
,
1689 static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk
= {
1690 .halt_reg
= 0x6b010,
1691 .halt_check
= BRANCH_HALT_VOTED
,
1693 .enable_reg
= 0x52008,
1694 .enable_mask
= BIT(5),
1695 .hw
.init
= &(struct clk_init_data
){
1696 .name
= "gcc_pcie_0_slv_q2a_axi_clk",
1697 .ops
= &clk_branch2_ops
,
1702 static struct clk_branch gcc_pcie_1_aux_clk
= {
1703 .halt_reg
= 0x8d028,
1704 .halt_check
= BRANCH_HALT_VOTED
,
1706 .enable_reg
= 0x52000,
1707 .enable_mask
= BIT(29),
1708 .hw
.init
= &(struct clk_init_data
){
1709 .name
= "gcc_pcie_1_aux_clk",
1710 .parent_data
= &(const struct clk_parent_data
){
1711 .hw
= &gcc_pcie_1_aux_clk_src
.clkr
.hw
,
1714 .flags
= CLK_SET_RATE_PARENT
,
1715 .ops
= &clk_branch2_ops
,
1720 static struct clk_branch gcc_pcie_1_cfg_ahb_clk
= {
1721 .halt_reg
= 0x8d024,
1722 .halt_check
= BRANCH_HALT_VOTED
,
1723 .hwcg_reg
= 0x8d024,
1726 .enable_reg
= 0x52000,
1727 .enable_mask
= BIT(28),
1728 .hw
.init
= &(struct clk_init_data
){
1729 .name
= "gcc_pcie_1_cfg_ahb_clk",
1730 .ops
= &clk_branch2_ops
,
1735 static struct clk_branch gcc_pcie_1_mstr_axi_clk
= {
1736 .halt_reg
= 0x8d01c,
1737 .halt_check
= BRANCH_HALT_VOTED
,
1739 .enable_reg
= 0x52000,
1740 .enable_mask
= BIT(27),
1741 .hw
.init
= &(struct clk_init_data
){
1742 .name
= "gcc_pcie_1_mstr_axi_clk",
1743 .ops
= &clk_branch2_ops
,
1748 static struct clk_branch gcc_pcie_1_pipe_clk
= {
1749 .halt_reg
= 0x8d02c,
1750 .halt_check
= BRANCH_HALT_SKIP
,
1752 .enable_reg
= 0x52000,
1753 .enable_mask
= BIT(30),
1754 .hw
.init
= &(struct clk_init_data
){
1755 .name
= "gcc_pcie_1_pipe_clk",
1756 .ops
= &clk_branch2_ops
,
1761 static struct clk_branch gcc_pcie_1_slv_axi_clk
= {
1762 .halt_reg
= 0x8d014,
1763 .halt_check
= BRANCH_HALT_VOTED
,
1764 .hwcg_reg
= 0x8d014,
1767 .enable_reg
= 0x52000,
1768 .enable_mask
= BIT(26),
1769 .hw
.init
= &(struct clk_init_data
){
1770 .name
= "gcc_pcie_1_slv_axi_clk",
1771 .ops
= &clk_branch2_ops
,
1776 static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk
= {
1777 .halt_reg
= 0x8d010,
1778 .halt_check
= BRANCH_HALT_VOTED
,
1780 .enable_reg
= 0x52000,
1781 .enable_mask
= BIT(25),
1782 .hw
.init
= &(struct clk_init_data
){
1783 .name
= "gcc_pcie_1_slv_q2a_axi_clk",
1784 .ops
= &clk_branch2_ops
,
1789 static struct clk_branch gcc_pcie_2_aux_clk
= {
1791 .halt_check
= BRANCH_HALT_VOTED
,
1793 .enable_reg
= 0x52010,
1794 .enable_mask
= BIT(14),
1795 .hw
.init
= &(struct clk_init_data
){
1796 .name
= "gcc_pcie_2_aux_clk",
1797 .parent_data
= &(const struct clk_parent_data
){
1798 .hw
= &gcc_pcie_2_aux_clk_src
.clkr
.hw
,
1801 .flags
= CLK_SET_RATE_PARENT
,
1802 .ops
= &clk_branch2_ops
,
1807 static struct clk_branch gcc_pcie_2_cfg_ahb_clk
= {
1809 .halt_check
= BRANCH_HALT_VOTED
,
1813 .enable_reg
= 0x52010,
1814 .enable_mask
= BIT(13),
1815 .hw
.init
= &(struct clk_init_data
){
1816 .name
= "gcc_pcie_2_cfg_ahb_clk",
1817 .ops
= &clk_branch2_ops
,
1822 static struct clk_branch gcc_pcie_2_mstr_axi_clk
= {
1824 .halt_check
= BRANCH_HALT_VOTED
,
1826 .enable_reg
= 0x52010,
1827 .enable_mask
= BIT(12),
1828 .hw
.init
= &(struct clk_init_data
){
1829 .name
= "gcc_pcie_2_mstr_axi_clk",
1830 .ops
= &clk_branch2_ops
,
1835 static struct clk_branch gcc_pcie_2_pipe_clk
= {
1837 .halt_check
= BRANCH_HALT_SKIP
,
1839 .enable_reg
= 0x52010,
1840 .enable_mask
= BIT(15),
1841 .hw
.init
= &(struct clk_init_data
){
1842 .name
= "gcc_pcie_2_pipe_clk",
1843 .ops
= &clk_branch2_ops
,
1848 static struct clk_branch gcc_pcie_2_slv_axi_clk
= {
1850 .halt_check
= BRANCH_HALT_VOTED
,
1854 .enable_reg
= 0x52010,
1855 .enable_mask
= BIT(11),
1856 .hw
.init
= &(struct clk_init_data
){
1857 .name
= "gcc_pcie_2_slv_axi_clk",
1858 .ops
= &clk_branch2_ops
,
1863 static struct clk_branch gcc_pcie_2_slv_q2a_axi_clk
= {
1865 .halt_check
= BRANCH_HALT_VOTED
,
1867 .enable_reg
= 0x52010,
1868 .enable_mask
= BIT(10),
1869 .hw
.init
= &(struct clk_init_data
){
1870 .name
= "gcc_pcie_2_slv_q2a_axi_clk",
1871 .ops
= &clk_branch2_ops
,
1876 static struct clk_branch gcc_pcie_mdm_clkref_en
= {
1877 .halt_reg
= 0x8c00c,
1878 .halt_check
= BRANCH_HALT
,
1880 .enable_reg
= 0x8c00c,
1881 .enable_mask
= BIT(0),
1882 .hw
.init
= &(struct clk_init_data
){
1883 .name
= "gcc_pcie_mdm_clkref_en",
1884 .ops
= &clk_branch2_ops
,
1889 static struct clk_branch gcc_pcie_phy_aux_clk
= {
1890 .halt_reg
= 0x6f004,
1891 .halt_check
= BRANCH_HALT
,
1893 .enable_reg
= 0x6f004,
1894 .enable_mask
= BIT(0),
1895 .hw
.init
= &(struct clk_init_data
){
1896 .name
= "gcc_pcie_phy_aux_clk",
1897 .parent_data
= &(const struct clk_parent_data
){
1898 .hw
= &gcc_pcie_0_aux_clk_src
.clkr
.hw
,
1901 .flags
= CLK_SET_RATE_PARENT
,
1902 .ops
= &clk_branch2_ops
,
1907 static struct clk_branch gcc_pcie_wifi_clkref_en
= {
1908 .halt_reg
= 0x8c004,
1909 .halt_check
= BRANCH_HALT
,
1911 .enable_reg
= 0x8c004,
1912 .enable_mask
= BIT(0),
1913 .hw
.init
= &(struct clk_init_data
){
1914 .name
= "gcc_pcie_wifi_clkref_en",
1915 .ops
= &clk_branch2_ops
,
1920 static struct clk_branch gcc_pcie_wigig_clkref_en
= {
1921 .halt_reg
= 0x8c008,
1922 .halt_check
= BRANCH_HALT
,
1924 .enable_reg
= 0x8c008,
1925 .enable_mask
= BIT(0),
1926 .hw
.init
= &(struct clk_init_data
){
1927 .name
= "gcc_pcie_wigig_clkref_en",
1928 .ops
= &clk_branch2_ops
,
1933 static struct clk_branch gcc_pdm2_clk
= {
1934 .halt_reg
= 0x3300c,
1935 .halt_check
= BRANCH_HALT
,
1937 .enable_reg
= 0x3300c,
1938 .enable_mask
= BIT(0),
1939 .hw
.init
= &(struct clk_init_data
){
1940 .name
= "gcc_pdm2_clk",
1941 .parent_data
= &(const struct clk_parent_data
){
1942 .hw
= &gcc_pdm2_clk_src
.clkr
.hw
,
1945 .flags
= CLK_SET_RATE_PARENT
,
1946 .ops
= &clk_branch2_ops
,
1951 static struct clk_branch gcc_pdm_ahb_clk
= {
1952 .halt_reg
= 0x33004,
1953 .halt_check
= BRANCH_HALT
,
1954 .hwcg_reg
= 0x33004,
1957 .enable_reg
= 0x33004,
1958 .enable_mask
= BIT(0),
1959 .hw
.init
= &(struct clk_init_data
){
1960 .name
= "gcc_pdm_ahb_clk",
1961 .ops
= &clk_branch2_ops
,
1966 static struct clk_branch gcc_pdm_xo4_clk
= {
1967 .halt_reg
= 0x33008,
1968 .halt_check
= BRANCH_HALT
,
1970 .enable_reg
= 0x33008,
1971 .enable_mask
= BIT(0),
1972 .hw
.init
= &(struct clk_init_data
){
1973 .name
= "gcc_pdm_xo4_clk",
1974 .ops
= &clk_branch2_ops
,
1979 static struct clk_branch gcc_prng_ahb_clk
= {
1980 .halt_reg
= 0x34004,
1981 .halt_check
= BRANCH_HALT_VOTED
,
1983 .enable_reg
= 0x52000,
1984 .enable_mask
= BIT(13),
1985 .hw
.init
= &(struct clk_init_data
){
1986 .name
= "gcc_prng_ahb_clk",
1987 .ops
= &clk_branch2_ops
,
1992 static struct clk_branch gcc_qmip_camera_nrt_ahb_clk
= {
1994 .halt_check
= BRANCH_HALT_VOTED
,
1998 .enable_reg
= 0xb018,
1999 .enable_mask
= BIT(0),
2000 .hw
.init
= &(struct clk_init_data
){
2001 .name
= "gcc_qmip_camera_nrt_ahb_clk",
2002 .ops
= &clk_branch2_ops
,
2007 static struct clk_branch gcc_qmip_camera_rt_ahb_clk
= {
2009 .halt_check
= BRANCH_HALT_VOTED
,
2013 .enable_reg
= 0xb01c,
2014 .enable_mask
= BIT(0),
2015 .hw
.init
= &(struct clk_init_data
){
2016 .name
= "gcc_qmip_camera_rt_ahb_clk",
2017 .ops
= &clk_branch2_ops
,
2022 static struct clk_branch gcc_qmip_disp_ahb_clk
= {
2024 .halt_check
= BRANCH_HALT_VOTED
,
2028 .enable_reg
= 0xb020,
2029 .enable_mask
= BIT(0),
2030 .hw
.init
= &(struct clk_init_data
){
2031 .name
= "gcc_qmip_disp_ahb_clk",
2032 .ops
= &clk_branch2_ops
,
2037 static struct clk_branch gcc_qmip_video_cvp_ahb_clk
= {
2039 .halt_check
= BRANCH_HALT_VOTED
,
2043 .enable_reg
= 0xb010,
2044 .enable_mask
= BIT(0),
2045 .hw
.init
= &(struct clk_init_data
){
2046 .name
= "gcc_qmip_video_cvp_ahb_clk",
2047 .ops
= &clk_branch2_ops
,
2052 static struct clk_branch gcc_qmip_video_vcodec_ahb_clk
= {
2054 .halt_check
= BRANCH_HALT_VOTED
,
2058 .enable_reg
= 0xb014,
2059 .enable_mask
= BIT(0),
2060 .hw
.init
= &(struct clk_init_data
){
2061 .name
= "gcc_qmip_video_vcodec_ahb_clk",
2062 .ops
= &clk_branch2_ops
,
2067 static struct clk_branch gcc_qupv3_wrap0_core_2x_clk
= {
2068 .halt_reg
= 0x23008,
2069 .halt_check
= BRANCH_HALT_VOTED
,
2071 .enable_reg
= 0x52008,
2072 .enable_mask
= BIT(9),
2073 .hw
.init
= &(struct clk_init_data
){
2074 .name
= "gcc_qupv3_wrap0_core_2x_clk",
2075 .ops
= &clk_branch2_ops
,
2080 static struct clk_branch gcc_qupv3_wrap0_core_clk
= {
2081 .halt_reg
= 0x23000,
2082 .halt_check
= BRANCH_HALT_VOTED
,
2084 .enable_reg
= 0x52008,
2085 .enable_mask
= BIT(8),
2086 .hw
.init
= &(struct clk_init_data
){
2087 .name
= "gcc_qupv3_wrap0_core_clk",
2088 .ops
= &clk_branch2_ops
,
2093 static struct clk_branch gcc_qupv3_wrap0_s0_clk
= {
2094 .halt_reg
= 0x1700c,
2095 .halt_check
= BRANCH_HALT_VOTED
,
2097 .enable_reg
= 0x52008,
2098 .enable_mask
= BIT(10),
2099 .hw
.init
= &(struct clk_init_data
){
2100 .name
= "gcc_qupv3_wrap0_s0_clk",
2101 .parent_data
= &(const struct clk_parent_data
){
2102 .hw
= &gcc_qupv3_wrap0_s0_clk_src
.clkr
.hw
,
2105 .flags
= CLK_SET_RATE_PARENT
,
2106 .ops
= &clk_branch2_ops
,
2111 static struct clk_branch gcc_qupv3_wrap0_s1_clk
= {
2112 .halt_reg
= 0x1713c,
2113 .halt_check
= BRANCH_HALT_VOTED
,
2115 .enable_reg
= 0x52008,
2116 .enable_mask
= BIT(11),
2117 .hw
.init
= &(struct clk_init_data
){
2118 .name
= "gcc_qupv3_wrap0_s1_clk",
2119 .parent_data
= &(const struct clk_parent_data
){
2120 .hw
= &gcc_qupv3_wrap0_s1_clk_src
.clkr
.hw
,
2123 .flags
= CLK_SET_RATE_PARENT
,
2124 .ops
= &clk_branch2_ops
,
2129 static struct clk_branch gcc_qupv3_wrap0_s2_clk
= {
2130 .halt_reg
= 0x1726c,
2131 .halt_check
= BRANCH_HALT_VOTED
,
2133 .enable_reg
= 0x52008,
2134 .enable_mask
= BIT(12),
2135 .hw
.init
= &(struct clk_init_data
){
2136 .name
= "gcc_qupv3_wrap0_s2_clk",
2137 .parent_data
= &(const struct clk_parent_data
){
2138 .hw
= &gcc_qupv3_wrap0_s2_clk_src
.clkr
.hw
,
2141 .flags
= CLK_SET_RATE_PARENT
,
2142 .ops
= &clk_branch2_ops
,
2147 static struct clk_branch gcc_qupv3_wrap0_s3_clk
= {
2148 .halt_reg
= 0x1739c,
2149 .halt_check
= BRANCH_HALT_VOTED
,
2151 .enable_reg
= 0x52008,
2152 .enable_mask
= BIT(13),
2153 .hw
.init
= &(struct clk_init_data
){
2154 .name
= "gcc_qupv3_wrap0_s3_clk",
2155 .parent_data
= &(const struct clk_parent_data
){
2156 .hw
= &gcc_qupv3_wrap0_s3_clk_src
.clkr
.hw
,
2159 .flags
= CLK_SET_RATE_PARENT
,
2160 .ops
= &clk_branch2_ops
,
2165 static struct clk_branch gcc_qupv3_wrap0_s4_clk
= {
2166 .halt_reg
= 0x174cc,
2167 .halt_check
= BRANCH_HALT_VOTED
,
2169 .enable_reg
= 0x52008,
2170 .enable_mask
= BIT(14),
2171 .hw
.init
= &(struct clk_init_data
){
2172 .name
= "gcc_qupv3_wrap0_s4_clk",
2173 .parent_data
= &(const struct clk_parent_data
){
2174 .hw
= &gcc_qupv3_wrap0_s4_clk_src
.clkr
.hw
,
2177 .flags
= CLK_SET_RATE_PARENT
,
2178 .ops
= &clk_branch2_ops
,
2183 static struct clk_branch gcc_qupv3_wrap0_s5_clk
= {
2184 .halt_reg
= 0x175fc,
2185 .halt_check
= BRANCH_HALT_VOTED
,
2187 .enable_reg
= 0x52008,
2188 .enable_mask
= BIT(15),
2189 .hw
.init
= &(struct clk_init_data
){
2190 .name
= "gcc_qupv3_wrap0_s5_clk",
2191 .parent_data
= &(const struct clk_parent_data
){
2192 .hw
= &gcc_qupv3_wrap0_s5_clk_src
.clkr
.hw
,
2195 .flags
= CLK_SET_RATE_PARENT
,
2196 .ops
= &clk_branch2_ops
,
2201 static struct clk_branch gcc_qupv3_wrap0_s6_clk
= {
2202 .halt_reg
= 0x1772c,
2203 .halt_check
= BRANCH_HALT_VOTED
,
2205 .enable_reg
= 0x52008,
2206 .enable_mask
= BIT(16),
2207 .hw
.init
= &(struct clk_init_data
){
2208 .name
= "gcc_qupv3_wrap0_s6_clk",
2209 .parent_data
= &(const struct clk_parent_data
){
2210 .hw
= &gcc_qupv3_wrap0_s6_clk_src
.clkr
.hw
,
2213 .flags
= CLK_SET_RATE_PARENT
,
2214 .ops
= &clk_branch2_ops
,
2219 static struct clk_branch gcc_qupv3_wrap0_s7_clk
= {
2220 .halt_reg
= 0x1785c,
2221 .halt_check
= BRANCH_HALT_VOTED
,
2223 .enable_reg
= 0x52008,
2224 .enable_mask
= BIT(17),
2225 .hw
.init
= &(struct clk_init_data
){
2226 .name
= "gcc_qupv3_wrap0_s7_clk",
2227 .parent_data
= &(const struct clk_parent_data
){
2228 .hw
= &gcc_qupv3_wrap0_s7_clk_src
.clkr
.hw
,
2231 .flags
= CLK_SET_RATE_PARENT
,
2232 .ops
= &clk_branch2_ops
,
2237 static struct clk_branch gcc_qupv3_wrap1_core_2x_clk
= {
2238 .halt_reg
= 0x23140,
2239 .halt_check
= BRANCH_HALT_VOTED
,
2241 .enable_reg
= 0x52008,
2242 .enable_mask
= BIT(18),
2243 .hw
.init
= &(struct clk_init_data
){
2244 .name
= "gcc_qupv3_wrap1_core_2x_clk",
2245 .ops
= &clk_branch2_ops
,
2250 static struct clk_branch gcc_qupv3_wrap1_core_clk
= {
2251 .halt_reg
= 0x23138,
2252 .halt_check
= BRANCH_HALT_VOTED
,
2254 .enable_reg
= 0x52008,
2255 .enable_mask
= BIT(19),
2256 .hw
.init
= &(struct clk_init_data
){
2257 .name
= "gcc_qupv3_wrap1_core_clk",
2258 .ops
= &clk_branch2_ops
,
2263 static struct clk_branch gcc_qupv3_wrap1_s0_clk
= {
2264 .halt_reg
= 0x1800c,
2265 .halt_check
= BRANCH_HALT_VOTED
,
2267 .enable_reg
= 0x52008,
2268 .enable_mask
= BIT(22),
2269 .hw
.init
= &(struct clk_init_data
){
2270 .name
= "gcc_qupv3_wrap1_s0_clk",
2271 .parent_data
= &(const struct clk_parent_data
){
2272 .hw
= &gcc_qupv3_wrap1_s0_clk_src
.clkr
.hw
,
2275 .flags
= CLK_SET_RATE_PARENT
,
2276 .ops
= &clk_branch2_ops
,
2281 static struct clk_branch gcc_qupv3_wrap1_s1_clk
= {
2282 .halt_reg
= 0x1813c,
2283 .halt_check
= BRANCH_HALT_VOTED
,
2285 .enable_reg
= 0x52008,
2286 .enable_mask
= BIT(23),
2287 .hw
.init
= &(struct clk_init_data
){
2288 .name
= "gcc_qupv3_wrap1_s1_clk",
2289 .parent_data
= &(const struct clk_parent_data
){
2290 .hw
= &gcc_qupv3_wrap1_s1_clk_src
.clkr
.hw
,
2293 .flags
= CLK_SET_RATE_PARENT
,
2294 .ops
= &clk_branch2_ops
,
2299 static struct clk_branch gcc_qupv3_wrap1_s2_clk
= {
2300 .halt_reg
= 0x1826c,
2301 .halt_check
= BRANCH_HALT_VOTED
,
2303 .enable_reg
= 0x52008,
2304 .enable_mask
= BIT(24),
2305 .hw
.init
= &(struct clk_init_data
){
2306 .name
= "gcc_qupv3_wrap1_s2_clk",
2307 .parent_data
= &(const struct clk_parent_data
){
2308 .hw
= &gcc_qupv3_wrap1_s2_clk_src
.clkr
.hw
,
2311 .flags
= CLK_SET_RATE_PARENT
,
2312 .ops
= &clk_branch2_ops
,
2317 static struct clk_branch gcc_qupv3_wrap1_s3_clk
= {
2318 .halt_reg
= 0x1839c,
2319 .halt_check
= BRANCH_HALT_VOTED
,
2321 .enable_reg
= 0x52008,
2322 .enable_mask
= BIT(25),
2323 .hw
.init
= &(struct clk_init_data
){
2324 .name
= "gcc_qupv3_wrap1_s3_clk",
2325 .parent_data
= &(const struct clk_parent_data
){
2326 .hw
= &gcc_qupv3_wrap1_s3_clk_src
.clkr
.hw
,
2329 .flags
= CLK_SET_RATE_PARENT
,
2330 .ops
= &clk_branch2_ops
,
2335 static struct clk_branch gcc_qupv3_wrap1_s4_clk
= {
2336 .halt_reg
= 0x184cc,
2337 .halt_check
= BRANCH_HALT_VOTED
,
2339 .enable_reg
= 0x52008,
2340 .enable_mask
= BIT(26),
2341 .hw
.init
= &(struct clk_init_data
){
2342 .name
= "gcc_qupv3_wrap1_s4_clk",
2343 .parent_data
= &(const struct clk_parent_data
){
2344 .hw
= &gcc_qupv3_wrap1_s4_clk_src
.clkr
.hw
,
2347 .flags
= CLK_SET_RATE_PARENT
,
2348 .ops
= &clk_branch2_ops
,
2353 static struct clk_branch gcc_qupv3_wrap1_s5_clk
= {
2354 .halt_reg
= 0x185fc,
2355 .halt_check
= BRANCH_HALT_VOTED
,
2357 .enable_reg
= 0x52008,
2358 .enable_mask
= BIT(27),
2359 .hw
.init
= &(struct clk_init_data
){
2360 .name
= "gcc_qupv3_wrap1_s5_clk",
2361 .parent_data
= &(const struct clk_parent_data
){
2362 .hw
= &gcc_qupv3_wrap1_s5_clk_src
.clkr
.hw
,
2365 .flags
= CLK_SET_RATE_PARENT
,
2366 .ops
= &clk_branch2_ops
,
2371 static struct clk_branch gcc_qupv3_wrap2_core_2x_clk
= {
2372 .halt_reg
= 0x23278,
2373 .halt_check
= BRANCH_HALT_VOTED
,
2375 .enable_reg
= 0x52010,
2376 .enable_mask
= BIT(3),
2377 .hw
.init
= &(struct clk_init_data
){
2378 .name
= "gcc_qupv3_wrap2_core_2x_clk",
2379 .ops
= &clk_branch2_ops
,
2384 static struct clk_branch gcc_qupv3_wrap2_core_clk
= {
2385 .halt_reg
= 0x23270,
2386 .halt_check
= BRANCH_HALT_VOTED
,
2388 .enable_reg
= 0x52010,
2389 .enable_mask
= BIT(0),
2390 .hw
.init
= &(struct clk_init_data
){
2391 .name
= "gcc_qupv3_wrap2_core_clk",
2392 .ops
= &clk_branch2_ops
,
2397 static struct clk_branch gcc_qupv3_wrap2_s0_clk
= {
2398 .halt_reg
= 0x1e00c,
2399 .halt_check
= BRANCH_HALT_VOTED
,
2401 .enable_reg
= 0x52010,
2402 .enable_mask
= BIT(4),
2403 .hw
.init
= &(struct clk_init_data
){
2404 .name
= "gcc_qupv3_wrap2_s0_clk",
2405 .parent_data
= &(const struct clk_parent_data
){
2406 .hw
= &gcc_qupv3_wrap2_s0_clk_src
.clkr
.hw
,
2409 .flags
= CLK_SET_RATE_PARENT
,
2410 .ops
= &clk_branch2_ops
,
2415 static struct clk_branch gcc_qupv3_wrap2_s1_clk
= {
2416 .halt_reg
= 0x1e13c,
2417 .halt_check
= BRANCH_HALT_VOTED
,
2419 .enable_reg
= 0x52010,
2420 .enable_mask
= BIT(5),
2421 .hw
.init
= &(struct clk_init_data
){
2422 .name
= "gcc_qupv3_wrap2_s1_clk",
2423 .parent_data
= &(const struct clk_parent_data
){
2424 .hw
= &gcc_qupv3_wrap2_s1_clk_src
.clkr
.hw
,
2427 .flags
= CLK_SET_RATE_PARENT
,
2428 .ops
= &clk_branch2_ops
,
2433 static struct clk_branch gcc_qupv3_wrap2_s2_clk
= {
2434 .halt_reg
= 0x1e26c,
2435 .halt_check
= BRANCH_HALT_VOTED
,
2437 .enable_reg
= 0x52010,
2438 .enable_mask
= BIT(6),
2439 .hw
.init
= &(struct clk_init_data
){
2440 .name
= "gcc_qupv3_wrap2_s2_clk",
2441 .parent_data
= &(const struct clk_parent_data
){
2442 .hw
= &gcc_qupv3_wrap2_s2_clk_src
.clkr
.hw
,
2445 .flags
= CLK_SET_RATE_PARENT
,
2446 .ops
= &clk_branch2_ops
,
2451 static struct clk_branch gcc_qupv3_wrap2_s3_clk
= {
2452 .halt_reg
= 0x1e39c,
2453 .halt_check
= BRANCH_HALT_VOTED
,
2455 .enable_reg
= 0x52010,
2456 .enable_mask
= BIT(7),
2457 .hw
.init
= &(struct clk_init_data
){
2458 .name
= "gcc_qupv3_wrap2_s3_clk",
2459 .parent_data
= &(const struct clk_parent_data
){
2460 .hw
= &gcc_qupv3_wrap2_s3_clk_src
.clkr
.hw
,
2463 .flags
= CLK_SET_RATE_PARENT
,
2464 .ops
= &clk_branch2_ops
,
2469 static struct clk_branch gcc_qupv3_wrap2_s4_clk
= {
2470 .halt_reg
= 0x1e4cc,
2471 .halt_check
= BRANCH_HALT_VOTED
,
2473 .enable_reg
= 0x52010,
2474 .enable_mask
= BIT(8),
2475 .hw
.init
= &(struct clk_init_data
){
2476 .name
= "gcc_qupv3_wrap2_s4_clk",
2477 .parent_data
= &(const struct clk_parent_data
){
2478 .hw
= &gcc_qupv3_wrap2_s4_clk_src
.clkr
.hw
,
2481 .flags
= CLK_SET_RATE_PARENT
,
2482 .ops
= &clk_branch2_ops
,
2487 static struct clk_branch gcc_qupv3_wrap2_s5_clk
= {
2488 .halt_reg
= 0x1e5fc,
2489 .halt_check
= BRANCH_HALT_VOTED
,
2491 .enable_reg
= 0x52010,
2492 .enable_mask
= BIT(9),
2493 .hw
.init
= &(struct clk_init_data
){
2494 .name
= "gcc_qupv3_wrap2_s5_clk",
2495 .parent_data
= &(const struct clk_parent_data
){
2496 .hw
= &gcc_qupv3_wrap2_s5_clk_src
.clkr
.hw
,
2499 .flags
= CLK_SET_RATE_PARENT
,
2500 .ops
= &clk_branch2_ops
,
2505 static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk
= {
2506 .halt_reg
= 0x17004,
2507 .halt_check
= BRANCH_HALT_VOTED
,
2509 .enable_reg
= 0x52008,
2510 .enable_mask
= BIT(6),
2511 .hw
.init
= &(struct clk_init_data
){
2512 .name
= "gcc_qupv3_wrap_0_m_ahb_clk",
2513 .ops
= &clk_branch2_ops
,
2518 static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk
= {
2519 .halt_reg
= 0x17008,
2520 .halt_check
= BRANCH_HALT_VOTED
,
2521 .hwcg_reg
= 0x17008,
2524 .enable_reg
= 0x52008,
2525 .enable_mask
= BIT(7),
2526 .hw
.init
= &(struct clk_init_data
){
2527 .name
= "gcc_qupv3_wrap_0_s_ahb_clk",
2528 .ops
= &clk_branch2_ops
,
2533 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk
= {
2534 .halt_reg
= 0x18004,
2535 .halt_check
= BRANCH_HALT_VOTED
,
2537 .enable_reg
= 0x52008,
2538 .enable_mask
= BIT(20),
2539 .hw
.init
= &(struct clk_init_data
){
2540 .name
= "gcc_qupv3_wrap_1_m_ahb_clk",
2541 .ops
= &clk_branch2_ops
,
2546 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk
= {
2547 .halt_reg
= 0x18008,
2548 .halt_check
= BRANCH_HALT_VOTED
,
2549 .hwcg_reg
= 0x18008,
2552 .enable_reg
= 0x52008,
2553 .enable_mask
= BIT(21),
2554 .hw
.init
= &(struct clk_init_data
){
2555 .name
= "gcc_qupv3_wrap_1_s_ahb_clk",
2556 .ops
= &clk_branch2_ops
,
2561 static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk
= {
2562 .halt_reg
= 0x1e004,
2563 .halt_check
= BRANCH_HALT_VOTED
,
2565 .enable_reg
= 0x52010,
2566 .enable_mask
= BIT(2),
2567 .hw
.init
= &(struct clk_init_data
){
2568 .name
= "gcc_qupv3_wrap_2_m_ahb_clk",
2569 .ops
= &clk_branch2_ops
,
2574 static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk
= {
2575 .halt_reg
= 0x1e008,
2576 .halt_check
= BRANCH_HALT_VOTED
,
2577 .hwcg_reg
= 0x1e008,
2580 .enable_reg
= 0x52010,
2581 .enable_mask
= BIT(1),
2582 .hw
.init
= &(struct clk_init_data
){
2583 .name
= "gcc_qupv3_wrap_2_s_ahb_clk",
2584 .ops
= &clk_branch2_ops
,
2589 static struct clk_branch gcc_sdcc2_ahb_clk
= {
2590 .halt_reg
= 0x14008,
2591 .halt_check
= BRANCH_HALT
,
2593 .enable_reg
= 0x14008,
2594 .enable_mask
= BIT(0),
2595 .hw
.init
= &(struct clk_init_data
){
2596 .name
= "gcc_sdcc2_ahb_clk",
2597 .ops
= &clk_branch2_ops
,
2602 static struct clk_branch gcc_sdcc2_apps_clk
= {
2603 .halt_reg
= 0x14004,
2604 .halt_check
= BRANCH_HALT
,
2606 .enable_reg
= 0x14004,
2607 .enable_mask
= BIT(0),
2608 .hw
.init
= &(struct clk_init_data
){
2609 .name
= "gcc_sdcc2_apps_clk",
2610 .parent_data
= &(const struct clk_parent_data
){
2611 .hw
= &gcc_sdcc2_apps_clk_src
.clkr
.hw
,
2614 .flags
= CLK_SET_RATE_PARENT
,
2615 .ops
= &clk_branch2_ops
,
2620 static struct clk_branch gcc_sdcc4_ahb_clk
= {
2621 .halt_reg
= 0x16008,
2622 .halt_check
= BRANCH_HALT
,
2624 .enable_reg
= 0x16008,
2625 .enable_mask
= BIT(0),
2626 .hw
.init
= &(struct clk_init_data
){
2627 .name
= "gcc_sdcc4_ahb_clk",
2628 .ops
= &clk_branch2_ops
,
2633 static struct clk_branch gcc_sdcc4_apps_clk
= {
2634 .halt_reg
= 0x16004,
2635 .halt_check
= BRANCH_HALT
,
2637 .enable_reg
= 0x16004,
2638 .enable_mask
= BIT(0),
2639 .hw
.init
= &(struct clk_init_data
){
2640 .name
= "gcc_sdcc4_apps_clk",
2641 .parent_data
= &(const struct clk_parent_data
){
2642 .hw
= &gcc_sdcc4_apps_clk_src
.clkr
.hw
,
2645 .flags
= CLK_SET_RATE_PARENT
,
2646 .ops
= &clk_branch2_ops
,
2651 static struct clk_branch gcc_tsif_ahb_clk
= {
2652 .halt_reg
= 0x36004,
2653 .halt_check
= BRANCH_HALT_VOTED
,
2655 .enable_reg
= 0x36004,
2656 .enable_mask
= BIT(0),
2657 .hw
.init
= &(struct clk_init_data
){
2658 .name
= "gcc_tsif_ahb_clk",
2659 .ops
= &clk_branch2_ops
,
2664 static struct clk_branch gcc_tsif_inactivity_timers_clk
= {
2665 .halt_reg
= 0x3600c,
2666 .halt_check
= BRANCH_HALT
,
2668 .enable_reg
= 0x3600c,
2669 .enable_mask
= BIT(0),
2670 .hw
.init
= &(struct clk_init_data
){
2671 .name
= "gcc_tsif_inactivity_timers_clk",
2672 .ops
= &clk_branch2_ops
,
2677 static struct clk_branch gcc_tsif_ref_clk
= {
2678 .halt_reg
= 0x36008,
2679 .halt_check
= BRANCH_HALT
,
2681 .enable_reg
= 0x36008,
2682 .enable_mask
= BIT(0),
2683 .hw
.init
= &(struct clk_init_data
){
2684 .name
= "gcc_tsif_ref_clk",
2685 .parent_data
= &(const struct clk_parent_data
){
2686 .hw
= &gcc_tsif_ref_clk_src
.clkr
.hw
,
2689 .flags
= CLK_SET_RATE_PARENT
,
2690 .ops
= &clk_branch2_ops
,
2695 static struct clk_branch gcc_ufs_1x_clkref_en
= {
2696 .halt_reg
= 0x8c000,
2697 .halt_check
= BRANCH_HALT
,
2699 .enable_reg
= 0x8c000,
2700 .enable_mask
= BIT(0),
2701 .hw
.init
= &(struct clk_init_data
){
2702 .name
= "gcc_ufs_1x_clkref_en",
2703 .ops
= &clk_branch2_ops
,
2708 static struct clk_branch gcc_ufs_card_ahb_clk
= {
2709 .halt_reg
= 0x75018,
2710 .halt_check
= BRANCH_HALT_VOTED
,
2711 .hwcg_reg
= 0x75018,
2714 .enable_reg
= 0x75018,
2715 .enable_mask
= BIT(0),
2716 .hw
.init
= &(struct clk_init_data
){
2717 .name
= "gcc_ufs_card_ahb_clk",
2718 .ops
= &clk_branch2_ops
,
2723 static struct clk_branch gcc_ufs_card_axi_clk
= {
2724 .halt_reg
= 0x75010,
2725 .halt_check
= BRANCH_HALT
,
2726 .hwcg_reg
= 0x75010,
2729 .enable_reg
= 0x75010,
2730 .enable_mask
= BIT(0),
2731 .hw
.init
= &(struct clk_init_data
){
2732 .name
= "gcc_ufs_card_axi_clk",
2733 .parent_data
= &(const struct clk_parent_data
){
2734 .hw
= &gcc_ufs_card_axi_clk_src
.clkr
.hw
,
2737 .flags
= CLK_SET_RATE_PARENT
,
2738 .ops
= &clk_branch2_ops
,
2743 static struct clk_branch gcc_ufs_card_ice_core_clk
= {
2744 .halt_reg
= 0x75064,
2745 .halt_check
= BRANCH_HALT_VOTED
,
2746 .hwcg_reg
= 0x75064,
2749 .enable_reg
= 0x75064,
2750 .enable_mask
= BIT(0),
2751 .hw
.init
= &(struct clk_init_data
){
2752 .name
= "gcc_ufs_card_ice_core_clk",
2753 .parent_data
= &(const struct clk_parent_data
){
2754 .hw
= &gcc_ufs_card_ice_core_clk_src
.clkr
.hw
,
2757 .flags
= CLK_SET_RATE_PARENT
,
2758 .ops
= &clk_branch2_ops
,
2763 static struct clk_branch gcc_ufs_card_phy_aux_clk
= {
2764 .halt_reg
= 0x7509c,
2765 .halt_check
= BRANCH_HALT
,
2766 .hwcg_reg
= 0x7509c,
2769 .enable_reg
= 0x7509c,
2770 .enable_mask
= BIT(0),
2771 .hw
.init
= &(struct clk_init_data
){
2772 .name
= "gcc_ufs_card_phy_aux_clk",
2773 .parent_data
= &(const struct clk_parent_data
){
2774 .hw
= &gcc_ufs_card_phy_aux_clk_src
.clkr
.hw
,
2777 .flags
= CLK_SET_RATE_PARENT
,
2778 .ops
= &clk_branch2_ops
,
2783 static struct clk_branch gcc_ufs_card_rx_symbol_0_clk
= {
2784 .halt_reg
= 0x75020,
2785 .halt_check
= BRANCH_HALT_DELAY
,
2787 .enable_reg
= 0x75020,
2788 .enable_mask
= BIT(0),
2789 .hw
.init
= &(struct clk_init_data
){
2790 .name
= "gcc_ufs_card_rx_symbol_0_clk",
2791 .ops
= &clk_branch2_ops
,
2796 static struct clk_branch gcc_ufs_card_rx_symbol_1_clk
= {
2797 .halt_reg
= 0x750b8,
2798 .halt_check
= BRANCH_HALT_DELAY
,
2800 .enable_reg
= 0x750b8,
2801 .enable_mask
= BIT(0),
2802 .hw
.init
= &(struct clk_init_data
){
2803 .name
= "gcc_ufs_card_rx_symbol_1_clk",
2804 .ops
= &clk_branch2_ops
,
2809 static struct clk_branch gcc_ufs_card_tx_symbol_0_clk
= {
2810 .halt_reg
= 0x7501c,
2811 .halt_check
= BRANCH_HALT_DELAY
,
2813 .enable_reg
= 0x7501c,
2814 .enable_mask
= BIT(0),
2815 .hw
.init
= &(struct clk_init_data
){
2816 .name
= "gcc_ufs_card_tx_symbol_0_clk",
2817 .ops
= &clk_branch2_ops
,
2822 static struct clk_branch gcc_ufs_card_unipro_core_clk
= {
2823 .halt_reg
= 0x7505c,
2824 .halt_check
= BRANCH_HALT
,
2825 .hwcg_reg
= 0x7505c,
2828 .enable_reg
= 0x7505c,
2829 .enable_mask
= BIT(0),
2830 .hw
.init
= &(struct clk_init_data
){
2831 .name
= "gcc_ufs_card_unipro_core_clk",
2832 .parent_data
= &(const struct clk_parent_data
){
2833 .hw
= &gcc_ufs_card_unipro_core_clk_src
.clkr
.hw
,
2836 .flags
= CLK_SET_RATE_PARENT
,
2837 .ops
= &clk_branch2_ops
,
2842 static struct clk_branch gcc_ufs_phy_ahb_clk
= {
2843 .halt_reg
= 0x77018,
2844 .halt_check
= BRANCH_HALT_VOTED
,
2845 .hwcg_reg
= 0x77018,
2848 .enable_reg
= 0x77018,
2849 .enable_mask
= BIT(0),
2850 .hw
.init
= &(struct clk_init_data
){
2851 .name
= "gcc_ufs_phy_ahb_clk",
2852 .ops
= &clk_branch2_ops
,
2857 static struct clk_branch gcc_ufs_phy_axi_clk
= {
2858 .halt_reg
= 0x77010,
2859 .halt_check
= BRANCH_HALT
,
2860 .hwcg_reg
= 0x77010,
2863 .enable_reg
= 0x77010,
2864 .enable_mask
= BIT(0),
2865 .hw
.init
= &(struct clk_init_data
){
2866 .name
= "gcc_ufs_phy_axi_clk",
2867 .parent_data
= &(const struct clk_parent_data
){
2868 .hw
= &gcc_ufs_phy_axi_clk_src
.clkr
.hw
,
2871 .flags
= CLK_SET_RATE_PARENT
,
2872 .ops
= &clk_branch2_ops
,
2877 static struct clk_branch gcc_ufs_phy_ice_core_clk
= {
2878 .halt_reg
= 0x77064,
2879 .halt_check
= BRANCH_HALT_VOTED
,
2880 .hwcg_reg
= 0x77064,
2883 .enable_reg
= 0x77064,
2884 .enable_mask
= BIT(0),
2885 .hw
.init
= &(struct clk_init_data
){
2886 .name
= "gcc_ufs_phy_ice_core_clk",
2887 .parent_data
= &(const struct clk_parent_data
){
2888 .hw
= &gcc_ufs_phy_ice_core_clk_src
.clkr
.hw
,
2891 .flags
= CLK_SET_RATE_PARENT
,
2892 .ops
= &clk_branch2_ops
,
2897 static struct clk_branch gcc_ufs_phy_phy_aux_clk
= {
2898 .halt_reg
= 0x7709c,
2899 .halt_check
= BRANCH_HALT
,
2900 .hwcg_reg
= 0x7709c,
2903 .enable_reg
= 0x7709c,
2904 .enable_mask
= BIT(0),
2905 .hw
.init
= &(struct clk_init_data
){
2906 .name
= "gcc_ufs_phy_phy_aux_clk",
2907 .parent_data
= &(const struct clk_parent_data
){
2908 .hw
= &gcc_ufs_phy_phy_aux_clk_src
.clkr
.hw
,
2911 .flags
= CLK_SET_RATE_PARENT
,
2912 .ops
= &clk_branch2_ops
,
2917 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk
= {
2918 .halt_reg
= 0x77020,
2919 .halt_check
= BRANCH_HALT_DELAY
,
2921 .enable_reg
= 0x77020,
2922 .enable_mask
= BIT(0),
2923 .hw
.init
= &(struct clk_init_data
){
2924 .name
= "gcc_ufs_phy_rx_symbol_0_clk",
2925 .ops
= &clk_branch2_ops
,
2930 static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk
= {
2931 .halt_reg
= 0x770b8,
2932 .halt_check
= BRANCH_HALT_DELAY
,
2934 .enable_reg
= 0x770b8,
2935 .enable_mask
= BIT(0),
2936 .hw
.init
= &(struct clk_init_data
){
2937 .name
= "gcc_ufs_phy_rx_symbol_1_clk",
2938 .ops
= &clk_branch2_ops
,
2943 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk
= {
2944 .halt_reg
= 0x7701c,
2945 .halt_check
= BRANCH_HALT_DELAY
,
2947 .enable_reg
= 0x7701c,
2948 .enable_mask
= BIT(0),
2949 .hw
.init
= &(struct clk_init_data
){
2950 .name
= "gcc_ufs_phy_tx_symbol_0_clk",
2951 .ops
= &clk_branch2_ops
,
2956 static struct clk_branch gcc_ufs_phy_unipro_core_clk
= {
2957 .halt_reg
= 0x7705c,
2958 .halt_check
= BRANCH_HALT
,
2959 .hwcg_reg
= 0x7705c,
2962 .enable_reg
= 0x7705c,
2963 .enable_mask
= BIT(0),
2964 .hw
.init
= &(struct clk_init_data
){
2965 .name
= "gcc_ufs_phy_unipro_core_clk",
2966 .parent_data
= &(const struct clk_parent_data
){
2967 .hw
= &gcc_ufs_phy_unipro_core_clk_src
.clkr
.hw
,
2970 .flags
= CLK_SET_RATE_PARENT
,
2971 .ops
= &clk_branch2_ops
,
2976 static struct clk_branch gcc_usb30_prim_master_clk
= {
2978 .halt_check
= BRANCH_HALT_VOTED
,
2980 .enable_reg
= 0xf010,
2981 .enable_mask
= BIT(0),
2982 .hw
.init
= &(struct clk_init_data
){
2983 .name
= "gcc_usb30_prim_master_clk",
2984 .parent_data
= &(const struct clk_parent_data
){
2985 .hw
= &gcc_usb30_prim_master_clk_src
.clkr
.hw
,
2988 .flags
= CLK_SET_RATE_PARENT
,
2989 .ops
= &clk_branch2_ops
,
2994 static struct clk_branch gcc_usb30_prim_mock_utmi_clk
= {
2996 .halt_check
= BRANCH_HALT
,
2998 .enable_reg
= 0xf01c,
2999 .enable_mask
= BIT(0),
3000 .hw
.init
= &(struct clk_init_data
){
3001 .name
= "gcc_usb30_prim_mock_utmi_clk",
3002 .parent_data
= &(const struct clk_parent_data
){
3004 &gcc_usb30_prim_mock_utmi_postdiv_clk_src
.clkr
.hw
,
3007 .flags
= CLK_SET_RATE_PARENT
,
3008 .ops
= &clk_branch2_ops
,
3013 static struct clk_branch gcc_usb30_prim_sleep_clk
= {
3015 .halt_check
= BRANCH_HALT
,
3017 .enable_reg
= 0xf018,
3018 .enable_mask
= BIT(0),
3019 .hw
.init
= &(struct clk_init_data
){
3020 .name
= "gcc_usb30_prim_sleep_clk",
3021 .ops
= &clk_branch2_ops
,
3026 static struct clk_branch gcc_usb30_sec_master_clk
= {
3027 .halt_reg
= 0x10010,
3028 .halt_check
= BRANCH_HALT_VOTED
,
3030 .enable_reg
= 0x10010,
3031 .enable_mask
= BIT(0),
3032 .hw
.init
= &(struct clk_init_data
){
3033 .name
= "gcc_usb30_sec_master_clk",
3034 .parent_data
= &(const struct clk_parent_data
){
3035 .hw
= &gcc_usb30_sec_master_clk_src
.clkr
.hw
,
3038 .flags
= CLK_SET_RATE_PARENT
,
3039 .ops
= &clk_branch2_ops
,
3044 static struct clk_branch gcc_usb30_sec_mock_utmi_clk
= {
3045 .halt_reg
= 0x1001c,
3046 .halt_check
= BRANCH_HALT
,
3048 .enable_reg
= 0x1001c,
3049 .enable_mask
= BIT(0),
3050 .hw
.init
= &(struct clk_init_data
){
3051 .name
= "gcc_usb30_sec_mock_utmi_clk",
3052 .parent_data
= &(const struct clk_parent_data
){
3054 &gcc_usb30_sec_mock_utmi_postdiv_clk_src
.clkr
.hw
,
3057 .flags
= CLK_SET_RATE_PARENT
,
3058 .ops
= &clk_branch2_ops
,
3063 static struct clk_branch gcc_usb30_sec_sleep_clk
= {
3064 .halt_reg
= 0x10018,
3065 .halt_check
= BRANCH_HALT
,
3067 .enable_reg
= 0x10018,
3068 .enable_mask
= BIT(0),
3069 .hw
.init
= &(struct clk_init_data
){
3070 .name
= "gcc_usb30_sec_sleep_clk",
3071 .ops
= &clk_branch2_ops
,
3076 static struct clk_branch gcc_usb3_prim_phy_aux_clk
= {
3078 .halt_check
= BRANCH_HALT
,
3080 .enable_reg
= 0xf054,
3081 .enable_mask
= BIT(0),
3082 .hw
.init
= &(struct clk_init_data
){
3083 .name
= "gcc_usb3_prim_phy_aux_clk",
3084 .parent_data
= &(const struct clk_parent_data
){
3085 .hw
= &gcc_usb3_prim_phy_aux_clk_src
.clkr
.hw
,
3088 .flags
= CLK_SET_RATE_PARENT
,
3089 .ops
= &clk_branch2_ops
,
3094 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk
= {
3096 .halt_check
= BRANCH_HALT
,
3098 .enable_reg
= 0xf058,
3099 .enable_mask
= BIT(0),
3100 .hw
.init
= &(struct clk_init_data
){
3101 .name
= "gcc_usb3_prim_phy_com_aux_clk",
3102 .parent_data
= &(const struct clk_parent_data
){
3103 .hw
= &gcc_usb3_prim_phy_aux_clk_src
.clkr
.hw
,
3106 .flags
= CLK_SET_RATE_PARENT
,
3107 .ops
= &clk_branch2_ops
,
3112 static struct clk_branch gcc_usb3_prim_phy_pipe_clk
= {
3114 .halt_check
= BRANCH_HALT_DELAY
,
3116 .enable_reg
= 0xf05c,
3117 .enable_mask
= BIT(0),
3118 .hw
.init
= &(struct clk_init_data
){
3119 .name
= "gcc_usb3_prim_phy_pipe_clk",
3120 .ops
= &clk_branch2_ops
,
3125 static struct clk_branch gcc_usb3_sec_clkref_en
= {
3126 .halt_reg
= 0x8c010,
3127 .halt_check
= BRANCH_HALT
,
3129 .enable_reg
= 0x8c010,
3130 .enable_mask
= BIT(0),
3131 .hw
.init
= &(struct clk_init_data
){
3132 .name
= "gcc_usb3_sec_clkref_en",
3133 .ops
= &clk_branch2_ops
,
3138 static struct clk_branch gcc_usb3_sec_phy_aux_clk
= {
3139 .halt_reg
= 0x10054,
3140 .halt_check
= BRANCH_HALT
,
3142 .enable_reg
= 0x10054,
3143 .enable_mask
= BIT(0),
3144 .hw
.init
= &(struct clk_init_data
){
3145 .name
= "gcc_usb3_sec_phy_aux_clk",
3146 .parent_data
= &(const struct clk_parent_data
){
3147 .hw
= &gcc_usb3_sec_phy_aux_clk_src
.clkr
.hw
,
3150 .flags
= CLK_SET_RATE_PARENT
,
3151 .ops
= &clk_branch2_ops
,
3156 static struct clk_branch gcc_usb3_sec_phy_com_aux_clk
= {
3157 .halt_reg
= 0x10058,
3158 .halt_check
= BRANCH_HALT
,
3160 .enable_reg
= 0x10058,
3161 .enable_mask
= BIT(0),
3162 .hw
.init
= &(struct clk_init_data
){
3163 .name
= "gcc_usb3_sec_phy_com_aux_clk",
3164 .parent_data
= &(const struct clk_parent_data
){
3165 .hw
= &gcc_usb3_sec_phy_aux_clk_src
.clkr
.hw
,
3168 .flags
= CLK_SET_RATE_PARENT
,
3169 .ops
= &clk_branch2_ops
,
3174 static struct clk_branch gcc_usb3_sec_phy_pipe_clk
= {
3175 .halt_reg
= 0x1005c,
3176 .halt_check
= BRANCH_HALT_DELAY
,
3178 .enable_reg
= 0x1005c,
3179 .enable_mask
= BIT(0),
3180 .hw
.init
= &(struct clk_init_data
){
3181 .name
= "gcc_usb3_sec_phy_pipe_clk",
3182 .ops
= &clk_branch2_ops
,
3187 static struct clk_branch gcc_video_axi0_clk
= {
3189 .halt_check
= BRANCH_HALT_VOTED
,
3191 .enable_reg
= 0xb024,
3192 .enable_mask
= BIT(0),
3193 .hw
.init
= &(struct clk_init_data
){
3194 .name
= "gcc_video_axi0_clk",
3195 .ops
= &clk_branch2_ops
,
3200 static struct clk_branch gcc_video_axi1_clk
= {
3202 .halt_check
= BRANCH_HALT_VOTED
,
3204 .enable_reg
= 0xb028,
3205 .enable_mask
= BIT(0),
3206 .hw
.init
= &(struct clk_init_data
){
3207 .name
= "gcc_video_axi1_clk",
3208 .ops
= &clk_branch2_ops
,
3213 static struct clk_branch gcc_video_xo_clk
= {
3215 .halt_check
= BRANCH_HALT
,
3217 .enable_reg
= 0xb03c,
3218 .enable_mask
= BIT(0),
3219 .hw
.init
= &(struct clk_init_data
){
3220 .name
= "gcc_video_xo_clk",
3221 .ops
= &clk_branch2_ops
,
3226 static struct gdsc pcie_0_gdsc
= {
3229 .name
= "pcie_0_gdsc",
3231 .pwrsts
= PWRSTS_OFF_ON
,
3234 static struct gdsc pcie_1_gdsc
= {
3237 .name
= "pcie_1_gdsc",
3239 .pwrsts
= PWRSTS_OFF_ON
,
3242 static struct gdsc pcie_2_gdsc
= {
3245 .name
= "pcie_2_gdsc",
3247 .pwrsts
= PWRSTS_OFF_ON
,
3250 static struct gdsc ufs_card_gdsc
= {
3253 .name
= "ufs_card_gdsc",
3255 .pwrsts
= PWRSTS_OFF_ON
,
3258 static struct gdsc ufs_phy_gdsc
= {
3261 .name
= "ufs_phy_gdsc",
3263 .pwrsts
= PWRSTS_OFF_ON
,
3266 static struct gdsc usb30_prim_gdsc
= {
3269 .name
= "usb30_prim_gdsc",
3271 .pwrsts
= PWRSTS_OFF_ON
,
3274 static struct gdsc usb30_sec_gdsc
= {
3277 .name
= "usb30_sec_gdsc",
3279 .pwrsts
= PWRSTS_OFF_ON
,
3282 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc
= {
3285 .name
= "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc",
3287 .pwrsts
= PWRSTS_OFF_ON
,
3291 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc
= {
3294 .name
= "hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc",
3296 .pwrsts
= PWRSTS_OFF_ON
,
3300 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc
= {
3303 .name
= "hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc",
3305 .pwrsts
= PWRSTS_OFF_ON
,
3309 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc
= {
3312 .name
= "hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc",
3314 .pwrsts
= PWRSTS_OFF_ON
,
3318 static struct clk_regmap
*gcc_sm8250_clocks
[] = {
3319 [GCC_AGGRE_NOC_PCIE_TBU_CLK
] = &gcc_aggre_noc_pcie_tbu_clk
.clkr
,
3320 [GCC_AGGRE_UFS_CARD_AXI_CLK
] = &gcc_aggre_ufs_card_axi_clk
.clkr
,
3321 [GCC_AGGRE_UFS_PHY_AXI_CLK
] = &gcc_aggre_ufs_phy_axi_clk
.clkr
,
3322 [GCC_AGGRE_USB3_PRIM_AXI_CLK
] = &gcc_aggre_usb3_prim_axi_clk
.clkr
,
3323 [GCC_AGGRE_USB3_SEC_AXI_CLK
] = &gcc_aggre_usb3_sec_axi_clk
.clkr
,
3324 [GCC_BOOT_ROM_AHB_CLK
] = &gcc_boot_rom_ahb_clk
.clkr
,
3325 [GCC_CAMERA_HF_AXI_CLK
] = &gcc_camera_hf_axi_clk
.clkr
,
3326 [GCC_CAMERA_SF_AXI_CLK
] = &gcc_camera_sf_axi_clk
.clkr
,
3327 [GCC_CAMERA_XO_CLK
] = &gcc_camera_xo_clk
.clkr
,
3328 [GCC_CFG_NOC_USB3_PRIM_AXI_CLK
] = &gcc_cfg_noc_usb3_prim_axi_clk
.clkr
,
3329 [GCC_CFG_NOC_USB3_SEC_AXI_CLK
] = &gcc_cfg_noc_usb3_sec_axi_clk
.clkr
,
3330 [GCC_CPUSS_AHB_CLK
] = &gcc_cpuss_ahb_clk
.clkr
,
3331 [GCC_CPUSS_AHB_CLK_SRC
] = &gcc_cpuss_ahb_clk_src
.clkr
,
3332 [GCC_CPUSS_AHB_POSTDIV_CLK_SRC
] = &gcc_cpuss_ahb_postdiv_clk_src
.clkr
,
3333 [GCC_CPUSS_RBCPR_CLK
] = &gcc_cpuss_rbcpr_clk
.clkr
,
3334 [GCC_DDRSS_GPU_AXI_CLK
] = &gcc_ddrss_gpu_axi_clk
.clkr
,
3335 [GCC_DDRSS_PCIE_SF_TBU_CLK
] = &gcc_ddrss_pcie_sf_tbu_clk
.clkr
,
3336 [GCC_DISP_HF_AXI_CLK
] = &gcc_disp_hf_axi_clk
.clkr
,
3337 [GCC_DISP_SF_AXI_CLK
] = &gcc_disp_sf_axi_clk
.clkr
,
3338 [GCC_DISP_XO_CLK
] = &gcc_disp_xo_clk
.clkr
,
3339 [GCC_GP1_CLK
] = &gcc_gp1_clk
.clkr
,
3340 [GCC_GP1_CLK_SRC
] = &gcc_gp1_clk_src
.clkr
,
3341 [GCC_GP2_CLK
] = &gcc_gp2_clk
.clkr
,
3342 [GCC_GP2_CLK_SRC
] = &gcc_gp2_clk_src
.clkr
,
3343 [GCC_GP3_CLK
] = &gcc_gp3_clk
.clkr
,
3344 [GCC_GP3_CLK_SRC
] = &gcc_gp3_clk_src
.clkr
,
3345 [GCC_GPU_GPLL0_CLK_SRC
] = &gcc_gpu_gpll0_clk_src
.clkr
,
3346 [GCC_GPU_GPLL0_DIV_CLK_SRC
] = &gcc_gpu_gpll0_div_clk_src
.clkr
,
3347 [GCC_GPU_IREF_EN
] = &gcc_gpu_iref_en
.clkr
,
3348 [GCC_GPU_MEMNOC_GFX_CLK
] = &gcc_gpu_memnoc_gfx_clk
.clkr
,
3349 [GCC_GPU_SNOC_DVM_GFX_CLK
] = &gcc_gpu_snoc_dvm_gfx_clk
.clkr
,
3350 [GCC_NPU_AXI_CLK
] = &gcc_npu_axi_clk
.clkr
,
3351 [GCC_NPU_BWMON_AXI_CLK
] = &gcc_npu_bwmon_axi_clk
.clkr
,
3352 [GCC_NPU_BWMON_CFG_AHB_CLK
] = &gcc_npu_bwmon_cfg_ahb_clk
.clkr
,
3353 [GCC_NPU_CFG_AHB_CLK
] = &gcc_npu_cfg_ahb_clk
.clkr
,
3354 [GCC_NPU_DMA_CLK
] = &gcc_npu_dma_clk
.clkr
,
3355 [GCC_NPU_GPLL0_CLK_SRC
] = &gcc_npu_gpll0_clk_src
.clkr
,
3356 [GCC_NPU_GPLL0_DIV_CLK_SRC
] = &gcc_npu_gpll0_div_clk_src
.clkr
,
3357 [GCC_PCIE0_PHY_REFGEN_CLK
] = &gcc_pcie0_phy_refgen_clk
.clkr
,
3358 [GCC_PCIE1_PHY_REFGEN_CLK
] = &gcc_pcie1_phy_refgen_clk
.clkr
,
3359 [GCC_PCIE2_PHY_REFGEN_CLK
] = &gcc_pcie2_phy_refgen_clk
.clkr
,
3360 [GCC_PCIE_0_AUX_CLK
] = &gcc_pcie_0_aux_clk
.clkr
,
3361 [GCC_PCIE_0_AUX_CLK_SRC
] = &gcc_pcie_0_aux_clk_src
.clkr
,
3362 [GCC_PCIE_0_CFG_AHB_CLK
] = &gcc_pcie_0_cfg_ahb_clk
.clkr
,
3363 [GCC_PCIE_0_MSTR_AXI_CLK
] = &gcc_pcie_0_mstr_axi_clk
.clkr
,
3364 [GCC_PCIE_0_PIPE_CLK
] = &gcc_pcie_0_pipe_clk
.clkr
,
3365 [GCC_PCIE_0_SLV_AXI_CLK
] = &gcc_pcie_0_slv_axi_clk
.clkr
,
3366 [GCC_PCIE_0_SLV_Q2A_AXI_CLK
] = &gcc_pcie_0_slv_q2a_axi_clk
.clkr
,
3367 [GCC_PCIE_1_AUX_CLK
] = &gcc_pcie_1_aux_clk
.clkr
,
3368 [GCC_PCIE_1_AUX_CLK_SRC
] = &gcc_pcie_1_aux_clk_src
.clkr
,
3369 [GCC_PCIE_1_CFG_AHB_CLK
] = &gcc_pcie_1_cfg_ahb_clk
.clkr
,
3370 [GCC_PCIE_1_MSTR_AXI_CLK
] = &gcc_pcie_1_mstr_axi_clk
.clkr
,
3371 [GCC_PCIE_1_PIPE_CLK
] = &gcc_pcie_1_pipe_clk
.clkr
,
3372 [GCC_PCIE_1_SLV_AXI_CLK
] = &gcc_pcie_1_slv_axi_clk
.clkr
,
3373 [GCC_PCIE_1_SLV_Q2A_AXI_CLK
] = &gcc_pcie_1_slv_q2a_axi_clk
.clkr
,
3374 [GCC_PCIE_2_AUX_CLK
] = &gcc_pcie_2_aux_clk
.clkr
,
3375 [GCC_PCIE_2_AUX_CLK_SRC
] = &gcc_pcie_2_aux_clk_src
.clkr
,
3376 [GCC_PCIE_2_CFG_AHB_CLK
] = &gcc_pcie_2_cfg_ahb_clk
.clkr
,
3377 [GCC_PCIE_2_MSTR_AXI_CLK
] = &gcc_pcie_2_mstr_axi_clk
.clkr
,
3378 [GCC_PCIE_2_PIPE_CLK
] = &gcc_pcie_2_pipe_clk
.clkr
,
3379 [GCC_PCIE_2_SLV_AXI_CLK
] = &gcc_pcie_2_slv_axi_clk
.clkr
,
3380 [GCC_PCIE_2_SLV_Q2A_AXI_CLK
] = &gcc_pcie_2_slv_q2a_axi_clk
.clkr
,
3381 [GCC_PCIE_MDM_CLKREF_EN
] = &gcc_pcie_mdm_clkref_en
.clkr
,
3382 [GCC_PCIE_PHY_AUX_CLK
] = &gcc_pcie_phy_aux_clk
.clkr
,
3383 [GCC_PCIE_PHY_REFGEN_CLK_SRC
] = &gcc_pcie_phy_refgen_clk_src
.clkr
,
3384 [GCC_PCIE_WIFI_CLKREF_EN
] = &gcc_pcie_wifi_clkref_en
.clkr
,
3385 [GCC_PCIE_WIGIG_CLKREF_EN
] = &gcc_pcie_wigig_clkref_en
.clkr
,
3386 [GCC_PDM2_CLK
] = &gcc_pdm2_clk
.clkr
,
3387 [GCC_PDM2_CLK_SRC
] = &gcc_pdm2_clk_src
.clkr
,
3388 [GCC_PDM_AHB_CLK
] = &gcc_pdm_ahb_clk
.clkr
,
3389 [GCC_PDM_XO4_CLK
] = &gcc_pdm_xo4_clk
.clkr
,
3390 [GCC_PRNG_AHB_CLK
] = &gcc_prng_ahb_clk
.clkr
,
3391 [GCC_QMIP_CAMERA_NRT_AHB_CLK
] = &gcc_qmip_camera_nrt_ahb_clk
.clkr
,
3392 [GCC_QMIP_CAMERA_RT_AHB_CLK
] = &gcc_qmip_camera_rt_ahb_clk
.clkr
,
3393 [GCC_QMIP_DISP_AHB_CLK
] = &gcc_qmip_disp_ahb_clk
.clkr
,
3394 [GCC_QMIP_VIDEO_CVP_AHB_CLK
] = &gcc_qmip_video_cvp_ahb_clk
.clkr
,
3395 [GCC_QMIP_VIDEO_VCODEC_AHB_CLK
] = &gcc_qmip_video_vcodec_ahb_clk
.clkr
,
3396 [GCC_QUPV3_WRAP0_CORE_2X_CLK
] = &gcc_qupv3_wrap0_core_2x_clk
.clkr
,
3397 [GCC_QUPV3_WRAP0_CORE_CLK
] = &gcc_qupv3_wrap0_core_clk
.clkr
,
3398 [GCC_QUPV3_WRAP0_S0_CLK
] = &gcc_qupv3_wrap0_s0_clk
.clkr
,
3399 [GCC_QUPV3_WRAP0_S0_CLK_SRC
] = &gcc_qupv3_wrap0_s0_clk_src
.clkr
,
3400 [GCC_QUPV3_WRAP0_S1_CLK
] = &gcc_qupv3_wrap0_s1_clk
.clkr
,
3401 [GCC_QUPV3_WRAP0_S1_CLK_SRC
] = &gcc_qupv3_wrap0_s1_clk_src
.clkr
,
3402 [GCC_QUPV3_WRAP0_S2_CLK
] = &gcc_qupv3_wrap0_s2_clk
.clkr
,
3403 [GCC_QUPV3_WRAP0_S2_CLK_SRC
] = &gcc_qupv3_wrap0_s2_clk_src
.clkr
,
3404 [GCC_QUPV3_WRAP0_S3_CLK
] = &gcc_qupv3_wrap0_s3_clk
.clkr
,
3405 [GCC_QUPV3_WRAP0_S3_CLK_SRC
] = &gcc_qupv3_wrap0_s3_clk_src
.clkr
,
3406 [GCC_QUPV3_WRAP0_S4_CLK
] = &gcc_qupv3_wrap0_s4_clk
.clkr
,
3407 [GCC_QUPV3_WRAP0_S4_CLK_SRC
] = &gcc_qupv3_wrap0_s4_clk_src
.clkr
,
3408 [GCC_QUPV3_WRAP0_S5_CLK
] = &gcc_qupv3_wrap0_s5_clk
.clkr
,
3409 [GCC_QUPV3_WRAP0_S5_CLK_SRC
] = &gcc_qupv3_wrap0_s5_clk_src
.clkr
,
3410 [GCC_QUPV3_WRAP0_S6_CLK
] = &gcc_qupv3_wrap0_s6_clk
.clkr
,
3411 [GCC_QUPV3_WRAP0_S6_CLK_SRC
] = &gcc_qupv3_wrap0_s6_clk_src
.clkr
,
3412 [GCC_QUPV3_WRAP0_S7_CLK
] = &gcc_qupv3_wrap0_s7_clk
.clkr
,
3413 [GCC_QUPV3_WRAP0_S7_CLK_SRC
] = &gcc_qupv3_wrap0_s7_clk_src
.clkr
,
3414 [GCC_QUPV3_WRAP1_CORE_2X_CLK
] = &gcc_qupv3_wrap1_core_2x_clk
.clkr
,
3415 [GCC_QUPV3_WRAP1_CORE_CLK
] = &gcc_qupv3_wrap1_core_clk
.clkr
,
3416 [GCC_QUPV3_WRAP1_S0_CLK
] = &gcc_qupv3_wrap1_s0_clk
.clkr
,
3417 [GCC_QUPV3_WRAP1_S0_CLK_SRC
] = &gcc_qupv3_wrap1_s0_clk_src
.clkr
,
3418 [GCC_QUPV3_WRAP1_S1_CLK
] = &gcc_qupv3_wrap1_s1_clk
.clkr
,
3419 [GCC_QUPV3_WRAP1_S1_CLK_SRC
] = &gcc_qupv3_wrap1_s1_clk_src
.clkr
,
3420 [GCC_QUPV3_WRAP1_S2_CLK
] = &gcc_qupv3_wrap1_s2_clk
.clkr
,
3421 [GCC_QUPV3_WRAP1_S2_CLK_SRC
] = &gcc_qupv3_wrap1_s2_clk_src
.clkr
,
3422 [GCC_QUPV3_WRAP1_S3_CLK
] = &gcc_qupv3_wrap1_s3_clk
.clkr
,
3423 [GCC_QUPV3_WRAP1_S3_CLK_SRC
] = &gcc_qupv3_wrap1_s3_clk_src
.clkr
,
3424 [GCC_QUPV3_WRAP1_S4_CLK
] = &gcc_qupv3_wrap1_s4_clk
.clkr
,
3425 [GCC_QUPV3_WRAP1_S4_CLK_SRC
] = &gcc_qupv3_wrap1_s4_clk_src
.clkr
,
3426 [GCC_QUPV3_WRAP1_S5_CLK
] = &gcc_qupv3_wrap1_s5_clk
.clkr
,
3427 [GCC_QUPV3_WRAP1_S5_CLK_SRC
] = &gcc_qupv3_wrap1_s5_clk_src
.clkr
,
3428 [GCC_QUPV3_WRAP2_CORE_2X_CLK
] = &gcc_qupv3_wrap2_core_2x_clk
.clkr
,
3429 [GCC_QUPV3_WRAP2_CORE_CLK
] = &gcc_qupv3_wrap2_core_clk
.clkr
,
3430 [GCC_QUPV3_WRAP2_S0_CLK
] = &gcc_qupv3_wrap2_s0_clk
.clkr
,
3431 [GCC_QUPV3_WRAP2_S0_CLK_SRC
] = &gcc_qupv3_wrap2_s0_clk_src
.clkr
,
3432 [GCC_QUPV3_WRAP2_S1_CLK
] = &gcc_qupv3_wrap2_s1_clk
.clkr
,
3433 [GCC_QUPV3_WRAP2_S1_CLK_SRC
] = &gcc_qupv3_wrap2_s1_clk_src
.clkr
,
3434 [GCC_QUPV3_WRAP2_S2_CLK
] = &gcc_qupv3_wrap2_s2_clk
.clkr
,
3435 [GCC_QUPV3_WRAP2_S2_CLK_SRC
] = &gcc_qupv3_wrap2_s2_clk_src
.clkr
,
3436 [GCC_QUPV3_WRAP2_S3_CLK
] = &gcc_qupv3_wrap2_s3_clk
.clkr
,
3437 [GCC_QUPV3_WRAP2_S3_CLK_SRC
] = &gcc_qupv3_wrap2_s3_clk_src
.clkr
,
3438 [GCC_QUPV3_WRAP2_S4_CLK
] = &gcc_qupv3_wrap2_s4_clk
.clkr
,
3439 [GCC_QUPV3_WRAP2_S4_CLK_SRC
] = &gcc_qupv3_wrap2_s4_clk_src
.clkr
,
3440 [GCC_QUPV3_WRAP2_S5_CLK
] = &gcc_qupv3_wrap2_s5_clk
.clkr
,
3441 [GCC_QUPV3_WRAP2_S5_CLK_SRC
] = &gcc_qupv3_wrap2_s5_clk_src
.clkr
,
3442 [GCC_QUPV3_WRAP_0_M_AHB_CLK
] = &gcc_qupv3_wrap_0_m_ahb_clk
.clkr
,
3443 [GCC_QUPV3_WRAP_0_S_AHB_CLK
] = &gcc_qupv3_wrap_0_s_ahb_clk
.clkr
,
3444 [GCC_QUPV3_WRAP_1_M_AHB_CLK
] = &gcc_qupv3_wrap_1_m_ahb_clk
.clkr
,
3445 [GCC_QUPV3_WRAP_1_S_AHB_CLK
] = &gcc_qupv3_wrap_1_s_ahb_clk
.clkr
,
3446 [GCC_QUPV3_WRAP_2_M_AHB_CLK
] = &gcc_qupv3_wrap_2_m_ahb_clk
.clkr
,
3447 [GCC_QUPV3_WRAP_2_S_AHB_CLK
] = &gcc_qupv3_wrap_2_s_ahb_clk
.clkr
,
3448 [GCC_SDCC2_AHB_CLK
] = &gcc_sdcc2_ahb_clk
.clkr
,
3449 [GCC_SDCC2_APPS_CLK
] = &gcc_sdcc2_apps_clk
.clkr
,
3450 [GCC_SDCC2_APPS_CLK_SRC
] = &gcc_sdcc2_apps_clk_src
.clkr
,
3451 [GCC_SDCC4_AHB_CLK
] = &gcc_sdcc4_ahb_clk
.clkr
,
3452 [GCC_SDCC4_APPS_CLK
] = &gcc_sdcc4_apps_clk
.clkr
,
3453 [GCC_SDCC4_APPS_CLK_SRC
] = &gcc_sdcc4_apps_clk_src
.clkr
,
3454 [GCC_TSIF_AHB_CLK
] = &gcc_tsif_ahb_clk
.clkr
,
3455 [GCC_TSIF_INACTIVITY_TIMERS_CLK
] = &gcc_tsif_inactivity_timers_clk
.clkr
,
3456 [GCC_TSIF_REF_CLK
] = &gcc_tsif_ref_clk
.clkr
,
3457 [GCC_TSIF_REF_CLK_SRC
] = &gcc_tsif_ref_clk_src
.clkr
,
3458 [GCC_UFS_1X_CLKREF_EN
] = &gcc_ufs_1x_clkref_en
.clkr
,
3459 [GCC_UFS_CARD_AHB_CLK
] = &gcc_ufs_card_ahb_clk
.clkr
,
3460 [GCC_UFS_CARD_AXI_CLK
] = &gcc_ufs_card_axi_clk
.clkr
,
3461 [GCC_UFS_CARD_AXI_CLK_SRC
] = &gcc_ufs_card_axi_clk_src
.clkr
,
3462 [GCC_UFS_CARD_ICE_CORE_CLK
] = &gcc_ufs_card_ice_core_clk
.clkr
,
3463 [GCC_UFS_CARD_ICE_CORE_CLK_SRC
] = &gcc_ufs_card_ice_core_clk_src
.clkr
,
3464 [GCC_UFS_CARD_PHY_AUX_CLK
] = &gcc_ufs_card_phy_aux_clk
.clkr
,
3465 [GCC_UFS_CARD_PHY_AUX_CLK_SRC
] = &gcc_ufs_card_phy_aux_clk_src
.clkr
,
3466 [GCC_UFS_CARD_RX_SYMBOL_0_CLK
] = &gcc_ufs_card_rx_symbol_0_clk
.clkr
,
3467 [GCC_UFS_CARD_RX_SYMBOL_1_CLK
] = &gcc_ufs_card_rx_symbol_1_clk
.clkr
,
3468 [GCC_UFS_CARD_TX_SYMBOL_0_CLK
] = &gcc_ufs_card_tx_symbol_0_clk
.clkr
,
3469 [GCC_UFS_CARD_UNIPRO_CORE_CLK
] = &gcc_ufs_card_unipro_core_clk
.clkr
,
3470 [GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC
] =
3471 &gcc_ufs_card_unipro_core_clk_src
.clkr
,
3472 [GCC_UFS_PHY_AHB_CLK
] = &gcc_ufs_phy_ahb_clk
.clkr
,
3473 [GCC_UFS_PHY_AXI_CLK
] = &gcc_ufs_phy_axi_clk
.clkr
,
3474 [GCC_UFS_PHY_AXI_CLK_SRC
] = &gcc_ufs_phy_axi_clk_src
.clkr
,
3475 [GCC_UFS_PHY_ICE_CORE_CLK
] = &gcc_ufs_phy_ice_core_clk
.clkr
,
3476 [GCC_UFS_PHY_ICE_CORE_CLK_SRC
] = &gcc_ufs_phy_ice_core_clk_src
.clkr
,
3477 [GCC_UFS_PHY_PHY_AUX_CLK
] = &gcc_ufs_phy_phy_aux_clk
.clkr
,
3478 [GCC_UFS_PHY_PHY_AUX_CLK_SRC
] = &gcc_ufs_phy_phy_aux_clk_src
.clkr
,
3479 [GCC_UFS_PHY_RX_SYMBOL_0_CLK
] = &gcc_ufs_phy_rx_symbol_0_clk
.clkr
,
3480 [GCC_UFS_PHY_RX_SYMBOL_1_CLK
] = &gcc_ufs_phy_rx_symbol_1_clk
.clkr
,
3481 [GCC_UFS_PHY_TX_SYMBOL_0_CLK
] = &gcc_ufs_phy_tx_symbol_0_clk
.clkr
,
3482 [GCC_UFS_PHY_UNIPRO_CORE_CLK
] = &gcc_ufs_phy_unipro_core_clk
.clkr
,
3483 [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC
] =
3484 &gcc_ufs_phy_unipro_core_clk_src
.clkr
,
3485 [GCC_USB30_PRIM_MASTER_CLK
] = &gcc_usb30_prim_master_clk
.clkr
,
3486 [GCC_USB30_PRIM_MASTER_CLK_SRC
] = &gcc_usb30_prim_master_clk_src
.clkr
,
3487 [GCC_USB30_PRIM_MOCK_UTMI_CLK
] = &gcc_usb30_prim_mock_utmi_clk
.clkr
,
3488 [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC
] =
3489 &gcc_usb30_prim_mock_utmi_clk_src
.clkr
,
3490 [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC
] =
3491 &gcc_usb30_prim_mock_utmi_postdiv_clk_src
.clkr
,
3492 [GCC_USB30_PRIM_SLEEP_CLK
] = &gcc_usb30_prim_sleep_clk
.clkr
,
3493 [GCC_USB30_SEC_MASTER_CLK
] = &gcc_usb30_sec_master_clk
.clkr
,
3494 [GCC_USB30_SEC_MASTER_CLK_SRC
] = &gcc_usb30_sec_master_clk_src
.clkr
,
3495 [GCC_USB30_SEC_MOCK_UTMI_CLK
] = &gcc_usb30_sec_mock_utmi_clk
.clkr
,
3496 [GCC_USB30_SEC_MOCK_UTMI_CLK_SRC
] =
3497 &gcc_usb30_sec_mock_utmi_clk_src
.clkr
,
3498 [GCC_USB30_SEC_MOCK_UTMI_POSTDIV_CLK_SRC
] =
3499 &gcc_usb30_sec_mock_utmi_postdiv_clk_src
.clkr
,
3500 [GCC_USB30_SEC_SLEEP_CLK
] = &gcc_usb30_sec_sleep_clk
.clkr
,
3501 [GCC_USB3_PRIM_PHY_AUX_CLK
] = &gcc_usb3_prim_phy_aux_clk
.clkr
,
3502 [GCC_USB3_PRIM_PHY_AUX_CLK_SRC
] = &gcc_usb3_prim_phy_aux_clk_src
.clkr
,
3503 [GCC_USB3_PRIM_PHY_COM_AUX_CLK
] = &gcc_usb3_prim_phy_com_aux_clk
.clkr
,
3504 [GCC_USB3_PRIM_PHY_PIPE_CLK
] = &gcc_usb3_prim_phy_pipe_clk
.clkr
,
3505 [GCC_USB3_SEC_CLKREF_EN
] = &gcc_usb3_sec_clkref_en
.clkr
,
3506 [GCC_USB3_SEC_PHY_AUX_CLK
] = &gcc_usb3_sec_phy_aux_clk
.clkr
,
3507 [GCC_USB3_SEC_PHY_AUX_CLK_SRC
] = &gcc_usb3_sec_phy_aux_clk_src
.clkr
,
3508 [GCC_USB3_SEC_PHY_COM_AUX_CLK
] = &gcc_usb3_sec_phy_com_aux_clk
.clkr
,
3509 [GCC_USB3_SEC_PHY_PIPE_CLK
] = &gcc_usb3_sec_phy_pipe_clk
.clkr
,
3510 [GCC_VIDEO_AXI0_CLK
] = &gcc_video_axi0_clk
.clkr
,
3511 [GCC_VIDEO_AXI1_CLK
] = &gcc_video_axi1_clk
.clkr
,
3512 [GCC_VIDEO_XO_CLK
] = &gcc_video_xo_clk
.clkr
,
3513 [GPLL0
] = &gpll0
.clkr
,
3514 [GPLL0_OUT_EVEN
] = &gpll0_out_even
.clkr
,
3515 [GPLL4
] = &gpll4
.clkr
,
3516 [GPLL9
] = &gpll9
.clkr
,
3519 static struct gdsc
*gcc_sm8250_gdscs
[] = {
3520 [PCIE_0_GDSC
] = &pcie_0_gdsc
,
3521 [PCIE_1_GDSC
] = &pcie_1_gdsc
,
3522 [PCIE_2_GDSC
] = &pcie_2_gdsc
,
3523 [UFS_CARD_GDSC
] = &ufs_card_gdsc
,
3524 [UFS_PHY_GDSC
] = &ufs_phy_gdsc
,
3525 [USB30_PRIM_GDSC
] = &usb30_prim_gdsc
,
3526 [USB30_SEC_GDSC
] = &usb30_sec_gdsc
,
3527 [HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC
] =
3528 &hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc
,
3529 [HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC
] =
3530 &hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc
,
3531 [HLOS1_VOTE_MMNOC_MMU_TBU_SF0_GDSC
] =
3532 &hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc
,
3533 [HLOS1_VOTE_MMNOC_MMU_TBU_SF1_GDSC
] =
3534 &hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc
,
3537 static const struct qcom_reset_map gcc_sm8250_resets
[] = {
3538 [GCC_GPU_BCR
] = { 0x71000 },
3539 [GCC_MMSS_BCR
] = { 0xb000 },
3540 [GCC_NPU_BWMON_BCR
] = { 0x73000 },
3541 [GCC_NPU_BCR
] = { 0x4d000 },
3542 [GCC_PCIE_0_BCR
] = { 0x6b000 },
3543 [GCC_PCIE_0_LINK_DOWN_BCR
] = { 0x6c014 },
3544 [GCC_PCIE_0_NOCSR_COM_PHY_BCR
] = { 0x6c020 },
3545 [GCC_PCIE_0_PHY_BCR
] = { 0x6c01c },
3546 [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR
] = { 0x6c028 },
3547 [GCC_PCIE_1_BCR
] = { 0x8d000 },
3548 [GCC_PCIE_1_LINK_DOWN_BCR
] = { 0x8e014 },
3549 [GCC_PCIE_1_NOCSR_COM_PHY_BCR
] = { 0x8e020 },
3550 [GCC_PCIE_1_PHY_BCR
] = { 0x8e01c },
3551 [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR
] = { 0x8e000 },
3552 [GCC_PCIE_2_BCR
] = { 0x6000 },
3553 [GCC_PCIE_2_LINK_DOWN_BCR
] = { 0x1f014 },
3554 [GCC_PCIE_2_NOCSR_COM_PHY_BCR
] = { 0x1f020 },
3555 [GCC_PCIE_2_PHY_BCR
] = { 0x1f01c },
3556 [GCC_PCIE_2_PHY_NOCSR_COM_PHY_BCR
] = { 0x1f028 },
3557 [GCC_PCIE_PHY_BCR
] = { 0x6f000 },
3558 [GCC_PCIE_PHY_CFG_AHB_BCR
] = { 0x6f00c },
3559 [GCC_PCIE_PHY_COM_BCR
] = { 0x6f010 },
3560 [GCC_PDM_BCR
] = { 0x33000 },
3561 [GCC_PRNG_BCR
] = { 0x34000 },
3562 [GCC_QUPV3_WRAPPER_0_BCR
] = { 0x17000 },
3563 [GCC_QUPV3_WRAPPER_1_BCR
] = { 0x18000 },
3564 [GCC_QUPV3_WRAPPER_2_BCR
] = { 0x1e000 },
3565 [GCC_QUSB2PHY_PRIM_BCR
] = { 0x12000 },
3566 [GCC_QUSB2PHY_SEC_BCR
] = { 0x12004 },
3567 [GCC_SDCC2_BCR
] = { 0x14000 },
3568 [GCC_SDCC4_BCR
] = { 0x16000 },
3569 [GCC_TSIF_BCR
] = { 0x36000 },
3570 [GCC_UFS_CARD_BCR
] = { 0x75000 },
3571 [GCC_UFS_PHY_BCR
] = { 0x77000 },
3572 [GCC_USB30_PRIM_BCR
] = { 0xf000 },
3573 [GCC_USB30_SEC_BCR
] = { 0x10000 },
3574 [GCC_USB3_DP_PHY_PRIM_BCR
] = { 0x50008 },
3575 [GCC_USB3_DP_PHY_SEC_BCR
] = { 0x50014 },
3576 [GCC_USB3_PHY_PRIM_BCR
] = { 0x50000 },
3577 [GCC_USB3_PHY_SEC_BCR
] = { 0x5000c },
3578 [GCC_USB3PHY_PHY_PRIM_BCR
] = { 0x50004 },
3579 [GCC_USB3PHY_PHY_SEC_BCR
] = { 0x50010 },
3580 [GCC_USB_PHY_CFG_AHB2PHY_BCR
] = { 0x6a000 },
3581 [GCC_VIDEO_AXI0_CLK_ARES
] = { 0xb024, 2 },
3582 [GCC_VIDEO_AXI1_CLK_ARES
] = { 0xb028, 2 },
3585 static const struct clk_rcg_dfs_data gcc_dfs_clocks
[] = {
3586 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src
),
3587 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src
),
3588 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src
),
3589 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src
),
3590 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src
),
3591 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src
),
3592 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src
),
3593 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src
),
3594 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src
),
3595 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src
),
3596 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src
),
3597 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src
),
3598 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src
),
3599 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src
),
3600 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src
),
3601 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src
),
3602 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src
),
3603 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src
),
3604 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src
),
3605 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src
),
3608 static const struct regmap_config gcc_sm8250_regmap_config
= {
3612 .max_register
= 0x9c100,
3616 static const struct qcom_cc_desc gcc_sm8250_desc
= {
3617 .config
= &gcc_sm8250_regmap_config
,
3618 .clks
= gcc_sm8250_clocks
,
3619 .num_clks
= ARRAY_SIZE(gcc_sm8250_clocks
),
3620 .resets
= gcc_sm8250_resets
,
3621 .num_resets
= ARRAY_SIZE(gcc_sm8250_resets
),
3622 .gdscs
= gcc_sm8250_gdscs
,
3623 .num_gdscs
= ARRAY_SIZE(gcc_sm8250_gdscs
),
3626 static const struct of_device_id gcc_sm8250_match_table
[] = {
3627 { .compatible
= "qcom,gcc-sm8250" },
3630 MODULE_DEVICE_TABLE(of
, gcc_sm8250_match_table
);
3632 static int gcc_sm8250_probe(struct platform_device
*pdev
)
3634 struct regmap
*regmap
;
3637 regmap
= qcom_cc_map(pdev
, &gcc_sm8250_desc
);
3639 return PTR_ERR(regmap
);
3642 * Disable the GPLL0 active input to NPU and GPU
3643 * via MISC registers.
3645 regmap_update_bits(regmap
, 0x4d110, 0x3, 0x3);
3646 regmap_update_bits(regmap
, 0x71028, 0x3, 0x3);
3649 * Keep the clocks always-ON
3650 * GCC_VIDEO_AHB_CLK, GCC_CAMERA_AHB_CLK, GCC_DISP_AHB_CLK,
3651 * GCC_CPUSS_DVM_BUS_CLK, GCC_GPU_CFG_AHB_CLK,
3652 * GCC_SYS_NOC_CPUSS_AHB_CLK
3654 regmap_update_bits(regmap
, 0x0b004, BIT(0), BIT(0));
3655 regmap_update_bits(regmap
, 0x0b008, BIT(0), BIT(0));
3656 regmap_update_bits(regmap
, 0x0b00c, BIT(0), BIT(0));
3657 regmap_update_bits(regmap
, 0x4818c, BIT(0), BIT(0));
3658 regmap_update_bits(regmap
, 0x71004, BIT(0), BIT(0));
3659 regmap_update_bits(regmap
, 0x52000, BIT(0), BIT(0));
3661 ret
= qcom_cc_register_rcg_dfs(regmap
, gcc_dfs_clocks
,
3662 ARRAY_SIZE(gcc_dfs_clocks
));
3666 return qcom_cc_really_probe(pdev
, &gcc_sm8250_desc
, regmap
);
3669 static struct platform_driver gcc_sm8250_driver
= {
3670 .probe
= gcc_sm8250_probe
,
3672 .name
= "gcc-sm8250",
3673 .of_match_table
= gcc_sm8250_match_table
,
3677 static int __init
gcc_sm8250_init(void)
3679 return platform_driver_register(&gcc_sm8250_driver
);
3681 subsys_initcall(gcc_sm8250_init
);
3683 static void __exit
gcc_sm8250_exit(void)
3685 platform_driver_unregister(&gcc_sm8250_driver
);
3687 module_exit(gcc_sm8250_exit
);
3689 MODULE_DESCRIPTION("QTI GCC SM8250 Driver");
3690 MODULE_LICENSE("GPL v2");