root/drivers/clk/qcom/gcc-msm8994.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. gcc_msm8994_probe
  2. gcc_msm8994_init
  3. gcc_msm8994_exit

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
   3  */
   4 
   5 #include <linux/kernel.h>
   6 #include <linux/init.h>
   7 #include <linux/err.h>
   8 #include <linux/ctype.h>
   9 #include <linux/io.h>
  10 #include <linux/of.h>
  11 #include <linux/platform_device.h>
  12 #include <linux/module.h>
  13 #include <linux/regmap.h>
  14 
  15 #include <dt-bindings/clock/qcom,gcc-msm8994.h>
  16 
  17 #include "common.h"
  18 #include "clk-regmap.h"
  19 #include "clk-alpha-pll.h"
  20 #include "clk-rcg.h"
  21 #include "clk-branch.h"
  22 #include "reset.h"
  23 
  24 enum {
  25         P_XO,
  26         P_GPLL0,
  27         P_GPLL4,
  28 };
  29 
  30 static const struct parent_map gcc_xo_gpll0_map[] = {
  31         { P_XO, 0 },
  32         { P_GPLL0, 1 },
  33 };
  34 
  35 static const char * const gcc_xo_gpll0[] = {
  36         "xo",
  37         "gpll0",
  38 };
  39 
  40 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
  41         { P_XO, 0 },
  42         { P_GPLL0, 1 },
  43         { P_GPLL4, 5 },
  44 };
  45 
  46 static const char * const gcc_xo_gpll0_gpll4[] = {
  47         "xo",
  48         "gpll0",
  49         "gpll4",
  50 };
  51 
  52 static struct clk_fixed_factor xo = {
  53         .mult = 1,
  54         .div = 1,
  55         .hw.init = &(struct clk_init_data)
  56         {
  57                 .name = "xo",
  58                 .parent_names = (const char *[]) { "xo_board" },
  59                 .num_parents = 1,
  60                 .ops = &clk_fixed_factor_ops,
  61         },
  62 };
  63 
  64 static struct clk_alpha_pll gpll0_early = {
  65         .offset = 0x00000,
  66         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
  67         .clkr = {
  68                 .enable_reg = 0x1480,
  69                 .enable_mask = BIT(0),
  70                 .hw.init = &(struct clk_init_data)
  71                 {
  72                         .name = "gpll0_early",
  73                         .parent_names = (const char *[]) { "xo" },
  74                         .num_parents = 1,
  75                         .ops = &clk_alpha_pll_ops,
  76                 },
  77         },
  78 };
  79 
  80 static struct clk_alpha_pll_postdiv gpll0 = {
  81         .offset = 0x00000,
  82         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
  83         .clkr.hw.init = &(struct clk_init_data)
  84         {
  85                 .name = "gpll0",
  86                 .parent_names = (const char *[]) { "gpll0_early" },
  87                 .num_parents = 1,
  88                 .ops = &clk_alpha_pll_postdiv_ops,
  89         },
  90 };
  91 
  92 static struct clk_alpha_pll gpll4_early = {
  93         .offset = 0x1dc0,
  94         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
  95         .clkr = {
  96                 .enable_reg = 0x1480,
  97                 .enable_mask = BIT(4),
  98                 .hw.init = &(struct clk_init_data)
  99                 {
 100                         .name = "gpll4_early",
 101                         .parent_names = (const char *[]) { "xo" },
 102                         .num_parents = 1,
 103                         .ops = &clk_alpha_pll_ops,
 104                 },
 105         },
 106 };
 107 
 108 static struct clk_alpha_pll_postdiv gpll4 = {
 109         .offset = 0x1dc0,
 110         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
 111         .clkr.hw.init = &(struct clk_init_data)
 112         {
 113                 .name = "gpll4",
 114                 .parent_names = (const char *[]) { "gpll4_early" },
 115                 .num_parents = 1,
 116                 .ops = &clk_alpha_pll_postdiv_ops,
 117         },
 118 };
 119 
 120 static struct freq_tbl ftbl_ufs_axi_clk_src[] = {
 121         F(50000000, P_GPLL0, 12, 0, 0),
 122         F(100000000, P_GPLL0, 6, 0, 0),
 123         F(150000000, P_GPLL0, 4, 0, 0),
 124         F(171430000, P_GPLL0, 3.5, 0, 0),
 125         F(200000000, P_GPLL0, 3, 0, 0),
 126         F(240000000, P_GPLL0, 2.5, 0, 0),
 127         { }
 128 };
 129 
 130 static struct clk_rcg2 ufs_axi_clk_src = {
 131         .cmd_rcgr = 0x1d68,
 132         .mnd_width = 8,
 133         .hid_width = 5,
 134         .parent_map = gcc_xo_gpll0_map,
 135         .freq_tbl = ftbl_ufs_axi_clk_src,
 136         .clkr.hw.init = &(struct clk_init_data)
 137         {
 138                 .name = "ufs_axi_clk_src",
 139                 .parent_names = gcc_xo_gpll0,
 140                 .num_parents = 2,
 141                 .ops = &clk_rcg2_ops,
 142         },
 143 };
 144 
 145 static struct freq_tbl ftbl_usb30_master_clk_src[] = {
 146         F(19200000, P_XO, 1, 0, 0),
 147         F(125000000, P_GPLL0, 1, 5, 24),
 148         { }
 149 };
 150 
 151 static struct clk_rcg2 usb30_master_clk_src = {
 152         .cmd_rcgr = 0x03d4,
 153         .mnd_width = 8,
 154         .hid_width = 5,
 155         .parent_map = gcc_xo_gpll0_map,
 156         .freq_tbl = ftbl_usb30_master_clk_src,
 157         .clkr.hw.init = &(struct clk_init_data)
 158         {
 159                 .name = "usb30_master_clk_src",
 160                 .parent_names = gcc_xo_gpll0,
 161                 .num_parents = 2,
 162                 .ops = &clk_rcg2_ops,
 163         },
 164 };
 165 
 166 static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = {
 167         F(19200000, P_XO, 1, 0, 0),
 168         F(50000000, P_GPLL0, 12, 0, 0),
 169         { }
 170 };
 171 
 172 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
 173         .cmd_rcgr = 0x0660,
 174         .hid_width = 5,
 175         .parent_map = gcc_xo_gpll0_map,
 176         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
 177         .clkr.hw.init = &(struct clk_init_data)
 178         {
 179                 .name = "blsp1_qup1_i2c_apps_clk_src",
 180                 .parent_names = gcc_xo_gpll0,
 181                 .num_parents = 2,
 182                 .ops = &clk_rcg2_ops,
 183         },
 184 };
 185 
 186 static struct freq_tbl ftbl_blspqup_spi_apps_clk_src[] = {
 187         F(960000, P_XO, 10, 1, 2),
 188         F(4800000, P_XO, 4, 0, 0),
 189         F(9600000, P_XO, 2, 0, 0),
 190         F(15000000, P_GPLL0, 10, 1, 4),
 191         F(19200000, P_XO, 1, 0, 0),
 192         F(24000000, P_GPLL0, 12.5, 1, 2),
 193         F(25000000, P_GPLL0, 12, 1, 2),
 194         F(48000000, P_GPLL0, 12.5, 0, 0),
 195         F(50000000, P_GPLL0, 12, 0, 0),
 196         { }
 197 };
 198 
 199 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
 200         .cmd_rcgr = 0x064c,
 201         .mnd_width = 8,
 202         .hid_width = 5,
 203         .parent_map = gcc_xo_gpll0_map,
 204         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
 205         .clkr.hw.init = &(struct clk_init_data)
 206         {
 207                 .name = "blsp1_qup1_spi_apps_clk_src",
 208                 .parent_names = gcc_xo_gpll0,
 209                 .num_parents = 2,
 210                 .ops = &clk_rcg2_ops,
 211         },
 212 };
 213 
 214 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
 215         .cmd_rcgr = 0x06e0,
 216         .hid_width = 5,
 217         .parent_map = gcc_xo_gpll0_map,
 218         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
 219         .clkr.hw.init = &(struct clk_init_data)
 220         {
 221                 .name = "blsp1_qup2_i2c_apps_clk_src",
 222                 .parent_names = gcc_xo_gpll0,
 223                 .num_parents = 2,
 224                 .ops = &clk_rcg2_ops,
 225         },
 226 };
 227 
 228 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
 229         .cmd_rcgr = 0x06cc,
 230         .mnd_width = 8,
 231         .hid_width = 5,
 232         .parent_map = gcc_xo_gpll0_map,
 233         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
 234         .clkr.hw.init = &(struct clk_init_data)
 235         {
 236                 .name = "blsp1_qup2_spi_apps_clk_src",
 237                 .parent_names = gcc_xo_gpll0,
 238                 .num_parents = 2,
 239                 .ops = &clk_rcg2_ops,
 240         },
 241 };
 242 
 243 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
 244         .cmd_rcgr = 0x0760,
 245         .hid_width = 5,
 246         .parent_map = gcc_xo_gpll0_map,
 247         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
 248         .clkr.hw.init = &(struct clk_init_data)
 249         {
 250                 .name = "blsp1_qup3_i2c_apps_clk_src",
 251                 .parent_names = gcc_xo_gpll0,
 252                 .num_parents = 2,
 253                 .ops = &clk_rcg2_ops,
 254         },
 255 };
 256 
 257 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
 258         .cmd_rcgr = 0x074c,
 259         .mnd_width = 8,
 260         .hid_width = 5,
 261         .parent_map = gcc_xo_gpll0_map,
 262         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
 263         .clkr.hw.init = &(struct clk_init_data)
 264         {
 265                 .name = "blsp1_qup3_spi_apps_clk_src",
 266                 .parent_names = gcc_xo_gpll0,
 267                 .num_parents = 2,
 268                 .ops = &clk_rcg2_ops,
 269         },
 270 };
 271 
 272 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
 273         .cmd_rcgr = 0x07e0,
 274         .hid_width = 5,
 275         .parent_map = gcc_xo_gpll0_map,
 276         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
 277         .clkr.hw.init = &(struct clk_init_data)
 278         {
 279                 .name = "blsp1_qup4_i2c_apps_clk_src",
 280                 .parent_names = gcc_xo_gpll0,
 281                 .num_parents = 2,
 282                 .ops = &clk_rcg2_ops,
 283         },
 284 };
 285 
 286 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
 287         .cmd_rcgr = 0x07cc,
 288         .mnd_width = 8,
 289         .hid_width = 5,
 290         .parent_map = gcc_xo_gpll0_map,
 291         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
 292         .clkr.hw.init = &(struct clk_init_data)
 293         {
 294                 .name = "blsp1_qup4_spi_apps_clk_src",
 295                 .parent_names = gcc_xo_gpll0,
 296                 .num_parents = 2,
 297                 .ops = &clk_rcg2_ops,
 298         },
 299 };
 300 
 301 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
 302         .cmd_rcgr = 0x0860,
 303         .hid_width = 5,
 304         .parent_map = gcc_xo_gpll0_map,
 305         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
 306         .clkr.hw.init = &(struct clk_init_data)
 307         {
 308                 .name = "blsp1_qup5_i2c_apps_clk_src",
 309                 .parent_names = gcc_xo_gpll0,
 310                 .num_parents = 2,
 311                 .ops = &clk_rcg2_ops,
 312         },
 313 };
 314 
 315 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
 316         .cmd_rcgr = 0x084c,
 317         .mnd_width = 8,
 318         .hid_width = 5,
 319         .parent_map = gcc_xo_gpll0_map,
 320         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
 321         .clkr.hw.init = &(struct clk_init_data)
 322         {
 323                 .name = "blsp1_qup5_spi_apps_clk_src",
 324                 .parent_names = gcc_xo_gpll0,
 325                 .num_parents = 2,
 326                 .ops = &clk_rcg2_ops,
 327         },
 328 };
 329 
 330 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
 331         .cmd_rcgr = 0x08e0,
 332         .hid_width = 5,
 333         .parent_map = gcc_xo_gpll0_map,
 334         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
 335         .clkr.hw.init = &(struct clk_init_data)
 336         {
 337                 .name = "blsp1_qup6_i2c_apps_clk_src",
 338                 .parent_names = gcc_xo_gpll0,
 339                 .num_parents = 2,
 340                 .ops = &clk_rcg2_ops,
 341         },
 342 };
 343 
 344 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
 345         .cmd_rcgr = 0x08cc,
 346         .mnd_width = 8,
 347         .hid_width = 5,
 348         .parent_map = gcc_xo_gpll0_map,
 349         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
 350         .clkr.hw.init = &(struct clk_init_data)
 351         {
 352                 .name = "blsp1_qup6_spi_apps_clk_src",
 353                 .parent_names = gcc_xo_gpll0,
 354                 .num_parents = 2,
 355                 .ops = &clk_rcg2_ops,
 356         },
 357 };
 358 
 359 static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = {
 360         F(3686400, P_GPLL0, 1, 96, 15625),
 361         F(7372800, P_GPLL0, 1, 192, 15625),
 362         F(14745600, P_GPLL0, 1, 384, 15625),
 363         F(16000000, P_GPLL0, 5, 2, 15),
 364         F(19200000, P_XO, 1, 0, 0),
 365         F(24000000, P_GPLL0, 5, 1, 5),
 366         F(32000000, P_GPLL0, 1, 4, 75),
 367         F(40000000, P_GPLL0, 15, 0, 0),
 368         F(46400000, P_GPLL0, 1, 29, 375),
 369         F(48000000, P_GPLL0, 12.5, 0, 0),
 370         F(51200000, P_GPLL0, 1, 32, 375),
 371         F(56000000, P_GPLL0, 1, 7, 75),
 372         F(58982400, P_GPLL0, 1, 1536, 15625),
 373         F(60000000, P_GPLL0, 10, 0, 0),
 374         F(63160000, P_GPLL0, 9.5, 0, 0),
 375         { }
 376 };
 377 
 378 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
 379         .cmd_rcgr = 0x068c,
 380         .mnd_width = 16,
 381         .hid_width = 5,
 382         .parent_map = gcc_xo_gpll0_map,
 383         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
 384         .clkr.hw.init = &(struct clk_init_data)
 385         {
 386                 .name = "blsp1_uart1_apps_clk_src",
 387                 .parent_names = gcc_xo_gpll0,
 388                 .num_parents = 2,
 389                 .ops = &clk_rcg2_ops,
 390         },
 391 };
 392 
 393 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
 394         .cmd_rcgr = 0x070c,
 395         .mnd_width = 16,
 396         .hid_width = 5,
 397         .parent_map = gcc_xo_gpll0_map,
 398         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
 399         .clkr.hw.init = &(struct clk_init_data)
 400         {
 401                 .name = "blsp1_uart2_apps_clk_src",
 402                 .parent_names = gcc_xo_gpll0,
 403                 .num_parents = 2,
 404                 .ops = &clk_rcg2_ops,
 405         },
 406 };
 407 
 408 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
 409         .cmd_rcgr = 0x078c,
 410         .mnd_width = 16,
 411         .hid_width = 5,
 412         .parent_map = gcc_xo_gpll0_map,
 413         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
 414         .clkr.hw.init = &(struct clk_init_data)
 415         {
 416                 .name = "blsp1_uart3_apps_clk_src",
 417                 .parent_names = gcc_xo_gpll0,
 418                 .num_parents = 2,
 419                 .ops = &clk_rcg2_ops,
 420         },
 421 };
 422 
 423 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
 424         .cmd_rcgr = 0x080c,
 425         .mnd_width = 16,
 426         .hid_width = 5,
 427         .parent_map = gcc_xo_gpll0_map,
 428         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
 429         .clkr.hw.init = &(struct clk_init_data)
 430         {
 431                 .name = "blsp1_uart4_apps_clk_src",
 432                 .parent_names = gcc_xo_gpll0,
 433                 .num_parents = 2,
 434                 .ops = &clk_rcg2_ops,
 435         },
 436 };
 437 
 438 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
 439         .cmd_rcgr = 0x088c,
 440         .mnd_width = 16,
 441         .hid_width = 5,
 442         .parent_map = gcc_xo_gpll0_map,
 443         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
 444         .clkr.hw.init = &(struct clk_init_data)
 445         {
 446                 .name = "blsp1_uart5_apps_clk_src",
 447                 .parent_names = gcc_xo_gpll0,
 448                 .num_parents = 2,
 449                 .ops = &clk_rcg2_ops,
 450         },
 451 };
 452 
 453 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
 454         .cmd_rcgr = 0x090c,
 455         .mnd_width = 16,
 456         .hid_width = 5,
 457         .parent_map = gcc_xo_gpll0_map,
 458         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
 459         .clkr.hw.init = &(struct clk_init_data)
 460         {
 461                 .name = "blsp1_uart6_apps_clk_src",
 462                 .parent_names = gcc_xo_gpll0,
 463                 .num_parents = 2,
 464                 .ops = &clk_rcg2_ops,
 465         },
 466 };
 467 
 468 static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
 469         .cmd_rcgr = 0x09a0,
 470         .hid_width = 5,
 471         .parent_map = gcc_xo_gpll0_map,
 472         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
 473         .clkr.hw.init = &(struct clk_init_data)
 474         {
 475                 .name = "blsp2_qup1_i2c_apps_clk_src",
 476                 .parent_names = gcc_xo_gpll0,
 477                 .num_parents = 2,
 478                 .ops = &clk_rcg2_ops,
 479         },
 480 };
 481 
 482 static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
 483         .cmd_rcgr = 0x098c,
 484         .mnd_width = 8,
 485         .hid_width = 5,
 486         .parent_map = gcc_xo_gpll0_map,
 487         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
 488         .clkr.hw.init = &(struct clk_init_data)
 489         {
 490                 .name = "blsp2_qup1_spi_apps_clk_src",
 491                 .parent_names = gcc_xo_gpll0,
 492                 .num_parents = 2,
 493                 .ops = &clk_rcg2_ops,
 494         },
 495 };
 496 
 497 static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
 498         .cmd_rcgr = 0x0a20,
 499         .hid_width = 5,
 500         .parent_map = gcc_xo_gpll0_map,
 501         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
 502         .clkr.hw.init = &(struct clk_init_data)
 503         {
 504                 .name = "blsp2_qup2_i2c_apps_clk_src",
 505                 .parent_names = gcc_xo_gpll0,
 506                 .num_parents = 2,
 507                 .ops = &clk_rcg2_ops,
 508         },
 509 };
 510 
 511 static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
 512         .cmd_rcgr = 0x0a0c,
 513         .mnd_width = 8,
 514         .hid_width = 5,
 515         .parent_map = gcc_xo_gpll0_map,
 516         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
 517         .clkr.hw.init = &(struct clk_init_data)
 518         {
 519                 .name = "blsp2_qup2_spi_apps_clk_src",
 520                 .parent_names = gcc_xo_gpll0,
 521                 .num_parents = 2,
 522                 .ops = &clk_rcg2_ops,
 523         },
 524 };
 525 
 526 static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
 527         .cmd_rcgr = 0x0aa0,
 528         .hid_width = 5,
 529         .parent_map = gcc_xo_gpll0_map,
 530         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
 531         .clkr.hw.init = &(struct clk_init_data)
 532         {
 533                 .name = "blsp2_qup3_i2c_apps_clk_src",
 534                 .parent_names = gcc_xo_gpll0,
 535                 .num_parents = 2,
 536                 .ops = &clk_rcg2_ops,
 537         },
 538 };
 539 
 540 static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
 541         .cmd_rcgr = 0x0a8c,
 542         .mnd_width = 8,
 543         .hid_width = 5,
 544         .parent_map = gcc_xo_gpll0_map,
 545         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
 546         .clkr.hw.init = &(struct clk_init_data)
 547         {
 548                 .name = "blsp2_qup3_spi_apps_clk_src",
 549                 .parent_names = gcc_xo_gpll0,
 550                 .num_parents = 2,
 551                 .ops = &clk_rcg2_ops,
 552         },
 553 };
 554 
 555 static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
 556         .cmd_rcgr = 0x0b20,
 557         .hid_width = 5,
 558         .parent_map = gcc_xo_gpll0_map,
 559         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
 560         .clkr.hw.init = &(struct clk_init_data)
 561         {
 562                 .name = "blsp2_qup4_i2c_apps_clk_src",
 563                 .parent_names = gcc_xo_gpll0,
 564                 .num_parents = 2,
 565                 .ops = &clk_rcg2_ops,
 566         },
 567 };
 568 
 569 static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
 570         .cmd_rcgr = 0x0b0c,
 571         .mnd_width = 8,
 572         .hid_width = 5,
 573         .parent_map = gcc_xo_gpll0_map,
 574         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
 575         .clkr.hw.init = &(struct clk_init_data)
 576         {
 577                 .name = "blsp2_qup4_spi_apps_clk_src",
 578                 .parent_names = gcc_xo_gpll0,
 579                 .num_parents = 2,
 580                 .ops = &clk_rcg2_ops,
 581         },
 582 };
 583 
 584 static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
 585         .cmd_rcgr = 0x0ba0,
 586         .hid_width = 5,
 587         .parent_map = gcc_xo_gpll0_map,
 588         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
 589         .clkr.hw.init = &(struct clk_init_data)
 590         {
 591                 .name = "blsp2_qup5_i2c_apps_clk_src",
 592                 .parent_names = gcc_xo_gpll0,
 593                 .num_parents = 2,
 594                 .ops = &clk_rcg2_ops,
 595         },
 596 };
 597 
 598 static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
 599         .cmd_rcgr = 0x0b8c,
 600         .mnd_width = 8,
 601         .hid_width = 5,
 602         .parent_map = gcc_xo_gpll0_map,
 603         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
 604         .clkr.hw.init = &(struct clk_init_data)
 605         {
 606                 .name = "blsp2_qup5_spi_apps_clk_src",
 607                 .parent_names = gcc_xo_gpll0,
 608                 .num_parents = 2,
 609                 .ops = &clk_rcg2_ops,
 610         },
 611 };
 612 
 613 static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
 614         .cmd_rcgr = 0x0c20,
 615         .hid_width = 5,
 616         .parent_map = gcc_xo_gpll0_map,
 617         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
 618         .clkr.hw.init = &(struct clk_init_data)
 619         {
 620                 .name = "blsp2_qup6_i2c_apps_clk_src",
 621                 .parent_names = gcc_xo_gpll0,
 622                 .num_parents = 2,
 623                 .ops = &clk_rcg2_ops,
 624         },
 625 };
 626 
 627 static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
 628         .cmd_rcgr = 0x0c0c,
 629         .mnd_width = 8,
 630         .hid_width = 5,
 631         .parent_map = gcc_xo_gpll0_map,
 632         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
 633         .clkr.hw.init = &(struct clk_init_data)
 634         {
 635                 .name = "blsp2_qup6_spi_apps_clk_src",
 636                 .parent_names = gcc_xo_gpll0,
 637                 .num_parents = 2,
 638                 .ops = &clk_rcg2_ops,
 639         },
 640 };
 641 
 642 static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
 643         .cmd_rcgr = 0x09cc,
 644         .mnd_width = 16,
 645         .hid_width = 5,
 646         .parent_map = gcc_xo_gpll0_map,
 647         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
 648         .clkr.hw.init = &(struct clk_init_data)
 649         {
 650                 .name = "blsp2_uart1_apps_clk_src",
 651                 .parent_names = gcc_xo_gpll0,
 652                 .num_parents = 2,
 653                 .ops = &clk_rcg2_ops,
 654         },
 655 };
 656 
 657 static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
 658         .cmd_rcgr = 0x0a4c,
 659         .mnd_width = 16,
 660         .hid_width = 5,
 661         .parent_map = gcc_xo_gpll0_map,
 662         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
 663         .clkr.hw.init = &(struct clk_init_data)
 664         {
 665                 .name = "blsp2_uart2_apps_clk_src",
 666                 .parent_names = gcc_xo_gpll0,
 667                 .num_parents = 2,
 668                 .ops = &clk_rcg2_ops,
 669         },
 670 };
 671 
 672 static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
 673         .cmd_rcgr = 0x0acc,
 674         .mnd_width = 16,
 675         .hid_width = 5,
 676         .parent_map = gcc_xo_gpll0_map,
 677         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
 678         .clkr.hw.init = &(struct clk_init_data)
 679         {
 680                 .name = "blsp2_uart3_apps_clk_src",
 681                 .parent_names = gcc_xo_gpll0,
 682                 .num_parents = 2,
 683                 .ops = &clk_rcg2_ops,
 684         },
 685 };
 686 
 687 static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
 688         .cmd_rcgr = 0x0b4c,
 689         .mnd_width = 16,
 690         .hid_width = 5,
 691         .parent_map = gcc_xo_gpll0_map,
 692         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
 693         .clkr.hw.init = &(struct clk_init_data)
 694         {
 695                 .name = "blsp2_uart4_apps_clk_src",
 696                 .parent_names = gcc_xo_gpll0,
 697                 .num_parents = 2,
 698                 .ops = &clk_rcg2_ops,
 699         },
 700 };
 701 
 702 static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
 703         .cmd_rcgr = 0x0bcc,
 704         .mnd_width = 16,
 705         .hid_width = 5,
 706         .parent_map = gcc_xo_gpll0_map,
 707         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
 708         .clkr.hw.init = &(struct clk_init_data)
 709         {
 710                 .name = "blsp2_uart5_apps_clk_src",
 711                 .parent_names = gcc_xo_gpll0,
 712                 .num_parents = 2,
 713                 .ops = &clk_rcg2_ops,
 714         },
 715 };
 716 
 717 static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
 718         .cmd_rcgr = 0x0c4c,
 719         .mnd_width = 16,
 720         .hid_width = 5,
 721         .parent_map = gcc_xo_gpll0_map,
 722         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
 723         .clkr.hw.init = &(struct clk_init_data)
 724         {
 725                 .name = "blsp2_uart6_apps_clk_src",
 726                 .parent_names = gcc_xo_gpll0,
 727                 .num_parents = 2,
 728                 .ops = &clk_rcg2_ops,
 729         },
 730 };
 731 
 732 static struct freq_tbl ftbl_gp1_clk_src[] = {
 733         F(19200000, P_XO, 1, 0, 0),
 734         F(100000000, P_GPLL0, 6, 0, 0),
 735         F(200000000, P_GPLL0, 3, 0, 0),
 736         { }
 737 };
 738 
 739 static struct clk_rcg2 gp1_clk_src = {
 740         .cmd_rcgr = 0x1904,
 741         .mnd_width = 8,
 742         .hid_width = 5,
 743         .parent_map = gcc_xo_gpll0_map,
 744         .freq_tbl = ftbl_gp1_clk_src,
 745         .clkr.hw.init = &(struct clk_init_data)
 746         {
 747                 .name = "gp1_clk_src",
 748                 .parent_names = gcc_xo_gpll0,
 749                 .num_parents = 2,
 750                 .ops = &clk_rcg2_ops,
 751         },
 752 };
 753 
 754 static struct freq_tbl ftbl_gp2_clk_src[] = {
 755         F(19200000, P_XO, 1, 0, 0),
 756         F(100000000, P_GPLL0, 6, 0, 0),
 757         F(200000000, P_GPLL0, 3, 0, 0),
 758         { }
 759 };
 760 
 761 static struct clk_rcg2 gp2_clk_src = {
 762         .cmd_rcgr = 0x1944,
 763         .mnd_width = 8,
 764         .hid_width = 5,
 765         .parent_map = gcc_xo_gpll0_map,
 766         .freq_tbl = ftbl_gp2_clk_src,
 767         .clkr.hw.init = &(struct clk_init_data)
 768         {
 769                 .name = "gp2_clk_src",
 770                 .parent_names = gcc_xo_gpll0,
 771                 .num_parents = 2,
 772                 .ops = &clk_rcg2_ops,
 773         },
 774 };
 775 
 776 static struct freq_tbl ftbl_gp3_clk_src[] = {
 777         F(19200000, P_XO, 1, 0, 0),
 778         F(100000000, P_GPLL0, 6, 0, 0),
 779         F(200000000, P_GPLL0, 3, 0, 0),
 780         { }
 781 };
 782 
 783 static struct clk_rcg2 gp3_clk_src = {
 784         .cmd_rcgr = 0x1984,
 785         .mnd_width = 8,
 786         .hid_width = 5,
 787         .parent_map = gcc_xo_gpll0_map,
 788         .freq_tbl = ftbl_gp3_clk_src,
 789         .clkr.hw.init = &(struct clk_init_data)
 790         {
 791                 .name = "gp3_clk_src",
 792                 .parent_names = gcc_xo_gpll0,
 793                 .num_parents = 2,
 794                 .ops = &clk_rcg2_ops,
 795         },
 796 };
 797 
 798 static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = {
 799         F(1011000, P_XO, 1, 1, 19),
 800         { }
 801 };
 802 
 803 static struct clk_rcg2 pcie_0_aux_clk_src = {
 804         .cmd_rcgr = 0x1b00,
 805         .mnd_width = 8,
 806         .hid_width = 5,
 807         .freq_tbl = ftbl_pcie_0_aux_clk_src,
 808         .clkr.hw.init = &(struct clk_init_data)
 809         {
 810                 .name = "pcie_0_aux_clk_src",
 811                 .parent_names = (const char *[]) { "xo" },
 812                 .num_parents = 1,
 813                 .ops = &clk_rcg2_ops,
 814         },
 815 };
 816 
 817 static struct freq_tbl ftbl_pcie_pipe_clk_src[] = {
 818         F(125000000, P_XO, 1, 0, 0),
 819         { }
 820 };
 821 
 822 static struct clk_rcg2 pcie_0_pipe_clk_src = {
 823         .cmd_rcgr = 0x1adc,
 824         .hid_width = 5,
 825         .freq_tbl = ftbl_pcie_pipe_clk_src,
 826         .clkr.hw.init = &(struct clk_init_data)
 827         {
 828                 .name = "pcie_0_pipe_clk_src",
 829                 .parent_names = (const char *[]) { "xo" },
 830                 .num_parents = 1,
 831                 .ops = &clk_rcg2_ops,
 832         },
 833 };
 834 
 835 static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = {
 836         F(1011000, P_XO, 1, 1, 19),
 837         { }
 838 };
 839 
 840 static struct clk_rcg2 pcie_1_aux_clk_src = {
 841         .cmd_rcgr = 0x1b80,
 842         .mnd_width = 8,
 843         .hid_width = 5,
 844         .freq_tbl = ftbl_pcie_1_aux_clk_src,
 845         .clkr.hw.init = &(struct clk_init_data)
 846         {
 847                 .name = "pcie_1_aux_clk_src",
 848                 .parent_names = (const char *[]) { "xo" },
 849                 .num_parents = 1,
 850                 .ops = &clk_rcg2_ops,
 851         },
 852 };
 853 
 854 static struct clk_rcg2 pcie_1_pipe_clk_src = {
 855         .cmd_rcgr = 0x1b5c,
 856         .hid_width = 5,
 857         .freq_tbl = ftbl_pcie_pipe_clk_src,
 858         .clkr.hw.init = &(struct clk_init_data)
 859         {
 860                 .name = "pcie_1_pipe_clk_src",
 861                 .parent_names = (const char *[]) { "xo" },
 862                 .num_parents = 1,
 863                 .ops = &clk_rcg2_ops,
 864         },
 865 };
 866 
 867 static struct freq_tbl ftbl_pdm2_clk_src[] = {
 868         F(60000000, P_GPLL0, 10, 0, 0),
 869         { }
 870 };
 871 
 872 static struct clk_rcg2 pdm2_clk_src = {
 873         .cmd_rcgr = 0x0cd0,
 874         .hid_width = 5,
 875         .parent_map = gcc_xo_gpll0_map,
 876         .freq_tbl = ftbl_pdm2_clk_src,
 877         .clkr.hw.init = &(struct clk_init_data)
 878         {
 879                 .name = "pdm2_clk_src",
 880                 .parent_names = gcc_xo_gpll0,
 881                 .num_parents = 2,
 882                 .ops = &clk_rcg2_ops,
 883         },
 884 };
 885 
 886 static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
 887         F(144000, P_XO, 16, 3, 25),
 888         F(400000, P_XO, 12, 1, 4),
 889         F(20000000, P_GPLL0, 15, 1, 2),
 890         F(25000000, P_GPLL0, 12, 1, 2),
 891         F(50000000, P_GPLL0, 12, 0, 0),
 892         F(100000000, P_GPLL0, 6, 0, 0),
 893         F(192000000, P_GPLL4, 2, 0, 0),
 894         F(384000000, P_GPLL4, 1, 0, 0),
 895         { }
 896 };
 897 
 898 static struct clk_rcg2 sdcc1_apps_clk_src = {
 899         .cmd_rcgr = 0x04d0,
 900         .mnd_width = 8,
 901         .hid_width = 5,
 902         .parent_map = gcc_xo_gpll0_gpll4_map,
 903         .freq_tbl = ftbl_sdcc1_apps_clk_src,
 904         .clkr.hw.init = &(struct clk_init_data)
 905         {
 906                 .name = "sdcc1_apps_clk_src",
 907                 .parent_names = gcc_xo_gpll0_gpll4,
 908                 .num_parents = 3,
 909                 .ops = &clk_rcg2_floor_ops,
 910         },
 911 };
 912 
 913 static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = {
 914         F(144000, P_XO, 16, 3, 25),
 915         F(400000, P_XO, 12, 1, 4),
 916         F(20000000, P_GPLL0, 15, 1, 2),
 917         F(25000000, P_GPLL0, 12, 1, 2),
 918         F(50000000, P_GPLL0, 12, 0, 0),
 919         F(100000000, P_GPLL0, 6, 0, 0),
 920         F(200000000, P_GPLL0, 3, 0, 0),
 921         { }
 922 };
 923 
 924 static struct clk_rcg2 sdcc2_apps_clk_src = {
 925         .cmd_rcgr = 0x0510,
 926         .mnd_width = 8,
 927         .hid_width = 5,
 928         .parent_map = gcc_xo_gpll0_map,
 929         .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
 930         .clkr.hw.init = &(struct clk_init_data)
 931         {
 932                 .name = "sdcc2_apps_clk_src",
 933                 .parent_names = gcc_xo_gpll0,
 934                 .num_parents = 2,
 935                 .ops = &clk_rcg2_floor_ops,
 936         },
 937 };
 938 
 939 static struct clk_rcg2 sdcc3_apps_clk_src = {
 940         .cmd_rcgr = 0x0550,
 941         .mnd_width = 8,
 942         .hid_width = 5,
 943         .parent_map = gcc_xo_gpll0_map,
 944         .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
 945         .clkr.hw.init = &(struct clk_init_data)
 946         {
 947                 .name = "sdcc3_apps_clk_src",
 948                 .parent_names = gcc_xo_gpll0,
 949                 .num_parents = 2,
 950                 .ops = &clk_rcg2_floor_ops,
 951         },
 952 };
 953 
 954 static struct clk_rcg2 sdcc4_apps_clk_src = {
 955         .cmd_rcgr = 0x0590,
 956         .mnd_width = 8,
 957         .hid_width = 5,
 958         .parent_map = gcc_xo_gpll0_map,
 959         .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
 960         .clkr.hw.init = &(struct clk_init_data)
 961         {
 962                 .name = "sdcc4_apps_clk_src",
 963                 .parent_names = gcc_xo_gpll0,
 964                 .num_parents = 2,
 965                 .ops = &clk_rcg2_floor_ops,
 966         },
 967 };
 968 
 969 static struct freq_tbl ftbl_tsif_ref_clk_src[] = {
 970         F(105500, P_XO, 1, 1, 182),
 971         { }
 972 };
 973 
 974 static struct clk_rcg2 tsif_ref_clk_src = {
 975         .cmd_rcgr = 0x0d90,
 976         .mnd_width = 8,
 977         .hid_width = 5,
 978         .freq_tbl = ftbl_tsif_ref_clk_src,
 979         .clkr.hw.init = &(struct clk_init_data)
 980         {
 981                 .name = "tsif_ref_clk_src",
 982                 .parent_names = (const char *[]) { "xo" },
 983                 .num_parents = 1,
 984                 .ops = &clk_rcg2_ops,
 985         },
 986 };
 987 
 988 static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = {
 989         F(19200000, P_XO, 1, 0, 0),
 990         F(60000000, P_GPLL0, 10, 0, 0),
 991         { }
 992 };
 993 
 994 static struct clk_rcg2 usb30_mock_utmi_clk_src = {
 995         .cmd_rcgr = 0x03e8,
 996         .hid_width = 5,
 997         .parent_map = gcc_xo_gpll0_map,
 998         .freq_tbl = ftbl_usb30_mock_utmi_clk_src,
 999         .clkr.hw.init = &(struct clk_init_data)
1000         {
1001                 .name = "usb30_mock_utmi_clk_src",
1002                 .parent_names = gcc_xo_gpll0,
1003                 .num_parents = 2,
1004                 .ops = &clk_rcg2_ops,
1005         },
1006 };
1007 
1008 static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = {
1009         F(1200000, P_XO, 16, 0, 0),
1010         { }
1011 };
1012 
1013 static struct clk_rcg2 usb3_phy_aux_clk_src = {
1014         .cmd_rcgr = 0x1414,
1015         .hid_width = 5,
1016         .freq_tbl = ftbl_usb3_phy_aux_clk_src,
1017         .clkr.hw.init = &(struct clk_init_data)
1018         {
1019                 .name = "usb3_phy_aux_clk_src",
1020                 .parent_names = (const char *[]) { "xo" },
1021                 .num_parents = 1,
1022                 .ops = &clk_rcg2_ops,
1023         },
1024 };
1025 
1026 static struct freq_tbl ftbl_usb_hs_system_clk_src[] = {
1027         F(75000000, P_GPLL0, 8, 0, 0),
1028         { }
1029 };
1030 
1031 static struct clk_rcg2 usb_hs_system_clk_src = {
1032         .cmd_rcgr = 0x0490,
1033         .hid_width = 5,
1034         .parent_map = gcc_xo_gpll0_map,
1035         .freq_tbl = ftbl_usb_hs_system_clk_src,
1036         .clkr.hw.init = &(struct clk_init_data)
1037         {
1038                 .name = "usb_hs_system_clk_src",
1039                 .parent_names = gcc_xo_gpll0,
1040                 .num_parents = 2,
1041                 .ops = &clk_rcg2_ops,
1042         },
1043 };
1044 
1045 static struct clk_branch gcc_blsp1_ahb_clk = {
1046         .halt_reg = 0x05c4,
1047         .halt_check = BRANCH_HALT_VOTED,
1048         .clkr = {
1049                 .enable_reg = 0x1484,
1050                 .enable_mask = BIT(17),
1051                 .hw.init = &(struct clk_init_data)
1052                 {
1053                         .name = "gcc_blsp1_ahb_clk",
1054                         .ops = &clk_branch2_ops,
1055                 },
1056         },
1057 };
1058 
1059 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1060         .halt_reg = 0x0648,
1061         .clkr = {
1062                 .enable_reg = 0x0648,
1063                 .enable_mask = BIT(0),
1064                 .hw.init = &(struct clk_init_data)
1065                 {
1066                         .name = "gcc_blsp1_qup1_i2c_apps_clk",
1067                         .parent_names = (const char *[]) {
1068                                 "blsp1_qup1_i2c_apps_clk_src",
1069                         },
1070                         .num_parents = 1,
1071                         .flags = CLK_SET_RATE_PARENT,
1072                         .ops = &clk_branch2_ops,
1073                 },
1074         },
1075 };
1076 
1077 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1078         .halt_reg = 0x0644,
1079         .clkr = {
1080                 .enable_reg = 0x0644,
1081                 .enable_mask = BIT(0),
1082                 .hw.init = &(struct clk_init_data)
1083                 {
1084                         .name = "gcc_blsp1_qup1_spi_apps_clk",
1085                         .parent_names = (const char *[]) {
1086                                 "blsp1_qup1_spi_apps_clk_src",
1087                         },
1088                         .num_parents = 1,
1089                         .flags = CLK_SET_RATE_PARENT,
1090                         .ops = &clk_branch2_ops,
1091                 },
1092         },
1093 };
1094 
1095 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1096         .halt_reg = 0x06c8,
1097         .clkr = {
1098                 .enable_reg = 0x06c8,
1099                 .enable_mask = BIT(0),
1100                 .hw.init = &(struct clk_init_data)
1101                 {
1102                         .name = "gcc_blsp1_qup2_i2c_apps_clk",
1103                         .parent_names = (const char *[]) {
1104                                 "blsp1_qup2_i2c_apps_clk_src",
1105                         },
1106                         .num_parents = 1,
1107                         .flags = CLK_SET_RATE_PARENT,
1108                         .ops = &clk_branch2_ops,
1109                 },
1110         },
1111 };
1112 
1113 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1114         .halt_reg = 0x06c4,
1115         .clkr = {
1116                 .enable_reg = 0x06c4,
1117                 .enable_mask = BIT(0),
1118                 .hw.init = &(struct clk_init_data)
1119                 {
1120                         .name = "gcc_blsp1_qup2_spi_apps_clk",
1121                         .parent_names = (const char *[]) {
1122                                 "blsp1_qup2_spi_apps_clk_src",
1123                         },
1124                         .num_parents = 1,
1125                         .flags = CLK_SET_RATE_PARENT,
1126                         .ops = &clk_branch2_ops,
1127                 },
1128         },
1129 };
1130 
1131 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1132         .halt_reg = 0x0748,
1133         .clkr = {
1134                 .enable_reg = 0x0748,
1135                 .enable_mask = BIT(0),
1136                 .hw.init = &(struct clk_init_data)
1137                 {
1138                         .name = "gcc_blsp1_qup3_i2c_apps_clk",
1139                         .parent_names = (const char *[]) {
1140                                 "blsp1_qup3_i2c_apps_clk_src",
1141                         },
1142                         .num_parents = 1,
1143                         .flags = CLK_SET_RATE_PARENT,
1144                         .ops = &clk_branch2_ops,
1145                 },
1146         },
1147 };
1148 
1149 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1150         .halt_reg = 0x0744,
1151         .clkr = {
1152                 .enable_reg = 0x0744,
1153                 .enable_mask = BIT(0),
1154                 .hw.init = &(struct clk_init_data)
1155                 {
1156                         .name = "gcc_blsp1_qup3_spi_apps_clk",
1157                         .parent_names = (const char *[]) {
1158                                 "blsp1_qup3_spi_apps_clk_src",
1159                         },
1160                         .num_parents = 1,
1161                         .flags = CLK_SET_RATE_PARENT,
1162                         .ops = &clk_branch2_ops,
1163                 },
1164         },
1165 };
1166 
1167 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1168         .halt_reg = 0x07c8,
1169         .clkr = {
1170                 .enable_reg = 0x07c8,
1171                 .enable_mask = BIT(0),
1172                 .hw.init = &(struct clk_init_data)
1173                 {
1174                         .name = "gcc_blsp1_qup4_i2c_apps_clk",
1175                         .parent_names = (const char *[]) {
1176                                 "blsp1_qup4_i2c_apps_clk_src",
1177                         },
1178                         .num_parents = 1,
1179                         .flags = CLK_SET_RATE_PARENT,
1180                         .ops = &clk_branch2_ops,
1181                 },
1182         },
1183 };
1184 
1185 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1186         .halt_reg = 0x07c4,
1187         .clkr = {
1188                 .enable_reg = 0x07c4,
1189                 .enable_mask = BIT(0),
1190                 .hw.init = &(struct clk_init_data)
1191                 {
1192                         .name = "gcc_blsp1_qup4_spi_apps_clk",
1193                         .parent_names = (const char *[]) {
1194                                 "blsp1_qup4_spi_apps_clk_src",
1195                         },
1196                         .num_parents = 1,
1197                         .flags = CLK_SET_RATE_PARENT,
1198                         .ops = &clk_branch2_ops,
1199                 },
1200         },
1201 };
1202 
1203 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1204         .halt_reg = 0x0848,
1205         .clkr = {
1206                 .enable_reg = 0x0848,
1207                 .enable_mask = BIT(0),
1208                 .hw.init = &(struct clk_init_data)
1209                 {
1210                         .name = "gcc_blsp1_qup5_i2c_apps_clk",
1211                         .parent_names = (const char *[]) {
1212                                 "blsp1_qup5_i2c_apps_clk_src",
1213                         },
1214                         .num_parents = 1,
1215                         .flags = CLK_SET_RATE_PARENT,
1216                         .ops = &clk_branch2_ops,
1217                 },
1218         },
1219 };
1220 
1221 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1222         .halt_reg = 0x0844,
1223         .clkr = {
1224                 .enable_reg = 0x0844,
1225                 .enable_mask = BIT(0),
1226                 .hw.init = &(struct clk_init_data)
1227                 {
1228                         .name = "gcc_blsp1_qup5_spi_apps_clk",
1229                         .parent_names = (const char *[]) {
1230                                 "blsp1_qup5_spi_apps_clk_src",
1231                         },
1232                         .num_parents = 1,
1233                         .flags = CLK_SET_RATE_PARENT,
1234                         .ops = &clk_branch2_ops,
1235                 },
1236         },
1237 };
1238 
1239 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1240         .halt_reg = 0x08c8,
1241         .clkr = {
1242                 .enable_reg = 0x08c8,
1243                 .enable_mask = BIT(0),
1244                 .hw.init = &(struct clk_init_data)
1245                 {
1246                         .name = "gcc_blsp1_qup6_i2c_apps_clk",
1247                         .parent_names = (const char *[]) {
1248                                 "blsp1_qup6_i2c_apps_clk_src",
1249                         },
1250                         .num_parents = 1,
1251                         .flags = CLK_SET_RATE_PARENT,
1252                         .ops = &clk_branch2_ops,
1253                 },
1254         },
1255 };
1256 
1257 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1258         .halt_reg = 0x08c4,
1259         .clkr = {
1260                 .enable_reg = 0x08c4,
1261                 .enable_mask = BIT(0),
1262                 .hw.init = &(struct clk_init_data)
1263                 {
1264                         .name = "gcc_blsp1_qup6_spi_apps_clk",
1265                         .parent_names = (const char *[]) {
1266                                 "blsp1_qup6_spi_apps_clk_src",
1267                         },
1268                         .num_parents = 1,
1269                         .flags = CLK_SET_RATE_PARENT,
1270                         .ops = &clk_branch2_ops,
1271                 },
1272         },
1273 };
1274 
1275 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1276         .halt_reg = 0x0684,
1277         .clkr = {
1278                 .enable_reg = 0x0684,
1279                 .enable_mask = BIT(0),
1280                 .hw.init = &(struct clk_init_data)
1281                 {
1282                         .name = "gcc_blsp1_uart1_apps_clk",
1283                         .parent_names = (const char *[]) {
1284                                 "blsp1_uart1_apps_clk_src",
1285                         },
1286                         .num_parents = 1,
1287                         .flags = CLK_SET_RATE_PARENT,
1288                         .ops = &clk_branch2_ops,
1289                 },
1290         },
1291 };
1292 
1293 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1294         .halt_reg = 0x0704,
1295         .clkr = {
1296                 .enable_reg = 0x0704,
1297                 .enable_mask = BIT(0),
1298                 .hw.init = &(struct clk_init_data)
1299                 {
1300                         .name = "gcc_blsp1_uart2_apps_clk",
1301                         .parent_names = (const char *[]) {
1302                                 "blsp1_uart2_apps_clk_src",
1303                         },
1304                         .num_parents = 1,
1305                         .flags = CLK_SET_RATE_PARENT,
1306                         .ops = &clk_branch2_ops,
1307                 },
1308         },
1309 };
1310 
1311 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1312         .halt_reg = 0x0784,
1313         .clkr = {
1314                 .enable_reg = 0x0784,
1315                 .enable_mask = BIT(0),
1316                 .hw.init = &(struct clk_init_data)
1317                 {
1318                         .name = "gcc_blsp1_uart3_apps_clk",
1319                         .parent_names = (const char *[]) {
1320                                 "blsp1_uart3_apps_clk_src",
1321                         },
1322                         .num_parents = 1,
1323                         .flags = CLK_SET_RATE_PARENT,
1324                         .ops = &clk_branch2_ops,
1325                 },
1326         },
1327 };
1328 
1329 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1330         .halt_reg = 0x0804,
1331         .clkr = {
1332                 .enable_reg = 0x0804,
1333                 .enable_mask = BIT(0),
1334                 .hw.init = &(struct clk_init_data)
1335                 {
1336                         .name = "gcc_blsp1_uart4_apps_clk",
1337                         .parent_names = (const char *[]) {
1338                                 "blsp1_uart4_apps_clk_src",
1339                         },
1340                         .num_parents = 1,
1341                         .flags = CLK_SET_RATE_PARENT,
1342                         .ops = &clk_branch2_ops,
1343                 },
1344         },
1345 };
1346 
1347 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1348         .halt_reg = 0x0884,
1349         .clkr = {
1350                 .enable_reg = 0x0884,
1351                 .enable_mask = BIT(0),
1352                 .hw.init = &(struct clk_init_data)
1353                 {
1354                         .name = "gcc_blsp1_uart5_apps_clk",
1355                         .parent_names = (const char *[]) {
1356                                 "blsp1_uart5_apps_clk_src",
1357                         },
1358                         .num_parents = 1,
1359                         .flags = CLK_SET_RATE_PARENT,
1360                         .ops = &clk_branch2_ops,
1361                 },
1362         },
1363 };
1364 
1365 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1366         .halt_reg = 0x0904,
1367         .clkr = {
1368                 .enable_reg = 0x0904,
1369                 .enable_mask = BIT(0),
1370                 .hw.init = &(struct clk_init_data)
1371                 {
1372                         .name = "gcc_blsp1_uart6_apps_clk",
1373                         .parent_names = (const char *[]) {
1374                                 "blsp1_uart6_apps_clk_src",
1375                         },
1376                         .num_parents = 1,
1377                         .flags = CLK_SET_RATE_PARENT,
1378                         .ops = &clk_branch2_ops,
1379                 },
1380         },
1381 };
1382 
1383 static struct clk_branch gcc_blsp2_ahb_clk = {
1384         .halt_reg = 0x0944,
1385         .halt_check = BRANCH_HALT_VOTED,
1386         .clkr = {
1387                 .enable_reg = 0x1484,
1388                 .enable_mask = BIT(15),
1389                 .hw.init = &(struct clk_init_data)
1390                 {
1391                         .name = "gcc_blsp2_ahb_clk",
1392                         .ops = &clk_branch2_ops,
1393                 },
1394         },
1395 };
1396 
1397 static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1398         .halt_reg = 0x0988,
1399         .clkr = {
1400                 .enable_reg = 0x0988,
1401                 .enable_mask = BIT(0),
1402                 .hw.init = &(struct clk_init_data)
1403                 {
1404                         .name = "gcc_blsp2_qup1_i2c_apps_clk",
1405                         .parent_names = (const char *[]) {
1406                                 "blsp2_qup1_i2c_apps_clk_src",
1407                         },
1408                         .num_parents = 1,
1409                         .flags = CLK_SET_RATE_PARENT,
1410                         .ops = &clk_branch2_ops,
1411                 },
1412         },
1413 };
1414 
1415 static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1416         .halt_reg = 0x0984,
1417         .clkr = {
1418                 .enable_reg = 0x0984,
1419                 .enable_mask = BIT(0),
1420                 .hw.init = &(struct clk_init_data)
1421                 {
1422                         .name = "gcc_blsp2_qup1_spi_apps_clk",
1423                         .parent_names = (const char *[]) {
1424                                 "blsp2_qup1_spi_apps_clk_src",
1425                         },
1426                         .num_parents = 1,
1427                         .flags = CLK_SET_RATE_PARENT,
1428                         .ops = &clk_branch2_ops,
1429                 },
1430         },
1431 };
1432 
1433 static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1434         .halt_reg = 0x0a08,
1435         .clkr = {
1436                 .enable_reg = 0x0a08,
1437                 .enable_mask = BIT(0),
1438                 .hw.init = &(struct clk_init_data)
1439                 {
1440                         .name = "gcc_blsp2_qup2_i2c_apps_clk",
1441                         .parent_names = (const char *[]) {
1442                                 "blsp2_qup2_i2c_apps_clk_src",
1443                         },
1444                         .num_parents = 1,
1445                         .flags = CLK_SET_RATE_PARENT,
1446                         .ops = &clk_branch2_ops,
1447                 },
1448         },
1449 };
1450 
1451 static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1452         .halt_reg = 0x0a04,
1453         .clkr = {
1454                 .enable_reg = 0x0a04,
1455                 .enable_mask = BIT(0),
1456                 .hw.init = &(struct clk_init_data)
1457                 {
1458                         .name = "gcc_blsp2_qup2_spi_apps_clk",
1459                         .parent_names = (const char *[]) {
1460                                 "blsp2_qup2_spi_apps_clk_src",
1461                         },
1462                         .num_parents = 1,
1463                         .flags = CLK_SET_RATE_PARENT,
1464                         .ops = &clk_branch2_ops,
1465                 },
1466         },
1467 };
1468 
1469 static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1470         .halt_reg = 0x0a88,
1471         .clkr = {
1472                 .enable_reg = 0x0a88,
1473                 .enable_mask = BIT(0),
1474                 .hw.init = &(struct clk_init_data)
1475                 {
1476                         .name = "gcc_blsp2_qup3_i2c_apps_clk",
1477                         .parent_names = (const char *[]) {
1478                                 "blsp2_qup3_i2c_apps_clk_src",
1479                         },
1480                         .num_parents = 1,
1481                         .flags = CLK_SET_RATE_PARENT,
1482                         .ops = &clk_branch2_ops,
1483                 },
1484         },
1485 };
1486 
1487 static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1488         .halt_reg = 0x0a84,
1489         .clkr = {
1490                 .enable_reg = 0x0a84,
1491                 .enable_mask = BIT(0),
1492                 .hw.init = &(struct clk_init_data)
1493                 {
1494                         .name = "gcc_blsp2_qup3_spi_apps_clk",
1495                         .parent_names = (const char *[]) {
1496                                 "blsp2_qup3_spi_apps_clk_src",
1497                         },
1498                         .num_parents = 1,
1499                         .flags = CLK_SET_RATE_PARENT,
1500                         .ops = &clk_branch2_ops,
1501                 },
1502         },
1503 };
1504 
1505 static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1506         .halt_reg = 0x0b08,
1507         .clkr = {
1508                 .enable_reg = 0x0b08,
1509                 .enable_mask = BIT(0),
1510                 .hw.init = &(struct clk_init_data)
1511                 {
1512                         .name = "gcc_blsp2_qup4_i2c_apps_clk",
1513                         .parent_names = (const char *[]) {
1514                                 "blsp2_qup4_i2c_apps_clk_src",
1515                         },
1516                         .num_parents = 1,
1517                         .flags = CLK_SET_RATE_PARENT,
1518                         .ops = &clk_branch2_ops,
1519                 },
1520         },
1521 };
1522 
1523 static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1524         .halt_reg = 0x0b04,
1525         .clkr = {
1526                 .enable_reg = 0x0b04,
1527                 .enable_mask = BIT(0),
1528                 .hw.init = &(struct clk_init_data)
1529                 {
1530                         .name = "gcc_blsp2_qup4_spi_apps_clk",
1531                         .parent_names = (const char *[]) {
1532                                 "blsp2_qup4_spi_apps_clk_src",
1533                         },
1534                         .num_parents = 1,
1535                         .flags = CLK_SET_RATE_PARENT,
1536                         .ops = &clk_branch2_ops,
1537                 },
1538         },
1539 };
1540 
1541 static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1542         .halt_reg = 0x0b88,
1543         .clkr = {
1544                 .enable_reg = 0x0b88,
1545                 .enable_mask = BIT(0),
1546                 .hw.init = &(struct clk_init_data)
1547                 {
1548                         .name = "gcc_blsp2_qup5_i2c_apps_clk",
1549                         .parent_names = (const char *[]) {
1550                                 "blsp2_qup5_i2c_apps_clk_src",
1551                         },
1552                         .num_parents = 1,
1553                         .flags = CLK_SET_RATE_PARENT,
1554                         .ops = &clk_branch2_ops,
1555                 },
1556         },
1557 };
1558 
1559 static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = {
1560         .halt_reg = 0x0b84,
1561         .clkr = {
1562                 .enable_reg = 0x0b84,
1563                 .enable_mask = BIT(0),
1564                 .hw.init = &(struct clk_init_data)
1565                 {
1566                         .name = "gcc_blsp2_qup5_spi_apps_clk",
1567                         .parent_names = (const char *[]) {
1568                                 "blsp2_qup5_spi_apps_clk_src",
1569                         },
1570                         .num_parents = 1,
1571                         .flags = CLK_SET_RATE_PARENT,
1572                         .ops = &clk_branch2_ops,
1573                 },
1574         },
1575 };
1576 
1577 static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1578         .halt_reg = 0x0c08,
1579         .clkr = {
1580                 .enable_reg = 0x0c08,
1581                 .enable_mask = BIT(0),
1582                 .hw.init = &(struct clk_init_data)
1583                 {
1584                         .name = "gcc_blsp2_qup6_i2c_apps_clk",
1585                         .parent_names = (const char *[]) {
1586                                 "blsp2_qup6_i2c_apps_clk_src",
1587                         },
1588                         .num_parents = 1,
1589                         .flags = CLK_SET_RATE_PARENT,
1590                         .ops = &clk_branch2_ops,
1591                 },
1592         },
1593 };
1594 
1595 static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1596         .halt_reg = 0x0c04,
1597         .clkr = {
1598                 .enable_reg = 0x0c04,
1599                 .enable_mask = BIT(0),
1600                 .hw.init = &(struct clk_init_data)
1601                 {
1602                         .name = "gcc_blsp2_qup6_spi_apps_clk",
1603                         .parent_names = (const char *[]) {
1604                                 "blsp2_qup6_spi_apps_clk_src",
1605                         },
1606                         .num_parents = 1,
1607                         .flags = CLK_SET_RATE_PARENT,
1608                         .ops = &clk_branch2_ops,
1609                 },
1610         },
1611 };
1612 
1613 static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1614         .halt_reg = 0x09c4,
1615         .clkr = {
1616                 .enable_reg = 0x09c4,
1617                 .enable_mask = BIT(0),
1618                 .hw.init = &(struct clk_init_data)
1619                 {
1620                         .name = "gcc_blsp2_uart1_apps_clk",
1621                         .parent_names = (const char *[]) {
1622                                 "blsp2_uart1_apps_clk_src",
1623                         },
1624                         .num_parents = 1,
1625                         .flags = CLK_SET_RATE_PARENT,
1626                         .ops = &clk_branch2_ops,
1627                 },
1628         },
1629 };
1630 
1631 static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1632         .halt_reg = 0x0a44,
1633         .clkr = {
1634                 .enable_reg = 0x0a44,
1635                 .enable_mask = BIT(0),
1636                 .hw.init = &(struct clk_init_data)
1637                 {
1638                         .name = "gcc_blsp2_uart2_apps_clk",
1639                         .parent_names = (const char *[]) {
1640                                 "blsp2_uart2_apps_clk_src",
1641                         },
1642                         .num_parents = 1,
1643                         .flags = CLK_SET_RATE_PARENT,
1644                         .ops = &clk_branch2_ops,
1645                 },
1646         },
1647 };
1648 
1649 static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1650         .halt_reg = 0x0ac4,
1651         .clkr = {
1652                 .enable_reg = 0x0ac4,
1653                 .enable_mask = BIT(0),
1654                 .hw.init = &(struct clk_init_data)
1655                 {
1656                         .name = "gcc_blsp2_uart3_apps_clk",
1657                         .parent_names = (const char *[]) {
1658                                 "blsp2_uart3_apps_clk_src",
1659                         },
1660                         .num_parents = 1,
1661                         .flags = CLK_SET_RATE_PARENT,
1662                         .ops = &clk_branch2_ops,
1663                 },
1664         },
1665 };
1666 
1667 static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1668         .halt_reg = 0x0b44,
1669         .clkr = {
1670                 .enable_reg = 0x0b44,
1671                 .enable_mask = BIT(0),
1672                 .hw.init = &(struct clk_init_data)
1673                 {
1674                         .name = "gcc_blsp2_uart4_apps_clk",
1675                         .parent_names = (const char *[]) {
1676                                 "blsp2_uart4_apps_clk_src",
1677                         },
1678                         .num_parents = 1,
1679                         .flags = CLK_SET_RATE_PARENT,
1680                         .ops = &clk_branch2_ops,
1681                 },
1682         },
1683 };
1684 
1685 static struct clk_branch gcc_blsp2_uart5_apps_clk = {
1686         .halt_reg = 0x0bc4,
1687         .clkr = {
1688                 .enable_reg = 0x0bc4,
1689                 .enable_mask = BIT(0),
1690                 .hw.init = &(struct clk_init_data)
1691                 {
1692                         .name = "gcc_blsp2_uart5_apps_clk",
1693                         .parent_names = (const char *[]) {
1694                                 "blsp2_uart5_apps_clk_src",
1695                         },
1696                         .num_parents = 1,
1697                         .flags = CLK_SET_RATE_PARENT,
1698                         .ops = &clk_branch2_ops,
1699                 },
1700         },
1701 };
1702 
1703 static struct clk_branch gcc_blsp2_uart6_apps_clk = {
1704         .halt_reg = 0x0c44,
1705         .clkr = {
1706                 .enable_reg = 0x0c44,
1707                 .enable_mask = BIT(0),
1708                 .hw.init = &(struct clk_init_data)
1709                 {
1710                         .name = "gcc_blsp2_uart6_apps_clk",
1711                         .parent_names = (const char *[]) {
1712                                 "blsp2_uart6_apps_clk_src",
1713                         },
1714                         .num_parents = 1,
1715                         .flags = CLK_SET_RATE_PARENT,
1716                         .ops = &clk_branch2_ops,
1717                 },
1718         },
1719 };
1720 
1721 static struct clk_branch gcc_gp1_clk = {
1722         .halt_reg = 0x1900,
1723         .clkr = {
1724                 .enable_reg = 0x1900,
1725                 .enable_mask = BIT(0),
1726                 .hw.init = &(struct clk_init_data)
1727                 {
1728                         .name = "gcc_gp1_clk",
1729                         .parent_names = (const char *[]) {
1730                                 "gp1_clk_src",
1731                         },
1732                         .num_parents = 1,
1733                         .flags = CLK_SET_RATE_PARENT,
1734                         .ops = &clk_branch2_ops,
1735                 },
1736         },
1737 };
1738 
1739 static struct clk_branch gcc_gp2_clk = {
1740         .halt_reg = 0x1940,
1741         .clkr = {
1742                 .enable_reg = 0x1940,
1743                 .enable_mask = BIT(0),
1744                 .hw.init = &(struct clk_init_data)
1745                 {
1746                         .name = "gcc_gp2_clk",
1747                         .parent_names = (const char *[]) {
1748                                 "gp2_clk_src",
1749                         },
1750                         .num_parents = 1,
1751                         .flags = CLK_SET_RATE_PARENT,
1752                         .ops = &clk_branch2_ops,
1753                 },
1754         },
1755 };
1756 
1757 static struct clk_branch gcc_gp3_clk = {
1758         .halt_reg = 0x1980,
1759         .clkr = {
1760                 .enable_reg = 0x1980,
1761                 .enable_mask = BIT(0),
1762                 .hw.init = &(struct clk_init_data)
1763                 {
1764                         .name = "gcc_gp3_clk",
1765                         .parent_names = (const char *[]) {
1766                                 "gp3_clk_src",
1767                         },
1768                         .num_parents = 1,
1769                         .flags = CLK_SET_RATE_PARENT,
1770                         .ops = &clk_branch2_ops,
1771                 },
1772         },
1773 };
1774 
1775 static struct clk_branch gcc_pcie_0_aux_clk = {
1776         .halt_reg = 0x1ad4,
1777         .clkr = {
1778                 .enable_reg = 0x1ad4,
1779                 .enable_mask = BIT(0),
1780                 .hw.init = &(struct clk_init_data)
1781                 {
1782                         .name = "gcc_pcie_0_aux_clk",
1783                         .parent_names = (const char *[]) {
1784                                 "pcie_0_aux_clk_src",
1785                         },
1786                         .num_parents = 1,
1787                         .flags = CLK_SET_RATE_PARENT,
1788                         .ops = &clk_branch2_ops,
1789                 },
1790         },
1791 };
1792 
1793 static struct clk_branch gcc_pcie_0_pipe_clk = {
1794         .halt_reg = 0x1ad8,
1795         .halt_check = BRANCH_HALT_DELAY,
1796         .clkr = {
1797                 .enable_reg = 0x1ad8,
1798                 .enable_mask = BIT(0),
1799                 .hw.init = &(struct clk_init_data)
1800                 {
1801                         .name = "gcc_pcie_0_pipe_clk",
1802                         .parent_names = (const char *[]) {
1803                                 "pcie_0_pipe_clk_src",
1804                         },
1805                         .num_parents = 1,
1806                         .flags = CLK_SET_RATE_PARENT,
1807                         .ops = &clk_branch2_ops,
1808                 },
1809         },
1810 };
1811 
1812 static struct clk_branch gcc_pcie_1_aux_clk = {
1813         .halt_reg = 0x1b54,
1814         .clkr = {
1815                 .enable_reg = 0x1b54,
1816                 .enable_mask = BIT(0),
1817                 .hw.init = &(struct clk_init_data)
1818                 {
1819                         .name = "gcc_pcie_1_aux_clk",
1820                         .parent_names = (const char *[]) {
1821                                 "pcie_1_aux_clk_src",
1822                         },
1823                         .num_parents = 1,
1824                         .flags = CLK_SET_RATE_PARENT,
1825                         .ops = &clk_branch2_ops,
1826                 },
1827         },
1828 };
1829 
1830 static struct clk_branch gcc_pcie_1_pipe_clk = {
1831         .halt_reg = 0x1b58,
1832         .halt_check = BRANCH_HALT_DELAY,
1833         .clkr = {
1834                 .enable_reg = 0x1b58,
1835                 .enable_mask = BIT(0),
1836                 .hw.init = &(struct clk_init_data)
1837                 {
1838                         .name = "gcc_pcie_1_pipe_clk",
1839                         .parent_names = (const char *[]) {
1840                                 "pcie_1_pipe_clk_src",
1841                         },
1842                         .num_parents = 1,
1843                         .flags = CLK_SET_RATE_PARENT,
1844                         .ops = &clk_branch2_ops,
1845                 },
1846         },
1847 };
1848 
1849 static struct clk_branch gcc_pdm2_clk = {
1850         .halt_reg = 0x0ccc,
1851         .clkr = {
1852                 .enable_reg = 0x0ccc,
1853                 .enable_mask = BIT(0),
1854                 .hw.init = &(struct clk_init_data)
1855                 {
1856                         .name = "gcc_pdm2_clk",
1857                         .parent_names = (const char *[]) {
1858                                 "pdm2_clk_src",
1859                         },
1860                         .num_parents = 1,
1861                         .flags = CLK_SET_RATE_PARENT,
1862                         .ops = &clk_branch2_ops,
1863                 },
1864         },
1865 };
1866 
1867 static struct clk_branch gcc_sdcc1_apps_clk = {
1868         .halt_reg = 0x04c4,
1869         .clkr = {
1870                 .enable_reg = 0x04c4,
1871                 .enable_mask = BIT(0),
1872                 .hw.init = &(struct clk_init_data)
1873                 {
1874                         .name = "gcc_sdcc1_apps_clk",
1875                         .parent_names = (const char *[]) {
1876                                 "sdcc1_apps_clk_src",
1877                         },
1878                         .num_parents = 1,
1879                         .flags = CLK_SET_RATE_PARENT,
1880                         .ops = &clk_branch2_ops,
1881                 },
1882         },
1883 };
1884 
1885 static struct clk_branch gcc_sdcc1_ahb_clk = {
1886         .halt_reg = 0x04c8,
1887         .clkr = {
1888                 .enable_reg = 0x04c8,
1889                 .enable_mask = BIT(0),
1890                 .hw.init = &(struct clk_init_data)
1891                 {
1892                         .name = "gcc_sdcc1_ahb_clk",
1893                         .parent_names = (const char *[]){
1894                                 "periph_noc_clk_src",
1895                         },
1896                         .num_parents = 1,
1897                         .ops = &clk_branch2_ops,
1898                 },
1899         },
1900 };
1901 
1902 static struct clk_branch gcc_sdcc2_apps_clk = {
1903         .halt_reg = 0x0504,
1904         .clkr = {
1905                 .enable_reg = 0x0504,
1906                 .enable_mask = BIT(0),
1907                 .hw.init = &(struct clk_init_data)
1908                 {
1909                         .name = "gcc_sdcc2_apps_clk",
1910                         .parent_names = (const char *[]) {
1911                                 "sdcc2_apps_clk_src",
1912                         },
1913                         .num_parents = 1,
1914                         .flags = CLK_SET_RATE_PARENT,
1915                         .ops = &clk_branch2_ops,
1916                 },
1917         },
1918 };
1919 
1920 static struct clk_branch gcc_sdcc3_apps_clk = {
1921         .halt_reg = 0x0544,
1922         .clkr = {
1923                 .enable_reg = 0x0544,
1924                 .enable_mask = BIT(0),
1925                 .hw.init = &(struct clk_init_data)
1926                 {
1927                         .name = "gcc_sdcc3_apps_clk",
1928                         .parent_names = (const char *[]) {
1929                                 "sdcc3_apps_clk_src",
1930                         },
1931                         .num_parents = 1,
1932                         .flags = CLK_SET_RATE_PARENT,
1933                         .ops = &clk_branch2_ops,
1934                 },
1935         },
1936 };
1937 
1938 static struct clk_branch gcc_sdcc4_apps_clk = {
1939         .halt_reg = 0x0584,
1940         .clkr = {
1941                 .enable_reg = 0x0584,
1942                 .enable_mask = BIT(0),
1943                 .hw.init = &(struct clk_init_data)
1944                 {
1945                         .name = "gcc_sdcc4_apps_clk",
1946                         .parent_names = (const char *[]) {
1947                                 "sdcc4_apps_clk_src",
1948                         },
1949                         .num_parents = 1,
1950                         .flags = CLK_SET_RATE_PARENT,
1951                         .ops = &clk_branch2_ops,
1952                 },
1953         },
1954 };
1955 
1956 static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
1957         .halt_reg = 0x1d7c,
1958         .clkr = {
1959                 .enable_reg = 0x1d7c,
1960                 .enable_mask = BIT(0),
1961                 .hw.init = &(struct clk_init_data)
1962                 {
1963                         .name = "gcc_sys_noc_ufs_axi_clk",
1964                         .parent_names = (const char *[]) {
1965                                 "ufs_axi_clk_src",
1966                         },
1967                         .num_parents = 1,
1968                         .flags = CLK_SET_RATE_PARENT,
1969                         .ops = &clk_branch2_ops,
1970                 },
1971         },
1972 };
1973 
1974 static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
1975         .halt_reg = 0x03fc,
1976         .clkr = {
1977                 .enable_reg = 0x03fc,
1978                 .enable_mask = BIT(0),
1979                 .hw.init = &(struct clk_init_data)
1980                 {
1981                         .name = "gcc_sys_noc_usb3_axi_clk",
1982                         .parent_names = (const char *[]) {
1983                                 "usb30_master_clk_src",
1984                         },
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_tsif_ref_clk = {
1993         .halt_reg = 0x0d88,
1994         .clkr = {
1995                 .enable_reg = 0x0d88,
1996                 .enable_mask = BIT(0),
1997                 .hw.init = &(struct clk_init_data)
1998                 {
1999                         .name = "gcc_tsif_ref_clk",
2000                         .parent_names = (const char *[]) {
2001                                 "tsif_ref_clk_src",
2002                         },
2003                         .num_parents = 1,
2004                         .flags = CLK_SET_RATE_PARENT,
2005                         .ops = &clk_branch2_ops,
2006                 },
2007         },
2008 };
2009 
2010 static struct clk_branch gcc_ufs_axi_clk = {
2011         .halt_reg = 0x1d48,
2012         .clkr = {
2013                 .enable_reg = 0x1d48,
2014                 .enable_mask = BIT(0),
2015                 .hw.init = &(struct clk_init_data)
2016                 {
2017                         .name = "gcc_ufs_axi_clk",
2018                         .parent_names = (const char *[]) {
2019                                 "ufs_axi_clk_src",
2020                         },
2021                         .num_parents = 1,
2022                         .flags = CLK_SET_RATE_PARENT,
2023                         .ops = &clk_branch2_ops,
2024                 },
2025         },
2026 };
2027 
2028 static struct clk_branch gcc_ufs_rx_cfg_clk = {
2029         .halt_reg = 0x1d54,
2030         .clkr = {
2031                 .enable_reg = 0x1d54,
2032                 .enable_mask = BIT(0),
2033                 .hw.init = &(struct clk_init_data)
2034                 {
2035                         .name = "gcc_ufs_rx_cfg_clk",
2036                         .parent_names = (const char *[]) {
2037                                 "ufs_axi_clk_src",
2038                         },
2039                         .num_parents = 1,
2040                         .flags = CLK_SET_RATE_PARENT,
2041                         .ops = &clk_branch2_ops,
2042                 },
2043         },
2044 };
2045 
2046 static struct clk_branch gcc_ufs_tx_cfg_clk = {
2047         .halt_reg = 0x1d50,
2048         .clkr = {
2049                 .enable_reg = 0x1d50,
2050                 .enable_mask = BIT(0),
2051                 .hw.init = &(struct clk_init_data)
2052                 {
2053                         .name = "gcc_ufs_tx_cfg_clk",
2054                         .parent_names = (const char *[]) {
2055                                 "ufs_axi_clk_src",
2056                         },
2057                         .num_parents = 1,
2058                         .flags = CLK_SET_RATE_PARENT,
2059                         .ops = &clk_branch2_ops,
2060                 },
2061         },
2062 };
2063 
2064 static struct clk_branch gcc_usb30_master_clk = {
2065         .halt_reg = 0x03c8,
2066         .clkr = {
2067                 .enable_reg = 0x03c8,
2068                 .enable_mask = BIT(0),
2069                 .hw.init = &(struct clk_init_data)
2070                 {
2071                         .name = "gcc_usb30_master_clk",
2072                         .parent_names = (const char *[]) {
2073                                 "usb30_master_clk_src",
2074                         },
2075                         .num_parents = 1,
2076                         .flags = CLK_SET_RATE_PARENT,
2077                         .ops = &clk_branch2_ops,
2078                 },
2079         },
2080 };
2081 
2082 static struct clk_branch gcc_usb30_mock_utmi_clk = {
2083         .halt_reg = 0x03d0,
2084         .clkr = {
2085                 .enable_reg = 0x03d0,
2086                 .enable_mask = BIT(0),
2087                 .hw.init = &(struct clk_init_data)
2088                 {
2089                         .name = "gcc_usb30_mock_utmi_clk",
2090                         .parent_names = (const char *[]) {
2091                                 "usb30_mock_utmi_clk_src",
2092                         },
2093                         .num_parents = 1,
2094                         .flags = CLK_SET_RATE_PARENT,
2095                         .ops = &clk_branch2_ops,
2096                 },
2097         },
2098 };
2099 
2100 static struct clk_branch gcc_usb3_phy_aux_clk = {
2101         .halt_reg = 0x1408,
2102         .clkr = {
2103                 .enable_reg = 0x1408,
2104                 .enable_mask = BIT(0),
2105                 .hw.init = &(struct clk_init_data)
2106                 {
2107                         .name = "gcc_usb3_phy_aux_clk",
2108                         .parent_names = (const char *[]) {
2109                                 "usb3_phy_aux_clk_src",
2110                         },
2111                         .num_parents = 1,
2112                         .flags = CLK_SET_RATE_PARENT,
2113                         .ops = &clk_branch2_ops,
2114                 },
2115         },
2116 };
2117 
2118 static struct clk_branch gcc_usb_hs_system_clk = {
2119         .halt_reg = 0x0484,
2120         .clkr = {
2121                 .enable_reg = 0x0484,
2122                 .enable_mask = BIT(0),
2123                 .hw.init = &(struct clk_init_data)
2124                 {
2125                         .name = "gcc_usb_hs_system_clk",
2126                         .parent_names = (const char *[]) {
2127                                 "usb_hs_system_clk_src",
2128                         },
2129                         .num_parents = 1,
2130                         .flags = CLK_SET_RATE_PARENT,
2131                         .ops = &clk_branch2_ops,
2132                 },
2133         },
2134 };
2135 
2136 static struct clk_regmap *gcc_msm8994_clocks[] = {
2137         [GPLL0_EARLY] = &gpll0_early.clkr,
2138         [GPLL0] = &gpll0.clkr,
2139         [GPLL4_EARLY] = &gpll4_early.clkr,
2140         [GPLL4] = &gpll4.clkr,
2141         [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2142         [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2143         [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2144         [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2145         [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2146         [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2147         [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2148         [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2149         [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2150         [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2151         [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
2152         [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
2153         [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
2154         [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
2155         [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2156         [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2157         [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
2158         [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
2159         [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
2160         [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
2161         [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
2162         [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
2163         [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
2164         [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
2165         [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
2166         [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
2167         [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
2168         [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
2169         [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
2170         [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
2171         [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
2172         [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
2173         [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
2174         [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
2175         [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
2176         [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
2177         [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
2178         [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
2179         [GP1_CLK_SRC] = &gp1_clk_src.clkr,
2180         [GP2_CLK_SRC] = &gp2_clk_src.clkr,
2181         [GP3_CLK_SRC] = &gp3_clk_src.clkr,
2182         [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
2183         [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
2184         [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
2185         [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
2186         [PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2187         [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2188         [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2189         [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
2190         [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
2191         [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
2192         [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2193         [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2194         [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
2195         [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2196         [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2197         [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2198         [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2199         [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2200         [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2201         [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2202         [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2203         [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2204         [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
2205         [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
2206         [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
2207         [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
2208         [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2209         [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2210         [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
2211         [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
2212         [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
2213         [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
2214         [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2215         [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
2216         [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
2217         [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
2218         [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
2219         [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
2220         [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
2221         [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
2222         [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
2223         [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
2224         [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
2225         [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
2226         [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
2227         [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
2228         [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
2229         [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
2230         [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
2231         [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
2232         [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
2233         [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2234         [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2235         [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
2236         [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
2237         [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
2238         [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
2239         [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
2240         [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
2241         [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
2242         [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
2243         [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
2244         [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
2245         [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
2246         [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
2247         [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
2248         [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
2249         [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
2250         [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
2251         [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
2252         [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2253         [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
2254         [GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
2255         [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
2256 };
2257 
2258 static const struct regmap_config gcc_msm8994_regmap_config = {
2259         .reg_bits       = 32,
2260         .reg_stride     = 4,
2261         .val_bits       = 32,
2262         .max_register   = 0x2000,
2263         .fast_io        = true,
2264 };
2265 
2266 static const struct qcom_cc_desc gcc_msm8994_desc = {
2267         .config = &gcc_msm8994_regmap_config,
2268         .clks = gcc_msm8994_clocks,
2269         .num_clks = ARRAY_SIZE(gcc_msm8994_clocks),
2270 };
2271 
2272 static const struct of_device_id gcc_msm8994_match_table[] = {
2273         { .compatible = "qcom,gcc-msm8994" },
2274         {}
2275 };
2276 MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table);
2277 
2278 static int gcc_msm8994_probe(struct platform_device *pdev)
2279 {
2280         struct device *dev = &pdev->dev;
2281         struct clk *clk;
2282 
2283         clk = devm_clk_register(dev, &xo.hw);
2284         if (IS_ERR(clk))
2285                 return PTR_ERR(clk);
2286 
2287         return qcom_cc_probe(pdev, &gcc_msm8994_desc);
2288 }
2289 
2290 static struct platform_driver gcc_msm8994_driver = {
2291         .probe          = gcc_msm8994_probe,
2292         .driver         = {
2293                 .name   = "gcc-msm8994",
2294                 .of_match_table = gcc_msm8994_match_table,
2295         },
2296 };
2297 
2298 static int __init gcc_msm8994_init(void)
2299 {
2300         return platform_driver_register(&gcc_msm8994_driver);
2301 }
2302 core_initcall(gcc_msm8994_init);
2303 
2304 static void __exit gcc_msm8994_exit(void)
2305 {
2306         platform_driver_unregister(&gcc_msm8994_driver);
2307 }
2308 module_exit(gcc_msm8994_exit);
2309 
2310 MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver");
2311 MODULE_LICENSE("GPL v2");
2312 MODULE_ALIAS("platform:gcc-msm8994");

/* [<][>][^][v][top][bottom][index][help] */