linux/drivers/clk/qcom/gcc-apq8084.c
<<
>>
Prefs
   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
  28enum {
  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
  39static const struct parent_map gcc_xo_gpll0_map[] = {
  40        { P_XO, 0 },
  41        { P_GPLL0, 1 }
  42};
  43
  44static const char * const gcc_xo_gpll0[] = {
  45        "xo",
  46        "gpll0_vote",
  47};
  48
  49static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
  50        { P_XO, 0 },
  51        { P_GPLL0, 1 },
  52        { P_GPLL4, 5 }
  53};
  54
  55static const char * const gcc_xo_gpll0_gpll4[] = {
  56        "xo",
  57        "gpll0_vote",
  58        "gpll4_vote",
  59};
  60
  61static const struct parent_map gcc_xo_sata_asic0_map[] = {
  62        { P_XO, 0 },
  63        { P_SATA_ASIC0_CLK, 2 }
  64};
  65
  66static const char * const gcc_xo_sata_asic0[] = {
  67        "xo",
  68        "sata_asic0_clk",
  69};
  70
  71static const struct parent_map gcc_xo_sata_rx_map[] = {
  72        { P_XO, 0 },
  73        { P_SATA_RX_CLK, 2}
  74};
  75
  76static const char * const gcc_xo_sata_rx[] = {
  77        "xo",
  78        "sata_rx_clk",
  79};
  80
  81static const struct parent_map gcc_xo_pcie_map[] = {
  82        { P_XO, 0 },
  83        { P_PCIE_0_1_PIPE_CLK, 2 }
  84};
  85
  86static const char * const gcc_xo_pcie[] = {
  87        "xo",
  88        "pcie_pipe",
  89};
  90
  91static const struct parent_map gcc_xo_pcie_sleep_map[] = {
  92        { P_XO, 0 },
  93        { P_SLEEP_CLK, 6 }
  94};
  95
  96static const char * const gcc_xo_pcie_sleep[] = {
  97        "xo",
  98        "sleep_clk_src",
  99};
 100
 101static 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
 117static 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
 128static 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
 140static 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
 152static 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
 164static 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
 180static 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
 191static 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
 207static 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
 218static 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
 225static 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
 239static const struct freq_tbl ftbl_gcc_usb30_master_clk[] = {
 240        F(125000000, P_GPLL0, 1, 5, 24),
 241        { }
 242};
 243
 244static 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
 258static const struct freq_tbl ftbl_gcc_usb30_sec_master_clk[] = {
 259        F(125000000, P_GPLL0, 1, 5, 24),
 260        { }
 261};
 262
 263static 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
 277static 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
 294static 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
 311static 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
 317static 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
 330static 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
 341static 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
 355static 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
 368static 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
 382static 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
 395static 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
 409static 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
 422static 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
 436static 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
 449static 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
 463static 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
 476static 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
 490static 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
 509static 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
 523static 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
 537static 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
 551static 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
 565static 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
 579static 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
 593static 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
 606static 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
 620static 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
 633static 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
 647static 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
 660static 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
 674static 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
 687static 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
 701static 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
 714static 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
 728static 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
 741static 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
 755static 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
 769static 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
 783static 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
 797static 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
 811static 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
 825static 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
 839static 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
 847static 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
 860static 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
 868static 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
 881static 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
 889static 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
 902static 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
 909static 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
 923static 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
 937static 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
 951static const struct freq_tbl ftbl_gcc_pcie_0_1_aux_clk[] = {
 952        F(1010000, P_XO, 1, 1, 19),
 953        { }
 954};
 955
 956static 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
 970static 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
 984static 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
 990static 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
1003static 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
1016static const struct freq_tbl ftbl_gcc_pdm2_clk[] = {
1017        F(60000000, P_GPLL0, 10, 0, 0),
1018        { }
1019};
1020
1021static 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
1034static 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
1041static 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
1054static 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
1061static 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
1074static 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
1081static 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
1094static const struct freq_tbl ftbl_gcc_sata_rx_oob_clk[] = {
1095        F(100000000, P_GPLL0, 6, 0, 0),
1096        { }
1097};
1098
1099static 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
1112static 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
1125static 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
1139static 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
1153static 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
1167static 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
1181static const struct freq_tbl ftbl_gcc_tsif_ref_clk[] = {
1182        F(105000, P_XO, 2, 1, 91),
1183        { }
1184};
1185
1186static 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
1200static const struct freq_tbl ftbl_gcc_usb30_mock_utmi_clk[] = {
1201        F(60000000, P_GPLL0, 10, 0, 0),
1202        { }
1203};
1204
1205static 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
1218static const struct freq_tbl ftbl_gcc_usb30_sec_mock_utmi_clk[] = {
1219        F(125000000, P_GPLL0, 1, 5, 24),
1220        { }
1221};
1222
1223static 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
1236static const struct freq_tbl ftbl_gcc_usb_hs_system_clk[] = {
1237        F(75000000, P_GPLL0, 8, 0, 0),
1238        { }
1239};
1240
1241static 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
1254static const struct freq_tbl ftbl_gcc_usb_hsic_clk[] = {
1255        F(480000000, P_GPLL1, 1, 0, 0),
1256        { }
1257};
1258
1259static const struct parent_map usb_hsic_clk_src_map[] = {
1260        { P_XO, 0 },
1261        { P_GPLL1, 4 }
1262};
1263
1264static 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
1280static const struct freq_tbl ftbl_gcc_usb_hsic_ahb_clk_src[] = {
1281        F(60000000, P_GPLL1, 8, 0, 0),
1282        { }
1283};
1284
1285static 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
1302static const struct freq_tbl ftbl_gcc_usb_hsic_io_cal_clk[] = {
1303        F(9600000, P_XO, 2, 0, 0),
1304        { }
1305};
1306
1307static 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
1320static 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
1337static const struct freq_tbl ftbl_gcc_usb_hsic_mock_utmi_clk[] = {
1338        F(60000000, P_GPLL0, 10, 0, 0),
1339        { }
1340};
1341
1342static 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
1355static const struct freq_tbl ftbl_gcc_usb_hsic_system_clk[] = {
1356        F(75000000, P_GPLL0, 8, 0, 0),
1357        { }
1358};
1359
1360static 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
1373static 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
1390static 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
1407static 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
1424static 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
1441static 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
1458static 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
1475static 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
1492static 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
1509static 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
1526static 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
1543static 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
1560static 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
1577static 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
1594static 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
1611static 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
1628static 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
1645static 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
1662static 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
1679static 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
1696static 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
1713static 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
1730static 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
1747static 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
1764static 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
1781static 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
1798static 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
1815static 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
1832static 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
1849static 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
1866static 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
1883static 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
1900static 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
1917static 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
1934static 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
1951static 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
1968static 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
1985static 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
2002static 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
2019static 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
2036static 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
2053static 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
2070static 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
2087static 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
2105static 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
2122static 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
2139static 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
2157static 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
2174static 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
2191static 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
2209static 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
2226static 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
2243static 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
2260static 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
2276static 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
2293static 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
2310static 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
2327static 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
2344static 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
2361static 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
2378static 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
2395static 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
2412static 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
2429static 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
2446static 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
2463static 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
2479static 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
2496static 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
2513static 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
2530static 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
2547static 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
2564static 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
2581static 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
2598static 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
2615static 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
2631static 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
2648static 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
2664static 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
2680static 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
2696static 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
2713static 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
2729static 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
2746static 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
2762static 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
2779static 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
2796static 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
2813static 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
2830static 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
2846static 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
2863static 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
2880static 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
2897static 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
2914static 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
2931static 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
2948static 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
2965static 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
2982static 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
2999static 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
3016static 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
3032static 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
3048static 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
3065static 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
3082static 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
3099static 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
3115static 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
3131static 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
3148static 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
3165static 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
3181static 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
3198static 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
3215static 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
3231static 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
3248static struct gdsc usb_hs_hsic_gdsc = {
3249        .gdscr = 0x404,
3250        .pd = {
3251                .name = "usb_hs_hsic",
3252        },
3253        .pwrsts = PWRSTS_OFF_ON,
3254};
3255
3256static struct gdsc pcie0_gdsc = {
3257        .gdscr = 0x1ac4,
3258        .pd = {
3259                .name = "pcie0",
3260        },
3261        .pwrsts = PWRSTS_OFF_ON,
3262};
3263
3264static struct gdsc pcie1_gdsc = {
3265        .gdscr = 0x1b44,
3266        .pd = {
3267                .name = "pcie1",
3268        },
3269        .pwrsts = PWRSTS_OFF_ON,
3270};
3271
3272static struct gdsc usb30_gdsc = {
3273        .gdscr = 0x1e84,
3274        .pd = {
3275                .name = "usb30",
3276        },
3277        .pwrsts = PWRSTS_OFF_ON,
3278};
3279
3280static 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
3473static 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
3480static 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
3574static 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
3582static 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
3592static const struct of_device_id gcc_apq8084_match_table[] = {
3593        { .compatible = "qcom,gcc-apq8084" },
3594        { }
3595};
3596MODULE_DEVICE_TABLE(of, gcc_apq8084_match_table);
3597
3598static 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
3614static 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
3622static int __init gcc_apq8084_init(void)
3623{
3624        return platform_driver_register(&gcc_apq8084_driver);
3625}
3626core_initcall(gcc_apq8084_init);
3627
3628static void __exit gcc_apq8084_exit(void)
3629{
3630        platform_driver_unregister(&gcc_apq8084_driver);
3631}
3632module_exit(gcc_apq8084_exit);
3633
3634MODULE_DESCRIPTION("QCOM GCC APQ8084 Driver");
3635MODULE_LICENSE("GPL v2");
3636MODULE_ALIAS("platform:gcc-apq8084");
3637