Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
0003  */
0004 
0005 #include <linux/clk-provider.h>
0006 #include <linux/kernel.h>
0007 #include <linux/init.h>
0008 #include <linux/err.h>
0009 #include <linux/ctype.h>
0010 #include <linux/io.h>
0011 #include <linux/of.h>
0012 #include <linux/of_device.h>
0013 #include <linux/platform_device.h>
0014 #include <linux/module.h>
0015 #include <linux/regmap.h>
0016 
0017 #include <dt-bindings/clock/qcom,gcc-msm8994.h>
0018 
0019 #include "common.h"
0020 #include "clk-regmap.h"
0021 #include "clk-alpha-pll.h"
0022 #include "clk-rcg.h"
0023 #include "clk-branch.h"
0024 #include "reset.h"
0025 #include "gdsc.h"
0026 
0027 enum {
0028     P_XO,
0029     P_GPLL0,
0030     P_GPLL4,
0031 };
0032 
0033 static struct clk_alpha_pll gpll0_early = {
0034     .offset = 0,
0035     .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
0036     .clkr = {
0037         .enable_reg = 0x1480,
0038         .enable_mask = BIT(0),
0039         .hw.init = &(struct clk_init_data){
0040             .name = "gpll0_early",
0041             .parent_data = &(const struct clk_parent_data){
0042                 .fw_name = "xo",
0043             },
0044             .num_parents = 1,
0045             .ops = &clk_alpha_pll_ops,
0046         },
0047     },
0048 };
0049 
0050 static struct clk_alpha_pll_postdiv gpll0 = {
0051     .offset = 0,
0052     .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
0053     .clkr.hw.init = &(struct clk_init_data){
0054         .name = "gpll0",
0055         .parent_hws = (const struct clk_hw*[]){
0056             &gpll0_early.clkr.hw
0057         },
0058         .num_parents = 1,
0059         .ops = &clk_alpha_pll_postdiv_ops,
0060     },
0061 };
0062 
0063 static struct clk_alpha_pll gpll4_early = {
0064     .offset = 0x1dc0,
0065     .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
0066     .clkr = {
0067         .enable_reg = 0x1480,
0068         .enable_mask = BIT(4),
0069         .hw.init = &(struct clk_init_data){
0070             .name = "gpll4_early",
0071             .parent_data = &(const struct clk_parent_data){
0072                 .fw_name = "xo",
0073             },
0074             .num_parents = 1,
0075             .ops = &clk_alpha_pll_ops,
0076         },
0077     },
0078 };
0079 
0080 static struct clk_alpha_pll_postdiv gpll4 = {
0081     .offset = 0x1dc0,
0082     .width = 4,
0083     .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
0084     .clkr.hw.init = &(struct clk_init_data){
0085         .name = "gpll4",
0086         .parent_hws = (const struct clk_hw*[]){
0087             &gpll4_early.clkr.hw
0088         },
0089         .num_parents = 1,
0090         .ops = &clk_alpha_pll_postdiv_ops,
0091     },
0092 };
0093 
0094 static const struct parent_map gcc_xo_gpll0_map[] = {
0095     { P_XO, 0 },
0096     { P_GPLL0, 1 },
0097 };
0098 
0099 static const struct clk_parent_data gcc_xo_gpll0[] = {
0100     { .fw_name = "xo" },
0101     { .hw = &gpll0.clkr.hw },
0102 };
0103 
0104 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
0105     { P_XO, 0 },
0106     { P_GPLL0, 1 },
0107     { P_GPLL4, 5 },
0108 };
0109 
0110 static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
0111     { .fw_name = "xo" },
0112     { .hw = &gpll0.clkr.hw },
0113     { .hw = &gpll4.clkr.hw },
0114 };
0115 
0116 static struct freq_tbl ftbl_ufs_axi_clk_src[] = {
0117     F(50000000, P_GPLL0, 12, 0, 0),
0118     F(100000000, P_GPLL0, 6, 0, 0),
0119     F(150000000, P_GPLL0, 4, 0, 0),
0120     F(171430000, P_GPLL0, 3.5, 0, 0),
0121     F(200000000, P_GPLL0, 3, 0, 0),
0122     F(240000000, P_GPLL0, 2.5, 0, 0),
0123     { }
0124 };
0125 
0126 static struct clk_rcg2 ufs_axi_clk_src = {
0127     .cmd_rcgr = 0x1d68,
0128     .mnd_width = 8,
0129     .hid_width = 5,
0130     .parent_map = gcc_xo_gpll0_map,
0131     .freq_tbl = ftbl_ufs_axi_clk_src,
0132     .clkr.hw.init = &(struct clk_init_data){
0133         .name = "ufs_axi_clk_src",
0134         .parent_data = gcc_xo_gpll0,
0135         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0136         .ops = &clk_rcg2_ops,
0137     },
0138 };
0139 
0140 static struct freq_tbl ftbl_usb30_master_clk_src[] = {
0141     F(19200000, P_XO, 1, 0, 0),
0142     F(125000000, P_GPLL0, 1, 5, 24),
0143     { }
0144 };
0145 
0146 static struct clk_rcg2 usb30_master_clk_src = {
0147     .cmd_rcgr = 0x03d4,
0148     .mnd_width = 8,
0149     .hid_width = 5,
0150     .parent_map = gcc_xo_gpll0_map,
0151     .freq_tbl = ftbl_usb30_master_clk_src,
0152     .clkr.hw.init = &(struct clk_init_data){
0153         .name = "usb30_master_clk_src",
0154         .parent_data = gcc_xo_gpll0,
0155         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0156         .ops = &clk_rcg2_ops,
0157     },
0158 };
0159 
0160 static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = {
0161     F(19200000, P_XO, 1, 0, 0),
0162     F(50000000, P_GPLL0, 12, 0, 0),
0163     { }
0164 };
0165 
0166 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
0167     .cmd_rcgr = 0x0660,
0168     .hid_width = 5,
0169     .parent_map = gcc_xo_gpll0_map,
0170     .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
0171     .clkr.hw.init = &(struct clk_init_data){
0172         .name = "blsp1_qup1_i2c_apps_clk_src",
0173         .parent_data = gcc_xo_gpll0,
0174         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0175         .ops = &clk_rcg2_ops,
0176     },
0177 };
0178 
0179 static struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = {
0180     F(960000, P_XO, 10, 1, 2),
0181     F(4800000, P_XO, 4, 0, 0),
0182     F(9600000, P_XO, 2, 0, 0),
0183     F(15000000, P_GPLL0, 10, 1, 4),
0184     F(19200000, P_XO, 1, 0, 0),
0185     F(24000000, P_GPLL0, 12.5, 1, 2),
0186     F(25000000, P_GPLL0, 12, 1, 2),
0187     F(48000000, P_GPLL0, 12.5, 0, 0),
0188     F(50000000, P_GPLL0, 12, 0, 0),
0189     { }
0190 };
0191 
0192 static struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src_8992[] = {
0193     F(960000, P_XO, 10, 1, 2),
0194     F(4800000, P_XO, 4, 0, 0),
0195     F(9600000, P_XO, 2, 0, 0),
0196     F(15000000, P_GPLL0, 10, 1, 4),
0197     F(19200000, P_XO, 1, 0, 0),
0198     F(25000000, P_GPLL0, 12, 1, 2),
0199     F(50000000, P_GPLL0, 12, 0, 0),
0200     { }
0201 };
0202 
0203 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
0204     .cmd_rcgr = 0x064c,
0205     .mnd_width = 8,
0206     .hid_width = 5,
0207     .parent_map = gcc_xo_gpll0_map,
0208     .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
0209     .clkr.hw.init = &(struct clk_init_data){
0210         .name = "blsp1_qup1_spi_apps_clk_src",
0211         .parent_data = gcc_xo_gpll0,
0212         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0213         .ops = &clk_rcg2_ops,
0214     },
0215 };
0216 
0217 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
0218     .cmd_rcgr = 0x06e0,
0219     .hid_width = 5,
0220     .parent_map = gcc_xo_gpll0_map,
0221     .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
0222     .clkr.hw.init = &(struct clk_init_data){
0223         .name = "blsp1_qup2_i2c_apps_clk_src",
0224         .parent_data = gcc_xo_gpll0,
0225         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0226         .ops = &clk_rcg2_ops,
0227     },
0228 };
0229 
0230 static struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = {
0231     F(960000, P_XO, 10, 1, 2),
0232     F(4800000, P_XO, 4, 0, 0),
0233     F(9600000, P_XO, 2, 0, 0),
0234     F(15000000, P_GPLL0, 10, 1, 4),
0235     F(19200000, P_XO, 1, 0, 0),
0236     F(24000000, P_GPLL0, 12.5, 1, 2),
0237     F(25000000, P_GPLL0, 12, 1, 2),
0238     F(42860000, P_GPLL0, 14, 0, 0),
0239     F(46150000, P_GPLL0, 13, 0, 0),
0240     { }
0241 };
0242 
0243 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
0244     .cmd_rcgr = 0x06cc,
0245     .mnd_width = 8,
0246     .hid_width = 5,
0247     .parent_map = gcc_xo_gpll0_map,
0248     .freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src,
0249     .clkr.hw.init = &(struct clk_init_data){
0250         .name = "blsp1_qup2_spi_apps_clk_src",
0251         .parent_data = gcc_xo_gpll0,
0252         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0253         .ops = &clk_rcg2_ops,
0254     },
0255 };
0256 
0257 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
0258     .cmd_rcgr = 0x0760,
0259     .hid_width = 5,
0260     .parent_map = gcc_xo_gpll0_map,
0261     .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
0262     .clkr.hw.init = &(struct clk_init_data){
0263         .name = "blsp1_qup3_i2c_apps_clk_src",
0264         .parent_data = gcc_xo_gpll0,
0265         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0266         .ops = &clk_rcg2_ops,
0267     },
0268 };
0269 
0270 static struct freq_tbl ftbl_blsp1_qup3_4_spi_apps_clk_src[] = {
0271     F(960000, P_XO, 10, 1, 2),
0272     F(4800000, P_XO, 4, 0, 0),
0273     F(9600000, P_XO, 2, 0, 0),
0274     F(15000000, P_GPLL0, 10, 1, 4),
0275     F(19200000, P_XO, 1, 0, 0),
0276     F(24000000, P_GPLL0, 12.5, 1, 2),
0277     F(25000000, P_GPLL0, 12, 1, 2),
0278     F(42860000, P_GPLL0, 14, 0, 0),
0279     F(44440000, P_GPLL0, 13.5, 0, 0),
0280     { }
0281 };
0282 
0283 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
0284     .cmd_rcgr = 0x074c,
0285     .mnd_width = 8,
0286     .hid_width = 5,
0287     .parent_map = gcc_xo_gpll0_map,
0288     .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
0289     .clkr.hw.init = &(struct clk_init_data){
0290         .name = "blsp1_qup3_spi_apps_clk_src",
0291         .parent_data = gcc_xo_gpll0,
0292         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0293         .ops = &clk_rcg2_ops,
0294     },
0295 };
0296 
0297 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
0298     .cmd_rcgr = 0x07e0,
0299     .hid_width = 5,
0300     .parent_map = gcc_xo_gpll0_map,
0301     .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
0302     .clkr.hw.init = &(struct clk_init_data){
0303         .name = "blsp1_qup4_i2c_apps_clk_src",
0304         .parent_data = gcc_xo_gpll0,
0305         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0306         .ops = &clk_rcg2_ops,
0307     },
0308 };
0309 
0310 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
0311     .cmd_rcgr = 0x07cc,
0312     .mnd_width = 8,
0313     .hid_width = 5,
0314     .parent_map = gcc_xo_gpll0_map,
0315     .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
0316     .clkr.hw.init = &(struct clk_init_data){
0317         .name = "blsp1_qup4_spi_apps_clk_src",
0318         .parent_data = gcc_xo_gpll0,
0319         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0320         .ops = &clk_rcg2_ops,
0321     },
0322 };
0323 
0324 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
0325     .cmd_rcgr = 0x0860,
0326     .hid_width = 5,
0327     .parent_map = gcc_xo_gpll0_map,
0328     .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
0329     .clkr.hw.init = &(struct clk_init_data){
0330         .name = "blsp1_qup5_i2c_apps_clk_src",
0331         .parent_data = gcc_xo_gpll0,
0332         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0333         .ops = &clk_rcg2_ops,
0334     },
0335 };
0336 
0337 static struct freq_tbl ftbl_blsp1_qup5_spi_apps_clk_src[] = {
0338     F(960000, P_XO, 10, 1, 2),
0339     F(4800000, P_XO, 4, 0, 0),
0340     F(9600000, P_XO, 2, 0, 0),
0341     F(15000000, P_GPLL0, 10, 1, 4),
0342     F(19200000, P_XO, 1, 0, 0),
0343     F(24000000, P_GPLL0, 12.5, 1, 2),
0344     F(25000000, P_GPLL0, 12, 1, 2),
0345     F(40000000, P_GPLL0, 15, 0, 0),
0346     F(42860000, P_GPLL0, 14, 0, 0),
0347     { }
0348 };
0349 
0350 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
0351     .cmd_rcgr = 0x084c,
0352     .mnd_width = 8,
0353     .hid_width = 5,
0354     .parent_map = gcc_xo_gpll0_map,
0355     .freq_tbl = ftbl_blsp1_qup5_spi_apps_clk_src,
0356     .clkr.hw.init = &(struct clk_init_data){
0357         .name = "blsp1_qup5_spi_apps_clk_src",
0358         .parent_data = gcc_xo_gpll0,
0359         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0360         .ops = &clk_rcg2_ops,
0361     },
0362 };
0363 
0364 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
0365     .cmd_rcgr = 0x08e0,
0366     .hid_width = 5,
0367     .parent_map = gcc_xo_gpll0_map,
0368     .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
0369     .clkr.hw.init = &(struct clk_init_data){
0370         .name = "blsp1_qup6_i2c_apps_clk_src",
0371         .parent_data = gcc_xo_gpll0,
0372         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0373         .ops = &clk_rcg2_ops,
0374     },
0375 };
0376 
0377 static struct freq_tbl ftbl_blsp1_qup6_spi_apps_clk_src[] = {
0378     F(960000, P_XO, 10, 1, 2),
0379     F(4800000, P_XO, 4, 0, 0),
0380     F(9600000, P_XO, 2, 0, 0),
0381     F(15000000, P_GPLL0, 10, 1, 4),
0382     F(19200000, P_XO, 1, 0, 0),
0383     F(24000000, P_GPLL0, 12.5, 1, 2),
0384     F(27906976, P_GPLL0, 1, 2, 43),
0385     F(41380000, P_GPLL0, 15, 0, 0),
0386     F(42860000, P_GPLL0, 14, 0, 0),
0387     { }
0388 };
0389 
0390 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
0391     .cmd_rcgr = 0x08cc,
0392     .mnd_width = 8,
0393     .hid_width = 5,
0394     .parent_map = gcc_xo_gpll0_map,
0395     .freq_tbl = ftbl_blsp1_qup6_spi_apps_clk_src,
0396     .clkr.hw.init = &(struct clk_init_data){
0397         .name = "blsp1_qup6_spi_apps_clk_src",
0398         .parent_data = gcc_xo_gpll0,
0399         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0400         .ops = &clk_rcg2_ops,
0401     },
0402 };
0403 
0404 static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = {
0405     F(3686400, P_GPLL0, 1, 96, 15625),
0406     F(7372800, P_GPLL0, 1, 192, 15625),
0407     F(14745600, P_GPLL0, 1, 384, 15625),
0408     F(16000000, P_GPLL0, 5, 2, 15),
0409     F(19200000, P_XO, 1, 0, 0),
0410     F(24000000, P_GPLL0, 5, 1, 5),
0411     F(32000000, P_GPLL0, 1, 4, 75),
0412     F(40000000, P_GPLL0, 15, 0, 0),
0413     F(46400000, P_GPLL0, 1, 29, 375),
0414     F(48000000, P_GPLL0, 12.5, 0, 0),
0415     F(51200000, P_GPLL0, 1, 32, 375),
0416     F(56000000, P_GPLL0, 1, 7, 75),
0417     F(58982400, P_GPLL0, 1, 1536, 15625),
0418     F(60000000, P_GPLL0, 10, 0, 0),
0419     F(63160000, P_GPLL0, 9.5, 0, 0),
0420     { }
0421 };
0422 
0423 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
0424     .cmd_rcgr = 0x068c,
0425     .mnd_width = 16,
0426     .hid_width = 5,
0427     .parent_map = gcc_xo_gpll0_map,
0428     .freq_tbl = ftbl_blsp_uart_apps_clk_src,
0429     .clkr.hw.init = &(struct clk_init_data){
0430         .name = "blsp1_uart1_apps_clk_src",
0431         .parent_data = gcc_xo_gpll0,
0432         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0433         .ops = &clk_rcg2_ops,
0434     },
0435 };
0436 
0437 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
0438     .cmd_rcgr = 0x070c,
0439     .mnd_width = 16,
0440     .hid_width = 5,
0441     .parent_map = gcc_xo_gpll0_map,
0442     .freq_tbl = ftbl_blsp_uart_apps_clk_src,
0443     .clkr.hw.init = &(struct clk_init_data){
0444         .name = "blsp1_uart2_apps_clk_src",
0445         .parent_data = gcc_xo_gpll0,
0446         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0447         .ops = &clk_rcg2_ops,
0448     },
0449 };
0450 
0451 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
0452     .cmd_rcgr = 0x078c,
0453     .mnd_width = 16,
0454     .hid_width = 5,
0455     .parent_map = gcc_xo_gpll0_map,
0456     .freq_tbl = ftbl_blsp_uart_apps_clk_src,
0457     .clkr.hw.init = &(struct clk_init_data){
0458         .name = "blsp1_uart3_apps_clk_src",
0459         .parent_data = gcc_xo_gpll0,
0460         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0461         .ops = &clk_rcg2_ops,
0462     },
0463 };
0464 
0465 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
0466     .cmd_rcgr = 0x080c,
0467     .mnd_width = 16,
0468     .hid_width = 5,
0469     .parent_map = gcc_xo_gpll0_map,
0470     .freq_tbl = ftbl_blsp_uart_apps_clk_src,
0471     .clkr.hw.init = &(struct clk_init_data){
0472         .name = "blsp1_uart4_apps_clk_src",
0473         .parent_data = gcc_xo_gpll0,
0474         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0475         .ops = &clk_rcg2_ops,
0476     },
0477 };
0478 
0479 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
0480     .cmd_rcgr = 0x088c,
0481     .mnd_width = 16,
0482     .hid_width = 5,
0483     .parent_map = gcc_xo_gpll0_map,
0484     .freq_tbl = ftbl_blsp_uart_apps_clk_src,
0485     .clkr.hw.init = &(struct clk_init_data){
0486         .name = "blsp1_uart5_apps_clk_src",
0487         .parent_data = gcc_xo_gpll0,
0488         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0489         .ops = &clk_rcg2_ops,
0490     },
0491 };
0492 
0493 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
0494     .cmd_rcgr = 0x090c,
0495     .mnd_width = 16,
0496     .hid_width = 5,
0497     .parent_map = gcc_xo_gpll0_map,
0498     .freq_tbl = ftbl_blsp_uart_apps_clk_src,
0499     .clkr.hw.init = &(struct clk_init_data){
0500         .name = "blsp1_uart6_apps_clk_src",
0501         .parent_data = gcc_xo_gpll0,
0502         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0503         .ops = &clk_rcg2_ops,
0504     },
0505 };
0506 
0507 static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
0508     .cmd_rcgr = 0x09a0,
0509     .hid_width = 5,
0510     .parent_map = gcc_xo_gpll0_map,
0511     .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
0512     .clkr.hw.init = &(struct clk_init_data){
0513         .name = "blsp2_qup1_i2c_apps_clk_src",
0514         .parent_data = gcc_xo_gpll0,
0515         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0516         .ops = &clk_rcg2_ops,
0517     },
0518 };
0519 
0520 static struct freq_tbl ftbl_blsp2_qup1_2_spi_apps_clk_src[] = {
0521     F(960000, P_XO, 10, 1, 2),
0522     F(4800000, P_XO, 4, 0, 0),
0523     F(9600000, P_XO, 2, 0, 0),
0524     F(15000000, P_GPLL0, 10, 1, 4),
0525     F(19200000, P_XO, 1, 0, 0),
0526     F(24000000, P_GPLL0, 12.5, 1, 2),
0527     F(25000000, P_GPLL0, 12, 1, 2),
0528     F(42860000, P_GPLL0, 14, 0, 0),
0529     F(44440000, P_GPLL0, 13.5, 0, 0),
0530     { }
0531 };
0532 
0533 static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
0534     .cmd_rcgr = 0x098c,
0535     .mnd_width = 8,
0536     .hid_width = 5,
0537     .parent_map = gcc_xo_gpll0_map,
0538     .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
0539     .clkr.hw.init = &(struct clk_init_data){
0540         .name = "blsp2_qup1_spi_apps_clk_src",
0541         .parent_data = gcc_xo_gpll0,
0542         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0543         .ops = &clk_rcg2_ops,
0544     },
0545 };
0546 
0547 static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
0548     .cmd_rcgr = 0x0a20,
0549     .hid_width = 5,
0550     .parent_map = gcc_xo_gpll0_map,
0551     .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
0552     .clkr.hw.init = &(struct clk_init_data){
0553         .name = "blsp2_qup2_i2c_apps_clk_src",
0554         .parent_data = gcc_xo_gpll0,
0555         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0556         .ops = &clk_rcg2_ops,
0557     },
0558 };
0559 
0560 static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
0561     .cmd_rcgr = 0x0a0c,
0562     .mnd_width = 8,
0563     .hid_width = 5,
0564     .parent_map = gcc_xo_gpll0_map,
0565     .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
0566     .clkr.hw.init = &(struct clk_init_data){
0567         .name = "blsp2_qup2_spi_apps_clk_src",
0568         .parent_data = gcc_xo_gpll0,
0569         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0570         .ops = &clk_rcg2_ops,
0571     },
0572 };
0573 
0574 static struct freq_tbl ftbl_blsp2_qup3_4_spi_apps_clk_src[] = {
0575     F(960000, P_XO, 10, 1, 2),
0576     F(4800000, P_XO, 4, 0, 0),
0577     F(9600000, P_XO, 2, 0, 0),
0578     F(15000000, P_GPLL0, 10, 1, 4),
0579     F(19200000, P_XO, 1, 0, 0),
0580     F(24000000, P_GPLL0, 12.5, 1, 2),
0581     F(25000000, P_GPLL0, 12, 1, 2),
0582     F(42860000, P_GPLL0, 14, 0, 0),
0583     F(48000000, P_GPLL0, 12.5, 0, 0),
0584     { }
0585 };
0586 
0587 static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
0588     .cmd_rcgr = 0x0aa0,
0589     .hid_width = 5,
0590     .parent_map = gcc_xo_gpll0_map,
0591     .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
0592     .clkr.hw.init = &(struct clk_init_data){
0593         .name = "blsp2_qup3_i2c_apps_clk_src",
0594         .parent_data = gcc_xo_gpll0,
0595         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0596         .ops = &clk_rcg2_ops,
0597     },
0598 };
0599 
0600 static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
0601     .cmd_rcgr = 0x0a8c,
0602     .mnd_width = 8,
0603     .hid_width = 5,
0604     .parent_map = gcc_xo_gpll0_map,
0605     .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
0606     .clkr.hw.init = &(struct clk_init_data){
0607         .name = "blsp2_qup3_spi_apps_clk_src",
0608         .parent_data = gcc_xo_gpll0,
0609         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0610         .ops = &clk_rcg2_ops,
0611     },
0612 };
0613 
0614 static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
0615     .cmd_rcgr = 0x0b20,
0616     .hid_width = 5,
0617     .parent_map = gcc_xo_gpll0_map,
0618     .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
0619     .clkr.hw.init = &(struct clk_init_data){
0620         .name = "blsp2_qup4_i2c_apps_clk_src",
0621         .parent_data = gcc_xo_gpll0,
0622         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0623         .ops = &clk_rcg2_ops,
0624     },
0625 };
0626 
0627 static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
0628     .cmd_rcgr = 0x0b0c,
0629     .mnd_width = 8,
0630     .hid_width = 5,
0631     .parent_map = gcc_xo_gpll0_map,
0632     .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
0633     .clkr.hw.init = &(struct clk_init_data){
0634         .name = "blsp2_qup4_spi_apps_clk_src",
0635         .parent_data = gcc_xo_gpll0,
0636         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0637         .ops = &clk_rcg2_ops,
0638     },
0639 };
0640 
0641 static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
0642     .cmd_rcgr = 0x0ba0,
0643     .hid_width = 5,
0644     .parent_map = gcc_xo_gpll0_map,
0645     .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
0646     .clkr.hw.init = &(struct clk_init_data){
0647         .name = "blsp2_qup5_i2c_apps_clk_src",
0648         .parent_data = gcc_xo_gpll0,
0649         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0650         .ops = &clk_rcg2_ops,
0651     },
0652 };
0653 
0654 static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
0655     .cmd_rcgr = 0x0b8c,
0656     .mnd_width = 8,
0657     .hid_width = 5,
0658     .parent_map = gcc_xo_gpll0_map,
0659     /* BLSP1 QUP1 and BLSP2 QUP5 use the same freqs */
0660     .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
0661     .clkr.hw.init = &(struct clk_init_data){
0662         .name = "blsp2_qup5_spi_apps_clk_src",
0663         .parent_data = gcc_xo_gpll0,
0664         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0665         .ops = &clk_rcg2_ops,
0666     },
0667 };
0668 
0669 static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
0670     .cmd_rcgr = 0x0c20,
0671     .hid_width = 5,
0672     .parent_map = gcc_xo_gpll0_map,
0673     .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
0674     .clkr.hw.init = &(struct clk_init_data){
0675         .name = "blsp2_qup6_i2c_apps_clk_src",
0676         .parent_data = gcc_xo_gpll0,
0677         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0678         .ops = &clk_rcg2_ops,
0679     },
0680 };
0681 
0682 static struct freq_tbl ftbl_blsp2_qup6_spi_apps_clk_src[] = {
0683     F(960000, P_XO, 10, 1, 2),
0684     F(4800000, P_XO, 4, 0, 0),
0685     F(9600000, P_XO, 2, 0, 0),
0686     F(15000000, P_GPLL0, 10, 1, 4),
0687     F(19200000, P_XO, 1, 0, 0),
0688     F(24000000, P_GPLL0, 12.5, 1, 2),
0689     F(25000000, P_GPLL0, 12, 1, 2),
0690     F(44440000, P_GPLL0, 13.5, 0, 0),
0691     F(48000000, P_GPLL0, 12.5, 0, 0),
0692     { }
0693 };
0694 
0695 static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
0696     .cmd_rcgr = 0x0c0c,
0697     .mnd_width = 8,
0698     .hid_width = 5,
0699     .parent_map = gcc_xo_gpll0_map,
0700     .freq_tbl = ftbl_blsp2_qup6_spi_apps_clk_src,
0701     .clkr.hw.init = &(struct clk_init_data){
0702         .name = "blsp2_qup6_spi_apps_clk_src",
0703         .parent_data = gcc_xo_gpll0,
0704         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0705         .ops = &clk_rcg2_ops,
0706     },
0707 };
0708 
0709 static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
0710     .cmd_rcgr = 0x09cc,
0711     .mnd_width = 16,
0712     .hid_width = 5,
0713     .parent_map = gcc_xo_gpll0_map,
0714     .freq_tbl = ftbl_blsp_uart_apps_clk_src,
0715     .clkr.hw.init = &(struct clk_init_data){
0716         .name = "blsp2_uart1_apps_clk_src",
0717         .parent_data = gcc_xo_gpll0,
0718         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0719         .ops = &clk_rcg2_ops,
0720     },
0721 };
0722 
0723 static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
0724     .cmd_rcgr = 0x0a4c,
0725     .mnd_width = 16,
0726     .hid_width = 5,
0727     .parent_map = gcc_xo_gpll0_map,
0728     .freq_tbl = ftbl_blsp_uart_apps_clk_src,
0729     .clkr.hw.init = &(struct clk_init_data){
0730         .name = "blsp2_uart2_apps_clk_src",
0731         .parent_data = gcc_xo_gpll0,
0732         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0733         .ops = &clk_rcg2_ops,
0734     },
0735 };
0736 
0737 static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
0738     .cmd_rcgr = 0x0acc,
0739     .mnd_width = 16,
0740     .hid_width = 5,
0741     .parent_map = gcc_xo_gpll0_map,
0742     .freq_tbl = ftbl_blsp_uart_apps_clk_src,
0743     .clkr.hw.init = &(struct clk_init_data){
0744         .name = "blsp2_uart3_apps_clk_src",
0745         .parent_data = gcc_xo_gpll0,
0746         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0747         .ops = &clk_rcg2_ops,
0748     },
0749 };
0750 
0751 static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
0752     .cmd_rcgr = 0x0b4c,
0753     .mnd_width = 16,
0754     .hid_width = 5,
0755     .parent_map = gcc_xo_gpll0_map,
0756     .freq_tbl = ftbl_blsp_uart_apps_clk_src,
0757     .clkr.hw.init = &(struct clk_init_data){
0758         .name = "blsp2_uart4_apps_clk_src",
0759         .parent_data = gcc_xo_gpll0,
0760         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0761         .ops = &clk_rcg2_ops,
0762     },
0763 };
0764 
0765 static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
0766     .cmd_rcgr = 0x0bcc,
0767     .mnd_width = 16,
0768     .hid_width = 5,
0769     .parent_map = gcc_xo_gpll0_map,
0770     .freq_tbl = ftbl_blsp_uart_apps_clk_src,
0771     .clkr.hw.init = &(struct clk_init_data){
0772         .name = "blsp2_uart5_apps_clk_src",
0773         .parent_data = gcc_xo_gpll0,
0774         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0775         .ops = &clk_rcg2_ops,
0776     },
0777 };
0778 
0779 static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
0780     .cmd_rcgr = 0x0c4c,
0781     .mnd_width = 16,
0782     .hid_width = 5,
0783     .parent_map = gcc_xo_gpll0_map,
0784     .freq_tbl = ftbl_blsp_uart_apps_clk_src,
0785     .clkr.hw.init = &(struct clk_init_data){
0786         .name = "blsp2_uart6_apps_clk_src",
0787         .parent_data = gcc_xo_gpll0,
0788         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0789         .ops = &clk_rcg2_ops,
0790     },
0791 };
0792 
0793 static struct freq_tbl ftbl_gp1_clk_src[] = {
0794     F(19200000, P_XO, 1, 0, 0),
0795     F(100000000, P_GPLL0, 6, 0, 0),
0796     F(200000000, P_GPLL0, 3, 0, 0),
0797     { }
0798 };
0799 
0800 static struct clk_rcg2 gp1_clk_src = {
0801     .cmd_rcgr = 0x1904,
0802     .mnd_width = 8,
0803     .hid_width = 5,
0804     .parent_map = gcc_xo_gpll0_map,
0805     .freq_tbl = ftbl_gp1_clk_src,
0806     .clkr.hw.init = &(struct clk_init_data){
0807         .name = "gp1_clk_src",
0808         .parent_data = gcc_xo_gpll0,
0809         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0810         .ops = &clk_rcg2_ops,
0811     },
0812 };
0813 
0814 static struct freq_tbl ftbl_gp2_clk_src[] = {
0815     F(19200000, P_XO, 1, 0, 0),
0816     F(100000000, P_GPLL0, 6, 0, 0),
0817     F(200000000, P_GPLL0, 3, 0, 0),
0818     { }
0819 };
0820 
0821 static struct clk_rcg2 gp2_clk_src = {
0822     .cmd_rcgr = 0x1944,
0823     .mnd_width = 8,
0824     .hid_width = 5,
0825     .parent_map = gcc_xo_gpll0_map,
0826     .freq_tbl = ftbl_gp2_clk_src,
0827     .clkr.hw.init = &(struct clk_init_data){
0828         .name = "gp2_clk_src",
0829         .parent_data = gcc_xo_gpll0,
0830         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0831         .ops = &clk_rcg2_ops,
0832     },
0833 };
0834 
0835 static struct freq_tbl ftbl_gp3_clk_src[] = {
0836     F(19200000, P_XO, 1, 0, 0),
0837     F(100000000, P_GPLL0, 6, 0, 0),
0838     F(200000000, P_GPLL0, 3, 0, 0),
0839     { }
0840 };
0841 
0842 static struct clk_rcg2 gp3_clk_src = {
0843     .cmd_rcgr = 0x1984,
0844     .mnd_width = 8,
0845     .hid_width = 5,
0846     .parent_map = gcc_xo_gpll0_map,
0847     .freq_tbl = ftbl_gp3_clk_src,
0848     .clkr.hw.init = &(struct clk_init_data){
0849         .name = "gp3_clk_src",
0850         .parent_data = gcc_xo_gpll0,
0851         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0852         .ops = &clk_rcg2_ops,
0853     },
0854 };
0855 
0856 static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = {
0857     F(1011000, P_XO, 1, 1, 19),
0858     { }
0859 };
0860 
0861 static struct clk_rcg2 pcie_0_aux_clk_src = {
0862     .cmd_rcgr = 0x1b00,
0863     .mnd_width = 8,
0864     .hid_width = 5,
0865     .freq_tbl = ftbl_pcie_0_aux_clk_src,
0866     .clkr.hw.init = &(struct clk_init_data){
0867         .name = "pcie_0_aux_clk_src",
0868         .parent_data = &(const struct clk_parent_data){
0869                 .fw_name = "xo",
0870         },
0871         .num_parents = 1,
0872         .ops = &clk_rcg2_ops,
0873     },
0874 };
0875 
0876 static struct freq_tbl ftbl_pcie_pipe_clk_src[] = {
0877     F(125000000, P_XO, 1, 0, 0),
0878     { }
0879 };
0880 
0881 static struct clk_rcg2 pcie_0_pipe_clk_src = {
0882     .cmd_rcgr = 0x1adc,
0883     .hid_width = 5,
0884     .freq_tbl = ftbl_pcie_pipe_clk_src,
0885     .clkr.hw.init = &(struct clk_init_data){
0886         .name = "pcie_0_pipe_clk_src",
0887         .parent_data = &(const struct clk_parent_data){
0888                 .fw_name = "xo",
0889         },
0890         .num_parents = 1,
0891         .ops = &clk_rcg2_ops,
0892     },
0893 };
0894 
0895 static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = {
0896     F(1011000, P_XO, 1, 1, 19),
0897     { }
0898 };
0899 
0900 static struct clk_rcg2 pcie_1_aux_clk_src = {
0901     .cmd_rcgr = 0x1b80,
0902     .mnd_width = 8,
0903     .hid_width = 5,
0904     .freq_tbl = ftbl_pcie_1_aux_clk_src,
0905     .clkr.hw.init = &(struct clk_init_data){
0906         .name = "pcie_1_aux_clk_src",
0907         .parent_data = &(const struct clk_parent_data){
0908                 .fw_name = "xo",
0909         },
0910         .num_parents = 1,
0911         .ops = &clk_rcg2_ops,
0912     },
0913 };
0914 
0915 static struct clk_rcg2 pcie_1_pipe_clk_src = {
0916     .cmd_rcgr = 0x1b5c,
0917     .hid_width = 5,
0918     .freq_tbl = ftbl_pcie_pipe_clk_src,
0919     .clkr.hw.init = &(struct clk_init_data){
0920         .name = "pcie_1_pipe_clk_src",
0921         .parent_data = &(const struct clk_parent_data){
0922                 .fw_name = "xo",
0923         },
0924         .num_parents = 1,
0925         .ops = &clk_rcg2_ops,
0926     },
0927 };
0928 
0929 static struct freq_tbl ftbl_pdm2_clk_src[] = {
0930     F(60000000, P_GPLL0, 10, 0, 0),
0931     { }
0932 };
0933 
0934 static struct clk_rcg2 pdm2_clk_src = {
0935     .cmd_rcgr = 0x0cd0,
0936     .hid_width = 5,
0937     .parent_map = gcc_xo_gpll0_map,
0938     .freq_tbl = ftbl_pdm2_clk_src,
0939     .clkr.hw.init = &(struct clk_init_data){
0940         .name = "pdm2_clk_src",
0941         .parent_data = gcc_xo_gpll0,
0942         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
0943         .ops = &clk_rcg2_ops,
0944     },
0945 };
0946 
0947 static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
0948     F(144000, P_XO, 16, 3, 25),
0949     F(400000, P_XO, 12, 1, 4),
0950     F(20000000, P_GPLL0, 15, 1, 2),
0951     F(25000000, P_GPLL0, 12, 1, 2),
0952     F(50000000, P_GPLL0, 12, 0, 0),
0953     F(100000000, P_GPLL0, 6, 0, 0),
0954     F(192000000, P_GPLL4, 2, 0, 0),
0955     F(384000000, P_GPLL4, 1, 0, 0),
0956     { }
0957 };
0958 
0959 static struct freq_tbl ftbl_sdcc1_apps_clk_src_8992[] = {
0960     F(144000, P_XO, 16, 3, 25),
0961     F(400000, P_XO, 12, 1, 4),
0962     F(20000000, P_GPLL0, 15, 1, 2),
0963     F(25000000, P_GPLL0, 12, 1, 2),
0964     F(50000000, P_GPLL0, 12, 0, 0),
0965     F(100000000, P_GPLL0, 6, 0, 0),
0966     F(172000000, P_GPLL4, 2, 0, 0),
0967     F(344000000, P_GPLL4, 1, 0, 0),
0968     { }
0969 };
0970 
0971 static struct clk_rcg2 sdcc1_apps_clk_src = {
0972     .cmd_rcgr = 0x04d0,
0973     .mnd_width = 8,
0974     .hid_width = 5,
0975     .parent_map = gcc_xo_gpll0_gpll4_map,
0976     .freq_tbl = ftbl_sdcc1_apps_clk_src,
0977     .clkr.hw.init = &(struct clk_init_data){
0978         .name = "sdcc1_apps_clk_src",
0979         .parent_data = gcc_xo_gpll0_gpll4,
0980         .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),
0981         .ops = &clk_rcg2_floor_ops,
0982     },
0983 };
0984 
0985 static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = {
0986     F(144000, P_XO, 16, 3, 25),
0987     F(400000, P_XO, 12, 1, 4),
0988     F(20000000, P_GPLL0, 15, 1, 2),
0989     F(25000000, P_GPLL0, 12, 1, 2),
0990     F(50000000, P_GPLL0, 12, 0, 0),
0991     F(100000000, P_GPLL0, 6, 0, 0),
0992     F(200000000, P_GPLL0, 3, 0, 0),
0993     { }
0994 };
0995 
0996 static struct clk_rcg2 sdcc2_apps_clk_src = {
0997     .cmd_rcgr = 0x0510,
0998     .mnd_width = 8,
0999     .hid_width = 5,
1000     .parent_map = gcc_xo_gpll0_map,
1001     .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
1002     .clkr.hw.init = &(struct clk_init_data){
1003         .name = "sdcc2_apps_clk_src",
1004         .parent_data = gcc_xo_gpll0,
1005         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1006         .ops = &clk_rcg2_floor_ops,
1007     },
1008 };
1009 
1010 static struct clk_rcg2 sdcc3_apps_clk_src = {
1011     .cmd_rcgr = 0x0550,
1012     .mnd_width = 8,
1013     .hid_width = 5,
1014     .parent_map = gcc_xo_gpll0_map,
1015     .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
1016     .clkr.hw.init = &(struct clk_init_data){
1017         .name = "sdcc3_apps_clk_src",
1018         .parent_data = gcc_xo_gpll0,
1019         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1020         .ops = &clk_rcg2_floor_ops,
1021     },
1022 };
1023 
1024 static struct clk_rcg2 sdcc4_apps_clk_src = {
1025     .cmd_rcgr = 0x0590,
1026     .mnd_width = 8,
1027     .hid_width = 5,
1028     .parent_map = gcc_xo_gpll0_map,
1029     .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
1030     .clkr.hw.init = &(struct clk_init_data){
1031         .name = "sdcc4_apps_clk_src",
1032         .parent_data = gcc_xo_gpll0,
1033         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1034         .ops = &clk_rcg2_floor_ops,
1035     },
1036 };
1037 
1038 static struct freq_tbl ftbl_tsif_ref_clk_src[] = {
1039     F(105500, P_XO, 1, 1, 182),
1040     { }
1041 };
1042 
1043 static struct clk_rcg2 tsif_ref_clk_src = {
1044     .cmd_rcgr = 0x0d90,
1045     .mnd_width = 8,
1046     .hid_width = 5,
1047     .freq_tbl = ftbl_tsif_ref_clk_src,
1048     .clkr.hw.init = &(struct clk_init_data){
1049         .name = "tsif_ref_clk_src",
1050         .parent_data = &(const struct clk_parent_data){
1051                 .fw_name = "xo",
1052         },
1053         .num_parents = 1,
1054         .ops = &clk_rcg2_ops,
1055     },
1056 };
1057 
1058 static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = {
1059     F(19200000, P_XO, 1, 0, 0),
1060     F(60000000, P_GPLL0, 10, 0, 0),
1061     { }
1062 };
1063 
1064 static struct clk_rcg2 usb30_mock_utmi_clk_src = {
1065     .cmd_rcgr = 0x03e8,
1066     .hid_width = 5,
1067     .parent_map = gcc_xo_gpll0_map,
1068     .freq_tbl = ftbl_usb30_mock_utmi_clk_src,
1069     .clkr.hw.init = &(struct clk_init_data){
1070         .name = "usb30_mock_utmi_clk_src",
1071         .parent_data = gcc_xo_gpll0,
1072         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1073         .ops = &clk_rcg2_ops,
1074     },
1075 };
1076 
1077 static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = {
1078     F(1200000, P_XO, 16, 0, 0),
1079     { }
1080 };
1081 
1082 static struct clk_rcg2 usb3_phy_aux_clk_src = {
1083     .cmd_rcgr = 0x1414,
1084     .hid_width = 5,
1085     .freq_tbl = ftbl_usb3_phy_aux_clk_src,
1086     .clkr.hw.init = &(struct clk_init_data){
1087         .name = "usb3_phy_aux_clk_src",
1088         .parent_data = &(const struct clk_parent_data){
1089                 .fw_name = "xo",
1090         },
1091         .num_parents = 1,
1092         .ops = &clk_rcg2_ops,
1093     },
1094 };
1095 
1096 static struct freq_tbl ftbl_usb_hs_system_clk_src[] = {
1097     F(75000000, P_GPLL0, 8, 0, 0),
1098     { }
1099 };
1100 
1101 static struct clk_rcg2 usb_hs_system_clk_src = {
1102     .cmd_rcgr = 0x0490,
1103     .hid_width = 5,
1104     .parent_map = gcc_xo_gpll0_map,
1105     .freq_tbl = ftbl_usb_hs_system_clk_src,
1106     .clkr.hw.init = &(struct clk_init_data){
1107         .name = "usb_hs_system_clk_src",
1108         .parent_data = gcc_xo_gpll0,
1109         .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1110         .ops = &clk_rcg2_ops,
1111     },
1112 };
1113 
1114 static struct clk_branch gcc_blsp1_ahb_clk = {
1115     .halt_reg = 0x05c4,
1116     .halt_check = BRANCH_HALT_VOTED,
1117     .clkr = {
1118         .enable_reg = 0x1484,
1119         .enable_mask = BIT(17),
1120         .hw.init = &(struct clk_init_data){
1121             .name = "gcc_blsp1_ahb_clk",
1122             .ops = &clk_branch2_ops,
1123         },
1124     },
1125 };
1126 
1127 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1128     .halt_reg = 0x0648,
1129     .clkr = {
1130         .enable_reg = 0x0648,
1131         .enable_mask = BIT(0),
1132         .hw.init = &(struct clk_init_data){
1133             .name = "gcc_blsp1_qup1_i2c_apps_clk",
1134             .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw },
1135             .num_parents = 1,
1136             .flags = CLK_SET_RATE_PARENT,
1137             .ops = &clk_branch2_ops,
1138         },
1139     },
1140 };
1141 
1142 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1143     .halt_reg = 0x0644,
1144     .clkr = {
1145         .enable_reg = 0x0644,
1146         .enable_mask = BIT(0),
1147         .hw.init = &(struct clk_init_data){
1148             .name = "gcc_blsp1_qup1_spi_apps_clk",
1149             .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw },
1150             .num_parents = 1,
1151             .flags = CLK_SET_RATE_PARENT,
1152             .ops = &clk_branch2_ops,
1153         },
1154     },
1155 };
1156 
1157 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1158     .halt_reg = 0x06c8,
1159     .clkr = {
1160         .enable_reg = 0x06c8,
1161         .enable_mask = BIT(0),
1162         .hw.init = &(struct clk_init_data){
1163             .name = "gcc_blsp1_qup2_i2c_apps_clk",
1164             .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw },
1165             .num_parents = 1,
1166             .flags = CLK_SET_RATE_PARENT,
1167             .ops = &clk_branch2_ops,
1168         },
1169     },
1170 };
1171 
1172 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1173     .halt_reg = 0x06c4,
1174     .clkr = {
1175         .enable_reg = 0x06c4,
1176         .enable_mask = BIT(0),
1177         .hw.init = &(struct clk_init_data){
1178             .name = "gcc_blsp1_qup2_spi_apps_clk",
1179             .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw },
1180             .num_parents = 1,
1181             .flags = CLK_SET_RATE_PARENT,
1182             .ops = &clk_branch2_ops,
1183         },
1184     },
1185 };
1186 
1187 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1188     .halt_reg = 0x0748,
1189     .clkr = {
1190         .enable_reg = 0x0748,
1191         .enable_mask = BIT(0),
1192         .hw.init = &(struct clk_init_data){
1193             .name = "gcc_blsp1_qup3_i2c_apps_clk",
1194             .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw },
1195             .num_parents = 1,
1196             .flags = CLK_SET_RATE_PARENT,
1197             .ops = &clk_branch2_ops,
1198         },
1199     },
1200 };
1201 
1202 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1203     .halt_reg = 0x0744,
1204     .clkr = {
1205         .enable_reg = 0x0744,
1206         .enable_mask = BIT(0),
1207         .hw.init = &(struct clk_init_data){
1208             .name = "gcc_blsp1_qup3_spi_apps_clk",
1209             .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw },
1210             .num_parents = 1,
1211             .flags = CLK_SET_RATE_PARENT,
1212             .ops = &clk_branch2_ops,
1213         },
1214     },
1215 };
1216 
1217 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1218     .halt_reg = 0x07c8,
1219     .clkr = {
1220         .enable_reg = 0x07c8,
1221         .enable_mask = BIT(0),
1222         .hw.init = &(struct clk_init_data){
1223             .name = "gcc_blsp1_qup4_i2c_apps_clk",
1224             .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw },
1225             .num_parents = 1,
1226             .flags = CLK_SET_RATE_PARENT,
1227             .ops = &clk_branch2_ops,
1228         },
1229     },
1230 };
1231 
1232 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1233     .halt_reg = 0x07c4,
1234     .clkr = {
1235         .enable_reg = 0x07c4,
1236         .enable_mask = BIT(0),
1237         .hw.init = &(struct clk_init_data){
1238             .name = "gcc_blsp1_qup4_spi_apps_clk",
1239             .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw },
1240             .num_parents = 1,
1241             .flags = CLK_SET_RATE_PARENT,
1242             .ops = &clk_branch2_ops,
1243         },
1244     },
1245 };
1246 
1247 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1248     .halt_reg = 0x0848,
1249     .clkr = {
1250         .enable_reg = 0x0848,
1251         .enable_mask = BIT(0),
1252         .hw.init = &(struct clk_init_data){
1253             .name = "gcc_blsp1_qup5_i2c_apps_clk",
1254             .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw },
1255             .num_parents = 1,
1256             .flags = CLK_SET_RATE_PARENT,
1257             .ops = &clk_branch2_ops,
1258         },
1259     },
1260 };
1261 
1262 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1263     .halt_reg = 0x0844,
1264     .clkr = {
1265         .enable_reg = 0x0844,
1266         .enable_mask = BIT(0),
1267         .hw.init = &(struct clk_init_data){
1268             .name = "gcc_blsp1_qup5_spi_apps_clk",
1269             .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw },
1270             .num_parents = 1,
1271             .flags = CLK_SET_RATE_PARENT,
1272             .ops = &clk_branch2_ops,
1273         },
1274     },
1275 };
1276 
1277 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1278     .halt_reg = 0x08c8,
1279     .clkr = {
1280         .enable_reg = 0x08c8,
1281         .enable_mask = BIT(0),
1282         .hw.init = &(struct clk_init_data){
1283             .name = "gcc_blsp1_qup6_i2c_apps_clk",
1284             .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw },
1285             .num_parents = 1,
1286             .flags = CLK_SET_RATE_PARENT,
1287             .ops = &clk_branch2_ops,
1288         },
1289     },
1290 };
1291 
1292 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1293     .halt_reg = 0x08c4,
1294     .clkr = {
1295         .enable_reg = 0x08c4,
1296         .enable_mask = BIT(0),
1297         .hw.init = &(struct clk_init_data){
1298             .name = "gcc_blsp1_qup6_spi_apps_clk",
1299             .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw },
1300             .num_parents = 1,
1301             .flags = CLK_SET_RATE_PARENT,
1302             .ops = &clk_branch2_ops,
1303         },
1304     },
1305 };
1306 
1307 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1308     .halt_reg = 0x0684,
1309     .clkr = {
1310         .enable_reg = 0x0684,
1311         .enable_mask = BIT(0),
1312         .hw.init = &(struct clk_init_data){
1313             .name = "gcc_blsp1_uart1_apps_clk",
1314             .parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw },
1315             .num_parents = 1,
1316             .flags = CLK_SET_RATE_PARENT,
1317             .ops = &clk_branch2_ops,
1318         },
1319     },
1320 };
1321 
1322 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1323     .halt_reg = 0x0704,
1324     .clkr = {
1325         .enable_reg = 0x0704,
1326         .enable_mask = BIT(0),
1327         .hw.init = &(struct clk_init_data){
1328             .name = "gcc_blsp1_uart2_apps_clk",
1329             .parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw },
1330             .num_parents = 1,
1331             .flags = CLK_SET_RATE_PARENT,
1332             .ops = &clk_branch2_ops,
1333         },
1334     },
1335 };
1336 
1337 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1338     .halt_reg = 0x0784,
1339     .clkr = {
1340         .enable_reg = 0x0784,
1341         .enable_mask = BIT(0),
1342         .hw.init = &(struct clk_init_data){
1343             .name = "gcc_blsp1_uart3_apps_clk",
1344             .parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw },
1345             .num_parents = 1,
1346             .flags = CLK_SET_RATE_PARENT,
1347             .ops = &clk_branch2_ops,
1348         },
1349     },
1350 };
1351 
1352 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1353     .halt_reg = 0x0804,
1354     .clkr = {
1355         .enable_reg = 0x0804,
1356         .enable_mask = BIT(0),
1357         .hw.init = &(struct clk_init_data){
1358             .name = "gcc_blsp1_uart4_apps_clk",
1359             .parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw },
1360             .num_parents = 1,
1361             .flags = CLK_SET_RATE_PARENT,
1362             .ops = &clk_branch2_ops,
1363         },
1364     },
1365 };
1366 
1367 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1368     .halt_reg = 0x0884,
1369     .clkr = {
1370         .enable_reg = 0x0884,
1371         .enable_mask = BIT(0),
1372         .hw.init = &(struct clk_init_data){
1373             .name = "gcc_blsp1_uart5_apps_clk",
1374             .parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw },
1375             .num_parents = 1,
1376             .flags = CLK_SET_RATE_PARENT,
1377             .ops = &clk_branch2_ops,
1378         },
1379     },
1380 };
1381 
1382 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1383     .halt_reg = 0x0904,
1384     .clkr = {
1385         .enable_reg = 0x0904,
1386         .enable_mask = BIT(0),
1387         .hw.init = &(struct clk_init_data){
1388             .name = "gcc_blsp1_uart6_apps_clk",
1389             .parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw },
1390             .num_parents = 1,
1391             .flags = CLK_SET_RATE_PARENT,
1392             .ops = &clk_branch2_ops,
1393         },
1394     },
1395 };
1396 
1397 static struct clk_branch gcc_blsp2_ahb_clk = {
1398     .halt_reg = 0x0944,
1399     .halt_check = BRANCH_HALT_VOTED,
1400     .clkr = {
1401         .enable_reg = 0x1484,
1402         .enable_mask = BIT(15),
1403         .hw.init = &(struct clk_init_data){
1404             .name = "gcc_blsp2_ahb_clk",
1405             .ops = &clk_branch2_ops,
1406         },
1407     },
1408 };
1409 
1410 static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1411     .halt_reg = 0x0988,
1412     .clkr = {
1413         .enable_reg = 0x0988,
1414         .enable_mask = BIT(0),
1415         .hw.init = &(struct clk_init_data){
1416             .name = "gcc_blsp2_qup1_i2c_apps_clk",
1417             .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw },
1418             .num_parents = 1,
1419             .flags = CLK_SET_RATE_PARENT,
1420             .ops = &clk_branch2_ops,
1421         },
1422     },
1423 };
1424 
1425 static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1426     .halt_reg = 0x0984,
1427     .clkr = {
1428         .enable_reg = 0x0984,
1429         .enable_mask = BIT(0),
1430         .hw.init = &(struct clk_init_data){
1431             .name = "gcc_blsp2_qup1_spi_apps_clk",
1432             .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw },
1433             .num_parents = 1,
1434             .flags = CLK_SET_RATE_PARENT,
1435             .ops = &clk_branch2_ops,
1436         },
1437     },
1438 };
1439 
1440 static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1441     .halt_reg = 0x0a08,
1442     .clkr = {
1443         .enable_reg = 0x0a08,
1444         .enable_mask = BIT(0),
1445         .hw.init = &(struct clk_init_data){
1446             .name = "gcc_blsp2_qup2_i2c_apps_clk",
1447             .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw },
1448             .num_parents = 1,
1449             .flags = CLK_SET_RATE_PARENT,
1450             .ops = &clk_branch2_ops,
1451         },
1452     },
1453 };
1454 
1455 static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1456     .halt_reg = 0x0a04,
1457     .clkr = {
1458         .enable_reg = 0x0a04,
1459         .enable_mask = BIT(0),
1460         .hw.init = &(struct clk_init_data){
1461             .name = "gcc_blsp2_qup2_spi_apps_clk",
1462             .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw },
1463             .num_parents = 1,
1464             .flags = CLK_SET_RATE_PARENT,
1465             .ops = &clk_branch2_ops,
1466         },
1467     },
1468 };
1469 
1470 static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1471     .halt_reg = 0x0a88,
1472     .clkr = {
1473         .enable_reg = 0x0a88,
1474         .enable_mask = BIT(0),
1475         .hw.init = &(struct clk_init_data){
1476             .name = "gcc_blsp2_qup3_i2c_apps_clk",
1477             .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw },
1478             .num_parents = 1,
1479             .flags = CLK_SET_RATE_PARENT,
1480             .ops = &clk_branch2_ops,
1481         },
1482     },
1483 };
1484 
1485 static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1486     .halt_reg = 0x0a84,
1487     .clkr = {
1488         .enable_reg = 0x0a84,
1489         .enable_mask = BIT(0),
1490         .hw.init = &(struct clk_init_data){
1491             .name = "gcc_blsp2_qup3_spi_apps_clk",
1492             .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw },
1493             .num_parents = 1,
1494             .flags = CLK_SET_RATE_PARENT,
1495             .ops = &clk_branch2_ops,
1496         },
1497     },
1498 };
1499 
1500 static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1501     .halt_reg = 0x0b08,
1502     .clkr = {
1503         .enable_reg = 0x0b08,
1504         .enable_mask = BIT(0),
1505         .hw.init = &(struct clk_init_data){
1506             .name = "gcc_blsp2_qup4_i2c_apps_clk",
1507             .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw },
1508             .num_parents = 1,
1509             .flags = CLK_SET_RATE_PARENT,
1510             .ops = &clk_branch2_ops,
1511         },
1512     },
1513 };
1514 
1515 static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1516     .halt_reg = 0x0b04,
1517     .clkr = {
1518         .enable_reg = 0x0b04,
1519         .enable_mask = BIT(0),
1520         .hw.init = &(struct clk_init_data){
1521             .name = "gcc_blsp2_qup4_spi_apps_clk",
1522             .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw },
1523             .num_parents = 1,
1524             .flags = CLK_SET_RATE_PARENT,
1525             .ops = &clk_branch2_ops,
1526         },
1527     },
1528 };
1529 
1530 static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1531     .halt_reg = 0x0b88,
1532     .clkr = {
1533         .enable_reg = 0x0b88,
1534         .enable_mask = BIT(0),
1535         .hw.init = &(struct clk_init_data){
1536             .name = "gcc_blsp2_qup5_i2c_apps_clk",
1537             .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw },
1538             .num_parents = 1,
1539             .flags = CLK_SET_RATE_PARENT,
1540             .ops = &clk_branch2_ops,
1541         },
1542     },
1543 };
1544 
1545 static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = {
1546     .halt_reg = 0x0b84,
1547     .clkr = {
1548         .enable_reg = 0x0b84,
1549         .enable_mask = BIT(0),
1550         .hw.init = &(struct clk_init_data){
1551             .name = "gcc_blsp2_qup5_spi_apps_clk",
1552             .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw },
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_blsp2_qup6_i2c_apps_clk = {
1561     .halt_reg = 0x0c08,
1562     .clkr = {
1563         .enable_reg = 0x0c08,
1564         .enable_mask = BIT(0),
1565         .hw.init = &(struct clk_init_data){
1566             .name = "gcc_blsp2_qup6_i2c_apps_clk",
1567             .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw },
1568             .num_parents = 1,
1569             .flags = CLK_SET_RATE_PARENT,
1570             .ops = &clk_branch2_ops,
1571         },
1572     },
1573 };
1574 
1575 static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1576     .halt_reg = 0x0c04,
1577     .clkr = {
1578         .enable_reg = 0x0c04,
1579         .enable_mask = BIT(0),
1580         .hw.init = &(struct clk_init_data){
1581             .name = "gcc_blsp2_qup6_spi_apps_clk",
1582             .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw },
1583             .num_parents = 1,
1584             .flags = CLK_SET_RATE_PARENT,
1585             .ops = &clk_branch2_ops,
1586         },
1587     },
1588 };
1589 
1590 static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1591     .halt_reg = 0x09c4,
1592     .clkr = {
1593         .enable_reg = 0x09c4,
1594         .enable_mask = BIT(0),
1595         .hw.init = &(struct clk_init_data){
1596             .name = "gcc_blsp2_uart1_apps_clk",
1597             .parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw },
1598             .num_parents = 1,
1599             .flags = CLK_SET_RATE_PARENT,
1600             .ops = &clk_branch2_ops,
1601         },
1602     },
1603 };
1604 
1605 static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1606     .halt_reg = 0x0a44,
1607     .clkr = {
1608         .enable_reg = 0x0a44,
1609         .enable_mask = BIT(0),
1610         .hw.init = &(struct clk_init_data){
1611             .name = "gcc_blsp2_uart2_apps_clk",
1612             .parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw },
1613             .num_parents = 1,
1614             .flags = CLK_SET_RATE_PARENT,
1615             .ops = &clk_branch2_ops,
1616         },
1617     },
1618 };
1619 
1620 static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1621     .halt_reg = 0x0ac4,
1622     .clkr = {
1623         .enable_reg = 0x0ac4,
1624         .enable_mask = BIT(0),
1625         .hw.init = &(struct clk_init_data){
1626             .name = "gcc_blsp2_uart3_apps_clk",
1627             .parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw },
1628             .num_parents = 1,
1629             .flags = CLK_SET_RATE_PARENT,
1630             .ops = &clk_branch2_ops,
1631         },
1632     },
1633 };
1634 
1635 static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1636     .halt_reg = 0x0b44,
1637     .clkr = {
1638         .enable_reg = 0x0b44,
1639         .enable_mask = BIT(0),
1640         .hw.init = &(struct clk_init_data){
1641             .name = "gcc_blsp2_uart4_apps_clk",
1642             .parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw },
1643             .num_parents = 1,
1644             .flags = CLK_SET_RATE_PARENT,
1645             .ops = &clk_branch2_ops,
1646         },
1647     },
1648 };
1649 
1650 static struct clk_branch gcc_blsp2_uart5_apps_clk = {
1651     .halt_reg = 0x0bc4,
1652     .clkr = {
1653         .enable_reg = 0x0bc4,
1654         .enable_mask = BIT(0),
1655         .hw.init = &(struct clk_init_data){
1656             .name = "gcc_blsp2_uart5_apps_clk",
1657             .parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw },
1658             .num_parents = 1,
1659             .flags = CLK_SET_RATE_PARENT,
1660             .ops = &clk_branch2_ops,
1661         },
1662     },
1663 };
1664 
1665 static struct clk_branch gcc_blsp2_uart6_apps_clk = {
1666     .halt_reg = 0x0c44,
1667     .clkr = {
1668         .enable_reg = 0x0c44,
1669         .enable_mask = BIT(0),
1670         .hw.init = &(struct clk_init_data){
1671             .name = "gcc_blsp2_uart6_apps_clk",
1672             .parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw },
1673             .num_parents = 1,
1674             .flags = CLK_SET_RATE_PARENT,
1675             .ops = &clk_branch2_ops,
1676         },
1677     },
1678 };
1679 
1680 static struct clk_branch gcc_gp1_clk = {
1681     .halt_reg = 0x1900,
1682     .clkr = {
1683         .enable_reg = 0x1900,
1684         .enable_mask = BIT(0),
1685         .hw.init = &(struct clk_init_data){
1686             .name = "gcc_gp1_clk",
1687             .parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw },
1688             .num_parents = 1,
1689             .flags = CLK_SET_RATE_PARENT,
1690             .ops = &clk_branch2_ops,
1691         },
1692     },
1693 };
1694 
1695 static struct clk_branch gcc_gp2_clk = {
1696     .halt_reg = 0x1940,
1697     .clkr = {
1698         .enable_reg = 0x1940,
1699         .enable_mask = BIT(0),
1700         .hw.init = &(struct clk_init_data){
1701             .name = "gcc_gp2_clk",
1702             .parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw },
1703             .num_parents = 1,
1704             .flags = CLK_SET_RATE_PARENT,
1705             .ops = &clk_branch2_ops,
1706         },
1707     },
1708 };
1709 
1710 static struct clk_branch gcc_gp3_clk = {
1711     .halt_reg = 0x1980,
1712     .clkr = {
1713         .enable_reg = 0x1980,
1714         .enable_mask = BIT(0),
1715         .hw.init = &(struct clk_init_data){
1716             .name = "gcc_gp3_clk",
1717             .parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw },
1718             .num_parents = 1,
1719             .flags = CLK_SET_RATE_PARENT,
1720             .ops = &clk_branch2_ops,
1721         },
1722     },
1723 };
1724 
1725 static struct clk_branch gcc_lpass_q6_axi_clk = {
1726     .halt_reg = 0x0280,
1727     .clkr = {
1728         .enable_reg = 0x0280,
1729         .enable_mask = BIT(0),
1730         .hw.init = &(struct clk_init_data){
1731             .name = "gcc_lpass_q6_axi_clk",
1732             .ops = &clk_branch2_ops,
1733         },
1734     },
1735 };
1736 
1737 static struct clk_branch gcc_mss_q6_bimc_axi_clk = {
1738     .halt_reg = 0x0284,
1739     .clkr = {
1740         .enable_reg = 0x0284,
1741         .enable_mask = BIT(0),
1742         .hw.init = &(struct clk_init_data){
1743             .name = "gcc_mss_q6_bimc_axi_clk",
1744             .ops = &clk_branch2_ops,
1745         },
1746     },
1747 };
1748 
1749 static struct clk_branch gcc_pcie_0_aux_clk = {
1750     .halt_reg = 0x1ad4,
1751     .clkr = {
1752         .enable_reg = 0x1ad4,
1753         .enable_mask = BIT(0),
1754         .hw.init = &(struct clk_init_data){
1755             .name = "gcc_pcie_0_aux_clk",
1756             .parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw },
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_pcie_0_cfg_ahb_clk = {
1765     .halt_reg = 0x1ad0,
1766     .clkr = {
1767         .enable_reg = 0x1ad0,
1768         .enable_mask = BIT(0),
1769         .hw.init = &(struct clk_init_data){
1770             .name = "gcc_pcie_0_cfg_ahb_clk",
1771             .ops = &clk_branch2_ops,
1772         },
1773     },
1774 };
1775 
1776 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
1777     .halt_reg = 0x1acc,
1778     .clkr = {
1779         .enable_reg = 0x1acc,
1780         .enable_mask = BIT(0),
1781         .hw.init = &(struct clk_init_data){
1782             .name = "gcc_pcie_0_mstr_axi_clk",
1783             .ops = &clk_branch2_ops,
1784         },
1785     },
1786 };
1787 
1788 static struct clk_branch gcc_pcie_0_pipe_clk = {
1789     .halt_reg = 0x1ad8,
1790     .halt_check = BRANCH_HALT_DELAY,
1791     .clkr = {
1792         .enable_reg = 0x1ad8,
1793         .enable_mask = BIT(0),
1794         .hw.init = &(struct clk_init_data){
1795             .name = "gcc_pcie_0_pipe_clk",
1796             .parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw },
1797             .num_parents = 1,
1798             .flags = CLK_SET_RATE_PARENT,
1799             .ops = &clk_branch2_ops,
1800         },
1801     },
1802 };
1803 
1804 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
1805     .halt_reg = 0x1ac8,
1806     .halt_check = BRANCH_HALT_DELAY,
1807     .clkr = {
1808         .enable_reg = 0x1ac8,
1809         .enable_mask = BIT(0),
1810         .hw.init = &(struct clk_init_data){
1811             .name = "gcc_pcie_0_slv_axi_clk",
1812             .ops = &clk_branch2_ops,
1813         },
1814     },
1815 };
1816 
1817 static struct clk_branch gcc_pcie_1_aux_clk = {
1818     .halt_reg = 0x1b54,
1819     .clkr = {
1820         .enable_reg = 0x1b54,
1821         .enable_mask = BIT(0),
1822         .hw.init = &(struct clk_init_data){
1823             .name = "gcc_pcie_1_aux_clk",
1824             .parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw },
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_pcie_1_cfg_ahb_clk = {
1833     .halt_reg = 0x1b54,
1834     .clkr = {
1835         .enable_reg = 0x1b54,
1836         .enable_mask = BIT(0),
1837         .hw.init = &(struct clk_init_data){
1838             .name = "gcc_pcie_1_cfg_ahb_clk",
1839             .ops = &clk_branch2_ops,
1840         },
1841     },
1842 };
1843 
1844 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
1845     .halt_reg = 0x1b50,
1846     .clkr = {
1847         .enable_reg = 0x1b50,
1848         .enable_mask = BIT(0),
1849         .hw.init = &(struct clk_init_data){
1850             .name = "gcc_pcie_1_mstr_axi_clk",
1851             .ops = &clk_branch2_ops,
1852         },
1853     },
1854 };
1855 
1856 static struct clk_branch gcc_pcie_1_pipe_clk = {
1857     .halt_reg = 0x1b58,
1858     .halt_check = BRANCH_HALT_DELAY,
1859     .clkr = {
1860         .enable_reg = 0x1b58,
1861         .enable_mask = BIT(0),
1862         .hw.init = &(struct clk_init_data){
1863             .name = "gcc_pcie_1_pipe_clk",
1864             .parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw },
1865             .num_parents = 1,
1866             .flags = CLK_SET_RATE_PARENT,
1867             .ops = &clk_branch2_ops,
1868         },
1869     },
1870 };
1871 
1872 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
1873     .halt_reg = 0x1b48,
1874     .clkr = {
1875         .enable_reg = 0x1b48,
1876         .enable_mask = BIT(0),
1877         .hw.init = &(struct clk_init_data){
1878             .name = "gcc_pcie_1_slv_axi_clk",
1879             .ops = &clk_branch2_ops,
1880         },
1881     },
1882 };
1883 
1884 static struct clk_branch gcc_pdm2_clk = {
1885     .halt_reg = 0x0ccc,
1886     .clkr = {
1887         .enable_reg = 0x0ccc,
1888         .enable_mask = BIT(0),
1889         .hw.init = &(struct clk_init_data){
1890             .name = "gcc_pdm2_clk",
1891             .parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw },
1892             .num_parents = 1,
1893             .flags = CLK_SET_RATE_PARENT,
1894             .ops = &clk_branch2_ops,
1895         },
1896     },
1897 };
1898 
1899 static struct clk_branch gcc_pdm_ahb_clk = {
1900     .halt_reg = 0x0cc4,
1901     .clkr = {
1902         .enable_reg = 0x0cc4,
1903         .enable_mask = BIT(0),
1904         .hw.init = &(struct clk_init_data){
1905             .name = "gcc_pdm_ahb_clk",
1906             .ops = &clk_branch2_ops,
1907         },
1908     },
1909 };
1910 
1911 static struct clk_branch gcc_sdcc1_apps_clk = {
1912     .halt_reg = 0x04c4,
1913     .clkr = {
1914         .enable_reg = 0x04c4,
1915         .enable_mask = BIT(0),
1916         .hw.init = &(struct clk_init_data){
1917             .name = "gcc_sdcc1_apps_clk",
1918             .parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw },
1919             .num_parents = 1,
1920             .flags = CLK_SET_RATE_PARENT,
1921             .ops = &clk_branch2_ops,
1922         },
1923     },
1924 };
1925 
1926 static struct clk_branch gcc_sdcc1_ahb_clk = {
1927     .halt_reg = 0x04c8,
1928     .clkr = {
1929         .enable_reg = 0x04c8,
1930         .enable_mask = BIT(0),
1931         .hw.init = &(struct clk_init_data){
1932             .name = "gcc_sdcc1_ahb_clk",
1933             .ops = &clk_branch2_ops,
1934         },
1935     },
1936 };
1937 
1938 static struct clk_branch gcc_sdcc2_ahb_clk = {
1939     .halt_reg = 0x0508,
1940     .clkr = {
1941         .enable_reg = 0x0508,
1942         .enable_mask = BIT(0),
1943         .hw.init = &(struct clk_init_data){
1944             .name = "gcc_sdcc2_ahb_clk",
1945             .ops = &clk_branch2_ops,
1946         },
1947     },
1948 };
1949 
1950 static struct clk_branch gcc_sdcc2_apps_clk = {
1951     .halt_reg = 0x0504,
1952     .clkr = {
1953         .enable_reg = 0x0504,
1954         .enable_mask = BIT(0),
1955         .hw.init = &(struct clk_init_data){
1956             .name = "gcc_sdcc2_apps_clk",
1957             .parent_hws = (const struct clk_hw *[]){ &sdcc2_apps_clk_src.clkr.hw },
1958             .num_parents = 1,
1959             .flags = CLK_SET_RATE_PARENT,
1960             .ops = &clk_branch2_ops,
1961         },
1962     },
1963 };
1964 
1965 static struct clk_branch gcc_sdcc3_ahb_clk = {
1966     .halt_reg = 0x0548,
1967     .clkr = {
1968         .enable_reg = 0x0548,
1969         .enable_mask = BIT(0),
1970         .hw.init = &(struct clk_init_data){
1971             .name = "gcc_sdcc3_ahb_clk",
1972             .ops = &clk_branch2_ops,
1973         },
1974     },
1975 };
1976 
1977 static struct clk_branch gcc_sdcc3_apps_clk = {
1978     .halt_reg = 0x0544,
1979     .clkr = {
1980         .enable_reg = 0x0544,
1981         .enable_mask = BIT(0),
1982         .hw.init = &(struct clk_init_data){
1983             .name = "gcc_sdcc3_apps_clk",
1984             .parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_clk_src.clkr.hw },
1985             .num_parents = 1,
1986             .flags = CLK_SET_RATE_PARENT,
1987             .ops = &clk_branch2_ops,
1988         },
1989     },
1990 };
1991 
1992 static struct clk_branch gcc_sdcc4_ahb_clk = {
1993     .halt_reg = 0x0588,
1994     .clkr = {
1995         .enable_reg = 0x0588,
1996         .enable_mask = BIT(0),
1997         .hw.init = &(struct clk_init_data){
1998             .name = "gcc_sdcc4_ahb_clk",
1999             .ops = &clk_branch2_ops,
2000         },
2001     },
2002 };
2003 
2004 static struct clk_branch gcc_sdcc4_apps_clk = {
2005     .halt_reg = 0x0584,
2006     .clkr = {
2007         .enable_reg = 0x0584,
2008         .enable_mask = BIT(0),
2009         .hw.init = &(struct clk_init_data){
2010             .name = "gcc_sdcc4_apps_clk",
2011             .parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw },
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_sys_noc_ufs_axi_clk = {
2020     .halt_reg = 0x1d7c,
2021     .clkr = {
2022         .enable_reg = 0x1d7c,
2023         .enable_mask = BIT(0),
2024         .hw.init = &(struct clk_init_data){
2025             .name = "gcc_sys_noc_ufs_axi_clk",
2026             .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2027             .num_parents = 1,
2028             .flags = CLK_SET_RATE_PARENT,
2029             .ops = &clk_branch2_ops,
2030         },
2031     },
2032 };
2033 
2034 static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
2035     .halt_reg = 0x03fc,
2036     .clkr = {
2037         .enable_reg = 0x03fc,
2038         .enable_mask = BIT(0),
2039         .hw.init = &(struct clk_init_data){
2040             .name = "gcc_sys_noc_usb3_axi_clk",
2041             .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2042             .num_parents = 1,
2043             .flags = CLK_SET_RATE_PARENT,
2044             .ops = &clk_branch2_ops,
2045         },
2046     },
2047 };
2048 
2049 static struct clk_branch gcc_tsif_ahb_clk = {
2050     .halt_reg = 0x0d84,
2051     .clkr = {
2052         .enable_reg = 0x0d84,
2053         .enable_mask = BIT(0),
2054         .hw.init = &(struct clk_init_data){
2055             .name = "gcc_tsif_ahb_clk",
2056             .ops = &clk_branch2_ops,
2057         },
2058     },
2059 };
2060 
2061 static struct clk_branch gcc_tsif_ref_clk = {
2062     .halt_reg = 0x0d88,
2063     .clkr = {
2064         .enable_reg = 0x0d88,
2065         .enable_mask = BIT(0),
2066         .hw.init = &(struct clk_init_data){
2067             .name = "gcc_tsif_ref_clk",
2068             .parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw },
2069             .num_parents = 1,
2070             .flags = CLK_SET_RATE_PARENT,
2071             .ops = &clk_branch2_ops,
2072         },
2073     },
2074 };
2075 
2076 static struct clk_branch gcc_ufs_ahb_clk = {
2077     .halt_reg = 0x1d4c,
2078     .clkr = {
2079         .enable_reg = 0x1d4c,
2080         .enable_mask = BIT(0),
2081         .hw.init = &(struct clk_init_data){
2082             .name = "gcc_ufs_ahb_clk",
2083             .ops = &clk_branch2_ops,
2084         },
2085     },
2086 };
2087 
2088 static struct clk_branch gcc_ufs_axi_clk = {
2089     .halt_reg = 0x1d48,
2090     .clkr = {
2091         .enable_reg = 0x1d48,
2092         .enable_mask = BIT(0),
2093         .hw.init = &(struct clk_init_data){
2094             .name = "gcc_ufs_axi_clk",
2095             .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2096             .num_parents = 1,
2097             .flags = CLK_SET_RATE_PARENT,
2098             .ops = &clk_branch2_ops,
2099         },
2100     },
2101 };
2102 
2103 static struct clk_branch gcc_ufs_rx_cfg_clk = {
2104     .halt_reg = 0x1d54,
2105     .clkr = {
2106         .enable_reg = 0x1d54,
2107         .enable_mask = BIT(0),
2108         .hw.init = &(struct clk_init_data){
2109             .name = "gcc_ufs_rx_cfg_clk",
2110             .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2111             .num_parents = 1,
2112             .flags = CLK_SET_RATE_PARENT,
2113             .ops = &clk_branch2_ops,
2114         },
2115     },
2116 };
2117 
2118 static struct clk_branch gcc_ufs_rx_symbol_0_clk = {
2119     .halt_reg = 0x1d60,
2120     .halt_check = BRANCH_HALT_DELAY,
2121     .clkr = {
2122         .enable_reg = 0x1d60,
2123         .enable_mask = BIT(0),
2124         .hw.init = &(struct clk_init_data){
2125             .name = "gcc_ufs_rx_symbol_0_clk",
2126             .ops = &clk_branch2_ops,
2127         },
2128     },
2129 };
2130 
2131 static struct clk_branch gcc_ufs_rx_symbol_1_clk = {
2132     .halt_reg = 0x1d64,
2133     .halt_check = BRANCH_HALT_DELAY,
2134     .clkr = {
2135         .enable_reg = 0x1d64,
2136         .enable_mask = BIT(0),
2137         .hw.init = &(struct clk_init_data){
2138             .name = "gcc_ufs_rx_symbol_1_clk",
2139             .ops = &clk_branch2_ops,
2140         },
2141     },
2142 };
2143 
2144 static struct clk_branch gcc_ufs_tx_cfg_clk = {
2145     .halt_reg = 0x1d50,
2146     .clkr = {
2147         .enable_reg = 0x1d50,
2148         .enable_mask = BIT(0),
2149         .hw.init = &(struct clk_init_data){
2150             .name = "gcc_ufs_tx_cfg_clk",
2151             .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2152             .num_parents = 1,
2153             .flags = CLK_SET_RATE_PARENT,
2154             .ops = &clk_branch2_ops,
2155         },
2156     },
2157 };
2158 
2159 static struct clk_branch gcc_ufs_tx_symbol_0_clk = {
2160     .halt_reg = 0x1d58,
2161     .halt_check = BRANCH_HALT_DELAY,
2162     .clkr = {
2163         .enable_reg = 0x1d58,
2164         .enable_mask = BIT(0),
2165         .hw.init = &(struct clk_init_data){
2166             .name = "gcc_ufs_tx_symbol_0_clk",
2167             .ops = &clk_branch2_ops,
2168         },
2169     },
2170 };
2171 
2172 static struct clk_branch gcc_ufs_tx_symbol_1_clk = {
2173     .halt_reg = 0x1d5c,
2174     .halt_check = BRANCH_HALT_DELAY,
2175     .clkr = {
2176         .enable_reg = 0x1d5c,
2177         .enable_mask = BIT(0),
2178         .hw.init = &(struct clk_init_data){
2179             .name = "gcc_ufs_tx_symbol_1_clk",
2180             .ops = &clk_branch2_ops,
2181         },
2182     },
2183 };
2184 
2185 static struct clk_branch gcc_usb2_hs_phy_sleep_clk = {
2186     .halt_reg = 0x04ac,
2187     .clkr = {
2188         .enable_reg = 0x04ac,
2189         .enable_mask = BIT(0),
2190         .hw.init = &(struct clk_init_data){
2191             .name = "gcc_usb2_hs_phy_sleep_clk",
2192             .parent_data = &(const struct clk_parent_data){
2193                 .fw_name = "sleep",
2194                 .name = "sleep"
2195             },
2196             .num_parents = 1,
2197             .ops = &clk_branch2_ops,
2198         },
2199     },
2200 };
2201 
2202 static struct clk_branch gcc_usb30_master_clk = {
2203     .halt_reg = 0x03c8,
2204     .clkr = {
2205         .enable_reg = 0x03c8,
2206         .enable_mask = BIT(0),
2207         .hw.init = &(struct clk_init_data){
2208             .name = "gcc_usb30_master_clk",
2209             .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2210             .num_parents = 1,
2211             .flags = CLK_SET_RATE_PARENT,
2212             .ops = &clk_branch2_ops,
2213         },
2214     },
2215 };
2216 
2217 static struct clk_branch gcc_usb30_mock_utmi_clk = {
2218     .halt_reg = 0x03d0,
2219     .clkr = {
2220         .enable_reg = 0x03d0,
2221         .enable_mask = BIT(0),
2222         .hw.init = &(struct clk_init_data){
2223             .name = "gcc_usb30_mock_utmi_clk",
2224             .parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw },
2225             .num_parents = 1,
2226             .flags = CLK_SET_RATE_PARENT,
2227             .ops = &clk_branch2_ops,
2228         },
2229     },
2230 };
2231 
2232 static struct clk_branch gcc_usb30_sleep_clk = {
2233     .halt_reg = 0x03cc,
2234     .clkr = {
2235         .enable_reg = 0x03cc,
2236         .enable_mask = BIT(0),
2237         .hw.init = &(struct clk_init_data){
2238             .name = "gcc_usb30_sleep_clk",
2239             .parent_data = &(const struct clk_parent_data){
2240                 .fw_name = "sleep",
2241                 .name = "sleep"
2242             },
2243             .num_parents = 1,
2244             .ops = &clk_branch2_ops,
2245         },
2246     },
2247 };
2248 
2249 static struct clk_branch gcc_usb3_phy_aux_clk = {
2250     .halt_reg = 0x1408,
2251     .clkr = {
2252         .enable_reg = 0x1408,
2253         .enable_mask = BIT(0),
2254         .hw.init = &(struct clk_init_data){
2255             .name = "gcc_usb3_phy_aux_clk",
2256             .parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw },
2257             .num_parents = 1,
2258             .flags = CLK_SET_RATE_PARENT,
2259             .ops = &clk_branch2_ops,
2260         },
2261     },
2262 };
2263 
2264 static struct clk_branch gcc_usb3_phy_pipe_clk = {
2265     .halt_reg = 0x140c,
2266     .halt_check = BRANCH_HALT_SKIP,
2267     .clkr = {
2268         .enable_reg = 0x140c,
2269         .enable_mask = BIT(0),
2270         .hw.init = &(struct clk_init_data){
2271             .name = "gcc_usb3_phy_pipe_clk",
2272             .ops = &clk_branch2_ops,
2273         },
2274     },
2275 };
2276 
2277 static struct clk_branch gcc_usb_hs_ahb_clk = {
2278     .halt_reg = 0x0488,
2279     .clkr = {
2280         .enable_reg = 0x0488,
2281         .enable_mask = BIT(0),
2282         .hw.init = &(struct clk_init_data){
2283             .name = "gcc_usb_hs_ahb_clk",
2284             .ops = &clk_branch2_ops,
2285         },
2286     },
2287 };
2288 
2289 static struct clk_branch gcc_usb_hs_system_clk = {
2290     .halt_reg = 0x0484,
2291     .clkr = {
2292         .enable_reg = 0x0484,
2293         .enable_mask = BIT(0),
2294         .hw.init = &(struct clk_init_data){
2295             .name = "gcc_usb_hs_system_clk",
2296             .parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw },
2297             .num_parents = 1,
2298             .flags = CLK_SET_RATE_PARENT,
2299             .ops = &clk_branch2_ops,
2300         },
2301     },
2302 };
2303 
2304 static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
2305     .halt_reg = 0x1a84,
2306     .clkr = {
2307         .enable_reg = 0x1a84,
2308         .enable_mask = BIT(0),
2309         .hw.init = &(struct clk_init_data){
2310             .name = "gcc_usb_phy_cfg_ahb2phy_clk",
2311             .ops = &clk_branch2_ops,
2312         },
2313     },
2314 };
2315 
2316 static struct clk_branch gpll0_out_mmsscc = {
2317     .halt_check = BRANCH_HALT_DELAY,
2318     .clkr = {
2319         .enable_reg = 0x1484,
2320         .enable_mask = BIT(26),
2321         .hw.init = &(struct clk_init_data){
2322             .name = "gpll0_out_mmsscc",
2323             .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2324             .num_parents = 1,
2325             .ops = &clk_branch2_ops,
2326         },
2327     },
2328 };
2329 
2330 static struct clk_branch gpll0_out_msscc = {
2331     .halt_check = BRANCH_HALT_DELAY,
2332     .clkr = {
2333         .enable_reg = 0x1484,
2334         .enable_mask = BIT(27),
2335         .hw.init = &(struct clk_init_data){
2336             .name = "gpll0_out_msscc",
2337             .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2338             .num_parents = 1,
2339             .ops = &clk_branch2_ops,
2340         },
2341     },
2342 };
2343 
2344 static struct clk_branch pcie_0_phy_ldo = {
2345     .halt_reg = 0x1e00,
2346     .halt_check = BRANCH_HALT_SKIP,
2347     .clkr = {
2348         .enable_reg = 0x1E00,
2349         .enable_mask = BIT(0),
2350         .hw.init = &(struct clk_init_data){
2351             .name = "pcie_0_phy_ldo",
2352             .ops = &clk_branch2_ops,
2353         },
2354     },
2355 };
2356 
2357 static struct clk_branch pcie_1_phy_ldo = {
2358     .halt_reg = 0x1e04,
2359     .halt_check = BRANCH_HALT_SKIP,
2360     .clkr = {
2361         .enable_reg = 0x1E04,
2362         .enable_mask = BIT(0),
2363         .hw.init = &(struct clk_init_data){
2364             .name = "pcie_1_phy_ldo",
2365             .ops = &clk_branch2_ops,
2366         },
2367     },
2368 };
2369 
2370 static struct clk_branch ufs_phy_ldo = {
2371     .halt_reg = 0x1e0c,
2372     .halt_check = BRANCH_HALT_SKIP,
2373     .clkr = {
2374         .enable_reg = 0x1E0C,
2375         .enable_mask = BIT(0),
2376         .hw.init = &(struct clk_init_data){
2377             .name = "ufs_phy_ldo",
2378             .ops = &clk_branch2_ops,
2379         },
2380     },
2381 };
2382 
2383 static struct clk_branch usb_ss_phy_ldo = {
2384     .halt_reg = 0x1e08,
2385     .halt_check = BRANCH_HALT_SKIP,
2386     .clkr = {
2387         .enable_reg = 0x1E08,
2388         .enable_mask = BIT(0),
2389         .hw.init = &(struct clk_init_data){
2390             .name = "usb_ss_phy_ldo",
2391             .ops = &clk_branch2_ops,
2392         },
2393     },
2394 };
2395 
2396 static struct clk_branch gcc_boot_rom_ahb_clk = {
2397     .halt_reg = 0x0e04,
2398     .halt_check = BRANCH_HALT_VOTED,
2399     .hwcg_reg = 0x0e04,
2400     .hwcg_bit = 1,
2401     .clkr = {
2402         .enable_reg = 0x1484,
2403         .enable_mask = BIT(10),
2404         .hw.init = &(struct clk_init_data){
2405             .name = "gcc_boot_rom_ahb_clk",
2406             .ops = &clk_branch2_ops,
2407         },
2408     },
2409 };
2410 
2411 static struct clk_branch gcc_prng_ahb_clk = {
2412     .halt_reg = 0x0d04,
2413     .halt_check = BRANCH_HALT_VOTED,
2414     .clkr = {
2415         .enable_reg = 0x1484,
2416         .enable_mask = BIT(13),
2417         .hw.init = &(struct clk_init_data){
2418             .name = "gcc_prng_ahb_clk",
2419             .ops = &clk_branch2_ops,
2420         },
2421     },
2422 };
2423 
2424 static struct gdsc pcie_0_gdsc = {
2425         .gdscr = 0x1ac4,
2426         .pd = {
2427             .name = "pcie_0",
2428         },
2429         .pwrsts = PWRSTS_OFF_ON,
2430 };
2431 
2432 static struct gdsc pcie_1_gdsc = {
2433         .gdscr = 0x1b44,
2434         .pd = {
2435             .name = "pcie_1",
2436         },
2437         .pwrsts = PWRSTS_OFF_ON,
2438 };
2439 
2440 static struct gdsc usb30_gdsc = {
2441         .gdscr = 0x3c4,
2442         .pd = {
2443             .name = "usb30",
2444         },
2445         .pwrsts = PWRSTS_OFF_ON,
2446 };
2447 
2448 static struct gdsc ufs_gdsc = {
2449         .gdscr = 0x1d44,
2450         .pd = {
2451             .name = "ufs",
2452         },
2453         .pwrsts = PWRSTS_OFF_ON,
2454 };
2455 
2456 static struct clk_regmap *gcc_msm8994_clocks[] = {
2457     [GPLL0_EARLY] = &gpll0_early.clkr,
2458     [GPLL0] = &gpll0.clkr,
2459     [GPLL4_EARLY] = &gpll4_early.clkr,
2460     [GPLL4] = &gpll4.clkr,
2461     [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2462     [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2463     [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2464     [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2465     [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2466     [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2467     [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2468     [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2469     [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2470     [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2471     [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
2472     [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
2473     [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
2474     [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
2475     [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2476     [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2477     [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
2478     [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
2479     [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
2480     [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
2481     [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
2482     [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
2483     [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
2484     [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
2485     [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
2486     [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
2487     [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
2488     [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
2489     [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
2490     [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
2491     [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
2492     [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
2493     [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
2494     [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
2495     [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
2496     [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
2497     [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
2498     [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
2499     [GP1_CLK_SRC] = &gp1_clk_src.clkr,
2500     [GP2_CLK_SRC] = &gp2_clk_src.clkr,
2501     [GP3_CLK_SRC] = &gp3_clk_src.clkr,
2502     [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
2503     [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
2504     [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
2505     [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
2506     [PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2507     [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2508     [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2509     [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
2510     [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
2511     [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
2512     [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2513     [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2514     [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
2515     [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2516     [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2517     [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2518     [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2519     [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2520     [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2521     [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2522     [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2523     [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2524     [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
2525     [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
2526     [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
2527     [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
2528     [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2529     [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2530     [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
2531     [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
2532     [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
2533     [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
2534     [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2535     [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
2536     [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
2537     [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
2538     [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
2539     [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
2540     [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
2541     [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
2542     [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
2543     [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
2544     [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
2545     [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
2546     [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
2547     [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
2548     [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
2549     [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
2550     [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
2551     [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
2552     [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
2553     [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2554     [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2555     [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
2556     [GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr,
2557     [GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr,
2558     [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
2559     [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
2560     [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
2561     [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
2562     [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
2563     [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
2564     [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
2565     [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
2566     [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
2567     [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
2568     [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
2569     [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
2570     [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
2571     [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
2572     [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
2573     [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
2574     [GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr,
2575     [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
2576     [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
2577     [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
2578     [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
2579     [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
2580     [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
2581     [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
2582     [GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr,
2583     [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
2584     [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
2585     [GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr,
2586     [GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr,
2587     [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
2588     [GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr,
2589     [GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr,
2590     [GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr,
2591     [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2592     [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
2593     [GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
2594     [GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
2595     [GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr,
2596     [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr,
2597     [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
2598     [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
2599     [GPLL0_OUT_MMSSCC] = &gpll0_out_mmsscc.clkr,
2600     [GPLL0_OUT_MSSCC] = &gpll0_out_msscc.clkr,
2601     [PCIE_0_PHY_LDO] = &pcie_0_phy_ldo.clkr,
2602     [PCIE_1_PHY_LDO] = &pcie_1_phy_ldo.clkr,
2603     [UFS_PHY_LDO] = &ufs_phy_ldo.clkr,
2604     [USB_SS_PHY_LDO] = &usb_ss_phy_ldo.clkr,
2605     [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
2606     [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
2607 
2608     /*
2609      * The following clocks should NOT be managed by this driver, but they once were
2610      * mistakengly added. Now they are only here to indicate that they are not defined
2611      * on purpose, even though the names will stay in the header file (for ABI sanity).
2612      */
2613     [CONFIG_NOC_CLK_SRC] = NULL,
2614     [PERIPH_NOC_CLK_SRC] = NULL,
2615     [SYSTEM_NOC_CLK_SRC] = NULL,
2616 };
2617 
2618 static struct gdsc *gcc_msm8994_gdscs[] = {
2619     /* This GDSC does not exist, but ABI has to remain intact */
2620     [PCIE_GDSC] = NULL,
2621     [PCIE_0_GDSC] = &pcie_0_gdsc,
2622     [PCIE_1_GDSC] = &pcie_1_gdsc,
2623     [USB30_GDSC] = &usb30_gdsc,
2624     [UFS_GDSC] = &ufs_gdsc,
2625 };
2626 
2627 static const struct qcom_reset_map gcc_msm8994_resets[] = {
2628     [USB3_PHY_RESET] = { 0x1400 },
2629     [USB3PHY_PHY_RESET] = { 0x1404 },
2630     [MSS_RESET] = { 0x1680 },
2631     [PCIE_PHY_0_RESET] = { 0x1b18 },
2632     [PCIE_PHY_1_RESET] = { 0x1b98 },
2633     [QUSB2_PHY_RESET] = { 0x04b8 },
2634 };
2635 
2636 static const struct regmap_config gcc_msm8994_regmap_config = {
2637     .reg_bits   = 32,
2638     .reg_stride = 4,
2639     .val_bits   = 32,
2640     .max_register   = 0x2000,
2641     .fast_io    = true,
2642 };
2643 
2644 static const struct qcom_cc_desc gcc_msm8994_desc = {
2645     .config = &gcc_msm8994_regmap_config,
2646     .clks = gcc_msm8994_clocks,
2647     .num_clks = ARRAY_SIZE(gcc_msm8994_clocks),
2648     .resets = gcc_msm8994_resets,
2649     .num_resets = ARRAY_SIZE(gcc_msm8994_resets),
2650     .gdscs = gcc_msm8994_gdscs,
2651     .num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs),
2652 };
2653 
2654 static const struct of_device_id gcc_msm8994_match_table[] = {
2655     { .compatible = "qcom,gcc-msm8992" },
2656     { .compatible = "qcom,gcc-msm8994" }, /* V2 and V2.1 */
2657     {}
2658 };
2659 MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table);
2660 
2661 static int gcc_msm8994_probe(struct platform_device *pdev)
2662 {
2663     if (of_device_is_compatible(pdev->dev.of_node, "qcom,gcc-msm8992")) {
2664         /* MSM8992 features less clocks and some have different freq tables */
2665         gcc_msm8994_desc.clks[UFS_AXI_CLK_SRC] = NULL;
2666         gcc_msm8994_desc.clks[GCC_LPASS_Q6_AXI_CLK] = NULL;
2667         gcc_msm8994_desc.clks[UFS_PHY_LDO] = NULL;
2668         gcc_msm8994_desc.clks[GCC_UFS_AHB_CLK] = NULL;
2669         gcc_msm8994_desc.clks[GCC_UFS_AXI_CLK] = NULL;
2670         gcc_msm8994_desc.clks[GCC_UFS_RX_CFG_CLK] = NULL;
2671         gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_0_CLK] = NULL;
2672         gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_1_CLK] = NULL;
2673         gcc_msm8994_desc.clks[GCC_UFS_TX_CFG_CLK] = NULL;
2674         gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_0_CLK] = NULL;
2675         gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_1_CLK] = NULL;
2676 
2677         sdcc1_apps_clk_src.freq_tbl = ftbl_sdcc1_apps_clk_src_8992;
2678         blsp1_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2679         blsp1_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2680         blsp1_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2681         blsp1_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2682         blsp1_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2683         blsp1_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2684         blsp2_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2685         blsp2_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2686         blsp2_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2687         blsp2_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2688         blsp2_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2689         blsp2_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2690 
2691         /*
2692          * Some 8992 boards might *possibly* use
2693          * PCIe1 clocks and controller, but it's not
2694          * standard and they should be disabled otherwise.
2695          */
2696         gcc_msm8994_desc.clks[PCIE_1_AUX_CLK_SRC] = NULL;
2697         gcc_msm8994_desc.clks[PCIE_1_PIPE_CLK_SRC] = NULL;
2698         gcc_msm8994_desc.clks[PCIE_1_PHY_LDO] = NULL;
2699         gcc_msm8994_desc.clks[GCC_PCIE_1_AUX_CLK] = NULL;
2700         gcc_msm8994_desc.clks[GCC_PCIE_1_CFG_AHB_CLK] = NULL;
2701         gcc_msm8994_desc.clks[GCC_PCIE_1_MSTR_AXI_CLK] = NULL;
2702         gcc_msm8994_desc.clks[GCC_PCIE_1_PIPE_CLK] = NULL;
2703         gcc_msm8994_desc.clks[GCC_PCIE_1_SLV_AXI_CLK] = NULL;
2704         gcc_msm8994_desc.clks[GCC_SYS_NOC_UFS_AXI_CLK] = NULL;
2705     }
2706 
2707     return qcom_cc_probe(pdev, &gcc_msm8994_desc);
2708 }
2709 
2710 static struct platform_driver gcc_msm8994_driver = {
2711     .probe      = gcc_msm8994_probe,
2712     .driver     = {
2713         .name   = "gcc-msm8994",
2714         .of_match_table = gcc_msm8994_match_table,
2715     },
2716 };
2717 
2718 static int __init gcc_msm8994_init(void)
2719 {
2720     return platform_driver_register(&gcc_msm8994_driver);
2721 }
2722 core_initcall(gcc_msm8994_init);
2723 
2724 static void __exit gcc_msm8994_exit(void)
2725 {
2726     platform_driver_unregister(&gcc_msm8994_driver);
2727 }
2728 module_exit(gcc_msm8994_exit);
2729 
2730 MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver");
2731 MODULE_LICENSE("GPL v2");
2732 MODULE_ALIAS("platform:gcc-msm8994");