Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /*
0003  * Copyright (c) 2014, The Linux Foundation. All rights reserved.
0004  */
0005 
0006 #include <linux/kernel.h>
0007 #include <linux/bitops.h>
0008 #include <linux/err.h>
0009 #include <linux/platform_device.h>
0010 #include <linux/module.h>
0011 #include <linux/of.h>
0012 #include <linux/of_device.h>
0013 #include <linux/clk-provider.h>
0014 #include <linux/regmap.h>
0015 #include <linux/reset-controller.h>
0016 
0017 #include <dt-bindings/clock/qcom,gcc-apq8084.h>
0018 #include <dt-bindings/reset/qcom,gcc-apq8084.h>
0019 
0020 #include "common.h"
0021 #include "clk-regmap.h"
0022 #include "clk-pll.h"
0023 #include "clk-rcg.h"
0024 #include "clk-branch.h"
0025 #include "reset.h"
0026 #include "gdsc.h"
0027 
0028 enum {
0029     P_XO,
0030     P_GPLL0,
0031     P_GPLL1,
0032     P_GPLL4,
0033     P_PCIE_0_1_PIPE_CLK,
0034     P_SATA_ASIC0_CLK,
0035     P_SATA_RX_CLK,
0036     P_SLEEP_CLK,
0037 };
0038 
0039 static const struct parent_map gcc_xo_gpll0_map[] = {
0040     { P_XO, 0 },
0041     { P_GPLL0, 1 }
0042 };
0043 
0044 static const char * const gcc_xo_gpll0[] = {
0045     "xo",
0046     "gpll0_vote",
0047 };
0048 
0049 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
0050     { P_XO, 0 },
0051     { P_GPLL0, 1 },
0052     { P_GPLL4, 5 }
0053 };
0054 
0055 static const char * const gcc_xo_gpll0_gpll4[] = {
0056     "xo",
0057     "gpll0_vote",
0058     "gpll4_vote",
0059 };
0060 
0061 static const struct parent_map gcc_xo_sata_asic0_map[] = {
0062     { P_XO, 0 },
0063     { P_SATA_ASIC0_CLK, 2 }
0064 };
0065 
0066 static const char * const gcc_xo_sata_asic0[] = {
0067     "xo",
0068     "sata_asic0_clk",
0069 };
0070 
0071 static const struct parent_map gcc_xo_sata_rx_map[] = {
0072     { P_XO, 0 },
0073     { P_SATA_RX_CLK, 2}
0074 };
0075 
0076 static const char * const gcc_xo_sata_rx[] = {
0077     "xo",
0078     "sata_rx_clk",
0079 };
0080 
0081 static const struct parent_map gcc_xo_pcie_map[] = {
0082     { P_XO, 0 },
0083     { P_PCIE_0_1_PIPE_CLK, 2 }
0084 };
0085 
0086 static const char * const gcc_xo_pcie[] = {
0087     "xo",
0088     "pcie_pipe",
0089 };
0090 
0091 static const struct parent_map gcc_xo_pcie_sleep_map[] = {
0092     { P_XO, 0 },
0093     { P_SLEEP_CLK, 6 }
0094 };
0095 
0096 static const char * const gcc_xo_pcie_sleep[] = {
0097     "xo",
0098     "sleep_clk_src",
0099 };
0100 
0101 static struct clk_pll gpll0 = {
0102     .l_reg = 0x0004,
0103     .m_reg = 0x0008,
0104     .n_reg = 0x000c,
0105     .config_reg = 0x0014,
0106     .mode_reg = 0x0000,
0107     .status_reg = 0x001c,
0108     .status_bit = 17,
0109     .clkr.hw.init = &(struct clk_init_data){
0110         .name = "gpll0",
0111         .parent_names = (const char *[]){ "xo" },
0112         .num_parents = 1,
0113         .ops = &clk_pll_ops,
0114     },
0115 };
0116 
0117 static struct clk_regmap gpll0_vote = {
0118     .enable_reg = 0x1480,
0119     .enable_mask = BIT(0),
0120     .hw.init = &(struct clk_init_data){
0121         .name = "gpll0_vote",
0122         .parent_names = (const char *[]){ "gpll0" },
0123         .num_parents = 1,
0124         .ops = &clk_pll_vote_ops,
0125     },
0126 };
0127 
0128 static struct clk_rcg2 config_noc_clk_src = {
0129     .cmd_rcgr = 0x0150,
0130     .hid_width = 5,
0131     .parent_map = gcc_xo_gpll0_map,
0132     .clkr.hw.init = &(struct clk_init_data){
0133         .name = "config_noc_clk_src",
0134         .parent_names = gcc_xo_gpll0,
0135         .num_parents = 2,
0136         .ops = &clk_rcg2_ops,
0137     },
0138 };
0139 
0140 static struct clk_rcg2 periph_noc_clk_src = {
0141     .cmd_rcgr = 0x0190,
0142     .hid_width = 5,
0143     .parent_map = gcc_xo_gpll0_map,
0144     .clkr.hw.init = &(struct clk_init_data){
0145         .name = "periph_noc_clk_src",
0146         .parent_names = gcc_xo_gpll0,
0147         .num_parents = 2,
0148         .ops = &clk_rcg2_ops,
0149     },
0150 };
0151 
0152 static struct clk_rcg2 system_noc_clk_src = {
0153     .cmd_rcgr = 0x0120,
0154     .hid_width = 5,
0155     .parent_map = gcc_xo_gpll0_map,
0156     .clkr.hw.init = &(struct clk_init_data){
0157         .name = "system_noc_clk_src",
0158         .parent_names = gcc_xo_gpll0,
0159         .num_parents = 2,
0160         .ops = &clk_rcg2_ops,
0161     },
0162 };
0163 
0164 static struct clk_pll gpll1 = {
0165     .l_reg = 0x0044,
0166     .m_reg = 0x0048,
0167     .n_reg = 0x004c,
0168     .config_reg = 0x0054,
0169     .mode_reg = 0x0040,
0170     .status_reg = 0x005c,
0171     .status_bit = 17,
0172     .clkr.hw.init = &(struct clk_init_data){
0173         .name = "gpll1",
0174         .parent_names = (const char *[]){ "xo" },
0175         .num_parents = 1,
0176         .ops = &clk_pll_ops,
0177     },
0178 };
0179 
0180 static struct clk_regmap gpll1_vote = {
0181     .enable_reg = 0x1480,
0182     .enable_mask = BIT(1),
0183     .hw.init = &(struct clk_init_data){
0184         .name = "gpll1_vote",
0185         .parent_names = (const char *[]){ "gpll1" },
0186         .num_parents = 1,
0187         .ops = &clk_pll_vote_ops,
0188     },
0189 };
0190 
0191 static struct clk_pll gpll4 = {
0192     .l_reg = 0x1dc4,
0193     .m_reg = 0x1dc8,
0194     .n_reg = 0x1dcc,
0195     .config_reg = 0x1dd4,
0196     .mode_reg = 0x1dc0,
0197     .status_reg = 0x1ddc,
0198     .status_bit = 17,
0199     .clkr.hw.init = &(struct clk_init_data){
0200         .name = "gpll4",
0201         .parent_names = (const char *[]){ "xo" },
0202         .num_parents = 1,
0203         .ops = &clk_pll_ops,
0204     },
0205 };
0206 
0207 static struct clk_regmap gpll4_vote = {
0208     .enable_reg = 0x1480,
0209     .enable_mask = BIT(4),
0210     .hw.init = &(struct clk_init_data){
0211         .name = "gpll4_vote",
0212         .parent_names = (const char *[]){ "gpll4" },
0213         .num_parents = 1,
0214         .ops = &clk_pll_vote_ops,
0215     },
0216 };
0217 
0218 static const struct freq_tbl ftbl_gcc_ufs_axi_clk[] = {
0219     F(100000000, P_GPLL0, 6, 0, 0),
0220     F(200000000, P_GPLL0, 3, 0, 0),
0221     F(240000000, P_GPLL0, 2.5, 0, 0),
0222     { }
0223 };
0224 
0225 static struct clk_rcg2 ufs_axi_clk_src = {
0226     .cmd_rcgr = 0x1d64,
0227     .mnd_width = 8,
0228     .hid_width = 5,
0229     .parent_map = gcc_xo_gpll0_map,
0230     .freq_tbl = ftbl_gcc_ufs_axi_clk,
0231     .clkr.hw.init = &(struct clk_init_data){
0232         .name = "ufs_axi_clk_src",
0233         .parent_names = gcc_xo_gpll0,
0234         .num_parents = 2,
0235         .ops = &clk_rcg2_ops,
0236     },
0237 };
0238 
0239 static const struct freq_tbl ftbl_gcc_usb30_master_clk[] = {
0240     F(125000000, P_GPLL0, 1, 5, 24),
0241     { }
0242 };
0243 
0244 static struct clk_rcg2 usb30_master_clk_src = {
0245     .cmd_rcgr = 0x03d4,
0246     .mnd_width = 8,
0247     .hid_width = 5,
0248     .parent_map = gcc_xo_gpll0_map,
0249     .freq_tbl = ftbl_gcc_usb30_master_clk,
0250     .clkr.hw.init = &(struct clk_init_data){
0251         .name = "usb30_master_clk_src",
0252         .parent_names = gcc_xo_gpll0,
0253         .num_parents = 2,
0254         .ops = &clk_rcg2_ops,
0255     },
0256 };
0257 
0258 static const struct freq_tbl ftbl_gcc_usb30_sec_master_clk[] = {
0259     F(125000000, P_GPLL0, 1, 5, 24),
0260     { }
0261 };
0262 
0263 static struct clk_rcg2 usb30_sec_master_clk_src = {
0264     .cmd_rcgr = 0x1bd4,
0265     .mnd_width = 8,
0266     .hid_width = 5,
0267     .parent_map = gcc_xo_gpll0_map,
0268     .freq_tbl = ftbl_gcc_usb30_sec_master_clk,
0269     .clkr.hw.init = &(struct clk_init_data){
0270         .name = "usb30_sec_master_clk_src",
0271         .parent_names = gcc_xo_gpll0,
0272         .num_parents = 2,
0273         .ops = &clk_rcg2_ops,
0274     },
0275 };
0276 
0277 static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {
0278     .halt_reg = 0x1bd0,
0279     .clkr = {
0280         .enable_reg = 0x1bd0,
0281         .enable_mask = BIT(0),
0282         .hw.init = &(struct clk_init_data){
0283             .name = "gcc_usb30_sec_mock_utmi_clk",
0284             .parent_names = (const char *[]){
0285                 "usb30_sec_mock_utmi_clk_src",
0286             },
0287             .num_parents = 1,
0288             .flags = CLK_SET_RATE_PARENT,
0289             .ops = &clk_branch2_ops,
0290         },
0291     },
0292 };
0293 
0294 static struct clk_branch gcc_usb30_sec_sleep_clk = {
0295     .halt_reg = 0x1bcc,
0296     .clkr = {
0297         .enable_reg = 0x1bcc,
0298         .enable_mask = BIT(0),
0299         .hw.init = &(struct clk_init_data){
0300             .name = "gcc_usb30_sec_sleep_clk",
0301             .parent_names = (const char *[]){
0302                 "sleep_clk_src",
0303             },
0304             .num_parents = 1,
0305             .flags = CLK_SET_RATE_PARENT,
0306             .ops = &clk_branch2_ops,
0307         },
0308     },
0309 };
0310 
0311 static const struct freq_tbl ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk[] = {
0312     F(19200000, P_XO, 1, 0, 0),
0313     F(50000000, P_GPLL0, 12, 0, 0),
0314     { }
0315 };
0316 
0317 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
0318     .cmd_rcgr = 0x0660,
0319     .hid_width = 5,
0320     .parent_map = gcc_xo_gpll0_map,
0321     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
0322     .clkr.hw.init = &(struct clk_init_data){
0323         .name = "blsp1_qup1_i2c_apps_clk_src",
0324         .parent_names = gcc_xo_gpll0,
0325         .num_parents = 2,
0326         .ops = &clk_rcg2_ops,
0327     },
0328 };
0329 
0330 static const struct freq_tbl ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk[] = {
0331     F(960000, P_XO, 10, 1, 2),
0332     F(4800000, P_XO, 4, 0, 0),
0333     F(9600000, P_XO, 2, 0, 0),
0334     F(15000000, P_GPLL0, 10, 1, 4),
0335     F(19200000, P_XO, 1, 0, 0),
0336     F(25000000, P_GPLL0, 12, 1, 2),
0337     F(50000000, P_GPLL0, 12, 0, 0),
0338     { }
0339 };
0340 
0341 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
0342     .cmd_rcgr = 0x064c,
0343     .mnd_width = 8,
0344     .hid_width = 5,
0345     .parent_map = gcc_xo_gpll0_map,
0346     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
0347     .clkr.hw.init = &(struct clk_init_data){
0348         .name = "blsp1_qup1_spi_apps_clk_src",
0349         .parent_names = gcc_xo_gpll0,
0350         .num_parents = 2,
0351         .ops = &clk_rcg2_ops,
0352     },
0353 };
0354 
0355 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
0356     .cmd_rcgr = 0x06e0,
0357     .hid_width = 5,
0358     .parent_map = gcc_xo_gpll0_map,
0359     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
0360     .clkr.hw.init = &(struct clk_init_data){
0361         .name = "blsp1_qup2_i2c_apps_clk_src",
0362         .parent_names = gcc_xo_gpll0,
0363         .num_parents = 2,
0364         .ops = &clk_rcg2_ops,
0365     },
0366 };
0367 
0368 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
0369     .cmd_rcgr = 0x06cc,
0370     .mnd_width = 8,
0371     .hid_width = 5,
0372     .parent_map = gcc_xo_gpll0_map,
0373     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
0374     .clkr.hw.init = &(struct clk_init_data){
0375         .name = "blsp1_qup2_spi_apps_clk_src",
0376         .parent_names = gcc_xo_gpll0,
0377         .num_parents = 2,
0378         .ops = &clk_rcg2_ops,
0379     },
0380 };
0381 
0382 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
0383     .cmd_rcgr = 0x0760,
0384     .hid_width = 5,
0385     .parent_map = gcc_xo_gpll0_map,
0386     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
0387     .clkr.hw.init = &(struct clk_init_data){
0388         .name = "blsp1_qup3_i2c_apps_clk_src",
0389         .parent_names = gcc_xo_gpll0,
0390         .num_parents = 2,
0391         .ops = &clk_rcg2_ops,
0392     },
0393 };
0394 
0395 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
0396     .cmd_rcgr = 0x074c,
0397     .mnd_width = 8,
0398     .hid_width = 5,
0399     .parent_map = gcc_xo_gpll0_map,
0400     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
0401     .clkr.hw.init = &(struct clk_init_data){
0402         .name = "blsp1_qup3_spi_apps_clk_src",
0403         .parent_names = gcc_xo_gpll0,
0404         .num_parents = 2,
0405         .ops = &clk_rcg2_ops,
0406     },
0407 };
0408 
0409 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
0410     .cmd_rcgr = 0x07e0,
0411     .hid_width = 5,
0412     .parent_map = gcc_xo_gpll0_map,
0413     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
0414     .clkr.hw.init = &(struct clk_init_data){
0415         .name = "blsp1_qup4_i2c_apps_clk_src",
0416         .parent_names = gcc_xo_gpll0,
0417         .num_parents = 2,
0418         .ops = &clk_rcg2_ops,
0419     },
0420 };
0421 
0422 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
0423     .cmd_rcgr = 0x07cc,
0424     .mnd_width = 8,
0425     .hid_width = 5,
0426     .parent_map = gcc_xo_gpll0_map,
0427     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
0428     .clkr.hw.init = &(struct clk_init_data){
0429         .name = "blsp1_qup4_spi_apps_clk_src",
0430         .parent_names = gcc_xo_gpll0,
0431         .num_parents = 2,
0432         .ops = &clk_rcg2_ops,
0433     },
0434 };
0435 
0436 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
0437     .cmd_rcgr = 0x0860,
0438     .hid_width = 5,
0439     .parent_map = gcc_xo_gpll0_map,
0440     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
0441     .clkr.hw.init = &(struct clk_init_data){
0442         .name = "blsp1_qup5_i2c_apps_clk_src",
0443         .parent_names = gcc_xo_gpll0,
0444         .num_parents = 2,
0445         .ops = &clk_rcg2_ops,
0446     },
0447 };
0448 
0449 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
0450     .cmd_rcgr = 0x084c,
0451     .mnd_width = 8,
0452     .hid_width = 5,
0453     .parent_map = gcc_xo_gpll0_map,
0454     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
0455     .clkr.hw.init = &(struct clk_init_data){
0456         .name = "blsp1_qup5_spi_apps_clk_src",
0457         .parent_names = gcc_xo_gpll0,
0458         .num_parents = 2,
0459         .ops = &clk_rcg2_ops,
0460     },
0461 };
0462 
0463 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
0464     .cmd_rcgr = 0x08e0,
0465     .hid_width = 5,
0466     .parent_map = gcc_xo_gpll0_map,
0467     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
0468     .clkr.hw.init = &(struct clk_init_data){
0469         .name = "blsp1_qup6_i2c_apps_clk_src",
0470         .parent_names = gcc_xo_gpll0,
0471         .num_parents = 2,
0472         .ops = &clk_rcg2_ops,
0473     },
0474 };
0475 
0476 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
0477     .cmd_rcgr = 0x08cc,
0478     .mnd_width = 8,
0479     .hid_width = 5,
0480     .parent_map = gcc_xo_gpll0_map,
0481     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
0482     .clkr.hw.init = &(struct clk_init_data){
0483         .name = "blsp1_qup6_spi_apps_clk_src",
0484         .parent_names = gcc_xo_gpll0,
0485         .num_parents = 2,
0486         .ops = &clk_rcg2_ops,
0487     },
0488 };
0489 
0490 static const struct freq_tbl ftbl_gcc_blsp1_2_uart1_6_apps_clk[] = {
0491     F(3686400, P_GPLL0, 1, 96, 15625),
0492     F(7372800, P_GPLL0, 1, 192, 15625),
0493     F(14745600, P_GPLL0, 1, 384, 15625),
0494     F(16000000, P_GPLL0, 5, 2, 15),
0495     F(19200000, P_XO, 1, 0, 0),
0496     F(24000000, P_GPLL0, 5, 1, 5),
0497     F(32000000, P_GPLL0, 1, 4, 75),
0498     F(40000000, P_GPLL0, 15, 0, 0),
0499     F(46400000, P_GPLL0, 1, 29, 375),
0500     F(48000000, P_GPLL0, 12.5, 0, 0),
0501     F(51200000, P_GPLL0, 1, 32, 375),
0502     F(56000000, P_GPLL0, 1, 7, 75),
0503     F(58982400, P_GPLL0, 1, 1536, 15625),
0504     F(60000000, P_GPLL0, 10, 0, 0),
0505     F(63160000, P_GPLL0, 9.5, 0, 0),
0506     { }
0507 };
0508 
0509 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
0510     .cmd_rcgr = 0x068c,
0511     .mnd_width = 16,
0512     .hid_width = 5,
0513     .parent_map = gcc_xo_gpll0_map,
0514     .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
0515     .clkr.hw.init = &(struct clk_init_data){
0516         .name = "blsp1_uart1_apps_clk_src",
0517         .parent_names = gcc_xo_gpll0,
0518         .num_parents = 2,
0519         .ops = &clk_rcg2_ops,
0520     },
0521 };
0522 
0523 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
0524     .cmd_rcgr = 0x070c,
0525     .mnd_width = 16,
0526     .hid_width = 5,
0527     .parent_map = gcc_xo_gpll0_map,
0528     .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
0529     .clkr.hw.init = &(struct clk_init_data){
0530         .name = "blsp1_uart2_apps_clk_src",
0531         .parent_names = gcc_xo_gpll0,
0532         .num_parents = 2,
0533         .ops = &clk_rcg2_ops,
0534     },
0535 };
0536 
0537 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
0538     .cmd_rcgr = 0x078c,
0539     .mnd_width = 16,
0540     .hid_width = 5,
0541     .parent_map = gcc_xo_gpll0_map,
0542     .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
0543     .clkr.hw.init = &(struct clk_init_data){
0544         .name = "blsp1_uart3_apps_clk_src",
0545         .parent_names = gcc_xo_gpll0,
0546         .num_parents = 2,
0547         .ops = &clk_rcg2_ops,
0548     },
0549 };
0550 
0551 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
0552     .cmd_rcgr = 0x080c,
0553     .mnd_width = 16,
0554     .hid_width = 5,
0555     .parent_map = gcc_xo_gpll0_map,
0556     .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
0557     .clkr.hw.init = &(struct clk_init_data){
0558         .name = "blsp1_uart4_apps_clk_src",
0559         .parent_names = gcc_xo_gpll0,
0560         .num_parents = 2,
0561         .ops = &clk_rcg2_ops,
0562     },
0563 };
0564 
0565 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
0566     .cmd_rcgr = 0x088c,
0567     .mnd_width = 16,
0568     .hid_width = 5,
0569     .parent_map = gcc_xo_gpll0_map,
0570     .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
0571     .clkr.hw.init = &(struct clk_init_data){
0572         .name = "blsp1_uart5_apps_clk_src",
0573         .parent_names = gcc_xo_gpll0,
0574         .num_parents = 2,
0575         .ops = &clk_rcg2_ops,
0576     },
0577 };
0578 
0579 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
0580     .cmd_rcgr = 0x090c,
0581     .mnd_width = 16,
0582     .hid_width = 5,
0583     .parent_map = gcc_xo_gpll0_map,
0584     .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
0585     .clkr.hw.init = &(struct clk_init_data){
0586         .name = "blsp1_uart6_apps_clk_src",
0587         .parent_names = gcc_xo_gpll0,
0588         .num_parents = 2,
0589         .ops = &clk_rcg2_ops,
0590     },
0591 };
0592 
0593 static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
0594     .cmd_rcgr = 0x09a0,
0595     .hid_width = 5,
0596     .parent_map = gcc_xo_gpll0_map,
0597     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
0598     .clkr.hw.init = &(struct clk_init_data){
0599         .name = "blsp2_qup1_i2c_apps_clk_src",
0600         .parent_names = gcc_xo_gpll0,
0601         .num_parents = 2,
0602         .ops = &clk_rcg2_ops,
0603     },
0604 };
0605 
0606 static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
0607     .cmd_rcgr = 0x098c,
0608     .mnd_width = 8,
0609     .hid_width = 5,
0610     .parent_map = gcc_xo_gpll0_map,
0611     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
0612     .clkr.hw.init = &(struct clk_init_data){
0613         .name = "blsp2_qup1_spi_apps_clk_src",
0614         .parent_names = gcc_xo_gpll0,
0615         .num_parents = 2,
0616         .ops = &clk_rcg2_ops,
0617     },
0618 };
0619 
0620 static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
0621     .cmd_rcgr = 0x0a20,
0622     .hid_width = 5,
0623     .parent_map = gcc_xo_gpll0_map,
0624     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
0625     .clkr.hw.init = &(struct clk_init_data){
0626         .name = "blsp2_qup2_i2c_apps_clk_src",
0627         .parent_names = gcc_xo_gpll0,
0628         .num_parents = 2,
0629         .ops = &clk_rcg2_ops,
0630     },
0631 };
0632 
0633 static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
0634     .cmd_rcgr = 0x0a0c,
0635     .mnd_width = 8,
0636     .hid_width = 5,
0637     .parent_map = gcc_xo_gpll0_map,
0638     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
0639     .clkr.hw.init = &(struct clk_init_data){
0640         .name = "blsp2_qup2_spi_apps_clk_src",
0641         .parent_names = gcc_xo_gpll0,
0642         .num_parents = 2,
0643         .ops = &clk_rcg2_ops,
0644     },
0645 };
0646 
0647 static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
0648     .cmd_rcgr = 0x0aa0,
0649     .hid_width = 5,
0650     .parent_map = gcc_xo_gpll0_map,
0651     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
0652     .clkr.hw.init = &(struct clk_init_data){
0653         .name = "blsp2_qup3_i2c_apps_clk_src",
0654         .parent_names = gcc_xo_gpll0,
0655         .num_parents = 2,
0656         .ops = &clk_rcg2_ops,
0657     },
0658 };
0659 
0660 static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
0661     .cmd_rcgr = 0x0a8c,
0662     .mnd_width = 8,
0663     .hid_width = 5,
0664     .parent_map = gcc_xo_gpll0_map,
0665     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
0666     .clkr.hw.init = &(struct clk_init_data){
0667         .name = "blsp2_qup3_spi_apps_clk_src",
0668         .parent_names = gcc_xo_gpll0,
0669         .num_parents = 2,
0670         .ops = &clk_rcg2_ops,
0671     },
0672 };
0673 
0674 static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
0675     .cmd_rcgr = 0x0b20,
0676     .hid_width = 5,
0677     .parent_map = gcc_xo_gpll0_map,
0678     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
0679     .clkr.hw.init = &(struct clk_init_data){
0680         .name = "blsp2_qup4_i2c_apps_clk_src",
0681         .parent_names = gcc_xo_gpll0,
0682         .num_parents = 2,
0683         .ops = &clk_rcg2_ops,
0684     },
0685 };
0686 
0687 static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
0688     .cmd_rcgr = 0x0b0c,
0689     .mnd_width = 8,
0690     .hid_width = 5,
0691     .parent_map = gcc_xo_gpll0_map,
0692     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
0693     .clkr.hw.init = &(struct clk_init_data){
0694         .name = "blsp2_qup4_spi_apps_clk_src",
0695         .parent_names = gcc_xo_gpll0,
0696         .num_parents = 2,
0697         .ops = &clk_rcg2_ops,
0698     },
0699 };
0700 
0701 static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
0702     .cmd_rcgr = 0x0ba0,
0703     .hid_width = 5,
0704     .parent_map = gcc_xo_gpll0_map,
0705     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
0706     .clkr.hw.init = &(struct clk_init_data){
0707         .name = "blsp2_qup5_i2c_apps_clk_src",
0708         .parent_names = gcc_xo_gpll0,
0709         .num_parents = 2,
0710         .ops = &clk_rcg2_ops,
0711     },
0712 };
0713 
0714 static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
0715     .cmd_rcgr = 0x0b8c,
0716     .mnd_width = 8,
0717     .hid_width = 5,
0718     .parent_map = gcc_xo_gpll0_map,
0719     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
0720     .clkr.hw.init = &(struct clk_init_data){
0721         .name = "blsp2_qup5_spi_apps_clk_src",
0722         .parent_names = gcc_xo_gpll0,
0723         .num_parents = 2,
0724         .ops = &clk_rcg2_ops,
0725     },
0726 };
0727 
0728 static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
0729     .cmd_rcgr = 0x0c20,
0730     .hid_width = 5,
0731     .parent_map = gcc_xo_gpll0_map,
0732     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
0733     .clkr.hw.init = &(struct clk_init_data){
0734         .name = "blsp2_qup6_i2c_apps_clk_src",
0735         .parent_names = gcc_xo_gpll0,
0736         .num_parents = 2,
0737         .ops = &clk_rcg2_ops,
0738     },
0739 };
0740 
0741 static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
0742     .cmd_rcgr = 0x0c0c,
0743     .mnd_width = 8,
0744     .hid_width = 5,
0745     .parent_map = gcc_xo_gpll0_map,
0746     .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
0747     .clkr.hw.init = &(struct clk_init_data){
0748         .name = "blsp2_qup6_spi_apps_clk_src",
0749         .parent_names = gcc_xo_gpll0,
0750         .num_parents = 2,
0751         .ops = &clk_rcg2_ops,
0752     },
0753 };
0754 
0755 static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
0756     .cmd_rcgr = 0x09cc,
0757     .mnd_width = 16,
0758     .hid_width = 5,
0759     .parent_map = gcc_xo_gpll0_map,
0760     .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
0761     .clkr.hw.init = &(struct clk_init_data){
0762         .name = "blsp2_uart1_apps_clk_src",
0763         .parent_names = gcc_xo_gpll0,
0764         .num_parents = 2,
0765         .ops = &clk_rcg2_ops,
0766     },
0767 };
0768 
0769 static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
0770     .cmd_rcgr = 0x0a4c,
0771     .mnd_width = 16,
0772     .hid_width = 5,
0773     .parent_map = gcc_xo_gpll0_map,
0774     .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
0775     .clkr.hw.init = &(struct clk_init_data){
0776         .name = "blsp2_uart2_apps_clk_src",
0777         .parent_names = gcc_xo_gpll0,
0778         .num_parents = 2,
0779         .ops = &clk_rcg2_ops,
0780     },
0781 };
0782 
0783 static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
0784     .cmd_rcgr = 0x0acc,
0785     .mnd_width = 16,
0786     .hid_width = 5,
0787     .parent_map = gcc_xo_gpll0_map,
0788     .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
0789     .clkr.hw.init = &(struct clk_init_data){
0790         .name = "blsp2_uart3_apps_clk_src",
0791         .parent_names = gcc_xo_gpll0,
0792         .num_parents = 2,
0793         .ops = &clk_rcg2_ops,
0794     },
0795 };
0796 
0797 static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
0798     .cmd_rcgr = 0x0b4c,
0799     .mnd_width = 16,
0800     .hid_width = 5,
0801     .parent_map = gcc_xo_gpll0_map,
0802     .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
0803     .clkr.hw.init = &(struct clk_init_data){
0804         .name = "blsp2_uart4_apps_clk_src",
0805         .parent_names = gcc_xo_gpll0,
0806         .num_parents = 2,
0807         .ops = &clk_rcg2_ops,
0808     },
0809 };
0810 
0811 static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
0812     .cmd_rcgr = 0x0bcc,
0813     .mnd_width = 16,
0814     .hid_width = 5,
0815     .parent_map = gcc_xo_gpll0_map,
0816     .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
0817     .clkr.hw.init = &(struct clk_init_data){
0818         .name = "blsp2_uart5_apps_clk_src",
0819         .parent_names = gcc_xo_gpll0,
0820         .num_parents = 2,
0821         .ops = &clk_rcg2_ops,
0822     },
0823 };
0824 
0825 static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
0826     .cmd_rcgr = 0x0c4c,
0827     .mnd_width = 16,
0828     .hid_width = 5,
0829     .parent_map = gcc_xo_gpll0_map,
0830     .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
0831     .clkr.hw.init = &(struct clk_init_data){
0832         .name = "blsp2_uart6_apps_clk_src",
0833         .parent_names = gcc_xo_gpll0,
0834         .num_parents = 2,
0835         .ops = &clk_rcg2_ops,
0836     },
0837 };
0838 
0839 static const struct freq_tbl ftbl_gcc_ce1_clk[] = {
0840     F(50000000, P_GPLL0, 12, 0, 0),
0841     F(85710000, P_GPLL0, 7, 0, 0),
0842     F(100000000, P_GPLL0, 6, 0, 0),
0843     F(171430000, P_GPLL0, 3.5, 0, 0),
0844     { }
0845 };
0846 
0847 static struct clk_rcg2 ce1_clk_src = {
0848     .cmd_rcgr = 0x1050,
0849     .hid_width = 5,
0850     .parent_map = gcc_xo_gpll0_map,
0851     .freq_tbl = ftbl_gcc_ce1_clk,
0852     .clkr.hw.init = &(struct clk_init_data){
0853         .name = "ce1_clk_src",
0854         .parent_names = gcc_xo_gpll0,
0855         .num_parents = 2,
0856         .ops = &clk_rcg2_ops,
0857     },
0858 };
0859 
0860 static const struct freq_tbl ftbl_gcc_ce2_clk[] = {
0861     F(50000000, P_GPLL0, 12, 0, 0),
0862     F(85710000, P_GPLL0, 7, 0, 0),
0863     F(100000000, P_GPLL0, 6, 0, 0),
0864     F(171430000, P_GPLL0, 3.5, 0, 0),
0865     { }
0866 };
0867 
0868 static struct clk_rcg2 ce2_clk_src = {
0869     .cmd_rcgr = 0x1090,
0870     .hid_width = 5,
0871     .parent_map = gcc_xo_gpll0_map,
0872     .freq_tbl = ftbl_gcc_ce2_clk,
0873     .clkr.hw.init = &(struct clk_init_data){
0874         .name = "ce2_clk_src",
0875         .parent_names = gcc_xo_gpll0,
0876         .num_parents = 2,
0877         .ops = &clk_rcg2_ops,
0878     },
0879 };
0880 
0881 static const struct freq_tbl ftbl_gcc_ce3_clk[] = {
0882     F(50000000, P_GPLL0, 12, 0, 0),
0883     F(85710000, P_GPLL0, 7, 0, 0),
0884     F(100000000, P_GPLL0, 6, 0, 0),
0885     F(171430000, P_GPLL0, 3.5, 0, 0),
0886     { }
0887 };
0888 
0889 static struct clk_rcg2 ce3_clk_src = {
0890     .cmd_rcgr = 0x1d10,
0891     .hid_width = 5,
0892     .parent_map = gcc_xo_gpll0_map,
0893     .freq_tbl = ftbl_gcc_ce3_clk,
0894     .clkr.hw.init = &(struct clk_init_data){
0895         .name = "ce3_clk_src",
0896         .parent_names = gcc_xo_gpll0,
0897         .num_parents = 2,
0898         .ops = &clk_rcg2_ops,
0899     },
0900 };
0901 
0902 static const struct freq_tbl ftbl_gcc_gp_clk[] = {
0903     F(19200000, P_XO, 1, 0, 0),
0904     F(100000000, P_GPLL0, 6, 0, 0),
0905     F(200000000, P_GPLL0, 3, 0, 0),
0906     { }
0907 };
0908 
0909 static struct clk_rcg2 gp1_clk_src = {
0910     .cmd_rcgr = 0x1904,
0911     .mnd_width = 8,
0912     .hid_width = 5,
0913     .parent_map = gcc_xo_gpll0_map,
0914     .freq_tbl = ftbl_gcc_gp_clk,
0915     .clkr.hw.init = &(struct clk_init_data){
0916         .name = "gp1_clk_src",
0917         .parent_names = gcc_xo_gpll0,
0918         .num_parents = 2,
0919         .ops = &clk_rcg2_ops,
0920     },
0921 };
0922 
0923 static struct clk_rcg2 gp2_clk_src = {
0924     .cmd_rcgr = 0x1944,
0925     .mnd_width = 8,
0926     .hid_width = 5,
0927     .parent_map = gcc_xo_gpll0_map,
0928     .freq_tbl = ftbl_gcc_gp_clk,
0929     .clkr.hw.init = &(struct clk_init_data){
0930         .name = "gp2_clk_src",
0931         .parent_names = gcc_xo_gpll0,
0932         .num_parents = 2,
0933         .ops = &clk_rcg2_ops,
0934     },
0935 };
0936 
0937 static struct clk_rcg2 gp3_clk_src = {
0938     .cmd_rcgr = 0x1984,
0939     .mnd_width = 8,
0940     .hid_width = 5,
0941     .parent_map = gcc_xo_gpll0_map,
0942     .freq_tbl = ftbl_gcc_gp_clk,
0943     .clkr.hw.init = &(struct clk_init_data){
0944         .name = "gp3_clk_src",
0945         .parent_names = gcc_xo_gpll0,
0946         .num_parents = 2,
0947         .ops = &clk_rcg2_ops,
0948     },
0949 };
0950 
0951 static const struct freq_tbl ftbl_gcc_pcie_0_1_aux_clk[] = {
0952     F(1010000, P_XO, 1, 1, 19),
0953     { }
0954 };
0955 
0956 static struct clk_rcg2 pcie_0_aux_clk_src = {
0957     .cmd_rcgr = 0x1b2c,
0958     .mnd_width = 16,
0959     .hid_width = 5,
0960     .parent_map = gcc_xo_pcie_sleep_map,
0961     .freq_tbl = ftbl_gcc_pcie_0_1_aux_clk,
0962     .clkr.hw.init = &(struct clk_init_data){
0963         .name = "pcie_0_aux_clk_src",
0964         .parent_names = gcc_xo_pcie_sleep,
0965         .num_parents = 2,
0966         .ops = &clk_rcg2_ops,
0967     },
0968 };
0969 
0970 static struct clk_rcg2 pcie_1_aux_clk_src = {
0971     .cmd_rcgr = 0x1bac,
0972     .mnd_width = 16,
0973     .hid_width = 5,
0974     .parent_map = gcc_xo_pcie_sleep_map,
0975     .freq_tbl = ftbl_gcc_pcie_0_1_aux_clk,
0976     .clkr.hw.init = &(struct clk_init_data){
0977         .name = "pcie_1_aux_clk_src",
0978         .parent_names = gcc_xo_pcie_sleep,
0979         .num_parents = 2,
0980         .ops = &clk_rcg2_ops,
0981     },
0982 };
0983 
0984 static const struct freq_tbl ftbl_gcc_pcie_0_1_pipe_clk[] = {
0985     F(125000000, P_PCIE_0_1_PIPE_CLK, 1, 0, 0),
0986     F(250000000, P_PCIE_0_1_PIPE_CLK, 1, 0, 0),
0987     { }
0988 };
0989 
0990 static struct clk_rcg2 pcie_0_pipe_clk_src = {
0991     .cmd_rcgr = 0x1b18,
0992     .hid_width = 5,
0993     .parent_map = gcc_xo_pcie_map,
0994     .freq_tbl = ftbl_gcc_pcie_0_1_pipe_clk,
0995     .clkr.hw.init = &(struct clk_init_data){
0996         .name = "pcie_0_pipe_clk_src",
0997         .parent_names = gcc_xo_pcie,
0998         .num_parents = 2,
0999         .ops = &clk_rcg2_ops,
1000     },
1001 };
1002 
1003 static struct clk_rcg2 pcie_1_pipe_clk_src = {
1004     .cmd_rcgr = 0x1b98,
1005     .hid_width = 5,
1006     .parent_map = gcc_xo_pcie_map,
1007     .freq_tbl = ftbl_gcc_pcie_0_1_pipe_clk,
1008     .clkr.hw.init = &(struct clk_init_data){
1009         .name = "pcie_1_pipe_clk_src",
1010         .parent_names = gcc_xo_pcie,
1011         .num_parents = 2,
1012         .ops = &clk_rcg2_ops,
1013     },
1014 };
1015 
1016 static const struct freq_tbl ftbl_gcc_pdm2_clk[] = {
1017     F(60000000, P_GPLL0, 10, 0, 0),
1018     { }
1019 };
1020 
1021 static struct clk_rcg2 pdm2_clk_src = {
1022     .cmd_rcgr = 0x0cd0,
1023     .hid_width = 5,
1024     .parent_map = gcc_xo_gpll0_map,
1025     .freq_tbl = ftbl_gcc_pdm2_clk,
1026     .clkr.hw.init = &(struct clk_init_data){
1027         .name = "pdm2_clk_src",
1028         .parent_names = gcc_xo_gpll0,
1029         .num_parents = 2,
1030         .ops = &clk_rcg2_ops,
1031     },
1032 };
1033 
1034 static const struct freq_tbl ftbl_gcc_sata_asic0_clk[] = {
1035     F(75000000, P_SATA_ASIC0_CLK, 1, 0, 0),
1036     F(150000000, P_SATA_ASIC0_CLK, 1, 0, 0),
1037     F(300000000, P_SATA_ASIC0_CLK, 1, 0, 0),
1038     { }
1039 };
1040 
1041 static struct clk_rcg2 sata_asic0_clk_src = {
1042     .cmd_rcgr = 0x1c94,
1043     .hid_width = 5,
1044     .parent_map = gcc_xo_sata_asic0_map,
1045     .freq_tbl = ftbl_gcc_sata_asic0_clk,
1046     .clkr.hw.init = &(struct clk_init_data){
1047         .name = "sata_asic0_clk_src",
1048         .parent_names = gcc_xo_sata_asic0,
1049         .num_parents = 2,
1050         .ops = &clk_rcg2_ops,
1051     },
1052 };
1053 
1054 static const struct freq_tbl ftbl_gcc_sata_pmalive_clk[] = {
1055     F(19200000, P_XO, 1, 0, 0),
1056     F(50000000, P_GPLL0, 12, 0, 0),
1057     F(100000000, P_GPLL0, 6, 0, 0),
1058     { }
1059 };
1060 
1061 static struct clk_rcg2 sata_pmalive_clk_src = {
1062     .cmd_rcgr = 0x1c80,
1063     .hid_width = 5,
1064     .parent_map = gcc_xo_gpll0_map,
1065     .freq_tbl = ftbl_gcc_sata_pmalive_clk,
1066     .clkr.hw.init = &(struct clk_init_data){
1067         .name = "sata_pmalive_clk_src",
1068         .parent_names = gcc_xo_gpll0,
1069         .num_parents = 2,
1070         .ops = &clk_rcg2_ops,
1071     },
1072 };
1073 
1074 static const struct freq_tbl ftbl_gcc_sata_rx_clk[] = {
1075     F(75000000, P_SATA_RX_CLK, 1, 0, 0),
1076     F(150000000, P_SATA_RX_CLK, 1, 0, 0),
1077     F(300000000, P_SATA_RX_CLK, 1, 0, 0),
1078     { }
1079 };
1080 
1081 static struct clk_rcg2 sata_rx_clk_src = {
1082     .cmd_rcgr = 0x1ca8,
1083     .hid_width = 5,
1084     .parent_map = gcc_xo_sata_rx_map,
1085     .freq_tbl = ftbl_gcc_sata_rx_clk,
1086     .clkr.hw.init = &(struct clk_init_data){
1087         .name = "sata_rx_clk_src",
1088         .parent_names = gcc_xo_sata_rx,
1089         .num_parents = 2,
1090         .ops = &clk_rcg2_ops,
1091     },
1092 };
1093 
1094 static const struct freq_tbl ftbl_gcc_sata_rx_oob_clk[] = {
1095     F(100000000, P_GPLL0, 6, 0, 0),
1096     { }
1097 };
1098 
1099 static struct clk_rcg2 sata_rx_oob_clk_src = {
1100     .cmd_rcgr = 0x1c5c,
1101     .hid_width = 5,
1102     .parent_map = gcc_xo_gpll0_map,
1103     .freq_tbl = ftbl_gcc_sata_rx_oob_clk,
1104     .clkr.hw.init = &(struct clk_init_data){
1105         .name = "sata_rx_oob_clk_src",
1106         .parent_names = gcc_xo_gpll0,
1107         .num_parents = 2,
1108         .ops = &clk_rcg2_ops,
1109     },
1110 };
1111 
1112 static const struct freq_tbl ftbl_gcc_sdcc1_4_apps_clk[] = {
1113     F(144000, P_XO, 16, 3, 25),
1114     F(400000, P_XO, 12, 1, 4),
1115     F(20000000, P_GPLL0, 15, 1, 2),
1116     F(25000000, P_GPLL0, 12, 1, 2),
1117     F(50000000, P_GPLL0, 12, 0, 0),
1118     F(100000000, P_GPLL0, 6, 0, 0),
1119     F(192000000, P_GPLL4, 4, 0, 0),
1120     F(200000000, P_GPLL0, 3, 0, 0),
1121     F(384000000, P_GPLL4, 2, 0, 0),
1122     { }
1123 };
1124 
1125 static struct clk_rcg2 sdcc1_apps_clk_src = {
1126     .cmd_rcgr = 0x04d0,
1127     .mnd_width = 8,
1128     .hid_width = 5,
1129     .parent_map = gcc_xo_gpll0_gpll4_map,
1130     .freq_tbl = ftbl_gcc_sdcc1_4_apps_clk,
1131     .clkr.hw.init = &(struct clk_init_data){
1132         .name = "sdcc1_apps_clk_src",
1133         .parent_names = gcc_xo_gpll0_gpll4,
1134         .num_parents = 3,
1135         .ops = &clk_rcg2_floor_ops,
1136     },
1137 };
1138 
1139 static struct clk_rcg2 sdcc2_apps_clk_src = {
1140     .cmd_rcgr = 0x0510,
1141     .mnd_width = 8,
1142     .hid_width = 5,
1143     .parent_map = gcc_xo_gpll0_map,
1144     .freq_tbl = ftbl_gcc_sdcc1_4_apps_clk,
1145     .clkr.hw.init = &(struct clk_init_data){
1146         .name = "sdcc2_apps_clk_src",
1147         .parent_names = gcc_xo_gpll0,
1148         .num_parents = 2,
1149         .ops = &clk_rcg2_floor_ops,
1150     },
1151 };
1152 
1153 static struct clk_rcg2 sdcc3_apps_clk_src = {
1154     .cmd_rcgr = 0x0550,
1155     .mnd_width = 8,
1156     .hid_width = 5,
1157     .parent_map = gcc_xo_gpll0_map,
1158     .freq_tbl = ftbl_gcc_sdcc1_4_apps_clk,
1159     .clkr.hw.init = &(struct clk_init_data){
1160         .name = "sdcc3_apps_clk_src",
1161         .parent_names = gcc_xo_gpll0,
1162         .num_parents = 2,
1163         .ops = &clk_rcg2_floor_ops,
1164     },
1165 };
1166 
1167 static struct clk_rcg2 sdcc4_apps_clk_src = {
1168     .cmd_rcgr = 0x0590,
1169     .mnd_width = 8,
1170     .hid_width = 5,
1171     .parent_map = gcc_xo_gpll0_map,
1172     .freq_tbl = ftbl_gcc_sdcc1_4_apps_clk,
1173     .clkr.hw.init = &(struct clk_init_data){
1174         .name = "sdcc4_apps_clk_src",
1175         .parent_names = gcc_xo_gpll0,
1176         .num_parents = 2,
1177         .ops = &clk_rcg2_floor_ops,
1178     },
1179 };
1180 
1181 static const struct freq_tbl ftbl_gcc_tsif_ref_clk[] = {
1182     F(105000, P_XO, 2, 1, 91),
1183     { }
1184 };
1185 
1186 static struct clk_rcg2 tsif_ref_clk_src = {
1187     .cmd_rcgr = 0x0d90,
1188     .mnd_width = 8,
1189     .hid_width = 5,
1190     .parent_map = gcc_xo_gpll0_map,
1191     .freq_tbl = ftbl_gcc_tsif_ref_clk,
1192     .clkr.hw.init = &(struct clk_init_data){
1193         .name = "tsif_ref_clk_src",
1194         .parent_names = gcc_xo_gpll0,
1195         .num_parents = 2,
1196         .ops = &clk_rcg2_ops,
1197     },
1198 };
1199 
1200 static const struct freq_tbl ftbl_gcc_usb30_mock_utmi_clk[] = {
1201     F(60000000, P_GPLL0, 10, 0, 0),
1202     { }
1203 };
1204 
1205 static struct clk_rcg2 usb30_mock_utmi_clk_src = {
1206     .cmd_rcgr = 0x03e8,
1207     .hid_width = 5,
1208     .parent_map = gcc_xo_gpll0_map,
1209     .freq_tbl = ftbl_gcc_usb30_mock_utmi_clk,
1210     .clkr.hw.init = &(struct clk_init_data){
1211         .name = "usb30_mock_utmi_clk_src",
1212         .parent_names = gcc_xo_gpll0,
1213         .num_parents = 2,
1214         .ops = &clk_rcg2_ops,
1215     },
1216 };
1217 
1218 static const struct freq_tbl ftbl_gcc_usb30_sec_mock_utmi_clk[] = {
1219     F(125000000, P_GPLL0, 1, 5, 24),
1220     { }
1221 };
1222 
1223 static struct clk_rcg2 usb30_sec_mock_utmi_clk_src = {
1224     .cmd_rcgr = 0x1be8,
1225     .hid_width = 5,
1226     .parent_map = gcc_xo_gpll0_map,
1227     .freq_tbl = ftbl_gcc_usb30_sec_mock_utmi_clk,
1228     .clkr.hw.init = &(struct clk_init_data){
1229         .name = "usb30_sec_mock_utmi_clk_src",
1230         .parent_names = gcc_xo_gpll0,
1231         .num_parents = 2,
1232         .ops = &clk_rcg2_ops,
1233     },
1234 };
1235 
1236 static const struct freq_tbl ftbl_gcc_usb_hs_system_clk[] = {
1237     F(75000000, P_GPLL0, 8, 0, 0),
1238     { }
1239 };
1240 
1241 static struct clk_rcg2 usb_hs_system_clk_src = {
1242     .cmd_rcgr = 0x0490,
1243     .hid_width = 5,
1244     .parent_map = gcc_xo_gpll0_map,
1245     .freq_tbl = ftbl_gcc_usb_hs_system_clk,
1246     .clkr.hw.init = &(struct clk_init_data){
1247         .name = "usb_hs_system_clk_src",
1248         .parent_names = gcc_xo_gpll0,
1249         .num_parents = 2,
1250         .ops = &clk_rcg2_ops,
1251     },
1252 };
1253 
1254 static const struct freq_tbl ftbl_gcc_usb_hsic_clk[] = {
1255     F(480000000, P_GPLL1, 1, 0, 0),
1256     { }
1257 };
1258 
1259 static const struct parent_map usb_hsic_clk_src_map[] = {
1260     { P_XO, 0 },
1261     { P_GPLL1, 4 }
1262 };
1263 
1264 static struct clk_rcg2 usb_hsic_clk_src = {
1265     .cmd_rcgr = 0x0440,
1266     .hid_width = 5,
1267     .parent_map = usb_hsic_clk_src_map,
1268     .freq_tbl = ftbl_gcc_usb_hsic_clk,
1269     .clkr.hw.init = &(struct clk_init_data){
1270         .name = "usb_hsic_clk_src",
1271         .parent_names = (const char *[]){
1272             "xo",
1273             "gpll1_vote",
1274         },
1275         .num_parents = 2,
1276         .ops = &clk_rcg2_ops,
1277     },
1278 };
1279 
1280 static const struct freq_tbl ftbl_gcc_usb_hsic_ahb_clk_src[] = {
1281     F(60000000, P_GPLL1, 8, 0, 0),
1282     { }
1283 };
1284 
1285 static struct clk_rcg2 usb_hsic_ahb_clk_src = {
1286     .cmd_rcgr = 0x046c,
1287     .mnd_width = 8,
1288     .hid_width = 5,
1289     .parent_map = usb_hsic_clk_src_map,
1290     .freq_tbl = ftbl_gcc_usb_hsic_ahb_clk_src,
1291     .clkr.hw.init = &(struct clk_init_data){
1292         .name = "usb_hsic_ahb_clk_src",
1293         .parent_names = (const char *[]){
1294             "xo",
1295             "gpll1_vote",
1296         },
1297         .num_parents = 2,
1298         .ops = &clk_rcg2_ops,
1299     },
1300 };
1301 
1302 static const struct freq_tbl ftbl_gcc_usb_hsic_io_cal_clk[] = {
1303     F(9600000, P_XO, 2, 0, 0),
1304     { }
1305 };
1306 
1307 static struct clk_rcg2 usb_hsic_io_cal_clk_src = {
1308     .cmd_rcgr = 0x0458,
1309     .hid_width = 5,
1310     .parent_map = gcc_xo_gpll0_map,
1311     .freq_tbl = ftbl_gcc_usb_hsic_io_cal_clk,
1312     .clkr.hw.init = &(struct clk_init_data){
1313         .name = "usb_hsic_io_cal_clk_src",
1314         .parent_names = gcc_xo_gpll0,
1315         .num_parents = 1,
1316         .ops = &clk_rcg2_ops,
1317     },
1318 };
1319 
1320 static struct clk_branch gcc_usb_hsic_mock_utmi_clk = {
1321     .halt_reg = 0x1f14,
1322     .clkr = {
1323         .enable_reg = 0x1f14,
1324         .enable_mask = BIT(0),
1325         .hw.init = &(struct clk_init_data){
1326             .name = "gcc_usb_hsic_mock_utmi_clk",
1327             .parent_names = (const char *[]){
1328                 "usb_hsic_mock_utmi_clk_src",
1329             },
1330             .num_parents = 1,
1331             .flags = CLK_SET_RATE_PARENT,
1332             .ops = &clk_branch2_ops,
1333         },
1334     },
1335 };
1336 
1337 static const struct freq_tbl ftbl_gcc_usb_hsic_mock_utmi_clk[] = {
1338     F(60000000, P_GPLL0, 10, 0, 0),
1339     { }
1340 };
1341 
1342 static struct clk_rcg2 usb_hsic_mock_utmi_clk_src = {
1343     .cmd_rcgr = 0x1f00,
1344     .hid_width = 5,
1345     .parent_map = gcc_xo_gpll0_map,
1346     .freq_tbl = ftbl_gcc_usb_hsic_mock_utmi_clk,
1347     .clkr.hw.init = &(struct clk_init_data){
1348         .name = "usb_hsic_mock_utmi_clk_src",
1349         .parent_names = gcc_xo_gpll0,
1350         .num_parents = 1,
1351         .ops = &clk_rcg2_ops,
1352     },
1353 };
1354 
1355 static const struct freq_tbl ftbl_gcc_usb_hsic_system_clk[] = {
1356     F(75000000, P_GPLL0, 8, 0, 0),
1357     { }
1358 };
1359 
1360 static struct clk_rcg2 usb_hsic_system_clk_src = {
1361     .cmd_rcgr = 0x041c,
1362     .hid_width = 5,
1363     .parent_map = gcc_xo_gpll0_map,
1364     .freq_tbl = ftbl_gcc_usb_hsic_system_clk,
1365     .clkr.hw.init = &(struct clk_init_data){
1366         .name = "usb_hsic_system_clk_src",
1367         .parent_names = gcc_xo_gpll0,
1368         .num_parents = 2,
1369         .ops = &clk_rcg2_ops,
1370     },
1371 };
1372 
1373 static struct clk_branch gcc_bam_dma_ahb_clk = {
1374     .halt_reg = 0x0d44,
1375     .halt_check = BRANCH_HALT_VOTED,
1376     .clkr = {
1377         .enable_reg = 0x1484,
1378         .enable_mask = BIT(12),
1379         .hw.init = &(struct clk_init_data){
1380             .name = "gcc_bam_dma_ahb_clk",
1381             .parent_names = (const char *[]){
1382                 "periph_noc_clk_src",
1383             },
1384             .num_parents = 1,
1385             .ops = &clk_branch2_ops,
1386         },
1387     },
1388 };
1389 
1390 static struct clk_branch gcc_blsp1_ahb_clk = {
1391     .halt_reg = 0x05c4,
1392     .halt_check = BRANCH_HALT_VOTED,
1393     .clkr = {
1394         .enable_reg = 0x1484,
1395         .enable_mask = BIT(17),
1396         .hw.init = &(struct clk_init_data){
1397             .name = "gcc_blsp1_ahb_clk",
1398             .parent_names = (const char *[]){
1399                 "periph_noc_clk_src",
1400             },
1401             .num_parents = 1,
1402             .ops = &clk_branch2_ops,
1403         },
1404     },
1405 };
1406 
1407 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1408     .halt_reg = 0x0648,
1409     .clkr = {
1410         .enable_reg = 0x0648,
1411         .enable_mask = BIT(0),
1412         .hw.init = &(struct clk_init_data){
1413             .name = "gcc_blsp1_qup1_i2c_apps_clk",
1414             .parent_names = (const char *[]){
1415                 "blsp1_qup1_i2c_apps_clk_src",
1416             },
1417             .num_parents = 1,
1418             .flags = CLK_SET_RATE_PARENT,
1419             .ops = &clk_branch2_ops,
1420         },
1421     },
1422 };
1423 
1424 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1425     .halt_reg = 0x0644,
1426     .clkr = {
1427         .enable_reg = 0x0644,
1428         .enable_mask = BIT(0),
1429         .hw.init = &(struct clk_init_data){
1430             .name = "gcc_blsp1_qup1_spi_apps_clk",
1431             .parent_names = (const char *[]){
1432                 "blsp1_qup1_spi_apps_clk_src",
1433             },
1434             .num_parents = 1,
1435             .flags = CLK_SET_RATE_PARENT,
1436             .ops = &clk_branch2_ops,
1437         },
1438     },
1439 };
1440 
1441 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1442     .halt_reg = 0x06c8,
1443     .clkr = {
1444         .enable_reg = 0x06c8,
1445         .enable_mask = BIT(0),
1446         .hw.init = &(struct clk_init_data){
1447             .name = "gcc_blsp1_qup2_i2c_apps_clk",
1448             .parent_names = (const char *[]){
1449                 "blsp1_qup2_i2c_apps_clk_src",
1450             },
1451             .num_parents = 1,
1452             .flags = CLK_SET_RATE_PARENT,
1453             .ops = &clk_branch2_ops,
1454         },
1455     },
1456 };
1457 
1458 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1459     .halt_reg = 0x06c4,
1460     .clkr = {
1461         .enable_reg = 0x06c4,
1462         .enable_mask = BIT(0),
1463         .hw.init = &(struct clk_init_data){
1464             .name = "gcc_blsp1_qup2_spi_apps_clk",
1465             .parent_names = (const char *[]){
1466                 "blsp1_qup2_spi_apps_clk_src",
1467             },
1468             .num_parents = 1,
1469             .flags = CLK_SET_RATE_PARENT,
1470             .ops = &clk_branch2_ops,
1471         },
1472     },
1473 };
1474 
1475 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1476     .halt_reg = 0x0748,
1477     .clkr = {
1478         .enable_reg = 0x0748,
1479         .enable_mask = BIT(0),
1480         .hw.init = &(struct clk_init_data){
1481             .name = "gcc_blsp1_qup3_i2c_apps_clk",
1482             .parent_names = (const char *[]){
1483                 "blsp1_qup3_i2c_apps_clk_src",
1484             },
1485             .num_parents = 1,
1486             .flags = CLK_SET_RATE_PARENT,
1487             .ops = &clk_branch2_ops,
1488         },
1489     },
1490 };
1491 
1492 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1493     .halt_reg = 0x0744,
1494     .clkr = {
1495         .enable_reg = 0x0744,
1496         .enable_mask = BIT(0),
1497         .hw.init = &(struct clk_init_data){
1498             .name = "gcc_blsp1_qup3_spi_apps_clk",
1499             .parent_names = (const char *[]){
1500                 "blsp1_qup3_spi_apps_clk_src",
1501             },
1502             .num_parents = 1,
1503             .flags = CLK_SET_RATE_PARENT,
1504             .ops = &clk_branch2_ops,
1505         },
1506     },
1507 };
1508 
1509 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1510     .halt_reg = 0x07c8,
1511     .clkr = {
1512         .enable_reg = 0x07c8,
1513         .enable_mask = BIT(0),
1514         .hw.init = &(struct clk_init_data){
1515             .name = "gcc_blsp1_qup4_i2c_apps_clk",
1516             .parent_names = (const char *[]){
1517                 "blsp1_qup4_i2c_apps_clk_src",
1518             },
1519             .num_parents = 1,
1520             .flags = CLK_SET_RATE_PARENT,
1521             .ops = &clk_branch2_ops,
1522         },
1523     },
1524 };
1525 
1526 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1527     .halt_reg = 0x07c4,
1528     .clkr = {
1529         .enable_reg = 0x07c4,
1530         .enable_mask = BIT(0),
1531         .hw.init = &(struct clk_init_data){
1532             .name = "gcc_blsp1_qup4_spi_apps_clk",
1533             .parent_names = (const char *[]){
1534                 "blsp1_qup4_spi_apps_clk_src",
1535             },
1536             .num_parents = 1,
1537             .flags = CLK_SET_RATE_PARENT,
1538             .ops = &clk_branch2_ops,
1539         },
1540     },
1541 };
1542 
1543 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1544     .halt_reg = 0x0848,
1545     .clkr = {
1546         .enable_reg = 0x0848,
1547         .enable_mask = BIT(0),
1548         .hw.init = &(struct clk_init_data){
1549             .name = "gcc_blsp1_qup5_i2c_apps_clk",
1550             .parent_names = (const char *[]){
1551                 "blsp1_qup5_i2c_apps_clk_src",
1552             },
1553             .num_parents = 1,
1554             .flags = CLK_SET_RATE_PARENT,
1555             .ops = &clk_branch2_ops,
1556         },
1557     },
1558 };
1559 
1560 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1561     .halt_reg = 0x0844,
1562     .clkr = {
1563         .enable_reg = 0x0844,
1564         .enable_mask = BIT(0),
1565         .hw.init = &(struct clk_init_data){
1566             .name = "gcc_blsp1_qup5_spi_apps_clk",
1567             .parent_names = (const char *[]){
1568                 "blsp1_qup5_spi_apps_clk_src",
1569             },
1570             .num_parents = 1,
1571             .flags = CLK_SET_RATE_PARENT,
1572             .ops = &clk_branch2_ops,
1573         },
1574     },
1575 };
1576 
1577 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1578     .halt_reg = 0x08c8,
1579     .clkr = {
1580         .enable_reg = 0x08c8,
1581         .enable_mask = BIT(0),
1582         .hw.init = &(struct clk_init_data){
1583             .name = "gcc_blsp1_qup6_i2c_apps_clk",
1584             .parent_names = (const char *[]){
1585                 "blsp1_qup6_i2c_apps_clk_src",
1586             },
1587             .num_parents = 1,
1588             .flags = CLK_SET_RATE_PARENT,
1589             .ops = &clk_branch2_ops,
1590         },
1591     },
1592 };
1593 
1594 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1595     .halt_reg = 0x08c4,
1596     .clkr = {
1597         .enable_reg = 0x08c4,
1598         .enable_mask = BIT(0),
1599         .hw.init = &(struct clk_init_data){
1600             .name = "gcc_blsp1_qup6_spi_apps_clk",
1601             .parent_names = (const char *[]){
1602                 "blsp1_qup6_spi_apps_clk_src",
1603             },
1604             .num_parents = 1,
1605             .flags = CLK_SET_RATE_PARENT,
1606             .ops = &clk_branch2_ops,
1607         },
1608     },
1609 };
1610 
1611 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1612     .halt_reg = 0x0684,
1613     .clkr = {
1614         .enable_reg = 0x0684,
1615         .enable_mask = BIT(0),
1616         .hw.init = &(struct clk_init_data){
1617             .name = "gcc_blsp1_uart1_apps_clk",
1618             .parent_names = (const char *[]){
1619                 "blsp1_uart1_apps_clk_src",
1620             },
1621             .num_parents = 1,
1622             .flags = CLK_SET_RATE_PARENT,
1623             .ops = &clk_branch2_ops,
1624         },
1625     },
1626 };
1627 
1628 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1629     .halt_reg = 0x0704,
1630     .clkr = {
1631         .enable_reg = 0x0704,
1632         .enable_mask = BIT(0),
1633         .hw.init = &(struct clk_init_data){
1634             .name = "gcc_blsp1_uart2_apps_clk",
1635             .parent_names = (const char *[]){
1636                 "blsp1_uart2_apps_clk_src",
1637             },
1638             .num_parents = 1,
1639             .flags = CLK_SET_RATE_PARENT,
1640             .ops = &clk_branch2_ops,
1641         },
1642     },
1643 };
1644 
1645 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1646     .halt_reg = 0x0784,
1647     .clkr = {
1648         .enable_reg = 0x0784,
1649         .enable_mask = BIT(0),
1650         .hw.init = &(struct clk_init_data){
1651             .name = "gcc_blsp1_uart3_apps_clk",
1652             .parent_names = (const char *[]){
1653                 "blsp1_uart3_apps_clk_src",
1654             },
1655             .num_parents = 1,
1656             .flags = CLK_SET_RATE_PARENT,
1657             .ops = &clk_branch2_ops,
1658         },
1659     },
1660 };
1661 
1662 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1663     .halt_reg = 0x0804,
1664     .clkr = {
1665         .enable_reg = 0x0804,
1666         .enable_mask = BIT(0),
1667         .hw.init = &(struct clk_init_data){
1668             .name = "gcc_blsp1_uart4_apps_clk",
1669             .parent_names = (const char *[]){
1670                 "blsp1_uart4_apps_clk_src",
1671             },
1672             .num_parents = 1,
1673             .flags = CLK_SET_RATE_PARENT,
1674             .ops = &clk_branch2_ops,
1675         },
1676     },
1677 };
1678 
1679 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1680     .halt_reg = 0x0884,
1681     .clkr = {
1682         .enable_reg = 0x0884,
1683         .enable_mask = BIT(0),
1684         .hw.init = &(struct clk_init_data){
1685             .name = "gcc_blsp1_uart5_apps_clk",
1686             .parent_names = (const char *[]){
1687                 "blsp1_uart5_apps_clk_src",
1688             },
1689             .num_parents = 1,
1690             .flags = CLK_SET_RATE_PARENT,
1691             .ops = &clk_branch2_ops,
1692         },
1693     },
1694 };
1695 
1696 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1697     .halt_reg = 0x0904,
1698     .clkr = {
1699         .enable_reg = 0x0904,
1700         .enable_mask = BIT(0),
1701         .hw.init = &(struct clk_init_data){
1702             .name = "gcc_blsp1_uart6_apps_clk",
1703             .parent_names = (const char *[]){
1704                 "blsp1_uart6_apps_clk_src",
1705             },
1706             .num_parents = 1,
1707             .flags = CLK_SET_RATE_PARENT,
1708             .ops = &clk_branch2_ops,
1709         },
1710     },
1711 };
1712 
1713 static struct clk_branch gcc_blsp2_ahb_clk = {
1714     .halt_reg = 0x0944,
1715     .halt_check = BRANCH_HALT_VOTED,
1716     .clkr = {
1717         .enable_reg = 0x1484,
1718         .enable_mask = BIT(15),
1719         .hw.init = &(struct clk_init_data){
1720             .name = "gcc_blsp2_ahb_clk",
1721             .parent_names = (const char *[]){
1722                 "periph_noc_clk_src",
1723             },
1724             .num_parents = 1,
1725             .ops = &clk_branch2_ops,
1726         },
1727     },
1728 };
1729 
1730 static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1731     .halt_reg = 0x0988,
1732     .clkr = {
1733         .enable_reg = 0x0988,
1734         .enable_mask = BIT(0),
1735         .hw.init = &(struct clk_init_data){
1736             .name = "gcc_blsp2_qup1_i2c_apps_clk",
1737             .parent_names = (const char *[]){
1738                 "blsp2_qup1_i2c_apps_clk_src",
1739             },
1740             .num_parents = 1,
1741             .flags = CLK_SET_RATE_PARENT,
1742             .ops = &clk_branch2_ops,
1743         },
1744     },
1745 };
1746 
1747 static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1748     .halt_reg = 0x0984,
1749     .clkr = {
1750         .enable_reg = 0x0984,
1751         .enable_mask = BIT(0),
1752         .hw.init = &(struct clk_init_data){
1753             .name = "gcc_blsp2_qup1_spi_apps_clk",
1754             .parent_names = (const char *[]){
1755                 "blsp2_qup1_spi_apps_clk_src",
1756             },
1757             .num_parents = 1,
1758             .flags = CLK_SET_RATE_PARENT,
1759             .ops = &clk_branch2_ops,
1760         },
1761     },
1762 };
1763 
1764 static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1765     .halt_reg = 0x0a08,
1766     .clkr = {
1767         .enable_reg = 0x0a08,
1768         .enable_mask = BIT(0),
1769         .hw.init = &(struct clk_init_data){
1770             .name = "gcc_blsp2_qup2_i2c_apps_clk",
1771             .parent_names = (const char *[]){
1772                 "blsp2_qup2_i2c_apps_clk_src",
1773             },
1774             .num_parents = 1,
1775             .flags = CLK_SET_RATE_PARENT,
1776             .ops = &clk_branch2_ops,
1777         },
1778     },
1779 };
1780 
1781 static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1782     .halt_reg = 0x0a04,
1783     .clkr = {
1784         .enable_reg = 0x0a04,
1785         .enable_mask = BIT(0),
1786         .hw.init = &(struct clk_init_data){
1787             .name = "gcc_blsp2_qup2_spi_apps_clk",
1788             .parent_names = (const char *[]){
1789                 "blsp2_qup2_spi_apps_clk_src",
1790             },
1791             .num_parents = 1,
1792             .flags = CLK_SET_RATE_PARENT,
1793             .ops = &clk_branch2_ops,
1794         },
1795     },
1796 };
1797 
1798 static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1799     .halt_reg = 0x0a88,
1800     .clkr = {
1801         .enable_reg = 0x0a88,
1802         .enable_mask = BIT(0),
1803         .hw.init = &(struct clk_init_data){
1804             .name = "gcc_blsp2_qup3_i2c_apps_clk",
1805             .parent_names = (const char *[]){
1806                 "blsp2_qup3_i2c_apps_clk_src",
1807             },
1808             .num_parents = 1,
1809             .flags = CLK_SET_RATE_PARENT,
1810             .ops = &clk_branch2_ops,
1811         },
1812     },
1813 };
1814 
1815 static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1816     .halt_reg = 0x0a84,
1817     .clkr = {
1818         .enable_reg = 0x0a84,
1819         .enable_mask = BIT(0),
1820         .hw.init = &(struct clk_init_data){
1821             .name = "gcc_blsp2_qup3_spi_apps_clk",
1822             .parent_names = (const char *[]){
1823                 "blsp2_qup3_spi_apps_clk_src",
1824             },
1825             .num_parents = 1,
1826             .flags = CLK_SET_RATE_PARENT,
1827             .ops = &clk_branch2_ops,
1828         },
1829     },
1830 };
1831 
1832 static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1833     .halt_reg = 0x0b08,
1834     .clkr = {
1835         .enable_reg = 0x0b08,
1836         .enable_mask = BIT(0),
1837         .hw.init = &(struct clk_init_data){
1838             .name = "gcc_blsp2_qup4_i2c_apps_clk",
1839             .parent_names = (const char *[]){
1840                 "blsp2_qup4_i2c_apps_clk_src",
1841             },
1842             .num_parents = 1,
1843             .flags = CLK_SET_RATE_PARENT,
1844             .ops = &clk_branch2_ops,
1845         },
1846     },
1847 };
1848 
1849 static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1850     .halt_reg = 0x0b04,
1851     .clkr = {
1852         .enable_reg = 0x0b04,
1853         .enable_mask = BIT(0),
1854         .hw.init = &(struct clk_init_data){
1855             .name = "gcc_blsp2_qup4_spi_apps_clk",
1856             .parent_names = (const char *[]){
1857                 "blsp2_qup4_spi_apps_clk_src",
1858             },
1859             .num_parents = 1,
1860             .flags = CLK_SET_RATE_PARENT,
1861             .ops = &clk_branch2_ops,
1862         },
1863     },
1864 };
1865 
1866 static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1867     .halt_reg = 0x0b88,
1868     .clkr = {
1869         .enable_reg = 0x0b88,
1870         .enable_mask = BIT(0),
1871         .hw.init = &(struct clk_init_data){
1872             .name = "gcc_blsp2_qup5_i2c_apps_clk",
1873             .parent_names = (const char *[]){
1874                 "blsp2_qup5_i2c_apps_clk_src",
1875             },
1876             .num_parents = 1,
1877             .flags = CLK_SET_RATE_PARENT,
1878             .ops = &clk_branch2_ops,
1879         },
1880     },
1881 };
1882 
1883 static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = {
1884     .halt_reg = 0x0b84,
1885     .clkr = {
1886         .enable_reg = 0x0b84,
1887         .enable_mask = BIT(0),
1888         .hw.init = &(struct clk_init_data){
1889             .name = "gcc_blsp2_qup5_spi_apps_clk",
1890             .parent_names = (const char *[]){
1891                 "blsp2_qup5_spi_apps_clk_src",
1892             },
1893             .num_parents = 1,
1894             .flags = CLK_SET_RATE_PARENT,
1895             .ops = &clk_branch2_ops,
1896         },
1897     },
1898 };
1899 
1900 static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1901     .halt_reg = 0x0c08,
1902     .clkr = {
1903         .enable_reg = 0x0c08,
1904         .enable_mask = BIT(0),
1905         .hw.init = &(struct clk_init_data){
1906             .name = "gcc_blsp2_qup6_i2c_apps_clk",
1907             .parent_names = (const char *[]){
1908                 "blsp2_qup6_i2c_apps_clk_src",
1909             },
1910             .num_parents = 1,
1911             .flags = CLK_SET_RATE_PARENT,
1912             .ops = &clk_branch2_ops,
1913         },
1914     },
1915 };
1916 
1917 static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1918     .halt_reg = 0x0c04,
1919     .clkr = {
1920         .enable_reg = 0x0c04,
1921         .enable_mask = BIT(0),
1922         .hw.init = &(struct clk_init_data){
1923             .name = "gcc_blsp2_qup6_spi_apps_clk",
1924             .parent_names = (const char *[]){
1925                 "blsp2_qup6_spi_apps_clk_src",
1926             },
1927             .num_parents = 1,
1928             .flags = CLK_SET_RATE_PARENT,
1929             .ops = &clk_branch2_ops,
1930         },
1931     },
1932 };
1933 
1934 static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1935     .halt_reg = 0x09c4,
1936     .clkr = {
1937         .enable_reg = 0x09c4,
1938         .enable_mask = BIT(0),
1939         .hw.init = &(struct clk_init_data){
1940             .name = "gcc_blsp2_uart1_apps_clk",
1941             .parent_names = (const char *[]){
1942                 "blsp2_uart1_apps_clk_src",
1943             },
1944             .num_parents = 1,
1945             .flags = CLK_SET_RATE_PARENT,
1946             .ops = &clk_branch2_ops,
1947         },
1948     },
1949 };
1950 
1951 static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1952     .halt_reg = 0x0a44,
1953     .clkr = {
1954         .enable_reg = 0x0a44,
1955         .enable_mask = BIT(0),
1956         .hw.init = &(struct clk_init_data){
1957             .name = "gcc_blsp2_uart2_apps_clk",
1958             .parent_names = (const char *[]){
1959                 "blsp2_uart2_apps_clk_src",
1960             },
1961             .num_parents = 1,
1962             .flags = CLK_SET_RATE_PARENT,
1963             .ops = &clk_branch2_ops,
1964         },
1965     },
1966 };
1967 
1968 static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1969     .halt_reg = 0x0ac4,
1970     .clkr = {
1971         .enable_reg = 0x0ac4,
1972         .enable_mask = BIT(0),
1973         .hw.init = &(struct clk_init_data){
1974             .name = "gcc_blsp2_uart3_apps_clk",
1975             .parent_names = (const char *[]){
1976                 "blsp2_uart3_apps_clk_src",
1977             },
1978             .num_parents = 1,
1979             .flags = CLK_SET_RATE_PARENT,
1980             .ops = &clk_branch2_ops,
1981         },
1982     },
1983 };
1984 
1985 static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1986     .halt_reg = 0x0b44,
1987     .clkr = {
1988         .enable_reg = 0x0b44,
1989         .enable_mask = BIT(0),
1990         .hw.init = &(struct clk_init_data){
1991             .name = "gcc_blsp2_uart4_apps_clk",
1992             .parent_names = (const char *[]){
1993                 "blsp2_uart4_apps_clk_src",
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_blsp2_uart5_apps_clk = {
2003     .halt_reg = 0x0bc4,
2004     .clkr = {
2005         .enable_reg = 0x0bc4,
2006         .enable_mask = BIT(0),
2007         .hw.init = &(struct clk_init_data){
2008             .name = "gcc_blsp2_uart5_apps_clk",
2009             .parent_names = (const char *[]){
2010                 "blsp2_uart5_apps_clk_src",
2011             },
2012             .num_parents = 1,
2013             .flags = CLK_SET_RATE_PARENT,
2014             .ops = &clk_branch2_ops,
2015         },
2016     },
2017 };
2018 
2019 static struct clk_branch gcc_blsp2_uart6_apps_clk = {
2020     .halt_reg = 0x0c44,
2021     .clkr = {
2022         .enable_reg = 0x0c44,
2023         .enable_mask = BIT(0),
2024         .hw.init = &(struct clk_init_data){
2025             .name = "gcc_blsp2_uart6_apps_clk",
2026             .parent_names = (const char *[]){
2027                 "blsp2_uart6_apps_clk_src",
2028             },
2029             .num_parents = 1,
2030             .flags = CLK_SET_RATE_PARENT,
2031             .ops = &clk_branch2_ops,
2032         },
2033     },
2034 };
2035 
2036 static struct clk_branch gcc_boot_rom_ahb_clk = {
2037     .halt_reg = 0x0e04,
2038     .halt_check = BRANCH_HALT_VOTED,
2039     .clkr = {
2040         .enable_reg = 0x1484,
2041         .enable_mask = BIT(10),
2042         .hw.init = &(struct clk_init_data){
2043             .name = "gcc_boot_rom_ahb_clk",
2044             .parent_names = (const char *[]){
2045                 "config_noc_clk_src",
2046             },
2047             .num_parents = 1,
2048             .ops = &clk_branch2_ops,
2049         },
2050     },
2051 };
2052 
2053 static struct clk_branch gcc_ce1_ahb_clk = {
2054     .halt_reg = 0x104c,
2055     .halt_check = BRANCH_HALT_VOTED,
2056     .clkr = {
2057         .enable_reg = 0x1484,
2058         .enable_mask = BIT(3),
2059         .hw.init = &(struct clk_init_data){
2060             .name = "gcc_ce1_ahb_clk",
2061             .parent_names = (const char *[]){
2062                 "config_noc_clk_src",
2063             },
2064             .num_parents = 1,
2065             .ops = &clk_branch2_ops,
2066         },
2067     },
2068 };
2069 
2070 static struct clk_branch gcc_ce1_axi_clk = {
2071     .halt_reg = 0x1048,
2072     .halt_check = BRANCH_HALT_VOTED,
2073     .clkr = {
2074         .enable_reg = 0x1484,
2075         .enable_mask = BIT(4),
2076         .hw.init = &(struct clk_init_data){
2077             .name = "gcc_ce1_axi_clk",
2078             .parent_names = (const char *[]){
2079                 "system_noc_clk_src",
2080             },
2081             .num_parents = 1,
2082             .ops = &clk_branch2_ops,
2083         },
2084     },
2085 };
2086 
2087 static struct clk_branch gcc_ce1_clk = {
2088     .halt_reg = 0x1050,
2089     .halt_check = BRANCH_HALT_VOTED,
2090     .clkr = {
2091         .enable_reg = 0x1484,
2092         .enable_mask = BIT(5),
2093         .hw.init = &(struct clk_init_data){
2094             .name = "gcc_ce1_clk",
2095             .parent_names = (const char *[]){
2096                 "ce1_clk_src",
2097             },
2098             .num_parents = 1,
2099             .flags = CLK_SET_RATE_PARENT,
2100             .ops = &clk_branch2_ops,
2101         },
2102     },
2103 };
2104 
2105 static struct clk_branch gcc_ce2_ahb_clk = {
2106     .halt_reg = 0x108c,
2107     .halt_check = BRANCH_HALT_VOTED,
2108     .clkr = {
2109         .enable_reg = 0x1484,
2110         .enable_mask = BIT(0),
2111         .hw.init = &(struct clk_init_data){
2112             .name = "gcc_ce2_ahb_clk",
2113             .parent_names = (const char *[]){
2114                 "config_noc_clk_src",
2115             },
2116             .num_parents = 1,
2117             .ops = &clk_branch2_ops,
2118         },
2119     },
2120 };
2121 
2122 static struct clk_branch gcc_ce2_axi_clk = {
2123     .halt_reg = 0x1088,
2124     .halt_check = BRANCH_HALT_VOTED,
2125     .clkr = {
2126         .enable_reg = 0x1484,
2127         .enable_mask = BIT(1),
2128         .hw.init = &(struct clk_init_data){
2129             .name = "gcc_ce2_axi_clk",
2130             .parent_names = (const char *[]){
2131                 "system_noc_clk_src",
2132             },
2133             .num_parents = 1,
2134             .ops = &clk_branch2_ops,
2135         },
2136     },
2137 };
2138 
2139 static struct clk_branch gcc_ce2_clk = {
2140     .halt_reg = 0x1090,
2141     .halt_check = BRANCH_HALT_VOTED,
2142     .clkr = {
2143         .enable_reg = 0x1484,
2144         .enable_mask = BIT(2),
2145         .hw.init = &(struct clk_init_data){
2146             .name = "gcc_ce2_clk",
2147             .parent_names = (const char *[]){
2148                 "ce2_clk_src",
2149             },
2150             .num_parents = 1,
2151             .flags = CLK_SET_RATE_PARENT,
2152             .ops = &clk_branch2_ops,
2153         },
2154     },
2155 };
2156 
2157 static struct clk_branch gcc_ce3_ahb_clk = {
2158     .halt_reg = 0x1d0c,
2159     .halt_check = BRANCH_HALT_VOTED,
2160     .clkr = {
2161         .enable_reg = 0x1d0c,
2162         .enable_mask = BIT(0),
2163         .hw.init = &(struct clk_init_data){
2164             .name = "gcc_ce3_ahb_clk",
2165             .parent_names = (const char *[]){
2166                 "config_noc_clk_src",
2167             },
2168             .num_parents = 1,
2169             .ops = &clk_branch2_ops,
2170         },
2171     },
2172 };
2173 
2174 static struct clk_branch gcc_ce3_axi_clk = {
2175     .halt_reg = 0x1088,
2176     .halt_check = BRANCH_HALT_VOTED,
2177     .clkr = {
2178         .enable_reg = 0x1d08,
2179         .enable_mask = BIT(0),
2180         .hw.init = &(struct clk_init_data){
2181             .name = "gcc_ce3_axi_clk",
2182             .parent_names = (const char *[]){
2183                 "system_noc_clk_src",
2184             },
2185             .num_parents = 1,
2186             .ops = &clk_branch2_ops,
2187         },
2188     },
2189 };
2190 
2191 static struct clk_branch gcc_ce3_clk = {
2192     .halt_reg = 0x1090,
2193     .halt_check = BRANCH_HALT_VOTED,
2194     .clkr = {
2195         .enable_reg = 0x1d04,
2196         .enable_mask = BIT(0),
2197         .hw.init = &(struct clk_init_data){
2198             .name = "gcc_ce3_clk",
2199             .parent_names = (const char *[]){
2200                 "ce3_clk_src",
2201             },
2202             .num_parents = 1,
2203             .flags = CLK_SET_RATE_PARENT,
2204             .ops = &clk_branch2_ops,
2205         },
2206     },
2207 };
2208 
2209 static struct clk_branch gcc_gp1_clk = {
2210     .halt_reg = 0x1900,
2211     .clkr = {
2212         .enable_reg = 0x1900,
2213         .enable_mask = BIT(0),
2214         .hw.init = &(struct clk_init_data){
2215             .name = "gcc_gp1_clk",
2216             .parent_names = (const char *[]){
2217                 "gp1_clk_src",
2218             },
2219             .num_parents = 1,
2220             .flags = CLK_SET_RATE_PARENT,
2221             .ops = &clk_branch2_ops,
2222         },
2223     },
2224 };
2225 
2226 static struct clk_branch gcc_gp2_clk = {
2227     .halt_reg = 0x1940,
2228     .clkr = {
2229         .enable_reg = 0x1940,
2230         .enable_mask = BIT(0),
2231         .hw.init = &(struct clk_init_data){
2232             .name = "gcc_gp2_clk",
2233             .parent_names = (const char *[]){
2234                 "gp2_clk_src",
2235             },
2236             .num_parents = 1,
2237             .flags = CLK_SET_RATE_PARENT,
2238             .ops = &clk_branch2_ops,
2239         },
2240     },
2241 };
2242 
2243 static struct clk_branch gcc_gp3_clk = {
2244     .halt_reg = 0x1980,
2245     .clkr = {
2246         .enable_reg = 0x1980,
2247         .enable_mask = BIT(0),
2248         .hw.init = &(struct clk_init_data){
2249             .name = "gcc_gp3_clk",
2250             .parent_names = (const char *[]){
2251                 "gp3_clk_src",
2252             },
2253             .num_parents = 1,
2254             .flags = CLK_SET_RATE_PARENT,
2255             .ops = &clk_branch2_ops,
2256         },
2257     },
2258 };
2259 
2260 static struct clk_branch gcc_ocmem_noc_cfg_ahb_clk = {
2261     .halt_reg = 0x0248,
2262     .clkr = {
2263         .enable_reg = 0x0248,
2264         .enable_mask = BIT(0),
2265         .hw.init = &(struct clk_init_data){
2266             .name = "gcc_ocmem_noc_cfg_ahb_clk",
2267             .parent_names = (const char *[]){
2268                 "config_noc_clk_src",
2269             },
2270             .num_parents = 1,
2271             .ops = &clk_branch2_ops,
2272         },
2273     },
2274 };
2275 
2276 static struct clk_branch gcc_pcie_0_aux_clk = {
2277     .halt_reg = 0x1b10,
2278     .clkr = {
2279         .enable_reg = 0x1b10,
2280         .enable_mask = BIT(0),
2281         .hw.init = &(struct clk_init_data){
2282             .name = "gcc_pcie_0_aux_clk",
2283             .parent_names = (const char *[]){
2284                 "pcie_0_aux_clk_src",
2285             },
2286             .num_parents = 1,
2287             .flags = CLK_SET_RATE_PARENT,
2288             .ops = &clk_branch2_ops,
2289         },
2290     },
2291 };
2292 
2293 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
2294     .halt_reg = 0x1b0c,
2295     .clkr = {
2296         .enable_reg = 0x1b0c,
2297         .enable_mask = BIT(0),
2298         .hw.init = &(struct clk_init_data){
2299             .name = "gcc_pcie_0_cfg_ahb_clk",
2300             .parent_names = (const char *[]){
2301                 "config_noc_clk_src",
2302             },
2303             .num_parents = 1,
2304             .flags = CLK_SET_RATE_PARENT,
2305             .ops = &clk_branch2_ops,
2306         },
2307     },
2308 };
2309 
2310 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
2311     .halt_reg = 0x1b08,
2312     .clkr = {
2313         .enable_reg = 0x1b08,
2314         .enable_mask = BIT(0),
2315         .hw.init = &(struct clk_init_data){
2316             .name = "gcc_pcie_0_mstr_axi_clk",
2317             .parent_names = (const char *[]){
2318                 "config_noc_clk_src",
2319             },
2320             .num_parents = 1,
2321             .flags = CLK_SET_RATE_PARENT,
2322             .ops = &clk_branch2_ops,
2323         },
2324     },
2325 };
2326 
2327 static struct clk_branch gcc_pcie_0_pipe_clk = {
2328     .halt_reg = 0x1b14,
2329     .clkr = {
2330         .enable_reg = 0x1b14,
2331         .enable_mask = BIT(0),
2332         .hw.init = &(struct clk_init_data){
2333             .name = "gcc_pcie_0_pipe_clk",
2334             .parent_names = (const char *[]){
2335                 "pcie_0_pipe_clk_src",
2336             },
2337             .num_parents = 1,
2338             .flags = CLK_SET_RATE_PARENT,
2339             .ops = &clk_branch2_ops,
2340         },
2341     },
2342 };
2343 
2344 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
2345     .halt_reg = 0x1b04,
2346     .clkr = {
2347         .enable_reg = 0x1b04,
2348         .enable_mask = BIT(0),
2349         .hw.init = &(struct clk_init_data){
2350             .name = "gcc_pcie_0_slv_axi_clk",
2351             .parent_names = (const char *[]){
2352                 "config_noc_clk_src",
2353             },
2354             .num_parents = 1,
2355             .flags = CLK_SET_RATE_PARENT,
2356             .ops = &clk_branch2_ops,
2357         },
2358     },
2359 };
2360 
2361 static struct clk_branch gcc_pcie_1_aux_clk = {
2362     .halt_reg = 0x1b90,
2363     .clkr = {
2364         .enable_reg = 0x1b90,
2365         .enable_mask = BIT(0),
2366         .hw.init = &(struct clk_init_data){
2367             .name = "gcc_pcie_1_aux_clk",
2368             .parent_names = (const char *[]){
2369                 "pcie_1_aux_clk_src",
2370             },
2371             .num_parents = 1,
2372             .flags = CLK_SET_RATE_PARENT,
2373             .ops = &clk_branch2_ops,
2374         },
2375     },
2376 };
2377 
2378 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
2379     .halt_reg = 0x1b8c,
2380     .clkr = {
2381         .enable_reg = 0x1b8c,
2382         .enable_mask = BIT(0),
2383         .hw.init = &(struct clk_init_data){
2384             .name = "gcc_pcie_1_cfg_ahb_clk",
2385             .parent_names = (const char *[]){
2386                 "config_noc_clk_src",
2387             },
2388             .num_parents = 1,
2389             .flags = CLK_SET_RATE_PARENT,
2390             .ops = &clk_branch2_ops,
2391         },
2392     },
2393 };
2394 
2395 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
2396     .halt_reg = 0x1b88,
2397     .clkr = {
2398         .enable_reg = 0x1b88,
2399         .enable_mask = BIT(0),
2400         .hw.init = &(struct clk_init_data){
2401             .name = "gcc_pcie_1_mstr_axi_clk",
2402             .parent_names = (const char *[]){
2403                 "config_noc_clk_src",
2404             },
2405             .num_parents = 1,
2406             .flags = CLK_SET_RATE_PARENT,
2407             .ops = &clk_branch2_ops,
2408         },
2409     },
2410 };
2411 
2412 static struct clk_branch gcc_pcie_1_pipe_clk = {
2413     .halt_reg = 0x1b94,
2414     .clkr = {
2415         .enable_reg = 0x1b94,
2416         .enable_mask = BIT(0),
2417         .hw.init = &(struct clk_init_data){
2418             .name = "gcc_pcie_1_pipe_clk",
2419             .parent_names = (const char *[]){
2420                 "pcie_1_pipe_clk_src",
2421             },
2422             .num_parents = 1,
2423             .flags = CLK_SET_RATE_PARENT,
2424             .ops = &clk_branch2_ops,
2425         },
2426     },
2427 };
2428 
2429 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
2430     .halt_reg = 0x1b84,
2431     .clkr = {
2432         .enable_reg = 0x1b84,
2433         .enable_mask = BIT(0),
2434         .hw.init = &(struct clk_init_data){
2435             .name = "gcc_pcie_1_slv_axi_clk",
2436             .parent_names = (const char *[]){
2437                 "config_noc_clk_src",
2438             },
2439             .num_parents = 1,
2440             .flags = CLK_SET_RATE_PARENT,
2441             .ops = &clk_branch2_ops,
2442         },
2443     },
2444 };
2445 
2446 static struct clk_branch gcc_pdm2_clk = {
2447     .halt_reg = 0x0ccc,
2448     .clkr = {
2449         .enable_reg = 0x0ccc,
2450         .enable_mask = BIT(0),
2451         .hw.init = &(struct clk_init_data){
2452             .name = "gcc_pdm2_clk",
2453             .parent_names = (const char *[]){
2454                 "pdm2_clk_src",
2455             },
2456             .num_parents = 1,
2457             .flags = CLK_SET_RATE_PARENT,
2458             .ops = &clk_branch2_ops,
2459         },
2460     },
2461 };
2462 
2463 static struct clk_branch gcc_pdm_ahb_clk = {
2464     .halt_reg = 0x0cc4,
2465     .clkr = {
2466         .enable_reg = 0x0cc4,
2467         .enable_mask = BIT(0),
2468         .hw.init = &(struct clk_init_data){
2469             .name = "gcc_pdm_ahb_clk",
2470             .parent_names = (const char *[]){
2471                 "periph_noc_clk_src",
2472             },
2473             .num_parents = 1,
2474             .ops = &clk_branch2_ops,
2475         },
2476     },
2477 };
2478 
2479 static struct clk_branch gcc_periph_noc_usb_hsic_ahb_clk = {
2480     .halt_reg = 0x01a4,
2481     .clkr = {
2482         .enable_reg = 0x01a4,
2483         .enable_mask = BIT(0),
2484         .hw.init = &(struct clk_init_data){
2485             .name = "gcc_periph_noc_usb_hsic_ahb_clk",
2486             .parent_names = (const char *[]){
2487                 "usb_hsic_ahb_clk_src",
2488             },
2489             .num_parents = 1,
2490             .flags = CLK_SET_RATE_PARENT,
2491             .ops = &clk_branch2_ops,
2492         },
2493     },
2494 };
2495 
2496 static struct clk_branch gcc_prng_ahb_clk = {
2497     .halt_reg = 0x0d04,
2498     .halt_check = BRANCH_HALT_VOTED,
2499     .clkr = {
2500         .enable_reg = 0x1484,
2501         .enable_mask = BIT(13),
2502         .hw.init = &(struct clk_init_data){
2503             .name = "gcc_prng_ahb_clk",
2504             .parent_names = (const char *[]){
2505                 "periph_noc_clk_src",
2506             },
2507             .num_parents = 1,
2508             .ops = &clk_branch2_ops,
2509         },
2510     },
2511 };
2512 
2513 static struct clk_branch gcc_sata_asic0_clk = {
2514     .halt_reg = 0x1c54,
2515     .clkr = {
2516         .enable_reg = 0x1c54,
2517         .enable_mask = BIT(0),
2518         .hw.init = &(struct clk_init_data){
2519             .name = "gcc_sata_asic0_clk",
2520             .parent_names = (const char *[]){
2521                 "sata_asic0_clk_src",
2522             },
2523             .num_parents = 1,
2524             .flags = CLK_SET_RATE_PARENT,
2525             .ops = &clk_branch2_ops,
2526         },
2527     },
2528 };
2529 
2530 static struct clk_branch gcc_sata_axi_clk = {
2531     .halt_reg = 0x1c44,
2532     .clkr = {
2533         .enable_reg = 0x1c44,
2534         .enable_mask = BIT(0),
2535         .hw.init = &(struct clk_init_data){
2536             .name = "gcc_sata_axi_clk",
2537             .parent_names = (const char *[]){
2538                 "config_noc_clk_src",
2539             },
2540             .num_parents = 1,
2541             .flags = CLK_SET_RATE_PARENT,
2542             .ops = &clk_branch2_ops,
2543         },
2544     },
2545 };
2546 
2547 static struct clk_branch gcc_sata_cfg_ahb_clk = {
2548     .halt_reg = 0x1c48,
2549     .clkr = {
2550         .enable_reg = 0x1c48,
2551         .enable_mask = BIT(0),
2552         .hw.init = &(struct clk_init_data){
2553             .name = "gcc_sata_cfg_ahb_clk",
2554             .parent_names = (const char *[]){
2555                 "config_noc_clk_src",
2556             },
2557             .num_parents = 1,
2558             .flags = CLK_SET_RATE_PARENT,
2559             .ops = &clk_branch2_ops,
2560         },
2561     },
2562 };
2563 
2564 static struct clk_branch gcc_sata_pmalive_clk = {
2565     .halt_reg = 0x1c50,
2566     .clkr = {
2567         .enable_reg = 0x1c50,
2568         .enable_mask = BIT(0),
2569         .hw.init = &(struct clk_init_data){
2570             .name = "gcc_sata_pmalive_clk",
2571             .parent_names = (const char *[]){
2572                 "sata_pmalive_clk_src",
2573             },
2574             .num_parents = 1,
2575             .flags = CLK_SET_RATE_PARENT,
2576             .ops = &clk_branch2_ops,
2577         },
2578     },
2579 };
2580 
2581 static struct clk_branch gcc_sata_rx_clk = {
2582     .halt_reg = 0x1c58,
2583     .clkr = {
2584         .enable_reg = 0x1c58,
2585         .enable_mask = BIT(0),
2586         .hw.init = &(struct clk_init_data){
2587             .name = "gcc_sata_rx_clk",
2588             .parent_names = (const char *[]){
2589                 "sata_rx_clk_src",
2590             },
2591             .num_parents = 1,
2592             .flags = CLK_SET_RATE_PARENT,
2593             .ops = &clk_branch2_ops,
2594         },
2595     },
2596 };
2597 
2598 static struct clk_branch gcc_sata_rx_oob_clk = {
2599     .halt_reg = 0x1c4c,
2600     .clkr = {
2601         .enable_reg = 0x1c4c,
2602         .enable_mask = BIT(0),
2603         .hw.init = &(struct clk_init_data){
2604             .name = "gcc_sata_rx_oob_clk",
2605             .parent_names = (const char *[]){
2606                 "sata_rx_oob_clk_src",
2607             },
2608             .num_parents = 1,
2609             .flags = CLK_SET_RATE_PARENT,
2610             .ops = &clk_branch2_ops,
2611         },
2612     },
2613 };
2614 
2615 static struct clk_branch gcc_sdcc1_ahb_clk = {
2616     .halt_reg = 0x04c8,
2617     .clkr = {
2618         .enable_reg = 0x04c8,
2619         .enable_mask = BIT(0),
2620         .hw.init = &(struct clk_init_data){
2621             .name = "gcc_sdcc1_ahb_clk",
2622             .parent_names = (const char *[]){
2623                 "periph_noc_clk_src",
2624             },
2625             .num_parents = 1,
2626             .ops = &clk_branch2_ops,
2627         },
2628     },
2629 };
2630 
2631 static struct clk_branch gcc_sdcc1_apps_clk = {
2632     .halt_reg = 0x04c4,
2633     .clkr = {
2634         .enable_reg = 0x04c4,
2635         .enable_mask = BIT(0),
2636         .hw.init = &(struct clk_init_data){
2637             .name = "gcc_sdcc1_apps_clk",
2638             .parent_names = (const char *[]){
2639                 "sdcc1_apps_clk_src",
2640             },
2641             .num_parents = 1,
2642             .flags = CLK_SET_RATE_PARENT,
2643             .ops = &clk_branch2_ops,
2644         },
2645     },
2646 };
2647 
2648 static struct clk_branch gcc_sdcc1_cdccal_ff_clk = {
2649     .halt_reg = 0x04e8,
2650     .clkr = {
2651         .enable_reg = 0x04e8,
2652         .enable_mask = BIT(0),
2653         .hw.init = &(struct clk_init_data){
2654             .name = "gcc_sdcc1_cdccal_ff_clk",
2655             .parent_names = (const char *[]){
2656                 "xo"
2657             },
2658             .num_parents = 1,
2659             .ops = &clk_branch2_ops,
2660         },
2661     },
2662 };
2663 
2664 static struct clk_branch gcc_sdcc1_cdccal_sleep_clk = {
2665     .halt_reg = 0x04e4,
2666     .clkr = {
2667         .enable_reg = 0x04e4,
2668         .enable_mask = BIT(0),
2669         .hw.init = &(struct clk_init_data){
2670             .name = "gcc_sdcc1_cdccal_sleep_clk",
2671             .parent_names = (const char *[]){
2672                 "sleep_clk_src"
2673             },
2674             .num_parents = 1,
2675             .ops = &clk_branch2_ops,
2676         },
2677     },
2678 };
2679 
2680 static struct clk_branch gcc_sdcc2_ahb_clk = {
2681     .halt_reg = 0x0508,
2682     .clkr = {
2683         .enable_reg = 0x0508,
2684         .enable_mask = BIT(0),
2685         .hw.init = &(struct clk_init_data){
2686             .name = "gcc_sdcc2_ahb_clk",
2687             .parent_names = (const char *[]){
2688                 "periph_noc_clk_src",
2689             },
2690             .num_parents = 1,
2691             .ops = &clk_branch2_ops,
2692         },
2693     },
2694 };
2695 
2696 static struct clk_branch gcc_sdcc2_apps_clk = {
2697     .halt_reg = 0x0504,
2698     .clkr = {
2699         .enable_reg = 0x0504,
2700         .enable_mask = BIT(0),
2701         .hw.init = &(struct clk_init_data){
2702             .name = "gcc_sdcc2_apps_clk",
2703             .parent_names = (const char *[]){
2704                 "sdcc2_apps_clk_src",
2705             },
2706             .num_parents = 1,
2707             .flags = CLK_SET_RATE_PARENT,
2708             .ops = &clk_branch2_ops,
2709         },
2710     },
2711 };
2712 
2713 static struct clk_branch gcc_sdcc3_ahb_clk = {
2714     .halt_reg = 0x0548,
2715     .clkr = {
2716         .enable_reg = 0x0548,
2717         .enable_mask = BIT(0),
2718         .hw.init = &(struct clk_init_data){
2719             .name = "gcc_sdcc3_ahb_clk",
2720             .parent_names = (const char *[]){
2721                 "periph_noc_clk_src",
2722             },
2723             .num_parents = 1,
2724             .ops = &clk_branch2_ops,
2725         },
2726     },
2727 };
2728 
2729 static struct clk_branch gcc_sdcc3_apps_clk = {
2730     .halt_reg = 0x0544,
2731     .clkr = {
2732         .enable_reg = 0x0544,
2733         .enable_mask = BIT(0),
2734         .hw.init = &(struct clk_init_data){
2735             .name = "gcc_sdcc3_apps_clk",
2736             .parent_names = (const char *[]){
2737                 "sdcc3_apps_clk_src",
2738             },
2739             .num_parents = 1,
2740             .flags = CLK_SET_RATE_PARENT,
2741             .ops = &clk_branch2_ops,
2742         },
2743     },
2744 };
2745 
2746 static struct clk_branch gcc_sdcc4_ahb_clk = {
2747     .halt_reg = 0x0588,
2748     .clkr = {
2749         .enable_reg = 0x0588,
2750         .enable_mask = BIT(0),
2751         .hw.init = &(struct clk_init_data){
2752             .name = "gcc_sdcc4_ahb_clk",
2753             .parent_names = (const char *[]){
2754                 "periph_noc_clk_src",
2755             },
2756             .num_parents = 1,
2757             .ops = &clk_branch2_ops,
2758         },
2759     },
2760 };
2761 
2762 static struct clk_branch gcc_sdcc4_apps_clk = {
2763     .halt_reg = 0x0584,
2764     .clkr = {
2765         .enable_reg = 0x0584,
2766         .enable_mask = BIT(0),
2767         .hw.init = &(struct clk_init_data){
2768             .name = "gcc_sdcc4_apps_clk",
2769             .parent_names = (const char *[]){
2770                 "sdcc4_apps_clk_src",
2771             },
2772             .num_parents = 1,
2773             .flags = CLK_SET_RATE_PARENT,
2774             .ops = &clk_branch2_ops,
2775         },
2776     },
2777 };
2778 
2779 static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
2780     .halt_reg = 0x013c,
2781     .clkr = {
2782         .enable_reg = 0x013c,
2783         .enable_mask = BIT(0),
2784         .hw.init = &(struct clk_init_data){
2785             .name = "gcc_sys_noc_ufs_axi_clk",
2786             .parent_names = (const char *[]){
2787                 "ufs_axi_clk_src",
2788             },
2789             .num_parents = 1,
2790             .flags = CLK_SET_RATE_PARENT,
2791             .ops = &clk_branch2_ops,
2792         },
2793     },
2794 };
2795 
2796 static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
2797     .halt_reg = 0x0108,
2798     .clkr = {
2799         .enable_reg = 0x0108,
2800         .enable_mask = BIT(0),
2801         .hw.init = &(struct clk_init_data){
2802             .name = "gcc_sys_noc_usb3_axi_clk",
2803             .parent_names = (const char *[]){
2804                 "usb30_master_clk_src",
2805             },
2806             .num_parents = 1,
2807             .flags = CLK_SET_RATE_PARENT,
2808             .ops = &clk_branch2_ops,
2809         },
2810     },
2811 };
2812 
2813 static struct clk_branch gcc_sys_noc_usb3_sec_axi_clk = {
2814     .halt_reg = 0x0138,
2815     .clkr = {
2816         .enable_reg = 0x0138,
2817         .enable_mask = BIT(0),
2818         .hw.init = &(struct clk_init_data){
2819             .name = "gcc_sys_noc_usb3_sec_axi_clk",
2820             .parent_names = (const char *[]){
2821                 "usb30_sec_master_clk_src",
2822             },
2823             .num_parents = 1,
2824             .flags = CLK_SET_RATE_PARENT,
2825             .ops = &clk_branch2_ops,
2826         },
2827     },
2828 };
2829 
2830 static struct clk_branch gcc_tsif_ahb_clk = {
2831     .halt_reg = 0x0d84,
2832     .clkr = {
2833         .enable_reg = 0x0d84,
2834         .enable_mask = BIT(0),
2835         .hw.init = &(struct clk_init_data){
2836             .name = "gcc_tsif_ahb_clk",
2837             .parent_names = (const char *[]){
2838                 "periph_noc_clk_src",
2839             },
2840             .num_parents = 1,
2841             .ops = &clk_branch2_ops,
2842         },
2843     },
2844 };
2845 
2846 static struct clk_branch gcc_tsif_inactivity_timers_clk = {
2847     .halt_reg = 0x0d8c,
2848     .clkr = {
2849         .enable_reg = 0x0d8c,
2850         .enable_mask = BIT(0),
2851         .hw.init = &(struct clk_init_data){
2852             .name = "gcc_tsif_inactivity_timers_clk",
2853             .parent_names = (const char *[]){
2854                 "sleep_clk_src",
2855             },
2856             .num_parents = 1,
2857             .flags = CLK_SET_RATE_PARENT,
2858             .ops = &clk_branch2_ops,
2859         },
2860     },
2861 };
2862 
2863 static struct clk_branch gcc_tsif_ref_clk = {
2864     .halt_reg = 0x0d88,
2865     .clkr = {
2866         .enable_reg = 0x0d88,
2867         .enable_mask = BIT(0),
2868         .hw.init = &(struct clk_init_data){
2869             .name = "gcc_tsif_ref_clk",
2870             .parent_names = (const char *[]){
2871                 "tsif_ref_clk_src",
2872             },
2873             .num_parents = 1,
2874             .flags = CLK_SET_RATE_PARENT,
2875             .ops = &clk_branch2_ops,
2876         },
2877     },
2878 };
2879 
2880 static struct clk_branch gcc_ufs_ahb_clk = {
2881     .halt_reg = 0x1d48,
2882     .clkr = {
2883         .enable_reg = 0x1d48,
2884         .enable_mask = BIT(0),
2885         .hw.init = &(struct clk_init_data){
2886             .name = "gcc_ufs_ahb_clk",
2887             .parent_names = (const char *[]){
2888                 "config_noc_clk_src",
2889             },
2890             .num_parents = 1,
2891             .flags = CLK_SET_RATE_PARENT,
2892             .ops = &clk_branch2_ops,
2893         },
2894     },
2895 };
2896 
2897 static struct clk_branch gcc_ufs_axi_clk = {
2898     .halt_reg = 0x1d44,
2899     .clkr = {
2900         .enable_reg = 0x1d44,
2901         .enable_mask = BIT(0),
2902         .hw.init = &(struct clk_init_data){
2903             .name = "gcc_ufs_axi_clk",
2904             .parent_names = (const char *[]){
2905                 "ufs_axi_clk_src",
2906             },
2907             .num_parents = 1,
2908             .flags = CLK_SET_RATE_PARENT,
2909             .ops = &clk_branch2_ops,
2910         },
2911     },
2912 };
2913 
2914 static struct clk_branch gcc_ufs_rx_cfg_clk = {
2915     .halt_reg = 0x1d50,
2916     .clkr = {
2917         .enable_reg = 0x1d50,
2918         .enable_mask = BIT(0),
2919         .hw.init = &(struct clk_init_data){
2920             .name = "gcc_ufs_rx_cfg_clk",
2921             .parent_names = (const char *[]){
2922                 "ufs_axi_clk_src",
2923             },
2924             .num_parents = 1,
2925             .flags = CLK_SET_RATE_PARENT,
2926             .ops = &clk_branch2_ops,
2927         },
2928     },
2929 };
2930 
2931 static struct clk_branch gcc_ufs_rx_symbol_0_clk = {
2932     .halt_reg = 0x1d5c,
2933     .clkr = {
2934         .enable_reg = 0x1d5c,
2935         .enable_mask = BIT(0),
2936         .hw.init = &(struct clk_init_data){
2937             .name = "gcc_ufs_rx_symbol_0_clk",
2938             .parent_names = (const char *[]){
2939                 "ufs_rx_symbol_0_clk_src",
2940             },
2941             .num_parents = 1,
2942             .flags = CLK_SET_RATE_PARENT,
2943             .ops = &clk_branch2_ops,
2944         },
2945     },
2946 };
2947 
2948 static struct clk_branch gcc_ufs_rx_symbol_1_clk = {
2949     .halt_reg = 0x1d60,
2950     .clkr = {
2951         .enable_reg = 0x1d60,
2952         .enable_mask = BIT(0),
2953         .hw.init = &(struct clk_init_data){
2954             .name = "gcc_ufs_rx_symbol_1_clk",
2955             .parent_names = (const char *[]){
2956                 "ufs_rx_symbol_1_clk_src",
2957             },
2958             .num_parents = 1,
2959             .flags = CLK_SET_RATE_PARENT,
2960             .ops = &clk_branch2_ops,
2961         },
2962     },
2963 };
2964 
2965 static struct clk_branch gcc_ufs_tx_cfg_clk = {
2966     .halt_reg = 0x1d4c,
2967     .clkr = {
2968         .enable_reg = 0x1d4c,
2969         .enable_mask = BIT(0),
2970         .hw.init = &(struct clk_init_data){
2971             .name = "gcc_ufs_tx_cfg_clk",
2972             .parent_names = (const char *[]){
2973                 "ufs_axi_clk_src",
2974             },
2975             .num_parents = 1,
2976             .flags = CLK_SET_RATE_PARENT,
2977             .ops = &clk_branch2_ops,
2978         },
2979     },
2980 };
2981 
2982 static struct clk_branch gcc_ufs_tx_symbol_0_clk = {
2983     .halt_reg = 0x1d54,
2984     .clkr = {
2985         .enable_reg = 0x1d54,
2986         .enable_mask = BIT(0),
2987         .hw.init = &(struct clk_init_data){
2988             .name = "gcc_ufs_tx_symbol_0_clk",
2989             .parent_names = (const char *[]){
2990                 "ufs_tx_symbol_0_clk_src",
2991             },
2992             .num_parents = 1,
2993             .flags = CLK_SET_RATE_PARENT,
2994             .ops = &clk_branch2_ops,
2995         },
2996     },
2997 };
2998 
2999 static struct clk_branch gcc_ufs_tx_symbol_1_clk = {
3000     .halt_reg = 0x1d58,
3001     .clkr = {
3002         .enable_reg = 0x1d58,
3003         .enable_mask = BIT(0),
3004         .hw.init = &(struct clk_init_data){
3005             .name = "gcc_ufs_tx_symbol_1_clk",
3006             .parent_names = (const char *[]){
3007                 "ufs_tx_symbol_1_clk_src",
3008             },
3009             .num_parents = 1,
3010             .flags = CLK_SET_RATE_PARENT,
3011             .ops = &clk_branch2_ops,
3012         },
3013     },
3014 };
3015 
3016 static struct clk_branch gcc_usb2a_phy_sleep_clk = {
3017     .halt_reg = 0x04ac,
3018     .clkr = {
3019         .enable_reg = 0x04ac,
3020         .enable_mask = BIT(0),
3021         .hw.init = &(struct clk_init_data){
3022             .name = "gcc_usb2a_phy_sleep_clk",
3023             .parent_names = (const char *[]){
3024                 "sleep_clk_src",
3025             },
3026             .num_parents = 1,
3027             .ops = &clk_branch2_ops,
3028         },
3029     },
3030 };
3031 
3032 static struct clk_branch gcc_usb2b_phy_sleep_clk = {
3033     .halt_reg = 0x04b4,
3034     .clkr = {
3035         .enable_reg = 0x04b4,
3036         .enable_mask = BIT(0),
3037         .hw.init = &(struct clk_init_data){
3038             .name = "gcc_usb2b_phy_sleep_clk",
3039             .parent_names = (const char *[]){
3040                 "sleep_clk_src",
3041             },
3042             .num_parents = 1,
3043             .ops = &clk_branch2_ops,
3044         },
3045     },
3046 };
3047 
3048 static struct clk_branch gcc_usb30_master_clk = {
3049     .halt_reg = 0x03c8,
3050     .clkr = {
3051         .enable_reg = 0x03c8,
3052         .enable_mask = BIT(0),
3053         .hw.init = &(struct clk_init_data){
3054             .name = "gcc_usb30_master_clk",
3055             .parent_names = (const char *[]){
3056                 "usb30_master_clk_src",
3057             },
3058             .num_parents = 1,
3059             .flags = CLK_SET_RATE_PARENT,
3060             .ops = &clk_branch2_ops,
3061         },
3062     },
3063 };
3064 
3065 static struct clk_branch gcc_usb30_sec_master_clk = {
3066     .halt_reg = 0x1bc8,
3067     .clkr = {
3068         .enable_reg = 0x1bc8,
3069         .enable_mask = BIT(0),
3070         .hw.init = &(struct clk_init_data){
3071             .name = "gcc_usb30_sec_master_clk",
3072             .parent_names = (const char *[]){
3073                 "usb30_sec_master_clk_src",
3074             },
3075             .num_parents = 1,
3076             .flags = CLK_SET_RATE_PARENT,
3077             .ops = &clk_branch2_ops,
3078         },
3079     },
3080 };
3081 
3082 static struct clk_branch gcc_usb30_mock_utmi_clk = {
3083     .halt_reg = 0x03d0,
3084     .clkr = {
3085         .enable_reg = 0x03d0,
3086         .enable_mask = BIT(0),
3087         .hw.init = &(struct clk_init_data){
3088             .name = "gcc_usb30_mock_utmi_clk",
3089             .parent_names = (const char *[]){
3090                 "usb30_mock_utmi_clk_src",
3091             },
3092             .num_parents = 1,
3093             .flags = CLK_SET_RATE_PARENT,
3094             .ops = &clk_branch2_ops,
3095         },
3096     },
3097 };
3098 
3099 static struct clk_branch gcc_usb30_sleep_clk = {
3100     .halt_reg = 0x03cc,
3101     .clkr = {
3102         .enable_reg = 0x03cc,
3103         .enable_mask = BIT(0),
3104         .hw.init = &(struct clk_init_data){
3105             .name = "gcc_usb30_sleep_clk",
3106             .parent_names = (const char *[]){
3107                 "sleep_clk_src",
3108             },
3109             .num_parents = 1,
3110             .ops = &clk_branch2_ops,
3111         },
3112     },
3113 };
3114 
3115 static struct clk_branch gcc_usb_hs_ahb_clk = {
3116     .halt_reg = 0x0488,
3117     .clkr = {
3118         .enable_reg = 0x0488,
3119         .enable_mask = BIT(0),
3120         .hw.init = &(struct clk_init_data){
3121             .name = "gcc_usb_hs_ahb_clk",
3122             .parent_names = (const char *[]){
3123                 "periph_noc_clk_src",
3124             },
3125             .num_parents = 1,
3126             .ops = &clk_branch2_ops,
3127         },
3128     },
3129 };
3130 
3131 static struct clk_branch gcc_usb_hs_inactivity_timers_clk = {
3132     .halt_reg = 0x048c,
3133     .clkr = {
3134         .enable_reg = 0x048c,
3135         .enable_mask = BIT(0),
3136         .hw.init = &(struct clk_init_data){
3137             .name = "gcc_usb_hs_inactivity_timers_clk",
3138             .parent_names = (const char *[]){
3139                 "sleep_clk_src",
3140             },
3141             .num_parents = 1,
3142             .flags = CLK_SET_RATE_PARENT,
3143             .ops = &clk_branch2_ops,
3144         },
3145     },
3146 };
3147 
3148 static struct clk_branch gcc_usb_hs_system_clk = {
3149     .halt_reg = 0x0484,
3150     .clkr = {
3151         .enable_reg = 0x0484,
3152         .enable_mask = BIT(0),
3153         .hw.init = &(struct clk_init_data){
3154             .name = "gcc_usb_hs_system_clk",
3155             .parent_names = (const char *[]){
3156                 "usb_hs_system_clk_src",
3157             },
3158             .num_parents = 1,
3159             .flags = CLK_SET_RATE_PARENT,
3160             .ops = &clk_branch2_ops,
3161         },
3162     },
3163 };
3164 
3165 static struct clk_branch gcc_usb_hsic_ahb_clk = {
3166     .halt_reg = 0x0408,
3167     .clkr = {
3168         .enable_reg = 0x0408,
3169         .enable_mask = BIT(0),
3170         .hw.init = &(struct clk_init_data){
3171             .name = "gcc_usb_hsic_ahb_clk",
3172             .parent_names = (const char *[]){
3173                 "periph_noc_clk_src",
3174             },
3175             .num_parents = 1,
3176             .ops = &clk_branch2_ops,
3177         },
3178     },
3179 };
3180 
3181 static struct clk_branch gcc_usb_hsic_clk = {
3182     .halt_reg = 0x0410,
3183     .clkr = {
3184         .enable_reg = 0x0410,
3185         .enable_mask = BIT(0),
3186         .hw.init = &(struct clk_init_data){
3187             .name = "gcc_usb_hsic_clk",
3188             .parent_names = (const char *[]){
3189                 "usb_hsic_clk_src",
3190             },
3191             .num_parents = 1,
3192             .flags = CLK_SET_RATE_PARENT,
3193             .ops = &clk_branch2_ops,
3194         },
3195     },
3196 };
3197 
3198 static struct clk_branch gcc_usb_hsic_io_cal_clk = {
3199     .halt_reg = 0x0414,
3200     .clkr = {
3201         .enable_reg = 0x0414,
3202         .enable_mask = BIT(0),
3203         .hw.init = &(struct clk_init_data){
3204             .name = "gcc_usb_hsic_io_cal_clk",
3205             .parent_names = (const char *[]){
3206                 "usb_hsic_io_cal_clk_src",
3207             },
3208             .num_parents = 1,
3209             .flags = CLK_SET_RATE_PARENT,
3210             .ops = &clk_branch2_ops,
3211         },
3212     },
3213 };
3214 
3215 static struct clk_branch gcc_usb_hsic_io_cal_sleep_clk = {
3216     .halt_reg = 0x0418,
3217     .clkr = {
3218         .enable_reg = 0x0418,
3219         .enable_mask = BIT(0),
3220         .hw.init = &(struct clk_init_data){
3221             .name = "gcc_usb_hsic_io_cal_sleep_clk",
3222             .parent_names = (const char *[]){
3223                 "sleep_clk_src",
3224             },
3225             .num_parents = 1,
3226             .ops = &clk_branch2_ops,
3227         },
3228     },
3229 };
3230 
3231 static struct clk_branch gcc_usb_hsic_system_clk = {
3232     .halt_reg = 0x040c,
3233     .clkr = {
3234         .enable_reg = 0x040c,
3235         .enable_mask = BIT(0),
3236         .hw.init = &(struct clk_init_data){
3237             .name = "gcc_usb_hsic_system_clk",
3238             .parent_names = (const char *[]){
3239                 "usb_hsic_system_clk_src",
3240             },
3241             .num_parents = 1,
3242             .flags = CLK_SET_RATE_PARENT,
3243             .ops = &clk_branch2_ops,
3244         },
3245     },
3246 };
3247 
3248 static struct gdsc usb_hs_hsic_gdsc = {
3249     .gdscr = 0x404,
3250     .pd = {
3251         .name = "usb_hs_hsic",
3252     },
3253     .pwrsts = PWRSTS_OFF_ON,
3254 };
3255 
3256 static struct gdsc pcie0_gdsc = {
3257     .gdscr = 0x1ac4,
3258     .pd = {
3259         .name = "pcie0",
3260     },
3261     .pwrsts = PWRSTS_OFF_ON,
3262 };
3263 
3264 static struct gdsc pcie1_gdsc = {
3265     .gdscr = 0x1b44,
3266     .pd = {
3267         .name = "pcie1",
3268     },
3269     .pwrsts = PWRSTS_OFF_ON,
3270 };
3271 
3272 static struct gdsc usb30_gdsc = {
3273     .gdscr = 0x1e84,
3274     .pd = {
3275         .name = "usb30",
3276     },
3277     .pwrsts = PWRSTS_OFF_ON,
3278 };
3279 
3280 static struct clk_regmap *gcc_apq8084_clocks[] = {
3281     [GPLL0] = &gpll0.clkr,
3282     [GPLL0_VOTE] = &gpll0_vote,
3283     [GPLL1] = &gpll1.clkr,
3284     [GPLL1_VOTE] = &gpll1_vote,
3285     [GPLL4] = &gpll4.clkr,
3286     [GPLL4_VOTE] = &gpll4_vote,
3287     [CONFIG_NOC_CLK_SRC] = &config_noc_clk_src.clkr,
3288     [PERIPH_NOC_CLK_SRC] = &periph_noc_clk_src.clkr,
3289     [SYSTEM_NOC_CLK_SRC] = &system_noc_clk_src.clkr,
3290     [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
3291     [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
3292     [USB30_SEC_MASTER_CLK_SRC] = &usb30_sec_master_clk_src.clkr,
3293     [USB_HSIC_AHB_CLK_SRC] = &usb_hsic_ahb_clk_src.clkr,
3294     [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
3295     [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
3296     [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
3297     [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
3298     [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
3299     [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
3300     [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
3301     [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
3302     [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
3303     [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
3304     [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
3305     [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
3306     [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
3307     [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
3308     [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
3309     [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
3310     [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
3311     [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
3312     [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
3313     [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
3314     [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
3315     [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
3316     [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
3317     [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
3318     [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
3319     [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
3320     [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
3321     [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
3322     [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
3323     [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
3324     [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
3325     [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
3326     [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
3327     [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
3328     [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
3329     [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
3330     [CE1_CLK_SRC] = &ce1_clk_src.clkr,
3331     [CE2_CLK_SRC] = &ce2_clk_src.clkr,
3332     [CE3_CLK_SRC] = &ce3_clk_src.clkr,
3333     [GP1_CLK_SRC] = &gp1_clk_src.clkr,
3334     [GP2_CLK_SRC] = &gp2_clk_src.clkr,
3335     [GP3_CLK_SRC] = &gp3_clk_src.clkr,
3336     [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
3337     [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
3338     [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
3339     [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
3340     [PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
3341     [SATA_ASIC0_CLK_SRC] = &sata_asic0_clk_src.clkr,
3342     [SATA_PMALIVE_CLK_SRC] = &sata_pmalive_clk_src.clkr,
3343     [SATA_RX_CLK_SRC] = &sata_rx_clk_src.clkr,
3344     [SATA_RX_OOB_CLK_SRC] = &sata_rx_oob_clk_src.clkr,
3345     [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
3346     [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
3347     [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
3348     [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
3349     [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
3350     [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
3351     [USB30_SEC_MOCK_UTMI_CLK_SRC] = &usb30_sec_mock_utmi_clk_src.clkr,
3352     [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
3353     [USB_HSIC_CLK_SRC] = &usb_hsic_clk_src.clkr,
3354     [USB_HSIC_IO_CAL_CLK_SRC] = &usb_hsic_io_cal_clk_src.clkr,
3355     [USB_HSIC_MOCK_UTMI_CLK_SRC] = &usb_hsic_mock_utmi_clk_src.clkr,
3356     [USB_HSIC_SYSTEM_CLK_SRC] = &usb_hsic_system_clk_src.clkr,
3357     [GCC_BAM_DMA_AHB_CLK] = &gcc_bam_dma_ahb_clk.clkr,
3358     [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
3359     [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
3360     [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
3361     [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
3362     [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
3363     [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
3364     [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
3365     [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
3366     [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
3367     [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
3368     [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
3369     [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
3370     [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
3371     [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
3372     [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
3373     [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
3374     [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
3375     [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
3376     [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
3377     [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
3378     [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
3379     [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
3380     [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
3381     [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
3382     [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
3383     [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
3384     [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
3385     [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
3386     [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
3387     [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
3388     [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
3389     [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
3390     [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
3391     [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
3392     [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
3393     [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
3394     [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
3395     [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
3396     [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3397     [GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr,
3398     [GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr,
3399     [GCC_CE1_CLK] = &gcc_ce1_clk.clkr,
3400     [GCC_CE2_AHB_CLK] = &gcc_ce2_ahb_clk.clkr,
3401     [GCC_CE2_AXI_CLK] = &gcc_ce2_axi_clk.clkr,
3402     [GCC_CE2_CLK] = &gcc_ce2_clk.clkr,
3403     [GCC_CE3_AHB_CLK] = &gcc_ce3_ahb_clk.clkr,
3404     [GCC_CE3_AXI_CLK] = &gcc_ce3_axi_clk.clkr,
3405     [GCC_CE3_CLK] = &gcc_ce3_clk.clkr,
3406     [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3407     [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3408     [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3409     [GCC_OCMEM_NOC_CFG_AHB_CLK] = &gcc_ocmem_noc_cfg_ahb_clk.clkr,
3410     [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
3411     [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
3412     [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
3413     [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
3414     [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
3415     [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
3416     [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
3417     [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
3418     [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
3419     [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
3420     [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3421     [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3422     [GCC_PERIPH_NOC_USB_HSIC_AHB_CLK] = &gcc_periph_noc_usb_hsic_ahb_clk.clkr,
3423     [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
3424     [GCC_SATA_ASIC0_CLK] = &gcc_sata_asic0_clk.clkr,
3425     [GCC_SATA_AXI_CLK] = &gcc_sata_axi_clk.clkr,
3426     [GCC_SATA_CFG_AHB_CLK] = &gcc_sata_cfg_ahb_clk.clkr,
3427     [GCC_SATA_PMALIVE_CLK] = &gcc_sata_pmalive_clk.clkr,
3428     [GCC_SATA_RX_CLK] = &gcc_sata_rx_clk.clkr,
3429     [GCC_SATA_RX_OOB_CLK] = &gcc_sata_rx_oob_clk.clkr,
3430     [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
3431     [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
3432     [GCC_SDCC1_CDCCAL_FF_CLK] = &gcc_sdcc1_cdccal_ff_clk.clkr,
3433     [GCC_SDCC1_CDCCAL_SLEEP_CLK] = &gcc_sdcc1_cdccal_sleep_clk.clkr,
3434     [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
3435     [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
3436     [GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr,
3437     [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
3438     [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
3439     [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
3440     [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
3441     [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
3442     [GCC_SYS_NOC_USB3_SEC_AXI_CLK] = &gcc_sys_noc_usb3_sec_axi_clk.clkr,
3443     [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
3444     [GCC_TSIF_INACTIVITY_TIMERS_CLK] = &gcc_tsif_inactivity_timers_clk.clkr,
3445     [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
3446     [GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr,
3447     [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
3448     [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
3449     [GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr,
3450     [GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr,
3451     [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
3452     [GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr,
3453     [GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr,
3454     [GCC_USB2A_PHY_SLEEP_CLK] = &gcc_usb2a_phy_sleep_clk.clkr,
3455     [GCC_USB2B_PHY_SLEEP_CLK] = &gcc_usb2b_phy_sleep_clk.clkr,
3456     [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
3457     [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
3458     [GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
3459     [GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,
3460     [GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,
3461     [GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,
3462     [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr,
3463     [GCC_USB_HS_INACTIVITY_TIMERS_CLK] = &gcc_usb_hs_inactivity_timers_clk.clkr,
3464     [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
3465     [GCC_USB_HSIC_AHB_CLK] = &gcc_usb_hsic_ahb_clk.clkr,
3466     [GCC_USB_HSIC_CLK] = &gcc_usb_hsic_clk.clkr,
3467     [GCC_USB_HSIC_IO_CAL_CLK] = &gcc_usb_hsic_io_cal_clk.clkr,
3468     [GCC_USB_HSIC_IO_CAL_SLEEP_CLK] = &gcc_usb_hsic_io_cal_sleep_clk.clkr,
3469     [GCC_USB_HSIC_MOCK_UTMI_CLK] = &gcc_usb_hsic_mock_utmi_clk.clkr,
3470     [GCC_USB_HSIC_SYSTEM_CLK] = &gcc_usb_hsic_system_clk.clkr,
3471 };
3472 
3473 static struct gdsc *gcc_apq8084_gdscs[] = {
3474     [USB_HS_HSIC_GDSC] = &usb_hs_hsic_gdsc,
3475     [PCIE0_GDSC] = &pcie0_gdsc,
3476     [PCIE1_GDSC] = &pcie1_gdsc,
3477     [USB30_GDSC] = &usb30_gdsc,
3478 };
3479 
3480 static const struct qcom_reset_map gcc_apq8084_resets[] = {
3481     [GCC_SYSTEM_NOC_BCR] = { 0x0100 },
3482     [GCC_CONFIG_NOC_BCR] = { 0x0140 },
3483     [GCC_PERIPH_NOC_BCR] = { 0x0180 },
3484     [GCC_IMEM_BCR] = { 0x0200 },
3485     [GCC_MMSS_BCR] = { 0x0240 },
3486     [GCC_QDSS_BCR] = { 0x0300 },
3487     [GCC_USB_30_BCR] = { 0x03c0 },
3488     [GCC_USB3_PHY_BCR] = { 0x03fc },
3489     [GCC_USB_HS_HSIC_BCR] = { 0x0400 },
3490     [GCC_USB_HS_BCR] = { 0x0480 },
3491     [GCC_USB2A_PHY_BCR] = { 0x04a8 },
3492     [GCC_USB2B_PHY_BCR] = { 0x04b0 },
3493     [GCC_SDCC1_BCR] = { 0x04c0 },
3494     [GCC_SDCC2_BCR] = { 0x0500 },
3495     [GCC_SDCC3_BCR] = { 0x0540 },
3496     [GCC_SDCC4_BCR] = { 0x0580 },
3497     [GCC_BLSP1_BCR] = { 0x05c0 },
3498     [GCC_BLSP1_QUP1_BCR] = { 0x0640 },
3499     [GCC_BLSP1_UART1_BCR] = { 0x0680 },
3500     [GCC_BLSP1_QUP2_BCR] = { 0x06c0 },
3501     [GCC_BLSP1_UART2_BCR] = { 0x0700 },
3502     [GCC_BLSP1_QUP3_BCR] = { 0x0740 },
3503     [GCC_BLSP1_UART3_BCR] = { 0x0780 },
3504     [GCC_BLSP1_QUP4_BCR] = { 0x07c0 },
3505     [GCC_BLSP1_UART4_BCR] = { 0x0800 },
3506     [GCC_BLSP1_QUP5_BCR] = { 0x0840 },
3507     [GCC_BLSP1_UART5_BCR] = { 0x0880 },
3508     [GCC_BLSP1_QUP6_BCR] = { 0x08c0 },
3509     [GCC_BLSP1_UART6_BCR] = { 0x0900 },
3510     [GCC_BLSP2_BCR] = { 0x0940 },
3511     [GCC_BLSP2_QUP1_BCR] = { 0x0980 },
3512     [GCC_BLSP2_UART1_BCR] = { 0x09c0 },
3513     [GCC_BLSP2_QUP2_BCR] = { 0x0a00 },
3514     [GCC_BLSP2_UART2_BCR] = { 0x0a40 },
3515     [GCC_BLSP2_QUP3_BCR] = { 0x0a80 },
3516     [GCC_BLSP2_UART3_BCR] = { 0x0ac0 },
3517     [GCC_BLSP2_QUP4_BCR] = { 0x0b00 },
3518     [GCC_BLSP2_UART4_BCR] = { 0x0b40 },
3519     [GCC_BLSP2_QUP5_BCR] = { 0x0b80 },
3520     [GCC_BLSP2_UART5_BCR] = { 0x0bc0 },
3521     [GCC_BLSP2_QUP6_BCR] = { 0x0c00 },
3522     [GCC_BLSP2_UART6_BCR] = { 0x0c40 },
3523     [GCC_PDM_BCR] = { 0x0cc0 },
3524     [GCC_PRNG_BCR] = { 0x0d00 },
3525     [GCC_BAM_DMA_BCR] = { 0x0d40 },
3526     [GCC_TSIF_BCR] = { 0x0d80 },
3527     [GCC_TCSR_BCR] = { 0x0dc0 },
3528     [GCC_BOOT_ROM_BCR] = { 0x0e00 },
3529     [GCC_MSG_RAM_BCR] = { 0x0e40 },
3530     [GCC_TLMM_BCR] = { 0x0e80 },
3531     [GCC_MPM_BCR] = { 0x0ec0 },
3532     [GCC_MPM_AHB_RESET] = { 0x0ec4, 1 },
3533     [GCC_MPM_NON_AHB_RESET] = { 0x0ec4, 2 },
3534     [GCC_SEC_CTRL_BCR] = { 0x0f40 },
3535     [GCC_SPMI_BCR] = { 0x0fc0 },
3536     [GCC_SPDM_BCR] = { 0x1000 },
3537     [GCC_CE1_BCR] = { 0x1040 },
3538     [GCC_CE2_BCR] = { 0x1080 },
3539     [GCC_BIMC_BCR] = { 0x1100 },
3540     [GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x1240 },
3541     [GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x1248 },
3542     [GCC_PNOC_BUS_TIMEOUT0_BCR] = { 0x1280 },
3543     [GCC_PNOC_BUS_TIMEOUT1_BCR] = { 0x1288 },
3544     [GCC_PNOC_BUS_TIMEOUT2_BCR] = { 0x1290 },
3545     [GCC_PNOC_BUS_TIMEOUT3_BCR] = { 0x1298 },
3546     [GCC_PNOC_BUS_TIMEOUT4_BCR] = { 0x12a0 },
3547     [GCC_CNOC_BUS_TIMEOUT0_BCR] = { 0x12c0 },
3548     [GCC_CNOC_BUS_TIMEOUT1_BCR] = { 0x12c8 },
3549     [GCC_CNOC_BUS_TIMEOUT2_BCR] = { 0x12d0 },
3550     [GCC_CNOC_BUS_TIMEOUT3_BCR] = { 0x12d8 },
3551     [GCC_CNOC_BUS_TIMEOUT4_BCR] = { 0x12e0 },
3552     [GCC_CNOC_BUS_TIMEOUT5_BCR] = { 0x12e8 },
3553     [GCC_CNOC_BUS_TIMEOUT6_BCR] = { 0x12f0 },
3554     [GCC_DEHR_BCR] = { 0x1300 },
3555     [GCC_RBCPR_BCR] = { 0x1380 },
3556     [GCC_MSS_RESTART] = { 0x1680 },
3557     [GCC_LPASS_RESTART] = { 0x16c0 },
3558     [GCC_WCSS_RESTART] = { 0x1700 },
3559     [GCC_VENUS_RESTART] = { 0x1740 },
3560     [GCC_COPSS_SMMU_BCR] = { 0x1a40 },
3561     [GCC_SPSS_BCR] = { 0x1a80 },
3562     [GCC_PCIE_0_BCR] = { 0x1ac0 },
3563     [GCC_PCIE_0_PHY_BCR] = { 0x1b00 },
3564     [GCC_PCIE_1_BCR] = { 0x1b40 },
3565     [GCC_PCIE_1_PHY_BCR] = { 0x1b80 },
3566     [GCC_USB_30_SEC_BCR] = { 0x1bc0 },
3567     [GCC_USB3_SEC_PHY_BCR] = { 0x1bfc },
3568     [GCC_SATA_BCR] = { 0x1c40 },
3569     [GCC_CE3_BCR] = { 0x1d00 },
3570     [GCC_UFS_BCR] = { 0x1d40 },
3571     [GCC_USB30_PHY_COM_BCR] = { 0x1e80 },
3572 };
3573 
3574 static const struct regmap_config gcc_apq8084_regmap_config = {
3575     .reg_bits   = 32,
3576     .reg_stride = 4,
3577     .val_bits   = 32,
3578     .max_register   = 0x1fc0,
3579     .fast_io    = true,
3580 };
3581 
3582 static const struct qcom_cc_desc gcc_apq8084_desc = {
3583     .config = &gcc_apq8084_regmap_config,
3584     .clks = gcc_apq8084_clocks,
3585     .num_clks = ARRAY_SIZE(gcc_apq8084_clocks),
3586     .resets = gcc_apq8084_resets,
3587     .num_resets = ARRAY_SIZE(gcc_apq8084_resets),
3588     .gdscs = gcc_apq8084_gdscs,
3589     .num_gdscs = ARRAY_SIZE(gcc_apq8084_gdscs),
3590 };
3591 
3592 static const struct of_device_id gcc_apq8084_match_table[] = {
3593     { .compatible = "qcom,gcc-apq8084" },
3594     { }
3595 };
3596 MODULE_DEVICE_TABLE(of, gcc_apq8084_match_table);
3597 
3598 static int gcc_apq8084_probe(struct platform_device *pdev)
3599 {
3600     int ret;
3601     struct device *dev = &pdev->dev;
3602 
3603     ret = qcom_cc_register_board_clk(dev, "xo_board", "xo", 19200000);
3604     if (ret)
3605         return ret;
3606 
3607     ret = qcom_cc_register_sleep_clk(dev);
3608     if (ret)
3609         return ret;
3610 
3611     return qcom_cc_probe(pdev, &gcc_apq8084_desc);
3612 }
3613 
3614 static struct platform_driver gcc_apq8084_driver = {
3615     .probe      = gcc_apq8084_probe,
3616     .driver     = {
3617         .name   = "gcc-apq8084",
3618         .of_match_table = gcc_apq8084_match_table,
3619     },
3620 };
3621 
3622 static int __init gcc_apq8084_init(void)
3623 {
3624     return platform_driver_register(&gcc_apq8084_driver);
3625 }
3626 core_initcall(gcc_apq8084_init);
3627 
3628 static void __exit gcc_apq8084_exit(void)
3629 {
3630     platform_driver_unregister(&gcc_apq8084_driver);
3631 }
3632 module_exit(gcc_apq8084_exit);
3633 
3634 MODULE_DESCRIPTION("QCOM GCC APQ8084 Driver");
3635 MODULE_LICENSE("GPL v2");
3636 MODULE_ALIAS("platform:gcc-apq8084");