Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /*
0003  * Copyright (c) 2020, The Linux Foundation. All rights reserved.
0004  */
0005 
0006 #include <linux/clk-provider.h>
0007 #include <linux/err.h>
0008 #include <linux/kernel.h>
0009 #include <linux/module.h>
0010 #include <linux/of_device.h>
0011 #include <linux/of.h>
0012 #include <linux/regmap.h>
0013 
0014 #include <dt-bindings/clock/qcom,gcc-sm8250.h>
0015 
0016 #include "clk-alpha-pll.h"
0017 #include "clk-branch.h"
0018 #include "clk-rcg.h"
0019 #include "clk-regmap.h"
0020 #include "clk-regmap-divider.h"
0021 #include "common.h"
0022 #include "gdsc.h"
0023 #include "reset.h"
0024 
0025 enum {
0026     P_BI_TCXO,
0027     P_AUD_REF_CLK,
0028     P_GPLL0_OUT_EVEN,
0029     P_GPLL0_OUT_MAIN,
0030     P_GPLL4_OUT_MAIN,
0031     P_GPLL9_OUT_MAIN,
0032     P_SLEEP_CLK,
0033 };
0034 
0035 static struct clk_alpha_pll gpll0 = {
0036     .offset = 0x0,
0037     .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
0038     .clkr = {
0039         .enable_reg = 0x52018,
0040         .enable_mask = BIT(0),
0041         .hw.init = &(struct clk_init_data){
0042             .name = "gpll0",
0043             .parent_data = &(const struct clk_parent_data){
0044                 .fw_name = "bi_tcxo",
0045             },
0046             .num_parents = 1,
0047             .ops = &clk_alpha_pll_fixed_lucid_ops,
0048         },
0049     },
0050 };
0051 
0052 static const struct clk_div_table post_div_table_gpll0_out_even[] = {
0053     { 0x1, 2 },
0054     { }
0055 };
0056 
0057 static struct clk_alpha_pll_postdiv gpll0_out_even = {
0058     .offset = 0x0,
0059     .post_div_shift = 8,
0060     .post_div_table = post_div_table_gpll0_out_even,
0061     .num_post_div = ARRAY_SIZE(post_div_table_gpll0_out_even),
0062     .width = 4,
0063     .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
0064     .clkr.hw.init = &(struct clk_init_data){
0065         .name = "gpll0_out_even",
0066         .parent_hws = (const struct clk_hw*[]){
0067             &gpll0.clkr.hw,
0068         },
0069         .num_parents = 1,
0070         .ops = &clk_alpha_pll_postdiv_lucid_ops,
0071     },
0072 };
0073 
0074 static struct clk_alpha_pll gpll4 = {
0075     .offset = 0x76000,
0076     .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
0077     .clkr = {
0078         .enable_reg = 0x52018,
0079         .enable_mask = BIT(4),
0080         .hw.init = &(struct clk_init_data){
0081             .name = "gpll4",
0082             .parent_data = &(const struct clk_parent_data){
0083                 .fw_name = "bi_tcxo",
0084             },
0085             .num_parents = 1,
0086             .ops = &clk_alpha_pll_fixed_lucid_ops,
0087         },
0088     },
0089 };
0090 
0091 static struct clk_alpha_pll gpll9 = {
0092     .offset = 0x1c000,
0093     .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
0094     .clkr = {
0095         .enable_reg = 0x52018,
0096         .enable_mask = BIT(9),
0097         .hw.init = &(struct clk_init_data){
0098             .name = "gpll9",
0099             .parent_data = &(const struct clk_parent_data){
0100                 .fw_name = "bi_tcxo",
0101             },
0102             .num_parents = 1,
0103             .ops = &clk_alpha_pll_fixed_lucid_ops,
0104         },
0105     },
0106 };
0107 
0108 static const struct parent_map gcc_parent_map_0[] = {
0109     { P_BI_TCXO, 0 },
0110     { P_GPLL0_OUT_MAIN, 1 },
0111     { P_GPLL0_OUT_EVEN, 6 },
0112 };
0113 
0114 static const struct clk_parent_data gcc_parent_data_0[] = {
0115     { .fw_name = "bi_tcxo" },
0116     { .hw = &gpll0.clkr.hw },
0117     { .hw = &gpll0_out_even.clkr.hw },
0118 };
0119 
0120 static const struct clk_parent_data gcc_parent_data_0_ao[] = {
0121     { .fw_name = "bi_tcxo_ao" },
0122     { .hw = &gpll0.clkr.hw },
0123     { .hw = &gpll0_out_even.clkr.hw },
0124 };
0125 
0126 static const struct parent_map gcc_parent_map_1[] = {
0127     { P_BI_TCXO, 0 },
0128     { P_GPLL0_OUT_MAIN, 1 },
0129     { P_SLEEP_CLK, 5 },
0130     { P_GPLL0_OUT_EVEN, 6 },
0131 };
0132 
0133 static const struct clk_parent_data gcc_parent_data_1[] = {
0134     { .fw_name = "bi_tcxo" },
0135     { .hw = &gpll0.clkr.hw },
0136     { .fw_name = "sleep_clk" },
0137     { .hw = &gpll0_out_even.clkr.hw },
0138 };
0139 
0140 static const struct parent_map gcc_parent_map_2[] = {
0141     { P_BI_TCXO, 0 },
0142     { P_SLEEP_CLK, 5 },
0143 };
0144 
0145 static const struct clk_parent_data gcc_parent_data_2[] = {
0146     { .fw_name = "bi_tcxo" },
0147     { .fw_name = "sleep_clk" },
0148 };
0149 
0150 static const struct parent_map gcc_parent_map_3[] = {
0151     { P_BI_TCXO, 0 },
0152 };
0153 
0154 static const struct clk_parent_data gcc_parent_data_3[] = {
0155     { .fw_name = "bi_tcxo" },
0156 };
0157 
0158 static const struct parent_map gcc_parent_map_4[] = {
0159     { P_BI_TCXO, 0 },
0160     { P_GPLL0_OUT_MAIN, 1 },
0161     { P_GPLL9_OUT_MAIN, 2 },
0162     { P_GPLL4_OUT_MAIN, 5 },
0163     { P_GPLL0_OUT_EVEN, 6 },
0164 };
0165 
0166 static const struct clk_parent_data gcc_parent_data_4[] = {
0167     { .fw_name = "bi_tcxo" },
0168     { .hw = &gpll0.clkr.hw },
0169     { .hw = &gpll9.clkr.hw },
0170     { .hw = &gpll4.clkr.hw },
0171     { .hw = &gpll0_out_even.clkr.hw },
0172 };
0173 
0174 static const struct parent_map gcc_parent_map_5[] = {
0175     { P_BI_TCXO, 0 },
0176     { P_GPLL0_OUT_MAIN, 1 },
0177     { P_AUD_REF_CLK, 2 },
0178     { P_GPLL0_OUT_EVEN, 6 },
0179 };
0180 
0181 static const struct clk_parent_data gcc_parent_data_5[] = {
0182     { .fw_name = "bi_tcxo" },
0183     { .hw = &gpll0.clkr.hw },
0184     { .fw_name = "aud_ref_clk" },
0185     { .hw = &gpll0_out_even.clkr.hw },
0186 };
0187 
0188 static const struct freq_tbl ftbl_gcc_cpuss_ahb_clk_src[] = {
0189     F(19200000, P_BI_TCXO, 1, 0, 0),
0190     { }
0191 };
0192 
0193 static struct clk_rcg2 gcc_cpuss_ahb_clk_src = {
0194     .cmd_rcgr = 0x48010,
0195     .mnd_width = 0,
0196     .hid_width = 5,
0197     .parent_map = gcc_parent_map_0,
0198     .freq_tbl = ftbl_gcc_cpuss_ahb_clk_src,
0199     .clkr.hw.init = &(struct clk_init_data){
0200         .name = "gcc_cpuss_ahb_clk_src",
0201         .parent_data = gcc_parent_data_0_ao,
0202         .num_parents = ARRAY_SIZE(gcc_parent_data_0_ao),
0203         .flags = CLK_SET_RATE_PARENT,
0204         .ops = &clk_rcg2_ops,
0205     },
0206 };
0207 
0208 static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
0209     F(19200000, P_BI_TCXO, 1, 0, 0),
0210     F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
0211     F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
0212     F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
0213     F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
0214     { }
0215 };
0216 
0217 static struct clk_rcg2 gcc_gp1_clk_src = {
0218     .cmd_rcgr = 0x64004,
0219     .mnd_width = 8,
0220     .hid_width = 5,
0221     .parent_map = gcc_parent_map_1,
0222     .freq_tbl = ftbl_gcc_gp1_clk_src,
0223     .clkr.hw.init = &(struct clk_init_data){
0224         .name = "gcc_gp1_clk_src",
0225         .parent_data = gcc_parent_data_1,
0226         .num_parents = ARRAY_SIZE(gcc_parent_data_1),
0227         .ops = &clk_rcg2_ops,
0228     },
0229 };
0230 
0231 static struct clk_rcg2 gcc_gp2_clk_src = {
0232     .cmd_rcgr = 0x65004,
0233     .mnd_width = 8,
0234     .hid_width = 5,
0235     .parent_map = gcc_parent_map_1,
0236     .freq_tbl = ftbl_gcc_gp1_clk_src,
0237     .clkr.hw.init = &(struct clk_init_data){
0238         .name = "gcc_gp2_clk_src",
0239         .parent_data = gcc_parent_data_1,
0240         .num_parents = ARRAY_SIZE(gcc_parent_data_1),
0241         .ops = &clk_rcg2_ops,
0242     },
0243 };
0244 
0245 static struct clk_rcg2 gcc_gp3_clk_src = {
0246     .cmd_rcgr = 0x66004,
0247     .mnd_width = 8,
0248     .hid_width = 5,
0249     .parent_map = gcc_parent_map_1,
0250     .freq_tbl = ftbl_gcc_gp1_clk_src,
0251     .clkr.hw.init = &(struct clk_init_data){
0252         .name = "gcc_gp3_clk_src",
0253         .parent_data = gcc_parent_data_1,
0254         .num_parents = ARRAY_SIZE(gcc_parent_data_1),
0255         .ops = &clk_rcg2_ops,
0256     },
0257 };
0258 
0259 static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
0260     F(9600000, P_BI_TCXO, 2, 0, 0),
0261     F(19200000, P_BI_TCXO, 1, 0, 0),
0262     { }
0263 };
0264 
0265 static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
0266     .cmd_rcgr = 0x6b038,
0267     .mnd_width = 16,
0268     .hid_width = 5,
0269     .parent_map = gcc_parent_map_2,
0270     .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
0271     .clkr.hw.init = &(struct clk_init_data){
0272         .name = "gcc_pcie_0_aux_clk_src",
0273         .parent_data = gcc_parent_data_2,
0274         .num_parents = ARRAY_SIZE(gcc_parent_data_2),
0275         .ops = &clk_rcg2_ops,
0276     },
0277 };
0278 
0279 static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
0280     .cmd_rcgr = 0x8d038,
0281     .mnd_width = 16,
0282     .hid_width = 5,
0283     .parent_map = gcc_parent_map_2,
0284     .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
0285     .clkr.hw.init = &(struct clk_init_data){
0286         .name = "gcc_pcie_1_aux_clk_src",
0287         .parent_data = gcc_parent_data_2,
0288         .num_parents = ARRAY_SIZE(gcc_parent_data_2),
0289         .ops = &clk_rcg2_ops,
0290     },
0291 };
0292 
0293 static struct clk_rcg2 gcc_pcie_2_aux_clk_src = {
0294     .cmd_rcgr = 0x6038,
0295     .mnd_width = 16,
0296     .hid_width = 5,
0297     .parent_map = gcc_parent_map_2,
0298     .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
0299     .clkr.hw.init = &(struct clk_init_data){
0300         .name = "gcc_pcie_2_aux_clk_src",
0301         .parent_data = gcc_parent_data_2,
0302         .num_parents = ARRAY_SIZE(gcc_parent_data_2),
0303         .ops = &clk_rcg2_ops,
0304     },
0305 };
0306 
0307 static const struct freq_tbl ftbl_gcc_pcie_phy_refgen_clk_src[] = {
0308     F(19200000, P_BI_TCXO, 1, 0, 0),
0309     F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
0310     { }
0311 };
0312 
0313 static struct clk_rcg2 gcc_pcie_phy_refgen_clk_src = {
0314     .cmd_rcgr = 0x6f014,
0315     .mnd_width = 0,
0316     .hid_width = 5,
0317     .parent_map = gcc_parent_map_0,
0318     .freq_tbl = ftbl_gcc_pcie_phy_refgen_clk_src,
0319     .clkr.hw.init = &(struct clk_init_data){
0320         .name = "gcc_pcie_phy_refgen_clk_src",
0321         .parent_data = gcc_parent_data_0_ao,
0322         .num_parents = ARRAY_SIZE(gcc_parent_data_0_ao),
0323         .ops = &clk_rcg2_ops,
0324     },
0325 };
0326 
0327 static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
0328     F(9600000, P_BI_TCXO, 2, 0, 0),
0329     F(19200000, P_BI_TCXO, 1, 0, 0),
0330     F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
0331     { }
0332 };
0333 
0334 static struct clk_rcg2 gcc_pdm2_clk_src = {
0335     .cmd_rcgr = 0x33010,
0336     .mnd_width = 0,
0337     .hid_width = 5,
0338     .parent_map = gcc_parent_map_0,
0339     .freq_tbl = ftbl_gcc_pdm2_clk_src,
0340     .clkr.hw.init = &(struct clk_init_data){
0341         .name = "gcc_pdm2_clk_src",
0342         .parent_data = gcc_parent_data_0,
0343         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0344         .ops = &clk_rcg2_ops,
0345     },
0346 };
0347 
0348 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
0349     F(7372800, P_GPLL0_OUT_EVEN, 1, 384, 15625),
0350     F(14745600, P_GPLL0_OUT_EVEN, 1, 768, 15625),
0351     F(19200000, P_BI_TCXO, 1, 0, 0),
0352     F(29491200, P_GPLL0_OUT_EVEN, 1, 1536, 15625),
0353     F(32000000, P_GPLL0_OUT_EVEN, 1, 8, 75),
0354     F(48000000, P_GPLL0_OUT_EVEN, 1, 4, 25),
0355     F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
0356     F(64000000, P_GPLL0_OUT_EVEN, 1, 16, 75),
0357     F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
0358     F(80000000, P_GPLL0_OUT_EVEN, 1, 4, 15),
0359     F(96000000, P_GPLL0_OUT_EVEN, 1, 8, 25),
0360     F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
0361     F(102400000, P_GPLL0_OUT_EVEN, 1, 128, 375),
0362     F(112000000, P_GPLL0_OUT_EVEN, 1, 28, 75),
0363     F(117964800, P_GPLL0_OUT_EVEN, 1, 6144, 15625),
0364     F(120000000, P_GPLL0_OUT_EVEN, 2.5, 0, 0),
0365     { }
0366 };
0367 
0368 static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {
0369     .name = "gcc_qupv3_wrap0_s0_clk_src",
0370     .parent_data = gcc_parent_data_0,
0371     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0372     .ops = &clk_rcg2_ops,
0373 };
0374 
0375 static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
0376     .cmd_rcgr = 0x17010,
0377     .mnd_width = 16,
0378     .hid_width = 5,
0379     .parent_map = gcc_parent_map_0,
0380     .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0381     .clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,
0382 };
0383 
0384 static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {
0385     .name = "gcc_qupv3_wrap0_s1_clk_src",
0386     .parent_data = gcc_parent_data_0,
0387     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0388     .ops = &clk_rcg2_ops,
0389 };
0390 
0391 static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
0392     .cmd_rcgr = 0x17140,
0393     .mnd_width = 16,
0394     .hid_width = 5,
0395     .parent_map = gcc_parent_map_0,
0396     .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0397     .clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,
0398 };
0399 
0400 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s2_clk_src[] = {
0401     F(7372800, P_GPLL0_OUT_EVEN, 1, 384, 15625),
0402     F(14745600, P_GPLL0_OUT_EVEN, 1, 768, 15625),
0403     F(19200000, P_BI_TCXO, 1, 0, 0),
0404     F(29491200, P_GPLL0_OUT_EVEN, 1, 1536, 15625),
0405     F(32000000, P_GPLL0_OUT_EVEN, 1, 8, 75),
0406     F(48000000, P_GPLL0_OUT_EVEN, 1, 4, 25),
0407     F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
0408     F(64000000, P_GPLL0_OUT_EVEN, 1, 16, 75),
0409     F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
0410     F(80000000, P_GPLL0_OUT_EVEN, 1, 4, 15),
0411     F(96000000, P_GPLL0_OUT_EVEN, 1, 8, 25),
0412     F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
0413     { }
0414 };
0415 
0416 static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {
0417     .name = "gcc_qupv3_wrap0_s2_clk_src",
0418     .parent_data = gcc_parent_data_0,
0419     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0420     .ops = &clk_rcg2_ops,
0421 };
0422 
0423 static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
0424     .cmd_rcgr = 0x17270,
0425     .mnd_width = 16,
0426     .hid_width = 5,
0427     .parent_map = gcc_parent_map_0,
0428     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0429     .clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,
0430 };
0431 
0432 static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {
0433     .name = "gcc_qupv3_wrap0_s3_clk_src",
0434     .parent_data = gcc_parent_data_0,
0435     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0436     .ops = &clk_rcg2_ops,
0437 };
0438 
0439 static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
0440     .cmd_rcgr = 0x173a0,
0441     .mnd_width = 16,
0442     .hid_width = 5,
0443     .parent_map = gcc_parent_map_0,
0444     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0445     .clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,
0446 };
0447 
0448 static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {
0449     .name = "gcc_qupv3_wrap0_s4_clk_src",
0450     .parent_data = gcc_parent_data_0,
0451     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0452     .ops = &clk_rcg2_ops,
0453 };
0454 
0455 static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
0456     .cmd_rcgr = 0x174d0,
0457     .mnd_width = 16,
0458     .hid_width = 5,
0459     .parent_map = gcc_parent_map_0,
0460     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0461     .clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,
0462 };
0463 
0464 static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {
0465     .name = "gcc_qupv3_wrap0_s5_clk_src",
0466     .parent_data = gcc_parent_data_0,
0467     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0468     .ops = &clk_rcg2_ops,
0469 };
0470 
0471 static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
0472     .cmd_rcgr = 0x17600,
0473     .mnd_width = 16,
0474     .hid_width = 5,
0475     .parent_map = gcc_parent_map_0,
0476     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0477     .clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,
0478 };
0479 
0480 static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = {
0481     .name = "gcc_qupv3_wrap0_s6_clk_src",
0482     .parent_data = gcc_parent_data_0,
0483     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0484     .ops = &clk_rcg2_ops,
0485 };
0486 
0487 static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
0488     .cmd_rcgr = 0x17730,
0489     .mnd_width = 16,
0490     .hid_width = 5,
0491     .parent_map = gcc_parent_map_0,
0492     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0493     .clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init,
0494 };
0495 
0496 static struct clk_init_data gcc_qupv3_wrap0_s7_clk_src_init = {
0497     .name = "gcc_qupv3_wrap0_s7_clk_src",
0498     .parent_data = gcc_parent_data_0,
0499     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0500     .ops = &clk_rcg2_ops,
0501 };
0502 
0503 static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
0504     .cmd_rcgr = 0x17860,
0505     .mnd_width = 16,
0506     .hid_width = 5,
0507     .parent_map = gcc_parent_map_0,
0508     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0509     .clkr.hw.init = &gcc_qupv3_wrap0_s7_clk_src_init,
0510 };
0511 
0512 static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
0513     .name = "gcc_qupv3_wrap1_s0_clk_src",
0514     .parent_data = gcc_parent_data_0,
0515     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0516     .ops = &clk_rcg2_ops,
0517 };
0518 
0519 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
0520     .cmd_rcgr = 0x18010,
0521     .mnd_width = 16,
0522     .hid_width = 5,
0523     .parent_map = gcc_parent_map_0,
0524     .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0525     .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
0526 };
0527 
0528 static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
0529     .name = "gcc_qupv3_wrap1_s1_clk_src",
0530     .parent_data = gcc_parent_data_0,
0531     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0532     .ops = &clk_rcg2_ops,
0533 };
0534 
0535 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
0536     .cmd_rcgr = 0x18140,
0537     .mnd_width = 16,
0538     .hid_width = 5,
0539     .parent_map = gcc_parent_map_0,
0540     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0541     .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
0542 };
0543 
0544 static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {
0545     .name = "gcc_qupv3_wrap1_s2_clk_src",
0546     .parent_data = gcc_parent_data_0,
0547     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0548     .ops = &clk_rcg2_ops,
0549 };
0550 
0551 static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
0552     .cmd_rcgr = 0x18270,
0553     .mnd_width = 16,
0554     .hid_width = 5,
0555     .parent_map = gcc_parent_map_0,
0556     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0557     .clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,
0558 };
0559 
0560 static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
0561     .name = "gcc_qupv3_wrap1_s3_clk_src",
0562     .parent_data = gcc_parent_data_0,
0563     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0564     .ops = &clk_rcg2_ops,
0565 };
0566 
0567 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
0568     .cmd_rcgr = 0x183a0,
0569     .mnd_width = 16,
0570     .hid_width = 5,
0571     .parent_map = gcc_parent_map_0,
0572     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0573     .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
0574 };
0575 
0576 static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
0577     .name = "gcc_qupv3_wrap1_s4_clk_src",
0578     .parent_data = gcc_parent_data_0,
0579     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0580     .ops = &clk_rcg2_ops,
0581 };
0582 
0583 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
0584     .cmd_rcgr = 0x184d0,
0585     .mnd_width = 16,
0586     .hid_width = 5,
0587     .parent_map = gcc_parent_map_0,
0588     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0589     .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
0590 };
0591 
0592 static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
0593     .name = "gcc_qupv3_wrap1_s5_clk_src",
0594     .parent_data = gcc_parent_data_0,
0595     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0596     .ops = &clk_rcg2_ops,
0597 };
0598 
0599 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
0600     .cmd_rcgr = 0x18600,
0601     .mnd_width = 16,
0602     .hid_width = 5,
0603     .parent_map = gcc_parent_map_0,
0604     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0605     .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
0606 };
0607 
0608 static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = {
0609     .name = "gcc_qupv3_wrap2_s0_clk_src",
0610     .parent_data = gcc_parent_data_0,
0611     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0612     .ops = &clk_rcg2_ops,
0613 };
0614 
0615 static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
0616     .cmd_rcgr = 0x1e010,
0617     .mnd_width = 16,
0618     .hid_width = 5,
0619     .parent_map = gcc_parent_map_0,
0620     .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0621     .clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init,
0622 };
0623 
0624 static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = {
0625     .name = "gcc_qupv3_wrap2_s1_clk_src",
0626     .parent_data = gcc_parent_data_0,
0627     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0628     .ops = &clk_rcg2_ops,
0629 };
0630 
0631 static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
0632     .cmd_rcgr = 0x1e140,
0633     .mnd_width = 16,
0634     .hid_width = 5,
0635     .parent_map = gcc_parent_map_0,
0636     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0637     .clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init,
0638 };
0639 
0640 static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = {
0641     .name = "gcc_qupv3_wrap2_s2_clk_src",
0642     .parent_data = gcc_parent_data_0,
0643     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0644     .ops = &clk_rcg2_ops,
0645 };
0646 
0647 static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
0648     .cmd_rcgr = 0x1e270,
0649     .mnd_width = 16,
0650     .hid_width = 5,
0651     .parent_map = gcc_parent_map_0,
0652     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0653     .clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init,
0654 };
0655 
0656 static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = {
0657     .name = "gcc_qupv3_wrap2_s3_clk_src",
0658     .parent_data = gcc_parent_data_0,
0659     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0660     .ops = &clk_rcg2_ops,
0661 };
0662 
0663 static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
0664     .cmd_rcgr = 0x1e3a0,
0665     .mnd_width = 16,
0666     .hid_width = 5,
0667     .parent_map = gcc_parent_map_0,
0668     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0669     .clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init,
0670 };
0671 
0672 static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = {
0673     .name = "gcc_qupv3_wrap2_s4_clk_src",
0674     .parent_data = gcc_parent_data_0,
0675     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0676     .ops = &clk_rcg2_ops,
0677 };
0678 
0679 static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
0680     .cmd_rcgr = 0x1e4d0,
0681     .mnd_width = 16,
0682     .hid_width = 5,
0683     .parent_map = gcc_parent_map_0,
0684     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0685     .clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init,
0686 };
0687 
0688 static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = {
0689     .name = "gcc_qupv3_wrap2_s5_clk_src",
0690     .parent_data = gcc_parent_data_0,
0691     .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0692     .ops = &clk_rcg2_ops,
0693 };
0694 
0695 static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {
0696     .cmd_rcgr = 0x1e600,
0697     .mnd_width = 16,
0698     .hid_width = 5,
0699     .parent_map = gcc_parent_map_0,
0700     .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
0701     .clkr.hw.init = &gcc_qupv3_wrap2_s5_clk_src_init,
0702 };
0703 
0704 static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
0705     F(400000, P_BI_TCXO, 12, 1, 4),
0706     F(19200000, P_BI_TCXO, 1, 0, 0),
0707     F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
0708     F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
0709     F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
0710     F(202000000, P_GPLL9_OUT_MAIN, 4, 0, 0),
0711     { }
0712 };
0713 
0714 static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
0715     .cmd_rcgr = 0x1400c,
0716     .mnd_width = 8,
0717     .hid_width = 5,
0718     .parent_map = gcc_parent_map_4,
0719     .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
0720     .clkr.hw.init = &(struct clk_init_data){
0721         .name = "gcc_sdcc2_apps_clk_src",
0722         .parent_data = gcc_parent_data_4,
0723         .num_parents = ARRAY_SIZE(gcc_parent_data_4),
0724         .ops = &clk_rcg2_floor_ops,
0725     },
0726 };
0727 
0728 static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
0729     F(400000, P_BI_TCXO, 12, 1, 4),
0730     F(19200000, P_BI_TCXO, 1, 0, 0),
0731     F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
0732     F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
0733     F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
0734     { }
0735 };
0736 
0737 static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
0738     .cmd_rcgr = 0x1600c,
0739     .mnd_width = 8,
0740     .hid_width = 5,
0741     .parent_map = gcc_parent_map_0,
0742     .freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
0743     .clkr.hw.init = &(struct clk_init_data){
0744         .name = "gcc_sdcc4_apps_clk_src",
0745         .parent_data = gcc_parent_data_0,
0746         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0747         .ops = &clk_rcg2_floor_ops,
0748     },
0749 };
0750 
0751 static const struct freq_tbl ftbl_gcc_tsif_ref_clk_src[] = {
0752     F(105495, P_BI_TCXO, 2, 1, 91),
0753     { }
0754 };
0755 
0756 static struct clk_rcg2 gcc_tsif_ref_clk_src = {
0757     .cmd_rcgr = 0x36010,
0758     .mnd_width = 8,
0759     .hid_width = 5,
0760     .parent_map = gcc_parent_map_5,
0761     .freq_tbl = ftbl_gcc_tsif_ref_clk_src,
0762     .clkr.hw.init = &(struct clk_init_data){
0763         .name = "gcc_tsif_ref_clk_src",
0764         .parent_data = gcc_parent_data_5,
0765         .num_parents = ARRAY_SIZE(gcc_parent_data_5),
0766         .ops = &clk_rcg2_ops,
0767     },
0768 };
0769 
0770 static const struct freq_tbl ftbl_gcc_ufs_card_axi_clk_src[] = {
0771     F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
0772     F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
0773     F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
0774     F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
0775     { }
0776 };
0777 
0778 static struct clk_rcg2 gcc_ufs_card_axi_clk_src = {
0779     .cmd_rcgr = 0x75024,
0780     .mnd_width = 8,
0781     .hid_width = 5,
0782     .parent_map = gcc_parent_map_0,
0783     .freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,
0784     .clkr.hw.init = &(struct clk_init_data){
0785         .name = "gcc_ufs_card_axi_clk_src",
0786         .parent_data = gcc_parent_data_0,
0787         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0788         .ops = &clk_rcg2_ops,
0789     },
0790 };
0791 
0792 static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src[] = {
0793     F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
0794     F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
0795     F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
0796     F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
0797     { }
0798 };
0799 
0800 static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = {
0801     .cmd_rcgr = 0x7506c,
0802     .mnd_width = 0,
0803     .hid_width = 5,
0804     .parent_map = gcc_parent_map_0,
0805     .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
0806     .clkr.hw.init = &(struct clk_init_data){
0807         .name = "gcc_ufs_card_ice_core_clk_src",
0808         .parent_data = gcc_parent_data_0,
0809         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0810         .ops = &clk_rcg2_ops,
0811     },
0812 };
0813 
0814 static const struct freq_tbl ftbl_gcc_ufs_card_phy_aux_clk_src[] = {
0815     F(19200000, P_BI_TCXO, 1, 0, 0),
0816     { }
0817 };
0818 
0819 static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = {
0820     .cmd_rcgr = 0x750a0,
0821     .mnd_width = 0,
0822     .hid_width = 5,
0823     .parent_map = gcc_parent_map_3,
0824     .freq_tbl = ftbl_gcc_ufs_card_phy_aux_clk_src,
0825     .clkr.hw.init = &(struct clk_init_data){
0826         .name = "gcc_ufs_card_phy_aux_clk_src",
0827         .parent_data = gcc_parent_data_3,
0828         .num_parents = ARRAY_SIZE(gcc_parent_data_3),
0829         .ops = &clk_rcg2_ops,
0830     },
0831 };
0832 
0833 static const struct freq_tbl ftbl_gcc_ufs_card_unipro_core_clk_src[] = {
0834     F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
0835     F(75000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
0836     F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
0837     { }
0838 };
0839 
0840 static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = {
0841     .cmd_rcgr = 0x75084,
0842     .mnd_width = 0,
0843     .hid_width = 5,
0844     .parent_map = gcc_parent_map_0,
0845     .freq_tbl = ftbl_gcc_ufs_card_unipro_core_clk_src,
0846     .clkr.hw.init = &(struct clk_init_data){
0847         .name = "gcc_ufs_card_unipro_core_clk_src",
0848         .parent_data = gcc_parent_data_0,
0849         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0850         .ops = &clk_rcg2_ops,
0851     },
0852 };
0853 
0854 static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
0855     F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
0856     F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
0857     F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
0858     F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
0859     F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
0860     { }
0861 };
0862 
0863 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
0864     .cmd_rcgr = 0x77024,
0865     .mnd_width = 8,
0866     .hid_width = 5,
0867     .parent_map = gcc_parent_map_0,
0868     .freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
0869     .clkr.hw.init = &(struct clk_init_data){
0870         .name = "gcc_ufs_phy_axi_clk_src",
0871         .parent_data = gcc_parent_data_0,
0872         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0873         .ops = &clk_rcg2_ops,
0874     },
0875 };
0876 
0877 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
0878     .cmd_rcgr = 0x7706c,
0879     .mnd_width = 0,
0880     .hid_width = 5,
0881     .parent_map = gcc_parent_map_0,
0882     .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
0883     .clkr.hw.init = &(struct clk_init_data){
0884         .name = "gcc_ufs_phy_ice_core_clk_src",
0885         .parent_data = gcc_parent_data_0,
0886         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0887         .ops = &clk_rcg2_ops,
0888     },
0889 };
0890 
0891 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
0892     .cmd_rcgr = 0x770a0,
0893     .mnd_width = 0,
0894     .hid_width = 5,
0895     .parent_map = gcc_parent_map_3,
0896     .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
0897     .clkr.hw.init = &(struct clk_init_data){
0898         .name = "gcc_ufs_phy_phy_aux_clk_src",
0899         .parent_data = gcc_parent_data_3,
0900         .num_parents = ARRAY_SIZE(gcc_parent_data_3),
0901         .ops = &clk_rcg2_ops,
0902     },
0903 };
0904 
0905 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
0906     .cmd_rcgr = 0x77084,
0907     .mnd_width = 0,
0908     .hid_width = 5,
0909     .parent_map = gcc_parent_map_0,
0910     .freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
0911     .clkr.hw.init = &(struct clk_init_data){
0912         .name = "gcc_ufs_phy_unipro_core_clk_src",
0913         .parent_data = gcc_parent_data_0,
0914         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0915         .ops = &clk_rcg2_ops,
0916     },
0917 };
0918 
0919 static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
0920     F(33333333, P_GPLL0_OUT_EVEN, 9, 0, 0),
0921     F(66666667, P_GPLL0_OUT_EVEN, 4.5, 0, 0),
0922     F(133333333, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
0923     F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
0924     F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
0925     { }
0926 };
0927 
0928 static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
0929     .cmd_rcgr = 0xf020,
0930     .mnd_width = 8,
0931     .hid_width = 5,
0932     .parent_map = gcc_parent_map_0,
0933     .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
0934     .clkr.hw.init = &(struct clk_init_data){
0935         .name = "gcc_usb30_prim_master_clk_src",
0936         .parent_data = gcc_parent_data_0,
0937         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0938         .ops = &clk_rcg2_ops,
0939     },
0940 };
0941 
0942 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
0943     .cmd_rcgr = 0xf038,
0944     .mnd_width = 0,
0945     .hid_width = 5,
0946     .parent_map = gcc_parent_map_0,
0947     .freq_tbl = ftbl_gcc_ufs_card_phy_aux_clk_src,
0948     .clkr.hw.init = &(struct clk_init_data){
0949         .name = "gcc_usb30_prim_mock_utmi_clk_src",
0950         .parent_data = gcc_parent_data_0,
0951         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0952         .ops = &clk_rcg2_ops,
0953     },
0954 };
0955 
0956 static struct clk_rcg2 gcc_usb30_sec_master_clk_src = {
0957     .cmd_rcgr = 0x10020,
0958     .mnd_width = 8,
0959     .hid_width = 5,
0960     .parent_map = gcc_parent_map_0,
0961     .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
0962     .clkr.hw.init = &(struct clk_init_data){
0963         .name = "gcc_usb30_sec_master_clk_src",
0964         .parent_data = gcc_parent_data_0,
0965         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0966         .ops = &clk_rcg2_ops,
0967     },
0968 };
0969 
0970 static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = {
0971     .cmd_rcgr = 0x10038,
0972     .mnd_width = 0,
0973     .hid_width = 5,
0974     .parent_map = gcc_parent_map_0,
0975     .freq_tbl = ftbl_gcc_ufs_card_phy_aux_clk_src,
0976     .clkr.hw.init = &(struct clk_init_data){
0977         .name = "gcc_usb30_sec_mock_utmi_clk_src",
0978         .parent_data = gcc_parent_data_0,
0979         .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0980         .ops = &clk_rcg2_ops,
0981     },
0982 };
0983 
0984 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
0985     .cmd_rcgr = 0xf064,
0986     .mnd_width = 0,
0987     .hid_width = 5,
0988     .parent_map = gcc_parent_map_2,
0989     .freq_tbl = ftbl_gcc_ufs_card_phy_aux_clk_src,
0990     .clkr.hw.init = &(struct clk_init_data){
0991         .name = "gcc_usb3_prim_phy_aux_clk_src",
0992         .parent_data = gcc_parent_data_2,
0993         .num_parents = ARRAY_SIZE(gcc_parent_data_2),
0994         .ops = &clk_rcg2_ops,
0995     },
0996 };
0997 
0998 static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = {
0999     .cmd_rcgr = 0x10064,
1000     .mnd_width = 0,
1001     .hid_width = 5,
1002     .parent_map = gcc_parent_map_2,
1003     .freq_tbl = ftbl_gcc_ufs_card_phy_aux_clk_src,
1004     .clkr.hw.init = &(struct clk_init_data){
1005         .name = "gcc_usb3_sec_phy_aux_clk_src",
1006         .parent_data = gcc_parent_data_2,
1007         .num_parents = ARRAY_SIZE(gcc_parent_data_2),
1008         .ops = &clk_rcg2_ops,
1009     },
1010 };
1011 
1012 static struct clk_regmap_div gcc_cpuss_ahb_postdiv_clk_src = {
1013     .reg = 0x48028,
1014     .shift = 0,
1015     .width = 4,
1016     .clkr.hw.init = &(struct clk_init_data) {
1017         .name = "gcc_cpuss_ahb_postdiv_clk_src",
1018         .parent_hws = (const struct clk_hw*[]){
1019             &gcc_cpuss_ahb_clk_src.clkr.hw,
1020         },
1021         .num_parents = 1,
1022         .flags = CLK_SET_RATE_PARENT,
1023         .ops = &clk_regmap_div_ro_ops,
1024     },
1025 };
1026 
1027 static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {
1028     .reg = 0xf050,
1029     .shift = 0,
1030     .width = 2,
1031     .clkr.hw.init = &(struct clk_init_data) {
1032         .name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
1033         .parent_hws = (const struct clk_hw*[]){
1034             &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
1035         },
1036         .num_parents = 1,
1037         .flags = CLK_SET_RATE_PARENT,
1038         .ops = &clk_regmap_div_ro_ops,
1039     },
1040 };
1041 
1042 static struct clk_regmap_div gcc_usb30_sec_mock_utmi_postdiv_clk_src = {
1043     .reg = 0x10050,
1044     .shift = 0,
1045     .width = 2,
1046     .clkr.hw.init = &(struct clk_init_data) {
1047         .name = "gcc_usb30_sec_mock_utmi_postdiv_clk_src",
1048         .parent_hws = (const struct clk_hw*[]){
1049             &gcc_usb30_sec_mock_utmi_clk_src.clkr.hw,
1050         },
1051         .num_parents = 1,
1052         .flags = CLK_SET_RATE_PARENT,
1053         .ops = &clk_regmap_div_ro_ops,
1054     },
1055 };
1056 
1057 static struct clk_branch gcc_aggre_noc_pcie_tbu_clk = {
1058     .halt_reg = 0x9000c,
1059     .halt_check = BRANCH_HALT_VOTED,
1060     .clkr = {
1061         .enable_reg = 0x9000c,
1062         .enable_mask = BIT(0),
1063         .hw.init = &(struct clk_init_data){
1064             .name = "gcc_aggre_noc_pcie_tbu_clk",
1065             .ops = &clk_branch2_ops,
1066         },
1067     },
1068 };
1069 
1070 static struct clk_branch gcc_aggre_ufs_card_axi_clk = {
1071     .halt_reg = 0x750cc,
1072     .halt_check = BRANCH_HALT_VOTED,
1073     .hwcg_reg = 0x750cc,
1074     .hwcg_bit = 1,
1075     .clkr = {
1076         .enable_reg = 0x750cc,
1077         .enable_mask = BIT(0),
1078         .hw.init = &(struct clk_init_data){
1079             .name = "gcc_aggre_ufs_card_axi_clk",
1080             .parent_hws = (const struct clk_hw*[]){
1081                 &gcc_ufs_card_axi_clk_src.clkr.hw,
1082             },
1083             .num_parents = 1,
1084             .flags = CLK_SET_RATE_PARENT,
1085             .ops = &clk_branch2_ops,
1086         },
1087     },
1088 };
1089 
1090 static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
1091     .halt_reg = 0x770cc,
1092     .halt_check = BRANCH_HALT_VOTED,
1093     .hwcg_reg = 0x770cc,
1094     .hwcg_bit = 1,
1095     .clkr = {
1096         .enable_reg = 0x770cc,
1097         .enable_mask = BIT(0),
1098         .hw.init = &(struct clk_init_data){
1099             .name = "gcc_aggre_ufs_phy_axi_clk",
1100             .parent_hws = (const struct clk_hw*[]){
1101                 &gcc_ufs_phy_axi_clk_src.clkr.hw,
1102             },
1103             .num_parents = 1,
1104             .flags = CLK_SET_RATE_PARENT,
1105             .ops = &clk_branch2_ops,
1106         },
1107     },
1108 };
1109 
1110 static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
1111     .halt_reg = 0xf080,
1112     .halt_check = BRANCH_HALT_VOTED,
1113     .clkr = {
1114         .enable_reg = 0xf080,
1115         .enable_mask = BIT(0),
1116         .hw.init = &(struct clk_init_data){
1117             .name = "gcc_aggre_usb3_prim_axi_clk",
1118             .parent_hws = (const struct clk_hw*[]){
1119                 &gcc_usb30_prim_master_clk_src.clkr.hw,
1120             },
1121             .num_parents = 1,
1122             .flags = CLK_SET_RATE_PARENT,
1123             .ops = &clk_branch2_ops,
1124         },
1125     },
1126 };
1127 
1128 static struct clk_branch gcc_aggre_usb3_sec_axi_clk = {
1129     .halt_reg = 0x10080,
1130     .halt_check = BRANCH_HALT_VOTED,
1131     .clkr = {
1132         .enable_reg = 0x10080,
1133         .enable_mask = BIT(0),
1134         .hw.init = &(struct clk_init_data){
1135             .name = "gcc_aggre_usb3_sec_axi_clk",
1136             .parent_hws = (const struct clk_hw*[]){
1137                 &gcc_usb30_sec_master_clk_src.clkr.hw,
1138             },
1139             .num_parents = 1,
1140             .flags = CLK_SET_RATE_PARENT,
1141             .ops = &clk_branch2_ops,
1142         },
1143     },
1144 };
1145 
1146 static struct clk_branch gcc_boot_rom_ahb_clk = {
1147     .halt_reg = 0x38004,
1148     .halt_check = BRANCH_HALT_VOTED,
1149     .hwcg_reg = 0x38004,
1150     .hwcg_bit = 1,
1151     .clkr = {
1152         .enable_reg = 0x52000,
1153         .enable_mask = BIT(10),
1154         .hw.init = &(struct clk_init_data){
1155             .name = "gcc_boot_rom_ahb_clk",
1156             .ops = &clk_branch2_ops,
1157         },
1158     },
1159 };
1160 
1161 static struct clk_branch gcc_camera_hf_axi_clk = {
1162     .halt_reg = 0xb02c,
1163     .halt_check = BRANCH_HALT_VOTED,
1164     .clkr = {
1165         .enable_reg = 0xb02c,
1166         .enable_mask = BIT(0),
1167         .hw.init = &(struct clk_init_data){
1168             .name = "gcc_camera_hf_axi_clk",
1169             .ops = &clk_branch2_ops,
1170         },
1171     },
1172 };
1173 
1174 static struct clk_branch gcc_camera_sf_axi_clk = {
1175     .halt_reg = 0xb030,
1176     .halt_check = BRANCH_HALT_VOTED,
1177     .clkr = {
1178         .enable_reg = 0xb030,
1179         .enable_mask = BIT(0),
1180         .hw.init = &(struct clk_init_data){
1181             .name = "gcc_camera_sf_axi_clk",
1182             .ops = &clk_branch2_ops,
1183         },
1184     },
1185 };
1186 
1187 static struct clk_branch gcc_camera_xo_clk = {
1188     .halt_reg = 0xb040,
1189     .halt_check = BRANCH_HALT,
1190     .clkr = {
1191         .enable_reg = 0xb040,
1192         .enable_mask = BIT(0),
1193         .hw.init = &(struct clk_init_data){
1194             .name = "gcc_camera_xo_clk",
1195             .ops = &clk_branch2_ops,
1196         },
1197     },
1198 };
1199 
1200 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
1201     .halt_reg = 0xf07c,
1202     .halt_check = BRANCH_HALT_VOTED,
1203     .clkr = {
1204         .enable_reg = 0xf07c,
1205         .enable_mask = BIT(0),
1206         .hw.init = &(struct clk_init_data){
1207             .name = "gcc_cfg_noc_usb3_prim_axi_clk",
1208             .parent_hws = (const struct clk_hw*[]){
1209                 &gcc_usb30_prim_master_clk_src.clkr.hw,
1210             },
1211             .num_parents = 1,
1212             .flags = CLK_SET_RATE_PARENT,
1213             .ops = &clk_branch2_ops,
1214         },
1215     },
1216 };
1217 
1218 static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = {
1219     .halt_reg = 0x1007c,
1220     .halt_check = BRANCH_HALT_VOTED,
1221     .clkr = {
1222         .enable_reg = 0x1007c,
1223         .enable_mask = BIT(0),
1224         .hw.init = &(struct clk_init_data){
1225             .name = "gcc_cfg_noc_usb3_sec_axi_clk",
1226             .parent_hws = (const struct clk_hw*[]){
1227                 &gcc_usb30_sec_master_clk_src.clkr.hw,
1228             },
1229             .num_parents = 1,
1230             .flags = CLK_SET_RATE_PARENT,
1231             .ops = &clk_branch2_ops,
1232         },
1233     },
1234 };
1235 
1236 static struct clk_branch gcc_cpuss_ahb_clk = {
1237     .halt_reg = 0x48000,
1238     .halt_check = BRANCH_HALT_VOTED,
1239     .clkr = {
1240         .enable_reg = 0x52000,
1241         .enable_mask = BIT(21),
1242         .hw.init = &(struct clk_init_data){
1243             .name = "gcc_cpuss_ahb_clk",
1244             .parent_hws = (const struct clk_hw*[]){
1245                 &gcc_cpuss_ahb_postdiv_clk_src.clkr.hw,
1246             },
1247             .num_parents = 1,
1248             .flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
1249             .ops = &clk_branch2_ops,
1250         },
1251     },
1252 };
1253 
1254 static struct clk_branch gcc_cpuss_rbcpr_clk = {
1255     .halt_reg = 0x48004,
1256     .halt_check = BRANCH_HALT,
1257     .clkr = {
1258         .enable_reg = 0x48004,
1259         .enable_mask = BIT(0),
1260         .hw.init = &(struct clk_init_data){
1261             .name = "gcc_cpuss_rbcpr_clk",
1262             .ops = &clk_branch2_ops,
1263         },
1264     },
1265 };
1266 
1267 static struct clk_branch gcc_ddrss_gpu_axi_clk = {
1268     .halt_reg = 0x71154,
1269     .halt_check = BRANCH_HALT_VOTED,
1270     .clkr = {
1271         .enable_reg = 0x71154,
1272         .enable_mask = BIT(0),
1273         .hw.init = &(struct clk_init_data){
1274             .name = "gcc_ddrss_gpu_axi_clk",
1275             .ops = &clk_branch2_ops,
1276         },
1277     },
1278 };
1279 
1280 static struct clk_branch gcc_ddrss_pcie_sf_tbu_clk = {
1281     .halt_reg = 0x8d058,
1282     .halt_check = BRANCH_HALT_VOTED,
1283     .clkr = {
1284         .enable_reg = 0x8d058,
1285         .enable_mask = BIT(0),
1286         .hw.init = &(struct clk_init_data){
1287             .name = "gcc_ddrss_pcie_sf_tbu_clk",
1288             .ops = &clk_branch2_ops,
1289         },
1290     },
1291 };
1292 
1293 static struct clk_branch gcc_disp_hf_axi_clk = {
1294     .halt_reg = 0xb034,
1295     .halt_check = BRANCH_HALT_VOTED,
1296     .clkr = {
1297         .enable_reg = 0xb034,
1298         .enable_mask = BIT(0),
1299         .hw.init = &(struct clk_init_data){
1300             .name = "gcc_disp_hf_axi_clk",
1301             .ops = &clk_branch2_ops,
1302         },
1303     },
1304 };
1305 
1306 static struct clk_branch gcc_disp_sf_axi_clk = {
1307     .halt_reg = 0xb038,
1308     .halt_check = BRANCH_HALT_VOTED,
1309     .clkr = {
1310         .enable_reg = 0xb038,
1311         .enable_mask = BIT(0),
1312         .hw.init = &(struct clk_init_data){
1313             .name = "gcc_disp_sf_axi_clk",
1314             .ops = &clk_branch2_ops,
1315         },
1316     },
1317 };
1318 
1319 static struct clk_branch gcc_disp_xo_clk = {
1320     .halt_reg = 0xb044,
1321     .halt_check = BRANCH_HALT,
1322     .clkr = {
1323         .enable_reg = 0xb044,
1324         .enable_mask = BIT(0),
1325         .hw.init = &(struct clk_init_data){
1326             .name = "gcc_disp_xo_clk",
1327             .ops = &clk_branch2_ops,
1328         },
1329     },
1330 };
1331 
1332 static struct clk_branch gcc_gp1_clk = {
1333     .halt_reg = 0x64000,
1334     .halt_check = BRANCH_HALT,
1335     .clkr = {
1336         .enable_reg = 0x64000,
1337         .enable_mask = BIT(0),
1338         .hw.init = &(struct clk_init_data){
1339             .name = "gcc_gp1_clk",
1340             .parent_hws = (const struct clk_hw*[]){
1341                 &gcc_gp1_clk_src.clkr.hw,
1342             },
1343             .num_parents = 1,
1344             .flags = CLK_SET_RATE_PARENT,
1345             .ops = &clk_branch2_ops,
1346         },
1347     },
1348 };
1349 
1350 static struct clk_branch gcc_gp2_clk = {
1351     .halt_reg = 0x65000,
1352     .halt_check = BRANCH_HALT,
1353     .clkr = {
1354         .enable_reg = 0x65000,
1355         .enable_mask = BIT(0),
1356         .hw.init = &(struct clk_init_data){
1357             .name = "gcc_gp2_clk",
1358             .parent_hws = (const struct clk_hw*[]){
1359                 &gcc_gp2_clk_src.clkr.hw,
1360             },
1361             .num_parents = 1,
1362             .flags = CLK_SET_RATE_PARENT,
1363             .ops = &clk_branch2_ops,
1364         },
1365     },
1366 };
1367 
1368 static struct clk_branch gcc_gp3_clk = {
1369     .halt_reg = 0x66000,
1370     .halt_check = BRANCH_HALT,
1371     .clkr = {
1372         .enable_reg = 0x66000,
1373         .enable_mask = BIT(0),
1374         .hw.init = &(struct clk_init_data){
1375             .name = "gcc_gp3_clk",
1376             .parent_hws = (const struct clk_hw*[]){
1377                 &gcc_gp3_clk_src.clkr.hw,
1378             },
1379             .num_parents = 1,
1380             .flags = CLK_SET_RATE_PARENT,
1381             .ops = &clk_branch2_ops,
1382         },
1383     },
1384 };
1385 
1386 static struct clk_branch gcc_gpu_gpll0_clk_src = {
1387     .halt_check = BRANCH_HALT_DELAY,
1388     .clkr = {
1389         .enable_reg = 0x52000,
1390         .enable_mask = BIT(15),
1391         .hw.init = &(struct clk_init_data){
1392             .name = "gcc_gpu_gpll0_clk_src",
1393             .parent_hws = (const struct clk_hw*[]){
1394                 &gpll0.clkr.hw,
1395             },
1396             .num_parents = 1,
1397             .flags = CLK_SET_RATE_PARENT,
1398             .ops = &clk_branch2_ops,
1399         },
1400     },
1401 };
1402 
1403 static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
1404     .halt_check = BRANCH_HALT_DELAY,
1405     .clkr = {
1406         .enable_reg = 0x52000,
1407         .enable_mask = BIT(16),
1408         .hw.init = &(struct clk_init_data){
1409             .name = "gcc_gpu_gpll0_div_clk_src",
1410             .parent_hws = (const struct clk_hw*[]){
1411                 &gpll0_out_even.clkr.hw,
1412             },
1413             .num_parents = 1,
1414             .flags = CLK_SET_RATE_PARENT,
1415             .ops = &clk_branch2_ops,
1416         },
1417     },
1418 };
1419 
1420 static struct clk_branch gcc_gpu_iref_en = {
1421     .halt_reg = 0x8c014,
1422     .halt_check = BRANCH_HALT,
1423     .clkr = {
1424         .enable_reg = 0x8c014,
1425         .enable_mask = BIT(0),
1426         .hw.init = &(struct clk_init_data){
1427             .name = "gcc_gpu_iref_en",
1428             .ops = &clk_branch2_ops,
1429         },
1430     },
1431 };
1432 
1433 static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
1434     .halt_reg = 0x7100c,
1435     .halt_check = BRANCH_HALT_VOTED,
1436     .clkr = {
1437         .enable_reg = 0x7100c,
1438         .enable_mask = BIT(0),
1439         .hw.init = &(struct clk_init_data){
1440             .name = "gcc_gpu_memnoc_gfx_clk",
1441             .ops = &clk_branch2_ops,
1442         },
1443     },
1444 };
1445 
1446 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
1447     .halt_reg = 0x71018,
1448     .halt_check = BRANCH_HALT,
1449     .clkr = {
1450         .enable_reg = 0x71018,
1451         .enable_mask = BIT(0),
1452         .hw.init = &(struct clk_init_data){
1453             .name = "gcc_gpu_snoc_dvm_gfx_clk",
1454             .ops = &clk_branch2_ops,
1455         },
1456     },
1457 };
1458 
1459 static struct clk_branch gcc_npu_axi_clk = {
1460     .halt_reg = 0x4d008,
1461     .halt_check = BRANCH_HALT_VOTED,
1462     .clkr = {
1463         .enable_reg = 0x4d008,
1464         .enable_mask = BIT(0),
1465         .hw.init = &(struct clk_init_data){
1466             .name = "gcc_npu_axi_clk",
1467             .ops = &clk_branch2_ops,
1468         },
1469     },
1470 };
1471 
1472 static struct clk_branch gcc_npu_bwmon_axi_clk = {
1473     .halt_reg = 0x73008,
1474     .halt_check = BRANCH_HALT_VOTED,
1475     .clkr = {
1476         .enable_reg = 0x73008,
1477         .enable_mask = BIT(0),
1478         .hw.init = &(struct clk_init_data){
1479             .name = "gcc_npu_bwmon_axi_clk",
1480             .ops = &clk_branch2_ops,
1481         },
1482     },
1483 };
1484 
1485 static struct clk_branch gcc_npu_bwmon_cfg_ahb_clk = {
1486     .halt_reg = 0x73004,
1487     .halt_check = BRANCH_HALT,
1488     .clkr = {
1489         .enable_reg = 0x73004,
1490         .enable_mask = BIT(0),
1491         .hw.init = &(struct clk_init_data){
1492             .name = "gcc_npu_bwmon_cfg_ahb_clk",
1493             .ops = &clk_branch2_ops,
1494         },
1495     },
1496 };
1497 
1498 static struct clk_branch gcc_npu_cfg_ahb_clk = {
1499     .halt_reg = 0x4d004,
1500     .halt_check = BRANCH_HALT,
1501     .hwcg_reg = 0x4d004,
1502     .hwcg_bit = 1,
1503     .clkr = {
1504         .enable_reg = 0x4d004,
1505         .enable_mask = BIT(0),
1506         .hw.init = &(struct clk_init_data){
1507             .name = "gcc_npu_cfg_ahb_clk",
1508             .ops = &clk_branch2_ops,
1509         },
1510     },
1511 };
1512 
1513 static struct clk_branch gcc_npu_dma_clk = {
1514     .halt_reg = 0x4d00c,
1515     .halt_check = BRANCH_HALT_VOTED,
1516     .clkr = {
1517         .enable_reg = 0x4d00c,
1518         .enable_mask = BIT(0),
1519         .hw.init = &(struct clk_init_data){
1520             .name = "gcc_npu_dma_clk",
1521             .ops = &clk_branch2_ops,
1522         },
1523     },
1524 };
1525 
1526 static struct clk_branch gcc_npu_gpll0_clk_src = {
1527     .halt_check = BRANCH_HALT_DELAY,
1528     .clkr = {
1529         .enable_reg = 0x52000,
1530         .enable_mask = BIT(18),
1531         .hw.init = &(struct clk_init_data){
1532             .name = "gcc_npu_gpll0_clk_src",
1533             .parent_hws = (const struct clk_hw*[]){
1534                 &gpll0.clkr.hw,
1535             },
1536             .num_parents = 1,
1537             .flags = CLK_SET_RATE_PARENT,
1538             .ops = &clk_branch2_ops,
1539         },
1540     },
1541 };
1542 
1543 static struct clk_branch gcc_npu_gpll0_div_clk_src = {
1544     .halt_check = BRANCH_HALT_DELAY,
1545     .clkr = {
1546         .enable_reg = 0x52000,
1547         .enable_mask = BIT(19),
1548         .hw.init = &(struct clk_init_data){
1549             .name = "gcc_npu_gpll0_div_clk_src",
1550             .parent_hws = (const struct clk_hw*[]){
1551                 &gpll0_out_even.clkr.hw,
1552             },
1553             .num_parents = 1,
1554             .flags = CLK_SET_RATE_PARENT,
1555             .ops = &clk_branch2_ops,
1556         },
1557     },
1558 };
1559 
1560 static struct clk_branch gcc_pcie0_phy_refgen_clk = {
1561     .halt_reg = 0x6f02c,
1562     .halt_check = BRANCH_HALT,
1563     .clkr = {
1564         .enable_reg = 0x6f02c,
1565         .enable_mask = BIT(0),
1566         .hw.init = &(struct clk_init_data){
1567             .name = "gcc_pcie0_phy_refgen_clk",
1568             .parent_hws = (const struct clk_hw*[]){
1569                 &gcc_pcie_phy_refgen_clk_src.clkr.hw,
1570             },
1571             .num_parents = 1,
1572             .flags = CLK_SET_RATE_PARENT,
1573             .ops = &clk_branch2_ops,
1574         },
1575     },
1576 };
1577 
1578 static struct clk_branch gcc_pcie1_phy_refgen_clk = {
1579     .halt_reg = 0x6f030,
1580     .halt_check = BRANCH_HALT,
1581     .clkr = {
1582         .enable_reg = 0x6f030,
1583         .enable_mask = BIT(0),
1584         .hw.init = &(struct clk_init_data){
1585             .name = "gcc_pcie1_phy_refgen_clk",
1586             .parent_hws = (const struct clk_hw*[]){
1587                 &gcc_pcie_phy_refgen_clk_src.clkr.hw,
1588             },
1589             .num_parents = 1,
1590             .flags = CLK_SET_RATE_PARENT,
1591             .ops = &clk_branch2_ops,
1592         },
1593     },
1594 };
1595 
1596 static struct clk_branch gcc_pcie2_phy_refgen_clk = {
1597     .halt_reg = 0x6f034,
1598     .halt_check = BRANCH_HALT,
1599     .clkr = {
1600         .enable_reg = 0x6f034,
1601         .enable_mask = BIT(0),
1602         .hw.init = &(struct clk_init_data){
1603             .name = "gcc_pcie2_phy_refgen_clk",
1604             .parent_hws = (const struct clk_hw*[]){
1605                 &gcc_pcie_phy_refgen_clk_src.clkr.hw,
1606             },
1607             .num_parents = 1,
1608             .flags = CLK_SET_RATE_PARENT,
1609             .ops = &clk_branch2_ops,
1610         },
1611     },
1612 };
1613 
1614 static struct clk_branch gcc_pcie_0_aux_clk = {
1615     .halt_reg = 0x6b028,
1616     .halt_check = BRANCH_HALT_VOTED,
1617     .clkr = {
1618         .enable_reg = 0x52008,
1619         .enable_mask = BIT(3),
1620         .hw.init = &(struct clk_init_data){
1621             .name = "gcc_pcie_0_aux_clk",
1622             .parent_hws = (const struct clk_hw*[]){
1623                 &gcc_pcie_0_aux_clk_src.clkr.hw,
1624             },
1625             .num_parents = 1,
1626             .flags = CLK_SET_RATE_PARENT,
1627             .ops = &clk_branch2_ops,
1628         },
1629     },
1630 };
1631 
1632 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
1633     .halt_reg = 0x6b024,
1634     .halt_check = BRANCH_HALT_VOTED,
1635     .hwcg_reg = 0x6b024,
1636     .hwcg_bit = 1,
1637     .clkr = {
1638         .enable_reg = 0x52008,
1639         .enable_mask = BIT(2),
1640         .hw.init = &(struct clk_init_data){
1641             .name = "gcc_pcie_0_cfg_ahb_clk",
1642             .ops = &clk_branch2_ops,
1643         },
1644     },
1645 };
1646 
1647 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
1648     .halt_reg = 0x6b01c,
1649     .halt_check = BRANCH_HALT_VOTED,
1650     .clkr = {
1651         .enable_reg = 0x52008,
1652         .enable_mask = BIT(1),
1653         .hw.init = &(struct clk_init_data){
1654             .name = "gcc_pcie_0_mstr_axi_clk",
1655             .ops = &clk_branch2_ops,
1656         },
1657     },
1658 };
1659 
1660 static struct clk_branch gcc_pcie_0_pipe_clk = {
1661     .halt_reg = 0x6b02c,
1662     .halt_check = BRANCH_HALT_SKIP,
1663     .clkr = {
1664         .enable_reg = 0x52008,
1665         .enable_mask = BIT(4),
1666         .hw.init = &(struct clk_init_data){
1667             .name = "gcc_pcie_0_pipe_clk",
1668             .ops = &clk_branch2_ops,
1669         },
1670     },
1671 };
1672 
1673 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
1674     .halt_reg = 0x6b014,
1675     .halt_check = BRANCH_HALT_VOTED,
1676     .hwcg_reg = 0x6b014,
1677     .hwcg_bit = 1,
1678     .clkr = {
1679         .enable_reg = 0x52008,
1680         .enable_mask = BIT(0),
1681         .hw.init = &(struct clk_init_data){
1682             .name = "gcc_pcie_0_slv_axi_clk",
1683             .ops = &clk_branch2_ops,
1684         },
1685     },
1686 };
1687 
1688 static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
1689     .halt_reg = 0x6b010,
1690     .halt_check = BRANCH_HALT_VOTED,
1691     .clkr = {
1692         .enable_reg = 0x52008,
1693         .enable_mask = BIT(5),
1694         .hw.init = &(struct clk_init_data){
1695             .name = "gcc_pcie_0_slv_q2a_axi_clk",
1696             .ops = &clk_branch2_ops,
1697         },
1698     },
1699 };
1700 
1701 static struct clk_branch gcc_pcie_1_aux_clk = {
1702     .halt_reg = 0x8d028,
1703     .halt_check = BRANCH_HALT_VOTED,
1704     .clkr = {
1705         .enable_reg = 0x52000,
1706         .enable_mask = BIT(29),
1707         .hw.init = &(struct clk_init_data){
1708             .name = "gcc_pcie_1_aux_clk",
1709             .parent_hws = (const struct clk_hw*[]){
1710                 &gcc_pcie_1_aux_clk_src.clkr.hw,
1711             },
1712             .num_parents = 1,
1713             .flags = CLK_SET_RATE_PARENT,
1714             .ops = &clk_branch2_ops,
1715         },
1716     },
1717 };
1718 
1719 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
1720     .halt_reg = 0x8d024,
1721     .halt_check = BRANCH_HALT_VOTED,
1722     .hwcg_reg = 0x8d024,
1723     .hwcg_bit = 1,
1724     .clkr = {
1725         .enable_reg = 0x52000,
1726         .enable_mask = BIT(28),
1727         .hw.init = &(struct clk_init_data){
1728             .name = "gcc_pcie_1_cfg_ahb_clk",
1729             .ops = &clk_branch2_ops,
1730         },
1731     },
1732 };
1733 
1734 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
1735     .halt_reg = 0x8d01c,
1736     .halt_check = BRANCH_HALT_VOTED,
1737     .clkr = {
1738         .enable_reg = 0x52000,
1739         .enable_mask = BIT(27),
1740         .hw.init = &(struct clk_init_data){
1741             .name = "gcc_pcie_1_mstr_axi_clk",
1742             .ops = &clk_branch2_ops,
1743         },
1744     },
1745 };
1746 
1747 static struct clk_branch gcc_pcie_1_pipe_clk = {
1748     .halt_reg = 0x8d02c,
1749     .halt_check = BRANCH_HALT_SKIP,
1750     .clkr = {
1751         .enable_reg = 0x52000,
1752         .enable_mask = BIT(30),
1753         .hw.init = &(struct clk_init_data){
1754             .name = "gcc_pcie_1_pipe_clk",
1755             .ops = &clk_branch2_ops,
1756         },
1757     },
1758 };
1759 
1760 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
1761     .halt_reg = 0x8d014,
1762     .halt_check = BRANCH_HALT_VOTED,
1763     .hwcg_reg = 0x8d014,
1764     .hwcg_bit = 1,
1765     .clkr = {
1766         .enable_reg = 0x52000,
1767         .enable_mask = BIT(26),
1768         .hw.init = &(struct clk_init_data){
1769             .name = "gcc_pcie_1_slv_axi_clk",
1770             .ops = &clk_branch2_ops,
1771         },
1772     },
1773 };
1774 
1775 static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
1776     .halt_reg = 0x8d010,
1777     .halt_check = BRANCH_HALT_VOTED,
1778     .clkr = {
1779         .enable_reg = 0x52000,
1780         .enable_mask = BIT(25),
1781         .hw.init = &(struct clk_init_data){
1782             .name = "gcc_pcie_1_slv_q2a_axi_clk",
1783             .ops = &clk_branch2_ops,
1784         },
1785     },
1786 };
1787 
1788 static struct clk_branch gcc_pcie_2_aux_clk = {
1789     .halt_reg = 0x6028,
1790     .halt_check = BRANCH_HALT_VOTED,
1791     .clkr = {
1792         .enable_reg = 0x52010,
1793         .enable_mask = BIT(14),
1794         .hw.init = &(struct clk_init_data){
1795             .name = "gcc_pcie_2_aux_clk",
1796             .parent_hws = (const struct clk_hw*[]){
1797                 &gcc_pcie_2_aux_clk_src.clkr.hw,
1798             },
1799             .num_parents = 1,
1800             .flags = CLK_SET_RATE_PARENT,
1801             .ops = &clk_branch2_ops,
1802         },
1803     },
1804 };
1805 
1806 static struct clk_branch gcc_pcie_2_cfg_ahb_clk = {
1807     .halt_reg = 0x6024,
1808     .halt_check = BRANCH_HALT_VOTED,
1809     .hwcg_reg = 0x6024,
1810     .hwcg_bit = 1,
1811     .clkr = {
1812         .enable_reg = 0x52010,
1813         .enable_mask = BIT(13),
1814         .hw.init = &(struct clk_init_data){
1815             .name = "gcc_pcie_2_cfg_ahb_clk",
1816             .ops = &clk_branch2_ops,
1817         },
1818     },
1819 };
1820 
1821 static struct clk_branch gcc_pcie_2_mstr_axi_clk = {
1822     .halt_reg = 0x601c,
1823     .halt_check = BRANCH_HALT_VOTED,
1824     .clkr = {
1825         .enable_reg = 0x52010,
1826         .enable_mask = BIT(12),
1827         .hw.init = &(struct clk_init_data){
1828             .name = "gcc_pcie_2_mstr_axi_clk",
1829             .ops = &clk_branch2_ops,
1830         },
1831     },
1832 };
1833 
1834 static struct clk_branch gcc_pcie_2_pipe_clk = {
1835     .halt_reg = 0x602c,
1836     .halt_check = BRANCH_HALT_SKIP,
1837     .clkr = {
1838         .enable_reg = 0x52010,
1839         .enable_mask = BIT(15),
1840         .hw.init = &(struct clk_init_data){
1841             .name = "gcc_pcie_2_pipe_clk",
1842             .ops = &clk_branch2_ops,
1843         },
1844     },
1845 };
1846 
1847 static struct clk_branch gcc_pcie_2_slv_axi_clk = {
1848     .halt_reg = 0x6014,
1849     .halt_check = BRANCH_HALT_VOTED,
1850     .hwcg_reg = 0x6014,
1851     .hwcg_bit = 1,
1852     .clkr = {
1853         .enable_reg = 0x52010,
1854         .enable_mask = BIT(11),
1855         .hw.init = &(struct clk_init_data){
1856             .name = "gcc_pcie_2_slv_axi_clk",
1857             .ops = &clk_branch2_ops,
1858         },
1859     },
1860 };
1861 
1862 static struct clk_branch gcc_pcie_2_slv_q2a_axi_clk = {
1863     .halt_reg = 0x6010,
1864     .halt_check = BRANCH_HALT_VOTED,
1865     .clkr = {
1866         .enable_reg = 0x52010,
1867         .enable_mask = BIT(10),
1868         .hw.init = &(struct clk_init_data){
1869             .name = "gcc_pcie_2_slv_q2a_axi_clk",
1870             .ops = &clk_branch2_ops,
1871         },
1872     },
1873 };
1874 
1875 static struct clk_branch gcc_pcie_mdm_clkref_en = {
1876     .halt_reg = 0x8c00c,
1877     .halt_check = BRANCH_HALT,
1878     .clkr = {
1879         .enable_reg = 0x8c00c,
1880         .enable_mask = BIT(0),
1881         .hw.init = &(struct clk_init_data){
1882             .name = "gcc_pcie_mdm_clkref_en",
1883             .ops = &clk_branch2_ops,
1884         },
1885     },
1886 };
1887 
1888 static struct clk_branch gcc_pcie_phy_aux_clk = {
1889     .halt_reg = 0x6f004,
1890     .halt_check = BRANCH_HALT,
1891     .clkr = {
1892         .enable_reg = 0x6f004,
1893         .enable_mask = BIT(0),
1894         .hw.init = &(struct clk_init_data){
1895             .name = "gcc_pcie_phy_aux_clk",
1896             .parent_hws = (const struct clk_hw*[]){
1897                 &gcc_pcie_0_aux_clk_src.clkr.hw,
1898             },
1899             .num_parents = 1,
1900             .flags = CLK_SET_RATE_PARENT,
1901             .ops = &clk_branch2_ops,
1902         },
1903     },
1904 };
1905 
1906 static struct clk_branch gcc_pcie_wifi_clkref_en = {
1907     .halt_reg = 0x8c004,
1908     .halt_check = BRANCH_HALT,
1909     .clkr = {
1910         .enable_reg = 0x8c004,
1911         .enable_mask = BIT(0),
1912         .hw.init = &(struct clk_init_data){
1913             .name = "gcc_pcie_wifi_clkref_en",
1914             .ops = &clk_branch2_ops,
1915         },
1916     },
1917 };
1918 
1919 static struct clk_branch gcc_pcie_wigig_clkref_en = {
1920     .halt_reg = 0x8c008,
1921     .halt_check = BRANCH_HALT,
1922     .clkr = {
1923         .enable_reg = 0x8c008,
1924         .enable_mask = BIT(0),
1925         .hw.init = &(struct clk_init_data){
1926             .name = "gcc_pcie_wigig_clkref_en",
1927             .ops = &clk_branch2_ops,
1928         },
1929     },
1930 };
1931 
1932 static struct clk_branch gcc_pdm2_clk = {
1933     .halt_reg = 0x3300c,
1934     .halt_check = BRANCH_HALT,
1935     .clkr = {
1936         .enable_reg = 0x3300c,
1937         .enable_mask = BIT(0),
1938         .hw.init = &(struct clk_init_data){
1939             .name = "gcc_pdm2_clk",
1940             .parent_hws = (const struct clk_hw*[]){
1941                 &gcc_pdm2_clk_src.clkr.hw,
1942             },
1943             .num_parents = 1,
1944             .flags = CLK_SET_RATE_PARENT,
1945             .ops = &clk_branch2_ops,
1946         },
1947     },
1948 };
1949 
1950 static struct clk_branch gcc_pdm_ahb_clk = {
1951     .halt_reg = 0x33004,
1952     .halt_check = BRANCH_HALT,
1953     .hwcg_reg = 0x33004,
1954     .hwcg_bit = 1,
1955     .clkr = {
1956         .enable_reg = 0x33004,
1957         .enable_mask = BIT(0),
1958         .hw.init = &(struct clk_init_data){
1959             .name = "gcc_pdm_ahb_clk",
1960             .ops = &clk_branch2_ops,
1961         },
1962     },
1963 };
1964 
1965 static struct clk_branch gcc_pdm_xo4_clk = {
1966     .halt_reg = 0x33008,
1967     .halt_check = BRANCH_HALT,
1968     .clkr = {
1969         .enable_reg = 0x33008,
1970         .enable_mask = BIT(0),
1971         .hw.init = &(struct clk_init_data){
1972             .name = "gcc_pdm_xo4_clk",
1973             .ops = &clk_branch2_ops,
1974         },
1975     },
1976 };
1977 
1978 static struct clk_branch gcc_prng_ahb_clk = {
1979     .halt_reg = 0x34004,
1980     .halt_check = BRANCH_HALT_VOTED,
1981     .clkr = {
1982         .enable_reg = 0x52000,
1983         .enable_mask = BIT(13),
1984         .hw.init = &(struct clk_init_data){
1985             .name = "gcc_prng_ahb_clk",
1986             .ops = &clk_branch2_ops,
1987         },
1988     },
1989 };
1990 
1991 static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
1992     .halt_reg = 0xb018,
1993     .halt_check = BRANCH_HALT_VOTED,
1994     .hwcg_reg = 0xb018,
1995     .hwcg_bit = 1,
1996     .clkr = {
1997         .enable_reg = 0xb018,
1998         .enable_mask = BIT(0),
1999         .hw.init = &(struct clk_init_data){
2000             .name = "gcc_qmip_camera_nrt_ahb_clk",
2001             .ops = &clk_branch2_ops,
2002         },
2003     },
2004 };
2005 
2006 static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
2007     .halt_reg = 0xb01c,
2008     .halt_check = BRANCH_HALT_VOTED,
2009     .hwcg_reg = 0xb01c,
2010     .hwcg_bit = 1,
2011     .clkr = {
2012         .enable_reg = 0xb01c,
2013         .enable_mask = BIT(0),
2014         .hw.init = &(struct clk_init_data){
2015             .name = "gcc_qmip_camera_rt_ahb_clk",
2016             .ops = &clk_branch2_ops,
2017         },
2018     },
2019 };
2020 
2021 static struct clk_branch gcc_qmip_disp_ahb_clk = {
2022     .halt_reg = 0xb020,
2023     .halt_check = BRANCH_HALT_VOTED,
2024     .hwcg_reg = 0xb020,
2025     .hwcg_bit = 1,
2026     .clkr = {
2027         .enable_reg = 0xb020,
2028         .enable_mask = BIT(0),
2029         .hw.init = &(struct clk_init_data){
2030             .name = "gcc_qmip_disp_ahb_clk",
2031             .ops = &clk_branch2_ops,
2032         },
2033     },
2034 };
2035 
2036 static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {
2037     .halt_reg = 0xb010,
2038     .halt_check = BRANCH_HALT_VOTED,
2039     .hwcg_reg = 0xb010,
2040     .hwcg_bit = 1,
2041     .clkr = {
2042         .enable_reg = 0xb010,
2043         .enable_mask = BIT(0),
2044         .hw.init = &(struct clk_init_data){
2045             .name = "gcc_qmip_video_cvp_ahb_clk",
2046             .ops = &clk_branch2_ops,
2047         },
2048     },
2049 };
2050 
2051 static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
2052     .halt_reg = 0xb014,
2053     .halt_check = BRANCH_HALT_VOTED,
2054     .hwcg_reg = 0xb014,
2055     .hwcg_bit = 1,
2056     .clkr = {
2057         .enable_reg = 0xb014,
2058         .enable_mask = BIT(0),
2059         .hw.init = &(struct clk_init_data){
2060             .name = "gcc_qmip_video_vcodec_ahb_clk",
2061             .ops = &clk_branch2_ops,
2062         },
2063     },
2064 };
2065 
2066 static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {
2067     .halt_reg = 0x23008,
2068     .halt_check = BRANCH_HALT_VOTED,
2069     .clkr = {
2070         .enable_reg = 0x52008,
2071         .enable_mask = BIT(9),
2072         .hw.init = &(struct clk_init_data){
2073             .name = "gcc_qupv3_wrap0_core_2x_clk",
2074             .ops = &clk_branch2_ops,
2075         },
2076     },
2077 };
2078 
2079 static struct clk_branch gcc_qupv3_wrap0_core_clk = {
2080     .halt_reg = 0x23000,
2081     .halt_check = BRANCH_HALT_VOTED,
2082     .clkr = {
2083         .enable_reg = 0x52008,
2084         .enable_mask = BIT(8),
2085         .hw.init = &(struct clk_init_data){
2086             .name = "gcc_qupv3_wrap0_core_clk",
2087             .ops = &clk_branch2_ops,
2088         },
2089     },
2090 };
2091 
2092 static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
2093     .halt_reg = 0x1700c,
2094     .halt_check = BRANCH_HALT_VOTED,
2095     .clkr = {
2096         .enable_reg = 0x52008,
2097         .enable_mask = BIT(10),
2098         .hw.init = &(struct clk_init_data){
2099             .name = "gcc_qupv3_wrap0_s0_clk",
2100             .parent_hws = (const struct clk_hw*[]){
2101                 &gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
2102             },
2103             .num_parents = 1,
2104             .flags = CLK_SET_RATE_PARENT,
2105             .ops = &clk_branch2_ops,
2106         },
2107     },
2108 };
2109 
2110 static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
2111     .halt_reg = 0x1713c,
2112     .halt_check = BRANCH_HALT_VOTED,
2113     .clkr = {
2114         .enable_reg = 0x52008,
2115         .enable_mask = BIT(11),
2116         .hw.init = &(struct clk_init_data){
2117             .name = "gcc_qupv3_wrap0_s1_clk",
2118             .parent_hws = (const struct clk_hw*[]){
2119                 &gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
2120             },
2121             .num_parents = 1,
2122             .flags = CLK_SET_RATE_PARENT,
2123             .ops = &clk_branch2_ops,
2124         },
2125     },
2126 };
2127 
2128 static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
2129     .halt_reg = 0x1726c,
2130     .halt_check = BRANCH_HALT_VOTED,
2131     .clkr = {
2132         .enable_reg = 0x52008,
2133         .enable_mask = BIT(12),
2134         .hw.init = &(struct clk_init_data){
2135             .name = "gcc_qupv3_wrap0_s2_clk",
2136             .parent_hws = (const struct clk_hw*[]){
2137                 &gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
2138             },
2139             .num_parents = 1,
2140             .flags = CLK_SET_RATE_PARENT,
2141             .ops = &clk_branch2_ops,
2142         },
2143     },
2144 };
2145 
2146 static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
2147     .halt_reg = 0x1739c,
2148     .halt_check = BRANCH_HALT_VOTED,
2149     .clkr = {
2150         .enable_reg = 0x52008,
2151         .enable_mask = BIT(13),
2152         .hw.init = &(struct clk_init_data){
2153             .name = "gcc_qupv3_wrap0_s3_clk",
2154             .parent_hws = (const struct clk_hw*[]){
2155                 &gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
2156             },
2157             .num_parents = 1,
2158             .flags = CLK_SET_RATE_PARENT,
2159             .ops = &clk_branch2_ops,
2160         },
2161     },
2162 };
2163 
2164 static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
2165     .halt_reg = 0x174cc,
2166     .halt_check = BRANCH_HALT_VOTED,
2167     .clkr = {
2168         .enable_reg = 0x52008,
2169         .enable_mask = BIT(14),
2170         .hw.init = &(struct clk_init_data){
2171             .name = "gcc_qupv3_wrap0_s4_clk",
2172             .parent_hws = (const struct clk_hw*[]){
2173                 &gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
2174             },
2175             .num_parents = 1,
2176             .flags = CLK_SET_RATE_PARENT,
2177             .ops = &clk_branch2_ops,
2178         },
2179     },
2180 };
2181 
2182 static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
2183     .halt_reg = 0x175fc,
2184     .halt_check = BRANCH_HALT_VOTED,
2185     .clkr = {
2186         .enable_reg = 0x52008,
2187         .enable_mask = BIT(15),
2188         .hw.init = &(struct clk_init_data){
2189             .name = "gcc_qupv3_wrap0_s5_clk",
2190             .parent_hws = (const struct clk_hw*[]){
2191                 &gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
2192             },
2193             .num_parents = 1,
2194             .flags = CLK_SET_RATE_PARENT,
2195             .ops = &clk_branch2_ops,
2196         },
2197     },
2198 };
2199 
2200 static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
2201     .halt_reg = 0x1772c,
2202     .halt_check = BRANCH_HALT_VOTED,
2203     .clkr = {
2204         .enable_reg = 0x52008,
2205         .enable_mask = BIT(16),
2206         .hw.init = &(struct clk_init_data){
2207             .name = "gcc_qupv3_wrap0_s6_clk",
2208             .parent_hws = (const struct clk_hw*[]){
2209                 &gcc_qupv3_wrap0_s6_clk_src.clkr.hw,
2210             },
2211             .num_parents = 1,
2212             .flags = CLK_SET_RATE_PARENT,
2213             .ops = &clk_branch2_ops,
2214         },
2215     },
2216 };
2217 
2218 static struct clk_branch gcc_qupv3_wrap0_s7_clk = {
2219     .halt_reg = 0x1785c,
2220     .halt_check = BRANCH_HALT_VOTED,
2221     .clkr = {
2222         .enable_reg = 0x52008,
2223         .enable_mask = BIT(17),
2224         .hw.init = &(struct clk_init_data){
2225             .name = "gcc_qupv3_wrap0_s7_clk",
2226             .parent_hws = (const struct clk_hw*[]){
2227                 &gcc_qupv3_wrap0_s7_clk_src.clkr.hw,
2228             },
2229             .num_parents = 1,
2230             .flags = CLK_SET_RATE_PARENT,
2231             .ops = &clk_branch2_ops,
2232         },
2233     },
2234 };
2235 
2236 static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
2237     .halt_reg = 0x23140,
2238     .halt_check = BRANCH_HALT_VOTED,
2239     .clkr = {
2240         .enable_reg = 0x52008,
2241         .enable_mask = BIT(18),
2242         .hw.init = &(struct clk_init_data){
2243             .name = "gcc_qupv3_wrap1_core_2x_clk",
2244             .ops = &clk_branch2_ops,
2245         },
2246     },
2247 };
2248 
2249 static struct clk_branch gcc_qupv3_wrap1_core_clk = {
2250     .halt_reg = 0x23138,
2251     .halt_check = BRANCH_HALT_VOTED,
2252     .clkr = {
2253         .enable_reg = 0x52008,
2254         .enable_mask = BIT(19),
2255         .hw.init = &(struct clk_init_data){
2256             .name = "gcc_qupv3_wrap1_core_clk",
2257             .ops = &clk_branch2_ops,
2258         },
2259     },
2260 };
2261 
2262 static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
2263     .halt_reg = 0x1800c,
2264     .halt_check = BRANCH_HALT_VOTED,
2265     .clkr = {
2266         .enable_reg = 0x52008,
2267         .enable_mask = BIT(22),
2268         .hw.init = &(struct clk_init_data){
2269             .name = "gcc_qupv3_wrap1_s0_clk",
2270             .parent_hws = (const struct clk_hw*[]){
2271                 &gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
2272             },
2273             .num_parents = 1,
2274             .flags = CLK_SET_RATE_PARENT,
2275             .ops = &clk_branch2_ops,
2276         },
2277     },
2278 };
2279 
2280 static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
2281     .halt_reg = 0x1813c,
2282     .halt_check = BRANCH_HALT_VOTED,
2283     .clkr = {
2284         .enable_reg = 0x52008,
2285         .enable_mask = BIT(23),
2286         .hw.init = &(struct clk_init_data){
2287             .name = "gcc_qupv3_wrap1_s1_clk",
2288             .parent_hws = (const struct clk_hw*[]){
2289                 &gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
2290             },
2291             .num_parents = 1,
2292             .flags = CLK_SET_RATE_PARENT,
2293             .ops = &clk_branch2_ops,
2294         },
2295     },
2296 };
2297 
2298 static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
2299     .halt_reg = 0x1826c,
2300     .halt_check = BRANCH_HALT_VOTED,
2301     .clkr = {
2302         .enable_reg = 0x52008,
2303         .enable_mask = BIT(24),
2304         .hw.init = &(struct clk_init_data){
2305             .name = "gcc_qupv3_wrap1_s2_clk",
2306             .parent_hws = (const struct clk_hw*[]){
2307                 &gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
2308             },
2309             .num_parents = 1,
2310             .flags = CLK_SET_RATE_PARENT,
2311             .ops = &clk_branch2_ops,
2312         },
2313     },
2314 };
2315 
2316 static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
2317     .halt_reg = 0x1839c,
2318     .halt_check = BRANCH_HALT_VOTED,
2319     .clkr = {
2320         .enable_reg = 0x52008,
2321         .enable_mask = BIT(25),
2322         .hw.init = &(struct clk_init_data){
2323             .name = "gcc_qupv3_wrap1_s3_clk",
2324             .parent_hws = (const struct clk_hw*[]){
2325                 &gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
2326             },
2327             .num_parents = 1,
2328             .flags = CLK_SET_RATE_PARENT,
2329             .ops = &clk_branch2_ops,
2330         },
2331     },
2332 };
2333 
2334 static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
2335     .halt_reg = 0x184cc,
2336     .halt_check = BRANCH_HALT_VOTED,
2337     .clkr = {
2338         .enable_reg = 0x52008,
2339         .enable_mask = BIT(26),
2340         .hw.init = &(struct clk_init_data){
2341             .name = "gcc_qupv3_wrap1_s4_clk",
2342             .parent_hws = (const struct clk_hw*[]){
2343                 &gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
2344             },
2345             .num_parents = 1,
2346             .flags = CLK_SET_RATE_PARENT,
2347             .ops = &clk_branch2_ops,
2348         },
2349     },
2350 };
2351 
2352 static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
2353     .halt_reg = 0x185fc,
2354     .halt_check = BRANCH_HALT_VOTED,
2355     .clkr = {
2356         .enable_reg = 0x52008,
2357         .enable_mask = BIT(27),
2358         .hw.init = &(struct clk_init_data){
2359             .name = "gcc_qupv3_wrap1_s5_clk",
2360             .parent_hws = (const struct clk_hw*[]){
2361                 &gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
2362             },
2363             .num_parents = 1,
2364             .flags = CLK_SET_RATE_PARENT,
2365             .ops = &clk_branch2_ops,
2366         },
2367     },
2368 };
2369 
2370 static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = {
2371     .halt_reg = 0x23278,
2372     .halt_check = BRANCH_HALT_VOTED,
2373     .clkr = {
2374         .enable_reg = 0x52010,
2375         .enable_mask = BIT(3),
2376         .hw.init = &(struct clk_init_data){
2377             .name = "gcc_qupv3_wrap2_core_2x_clk",
2378             .ops = &clk_branch2_ops,
2379         },
2380     },
2381 };
2382 
2383 static struct clk_branch gcc_qupv3_wrap2_core_clk = {
2384     .halt_reg = 0x23270,
2385     .halt_check = BRANCH_HALT_VOTED,
2386     .clkr = {
2387         .enable_reg = 0x52010,
2388         .enable_mask = BIT(0),
2389         .hw.init = &(struct clk_init_data){
2390             .name = "gcc_qupv3_wrap2_core_clk",
2391             .ops = &clk_branch2_ops,
2392         },
2393     },
2394 };
2395 
2396 static struct clk_branch gcc_qupv3_wrap2_s0_clk = {
2397     .halt_reg = 0x1e00c,
2398     .halt_check = BRANCH_HALT_VOTED,
2399     .clkr = {
2400         .enable_reg = 0x52010,
2401         .enable_mask = BIT(4),
2402         .hw.init = &(struct clk_init_data){
2403             .name = "gcc_qupv3_wrap2_s0_clk",
2404             .parent_hws = (const struct clk_hw*[]){
2405                 &gcc_qupv3_wrap2_s0_clk_src.clkr.hw,
2406             },
2407             .num_parents = 1,
2408             .flags = CLK_SET_RATE_PARENT,
2409             .ops = &clk_branch2_ops,
2410         },
2411     },
2412 };
2413 
2414 static struct clk_branch gcc_qupv3_wrap2_s1_clk = {
2415     .halt_reg = 0x1e13c,
2416     .halt_check = BRANCH_HALT_VOTED,
2417     .clkr = {
2418         .enable_reg = 0x52010,
2419         .enable_mask = BIT(5),
2420         .hw.init = &(struct clk_init_data){
2421             .name = "gcc_qupv3_wrap2_s1_clk",
2422             .parent_hws = (const struct clk_hw*[]){
2423                 &gcc_qupv3_wrap2_s1_clk_src.clkr.hw,
2424             },
2425             .num_parents = 1,
2426             .flags = CLK_SET_RATE_PARENT,
2427             .ops = &clk_branch2_ops,
2428         },
2429     },
2430 };
2431 
2432 static struct clk_branch gcc_qupv3_wrap2_s2_clk = {
2433     .halt_reg = 0x1e26c,
2434     .halt_check = BRANCH_HALT_VOTED,
2435     .clkr = {
2436         .enable_reg = 0x52010,
2437         .enable_mask = BIT(6),
2438         .hw.init = &(struct clk_init_data){
2439             .name = "gcc_qupv3_wrap2_s2_clk",
2440             .parent_hws = (const struct clk_hw*[]){
2441                 &gcc_qupv3_wrap2_s2_clk_src.clkr.hw,
2442             },
2443             .num_parents = 1,
2444             .flags = CLK_SET_RATE_PARENT,
2445             .ops = &clk_branch2_ops,
2446         },
2447     },
2448 };
2449 
2450 static struct clk_branch gcc_qupv3_wrap2_s3_clk = {
2451     .halt_reg = 0x1e39c,
2452     .halt_check = BRANCH_HALT_VOTED,
2453     .clkr = {
2454         .enable_reg = 0x52010,
2455         .enable_mask = BIT(7),
2456         .hw.init = &(struct clk_init_data){
2457             .name = "gcc_qupv3_wrap2_s3_clk",
2458             .parent_hws = (const struct clk_hw*[]){
2459                 &gcc_qupv3_wrap2_s3_clk_src.clkr.hw,
2460             },
2461             .num_parents = 1,
2462             .flags = CLK_SET_RATE_PARENT,
2463             .ops = &clk_branch2_ops,
2464         },
2465     },
2466 };
2467 
2468 static struct clk_branch gcc_qupv3_wrap2_s4_clk = {
2469     .halt_reg = 0x1e4cc,
2470     .halt_check = BRANCH_HALT_VOTED,
2471     .clkr = {
2472         .enable_reg = 0x52010,
2473         .enable_mask = BIT(8),
2474         .hw.init = &(struct clk_init_data){
2475             .name = "gcc_qupv3_wrap2_s4_clk",
2476             .parent_hws = (const struct clk_hw*[]){
2477                 &gcc_qupv3_wrap2_s4_clk_src.clkr.hw,
2478             },
2479             .num_parents = 1,
2480             .flags = CLK_SET_RATE_PARENT,
2481             .ops = &clk_branch2_ops,
2482         },
2483     },
2484 };
2485 
2486 static struct clk_branch gcc_qupv3_wrap2_s5_clk = {
2487     .halt_reg = 0x1e5fc,
2488     .halt_check = BRANCH_HALT_VOTED,
2489     .clkr = {
2490         .enable_reg = 0x52010,
2491         .enable_mask = BIT(9),
2492         .hw.init = &(struct clk_init_data){
2493             .name = "gcc_qupv3_wrap2_s5_clk",
2494             .parent_hws = (const struct clk_hw*[]){
2495                 &gcc_qupv3_wrap2_s5_clk_src.clkr.hw,
2496             },
2497             .num_parents = 1,
2498             .flags = CLK_SET_RATE_PARENT,
2499             .ops = &clk_branch2_ops,
2500         },
2501     },
2502 };
2503 
2504 static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
2505     .halt_reg = 0x17004,
2506     .halt_check = BRANCH_HALT_VOTED,
2507     .clkr = {
2508         .enable_reg = 0x52008,
2509         .enable_mask = BIT(6),
2510         .hw.init = &(struct clk_init_data){
2511             .name = "gcc_qupv3_wrap_0_m_ahb_clk",
2512             .ops = &clk_branch2_ops,
2513         },
2514     },
2515 };
2516 
2517 static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
2518     .halt_reg = 0x17008,
2519     .halt_check = BRANCH_HALT_VOTED,
2520     .hwcg_reg = 0x17008,
2521     .hwcg_bit = 1,
2522     .clkr = {
2523         .enable_reg = 0x52008,
2524         .enable_mask = BIT(7),
2525         .hw.init = &(struct clk_init_data){
2526             .name = "gcc_qupv3_wrap_0_s_ahb_clk",
2527             .ops = &clk_branch2_ops,
2528         },
2529     },
2530 };
2531 
2532 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
2533     .halt_reg = 0x18004,
2534     .halt_check = BRANCH_HALT_VOTED,
2535     .clkr = {
2536         .enable_reg = 0x52008,
2537         .enable_mask = BIT(20),
2538         .hw.init = &(struct clk_init_data){
2539             .name = "gcc_qupv3_wrap_1_m_ahb_clk",
2540             .ops = &clk_branch2_ops,
2541         },
2542     },
2543 };
2544 
2545 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
2546     .halt_reg = 0x18008,
2547     .halt_check = BRANCH_HALT_VOTED,
2548     .hwcg_reg = 0x18008,
2549     .hwcg_bit = 1,
2550     .clkr = {
2551         .enable_reg = 0x52008,
2552         .enable_mask = BIT(21),
2553         .hw.init = &(struct clk_init_data){
2554             .name = "gcc_qupv3_wrap_1_s_ahb_clk",
2555             .ops = &clk_branch2_ops,
2556         },
2557     },
2558 };
2559 
2560 static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {
2561     .halt_reg = 0x1e004,
2562     .halt_check = BRANCH_HALT_VOTED,
2563     .clkr = {
2564         .enable_reg = 0x52010,
2565         .enable_mask = BIT(2),
2566         .hw.init = &(struct clk_init_data){
2567             .name = "gcc_qupv3_wrap_2_m_ahb_clk",
2568             .ops = &clk_branch2_ops,
2569         },
2570     },
2571 };
2572 
2573 static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {
2574     .halt_reg = 0x1e008,
2575     .halt_check = BRANCH_HALT_VOTED,
2576     .hwcg_reg = 0x1e008,
2577     .hwcg_bit = 1,
2578     .clkr = {
2579         .enable_reg = 0x52010,
2580         .enable_mask = BIT(1),
2581         .hw.init = &(struct clk_init_data){
2582             .name = "gcc_qupv3_wrap_2_s_ahb_clk",
2583             .ops = &clk_branch2_ops,
2584         },
2585     },
2586 };
2587 
2588 static struct clk_branch gcc_sdcc2_ahb_clk = {
2589     .halt_reg = 0x14008,
2590     .halt_check = BRANCH_HALT,
2591     .clkr = {
2592         .enable_reg = 0x14008,
2593         .enable_mask = BIT(0),
2594         .hw.init = &(struct clk_init_data){
2595             .name = "gcc_sdcc2_ahb_clk",
2596             .ops = &clk_branch2_ops,
2597         },
2598     },
2599 };
2600 
2601 static struct clk_branch gcc_sdcc2_apps_clk = {
2602     .halt_reg = 0x14004,
2603     .halt_check = BRANCH_HALT,
2604     .clkr = {
2605         .enable_reg = 0x14004,
2606         .enable_mask = BIT(0),
2607         .hw.init = &(struct clk_init_data){
2608             .name = "gcc_sdcc2_apps_clk",
2609             .parent_hws = (const struct clk_hw*[]){
2610                 &gcc_sdcc2_apps_clk_src.clkr.hw,
2611             },
2612             .num_parents = 1,
2613             .flags = CLK_SET_RATE_PARENT,
2614             .ops = &clk_branch2_ops,
2615         },
2616     },
2617 };
2618 
2619 static struct clk_branch gcc_sdcc4_ahb_clk = {
2620     .halt_reg = 0x16008,
2621     .halt_check = BRANCH_HALT,
2622     .clkr = {
2623         .enable_reg = 0x16008,
2624         .enable_mask = BIT(0),
2625         .hw.init = &(struct clk_init_data){
2626             .name = "gcc_sdcc4_ahb_clk",
2627             .ops = &clk_branch2_ops,
2628         },
2629     },
2630 };
2631 
2632 static struct clk_branch gcc_sdcc4_apps_clk = {
2633     .halt_reg = 0x16004,
2634     .halt_check = BRANCH_HALT,
2635     .clkr = {
2636         .enable_reg = 0x16004,
2637         .enable_mask = BIT(0),
2638         .hw.init = &(struct clk_init_data){
2639             .name = "gcc_sdcc4_apps_clk",
2640             .parent_hws = (const struct clk_hw*[]){
2641                 &gcc_sdcc4_apps_clk_src.clkr.hw,
2642             },
2643             .num_parents = 1,
2644             .flags = CLK_SET_RATE_PARENT,
2645             .ops = &clk_branch2_ops,
2646         },
2647     },
2648 };
2649 
2650 static struct clk_branch gcc_tsif_ahb_clk = {
2651     .halt_reg = 0x36004,
2652     .halt_check = BRANCH_HALT_VOTED,
2653     .clkr = {
2654         .enable_reg = 0x36004,
2655         .enable_mask = BIT(0),
2656         .hw.init = &(struct clk_init_data){
2657             .name = "gcc_tsif_ahb_clk",
2658             .ops = &clk_branch2_ops,
2659         },
2660     },
2661 };
2662 
2663 static struct clk_branch gcc_tsif_inactivity_timers_clk = {
2664     .halt_reg = 0x3600c,
2665     .halt_check = BRANCH_HALT,
2666     .clkr = {
2667         .enable_reg = 0x3600c,
2668         .enable_mask = BIT(0),
2669         .hw.init = &(struct clk_init_data){
2670             .name = "gcc_tsif_inactivity_timers_clk",
2671             .ops = &clk_branch2_ops,
2672         },
2673     },
2674 };
2675 
2676 static struct clk_branch gcc_tsif_ref_clk = {
2677     .halt_reg = 0x36008,
2678     .halt_check = BRANCH_HALT,
2679     .clkr = {
2680         .enable_reg = 0x36008,
2681         .enable_mask = BIT(0),
2682         .hw.init = &(struct clk_init_data){
2683             .name = "gcc_tsif_ref_clk",
2684             .parent_hws = (const struct clk_hw*[]){
2685                 &gcc_tsif_ref_clk_src.clkr.hw,
2686             },
2687             .num_parents = 1,
2688             .flags = CLK_SET_RATE_PARENT,
2689             .ops = &clk_branch2_ops,
2690         },
2691     },
2692 };
2693 
2694 static struct clk_branch gcc_ufs_1x_clkref_en = {
2695     .halt_reg = 0x8c000,
2696     .halt_check = BRANCH_HALT,
2697     .clkr = {
2698         .enable_reg = 0x8c000,
2699         .enable_mask = BIT(0),
2700         .hw.init = &(struct clk_init_data){
2701             .name = "gcc_ufs_1x_clkref_en",
2702             .ops = &clk_branch2_ops,
2703         },
2704     },
2705 };
2706 
2707 static struct clk_branch gcc_ufs_card_ahb_clk = {
2708     .halt_reg = 0x75018,
2709     .halt_check = BRANCH_HALT_VOTED,
2710     .hwcg_reg = 0x75018,
2711     .hwcg_bit = 1,
2712     .clkr = {
2713         .enable_reg = 0x75018,
2714         .enable_mask = BIT(0),
2715         .hw.init = &(struct clk_init_data){
2716             .name = "gcc_ufs_card_ahb_clk",
2717             .ops = &clk_branch2_ops,
2718         },
2719     },
2720 };
2721 
2722 static struct clk_branch gcc_ufs_card_axi_clk = {
2723     .halt_reg = 0x75010,
2724     .halt_check = BRANCH_HALT,
2725     .hwcg_reg = 0x75010,
2726     .hwcg_bit = 1,
2727     .clkr = {
2728         .enable_reg = 0x75010,
2729         .enable_mask = BIT(0),
2730         .hw.init = &(struct clk_init_data){
2731             .name = "gcc_ufs_card_axi_clk",
2732             .parent_hws = (const struct clk_hw*[]){
2733                 &gcc_ufs_card_axi_clk_src.clkr.hw,
2734             },
2735             .num_parents = 1,
2736             .flags = CLK_SET_RATE_PARENT,
2737             .ops = &clk_branch2_ops,
2738         },
2739     },
2740 };
2741 
2742 static struct clk_branch gcc_ufs_card_ice_core_clk = {
2743     .halt_reg = 0x75064,
2744     .halt_check = BRANCH_HALT_VOTED,
2745     .hwcg_reg = 0x75064,
2746     .hwcg_bit = 1,
2747     .clkr = {
2748         .enable_reg = 0x75064,
2749         .enable_mask = BIT(0),
2750         .hw.init = &(struct clk_init_data){
2751             .name = "gcc_ufs_card_ice_core_clk",
2752             .parent_hws = (const struct clk_hw*[]){
2753                 &gcc_ufs_card_ice_core_clk_src.clkr.hw,
2754             },
2755             .num_parents = 1,
2756             .flags = CLK_SET_RATE_PARENT,
2757             .ops = &clk_branch2_ops,
2758         },
2759     },
2760 };
2761 
2762 static struct clk_branch gcc_ufs_card_phy_aux_clk = {
2763     .halt_reg = 0x7509c,
2764     .halt_check = BRANCH_HALT,
2765     .hwcg_reg = 0x7509c,
2766     .hwcg_bit = 1,
2767     .clkr = {
2768         .enable_reg = 0x7509c,
2769         .enable_mask = BIT(0),
2770         .hw.init = &(struct clk_init_data){
2771             .name = "gcc_ufs_card_phy_aux_clk",
2772             .parent_hws = (const struct clk_hw*[]){
2773                 &gcc_ufs_card_phy_aux_clk_src.clkr.hw,
2774             },
2775             .num_parents = 1,
2776             .flags = CLK_SET_RATE_PARENT,
2777             .ops = &clk_branch2_ops,
2778         },
2779     },
2780 };
2781 
2782 static struct clk_branch gcc_ufs_card_rx_symbol_0_clk = {
2783     .halt_reg = 0x75020,
2784     .halt_check = BRANCH_HALT_DELAY,
2785     .clkr = {
2786         .enable_reg = 0x75020,
2787         .enable_mask = BIT(0),
2788         .hw.init = &(struct clk_init_data){
2789             .name = "gcc_ufs_card_rx_symbol_0_clk",
2790             .ops = &clk_branch2_ops,
2791         },
2792     },
2793 };
2794 
2795 static struct clk_branch gcc_ufs_card_rx_symbol_1_clk = {
2796     .halt_reg = 0x750b8,
2797     .halt_check = BRANCH_HALT_DELAY,
2798     .clkr = {
2799         .enable_reg = 0x750b8,
2800         .enable_mask = BIT(0),
2801         .hw.init = &(struct clk_init_data){
2802             .name = "gcc_ufs_card_rx_symbol_1_clk",
2803             .ops = &clk_branch2_ops,
2804         },
2805     },
2806 };
2807 
2808 static struct clk_branch gcc_ufs_card_tx_symbol_0_clk = {
2809     .halt_reg = 0x7501c,
2810     .halt_check = BRANCH_HALT_DELAY,
2811     .clkr = {
2812         .enable_reg = 0x7501c,
2813         .enable_mask = BIT(0),
2814         .hw.init = &(struct clk_init_data){
2815             .name = "gcc_ufs_card_tx_symbol_0_clk",
2816             .ops = &clk_branch2_ops,
2817         },
2818     },
2819 };
2820 
2821 static struct clk_branch gcc_ufs_card_unipro_core_clk = {
2822     .halt_reg = 0x7505c,
2823     .halt_check = BRANCH_HALT,
2824     .hwcg_reg = 0x7505c,
2825     .hwcg_bit = 1,
2826     .clkr = {
2827         .enable_reg = 0x7505c,
2828         .enable_mask = BIT(0),
2829         .hw.init = &(struct clk_init_data){
2830             .name = "gcc_ufs_card_unipro_core_clk",
2831             .parent_hws = (const struct clk_hw*[]){
2832                 &gcc_ufs_card_unipro_core_clk_src.clkr.hw,
2833             },
2834             .num_parents = 1,
2835             .flags = CLK_SET_RATE_PARENT,
2836             .ops = &clk_branch2_ops,
2837         },
2838     },
2839 };
2840 
2841 static struct clk_branch gcc_ufs_phy_ahb_clk = {
2842     .halt_reg = 0x77018,
2843     .halt_check = BRANCH_HALT_VOTED,
2844     .hwcg_reg = 0x77018,
2845     .hwcg_bit = 1,
2846     .clkr = {
2847         .enable_reg = 0x77018,
2848         .enable_mask = BIT(0),
2849         .hw.init = &(struct clk_init_data){
2850             .name = "gcc_ufs_phy_ahb_clk",
2851             .ops = &clk_branch2_ops,
2852         },
2853     },
2854 };
2855 
2856 static struct clk_branch gcc_ufs_phy_axi_clk = {
2857     .halt_reg = 0x77010,
2858     .halt_check = BRANCH_HALT,
2859     .hwcg_reg = 0x77010,
2860     .hwcg_bit = 1,
2861     .clkr = {
2862         .enable_reg = 0x77010,
2863         .enable_mask = BIT(0),
2864         .hw.init = &(struct clk_init_data){
2865             .name = "gcc_ufs_phy_axi_clk",
2866             .parent_hws = (const struct clk_hw*[]){
2867                 &gcc_ufs_phy_axi_clk_src.clkr.hw,
2868             },
2869             .num_parents = 1,
2870             .flags = CLK_SET_RATE_PARENT,
2871             .ops = &clk_branch2_ops,
2872         },
2873     },
2874 };
2875 
2876 static struct clk_branch gcc_ufs_phy_ice_core_clk = {
2877     .halt_reg = 0x77064,
2878     .halt_check = BRANCH_HALT_VOTED,
2879     .hwcg_reg = 0x77064,
2880     .hwcg_bit = 1,
2881     .clkr = {
2882         .enable_reg = 0x77064,
2883         .enable_mask = BIT(0),
2884         .hw.init = &(struct clk_init_data){
2885             .name = "gcc_ufs_phy_ice_core_clk",
2886             .parent_hws = (const struct clk_hw*[]){
2887                 &gcc_ufs_phy_ice_core_clk_src.clkr.hw,
2888             },
2889             .num_parents = 1,
2890             .flags = CLK_SET_RATE_PARENT,
2891             .ops = &clk_branch2_ops,
2892         },
2893     },
2894 };
2895 
2896 static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
2897     .halt_reg = 0x7709c,
2898     .halt_check = BRANCH_HALT,
2899     .hwcg_reg = 0x7709c,
2900     .hwcg_bit = 1,
2901     .clkr = {
2902         .enable_reg = 0x7709c,
2903         .enable_mask = BIT(0),
2904         .hw.init = &(struct clk_init_data){
2905             .name = "gcc_ufs_phy_phy_aux_clk",
2906             .parent_hws = (const struct clk_hw*[]){
2907                 &gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
2908             },
2909             .num_parents = 1,
2910             .flags = CLK_SET_RATE_PARENT,
2911             .ops = &clk_branch2_ops,
2912         },
2913     },
2914 };
2915 
2916 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
2917     .halt_reg = 0x77020,
2918     .halt_check = BRANCH_HALT_DELAY,
2919     .clkr = {
2920         .enable_reg = 0x77020,
2921         .enable_mask = BIT(0),
2922         .hw.init = &(struct clk_init_data){
2923             .name = "gcc_ufs_phy_rx_symbol_0_clk",
2924             .ops = &clk_branch2_ops,
2925         },
2926     },
2927 };
2928 
2929 static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
2930     .halt_reg = 0x770b8,
2931     .halt_check = BRANCH_HALT_DELAY,
2932     .clkr = {
2933         .enable_reg = 0x770b8,
2934         .enable_mask = BIT(0),
2935         .hw.init = &(struct clk_init_data){
2936             .name = "gcc_ufs_phy_rx_symbol_1_clk",
2937             .ops = &clk_branch2_ops,
2938         },
2939     },
2940 };
2941 
2942 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
2943     .halt_reg = 0x7701c,
2944     .halt_check = BRANCH_HALT_DELAY,
2945     .clkr = {
2946         .enable_reg = 0x7701c,
2947         .enable_mask = BIT(0),
2948         .hw.init = &(struct clk_init_data){
2949             .name = "gcc_ufs_phy_tx_symbol_0_clk",
2950             .ops = &clk_branch2_ops,
2951         },
2952     },
2953 };
2954 
2955 static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
2956     .halt_reg = 0x7705c,
2957     .halt_check = BRANCH_HALT,
2958     .hwcg_reg = 0x7705c,
2959     .hwcg_bit = 1,
2960     .clkr = {
2961         .enable_reg = 0x7705c,
2962         .enable_mask = BIT(0),
2963         .hw.init = &(struct clk_init_data){
2964             .name = "gcc_ufs_phy_unipro_core_clk",
2965             .parent_hws = (const struct clk_hw*[]){
2966                 &gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
2967             },
2968             .num_parents = 1,
2969             .flags = CLK_SET_RATE_PARENT,
2970             .ops = &clk_branch2_ops,
2971         },
2972     },
2973 };
2974 
2975 static struct clk_branch gcc_usb30_prim_master_clk = {
2976     .halt_reg = 0xf010,
2977     .halt_check = BRANCH_HALT_VOTED,
2978     .clkr = {
2979         .enable_reg = 0xf010,
2980         .enable_mask = BIT(0),
2981         .hw.init = &(struct clk_init_data){
2982             .name = "gcc_usb30_prim_master_clk",
2983             .parent_hws = (const struct clk_hw*[]){
2984                 &gcc_usb30_prim_master_clk_src.clkr.hw,
2985             },
2986             .num_parents = 1,
2987             .flags = CLK_SET_RATE_PARENT,
2988             .ops = &clk_branch2_ops,
2989         },
2990     },
2991 };
2992 
2993 static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
2994     .halt_reg = 0xf01c,
2995     .halt_check = BRANCH_HALT,
2996     .clkr = {
2997         .enable_reg = 0xf01c,
2998         .enable_mask = BIT(0),
2999         .hw.init = &(struct clk_init_data){
3000             .name = "gcc_usb30_prim_mock_utmi_clk",
3001             .parent_data = &(const struct clk_parent_data){
3002                 .hw =
3003             &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,
3004             },
3005             .num_parents = 1,
3006             .flags = CLK_SET_RATE_PARENT,
3007             .ops = &clk_branch2_ops,
3008         },
3009     },
3010 };
3011 
3012 static struct clk_branch gcc_usb30_prim_sleep_clk = {
3013     .halt_reg = 0xf018,
3014     .halt_check = BRANCH_HALT,
3015     .clkr = {
3016         .enable_reg = 0xf018,
3017         .enable_mask = BIT(0),
3018         .hw.init = &(struct clk_init_data){
3019             .name = "gcc_usb30_prim_sleep_clk",
3020             .ops = &clk_branch2_ops,
3021         },
3022     },
3023 };
3024 
3025 static struct clk_branch gcc_usb30_sec_master_clk = {
3026     .halt_reg = 0x10010,
3027     .halt_check = BRANCH_HALT_VOTED,
3028     .clkr = {
3029         .enable_reg = 0x10010,
3030         .enable_mask = BIT(0),
3031         .hw.init = &(struct clk_init_data){
3032             .name = "gcc_usb30_sec_master_clk",
3033             .parent_hws = (const struct clk_hw*[]){
3034                 &gcc_usb30_sec_master_clk_src.clkr.hw,
3035             },
3036             .num_parents = 1,
3037             .flags = CLK_SET_RATE_PARENT,
3038             .ops = &clk_branch2_ops,
3039         },
3040     },
3041 };
3042 
3043 static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {
3044     .halt_reg = 0x1001c,
3045     .halt_check = BRANCH_HALT,
3046     .clkr = {
3047         .enable_reg = 0x1001c,
3048         .enable_mask = BIT(0),
3049         .hw.init = &(struct clk_init_data){
3050             .name = "gcc_usb30_sec_mock_utmi_clk",
3051             .parent_data = &(const struct clk_parent_data){
3052                 .hw =
3053             &gcc_usb30_sec_mock_utmi_postdiv_clk_src.clkr.hw,
3054             },
3055             .num_parents = 1,
3056             .flags = CLK_SET_RATE_PARENT,
3057             .ops = &clk_branch2_ops,
3058         },
3059     },
3060 };
3061 
3062 static struct clk_branch gcc_usb30_sec_sleep_clk = {
3063     .halt_reg = 0x10018,
3064     .halt_check = BRANCH_HALT,
3065     .clkr = {
3066         .enable_reg = 0x10018,
3067         .enable_mask = BIT(0),
3068         .hw.init = &(struct clk_init_data){
3069             .name = "gcc_usb30_sec_sleep_clk",
3070             .ops = &clk_branch2_ops,
3071         },
3072     },
3073 };
3074 
3075 static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
3076     .halt_reg = 0xf054,
3077     .halt_check = BRANCH_HALT,
3078     .clkr = {
3079         .enable_reg = 0xf054,
3080         .enable_mask = BIT(0),
3081         .hw.init = &(struct clk_init_data){
3082             .name = "gcc_usb3_prim_phy_aux_clk",
3083             .parent_hws = (const struct clk_hw*[]){
3084                 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3085             },
3086             .num_parents = 1,
3087             .flags = CLK_SET_RATE_PARENT,
3088             .ops = &clk_branch2_ops,
3089         },
3090     },
3091 };
3092 
3093 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
3094     .halt_reg = 0xf058,
3095     .halt_check = BRANCH_HALT,
3096     .clkr = {
3097         .enable_reg = 0xf058,
3098         .enable_mask = BIT(0),
3099         .hw.init = &(struct clk_init_data){
3100             .name = "gcc_usb3_prim_phy_com_aux_clk",
3101             .parent_hws = (const struct clk_hw*[]){
3102                 &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3103             },
3104             .num_parents = 1,
3105             .flags = CLK_SET_RATE_PARENT,
3106             .ops = &clk_branch2_ops,
3107         },
3108     },
3109 };
3110 
3111 static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
3112     .halt_reg = 0xf05c,
3113     .halt_check = BRANCH_HALT_DELAY,
3114     .clkr = {
3115         .enable_reg = 0xf05c,
3116         .enable_mask = BIT(0),
3117         .hw.init = &(struct clk_init_data){
3118             .name = "gcc_usb3_prim_phy_pipe_clk",
3119             .ops = &clk_branch2_ops,
3120         },
3121     },
3122 };
3123 
3124 static struct clk_branch gcc_usb3_sec_clkref_en = {
3125     .halt_reg = 0x8c010,
3126     .halt_check = BRANCH_HALT,
3127     .clkr = {
3128         .enable_reg = 0x8c010,
3129         .enable_mask = BIT(0),
3130         .hw.init = &(struct clk_init_data){
3131             .name = "gcc_usb3_sec_clkref_en",
3132             .ops = &clk_branch2_ops,
3133         },
3134     },
3135 };
3136 
3137 static struct clk_branch gcc_usb3_sec_phy_aux_clk = {
3138     .halt_reg = 0x10054,
3139     .halt_check = BRANCH_HALT,
3140     .clkr = {
3141         .enable_reg = 0x10054,
3142         .enable_mask = BIT(0),
3143         .hw.init = &(struct clk_init_data){
3144             .name = "gcc_usb3_sec_phy_aux_clk",
3145             .parent_hws = (const struct clk_hw*[]){
3146                 &gcc_usb3_sec_phy_aux_clk_src.clkr.hw,
3147             },
3148             .num_parents = 1,
3149             .flags = CLK_SET_RATE_PARENT,
3150             .ops = &clk_branch2_ops,
3151         },
3152     },
3153 };
3154 
3155 static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = {
3156     .halt_reg = 0x10058,
3157     .halt_check = BRANCH_HALT,
3158     .clkr = {
3159         .enable_reg = 0x10058,
3160         .enable_mask = BIT(0),
3161         .hw.init = &(struct clk_init_data){
3162             .name = "gcc_usb3_sec_phy_com_aux_clk",
3163             .parent_hws = (const struct clk_hw*[]){
3164                 &gcc_usb3_sec_phy_aux_clk_src.clkr.hw,
3165             },
3166             .num_parents = 1,
3167             .flags = CLK_SET_RATE_PARENT,
3168             .ops = &clk_branch2_ops,
3169         },
3170     },
3171 };
3172 
3173 static struct clk_branch gcc_usb3_sec_phy_pipe_clk = {
3174     .halt_reg = 0x1005c,
3175     .halt_check = BRANCH_HALT_DELAY,
3176     .clkr = {
3177         .enable_reg = 0x1005c,
3178         .enable_mask = BIT(0),
3179         .hw.init = &(struct clk_init_data){
3180             .name = "gcc_usb3_sec_phy_pipe_clk",
3181             .ops = &clk_branch2_ops,
3182         },
3183     },
3184 };
3185 
3186 static struct clk_branch gcc_video_axi0_clk = {
3187     .halt_reg = 0xb024,
3188     .halt_check = BRANCH_HALT_VOTED,
3189     .clkr = {
3190         .enable_reg = 0xb024,
3191         .enable_mask = BIT(0),
3192         .hw.init = &(struct clk_init_data){
3193             .name = "gcc_video_axi0_clk",
3194             .ops = &clk_branch2_ops,
3195         },
3196     },
3197 };
3198 
3199 static struct clk_branch gcc_video_axi1_clk = {
3200     .halt_reg = 0xb028,
3201     .halt_check = BRANCH_HALT_VOTED,
3202     .clkr = {
3203         .enable_reg = 0xb028,
3204         .enable_mask = BIT(0),
3205         .hw.init = &(struct clk_init_data){
3206             .name = "gcc_video_axi1_clk",
3207             .ops = &clk_branch2_ops,
3208         },
3209     },
3210 };
3211 
3212 static struct clk_branch gcc_video_xo_clk = {
3213     .halt_reg = 0xb03c,
3214     .halt_check = BRANCH_HALT,
3215     .clkr = {
3216         .enable_reg = 0xb03c,
3217         .enable_mask = BIT(0),
3218         .hw.init = &(struct clk_init_data){
3219             .name = "gcc_video_xo_clk",
3220             .ops = &clk_branch2_ops,
3221         },
3222     },
3223 };
3224 
3225 static struct gdsc pcie_0_gdsc = {
3226     .gdscr = 0x6b004,
3227     .pd = {
3228         .name = "pcie_0_gdsc",
3229     },
3230     .pwrsts = PWRSTS_OFF_ON,
3231 };
3232 
3233 static struct gdsc pcie_1_gdsc = {
3234     .gdscr = 0x8d004,
3235     .pd = {
3236         .name = "pcie_1_gdsc",
3237     },
3238     .pwrsts = PWRSTS_OFF_ON,
3239 };
3240 
3241 static struct gdsc pcie_2_gdsc = {
3242     .gdscr = 0x6004,
3243     .pd = {
3244         .name = "pcie_2_gdsc",
3245     },
3246     .pwrsts = PWRSTS_OFF_ON,
3247 };
3248 
3249 static struct gdsc ufs_card_gdsc = {
3250     .gdscr = 0x75004,
3251     .pd = {
3252         .name = "ufs_card_gdsc",
3253     },
3254     .pwrsts = PWRSTS_OFF_ON,
3255 };
3256 
3257 static struct gdsc ufs_phy_gdsc = {
3258     .gdscr = 0x77004,
3259     .pd = {
3260         .name = "ufs_phy_gdsc",
3261     },
3262     .pwrsts = PWRSTS_OFF_ON,
3263 };
3264 
3265 static struct gdsc usb30_prim_gdsc = {
3266     .gdscr = 0xf004,
3267     .pd = {
3268         .name = "usb30_prim_gdsc",
3269     },
3270     .pwrsts = PWRSTS_OFF_ON,
3271 };
3272 
3273 static struct gdsc usb30_sec_gdsc = {
3274     .gdscr = 0x10004,
3275     .pd = {
3276         .name = "usb30_sec_gdsc",
3277     },
3278     .pwrsts = PWRSTS_OFF_ON,
3279 };
3280 
3281 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = {
3282     .gdscr = 0x7d050,
3283     .pd = {
3284         .name = "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc",
3285     },
3286     .pwrsts = PWRSTS_OFF_ON,
3287     .flags = VOTABLE,
3288 };
3289 
3290 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc = {
3291     .gdscr = 0x7d058,
3292     .pd = {
3293         .name = "hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc",
3294     },
3295     .pwrsts = PWRSTS_OFF_ON,
3296     .flags = VOTABLE,
3297 };
3298 
3299 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc = {
3300     .gdscr = 0x7d054,
3301     .pd = {
3302         .name = "hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc",
3303     },
3304     .pwrsts = PWRSTS_OFF_ON,
3305     .flags = VOTABLE,
3306 };
3307 
3308 static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc = {
3309     .gdscr = 0x7d06c,
3310     .pd = {
3311         .name = "hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc",
3312     },
3313     .pwrsts = PWRSTS_OFF_ON,
3314     .flags = VOTABLE,
3315 };
3316 
3317 static struct clk_regmap *gcc_sm8250_clocks[] = {
3318     [GCC_AGGRE_NOC_PCIE_TBU_CLK] = &gcc_aggre_noc_pcie_tbu_clk.clkr,
3319     [GCC_AGGRE_UFS_CARD_AXI_CLK] = &gcc_aggre_ufs_card_axi_clk.clkr,
3320     [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
3321     [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
3322     [GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr,
3323     [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3324     [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
3325     [GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
3326     [GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr,
3327     [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
3328     [GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr,
3329     [GCC_CPUSS_AHB_CLK] = &gcc_cpuss_ahb_clk.clkr,
3330     [GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr,
3331     [GCC_CPUSS_AHB_POSTDIV_CLK_SRC] = &gcc_cpuss_ahb_postdiv_clk_src.clkr,
3332     [GCC_CPUSS_RBCPR_CLK] = &gcc_cpuss_rbcpr_clk.clkr,
3333     [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
3334     [GCC_DDRSS_PCIE_SF_TBU_CLK] = &gcc_ddrss_pcie_sf_tbu_clk.clkr,
3335     [GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
3336     [GCC_DISP_SF_AXI_CLK] = &gcc_disp_sf_axi_clk.clkr,
3337     [GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr,
3338     [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3339     [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3340     [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3341     [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3342     [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3343     [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
3344     [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
3345     [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
3346     [GCC_GPU_IREF_EN] = &gcc_gpu_iref_en.clkr,
3347     [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
3348     [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
3349     [GCC_NPU_AXI_CLK] = &gcc_npu_axi_clk.clkr,
3350     [GCC_NPU_BWMON_AXI_CLK] = &gcc_npu_bwmon_axi_clk.clkr,
3351     [GCC_NPU_BWMON_CFG_AHB_CLK] = &gcc_npu_bwmon_cfg_ahb_clk.clkr,
3352     [GCC_NPU_CFG_AHB_CLK] = &gcc_npu_cfg_ahb_clk.clkr,
3353     [GCC_NPU_DMA_CLK] = &gcc_npu_dma_clk.clkr,
3354     [GCC_NPU_GPLL0_CLK_SRC] = &gcc_npu_gpll0_clk_src.clkr,
3355     [GCC_NPU_GPLL0_DIV_CLK_SRC] = &gcc_npu_gpll0_div_clk_src.clkr,
3356     [GCC_PCIE0_PHY_REFGEN_CLK] = &gcc_pcie0_phy_refgen_clk.clkr,
3357     [GCC_PCIE1_PHY_REFGEN_CLK] = &gcc_pcie1_phy_refgen_clk.clkr,
3358     [GCC_PCIE2_PHY_REFGEN_CLK] = &gcc_pcie2_phy_refgen_clk.clkr,
3359     [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
3360     [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
3361     [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
3362     [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
3363     [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
3364     [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
3365     [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
3366     [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
3367     [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
3368     [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
3369     [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
3370     [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
3371     [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
3372     [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
3373     [GCC_PCIE_2_AUX_CLK] = &gcc_pcie_2_aux_clk.clkr,
3374     [GCC_PCIE_2_AUX_CLK_SRC] = &gcc_pcie_2_aux_clk_src.clkr,
3375     [GCC_PCIE_2_CFG_AHB_CLK] = &gcc_pcie_2_cfg_ahb_clk.clkr,
3376     [GCC_PCIE_2_MSTR_AXI_CLK] = &gcc_pcie_2_mstr_axi_clk.clkr,
3377     [GCC_PCIE_2_PIPE_CLK] = &gcc_pcie_2_pipe_clk.clkr,
3378     [GCC_PCIE_2_SLV_AXI_CLK] = &gcc_pcie_2_slv_axi_clk.clkr,
3379     [GCC_PCIE_2_SLV_Q2A_AXI_CLK] = &gcc_pcie_2_slv_q2a_axi_clk.clkr,
3380     [GCC_PCIE_MDM_CLKREF_EN] = &gcc_pcie_mdm_clkref_en.clkr,
3381     [GCC_PCIE_PHY_AUX_CLK] = &gcc_pcie_phy_aux_clk.clkr,
3382     [GCC_PCIE_PHY_REFGEN_CLK_SRC] = &gcc_pcie_phy_refgen_clk_src.clkr,
3383     [GCC_PCIE_WIFI_CLKREF_EN] = &gcc_pcie_wifi_clkref_en.clkr,
3384     [GCC_PCIE_WIGIG_CLKREF_EN] = &gcc_pcie_wigig_clkref_en.clkr,
3385     [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3386     [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
3387     [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3388     [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
3389     [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
3390     [GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
3391     [GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
3392     [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
3393     [GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,
3394     [GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
3395     [GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,
3396     [GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,
3397     [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
3398     [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
3399     [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
3400     [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
3401     [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
3402     [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
3403     [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
3404     [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
3405     [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
3406     [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
3407     [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
3408     [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
3409     [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
3410     [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
3411     [GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
3412     [GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
3413     [GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
3414     [GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
3415     [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
3416     [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
3417     [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
3418     [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
3419     [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
3420     [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
3421     [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
3422     [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
3423     [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
3424     [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
3425     [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
3426     [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
3427     [GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr,
3428     [GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr,
3429     [GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,
3430     [GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,
3431     [GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,
3432     [GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,
3433     [GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,
3434     [GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,
3435     [GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,
3436     [GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,
3437     [GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,
3438     [GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,
3439     [GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,
3440     [GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,
3441     [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
3442     [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
3443     [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
3444     [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
3445     [GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,
3446     [GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,
3447     [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
3448     [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
3449     [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
3450     [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
3451     [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
3452     [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
3453     [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
3454     [GCC_TSIF_INACTIVITY_TIMERS_CLK] = &gcc_tsif_inactivity_timers_clk.clkr,
3455     [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
3456     [GCC_TSIF_REF_CLK_SRC] = &gcc_tsif_ref_clk_src.clkr,
3457     [GCC_UFS_1X_CLKREF_EN] = &gcc_ufs_1x_clkref_en.clkr,
3458     [GCC_UFS_CARD_AHB_CLK] = &gcc_ufs_card_ahb_clk.clkr,
3459     [GCC_UFS_CARD_AXI_CLK] = &gcc_ufs_card_axi_clk.clkr,
3460     [GCC_UFS_CARD_AXI_CLK_SRC] = &gcc_ufs_card_axi_clk_src.clkr,
3461     [GCC_UFS_CARD_ICE_CORE_CLK] = &gcc_ufs_card_ice_core_clk.clkr,
3462     [GCC_UFS_CARD_ICE_CORE_CLK_SRC] = &gcc_ufs_card_ice_core_clk_src.clkr,
3463     [GCC_UFS_CARD_PHY_AUX_CLK] = &gcc_ufs_card_phy_aux_clk.clkr,
3464     [GCC_UFS_CARD_PHY_AUX_CLK_SRC] = &gcc_ufs_card_phy_aux_clk_src.clkr,
3465     [GCC_UFS_CARD_RX_SYMBOL_0_CLK] = &gcc_ufs_card_rx_symbol_0_clk.clkr,
3466     [GCC_UFS_CARD_RX_SYMBOL_1_CLK] = &gcc_ufs_card_rx_symbol_1_clk.clkr,
3467     [GCC_UFS_CARD_TX_SYMBOL_0_CLK] = &gcc_ufs_card_tx_symbol_0_clk.clkr,
3468     [GCC_UFS_CARD_UNIPRO_CORE_CLK] = &gcc_ufs_card_unipro_core_clk.clkr,
3469     [GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC] =
3470         &gcc_ufs_card_unipro_core_clk_src.clkr,
3471     [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
3472     [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
3473     [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
3474     [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
3475     [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
3476     [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
3477     [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
3478     [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
3479     [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
3480     [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
3481     [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
3482     [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] =
3483         &gcc_ufs_phy_unipro_core_clk_src.clkr,
3484     [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
3485     [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
3486     [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
3487     [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] =
3488         &gcc_usb30_prim_mock_utmi_clk_src.clkr,
3489     [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] =
3490         &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,
3491     [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
3492     [GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,
3493     [GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr,
3494     [GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,
3495     [GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] =
3496         &gcc_usb30_sec_mock_utmi_clk_src.clkr,
3497     [GCC_USB30_SEC_MOCK_UTMI_POSTDIV_CLK_SRC] =
3498         &gcc_usb30_sec_mock_utmi_postdiv_clk_src.clkr,
3499     [GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,
3500     [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
3501     [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
3502     [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
3503     [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
3504     [GCC_USB3_SEC_CLKREF_EN] = &gcc_usb3_sec_clkref_en.clkr,
3505     [GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr,
3506     [GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr,
3507     [GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr,
3508     [GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr,
3509     [GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
3510     [GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,
3511     [GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr,
3512     [GPLL0] = &gpll0.clkr,
3513     [GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,
3514     [GPLL4] = &gpll4.clkr,
3515     [GPLL9] = &gpll9.clkr,
3516 };
3517 
3518 static struct gdsc *gcc_sm8250_gdscs[] = {
3519     [PCIE_0_GDSC] = &pcie_0_gdsc,
3520     [PCIE_1_GDSC] = &pcie_1_gdsc,
3521     [PCIE_2_GDSC] = &pcie_2_gdsc,
3522     [UFS_CARD_GDSC] = &ufs_card_gdsc,
3523     [UFS_PHY_GDSC] = &ufs_phy_gdsc,
3524     [USB30_PRIM_GDSC] = &usb30_prim_gdsc,
3525     [USB30_SEC_GDSC] = &usb30_sec_gdsc,
3526     [HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC] =
3527                     &hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc,
3528     [HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC] =
3529                     &hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc,
3530     [HLOS1_VOTE_MMNOC_MMU_TBU_SF0_GDSC] =
3531                     &hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc,
3532     [HLOS1_VOTE_MMNOC_MMU_TBU_SF1_GDSC] =
3533                     &hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc,
3534 };
3535 
3536 static const struct qcom_reset_map gcc_sm8250_resets[] = {
3537     [GCC_GPU_BCR] = { 0x71000 },
3538     [GCC_MMSS_BCR] = { 0xb000 },
3539     [GCC_NPU_BWMON_BCR] = { 0x73000 },
3540     [GCC_NPU_BCR] = { 0x4d000 },
3541     [GCC_PCIE_0_BCR] = { 0x6b000 },
3542     [GCC_PCIE_0_LINK_DOWN_BCR] = { 0x6c014 },
3543     [GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x6c020 },
3544     [GCC_PCIE_0_PHY_BCR] = { 0x6c01c },
3545     [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x6c028 },
3546     [GCC_PCIE_1_BCR] = { 0x8d000 },
3547     [GCC_PCIE_1_LINK_DOWN_BCR] = { 0x8e014 },
3548     [GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x8e020 },
3549     [GCC_PCIE_1_PHY_BCR] = { 0x8e01c },
3550     [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x8e000 },
3551     [GCC_PCIE_2_BCR] = { 0x6000 },
3552     [GCC_PCIE_2_LINK_DOWN_BCR] = { 0x1f014 },
3553     [GCC_PCIE_2_NOCSR_COM_PHY_BCR] = { 0x1f020 },
3554     [GCC_PCIE_2_PHY_BCR] = { 0x1f01c },
3555     [GCC_PCIE_2_PHY_NOCSR_COM_PHY_BCR] = { 0x1f028 },
3556     [GCC_PCIE_PHY_BCR] = { 0x6f000 },
3557     [GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x6f00c },
3558     [GCC_PCIE_PHY_COM_BCR] = { 0x6f010 },
3559     [GCC_PDM_BCR] = { 0x33000 },
3560     [GCC_PRNG_BCR] = { 0x34000 },
3561     [GCC_QUPV3_WRAPPER_0_BCR] = { 0x17000 },
3562     [GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 },
3563     [GCC_QUPV3_WRAPPER_2_BCR] = { 0x1e000 },
3564     [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
3565     [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
3566     [GCC_SDCC2_BCR] = { 0x14000 },
3567     [GCC_SDCC4_BCR] = { 0x16000 },
3568     [GCC_TSIF_BCR] = { 0x36000 },
3569     [GCC_UFS_CARD_BCR] = { 0x75000 },
3570     [GCC_UFS_PHY_BCR] = { 0x77000 },
3571     [GCC_USB30_PRIM_BCR] = { 0xf000 },
3572     [GCC_USB30_SEC_BCR] = { 0x10000 },
3573     [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 },
3574     [GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 },
3575     [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 },
3576     [GCC_USB3_PHY_SEC_BCR] = { 0x5000c },
3577     [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 },
3578     [GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 },
3579     [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 },
3580     [GCC_VIDEO_AXI0_CLK_ARES] = { 0xb024, 2 },
3581     [GCC_VIDEO_AXI1_CLK_ARES] = { 0xb028, 2 },
3582 };
3583 
3584 static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
3585     DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
3586     DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
3587     DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
3588     DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
3589     DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
3590     DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
3591     DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src),
3592     DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src),
3593     DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
3594     DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
3595     DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
3596     DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
3597     DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
3598     DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
3599     DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src),
3600     DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src),
3601     DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src),
3602     DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src),
3603     DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src),
3604     DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src),
3605 };
3606 
3607 static const struct regmap_config gcc_sm8250_regmap_config = {
3608     .reg_bits = 32,
3609     .reg_stride = 4,
3610     .val_bits = 32,
3611     .max_register = 0x9c100,
3612     .fast_io = true,
3613 };
3614 
3615 static const struct qcom_cc_desc gcc_sm8250_desc = {
3616     .config = &gcc_sm8250_regmap_config,
3617     .clks = gcc_sm8250_clocks,
3618     .num_clks = ARRAY_SIZE(gcc_sm8250_clocks),
3619     .resets = gcc_sm8250_resets,
3620     .num_resets = ARRAY_SIZE(gcc_sm8250_resets),
3621     .gdscs = gcc_sm8250_gdscs,
3622     .num_gdscs = ARRAY_SIZE(gcc_sm8250_gdscs),
3623 };
3624 
3625 static const struct of_device_id gcc_sm8250_match_table[] = {
3626     { .compatible = "qcom,gcc-sm8250" },
3627     { }
3628 };
3629 MODULE_DEVICE_TABLE(of, gcc_sm8250_match_table);
3630 
3631 static int gcc_sm8250_probe(struct platform_device *pdev)
3632 {
3633     struct regmap *regmap;
3634     int ret;
3635 
3636     regmap = qcom_cc_map(pdev, &gcc_sm8250_desc);
3637     if (IS_ERR(regmap))
3638         return PTR_ERR(regmap);
3639 
3640     /*
3641      * Disable the GPLL0 active input to NPU and GPU
3642      * via MISC registers.
3643      */
3644     regmap_update_bits(regmap, 0x4d110, 0x3, 0x3);
3645     regmap_update_bits(regmap, 0x71028, 0x3, 0x3);
3646 
3647     /*
3648      * Keep the clocks always-ON
3649      * GCC_VIDEO_AHB_CLK, GCC_CAMERA_AHB_CLK, GCC_DISP_AHB_CLK,
3650      * GCC_CPUSS_DVM_BUS_CLK, GCC_GPU_CFG_AHB_CLK,
3651      * GCC_SYS_NOC_CPUSS_AHB_CLK
3652      */
3653     regmap_update_bits(regmap, 0x0b004, BIT(0), BIT(0));
3654     regmap_update_bits(regmap, 0x0b008, BIT(0), BIT(0));
3655     regmap_update_bits(regmap, 0x0b00c, BIT(0), BIT(0));
3656     regmap_update_bits(regmap, 0x4818c, BIT(0), BIT(0));
3657     regmap_update_bits(regmap, 0x71004, BIT(0), BIT(0));
3658     regmap_update_bits(regmap, 0x52000, BIT(0), BIT(0));
3659 
3660     ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,
3661                        ARRAY_SIZE(gcc_dfs_clocks));
3662     if (ret)
3663         return ret;
3664 
3665     return qcom_cc_really_probe(pdev, &gcc_sm8250_desc, regmap);
3666 }
3667 
3668 static struct platform_driver gcc_sm8250_driver = {
3669     .probe = gcc_sm8250_probe,
3670     .driver = {
3671         .name = "gcc-sm8250",
3672         .of_match_table = gcc_sm8250_match_table,
3673     },
3674 };
3675 
3676 static int __init gcc_sm8250_init(void)
3677 {
3678     return platform_driver_register(&gcc_sm8250_driver);
3679 }
3680 subsys_initcall(gcc_sm8250_init);
3681 
3682 static void __exit gcc_sm8250_exit(void)
3683 {
3684     platform_driver_unregister(&gcc_sm8250_driver);
3685 }
3686 module_exit(gcc_sm8250_exit);
3687 
3688 MODULE_DESCRIPTION("QTI GCC SM8250 Driver");
3689 MODULE_LICENSE("GPL v2");