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