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-sc8180x.c (121221B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
      4 * Copyright (c) 2020-2021, Linaro Ltd.
      5 */
      6
      7#include <linux/bitops.h>
      8#include <linux/clk-provider.h>
      9#include <linux/err.h>
     10#include <linux/kernel.h>
     11#include <linux/module.h>
     12#include <linux/of.h>
     13#include <linux/of_device.h>
     14#include <linux/platform_device.h>
     15#include <linux/regmap.h>
     16#include <linux/reset-controller.h>
     17
     18#include <dt-bindings/clock/qcom,gcc-sc8180x.h>
     19
     20#include "common.h"
     21#include "clk-alpha-pll.h"
     22#include "clk-branch.h"
     23#include "clk-pll.h"
     24#include "clk-rcg.h"
     25#include "clk-regmap.h"
     26#include "gdsc.h"
     27#include "reset.h"
     28
     29enum {
     30	P_AUD_REF_CLK,
     31	P_BI_TCXO,
     32	P_GPLL0_OUT_EVEN,
     33	P_GPLL0_OUT_MAIN,
     34	P_GPLL1_OUT_MAIN,
     35	P_GPLL2_OUT_MAIN,
     36	P_GPLL4_OUT_MAIN,
     37	P_GPLL5_OUT_MAIN,
     38	P_GPLL7_OUT_MAIN,
     39	P_GPLL9_OUT_MAIN,
     40	P_SLEEP_CLK,
     41};
     42
     43static struct pll_vco trion_vco[] = {
     44	{ 249600000, 2000000000, 0 },
     45};
     46
     47static struct clk_alpha_pll gpll0 = {
     48	.offset = 0x0,
     49	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
     50	.vco_table = trion_vco,
     51	.num_vco = ARRAY_SIZE(trion_vco),
     52	.clkr = {
     53		.enable_reg = 0x52000,
     54		.enable_mask = BIT(0),
     55		.hw.init = &(struct clk_init_data){
     56			.name = "gpll0",
     57			.parent_data = &(const struct clk_parent_data){
     58				.fw_name = "bi_tcxo",
     59			},
     60			.num_parents = 1,
     61			.ops = &clk_alpha_pll_fixed_trion_ops,
     62		},
     63	},
     64};
     65
     66static const struct clk_div_table post_div_table_trion_even[] = {
     67	{ 0x0, 1 },
     68	{ 0x1, 2 },
     69	{ 0x3, 4 },
     70	{ 0x7, 8 },
     71	{ }
     72};
     73
     74static struct clk_alpha_pll_postdiv gpll0_out_even = {
     75	.offset = 0x0,
     76	.post_div_shift = 8,
     77	.post_div_table = post_div_table_trion_even,
     78	.num_post_div = ARRAY_SIZE(post_div_table_trion_even),
     79	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
     80	.width = 4,
     81	.clkr.hw.init = &(struct clk_init_data){
     82		.name = "gpll0_out_even",
     83		.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
     84		.num_parents = 1,
     85		.ops = &clk_alpha_pll_postdiv_trion_ops,
     86	},
     87};
     88
     89static struct clk_alpha_pll gpll1 = {
     90	.offset = 0x1000,
     91	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
     92	.vco_table = trion_vco,
     93	.num_vco = ARRAY_SIZE(trion_vco),
     94	.clkr = {
     95		.enable_reg = 0x52000,
     96		.enable_mask = BIT(1),
     97		.hw.init = &(struct clk_init_data){
     98			.name = "gpll1",
     99			.parent_data = &(const struct clk_parent_data){
    100				.fw_name = "bi_tcxo",
    101			},
    102			.num_parents = 1,
    103			.ops = &clk_alpha_pll_fixed_trion_ops,
    104		},
    105	},
    106};
    107
    108static struct clk_alpha_pll gpll4 = {
    109	.offset = 0x76000,
    110	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
    111	.vco_table = trion_vco,
    112	.num_vco = ARRAY_SIZE(trion_vco),
    113	.clkr = {
    114		.enable_reg = 0x52000,
    115		.enable_mask = BIT(4),
    116		.hw.init = &(struct clk_init_data){
    117			.name = "gpll4",
    118			.parent_data = &(const struct clk_parent_data){
    119				.fw_name = "bi_tcxo",
    120			},
    121			.num_parents = 1,
    122			.ops = &clk_alpha_pll_fixed_trion_ops,
    123		},
    124	},
    125};
    126
    127static struct clk_alpha_pll gpll7 = {
    128	.offset = 0x1a000,
    129	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
    130	.vco_table = trion_vco,
    131	.num_vco = ARRAY_SIZE(trion_vco),
    132	.clkr = {
    133		.enable_reg = 0x52000,
    134		.enable_mask = BIT(7),
    135		.hw.init = &(struct clk_init_data){
    136			.name = "gpll7",
    137			.parent_data = &(const struct clk_parent_data){
    138				.fw_name = "bi_tcxo",
    139			},
    140			.num_parents = 1,
    141			.ops = &clk_alpha_pll_fixed_trion_ops,
    142		},
    143	},
    144};
    145
    146static const struct parent_map gcc_parent_map_0[] = {
    147	{ P_BI_TCXO, 0 },
    148	{ P_GPLL0_OUT_MAIN, 1 },
    149	{ P_GPLL0_OUT_EVEN, 6 },
    150};
    151
    152static const struct clk_parent_data gcc_parents_0[] = {
    153	{ .fw_name = "bi_tcxo" },
    154	{ .hw = &gpll0.clkr.hw },
    155	{ .hw = &gpll0_out_even.clkr.hw },
    156};
    157
    158static const struct parent_map gcc_parent_map_1[] = {
    159	{ P_BI_TCXO, 0 },
    160	{ P_GPLL0_OUT_MAIN, 1 },
    161	{ P_SLEEP_CLK, 5 },
    162	{ P_GPLL0_OUT_EVEN, 6 },
    163};
    164
    165static const struct clk_parent_data gcc_parents_1[] = {
    166	{ .fw_name = "bi_tcxo", },
    167	{ .hw = &gpll0.clkr.hw },
    168	{ .fw_name = "sleep_clk", },
    169	{ .hw = &gpll0_out_even.clkr.hw },
    170};
    171
    172static const struct parent_map gcc_parent_map_2[] = {
    173	{ P_BI_TCXO, 0 },
    174	{ P_SLEEP_CLK, 5 },
    175};
    176
    177static const struct clk_parent_data gcc_parents_2[] = {
    178	{ .fw_name = "bi_tcxo", },
    179	{ .fw_name = "sleep_clk", },
    180};
    181
    182static const struct parent_map gcc_parent_map_3[] = {
    183	{ P_BI_TCXO, 0 },
    184	{ P_GPLL0_OUT_MAIN, 1 },
    185	{ P_GPLL2_OUT_MAIN, 2 },
    186	{ P_GPLL5_OUT_MAIN, 3 },
    187	{ P_GPLL1_OUT_MAIN, 4 },
    188	{ P_GPLL4_OUT_MAIN, 5 },
    189	{ P_GPLL0_OUT_EVEN, 6 },
    190};
    191
    192static const struct clk_parent_data gcc_parents_3[] = {
    193	{ .fw_name = "bi_tcxo", },
    194	{ .hw = &gpll0.clkr.hw },
    195	{ .name = "gpll2" },
    196	{ .name = "gpll5" },
    197	{ .hw = &gpll1.clkr.hw },
    198	{ .hw = &gpll4.clkr.hw },
    199	{ .hw = &gpll0_out_even.clkr.hw },
    200};
    201
    202static const struct parent_map gcc_parent_map_4[] = {
    203	{ P_BI_TCXO, 0 },
    204};
    205
    206static const struct clk_parent_data gcc_parents_4[] = {
    207	{ .fw_name = "bi_tcxo", },
    208};
    209
    210static const struct parent_map gcc_parent_map_5[] = {
    211	{ P_BI_TCXO, 0 },
    212	{ P_GPLL0_OUT_MAIN, 1 },
    213};
    214
    215static const struct clk_parent_data gcc_parents_5[] = {
    216	{ .fw_name = "bi_tcxo", },
    217	{ .hw = &gpll0.clkr.hw },
    218};
    219
    220static const struct parent_map gcc_parent_map_6[] = {
    221	{ P_BI_TCXO, 0 },
    222	{ P_GPLL0_OUT_MAIN, 1 },
    223	{ P_GPLL7_OUT_MAIN, 3 },
    224	{ P_GPLL0_OUT_EVEN, 6 },
    225};
    226
    227static const struct clk_parent_data gcc_parents_6[] = {
    228	{ .fw_name = "bi_tcxo", },
    229	{ .hw = &gpll0.clkr.hw },
    230	{ .hw = &gpll7.clkr.hw },
    231	{ .hw = &gpll0_out_even.clkr.hw },
    232};
    233
    234static const struct parent_map gcc_parent_map_7[] = {
    235	{ P_BI_TCXO, 0 },
    236	{ P_GPLL0_OUT_MAIN, 1 },
    237	{ P_GPLL9_OUT_MAIN, 2 },
    238	{ P_GPLL4_OUT_MAIN, 5 },
    239	{ P_GPLL0_OUT_EVEN, 6 },
    240};
    241
    242static const struct clk_parent_data gcc_parents_7[] = {
    243	{ .fw_name = "bi_tcxo", },
    244	{ .hw = &gpll0.clkr.hw },
    245	{ .name = "gppl9" },
    246	{ .hw = &gpll4.clkr.hw },
    247	{ .hw = &gpll0_out_even.clkr.hw },
    248};
    249
    250static const struct parent_map gcc_parent_map_8[] = {
    251	{ P_BI_TCXO, 0 },
    252	{ P_GPLL0_OUT_MAIN, 1 },
    253	{ P_AUD_REF_CLK, 2 },
    254	{ P_GPLL0_OUT_EVEN, 6 },
    255};
    256
    257static const struct clk_parent_data gcc_parents_8[] = {
    258	{ .fw_name = "bi_tcxo", },
    259	{ .hw = &gpll0.clkr.hw },
    260	{ .name = "aud_ref_clk" },
    261	{ .hw = &gpll0_out_even.clkr.hw },
    262};
    263
    264static const struct freq_tbl ftbl_gcc_cpuss_ahb_clk_src[] = {
    265	F(19200000, P_BI_TCXO, 1, 0, 0),
    266	F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
    267	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
    268	{ }
    269};
    270
    271static struct clk_rcg2 gcc_cpuss_ahb_clk_src = {
    272	.cmd_rcgr = 0x48014,
    273	.mnd_width = 0,
    274	.hid_width = 5,
    275	.parent_map = gcc_parent_map_0,
    276	.freq_tbl = ftbl_gcc_cpuss_ahb_clk_src,
    277	.clkr.hw.init = &(struct clk_init_data){
    278		.name = "gcc_cpuss_ahb_clk_src",
    279		.parent_data = gcc_parents_0,
    280		.num_parents = ARRAY_SIZE(gcc_parents_0),
    281		.flags = CLK_SET_RATE_PARENT,
    282		.ops = &clk_rcg2_ops,
    283	},
    284};
    285
    286static const struct freq_tbl ftbl_gcc_emac_ptp_clk_src[] = {
    287	F(19200000, P_BI_TCXO, 1, 0, 0),
    288	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
    289	F(125000000, P_GPLL7_OUT_MAIN, 4, 0, 0),
    290	F(250000000, P_GPLL7_OUT_MAIN, 2, 0, 0),
    291	{ }
    292};
    293
    294static struct clk_rcg2 gcc_emac_ptp_clk_src = {
    295	.cmd_rcgr = 0x6038,
    296	.mnd_width = 0,
    297	.hid_width = 5,
    298	.parent_map = gcc_parent_map_6,
    299	.freq_tbl = ftbl_gcc_emac_ptp_clk_src,
    300	.clkr.hw.init = &(struct clk_init_data){
    301		.name = "gcc_emac_ptp_clk_src",
    302		.parent_data = gcc_parents_6,
    303		.num_parents = ARRAY_SIZE(gcc_parents_6),
    304		.flags = CLK_SET_RATE_PARENT,
    305		.ops = &clk_rcg2_ops,
    306	},
    307};
    308
    309static const struct freq_tbl ftbl_gcc_emac_rgmii_clk_src[] = {
    310	F(2500000, P_BI_TCXO, 1, 25, 192),
    311	F(5000000, P_BI_TCXO, 1, 25, 96),
    312	F(19200000, P_BI_TCXO, 1, 0, 0),
    313	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
    314	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
    315	F(125000000, P_GPLL7_OUT_MAIN, 4, 0, 0),
    316	F(250000000, P_GPLL7_OUT_MAIN, 2, 0, 0),
    317	{ }
    318};
    319
    320static struct clk_rcg2 gcc_emac_rgmii_clk_src = {
    321	.cmd_rcgr = 0x601c,
    322	.mnd_width = 8,
    323	.hid_width = 5,
    324	.parent_map = gcc_parent_map_6,
    325	.freq_tbl = ftbl_gcc_emac_rgmii_clk_src,
    326	.clkr.hw.init = &(struct clk_init_data){
    327		.name = "gcc_emac_rgmii_clk_src",
    328		.parent_data = gcc_parents_6,
    329		.num_parents = ARRAY_SIZE(gcc_parents_6),
    330		.flags = CLK_SET_RATE_PARENT,
    331		.ops = &clk_rcg2_ops,
    332	},
    333};
    334
    335static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
    336	F(19200000, P_BI_TCXO, 1, 0, 0),
    337	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
    338	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
    339	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
    340	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
    341	{ }
    342};
    343
    344static struct clk_rcg2 gcc_gp1_clk_src = {
    345	.cmd_rcgr = 0x64004,
    346	.mnd_width = 8,
    347	.hid_width = 5,
    348	.parent_map = gcc_parent_map_1,
    349	.freq_tbl = ftbl_gcc_gp1_clk_src,
    350	.clkr.hw.init = &(struct clk_init_data){
    351		.name = "gcc_gp1_clk_src",
    352		.parent_data = gcc_parents_1,
    353		.num_parents = ARRAY_SIZE(gcc_parents_1),
    354		.flags = CLK_SET_RATE_PARENT,
    355		.ops = &clk_rcg2_ops,
    356	},
    357};
    358
    359static struct clk_rcg2 gcc_gp2_clk_src = {
    360	.cmd_rcgr = 0x65004,
    361	.mnd_width = 8,
    362	.hid_width = 5,
    363	.parent_map = gcc_parent_map_1,
    364	.freq_tbl = ftbl_gcc_gp1_clk_src,
    365	.clkr.hw.init = &(struct clk_init_data){
    366		.name = "gcc_gp2_clk_src",
    367		.parent_data = gcc_parents_1,
    368		.num_parents = ARRAY_SIZE(gcc_parents_1),
    369		.flags = CLK_SET_RATE_PARENT,
    370		.ops = &clk_rcg2_ops,
    371	},
    372};
    373
    374static struct clk_rcg2 gcc_gp3_clk_src = {
    375	.cmd_rcgr = 0x66004,
    376	.mnd_width = 8,
    377	.hid_width = 5,
    378	.parent_map = gcc_parent_map_1,
    379	.freq_tbl = ftbl_gcc_gp1_clk_src,
    380	.clkr.hw.init = &(struct clk_init_data){
    381		.name = "gcc_gp3_clk_src",
    382		.parent_data = gcc_parents_1,
    383		.num_parents = ARRAY_SIZE(gcc_parents_1),
    384		.flags = CLK_SET_RATE_PARENT,
    385		.ops = &clk_rcg2_ops,
    386	},
    387};
    388
    389static struct clk_rcg2 gcc_gp4_clk_src = {
    390	.cmd_rcgr = 0xbe004,
    391	.mnd_width = 8,
    392	.hid_width = 5,
    393	.parent_map = gcc_parent_map_1,
    394	.freq_tbl = ftbl_gcc_gp1_clk_src,
    395	.clkr.hw.init = &(struct clk_init_data){
    396		.name = "gcc_gp4_clk_src",
    397		.parent_data = gcc_parents_1,
    398		.num_parents = ARRAY_SIZE(gcc_parents_1),
    399		.flags = CLK_SET_RATE_PARENT,
    400		.ops = &clk_rcg2_ops,
    401	},
    402};
    403
    404static struct clk_rcg2 gcc_gp5_clk_src = {
    405	.cmd_rcgr = 0xbf004,
    406	.mnd_width = 8,
    407	.hid_width = 5,
    408	.parent_map = gcc_parent_map_1,
    409	.freq_tbl = ftbl_gcc_gp1_clk_src,
    410	.clkr.hw.init = &(struct clk_init_data){
    411		.name = "gcc_gp5_clk_src",
    412		.parent_data = gcc_parents_1,
    413		.num_parents = ARRAY_SIZE(gcc_parents_1),
    414		.flags = CLK_SET_RATE_PARENT,
    415		.ops = &clk_rcg2_ops,
    416	},
    417};
    418
    419static const struct freq_tbl ftbl_gcc_npu_axi_clk_src[] = {
    420	F(19200000, P_BI_TCXO, 1, 0, 0),
    421	F(60000000, P_GPLL0_OUT_EVEN, 5, 0, 0),
    422	F(150000000, P_GPLL0_OUT_EVEN, 2, 0, 0),
    423	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
    424	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
    425	F(403000000, P_GPLL4_OUT_MAIN, 2, 0, 0),
    426	F(533000000, P_GPLL1_OUT_MAIN, 2, 0, 0),
    427	{ }
    428};
    429
    430static struct clk_rcg2 gcc_npu_axi_clk_src = {
    431	.cmd_rcgr = 0x4d014,
    432	.mnd_width = 0,
    433	.hid_width = 5,
    434	.parent_map = gcc_parent_map_3,
    435	.freq_tbl = ftbl_gcc_npu_axi_clk_src,
    436	.clkr.hw.init = &(struct clk_init_data){
    437		.name = "gcc_npu_axi_clk_src",
    438		.parent_data = gcc_parents_3,
    439		.num_parents = ARRAY_SIZE(gcc_parents_3),
    440		.flags = CLK_SET_RATE_PARENT,
    441		.ops = &clk_rcg2_ops,
    442	},
    443};
    444
    445static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
    446	F(9600000, P_BI_TCXO, 2, 0, 0),
    447	F(19200000, P_BI_TCXO, 1, 0, 0),
    448	{ }
    449};
    450
    451static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
    452	.cmd_rcgr = 0x6b02c,
    453	.mnd_width = 16,
    454	.hid_width = 5,
    455	.parent_map = gcc_parent_map_2,
    456	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
    457	.clkr.hw.init = &(struct clk_init_data){
    458		.name = "gcc_pcie_0_aux_clk_src",
    459		.parent_data = gcc_parents_2,
    460		.num_parents = ARRAY_SIZE(gcc_parents_2),
    461		.flags = CLK_SET_RATE_PARENT,
    462		.ops = &clk_rcg2_ops,
    463	},
    464};
    465
    466static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
    467	.cmd_rcgr = 0x8d02c,
    468	.mnd_width = 16,
    469	.hid_width = 5,
    470	.parent_map = gcc_parent_map_2,
    471	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
    472	.clkr.hw.init = &(struct clk_init_data){
    473		.name = "gcc_pcie_1_aux_clk_src",
    474		.parent_data = gcc_parents_2,
    475		.num_parents = ARRAY_SIZE(gcc_parents_2),
    476		.flags = CLK_SET_RATE_PARENT,
    477		.ops = &clk_rcg2_ops,
    478	},
    479};
    480
    481static struct clk_rcg2 gcc_pcie_2_aux_clk_src = {
    482	.cmd_rcgr = 0x9d02c,
    483	.mnd_width = 16,
    484	.hid_width = 5,
    485	.parent_map = gcc_parent_map_2,
    486	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
    487	.clkr.hw.init = &(struct clk_init_data){
    488		.name = "gcc_pcie_2_aux_clk_src",
    489		.parent_data = gcc_parents_2,
    490		.num_parents = ARRAY_SIZE(gcc_parents_2),
    491		.flags = CLK_SET_RATE_PARENT,
    492		.ops = &clk_rcg2_ops,
    493	},
    494};
    495
    496static struct clk_rcg2 gcc_pcie_3_aux_clk_src = {
    497	.cmd_rcgr = 0xa302c,
    498	.mnd_width = 16,
    499	.hid_width = 5,
    500	.parent_map = gcc_parent_map_2,
    501	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
    502	.clkr.hw.init = &(struct clk_init_data){
    503		.name = "gcc_pcie_3_aux_clk_src",
    504		.parent_data = gcc_parents_2,
    505		.num_parents = ARRAY_SIZE(gcc_parents_2),
    506		.flags = CLK_SET_RATE_PARENT,
    507		.ops = &clk_rcg2_ops,
    508	},
    509};
    510
    511static const struct freq_tbl ftbl_gcc_pcie_phy_refgen_clk_src[] = {
    512	F(19200000, P_BI_TCXO, 1, 0, 0),
    513	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
    514	{ }
    515};
    516
    517static struct clk_rcg2 gcc_pcie_phy_refgen_clk_src = {
    518	.cmd_rcgr = 0x6f014,
    519	.mnd_width = 0,
    520	.hid_width = 5,
    521	.parent_map = gcc_parent_map_0,
    522	.freq_tbl = ftbl_gcc_pcie_phy_refgen_clk_src,
    523	.clkr.hw.init = &(struct clk_init_data){
    524		.name = "gcc_pcie_phy_refgen_clk_src",
    525		.parent_data = gcc_parents_0,
    526		.num_parents = ARRAY_SIZE(gcc_parents_0),
    527		.flags = CLK_SET_RATE_PARENT,
    528		.ops = &clk_rcg2_ops,
    529	},
    530};
    531
    532static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
    533	F(9600000, P_BI_TCXO, 2, 0, 0),
    534	F(19200000, P_BI_TCXO, 1, 0, 0),
    535	F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
    536	{ }
    537};
    538
    539static struct clk_rcg2 gcc_pdm2_clk_src = {
    540	.cmd_rcgr = 0x33010,
    541	.mnd_width = 0,
    542	.hid_width = 5,
    543	.parent_map = gcc_parent_map_0,
    544	.freq_tbl = ftbl_gcc_pdm2_clk_src,
    545	.clkr.hw.init = &(struct clk_init_data){
    546		.name = "gcc_pdm2_clk_src",
    547		.parent_data = gcc_parents_0,
    548		.num_parents = ARRAY_SIZE(gcc_parents_0),
    549		.flags = CLK_SET_RATE_PARENT,
    550		.ops = &clk_rcg2_ops,
    551	},
    552};
    553
    554static const struct freq_tbl ftbl_gcc_qspi_1_core_clk_src[] = {
    555	F(19200000, P_BI_TCXO, 1, 0, 0),
    556	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
    557	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
    558	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
    559	{ }
    560};
    561
    562static struct clk_rcg2 gcc_qspi_1_core_clk_src = {
    563	.cmd_rcgr = 0x4a00c,
    564	.mnd_width = 0,
    565	.hid_width = 5,
    566	.parent_map = gcc_parent_map_0,
    567	.freq_tbl = ftbl_gcc_qspi_1_core_clk_src,
    568	.clkr.hw.init = &(struct clk_init_data){
    569		.name = "gcc_qspi_1_core_clk_src",
    570		.parent_data = gcc_parents_0,
    571		.num_parents = ARRAY_SIZE(gcc_parents_0),
    572		.flags = CLK_SET_RATE_PARENT,
    573		.ops = &clk_rcg2_ops,
    574	},
    575};
    576
    577static struct clk_rcg2 gcc_qspi_core_clk_src = {
    578	.cmd_rcgr = 0x4b008,
    579	.mnd_width = 0,
    580	.hid_width = 5,
    581	.parent_map = gcc_parent_map_0,
    582	.freq_tbl = ftbl_gcc_qspi_1_core_clk_src,
    583	.clkr.hw.init = &(struct clk_init_data){
    584		.name = "gcc_qspi_core_clk_src",
    585		.parent_data = gcc_parents_0,
    586		.num_parents = ARRAY_SIZE(gcc_parents_0),
    587		.flags = CLK_SET_RATE_PARENT,
    588		.ops = &clk_rcg2_ops,
    589	},
    590};
    591
    592static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
    593	F(7372800, P_GPLL0_OUT_EVEN, 1, 384, 15625),
    594	F(14745600, P_GPLL0_OUT_EVEN, 1, 768, 15625),
    595	F(19200000, P_BI_TCXO, 1, 0, 0),
    596	F(29491200, P_GPLL0_OUT_EVEN, 1, 1536, 15625),
    597	F(32000000, P_GPLL0_OUT_EVEN, 1, 8, 75),
    598	F(48000000, P_GPLL0_OUT_EVEN, 1, 4, 25),
    599	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
    600	F(64000000, P_GPLL0_OUT_EVEN, 1, 16, 75),
    601	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
    602	F(80000000, P_GPLL0_OUT_EVEN, 1, 4, 15),
    603	F(96000000, P_GPLL0_OUT_EVEN, 1, 8, 25),
    604	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
    605	F(102400000, P_GPLL0_OUT_EVEN, 1, 128, 375),
    606	F(112000000, P_GPLL0_OUT_EVEN, 1, 28, 75),
    607	F(117964800, P_GPLL0_OUT_EVEN, 1, 6144, 15625),
    608	F(120000000, P_GPLL0_OUT_EVEN, 2.5, 0, 0),
    609	F(128000000, P_GPLL0_OUT_MAIN, 1, 16, 75),
    610	{ }
    611};
    612
    613static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
    614	.cmd_rcgr = 0x17148,
    615	.mnd_width = 16,
    616	.hid_width = 5,
    617	.parent_map = gcc_parent_map_0,
    618	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    619	.clkr.hw.init = &(struct clk_init_data){
    620		.name = "gcc_qupv3_wrap0_s0_clk_src",
    621		.parent_data = gcc_parents_0,
    622		.num_parents = ARRAY_SIZE(gcc_parents_0),
    623		.flags = CLK_SET_RATE_PARENT,
    624		.ops = &clk_rcg2_ops,
    625	},
    626};
    627
    628static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
    629	.cmd_rcgr = 0x17278,
    630	.mnd_width = 16,
    631	.hid_width = 5,
    632	.parent_map = gcc_parent_map_0,
    633	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    634	.clkr.hw.init = &(struct clk_init_data){
    635		.name = "gcc_qupv3_wrap0_s1_clk_src",
    636		.parent_data = gcc_parents_0,
    637		.num_parents = ARRAY_SIZE(gcc_parents_0),
    638		.flags = CLK_SET_RATE_PARENT,
    639		.ops = &clk_rcg2_ops,
    640	},
    641};
    642
    643static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
    644	.cmd_rcgr = 0x173a8,
    645	.mnd_width = 16,
    646	.hid_width = 5,
    647	.parent_map = gcc_parent_map_0,
    648	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    649	.clkr.hw.init = &(struct clk_init_data){
    650		.name = "gcc_qupv3_wrap0_s2_clk_src",
    651		.parent_data = gcc_parents_0,
    652		.num_parents = ARRAY_SIZE(gcc_parents_0),
    653		.flags = CLK_SET_RATE_PARENT,
    654		.ops = &clk_rcg2_ops,
    655	},
    656};
    657
    658static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
    659	.cmd_rcgr = 0x174d8,
    660	.mnd_width = 16,
    661	.hid_width = 5,
    662	.parent_map = gcc_parent_map_0,
    663	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    664	.clkr.hw.init = &(struct clk_init_data){
    665		.name = "gcc_qupv3_wrap0_s3_clk_src",
    666		.parent_data = gcc_parents_0,
    667		.num_parents = ARRAY_SIZE(gcc_parents_0),
    668		.flags = CLK_SET_RATE_PARENT,
    669		.ops = &clk_rcg2_ops,
    670	},
    671};
    672
    673static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
    674	.cmd_rcgr = 0x17608,
    675	.mnd_width = 16,
    676	.hid_width = 5,
    677	.parent_map = gcc_parent_map_0,
    678	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    679	.clkr.hw.init = &(struct clk_init_data){
    680		.name = "gcc_qupv3_wrap0_s4_clk_src",
    681		.parent_data = gcc_parents_0,
    682		.num_parents = ARRAY_SIZE(gcc_parents_0),
    683		.flags = CLK_SET_RATE_PARENT,
    684		.ops = &clk_rcg2_ops,
    685	},
    686};
    687
    688static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
    689	.cmd_rcgr = 0x17738,
    690	.mnd_width = 16,
    691	.hid_width = 5,
    692	.parent_map = gcc_parent_map_0,
    693	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    694	.clkr.hw.init = &(struct clk_init_data){
    695		.name = "gcc_qupv3_wrap0_s5_clk_src",
    696		.parent_data = gcc_parents_0,
    697		.num_parents = ARRAY_SIZE(gcc_parents_0),
    698		.flags = CLK_SET_RATE_PARENT,
    699		.ops = &clk_rcg2_ops,
    700	},
    701};
    702
    703static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
    704	.cmd_rcgr = 0x17868,
    705	.mnd_width = 16,
    706	.hid_width = 5,
    707	.parent_map = gcc_parent_map_0,
    708	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    709	.clkr.hw.init = &(struct clk_init_data){
    710		.name = "gcc_qupv3_wrap0_s6_clk_src",
    711		.parent_data = gcc_parents_0,
    712		.num_parents = ARRAY_SIZE(gcc_parents_0),
    713		.flags = CLK_SET_RATE_PARENT,
    714		.ops = &clk_rcg2_ops,
    715	},
    716};
    717
    718static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
    719	.cmd_rcgr = 0x17998,
    720	.mnd_width = 16,
    721	.hid_width = 5,
    722	.parent_map = gcc_parent_map_0,
    723	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    724	.clkr.hw.init = &(struct clk_init_data){
    725		.name = "gcc_qupv3_wrap0_s7_clk_src",
    726		.parent_data = gcc_parents_0,
    727		.num_parents = ARRAY_SIZE(gcc_parents_0),
    728		.flags = CLK_SET_RATE_PARENT,
    729		.ops = &clk_rcg2_ops,
    730	},
    731};
    732
    733static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
    734	.cmd_rcgr = 0x18148,
    735	.mnd_width = 16,
    736	.hid_width = 5,
    737	.parent_map = gcc_parent_map_0,
    738	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    739	.clkr.hw.init = &(struct clk_init_data){
    740		.name = "gcc_qupv3_wrap1_s0_clk_src",
    741		.parent_data = gcc_parents_0,
    742		.num_parents = ARRAY_SIZE(gcc_parents_0),
    743		.flags = CLK_SET_RATE_PARENT,
    744		.ops = &clk_rcg2_ops,
    745	},
    746};
    747
    748static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
    749	.cmd_rcgr = 0x18278,
    750	.mnd_width = 16,
    751	.hid_width = 5,
    752	.parent_map = gcc_parent_map_0,
    753	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    754	.clkr.hw.init = &(struct clk_init_data){
    755		.name = "gcc_qupv3_wrap1_s1_clk_src",
    756		.parent_data = gcc_parents_0,
    757		.num_parents = ARRAY_SIZE(gcc_parents_0),
    758		.flags = CLK_SET_RATE_PARENT,
    759		.ops = &clk_rcg2_ops,
    760	},
    761};
    762
    763static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
    764	.cmd_rcgr = 0x183a8,
    765	.mnd_width = 16,
    766	.hid_width = 5,
    767	.parent_map = gcc_parent_map_0,
    768	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    769	.clkr.hw.init = &(struct clk_init_data){
    770		.name = "gcc_qupv3_wrap1_s2_clk_src",
    771		.parent_data = gcc_parents_0,
    772		.num_parents = ARRAY_SIZE(gcc_parents_0),
    773		.flags = CLK_SET_RATE_PARENT,
    774		.ops = &clk_rcg2_ops,
    775	},
    776};
    777
    778static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
    779	.cmd_rcgr = 0x184d8,
    780	.mnd_width = 16,
    781	.hid_width = 5,
    782	.parent_map = gcc_parent_map_0,
    783	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    784	.clkr.hw.init = &(struct clk_init_data){
    785		.name = "gcc_qupv3_wrap1_s3_clk_src",
    786		.parent_data = gcc_parents_0,
    787		.num_parents = ARRAY_SIZE(gcc_parents_0),
    788		.flags = CLK_SET_RATE_PARENT,
    789		.ops = &clk_rcg2_ops,
    790	},
    791};
    792
    793static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
    794	.cmd_rcgr = 0x18608,
    795	.mnd_width = 16,
    796	.hid_width = 5,
    797	.parent_map = gcc_parent_map_0,
    798	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    799	.clkr.hw.init = &(struct clk_init_data){
    800		.name = "gcc_qupv3_wrap1_s4_clk_src",
    801		.parent_data = gcc_parents_0,
    802		.num_parents = ARRAY_SIZE(gcc_parents_0),
    803		.flags = CLK_SET_RATE_PARENT,
    804		.ops = &clk_rcg2_ops,
    805	},
    806};
    807
    808static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
    809	.cmd_rcgr = 0x18738,
    810	.mnd_width = 16,
    811	.hid_width = 5,
    812	.parent_map = gcc_parent_map_0,
    813	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    814	.clkr.hw.init = &(struct clk_init_data){
    815		.name = "gcc_qupv3_wrap1_s5_clk_src",
    816		.parent_data = gcc_parents_0,
    817		.num_parents = ARRAY_SIZE(gcc_parents_0),
    818		.flags = CLK_SET_RATE_PARENT,
    819		.ops = &clk_rcg2_ops,
    820	},
    821};
    822
    823static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
    824	.cmd_rcgr = 0x1e148,
    825	.mnd_width = 16,
    826	.hid_width = 5,
    827	.parent_map = gcc_parent_map_0,
    828	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    829	.clkr.hw.init = &(struct clk_init_data){
    830		.name = "gcc_qupv3_wrap2_s0_clk_src",
    831		.parent_data = gcc_parents_0,
    832		.num_parents = ARRAY_SIZE(gcc_parents_0),
    833		.flags = CLK_SET_RATE_PARENT,
    834		.ops = &clk_rcg2_ops,
    835	},
    836};
    837
    838static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
    839	.cmd_rcgr = 0x1e278,
    840	.mnd_width = 16,
    841	.hid_width = 5,
    842	.parent_map = gcc_parent_map_0,
    843	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    844	.clkr.hw.init = &(struct clk_init_data){
    845		.name = "gcc_qupv3_wrap2_s1_clk_src",
    846		.parent_data = gcc_parents_0,
    847		.num_parents = ARRAY_SIZE(gcc_parents_0),
    848		.flags = CLK_SET_RATE_PARENT,
    849		.ops = &clk_rcg2_ops,
    850	},
    851};
    852
    853static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
    854	.cmd_rcgr = 0x1e3a8,
    855	.mnd_width = 16,
    856	.hid_width = 5,
    857	.parent_map = gcc_parent_map_0,
    858	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    859	.clkr.hw.init = &(struct clk_init_data){
    860		.name = "gcc_qupv3_wrap2_s2_clk_src",
    861		.parent_data = gcc_parents_0,
    862		.num_parents = ARRAY_SIZE(gcc_parents_0),
    863		.flags = CLK_SET_RATE_PARENT,
    864		.ops = &clk_rcg2_ops,
    865	},
    866};
    867
    868static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
    869	.cmd_rcgr = 0x1e4d8,
    870	.mnd_width = 16,
    871	.hid_width = 5,
    872	.parent_map = gcc_parent_map_0,
    873	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    874	.clkr.hw.init = &(struct clk_init_data){
    875		.name = "gcc_qupv3_wrap2_s3_clk_src",
    876		.parent_data = gcc_parents_0,
    877		.num_parents = ARRAY_SIZE(gcc_parents_0),
    878		.flags = CLK_SET_RATE_PARENT,
    879		.ops = &clk_rcg2_ops,
    880	},
    881};
    882
    883static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
    884	.cmd_rcgr = 0x1e608,
    885	.mnd_width = 16,
    886	.hid_width = 5,
    887	.parent_map = gcc_parent_map_0,
    888	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    889	.clkr.hw.init = &(struct clk_init_data){
    890		.name = "gcc_qupv3_wrap2_s4_clk_src",
    891		.parent_data = gcc_parents_0,
    892		.num_parents = ARRAY_SIZE(gcc_parents_0),
    893		.flags = CLK_SET_RATE_PARENT,
    894		.ops = &clk_rcg2_ops,
    895	},
    896};
    897
    898static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {
    899	.cmd_rcgr = 0x1e738,
    900	.mnd_width = 16,
    901	.hid_width = 5,
    902	.parent_map = gcc_parent_map_0,
    903	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
    904	.clkr.hw.init = &(struct clk_init_data){
    905		.name = "gcc_qupv3_wrap2_s5_clk_src",
    906		.parent_data = gcc_parents_0,
    907		.num_parents = ARRAY_SIZE(gcc_parents_0),
    908		.flags = CLK_SET_RATE_PARENT,
    909		.ops = &clk_rcg2_ops,
    910	},
    911};
    912
    913static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
    914	F(400000, P_BI_TCXO, 12, 1, 4),
    915	F(9600000, P_BI_TCXO, 2, 0, 0),
    916	F(19200000, P_BI_TCXO, 1, 0, 0),
    917	F(25000000, P_GPLL0_OUT_MAIN, 12, 1, 2),
    918	F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
    919	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
    920	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
    921	{ }
    922};
    923
    924static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
    925	.cmd_rcgr = 0x1400c,
    926	.mnd_width = 8,
    927	.hid_width = 5,
    928	.parent_map = gcc_parent_map_7,
    929	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
    930	.clkr.hw.init = &(struct clk_init_data){
    931		.name = "gcc_sdcc2_apps_clk_src",
    932		.parent_data = gcc_parents_7,
    933		.num_parents = ARRAY_SIZE(gcc_parents_7),
    934		.flags = CLK_SET_RATE_PARENT,
    935		.ops = &clk_rcg2_floor_ops,
    936	},
    937};
    938
    939static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
    940	F(400000, P_BI_TCXO, 12, 1, 4),
    941	F(9600000, P_BI_TCXO, 2, 0, 0),
    942	F(19200000, P_BI_TCXO, 1, 0, 0),
    943	F(37500000, P_GPLL0_OUT_MAIN, 16, 0, 0),
    944	F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
    945	F(75000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
    946	{ }
    947};
    948
    949static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
    950	.cmd_rcgr = 0x1600c,
    951	.mnd_width = 8,
    952	.hid_width = 5,
    953	.parent_map = gcc_parent_map_5,
    954	.freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
    955	.clkr.hw.init = &(struct clk_init_data){
    956		.name = "gcc_sdcc4_apps_clk_src",
    957		.parent_data = gcc_parents_5,
    958		.num_parents = ARRAY_SIZE(gcc_parents_5),
    959		.flags = CLK_SET_RATE_PARENT,
    960		.ops = &clk_rcg2_floor_ops,
    961	},
    962};
    963
    964static const struct freq_tbl ftbl_gcc_tsif_ref_clk_src[] = {
    965	F(105495, P_BI_TCXO, 2, 1, 91),
    966	{ }
    967};
    968
    969static struct clk_rcg2 gcc_tsif_ref_clk_src = {
    970	.cmd_rcgr = 0x36010,
    971	.mnd_width = 8,
    972	.hid_width = 5,
    973	.parent_map = gcc_parent_map_8,
    974	.freq_tbl = ftbl_gcc_tsif_ref_clk_src,
    975	.clkr.hw.init = &(struct clk_init_data){
    976		.name = "gcc_tsif_ref_clk_src",
    977		.parent_data = gcc_parents_8,
    978		.num_parents = ARRAY_SIZE(gcc_parents_8),
    979		.flags = CLK_SET_RATE_PARENT,
    980		.ops = &clk_rcg2_ops,
    981	},
    982};
    983
    984static const struct freq_tbl ftbl_gcc_ufs_card_2_axi_clk_src[] = {
    985	F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
    986	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
    987	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
    988	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
    989	{ }
    990};
    991
    992static struct clk_rcg2 gcc_ufs_card_2_axi_clk_src = {
    993	.cmd_rcgr = 0xa2020,
    994	.mnd_width = 8,
    995	.hid_width = 5,
    996	.parent_map = gcc_parent_map_0,
    997	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
    998	.clkr.hw.init = &(struct clk_init_data){
    999		.name = "gcc_ufs_card_2_axi_clk_src",
   1000		.parent_data = gcc_parents_0,
   1001		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1002		.flags = CLK_SET_RATE_PARENT,
   1003		.ops = &clk_rcg2_ops,
   1004	},
   1005};
   1006
   1007static struct clk_rcg2 gcc_ufs_card_2_ice_core_clk_src = {
   1008	.cmd_rcgr = 0xa2060,
   1009	.mnd_width = 0,
   1010	.hid_width = 5,
   1011	.parent_map = gcc_parent_map_0,
   1012	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
   1013	.clkr.hw.init = &(struct clk_init_data){
   1014		.name = "gcc_ufs_card_2_ice_core_clk_src",
   1015		.parent_data = gcc_parents_0,
   1016		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1017		.flags = CLK_SET_RATE_PARENT,
   1018		.ops = &clk_rcg2_ops,
   1019	},
   1020};
   1021
   1022static const struct freq_tbl ftbl_gcc_ufs_card_2_phy_aux_clk_src[] = {
   1023	F(19200000, P_BI_TCXO, 1, 0, 0),
   1024	{ }
   1025};
   1026
   1027static struct clk_rcg2 gcc_ufs_card_2_phy_aux_clk_src = {
   1028	.cmd_rcgr = 0xa2094,
   1029	.mnd_width = 0,
   1030	.hid_width = 5,
   1031	.parent_map = gcc_parent_map_4,
   1032	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
   1033	.clkr.hw.init = &(struct clk_init_data){
   1034		.name = "gcc_ufs_card_2_phy_aux_clk_src",
   1035		.parent_data = gcc_parents_4,
   1036		.num_parents = ARRAY_SIZE(gcc_parents_4),
   1037		.flags = CLK_SET_RATE_PARENT,
   1038		.ops = &clk_rcg2_ops,
   1039	},
   1040};
   1041
   1042static struct clk_rcg2 gcc_ufs_card_2_unipro_core_clk_src = {
   1043	.cmd_rcgr = 0xa2078,
   1044	.mnd_width = 0,
   1045	.hid_width = 5,
   1046	.parent_map = gcc_parent_map_0,
   1047	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
   1048	.clkr.hw.init = &(struct clk_init_data){
   1049		.name = "gcc_ufs_card_2_unipro_core_clk_src",
   1050		.parent_data = gcc_parents_0,
   1051		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1052		.flags = CLK_SET_RATE_PARENT,
   1053		.ops = &clk_rcg2_ops,
   1054	},
   1055};
   1056
   1057static const struct freq_tbl ftbl_gcc_ufs_card_axi_clk_src[] = {
   1058	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
   1059	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
   1060	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
   1061	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
   1062	F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
   1063	{ }
   1064};
   1065
   1066static struct clk_rcg2 gcc_ufs_card_axi_clk_src = {
   1067	.cmd_rcgr = 0x75020,
   1068	.mnd_width = 8,
   1069	.hid_width = 5,
   1070	.parent_map = gcc_parent_map_0,
   1071	.freq_tbl = ftbl_gcc_ufs_card_axi_clk_src,
   1072	.clkr.hw.init = &(struct clk_init_data){
   1073		.name = "gcc_ufs_card_axi_clk_src",
   1074		.parent_data = gcc_parents_0,
   1075		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1076		.flags = CLK_SET_RATE_PARENT,
   1077		.ops = &clk_rcg2_ops,
   1078	},
   1079};
   1080
   1081static const struct freq_tbl ftbl_gcc_ufs_card_ice_core_clk_src[] = {
   1082	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
   1083	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
   1084	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
   1085	{ }
   1086};
   1087
   1088static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = {
   1089	.cmd_rcgr = 0x75060,
   1090	.mnd_width = 0,
   1091	.hid_width = 5,
   1092	.parent_map = gcc_parent_map_0,
   1093	.freq_tbl = ftbl_gcc_ufs_card_ice_core_clk_src,
   1094	.clkr.hw.init = &(struct clk_init_data){
   1095		.name = "gcc_ufs_card_ice_core_clk_src",
   1096		.parent_data = gcc_parents_0,
   1097		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1098		.flags = CLK_SET_RATE_PARENT,
   1099		.ops = &clk_rcg2_ops,
   1100	},
   1101};
   1102
   1103static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = {
   1104	.cmd_rcgr = 0x75094,
   1105	.mnd_width = 0,
   1106	.hid_width = 5,
   1107	.parent_map = gcc_parent_map_4,
   1108	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
   1109	.clkr.hw.init = &(struct clk_init_data){
   1110		.name = "gcc_ufs_card_phy_aux_clk_src",
   1111		.parent_data = gcc_parents_4,
   1112		.num_parents = ARRAY_SIZE(gcc_parents_4),
   1113		.flags = CLK_SET_RATE_PARENT,
   1114		.ops = &clk_rcg2_ops,
   1115	},
   1116};
   1117
   1118static const struct freq_tbl ftbl_gcc_ufs_card_unipro_core_clk_src[] = {
   1119	F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
   1120	F(75000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
   1121	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
   1122	{ }
   1123};
   1124
   1125static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = {
   1126	.cmd_rcgr = 0x75078,
   1127	.mnd_width = 0,
   1128	.hid_width = 5,
   1129	.parent_map = gcc_parent_map_0,
   1130	.freq_tbl = ftbl_gcc_ufs_card_unipro_core_clk_src,
   1131	.clkr.hw.init = &(struct clk_init_data){
   1132		.name = "gcc_ufs_card_unipro_core_clk_src",
   1133		.parent_data = gcc_parents_0,
   1134		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1135		.flags = CLK_SET_RATE_PARENT,
   1136		.ops = &clk_rcg2_ops,
   1137	},
   1138};
   1139
   1140static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
   1141	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
   1142	F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
   1143	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
   1144	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
   1145	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
   1146	{ }
   1147};
   1148
   1149static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
   1150	.cmd_rcgr = 0x77020,
   1151	.mnd_width = 8,
   1152	.hid_width = 5,
   1153	.parent_map = gcc_parent_map_0,
   1154	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
   1155	.clkr.hw.init = &(struct clk_init_data){
   1156		.name = "gcc_ufs_phy_axi_clk_src",
   1157		.parent_data = gcc_parents_0,
   1158		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1159		.flags = CLK_SET_RATE_PARENT,
   1160		.ops = &clk_rcg2_ops,
   1161	},
   1162};
   1163
   1164static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
   1165	.cmd_rcgr = 0x77060,
   1166	.mnd_width = 0,
   1167	.hid_width = 5,
   1168	.parent_map = gcc_parent_map_0,
   1169	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
   1170	.clkr.hw.init = &(struct clk_init_data){
   1171		.name = "gcc_ufs_phy_ice_core_clk_src",
   1172		.parent_data = gcc_parents_0,
   1173		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1174		.flags = CLK_SET_RATE_PARENT,
   1175		.ops = &clk_rcg2_ops,
   1176	},
   1177};
   1178
   1179static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
   1180	.cmd_rcgr = 0x77094,
   1181	.mnd_width = 0,
   1182	.hid_width = 5,
   1183	.parent_map = gcc_parent_map_4,
   1184	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
   1185	.clkr.hw.init = &(struct clk_init_data){
   1186		.name = "gcc_ufs_phy_phy_aux_clk_src",
   1187		.parent_data = gcc_parents_4,
   1188		.num_parents = ARRAY_SIZE(gcc_parents_4),
   1189		.flags = CLK_SET_RATE_PARENT,
   1190		.ops = &clk_rcg2_ops,
   1191	},
   1192};
   1193
   1194static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
   1195	.cmd_rcgr = 0x77078,
   1196	.mnd_width = 0,
   1197	.hid_width = 5,
   1198	.parent_map = gcc_parent_map_0,
   1199	.freq_tbl = ftbl_gcc_ufs_card_2_axi_clk_src,
   1200	.clkr.hw.init = &(struct clk_init_data){
   1201		.name = "gcc_ufs_phy_unipro_core_clk_src",
   1202		.parent_data = gcc_parents_0,
   1203		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1204		.flags = CLK_SET_RATE_PARENT,
   1205		.ops = &clk_rcg2_ops,
   1206	},
   1207};
   1208
   1209static const struct freq_tbl ftbl_gcc_usb30_mp_master_clk_src[] = {
   1210	F(33333333, P_GPLL0_OUT_EVEN, 9, 0, 0),
   1211	F(66666667, P_GPLL0_OUT_EVEN, 4.5, 0, 0),
   1212	F(133333333, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
   1213	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
   1214	F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
   1215	{ }
   1216};
   1217
   1218static struct clk_rcg2 gcc_usb30_mp_master_clk_src = {
   1219	.cmd_rcgr = 0xa601c,
   1220	.mnd_width = 8,
   1221	.hid_width = 5,
   1222	.parent_map = gcc_parent_map_0,
   1223	.freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
   1224	.clkr.hw.init = &(struct clk_init_data){
   1225		.name = "gcc_usb30_mp_master_clk_src",
   1226		.parent_data = gcc_parents_0,
   1227		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1228		.flags = CLK_SET_RATE_PARENT,
   1229		.ops = &clk_rcg2_ops,
   1230	},
   1231};
   1232
   1233static const struct freq_tbl ftbl_gcc_usb30_mp_mock_utmi_clk_src[] = {
   1234	F(19200000, P_BI_TCXO, 1, 0, 0),
   1235	F(20000000, P_GPLL0_OUT_EVEN, 15, 0, 0),
   1236	F(40000000, P_GPLL0_OUT_EVEN, 7.5, 0, 0),
   1237	F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
   1238	{ }
   1239};
   1240
   1241static struct clk_rcg2 gcc_usb30_mp_mock_utmi_clk_src = {
   1242	.cmd_rcgr = 0xa6034,
   1243	.mnd_width = 0,
   1244	.hid_width = 5,
   1245	.parent_map = gcc_parent_map_0,
   1246	.freq_tbl = ftbl_gcc_usb30_mp_mock_utmi_clk_src,
   1247	.clkr.hw.init = &(struct clk_init_data){
   1248		.name = "gcc_usb30_mp_mock_utmi_clk_src",
   1249		.parent_data = gcc_parents_0,
   1250		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1251		.flags = CLK_SET_RATE_PARENT,
   1252		.ops = &clk_rcg2_ops,
   1253	},
   1254};
   1255
   1256static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
   1257	.cmd_rcgr = 0xf01c,
   1258	.mnd_width = 8,
   1259	.hid_width = 5,
   1260	.parent_map = gcc_parent_map_0,
   1261	.freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
   1262	.clkr.hw.init = &(struct clk_init_data){
   1263		.name = "gcc_usb30_prim_master_clk_src",
   1264		.parent_data = gcc_parents_0,
   1265		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1266		.flags = CLK_SET_RATE_PARENT,
   1267		.ops = &clk_rcg2_ops,
   1268	},
   1269};
   1270
   1271static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
   1272	.cmd_rcgr = 0xf034,
   1273	.mnd_width = 0,
   1274	.hid_width = 5,
   1275	.parent_map = gcc_parent_map_0,
   1276	.freq_tbl = ftbl_gcc_usb30_mp_mock_utmi_clk_src,
   1277	.clkr.hw.init = &(struct clk_init_data){
   1278		.name = "gcc_usb30_prim_mock_utmi_clk_src",
   1279		.parent_data = gcc_parents_0,
   1280		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1281		.flags = CLK_SET_RATE_PARENT,
   1282		.ops = &clk_rcg2_ops,
   1283	},
   1284};
   1285
   1286static struct clk_rcg2 gcc_usb30_sec_master_clk_src = {
   1287	.cmd_rcgr = 0x1001c,
   1288	.mnd_width = 8,
   1289	.hid_width = 5,
   1290	.parent_map = gcc_parent_map_0,
   1291	.freq_tbl = ftbl_gcc_usb30_mp_master_clk_src,
   1292	.clkr.hw.init = &(struct clk_init_data){
   1293		.name = "gcc_usb30_sec_master_clk_src",
   1294		.parent_data = gcc_parents_0,
   1295		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1296		.flags = CLK_SET_RATE_PARENT,
   1297		.ops = &clk_rcg2_ops,
   1298	},
   1299};
   1300
   1301static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = {
   1302	.cmd_rcgr = 0x10034,
   1303	.mnd_width = 0,
   1304	.hid_width = 5,
   1305	.parent_map = gcc_parent_map_0,
   1306	.freq_tbl = ftbl_gcc_usb30_mp_mock_utmi_clk_src,
   1307	.clkr.hw.init = &(struct clk_init_data){
   1308		.name = "gcc_usb30_sec_mock_utmi_clk_src",
   1309		.parent_data = gcc_parents_0,
   1310		.num_parents = ARRAY_SIZE(gcc_parents_0),
   1311		.flags = CLK_SET_RATE_PARENT,
   1312		.ops = &clk_rcg2_ops,
   1313	},
   1314};
   1315
   1316static struct clk_rcg2 gcc_usb3_mp_phy_aux_clk_src = {
   1317	.cmd_rcgr = 0xa6068,
   1318	.mnd_width = 0,
   1319	.hid_width = 5,
   1320	.parent_map = gcc_parent_map_2,
   1321	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
   1322	.clkr.hw.init = &(struct clk_init_data){
   1323		.name = "gcc_usb3_mp_phy_aux_clk_src",
   1324		.parent_data = gcc_parents_2,
   1325		.num_parents = ARRAY_SIZE(gcc_parents_2),
   1326		.flags = CLK_SET_RATE_PARENT,
   1327		.ops = &clk_rcg2_ops,
   1328	},
   1329};
   1330
   1331static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
   1332	.cmd_rcgr = 0xf060,
   1333	.mnd_width = 0,
   1334	.hid_width = 5,
   1335	.parent_map = gcc_parent_map_2,
   1336	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
   1337	.clkr.hw.init = &(struct clk_init_data){
   1338		.name = "gcc_usb3_prim_phy_aux_clk_src",
   1339		.parent_data = gcc_parents_2,
   1340		.num_parents = ARRAY_SIZE(gcc_parents_2),
   1341		.flags = CLK_SET_RATE_PARENT,
   1342		.ops = &clk_rcg2_ops,
   1343	},
   1344};
   1345
   1346static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = {
   1347	.cmd_rcgr = 0x10060,
   1348	.mnd_width = 0,
   1349	.hid_width = 5,
   1350	.parent_map = gcc_parent_map_2,
   1351	.freq_tbl = ftbl_gcc_ufs_card_2_phy_aux_clk_src,
   1352	.clkr.hw.init = &(struct clk_init_data){
   1353		.name = "gcc_usb3_sec_phy_aux_clk_src",
   1354		.parent_data = gcc_parents_2,
   1355		.num_parents = ARRAY_SIZE(gcc_parents_2),
   1356		.flags = CLK_SET_RATE_PARENT,
   1357		.ops = &clk_rcg2_ops,
   1358	},
   1359};
   1360
   1361static struct clk_branch gcc_aggre_noc_pcie_tbu_clk = {
   1362	.halt_reg = 0x90018,
   1363	.halt_check = BRANCH_HALT,
   1364	.clkr = {
   1365		.enable_reg = 0x90018,
   1366		.enable_mask = BIT(0),
   1367		.hw.init = &(struct clk_init_data){
   1368			.name = "gcc_aggre_noc_pcie_tbu_clk",
   1369			.ops = &clk_branch2_ops,
   1370		},
   1371	},
   1372};
   1373
   1374static struct clk_branch gcc_aggre_ufs_card_axi_clk = {
   1375	.halt_reg = 0x750c0,
   1376	.halt_check = BRANCH_HALT,
   1377	.hwcg_reg = 0x750c0,
   1378	.hwcg_bit = 1,
   1379	.clkr = {
   1380		.enable_reg = 0x750c0,
   1381		.enable_mask = BIT(0),
   1382		.hw.init = &(struct clk_init_data){
   1383			.name = "gcc_aggre_ufs_card_axi_clk",
   1384			.parent_hws = (const struct clk_hw *[]){
   1385				      &gcc_ufs_card_axi_clk_src.clkr.hw
   1386			},
   1387			.num_parents = 1,
   1388			.flags = CLK_SET_RATE_PARENT,
   1389			.ops = &clk_branch2_ops,
   1390		},
   1391	},
   1392};
   1393
   1394static struct clk_branch gcc_aggre_ufs_card_axi_hw_ctl_clk = {
   1395	.halt_reg = 0x750c0,
   1396	.halt_check = BRANCH_HALT,
   1397	.hwcg_reg = 0x750c0,
   1398	.hwcg_bit = 1,
   1399	.clkr = {
   1400		.enable_reg = 0x750c0,
   1401		.enable_mask = BIT(1),
   1402		.hw.init = &(struct clk_init_data){
   1403			.name = "gcc_aggre_ufs_card_axi_hw_ctl_clk",
   1404			.parent_hws = (const struct clk_hw *[]){
   1405				      &gcc_aggre_ufs_card_axi_clk.clkr.hw
   1406			},
   1407			.num_parents = 1,
   1408			.flags = CLK_SET_RATE_PARENT,
   1409			.ops = &clk_branch_simple_ops,
   1410		},
   1411	},
   1412};
   1413
   1414static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
   1415	.halt_reg = 0x770c0,
   1416	.halt_check = BRANCH_HALT,
   1417	.hwcg_reg = 0x770c0,
   1418	.hwcg_bit = 1,
   1419	.clkr = {
   1420		.enable_reg = 0x770c0,
   1421		.enable_mask = BIT(0),
   1422		.hw.init = &(struct clk_init_data){
   1423			.name = "gcc_aggre_ufs_phy_axi_clk",
   1424			.parent_hws = (const struct clk_hw *[]){
   1425				      &gcc_ufs_phy_axi_clk_src.clkr.hw
   1426			},
   1427			.num_parents = 1,
   1428			.flags = CLK_SET_RATE_PARENT,
   1429			.ops = &clk_branch2_ops,
   1430		},
   1431	},
   1432};
   1433
   1434static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk = {
   1435	.halt_reg = 0x770c0,
   1436	.halt_check = BRANCH_HALT,
   1437	.hwcg_reg = 0x770c0,
   1438	.hwcg_bit = 1,
   1439	.clkr = {
   1440		.enable_reg = 0x770c0,
   1441		.enable_mask = BIT(1),
   1442		.hw.init = &(struct clk_init_data){
   1443			.name = "gcc_aggre_ufs_phy_axi_hw_ctl_clk",
   1444			.parent_hws = (const struct clk_hw *[]){
   1445				      &gcc_aggre_ufs_phy_axi_clk.clkr.hw
   1446			},
   1447			.num_parents = 1,
   1448			.flags = CLK_SET_RATE_PARENT,
   1449			.ops = &clk_branch_simple_ops,
   1450		},
   1451	},
   1452};
   1453
   1454static struct clk_branch gcc_aggre_usb3_mp_axi_clk = {
   1455	.halt_reg = 0xa6084,
   1456	.halt_check = BRANCH_HALT,
   1457	.clkr = {
   1458		.enable_reg = 0xa6084,
   1459		.enable_mask = BIT(0),
   1460		.hw.init = &(struct clk_init_data){
   1461			.name = "gcc_aggre_usb3_mp_axi_clk",
   1462			.parent_hws = (const struct clk_hw *[]){
   1463				      &gcc_usb30_mp_master_clk_src.clkr.hw
   1464			},
   1465			.num_parents = 1,
   1466			.flags = CLK_SET_RATE_PARENT,
   1467			.ops = &clk_branch2_ops,
   1468		},
   1469	},
   1470};
   1471
   1472static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
   1473	.halt_reg = 0xf07c,
   1474	.halt_check = BRANCH_HALT,
   1475	.clkr = {
   1476		.enable_reg = 0xf07c,
   1477		.enable_mask = BIT(0),
   1478		.hw.init = &(struct clk_init_data){
   1479			.name = "gcc_aggre_usb3_prim_axi_clk",
   1480			.parent_hws = (const struct clk_hw *[]){
   1481				      &gcc_usb30_prim_master_clk_src.clkr.hw
   1482			},
   1483			.num_parents = 1,
   1484			.flags = CLK_SET_RATE_PARENT,
   1485			.ops = &clk_branch2_ops,
   1486		},
   1487	},
   1488};
   1489
   1490static struct clk_branch gcc_aggre_usb3_sec_axi_clk = {
   1491	.halt_reg = 0x1007c,
   1492	.halt_check = BRANCH_HALT,
   1493	.clkr = {
   1494		.enable_reg = 0x1007c,
   1495		.enable_mask = BIT(0),
   1496		.hw.init = &(struct clk_init_data){
   1497			.name = "gcc_aggre_usb3_sec_axi_clk",
   1498			.parent_hws = (const struct clk_hw *[]){
   1499				      &gcc_usb30_sec_master_clk_src.clkr.hw
   1500			},
   1501			.num_parents = 1,
   1502			.flags = CLK_SET_RATE_PARENT,
   1503			.ops = &clk_branch2_ops,
   1504		},
   1505	},
   1506};
   1507
   1508static struct clk_branch gcc_boot_rom_ahb_clk = {
   1509	.halt_reg = 0x38004,
   1510	.halt_check = BRANCH_HALT_VOTED,
   1511	.hwcg_reg = 0x38004,
   1512	.hwcg_bit = 1,
   1513	.clkr = {
   1514		.enable_reg = 0x52004,
   1515		.enable_mask = BIT(10),
   1516		.hw.init = &(struct clk_init_data){
   1517			.name = "gcc_boot_rom_ahb_clk",
   1518			.ops = &clk_branch2_ops,
   1519		},
   1520	},
   1521};
   1522
   1523static struct clk_branch gcc_camera_hf_axi_clk = {
   1524	.halt_reg = 0xb030,
   1525	.halt_check = BRANCH_HALT,
   1526	.clkr = {
   1527		.enable_reg = 0xb030,
   1528		.enable_mask = BIT(0),
   1529		.hw.init = &(struct clk_init_data){
   1530			.name = "gcc_camera_hf_axi_clk",
   1531			.ops = &clk_branch2_ops,
   1532		},
   1533	},
   1534};
   1535
   1536static struct clk_branch gcc_camera_sf_axi_clk = {
   1537	.halt_reg = 0xb034,
   1538	.halt_check = BRANCH_HALT,
   1539	.clkr = {
   1540		.enable_reg = 0xb034,
   1541		.enable_mask = BIT(0),
   1542		.hw.init = &(struct clk_init_data){
   1543			.name = "gcc_camera_sf_axi_clk",
   1544			.ops = &clk_branch2_ops,
   1545		},
   1546	},
   1547};
   1548
   1549static struct clk_branch gcc_cfg_noc_usb3_mp_axi_clk = {
   1550	.halt_reg = 0xa609c,
   1551	.halt_check = BRANCH_HALT,
   1552	.clkr = {
   1553		.enable_reg = 0xa609c,
   1554		.enable_mask = BIT(0),
   1555		.hw.init = &(struct clk_init_data){
   1556			.name = "gcc_cfg_noc_usb3_mp_axi_clk",
   1557			.parent_hws = (const struct clk_hw *[]){
   1558				      &gcc_usb30_mp_master_clk_src.clkr.hw
   1559			},
   1560			.num_parents = 1,
   1561			.flags = CLK_SET_RATE_PARENT,
   1562			.ops = &clk_branch2_ops,
   1563		},
   1564	},
   1565};
   1566
   1567static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
   1568	.halt_reg = 0xf078,
   1569	.halt_check = BRANCH_HALT,
   1570	.clkr = {
   1571		.enable_reg = 0xf078,
   1572		.enable_mask = BIT(0),
   1573		.hw.init = &(struct clk_init_data){
   1574			.name = "gcc_cfg_noc_usb3_prim_axi_clk",
   1575			.parent_hws = (const struct clk_hw *[]){
   1576				      &gcc_usb30_prim_master_clk_src.clkr.hw
   1577			},
   1578			.num_parents = 1,
   1579			.flags = CLK_SET_RATE_PARENT,
   1580			.ops = &clk_branch2_ops,
   1581		},
   1582	},
   1583};
   1584
   1585static struct clk_branch gcc_cfg_noc_usb3_sec_axi_clk = {
   1586	.halt_reg = 0x10078,
   1587	.halt_check = BRANCH_HALT,
   1588	.clkr = {
   1589		.enable_reg = 0x10078,
   1590		.enable_mask = BIT(0),
   1591		.hw.init = &(struct clk_init_data){
   1592			.name = "gcc_cfg_noc_usb3_sec_axi_clk",
   1593			.parent_hws = (const struct clk_hw *[]){
   1594				      &gcc_usb30_sec_master_clk_src.clkr.hw
   1595			},
   1596			.num_parents = 1,
   1597			.flags = CLK_SET_RATE_PARENT,
   1598			.ops = &clk_branch2_ops,
   1599		},
   1600	},
   1601};
   1602
   1603/* For CPUSS functionality the AHB clock needs to be left enabled */
   1604static struct clk_branch gcc_cpuss_ahb_clk = {
   1605	.halt_reg = 0x48000,
   1606	.halt_check = BRANCH_HALT_VOTED,
   1607	.clkr = {
   1608		.enable_reg = 0x52004,
   1609		.enable_mask = BIT(21),
   1610		.hw.init = &(struct clk_init_data){
   1611			.name = "gcc_cpuss_ahb_clk",
   1612			.parent_hws = (const struct clk_hw *[]){
   1613				      &gcc_cpuss_ahb_clk_src.clkr.hw
   1614			},
   1615			.num_parents = 1,
   1616			.flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
   1617			.ops = &clk_branch2_ops,
   1618		},
   1619	},
   1620};
   1621
   1622static struct clk_branch gcc_cpuss_rbcpr_clk = {
   1623	.halt_reg = 0x48008,
   1624	.halt_check = BRANCH_HALT,
   1625	.clkr = {
   1626		.enable_reg = 0x48008,
   1627		.enable_mask = BIT(0),
   1628		.hw.init = &(struct clk_init_data){
   1629			.name = "gcc_cpuss_rbcpr_clk",
   1630			.ops = &clk_branch2_ops,
   1631		},
   1632	},
   1633};
   1634
   1635static struct clk_branch gcc_ddrss_gpu_axi_clk = {
   1636	.halt_reg = 0x71154,
   1637	.halt_check = BRANCH_VOTED,
   1638	.clkr = {
   1639		.enable_reg = 0x71154,
   1640		.enable_mask = BIT(0),
   1641		.hw.init = &(struct clk_init_data){
   1642			.name = "gcc_ddrss_gpu_axi_clk",
   1643			.ops = &clk_branch2_ops,
   1644		},
   1645	},
   1646};
   1647
   1648static struct clk_branch gcc_disp_hf_axi_clk = {
   1649	.halt_reg = 0xb038,
   1650	.halt_check = BRANCH_HALT,
   1651	.clkr = {
   1652		.enable_reg = 0xb038,
   1653		.enable_mask = BIT(0),
   1654		.hw.init = &(struct clk_init_data){
   1655			.name = "gcc_disp_hf_axi_clk",
   1656			.ops = &clk_branch2_ops,
   1657		},
   1658	},
   1659};
   1660
   1661static struct clk_branch gcc_disp_sf_axi_clk = {
   1662	.halt_reg = 0xb03c,
   1663	.halt_check = BRANCH_HALT,
   1664	.clkr = {
   1665		.enable_reg = 0xb03c,
   1666		.enable_mask = BIT(0),
   1667		.hw.init = &(struct clk_init_data){
   1668			.name = "gcc_disp_sf_axi_clk",
   1669			.ops = &clk_branch2_ops,
   1670		},
   1671	},
   1672};
   1673
   1674static struct clk_branch gcc_emac_axi_clk = {
   1675	.halt_reg = 0x6010,
   1676	.halt_check = BRANCH_HALT,
   1677	.clkr = {
   1678		.enable_reg = 0x6010,
   1679		.enable_mask = BIT(0),
   1680		.hw.init = &(struct clk_init_data){
   1681			.name = "gcc_emac_axi_clk",
   1682			.ops = &clk_branch2_ops,
   1683		},
   1684	},
   1685};
   1686
   1687static struct clk_branch gcc_emac_ptp_clk = {
   1688	.halt_reg = 0x6034,
   1689	.halt_check = BRANCH_HALT,
   1690	.clkr = {
   1691		.enable_reg = 0x6034,
   1692		.enable_mask = BIT(0),
   1693		.hw.init = &(struct clk_init_data){
   1694			.name = "gcc_emac_ptp_clk",
   1695			.parent_hws = (const struct clk_hw *[]){
   1696				      &gcc_emac_ptp_clk_src.clkr.hw
   1697			},
   1698			.num_parents = 1,
   1699			.flags = CLK_SET_RATE_PARENT,
   1700			.ops = &clk_branch2_ops,
   1701		},
   1702	},
   1703};
   1704
   1705static struct clk_branch gcc_emac_rgmii_clk = {
   1706	.halt_reg = 0x6018,
   1707	.halt_check = BRANCH_HALT,
   1708	.clkr = {
   1709		.enable_reg = 0x6018,
   1710		.enable_mask = BIT(0),
   1711		.hw.init = &(struct clk_init_data){
   1712			.name = "gcc_emac_rgmii_clk",
   1713			.parent_hws = (const struct clk_hw *[]){
   1714				      &gcc_emac_rgmii_clk_src.clkr.hw
   1715			},
   1716			.num_parents = 1,
   1717			.flags = CLK_SET_RATE_PARENT,
   1718			.ops = &clk_branch2_ops,
   1719		},
   1720	},
   1721};
   1722
   1723static struct clk_branch gcc_emac_slv_ahb_clk = {
   1724	.halt_reg = 0x6014,
   1725	.halt_check = BRANCH_HALT,
   1726	.hwcg_reg = 0x6014,
   1727	.hwcg_bit = 1,
   1728	.clkr = {
   1729		.enable_reg = 0x6014,
   1730		.enable_mask = BIT(0),
   1731		.hw.init = &(struct clk_init_data){
   1732			.name = "gcc_emac_slv_ahb_clk",
   1733			.ops = &clk_branch2_ops,
   1734		},
   1735	},
   1736};
   1737
   1738static struct clk_branch gcc_gp1_clk = {
   1739	.halt_reg = 0x64000,
   1740	.halt_check = BRANCH_HALT,
   1741	.clkr = {
   1742		.enable_reg = 0x64000,
   1743		.enable_mask = BIT(0),
   1744		.hw.init = &(struct clk_init_data){
   1745			.name = "gcc_gp1_clk",
   1746			.parent_hws = (const struct clk_hw *[]){
   1747				      &gcc_gp1_clk_src.clkr.hw
   1748			},
   1749			.num_parents = 1,
   1750			.flags = CLK_SET_RATE_PARENT,
   1751			.ops = &clk_branch2_ops,
   1752		},
   1753	},
   1754};
   1755
   1756static struct clk_branch gcc_gp2_clk = {
   1757	.halt_reg = 0x65000,
   1758	.halt_check = BRANCH_HALT,
   1759	.clkr = {
   1760		.enable_reg = 0x65000,
   1761		.enable_mask = BIT(0),
   1762		.hw.init = &(struct clk_init_data){
   1763			.name = "gcc_gp2_clk",
   1764			.parent_hws = (const struct clk_hw *[]){
   1765				      &gcc_gp2_clk_src.clkr.hw
   1766			},
   1767			.num_parents = 1,
   1768			.flags = CLK_SET_RATE_PARENT,
   1769			.ops = &clk_branch2_ops,
   1770		},
   1771	},
   1772};
   1773
   1774static struct clk_branch gcc_gp3_clk = {
   1775	.halt_reg = 0x66000,
   1776	.halt_check = BRANCH_HALT,
   1777	.clkr = {
   1778		.enable_reg = 0x66000,
   1779		.enable_mask = BIT(0),
   1780		.hw.init = &(struct clk_init_data){
   1781			.name = "gcc_gp3_clk",
   1782			.parent_hws = (const struct clk_hw *[]){
   1783				      &gcc_gp3_clk_src.clkr.hw
   1784			},
   1785			.num_parents = 1,
   1786			.flags = CLK_SET_RATE_PARENT,
   1787			.ops = &clk_branch2_ops,
   1788		},
   1789	},
   1790};
   1791
   1792static struct clk_branch gcc_gp4_clk = {
   1793	.halt_reg = 0xbe000,
   1794	.halt_check = BRANCH_HALT,
   1795	.clkr = {
   1796		.enable_reg = 0xbe000,
   1797		.enable_mask = BIT(0),
   1798		.hw.init = &(struct clk_init_data){
   1799			.name = "gcc_gp4_clk",
   1800			.parent_hws = (const struct clk_hw *[]){
   1801				      &gcc_gp4_clk_src.clkr.hw
   1802			},
   1803			.num_parents = 1,
   1804			.flags = CLK_SET_RATE_PARENT,
   1805			.ops = &clk_branch2_ops,
   1806		},
   1807	},
   1808};
   1809
   1810static struct clk_branch gcc_gp5_clk = {
   1811	.halt_reg = 0xbf000,
   1812	.halt_check = BRANCH_HALT,
   1813	.clkr = {
   1814		.enable_reg = 0xbf000,
   1815		.enable_mask = BIT(0),
   1816		.hw.init = &(struct clk_init_data){
   1817			.name = "gcc_gp5_clk",
   1818			.parent_hws = (const struct clk_hw *[]){
   1819				      &gcc_gp5_clk_src.clkr.hw
   1820			},
   1821			.num_parents = 1,
   1822			.flags = CLK_SET_RATE_PARENT,
   1823			.ops = &clk_branch2_ops,
   1824		},
   1825	},
   1826};
   1827
   1828static struct clk_branch gcc_gpu_gpll0_clk_src = {
   1829	.halt_check = BRANCH_HALT_DELAY,
   1830	.clkr = {
   1831		.enable_reg = 0x52004,
   1832		.enable_mask = BIT(15),
   1833		.hw.init = &(struct clk_init_data){
   1834			.name = "gcc_gpu_gpll0_clk_src",
   1835			.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
   1836			.num_parents = 1,
   1837			.flags = CLK_SET_RATE_PARENT,
   1838			.ops = &clk_branch2_ops,
   1839		},
   1840	},
   1841};
   1842
   1843static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
   1844	.halt_check = BRANCH_HALT_DELAY,
   1845	.clkr = {
   1846		.enable_reg = 0x52004,
   1847		.enable_mask = BIT(16),
   1848		.hw.init = &(struct clk_init_data){
   1849			.name = "gcc_gpu_gpll0_div_clk_src",
   1850			.parent_hws = (const struct clk_hw *[]){
   1851				      &gpll0_out_even.clkr.hw
   1852			},
   1853			.num_parents = 1,
   1854			.flags = CLK_SET_RATE_PARENT,
   1855			.ops = &clk_branch2_ops,
   1856		},
   1857	},
   1858};
   1859
   1860static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
   1861	.halt_reg = 0x7100c,
   1862	.halt_check = BRANCH_VOTED,
   1863	.clkr = {
   1864		.enable_reg = 0x7100c,
   1865		.enable_mask = BIT(0),
   1866		.hw.init = &(struct clk_init_data){
   1867			.name = "gcc_gpu_memnoc_gfx_clk",
   1868			.ops = &clk_branch2_ops,
   1869		},
   1870	},
   1871};
   1872
   1873static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
   1874	.halt_reg = 0x71018,
   1875	.halt_check = BRANCH_HALT,
   1876	.clkr = {
   1877		.enable_reg = 0x71018,
   1878		.enable_mask = BIT(0),
   1879		.hw.init = &(struct clk_init_data){
   1880			.name = "gcc_gpu_snoc_dvm_gfx_clk",
   1881			.ops = &clk_branch2_ops,
   1882		},
   1883	},
   1884};
   1885
   1886static struct clk_branch gcc_npu_at_clk = {
   1887	.halt_reg = 0x4d010,
   1888	.halt_check = BRANCH_VOTED,
   1889	.clkr = {
   1890		.enable_reg = 0x4d010,
   1891		.enable_mask = BIT(0),
   1892		.hw.init = &(struct clk_init_data){
   1893			.name = "gcc_npu_at_clk",
   1894			.ops = &clk_branch2_ops,
   1895		},
   1896	},
   1897};
   1898
   1899static struct clk_branch gcc_npu_axi_clk = {
   1900	.halt_reg = 0x4d008,
   1901	.halt_check = BRANCH_VOTED,
   1902	.clkr = {
   1903		.enable_reg = 0x4d008,
   1904		.enable_mask = BIT(0),
   1905		.hw.init = &(struct clk_init_data){
   1906			.name = "gcc_npu_axi_clk",
   1907			.parent_hws = (const struct clk_hw *[]){
   1908				      &gcc_npu_axi_clk_src.clkr.hw
   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_npu_gpll0_clk_src = {
   1918	.halt_check = BRANCH_HALT_DELAY,
   1919	.clkr = {
   1920		.enable_reg = 0x52004,
   1921		.enable_mask = BIT(18),
   1922		.hw.init = &(struct clk_init_data){
   1923			.name = "gcc_npu_gpll0_clk_src",
   1924			.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
   1925			.num_parents = 1,
   1926			.flags = CLK_SET_RATE_PARENT,
   1927			.ops = &clk_branch2_ops,
   1928		},
   1929	},
   1930};
   1931
   1932static struct clk_branch gcc_npu_gpll0_div_clk_src = {
   1933	.halt_check = BRANCH_HALT_DELAY,
   1934	.clkr = {
   1935		.enable_reg = 0x52004,
   1936		.enable_mask = BIT(19),
   1937		.hw.init = &(struct clk_init_data){
   1938			.name = "gcc_npu_gpll0_div_clk_src",
   1939			.parent_hws = (const struct clk_hw *[]){
   1940				      &gpll0_out_even.clkr.hw
   1941			},
   1942			.num_parents = 1,
   1943			.flags = CLK_SET_RATE_PARENT,
   1944			.ops = &clk_branch2_ops,
   1945		},
   1946	},
   1947};
   1948
   1949static struct clk_branch gcc_npu_trig_clk = {
   1950	.halt_reg = 0x4d00c,
   1951	.halt_check = BRANCH_VOTED,
   1952	.clkr = {
   1953		.enable_reg = 0x4d00c,
   1954		.enable_mask = BIT(0),
   1955		.hw.init = &(struct clk_init_data){
   1956			.name = "gcc_npu_trig_clk",
   1957			.ops = &clk_branch2_ops,
   1958		},
   1959	},
   1960};
   1961
   1962static struct clk_branch gcc_pcie0_phy_refgen_clk = {
   1963	.halt_reg = 0x6f02c,
   1964	.halt_check = BRANCH_HALT,
   1965	.clkr = {
   1966		.enable_reg = 0x6f02c,
   1967		.enable_mask = BIT(0),
   1968		.hw.init = &(struct clk_init_data){
   1969			.name = "gcc_pcie0_phy_refgen_clk",
   1970			.parent_hws = (const struct clk_hw *[]){
   1971				      &gcc_pcie_phy_refgen_clk_src.clkr.hw
   1972			},
   1973			.num_parents = 1,
   1974			.flags = CLK_SET_RATE_PARENT,
   1975			.ops = &clk_branch2_ops,
   1976		},
   1977	},
   1978};
   1979
   1980static struct clk_branch gcc_pcie1_phy_refgen_clk = {
   1981	.halt_reg = 0x6f030,
   1982	.halt_check = BRANCH_HALT,
   1983	.clkr = {
   1984		.enable_reg = 0x6f030,
   1985		.enable_mask = BIT(0),
   1986		.hw.init = &(struct clk_init_data){
   1987			.name = "gcc_pcie1_phy_refgen_clk",
   1988			.parent_hws = (const struct clk_hw *[]){
   1989				      &gcc_pcie_phy_refgen_clk_src.clkr.hw
   1990			},
   1991			.num_parents = 1,
   1992			.flags = CLK_SET_RATE_PARENT,
   1993			.ops = &clk_branch2_ops,
   1994		},
   1995	},
   1996};
   1997
   1998static struct clk_branch gcc_pcie2_phy_refgen_clk = {
   1999	.halt_reg = 0x6f034,
   2000	.halt_check = BRANCH_HALT,
   2001	.clkr = {
   2002		.enable_reg = 0x6f034,
   2003		.enable_mask = BIT(0),
   2004		.hw.init = &(struct clk_init_data){
   2005			.name = "gcc_pcie2_phy_refgen_clk",
   2006			.parent_hws = (const struct clk_hw *[]){
   2007				      &gcc_pcie_phy_refgen_clk_src.clkr.hw
   2008			},
   2009			.num_parents = 1,
   2010			.flags = CLK_SET_RATE_PARENT,
   2011			.ops = &clk_branch2_ops,
   2012		},
   2013	},
   2014};
   2015
   2016static struct clk_branch gcc_pcie3_phy_refgen_clk = {
   2017	.halt_reg = 0x6f038,
   2018	.halt_check = BRANCH_HALT,
   2019	.clkr = {
   2020		.enable_reg = 0x6f038,
   2021		.enable_mask = BIT(0),
   2022		.hw.init = &(struct clk_init_data){
   2023			.name = "gcc_pcie3_phy_refgen_clk",
   2024			.parent_hws = (const struct clk_hw *[]){
   2025				      &gcc_pcie_phy_refgen_clk_src.clkr.hw
   2026			},
   2027			.num_parents = 1,
   2028			.flags = CLK_SET_RATE_PARENT,
   2029			.ops = &clk_branch2_ops,
   2030		},
   2031	},
   2032};
   2033
   2034static struct clk_branch gcc_pcie_0_aux_clk = {
   2035	.halt_reg = 0x6b020,
   2036	.halt_check = BRANCH_HALT_VOTED,
   2037	.clkr = {
   2038		.enable_reg = 0x5200c,
   2039		.enable_mask = BIT(3),
   2040		.hw.init = &(struct clk_init_data){
   2041			.name = "gcc_pcie_0_aux_clk",
   2042			.parent_hws = (const struct clk_hw *[]){
   2043				      &gcc_pcie_0_aux_clk_src.clkr.hw
   2044			},
   2045			.num_parents = 1,
   2046			.flags = CLK_SET_RATE_PARENT,
   2047			.ops = &clk_branch2_ops,
   2048		},
   2049	},
   2050};
   2051
   2052static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
   2053	.halt_reg = 0x6b01c,
   2054	.halt_check = BRANCH_HALT_VOTED,
   2055	.hwcg_reg = 0x6b01c,
   2056	.hwcg_bit = 1,
   2057	.clkr = {
   2058		.enable_reg = 0x5200c,
   2059		.enable_mask = BIT(2),
   2060		.hw.init = &(struct clk_init_data){
   2061			.name = "gcc_pcie_0_cfg_ahb_clk",
   2062			.ops = &clk_branch2_ops,
   2063		},
   2064	},
   2065};
   2066
   2067static struct clk_branch gcc_pcie_0_clkref_clk = {
   2068	.halt_reg = 0x8c00c,
   2069	.halt_check = BRANCH_HALT,
   2070	.clkr = {
   2071		.enable_reg = 0x8c00c,
   2072		.enable_mask = BIT(0),
   2073		.hw.init = &(struct clk_init_data){
   2074			.name = "gcc_pcie_0_clkref_clk",
   2075			.ops = &clk_branch2_ops,
   2076		},
   2077	},
   2078};
   2079
   2080static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
   2081	.halt_reg = 0x6b018,
   2082	.halt_check = BRANCH_HALT_VOTED,
   2083	.clkr = {
   2084		.enable_reg = 0x5200c,
   2085		.enable_mask = BIT(1),
   2086		.hw.init = &(struct clk_init_data){
   2087			.name = "gcc_pcie_0_mstr_axi_clk",
   2088			.ops = &clk_branch2_ops,
   2089		},
   2090	},
   2091};
   2092
   2093static struct clk_branch gcc_pcie_0_pipe_clk = {
   2094	.halt_reg = 0x6b024,
   2095	.halt_check = BRANCH_HALT_SKIP,
   2096	.clkr = {
   2097		.enable_reg = 0x5200c,
   2098		.enable_mask = BIT(4),
   2099		.hw.init = &(struct clk_init_data){
   2100			.name = "gcc_pcie_0_pipe_clk",
   2101			.ops = &clk_branch2_ops,
   2102		},
   2103	},
   2104};
   2105
   2106static struct clk_branch gcc_pcie_0_slv_axi_clk = {
   2107	.halt_reg = 0x6b014,
   2108	.halt_check = BRANCH_HALT_VOTED,
   2109	.hwcg_reg = 0x6b014,
   2110	.hwcg_bit = 1,
   2111	.clkr = {
   2112		.enable_reg = 0x5200c,
   2113		.enable_mask = BIT(0),
   2114		.hw.init = &(struct clk_init_data){
   2115			.name = "gcc_pcie_0_slv_axi_clk",
   2116			.ops = &clk_branch2_ops,
   2117		},
   2118	},
   2119};
   2120
   2121static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
   2122	.halt_reg = 0x6b010,
   2123	.halt_check = BRANCH_HALT_VOTED,
   2124	.clkr = {
   2125		.enable_reg = 0x5200c,
   2126		.enable_mask = BIT(5),
   2127		.hw.init = &(struct clk_init_data){
   2128			.name = "gcc_pcie_0_slv_q2a_axi_clk",
   2129			.ops = &clk_branch2_ops,
   2130		},
   2131	},
   2132};
   2133
   2134static struct clk_branch gcc_pcie_1_aux_clk = {
   2135	.halt_reg = 0x8d020,
   2136	.halt_check = BRANCH_HALT_VOTED,
   2137	.clkr = {
   2138		.enable_reg = 0x52004,
   2139		.enable_mask = BIT(29),
   2140		.hw.init = &(struct clk_init_data){
   2141			.name = "gcc_pcie_1_aux_clk",
   2142			.parent_hws = (const struct clk_hw *[]){
   2143				&gcc_pcie_1_aux_clk_src.clkr.hw
   2144			},
   2145			.num_parents = 1,
   2146			.flags = CLK_SET_RATE_PARENT,
   2147			.ops = &clk_branch2_ops,
   2148		},
   2149	},
   2150};
   2151
   2152static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
   2153	.halt_reg = 0x8d01c,
   2154	.halt_check = BRANCH_HALT_VOTED,
   2155	.hwcg_reg = 0x8d01c,
   2156	.hwcg_bit = 1,
   2157	.clkr = {
   2158		.enable_reg = 0x52004,
   2159		.enable_mask = BIT(28),
   2160		.hw.init = &(struct clk_init_data){
   2161			.name = "gcc_pcie_1_cfg_ahb_clk",
   2162			.ops = &clk_branch2_ops,
   2163		},
   2164	},
   2165};
   2166
   2167static struct clk_branch gcc_pcie_1_clkref_clk = {
   2168	.halt_reg = 0x8c02c,
   2169	.halt_check = BRANCH_HALT,
   2170	.clkr = {
   2171		.enable_reg = 0x8c02c,
   2172		.enable_mask = BIT(0),
   2173		.hw.init = &(struct clk_init_data){
   2174			.name = "gcc_pcie_1_clkref_clk",
   2175			.ops = &clk_branch2_ops,
   2176		},
   2177	},
   2178};
   2179
   2180static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
   2181	.halt_reg = 0x8d018,
   2182	.halt_check = BRANCH_HALT_VOTED,
   2183	.clkr = {
   2184		.enable_reg = 0x52004,
   2185		.enable_mask = BIT(27),
   2186		.hw.init = &(struct clk_init_data){
   2187			.name = "gcc_pcie_1_mstr_axi_clk",
   2188			.ops = &clk_branch2_ops,
   2189		},
   2190	},
   2191};
   2192
   2193static struct clk_branch gcc_pcie_1_pipe_clk = {
   2194	.halt_reg = 0x8d024,
   2195	.halt_check = BRANCH_HALT_SKIP,
   2196	.clkr = {
   2197		.enable_reg = 0x52004,
   2198		.enable_mask = BIT(30),
   2199		.hw.init = &(struct clk_init_data){
   2200			.name = "gcc_pcie_1_pipe_clk",
   2201			.ops = &clk_branch2_ops,
   2202		},
   2203	},
   2204};
   2205
   2206static struct clk_branch gcc_pcie_1_slv_axi_clk = {
   2207	.halt_reg = 0x8d014,
   2208	.halt_check = BRANCH_HALT_VOTED,
   2209	.hwcg_reg = 0x8d014,
   2210	.hwcg_bit = 1,
   2211	.clkr = {
   2212		.enable_reg = 0x52004,
   2213		.enable_mask = BIT(26),
   2214		.hw.init = &(struct clk_init_data){
   2215			.name = "gcc_pcie_1_slv_axi_clk",
   2216			.ops = &clk_branch2_ops,
   2217		},
   2218	},
   2219};
   2220
   2221static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
   2222	.halt_reg = 0x8d010,
   2223	.halt_check = BRANCH_HALT_VOTED,
   2224	.clkr = {
   2225		.enable_reg = 0x52004,
   2226		.enable_mask = BIT(25),
   2227		.hw.init = &(struct clk_init_data){
   2228			.name = "gcc_pcie_1_slv_q2a_axi_clk",
   2229			.ops = &clk_branch2_ops,
   2230		},
   2231	},
   2232};
   2233
   2234static struct clk_branch gcc_pcie_2_aux_clk = {
   2235	.halt_reg = 0x9d020,
   2236	.halt_check = BRANCH_HALT_VOTED,
   2237	.clkr = {
   2238		.enable_reg = 0x52014,
   2239		.enable_mask = BIT(14),
   2240		.hw.init = &(struct clk_init_data){
   2241			.name = "gcc_pcie_2_aux_clk",
   2242			.parent_hws = (const struct clk_hw *[]){
   2243				&gcc_pcie_2_aux_clk_src.clkr.hw
   2244			},
   2245			.num_parents = 1,
   2246			.flags = CLK_SET_RATE_PARENT,
   2247			.ops = &clk_branch2_ops,
   2248		},
   2249	},
   2250};
   2251
   2252static struct clk_branch gcc_pcie_2_cfg_ahb_clk = {
   2253	.halt_reg = 0x9d01c,
   2254	.halt_check = BRANCH_HALT_VOTED,
   2255	.hwcg_reg = 0x9d01c,
   2256	.hwcg_bit = 1,
   2257	.clkr = {
   2258		.enable_reg = 0x52014,
   2259		.enable_mask = BIT(13),
   2260		.hw.init = &(struct clk_init_data){
   2261			.name = "gcc_pcie_2_cfg_ahb_clk",
   2262			.ops = &clk_branch2_ops,
   2263		},
   2264	},
   2265};
   2266
   2267static struct clk_branch gcc_pcie_2_clkref_clk = {
   2268	.halt_reg = 0x8c014,
   2269	.halt_check = BRANCH_HALT,
   2270	.clkr = {
   2271		.enable_reg = 0x8c014,
   2272		.enable_mask = BIT(0),
   2273		.hw.init = &(struct clk_init_data){
   2274			.name = "gcc_pcie_2_clkref_clk",
   2275			.ops = &clk_branch2_ops,
   2276		},
   2277	},
   2278};
   2279
   2280static struct clk_branch gcc_pcie_2_mstr_axi_clk = {
   2281	.halt_reg = 0x9d018,
   2282	.halt_check = BRANCH_HALT_VOTED,
   2283	.clkr = {
   2284		.enable_reg = 0x52014,
   2285		.enable_mask = BIT(12),
   2286		.hw.init = &(struct clk_init_data){
   2287			.name = "gcc_pcie_2_mstr_axi_clk",
   2288			.ops = &clk_branch2_ops,
   2289		},
   2290	},
   2291};
   2292
   2293static struct clk_branch gcc_pcie_2_pipe_clk = {
   2294	.halt_reg = 0x9d024,
   2295	.halt_check = BRANCH_HALT_SKIP,
   2296	.clkr = {
   2297		.enable_reg = 0x52014,
   2298		.enable_mask = BIT(15),
   2299		.hw.init = &(struct clk_init_data){
   2300			.name = "gcc_pcie_2_pipe_clk",
   2301			.ops = &clk_branch2_ops,
   2302		},
   2303	},
   2304};
   2305
   2306static struct clk_branch gcc_pcie_2_slv_axi_clk = {
   2307	.halt_reg = 0x9d014,
   2308	.halt_check = BRANCH_HALT_VOTED,
   2309	.hwcg_reg = 0x9d014,
   2310	.hwcg_bit = 1,
   2311	.clkr = {
   2312		.enable_reg = 0x52014,
   2313		.enable_mask = BIT(11),
   2314		.hw.init = &(struct clk_init_data){
   2315			.name = "gcc_pcie_2_slv_axi_clk",
   2316			.ops = &clk_branch2_ops,
   2317		},
   2318	},
   2319};
   2320
   2321static struct clk_branch gcc_pcie_2_slv_q2a_axi_clk = {
   2322	.halt_reg = 0x9d010,
   2323	.halt_check = BRANCH_HALT_VOTED,
   2324	.clkr = {
   2325		.enable_reg = 0x52014,
   2326		.enable_mask = BIT(10),
   2327		.hw.init = &(struct clk_init_data){
   2328			.name = "gcc_pcie_2_slv_q2a_axi_clk",
   2329			.ops = &clk_branch2_ops,
   2330		},
   2331	},
   2332};
   2333
   2334static struct clk_branch gcc_pcie_3_aux_clk = {
   2335	.halt_reg = 0xa3020,
   2336	.halt_check = BRANCH_HALT_VOTED,
   2337	.clkr = {
   2338		.enable_reg = 0x52014,
   2339		.enable_mask = BIT(20),
   2340		.hw.init = &(struct clk_init_data){
   2341			.name = "gcc_pcie_3_aux_clk",
   2342			.parent_hws = (const struct clk_hw *[]){
   2343				&gcc_pcie_3_aux_clk_src.clkr.hw
   2344			},
   2345			.num_parents = 1,
   2346			.flags = CLK_SET_RATE_PARENT,
   2347			.ops = &clk_branch2_ops,
   2348		},
   2349	},
   2350};
   2351
   2352static struct clk_branch gcc_pcie_3_cfg_ahb_clk = {
   2353	.halt_reg = 0xa301c,
   2354	.halt_check = BRANCH_HALT_VOTED,
   2355	.hwcg_reg = 0xa301c,
   2356	.hwcg_bit = 1,
   2357	.clkr = {
   2358		.enable_reg = 0x52014,
   2359		.enable_mask = BIT(19),
   2360		.hw.init = &(struct clk_init_data){
   2361			.name = "gcc_pcie_3_cfg_ahb_clk",
   2362			.ops = &clk_branch2_ops,
   2363		},
   2364	},
   2365};
   2366
   2367static struct clk_branch gcc_pcie_3_clkref_clk = {
   2368	.halt_reg = 0x8c018,
   2369	.halt_check = BRANCH_HALT,
   2370	.clkr = {
   2371		.enable_reg = 0x8c018,
   2372		.enable_mask = BIT(0),
   2373		.hw.init = &(struct clk_init_data){
   2374			.name = "gcc_pcie_3_clkref_clk",
   2375			.ops = &clk_branch2_ops,
   2376		},
   2377	},
   2378};
   2379
   2380static struct clk_branch gcc_pcie_3_mstr_axi_clk = {
   2381	.halt_reg = 0xa3018,
   2382	.halt_check = BRANCH_HALT_VOTED,
   2383	.clkr = {
   2384		.enable_reg = 0x52014,
   2385		.enable_mask = BIT(18),
   2386		.hw.init = &(struct clk_init_data){
   2387			.name = "gcc_pcie_3_mstr_axi_clk",
   2388			.ops = &clk_branch2_ops,
   2389		},
   2390	},
   2391};
   2392
   2393static struct clk_branch gcc_pcie_3_pipe_clk = {
   2394	.halt_reg = 0xa3024,
   2395	.halt_check = BRANCH_HALT_SKIP,
   2396	.clkr = {
   2397		.enable_reg = 0x52014,
   2398		.enable_mask = BIT(21),
   2399		.hw.init = &(struct clk_init_data){
   2400			.name = "gcc_pcie_3_pipe_clk",
   2401			.ops = &clk_branch2_ops,
   2402		},
   2403	},
   2404};
   2405
   2406static struct clk_branch gcc_pcie_3_slv_axi_clk = {
   2407	.halt_reg = 0xa3014,
   2408	.halt_check = BRANCH_HALT_VOTED,
   2409	.hwcg_reg = 0xa3014,
   2410	.hwcg_bit = 1,
   2411	.clkr = {
   2412		.enable_reg = 0x52014,
   2413		.enable_mask = BIT(17),
   2414		.hw.init = &(struct clk_init_data){
   2415			.name = "gcc_pcie_3_slv_axi_clk",
   2416			.ops = &clk_branch2_ops,
   2417		},
   2418	},
   2419};
   2420
   2421static struct clk_branch gcc_pcie_3_slv_q2a_axi_clk = {
   2422	.halt_reg = 0xa3010,
   2423	.halt_check = BRANCH_HALT_VOTED,
   2424	.clkr = {
   2425		.enable_reg = 0x52014,
   2426		.enable_mask = BIT(16),
   2427		.hw.init = &(struct clk_init_data){
   2428			.name = "gcc_pcie_3_slv_q2a_axi_clk",
   2429			.ops = &clk_branch2_ops,
   2430		},
   2431	},
   2432};
   2433
   2434static struct clk_branch gcc_pcie_phy_aux_clk = {
   2435	.halt_reg = 0x6f004,
   2436	.halt_check = BRANCH_HALT,
   2437	.clkr = {
   2438		.enable_reg = 0x6f004,
   2439		.enable_mask = BIT(0),
   2440		.hw.init = &(struct clk_init_data){
   2441			.name = "gcc_pcie_phy_aux_clk",
   2442			.parent_hws = (const struct clk_hw *[]){
   2443				      &gcc_pcie_0_aux_clk_src.clkr.hw
   2444			},
   2445			.num_parents = 1,
   2446			.flags = CLK_SET_RATE_PARENT,
   2447			.ops = &clk_branch2_ops,
   2448		},
   2449	},
   2450};
   2451
   2452static struct clk_branch gcc_pdm2_clk = {
   2453	.halt_reg = 0x3300c,
   2454	.halt_check = BRANCH_HALT,
   2455	.clkr = {
   2456		.enable_reg = 0x3300c,
   2457		.enable_mask = BIT(0),
   2458		.hw.init = &(struct clk_init_data){
   2459			.name = "gcc_pdm2_clk",
   2460			.parent_hws = (const struct clk_hw *[]){
   2461				      &gcc_pdm2_clk_src.clkr.hw
   2462			},
   2463			.num_parents = 1,
   2464			.flags = CLK_SET_RATE_PARENT,
   2465			.ops = &clk_branch2_ops,
   2466		},
   2467	},
   2468};
   2469
   2470static struct clk_branch gcc_pdm_ahb_clk = {
   2471	.halt_reg = 0x33004,
   2472	.halt_check = BRANCH_HALT,
   2473	.hwcg_reg = 0x33004,
   2474	.hwcg_bit = 1,
   2475	.clkr = {
   2476		.enable_reg = 0x33004,
   2477		.enable_mask = BIT(0),
   2478		.hw.init = &(struct clk_init_data){
   2479			.name = "gcc_pdm_ahb_clk",
   2480			.ops = &clk_branch2_ops,
   2481		},
   2482	},
   2483};
   2484
   2485static struct clk_branch gcc_pdm_xo4_clk = {
   2486	.halt_reg = 0x33008,
   2487	.halt_check = BRANCH_HALT,
   2488	.clkr = {
   2489		.enable_reg = 0x33008,
   2490		.enable_mask = BIT(0),
   2491		.hw.init = &(struct clk_init_data){
   2492			.name = "gcc_pdm_xo4_clk",
   2493			.ops = &clk_branch2_ops,
   2494		},
   2495	},
   2496};
   2497
   2498static struct clk_branch gcc_prng_ahb_clk = {
   2499	.halt_reg = 0x34004,
   2500	.halt_check = BRANCH_HALT_VOTED,
   2501	.clkr = {
   2502		.enable_reg = 0x52004,
   2503		.enable_mask = BIT(13),
   2504		.hw.init = &(struct clk_init_data){
   2505			.name = "gcc_prng_ahb_clk",
   2506			.ops = &clk_branch2_ops,
   2507		},
   2508	},
   2509};
   2510
   2511static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
   2512	.halt_reg = 0xb018,
   2513	.halt_check = BRANCH_HALT,
   2514	.hwcg_reg = 0xb018,
   2515	.hwcg_bit = 1,
   2516	.clkr = {
   2517		.enable_reg = 0xb018,
   2518		.enable_mask = BIT(0),
   2519		.hw.init = &(struct clk_init_data){
   2520			.name = "gcc_qmip_camera_nrt_ahb_clk",
   2521			.ops = &clk_branch2_ops,
   2522		},
   2523	},
   2524};
   2525
   2526static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
   2527	.halt_reg = 0xb01c,
   2528	.halt_check = BRANCH_HALT,
   2529	.hwcg_reg = 0xb01c,
   2530	.hwcg_bit = 1,
   2531	.clkr = {
   2532		.enable_reg = 0xb01c,
   2533		.enable_mask = BIT(0),
   2534		.hw.init = &(struct clk_init_data){
   2535			.name = "gcc_qmip_camera_rt_ahb_clk",
   2536			.ops = &clk_branch2_ops,
   2537		},
   2538	},
   2539};
   2540
   2541static struct clk_branch gcc_qmip_disp_ahb_clk = {
   2542	.halt_reg = 0xb020,
   2543	.halt_check = BRANCH_HALT,
   2544	.hwcg_reg = 0xb020,
   2545	.hwcg_bit = 1,
   2546	.clkr = {
   2547		.enable_reg = 0xb020,
   2548		.enable_mask = BIT(0),
   2549		.hw.init = &(struct clk_init_data){
   2550			.name = "gcc_qmip_disp_ahb_clk",
   2551			.ops = &clk_branch2_ops,
   2552		},
   2553	},
   2554};
   2555
   2556static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {
   2557	.halt_reg = 0xb010,
   2558	.halt_check = BRANCH_HALT,
   2559	.hwcg_reg = 0xb010,
   2560	.hwcg_bit = 1,
   2561	.clkr = {
   2562		.enable_reg = 0xb010,
   2563		.enable_mask = BIT(0),
   2564		.hw.init = &(struct clk_init_data){
   2565			.name = "gcc_qmip_video_cvp_ahb_clk",
   2566			.ops = &clk_branch2_ops,
   2567		},
   2568	},
   2569};
   2570
   2571static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
   2572	.halt_reg = 0xb014,
   2573	.halt_check = BRANCH_HALT,
   2574	.hwcg_reg = 0xb014,
   2575	.hwcg_bit = 1,
   2576	.clkr = {
   2577		.enable_reg = 0xb014,
   2578		.enable_mask = BIT(0),
   2579		.hw.init = &(struct clk_init_data){
   2580			.name = "gcc_qmip_video_vcodec_ahb_clk",
   2581			.ops = &clk_branch2_ops,
   2582		},
   2583	},
   2584};
   2585
   2586static struct clk_branch gcc_qspi_1_cnoc_periph_ahb_clk = {
   2587	.halt_reg = 0x4a004,
   2588	.halt_check = BRANCH_HALT,
   2589	.clkr = {
   2590		.enable_reg = 0x4a004,
   2591		.enable_mask = BIT(0),
   2592		.hw.init = &(struct clk_init_data){
   2593			.name = "gcc_qspi_1_cnoc_periph_ahb_clk",
   2594			.ops = &clk_branch2_ops,
   2595		},
   2596	},
   2597};
   2598
   2599static struct clk_branch gcc_qspi_1_core_clk = {
   2600	.halt_reg = 0x4a008,
   2601	.halt_check = BRANCH_HALT,
   2602	.clkr = {
   2603		.enable_reg = 0x4a008,
   2604		.enable_mask = BIT(0),
   2605		.hw.init = &(struct clk_init_data){
   2606			.name = "gcc_qspi_1_core_clk",
   2607			.parent_hws = (const struct clk_hw *[]){
   2608				      &gcc_qspi_1_core_clk_src.clkr.hw
   2609			},
   2610			.num_parents = 1,
   2611			.flags = CLK_SET_RATE_PARENT,
   2612			.ops = &clk_branch2_ops,
   2613		},
   2614	},
   2615};
   2616
   2617static struct clk_branch gcc_qspi_cnoc_periph_ahb_clk = {
   2618	.halt_reg = 0x4b000,
   2619	.halt_check = BRANCH_HALT,
   2620	.clkr = {
   2621		.enable_reg = 0x4b000,
   2622		.enable_mask = BIT(0),
   2623		.hw.init = &(struct clk_init_data){
   2624			.name = "gcc_qspi_cnoc_periph_ahb_clk",
   2625			.ops = &clk_branch2_ops,
   2626		},
   2627	},
   2628};
   2629
   2630static struct clk_branch gcc_qspi_core_clk = {
   2631	.halt_reg = 0x4b004,
   2632	.halt_check = BRANCH_HALT,
   2633	.clkr = {
   2634		.enable_reg = 0x4b004,
   2635		.enable_mask = BIT(0),
   2636		.hw.init = &(struct clk_init_data){
   2637			.name = "gcc_qspi_core_clk",
   2638			.parent_hws = (const struct clk_hw *[]){
   2639				      &gcc_qspi_core_clk_src.clkr.hw
   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_qupv3_wrap0_s0_clk = {
   2649	.halt_reg = 0x17144,
   2650	.halt_check = BRANCH_HALT_VOTED,
   2651	.clkr = {
   2652		.enable_reg = 0x5200c,
   2653		.enable_mask = BIT(10),
   2654		.hw.init = &(struct clk_init_data){
   2655			.name = "gcc_qupv3_wrap0_s0_clk",
   2656			.parent_hws = (const struct clk_hw *[]){
   2657				      &gcc_qupv3_wrap0_s0_clk_src.clkr.hw
   2658			},
   2659			.num_parents = 1,
   2660			.flags = CLK_SET_RATE_PARENT,
   2661			.ops = &clk_branch2_ops,
   2662		},
   2663	},
   2664};
   2665
   2666static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
   2667	.halt_reg = 0x17274,
   2668	.halt_check = BRANCH_HALT_VOTED,
   2669	.clkr = {
   2670		.enable_reg = 0x5200c,
   2671		.enable_mask = BIT(11),
   2672		.hw.init = &(struct clk_init_data){
   2673			.name = "gcc_qupv3_wrap0_s1_clk",
   2674			.parent_hws = (const struct clk_hw *[]){
   2675				&gcc_qupv3_wrap0_s1_clk_src.clkr.hw
   2676			},
   2677			.num_parents = 1,
   2678			.flags = CLK_SET_RATE_PARENT,
   2679			.ops = &clk_branch2_ops,
   2680		},
   2681	},
   2682};
   2683
   2684static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
   2685	.halt_reg = 0x173a4,
   2686	.halt_check = BRANCH_HALT_VOTED,
   2687	.clkr = {
   2688		.enable_reg = 0x5200c,
   2689		.enable_mask = BIT(12),
   2690		.hw.init = &(struct clk_init_data){
   2691			.name = "gcc_qupv3_wrap0_s2_clk",
   2692			.parent_hws = (const struct clk_hw *[]){
   2693				&gcc_qupv3_wrap0_s2_clk_src.clkr.hw
   2694			},
   2695			.num_parents = 1,
   2696			.flags = CLK_SET_RATE_PARENT,
   2697			.ops = &clk_branch2_ops,
   2698		},
   2699	},
   2700};
   2701
   2702static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
   2703	.halt_reg = 0x174d4,
   2704	.halt_check = BRANCH_HALT_VOTED,
   2705	.clkr = {
   2706		.enable_reg = 0x5200c,
   2707		.enable_mask = BIT(13),
   2708		.hw.init = &(struct clk_init_data){
   2709			.name = "gcc_qupv3_wrap0_s3_clk",
   2710			.parent_hws = (const struct clk_hw *[]){
   2711				&gcc_qupv3_wrap0_s3_clk_src.clkr.hw
   2712			},
   2713			.num_parents = 1,
   2714			.flags = CLK_SET_RATE_PARENT,
   2715			.ops = &clk_branch2_ops,
   2716		},
   2717	},
   2718};
   2719
   2720static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
   2721	.halt_reg = 0x17604,
   2722	.halt_check = BRANCH_HALT_VOTED,
   2723	.clkr = {
   2724		.enable_reg = 0x5200c,
   2725		.enable_mask = BIT(14),
   2726		.hw.init = &(struct clk_init_data){
   2727			.name = "gcc_qupv3_wrap0_s4_clk",
   2728			.parent_hws = (const struct clk_hw *[]){
   2729				&gcc_qupv3_wrap0_s4_clk_src.clkr.hw
   2730			},
   2731			.num_parents = 1,
   2732			.flags = CLK_SET_RATE_PARENT,
   2733			.ops = &clk_branch2_ops,
   2734		},
   2735	},
   2736};
   2737
   2738static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
   2739	.halt_reg = 0x17734,
   2740	.halt_check = BRANCH_HALT_VOTED,
   2741	.clkr = {
   2742		.enable_reg = 0x5200c,
   2743		.enable_mask = BIT(15),
   2744		.hw.init = &(struct clk_init_data){
   2745			.name = "gcc_qupv3_wrap0_s5_clk",
   2746			.parent_hws = (const struct clk_hw *[]){
   2747				&gcc_qupv3_wrap0_s5_clk_src.clkr.hw
   2748			},
   2749			.num_parents = 1,
   2750			.flags = CLK_SET_RATE_PARENT,
   2751			.ops = &clk_branch2_ops,
   2752		},
   2753	},
   2754};
   2755
   2756static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
   2757	.halt_reg = 0x17864,
   2758	.halt_check = BRANCH_HALT_VOTED,
   2759	.clkr = {
   2760		.enable_reg = 0x5200c,
   2761		.enable_mask = BIT(16),
   2762		.hw.init = &(struct clk_init_data){
   2763			.name = "gcc_qupv3_wrap0_s6_clk",
   2764			.parent_hws = (const struct clk_hw *[]){
   2765				&gcc_qupv3_wrap0_s6_clk_src.clkr.hw
   2766			},
   2767			.num_parents = 1,
   2768			.flags = CLK_SET_RATE_PARENT,
   2769			.ops = &clk_branch2_ops,
   2770		},
   2771	},
   2772};
   2773
   2774static struct clk_branch gcc_qupv3_wrap0_s7_clk = {
   2775	.halt_reg = 0x17994,
   2776	.halt_check = BRANCH_HALT_VOTED,
   2777	.clkr = {
   2778		.enable_reg = 0x5200c,
   2779		.enable_mask = BIT(17),
   2780		.hw.init = &(struct clk_init_data){
   2781			.name = "gcc_qupv3_wrap0_s7_clk",
   2782			.parent_hws = (const struct clk_hw *[]){
   2783				&gcc_qupv3_wrap0_s7_clk_src.clkr.hw
   2784			},
   2785			.num_parents = 1,
   2786			.flags = CLK_SET_RATE_PARENT,
   2787			.ops = &clk_branch2_ops,
   2788		},
   2789	},
   2790};
   2791
   2792static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
   2793	.halt_reg = 0x18144,
   2794	.halt_check = BRANCH_HALT_VOTED,
   2795	.clkr = {
   2796		.enable_reg = 0x5200c,
   2797		.enable_mask = BIT(22),
   2798		.hw.init = &(struct clk_init_data){
   2799			.name = "gcc_qupv3_wrap1_s0_clk",
   2800			.parent_hws = (const struct clk_hw *[]){
   2801				&gcc_qupv3_wrap1_s0_clk_src.clkr.hw
   2802			},
   2803			.num_parents = 1,
   2804			.flags = CLK_SET_RATE_PARENT,
   2805			.ops = &clk_branch2_ops,
   2806		},
   2807	},
   2808};
   2809
   2810static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
   2811	.halt_reg = 0x18274,
   2812	.halt_check = BRANCH_HALT_VOTED,
   2813	.clkr = {
   2814		.enable_reg = 0x5200c,
   2815		.enable_mask = BIT(23),
   2816		.hw.init = &(struct clk_init_data){
   2817			.name = "gcc_qupv3_wrap1_s1_clk",
   2818			.parent_hws = (const struct clk_hw *[]){
   2819				&gcc_qupv3_wrap1_s1_clk_src.clkr.hw
   2820			},
   2821			.num_parents = 1,
   2822			.flags = CLK_SET_RATE_PARENT,
   2823			.ops = &clk_branch2_ops,
   2824		},
   2825	},
   2826};
   2827
   2828static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
   2829	.halt_reg = 0x183a4,
   2830	.halt_check = BRANCH_HALT_VOTED,
   2831	.clkr = {
   2832		.enable_reg = 0x5200c,
   2833		.enable_mask = BIT(24),
   2834		.hw.init = &(struct clk_init_data){
   2835			.name = "gcc_qupv3_wrap1_s2_clk",
   2836			.parent_hws = (const struct clk_hw *[]){
   2837				&gcc_qupv3_wrap1_s2_clk_src.clkr.hw
   2838			},
   2839			.num_parents = 1,
   2840			.flags = CLK_SET_RATE_PARENT,
   2841			.ops = &clk_branch2_ops,
   2842		},
   2843	},
   2844};
   2845
   2846static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
   2847	.halt_reg = 0x184d4,
   2848	.halt_check = BRANCH_HALT_VOTED,
   2849	.clkr = {
   2850		.enable_reg = 0x5200c,
   2851		.enable_mask = BIT(25),
   2852		.hw.init = &(struct clk_init_data){
   2853			.name = "gcc_qupv3_wrap1_s3_clk",
   2854			.parent_hws = (const struct clk_hw *[]){
   2855				&gcc_qupv3_wrap1_s3_clk_src.clkr.hw
   2856			},
   2857			.num_parents = 1,
   2858			.flags = CLK_SET_RATE_PARENT,
   2859			.ops = &clk_branch2_ops,
   2860		},
   2861	},
   2862};
   2863
   2864static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
   2865	.halt_reg = 0x18604,
   2866	.halt_check = BRANCH_HALT_VOTED,
   2867	.clkr = {
   2868		.enable_reg = 0x5200c,
   2869		.enable_mask = BIT(26),
   2870		.hw.init = &(struct clk_init_data){
   2871			.name = "gcc_qupv3_wrap1_s4_clk",
   2872			.parent_hws = (const struct clk_hw *[]){
   2873				&gcc_qupv3_wrap1_s4_clk_src.clkr.hw
   2874			},
   2875			.num_parents = 1,
   2876			.flags = CLK_SET_RATE_PARENT,
   2877			.ops = &clk_branch2_ops,
   2878		},
   2879	},
   2880};
   2881
   2882static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
   2883	.halt_reg = 0x18734,
   2884	.halt_check = BRANCH_HALT_VOTED,
   2885	.clkr = {
   2886		.enable_reg = 0x5200c,
   2887		.enable_mask = BIT(27),
   2888		.hw.init = &(struct clk_init_data){
   2889			.name = "gcc_qupv3_wrap1_s5_clk",
   2890			.parent_hws = (const struct clk_hw *[]){
   2891				&gcc_qupv3_wrap1_s5_clk_src.clkr.hw
   2892			},
   2893			.num_parents = 1,
   2894			.flags = CLK_SET_RATE_PARENT,
   2895			.ops = &clk_branch2_ops,
   2896		},
   2897	},
   2898};
   2899
   2900static struct clk_branch gcc_qupv3_wrap2_s0_clk = {
   2901	.halt_reg = 0x1e144,
   2902	.halt_check = BRANCH_HALT_VOTED,
   2903	.clkr = {
   2904		.enable_reg = 0x52014,
   2905		.enable_mask = BIT(4),
   2906		.hw.init = &(struct clk_init_data){
   2907			.name = "gcc_qupv3_wrap2_s0_clk",
   2908			.parent_hws = (const struct clk_hw *[]){
   2909				&gcc_qupv3_wrap2_s0_clk_src.clkr.hw
   2910			},
   2911			.num_parents = 1,
   2912			.flags = CLK_SET_RATE_PARENT,
   2913			.ops = &clk_branch2_ops,
   2914		},
   2915	},
   2916};
   2917
   2918static struct clk_branch gcc_qupv3_wrap2_s1_clk = {
   2919	.halt_reg = 0x1e274,
   2920	.halt_check = BRANCH_HALT_VOTED,
   2921	.clkr = {
   2922		.enable_reg = 0x52014,
   2923		.enable_mask = BIT(5),
   2924		.hw.init = &(struct clk_init_data){
   2925			.name = "gcc_qupv3_wrap2_s1_clk",
   2926			.parent_hws = (const struct clk_hw *[]){
   2927				&gcc_qupv3_wrap2_s1_clk_src.clkr.hw
   2928			},
   2929			.num_parents = 1,
   2930			.flags = CLK_SET_RATE_PARENT,
   2931			.ops = &clk_branch2_ops,
   2932		},
   2933	},
   2934};
   2935
   2936static struct clk_branch gcc_qupv3_wrap2_s2_clk = {
   2937	.halt_reg = 0x1e3a4,
   2938	.halt_check = BRANCH_HALT_VOTED,
   2939	.clkr = {
   2940		.enable_reg = 0x52014,
   2941		.enable_mask = BIT(6),
   2942		.hw.init = &(struct clk_init_data){
   2943			.name = "gcc_qupv3_wrap2_s2_clk",
   2944			.parent_hws = (const struct clk_hw *[]){
   2945				&gcc_qupv3_wrap2_s2_clk_src.clkr.hw
   2946			},
   2947			.num_parents = 1,
   2948			.flags = CLK_SET_RATE_PARENT,
   2949			.ops = &clk_branch2_ops,
   2950		},
   2951	},
   2952};
   2953
   2954static struct clk_branch gcc_qupv3_wrap2_s3_clk = {
   2955	.halt_reg = 0x1e4d4,
   2956	.halt_check = BRANCH_HALT_VOTED,
   2957	.clkr = {
   2958		.enable_reg = 0x52014,
   2959		.enable_mask = BIT(7),
   2960		.hw.init = &(struct clk_init_data){
   2961			.name = "gcc_qupv3_wrap2_s3_clk",
   2962			.parent_hws = (const struct clk_hw *[]){
   2963				&gcc_qupv3_wrap2_s3_clk_src.clkr.hw
   2964			},
   2965			.num_parents = 1,
   2966			.flags = CLK_SET_RATE_PARENT,
   2967			.ops = &clk_branch2_ops,
   2968		},
   2969	},
   2970};
   2971
   2972static struct clk_branch gcc_qupv3_wrap2_s4_clk = {
   2973	.halt_reg = 0x1e604,
   2974	.halt_check = BRANCH_HALT_VOTED,
   2975	.clkr = {
   2976		.enable_reg = 0x52014,
   2977		.enable_mask = BIT(8),
   2978		.hw.init = &(struct clk_init_data){
   2979			.name = "gcc_qupv3_wrap2_s4_clk",
   2980			.parent_hws = (const struct clk_hw *[]){
   2981				&gcc_qupv3_wrap2_s4_clk_src.clkr.hw
   2982			},
   2983			.num_parents = 1,
   2984			.flags = CLK_SET_RATE_PARENT,
   2985			.ops = &clk_branch2_ops,
   2986		},
   2987	},
   2988};
   2989
   2990static struct clk_branch gcc_qupv3_wrap2_s5_clk = {
   2991	.halt_reg = 0x1e734,
   2992	.halt_check = BRANCH_HALT_VOTED,
   2993	.clkr = {
   2994		.enable_reg = 0x52014,
   2995		.enable_mask = BIT(9),
   2996		.hw.init = &(struct clk_init_data){
   2997			.name = "gcc_qupv3_wrap2_s5_clk",
   2998			.parent_hws = (const struct clk_hw *[]){
   2999				&gcc_qupv3_wrap2_s5_clk_src.clkr.hw
   3000			},
   3001			.num_parents = 1,
   3002			.flags = CLK_SET_RATE_PARENT,
   3003			.ops = &clk_branch2_ops,
   3004		},
   3005	},
   3006};
   3007
   3008static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
   3009	.halt_reg = 0x17004,
   3010	.halt_check = BRANCH_HALT_VOTED,
   3011	.clkr = {
   3012		.enable_reg = 0x5200c,
   3013		.enable_mask = BIT(6),
   3014		.hw.init = &(struct clk_init_data){
   3015			.name = "gcc_qupv3_wrap_0_m_ahb_clk",
   3016			.ops = &clk_branch2_ops,
   3017		},
   3018	},
   3019};
   3020
   3021static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
   3022	.halt_reg = 0x17008,
   3023	.halt_check = BRANCH_HALT_VOTED,
   3024	.hwcg_reg = 0x17008,
   3025	.hwcg_bit = 1,
   3026	.clkr = {
   3027		.enable_reg = 0x5200c,
   3028		.enable_mask = BIT(7),
   3029		.hw.init = &(struct clk_init_data){
   3030			.name = "gcc_qupv3_wrap_0_s_ahb_clk",
   3031			.ops = &clk_branch2_ops,
   3032		},
   3033	},
   3034};
   3035
   3036static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
   3037	.halt_reg = 0x18004,
   3038	.halt_check = BRANCH_HALT_VOTED,
   3039	.clkr = {
   3040		.enable_reg = 0x5200c,
   3041		.enable_mask = BIT(20),
   3042		.hw.init = &(struct clk_init_data){
   3043			.name = "gcc_qupv3_wrap_1_m_ahb_clk",
   3044			.ops = &clk_branch2_ops,
   3045		},
   3046	},
   3047};
   3048
   3049static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
   3050	.halt_reg = 0x18008,
   3051	.halt_check = BRANCH_HALT_VOTED,
   3052	.hwcg_reg = 0x18008,
   3053	.hwcg_bit = 1,
   3054	.clkr = {
   3055		.enable_reg = 0x5200c,
   3056		.enable_mask = BIT(21),
   3057		.hw.init = &(struct clk_init_data){
   3058			.name = "gcc_qupv3_wrap_1_s_ahb_clk",
   3059			.ops = &clk_branch2_ops,
   3060		},
   3061	},
   3062};
   3063
   3064static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {
   3065	.halt_reg = 0x1e004,
   3066	.halt_check = BRANCH_HALT_VOTED,
   3067	.clkr = {
   3068		.enable_reg = 0x52014,
   3069		.enable_mask = BIT(2),
   3070		.hw.init = &(struct clk_init_data){
   3071			.name = "gcc_qupv3_wrap_2_m_ahb_clk",
   3072			.ops = &clk_branch2_ops,
   3073		},
   3074	},
   3075};
   3076
   3077static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {
   3078	.halt_reg = 0x1e008,
   3079	.halt_check = BRANCH_HALT_VOTED,
   3080	.hwcg_reg = 0x1e008,
   3081	.hwcg_bit = 1,
   3082	.clkr = {
   3083		.enable_reg = 0x52014,
   3084		.enable_mask = BIT(1),
   3085		.hw.init = &(struct clk_init_data){
   3086			.name = "gcc_qupv3_wrap_2_s_ahb_clk",
   3087			.ops = &clk_branch2_ops,
   3088		},
   3089	},
   3090};
   3091
   3092static struct clk_branch gcc_sdcc2_ahb_clk = {
   3093	.halt_reg = 0x14008,
   3094	.halt_check = BRANCH_HALT,
   3095	.clkr = {
   3096		.enable_reg = 0x14008,
   3097		.enable_mask = BIT(0),
   3098		.hw.init = &(struct clk_init_data){
   3099			.name = "gcc_sdcc2_ahb_clk",
   3100			.ops = &clk_branch2_ops,
   3101		},
   3102	},
   3103};
   3104
   3105static struct clk_branch gcc_sdcc2_apps_clk = {
   3106	.halt_reg = 0x14004,
   3107	.halt_check = BRANCH_HALT,
   3108	.clkr = {
   3109		.enable_reg = 0x14004,
   3110		.enable_mask = BIT(0),
   3111		.hw.init = &(struct clk_init_data){
   3112			.name = "gcc_sdcc2_apps_clk",
   3113			.parent_hws = (const struct clk_hw *[]){
   3114				&gcc_sdcc2_apps_clk_src.clkr.hw
   3115			},
   3116			.num_parents = 1,
   3117			.flags = CLK_SET_RATE_PARENT,
   3118			.ops = &clk_branch2_ops,
   3119		},
   3120	},
   3121};
   3122
   3123static struct clk_branch gcc_sdcc4_ahb_clk = {
   3124	.halt_reg = 0x16008,
   3125	.halt_check = BRANCH_HALT,
   3126	.clkr = {
   3127		.enable_reg = 0x16008,
   3128		.enable_mask = BIT(0),
   3129		.hw.init = &(struct clk_init_data){
   3130			.name = "gcc_sdcc4_ahb_clk",
   3131			.ops = &clk_branch2_ops,
   3132		},
   3133	},
   3134};
   3135
   3136static struct clk_branch gcc_sdcc4_apps_clk = {
   3137	.halt_reg = 0x16004,
   3138	.halt_check = BRANCH_HALT,
   3139	.clkr = {
   3140		.enable_reg = 0x16004,
   3141		.enable_mask = BIT(0),
   3142		.hw.init = &(struct clk_init_data){
   3143			.name = "gcc_sdcc4_apps_clk",
   3144			.parent_hws = (const struct clk_hw *[]){
   3145				&gcc_sdcc4_apps_clk_src.clkr.hw
   3146			},
   3147			.num_parents = 1,
   3148			.flags = CLK_SET_RATE_PARENT,
   3149			.ops = &clk_branch2_ops,
   3150		},
   3151	},
   3152};
   3153
   3154/* For CPUSS functionality the SYS NOC clock needs to be left enabled */
   3155static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = {
   3156	.halt_reg = 0x4819c,
   3157	.halt_check = BRANCH_HALT_VOTED,
   3158	.clkr = {
   3159		.enable_reg = 0x52004,
   3160		.enable_mask = BIT(0),
   3161		.hw.init = &(struct clk_init_data){
   3162			.name = "gcc_sys_noc_cpuss_ahb_clk",
   3163			.parent_hws = (const struct clk_hw *[]){
   3164				      &gcc_cpuss_ahb_clk_src.clkr.hw
   3165			},
   3166			.num_parents = 1,
   3167			.flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
   3168			.ops = &clk_branch2_ops,
   3169		},
   3170	},
   3171};
   3172
   3173static struct clk_branch gcc_tsif_ahb_clk = {
   3174	.halt_reg = 0x36004,
   3175	.halt_check = BRANCH_HALT,
   3176	.clkr = {
   3177		.enable_reg = 0x36004,
   3178		.enable_mask = BIT(0),
   3179		.hw.init = &(struct clk_init_data){
   3180			.name = "gcc_tsif_ahb_clk",
   3181			.ops = &clk_branch2_ops,
   3182		},
   3183	},
   3184};
   3185
   3186static struct clk_branch gcc_tsif_inactivity_timers_clk = {
   3187	.halt_reg = 0x3600c,
   3188	.halt_check = BRANCH_HALT,
   3189	.clkr = {
   3190		.enable_reg = 0x3600c,
   3191		.enable_mask = BIT(0),
   3192		.hw.init = &(struct clk_init_data){
   3193			.name = "gcc_tsif_inactivity_timers_clk",
   3194			.ops = &clk_branch2_ops,
   3195		},
   3196	},
   3197};
   3198
   3199static struct clk_branch gcc_tsif_ref_clk = {
   3200	.halt_reg = 0x36008,
   3201	.halt_check = BRANCH_HALT,
   3202	.clkr = {
   3203		.enable_reg = 0x36008,
   3204		.enable_mask = BIT(0),
   3205		.hw.init = &(struct clk_init_data){
   3206			.name = "gcc_tsif_ref_clk",
   3207			.parent_hws = (const struct clk_hw *[]){
   3208				&gcc_tsif_ref_clk_src.clkr.hw
   3209			},
   3210			.num_parents = 1,
   3211			.flags = CLK_SET_RATE_PARENT,
   3212			.ops = &clk_branch2_ops,
   3213		},
   3214	},
   3215};
   3216
   3217static struct clk_branch gcc_ufs_card_2_ahb_clk = {
   3218	.halt_reg = 0xa2014,
   3219	.halt_check = BRANCH_HALT,
   3220	.hwcg_reg = 0xa2014,
   3221	.hwcg_bit = 1,
   3222	.clkr = {
   3223		.enable_reg = 0xa2014,
   3224		.enable_mask = BIT(0),
   3225		.hw.init = &(struct clk_init_data){
   3226			.name = "gcc_ufs_card_2_ahb_clk",
   3227			.ops = &clk_branch2_ops,
   3228		},
   3229	},
   3230};
   3231
   3232static struct clk_branch gcc_ufs_card_2_axi_clk = {
   3233	.halt_reg = 0xa2010,
   3234	.halt_check = BRANCH_HALT,
   3235	.hwcg_reg = 0xa2010,
   3236	.hwcg_bit = 1,
   3237	.clkr = {
   3238		.enable_reg = 0xa2010,
   3239		.enable_mask = BIT(0),
   3240		.hw.init = &(struct clk_init_data){
   3241			.name = "gcc_ufs_card_2_axi_clk",
   3242			.parent_hws = (const struct clk_hw *[]){
   3243				&gcc_ufs_card_2_axi_clk_src.clkr.hw
   3244			},
   3245			.num_parents = 1,
   3246			.flags = CLK_SET_RATE_PARENT,
   3247			.ops = &clk_branch2_ops,
   3248		},
   3249	},
   3250};
   3251
   3252static struct clk_branch gcc_ufs_card_2_ice_core_clk = {
   3253	.halt_reg = 0xa205c,
   3254	.halt_check = BRANCH_HALT,
   3255	.hwcg_reg = 0xa205c,
   3256	.hwcg_bit = 1,
   3257	.clkr = {
   3258		.enable_reg = 0xa205c,
   3259		.enable_mask = BIT(0),
   3260		.hw.init = &(struct clk_init_data){
   3261			.name = "gcc_ufs_card_2_ice_core_clk",
   3262			.parent_hws = (const struct clk_hw *[]){
   3263				&gcc_ufs_card_2_ice_core_clk_src.clkr.hw
   3264			},
   3265			.num_parents = 1,
   3266			.flags = CLK_SET_RATE_PARENT,
   3267			.ops = &clk_branch2_ops,
   3268		},
   3269	},
   3270};
   3271
   3272static struct clk_branch gcc_ufs_card_2_phy_aux_clk = {
   3273	.halt_reg = 0xa2090,
   3274	.halt_check = BRANCH_HALT,
   3275	.hwcg_reg = 0xa2090,
   3276	.hwcg_bit = 1,
   3277	.clkr = {
   3278		.enable_reg = 0xa2090,
   3279		.enable_mask = BIT(0),
   3280		.hw.init = &(struct clk_init_data){
   3281			.name = "gcc_ufs_card_2_phy_aux_clk",
   3282			.parent_hws = (const struct clk_hw *[]){
   3283				&gcc_ufs_card_2_phy_aux_clk_src.clkr.hw
   3284			},
   3285			.num_parents = 1,
   3286			.flags = CLK_SET_RATE_PARENT,
   3287			.ops = &clk_branch2_ops,
   3288		},
   3289	},
   3290};
   3291
   3292static struct clk_branch gcc_ufs_card_2_rx_symbol_0_clk = {
   3293	.halt_reg = 0xa201c,
   3294	.halt_check = BRANCH_HALT,
   3295	.clkr = {
   3296		.enable_reg = 0xa201c,
   3297		.enable_mask = BIT(0),
   3298		.hw.init = &(struct clk_init_data){
   3299			.name = "gcc_ufs_card_2_rx_symbol_0_clk",
   3300			.ops = &clk_branch2_ops,
   3301		},
   3302	},
   3303};
   3304
   3305static struct clk_branch gcc_ufs_card_2_rx_symbol_1_clk = {
   3306	.halt_reg = 0xa20ac,
   3307	.halt_check = BRANCH_HALT,
   3308	.clkr = {
   3309		.enable_reg = 0xa20ac,
   3310		.enable_mask = BIT(0),
   3311		.hw.init = &(struct clk_init_data){
   3312			.name = "gcc_ufs_card_2_rx_symbol_1_clk",
   3313			.ops = &clk_branch2_ops,
   3314		},
   3315	},
   3316};
   3317
   3318static struct clk_branch gcc_ufs_card_2_tx_symbol_0_clk = {
   3319	.halt_reg = 0xa2018,
   3320	.halt_check = BRANCH_HALT,
   3321	.clkr = {
   3322		.enable_reg = 0xa2018,
   3323		.enable_mask = BIT(0),
   3324		.hw.init = &(struct clk_init_data){
   3325			.name = "gcc_ufs_card_2_tx_symbol_0_clk",
   3326			.ops = &clk_branch2_ops,
   3327		},
   3328	},
   3329};
   3330
   3331static struct clk_branch gcc_ufs_card_2_unipro_core_clk = {
   3332	.halt_reg = 0xa2058,
   3333	.halt_check = BRANCH_HALT,
   3334	.hwcg_reg = 0xa2058,
   3335	.hwcg_bit = 1,
   3336	.clkr = {
   3337		.enable_reg = 0xa2058,
   3338		.enable_mask = BIT(0),
   3339		.hw.init = &(struct clk_init_data){
   3340			.name = "gcc_ufs_card_2_unipro_core_clk",
   3341			.parent_hws = (const struct clk_hw *[]){
   3342				&gcc_ufs_card_2_unipro_core_clk_src.clkr.hw
   3343			},
   3344			.num_parents = 1,
   3345			.flags = CLK_SET_RATE_PARENT,
   3346			.ops = &clk_branch2_ops,
   3347		},
   3348	},
   3349};
   3350
   3351static struct clk_branch gcc_ufs_card_ahb_clk = {
   3352	.halt_reg = 0x75014,
   3353	.halt_check = BRANCH_HALT,
   3354	.hwcg_reg = 0x75014,
   3355	.hwcg_bit = 1,
   3356	.clkr = {
   3357		.enable_reg = 0x75014,
   3358		.enable_mask = BIT(0),
   3359		.hw.init = &(struct clk_init_data){
   3360			.name = "gcc_ufs_card_ahb_clk",
   3361			.ops = &clk_branch2_ops,
   3362		},
   3363	},
   3364};
   3365
   3366static struct clk_branch gcc_ufs_card_axi_clk = {
   3367	.halt_reg = 0x75010,
   3368	.halt_check = BRANCH_HALT,
   3369	.hwcg_reg = 0x75010,
   3370	.hwcg_bit = 1,
   3371	.clkr = {
   3372		.enable_reg = 0x75010,
   3373		.enable_mask = BIT(0),
   3374		.hw.init = &(struct clk_init_data){
   3375			.name = "gcc_ufs_card_axi_clk",
   3376			.parent_hws = (const struct clk_hw *[]){
   3377				      &gcc_ufs_card_axi_clk_src.clkr.hw
   3378			},
   3379			.num_parents = 1,
   3380			.flags = CLK_SET_RATE_PARENT,
   3381			.ops = &clk_branch2_ops,
   3382		},
   3383	},
   3384};
   3385
   3386static struct clk_branch gcc_ufs_card_axi_hw_ctl_clk = {
   3387	.halt_reg = 0x75010,
   3388	.halt_check = BRANCH_HALT,
   3389	.hwcg_reg = 0x75010,
   3390	.hwcg_bit = 1,
   3391	.clkr = {
   3392		.enable_reg = 0x75010,
   3393		.enable_mask = BIT(1),
   3394		.hw.init = &(struct clk_init_data){
   3395			.name = "gcc_ufs_card_axi_hw_ctl_clk",
   3396			.parent_hws = (const struct clk_hw *[]){
   3397				      &gcc_ufs_card_axi_clk.clkr.hw
   3398			},
   3399			.num_parents = 1,
   3400			.flags = CLK_SET_RATE_PARENT,
   3401			.ops = &clk_branch_simple_ops,
   3402		},
   3403	},
   3404};
   3405
   3406static struct clk_branch gcc_ufs_card_ice_core_clk = {
   3407	.halt_reg = 0x7505c,
   3408	.halt_check = BRANCH_HALT,
   3409	.hwcg_reg = 0x7505c,
   3410	.hwcg_bit = 1,
   3411	.clkr = {
   3412		.enable_reg = 0x7505c,
   3413		.enable_mask = BIT(0),
   3414		.hw.init = &(struct clk_init_data){
   3415			.name = "gcc_ufs_card_ice_core_clk",
   3416			.parent_hws = (const struct clk_hw *[]){
   3417				      &gcc_ufs_card_ice_core_clk_src.clkr.hw
   3418			},
   3419			.num_parents = 1,
   3420			.flags = CLK_SET_RATE_PARENT,
   3421			.ops = &clk_branch2_ops,
   3422		},
   3423	},
   3424};
   3425
   3426static struct clk_branch gcc_ufs_card_ice_core_hw_ctl_clk = {
   3427	.halt_reg = 0x7505c,
   3428	.halt_check = BRANCH_HALT,
   3429	.hwcg_reg = 0x7505c,
   3430	.hwcg_bit = 1,
   3431	.clkr = {
   3432		.enable_reg = 0x7505c,
   3433		.enable_mask = BIT(1),
   3434		.hw.init = &(struct clk_init_data){
   3435			.name = "gcc_ufs_card_ice_core_hw_ctl_clk",
   3436			.parent_hws = (const struct clk_hw *[]){
   3437				      &gcc_ufs_card_ice_core_clk.clkr.hw
   3438			},
   3439			.num_parents = 1,
   3440			.flags = CLK_SET_RATE_PARENT,
   3441			.ops = &clk_branch_simple_ops,
   3442		},
   3443	},
   3444};
   3445
   3446static struct clk_branch gcc_ufs_card_phy_aux_clk = {
   3447	.halt_reg = 0x75090,
   3448	.halt_check = BRANCH_HALT,
   3449	.hwcg_reg = 0x75090,
   3450	.hwcg_bit = 1,
   3451	.clkr = {
   3452		.enable_reg = 0x75090,
   3453		.enable_mask = BIT(0),
   3454		.hw.init = &(struct clk_init_data){
   3455			.name = "gcc_ufs_card_phy_aux_clk",
   3456			.parent_hws = (const struct clk_hw *[]){
   3457				      &gcc_ufs_card_phy_aux_clk_src.clkr.hw
   3458			},
   3459			.num_parents = 1,
   3460			.flags = CLK_SET_RATE_PARENT,
   3461			.ops = &clk_branch2_ops,
   3462		},
   3463	},
   3464};
   3465
   3466static struct clk_branch gcc_ufs_card_phy_aux_hw_ctl_clk = {
   3467	.halt_reg = 0x75090,
   3468	.halt_check = BRANCH_HALT,
   3469	.hwcg_reg = 0x75090,
   3470	.hwcg_bit = 1,
   3471	.clkr = {
   3472		.enable_reg = 0x75090,
   3473		.enable_mask = BIT(1),
   3474		.hw.init = &(struct clk_init_data){
   3475			.name = "gcc_ufs_card_phy_aux_hw_ctl_clk",
   3476			.parent_hws = (const struct clk_hw *[]){
   3477				      &gcc_ufs_card_phy_aux_clk.clkr.hw
   3478			},
   3479			.num_parents = 1,
   3480			.flags = CLK_SET_RATE_PARENT,
   3481			.ops = &clk_branch_simple_ops,
   3482		},
   3483	},
   3484};
   3485
   3486static struct clk_branch gcc_ufs_card_rx_symbol_0_clk = {
   3487	.halt_reg = 0x7501c,
   3488	.halt_check = BRANCH_HALT_DELAY,
   3489	.clkr = {
   3490		.enable_reg = 0x7501c,
   3491		.enable_mask = BIT(0),
   3492		.hw.init = &(struct clk_init_data){
   3493			.name = "gcc_ufs_card_rx_symbol_0_clk",
   3494			.ops = &clk_branch2_ops,
   3495		},
   3496	},
   3497};
   3498
   3499static struct clk_branch gcc_ufs_card_rx_symbol_1_clk = {
   3500	.halt_reg = 0x750ac,
   3501	.halt_check = BRANCH_HALT_DELAY,
   3502	.clkr = {
   3503		.enable_reg = 0x750ac,
   3504		.enable_mask = BIT(0),
   3505		.hw.init = &(struct clk_init_data){
   3506			.name = "gcc_ufs_card_rx_symbol_1_clk",
   3507			.ops = &clk_branch2_ops,
   3508		},
   3509	},
   3510};
   3511
   3512static struct clk_branch gcc_ufs_card_tx_symbol_0_clk = {
   3513	.halt_reg = 0x75018,
   3514	.halt_check = BRANCH_HALT_DELAY,
   3515	.clkr = {
   3516		.enable_reg = 0x75018,
   3517		.enable_mask = BIT(0),
   3518		.hw.init = &(struct clk_init_data){
   3519			.name = "gcc_ufs_card_tx_symbol_0_clk",
   3520			.ops = &clk_branch2_ops,
   3521		},
   3522	},
   3523};
   3524
   3525static struct clk_branch gcc_ufs_card_unipro_core_clk = {
   3526	.halt_reg = 0x75058,
   3527	.halt_check = BRANCH_HALT,
   3528	.hwcg_reg = 0x75058,
   3529	.hwcg_bit = 1,
   3530	.clkr = {
   3531		.enable_reg = 0x75058,
   3532		.enable_mask = BIT(0),
   3533		.hw.init = &(struct clk_init_data){
   3534			.name = "gcc_ufs_card_unipro_core_clk",
   3535			.parent_hws = (const struct clk_hw *[]){
   3536				      &gcc_ufs_card_unipro_core_clk_src.clkr.hw
   3537			},
   3538			.num_parents = 1,
   3539			.flags = CLK_SET_RATE_PARENT,
   3540			.ops = &clk_branch2_ops,
   3541		},
   3542	},
   3543};
   3544
   3545static struct clk_branch gcc_ufs_card_unipro_core_hw_ctl_clk = {
   3546	.halt_reg = 0x75058,
   3547	.halt_check = BRANCH_HALT,
   3548	.hwcg_reg = 0x75058,
   3549	.hwcg_bit = 1,
   3550	.clkr = {
   3551		.enable_reg = 0x75058,
   3552		.enable_mask = BIT(1),
   3553		.hw.init = &(struct clk_init_data){
   3554			.name = "gcc_ufs_card_unipro_core_hw_ctl_clk",
   3555			.parent_hws = (const struct clk_hw *[]){
   3556				      &gcc_ufs_card_unipro_core_clk.clkr.hw
   3557			},
   3558			.num_parents = 1,
   3559			.flags = CLK_SET_RATE_PARENT,
   3560			.ops = &clk_branch_simple_ops,
   3561		},
   3562	},
   3563};
   3564
   3565static struct clk_branch gcc_ufs_phy_ahb_clk = {
   3566	.halt_reg = 0x77014,
   3567	.halt_check = BRANCH_HALT,
   3568	.hwcg_reg = 0x77014,
   3569	.hwcg_bit = 1,
   3570	.clkr = {
   3571		.enable_reg = 0x77014,
   3572		.enable_mask = BIT(0),
   3573		.hw.init = &(struct clk_init_data){
   3574			.name = "gcc_ufs_phy_ahb_clk",
   3575			.ops = &clk_branch2_ops,
   3576		},
   3577	},
   3578};
   3579
   3580static struct clk_branch gcc_ufs_phy_axi_clk = {
   3581	.halt_reg = 0x77010,
   3582	.halt_check = BRANCH_HALT,
   3583	.hwcg_reg = 0x77010,
   3584	.hwcg_bit = 1,
   3585	.clkr = {
   3586		.enable_reg = 0x77010,
   3587		.enable_mask = BIT(0),
   3588		.hw.init = &(struct clk_init_data){
   3589			.name = "gcc_ufs_phy_axi_clk",
   3590			.parent_hws = (const struct clk_hw *[]){
   3591				      &gcc_ufs_phy_axi_clk_src.clkr.hw
   3592			},
   3593			.num_parents = 1,
   3594			.flags = CLK_SET_RATE_PARENT,
   3595			.ops = &clk_branch2_ops,
   3596		},
   3597	},
   3598};
   3599
   3600static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk = {
   3601	.halt_reg = 0x77010,
   3602	.halt_check = BRANCH_HALT,
   3603	.hwcg_reg = 0x77010,
   3604	.hwcg_bit = 1,
   3605	.clkr = {
   3606		.enable_reg = 0x77010,
   3607		.enable_mask = BIT(1),
   3608		.hw.init = &(struct clk_init_data){
   3609			.name = "gcc_ufs_phy_axi_hw_ctl_clk",
   3610			.parent_hws = (const struct clk_hw *[]){
   3611				      &gcc_ufs_phy_axi_clk.clkr.hw
   3612			},
   3613			.num_parents = 1,
   3614			.flags = CLK_SET_RATE_PARENT,
   3615			.ops = &clk_branch_simple_ops,
   3616		},
   3617	},
   3618};
   3619
   3620static struct clk_branch gcc_ufs_phy_ice_core_clk = {
   3621	.halt_reg = 0x7705c,
   3622	.halt_check = BRANCH_HALT,
   3623	.hwcg_reg = 0x7705c,
   3624	.hwcg_bit = 1,
   3625	.clkr = {
   3626		.enable_reg = 0x7705c,
   3627		.enable_mask = BIT(0),
   3628		.hw.init = &(struct clk_init_data){
   3629			.name = "gcc_ufs_phy_ice_core_clk",
   3630			.parent_hws = (const struct clk_hw *[]){
   3631				      &gcc_ufs_phy_ice_core_clk_src.clkr.hw
   3632			},
   3633			.num_parents = 1,
   3634			.flags = CLK_SET_RATE_PARENT,
   3635			.ops = &clk_branch2_ops,
   3636		},
   3637	},
   3638};
   3639
   3640static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk = {
   3641	.halt_reg = 0x7705c,
   3642	.halt_check = BRANCH_HALT,
   3643	.hwcg_reg = 0x7705c,
   3644	.hwcg_bit = 1,
   3645	.clkr = {
   3646		.enable_reg = 0x7705c,
   3647		.enable_mask = BIT(1),
   3648		.hw.init = &(struct clk_init_data){
   3649			.name = "gcc_ufs_phy_ice_core_hw_ctl_clk",
   3650			.parent_hws = (const struct clk_hw *[]){
   3651				      &gcc_ufs_phy_ice_core_clk.clkr.hw
   3652			},
   3653			.num_parents = 1,
   3654			.flags = CLK_SET_RATE_PARENT,
   3655			.ops = &clk_branch_simple_ops,
   3656		},
   3657	},
   3658};
   3659
   3660static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
   3661	.halt_reg = 0x77090,
   3662	.halt_check = BRANCH_HALT,
   3663	.hwcg_reg = 0x77090,
   3664	.hwcg_bit = 1,
   3665	.clkr = {
   3666		.enable_reg = 0x77090,
   3667		.enable_mask = BIT(0),
   3668		.hw.init = &(struct clk_init_data){
   3669			.name = "gcc_ufs_phy_phy_aux_clk",
   3670			.parent_hws = (const struct clk_hw *[]){
   3671				      &gcc_ufs_phy_phy_aux_clk_src.clkr.hw
   3672			},
   3673			.num_parents = 1,
   3674			.flags = CLK_SET_RATE_PARENT,
   3675			.ops = &clk_branch2_ops,
   3676		},
   3677	},
   3678};
   3679
   3680static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk = {
   3681	.halt_reg = 0x77090,
   3682	.halt_check = BRANCH_HALT,
   3683	.hwcg_reg = 0x77090,
   3684	.hwcg_bit = 1,
   3685	.clkr = {
   3686		.enable_reg = 0x77090,
   3687		.enable_mask = BIT(1),
   3688		.hw.init = &(struct clk_init_data){
   3689			.name = "gcc_ufs_phy_phy_aux_hw_ctl_clk",
   3690			.parent_hws = (const struct clk_hw *[]){
   3691				      &gcc_ufs_phy_phy_aux_clk.clkr.hw
   3692			},
   3693			.num_parents = 1,
   3694			.flags = CLK_SET_RATE_PARENT,
   3695			.ops = &clk_branch_simple_ops,
   3696		},
   3697	},
   3698};
   3699
   3700static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
   3701	.halt_reg = 0x7701c,
   3702	.halt_check = BRANCH_HALT_SKIP,
   3703	.clkr = {
   3704		.enable_reg = 0x7701c,
   3705		.enable_mask = BIT(0),
   3706		.hw.init = &(struct clk_init_data){
   3707			.name = "gcc_ufs_phy_rx_symbol_0_clk",
   3708			.ops = &clk_branch2_ops,
   3709		},
   3710	},
   3711};
   3712
   3713static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
   3714	.halt_reg = 0x770ac,
   3715	.halt_check = BRANCH_HALT_SKIP,
   3716	.clkr = {
   3717		.enable_reg = 0x770ac,
   3718		.enable_mask = BIT(0),
   3719		.hw.init = &(struct clk_init_data){
   3720			.name = "gcc_ufs_phy_rx_symbol_1_clk",
   3721			.ops = &clk_branch2_ops,
   3722		},
   3723	},
   3724};
   3725
   3726static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
   3727	.halt_reg = 0x77018,
   3728	.halt_check = BRANCH_HALT_SKIP,
   3729	.clkr = {
   3730		.enable_reg = 0x77018,
   3731		.enable_mask = BIT(0),
   3732		.hw.init = &(struct clk_init_data){
   3733			.name = "gcc_ufs_phy_tx_symbol_0_clk",
   3734			.ops = &clk_branch2_ops,
   3735		},
   3736	},
   3737};
   3738
   3739static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
   3740	.halt_reg = 0x77058,
   3741	.halt_check = BRANCH_HALT,
   3742	.hwcg_reg = 0x77058,
   3743	.hwcg_bit = 1,
   3744	.clkr = {
   3745		.enable_reg = 0x77058,
   3746		.enable_mask = BIT(0),
   3747		.hw.init = &(struct clk_init_data){
   3748			.name = "gcc_ufs_phy_unipro_core_clk",
   3749			.parent_hws = (const struct clk_hw *[]){
   3750				      &gcc_ufs_phy_unipro_core_clk_src.clkr.hw
   3751			},
   3752			.num_parents = 1,
   3753			.flags = CLK_SET_RATE_PARENT,
   3754			.ops = &clk_branch2_ops,
   3755		},
   3756	},
   3757};
   3758
   3759static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk = {
   3760	.halt_reg = 0x77058,
   3761	.halt_check = BRANCH_HALT,
   3762	.hwcg_reg = 0x77058,
   3763	.hwcg_bit = 1,
   3764	.clkr = {
   3765		.enable_reg = 0x77058,
   3766		.enable_mask = BIT(1),
   3767		.hw.init = &(struct clk_init_data){
   3768			.name = "gcc_ufs_phy_unipro_core_hw_ctl_clk",
   3769			.parent_hws = (const struct clk_hw *[]){
   3770				      &gcc_ufs_phy_unipro_core_clk.clkr.hw
   3771			},
   3772			.num_parents = 1,
   3773			.flags = CLK_SET_RATE_PARENT,
   3774			.ops = &clk_branch_simple_ops,
   3775		},
   3776	},
   3777};
   3778
   3779static struct clk_branch gcc_usb30_mp_master_clk = {
   3780	.halt_reg = 0xa6010,
   3781	.halt_check = BRANCH_HALT,
   3782	.clkr = {
   3783		.enable_reg = 0xa6010,
   3784		.enable_mask = BIT(0),
   3785		.hw.init = &(struct clk_init_data){
   3786			.name = "gcc_usb30_mp_master_clk",
   3787			.parent_hws = (const struct clk_hw *[]){
   3788				      &gcc_usb30_mp_master_clk_src.clkr.hw },
   3789			.num_parents = 1,
   3790			.flags = CLK_SET_RATE_PARENT,
   3791			.ops = &clk_branch2_ops,
   3792		},
   3793	},
   3794};
   3795
   3796static struct clk_branch gcc_usb30_mp_mock_utmi_clk = {
   3797	.halt_reg = 0xa6018,
   3798	.halt_check = BRANCH_HALT,
   3799	.clkr = {
   3800		.enable_reg = 0xa6018,
   3801		.enable_mask = BIT(0),
   3802		.hw.init = &(struct clk_init_data){
   3803			.name = "gcc_usb30_mp_mock_utmi_clk",
   3804			.parent_hws = (const struct clk_hw *[]){
   3805				      &gcc_usb30_mp_mock_utmi_clk_src.clkr.hw
   3806			},
   3807			.num_parents = 1,
   3808			.flags = CLK_SET_RATE_PARENT,
   3809			.ops = &clk_branch2_ops,
   3810		},
   3811	},
   3812};
   3813
   3814static struct clk_branch gcc_usb30_mp_sleep_clk = {
   3815	.halt_reg = 0xa6014,
   3816	.halt_check = BRANCH_HALT,
   3817	.clkr = {
   3818		.enable_reg = 0xa6014,
   3819		.enable_mask = BIT(0),
   3820		.hw.init = &(struct clk_init_data){
   3821			.name = "gcc_usb30_mp_sleep_clk",
   3822			.ops = &clk_branch2_ops,
   3823		},
   3824	},
   3825};
   3826
   3827static struct clk_branch gcc_usb30_prim_master_clk = {
   3828	.halt_reg = 0xf010,
   3829	.halt_check = BRANCH_HALT,
   3830	.clkr = {
   3831		.enable_reg = 0xf010,
   3832		.enable_mask = BIT(0),
   3833		.hw.init = &(struct clk_init_data){
   3834			.name = "gcc_usb30_prim_master_clk",
   3835			.parent_hws = (const struct clk_hw *[]){
   3836				      &gcc_usb30_prim_master_clk_src.clkr.hw },
   3837			.num_parents = 1,
   3838			.flags = CLK_SET_RATE_PARENT,
   3839			.ops = &clk_branch2_ops,
   3840		},
   3841	},
   3842};
   3843
   3844static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
   3845	.halt_reg = 0xf018,
   3846	.halt_check = BRANCH_HALT,
   3847	.clkr = {
   3848		.enable_reg = 0xf018,
   3849		.enable_mask = BIT(0),
   3850		.hw.init = &(struct clk_init_data){
   3851			.name = "gcc_usb30_prim_mock_utmi_clk",
   3852			.parent_hws = (const struct clk_hw *[]){
   3853				      &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw
   3854			},
   3855			.num_parents = 1,
   3856			.flags = CLK_SET_RATE_PARENT,
   3857			.ops = &clk_branch2_ops,
   3858		},
   3859	},
   3860};
   3861
   3862static struct clk_branch gcc_usb30_prim_sleep_clk = {
   3863	.halt_reg = 0xf014,
   3864	.halt_check = BRANCH_HALT,
   3865	.clkr = {
   3866		.enable_reg = 0xf014,
   3867		.enable_mask = BIT(0),
   3868		.hw.init = &(struct clk_init_data){
   3869			.name = "gcc_usb30_prim_sleep_clk",
   3870			.ops = &clk_branch2_ops,
   3871		},
   3872	},
   3873};
   3874
   3875static struct clk_branch gcc_usb30_sec_master_clk = {
   3876	.halt_reg = 0x10010,
   3877	.halt_check = BRANCH_HALT,
   3878	.clkr = {
   3879		.enable_reg = 0x10010,
   3880		.enable_mask = BIT(0),
   3881		.hw.init = &(struct clk_init_data){
   3882			.name = "gcc_usb30_sec_master_clk",
   3883			.parent_hws = (const struct clk_hw *[]){
   3884				      &gcc_usb30_sec_master_clk_src.clkr.hw },
   3885			.num_parents = 1,
   3886			.flags = CLK_SET_RATE_PARENT,
   3887			.ops = &clk_branch2_ops,
   3888		},
   3889	},
   3890};
   3891
   3892static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {
   3893	.halt_reg = 0x10018,
   3894	.halt_check = BRANCH_HALT,
   3895	.clkr = {
   3896		.enable_reg = 0x10018,
   3897		.enable_mask = BIT(0),
   3898		.hw.init = &(struct clk_init_data){
   3899			.name = "gcc_usb30_sec_mock_utmi_clk",
   3900			.parent_hws = (const struct clk_hw *[]){
   3901				      &gcc_usb30_sec_mock_utmi_clk_src.clkr.hw
   3902			},
   3903			.num_parents = 1,
   3904			.flags = CLK_SET_RATE_PARENT,
   3905			.ops = &clk_branch2_ops,
   3906		},
   3907	},
   3908};
   3909
   3910static struct clk_branch gcc_usb30_sec_sleep_clk = {
   3911	.halt_reg = 0x10014,
   3912	.halt_check = BRANCH_HALT,
   3913	.clkr = {
   3914		.enable_reg = 0x10014,
   3915		.enable_mask = BIT(0),
   3916		.hw.init = &(struct clk_init_data){
   3917			.name = "gcc_usb30_sec_sleep_clk",
   3918			.ops = &clk_branch2_ops,
   3919		},
   3920	},
   3921};
   3922
   3923static struct clk_branch gcc_usb3_mp_phy_aux_clk = {
   3924	.halt_reg = 0xa6050,
   3925	.halt_check = BRANCH_HALT,
   3926	.clkr = {
   3927		.enable_reg = 0xa6050,
   3928		.enable_mask = BIT(0),
   3929		.hw.init = &(struct clk_init_data){
   3930			.name = "gcc_usb3_mp_phy_aux_clk",
   3931			.parent_hws = (const struct clk_hw *[]){
   3932				      &gcc_usb3_mp_phy_aux_clk_src.clkr.hw
   3933			},
   3934			.num_parents = 1,
   3935			.flags = CLK_SET_RATE_PARENT,
   3936			.ops = &clk_branch2_ops,
   3937		},
   3938	},
   3939};
   3940
   3941static struct clk_branch gcc_usb3_mp_phy_com_aux_clk = {
   3942	.halt_reg = 0xa6054,
   3943	.halt_check = BRANCH_HALT,
   3944	.clkr = {
   3945		.enable_reg = 0xa6054,
   3946		.enable_mask = BIT(0),
   3947		.hw.init = &(struct clk_init_data){
   3948			.name = "gcc_usb3_mp_phy_com_aux_clk",
   3949			.parent_hws = (const struct clk_hw *[]){
   3950				      &gcc_usb3_mp_phy_aux_clk_src.clkr.hw
   3951			},
   3952			.num_parents = 1,
   3953			.flags = CLK_SET_RATE_PARENT,
   3954			.ops = &clk_branch2_ops,
   3955		},
   3956	},
   3957};
   3958
   3959static struct clk_branch gcc_usb3_mp_phy_pipe_0_clk = {
   3960	.halt_reg = 0xa6058,
   3961	.halt_check = BRANCH_HALT_SKIP,
   3962	.clkr = {
   3963		.enable_reg = 0xa6058,
   3964		.enable_mask = BIT(0),
   3965		.hw.init = &(struct clk_init_data){
   3966			.name = "gcc_usb3_mp_phy_pipe_0_clk",
   3967			.ops = &clk_branch2_ops,
   3968		},
   3969	},
   3970};
   3971
   3972static struct clk_branch gcc_usb3_mp_phy_pipe_1_clk = {
   3973	.halt_reg = 0xa605c,
   3974	.halt_check = BRANCH_HALT_SKIP,
   3975	.clkr = {
   3976		.enable_reg = 0xa605c,
   3977		.enable_mask = BIT(0),
   3978		.hw.init = &(struct clk_init_data){
   3979			.name = "gcc_usb3_mp_phy_pipe_1_clk",
   3980			.ops = &clk_branch2_ops,
   3981		},
   3982	},
   3983};
   3984
   3985static struct clk_branch gcc_usb3_prim_clkref_clk = {
   3986	.halt_reg = 0x8c008,
   3987	.halt_check = BRANCH_HALT,
   3988	.clkr = {
   3989		.enable_reg = 0x8c008,
   3990		.enable_mask = BIT(0),
   3991		.hw.init = &(struct clk_init_data){
   3992			.name = "gcc_usb3_prim_clkref_clk",
   3993			.ops = &clk_branch2_ops,
   3994		},
   3995	},
   3996};
   3997
   3998static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
   3999	.halt_reg = 0xf050,
   4000	.halt_check = BRANCH_HALT,
   4001	.clkr = {
   4002		.enable_reg = 0xf050,
   4003		.enable_mask = BIT(0),
   4004		.hw.init = &(struct clk_init_data){
   4005			.name = "gcc_usb3_prim_phy_aux_clk",
   4006			.parent_hws = (const struct clk_hw *[]){
   4007				      &gcc_usb3_prim_phy_aux_clk_src.clkr.hw
   4008			},
   4009			.num_parents = 1,
   4010			.flags = CLK_SET_RATE_PARENT,
   4011			.ops = &clk_branch2_ops,
   4012		},
   4013	},
   4014};
   4015
   4016static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
   4017	.halt_reg = 0xf054,
   4018	.halt_check = BRANCH_HALT,
   4019	.clkr = {
   4020		.enable_reg = 0xf054,
   4021		.enable_mask = BIT(0),
   4022		.hw.init = &(struct clk_init_data){
   4023			.name = "gcc_usb3_prim_phy_com_aux_clk",
   4024			.parent_hws = (const struct clk_hw *[]){
   4025				      &gcc_usb3_prim_phy_aux_clk_src.clkr.hw
   4026			},
   4027			.num_parents = 1,
   4028			.flags = CLK_SET_RATE_PARENT,
   4029			.ops = &clk_branch2_ops,
   4030		},
   4031	},
   4032};
   4033
   4034static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
   4035	.halt_reg = 0xf058,
   4036	.halt_check = BRANCH_HALT_SKIP,
   4037	.clkr = {
   4038		.enable_reg = 0xf058,
   4039		.enable_mask = BIT(0),
   4040		.hw.init = &(struct clk_init_data){
   4041			.name = "gcc_usb3_prim_phy_pipe_clk",
   4042			.ops = &clk_branch2_ops,
   4043		},
   4044	},
   4045};
   4046
   4047static struct clk_branch gcc_usb3_sec_clkref_clk = {
   4048	.halt_reg = 0x8c028,
   4049	.halt_check = BRANCH_HALT,
   4050	.clkr = {
   4051		.enable_reg = 0x8c028,
   4052		.enable_mask = BIT(0),
   4053		.hw.init = &(struct clk_init_data){
   4054			.name = "gcc_usb3_sec_clkref_clk",
   4055			.ops = &clk_branch2_ops,
   4056		},
   4057	},
   4058};
   4059
   4060static struct clk_branch gcc_usb3_sec_phy_aux_clk = {
   4061	.halt_reg = 0x10050,
   4062	.halt_check = BRANCH_HALT,
   4063	.clkr = {
   4064		.enable_reg = 0x10050,
   4065		.enable_mask = BIT(0),
   4066		.hw.init = &(struct clk_init_data){
   4067			.name = "gcc_usb3_sec_phy_aux_clk",
   4068			.parent_hws = (const struct clk_hw *[]){
   4069				      &gcc_usb3_sec_phy_aux_clk_src.clkr.hw
   4070			},
   4071			.num_parents = 1,
   4072			.flags = CLK_SET_RATE_PARENT,
   4073			.ops = &clk_branch2_ops,
   4074		},
   4075	},
   4076};
   4077
   4078static struct clk_branch gcc_usb3_sec_phy_com_aux_clk = {
   4079	.halt_reg = 0x10054,
   4080	.halt_check = BRANCH_HALT,
   4081	.clkr = {
   4082		.enable_reg = 0x10054,
   4083		.enable_mask = BIT(0),
   4084		.hw.init = &(struct clk_init_data){
   4085			.name = "gcc_usb3_sec_phy_com_aux_clk",
   4086			.parent_hws = (const struct clk_hw *[]){
   4087				      &gcc_usb3_sec_phy_aux_clk_src.clkr.hw
   4088			},
   4089			.num_parents = 1,
   4090			.flags = CLK_SET_RATE_PARENT,
   4091			.ops = &clk_branch2_ops,
   4092		},
   4093	},
   4094};
   4095
   4096static struct clk_branch gcc_usb3_sec_phy_pipe_clk = {
   4097	.halt_reg = 0x10058,
   4098	.halt_check = BRANCH_HALT_SKIP,
   4099	.clkr = {
   4100		.enable_reg = 0x10058,
   4101		.enable_mask = BIT(0),
   4102		.hw.init = &(struct clk_init_data){
   4103			.name = "gcc_usb3_sec_phy_pipe_clk",
   4104			.ops = &clk_branch2_ops,
   4105		},
   4106	},
   4107};
   4108
   4109static struct clk_branch gcc_video_axi0_clk = {
   4110	.halt_reg = 0xb024,
   4111	.halt_check = BRANCH_HALT,
   4112	.clkr = {
   4113		.enable_reg = 0xb024,
   4114		.enable_mask = BIT(0),
   4115		.hw.init = &(struct clk_init_data){
   4116			.name = "gcc_video_axi0_clk",
   4117			.ops = &clk_branch2_ops,
   4118		},
   4119	},
   4120};
   4121
   4122static struct clk_branch gcc_video_axi1_clk = {
   4123	.halt_reg = 0xb028,
   4124	.halt_check = BRANCH_HALT,
   4125	.clkr = {
   4126		.enable_reg = 0xb028,
   4127		.enable_mask = BIT(0),
   4128		.hw.init = &(struct clk_init_data){
   4129			.name = "gcc_video_axi1_clk",
   4130			.ops = &clk_branch2_ops,
   4131		},
   4132	},
   4133};
   4134
   4135static struct clk_branch gcc_video_axic_clk = {
   4136	.halt_reg = 0xb02c,
   4137	.halt_check = BRANCH_HALT,
   4138	.clkr = {
   4139		.enable_reg = 0xb02c,
   4140		.enable_mask = BIT(0),
   4141		.hw.init = &(struct clk_init_data){
   4142			.name = "gcc_video_axic_clk",
   4143			.ops = &clk_branch2_ops,
   4144		},
   4145	},
   4146};
   4147
   4148static struct gdsc usb30_sec_gdsc = {
   4149	.gdscr = 0x10004,
   4150	.pd = {
   4151		.name = "usb30_sec_gdsc",
   4152	},
   4153	.pwrsts = PWRSTS_OFF_ON,
   4154	.flags = POLL_CFG_GDSCR,
   4155};
   4156
   4157static struct gdsc emac_gdsc = {
   4158	.gdscr = 0x6004,
   4159	.pd = {
   4160		.name = "emac_gdsc",
   4161	},
   4162	.pwrsts = PWRSTS_OFF_ON,
   4163	.flags = POLL_CFG_GDSCR,
   4164};
   4165
   4166static struct gdsc usb30_prim_gdsc = {
   4167	.gdscr = 0xf004,
   4168	.pd = {
   4169		.name = "usb30_prim_gdsc",
   4170	},
   4171	.pwrsts = PWRSTS_OFF_ON,
   4172	.flags = POLL_CFG_GDSCR,
   4173};
   4174
   4175static struct gdsc pcie_0_gdsc = {
   4176	.gdscr = 0x6b004,
   4177	.pd = {
   4178		.name = "pcie_0_gdsc",
   4179	},
   4180	.pwrsts = PWRSTS_OFF_ON,
   4181	.flags = POLL_CFG_GDSCR,
   4182};
   4183
   4184static struct gdsc ufs_card_gdsc = {
   4185	.gdscr = 0x75004,
   4186	.pd = {
   4187		.name = "ufs_card_gdsc",
   4188	},
   4189	.pwrsts = PWRSTS_OFF_ON,
   4190	.flags = POLL_CFG_GDSCR,
   4191};
   4192
   4193static struct gdsc ufs_phy_gdsc = {
   4194	.gdscr = 0x77004,
   4195	.pd = {
   4196		.name = "ufs_phy_gdsc",
   4197	},
   4198	.pwrsts = PWRSTS_OFF_ON,
   4199	.flags = POLL_CFG_GDSCR,
   4200};
   4201
   4202static struct gdsc pcie_1_gdsc = {
   4203	.gdscr = 0x8d004,
   4204	.pd = {
   4205		.name = "pcie_1_gdsc",
   4206	},
   4207	.pwrsts = PWRSTS_OFF_ON,
   4208	.flags = POLL_CFG_GDSCR,
   4209};
   4210
   4211static struct gdsc pcie_2_gdsc = {
   4212	.gdscr = 0x9d004,
   4213	.pd = {
   4214		.name = "pcie_2_gdsc",
   4215	},
   4216	.pwrsts = PWRSTS_OFF_ON,
   4217	.flags = POLL_CFG_GDSCR,
   4218};
   4219
   4220static struct gdsc ufs_card_2_gdsc = {
   4221	.gdscr = 0xa2004,
   4222	.pd = {
   4223		.name = "ufs_card_2_gdsc",
   4224	},
   4225	.pwrsts = PWRSTS_OFF_ON,
   4226	.flags = POLL_CFG_GDSCR,
   4227};
   4228
   4229static struct gdsc pcie_3_gdsc = {
   4230	.gdscr = 0xa3004,
   4231	.pd = {
   4232		.name = "pcie_3_gdsc",
   4233	},
   4234	.pwrsts = PWRSTS_OFF_ON,
   4235	.flags = POLL_CFG_GDSCR,
   4236};
   4237
   4238static struct gdsc usb30_mp_gdsc = {
   4239	.gdscr = 0xa6004,
   4240	.pd = {
   4241		.name = "usb30_mp_gdsc",
   4242	},
   4243	.pwrsts = PWRSTS_OFF_ON,
   4244	.flags = POLL_CFG_GDSCR,
   4245};
   4246
   4247static struct clk_regmap *gcc_sc8180x_clocks[] = {
   4248	[GCC_AGGRE_NOC_PCIE_TBU_CLK] = &gcc_aggre_noc_pcie_tbu_clk.clkr,
   4249	[GCC_AGGRE_UFS_CARD_AXI_CLK] = &gcc_aggre_ufs_card_axi_clk.clkr,
   4250	[GCC_AGGRE_UFS_CARD_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_card_axi_hw_ctl_clk.clkr,
   4251	[GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
   4252	[GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_phy_axi_hw_ctl_clk.clkr,
   4253	[GCC_AGGRE_USB3_MP_AXI_CLK] = &gcc_aggre_usb3_mp_axi_clk.clkr,
   4254	[GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
   4255	[GCC_AGGRE_USB3_SEC_AXI_CLK] = &gcc_aggre_usb3_sec_axi_clk.clkr,
   4256	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
   4257	[GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
   4258	[GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
   4259	[GCC_CFG_NOC_USB3_MP_AXI_CLK] = &gcc_cfg_noc_usb3_mp_axi_clk.clkr,
   4260	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
   4261	[GCC_CFG_NOC_USB3_SEC_AXI_CLK] = &gcc_cfg_noc_usb3_sec_axi_clk.clkr,
   4262	[GCC_CPUSS_AHB_CLK] = &gcc_cpuss_ahb_clk.clkr,
   4263	[GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr,
   4264	[GCC_CPUSS_RBCPR_CLK] = &gcc_cpuss_rbcpr_clk.clkr,
   4265	[GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
   4266	[GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
   4267	[GCC_DISP_SF_AXI_CLK] = &gcc_disp_sf_axi_clk.clkr,
   4268	[GCC_EMAC_AXI_CLK] = &gcc_emac_axi_clk.clkr,
   4269	[GCC_EMAC_PTP_CLK] = &gcc_emac_ptp_clk.clkr,
   4270	[GCC_EMAC_PTP_CLK_SRC] = &gcc_emac_ptp_clk_src.clkr,
   4271	[GCC_EMAC_RGMII_CLK] = &gcc_emac_rgmii_clk.clkr,
   4272	[GCC_EMAC_RGMII_CLK_SRC] = &gcc_emac_rgmii_clk_src.clkr,
   4273	[GCC_EMAC_SLV_AHB_CLK] = &gcc_emac_slv_ahb_clk.clkr,
   4274	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
   4275	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
   4276	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
   4277	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
   4278	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
   4279	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
   4280	[GCC_GP4_CLK] = &gcc_gp4_clk.clkr,
   4281	[GCC_GP4_CLK_SRC] = &gcc_gp4_clk_src.clkr,
   4282	[GCC_GP5_CLK] = &gcc_gp5_clk.clkr,
   4283	[GCC_GP5_CLK_SRC] = &gcc_gp5_clk_src.clkr,
   4284	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
   4285	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
   4286	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
   4287	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
   4288	[GCC_NPU_AT_CLK] = &gcc_npu_at_clk.clkr,
   4289	[GCC_NPU_AXI_CLK] = &gcc_npu_axi_clk.clkr,
   4290	[GCC_NPU_AXI_CLK_SRC] = &gcc_npu_axi_clk_src.clkr,
   4291	[GCC_NPU_GPLL0_CLK_SRC] = &gcc_npu_gpll0_clk_src.clkr,
   4292	[GCC_NPU_GPLL0_DIV_CLK_SRC] = &gcc_npu_gpll0_div_clk_src.clkr,
   4293	[GCC_NPU_TRIG_CLK] = &gcc_npu_trig_clk.clkr,
   4294	[GCC_PCIE0_PHY_REFGEN_CLK] = &gcc_pcie0_phy_refgen_clk.clkr,
   4295	[GCC_PCIE1_PHY_REFGEN_CLK] = &gcc_pcie1_phy_refgen_clk.clkr,
   4296	[GCC_PCIE2_PHY_REFGEN_CLK] = &gcc_pcie2_phy_refgen_clk.clkr,
   4297	[GCC_PCIE3_PHY_REFGEN_CLK] = &gcc_pcie3_phy_refgen_clk.clkr,
   4298	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
   4299	[GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
   4300	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
   4301	[GCC_PCIE_0_CLKREF_CLK] = &gcc_pcie_0_clkref_clk.clkr,
   4302	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
   4303	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
   4304	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
   4305	[GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
   4306	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
   4307	[GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
   4308	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
   4309	[GCC_PCIE_1_CLKREF_CLK] = &gcc_pcie_1_clkref_clk.clkr,
   4310	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
   4311	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
   4312	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
   4313	[GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
   4314	[GCC_PCIE_2_AUX_CLK] = &gcc_pcie_2_aux_clk.clkr,
   4315	[GCC_PCIE_2_AUX_CLK_SRC] = &gcc_pcie_2_aux_clk_src.clkr,
   4316	[GCC_PCIE_2_CFG_AHB_CLK] = &gcc_pcie_2_cfg_ahb_clk.clkr,
   4317	[GCC_PCIE_2_CLKREF_CLK] = &gcc_pcie_2_clkref_clk.clkr,
   4318	[GCC_PCIE_2_MSTR_AXI_CLK] = &gcc_pcie_2_mstr_axi_clk.clkr,
   4319	[GCC_PCIE_2_PIPE_CLK] = &gcc_pcie_2_pipe_clk.clkr,
   4320	[GCC_PCIE_2_SLV_AXI_CLK] = &gcc_pcie_2_slv_axi_clk.clkr,
   4321	[GCC_PCIE_2_SLV_Q2A_AXI_CLK] = &gcc_pcie_2_slv_q2a_axi_clk.clkr,
   4322	[GCC_PCIE_3_AUX_CLK] = &gcc_pcie_3_aux_clk.clkr,
   4323	[GCC_PCIE_3_AUX_CLK_SRC] = &gcc_pcie_3_aux_clk_src.clkr,
   4324	[GCC_PCIE_3_CFG_AHB_CLK] = &gcc_pcie_3_cfg_ahb_clk.clkr,
   4325	[GCC_PCIE_3_CLKREF_CLK] = &gcc_pcie_3_clkref_clk.clkr,
   4326	[GCC_PCIE_3_MSTR_AXI_CLK] = &gcc_pcie_3_mstr_axi_clk.clkr,
   4327	[GCC_PCIE_3_PIPE_CLK] = &gcc_pcie_3_pipe_clk.clkr,
   4328	[GCC_PCIE_3_SLV_AXI_CLK] = &gcc_pcie_3_slv_axi_clk.clkr,
   4329	[GCC_PCIE_3_SLV_Q2A_AXI_CLK] = &gcc_pcie_3_slv_q2a_axi_clk.clkr,
   4330	[GCC_PCIE_PHY_AUX_CLK] = &gcc_pcie_phy_aux_clk.clkr,
   4331	[GCC_PCIE_PHY_REFGEN_CLK_SRC] = &gcc_pcie_phy_refgen_clk_src.clkr,
   4332	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
   4333	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
   4334	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
   4335	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
   4336	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
   4337	[GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
   4338	[GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
   4339	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
   4340	[GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,
   4341	[GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
   4342	[GCC_QSPI_1_CNOC_PERIPH_AHB_CLK] = &gcc_qspi_1_cnoc_periph_ahb_clk.clkr,
   4343	[GCC_QSPI_1_CORE_CLK] = &gcc_qspi_1_core_clk.clkr,
   4344	[GCC_QSPI_1_CORE_CLK_SRC] = &gcc_qspi_1_core_clk_src.clkr,
   4345	[GCC_QSPI_CNOC_PERIPH_AHB_CLK] = &gcc_qspi_cnoc_periph_ahb_clk.clkr,
   4346	[GCC_QSPI_CORE_CLK] = &gcc_qspi_core_clk.clkr,
   4347	[GCC_QSPI_CORE_CLK_SRC] = &gcc_qspi_core_clk_src.clkr,
   4348	[GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
   4349	[GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
   4350	[GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
   4351	[GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
   4352	[GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
   4353	[GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
   4354	[GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
   4355	[GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
   4356	[GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
   4357	[GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
   4358	[GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
   4359	[GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
   4360	[GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
   4361	[GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
   4362	[GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
   4363	[GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
   4364	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
   4365	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
   4366	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
   4367	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
   4368	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
   4369	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
   4370	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
   4371	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
   4372	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
   4373	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
   4374	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
   4375	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
   4376	[GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,
   4377	[GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,
   4378	[GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,
   4379	[GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,
   4380	[GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,
   4381	[GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,
   4382	[GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,
   4383	[GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,
   4384	[GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,
   4385	[GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,
   4386	[GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,
   4387	[GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,
   4388	[GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
   4389	[GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
   4390	[GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
   4391	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
   4392	[GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,
   4393	[GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,
   4394	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
   4395	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
   4396	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
   4397	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
   4398	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
   4399	[GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
   4400	[GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,
   4401	[GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
   4402	[GCC_TSIF_INACTIVITY_TIMERS_CLK] = &gcc_tsif_inactivity_timers_clk.clkr,
   4403	[GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
   4404	[GCC_TSIF_REF_CLK_SRC] = &gcc_tsif_ref_clk_src.clkr,
   4405	[GCC_UFS_CARD_2_AHB_CLK] = &gcc_ufs_card_2_ahb_clk.clkr,
   4406	[GCC_UFS_CARD_2_AXI_CLK] = &gcc_ufs_card_2_axi_clk.clkr,
   4407	[GCC_UFS_CARD_2_AXI_CLK_SRC] = &gcc_ufs_card_2_axi_clk_src.clkr,
   4408	[GCC_UFS_CARD_2_ICE_CORE_CLK] = &gcc_ufs_card_2_ice_core_clk.clkr,
   4409	[GCC_UFS_CARD_2_ICE_CORE_CLK_SRC] = &gcc_ufs_card_2_ice_core_clk_src.clkr,
   4410	[GCC_UFS_CARD_2_PHY_AUX_CLK] = &gcc_ufs_card_2_phy_aux_clk.clkr,
   4411	[GCC_UFS_CARD_2_PHY_AUX_CLK_SRC] = &gcc_ufs_card_2_phy_aux_clk_src.clkr,
   4412	[GCC_UFS_CARD_2_RX_SYMBOL_0_CLK] = &gcc_ufs_card_2_rx_symbol_0_clk.clkr,
   4413	[GCC_UFS_CARD_2_RX_SYMBOL_1_CLK] = &gcc_ufs_card_2_rx_symbol_1_clk.clkr,
   4414	[GCC_UFS_CARD_2_TX_SYMBOL_0_CLK] = &gcc_ufs_card_2_tx_symbol_0_clk.clkr,
   4415	[GCC_UFS_CARD_2_UNIPRO_CORE_CLK] = &gcc_ufs_card_2_unipro_core_clk.clkr,
   4416	[GCC_UFS_CARD_2_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_card_2_unipro_core_clk_src.clkr,
   4417	[GCC_UFS_CARD_AHB_CLK] = &gcc_ufs_card_ahb_clk.clkr,
   4418	[GCC_UFS_CARD_AXI_CLK] = &gcc_ufs_card_axi_clk.clkr,
   4419	[GCC_UFS_CARD_AXI_CLK_SRC] = &gcc_ufs_card_axi_clk_src.clkr,
   4420	[GCC_UFS_CARD_AXI_HW_CTL_CLK] = &gcc_ufs_card_axi_hw_ctl_clk.clkr,
   4421	[GCC_UFS_CARD_ICE_CORE_CLK] = &gcc_ufs_card_ice_core_clk.clkr,
   4422	[GCC_UFS_CARD_ICE_CORE_CLK_SRC] = &gcc_ufs_card_ice_core_clk_src.clkr,
   4423	[GCC_UFS_CARD_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_card_ice_core_hw_ctl_clk.clkr,
   4424	[GCC_UFS_CARD_PHY_AUX_CLK] = &gcc_ufs_card_phy_aux_clk.clkr,
   4425	[GCC_UFS_CARD_PHY_AUX_CLK_SRC] = &gcc_ufs_card_phy_aux_clk_src.clkr,
   4426	[GCC_UFS_CARD_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_card_phy_aux_hw_ctl_clk.clkr,
   4427	[GCC_UFS_CARD_RX_SYMBOL_0_CLK] = &gcc_ufs_card_rx_symbol_0_clk.clkr,
   4428	[GCC_UFS_CARD_RX_SYMBOL_1_CLK] = &gcc_ufs_card_rx_symbol_1_clk.clkr,
   4429	[GCC_UFS_CARD_TX_SYMBOL_0_CLK] = &gcc_ufs_card_tx_symbol_0_clk.clkr,
   4430	[GCC_UFS_CARD_UNIPRO_CORE_CLK] = &gcc_ufs_card_unipro_core_clk.clkr,
   4431	[GCC_UFS_CARD_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_card_unipro_core_clk_src.clkr,
   4432	[GCC_UFS_CARD_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_card_unipro_core_hw_ctl_clk.clkr,
   4433	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
   4434	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
   4435	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
   4436	[GCC_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_ufs_phy_axi_hw_ctl_clk.clkr,
   4437	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
   4438	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
   4439	[GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_phy_ice_core_hw_ctl_clk.clkr,
   4440	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
   4441	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
   4442	[GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_phy_phy_aux_hw_ctl_clk.clkr,
   4443	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
   4444	[GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
   4445	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
   4446	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
   4447	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,
   4448	[GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_phy_unipro_core_hw_ctl_clk.clkr,
   4449	[GCC_USB30_MP_MASTER_CLK] = &gcc_usb30_mp_master_clk.clkr,
   4450	[GCC_USB30_MP_MASTER_CLK_SRC] = &gcc_usb30_mp_master_clk_src.clkr,
   4451	[GCC_USB30_MP_MOCK_UTMI_CLK] = &gcc_usb30_mp_mock_utmi_clk.clkr,
   4452	[GCC_USB30_MP_MOCK_UTMI_CLK_SRC] = &gcc_usb30_mp_mock_utmi_clk_src.clkr,
   4453	[GCC_USB30_MP_SLEEP_CLK] = &gcc_usb30_mp_sleep_clk.clkr,
   4454	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
   4455	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
   4456	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
   4457	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,
   4458	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
   4459	[GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,
   4460	[GCC_USB30_SEC_MASTER_CLK_SRC] = &gcc_usb30_sec_master_clk_src.clkr,
   4461	[GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,
   4462	[GCC_USB30_SEC_MOCK_UTMI_CLK_SRC] = &gcc_usb30_sec_mock_utmi_clk_src.clkr,
   4463	[GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,
   4464	[GCC_USB3_MP_PHY_AUX_CLK] = &gcc_usb3_mp_phy_aux_clk.clkr,
   4465	[GCC_USB3_MP_PHY_AUX_CLK_SRC] = &gcc_usb3_mp_phy_aux_clk_src.clkr,
   4466	[GCC_USB3_MP_PHY_COM_AUX_CLK] = &gcc_usb3_mp_phy_com_aux_clk.clkr,
   4467	[GCC_USB3_MP_PHY_PIPE_0_CLK] = &gcc_usb3_mp_phy_pipe_0_clk.clkr,
   4468	[GCC_USB3_MP_PHY_PIPE_1_CLK] = &gcc_usb3_mp_phy_pipe_1_clk.clkr,
   4469	[GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,
   4470	[GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
   4471	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
   4472	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
   4473	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
   4474	[GCC_USB3_SEC_CLKREF_CLK] = &gcc_usb3_sec_clkref_clk.clkr,
   4475	[GCC_USB3_SEC_PHY_AUX_CLK] = &gcc_usb3_sec_phy_aux_clk.clkr,
   4476	[GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &gcc_usb3_sec_phy_aux_clk_src.clkr,
   4477	[GCC_USB3_SEC_PHY_COM_AUX_CLK] = &gcc_usb3_sec_phy_com_aux_clk.clkr,
   4478	[GCC_USB3_SEC_PHY_PIPE_CLK] = &gcc_usb3_sec_phy_pipe_clk.clkr,
   4479	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
   4480	[GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,
   4481	[GCC_VIDEO_AXIC_CLK] = &gcc_video_axic_clk.clkr,
   4482	[GPLL0] = &gpll0.clkr,
   4483	[GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,
   4484	[GPLL1] = &gpll1.clkr,
   4485	[GPLL4] = &gpll4.clkr,
   4486	[GPLL7] = &gpll7.clkr,
   4487};
   4488
   4489static const struct qcom_reset_map gcc_sc8180x_resets[] = {
   4490	[GCC_EMAC_BCR] = { 0x6000 },
   4491	[GCC_GPU_BCR] = { 0x71000 },
   4492	[GCC_MMSS_BCR] = { 0xb000 },
   4493	[GCC_NPU_BCR] = { 0x4d000 },
   4494	[GCC_PCIE_0_BCR] = { 0x6b000 },
   4495	[GCC_PCIE_0_PHY_BCR] = { 0x6c01c },
   4496	[GCC_PCIE_1_BCR] = { 0x8d000 },
   4497	[GCC_PCIE_1_PHY_BCR] = { 0x8e01c },
   4498	[GCC_PCIE_2_BCR] = { 0x9d000 },
   4499	[GCC_PCIE_2_PHY_BCR] = { 0xa701c },
   4500	[GCC_PCIE_3_BCR] = { 0xa3000 },
   4501	[GCC_PCIE_3_PHY_BCR] = { 0xa801c },
   4502	[GCC_PCIE_PHY_BCR] = { 0x6f000 },
   4503	[GCC_PDM_BCR] = { 0x33000 },
   4504	[GCC_PRNG_BCR] = { 0x34000 },
   4505	[GCC_QSPI_1_BCR] = { 0x4a000 },
   4506	[GCC_QSPI_BCR] = { 0x24008 },
   4507	[GCC_QUPV3_WRAPPER_0_BCR] = { 0x17000 },
   4508	[GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 },
   4509	[GCC_QUPV3_WRAPPER_2_BCR] = { 0x1e000 },
   4510	[GCC_QUSB2PHY_5_BCR] = { 0x12010 },
   4511	[GCC_QUSB2PHY_MP0_BCR] = { 0x12008 },
   4512	[GCC_QUSB2PHY_MP1_BCR] = { 0x1200c },
   4513	[GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
   4514	[GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
   4515	[GCC_USB3_PHY_PRIM_SP0_BCR] = { 0x50000 },
   4516	[GCC_USB3_PHY_PRIM_SP1_BCR] = { 0x50004 },
   4517	[GCC_USB3_DP_PHY_PRIM_SP0_BCR] = { 0x50010 },
   4518	[GCC_USB3_DP_PHY_PRIM_SP1_BCR] = { 0x50014 },
   4519	[GCC_USB3_PHY_SEC_BCR] = { 0x50018 },
   4520	[GCC_USB3PHY_PHY_SEC_BCR] = { 0x5001c },
   4521	[GCC_USB3_DP_PHY_SEC_BCR] = { 0x50020 },
   4522	[GCC_SDCC2_BCR] = { 0x14000 },
   4523	[GCC_SDCC4_BCR] = { 0x16000 },
   4524	[GCC_TSIF_BCR] = { 0x36000 },
   4525	[GCC_UFS_CARD_2_BCR] = { 0xa2000 },
   4526	[GCC_UFS_CARD_BCR] = { 0x75000 },
   4527	[GCC_UFS_PHY_BCR] = { 0x77000 },
   4528	[GCC_USB30_MP_BCR] = { 0xa6000 },
   4529	[GCC_USB30_PRIM_BCR] = { 0xf000 },
   4530	[GCC_USB30_SEC_BCR] = { 0x10000 },
   4531	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 },
   4532	[GCC_VIDEO_AXIC_CLK_BCR] = { 0xb02c, 2 },
   4533	[GCC_VIDEO_AXI0_CLK_BCR] = { 0xb024, 2 },
   4534	[GCC_VIDEO_AXI1_CLK_BCR] = { 0xb028, 2 },
   4535};
   4536
   4537static struct gdsc *gcc_sc8180x_gdscs[] = {
   4538	[EMAC_GDSC] = &emac_gdsc,
   4539	[PCIE_0_GDSC] = &pcie_0_gdsc,
   4540	[PCIE_1_GDSC] = &pcie_1_gdsc,
   4541	[PCIE_2_GDSC] = &pcie_2_gdsc,
   4542	[PCIE_3_GDSC] = &pcie_3_gdsc,
   4543	[UFS_CARD_GDSC] = &ufs_card_gdsc,
   4544	[UFS_CARD_2_GDSC] = &ufs_card_2_gdsc,
   4545	[UFS_PHY_GDSC] = &ufs_phy_gdsc,
   4546	[USB30_MP_GDSC] = &usb30_mp_gdsc,
   4547	[USB30_PRIM_GDSC] = &usb30_prim_gdsc,
   4548	[USB30_SEC_GDSC] = &usb30_sec_gdsc,
   4549};
   4550
   4551static const struct regmap_config gcc_sc8180x_regmap_config = {
   4552	.reg_bits	= 32,
   4553	.reg_stride	= 4,
   4554	.val_bits	= 32,
   4555	.max_register	= 0xc0004,
   4556	.fast_io	= true,
   4557};
   4558
   4559static const struct qcom_cc_desc gcc_sc8180x_desc = {
   4560	.config = &gcc_sc8180x_regmap_config,
   4561	.clks = gcc_sc8180x_clocks,
   4562	.num_clks = ARRAY_SIZE(gcc_sc8180x_clocks),
   4563	.resets = gcc_sc8180x_resets,
   4564	.num_resets = ARRAY_SIZE(gcc_sc8180x_resets),
   4565	.gdscs = gcc_sc8180x_gdscs,
   4566	.num_gdscs = ARRAY_SIZE(gcc_sc8180x_gdscs),
   4567};
   4568
   4569static const struct of_device_id gcc_sc8180x_match_table[] = {
   4570	{ .compatible = "qcom,gcc-sc8180x" },
   4571	{ }
   4572};
   4573MODULE_DEVICE_TABLE(of, gcc_sc8180x_match_table);
   4574
   4575static int gcc_sc8180x_probe(struct platform_device *pdev)
   4576{
   4577	struct regmap *regmap;
   4578
   4579	regmap = qcom_cc_map(pdev, &gcc_sc8180x_desc);
   4580	if (IS_ERR(regmap))
   4581		return PTR_ERR(regmap);
   4582
   4583	/*
   4584	 * Enable the following always-on clocks:
   4585	 * GCC_VIDEO_AHB_CLK, GCC_CAMERA_AHB_CLK, GCC_DISP_AHB_CLK,
   4586	 * GCC_VIDEO_XO_CLK, GCC_CAMERA_XO_CLK, GCC_DISP_XO_CLK,
   4587	 * GCC_CPUSS_GNOC_CLK, GCC_CPUSS_DVM_BUS_CLK, GCC_NPU_CFG_AHB_CLK and
   4588	 * GCC_GPU_CFG_AHB_CLK
   4589	 */
   4590	regmap_update_bits(regmap, 0xb004, BIT(0), BIT(0));
   4591	regmap_update_bits(regmap, 0xb008, BIT(0), BIT(0));
   4592	regmap_update_bits(regmap, 0xb00c, BIT(0), BIT(0));
   4593	regmap_update_bits(regmap, 0xb040, BIT(0), BIT(0));
   4594	regmap_update_bits(regmap, 0xb044, BIT(0), BIT(0));
   4595	regmap_update_bits(regmap, 0xb048, BIT(0), BIT(0));
   4596	regmap_update_bits(regmap, 0x48004, BIT(0), BIT(0));
   4597	regmap_update_bits(regmap, 0x48190, BIT(0), BIT(0));
   4598	regmap_update_bits(regmap, 0x4d004, BIT(0), BIT(0));
   4599	regmap_update_bits(regmap, 0x71004, BIT(0), BIT(0));
   4600
   4601	/* Disable the GPLL0 active input to NPU and GPU via MISC registers */
   4602	regmap_update_bits(regmap, 0x4d110, 0x3, 0x3);
   4603	regmap_update_bits(regmap, 0x71028, 0x3, 0x3);
   4604
   4605	return qcom_cc_really_probe(pdev, &gcc_sc8180x_desc, regmap);
   4606}
   4607
   4608static struct platform_driver gcc_sc8180x_driver = {
   4609	.probe		= gcc_sc8180x_probe,
   4610	.driver		= {
   4611		.name	= "gcc-sc8180x",
   4612		.of_match_table = gcc_sc8180x_match_table,
   4613	},
   4614};
   4615
   4616static int __init gcc_sc8180x_init(void)
   4617{
   4618	return platform_driver_register(&gcc_sc8180x_driver);
   4619}
   4620core_initcall(gcc_sc8180x_init);
   4621
   4622static void __exit gcc_sc8180x_exit(void)
   4623{
   4624	platform_driver_unregister(&gcc_sc8180x_driver);
   4625}
   4626module_exit(gcc_sc8180x_exit);
   4627
   4628MODULE_DESCRIPTION("QTI GCC SC8180x driver");
   4629MODULE_LICENSE("GPL v2");