cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

gcc-apq8084.c (90047B)


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