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