0001
0002
0003
0004
0005
0006
0007 #include <linux/clk-provider.h>
0008 #include <linux/module.h>
0009 #include <linux/of_device.h>
0010 #include <linux/regmap.h>
0011
0012 #include <dt-bindings/clock/qcom,gcc-sm8450.h>
0013
0014 #include "clk-alpha-pll.h"
0015 #include "clk-branch.h"
0016 #include "clk-rcg.h"
0017 #include "clk-regmap.h"
0018 #include "clk-regmap-divider.h"
0019 #include "clk-regmap-mux.h"
0020 #include "clk-regmap-phy-mux.h"
0021 #include "gdsc.h"
0022 #include "reset.h"
0023
0024 enum {
0025 P_BI_TCXO,
0026 P_GCC_GPLL0_OUT_EVEN,
0027 P_GCC_GPLL0_OUT_MAIN,
0028 P_GCC_GPLL4_OUT_MAIN,
0029 P_GCC_GPLL9_OUT_MAIN,
0030 P_PCIE_1_PHY_AUX_CLK,
0031 P_SLEEP_CLK,
0032 P_UFS_PHY_RX_SYMBOL_0_CLK,
0033 P_UFS_PHY_RX_SYMBOL_1_CLK,
0034 P_UFS_PHY_TX_SYMBOL_0_CLK,
0035 P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
0036 };
0037
0038 static struct clk_alpha_pll gcc_gpll0 = {
0039 .offset = 0x0,
0040 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
0041 .clkr = {
0042 .enable_reg = 0x62018,
0043 .enable_mask = BIT(0),
0044 .hw.init = &(struct clk_init_data){
0045 .name = "gcc_gpll0",
0046 .parent_data = &(const struct clk_parent_data){
0047 .fw_name = "bi_tcxo",
0048 },
0049 .num_parents = 1,
0050 .ops = &clk_alpha_pll_fixed_lucid_evo_ops,
0051 },
0052 },
0053 };
0054
0055 static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = {
0056 { 0x1, 2 },
0057 { }
0058 };
0059
0060 static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = {
0061 .offset = 0x0,
0062 .post_div_shift = 10,
0063 .post_div_table = post_div_table_gcc_gpll0_out_even,
0064 .num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even),
0065 .width = 4,
0066 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
0067 .clkr.hw.init = &(struct clk_init_data){
0068 .name = "gcc_gpll0_out_even",
0069 .parent_data = &(const struct clk_parent_data){
0070 .hw = &gcc_gpll0.clkr.hw,
0071 },
0072 .num_parents = 1,
0073 .ops = &clk_alpha_pll_postdiv_lucid_evo_ops,
0074 },
0075 };
0076
0077 static struct clk_alpha_pll gcc_gpll4 = {
0078 .offset = 0x4000,
0079 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
0080 .clkr = {
0081 .enable_reg = 0x62018,
0082 .enable_mask = BIT(4),
0083 .hw.init = &(struct clk_init_data){
0084 .name = "gcc_gpll4",
0085 .parent_data = &(const struct clk_parent_data){
0086 .fw_name = "bi_tcxo",
0087 },
0088 .num_parents = 1,
0089 .ops = &clk_alpha_pll_fixed_lucid_evo_ops,
0090 },
0091 },
0092 };
0093
0094 static struct clk_alpha_pll gcc_gpll9 = {
0095 .offset = 0x9000,
0096 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
0097 .clkr = {
0098 .enable_reg = 0x62018,
0099 .enable_mask = BIT(9),
0100 .hw.init = &(struct clk_init_data){
0101 .name = "gcc_gpll9",
0102 .parent_data = &(const struct clk_parent_data){
0103 .fw_name = "bi_tcxo",
0104 },
0105 .num_parents = 1,
0106 .ops = &clk_alpha_pll_fixed_lucid_evo_ops,
0107 },
0108 },
0109 };
0110
0111 static const struct parent_map gcc_parent_map_0[] = {
0112 { P_BI_TCXO, 0 },
0113 { P_GCC_GPLL0_OUT_MAIN, 1 },
0114 { P_GCC_GPLL0_OUT_EVEN, 6 },
0115 };
0116
0117 static const struct clk_parent_data gcc_parent_data_0[] = {
0118 { .fw_name = "bi_tcxo" },
0119 { .hw = &gcc_gpll0.clkr.hw },
0120 { .hw = &gcc_gpll0_out_even.clkr.hw },
0121 };
0122
0123 static const struct parent_map gcc_parent_map_1[] = {
0124 { P_BI_TCXO, 0 },
0125 { P_GCC_GPLL0_OUT_MAIN, 1 },
0126 { P_SLEEP_CLK, 5 },
0127 { P_GCC_GPLL0_OUT_EVEN, 6 },
0128 };
0129
0130 static const struct clk_parent_data gcc_parent_data_1[] = {
0131 { .fw_name = "bi_tcxo" },
0132 { .hw = &gcc_gpll0.clkr.hw },
0133 { .fw_name = "sleep_clk" },
0134 { .hw = &gcc_gpll0_out_even.clkr.hw },
0135 };
0136
0137 static const struct parent_map gcc_parent_map_2[] = {
0138 { P_BI_TCXO, 0 },
0139 { P_SLEEP_CLK, 5 },
0140 };
0141
0142 static const struct clk_parent_data gcc_parent_data_2[] = {
0143 { .fw_name = "bi_tcxo" },
0144 { .fw_name = "sleep_clk" },
0145 };
0146
0147 static const struct parent_map gcc_parent_map_3[] = {
0148 { P_BI_TCXO, 0 },
0149 };
0150
0151 static const struct clk_parent_data gcc_parent_data_3[] = {
0152 { .fw_name = "bi_tcxo" },
0153 };
0154
0155 static const struct parent_map gcc_parent_map_5[] = {
0156 { P_PCIE_1_PHY_AUX_CLK, 0 },
0157 { P_BI_TCXO, 2 },
0158 };
0159
0160 static const struct clk_parent_data gcc_parent_data_5[] = {
0161 { .fw_name = "pcie_1_phy_aux_clk" },
0162 { .fw_name = "bi_tcxo" },
0163 };
0164
0165 static const struct parent_map gcc_parent_map_7[] = {
0166 { P_BI_TCXO, 0 },
0167 { P_GCC_GPLL0_OUT_MAIN, 1 },
0168 { P_GCC_GPLL9_OUT_MAIN, 2 },
0169 { P_GCC_GPLL4_OUT_MAIN, 5 },
0170 { P_GCC_GPLL0_OUT_EVEN, 6 },
0171 };
0172
0173 static const struct clk_parent_data gcc_parent_data_7[] = {
0174 { .fw_name = "bi_tcxo" },
0175 { .hw = &gcc_gpll0.clkr.hw },
0176 { .hw = &gcc_gpll9.clkr.hw },
0177 { .hw = &gcc_gpll4.clkr.hw },
0178 { .hw = &gcc_gpll0_out_even.clkr.hw },
0179 };
0180
0181 static const struct parent_map gcc_parent_map_8[] = {
0182 { P_UFS_PHY_RX_SYMBOL_0_CLK, 0 },
0183 { P_BI_TCXO, 2 },
0184 };
0185
0186 static const struct clk_parent_data gcc_parent_data_8[] = {
0187 { .fw_name = "ufs_phy_rx_symbol_0_clk" },
0188 { .fw_name = "bi_tcxo" },
0189 };
0190
0191 static const struct parent_map gcc_parent_map_9[] = {
0192 { P_UFS_PHY_RX_SYMBOL_1_CLK, 0 },
0193 { P_BI_TCXO, 2 },
0194 };
0195
0196 static const struct clk_parent_data gcc_parent_data_9[] = {
0197 { .fw_name = "ufs_phy_rx_symbol_1_clk" },
0198 { .fw_name = "bi_tcxo" },
0199 };
0200
0201 static const struct parent_map gcc_parent_map_10[] = {
0202 { P_UFS_PHY_TX_SYMBOL_0_CLK, 0 },
0203 { P_BI_TCXO, 2 },
0204 };
0205
0206 static const struct clk_parent_data gcc_parent_data_10[] = {
0207 { .fw_name = "ufs_phy_tx_symbol_0_clk" },
0208 { .fw_name = "bi_tcxo" },
0209 };
0210
0211 static const struct parent_map gcc_parent_map_11[] = {
0212 { P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 0 },
0213 { P_BI_TCXO, 2 },
0214 };
0215
0216 static const struct clk_parent_data gcc_parent_data_11[] = {
0217 { .fw_name = "usb3_phy_wrapper_gcc_usb30_pipe_clk" },
0218 { .fw_name = "bi_tcxo" },
0219 };
0220
0221 static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src = {
0222 .reg = 0x7b060,
0223 .clkr = {
0224 .hw.init = &(struct clk_init_data){
0225 .name = "gcc_pcie_0_pipe_clk_src",
0226 .parent_data = &(const struct clk_parent_data){
0227 .fw_name = "pcie_0_pipe_clk",
0228 },
0229 .num_parents = 1,
0230 .ops = &clk_regmap_phy_mux_ops,
0231 },
0232 },
0233 };
0234
0235 static struct clk_regmap_mux gcc_pcie_1_phy_aux_clk_src = {
0236 .reg = 0x9d080,
0237 .shift = 0,
0238 .width = 2,
0239 .parent_map = gcc_parent_map_5,
0240 .clkr = {
0241 .hw.init = &(struct clk_init_data){
0242 .name = "gcc_pcie_1_phy_aux_clk_src",
0243 .parent_data = gcc_parent_data_5,
0244 .num_parents = ARRAY_SIZE(gcc_parent_data_5),
0245 .ops = &clk_regmap_mux_closest_ops,
0246 },
0247 },
0248 };
0249
0250 static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = {
0251 .reg = 0x9d064,
0252 .clkr = {
0253 .hw.init = &(struct clk_init_data){
0254 .name = "gcc_pcie_1_pipe_clk_src",
0255 .parent_data = &(const struct clk_parent_data){
0256 .fw_name = "pcie_1_pipe_clk",
0257 },
0258 .num_parents = 1,
0259 .ops = &clk_regmap_phy_mux_ops,
0260 },
0261 },
0262 };
0263
0264 static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src = {
0265 .reg = 0x87060,
0266 .shift = 0,
0267 .width = 2,
0268 .parent_map = gcc_parent_map_8,
0269 .clkr = {
0270 .hw.init = &(struct clk_init_data){
0271 .name = "gcc_ufs_phy_rx_symbol_0_clk_src",
0272 .parent_data = gcc_parent_data_8,
0273 .num_parents = ARRAY_SIZE(gcc_parent_data_8),
0274 .ops = &clk_regmap_mux_closest_ops,
0275 },
0276 },
0277 };
0278
0279 static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src = {
0280 .reg = 0x870d0,
0281 .shift = 0,
0282 .width = 2,
0283 .parent_map = gcc_parent_map_9,
0284 .clkr = {
0285 .hw.init = &(struct clk_init_data){
0286 .name = "gcc_ufs_phy_rx_symbol_1_clk_src",
0287 .parent_data = gcc_parent_data_9,
0288 .num_parents = ARRAY_SIZE(gcc_parent_data_9),
0289 .ops = &clk_regmap_mux_closest_ops,
0290 },
0291 },
0292 };
0293
0294 static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src = {
0295 .reg = 0x87050,
0296 .shift = 0,
0297 .width = 2,
0298 .parent_map = gcc_parent_map_10,
0299 .clkr = {
0300 .hw.init = &(struct clk_init_data){
0301 .name = "gcc_ufs_phy_tx_symbol_0_clk_src",
0302 .parent_data = gcc_parent_data_10,
0303 .num_parents = ARRAY_SIZE(gcc_parent_data_10),
0304 .ops = &clk_regmap_mux_closest_ops,
0305 },
0306 },
0307 };
0308
0309 static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = {
0310 .reg = 0x49068,
0311 .shift = 0,
0312 .width = 2,
0313 .parent_map = gcc_parent_map_11,
0314 .clkr = {
0315 .hw.init = &(struct clk_init_data){
0316 .name = "gcc_usb3_prim_phy_pipe_clk_src",
0317 .parent_data = gcc_parent_data_11,
0318 .num_parents = ARRAY_SIZE(gcc_parent_data_11),
0319 .ops = &clk_regmap_mux_closest_ops,
0320 },
0321 },
0322 };
0323
0324 static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
0325 F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
0326 F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
0327 F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
0328 { }
0329 };
0330
0331 static struct clk_rcg2 gcc_gp1_clk_src = {
0332 .cmd_rcgr = 0x74004,
0333 .mnd_width = 8,
0334 .hid_width = 5,
0335 .parent_map = gcc_parent_map_1,
0336 .freq_tbl = ftbl_gcc_gp1_clk_src,
0337 .clkr.hw.init = &(struct clk_init_data){
0338 .name = "gcc_gp1_clk_src",
0339 .parent_data = gcc_parent_data_1,
0340 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
0341 .flags = CLK_SET_RATE_PARENT,
0342 .ops = &clk_rcg2_ops,
0343 },
0344 };
0345
0346 static struct clk_rcg2 gcc_gp2_clk_src = {
0347 .cmd_rcgr = 0x75004,
0348 .mnd_width = 8,
0349 .hid_width = 5,
0350 .parent_map = gcc_parent_map_1,
0351 .freq_tbl = ftbl_gcc_gp1_clk_src,
0352 .clkr.hw.init = &(struct clk_init_data){
0353 .name = "gcc_gp2_clk_src",
0354 .parent_data = gcc_parent_data_1,
0355 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
0356 .flags = CLK_SET_RATE_PARENT,
0357 .ops = &clk_rcg2_ops,
0358 },
0359 };
0360
0361 static struct clk_rcg2 gcc_gp3_clk_src = {
0362 .cmd_rcgr = 0x76004,
0363 .mnd_width = 8,
0364 .hid_width = 5,
0365 .parent_map = gcc_parent_map_1,
0366 .freq_tbl = ftbl_gcc_gp1_clk_src,
0367 .clkr.hw.init = &(struct clk_init_data){
0368 .name = "gcc_gp3_clk_src",
0369 .parent_data = gcc_parent_data_1,
0370 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
0371 .flags = CLK_SET_RATE_PARENT,
0372 .ops = &clk_rcg2_ops,
0373 },
0374 };
0375
0376 static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
0377 F(19200000, P_BI_TCXO, 1, 0, 0),
0378 { }
0379 };
0380
0381 static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
0382 .cmd_rcgr = 0x7b064,
0383 .mnd_width = 16,
0384 .hid_width = 5,
0385 .parent_map = gcc_parent_map_2,
0386 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
0387 .clkr.hw.init = &(struct clk_init_data){
0388 .name = "gcc_pcie_0_aux_clk_src",
0389 .parent_data = gcc_parent_data_2,
0390 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
0391 .flags = CLK_SET_RATE_PARENT,
0392 .ops = &clk_rcg2_ops,
0393 },
0394 };
0395
0396 static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = {
0397 F(19200000, P_BI_TCXO, 1, 0, 0),
0398 F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
0399 { }
0400 };
0401
0402 static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = {
0403 .cmd_rcgr = 0x7b048,
0404 .mnd_width = 0,
0405 .hid_width = 5,
0406 .parent_map = gcc_parent_map_0,
0407 .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
0408 .clkr.hw.init = &(struct clk_init_data){
0409 .name = "gcc_pcie_0_phy_rchng_clk_src",
0410 .parent_data = gcc_parent_data_0,
0411 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0412 .flags = CLK_SET_RATE_PARENT,
0413 .ops = &clk_rcg2_ops,
0414 },
0415 };
0416
0417 static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
0418 .cmd_rcgr = 0x9d068,
0419 .mnd_width = 16,
0420 .hid_width = 5,
0421 .parent_map = gcc_parent_map_2,
0422 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
0423 .clkr.hw.init = &(struct clk_init_data){
0424 .name = "gcc_pcie_1_aux_clk_src",
0425 .parent_data = gcc_parent_data_2,
0426 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
0427 .flags = CLK_SET_RATE_PARENT,
0428 .ops = &clk_rcg2_ops,
0429 },
0430 };
0431
0432 static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = {
0433 .cmd_rcgr = 0x9d04c,
0434 .mnd_width = 0,
0435 .hid_width = 5,
0436 .parent_map = gcc_parent_map_0,
0437 .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
0438 .clkr.hw.init = &(struct clk_init_data){
0439 .name = "gcc_pcie_1_phy_rchng_clk_src",
0440 .parent_data = gcc_parent_data_0,
0441 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0442 .flags = CLK_SET_RATE_PARENT,
0443 .ops = &clk_rcg2_ops,
0444 },
0445 };
0446
0447 static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
0448 F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0),
0449 { }
0450 };
0451
0452 static struct clk_rcg2 gcc_pdm2_clk_src = {
0453 .cmd_rcgr = 0x43010,
0454 .mnd_width = 0,
0455 .hid_width = 5,
0456 .parent_map = gcc_parent_map_0,
0457 .freq_tbl = ftbl_gcc_pdm2_clk_src,
0458 .clkr.hw.init = &(struct clk_init_data){
0459 .name = "gcc_pdm2_clk_src",
0460 .parent_data = gcc_parent_data_0,
0461 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0462 .flags = CLK_SET_RATE_PARENT,
0463 .ops = &clk_rcg2_ops,
0464 },
0465 };
0466
0467 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
0468 F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
0469 F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
0470 F(19200000, P_BI_TCXO, 1, 0, 0),
0471 F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
0472 F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
0473 F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
0474 F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
0475 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
0476 F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
0477 F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
0478 F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
0479 { }
0480 };
0481
0482 static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {
0483 .name = "gcc_qupv3_wrap0_s0_clk_src",
0484 .parent_data = gcc_parent_data_0,
0485 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0486 .flags = CLK_SET_RATE_PARENT,
0487 .ops = &clk_rcg2_ops,
0488 };
0489
0490 static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
0491 .cmd_rcgr = 0x27014,
0492 .mnd_width = 16,
0493 .hid_width = 5,
0494 .parent_map = gcc_parent_map_0,
0495 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0496 .clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,
0497 };
0498
0499 static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {
0500 .name = "gcc_qupv3_wrap0_s1_clk_src",
0501 .parent_data = gcc_parent_data_0,
0502 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0503 .flags = CLK_SET_RATE_PARENT,
0504 .ops = &clk_rcg2_ops,
0505 };
0506
0507 static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
0508 .cmd_rcgr = 0x27148,
0509 .mnd_width = 16,
0510 .hid_width = 5,
0511 .parent_map = gcc_parent_map_0,
0512 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0513 .clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,
0514 };
0515
0516 static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {
0517 .name = "gcc_qupv3_wrap0_s2_clk_src",
0518 .parent_data = gcc_parent_data_0,
0519 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0520 .flags = CLK_SET_RATE_PARENT,
0521 .ops = &clk_rcg2_ops,
0522 };
0523
0524 static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
0525 .cmd_rcgr = 0x2727c,
0526 .mnd_width = 16,
0527 .hid_width = 5,
0528 .parent_map = gcc_parent_map_0,
0529 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0530 .clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,
0531 };
0532
0533 static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {
0534 .name = "gcc_qupv3_wrap0_s3_clk_src",
0535 .parent_data = gcc_parent_data_0,
0536 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0537 .flags = CLK_SET_RATE_PARENT,
0538 .ops = &clk_rcg2_ops,
0539 };
0540
0541 static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
0542 .cmd_rcgr = 0x273b0,
0543 .mnd_width = 16,
0544 .hid_width = 5,
0545 .parent_map = gcc_parent_map_0,
0546 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0547 .clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,
0548 };
0549
0550 static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {
0551 .name = "gcc_qupv3_wrap0_s4_clk_src",
0552 .parent_data = gcc_parent_data_0,
0553 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0554 .flags = CLK_SET_RATE_PARENT,
0555 .ops = &clk_rcg2_ops,
0556 };
0557
0558 static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
0559 .cmd_rcgr = 0x274e4,
0560 .mnd_width = 16,
0561 .hid_width = 5,
0562 .parent_map = gcc_parent_map_0,
0563 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0564 .clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,
0565 };
0566
0567 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s5_clk_src[] = {
0568 F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
0569 F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
0570 F(19200000, P_BI_TCXO, 1, 0, 0),
0571 F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
0572 F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
0573 F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0),
0574 F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
0575 F(50000000, P_GCC_GPLL0_OUT_MAIN, 12, 0, 0),
0576 { }
0577 };
0578
0579 static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {
0580 .name = "gcc_qupv3_wrap0_s5_clk_src",
0581 .parent_data = gcc_parent_data_0,
0582 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0583 .flags = CLK_SET_RATE_PARENT,
0584 .ops = &clk_rcg2_ops,
0585 };
0586
0587 static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
0588 .cmd_rcgr = 0x27618,
0589 .mnd_width = 16,
0590 .hid_width = 5,
0591 .parent_map = gcc_parent_map_0,
0592 .freq_tbl = ftbl_gcc_qupv3_wrap0_s5_clk_src,
0593 .clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,
0594 };
0595
0596 static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = {
0597 .name = "gcc_qupv3_wrap0_s6_clk_src",
0598 .parent_data = gcc_parent_data_0,
0599 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0600 .flags = CLK_SET_RATE_PARENT,
0601 .ops = &clk_rcg2_ops,
0602 };
0603
0604 static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
0605 .cmd_rcgr = 0x2774c,
0606 .mnd_width = 16,
0607 .hid_width = 5,
0608 .parent_map = gcc_parent_map_0,
0609 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0610 .clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init,
0611 };
0612
0613 static struct clk_init_data gcc_qupv3_wrap0_s7_clk_src_init = {
0614 .name = "gcc_qupv3_wrap0_s7_clk_src",
0615 .parent_data = gcc_parent_data_0,
0616 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0617 .flags = CLK_SET_RATE_PARENT,
0618 .ops = &clk_rcg2_ops,
0619 };
0620
0621 static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
0622 .cmd_rcgr = 0x27880,
0623 .mnd_width = 16,
0624 .hid_width = 5,
0625 .parent_map = gcc_parent_map_0,
0626 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0627 .clkr.hw.init = &gcc_qupv3_wrap0_s7_clk_src_init,
0628 };
0629
0630 static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s0_clk_src[] = {
0631 F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
0632 F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
0633 F(19200000, P_BI_TCXO, 1, 0, 0),
0634 F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
0635 F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
0636 F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
0637 F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
0638 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
0639 F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
0640 F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
0641 F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
0642 F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375),
0643 F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75),
0644 F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625),
0645 F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
0646 { }
0647 };
0648
0649 static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
0650 .name = "gcc_qupv3_wrap1_s0_clk_src",
0651 .parent_data = gcc_parent_data_0,
0652 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0653 .flags = CLK_SET_RATE_PARENT,
0654 .ops = &clk_rcg2_ops,
0655 };
0656
0657 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
0658 .cmd_rcgr = 0x28014,
0659 .mnd_width = 16,
0660 .hid_width = 5,
0661 .parent_map = gcc_parent_map_0,
0662 .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
0663 .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
0664 };
0665
0666 static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
0667 .name = "gcc_qupv3_wrap1_s1_clk_src",
0668 .parent_data = gcc_parent_data_0,
0669 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0670 .flags = CLK_SET_RATE_PARENT,
0671 .ops = &clk_rcg2_ops,
0672 };
0673
0674 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
0675 .cmd_rcgr = 0x28148,
0676 .mnd_width = 16,
0677 .hid_width = 5,
0678 .parent_map = gcc_parent_map_0,
0679 .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
0680 .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
0681 };
0682
0683 static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {
0684 .name = "gcc_qupv3_wrap1_s2_clk_src",
0685 .parent_data = gcc_parent_data_0,
0686 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0687 .flags = CLK_SET_RATE_PARENT,
0688 .ops = &clk_rcg2_ops,
0689 };
0690
0691 static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
0692 .cmd_rcgr = 0x2827c,
0693 .mnd_width = 16,
0694 .hid_width = 5,
0695 .parent_map = gcc_parent_map_0,
0696 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0697 .clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,
0698 };
0699
0700 static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
0701 .name = "gcc_qupv3_wrap1_s3_clk_src",
0702 .parent_data = gcc_parent_data_0,
0703 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0704 .flags = CLK_SET_RATE_PARENT,
0705 .ops = &clk_rcg2_ops,
0706 };
0707
0708 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
0709 .cmd_rcgr = 0x283b0,
0710 .mnd_width = 16,
0711 .hid_width = 5,
0712 .parent_map = gcc_parent_map_0,
0713 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0714 .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
0715 };
0716
0717 static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
0718 .name = "gcc_qupv3_wrap1_s4_clk_src",
0719 .parent_data = gcc_parent_data_0,
0720 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0721 .flags = CLK_SET_RATE_PARENT,
0722 .ops = &clk_rcg2_ops,
0723 };
0724
0725 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
0726 .cmd_rcgr = 0x284e4,
0727 .mnd_width = 16,
0728 .hid_width = 5,
0729 .parent_map = gcc_parent_map_0,
0730 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0731 .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
0732 };
0733
0734 static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
0735 .name = "gcc_qupv3_wrap1_s5_clk_src",
0736 .parent_data = gcc_parent_data_0,
0737 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0738 .flags = CLK_SET_RATE_PARENT,
0739 .ops = &clk_rcg2_ops,
0740 };
0741
0742 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
0743 .cmd_rcgr = 0x28618,
0744 .mnd_width = 16,
0745 .hid_width = 5,
0746 .parent_map = gcc_parent_map_0,
0747 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0748 .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
0749 };
0750
0751 static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {
0752 .name = "gcc_qupv3_wrap1_s6_clk_src",
0753 .parent_data = gcc_parent_data_0,
0754 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0755 .flags = CLK_SET_RATE_PARENT,
0756 .ops = &clk_rcg2_ops,
0757 };
0758
0759 static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {
0760 .cmd_rcgr = 0x2874c,
0761 .mnd_width = 16,
0762 .hid_width = 5,
0763 .parent_map = gcc_parent_map_0,
0764 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0765 .clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,
0766 };
0767
0768 static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = {
0769 .name = "gcc_qupv3_wrap2_s0_clk_src",
0770 .parent_data = gcc_parent_data_0,
0771 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0772 .flags = CLK_SET_RATE_PARENT,
0773 .ops = &clk_rcg2_ops,
0774 };
0775
0776 static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
0777 .cmd_rcgr = 0x2e014,
0778 .mnd_width = 16,
0779 .hid_width = 5,
0780 .parent_map = gcc_parent_map_0,
0781 .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
0782 .clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init,
0783 };
0784
0785 static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = {
0786 .name = "gcc_qupv3_wrap2_s1_clk_src",
0787 .parent_data = gcc_parent_data_0,
0788 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0789 .flags = CLK_SET_RATE_PARENT,
0790 .ops = &clk_rcg2_ops,
0791 };
0792
0793 static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
0794 .cmd_rcgr = 0x2e148,
0795 .mnd_width = 16,
0796 .hid_width = 5,
0797 .parent_map = gcc_parent_map_0,
0798 .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
0799 .clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init,
0800 };
0801
0802 static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = {
0803 .name = "gcc_qupv3_wrap2_s2_clk_src",
0804 .parent_data = gcc_parent_data_0,
0805 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0806 .flags = CLK_SET_RATE_PARENT,
0807 .ops = &clk_rcg2_ops,
0808 };
0809
0810 static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
0811 .cmd_rcgr = 0x2e27c,
0812 .mnd_width = 16,
0813 .hid_width = 5,
0814 .parent_map = gcc_parent_map_0,
0815 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0816 .clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init,
0817 };
0818
0819 static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = {
0820 .name = "gcc_qupv3_wrap2_s3_clk_src",
0821 .parent_data = gcc_parent_data_0,
0822 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0823 .flags = CLK_SET_RATE_PARENT,
0824 .ops = &clk_rcg2_ops,
0825 };
0826
0827 static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
0828 .cmd_rcgr = 0x2e3b0,
0829 .mnd_width = 16,
0830 .hid_width = 5,
0831 .parent_map = gcc_parent_map_0,
0832 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0833 .clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init,
0834 };
0835
0836 static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = {
0837 .name = "gcc_qupv3_wrap2_s4_clk_src",
0838 .parent_data = gcc_parent_data_0,
0839 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0840 .flags = CLK_SET_RATE_PARENT,
0841 .ops = &clk_rcg2_ops,
0842 };
0843
0844 static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
0845 .cmd_rcgr = 0x2e4e4,
0846 .mnd_width = 16,
0847 .hid_width = 5,
0848 .parent_map = gcc_parent_map_0,
0849 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0850 .clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init,
0851 };
0852
0853 static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = {
0854 .name = "gcc_qupv3_wrap2_s5_clk_src",
0855 .parent_data = gcc_parent_data_0,
0856 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0857 .flags = CLK_SET_RATE_PARENT,
0858 .ops = &clk_rcg2_ops,
0859 };
0860
0861 static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {
0862 .cmd_rcgr = 0x2e618,
0863 .mnd_width = 16,
0864 .hid_width = 5,
0865 .parent_map = gcc_parent_map_0,
0866 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0867 .clkr.hw.init = &gcc_qupv3_wrap2_s5_clk_src_init,
0868 };
0869
0870 static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init = {
0871 .name = "gcc_qupv3_wrap2_s6_clk_src",
0872 .parent_data = gcc_parent_data_0,
0873 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0874 .flags = CLK_SET_RATE_PARENT,
0875 .ops = &clk_rcg2_ops,
0876 };
0877
0878 static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src = {
0879 .cmd_rcgr = 0x2e74c,
0880 .mnd_width = 16,
0881 .hid_width = 5,
0882 .parent_map = gcc_parent_map_0,
0883 .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
0884 .clkr.hw.init = &gcc_qupv3_wrap2_s6_clk_src_init,
0885 };
0886
0887 static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
0888 F(400000, P_BI_TCXO, 12, 1, 4),
0889 F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
0890 F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
0891 F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
0892 F(202000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0),
0893 { }
0894 };
0895
0896 static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
0897 .cmd_rcgr = 0x24014,
0898 .mnd_width = 8,
0899 .hid_width = 5,
0900 .parent_map = gcc_parent_map_7,
0901 .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
0902 .clkr.hw.init = &(struct clk_init_data){
0903 .name = "gcc_sdcc2_apps_clk_src",
0904 .parent_data = gcc_parent_data_7,
0905 .num_parents = ARRAY_SIZE(gcc_parent_data_7),
0906 .flags = CLK_SET_RATE_PARENT,
0907 .ops = &clk_rcg2_ops,
0908 },
0909 };
0910
0911 static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
0912 F(400000, P_BI_TCXO, 12, 1, 4),
0913 F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
0914 F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
0915 { }
0916 };
0917
0918 static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
0919 .cmd_rcgr = 0x26014,
0920 .mnd_width = 8,
0921 .hid_width = 5,
0922 .parent_map = gcc_parent_map_0,
0923 .freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
0924 .clkr.hw.init = &(struct clk_init_data){
0925 .name = "gcc_sdcc4_apps_clk_src",
0926 .parent_data = gcc_parent_data_0,
0927 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0928 .flags = CLK_SET_RATE_PARENT,
0929 .ops = &clk_rcg2_ops,
0930 },
0931 };
0932
0933 static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
0934 F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
0935 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
0936 F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
0937 F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
0938 { }
0939 };
0940
0941 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
0942 .cmd_rcgr = 0x8702c,
0943 .mnd_width = 8,
0944 .hid_width = 5,
0945 .parent_map = gcc_parent_map_0,
0946 .freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
0947 .clkr.hw.init = &(struct clk_init_data){
0948 .name = "gcc_ufs_phy_axi_clk_src",
0949 .parent_data = gcc_parent_data_0,
0950 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0951 .flags = CLK_SET_RATE_PARENT,
0952 .ops = &clk_rcg2_ops,
0953 },
0954 };
0955
0956 static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {
0957 F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
0958 F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
0959 F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
0960 { }
0961 };
0962
0963 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
0964 .cmd_rcgr = 0x87074,
0965 .mnd_width = 0,
0966 .hid_width = 5,
0967 .parent_map = gcc_parent_map_0,
0968 .freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,
0969 .clkr.hw.init = &(struct clk_init_data){
0970 .name = "gcc_ufs_phy_ice_core_clk_src",
0971 .parent_data = gcc_parent_data_0,
0972 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
0973 .flags = CLK_SET_RATE_PARENT,
0974 .ops = &clk_rcg2_ops,
0975 },
0976 };
0977
0978 static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = {
0979 F(9600000, P_BI_TCXO, 2, 0, 0),
0980 F(19200000, P_BI_TCXO, 1, 0, 0),
0981 { }
0982 };
0983
0984 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
0985 .cmd_rcgr = 0x870a8,
0986 .mnd_width = 0,
0987 .hid_width = 5,
0988 .parent_map = gcc_parent_map_3,
0989 .freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src,
0990 .clkr.hw.init = &(struct clk_init_data){
0991 .name = "gcc_ufs_phy_phy_aux_clk_src",
0992 .parent_data = gcc_parent_data_3,
0993 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
0994 .flags = CLK_SET_RATE_PARENT,
0995 .ops = &clk_rcg2_ops,
0996 },
0997 };
0998
0999 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
1000 .cmd_rcgr = 0x8708c,
1001 .mnd_width = 0,
1002 .hid_width = 5,
1003 .parent_map = gcc_parent_map_0,
1004 .freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,
1005 .clkr.hw.init = &(struct clk_init_data){
1006 .name = "gcc_ufs_phy_unipro_core_clk_src",
1007 .parent_data = gcc_parent_data_0,
1008 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1009 .flags = CLK_SET_RATE_PARENT,
1010 .ops = &clk_rcg2_ops,
1011 },
1012 };
1013
1014 static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
1015 F(66666667, P_GCC_GPLL0_OUT_EVEN, 4.5, 0, 0),
1016 F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0),
1017 F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
1018 F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),
1019 { }
1020 };
1021
1022 static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
1023 .cmd_rcgr = 0x49028,
1024 .mnd_width = 8,
1025 .hid_width = 5,
1026 .parent_map = gcc_parent_map_0,
1027 .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
1028 .clkr.hw.init = &(struct clk_init_data){
1029 .name = "gcc_usb30_prim_master_clk_src",
1030 .parent_data = gcc_parent_data_0,
1031 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1032 .flags = CLK_SET_RATE_PARENT,
1033 .ops = &clk_rcg2_ops,
1034 },
1035 };
1036
1037 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
1038 .cmd_rcgr = 0x49040,
1039 .mnd_width = 0,
1040 .hid_width = 5,
1041 .parent_map = gcc_parent_map_0,
1042 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
1043 .clkr.hw.init = &(struct clk_init_data){
1044 .name = "gcc_usb30_prim_mock_utmi_clk_src",
1045 .parent_data = gcc_parent_data_0,
1046 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1047 .flags = CLK_SET_RATE_PARENT,
1048 .ops = &clk_rcg2_ops,
1049 },
1050 };
1051
1052 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
1053 .cmd_rcgr = 0x4906c,
1054 .mnd_width = 0,
1055 .hid_width = 5,
1056 .parent_map = gcc_parent_map_2,
1057 .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
1058 .clkr.hw.init = &(struct clk_init_data){
1059 .name = "gcc_usb3_prim_phy_aux_clk_src",
1060 .parent_data = gcc_parent_data_2,
1061 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
1062 .flags = CLK_SET_RATE_PARENT,
1063 .ops = &clk_rcg2_ops,
1064 },
1065 };
1066
1067 static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {
1068 .reg = 0x49058,
1069 .shift = 0,
1070 .width = 4,
1071 .clkr.hw.init = &(struct clk_init_data) {
1072 .name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
1073 .parent_data = &(const struct clk_parent_data){
1074 .hw = &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
1075 },
1076 .num_parents = 1,
1077 .flags = CLK_SET_RATE_PARENT,
1078 .ops = &clk_regmap_div_ro_ops,
1079 },
1080 };
1081
1082 static struct clk_branch gcc_aggre_noc_pcie_0_axi_clk = {
1083 .halt_reg = 0x7b08c,
1084 .halt_check = BRANCH_HALT_SKIP,
1085 .hwcg_reg = 0x7b08c,
1086 .hwcg_bit = 1,
1087 .clkr = {
1088 .enable_reg = 0x62000,
1089 .enable_mask = BIT(12),
1090 .hw.init = &(struct clk_init_data){
1091 .name = "gcc_aggre_noc_pcie_0_axi_clk",
1092 .ops = &clk_branch2_ops,
1093 },
1094 },
1095 };
1096
1097 static struct clk_branch gcc_aggre_noc_pcie_1_axi_clk = {
1098 .halt_reg = 0x9d098,
1099 .halt_check = BRANCH_HALT_SKIP,
1100 .hwcg_reg = 0x9d098,
1101 .hwcg_bit = 1,
1102 .clkr = {
1103 .enable_reg = 0x62000,
1104 .enable_mask = BIT(11),
1105 .hw.init = &(struct clk_init_data){
1106 .name = "gcc_aggre_noc_pcie_1_axi_clk",
1107 .ops = &clk_branch2_ops,
1108 },
1109 },
1110 };
1111
1112 static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
1113 .halt_reg = 0x870d4,
1114 .halt_check = BRANCH_HALT_VOTED,
1115 .hwcg_reg = 0x870d4,
1116 .hwcg_bit = 1,
1117 .clkr = {
1118 .enable_reg = 0x870d4,
1119 .enable_mask = BIT(0),
1120 .hw.init = &(struct clk_init_data){
1121 .name = "gcc_aggre_ufs_phy_axi_clk",
1122 .parent_data = &(const struct clk_parent_data){
1123 .hw = &gcc_ufs_phy_axi_clk_src.clkr.hw,
1124 },
1125 .num_parents = 1,
1126 .flags = CLK_SET_RATE_PARENT,
1127 .ops = &clk_branch2_ops,
1128 },
1129 },
1130 };
1131
1132 static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk = {
1133 .halt_reg = 0x870d4,
1134 .halt_check = BRANCH_HALT_VOTED,
1135 .hwcg_reg = 0x870d4,
1136 .hwcg_bit = 1,
1137 .clkr = {
1138 .enable_reg = 0x870d4,
1139 .enable_mask = BIT(1),
1140 .hw.init = &(struct clk_init_data){
1141 .name = "gcc_aggre_ufs_phy_axi_hw_ctl_clk",
1142 .parent_data = &(const struct clk_parent_data){
1143 .hw = &gcc_ufs_phy_axi_clk_src.clkr.hw,
1144 },
1145 .num_parents = 1,
1146 .flags = CLK_SET_RATE_PARENT,
1147 .ops = &clk_branch2_ops,
1148 },
1149 },
1150 };
1151
1152 static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
1153 .halt_reg = 0x49088,
1154 .halt_check = BRANCH_HALT_VOTED,
1155 .hwcg_reg = 0x49088,
1156 .hwcg_bit = 1,
1157 .clkr = {
1158 .enable_reg = 0x49088,
1159 .enable_mask = BIT(0),
1160 .hw.init = &(struct clk_init_data){
1161 .name = "gcc_aggre_usb3_prim_axi_clk",
1162 .parent_data = &(const struct clk_parent_data){
1163 .hw = &gcc_usb30_prim_master_clk_src.clkr.hw,
1164 },
1165 .num_parents = 1,
1166 .flags = CLK_SET_RATE_PARENT,
1167 .ops = &clk_branch2_ops,
1168 },
1169 },
1170 };
1171
1172 static struct clk_branch gcc_boot_rom_ahb_clk = {
1173 .halt_reg = 0x48004,
1174 .halt_check = BRANCH_HALT_VOTED,
1175 .hwcg_reg = 0x48004,
1176 .hwcg_bit = 1,
1177 .clkr = {
1178 .enable_reg = 0x62000,
1179 .enable_mask = BIT(10),
1180 .hw.init = &(struct clk_init_data){
1181 .name = "gcc_boot_rom_ahb_clk",
1182 .ops = &clk_branch2_ops,
1183 },
1184 },
1185 };
1186
1187 static struct clk_branch gcc_camera_hf_axi_clk = {
1188 .halt_reg = 0x36010,
1189 .halt_check = BRANCH_HALT_SKIP,
1190 .hwcg_reg = 0x36010,
1191 .hwcg_bit = 1,
1192 .clkr = {
1193 .enable_reg = 0x36010,
1194 .enable_mask = BIT(0),
1195 .hw.init = &(struct clk_init_data){
1196 .name = "gcc_camera_hf_axi_clk",
1197 .ops = &clk_branch2_ops,
1198 },
1199 },
1200 };
1201
1202 static struct clk_branch gcc_camera_sf_axi_clk = {
1203 .halt_reg = 0x36018,
1204 .halt_check = BRANCH_HALT_SKIP,
1205 .hwcg_reg = 0x36018,
1206 .hwcg_bit = 1,
1207 .clkr = {
1208 .enable_reg = 0x36018,
1209 .enable_mask = BIT(0),
1210 .hw.init = &(struct clk_init_data){
1211 .name = "gcc_camera_sf_axi_clk",
1212 .ops = &clk_branch2_ops,
1213 },
1214 },
1215 };
1216
1217 static struct clk_branch gcc_cfg_noc_pcie_anoc_ahb_clk = {
1218 .halt_reg = 0x20030,
1219 .halt_check = BRANCH_HALT_VOTED,
1220 .hwcg_reg = 0x20030,
1221 .hwcg_bit = 1,
1222 .clkr = {
1223 .enable_reg = 0x62000,
1224 .enable_mask = BIT(20),
1225 .hw.init = &(struct clk_init_data){
1226 .name = "gcc_cfg_noc_pcie_anoc_ahb_clk",
1227 .ops = &clk_branch2_ops,
1228 },
1229 },
1230 };
1231
1232 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
1233 .halt_reg = 0x49084,
1234 .halt_check = BRANCH_HALT_VOTED,
1235 .hwcg_reg = 0x49084,
1236 .hwcg_bit = 1,
1237 .clkr = {
1238 .enable_reg = 0x49084,
1239 .enable_mask = BIT(0),
1240 .hw.init = &(struct clk_init_data){
1241 .name = "gcc_cfg_noc_usb3_prim_axi_clk",
1242 .parent_data = &(const struct clk_parent_data){
1243 .hw = &gcc_usb30_prim_master_clk_src.clkr.hw,
1244 },
1245 .num_parents = 1,
1246 .flags = CLK_SET_RATE_PARENT,
1247 .ops = &clk_branch2_ops,
1248 },
1249 },
1250 };
1251
1252 static struct clk_branch gcc_ddrss_gpu_axi_clk = {
1253 .halt_reg = 0x81154,
1254 .halt_check = BRANCH_HALT_SKIP,
1255 .hwcg_reg = 0x81154,
1256 .hwcg_bit = 1,
1257 .clkr = {
1258 .enable_reg = 0x81154,
1259 .enable_mask = BIT(0),
1260 .hw.init = &(struct clk_init_data){
1261 .name = "gcc_ddrss_gpu_axi_clk",
1262 .ops = &clk_branch2_aon_ops,
1263 },
1264 },
1265 };
1266
1267 static struct clk_branch gcc_ddrss_pcie_sf_tbu_clk = {
1268 .halt_reg = 0x9d094,
1269 .halt_check = BRANCH_HALT_SKIP,
1270 .hwcg_reg = 0x9d094,
1271 .hwcg_bit = 1,
1272 .clkr = {
1273 .enable_reg = 0x62000,
1274 .enable_mask = BIT(19),
1275 .hw.init = &(struct clk_init_data){
1276 .name = "gcc_ddrss_pcie_sf_tbu_clk",
1277 .ops = &clk_branch2_ops,
1278 },
1279 },
1280 };
1281
1282 static struct clk_branch gcc_disp_hf_axi_clk = {
1283 .halt_reg = 0x3700c,
1284 .halt_check = BRANCH_HALT_SKIP,
1285 .hwcg_reg = 0x3700c,
1286 .hwcg_bit = 1,
1287 .clkr = {
1288 .enable_reg = 0x3700c,
1289 .enable_mask = BIT(0),
1290 .hw.init = &(struct clk_init_data){
1291 .name = "gcc_disp_hf_axi_clk",
1292 .ops = &clk_branch2_ops,
1293 },
1294 },
1295 };
1296
1297 static struct clk_branch gcc_disp_sf_axi_clk = {
1298 .halt_reg = 0x37014,
1299 .halt_check = BRANCH_HALT_SKIP,
1300 .hwcg_reg = 0x37014,
1301 .hwcg_bit = 1,
1302 .clkr = {
1303 .enable_reg = 0x37014,
1304 .enable_mask = BIT(0),
1305 .hw.init = &(struct clk_init_data){
1306 .name = "gcc_disp_sf_axi_clk",
1307 .ops = &clk_branch2_ops,
1308 },
1309 },
1310 };
1311
1312 static struct clk_branch gcc_eusb3_0_clkref_en = {
1313 .halt_reg = 0x9c00c,
1314 .halt_check = BRANCH_HALT,
1315 .clkr = {
1316 .enable_reg = 0x9c00c,
1317 .enable_mask = BIT(0),
1318 .hw.init = &(struct clk_init_data){
1319 .name = "gcc_eusb3_0_clkref_en",
1320 .ops = &clk_branch2_ops,
1321 },
1322 },
1323 };
1324
1325 static struct clk_branch gcc_gp1_clk = {
1326 .halt_reg = 0x74000,
1327 .halt_check = BRANCH_HALT,
1328 .clkr = {
1329 .enable_reg = 0x74000,
1330 .enable_mask = BIT(0),
1331 .hw.init = &(struct clk_init_data){
1332 .name = "gcc_gp1_clk",
1333 .parent_data = &(const struct clk_parent_data){
1334 .hw = &gcc_gp1_clk_src.clkr.hw,
1335 },
1336 .num_parents = 1,
1337 .flags = CLK_SET_RATE_PARENT,
1338 .ops = &clk_branch2_ops,
1339 },
1340 },
1341 };
1342
1343 static struct clk_branch gcc_gp2_clk = {
1344 .halt_reg = 0x75000,
1345 .halt_check = BRANCH_HALT,
1346 .clkr = {
1347 .enable_reg = 0x75000,
1348 .enable_mask = BIT(0),
1349 .hw.init = &(struct clk_init_data){
1350 .name = "gcc_gp2_clk",
1351 .parent_data = &(const struct clk_parent_data){
1352 .hw = &gcc_gp2_clk_src.clkr.hw,
1353 },
1354 .num_parents = 1,
1355 .flags = CLK_SET_RATE_PARENT,
1356 .ops = &clk_branch2_ops,
1357 },
1358 },
1359 };
1360
1361 static struct clk_branch gcc_gp3_clk = {
1362 .halt_reg = 0x76000,
1363 .halt_check = BRANCH_HALT,
1364 .clkr = {
1365 .enable_reg = 0x76000,
1366 .enable_mask = BIT(0),
1367 .hw.init = &(struct clk_init_data){
1368 .name = "gcc_gp3_clk",
1369 .parent_data = &(const struct clk_parent_data){
1370 .hw = &gcc_gp3_clk_src.clkr.hw,
1371 },
1372 .num_parents = 1,
1373 .flags = CLK_SET_RATE_PARENT,
1374 .ops = &clk_branch2_ops,
1375 },
1376 },
1377 };
1378
1379 static struct clk_branch gcc_gpu_gpll0_clk_src = {
1380 .halt_check = BRANCH_HALT_DELAY,
1381 .clkr = {
1382 .enable_reg = 0x62000,
1383 .enable_mask = BIT(15),
1384 .hw.init = &(struct clk_init_data){
1385 .name = "gcc_gpu_gpll0_clk_src",
1386 .parent_data = &(const struct clk_parent_data){
1387 .hw = &gcc_gpll0.clkr.hw,
1388 },
1389 .num_parents = 1,
1390 .flags = CLK_SET_RATE_PARENT,
1391 .ops = &clk_branch2_ops,
1392 },
1393 },
1394 };
1395
1396 static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
1397 .halt_check = BRANCH_HALT_DELAY,
1398 .clkr = {
1399 .enable_reg = 0x62000,
1400 .enable_mask = BIT(16),
1401 .hw.init = &(struct clk_init_data){
1402 .name = "gcc_gpu_gpll0_div_clk_src",
1403 .parent_data = &(const struct clk_parent_data){
1404 .hw = &gcc_gpll0_out_even.clkr.hw,
1405 },
1406 .num_parents = 1,
1407 .flags = CLK_SET_RATE_PARENT,
1408 .ops = &clk_branch2_ops,
1409 },
1410 },
1411 };
1412
1413 static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
1414 .halt_reg = 0x81010,
1415 .halt_check = BRANCH_HALT_VOTED,
1416 .hwcg_reg = 0x81010,
1417 .hwcg_bit = 1,
1418 .clkr = {
1419 .enable_reg = 0x81010,
1420 .enable_mask = BIT(0),
1421 .hw.init = &(struct clk_init_data){
1422 .name = "gcc_gpu_memnoc_gfx_clk",
1423 .ops = &clk_branch2_ops,
1424 },
1425 },
1426 };
1427
1428 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
1429 .halt_reg = 0x81018,
1430 .halt_check = BRANCH_HALT_DELAY,
1431 .clkr = {
1432 .enable_reg = 0x81018,
1433 .enable_mask = BIT(0),
1434 .hw.init = &(struct clk_init_data){
1435 .name = "gcc_gpu_snoc_dvm_gfx_clk",
1436 .ops = &clk_branch2_ops,
1437 },
1438 },
1439 };
1440
1441 static struct clk_branch gcc_pcie_0_aux_clk = {
1442 .halt_reg = 0x7b034,
1443 .halt_check = BRANCH_HALT_VOTED,
1444 .clkr = {
1445 .enable_reg = 0x62008,
1446 .enable_mask = BIT(3),
1447 .hw.init = &(struct clk_init_data){
1448 .name = "gcc_pcie_0_aux_clk",
1449 .parent_data = &(const struct clk_parent_data){
1450 .hw = &gcc_pcie_0_aux_clk_src.clkr.hw,
1451 },
1452 .num_parents = 1,
1453 .flags = CLK_SET_RATE_PARENT,
1454 .ops = &clk_branch2_ops,
1455 },
1456 },
1457 };
1458
1459 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
1460 .halt_reg = 0x7b030,
1461 .halt_check = BRANCH_HALT_VOTED,
1462 .hwcg_reg = 0x7b030,
1463 .hwcg_bit = 1,
1464 .clkr = {
1465 .enable_reg = 0x62008,
1466 .enable_mask = BIT(2),
1467 .hw.init = &(struct clk_init_data){
1468 .name = "gcc_pcie_0_cfg_ahb_clk",
1469 .ops = &clk_branch2_ops,
1470 },
1471 },
1472 };
1473
1474 static struct clk_branch gcc_pcie_0_clkref_en = {
1475 .halt_reg = 0x9c004,
1476 .halt_check = BRANCH_HALT,
1477 .clkr = {
1478 .enable_reg = 0x9c004,
1479 .enable_mask = BIT(0),
1480 .hw.init = &(struct clk_init_data){
1481 .name = "gcc_pcie_0_clkref_en",
1482 .ops = &clk_branch2_ops,
1483 },
1484 },
1485 };
1486
1487 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
1488 .halt_reg = 0x7b028,
1489 .halt_check = BRANCH_HALT_SKIP,
1490 .clkr = {
1491 .enable_reg = 0x62008,
1492 .enable_mask = BIT(1),
1493 .hw.init = &(struct clk_init_data){
1494 .name = "gcc_pcie_0_mstr_axi_clk",
1495 .ops = &clk_branch2_ops,
1496 },
1497 },
1498 };
1499
1500 static struct clk_branch gcc_pcie_0_phy_rchng_clk = {
1501 .halt_reg = 0x7b044,
1502 .halt_check = BRANCH_HALT_VOTED,
1503 .clkr = {
1504 .enable_reg = 0x62000,
1505 .enable_mask = BIT(22),
1506 .hw.init = &(struct clk_init_data){
1507 .name = "gcc_pcie_0_phy_rchng_clk",
1508 .parent_data = &(const struct clk_parent_data){
1509 .hw = &gcc_pcie_0_phy_rchng_clk_src.clkr.hw,
1510 },
1511 .num_parents = 1,
1512 .flags = CLK_SET_RATE_PARENT,
1513 .ops = &clk_branch2_ops,
1514 },
1515 },
1516 };
1517
1518 static struct clk_branch gcc_pcie_0_pipe_clk = {
1519 .halt_reg = 0x7b03c,
1520 .halt_check = BRANCH_HALT_SKIP,
1521 .clkr = {
1522 .enable_reg = 0x62008,
1523 .enable_mask = BIT(4),
1524 .hw.init = &(struct clk_init_data){
1525 .name = "gcc_pcie_0_pipe_clk",
1526 .parent_data = &(const struct clk_parent_data){
1527 .hw = &gcc_pcie_0_pipe_clk_src.clkr.hw,
1528 },
1529 .num_parents = 1,
1530 .flags = CLK_SET_RATE_PARENT,
1531 .ops = &clk_branch2_ops,
1532 },
1533 },
1534 };
1535
1536 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
1537 .halt_reg = 0x7b020,
1538 .halt_check = BRANCH_HALT_VOTED,
1539 .hwcg_reg = 0x7b020,
1540 .hwcg_bit = 1,
1541 .clkr = {
1542 .enable_reg = 0x62008,
1543 .enable_mask = BIT(0),
1544 .hw.init = &(struct clk_init_data){
1545 .name = "gcc_pcie_0_slv_axi_clk",
1546 .ops = &clk_branch2_ops,
1547 },
1548 },
1549 };
1550
1551 static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
1552 .halt_reg = 0x7b01c,
1553 .halt_check = BRANCH_HALT_VOTED,
1554 .clkr = {
1555 .enable_reg = 0x62008,
1556 .enable_mask = BIT(5),
1557 .hw.init = &(struct clk_init_data){
1558 .name = "gcc_pcie_0_slv_q2a_axi_clk",
1559 .ops = &clk_branch2_ops,
1560 },
1561 },
1562 };
1563
1564 static struct clk_branch gcc_pcie_1_aux_clk = {
1565 .halt_reg = 0x9d030,
1566 .halt_check = BRANCH_HALT_VOTED,
1567 .clkr = {
1568 .enable_reg = 0x62000,
1569 .enable_mask = BIT(29),
1570 .hw.init = &(struct clk_init_data){
1571 .name = "gcc_pcie_1_aux_clk",
1572 .parent_data = &(const struct clk_parent_data){
1573 .hw = &gcc_pcie_1_aux_clk_src.clkr.hw,
1574 },
1575 .num_parents = 1,
1576 .flags = CLK_SET_RATE_PARENT,
1577 .ops = &clk_branch2_ops,
1578 },
1579 },
1580 };
1581
1582 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
1583 .halt_reg = 0x9d02c,
1584 .halt_check = BRANCH_HALT_VOTED,
1585 .hwcg_reg = 0x9d02c,
1586 .hwcg_bit = 1,
1587 .clkr = {
1588 .enable_reg = 0x62000,
1589 .enable_mask = BIT(28),
1590 .hw.init = &(struct clk_init_data){
1591 .name = "gcc_pcie_1_cfg_ahb_clk",
1592 .ops = &clk_branch2_ops,
1593 },
1594 },
1595 };
1596
1597 static struct clk_branch gcc_pcie_1_clkref_en = {
1598 .halt_reg = 0x9c008,
1599 .halt_check = BRANCH_HALT,
1600 .clkr = {
1601 .enable_reg = 0x9c008,
1602 .enable_mask = BIT(0),
1603 .hw.init = &(struct clk_init_data){
1604 .name = "gcc_pcie_1_clkref_en",
1605 .ops = &clk_branch2_ops,
1606 },
1607 },
1608 };
1609
1610 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
1611 .halt_reg = 0x9d024,
1612 .halt_check = BRANCH_HALT_SKIP,
1613 .clkr = {
1614 .enable_reg = 0x62000,
1615 .enable_mask = BIT(27),
1616 .hw.init = &(struct clk_init_data){
1617 .name = "gcc_pcie_1_mstr_axi_clk",
1618 .ops = &clk_branch2_ops,
1619 },
1620 },
1621 };
1622
1623 static struct clk_branch gcc_pcie_1_phy_aux_clk = {
1624 .halt_reg = 0x9d038,
1625 .halt_check = BRANCH_HALT_VOTED,
1626 .clkr = {
1627 .enable_reg = 0x62000,
1628 .enable_mask = BIT(24),
1629 .hw.init = &(struct clk_init_data){
1630 .name = "gcc_pcie_1_phy_aux_clk",
1631 .parent_data = &(const struct clk_parent_data){
1632 .hw = &gcc_pcie_1_phy_aux_clk_src.clkr.hw,
1633 },
1634 .num_parents = 1,
1635 .flags = CLK_SET_RATE_PARENT,
1636 .ops = &clk_branch2_ops,
1637 },
1638 },
1639 };
1640
1641 static struct clk_branch gcc_pcie_1_phy_rchng_clk = {
1642 .halt_reg = 0x9d048,
1643 .halt_check = BRANCH_HALT_VOTED,
1644 .clkr = {
1645 .enable_reg = 0x62000,
1646 .enable_mask = BIT(23),
1647 .hw.init = &(struct clk_init_data){
1648 .name = "gcc_pcie_1_phy_rchng_clk",
1649 .parent_data = &(const struct clk_parent_data){
1650 .hw = &gcc_pcie_1_phy_rchng_clk_src.clkr.hw,
1651 },
1652 .num_parents = 1,
1653 .flags = CLK_SET_RATE_PARENT,
1654 .ops = &clk_branch2_ops,
1655 },
1656 },
1657 };
1658
1659 static struct clk_branch gcc_pcie_1_pipe_clk = {
1660 .halt_reg = 0x9d040,
1661 .halt_check = BRANCH_HALT_SKIP,
1662 .clkr = {
1663 .enable_reg = 0x62000,
1664 .enable_mask = BIT(30),
1665 .hw.init = &(struct clk_init_data){
1666 .name = "gcc_pcie_1_pipe_clk",
1667 .parent_data = &(const struct clk_parent_data){
1668 .hw = &gcc_pcie_1_pipe_clk_src.clkr.hw,
1669 },
1670 .num_parents = 1,
1671 .flags = CLK_SET_RATE_PARENT,
1672 .ops = &clk_branch2_ops,
1673 },
1674 },
1675 };
1676
1677 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
1678 .halt_reg = 0x9d01c,
1679 .halt_check = BRANCH_HALT_VOTED,
1680 .hwcg_reg = 0x9d01c,
1681 .hwcg_bit = 1,
1682 .clkr = {
1683 .enable_reg = 0x62000,
1684 .enable_mask = BIT(26),
1685 .hw.init = &(struct clk_init_data){
1686 .name = "gcc_pcie_1_slv_axi_clk",
1687 .ops = &clk_branch2_ops,
1688 },
1689 },
1690 };
1691
1692 static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
1693 .halt_reg = 0x9d018,
1694 .halt_check = BRANCH_HALT_VOTED,
1695 .clkr = {
1696 .enable_reg = 0x62000,
1697 .enable_mask = BIT(25),
1698 .hw.init = &(struct clk_init_data){
1699 .name = "gcc_pcie_1_slv_q2a_axi_clk",
1700 .ops = &clk_branch2_ops,
1701 },
1702 },
1703 };
1704
1705 static struct clk_branch gcc_pdm2_clk = {
1706 .halt_reg = 0x4300c,
1707 .halt_check = BRANCH_HALT,
1708 .clkr = {
1709 .enable_reg = 0x4300c,
1710 .enable_mask = BIT(0),
1711 .hw.init = &(struct clk_init_data){
1712 .name = "gcc_pdm2_clk",
1713 .parent_data = &(const struct clk_parent_data){
1714 .hw = &gcc_pdm2_clk_src.clkr.hw,
1715 },
1716 .num_parents = 1,
1717 .flags = CLK_SET_RATE_PARENT,
1718 .ops = &clk_branch2_ops,
1719 },
1720 },
1721 };
1722
1723 static struct clk_branch gcc_pdm_ahb_clk = {
1724 .halt_reg = 0x43004,
1725 .halt_check = BRANCH_HALT_VOTED,
1726 .hwcg_reg = 0x43004,
1727 .hwcg_bit = 1,
1728 .clkr = {
1729 .enable_reg = 0x43004,
1730 .enable_mask = BIT(0),
1731 .hw.init = &(struct clk_init_data){
1732 .name = "gcc_pdm_ahb_clk",
1733 .ops = &clk_branch2_ops,
1734 },
1735 },
1736 };
1737
1738 static struct clk_branch gcc_pdm_xo4_clk = {
1739 .halt_reg = 0x43008,
1740 .halt_check = BRANCH_HALT,
1741 .clkr = {
1742 .enable_reg = 0x43008,
1743 .enable_mask = BIT(0),
1744 .hw.init = &(struct clk_init_data){
1745 .name = "gcc_pdm_xo4_clk",
1746 .ops = &clk_branch2_ops,
1747 },
1748 },
1749 };
1750
1751 static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
1752 .halt_reg = 0x36008,
1753 .halt_check = BRANCH_HALT_VOTED,
1754 .hwcg_reg = 0x36008,
1755 .hwcg_bit = 1,
1756 .clkr = {
1757 .enable_reg = 0x36008,
1758 .enable_mask = BIT(0),
1759 .hw.init = &(struct clk_init_data){
1760 .name = "gcc_qmip_camera_nrt_ahb_clk",
1761 .ops = &clk_branch2_ops,
1762 },
1763 },
1764 };
1765
1766 static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
1767 .halt_reg = 0x3600c,
1768 .halt_check = BRANCH_HALT_VOTED,
1769 .hwcg_reg = 0x3600c,
1770 .hwcg_bit = 1,
1771 .clkr = {
1772 .enable_reg = 0x3600c,
1773 .enable_mask = BIT(0),
1774 .hw.init = &(struct clk_init_data){
1775 .name = "gcc_qmip_camera_rt_ahb_clk",
1776 .ops = &clk_branch2_ops,
1777 },
1778 },
1779 };
1780
1781 static struct clk_branch gcc_qmip_disp_ahb_clk = {
1782 .halt_reg = 0x37008,
1783 .halt_check = BRANCH_HALT_VOTED,
1784 .hwcg_reg = 0x37008,
1785 .hwcg_bit = 1,
1786 .clkr = {
1787 .enable_reg = 0x37008,
1788 .enable_mask = BIT(0),
1789 .hw.init = &(struct clk_init_data){
1790 .name = "gcc_qmip_disp_ahb_clk",
1791 .ops = &clk_branch2_ops,
1792 },
1793 },
1794 };
1795
1796 static struct clk_branch gcc_qmip_gpu_ahb_clk = {
1797 .halt_reg = 0x81008,
1798 .halt_check = BRANCH_HALT_VOTED,
1799 .hwcg_reg = 0x81008,
1800 .hwcg_bit = 1,
1801 .clkr = {
1802 .enable_reg = 0x81008,
1803 .enable_mask = BIT(0),
1804 .hw.init = &(struct clk_init_data){
1805 .name = "gcc_qmip_gpu_ahb_clk",
1806 .ops = &clk_branch2_ops,
1807 },
1808 },
1809 };
1810
1811 static struct clk_branch gcc_qmip_pcie_ahb_clk = {
1812 .halt_reg = 0x7b018,
1813 .halt_check = BRANCH_HALT_VOTED,
1814 .hwcg_reg = 0x7b018,
1815 .hwcg_bit = 1,
1816 .clkr = {
1817 .enable_reg = 0x7b018,
1818 .enable_mask = BIT(0),
1819 .hw.init = &(struct clk_init_data){
1820 .name = "gcc_qmip_pcie_ahb_clk",
1821 .ops = &clk_branch2_ops,
1822 },
1823 },
1824 };
1825
1826 static struct clk_branch gcc_qmip_video_cv_cpu_ahb_clk = {
1827 .halt_reg = 0x42014,
1828 .halt_check = BRANCH_HALT_VOTED,
1829 .hwcg_reg = 0x42014,
1830 .hwcg_bit = 1,
1831 .clkr = {
1832 .enable_reg = 0x42014,
1833 .enable_mask = BIT(0),
1834 .hw.init = &(struct clk_init_data){
1835 .name = "gcc_qmip_video_cv_cpu_ahb_clk",
1836 .ops = &clk_branch2_ops,
1837 },
1838 },
1839 };
1840
1841 static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {
1842 .halt_reg = 0x42008,
1843 .halt_check = BRANCH_HALT_VOTED,
1844 .hwcg_reg = 0x42008,
1845 .hwcg_bit = 1,
1846 .clkr = {
1847 .enable_reg = 0x42008,
1848 .enable_mask = BIT(0),
1849 .hw.init = &(struct clk_init_data){
1850 .name = "gcc_qmip_video_cvp_ahb_clk",
1851 .ops = &clk_branch2_ops,
1852 },
1853 },
1854 };
1855
1856 static struct clk_branch gcc_qmip_video_v_cpu_ahb_clk = {
1857 .halt_reg = 0x42010,
1858 .halt_check = BRANCH_HALT_VOTED,
1859 .hwcg_reg = 0x42010,
1860 .hwcg_bit = 1,
1861 .clkr = {
1862 .enable_reg = 0x42010,
1863 .enable_mask = BIT(0),
1864 .hw.init = &(struct clk_init_data){
1865 .name = "gcc_qmip_video_v_cpu_ahb_clk",
1866 .ops = &clk_branch2_ops,
1867 },
1868 },
1869 };
1870
1871 static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
1872 .halt_reg = 0x4200c,
1873 .halt_check = BRANCH_HALT_VOTED,
1874 .hwcg_reg = 0x4200c,
1875 .hwcg_bit = 1,
1876 .clkr = {
1877 .enable_reg = 0x4200c,
1878 .enable_mask = BIT(0),
1879 .hw.init = &(struct clk_init_data){
1880 .name = "gcc_qmip_video_vcodec_ahb_clk",
1881 .ops = &clk_branch2_ops,
1882 },
1883 },
1884 };
1885
1886 static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {
1887 .halt_reg = 0x3300c,
1888 .halt_check = BRANCH_HALT_VOTED,
1889 .clkr = {
1890 .enable_reg = 0x62008,
1891 .enable_mask = BIT(9),
1892 .hw.init = &(struct clk_init_data){
1893 .name = "gcc_qupv3_wrap0_core_2x_clk",
1894 .ops = &clk_branch2_ops,
1895 },
1896 },
1897 };
1898
1899 static struct clk_branch gcc_qupv3_wrap0_core_clk = {
1900 .halt_reg = 0x33000,
1901 .halt_check = BRANCH_HALT_VOTED,
1902 .clkr = {
1903 .enable_reg = 0x62008,
1904 .enable_mask = BIT(8),
1905 .hw.init = &(struct clk_init_data){
1906 .name = "gcc_qupv3_wrap0_core_clk",
1907 .ops = &clk_branch2_ops,
1908 },
1909 },
1910 };
1911
1912 static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
1913 .halt_reg = 0x2700c,
1914 .halt_check = BRANCH_HALT_VOTED,
1915 .clkr = {
1916 .enable_reg = 0x62008,
1917 .enable_mask = BIT(10),
1918 .hw.init = &(struct clk_init_data){
1919 .name = "gcc_qupv3_wrap0_s0_clk",
1920 .parent_data = &(const struct clk_parent_data){
1921 .hw = &gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
1922 },
1923 .num_parents = 1,
1924 .flags = CLK_SET_RATE_PARENT,
1925 .ops = &clk_branch2_ops,
1926 },
1927 },
1928 };
1929
1930 static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
1931 .halt_reg = 0x27140,
1932 .halt_check = BRANCH_HALT_VOTED,
1933 .clkr = {
1934 .enable_reg = 0x62008,
1935 .enable_mask = BIT(11),
1936 .hw.init = &(struct clk_init_data){
1937 .name = "gcc_qupv3_wrap0_s1_clk",
1938 .parent_data = &(const struct clk_parent_data){
1939 .hw = &gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
1940 },
1941 .num_parents = 1,
1942 .flags = CLK_SET_RATE_PARENT,
1943 .ops = &clk_branch2_ops,
1944 },
1945 },
1946 };
1947
1948 static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
1949 .halt_reg = 0x27274,
1950 .halt_check = BRANCH_HALT_VOTED,
1951 .clkr = {
1952 .enable_reg = 0x62008,
1953 .enable_mask = BIT(12),
1954 .hw.init = &(struct clk_init_data){
1955 .name = "gcc_qupv3_wrap0_s2_clk",
1956 .parent_data = &(const struct clk_parent_data){
1957 .hw = &gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
1958 },
1959 .num_parents = 1,
1960 .flags = CLK_SET_RATE_PARENT,
1961 .ops = &clk_branch2_ops,
1962 },
1963 },
1964 };
1965
1966 static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
1967 .halt_reg = 0x273a8,
1968 .halt_check = BRANCH_HALT_VOTED,
1969 .clkr = {
1970 .enable_reg = 0x62008,
1971 .enable_mask = BIT(13),
1972 .hw.init = &(struct clk_init_data){
1973 .name = "gcc_qupv3_wrap0_s3_clk",
1974 .parent_data = &(const struct clk_parent_data){
1975 .hw = &gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
1976 },
1977 .num_parents = 1,
1978 .flags = CLK_SET_RATE_PARENT,
1979 .ops = &clk_branch2_ops,
1980 },
1981 },
1982 };
1983
1984 static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
1985 .halt_reg = 0x274dc,
1986 .halt_check = BRANCH_HALT_VOTED,
1987 .clkr = {
1988 .enable_reg = 0x62008,
1989 .enable_mask = BIT(14),
1990 .hw.init = &(struct clk_init_data){
1991 .name = "gcc_qupv3_wrap0_s4_clk",
1992 .parent_data = &(const struct clk_parent_data){
1993 .hw = &gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
1994 },
1995 .num_parents = 1,
1996 .flags = CLK_SET_RATE_PARENT,
1997 .ops = &clk_branch2_ops,
1998 },
1999 },
2000 };
2001
2002 static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
2003 .halt_reg = 0x27610,
2004 .halt_check = BRANCH_HALT_VOTED,
2005 .clkr = {
2006 .enable_reg = 0x62008,
2007 .enable_mask = BIT(15),
2008 .hw.init = &(struct clk_init_data){
2009 .name = "gcc_qupv3_wrap0_s5_clk",
2010 .parent_data = &(const struct clk_parent_data){
2011 .hw = &gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
2012 },
2013 .num_parents = 1,
2014 .flags = CLK_SET_RATE_PARENT,
2015 .ops = &clk_branch2_ops,
2016 },
2017 },
2018 };
2019
2020 static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
2021 .halt_reg = 0x27744,
2022 .halt_check = BRANCH_HALT_VOTED,
2023 .clkr = {
2024 .enable_reg = 0x62008,
2025 .enable_mask = BIT(16),
2026 .hw.init = &(struct clk_init_data){
2027 .name = "gcc_qupv3_wrap0_s6_clk",
2028 .parent_data = &(const struct clk_parent_data){
2029 .hw = &gcc_qupv3_wrap0_s6_clk_src.clkr.hw,
2030 },
2031 .num_parents = 1,
2032 .flags = CLK_SET_RATE_PARENT,
2033 .ops = &clk_branch2_ops,
2034 },
2035 },
2036 };
2037
2038 static struct clk_branch gcc_qupv3_wrap0_s7_clk = {
2039 .halt_reg = 0x27878,
2040 .halt_check = BRANCH_HALT_VOTED,
2041 .clkr = {
2042 .enable_reg = 0x62008,
2043 .enable_mask = BIT(17),
2044 .hw.init = &(struct clk_init_data){
2045 .name = "gcc_qupv3_wrap0_s7_clk",
2046 .parent_data = &(const struct clk_parent_data){
2047 .hw = &gcc_qupv3_wrap0_s7_clk_src.clkr.hw,
2048 },
2049 .num_parents = 1,
2050 .flags = CLK_SET_RATE_PARENT,
2051 .ops = &clk_branch2_ops,
2052 },
2053 },
2054 };
2055
2056 static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
2057 .halt_reg = 0x3314c,
2058 .halt_check = BRANCH_HALT_VOTED,
2059 .clkr = {
2060 .enable_reg = 0x62008,
2061 .enable_mask = BIT(18),
2062 .hw.init = &(struct clk_init_data){
2063 .name = "gcc_qupv3_wrap1_core_2x_clk",
2064 .ops = &clk_branch2_ops,
2065 },
2066 },
2067 };
2068
2069 static struct clk_branch gcc_qupv3_wrap1_core_clk = {
2070 .halt_reg = 0x33140,
2071 .halt_check = BRANCH_HALT_VOTED,
2072 .clkr = {
2073 .enable_reg = 0x62008,
2074 .enable_mask = BIT(19),
2075 .hw.init = &(struct clk_init_data){
2076 .name = "gcc_qupv3_wrap1_core_clk",
2077 .ops = &clk_branch2_ops,
2078 },
2079 },
2080 };
2081
2082 static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
2083 .halt_reg = 0x2800c,
2084 .halt_check = BRANCH_HALT_VOTED,
2085 .clkr = {
2086 .enable_reg = 0x62008,
2087 .enable_mask = BIT(22),
2088 .hw.init = &(struct clk_init_data){
2089 .name = "gcc_qupv3_wrap1_s0_clk",
2090 .parent_data = &(const struct clk_parent_data){
2091 .hw = &gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
2092 },
2093 .num_parents = 1,
2094 .flags = CLK_SET_RATE_PARENT,
2095 .ops = &clk_branch2_ops,
2096 },
2097 },
2098 };
2099
2100 static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
2101 .halt_reg = 0x28140,
2102 .halt_check = BRANCH_HALT_VOTED,
2103 .clkr = {
2104 .enable_reg = 0x62008,
2105 .enable_mask = BIT(23),
2106 .hw.init = &(struct clk_init_data){
2107 .name = "gcc_qupv3_wrap1_s1_clk",
2108 .parent_data = &(const struct clk_parent_data){
2109 .hw = &gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
2110 },
2111 .num_parents = 1,
2112 .flags = CLK_SET_RATE_PARENT,
2113 .ops = &clk_branch2_ops,
2114 },
2115 },
2116 };
2117
2118 static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
2119 .halt_reg = 0x28274,
2120 .halt_check = BRANCH_HALT_VOTED,
2121 .clkr = {
2122 .enable_reg = 0x62008,
2123 .enable_mask = BIT(24),
2124 .hw.init = &(struct clk_init_data){
2125 .name = "gcc_qupv3_wrap1_s2_clk",
2126 .parent_data = &(const struct clk_parent_data){
2127 .hw = &gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
2128 },
2129 .num_parents = 1,
2130 .flags = CLK_SET_RATE_PARENT,
2131 .ops = &clk_branch2_ops,
2132 },
2133 },
2134 };
2135
2136 static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
2137 .halt_reg = 0x283a8,
2138 .halt_check = BRANCH_HALT_VOTED,
2139 .clkr = {
2140 .enable_reg = 0x62008,
2141 .enable_mask = BIT(25),
2142 .hw.init = &(struct clk_init_data){
2143 .name = "gcc_qupv3_wrap1_s3_clk",
2144 .parent_data = &(const struct clk_parent_data){
2145 .hw = &gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
2146 },
2147 .num_parents = 1,
2148 .flags = CLK_SET_RATE_PARENT,
2149 .ops = &clk_branch2_ops,
2150 },
2151 },
2152 };
2153
2154 static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
2155 .halt_reg = 0x284dc,
2156 .halt_check = BRANCH_HALT_VOTED,
2157 .clkr = {
2158 .enable_reg = 0x62008,
2159 .enable_mask = BIT(26),
2160 .hw.init = &(struct clk_init_data){
2161 .name = "gcc_qupv3_wrap1_s4_clk",
2162 .parent_data = &(const struct clk_parent_data){
2163 .hw = &gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
2164 },
2165 .num_parents = 1,
2166 .flags = CLK_SET_RATE_PARENT,
2167 .ops = &clk_branch2_ops,
2168 },
2169 },
2170 };
2171
2172 static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
2173 .halt_reg = 0x28610,
2174 .halt_check = BRANCH_HALT_VOTED,
2175 .clkr = {
2176 .enable_reg = 0x62008,
2177 .enable_mask = BIT(27),
2178 .hw.init = &(struct clk_init_data){
2179 .name = "gcc_qupv3_wrap1_s5_clk",
2180 .parent_data = &(const struct clk_parent_data){
2181 .hw = &gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
2182 },
2183 .num_parents = 1,
2184 .flags = CLK_SET_RATE_PARENT,
2185 .ops = &clk_branch2_ops,
2186 },
2187 },
2188 };
2189
2190 static struct clk_branch gcc_qupv3_wrap1_s6_clk = {
2191 .halt_reg = 0x28744,
2192 .halt_check = BRANCH_HALT_VOTED,
2193 .clkr = {
2194 .enable_reg = 0x62008,
2195 .enable_mask = BIT(28),
2196 .hw.init = &(struct clk_init_data){
2197 .name = "gcc_qupv3_wrap1_s6_clk",
2198 .parent_data = &(const struct clk_parent_data){
2199 .hw = &gcc_qupv3_wrap1_s6_clk_src.clkr.hw,
2200 },
2201 .num_parents = 1,
2202 .flags = CLK_SET_RATE_PARENT,
2203 .ops = &clk_branch2_ops,
2204 },
2205 },
2206 };
2207
2208 static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = {
2209 .halt_reg = 0x3328c,
2210 .halt_check = BRANCH_HALT_VOTED,
2211 .clkr = {
2212 .enable_reg = 0x62010,
2213 .enable_mask = BIT(3),
2214 .hw.init = &(struct clk_init_data){
2215 .name = "gcc_qupv3_wrap2_core_2x_clk",
2216 .ops = &clk_branch2_ops,
2217 },
2218 },
2219 };
2220
2221 static struct clk_branch gcc_qupv3_wrap2_core_clk = {
2222 .halt_reg = 0x33280,
2223 .halt_check = BRANCH_HALT_VOTED,
2224 .clkr = {
2225 .enable_reg = 0x62010,
2226 .enable_mask = BIT(0),
2227 .hw.init = &(struct clk_init_data){
2228 .name = "gcc_qupv3_wrap2_core_clk",
2229 .ops = &clk_branch2_ops,
2230 },
2231 },
2232 };
2233
2234 static struct clk_branch gcc_qupv3_wrap2_s0_clk = {
2235 .halt_reg = 0x2e00c,
2236 .halt_check = BRANCH_HALT_VOTED,
2237 .clkr = {
2238 .enable_reg = 0x62010,
2239 .enable_mask = BIT(4),
2240 .hw.init = &(struct clk_init_data){
2241 .name = "gcc_qupv3_wrap2_s0_clk",
2242 .parent_data = &(const struct clk_parent_data){
2243 .hw = &gcc_qupv3_wrap2_s0_clk_src.clkr.hw,
2244 },
2245 .num_parents = 1,
2246 .flags = CLK_SET_RATE_PARENT,
2247 .ops = &clk_branch2_ops,
2248 },
2249 },
2250 };
2251
2252 static struct clk_branch gcc_qupv3_wrap2_s1_clk = {
2253 .halt_reg = 0x2e140,
2254 .halt_check = BRANCH_HALT_VOTED,
2255 .clkr = {
2256 .enable_reg = 0x62010,
2257 .enable_mask = BIT(5),
2258 .hw.init = &(struct clk_init_data){
2259 .name = "gcc_qupv3_wrap2_s1_clk",
2260 .parent_data = &(const struct clk_parent_data){
2261 .hw = &gcc_qupv3_wrap2_s1_clk_src.clkr.hw,
2262 },
2263 .num_parents = 1,
2264 .flags = CLK_SET_RATE_PARENT,
2265 .ops = &clk_branch2_ops,
2266 },
2267 },
2268 };
2269
2270 static struct clk_branch gcc_qupv3_wrap2_s2_clk = {
2271 .halt_reg = 0x2e274,
2272 .halt_check = BRANCH_HALT_VOTED,
2273 .clkr = {
2274 .enable_reg = 0x62010,
2275 .enable_mask = BIT(6),
2276 .hw.init = &(struct clk_init_data){
2277 .name = "gcc_qupv3_wrap2_s2_clk",
2278 .parent_data = &(const struct clk_parent_data){
2279 .hw = &gcc_qupv3_wrap2_s2_clk_src.clkr.hw,
2280 },
2281 .num_parents = 1,
2282 .flags = CLK_SET_RATE_PARENT,
2283 .ops = &clk_branch2_ops,
2284 },
2285 },
2286 };
2287
2288 static struct clk_branch gcc_qupv3_wrap2_s3_clk = {
2289 .halt_reg = 0x2e3a8,
2290 .halt_check = BRANCH_HALT_VOTED,
2291 .clkr = {
2292 .enable_reg = 0x62010,
2293 .enable_mask = BIT(7),
2294 .hw.init = &(struct clk_init_data){
2295 .name = "gcc_qupv3_wrap2_s3_clk",
2296 .parent_data = &(const struct clk_parent_data){
2297 .hw = &gcc_qupv3_wrap2_s3_clk_src.clkr.hw,
2298 },
2299 .num_parents = 1,
2300 .flags = CLK_SET_RATE_PARENT,
2301 .ops = &clk_branch2_ops,
2302 },
2303 },
2304 };
2305
2306 static struct clk_branch gcc_qupv3_wrap2_s4_clk = {
2307 .halt_reg = 0x2e4dc,
2308 .halt_check = BRANCH_HALT_VOTED,
2309 .clkr = {
2310 .enable_reg = 0x62010,
2311 .enable_mask = BIT(8),
2312 .hw.init = &(struct clk_init_data){
2313 .name = "gcc_qupv3_wrap2_s4_clk",
2314 .parent_data = &(const struct clk_parent_data){
2315 .hw = &gcc_qupv3_wrap2_s4_clk_src.clkr.hw,
2316 },
2317 .num_parents = 1,
2318 .flags = CLK_SET_RATE_PARENT,
2319 .ops = &clk_branch2_ops,
2320 },
2321 },
2322 };
2323
2324 static struct clk_branch gcc_qupv3_wrap2_s5_clk = {
2325 .halt_reg = 0x2e610,
2326 .halt_check = BRANCH_HALT_VOTED,
2327 .clkr = {
2328 .enable_reg = 0x62010,
2329 .enable_mask = BIT(9),
2330 .hw.init = &(struct clk_init_data){
2331 .name = "gcc_qupv3_wrap2_s5_clk",
2332 .parent_data = &(const struct clk_parent_data){
2333 .hw = &gcc_qupv3_wrap2_s5_clk_src.clkr.hw,
2334 },
2335 .num_parents = 1,
2336 .flags = CLK_SET_RATE_PARENT,
2337 .ops = &clk_branch2_ops,
2338 },
2339 },
2340 };
2341
2342 static struct clk_branch gcc_qupv3_wrap2_s6_clk = {
2343 .halt_reg = 0x2e744,
2344 .halt_check = BRANCH_HALT_VOTED,
2345 .clkr = {
2346 .enable_reg = 0x62010,
2347 .enable_mask = BIT(10),
2348 .hw.init = &(struct clk_init_data){
2349 .name = "gcc_qupv3_wrap2_s6_clk",
2350 .parent_data = &(const struct clk_parent_data){
2351 .hw = &gcc_qupv3_wrap2_s6_clk_src.clkr.hw,
2352 },
2353 .num_parents = 1,
2354 .flags = CLK_SET_RATE_PARENT,
2355 .ops = &clk_branch2_ops,
2356 },
2357 },
2358 };
2359
2360 static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
2361 .halt_reg = 0x27004,
2362 .halt_check = BRANCH_HALT_VOTED,
2363 .hwcg_reg = 0x27004,
2364 .hwcg_bit = 1,
2365 .clkr = {
2366 .enable_reg = 0x62008,
2367 .enable_mask = BIT(6),
2368 .hw.init = &(struct clk_init_data){
2369 .name = "gcc_qupv3_wrap_0_m_ahb_clk",
2370 .ops = &clk_branch2_ops,
2371 },
2372 },
2373 };
2374
2375 static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
2376 .halt_reg = 0x27008,
2377 .halt_check = BRANCH_HALT_VOTED,
2378 .hwcg_reg = 0x27008,
2379 .hwcg_bit = 1,
2380 .clkr = {
2381 .enable_reg = 0x62008,
2382 .enable_mask = BIT(7),
2383 .hw.init = &(struct clk_init_data){
2384 .name = "gcc_qupv3_wrap_0_s_ahb_clk",
2385 .ops = &clk_branch2_ops,
2386 },
2387 },
2388 };
2389
2390 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
2391 .halt_reg = 0x28004,
2392 .halt_check = BRANCH_HALT_VOTED,
2393 .hwcg_reg = 0x28004,
2394 .hwcg_bit = 1,
2395 .clkr = {
2396 .enable_reg = 0x62008,
2397 .enable_mask = BIT(20),
2398 .hw.init = &(struct clk_init_data){
2399 .name = "gcc_qupv3_wrap_1_m_ahb_clk",
2400 .ops = &clk_branch2_ops,
2401 },
2402 },
2403 };
2404
2405 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
2406 .halt_reg = 0x28008,
2407 .halt_check = BRANCH_HALT_VOTED,
2408 .hwcg_reg = 0x28008,
2409 .hwcg_bit = 1,
2410 .clkr = {
2411 .enable_reg = 0x62008,
2412 .enable_mask = BIT(21),
2413 .hw.init = &(struct clk_init_data){
2414 .name = "gcc_qupv3_wrap_1_s_ahb_clk",
2415 .ops = &clk_branch2_ops,
2416 },
2417 },
2418 };
2419
2420 static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {
2421 .halt_reg = 0x2e004,
2422 .halt_check = BRANCH_HALT_VOTED,
2423 .hwcg_reg = 0x2e004,
2424 .hwcg_bit = 1,
2425 .clkr = {
2426 .enable_reg = 0x62010,
2427 .enable_mask = BIT(2),
2428 .hw.init = &(struct clk_init_data){
2429 .name = "gcc_qupv3_wrap_2_m_ahb_clk",
2430 .ops = &clk_branch2_ops,
2431 },
2432 },
2433 };
2434
2435 static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {
2436 .halt_reg = 0x2e008,
2437 .halt_check = BRANCH_HALT_VOTED,
2438 .hwcg_reg = 0x2e008,
2439 .hwcg_bit = 1,
2440 .clkr = {
2441 .enable_reg = 0x62010,
2442 .enable_mask = BIT(1),
2443 .hw.init = &(struct clk_init_data){
2444 .name = "gcc_qupv3_wrap_2_s_ahb_clk",
2445 .ops = &clk_branch2_ops,
2446 },
2447 },
2448 };
2449
2450 static struct clk_branch gcc_sdcc2_ahb_clk = {
2451 .halt_reg = 0x2400c,
2452 .halt_check = BRANCH_HALT,
2453 .clkr = {
2454 .enable_reg = 0x2400c,
2455 .enable_mask = BIT(0),
2456 .hw.init = &(struct clk_init_data){
2457 .name = "gcc_sdcc2_ahb_clk",
2458 .ops = &clk_branch2_ops,
2459 },
2460 },
2461 };
2462
2463 static struct clk_branch gcc_sdcc2_apps_clk = {
2464 .halt_reg = 0x24004,
2465 .halt_check = BRANCH_HALT,
2466 .clkr = {
2467 .enable_reg = 0x24004,
2468 .enable_mask = BIT(0),
2469 .hw.init = &(struct clk_init_data){
2470 .name = "gcc_sdcc2_apps_clk",
2471 .parent_data = &(const struct clk_parent_data){
2472 .hw = &gcc_sdcc2_apps_clk_src.clkr.hw,
2473 },
2474 .num_parents = 1,
2475 .flags = CLK_SET_RATE_PARENT,
2476 .ops = &clk_branch2_ops,
2477 },
2478 },
2479 };
2480
2481 static struct clk_branch gcc_sdcc2_at_clk = {
2482 .halt_reg = 0x24010,
2483 .halt_check = BRANCH_HALT_VOTED,
2484 .hwcg_reg = 0x24010,
2485 .hwcg_bit = 1,
2486 .clkr = {
2487 .enable_reg = 0x24010,
2488 .enable_mask = BIT(0),
2489 .hw.init = &(struct clk_init_data){
2490 .name = "gcc_sdcc2_at_clk",
2491 .ops = &clk_branch2_ops,
2492 },
2493 },
2494 };
2495
2496 static struct clk_branch gcc_sdcc4_ahb_clk = {
2497 .halt_reg = 0x2600c,
2498 .halt_check = BRANCH_HALT,
2499 .clkr = {
2500 .enable_reg = 0x2600c,
2501 .enable_mask = BIT(0),
2502 .hw.init = &(struct clk_init_data){
2503 .name = "gcc_sdcc4_ahb_clk",
2504 .ops = &clk_branch2_ops,
2505 },
2506 },
2507 };
2508
2509 static struct clk_branch gcc_sdcc4_apps_clk = {
2510 .halt_reg = 0x26004,
2511 .halt_check = BRANCH_HALT,
2512 .clkr = {
2513 .enable_reg = 0x26004,
2514 .enable_mask = BIT(0),
2515 .hw.init = &(struct clk_init_data){
2516 .name = "gcc_sdcc4_apps_clk",
2517 .parent_data = &(const struct clk_parent_data){
2518 .hw = &gcc_sdcc4_apps_clk_src.clkr.hw,
2519 },
2520 .num_parents = 1,
2521 .flags = CLK_SET_RATE_PARENT,
2522 .ops = &clk_branch2_ops,
2523 },
2524 },
2525 };
2526
2527 static struct clk_branch gcc_sdcc4_at_clk = {
2528 .halt_reg = 0x26010,
2529 .halt_check = BRANCH_HALT_VOTED,
2530 .hwcg_reg = 0x26010,
2531 .hwcg_bit = 1,
2532 .clkr = {
2533 .enable_reg = 0x26010,
2534 .enable_mask = BIT(0),
2535 .hw.init = &(struct clk_init_data){
2536 .name = "gcc_sdcc4_at_clk",
2537 .ops = &clk_branch2_ops,
2538 },
2539 },
2540 };
2541
2542 static struct clk_branch gcc_ufs_0_clkref_en = {
2543 .halt_reg = 0x9c000,
2544 .halt_check = BRANCH_HALT,
2545 .clkr = {
2546 .enable_reg = 0x9c000,
2547 .enable_mask = BIT(0),
2548 .hw.init = &(struct clk_init_data){
2549 .name = "gcc_ufs_0_clkref_en",
2550 .ops = &clk_branch2_ops,
2551 },
2552 },
2553 };
2554
2555 static struct clk_branch gcc_ufs_phy_ahb_clk = {
2556 .halt_reg = 0x87020,
2557 .halt_check = BRANCH_HALT_VOTED,
2558 .hwcg_reg = 0x87020,
2559 .hwcg_bit = 1,
2560 .clkr = {
2561 .enable_reg = 0x87020,
2562 .enable_mask = BIT(0),
2563 .hw.init = &(struct clk_init_data){
2564 .name = "gcc_ufs_phy_ahb_clk",
2565 .ops = &clk_branch2_ops,
2566 },
2567 },
2568 };
2569
2570 static struct clk_branch gcc_ufs_phy_axi_clk = {
2571 .halt_reg = 0x87018,
2572 .halt_check = BRANCH_HALT_VOTED,
2573 .hwcg_reg = 0x87018,
2574 .hwcg_bit = 1,
2575 .clkr = {
2576 .enable_reg = 0x87018,
2577 .enable_mask = BIT(0),
2578 .hw.init = &(struct clk_init_data){
2579 .name = "gcc_ufs_phy_axi_clk",
2580 .parent_data = &(const struct clk_parent_data){
2581 .hw = &gcc_ufs_phy_axi_clk_src.clkr.hw,
2582 },
2583 .num_parents = 1,
2584 .flags = CLK_SET_RATE_PARENT,
2585 .ops = &clk_branch2_ops,
2586 },
2587 },
2588 };
2589
2590 static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk = {
2591 .halt_reg = 0x87018,
2592 .halt_check = BRANCH_HALT_VOTED,
2593 .hwcg_reg = 0x87018,
2594 .hwcg_bit = 1,
2595 .clkr = {
2596 .enable_reg = 0x87018,
2597 .enable_mask = BIT(1),
2598 .hw.init = &(struct clk_init_data){
2599 .name = "gcc_ufs_phy_axi_hw_ctl_clk",
2600 .parent_data = &(const struct clk_parent_data){
2601 .hw = &gcc_ufs_phy_axi_clk_src.clkr.hw,
2602 },
2603 .num_parents = 1,
2604 .flags = CLK_SET_RATE_PARENT,
2605 .ops = &clk_branch2_ops,
2606 },
2607 },
2608 };
2609
2610 static struct clk_branch gcc_ufs_phy_ice_core_clk = {
2611 .halt_reg = 0x8706c,
2612 .halt_check = BRANCH_HALT_VOTED,
2613 .hwcg_reg = 0x8706c,
2614 .hwcg_bit = 1,
2615 .clkr = {
2616 .enable_reg = 0x8706c,
2617 .enable_mask = BIT(0),
2618 .hw.init = &(struct clk_init_data){
2619 .name = "gcc_ufs_phy_ice_core_clk",
2620 .parent_data = &(const struct clk_parent_data){
2621 .hw = &gcc_ufs_phy_ice_core_clk_src.clkr.hw,
2622 },
2623 .num_parents = 1,
2624 .flags = CLK_SET_RATE_PARENT,
2625 .ops = &clk_branch2_ops,
2626 },
2627 },
2628 };
2629
2630 static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk = {
2631 .halt_reg = 0x8706c,
2632 .halt_check = BRANCH_HALT_VOTED,
2633 .hwcg_reg = 0x8706c,
2634 .hwcg_bit = 1,
2635 .clkr = {
2636 .enable_reg = 0x8706c,
2637 .enable_mask = BIT(1),
2638 .hw.init = &(struct clk_init_data){
2639 .name = "gcc_ufs_phy_ice_core_hw_ctl_clk",
2640 .parent_data = &(const struct clk_parent_data){
2641 .hw = &gcc_ufs_phy_ice_core_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_ufs_phy_phy_aux_clk = {
2651 .halt_reg = 0x870a4,
2652 .halt_check = BRANCH_HALT_VOTED,
2653 .hwcg_reg = 0x870a4,
2654 .hwcg_bit = 1,
2655 .clkr = {
2656 .enable_reg = 0x870a4,
2657 .enable_mask = BIT(0),
2658 .hw.init = &(struct clk_init_data){
2659 .name = "gcc_ufs_phy_phy_aux_clk",
2660 .parent_data = &(const struct clk_parent_data){
2661 .hw = &gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
2662 },
2663 .num_parents = 1,
2664 .flags = CLK_SET_RATE_PARENT,
2665 .ops = &clk_branch2_ops,
2666 },
2667 },
2668 };
2669
2670 static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk = {
2671 .halt_reg = 0x870a4,
2672 .halt_check = BRANCH_HALT_VOTED,
2673 .hwcg_reg = 0x870a4,
2674 .hwcg_bit = 1,
2675 .clkr = {
2676 .enable_reg = 0x870a4,
2677 .enable_mask = BIT(1),
2678 .hw.init = &(struct clk_init_data){
2679 .name = "gcc_ufs_phy_phy_aux_hw_ctl_clk",
2680 .parent_data = &(const struct clk_parent_data){
2681 .hw = &gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
2682 },
2683 .num_parents = 1,
2684 .flags = CLK_SET_RATE_PARENT,
2685 .ops = &clk_branch2_ops,
2686 },
2687 },
2688 };
2689
2690 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
2691 .halt_reg = 0x87028,
2692 .halt_check = BRANCH_HALT_DELAY,
2693 .clkr = {
2694 .enable_reg = 0x87028,
2695 .enable_mask = BIT(0),
2696 .hw.init = &(struct clk_init_data){
2697 .name = "gcc_ufs_phy_rx_symbol_0_clk",
2698 .parent_data = &(const struct clk_parent_data){
2699 .hw = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw,
2700 },
2701 .num_parents = 1,
2702 .flags = CLK_SET_RATE_PARENT,
2703 .ops = &clk_branch2_ops,
2704 },
2705 },
2706 };
2707
2708 static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
2709 .halt_reg = 0x870c0,
2710 .halt_check = BRANCH_HALT_DELAY,
2711 .clkr = {
2712 .enable_reg = 0x870c0,
2713 .enable_mask = BIT(0),
2714 .hw.init = &(struct clk_init_data){
2715 .name = "gcc_ufs_phy_rx_symbol_1_clk",
2716 .parent_data = &(const struct clk_parent_data){
2717 .hw = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw,
2718 },
2719 .num_parents = 1,
2720 .flags = CLK_SET_RATE_PARENT,
2721 .ops = &clk_branch2_ops,
2722 },
2723 },
2724 };
2725
2726 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
2727 .halt_reg = 0x87024,
2728 .halt_check = BRANCH_HALT_DELAY,
2729 .clkr = {
2730 .enable_reg = 0x87024,
2731 .enable_mask = BIT(0),
2732 .hw.init = &(struct clk_init_data){
2733 .name = "gcc_ufs_phy_tx_symbol_0_clk",
2734 .parent_data = &(const struct clk_parent_data){
2735 .hw = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw,
2736 },
2737 .num_parents = 1,
2738 .flags = CLK_SET_RATE_PARENT,
2739 .ops = &clk_branch2_ops,
2740 },
2741 },
2742 };
2743
2744 static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
2745 .halt_reg = 0x87064,
2746 .halt_check = BRANCH_HALT_VOTED,
2747 .hwcg_reg = 0x87064,
2748 .hwcg_bit = 1,
2749 .clkr = {
2750 .enable_reg = 0x87064,
2751 .enable_mask = BIT(0),
2752 .hw.init = &(struct clk_init_data){
2753 .name = "gcc_ufs_phy_unipro_core_clk",
2754 .parent_data = &(const struct clk_parent_data){
2755 .hw = &gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
2756 },
2757 .num_parents = 1,
2758 .flags = CLK_SET_RATE_PARENT,
2759 .ops = &clk_branch2_ops,
2760 },
2761 },
2762 };
2763
2764 static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk = {
2765 .halt_reg = 0x87064,
2766 .halt_check = BRANCH_HALT_VOTED,
2767 .hwcg_reg = 0x87064,
2768 .hwcg_bit = 1,
2769 .clkr = {
2770 .enable_reg = 0x87064,
2771 .enable_mask = BIT(1),
2772 .hw.init = &(struct clk_init_data){
2773 .name = "gcc_ufs_phy_unipro_core_hw_ctl_clk",
2774 .parent_data = &(const struct clk_parent_data){
2775 .hw = &gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
2776 },
2777 .num_parents = 1,
2778 .flags = CLK_SET_RATE_PARENT,
2779 .ops = &clk_branch2_ops,
2780 },
2781 },
2782 };
2783
2784 static struct clk_branch gcc_usb30_prim_master_clk = {
2785 .halt_reg = 0x49018,
2786 .halt_check = BRANCH_HALT,
2787 .clkr = {
2788 .enable_reg = 0x49018,
2789 .enable_mask = BIT(0),
2790 .hw.init = &(struct clk_init_data){
2791 .name = "gcc_usb30_prim_master_clk",
2792 .parent_data = &(const struct clk_parent_data){
2793 .hw = &gcc_usb30_prim_master_clk_src.clkr.hw,
2794 },
2795 .num_parents = 1,
2796 .flags = CLK_SET_RATE_PARENT,
2797 .ops = &clk_branch2_ops,
2798 },
2799 },
2800 };
2801
2802 static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
2803 .halt_reg = 0x49024,
2804 .halt_check = BRANCH_HALT,
2805 .clkr = {
2806 .enable_reg = 0x49024,
2807 .enable_mask = BIT(0),
2808 .hw.init = &(struct clk_init_data){
2809 .name = "gcc_usb30_prim_mock_utmi_clk",
2810 .parent_data = &(const struct clk_parent_data){
2811 .hw = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,
2812 },
2813 .num_parents = 1,
2814 .flags = CLK_SET_RATE_PARENT,
2815 .ops = &clk_branch2_ops,
2816 },
2817 },
2818 };
2819
2820 static struct clk_branch gcc_usb30_prim_sleep_clk = {
2821 .halt_reg = 0x49020,
2822 .halt_check = BRANCH_HALT,
2823 .clkr = {
2824 .enable_reg = 0x49020,
2825 .enable_mask = BIT(0),
2826 .hw.init = &(struct clk_init_data){
2827 .name = "gcc_usb30_prim_sleep_clk",
2828 .ops = &clk_branch2_ops,
2829 },
2830 },
2831 };
2832
2833 static struct clk_branch gcc_usb3_0_clkref_en = {
2834 .halt_reg = 0x9c010,
2835 .halt_check = BRANCH_HALT,
2836 .clkr = {
2837 .enable_reg = 0x9c010,
2838 .enable_mask = BIT(0),
2839 .hw.init = &(struct clk_init_data){
2840 .name = "gcc_usb3_0_clkref_en",
2841 .ops = &clk_branch2_ops,
2842 },
2843 },
2844 };
2845
2846 static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
2847 .halt_reg = 0x4905c,
2848 .halt_check = BRANCH_HALT,
2849 .clkr = {
2850 .enable_reg = 0x4905c,
2851 .enable_mask = BIT(0),
2852 .hw.init = &(struct clk_init_data){
2853 .name = "gcc_usb3_prim_phy_aux_clk",
2854 .parent_data = &(const struct clk_parent_data){
2855 .hw = &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
2856 },
2857 .num_parents = 1,
2858 .flags = CLK_SET_RATE_PARENT,
2859 .ops = &clk_branch2_ops,
2860 },
2861 },
2862 };
2863
2864 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
2865 .halt_reg = 0x49060,
2866 .halt_check = BRANCH_HALT,
2867 .clkr = {
2868 .enable_reg = 0x49060,
2869 .enable_mask = BIT(0),
2870 .hw.init = &(struct clk_init_data){
2871 .name = "gcc_usb3_prim_phy_com_aux_clk",
2872 .parent_data = &(const struct clk_parent_data){
2873 .hw = &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
2874 },
2875 .num_parents = 1,
2876 .flags = CLK_SET_RATE_PARENT,
2877 .ops = &clk_branch2_ops,
2878 },
2879 },
2880 };
2881
2882 static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
2883 .halt_reg = 0x49064,
2884 .halt_check = BRANCH_HALT_DELAY,
2885 .hwcg_reg = 0x49064,
2886 .hwcg_bit = 1,
2887 .clkr = {
2888 .enable_reg = 0x49064,
2889 .enable_mask = BIT(0),
2890 .hw.init = &(struct clk_init_data){
2891 .name = "gcc_usb3_prim_phy_pipe_clk",
2892 .parent_data = &(const struct clk_parent_data){
2893 .hw = &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw,
2894 },
2895 .num_parents = 1,
2896 .flags = CLK_SET_RATE_PARENT,
2897 .ops = &clk_branch2_ops,
2898 },
2899 },
2900 };
2901
2902 static struct clk_branch gcc_video_axi0_clk = {
2903 .halt_reg = 0x42018,
2904 .halt_check = BRANCH_HALT_SKIP,
2905 .hwcg_reg = 0x42018,
2906 .hwcg_bit = 1,
2907 .clkr = {
2908 .enable_reg = 0x42018,
2909 .enable_mask = BIT(0),
2910 .hw.init = &(struct clk_init_data){
2911 .name = "gcc_video_axi0_clk",
2912 .ops = &clk_branch2_ops,
2913 },
2914 },
2915 };
2916
2917 static struct clk_branch gcc_video_axi1_clk = {
2918 .halt_reg = 0x42020,
2919 .halt_check = BRANCH_HALT_SKIP,
2920 .hwcg_reg = 0x42020,
2921 .hwcg_bit = 1,
2922 .clkr = {
2923 .enable_reg = 0x42020,
2924 .enable_mask = BIT(0),
2925 .hw.init = &(struct clk_init_data){
2926 .name = "gcc_video_axi1_clk",
2927 .ops = &clk_branch2_ops,
2928 },
2929 },
2930 };
2931
2932 static struct gdsc pcie_0_gdsc = {
2933 .gdscr = 0x7b004,
2934 .pd = {
2935 .name = "pcie_0_gdsc",
2936 },
2937 .pwrsts = PWRSTS_OFF_ON,
2938 };
2939
2940 static struct gdsc pcie_1_gdsc = {
2941 .gdscr = 0x9d004,
2942 .pd = {
2943 .name = "pcie_1_gdsc",
2944 },
2945 .pwrsts = PWRSTS_OFF_ON,
2946 };
2947
2948 static struct gdsc ufs_phy_gdsc = {
2949 .gdscr = 0x87004,
2950 .pd = {
2951 .name = "ufs_phy_gdsc",
2952 },
2953 .pwrsts = PWRSTS_OFF_ON,
2954 };
2955
2956 static struct gdsc usb30_prim_gdsc = {
2957 .gdscr = 0x49004,
2958 .pd = {
2959 .name = "usb30_prim_gdsc",
2960 },
2961 .pwrsts = PWRSTS_OFF_ON,
2962 };
2963
2964 static struct clk_regmap *gcc_sm8450_clocks[] = {
2965 [GCC_AGGRE_NOC_PCIE_0_AXI_CLK] = &gcc_aggre_noc_pcie_0_axi_clk.clkr,
2966 [GCC_AGGRE_NOC_PCIE_1_AXI_CLK] = &gcc_aggre_noc_pcie_1_axi_clk.clkr,
2967 [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
2968 [GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_phy_axi_hw_ctl_clk.clkr,
2969 [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
2970 [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
2971 [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
2972 [GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
2973 [GCC_CFG_NOC_PCIE_ANOC_AHB_CLK] = &gcc_cfg_noc_pcie_anoc_ahb_clk.clkr,
2974 [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
2975 [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
2976 [GCC_DDRSS_PCIE_SF_TBU_CLK] = &gcc_ddrss_pcie_sf_tbu_clk.clkr,
2977 [GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
2978 [GCC_DISP_SF_AXI_CLK] = &gcc_disp_sf_axi_clk.clkr,
2979 [GCC_EUSB3_0_CLKREF_EN] = &gcc_eusb3_0_clkref_en.clkr,
2980 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2981 [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
2982 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2983 [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
2984 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
2985 [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
2986 [GCC_GPLL0] = &gcc_gpll0.clkr,
2987 [GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr,
2988 [GCC_GPLL4] = &gcc_gpll4.clkr,
2989 [GCC_GPLL9] = &gcc_gpll9.clkr,
2990 [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
2991 [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
2992 [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
2993 [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
2994 [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
2995 [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
2996 [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
2997 [GCC_PCIE_0_CLKREF_EN] = &gcc_pcie_0_clkref_en.clkr,
2998 [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
2999 [GCC_PCIE_0_PHY_RCHNG_CLK] = &gcc_pcie_0_phy_rchng_clk.clkr,
3000 [GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr,
3001 [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
3002 [GCC_PCIE_0_PIPE_CLK_SRC] = &gcc_pcie_0_pipe_clk_src.clkr,
3003 [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
3004 [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
3005 [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
3006 [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
3007 [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
3008 [GCC_PCIE_1_CLKREF_EN] = &gcc_pcie_1_clkref_en.clkr,
3009 [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
3010 [GCC_PCIE_1_PHY_AUX_CLK] = &gcc_pcie_1_phy_aux_clk.clkr,
3011 [GCC_PCIE_1_PHY_AUX_CLK_SRC] = &gcc_pcie_1_phy_aux_clk_src.clkr,
3012 [GCC_PCIE_1_PHY_RCHNG_CLK] = &gcc_pcie_1_phy_rchng_clk.clkr,
3013 [GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr,
3014 [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
3015 [GCC_PCIE_1_PIPE_CLK_SRC] = &gcc_pcie_1_pipe_clk_src.clkr,
3016 [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
3017 [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
3018 [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3019 [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
3020 [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3021 [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
3022 [GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
3023 [GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
3024 [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
3025 [GCC_QMIP_GPU_AHB_CLK] = &gcc_qmip_gpu_ahb_clk.clkr,
3026 [GCC_QMIP_PCIE_AHB_CLK] = &gcc_qmip_pcie_ahb_clk.clkr,
3027 [GCC_QMIP_VIDEO_CV_CPU_AHB_CLK] = &gcc_qmip_video_cv_cpu_ahb_clk.clkr,
3028 [GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,
3029 [GCC_QMIP_VIDEO_V_CPU_AHB_CLK] = &gcc_qmip_video_v_cpu_ahb_clk.clkr,
3030 [GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
3031 [GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,
3032 [GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,
3033 [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
3034 [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
3035 [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
3036 [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
3037 [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
3038 [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
3039 [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
3040 [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
3041 [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
3042 [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
3043 [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
3044 [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
3045 [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
3046 [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
3047 [GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
3048 [GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
3049 [GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
3050 [GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
3051 [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
3052 [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
3053 [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
3054 [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
3055 [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
3056 [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
3057 [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
3058 [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
3059 [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
3060 [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
3061 [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
3062 [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
3063 [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,
3064 [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,
3065 [GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr,
3066 [GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr,
3067 [GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,
3068 [GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,
3069 [GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,
3070 [GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,
3071 [GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,
3072 [GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,
3073 [GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,
3074 [GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,
3075 [GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,
3076 [GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,
3077 [GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,
3078 [GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,
3079 [GCC_QUPV3_WRAP2_S6_CLK] = &gcc_qupv3_wrap2_s6_clk.clkr,
3080 [GCC_QUPV3_WRAP2_S6_CLK_SRC] = &gcc_qupv3_wrap2_s6_clk_src.clkr,
3081 [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
3082 [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
3083 [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
3084 [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
3085 [GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,
3086 [GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,
3087 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
3088 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
3089 [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
3090 [GCC_SDCC2_AT_CLK] = &gcc_sdcc2_at_clk.clkr,
3091 [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
3092 [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
3093 [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
3094 [GCC_SDCC4_AT_CLK] = &gcc_sdcc4_at_clk.clkr,
3095 [GCC_UFS_0_CLKREF_EN] = &gcc_ufs_0_clkref_en.clkr,
3096 [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
3097 [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
3098 [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
3099 [GCC_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_ufs_phy_axi_hw_ctl_clk.clkr,
3100 [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
3101 [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
3102 [GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_phy_ice_core_hw_ctl_clk.clkr,
3103 [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
3104 [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
3105 [GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_phy_phy_aux_hw_ctl_clk.clkr,
3106 [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
3107 [GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr,
3108 [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
3109 [GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr,
3110 [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
3111 [GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr,
3112 [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
3113 [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,
3114 [GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_phy_unipro_core_hw_ctl_clk.clkr,
3115 [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
3116 [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
3117 [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
3118 [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,
3119 [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,
3120 [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
3121 [GCC_USB3_0_CLKREF_EN] = &gcc_usb3_0_clkref_en.clkr,
3122 [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
3123 [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
3124 [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
3125 [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
3126 [GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr,
3127 [GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
3128 [GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,
3129 };
3130
3131 static const struct qcom_reset_map gcc_sm8450_resets[] = {
3132 [GCC_CAMERA_BCR] = { 0x36000 },
3133 [GCC_DISPLAY_BCR] = { 0x37000 },
3134 [GCC_GPU_BCR] = { 0x81000 },
3135 [GCC_PCIE_0_BCR] = { 0x7b000 },
3136 [GCC_PCIE_0_LINK_DOWN_BCR] = { 0x7c014 },
3137 [GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x7c020 },
3138 [GCC_PCIE_0_PHY_BCR] = { 0x7c01c },
3139 [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x7c028 },
3140 [GCC_PCIE_1_BCR] = { 0x9d000 },
3141 [GCC_PCIE_1_LINK_DOWN_BCR] = { 0x9e014 },
3142 [GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x9e020 },
3143 [GCC_PCIE_1_PHY_BCR] = { 0x9e01c },
3144 [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x9e000 },
3145 [GCC_PCIE_PHY_BCR] = { 0x7f000 },
3146 [GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x7f00c },
3147 [GCC_PCIE_PHY_COM_BCR] = { 0x7f010 },
3148 [GCC_PDM_BCR] = { 0x43000 },
3149 [GCC_QUPV3_WRAPPER_0_BCR] = { 0x27000 },
3150 [GCC_QUPV3_WRAPPER_1_BCR] = { 0x28000 },
3151 [GCC_QUPV3_WRAPPER_2_BCR] = { 0x2e000 },
3152 [GCC_QUSB2PHY_PRIM_BCR] = { 0x22000 },
3153 [GCC_QUSB2PHY_SEC_BCR] = { 0x22004 },
3154 [GCC_SDCC2_BCR] = { 0x24000 },
3155 [GCC_SDCC4_BCR] = { 0x26000 },
3156 [GCC_UFS_PHY_BCR] = { 0x87000 },
3157 [GCC_USB30_PRIM_BCR] = { 0x49000 },
3158 [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x60008 },
3159 [GCC_USB3_DP_PHY_SEC_BCR] = { 0x60014 },
3160 [GCC_USB3_PHY_PRIM_BCR] = { 0x60000 },
3161 [GCC_USB3_PHY_SEC_BCR] = { 0x6000c },
3162 [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x60004 },
3163 [GCC_USB3PHY_PHY_SEC_BCR] = { 0x60010 },
3164 [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x7a000 },
3165 [GCC_VIDEO_AXI0_CLK_ARES] = { 0x42018, 2 },
3166 [GCC_VIDEO_AXI1_CLK_ARES] = { 0x42020, 2 },
3167 [GCC_VIDEO_BCR] = { 0x42000 },
3168 };
3169
3170 static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
3171 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
3172 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
3173 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
3174 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
3175 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
3176 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
3177 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src),
3178 DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src),
3179 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
3180 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
3181 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
3182 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
3183 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
3184 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
3185 DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),
3186 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src),
3187 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src),
3188 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src),
3189 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src),
3190 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src),
3191 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src),
3192 DEFINE_RCG_DFS(gcc_qupv3_wrap2_s6_clk_src),
3193 };
3194
3195 static struct gdsc *gcc_sm8450_gdscs[] = {
3196 [PCIE_0_GDSC] = &pcie_0_gdsc,
3197 [PCIE_1_GDSC] = &pcie_1_gdsc,
3198 [UFS_PHY_GDSC] = &ufs_phy_gdsc,
3199 [USB30_PRIM_GDSC] = &usb30_prim_gdsc,
3200 };
3201
3202 static const struct regmap_config gcc_sm8450_regmap_config = {
3203 .reg_bits = 32,
3204 .reg_stride = 4,
3205 .val_bits = 32,
3206 .max_register = 0x1f1030,
3207 .fast_io = true,
3208 };
3209
3210 static const struct qcom_cc_desc gcc_sm8450_desc = {
3211 .config = &gcc_sm8450_regmap_config,
3212 .clks = gcc_sm8450_clocks,
3213 .num_clks = ARRAY_SIZE(gcc_sm8450_clocks),
3214 .resets = gcc_sm8450_resets,
3215 .num_resets = ARRAY_SIZE(gcc_sm8450_resets),
3216 .gdscs = gcc_sm8450_gdscs,
3217 .num_gdscs = ARRAY_SIZE(gcc_sm8450_gdscs),
3218 };
3219
3220 static const struct of_device_id gcc_sm8450_match_table[] = {
3221 { .compatible = "qcom,gcc-sm8450" },
3222 { }
3223 };
3224 MODULE_DEVICE_TABLE(of, gcc_sm8450_match_table);
3225
3226 static int gcc_sm8450_probe(struct platform_device *pdev)
3227 {
3228 struct regmap *regmap;
3229 int ret;
3230
3231 regmap = qcom_cc_map(pdev, &gcc_sm8450_desc);
3232 if (IS_ERR(regmap))
3233 return PTR_ERR(regmap);
3234
3235 ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,
3236 ARRAY_SIZE(gcc_dfs_clocks));
3237 if (ret)
3238 return ret;
3239
3240
3241 regmap_update_bits(regmap, gcc_ufs_phy_ice_core_clk.halt_reg, BIT(14), BIT(14));
3242
3243
3244
3245
3246
3247
3248
3249 regmap_update_bits(regmap, 0x36004, BIT(0), BIT(0));
3250 regmap_update_bits(regmap, 0x36020, BIT(0), BIT(0));
3251 regmap_update_bits(regmap, 0x37004, BIT(0), BIT(0));
3252 regmap_update_bits(regmap, 0x3701c, BIT(0), BIT(0));
3253 regmap_update_bits(regmap, 0x81004, BIT(0), BIT(0));
3254 regmap_update_bits(regmap, 0x42004, BIT(0), BIT(0));
3255 regmap_update_bits(regmap, 0x42028, BIT(0), BIT(0));
3256
3257 return qcom_cc_really_probe(pdev, &gcc_sm8450_desc, regmap);
3258 }
3259
3260 static struct platform_driver gcc_sm8450_driver = {
3261 .probe = gcc_sm8450_probe,
3262 .driver = {
3263 .name = "gcc-sm8450",
3264 .of_match_table = gcc_sm8450_match_table,
3265 },
3266 };
3267
3268 static int __init gcc_sm8450_init(void)
3269 {
3270 return platform_driver_register(&gcc_sm8450_driver);
3271 }
3272 subsys_initcall(gcc_sm8450_init);
3273
3274 static void __exit gcc_sm8450_exit(void)
3275 {
3276 platform_driver_unregister(&gcc_sm8450_driver);
3277 }
3278 module_exit(gcc_sm8450_exit);
3279
3280 MODULE_DESCRIPTION("QTI GCC SM8450 Driver");
3281 MODULE_LICENSE("GPL v2");