Linux Audio

Check our new training course

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