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

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

DEFINITIONS

This source file includes following definitions.
  1. gcc_apq8084_probe
  2. gcc_apq8084_init
  3. gcc_apq8084_exit

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Copyright (c) 2014, The Linux Foundation. All rights reserved.
   4  */
   5 
   6 #include <linux/kernel.h>
   7 #include <linux/bitops.h>
   8 #include <linux/err.h>
   9 #include <linux/platform_device.h>
  10 #include <linux/module.h>
  11 #include <linux/of.h>
  12 #include <linux/of_device.h>
  13 #include <linux/clk-provider.h>
  14 #include <linux/regmap.h>
  15 #include <linux/reset-controller.h>
  16 
  17 #include <dt-bindings/clock/qcom,gcc-apq8084.h>
  18 #include <dt-bindings/reset/qcom,gcc-apq8084.h>
  19 
  20 #include "common.h"
  21 #include "clk-regmap.h"
  22 #include "clk-pll.h"
  23 #include "clk-rcg.h"
  24 #include "clk-branch.h"
  25 #include "reset.h"
  26 #include "gdsc.h"
  27 
  28 enum {
  29         P_XO,
  30         P_GPLL0,
  31         P_GPLL1,
  32         P_GPLL4,
  33         P_PCIE_0_1_PIPE_CLK,
  34         P_SATA_ASIC0_CLK,
  35         P_SATA_RX_CLK,
  36         P_SLEEP_CLK,
  37 };
  38 
  39 static const struct parent_map gcc_xo_gpll0_map[] = {
  40         { P_XO, 0 },
  41         { P_GPLL0, 1 }
  42 };
  43 
  44 static const char * const gcc_xo_gpll0[] = {
  45         "xo",
  46         "gpll0_vote",
  47 };
  48 
  49 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
  50         { P_XO, 0 },
  51         { P_GPLL0, 1 },
  52         { P_GPLL4, 5 }
  53 };
  54 
  55 static const char * const gcc_xo_gpll0_gpll4[] = {
  56         "xo",
  57         "gpll0_vote",
  58         "gpll4_vote",
  59 };
  60 
  61 static const struct parent_map gcc_xo_sata_asic0_map[] = {
  62         { P_XO, 0 },
  63         { P_SATA_ASIC0_CLK, 2 }
  64 };
  65 
  66 static const char * const gcc_xo_sata_asic0[] = {
  67         "xo",
  68         "sata_asic0_clk",
  69 };
  70 
  71 static const struct parent_map gcc_xo_sata_rx_map[] = {
  72         { P_XO, 0 },
  73         { P_SATA_RX_CLK, 2}
  74 };
  75 
  76 static const char * const gcc_xo_sata_rx[] = {
  77         "xo",
  78         "sata_rx_clk",
  79 };
  80 
  81 static const struct parent_map gcc_xo_pcie_map[] = {
  82         { P_XO, 0 },
  83         { P_PCIE_0_1_PIPE_CLK, 2 }
  84 };
  85 
  86 static const char * const gcc_xo_pcie[] = {
  87         "xo",
  88         "pcie_pipe",
  89 };
  90 
  91 static const struct parent_map gcc_xo_pcie_sleep_map[] = {
  92         { P_XO, 0 },
  93         { P_SLEEP_CLK, 6 }
  94 };
  95 
  96 static const char * const gcc_xo_pcie_sleep[] = {
  97         "xo",
  98         "sleep_clk_src",
  99 };
 100 
 101 static struct clk_pll gpll0 = {
 102         .l_reg = 0x0004,
 103         .m_reg = 0x0008,
 104         .n_reg = 0x000c,
 105         .config_reg = 0x0014,
 106         .mode_reg = 0x0000,
 107         .status_reg = 0x001c,
 108         .status_bit = 17,
 109         .clkr.hw.init = &(struct clk_init_data){
 110                 .name = "gpll0",
 111                 .parent_names = (const char *[]){ "xo" },
 112                 .num_parents = 1,
 113                 .ops = &clk_pll_ops,
 114         },
 115 };
 116 
 117 static struct clk_regmap gpll0_vote = {
 118         .enable_reg = 0x1480,
 119         .enable_mask = BIT(0),
 120         .hw.init = &(struct clk_init_data){
 121                 .name = "gpll0_vote",
 122                 .parent_names = (const char *[]){ "gpll0" },
 123                 .num_parents = 1,
 124                 .ops = &clk_pll_vote_ops,
 125         },
 126 };
 127 
 128 static struct clk_rcg2 config_noc_clk_src = {
 129         .cmd_rcgr = 0x0150,
 130         .hid_width = 5,
 131         .parent_map = gcc_xo_gpll0_map,
 132         .clkr.hw.init = &(struct clk_init_data){
 133                 .name = "config_noc_clk_src",
 134                 .parent_names = gcc_xo_gpll0,
 135                 .num_parents = 2,
 136                 .ops = &clk_rcg2_ops,
 137         },
 138 };
 139 
 140 static struct clk_rcg2 periph_noc_clk_src = {
 141         .cmd_rcgr = 0x0190,
 142         .hid_width = 5,
 143         .parent_map = gcc_xo_gpll0_map,
 144         .clkr.hw.init = &(struct clk_init_data){
 145                 .name = "periph_noc_clk_src",
 146                 .parent_names = gcc_xo_gpll0,
 147                 .num_parents = 2,
 148                 .ops = &clk_rcg2_ops,
 149         },
 150 };
 151 
 152 static struct clk_rcg2 system_noc_clk_src = {
 153         .cmd_rcgr = 0x0120,
 154         .hid_width = 5,
 155         .parent_map = gcc_xo_gpll0_map,
 156         .clkr.hw.init = &(struct clk_init_data){
 157                 .name = "system_noc_clk_src",
 158                 .parent_names = gcc_xo_gpll0,
 159                 .num_parents = 2,
 160                 .ops = &clk_rcg2_ops,
 161         },
 162 };
 163 
 164 static struct clk_pll gpll1 = {
 165         .l_reg = 0x0044,
 166         .m_reg = 0x0048,
 167         .n_reg = 0x004c,
 168         .config_reg = 0x0054,
 169         .mode_reg = 0x0040,
 170         .status_reg = 0x005c,
 171         .status_bit = 17,
 172         .clkr.hw.init = &(struct clk_init_data){
 173                 .name = "gpll1",
 174                 .parent_names = (const char *[]){ "xo" },
 175                 .num_parents = 1,
 176                 .ops = &clk_pll_ops,
 177         },
 178 };
 179 
 180 static struct clk_regmap gpll1_vote = {
 181         .enable_reg = 0x1480,
 182         .enable_mask = BIT(1),
 183         .hw.init = &(struct clk_init_data){
 184                 .name = "gpll1_vote",
 185                 .parent_names = (const char *[]){ "gpll1" },
 186                 .num_parents = 1,
 187                 .ops = &clk_pll_vote_ops,
 188         },
 189 };
 190 
 191 static struct clk_pll gpll4 = {
 192         .l_reg = 0x1dc4,
 193         .m_reg = 0x1dc8,
 194         .n_reg = 0x1dcc,
 195         .config_reg = 0x1dd4,
 196         .mode_reg = 0x1dc0,
 197         .status_reg = 0x1ddc,
 198         .status_bit = 17,
 199         .clkr.hw.init = &(struct clk_init_data){
 200                 .name = "gpll4",
 201                 .parent_names = (const char *[]){ "xo" },
 202                 .num_parents = 1,
 203                 .ops = &clk_pll_ops,
 204         },
 205 };
 206 
 207 static struct clk_regmap gpll4_vote = {
 208         .enable_reg = 0x1480,
 209         .enable_mask = BIT(4),
 210         .hw.init = &(struct clk_init_data){
 211                 .name = "gpll4_vote",
 212                 .parent_names = (const char *[]){ "gpll4" },
 213                 .num_parents = 1,
 214                 .ops = &clk_pll_vote_ops,
 215         },
 216 };
 217 
 218 static const struct freq_tbl ftbl_gcc_ufs_axi_clk[] = {
 219         F(100000000, P_GPLL0, 6, 0, 0),
 220         F(200000000, P_GPLL0, 3, 0, 0),
 221         F(240000000, P_GPLL0, 2.5, 0, 0),
 222         { }
 223 };
 224 
 225 static struct clk_rcg2 ufs_axi_clk_src = {
 226         .cmd_rcgr = 0x1d64,
 227         .mnd_width = 8,
 228         .hid_width = 5,
 229         .parent_map = gcc_xo_gpll0_map,
 230         .freq_tbl = ftbl_gcc_ufs_axi_clk,
 231         .clkr.hw.init = &(struct clk_init_data){
 232                 .name = "ufs_axi_clk_src",
 233                 .parent_names = gcc_xo_gpll0,
 234                 .num_parents = 2,
 235                 .ops = &clk_rcg2_ops,
 236         },
 237 };
 238 
 239 static const struct freq_tbl ftbl_gcc_usb30_master_clk[] = {
 240         F(125000000, P_GPLL0, 1, 5, 24),
 241         { }
 242 };
 243 
 244 static struct clk_rcg2 usb30_master_clk_src = {
 245         .cmd_rcgr = 0x03d4,
 246         .mnd_width = 8,
 247         .hid_width = 5,
 248         .parent_map = gcc_xo_gpll0_map,
 249         .freq_tbl = ftbl_gcc_usb30_master_clk,
 250         .clkr.hw.init = &(struct clk_init_data){
 251                 .name = "usb30_master_clk_src",
 252                 .parent_names = gcc_xo_gpll0,
 253                 .num_parents = 2,
 254                 .ops = &clk_rcg2_ops,
 255         },
 256 };
 257 
 258 static const struct freq_tbl ftbl_gcc_usb30_sec_master_clk[] = {
 259         F(125000000, P_GPLL0, 1, 5, 24),
 260         { }
 261 };
 262 
 263 static struct clk_rcg2 usb30_sec_master_clk_src = {
 264         .cmd_rcgr = 0x1bd4,
 265         .mnd_width = 8,
 266         .hid_width = 5,
 267         .parent_map = gcc_xo_gpll0_map,
 268         .freq_tbl = ftbl_gcc_usb30_sec_master_clk,
 269         .clkr.hw.init = &(struct clk_init_data){
 270                 .name = "usb30_sec_master_clk_src",
 271                 .parent_names = gcc_xo_gpll0,
 272                 .num_parents = 2,
 273                 .ops = &clk_rcg2_ops,
 274         },
 275 };
 276 
 277 static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {
 278         .halt_reg = 0x1bd0,
 279         .clkr = {
 280                 .enable_reg = 0x1bd0,
 281                 .enable_mask = BIT(0),
 282                 .hw.init = &(struct clk_init_data){
 283                         .name = "gcc_usb30_sec_mock_utmi_clk",
 284                         .parent_names = (const char *[]){
 285                                 "usb30_sec_mock_utmi_clk_src",
 286                         },
 287                         .num_parents = 1,
 288                         .flags = CLK_SET_RATE_PARENT,
 289                         .ops = &clk_branch2_ops,
 290                 },
 291         },
 292 };
 293 
 294 static struct clk_branch gcc_usb30_sec_sleep_clk = {
 295         .halt_reg = 0x1bcc,
 296         .clkr = {
 297                 .enable_reg = 0x1bcc,
 298                 .enable_mask = BIT(0),
 299                 .hw.init = &(struct clk_init_data){
 300                         .name = "gcc_usb30_sec_sleep_clk",
 301                         .parent_names = (const char *[]){
 302                                 "sleep_clk_src",
 303                         },
 304                         .num_parents = 1,
 305                         .flags = CLK_SET_RATE_PARENT,
 306                         .ops = &clk_branch2_ops,
 307                 },
 308         },
 309 };
 310 
 311 static const struct freq_tbl ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk[] = {
 312         F(19200000, P_XO, 1, 0, 0),
 313         F(50000000, P_GPLL0, 12, 0, 0),
 314         { }
 315 };
 316 
 317 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
 318         .cmd_rcgr = 0x0660,
 319         .hid_width = 5,
 320         .parent_map = gcc_xo_gpll0_map,
 321         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
 322         .clkr.hw.init = &(struct clk_init_data){
 323                 .name = "blsp1_qup1_i2c_apps_clk_src",
 324                 .parent_names = gcc_xo_gpll0,
 325                 .num_parents = 2,
 326                 .ops = &clk_rcg2_ops,
 327         },
 328 };
 329 
 330 static const struct freq_tbl ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk[] = {
 331         F(960000, P_XO, 10, 1, 2),
 332         F(4800000, P_XO, 4, 0, 0),
 333         F(9600000, P_XO, 2, 0, 0),
 334         F(15000000, P_GPLL0, 10, 1, 4),
 335         F(19200000, P_XO, 1, 0, 0),
 336         F(25000000, P_GPLL0, 12, 1, 2),
 337         F(50000000, P_GPLL0, 12, 0, 0),
 338         { }
 339 };
 340 
 341 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
 342         .cmd_rcgr = 0x064c,
 343         .mnd_width = 8,
 344         .hid_width = 5,
 345         .parent_map = gcc_xo_gpll0_map,
 346         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
 347         .clkr.hw.init = &(struct clk_init_data){
 348                 .name = "blsp1_qup1_spi_apps_clk_src",
 349                 .parent_names = gcc_xo_gpll0,
 350                 .num_parents = 2,
 351                 .ops = &clk_rcg2_ops,
 352         },
 353 };
 354 
 355 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
 356         .cmd_rcgr = 0x06e0,
 357         .hid_width = 5,
 358         .parent_map = gcc_xo_gpll0_map,
 359         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
 360         .clkr.hw.init = &(struct clk_init_data){
 361                 .name = "blsp1_qup2_i2c_apps_clk_src",
 362                 .parent_names = gcc_xo_gpll0,
 363                 .num_parents = 2,
 364                 .ops = &clk_rcg2_ops,
 365         },
 366 };
 367 
 368 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
 369         .cmd_rcgr = 0x06cc,
 370         .mnd_width = 8,
 371         .hid_width = 5,
 372         .parent_map = gcc_xo_gpll0_map,
 373         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
 374         .clkr.hw.init = &(struct clk_init_data){
 375                 .name = "blsp1_qup2_spi_apps_clk_src",
 376                 .parent_names = gcc_xo_gpll0,
 377                 .num_parents = 2,
 378                 .ops = &clk_rcg2_ops,
 379         },
 380 };
 381 
 382 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
 383         .cmd_rcgr = 0x0760,
 384         .hid_width = 5,
 385         .parent_map = gcc_xo_gpll0_map,
 386         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
 387         .clkr.hw.init = &(struct clk_init_data){
 388                 .name = "blsp1_qup3_i2c_apps_clk_src",
 389                 .parent_names = gcc_xo_gpll0,
 390                 .num_parents = 2,
 391                 .ops = &clk_rcg2_ops,
 392         },
 393 };
 394 
 395 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
 396         .cmd_rcgr = 0x074c,
 397         .mnd_width = 8,
 398         .hid_width = 5,
 399         .parent_map = gcc_xo_gpll0_map,
 400         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
 401         .clkr.hw.init = &(struct clk_init_data){
 402                 .name = "blsp1_qup3_spi_apps_clk_src",
 403                 .parent_names = gcc_xo_gpll0,
 404                 .num_parents = 2,
 405                 .ops = &clk_rcg2_ops,
 406         },
 407 };
 408 
 409 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
 410         .cmd_rcgr = 0x07e0,
 411         .hid_width = 5,
 412         .parent_map = gcc_xo_gpll0_map,
 413         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
 414         .clkr.hw.init = &(struct clk_init_data){
 415                 .name = "blsp1_qup4_i2c_apps_clk_src",
 416                 .parent_names = gcc_xo_gpll0,
 417                 .num_parents = 2,
 418                 .ops = &clk_rcg2_ops,
 419         },
 420 };
 421 
 422 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
 423         .cmd_rcgr = 0x07cc,
 424         .mnd_width = 8,
 425         .hid_width = 5,
 426         .parent_map = gcc_xo_gpll0_map,
 427         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
 428         .clkr.hw.init = &(struct clk_init_data){
 429                 .name = "blsp1_qup4_spi_apps_clk_src",
 430                 .parent_names = gcc_xo_gpll0,
 431                 .num_parents = 2,
 432                 .ops = &clk_rcg2_ops,
 433         },
 434 };
 435 
 436 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
 437         .cmd_rcgr = 0x0860,
 438         .hid_width = 5,
 439         .parent_map = gcc_xo_gpll0_map,
 440         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
 441         .clkr.hw.init = &(struct clk_init_data){
 442                 .name = "blsp1_qup5_i2c_apps_clk_src",
 443                 .parent_names = gcc_xo_gpll0,
 444                 .num_parents = 2,
 445                 .ops = &clk_rcg2_ops,
 446         },
 447 };
 448 
 449 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
 450         .cmd_rcgr = 0x084c,
 451         .mnd_width = 8,
 452         .hid_width = 5,
 453         .parent_map = gcc_xo_gpll0_map,
 454         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
 455         .clkr.hw.init = &(struct clk_init_data){
 456                 .name = "blsp1_qup5_spi_apps_clk_src",
 457                 .parent_names = gcc_xo_gpll0,
 458                 .num_parents = 2,
 459                 .ops = &clk_rcg2_ops,
 460         },
 461 };
 462 
 463 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
 464         .cmd_rcgr = 0x08e0,
 465         .hid_width = 5,
 466         .parent_map = gcc_xo_gpll0_map,
 467         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
 468         .clkr.hw.init = &(struct clk_init_data){
 469                 .name = "blsp1_qup6_i2c_apps_clk_src",
 470                 .parent_names = gcc_xo_gpll0,
 471                 .num_parents = 2,
 472                 .ops = &clk_rcg2_ops,
 473         },
 474 };
 475 
 476 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
 477         .cmd_rcgr = 0x08cc,
 478         .mnd_width = 8,
 479         .hid_width = 5,
 480         .parent_map = gcc_xo_gpll0_map,
 481         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
 482         .clkr.hw.init = &(struct clk_init_data){
 483                 .name = "blsp1_qup6_spi_apps_clk_src",
 484                 .parent_names = gcc_xo_gpll0,
 485                 .num_parents = 2,
 486                 .ops = &clk_rcg2_ops,
 487         },
 488 };
 489 
 490 static const struct freq_tbl ftbl_gcc_blsp1_2_uart1_6_apps_clk[] = {
 491         F(3686400, P_GPLL0, 1, 96, 15625),
 492         F(7372800, P_GPLL0, 1, 192, 15625),
 493         F(14745600, P_GPLL0, 1, 384, 15625),
 494         F(16000000, P_GPLL0, 5, 2, 15),
 495         F(19200000, P_XO, 1, 0, 0),
 496         F(24000000, P_GPLL0, 5, 1, 5),
 497         F(32000000, P_GPLL0, 1, 4, 75),
 498         F(40000000, P_GPLL0, 15, 0, 0),
 499         F(46400000, P_GPLL0, 1, 29, 375),
 500         F(48000000, P_GPLL0, 12.5, 0, 0),
 501         F(51200000, P_GPLL0, 1, 32, 375),
 502         F(56000000, P_GPLL0, 1, 7, 75),
 503         F(58982400, P_GPLL0, 1, 1536, 15625),
 504         F(60000000, P_GPLL0, 10, 0, 0),
 505         F(63160000, P_GPLL0, 9.5, 0, 0),
 506         { }
 507 };
 508 
 509 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
 510         .cmd_rcgr = 0x068c,
 511         .mnd_width = 16,
 512         .hid_width = 5,
 513         .parent_map = gcc_xo_gpll0_map,
 514         .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
 515         .clkr.hw.init = &(struct clk_init_data){
 516                 .name = "blsp1_uart1_apps_clk_src",
 517                 .parent_names = gcc_xo_gpll0,
 518                 .num_parents = 2,
 519                 .ops = &clk_rcg2_ops,
 520         },
 521 };
 522 
 523 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
 524         .cmd_rcgr = 0x070c,
 525         .mnd_width = 16,
 526         .hid_width = 5,
 527         .parent_map = gcc_xo_gpll0_map,
 528         .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
 529         .clkr.hw.init = &(struct clk_init_data){
 530                 .name = "blsp1_uart2_apps_clk_src",
 531                 .parent_names = gcc_xo_gpll0,
 532                 .num_parents = 2,
 533                 .ops = &clk_rcg2_ops,
 534         },
 535 };
 536 
 537 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
 538         .cmd_rcgr = 0x078c,
 539         .mnd_width = 16,
 540         .hid_width = 5,
 541         .parent_map = gcc_xo_gpll0_map,
 542         .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
 543         .clkr.hw.init = &(struct clk_init_data){
 544                 .name = "blsp1_uart3_apps_clk_src",
 545                 .parent_names = gcc_xo_gpll0,
 546                 .num_parents = 2,
 547                 .ops = &clk_rcg2_ops,
 548         },
 549 };
 550 
 551 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
 552         .cmd_rcgr = 0x080c,
 553         .mnd_width = 16,
 554         .hid_width = 5,
 555         .parent_map = gcc_xo_gpll0_map,
 556         .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
 557         .clkr.hw.init = &(struct clk_init_data){
 558                 .name = "blsp1_uart4_apps_clk_src",
 559                 .parent_names = gcc_xo_gpll0,
 560                 .num_parents = 2,
 561                 .ops = &clk_rcg2_ops,
 562         },
 563 };
 564 
 565 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
 566         .cmd_rcgr = 0x088c,
 567         .mnd_width = 16,
 568         .hid_width = 5,
 569         .parent_map = gcc_xo_gpll0_map,
 570         .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
 571         .clkr.hw.init = &(struct clk_init_data){
 572                 .name = "blsp1_uart5_apps_clk_src",
 573                 .parent_names = gcc_xo_gpll0,
 574                 .num_parents = 2,
 575                 .ops = &clk_rcg2_ops,
 576         },
 577 };
 578 
 579 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
 580         .cmd_rcgr = 0x090c,
 581         .mnd_width = 16,
 582         .hid_width = 5,
 583         .parent_map = gcc_xo_gpll0_map,
 584         .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
 585         .clkr.hw.init = &(struct clk_init_data){
 586                 .name = "blsp1_uart6_apps_clk_src",
 587                 .parent_names = gcc_xo_gpll0,
 588                 .num_parents = 2,
 589                 .ops = &clk_rcg2_ops,
 590         },
 591 };
 592 
 593 static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
 594         .cmd_rcgr = 0x09a0,
 595         .hid_width = 5,
 596         .parent_map = gcc_xo_gpll0_map,
 597         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
 598         .clkr.hw.init = &(struct clk_init_data){
 599                 .name = "blsp2_qup1_i2c_apps_clk_src",
 600                 .parent_names = gcc_xo_gpll0,
 601                 .num_parents = 2,
 602                 .ops = &clk_rcg2_ops,
 603         },
 604 };
 605 
 606 static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
 607         .cmd_rcgr = 0x098c,
 608         .mnd_width = 8,
 609         .hid_width = 5,
 610         .parent_map = gcc_xo_gpll0_map,
 611         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
 612         .clkr.hw.init = &(struct clk_init_data){
 613                 .name = "blsp2_qup1_spi_apps_clk_src",
 614                 .parent_names = gcc_xo_gpll0,
 615                 .num_parents = 2,
 616                 .ops = &clk_rcg2_ops,
 617         },
 618 };
 619 
 620 static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
 621         .cmd_rcgr = 0x0a20,
 622         .hid_width = 5,
 623         .parent_map = gcc_xo_gpll0_map,
 624         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
 625         .clkr.hw.init = &(struct clk_init_data){
 626                 .name = "blsp2_qup2_i2c_apps_clk_src",
 627                 .parent_names = gcc_xo_gpll0,
 628                 .num_parents = 2,
 629                 .ops = &clk_rcg2_ops,
 630         },
 631 };
 632 
 633 static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
 634         .cmd_rcgr = 0x0a0c,
 635         .mnd_width = 8,
 636         .hid_width = 5,
 637         .parent_map = gcc_xo_gpll0_map,
 638         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
 639         .clkr.hw.init = &(struct clk_init_data){
 640                 .name = "blsp2_qup2_spi_apps_clk_src",
 641                 .parent_names = gcc_xo_gpll0,
 642                 .num_parents = 2,
 643                 .ops = &clk_rcg2_ops,
 644         },
 645 };
 646 
 647 static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
 648         .cmd_rcgr = 0x0aa0,
 649         .hid_width = 5,
 650         .parent_map = gcc_xo_gpll0_map,
 651         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
 652         .clkr.hw.init = &(struct clk_init_data){
 653                 .name = "blsp2_qup3_i2c_apps_clk_src",
 654                 .parent_names = gcc_xo_gpll0,
 655                 .num_parents = 2,
 656                 .ops = &clk_rcg2_ops,
 657         },
 658 };
 659 
 660 static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
 661         .cmd_rcgr = 0x0a8c,
 662         .mnd_width = 8,
 663         .hid_width = 5,
 664         .parent_map = gcc_xo_gpll0_map,
 665         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
 666         .clkr.hw.init = &(struct clk_init_data){
 667                 .name = "blsp2_qup3_spi_apps_clk_src",
 668                 .parent_names = gcc_xo_gpll0,
 669                 .num_parents = 2,
 670                 .ops = &clk_rcg2_ops,
 671         },
 672 };
 673 
 674 static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
 675         .cmd_rcgr = 0x0b20,
 676         .hid_width = 5,
 677         .parent_map = gcc_xo_gpll0_map,
 678         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
 679         .clkr.hw.init = &(struct clk_init_data){
 680                 .name = "blsp2_qup4_i2c_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_qup4_spi_apps_clk_src = {
 688         .cmd_rcgr = 0x0b0c,
 689         .mnd_width = 8,
 690         .hid_width = 5,
 691         .parent_map = gcc_xo_gpll0_map,
 692         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
 693         .clkr.hw.init = &(struct clk_init_data){
 694                 .name = "blsp2_qup4_spi_apps_clk_src",
 695                 .parent_names = gcc_xo_gpll0,
 696                 .num_parents = 2,
 697                 .ops = &clk_rcg2_ops,
 698         },
 699 };
 700 
 701 static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
 702         .cmd_rcgr = 0x0ba0,
 703         .hid_width = 5,
 704         .parent_map = gcc_xo_gpll0_map,
 705         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
 706         .clkr.hw.init = &(struct clk_init_data){
 707                 .name = "blsp2_qup5_i2c_apps_clk_src",
 708                 .parent_names = gcc_xo_gpll0,
 709                 .num_parents = 2,
 710                 .ops = &clk_rcg2_ops,
 711         },
 712 };
 713 
 714 static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
 715         .cmd_rcgr = 0x0b8c,
 716         .mnd_width = 8,
 717         .hid_width = 5,
 718         .parent_map = gcc_xo_gpll0_map,
 719         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
 720         .clkr.hw.init = &(struct clk_init_data){
 721                 .name = "blsp2_qup5_spi_apps_clk_src",
 722                 .parent_names = gcc_xo_gpll0,
 723                 .num_parents = 2,
 724                 .ops = &clk_rcg2_ops,
 725         },
 726 };
 727 
 728 static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
 729         .cmd_rcgr = 0x0c20,
 730         .hid_width = 5,
 731         .parent_map = gcc_xo_gpll0_map,
 732         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
 733         .clkr.hw.init = &(struct clk_init_data){
 734                 .name = "blsp2_qup6_i2c_apps_clk_src",
 735                 .parent_names = gcc_xo_gpll0,
 736                 .num_parents = 2,
 737                 .ops = &clk_rcg2_ops,
 738         },
 739 };
 740 
 741 static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
 742         .cmd_rcgr = 0x0c0c,
 743         .mnd_width = 8,
 744         .hid_width = 5,
 745         .parent_map = gcc_xo_gpll0_map,
 746         .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
 747         .clkr.hw.init = &(struct clk_init_data){
 748                 .name = "blsp2_qup6_spi_apps_clk_src",
 749                 .parent_names = gcc_xo_gpll0,
 750                 .num_parents = 2,
 751                 .ops = &clk_rcg2_ops,
 752         },
 753 };
 754 
 755 static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
 756         .cmd_rcgr = 0x09cc,
 757         .mnd_width = 16,
 758         .hid_width = 5,
 759         .parent_map = gcc_xo_gpll0_map,
 760         .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
 761         .clkr.hw.init = &(struct clk_init_data){
 762                 .name = "blsp2_uart1_apps_clk_src",
 763                 .parent_names = gcc_xo_gpll0,
 764                 .num_parents = 2,
 765                 .ops = &clk_rcg2_ops,
 766         },
 767 };
 768 
 769 static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
 770         .cmd_rcgr = 0x0a4c,
 771         .mnd_width = 16,
 772         .hid_width = 5,
 773         .parent_map = gcc_xo_gpll0_map,
 774         .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
 775         .clkr.hw.init = &(struct clk_init_data){
 776                 .name = "blsp2_uart2_apps_clk_src",
 777                 .parent_names = gcc_xo_gpll0,
 778                 .num_parents = 2,
 779                 .ops = &clk_rcg2_ops,
 780         },
 781 };
 782 
 783 static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
 784         .cmd_rcgr = 0x0acc,
 785         .mnd_width = 16,
 786         .hid_width = 5,
 787         .parent_map = gcc_xo_gpll0_map,
 788         .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
 789         .clkr.hw.init = &(struct clk_init_data){
 790                 .name = "blsp2_uart3_apps_clk_src",
 791                 .parent_names = gcc_xo_gpll0,
 792                 .num_parents = 2,
 793                 .ops = &clk_rcg2_ops,
 794         },
 795 };
 796 
 797 static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
 798         .cmd_rcgr = 0x0b4c,
 799         .mnd_width = 16,
 800         .hid_width = 5,
 801         .parent_map = gcc_xo_gpll0_map,
 802         .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
 803         .clkr.hw.init = &(struct clk_init_data){
 804                 .name = "blsp2_uart4_apps_clk_src",
 805                 .parent_names = gcc_xo_gpll0,
 806                 .num_parents = 2,
 807                 .ops = &clk_rcg2_ops,
 808         },
 809 };
 810 
 811 static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
 812         .cmd_rcgr = 0x0bcc,
 813         .mnd_width = 16,
 814         .hid_width = 5,
 815         .parent_map = gcc_xo_gpll0_map,
 816         .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
 817         .clkr.hw.init = &(struct clk_init_data){
 818                 .name = "blsp2_uart5_apps_clk_src",
 819                 .parent_names = gcc_xo_gpll0,
 820                 .num_parents = 2,
 821                 .ops = &clk_rcg2_ops,
 822         },
 823 };
 824 
 825 static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
 826         .cmd_rcgr = 0x0c4c,
 827         .mnd_width = 16,
 828         .hid_width = 5,
 829         .parent_map = gcc_xo_gpll0_map,
 830         .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
 831         .clkr.hw.init = &(struct clk_init_data){
 832                 .name = "blsp2_uart6_apps_clk_src",
 833                 .parent_names = gcc_xo_gpll0,
 834                 .num_parents = 2,
 835                 .ops = &clk_rcg2_ops,
 836         },
 837 };
 838 
 839 static const struct freq_tbl ftbl_gcc_ce1_clk[] = {
 840         F(50000000, P_GPLL0, 12, 0, 0),
 841         F(85710000, P_GPLL0, 7, 0, 0),
 842         F(100000000, P_GPLL0, 6, 0, 0),
 843         F(171430000, P_GPLL0, 3.5, 0, 0),
 844         { }
 845 };
 846 
 847 static struct clk_rcg2 ce1_clk_src = {
 848         .cmd_rcgr = 0x1050,
 849         .hid_width = 5,
 850         .parent_map = gcc_xo_gpll0_map,
 851         .freq_tbl = ftbl_gcc_ce1_clk,
 852         .clkr.hw.init = &(struct clk_init_data){
 853                 .name = "ce1_clk_src",
 854                 .parent_names = gcc_xo_gpll0,
 855                 .num_parents = 2,
 856                 .ops = &clk_rcg2_ops,
 857         },
 858 };
 859 
 860 static const struct freq_tbl ftbl_gcc_ce2_clk[] = {
 861         F(50000000, P_GPLL0, 12, 0, 0),
 862         F(85710000, P_GPLL0, 7, 0, 0),
 863         F(100000000, P_GPLL0, 6, 0, 0),
 864         F(171430000, P_GPLL0, 3.5, 0, 0),
 865         { }
 866 };
 867 
 868 static struct clk_rcg2 ce2_clk_src = {
 869         .cmd_rcgr = 0x1090,
 870         .hid_width = 5,
 871         .parent_map = gcc_xo_gpll0_map,
 872         .freq_tbl = ftbl_gcc_ce2_clk,
 873         .clkr.hw.init = &(struct clk_init_data){
 874                 .name = "ce2_clk_src",
 875                 .parent_names = gcc_xo_gpll0,
 876                 .num_parents = 2,
 877                 .ops = &clk_rcg2_ops,
 878         },
 879 };
 880 
 881 static const struct freq_tbl ftbl_gcc_ce3_clk[] = {
 882         F(50000000, P_GPLL0, 12, 0, 0),
 883         F(85710000, P_GPLL0, 7, 0, 0),
 884         F(100000000, P_GPLL0, 6, 0, 0),
 885         F(171430000, P_GPLL0, 3.5, 0, 0),
 886         { }
 887 };
 888 
 889 static struct clk_rcg2 ce3_clk_src = {
 890         .cmd_rcgr = 0x1d10,
 891         .hid_width = 5,
 892         .parent_map = gcc_xo_gpll0_map,
 893         .freq_tbl = ftbl_gcc_ce3_clk,
 894         .clkr.hw.init = &(struct clk_init_data){
 895                 .name = "ce3_clk_src",
 896                 .parent_names = gcc_xo_gpll0,
 897                 .num_parents = 2,
 898                 .ops = &clk_rcg2_ops,
 899         },
 900 };
 901 
 902 static const struct freq_tbl ftbl_gcc_gp_clk[] = {
 903         F(19200000, P_XO, 1, 0, 0),
 904         F(100000000, P_GPLL0, 6, 0, 0),
 905         F(200000000, P_GPLL0, 3, 0, 0),
 906         { }
 907 };
 908 
 909 static struct clk_rcg2 gp1_clk_src = {
 910         .cmd_rcgr = 0x1904,
 911         .mnd_width = 8,
 912         .hid_width = 5,
 913         .parent_map = gcc_xo_gpll0_map,
 914         .freq_tbl = ftbl_gcc_gp_clk,
 915         .clkr.hw.init = &(struct clk_init_data){
 916                 .name = "gp1_clk_src",
 917                 .parent_names = gcc_xo_gpll0,
 918                 .num_parents = 2,
 919                 .ops = &clk_rcg2_ops,
 920         },
 921 };
 922 
 923 static struct clk_rcg2 gp2_clk_src = {
 924         .cmd_rcgr = 0x1944,
 925         .mnd_width = 8,
 926         .hid_width = 5,
 927         .parent_map = gcc_xo_gpll0_map,
 928         .freq_tbl = ftbl_gcc_gp_clk,
 929         .clkr.hw.init = &(struct clk_init_data){
 930                 .name = "gp2_clk_src",
 931                 .parent_names = gcc_xo_gpll0,
 932                 .num_parents = 2,
 933                 .ops = &clk_rcg2_ops,
 934         },
 935 };
 936 
 937 static struct clk_rcg2 gp3_clk_src = {
 938         .cmd_rcgr = 0x1984,
 939         .mnd_width = 8,
 940         .hid_width = 5,
 941         .parent_map = gcc_xo_gpll0_map,
 942         .freq_tbl = ftbl_gcc_gp_clk,
 943         .clkr.hw.init = &(struct clk_init_data){
 944                 .name = "gp3_clk_src",
 945                 .parent_names = gcc_xo_gpll0,
 946                 .num_parents = 2,
 947                 .ops = &clk_rcg2_ops,
 948         },
 949 };
 950 
 951 static const struct freq_tbl ftbl_gcc_pcie_0_1_aux_clk[] = {
 952         F(1010000, P_XO, 1, 1, 19),
 953         { }
 954 };
 955 
 956 static struct clk_rcg2 pcie_0_aux_clk_src = {
 957         .cmd_rcgr = 0x1b2c,
 958         .mnd_width = 16,
 959         .hid_width = 5,
 960         .parent_map = gcc_xo_pcie_sleep_map,
 961         .freq_tbl = ftbl_gcc_pcie_0_1_aux_clk,
 962         .clkr.hw.init = &(struct clk_init_data){
 963                 .name = "pcie_0_aux_clk_src",
 964                 .parent_names = gcc_xo_pcie_sleep,
 965                 .num_parents = 2,
 966                 .ops = &clk_rcg2_ops,
 967         },
 968 };
 969 
 970 static struct clk_rcg2 pcie_1_aux_clk_src = {
 971         .cmd_rcgr = 0x1bac,
 972         .mnd_width = 16,
 973         .hid_width = 5,
 974         .parent_map = gcc_xo_pcie_sleep_map,
 975         .freq_tbl = ftbl_gcc_pcie_0_1_aux_clk,
 976         .clkr.hw.init = &(struct clk_init_data){
 977                 .name = "pcie_1_aux_clk_src",
 978                 .parent_names = gcc_xo_pcie_sleep,
 979                 .num_parents = 2,
 980                 .ops = &clk_rcg2_ops,
 981         },
 982 };
 983 
 984 static const struct freq_tbl ftbl_gcc_pcie_0_1_pipe_clk[] = {
 985         F(125000000, P_PCIE_0_1_PIPE_CLK, 1, 0, 0),
 986         F(250000000, P_PCIE_0_1_PIPE_CLK, 1, 0, 0),
 987         { }
 988 };
 989 
 990 static struct clk_rcg2 pcie_0_pipe_clk_src = {
 991         .cmd_rcgr = 0x1b18,
 992         .hid_width = 5,
 993         .parent_map = gcc_xo_pcie_map,
 994         .freq_tbl = ftbl_gcc_pcie_0_1_pipe_clk,
 995         .clkr.hw.init = &(struct clk_init_data){
 996                 .name = "pcie_0_pipe_clk_src",
 997                 .parent_names = gcc_xo_pcie,
 998                 .num_parents = 2,
 999                 .ops = &clk_rcg2_ops,
1000         },
1001 };
1002 
1003 static struct clk_rcg2 pcie_1_pipe_clk_src = {
1004         .cmd_rcgr = 0x1b98,
1005         .hid_width = 5,
1006         .parent_map = gcc_xo_pcie_map,
1007         .freq_tbl = ftbl_gcc_pcie_0_1_pipe_clk,
1008         .clkr.hw.init = &(struct clk_init_data){
1009                 .name = "pcie_1_pipe_clk_src",
1010                 .parent_names = gcc_xo_pcie,
1011                 .num_parents = 2,
1012                 .ops = &clk_rcg2_ops,
1013         },
1014 };
1015 
1016 static const struct freq_tbl ftbl_gcc_pdm2_clk[] = {
1017         F(60000000, P_GPLL0, 10, 0, 0),
1018         { }
1019 };
1020 
1021 static struct clk_rcg2 pdm2_clk_src = {
1022         .cmd_rcgr = 0x0cd0,
1023         .hid_width = 5,
1024         .parent_map = gcc_xo_gpll0_map,
1025         .freq_tbl = ftbl_gcc_pdm2_clk,
1026         .clkr.hw.init = &(struct clk_init_data){
1027                 .name = "pdm2_clk_src",
1028                 .parent_names = gcc_xo_gpll0,
1029                 .num_parents = 2,
1030                 .ops = &clk_rcg2_ops,
1031         },
1032 };
1033 
1034 static const struct freq_tbl ftbl_gcc_sata_asic0_clk[] = {
1035         F(75000000, P_SATA_ASIC0_CLK, 1, 0, 0),
1036         F(150000000, P_SATA_ASIC0_CLK, 1, 0, 0),
1037         F(300000000, P_SATA_ASIC0_CLK, 1, 0, 0),
1038         { }
1039 };
1040 
1041 static struct clk_rcg2 sata_asic0_clk_src = {
1042         .cmd_rcgr = 0x1c94,
1043         .hid_width = 5,
1044         .parent_map = gcc_xo_sata_asic0_map,
1045         .freq_tbl = ftbl_gcc_sata_asic0_clk,
1046         .clkr.hw.init = &(struct clk_init_data){
1047                 .name = "sata_asic0_clk_src",
1048                 .parent_names = gcc_xo_sata_asic0,
1049                 .num_parents = 2,
1050                 .ops = &clk_rcg2_ops,
1051         },
1052 };
1053 
1054 static const struct freq_tbl ftbl_gcc_sata_pmalive_clk[] = {
1055         F(19200000, P_XO, 1, 0, 0),
1056         F(50000000, P_GPLL0, 12, 0, 0),
1057         F(100000000, P_GPLL0, 6, 0, 0),
1058         { }
1059 };
1060 
1061 static struct clk_rcg2 sata_pmalive_clk_src = {
1062         .cmd_rcgr = 0x1c80,
1063         .hid_width = 5,
1064         .parent_map = gcc_xo_gpll0_map,
1065         .freq_tbl = ftbl_gcc_sata_pmalive_clk,
1066         .clkr.hw.init = &(struct clk_init_data){
1067                 .name = "sata_pmalive_clk_src",
1068                 .parent_names = gcc_xo_gpll0,
1069                 .num_parents = 2,
1070                 .ops = &clk_rcg2_ops,
1071         },
1072 };
1073 
1074 static const struct freq_tbl ftbl_gcc_sata_rx_clk[] = {
1075         F(75000000, P_SATA_RX_CLK, 1, 0, 0),
1076         F(150000000, P_SATA_RX_CLK, 1, 0, 0),
1077         F(300000000, P_SATA_RX_CLK, 1, 0, 0),
1078         { }
1079 };
1080 
1081 static struct clk_rcg2 sata_rx_clk_src = {
1082         .cmd_rcgr = 0x1ca8,
1083         .hid_width = 5,
1084         .parent_map = gcc_xo_sata_rx_map,
1085         .freq_tbl = ftbl_gcc_sata_rx_clk,
1086         .clkr.hw.init = &(struct clk_init_data){
1087                 .name = "sata_rx_clk_src",
1088                 .parent_names = gcc_xo_sata_rx,
1089                 .num_parents = 2,
1090                 .ops = &clk_rcg2_ops,
1091         },
1092 };
1093 
1094 static const struct freq_tbl ftbl_gcc_sata_rx_oob_clk[] = {
1095         F(100000000, P_GPLL0, 6, 0, 0),
1096         { }
1097 };
1098 
1099 static struct clk_rcg2 sata_rx_oob_clk_src = {
1100         .cmd_rcgr = 0x1c5c,
1101         .hid_width = 5,
1102         .parent_map = gcc_xo_gpll0_map,
1103         .freq_tbl = ftbl_gcc_sata_rx_oob_clk,
1104         .clkr.hw.init = &(struct clk_init_data){
1105                 .name = "sata_rx_oob_clk_src",
1106                 .parent_names = gcc_xo_gpll0,
1107                 .num_parents = 2,
1108                 .ops = &clk_rcg2_ops,
1109         },
1110 };
1111 
1112 static const struct freq_tbl ftbl_gcc_sdcc1_4_apps_clk[] = {
1113         F(144000, P_XO, 16, 3, 25),
1114         F(400000, P_XO, 12, 1, 4),
1115         F(20000000, P_GPLL0, 15, 1, 2),
1116         F(25000000, P_GPLL0, 12, 1, 2),
1117         F(50000000, P_GPLL0, 12, 0, 0),
1118         F(100000000, P_GPLL0, 6, 0, 0),
1119         F(192000000, P_GPLL4, 4, 0, 0),
1120         F(200000000, P_GPLL0, 3, 0, 0),
1121         F(384000000, P_GPLL4, 2, 0, 0),
1122         { }
1123 };
1124 
1125 static struct clk_rcg2 sdcc1_apps_clk_src = {
1126         .cmd_rcgr = 0x04d0,
1127         .mnd_width = 8,
1128         .hid_width = 5,
1129         .parent_map = gcc_xo_gpll0_gpll4_map,
1130         .freq_tbl = ftbl_gcc_sdcc1_4_apps_clk,
1131         .clkr.hw.init = &(struct clk_init_data){
1132                 .name = "sdcc1_apps_clk_src",
1133                 .parent_names = gcc_xo_gpll0_gpll4,
1134                 .num_parents = 3,
1135                 .ops = &clk_rcg2_floor_ops,
1136         },
1137 };
1138 
1139 static struct clk_rcg2 sdcc2_apps_clk_src = {
1140         .cmd_rcgr = 0x0510,
1141         .mnd_width = 8,
1142         .hid_width = 5,
1143         .parent_map = gcc_xo_gpll0_map,
1144         .freq_tbl = ftbl_gcc_sdcc1_4_apps_clk,
1145         .clkr.hw.init = &(struct clk_init_data){
1146                 .name = "sdcc2_apps_clk_src",
1147                 .parent_names = gcc_xo_gpll0,
1148                 .num_parents = 2,
1149                 .ops = &clk_rcg2_floor_ops,
1150         },
1151 };
1152 
1153 static struct clk_rcg2 sdcc3_apps_clk_src = {
1154         .cmd_rcgr = 0x0550,
1155         .mnd_width = 8,
1156         .hid_width = 5,
1157         .parent_map = gcc_xo_gpll0_map,
1158         .freq_tbl = ftbl_gcc_sdcc1_4_apps_clk,
1159         .clkr.hw.init = &(struct clk_init_data){
1160                 .name = "sdcc3_apps_clk_src",
1161                 .parent_names = gcc_xo_gpll0,
1162                 .num_parents = 2,
1163                 .ops = &clk_rcg2_floor_ops,
1164         },
1165 };
1166 
1167 static struct clk_rcg2 sdcc4_apps_clk_src = {
1168         .cmd_rcgr = 0x0590,
1169         .mnd_width = 8,
1170         .hid_width = 5,
1171         .parent_map = gcc_xo_gpll0_map,
1172         .freq_tbl = ftbl_gcc_sdcc1_4_apps_clk,
1173         .clkr.hw.init = &(struct clk_init_data){
1174                 .name = "sdcc4_apps_clk_src",
1175                 .parent_names = gcc_xo_gpll0,
1176                 .num_parents = 2,
1177                 .ops = &clk_rcg2_floor_ops,
1178         },
1179 };
1180 
1181 static const struct freq_tbl ftbl_gcc_tsif_ref_clk[] = {
1182         F(105000, P_XO, 2, 1, 91),
1183         { }
1184 };
1185 
1186 static struct clk_rcg2 tsif_ref_clk_src = {
1187         .cmd_rcgr = 0x0d90,
1188         .mnd_width = 8,
1189         .hid_width = 5,
1190         .parent_map = gcc_xo_gpll0_map,
1191         .freq_tbl = ftbl_gcc_tsif_ref_clk,
1192         .clkr.hw.init = &(struct clk_init_data){
1193                 .name = "tsif_ref_clk_src",
1194                 .parent_names = gcc_xo_gpll0,
1195                 .num_parents = 2,
1196                 .ops = &clk_rcg2_ops,
1197         },
1198 };
1199 
1200 static const struct freq_tbl ftbl_gcc_usb30_mock_utmi_clk[] = {
1201         F(60000000, P_GPLL0, 10, 0, 0),
1202         { }
1203 };
1204 
1205 static struct clk_rcg2 usb30_mock_utmi_clk_src = {
1206         .cmd_rcgr = 0x03e8,
1207         .hid_width = 5,
1208         .parent_map = gcc_xo_gpll0_map,
1209         .freq_tbl = ftbl_gcc_usb30_mock_utmi_clk,
1210         .clkr.hw.init = &(struct clk_init_data){
1211                 .name = "usb30_mock_utmi_clk_src",
1212                 .parent_names = gcc_xo_gpll0,
1213                 .num_parents = 2,
1214                 .ops = &clk_rcg2_ops,
1215         },
1216 };
1217 
1218 static const struct freq_tbl ftbl_gcc_usb30_sec_mock_utmi_clk[] = {
1219         F(125000000, P_GPLL0, 1, 5, 24),
1220         { }
1221 };
1222 
1223 static struct clk_rcg2 usb30_sec_mock_utmi_clk_src = {
1224         .cmd_rcgr = 0x1be8,
1225         .hid_width = 5,
1226         .parent_map = gcc_xo_gpll0_map,
1227         .freq_tbl = ftbl_gcc_usb30_sec_mock_utmi_clk,
1228         .clkr.hw.init = &(struct clk_init_data){
1229                 .name = "usb30_sec_mock_utmi_clk_src",
1230                 .parent_names = gcc_xo_gpll0,
1231                 .num_parents = 2,
1232                 .ops = &clk_rcg2_ops,
1233         },
1234 };
1235 
1236 static const struct freq_tbl ftbl_gcc_usb_hs_system_clk[] = {
1237         F(75000000, P_GPLL0, 8, 0, 0),
1238         { }
1239 };
1240 
1241 static struct clk_rcg2 usb_hs_system_clk_src = {
1242         .cmd_rcgr = 0x0490,
1243         .hid_width = 5,
1244         .parent_map = gcc_xo_gpll0_map,
1245         .freq_tbl = ftbl_gcc_usb_hs_system_clk,
1246         .clkr.hw.init = &(struct clk_init_data){
1247                 .name = "usb_hs_system_clk_src",
1248                 .parent_names = gcc_xo_gpll0,
1249                 .num_parents = 2,
1250                 .ops = &clk_rcg2_ops,
1251         },
1252 };
1253 
1254 static const struct freq_tbl ftbl_gcc_usb_hsic_clk[] = {
1255         F(480000000, P_GPLL1, 1, 0, 0),
1256         { }
1257 };
1258 
1259 static const struct parent_map usb_hsic_clk_src_map[] = {
1260         { P_XO, 0 },
1261         { P_GPLL1, 4 }
1262 };
1263 
1264 static struct clk_rcg2 usb_hsic_clk_src = {
1265         .cmd_rcgr = 0x0440,
1266         .hid_width = 5,
1267         .parent_map = usb_hsic_clk_src_map,
1268         .freq_tbl = ftbl_gcc_usb_hsic_clk,
1269         .clkr.hw.init = &(struct clk_init_data){
1270                 .name = "usb_hsic_clk_src",
1271                 .parent_names = (const char *[]){
1272                         "xo",
1273                         "gpll1_vote",
1274                 },
1275                 .num_parents = 2,
1276                 .ops = &clk_rcg2_ops,
1277         },
1278 };
1279 
1280 static const struct freq_tbl ftbl_gcc_usb_hsic_ahb_clk_src[] = {
1281         F(60000000, P_GPLL1, 8, 0, 0),
1282         { }
1283 };
1284 
1285 static struct clk_rcg2 usb_hsic_ahb_clk_src = {
1286         .cmd_rcgr = 0x046c,
1287         .mnd_width = 8,
1288         .hid_width = 5,
1289         .parent_map = usb_hsic_clk_src_map,
1290         .freq_tbl = ftbl_gcc_usb_hsic_ahb_clk_src,
1291         .clkr.hw.init = &(struct clk_init_data){
1292                 .name = "usb_hsic_ahb_clk_src",
1293                 .parent_names = (const char *[]){
1294                         "xo",
1295                         "gpll1_vote",
1296                 },
1297                 .num_parents = 2,
1298                 .ops = &clk_rcg2_ops,
1299         },
1300 };
1301 
1302 static const struct freq_tbl ftbl_gcc_usb_hsic_io_cal_clk[] = {
1303         F(9600000, P_XO, 2, 0, 0),
1304         { }
1305 };
1306 
1307 static struct clk_rcg2 usb_hsic_io_cal_clk_src = {
1308         .cmd_rcgr = 0x0458,
1309         .hid_width = 5,
1310         .parent_map = gcc_xo_gpll0_map,
1311         .freq_tbl = ftbl_gcc_usb_hsic_io_cal_clk,
1312         .clkr.hw.init = &(struct clk_init_data){
1313                 .name = "usb_hsic_io_cal_clk_src",
1314                 .parent_names = gcc_xo_gpll0,
1315                 .num_parents = 1,
1316                 .ops = &clk_rcg2_ops,
1317         },
1318 };
1319 
1320 static struct clk_branch gcc_usb_hsic_mock_utmi_clk = {
1321         .halt_reg = 0x1f14,
1322         .clkr = {
1323                 .enable_reg = 0x1f14,
1324                 .enable_mask = BIT(0),
1325                 .hw.init = &(struct clk_init_data){
1326                         .name = "gcc_usb_hsic_mock_utmi_clk",
1327                         .parent_names = (const char *[]){
1328                                 "usb_hsic_mock_utmi_clk_src",
1329                         },
1330                         .num_parents = 1,
1331                         .flags = CLK_SET_RATE_PARENT,
1332                         .ops = &clk_branch2_ops,
1333                 },
1334         },
1335 };
1336 
1337 static const struct freq_tbl ftbl_gcc_usb_hsic_mock_utmi_clk[] = {
1338         F(60000000, P_GPLL0, 10, 0, 0),
1339         { }
1340 };
1341 
1342 static struct clk_rcg2 usb_hsic_mock_utmi_clk_src = {
1343         .cmd_rcgr = 0x1f00,
1344         .hid_width = 5,
1345         .parent_map = gcc_xo_gpll0_map,
1346         .freq_tbl = ftbl_gcc_usb_hsic_mock_utmi_clk,
1347         .clkr.hw.init = &(struct clk_init_data){
1348                 .name = "usb_hsic_mock_utmi_clk_src",
1349                 .parent_names = gcc_xo_gpll0,
1350                 .num_parents = 1,
1351                 .ops = &clk_rcg2_ops,
1352         },
1353 };
1354 
1355 static const struct freq_tbl ftbl_gcc_usb_hsic_system_clk[] = {
1356         F(75000000, P_GPLL0, 8, 0, 0),
1357         { }
1358 };
1359 
1360 static struct clk_rcg2 usb_hsic_system_clk_src = {
1361         .cmd_rcgr = 0x041c,
1362         .hid_width = 5,
1363         .parent_map = gcc_xo_gpll0_map,
1364         .freq_tbl = ftbl_gcc_usb_hsic_system_clk,
1365         .clkr.hw.init = &(struct clk_init_data){
1366                 .name = "usb_hsic_system_clk_src",
1367                 .parent_names = gcc_xo_gpll0,
1368                 .num_parents = 2,
1369                 .ops = &clk_rcg2_ops,
1370         },
1371 };
1372 
1373 static struct clk_branch gcc_bam_dma_ahb_clk = {
1374         .halt_reg = 0x0d44,
1375         .halt_check = BRANCH_HALT_VOTED,
1376         .clkr = {
1377                 .enable_reg = 0x1484,
1378                 .enable_mask = BIT(12),
1379                 .hw.init = &(struct clk_init_data){
1380                         .name = "gcc_bam_dma_ahb_clk",
1381                         .parent_names = (const char *[]){
1382                                 "periph_noc_clk_src",
1383                         },
1384                         .num_parents = 1,
1385                         .ops = &clk_branch2_ops,
1386                 },
1387         },
1388 };
1389 
1390 static struct clk_branch gcc_blsp1_ahb_clk = {
1391         .halt_reg = 0x05c4,
1392         .halt_check = BRANCH_HALT_VOTED,
1393         .clkr = {
1394                 .enable_reg = 0x1484,
1395                 .enable_mask = BIT(17),
1396                 .hw.init = &(struct clk_init_data){
1397                         .name = "gcc_blsp1_ahb_clk",
1398                         .parent_names = (const char *[]){
1399                                 "periph_noc_clk_src",
1400                         },
1401                         .num_parents = 1,
1402                         .ops = &clk_branch2_ops,
1403                 },
1404         },
1405 };
1406 
1407 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1408         .halt_reg = 0x0648,
1409         .clkr = {
1410                 .enable_reg = 0x0648,
1411                 .enable_mask = BIT(0),
1412                 .hw.init = &(struct clk_init_data){
1413                         .name = "gcc_blsp1_qup1_i2c_apps_clk",
1414                         .parent_names = (const char *[]){
1415                                 "blsp1_qup1_i2c_apps_clk_src",
1416                         },
1417                         .num_parents = 1,
1418                         .flags = CLK_SET_RATE_PARENT,
1419                         .ops = &clk_branch2_ops,
1420                 },
1421         },
1422 };
1423 
1424 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1425         .halt_reg = 0x0644,
1426         .clkr = {
1427                 .enable_reg = 0x0644,
1428                 .enable_mask = BIT(0),
1429                 .hw.init = &(struct clk_init_data){
1430                         .name = "gcc_blsp1_qup1_spi_apps_clk",
1431                         .parent_names = (const char *[]){
1432                                 "blsp1_qup1_spi_apps_clk_src",
1433                         },
1434                         .num_parents = 1,
1435                         .flags = CLK_SET_RATE_PARENT,
1436                         .ops = &clk_branch2_ops,
1437                 },
1438         },
1439 };
1440 
1441 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1442         .halt_reg = 0x06c8,
1443         .clkr = {
1444                 .enable_reg = 0x06c8,
1445                 .enable_mask = BIT(0),
1446                 .hw.init = &(struct clk_init_data){
1447                         .name = "gcc_blsp1_qup2_i2c_apps_clk",
1448                         .parent_names = (const char *[]){
1449                                 "blsp1_qup2_i2c_apps_clk_src",
1450                         },
1451                         .num_parents = 1,
1452                         .flags = CLK_SET_RATE_PARENT,
1453                         .ops = &clk_branch2_ops,
1454                 },
1455         },
1456 };
1457 
1458 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1459         .halt_reg = 0x06c4,
1460         .clkr = {
1461                 .enable_reg = 0x06c4,
1462                 .enable_mask = BIT(0),
1463                 .hw.init = &(struct clk_init_data){
1464                         .name = "gcc_blsp1_qup2_spi_apps_clk",
1465                         .parent_names = (const char *[]){
1466                                 "blsp1_qup2_spi_apps_clk_src",
1467                         },
1468                         .num_parents = 1,
1469                         .flags = CLK_SET_RATE_PARENT,
1470                         .ops = &clk_branch2_ops,
1471                 },
1472         },
1473 };
1474 
1475 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1476         .halt_reg = 0x0748,
1477         .clkr = {
1478                 .enable_reg = 0x0748,
1479                 .enable_mask = BIT(0),
1480                 .hw.init = &(struct clk_init_data){
1481                         .name = "gcc_blsp1_qup3_i2c_apps_clk",
1482                         .parent_names = (const char *[]){
1483                                 "blsp1_qup3_i2c_apps_clk_src",
1484                         },
1485                         .num_parents = 1,
1486                         .flags = CLK_SET_RATE_PARENT,
1487                         .ops = &clk_branch2_ops,
1488                 },
1489         },
1490 };
1491 
1492 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1493         .halt_reg = 0x0744,
1494         .clkr = {
1495                 .enable_reg = 0x0744,
1496                 .enable_mask = BIT(0),
1497                 .hw.init = &(struct clk_init_data){
1498                         .name = "gcc_blsp1_qup3_spi_apps_clk",
1499                         .parent_names = (const char *[]){
1500                                 "blsp1_qup3_spi_apps_clk_src",
1501                         },
1502                         .num_parents = 1,
1503                         .flags = CLK_SET_RATE_PARENT,
1504                         .ops = &clk_branch2_ops,
1505                 },
1506         },
1507 };
1508 
1509 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1510         .halt_reg = 0x07c8,
1511         .clkr = {
1512                 .enable_reg = 0x07c8,
1513                 .enable_mask = BIT(0),
1514                 .hw.init = &(struct clk_init_data){
1515                         .name = "gcc_blsp1_qup4_i2c_apps_clk",
1516                         .parent_names = (const char *[]){
1517                                 "blsp1_qup4_i2c_apps_clk_src",
1518                         },
1519                         .num_parents = 1,
1520                         .flags = CLK_SET_RATE_PARENT,
1521                         .ops = &clk_branch2_ops,
1522                 },
1523         },
1524 };
1525 
1526 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1527         .halt_reg = 0x07c4,
1528         .clkr = {
1529                 .enable_reg = 0x07c4,
1530                 .enable_mask = BIT(0),
1531                 .hw.init = &(struct clk_init_data){
1532                         .name = "gcc_blsp1_qup4_spi_apps_clk",
1533                         .parent_names = (const char *[]){
1534                                 "blsp1_qup4_spi_apps_clk_src",
1535                         },
1536                         .num_parents = 1,
1537                         .flags = CLK_SET_RATE_PARENT,
1538                         .ops = &clk_branch2_ops,
1539                 },
1540         },
1541 };
1542 
1543 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1544         .halt_reg = 0x0848,
1545         .clkr = {
1546                 .enable_reg = 0x0848,
1547                 .enable_mask = BIT(0),
1548                 .hw.init = &(struct clk_init_data){
1549                         .name = "gcc_blsp1_qup5_i2c_apps_clk",
1550                         .parent_names = (const char *[]){
1551                                 "blsp1_qup5_i2c_apps_clk_src",
1552                         },
1553                         .num_parents = 1,
1554                         .flags = CLK_SET_RATE_PARENT,
1555                         .ops = &clk_branch2_ops,
1556                 },
1557         },
1558 };
1559 
1560 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1561         .halt_reg = 0x0844,
1562         .clkr = {
1563                 .enable_reg = 0x0844,
1564                 .enable_mask = BIT(0),
1565                 .hw.init = &(struct clk_init_data){
1566                         .name = "gcc_blsp1_qup5_spi_apps_clk",
1567                         .parent_names = (const char *[]){
1568                                 "blsp1_qup5_spi_apps_clk_src",
1569                         },
1570                         .num_parents = 1,
1571                         .flags = CLK_SET_RATE_PARENT,
1572                         .ops = &clk_branch2_ops,
1573                 },
1574         },
1575 };
1576 
1577 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1578         .halt_reg = 0x08c8,
1579         .clkr = {
1580                 .enable_reg = 0x08c8,
1581                 .enable_mask = BIT(0),
1582                 .hw.init = &(struct clk_init_data){
1583                         .name = "gcc_blsp1_qup6_i2c_apps_clk",
1584                         .parent_names = (const char *[]){
1585                                 "blsp1_qup6_i2c_apps_clk_src",
1586                         },
1587                         .num_parents = 1,
1588                         .flags = CLK_SET_RATE_PARENT,
1589                         .ops = &clk_branch2_ops,
1590                 },
1591         },
1592 };
1593 
1594 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1595         .halt_reg = 0x08c4,
1596         .clkr = {
1597                 .enable_reg = 0x08c4,
1598                 .enable_mask = BIT(0),
1599                 .hw.init = &(struct clk_init_data){
1600                         .name = "gcc_blsp1_qup6_spi_apps_clk",
1601                         .parent_names = (const char *[]){
1602                                 "blsp1_qup6_spi_apps_clk_src",
1603                         },
1604                         .num_parents = 1,
1605                         .flags = CLK_SET_RATE_PARENT,
1606                         .ops = &clk_branch2_ops,
1607                 },
1608         },
1609 };
1610 
1611 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1612         .halt_reg = 0x0684,
1613         .clkr = {
1614                 .enable_reg = 0x0684,
1615                 .enable_mask = BIT(0),
1616                 .hw.init = &(struct clk_init_data){
1617                         .name = "gcc_blsp1_uart1_apps_clk",
1618                         .parent_names = (const char *[]){
1619                                 "blsp1_uart1_apps_clk_src",
1620                         },
1621                         .num_parents = 1,
1622                         .flags = CLK_SET_RATE_PARENT,
1623                         .ops = &clk_branch2_ops,
1624                 },
1625         },
1626 };
1627 
1628 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1629         .halt_reg = 0x0704,
1630         .clkr = {
1631                 .enable_reg = 0x0704,
1632                 .enable_mask = BIT(0),
1633                 .hw.init = &(struct clk_init_data){
1634                         .name = "gcc_blsp1_uart2_apps_clk",
1635                         .parent_names = (const char *[]){
1636                                 "blsp1_uart2_apps_clk_src",
1637                         },
1638                         .num_parents = 1,
1639                         .flags = CLK_SET_RATE_PARENT,
1640                         .ops = &clk_branch2_ops,
1641                 },
1642         },
1643 };
1644 
1645 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1646         .halt_reg = 0x0784,
1647         .clkr = {
1648                 .enable_reg = 0x0784,
1649                 .enable_mask = BIT(0),
1650                 .hw.init = &(struct clk_init_data){
1651                         .name = "gcc_blsp1_uart3_apps_clk",
1652                         .parent_names = (const char *[]){
1653                                 "blsp1_uart3_apps_clk_src",
1654                         },
1655                         .num_parents = 1,
1656                         .flags = CLK_SET_RATE_PARENT,
1657                         .ops = &clk_branch2_ops,
1658                 },
1659         },
1660 };
1661 
1662 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1663         .halt_reg = 0x0804,
1664         .clkr = {
1665                 .enable_reg = 0x0804,
1666                 .enable_mask = BIT(0),
1667                 .hw.init = &(struct clk_init_data){
1668                         .name = "gcc_blsp1_uart4_apps_clk",
1669                         .parent_names = (const char *[]){
1670                                 "blsp1_uart4_apps_clk_src",
1671                         },
1672                         .num_parents = 1,
1673                         .flags = CLK_SET_RATE_PARENT,
1674                         .ops = &clk_branch2_ops,
1675                 },
1676         },
1677 };
1678 
1679 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1680         .halt_reg = 0x0884,
1681         .clkr = {
1682                 .enable_reg = 0x0884,
1683                 .enable_mask = BIT(0),
1684                 .hw.init = &(struct clk_init_data){
1685                         .name = "gcc_blsp1_uart5_apps_clk",
1686                         .parent_names = (const char *[]){
1687                                 "blsp1_uart5_apps_clk_src",
1688                         },
1689                         .num_parents = 1,
1690                         .flags = CLK_SET_RATE_PARENT,
1691                         .ops = &clk_branch2_ops,
1692                 },
1693         },
1694 };
1695 
1696 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1697         .halt_reg = 0x0904,
1698         .clkr = {
1699                 .enable_reg = 0x0904,
1700                 .enable_mask = BIT(0),
1701                 .hw.init = &(struct clk_init_data){
1702                         .name = "gcc_blsp1_uart6_apps_clk",
1703                         .parent_names = (const char *[]){
1704                                 "blsp1_uart6_apps_clk_src",
1705                         },
1706                         .num_parents = 1,
1707                         .flags = CLK_SET_RATE_PARENT,
1708                         .ops = &clk_branch2_ops,
1709                 },
1710         },
1711 };
1712 
1713 static struct clk_branch gcc_blsp2_ahb_clk = {
1714         .halt_reg = 0x0944,
1715         .halt_check = BRANCH_HALT_VOTED,
1716         .clkr = {
1717                 .enable_reg = 0x1484,
1718                 .enable_mask = BIT(15),
1719                 .hw.init = &(struct clk_init_data){
1720                         .name = "gcc_blsp2_ahb_clk",
1721                         .parent_names = (const char *[]){
1722                                 "periph_noc_clk_src",
1723                         },
1724                         .num_parents = 1,
1725                         .ops = &clk_branch2_ops,
1726                 },
1727         },
1728 };
1729 
1730 static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1731         .halt_reg = 0x0988,
1732         .clkr = {
1733                 .enable_reg = 0x0988,
1734                 .enable_mask = BIT(0),
1735                 .hw.init = &(struct clk_init_data){
1736                         .name = "gcc_blsp2_qup1_i2c_apps_clk",
1737                         .parent_names = (const char *[]){
1738                                 "blsp2_qup1_i2c_apps_clk_src",
1739                         },
1740                         .num_parents = 1,
1741                         .flags = CLK_SET_RATE_PARENT,
1742                         .ops = &clk_branch2_ops,
1743                 },
1744         },
1745 };
1746 
1747 static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1748         .halt_reg = 0x0984,
1749         .clkr = {
1750                 .enable_reg = 0x0984,
1751                 .enable_mask = BIT(0),
1752                 .hw.init = &(struct clk_init_data){
1753                         .name = "gcc_blsp2_qup1_spi_apps_clk",
1754                         .parent_names = (const char *[]){
1755                                 "blsp2_qup1_spi_apps_clk_src",
1756                         },
1757                         .num_parents = 1,
1758                         .flags = CLK_SET_RATE_PARENT,
1759                         .ops = &clk_branch2_ops,
1760                 },
1761         },
1762 };
1763 
1764 static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1765         .halt_reg = 0x0a08,
1766         .clkr = {
1767                 .enable_reg = 0x0a08,
1768                 .enable_mask = BIT(0),
1769                 .hw.init = &(struct clk_init_data){
1770                         .name = "gcc_blsp2_qup2_i2c_apps_clk",
1771                         .parent_names = (const char *[]){
1772                                 "blsp2_qup2_i2c_apps_clk_src",
1773                         },
1774                         .num_parents = 1,
1775                         .flags = CLK_SET_RATE_PARENT,
1776                         .ops = &clk_branch2_ops,
1777                 },
1778         },
1779 };
1780 
1781 static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1782         .halt_reg = 0x0a04,
1783         .clkr = {
1784                 .enable_reg = 0x0a04,
1785                 .enable_mask = BIT(0),
1786                 .hw.init = &(struct clk_init_data){
1787                         .name = "gcc_blsp2_qup2_spi_apps_clk",
1788                         .parent_names = (const char *[]){
1789                                 "blsp2_qup2_spi_apps_clk_src",
1790                         },
1791                         .num_parents = 1,
1792                         .flags = CLK_SET_RATE_PARENT,
1793                         .ops = &clk_branch2_ops,
1794                 },
1795         },
1796 };
1797 
1798 static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1799         .halt_reg = 0x0a88,
1800         .clkr = {
1801                 .enable_reg = 0x0a88,
1802                 .enable_mask = BIT(0),
1803                 .hw.init = &(struct clk_init_data){
1804                         .name = "gcc_blsp2_qup3_i2c_apps_clk",
1805                         .parent_names = (const char *[]){
1806                                 "blsp2_qup3_i2c_apps_clk_src",
1807                         },
1808                         .num_parents = 1,
1809                         .flags = CLK_SET_RATE_PARENT,
1810                         .ops = &clk_branch2_ops,
1811                 },
1812         },
1813 };
1814 
1815 static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1816         .halt_reg = 0x0a84,
1817         .clkr = {
1818                 .enable_reg = 0x0a84,
1819                 .enable_mask = BIT(0),
1820                 .hw.init = &(struct clk_init_data){
1821                         .name = "gcc_blsp2_qup3_spi_apps_clk",
1822                         .parent_names = (const char *[]){
1823                                 "blsp2_qup3_spi_apps_clk_src",
1824                         },
1825                         .num_parents = 1,
1826                         .flags = CLK_SET_RATE_PARENT,
1827                         .ops = &clk_branch2_ops,
1828                 },
1829         },
1830 };
1831 
1832 static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1833         .halt_reg = 0x0b08,
1834         .clkr = {
1835                 .enable_reg = 0x0b08,
1836                 .enable_mask = BIT(0),
1837                 .hw.init = &(struct clk_init_data){
1838                         .name = "gcc_blsp2_qup4_i2c_apps_clk",
1839                         .parent_names = (const char *[]){
1840                                 "blsp2_qup4_i2c_apps_clk_src",
1841                         },
1842                         .num_parents = 1,
1843                         .flags = CLK_SET_RATE_PARENT,
1844                         .ops = &clk_branch2_ops,
1845                 },
1846         },
1847 };
1848 
1849 static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1850         .halt_reg = 0x0b04,
1851         .clkr = {
1852                 .enable_reg = 0x0b04,
1853                 .enable_mask = BIT(0),
1854                 .hw.init = &(struct clk_init_data){
1855                         .name = "gcc_blsp2_qup4_spi_apps_clk",
1856                         .parent_names = (const char *[]){
1857                                 "blsp2_qup4_spi_apps_clk_src",
1858                         },
1859                         .num_parents = 1,
1860                         .flags = CLK_SET_RATE_PARENT,
1861                         .ops = &clk_branch2_ops,
1862                 },
1863         },
1864 };
1865 
1866 static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1867         .halt_reg = 0x0b88,
1868         .clkr = {
1869                 .enable_reg = 0x0b88,
1870                 .enable_mask = BIT(0),
1871                 .hw.init = &(struct clk_init_data){
1872                         .name = "gcc_blsp2_qup5_i2c_apps_clk",
1873                         .parent_names = (const char *[]){
1874                                 "blsp2_qup5_i2c_apps_clk_src",
1875                         },
1876                         .num_parents = 1,
1877                         .flags = CLK_SET_RATE_PARENT,
1878                         .ops = &clk_branch2_ops,
1879                 },
1880         },
1881 };
1882 
1883 static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = {
1884         .halt_reg = 0x0b84,
1885         .clkr = {
1886                 .enable_reg = 0x0b84,
1887                 .enable_mask = BIT(0),
1888                 .hw.init = &(struct clk_init_data){
1889                         .name = "gcc_blsp2_qup5_spi_apps_clk",
1890                         .parent_names = (const char *[]){
1891                                 "blsp2_qup5_spi_apps_clk_src",
1892                         },
1893                         .num_parents = 1,
1894                         .flags = CLK_SET_RATE_PARENT,
1895                         .ops = &clk_branch2_ops,
1896                 },
1897         },
1898 };
1899 
1900 static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1901         .halt_reg = 0x0c08,
1902         .clkr = {
1903                 .enable_reg = 0x0c08,
1904                 .enable_mask = BIT(0),
1905                 .hw.init = &(struct clk_init_data){
1906                         .name = "gcc_blsp2_qup6_i2c_apps_clk",
1907                         .parent_names = (const char *[]){
1908                                 "blsp2_qup6_i2c_apps_clk_src",
1909                         },
1910                         .num_parents = 1,
1911                         .flags = CLK_SET_RATE_PARENT,
1912                         .ops = &clk_branch2_ops,
1913                 },
1914         },
1915 };
1916 
1917 static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1918         .halt_reg = 0x0c04,
1919         .clkr = {
1920                 .enable_reg = 0x0c04,
1921                 .enable_mask = BIT(0),
1922                 .hw.init = &(struct clk_init_data){
1923                         .name = "gcc_blsp2_qup6_spi_apps_clk",
1924                         .parent_names = (const char *[]){
1925                                 "blsp2_qup6_spi_apps_clk_src",
1926                         },
1927                         .num_parents = 1,
1928                         .flags = CLK_SET_RATE_PARENT,
1929                         .ops = &clk_branch2_ops,
1930                 },
1931         },
1932 };
1933 
1934 static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1935         .halt_reg = 0x09c4,
1936         .clkr = {
1937                 .enable_reg = 0x09c4,
1938                 .enable_mask = BIT(0),
1939                 .hw.init = &(struct clk_init_data){
1940                         .name = "gcc_blsp2_uart1_apps_clk",
1941                         .parent_names = (const char *[]){
1942                                 "blsp2_uart1_apps_clk_src",
1943                         },
1944                         .num_parents = 1,
1945                         .flags = CLK_SET_RATE_PARENT,
1946                         .ops = &clk_branch2_ops,
1947                 },
1948         },
1949 };
1950 
1951 static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1952         .halt_reg = 0x0a44,
1953         .clkr = {
1954                 .enable_reg = 0x0a44,
1955                 .enable_mask = BIT(0),
1956                 .hw.init = &(struct clk_init_data){
1957                         .name = "gcc_blsp2_uart2_apps_clk",
1958                         .parent_names = (const char *[]){
1959                                 "blsp2_uart2_apps_clk_src",
1960                         },
1961                         .num_parents = 1,
1962                         .flags = CLK_SET_RATE_PARENT,
1963                         .ops = &clk_branch2_ops,
1964                 },
1965         },
1966 };
1967 
1968 static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1969         .halt_reg = 0x0ac4,
1970         .clkr = {
1971                 .enable_reg = 0x0ac4,
1972                 .enable_mask = BIT(0),
1973                 .hw.init = &(struct clk_init_data){
1974                         .name = "gcc_blsp2_uart3_apps_clk",
1975                         .parent_names = (const char *[]){
1976                                 "blsp2_uart3_apps_clk_src",
1977                         },
1978                         .num_parents = 1,
1979                         .flags = CLK_SET_RATE_PARENT,
1980                         .ops = &clk_branch2_ops,
1981                 },
1982         },
1983 };
1984 
1985 static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1986         .halt_reg = 0x0b44,
1987         .clkr = {
1988                 .enable_reg = 0x0b44,
1989                 .enable_mask = BIT(0),
1990                 .hw.init = &(struct clk_init_data){
1991                         .name = "gcc_blsp2_uart4_apps_clk",
1992                         .parent_names = (const char *[]){
1993                                 "blsp2_uart4_apps_clk_src",
1994                         },
1995                         .num_parents = 1,
1996                         .flags = CLK_SET_RATE_PARENT,
1997                         .ops = &clk_branch2_ops,
1998                 },
1999         },
2000 };
2001 
2002 static struct clk_branch gcc_blsp2_uart5_apps_clk = {
2003         .halt_reg = 0x0bc4,
2004         .clkr = {
2005                 .enable_reg = 0x0bc4,
2006                 .enable_mask = BIT(0),
2007                 .hw.init = &(struct clk_init_data){
2008                         .name = "gcc_blsp2_uart5_apps_clk",
2009                         .parent_names = (const char *[]){
2010                                 "blsp2_uart5_apps_clk_src",
2011                         },
2012                         .num_parents = 1,
2013                         .flags = CLK_SET_RATE_PARENT,
2014                         .ops = &clk_branch2_ops,
2015                 },
2016         },
2017 };
2018 
2019 static struct clk_branch gcc_blsp2_uart6_apps_clk = {
2020         .halt_reg = 0x0c44,
2021         .clkr = {
2022                 .enable_reg = 0x0c44,
2023                 .enable_mask = BIT(0),
2024                 .hw.init = &(struct clk_init_data){
2025                         .name = "gcc_blsp2_uart6_apps_clk",
2026                         .parent_names = (const char *[]){
2027                                 "blsp2_uart6_apps_clk_src",
2028                         },
2029                         .num_parents = 1,
2030                         .flags = CLK_SET_RATE_PARENT,
2031                         .ops = &clk_branch2_ops,
2032                 },
2033         },
2034 };
2035 
2036 static struct clk_branch gcc_boot_rom_ahb_clk = {
2037         .halt_reg = 0x0e04,
2038         .halt_check = BRANCH_HALT_VOTED,
2039         .clkr = {
2040                 .enable_reg = 0x1484,
2041                 .enable_mask = BIT(10),
2042                 .hw.init = &(struct clk_init_data){
2043                         .name = "gcc_boot_rom_ahb_clk",
2044                         .parent_names = (const char *[]){
2045                                 "config_noc_clk_src",
2046                         },
2047                         .num_parents = 1,
2048                         .ops = &clk_branch2_ops,
2049                 },
2050         },
2051 };
2052 
2053 static struct clk_branch gcc_ce1_ahb_clk = {
2054         .halt_reg = 0x104c,
2055         .halt_check = BRANCH_HALT_VOTED,
2056         .clkr = {
2057                 .enable_reg = 0x1484,
2058                 .enable_mask = BIT(3),
2059                 .hw.init = &(struct clk_init_data){
2060                         .name = "gcc_ce1_ahb_clk",
2061                         .parent_names = (const char *[]){
2062                                 "config_noc_clk_src",
2063                         },
2064                         .num_parents = 1,
2065                         .ops = &clk_branch2_ops,
2066                 },
2067         },
2068 };
2069 
2070 static struct clk_branch gcc_ce1_axi_clk = {
2071         .halt_reg = 0x1048,
2072         .halt_check = BRANCH_HALT_VOTED,
2073         .clkr = {
2074                 .enable_reg = 0x1484,
2075                 .enable_mask = BIT(4),
2076                 .hw.init = &(struct clk_init_data){
2077                         .name = "gcc_ce1_axi_clk",
2078                         .parent_names = (const char *[]){
2079                                 "system_noc_clk_src",
2080                         },
2081                         .num_parents = 1,
2082                         .ops = &clk_branch2_ops,
2083                 },
2084         },
2085 };
2086 
2087 static struct clk_branch gcc_ce1_clk = {
2088         .halt_reg = 0x1050,
2089         .halt_check = BRANCH_HALT_VOTED,
2090         .clkr = {
2091                 .enable_reg = 0x1484,
2092                 .enable_mask = BIT(5),
2093                 .hw.init = &(struct clk_init_data){
2094                         .name = "gcc_ce1_clk",
2095                         .parent_names = (const char *[]){
2096                                 "ce1_clk_src",
2097                         },
2098                         .num_parents = 1,
2099                         .flags = CLK_SET_RATE_PARENT,
2100                         .ops = &clk_branch2_ops,
2101                 },
2102         },
2103 };
2104 
2105 static struct clk_branch gcc_ce2_ahb_clk = {
2106         .halt_reg = 0x108c,
2107         .halt_check = BRANCH_HALT_VOTED,
2108         .clkr = {
2109                 .enable_reg = 0x1484,
2110                 .enable_mask = BIT(0),
2111                 .hw.init = &(struct clk_init_data){
2112                         .name = "gcc_ce2_ahb_clk",
2113                         .parent_names = (const char *[]){
2114                                 "config_noc_clk_src",
2115                         },
2116                         .num_parents = 1,
2117                         .ops = &clk_branch2_ops,
2118                 },
2119         },
2120 };
2121 
2122 static struct clk_branch gcc_ce2_axi_clk = {
2123         .halt_reg = 0x1088,
2124         .halt_check = BRANCH_HALT_VOTED,
2125         .clkr = {
2126                 .enable_reg = 0x1484,
2127                 .enable_mask = BIT(1),
2128                 .hw.init = &(struct clk_init_data){
2129                         .name = "gcc_ce2_axi_clk",
2130                         .parent_names = (const char *[]){
2131                                 "system_noc_clk_src",
2132                         },
2133                         .num_parents = 1,
2134                         .ops = &clk_branch2_ops,
2135                 },
2136         },
2137 };
2138 
2139 static struct clk_branch gcc_ce2_clk = {
2140         .halt_reg = 0x1090,
2141         .halt_check = BRANCH_HALT_VOTED,
2142         .clkr = {
2143                 .enable_reg = 0x1484,
2144                 .enable_mask = BIT(2),
2145                 .hw.init = &(struct clk_init_data){
2146                         .name = "gcc_ce2_clk",
2147                         .parent_names = (const char *[]){
2148                                 "ce2_clk_src",
2149                         },
2150                         .num_parents = 1,
2151                         .flags = CLK_SET_RATE_PARENT,
2152                         .ops = &clk_branch2_ops,
2153                 },
2154         },
2155 };
2156 
2157 static struct clk_branch gcc_ce3_ahb_clk = {
2158         .halt_reg = 0x1d0c,
2159         .halt_check = BRANCH_HALT_VOTED,
2160         .clkr = {
2161                 .enable_reg = 0x1d0c,
2162                 .enable_mask = BIT(0),
2163                 .hw.init = &(struct clk_init_data){
2164                         .name = "gcc_ce3_ahb_clk",
2165                         .parent_names = (const char *[]){
2166                                 "config_noc_clk_src",
2167                         },
2168                         .num_parents = 1,
2169                         .ops = &clk_branch2_ops,
2170                 },
2171         },
2172 };
2173 
2174 static struct clk_branch gcc_ce3_axi_clk = {
2175         .halt_reg = 0x1088,
2176         .halt_check = BRANCH_HALT_VOTED,
2177         .clkr = {
2178                 .enable_reg = 0x1d08,
2179                 .enable_mask = BIT(0),
2180                 .hw.init = &(struct clk_init_data){
2181                         .name = "gcc_ce3_axi_clk",
2182                         .parent_names = (const char *[]){
2183                                 "system_noc_clk_src",
2184                         },
2185                         .num_parents = 1,
2186                         .ops = &clk_branch2_ops,
2187                 },
2188         },
2189 };
2190 
2191 static struct clk_branch gcc_ce3_clk = {
2192         .halt_reg = 0x1090,
2193         .halt_check = BRANCH_HALT_VOTED,
2194         .clkr = {
2195                 .enable_reg = 0x1d04,
2196                 .enable_mask = BIT(0),
2197                 .hw.init = &(struct clk_init_data){
2198                         .name = "gcc_ce3_clk",
2199                         .parent_names = (const char *[]){
2200                                 "ce3_clk_src",
2201                         },
2202                         .num_parents = 1,
2203                         .flags = CLK_SET_RATE_PARENT,
2204                         .ops = &clk_branch2_ops,
2205                 },
2206         },
2207 };
2208 
2209 static struct clk_branch gcc_gp1_clk = {
2210         .halt_reg = 0x1900,
2211         .clkr = {
2212                 .enable_reg = 0x1900,
2213                 .enable_mask = BIT(0),
2214                 .hw.init = &(struct clk_init_data){
2215                         .name = "gcc_gp1_clk",
2216                         .parent_names = (const char *[]){
2217                                 "gp1_clk_src",
2218                         },
2219                         .num_parents = 1,
2220                         .flags = CLK_SET_RATE_PARENT,
2221                         .ops = &clk_branch2_ops,
2222                 },
2223         },
2224 };
2225 
2226 static struct clk_branch gcc_gp2_clk = {
2227         .halt_reg = 0x1940,
2228         .clkr = {
2229                 .enable_reg = 0x1940,
2230                 .enable_mask = BIT(0),
2231                 .hw.init = &(struct clk_init_data){
2232                         .name = "gcc_gp2_clk",
2233                         .parent_names = (const char *[]){
2234                                 "gp2_clk_src",
2235                         },
2236                         .num_parents = 1,
2237                         .flags = CLK_SET_RATE_PARENT,
2238                         .ops = &clk_branch2_ops,
2239                 },
2240         },
2241 };
2242 
2243 static struct clk_branch gcc_gp3_clk = {
2244         .halt_reg = 0x1980,
2245         .clkr = {
2246                 .enable_reg = 0x1980,
2247                 .enable_mask = BIT(0),
2248                 .hw.init = &(struct clk_init_data){
2249                         .name = "gcc_gp3_clk",
2250                         .parent_names = (const char *[]){
2251                                 "gp3_clk_src",
2252                         },
2253                         .num_parents = 1,
2254                         .flags = CLK_SET_RATE_PARENT,
2255                         .ops = &clk_branch2_ops,
2256                 },
2257         },
2258 };
2259 
2260 static struct clk_branch gcc_ocmem_noc_cfg_ahb_clk = {
2261         .halt_reg = 0x0248,
2262         .clkr = {
2263                 .enable_reg = 0x0248,
2264                 .enable_mask = BIT(0),
2265                 .hw.init = &(struct clk_init_data){
2266                         .name = "gcc_ocmem_noc_cfg_ahb_clk",
2267                         .parent_names = (const char *[]){
2268                                 "config_noc_clk_src",
2269                         },
2270                         .num_parents = 1,
2271                         .ops = &clk_branch2_ops,
2272                 },
2273         },
2274 };
2275 
2276 static struct clk_branch gcc_pcie_0_aux_clk = {
2277         .halt_reg = 0x1b10,
2278         .clkr = {
2279                 .enable_reg = 0x1b10,
2280                 .enable_mask = BIT(0),
2281                 .hw.init = &(struct clk_init_data){
2282                         .name = "gcc_pcie_0_aux_clk",
2283                         .parent_names = (const char *[]){
2284                                 "pcie_0_aux_clk_src",
2285                         },
2286                         .num_parents = 1,
2287                         .flags = CLK_SET_RATE_PARENT,
2288                         .ops = &clk_branch2_ops,
2289                 },
2290         },
2291 };
2292 
2293 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
2294         .halt_reg = 0x1b0c,
2295         .clkr = {
2296                 .enable_reg = 0x1b0c,
2297                 .enable_mask = BIT(0),
2298                 .hw.init = &(struct clk_init_data){
2299                         .name = "gcc_pcie_0_cfg_ahb_clk",
2300                         .parent_names = (const char *[]){
2301                                 "config_noc_clk_src",
2302                         },
2303                         .num_parents = 1,
2304                         .flags = CLK_SET_RATE_PARENT,
2305                         .ops = &clk_branch2_ops,
2306                 },
2307         },
2308 };
2309 
2310 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
2311         .halt_reg = 0x1b08,
2312         .clkr = {
2313                 .enable_reg = 0x1b08,
2314                 .enable_mask = BIT(0),
2315                 .hw.init = &(struct clk_init_data){
2316                         .name = "gcc_pcie_0_mstr_axi_clk",
2317                         .parent_names = (const char *[]){
2318                                 "config_noc_clk_src",
2319                         },
2320                         .num_parents = 1,
2321                         .flags = CLK_SET_RATE_PARENT,
2322                         .ops = &clk_branch2_ops,
2323                 },
2324         },
2325 };
2326 
2327 static struct clk_branch gcc_pcie_0_pipe_clk = {
2328         .halt_reg = 0x1b14,
2329         .clkr = {
2330                 .enable_reg = 0x1b14,
2331                 .enable_mask = BIT(0),
2332                 .hw.init = &(struct clk_init_data){
2333                         .name = "gcc_pcie_0_pipe_clk",
2334                         .parent_names = (const char *[]){
2335                                 "pcie_0_pipe_clk_src",
2336                         },
2337                         .num_parents = 1,
2338                         .flags = CLK_SET_RATE_PARENT,
2339                         .ops = &clk_branch2_ops,
2340                 },
2341         },
2342 };
2343 
2344 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
2345         .halt_reg = 0x1b04,
2346         .clkr = {
2347                 .enable_reg = 0x1b04,
2348                 .enable_mask = BIT(0),
2349                 .hw.init = &(struct clk_init_data){
2350                         .name = "gcc_pcie_0_slv_axi_clk",
2351                         .parent_names = (const char *[]){
2352                                 "config_noc_clk_src",
2353                         },
2354                         .num_parents = 1,
2355                         .flags = CLK_SET_RATE_PARENT,
2356                         .ops = &clk_branch2_ops,
2357                 },
2358         },
2359 };
2360 
2361 static struct clk_branch gcc_pcie_1_aux_clk = {
2362         .halt_reg = 0x1b90,
2363         .clkr = {
2364                 .enable_reg = 0x1b90,
2365                 .enable_mask = BIT(0),
2366                 .hw.init = &(struct clk_init_data){
2367                         .name = "gcc_pcie_1_aux_clk",
2368                         .parent_names = (const char *[]){
2369                                 "pcie_1_aux_clk_src",
2370                         },
2371                         .num_parents = 1,
2372                         .flags = CLK_SET_RATE_PARENT,
2373                         .ops = &clk_branch2_ops,
2374                 },
2375         },
2376 };
2377 
2378 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
2379         .halt_reg = 0x1b8c,
2380         .clkr = {
2381                 .enable_reg = 0x1b8c,
2382                 .enable_mask = BIT(0),
2383                 .hw.init = &(struct clk_init_data){
2384                         .name = "gcc_pcie_1_cfg_ahb_clk",
2385                         .parent_names = (const char *[]){
2386                                 "config_noc_clk_src",
2387                         },
2388                         .num_parents = 1,
2389                         .flags = CLK_SET_RATE_PARENT,
2390                         .ops = &clk_branch2_ops,
2391                 },
2392         },
2393 };
2394 
2395 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
2396         .halt_reg = 0x1b88,
2397         .clkr = {
2398                 .enable_reg = 0x1b88,
2399                 .enable_mask = BIT(0),
2400                 .hw.init = &(struct clk_init_data){
2401                         .name = "gcc_pcie_1_mstr_axi_clk",
2402                         .parent_names = (const char *[]){
2403                                 "config_noc_clk_src",
2404                         },
2405                         .num_parents = 1,
2406                         .flags = CLK_SET_RATE_PARENT,
2407                         .ops = &clk_branch2_ops,
2408                 },
2409         },
2410 };
2411 
2412 static struct clk_branch gcc_pcie_1_pipe_clk = {
2413         .halt_reg = 0x1b94,
2414         .clkr = {
2415                 .enable_reg = 0x1b94,
2416                 .enable_mask = BIT(0),
2417                 .hw.init = &(struct clk_init_data){
2418                         .name = "gcc_pcie_1_pipe_clk",
2419                         .parent_names = (const char *[]){
2420                                 "pcie_1_pipe_clk_src",
2421                         },
2422                         .num_parents = 1,
2423                         .flags = CLK_SET_RATE_PARENT,
2424                         .ops = &clk_branch2_ops,
2425                 },
2426         },
2427 };
2428 
2429 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
2430         .halt_reg = 0x1b84,
2431         .clkr = {
2432                 .enable_reg = 0x1b84,
2433                 .enable_mask = BIT(0),
2434                 .hw.init = &(struct clk_init_data){
2435                         .name = "gcc_pcie_1_slv_axi_clk",
2436                         .parent_names = (const char *[]){
2437                                 "config_noc_clk_src",
2438                         },
2439                         .num_parents = 1,
2440                         .flags = CLK_SET_RATE_PARENT,
2441                         .ops = &clk_branch2_ops,
2442                 },
2443         },
2444 };
2445 
2446 static struct clk_branch gcc_pdm2_clk = {
2447         .halt_reg = 0x0ccc,
2448         .clkr = {
2449                 .enable_reg = 0x0ccc,
2450                 .enable_mask = BIT(0),
2451                 .hw.init = &(struct clk_init_data){
2452                         .name = "gcc_pdm2_clk",
2453                         .parent_names = (const char *[]){
2454                                 "pdm2_clk_src",
2455                         },
2456                         .num_parents = 1,
2457                         .flags = CLK_SET_RATE_PARENT,
2458                         .ops = &clk_branch2_ops,
2459                 },
2460         },
2461 };
2462 
2463 static struct clk_branch gcc_pdm_ahb_clk = {
2464         .halt_reg = 0x0cc4,
2465         .clkr = {
2466                 .enable_reg = 0x0cc4,
2467                 .enable_mask = BIT(0),
2468                 .hw.init = &(struct clk_init_data){
2469                         .name = "gcc_pdm_ahb_clk",
2470                         .parent_names = (const char *[]){
2471                                 "periph_noc_clk_src",
2472                         },
2473                         .num_parents = 1,
2474                         .ops = &clk_branch2_ops,
2475                 },
2476         },
2477 };
2478 
2479 static struct clk_branch gcc_periph_noc_usb_hsic_ahb_clk = {
2480         .halt_reg = 0x01a4,
2481         .clkr = {
2482                 .enable_reg = 0x01a4,
2483                 .enable_mask = BIT(0),
2484                 .hw.init = &(struct clk_init_data){
2485                         .name = "gcc_periph_noc_usb_hsic_ahb_clk",
2486                         .parent_names = (const char *[]){
2487                                 "usb_hsic_ahb_clk_src",
2488                         },
2489                         .num_parents = 1,
2490                         .flags = CLK_SET_RATE_PARENT,
2491                         .ops = &clk_branch2_ops,
2492                 },
2493         },
2494 };
2495 
2496 static struct clk_branch gcc_prng_ahb_clk = {
2497         .halt_reg = 0x0d04,
2498         .halt_check = BRANCH_HALT_VOTED,
2499         .clkr = {
2500                 .enable_reg = 0x1484,
2501                 .enable_mask = BIT(13),
2502                 .hw.init = &(struct clk_init_data){
2503                         .name = "gcc_prng_ahb_clk",
2504                         .parent_names = (const char *[]){
2505                                 "periph_noc_clk_src",
2506                         },
2507                         .num_parents = 1,
2508                         .ops = &clk_branch2_ops,
2509                 },
2510         },
2511 };
2512 
2513 static struct clk_branch gcc_sata_asic0_clk = {
2514         .halt_reg = 0x1c54,
2515         .clkr = {
2516                 .enable_reg = 0x1c54,
2517                 .enable_mask = BIT(0),
2518                 .hw.init = &(struct clk_init_data){
2519                         .name = "gcc_sata_asic0_clk",
2520                         .parent_names = (const char *[]){
2521                                 "sata_asic0_clk_src",
2522                         },
2523                         .num_parents = 1,
2524                         .flags = CLK_SET_RATE_PARENT,
2525                         .ops = &clk_branch2_ops,
2526                 },
2527         },
2528 };
2529 
2530 static struct clk_branch gcc_sata_axi_clk = {
2531         .halt_reg = 0x1c44,
2532         .clkr = {
2533                 .enable_reg = 0x1c44,
2534                 .enable_mask = BIT(0),
2535                 .hw.init = &(struct clk_init_data){
2536                         .name = "gcc_sata_axi_clk",
2537                         .parent_names = (const char *[]){
2538                                 "config_noc_clk_src",
2539                         },
2540                         .num_parents = 1,
2541                         .flags = CLK_SET_RATE_PARENT,
2542                         .ops = &clk_branch2_ops,
2543                 },
2544         },
2545 };
2546 
2547 static struct clk_branch gcc_sata_cfg_ahb_clk = {
2548         .halt_reg = 0x1c48,
2549         .clkr = {
2550                 .enable_reg = 0x1c48,
2551                 .enable_mask = BIT(0),
2552                 .hw.init = &(struct clk_init_data){
2553                         .name = "gcc_sata_cfg_ahb_clk",
2554                         .parent_names = (const char *[]){
2555                                 "config_noc_clk_src",
2556                         },
2557                         .num_parents = 1,
2558                         .flags = CLK_SET_RATE_PARENT,
2559                         .ops = &clk_branch2_ops,
2560                 },
2561         },
2562 };
2563 
2564 static struct clk_branch gcc_sata_pmalive_clk = {
2565         .halt_reg = 0x1c50,
2566         .clkr = {
2567                 .enable_reg = 0x1c50,
2568                 .enable_mask = BIT(0),
2569                 .hw.init = &(struct clk_init_data){
2570                         .name = "gcc_sata_pmalive_clk",
2571                         .parent_names = (const char *[]){
2572                                 "sata_pmalive_clk_src",
2573                         },
2574                         .num_parents = 1,
2575                         .flags = CLK_SET_RATE_PARENT,
2576                         .ops = &clk_branch2_ops,
2577                 },
2578         },
2579 };
2580 
2581 static struct clk_branch gcc_sata_rx_clk = {
2582         .halt_reg = 0x1c58,
2583         .clkr = {
2584                 .enable_reg = 0x1c58,
2585                 .enable_mask = BIT(0),
2586                 .hw.init = &(struct clk_init_data){
2587                         .name = "gcc_sata_rx_clk",
2588                         .parent_names = (const char *[]){
2589                                 "sata_rx_clk_src",
2590                         },
2591                         .num_parents = 1,
2592                         .flags = CLK_SET_RATE_PARENT,
2593                         .ops = &clk_branch2_ops,
2594                 },
2595         },
2596 };
2597 
2598 static struct clk_branch gcc_sata_rx_oob_clk = {
2599         .halt_reg = 0x1c4c,
2600         .clkr = {
2601                 .enable_reg = 0x1c4c,
2602                 .enable_mask = BIT(0),
2603                 .hw.init = &(struct clk_init_data){
2604                         .name = "gcc_sata_rx_oob_clk",
2605                         .parent_names = (const char *[]){
2606                                 "sata_rx_oob_clk_src",
2607                         },
2608                         .num_parents = 1,
2609                         .flags = CLK_SET_RATE_PARENT,
2610                         .ops = &clk_branch2_ops,
2611                 },
2612         },
2613 };
2614 
2615 static struct clk_branch gcc_sdcc1_ahb_clk = {
2616         .halt_reg = 0x04c8,
2617         .clkr = {
2618                 .enable_reg = 0x04c8,
2619                 .enable_mask = BIT(0),
2620                 .hw.init = &(struct clk_init_data){
2621                         .name = "gcc_sdcc1_ahb_clk",
2622                         .parent_names = (const char *[]){
2623                                 "periph_noc_clk_src",
2624                         },
2625                         .num_parents = 1,
2626                         .ops = &clk_branch2_ops,
2627                 },
2628         },
2629 };
2630 
2631 static struct clk_branch gcc_sdcc1_apps_clk = {
2632         .halt_reg = 0x04c4,
2633         .clkr = {
2634                 .enable_reg = 0x04c4,
2635                 .enable_mask = BIT(0),
2636                 .hw.init = &(struct clk_init_data){
2637                         .name = "gcc_sdcc1_apps_clk",
2638                         .parent_names = (const char *[]){
2639                                 "sdcc1_apps_clk_src",
2640                         },
2641                         .num_parents = 1,
2642                         .flags = CLK_SET_RATE_PARENT,
2643                         .ops = &clk_branch2_ops,
2644                 },
2645         },
2646 };
2647 
2648 static struct clk_branch gcc_sdcc1_cdccal_ff_clk = {
2649         .halt_reg = 0x04e8,
2650         .clkr = {
2651                 .enable_reg = 0x04e8,
2652                 .enable_mask = BIT(0),
2653                 .hw.init = &(struct clk_init_data){
2654                         .name = "gcc_sdcc1_cdccal_ff_clk",
2655                         .parent_names = (const char *[]){
2656                                 "xo"
2657                         },
2658                         .num_parents = 1,
2659                         .ops = &clk_branch2_ops,
2660                 },
2661         },
2662 };
2663 
2664 static struct clk_branch gcc_sdcc1_cdccal_sleep_clk = {
2665         .halt_reg = 0x04e4,
2666         .clkr = {
2667                 .enable_reg = 0x04e4,
2668                 .enable_mask = BIT(0),
2669                 .hw.init = &(struct clk_init_data){
2670                         .name = "gcc_sdcc1_cdccal_sleep_clk",
2671                         .parent_names = (const char *[]){
2672                                 "sleep_clk_src"
2673                         },
2674                         .num_parents = 1,
2675                         .ops = &clk_branch2_ops,
2676                 },
2677         },
2678 };
2679 
2680 static struct clk_branch gcc_sdcc2_ahb_clk = {
2681         .halt_reg = 0x0508,
2682         .clkr = {
2683                 .enable_reg = 0x0508,
2684                 .enable_mask = BIT(0),
2685                 .hw.init = &(struct clk_init_data){
2686                         .name = "gcc_sdcc2_ahb_clk",
2687                         .parent_names = (const char *[]){
2688                                 "periph_noc_clk_src",
2689                         },
2690                         .num_parents = 1,
2691                         .ops = &clk_branch2_ops,
2692                 },
2693         },
2694 };
2695 
2696 static struct clk_branch gcc_sdcc2_apps_clk = {
2697         .halt_reg = 0x0504,
2698         .clkr = {
2699                 .enable_reg = 0x0504,
2700                 .enable_mask = BIT(0),
2701                 .hw.init = &(struct clk_init_data){
2702                         .name = "gcc_sdcc2_apps_clk",
2703                         .parent_names = (const char *[]){
2704                                 "sdcc2_apps_clk_src",
2705                         },
2706                         .num_parents = 1,
2707                         .flags = CLK_SET_RATE_PARENT,
2708                         .ops = &clk_branch2_ops,
2709                 },
2710         },
2711 };
2712 
2713 static struct clk_branch gcc_sdcc3_ahb_clk = {
2714         .halt_reg = 0x0548,
2715         .clkr = {
2716                 .enable_reg = 0x0548,
2717                 .enable_mask = BIT(0),
2718                 .hw.init = &(struct clk_init_data){
2719                         .name = "gcc_sdcc3_ahb_clk",
2720                         .parent_names = (const char *[]){
2721                                 "periph_noc_clk_src",
2722                         },
2723                         .num_parents = 1,
2724                         .ops = &clk_branch2_ops,
2725                 },
2726         },
2727 };
2728 
2729 static struct clk_branch gcc_sdcc3_apps_clk = {
2730         .halt_reg = 0x0544,
2731         .clkr = {
2732                 .enable_reg = 0x0544,
2733                 .enable_mask = BIT(0),
2734                 .hw.init = &(struct clk_init_data){
2735                         .name = "gcc_sdcc3_apps_clk",
2736                         .parent_names = (const char *[]){
2737                                 "sdcc3_apps_clk_src",
2738                         },
2739                         .num_parents = 1,
2740                         .flags = CLK_SET_RATE_PARENT,
2741                         .ops = &clk_branch2_ops,
2742                 },
2743         },
2744 };
2745 
2746 static struct clk_branch gcc_sdcc4_ahb_clk = {
2747         .halt_reg = 0x0588,
2748         .clkr = {
2749                 .enable_reg = 0x0588,
2750                 .enable_mask = BIT(0),
2751                 .hw.init = &(struct clk_init_data){
2752                         .name = "gcc_sdcc4_ahb_clk",
2753                         .parent_names = (const char *[]){
2754                                 "periph_noc_clk_src",
2755                         },
2756                         .num_parents = 1,
2757                         .ops = &clk_branch2_ops,
2758                 },
2759         },
2760 };
2761 
2762 static struct clk_branch gcc_sdcc4_apps_clk = {
2763         .halt_reg = 0x0584,
2764         .clkr = {
2765                 .enable_reg = 0x0584,
2766                 .enable_mask = BIT(0),
2767                 .hw.init = &(struct clk_init_data){
2768                         .name = "gcc_sdcc4_apps_clk",
2769                         .parent_names = (const char *[]){
2770                                 "sdcc4_apps_clk_src",
2771                         },
2772                         .num_parents = 1,
2773                         .flags = CLK_SET_RATE_PARENT,
2774                         .ops = &clk_branch2_ops,
2775                 },
2776         },
2777 };
2778 
2779 static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
2780         .halt_reg = 0x013c,
2781         .clkr = {
2782                 .enable_reg = 0x013c,
2783                 .enable_mask = BIT(0),
2784                 .hw.init = &(struct clk_init_data){
2785                         .name = "gcc_sys_noc_ufs_axi_clk",
2786                         .parent_names = (const char *[]){
2787                                 "ufs_axi_clk_src",
2788                         },
2789                         .num_parents = 1,
2790                         .flags = CLK_SET_RATE_PARENT,
2791                         .ops = &clk_branch2_ops,
2792                 },
2793         },
2794 };
2795 
2796 static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
2797         .halt_reg = 0x0108,
2798         .clkr = {
2799                 .enable_reg = 0x0108,
2800                 .enable_mask = BIT(0),
2801                 .hw.init = &(struct clk_init_data){
2802                         .name = "gcc_sys_noc_usb3_axi_clk",
2803                         .parent_names = (const char *[]){
2804                                 "usb30_master_clk_src",
2805                         },
2806                         .num_parents = 1,
2807                         .flags = CLK_SET_RATE_PARENT,
2808                         .ops = &clk_branch2_ops,
2809                 },
2810         },
2811 };
2812 
2813 static struct clk_branch gcc_sys_noc_usb3_sec_axi_clk = {
2814         .halt_reg = 0x0138,
2815         .clkr = {
2816                 .enable_reg = 0x0138,
2817                 .enable_mask = BIT(0),
2818                 .hw.init = &(struct clk_init_data){
2819                         .name = "gcc_sys_noc_usb3_sec_axi_clk",
2820                         .parent_names = (const char *[]){
2821                                 "usb30_sec_master_clk_src",
2822                         },
2823                         .num_parents = 1,
2824                         .flags = CLK_SET_RATE_PARENT,
2825                         .ops = &clk_branch2_ops,
2826                 },
2827         },
2828 };
2829 
2830 static struct clk_branch gcc_tsif_ahb_clk = {
2831         .halt_reg = 0x0d84,
2832         .clkr = {
2833                 .enable_reg = 0x0d84,
2834                 .enable_mask = BIT(0),
2835                 .hw.init = &(struct clk_init_data){
2836                         .name = "gcc_tsif_ahb_clk",
2837                         .parent_names = (const char *[]){
2838                                 "periph_noc_clk_src",
2839                         },
2840                         .num_parents = 1,
2841                         .ops = &clk_branch2_ops,
2842                 },
2843         },
2844 };
2845 
2846 static struct clk_branch gcc_tsif_inactivity_timers_clk = {
2847         .halt_reg = 0x0d8c,
2848         .clkr = {
2849                 .enable_reg = 0x0d8c,
2850                 .enable_mask = BIT(0),
2851                 .hw.init = &(struct clk_init_data){
2852                         .name = "gcc_tsif_inactivity_timers_clk",
2853                         .parent_names = (const char *[]){
2854                                 "sleep_clk_src",
2855                         },
2856                         .num_parents = 1,
2857                         .flags = CLK_SET_RATE_PARENT,
2858                         .ops = &clk_branch2_ops,
2859                 },
2860         },
2861 };
2862 
2863 static struct clk_branch gcc_tsif_ref_clk = {
2864         .halt_reg = 0x0d88,
2865         .clkr = {
2866                 .enable_reg = 0x0d88,
2867                 .enable_mask = BIT(0),
2868                 .hw.init = &(struct clk_init_data){
2869                         .name = "gcc_tsif_ref_clk",
2870                         .parent_names = (const char *[]){
2871                                 "tsif_ref_clk_src",
2872                         },
2873                         .num_parents = 1,
2874                         .flags = CLK_SET_RATE_PARENT,
2875                         .ops = &clk_branch2_ops,
2876                 },
2877         },
2878 };
2879 
2880 static struct clk_branch gcc_ufs_ahb_clk = {
2881         .halt_reg = 0x1d48,
2882         .clkr = {
2883                 .enable_reg = 0x1d48,
2884                 .enable_mask = BIT(0),
2885                 .hw.init = &(struct clk_init_data){
2886                         .name = "gcc_ufs_ahb_clk",
2887                         .parent_names = (const char *[]){
2888                                 "config_noc_clk_src",
2889                         },
2890                         .num_parents = 1,
2891                         .flags = CLK_SET_RATE_PARENT,
2892                         .ops = &clk_branch2_ops,
2893                 },
2894         },
2895 };
2896 
2897 static struct clk_branch gcc_ufs_axi_clk = {
2898         .halt_reg = 0x1d44,
2899         .clkr = {
2900                 .enable_reg = 0x1d44,
2901                 .enable_mask = BIT(0),
2902                 .hw.init = &(struct clk_init_data){
2903                         .name = "gcc_ufs_axi_clk",
2904                         .parent_names = (const char *[]){
2905                                 "ufs_axi_clk_src",
2906                         },
2907                         .num_parents = 1,
2908                         .flags = CLK_SET_RATE_PARENT,
2909                         .ops = &clk_branch2_ops,
2910                 },
2911         },
2912 };
2913 
2914 static struct clk_branch gcc_ufs_rx_cfg_clk = {
2915         .halt_reg = 0x1d50,
2916         .clkr = {
2917                 .enable_reg = 0x1d50,
2918                 .enable_mask = BIT(0),
2919                 .hw.init = &(struct clk_init_data){
2920                         .name = "gcc_ufs_rx_cfg_clk",
2921                         .parent_names = (const char *[]){
2922                                 "ufs_axi_clk_src",
2923                         },
2924                         .num_parents = 1,
2925                         .flags = CLK_SET_RATE_PARENT,
2926                         .ops = &clk_branch2_ops,
2927                 },
2928         },
2929 };
2930 
2931 static struct clk_branch gcc_ufs_rx_symbol_0_clk = {
2932         .halt_reg = 0x1d5c,
2933         .clkr = {
2934                 .enable_reg = 0x1d5c,
2935                 .enable_mask = BIT(0),
2936                 .hw.init = &(struct clk_init_data){
2937                         .name = "gcc_ufs_rx_symbol_0_clk",
2938                         .parent_names = (const char *[]){
2939                                 "ufs_rx_symbol_0_clk_src",
2940                         },
2941                         .num_parents = 1,
2942                         .flags = CLK_SET_RATE_PARENT,
2943                         .ops = &clk_branch2_ops,
2944                 },
2945         },
2946 };
2947 
2948 static struct clk_branch gcc_ufs_rx_symbol_1_clk = {
2949         .halt_reg = 0x1d60,
2950         .clkr = {
2951                 .enable_reg = 0x1d60,
2952                 .enable_mask = BIT(0),
2953                 .hw.init = &(struct clk_init_data){
2954                         .name = "gcc_ufs_rx_symbol_1_clk",
2955                         .parent_names = (const char *[]){
2956                                 "ufs_rx_symbol_1_clk_src",
2957                         },
2958                         .num_parents = 1,
2959                         .flags = CLK_SET_RATE_PARENT,
2960                         .ops = &clk_branch2_ops,
2961                 },
2962         },
2963 };
2964 
2965 static struct clk_branch gcc_ufs_tx_cfg_clk = {
2966         .halt_reg = 0x1d4c,
2967         .clkr = {
2968                 .enable_reg = 0x1d4c,
2969                 .enable_mask = BIT(0),
2970                 .hw.init = &(struct clk_init_data){
2971                         .name = "gcc_ufs_tx_cfg_clk",
2972                         .parent_names = (const char *[]){
2973                                 "ufs_axi_clk_src",
2974                         },
2975                         .num_parents = 1,
2976                         .flags = CLK_SET_RATE_PARENT,
2977                         .ops = &clk_branch2_ops,
2978                 },
2979         },
2980 };
2981 
2982 static struct clk_branch gcc_ufs_tx_symbol_0_clk = {
2983         .halt_reg = 0x1d54,
2984         .clkr = {
2985                 .enable_reg = 0x1d54,
2986                 .enable_mask = BIT(0),
2987                 .hw.init = &(struct clk_init_data){
2988                         .name = "gcc_ufs_tx_symbol_0_clk",
2989                         .parent_names = (const char *[]){
2990                                 "ufs_tx_symbol_0_clk_src",
2991                         },
2992                         .num_parents = 1,
2993                         .flags = CLK_SET_RATE_PARENT,
2994                         .ops = &clk_branch2_ops,
2995                 },
2996         },
2997 };
2998 
2999 static struct clk_branch gcc_ufs_tx_symbol_1_clk = {
3000         .halt_reg = 0x1d58,
3001         .clkr = {
3002                 .enable_reg = 0x1d58,
3003                 .enable_mask = BIT(0),
3004                 .hw.init = &(struct clk_init_data){
3005                         .name = "gcc_ufs_tx_symbol_1_clk",
3006                         .parent_names = (const char *[]){
3007                                 "ufs_tx_symbol_1_clk_src",
3008                         },
3009                         .num_parents = 1,
3010                         .flags = CLK_SET_RATE_PARENT,
3011                         .ops = &clk_branch2_ops,
3012                 },
3013         },
3014 };
3015 
3016 static struct clk_branch gcc_usb2a_phy_sleep_clk = {
3017         .halt_reg = 0x04ac,
3018         .clkr = {
3019                 .enable_reg = 0x04ac,
3020                 .enable_mask = BIT(0),
3021                 .hw.init = &(struct clk_init_data){
3022                         .name = "gcc_usb2a_phy_sleep_clk",
3023                         .parent_names = (const char *[]){
3024                                 "sleep_clk_src",
3025                         },
3026                         .num_parents = 1,
3027                         .ops = &clk_branch2_ops,
3028                 },
3029         },
3030 };
3031 
3032 static struct clk_branch gcc_usb2b_phy_sleep_clk = {
3033         .halt_reg = 0x04b4,
3034         .clkr = {
3035                 .enable_reg = 0x04b4,
3036                 .enable_mask = BIT(0),
3037                 .hw.init = &(struct clk_init_data){
3038                         .name = "gcc_usb2b_phy_sleep_clk",
3039                         .parent_names = (const char *[]){
3040                                 "sleep_clk_src",
3041                         },
3042                         .num_parents = 1,
3043                         .ops = &clk_branch2_ops,
3044                 },
3045         },
3046 };
3047 
3048 static struct clk_branch gcc_usb30_master_clk = {
3049         .halt_reg = 0x03c8,
3050         .clkr = {
3051                 .enable_reg = 0x03c8,
3052                 .enable_mask = BIT(0),
3053                 .hw.init = &(struct clk_init_data){
3054                         .name = "gcc_usb30_master_clk",
3055                         .parent_names = (const char *[]){
3056                                 "usb30_master_clk_src",
3057                         },
3058                         .num_parents = 1,
3059                         .flags = CLK_SET_RATE_PARENT,
3060                         .ops = &clk_branch2_ops,
3061                 },
3062         },
3063 };
3064 
3065 static struct clk_branch gcc_usb30_sec_master_clk = {
3066         .halt_reg = 0x1bc8,
3067         .clkr = {
3068                 .enable_reg = 0x1bc8,
3069                 .enable_mask = BIT(0),
3070                 .hw.init = &(struct clk_init_data){
3071                         .name = "gcc_usb30_sec_master_clk",
3072                         .parent_names = (const char *[]){
3073                                 "usb30_sec_master_clk_src",
3074                         },
3075                         .num_parents = 1,
3076                         .flags = CLK_SET_RATE_PARENT,
3077                         .ops = &clk_branch2_ops,
3078                 },
3079         },
3080 };
3081 
3082 static struct clk_branch gcc_usb30_mock_utmi_clk = {
3083         .halt_reg = 0x03d0,
3084         .clkr = {
3085                 .enable_reg = 0x03d0,
3086                 .enable_mask = BIT(0),
3087                 .hw.init = &(struct clk_init_data){
3088                         .name = "gcc_usb30_mock_utmi_clk",
3089                         .parent_names = (const char *[]){
3090                                 "usb30_mock_utmi_clk_src",
3091                         },
3092                         .num_parents = 1,
3093                         .flags = CLK_SET_RATE_PARENT,
3094                         .ops = &clk_branch2_ops,
3095                 },
3096         },
3097 };
3098 
3099 static struct clk_branch gcc_usb30_sleep_clk = {
3100         .halt_reg = 0x03cc,
3101         .clkr = {
3102                 .enable_reg = 0x03cc,
3103                 .enable_mask = BIT(0),
3104                 .hw.init = &(struct clk_init_data){
3105                         .name = "gcc_usb30_sleep_clk",
3106                         .parent_names = (const char *[]){
3107                                 "sleep_clk_src",
3108                         },
3109                         .num_parents = 1,
3110                         .ops = &clk_branch2_ops,
3111                 },
3112         },
3113 };
3114 
3115 static struct clk_branch gcc_usb_hs_ahb_clk = {
3116         .halt_reg = 0x0488,
3117         .clkr = {
3118                 .enable_reg = 0x0488,
3119                 .enable_mask = BIT(0),
3120                 .hw.init = &(struct clk_init_data){
3121                         .name = "gcc_usb_hs_ahb_clk",
3122                         .parent_names = (const char *[]){
3123                                 "periph_noc_clk_src",
3124                         },
3125                         .num_parents = 1,
3126                         .ops = &clk_branch2_ops,
3127                 },
3128         },
3129 };
3130 
3131 static struct clk_branch gcc_usb_hs_inactivity_timers_clk = {
3132         .halt_reg = 0x048c,
3133         .clkr = {
3134                 .enable_reg = 0x048c,
3135                 .enable_mask = BIT(0),
3136                 .hw.init = &(struct clk_init_data){
3137                         .name = "gcc_usb_hs_inactivity_timers_clk",
3138                         .parent_names = (const char *[]){
3139                                 "sleep_clk_src",
3140                         },
3141                         .num_parents = 1,
3142                         .flags = CLK_SET_RATE_PARENT,
3143                         .ops = &clk_branch2_ops,
3144                 },
3145         },
3146 };
3147 
3148 static struct clk_branch gcc_usb_hs_system_clk = {
3149         .halt_reg = 0x0484,
3150         .clkr = {
3151                 .enable_reg = 0x0484,
3152                 .enable_mask = BIT(0),
3153                 .hw.init = &(struct clk_init_data){
3154                         .name = "gcc_usb_hs_system_clk",
3155                         .parent_names = (const char *[]){
3156                                 "usb_hs_system_clk_src",
3157                         },
3158                         .num_parents = 1,
3159                         .flags = CLK_SET_RATE_PARENT,
3160                         .ops = &clk_branch2_ops,
3161                 },
3162         },
3163 };
3164 
3165 static struct clk_branch gcc_usb_hsic_ahb_clk = {
3166         .halt_reg = 0x0408,
3167         .clkr = {
3168                 .enable_reg = 0x0408,
3169                 .enable_mask = BIT(0),
3170                 .hw.init = &(struct clk_init_data){
3171                         .name = "gcc_usb_hsic_ahb_clk",
3172                         .parent_names = (const char *[]){
3173                                 "periph_noc_clk_src",
3174                         },
3175                         .num_parents = 1,
3176                         .ops = &clk_branch2_ops,
3177                 },
3178         },
3179 };
3180 
3181 static struct clk_branch gcc_usb_hsic_clk = {
3182         .halt_reg = 0x0410,
3183         .clkr = {
3184                 .enable_reg = 0x0410,
3185                 .enable_mask = BIT(0),
3186                 .hw.init = &(struct clk_init_data){
3187                         .name = "gcc_usb_hsic_clk",
3188                         .parent_names = (const char *[]){
3189                                 "usb_hsic_clk_src",
3190                         },
3191                         .num_parents = 1,
3192                         .flags = CLK_SET_RATE_PARENT,
3193                         .ops = &clk_branch2_ops,
3194                 },
3195         },
3196 };
3197 
3198 static struct clk_branch gcc_usb_hsic_io_cal_clk = {
3199         .halt_reg = 0x0414,
3200         .clkr = {
3201                 .enable_reg = 0x0414,
3202                 .enable_mask = BIT(0),
3203                 .hw.init = &(struct clk_init_data){
3204                         .name = "gcc_usb_hsic_io_cal_clk",
3205                         .parent_names = (const char *[]){
3206                                 "usb_hsic_io_cal_clk_src",
3207                         },
3208                         .num_parents = 1,
3209                         .flags = CLK_SET_RATE_PARENT,
3210                         .ops = &clk_branch2_ops,
3211                 },
3212         },
3213 };
3214 
3215 static struct clk_branch gcc_usb_hsic_io_cal_sleep_clk = {
3216         .halt_reg = 0x0418,
3217         .clkr = {
3218                 .enable_reg = 0x0418,
3219                 .enable_mask = BIT(0),
3220                 .hw.init = &(struct clk_init_data){
3221                         .name = "gcc_usb_hsic_io_cal_sleep_clk",
3222                         .parent_names = (const char *[]){
3223                                 "sleep_clk_src",
3224                         },
3225                         .num_parents = 1,
3226                         .ops = &clk_branch2_ops,
3227                 },
3228         },
3229 };
3230 
3231 static struct clk_branch gcc_usb_hsic_system_clk = {
3232         .halt_reg = 0x040c,
3233         .clkr = {
3234                 .enable_reg = 0x040c,
3235                 .enable_mask = BIT(0),
3236                 .hw.init = &(struct clk_init_data){
3237                         .name = "gcc_usb_hsic_system_clk",
3238                         .parent_names = (const char *[]){
3239                                 "usb_hsic_system_clk_src",
3240                         },
3241                         .num_parents = 1,
3242                         .flags = CLK_SET_RATE_PARENT,
3243                         .ops = &clk_branch2_ops,
3244                 },
3245         },
3246 };
3247 
3248 static struct gdsc usb_hs_hsic_gdsc = {
3249         .gdscr = 0x404,
3250         .pd = {
3251                 .name = "usb_hs_hsic",
3252         },
3253         .pwrsts = PWRSTS_OFF_ON,
3254 };
3255 
3256 static struct gdsc pcie0_gdsc = {
3257         .gdscr = 0x1ac4,
3258         .pd = {
3259                 .name = "pcie0",
3260         },
3261         .pwrsts = PWRSTS_OFF_ON,
3262 };
3263 
3264 static struct gdsc pcie1_gdsc = {
3265         .gdscr = 0x1b44,
3266         .pd = {
3267                 .name = "pcie1",
3268         },
3269         .pwrsts = PWRSTS_OFF_ON,
3270 };
3271 
3272 static struct gdsc usb30_gdsc = {
3273         .gdscr = 0x1e84,
3274         .pd = {
3275                 .name = "usb30",
3276         },
3277         .pwrsts = PWRSTS_OFF_ON,
3278 };
3279 
3280 static struct clk_regmap *gcc_apq8084_clocks[] = {
3281         [GPLL0] = &gpll0.clkr,
3282         [GPLL0_VOTE] = &gpll0_vote,
3283         [GPLL1] = &gpll1.clkr,
3284         [GPLL1_VOTE] = &gpll1_vote,
3285         [GPLL4] = &gpll4.clkr,
3286         [GPLL4_VOTE] = &gpll4_vote,
3287         [CONFIG_NOC_CLK_SRC] = &config_noc_clk_src.clkr,
3288         [PERIPH_NOC_CLK_SRC] = &periph_noc_clk_src.clkr,
3289         [SYSTEM_NOC_CLK_SRC] = &system_noc_clk_src.clkr,
3290         [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
3291         [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
3292         [USB30_SEC_MASTER_CLK_SRC] = &usb30_sec_master_clk_src.clkr,
3293         [USB_HSIC_AHB_CLK_SRC] = &usb_hsic_ahb_clk_src.clkr,
3294         [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
3295         [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
3296         [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
3297         [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
3298         [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
3299         [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
3300         [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
3301         [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
3302         [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
3303         [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
3304         [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
3305         [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
3306         [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
3307         [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
3308         [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
3309         [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
3310         [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
3311         [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
3312         [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
3313         [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
3314         [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
3315         [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
3316         [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
3317         [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
3318         [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
3319         [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
3320         [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
3321         [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
3322         [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
3323         [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
3324         [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
3325         [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
3326         [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
3327         [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
3328         [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
3329         [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
3330         [CE1_CLK_SRC] = &ce1_clk_src.clkr,
3331         [CE2_CLK_SRC] = &ce2_clk_src.clkr,
3332         [CE3_CLK_SRC] = &ce3_clk_src.clkr,
3333         [GP1_CLK_SRC] = &gp1_clk_src.clkr,
3334         [GP2_CLK_SRC] = &gp2_clk_src.clkr,
3335         [GP3_CLK_SRC] = &gp3_clk_src.clkr,
3336         [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
3337         [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
3338         [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
3339         [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
3340         [PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
3341         [SATA_ASIC0_CLK_SRC] = &sata_asic0_clk_src.clkr,
3342         [SATA_PMALIVE_CLK_SRC] = &sata_pmalive_clk_src.clkr,
3343         [SATA_RX_CLK_SRC] = &sata_rx_clk_src.clkr,
3344         [SATA_RX_OOB_CLK_SRC] = &sata_rx_oob_clk_src.clkr,
3345         [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
3346         [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
3347         [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
3348         [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
3349         [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
3350         [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
3351         [USB30_SEC_MOCK_UTMI_CLK_SRC] = &usb30_sec_mock_utmi_clk_src.clkr,
3352         [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
3353         [USB_HSIC_CLK_SRC] = &usb_hsic_clk_src.clkr,
3354         [USB_HSIC_IO_CAL_CLK_SRC] = &usb_hsic_io_cal_clk_src.clkr,
3355         [USB_HSIC_MOCK_UTMI_CLK_SRC] = &usb_hsic_mock_utmi_clk_src.clkr,
3356         [USB_HSIC_SYSTEM_CLK_SRC] = &usb_hsic_system_clk_src.clkr,
3357         [GCC_BAM_DMA_AHB_CLK] = &gcc_bam_dma_ahb_clk.clkr,
3358         [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
3359         [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
3360         [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
3361         [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
3362         [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
3363         [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
3364         [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
3365         [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
3366         [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
3367         [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
3368         [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
3369         [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
3370         [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
3371         [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
3372         [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
3373         [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
3374         [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
3375         [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
3376         [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
3377         [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
3378         [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
3379         [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
3380         [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
3381         [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
3382         [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
3383         [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
3384         [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
3385         [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
3386         [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
3387         [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
3388         [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
3389         [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
3390         [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
3391         [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
3392         [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
3393         [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
3394         [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
3395         [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
3396         [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3397         [GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr,
3398         [GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr,
3399         [GCC_CE1_CLK] = &gcc_ce1_clk.clkr,
3400         [GCC_CE2_AHB_CLK] = &gcc_ce2_ahb_clk.clkr,
3401         [GCC_CE2_AXI_CLK] = &gcc_ce2_axi_clk.clkr,
3402         [GCC_CE2_CLK] = &gcc_ce2_clk.clkr,
3403         [GCC_CE3_AHB_CLK] = &gcc_ce3_ahb_clk.clkr,
3404         [GCC_CE3_AXI_CLK] = &gcc_ce3_axi_clk.clkr,
3405         [GCC_CE3_CLK] = &gcc_ce3_clk.clkr,
3406         [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3407         [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3408         [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3409         [GCC_OCMEM_NOC_CFG_AHB_CLK] = &gcc_ocmem_noc_cfg_ahb_clk.clkr,
3410         [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
3411         [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
3412         [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
3413         [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
3414         [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
3415         [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
3416         [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
3417         [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
3418         [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
3419         [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
3420         [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3421         [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3422         [GCC_PERIPH_NOC_USB_HSIC_AHB_CLK] = &gcc_periph_noc_usb_hsic_ahb_clk.clkr,
3423         [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
3424         [GCC_SATA_ASIC0_CLK] = &gcc_sata_asic0_clk.clkr,
3425         [GCC_SATA_AXI_CLK] = &gcc_sata_axi_clk.clkr,
3426         [GCC_SATA_CFG_AHB_CLK] = &gcc_sata_cfg_ahb_clk.clkr,
3427         [GCC_SATA_PMALIVE_CLK] = &gcc_sata_pmalive_clk.clkr,
3428         [GCC_SATA_RX_CLK] = &gcc_sata_rx_clk.clkr,
3429         [GCC_SATA_RX_OOB_CLK] = &gcc_sata_rx_oob_clk.clkr,
3430         [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
3431         [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
3432         [GCC_SDCC1_CDCCAL_FF_CLK] = &gcc_sdcc1_cdccal_ff_clk.clkr,
3433         [GCC_SDCC1_CDCCAL_SLEEP_CLK] = &gcc_sdcc1_cdccal_sleep_clk.clkr,
3434         [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
3435         [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
3436         [GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr,
3437         [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
3438         [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
3439         [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
3440         [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
3441         [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
3442         [GCC_SYS_NOC_USB3_SEC_AXI_CLK] = &gcc_sys_noc_usb3_sec_axi_clk.clkr,
3443         [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
3444         [GCC_TSIF_INACTIVITY_TIMERS_CLK] = &gcc_tsif_inactivity_timers_clk.clkr,
3445         [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
3446         [GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr,
3447         [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
3448         [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
3449         [GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr,
3450         [GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr,
3451         [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
3452         [GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr,
3453         [GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr,
3454         [GCC_USB2A_PHY_SLEEP_CLK] = &gcc_usb2a_phy_sleep_clk.clkr,
3455         [GCC_USB2B_PHY_SLEEP_CLK] = &gcc_usb2b_phy_sleep_clk.clkr,
3456         [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
3457         [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
3458         [GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
3459         [GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,
3460         [GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,
3461         [GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,
3462         [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr,
3463         [GCC_USB_HS_INACTIVITY_TIMERS_CLK] = &gcc_usb_hs_inactivity_timers_clk.clkr,
3464         [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
3465         [GCC_USB_HSIC_AHB_CLK] = &gcc_usb_hsic_ahb_clk.clkr,
3466         [GCC_USB_HSIC_CLK] = &gcc_usb_hsic_clk.clkr,
3467         [GCC_USB_HSIC_IO_CAL_CLK] = &gcc_usb_hsic_io_cal_clk.clkr,
3468         [GCC_USB_HSIC_IO_CAL_SLEEP_CLK] = &gcc_usb_hsic_io_cal_sleep_clk.clkr,
3469         [GCC_USB_HSIC_MOCK_UTMI_CLK] = &gcc_usb_hsic_mock_utmi_clk.clkr,
3470         [GCC_USB_HSIC_SYSTEM_CLK] = &gcc_usb_hsic_system_clk.clkr,
3471 };
3472 
3473 static struct gdsc *gcc_apq8084_gdscs[] = {
3474         [USB_HS_HSIC_GDSC] = &usb_hs_hsic_gdsc,
3475         [PCIE0_GDSC] = &pcie0_gdsc,
3476         [PCIE1_GDSC] = &pcie1_gdsc,
3477         [USB30_GDSC] = &usb30_gdsc,
3478 };
3479 
3480 static const struct qcom_reset_map gcc_apq8084_resets[] = {
3481         [GCC_SYSTEM_NOC_BCR] = { 0x0100 },
3482         [GCC_CONFIG_NOC_BCR] = { 0x0140 },
3483         [GCC_PERIPH_NOC_BCR] = { 0x0180 },
3484         [GCC_IMEM_BCR] = { 0x0200 },
3485         [GCC_MMSS_BCR] = { 0x0240 },
3486         [GCC_QDSS_BCR] = { 0x0300 },
3487         [GCC_USB_30_BCR] = { 0x03c0 },
3488         [GCC_USB3_PHY_BCR] = { 0x03fc },
3489         [GCC_USB_HS_HSIC_BCR] = { 0x0400 },
3490         [GCC_USB_HS_BCR] = { 0x0480 },
3491         [GCC_USB2A_PHY_BCR] = { 0x04a8 },
3492         [GCC_USB2B_PHY_BCR] = { 0x04b0 },
3493         [GCC_SDCC1_BCR] = { 0x04c0 },
3494         [GCC_SDCC2_BCR] = { 0x0500 },
3495         [GCC_SDCC3_BCR] = { 0x0540 },
3496         [GCC_SDCC4_BCR] = { 0x0580 },
3497         [GCC_BLSP1_BCR] = { 0x05c0 },
3498         [GCC_BLSP1_QUP1_BCR] = { 0x0640 },
3499         [GCC_BLSP1_UART1_BCR] = { 0x0680 },
3500         [GCC_BLSP1_QUP2_BCR] = { 0x06c0 },
3501         [GCC_BLSP1_UART2_BCR] = { 0x0700 },
3502         [GCC_BLSP1_QUP3_BCR] = { 0x0740 },
3503         [GCC_BLSP1_UART3_BCR] = { 0x0780 },
3504         [GCC_BLSP1_QUP4_BCR] = { 0x07c0 },
3505         [GCC_BLSP1_UART4_BCR] = { 0x0800 },
3506         [GCC_BLSP1_QUP5_BCR] = { 0x0840 },
3507         [GCC_BLSP1_UART5_BCR] = { 0x0880 },
3508         [GCC_BLSP1_QUP6_BCR] = { 0x08c0 },
3509         [GCC_BLSP1_UART6_BCR] = { 0x0900 },
3510         [GCC_BLSP2_BCR] = { 0x0940 },
3511         [GCC_BLSP2_QUP1_BCR] = { 0x0980 },
3512         [GCC_BLSP2_UART1_BCR] = { 0x09c0 },
3513         [GCC_BLSP2_QUP2_BCR] = { 0x0a00 },
3514         [GCC_BLSP2_UART2_BCR] = { 0x0a40 },
3515         [GCC_BLSP2_QUP3_BCR] = { 0x0a80 },
3516         [GCC_BLSP2_UART3_BCR] = { 0x0ac0 },
3517         [GCC_BLSP2_QUP4_BCR] = { 0x0b00 },
3518         [GCC_BLSP2_UART4_BCR] = { 0x0b40 },
3519         [GCC_BLSP2_QUP5_BCR] = { 0x0b80 },
3520         [GCC_BLSP2_UART5_BCR] = { 0x0bc0 },
3521         [GCC_BLSP2_QUP6_BCR] = { 0x0c00 },
3522         [GCC_BLSP2_UART6_BCR] = { 0x0c40 },
3523         [GCC_PDM_BCR] = { 0x0cc0 },
3524         [GCC_PRNG_BCR] = { 0x0d00 },
3525         [GCC_BAM_DMA_BCR] = { 0x0d40 },
3526         [GCC_TSIF_BCR] = { 0x0d80 },
3527         [GCC_TCSR_BCR] = { 0x0dc0 },
3528         [GCC_BOOT_ROM_BCR] = { 0x0e00 },
3529         [GCC_MSG_RAM_BCR] = { 0x0e40 },
3530         [GCC_TLMM_BCR] = { 0x0e80 },
3531         [GCC_MPM_BCR] = { 0x0ec0 },
3532         [GCC_MPM_AHB_RESET] = { 0x0ec4, 1 },
3533         [GCC_MPM_NON_AHB_RESET] = { 0x0ec4, 2 },
3534         [GCC_SEC_CTRL_BCR] = { 0x0f40 },
3535         [GCC_SPMI_BCR] = { 0x0fc0 },
3536         [GCC_SPDM_BCR] = { 0x1000 },
3537         [GCC_CE1_BCR] = { 0x1040 },
3538         [GCC_CE2_BCR] = { 0x1080 },
3539         [GCC_BIMC_BCR] = { 0x1100 },
3540         [GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x1240 },
3541         [GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x1248 },
3542         [GCC_PNOC_BUS_TIMEOUT0_BCR] = { 0x1280 },
3543         [GCC_PNOC_BUS_TIMEOUT1_BCR] = { 0x1288 },
3544         [GCC_PNOC_BUS_TIMEOUT2_BCR] = { 0x1290 },
3545         [GCC_PNOC_BUS_TIMEOUT3_BCR] = { 0x1298 },
3546         [GCC_PNOC_BUS_TIMEOUT4_BCR] = { 0x12a0 },
3547         [GCC_CNOC_BUS_TIMEOUT0_BCR] = { 0x12c0 },
3548         [GCC_CNOC_BUS_TIMEOUT1_BCR] = { 0x12c8 },
3549         [GCC_CNOC_BUS_TIMEOUT2_BCR] = { 0x12d0 },
3550         [GCC_CNOC_BUS_TIMEOUT3_BCR] = { 0x12d8 },
3551         [GCC_CNOC_BUS_TIMEOUT4_BCR] = { 0x12e0 },
3552         [GCC_CNOC_BUS_TIMEOUT5_BCR] = { 0x12e8 },
3553         [GCC_CNOC_BUS_TIMEOUT6_BCR] = { 0x12f0 },
3554         [GCC_DEHR_BCR] = { 0x1300 },
3555         [GCC_RBCPR_BCR] = { 0x1380 },
3556         [GCC_MSS_RESTART] = { 0x1680 },
3557         [GCC_LPASS_RESTART] = { 0x16c0 },
3558         [GCC_WCSS_RESTART] = { 0x1700 },
3559         [GCC_VENUS_RESTART] = { 0x1740 },
3560         [GCC_COPSS_SMMU_BCR] = { 0x1a40 },
3561         [GCC_SPSS_BCR] = { 0x1a80 },
3562         [GCC_PCIE_0_BCR] = { 0x1ac0 },
3563         [GCC_PCIE_0_PHY_BCR] = { 0x1b00 },
3564         [GCC_PCIE_1_BCR] = { 0x1b40 },
3565         [GCC_PCIE_1_PHY_BCR] = { 0x1b80 },
3566         [GCC_USB_30_SEC_BCR] = { 0x1bc0 },
3567         [GCC_USB3_SEC_PHY_BCR] = { 0x1bfc },
3568         [GCC_SATA_BCR] = { 0x1c40 },
3569         [GCC_CE3_BCR] = { 0x1d00 },
3570         [GCC_UFS_BCR] = { 0x1d40 },
3571         [GCC_USB30_PHY_COM_BCR] = { 0x1e80 },
3572 };
3573 
3574 static const struct regmap_config gcc_apq8084_regmap_config = {
3575         .reg_bits       = 32,
3576         .reg_stride     = 4,
3577         .val_bits       = 32,
3578         .max_register   = 0x1fc0,
3579         .fast_io        = true,
3580 };
3581 
3582 static const struct qcom_cc_desc gcc_apq8084_desc = {
3583         .config = &gcc_apq8084_regmap_config,
3584         .clks = gcc_apq8084_clocks,
3585         .num_clks = ARRAY_SIZE(gcc_apq8084_clocks),
3586         .resets = gcc_apq8084_resets,
3587         .num_resets = ARRAY_SIZE(gcc_apq8084_resets),
3588         .gdscs = gcc_apq8084_gdscs,
3589         .num_gdscs = ARRAY_SIZE(gcc_apq8084_gdscs),
3590 };
3591 
3592 static const struct of_device_id gcc_apq8084_match_table[] = {
3593         { .compatible = "qcom,gcc-apq8084" },
3594         { }
3595 };
3596 MODULE_DEVICE_TABLE(of, gcc_apq8084_match_table);
3597 
3598 static int gcc_apq8084_probe(struct platform_device *pdev)
3599 {
3600         int ret;
3601         struct device *dev = &pdev->dev;
3602 
3603         ret = qcom_cc_register_board_clk(dev, "xo_board", "xo", 19200000);
3604         if (ret)
3605                 return ret;
3606 
3607         ret = qcom_cc_register_sleep_clk(dev);
3608         if (ret)
3609                 return ret;
3610 
3611         return qcom_cc_probe(pdev, &gcc_apq8084_desc);
3612 }
3613 
3614 static struct platform_driver gcc_apq8084_driver = {
3615         .probe          = gcc_apq8084_probe,
3616         .driver         = {
3617                 .name   = "gcc-apq8084",
3618                 .of_match_table = gcc_apq8084_match_table,
3619         },
3620 };
3621 
3622 static int __init gcc_apq8084_init(void)
3623 {
3624         return platform_driver_register(&gcc_apq8084_driver);
3625 }
3626 core_initcall(gcc_apq8084_init);
3627 
3628 static void __exit gcc_apq8084_exit(void)
3629 {
3630         platform_driver_unregister(&gcc_apq8084_driver);
3631 }
3632 module_exit(gcc_apq8084_exit);
3633 
3634 MODULE_DESCRIPTION("QCOM GCC APQ8084 Driver");
3635 MODULE_LICENSE("GPL v2");
3636 MODULE_ALIAS("platform:gcc-apq8084");

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