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-ipq6018.c (123478B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Copyright (c) 2018, The Linux Foundation. All rights reserved.
      4 */
      5
      6#include <linux/kernel.h>
      7#include <linux/err.h>
      8#include <linux/platform_device.h>
      9#include <linux/module.h>
     10#include <linux/of.h>
     11#include <linux/of_device.h>
     12#include <linux/clk-provider.h>
     13#include <linux/regmap.h>
     14
     15#include <linux/reset-controller.h>
     16#include <dt-bindings/clock/qcom,gcc-ipq6018.h>
     17#include <dt-bindings/reset/qcom,gcc-ipq6018.h>
     18
     19#include "common.h"
     20#include "clk-regmap.h"
     21#include "clk-pll.h"
     22#include "clk-rcg.h"
     23#include "clk-branch.h"
     24#include "clk-alpha-pll.h"
     25#include "clk-regmap-divider.h"
     26#include "clk-regmap-mux.h"
     27#include "reset.h"
     28
     29#define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
     30
     31enum {
     32	P_XO,
     33	P_BIAS_PLL,
     34	P_UNIPHY0_RX,
     35	P_UNIPHY0_TX,
     36	P_UNIPHY1_RX,
     37	P_BIAS_PLL_NSS_NOC,
     38	P_UNIPHY1_TX,
     39	P_PCIE20_PHY0_PIPE,
     40	P_USB3PHY_0_PIPE,
     41	P_GPLL0,
     42	P_GPLL0_DIV2,
     43	P_GPLL2,
     44	P_GPLL4,
     45	P_GPLL6,
     46	P_SLEEP_CLK,
     47	P_UBI32_PLL,
     48	P_NSS_CRYPTO_PLL,
     49	P_PI_SLEEP,
     50};
     51
     52static struct clk_alpha_pll gpll0_main = {
     53	.offset = 0x21000,
     54	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
     55	.clkr = {
     56		.enable_reg = 0x0b000,
     57		.enable_mask = BIT(0),
     58		.hw.init = &(struct clk_init_data){
     59			.name = "gpll0_main",
     60			.parent_data = &(const struct clk_parent_data){
     61				.fw_name = "xo",
     62			},
     63			.num_parents = 1,
     64			.ops = &clk_alpha_pll_ops,
     65		},
     66	},
     67};
     68
     69static struct clk_fixed_factor gpll0_out_main_div2 = {
     70	.mult = 1,
     71	.div = 2,
     72	.hw.init = &(struct clk_init_data){
     73		.name = "gpll0_out_main_div2",
     74		.parent_hws = (const struct clk_hw *[]){
     75				&gpll0_main.clkr.hw },
     76		.num_parents = 1,
     77		.ops = &clk_fixed_factor_ops,
     78		.flags = CLK_SET_RATE_PARENT,
     79	},
     80};
     81
     82static struct clk_alpha_pll_postdiv gpll0 = {
     83	.offset = 0x21000,
     84	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
     85	.width = 4,
     86	.clkr.hw.init = &(struct clk_init_data){
     87		.name = "gpll0",
     88		.parent_hws = (const struct clk_hw *[]){
     89				&gpll0_main.clkr.hw },
     90		.num_parents = 1,
     91		.ops = &clk_alpha_pll_postdiv_ro_ops,
     92		.flags = CLK_SET_RATE_PARENT,
     93	},
     94};
     95
     96static const struct clk_parent_data gcc_xo_gpll0_gpll0_out_main_div2[] = {
     97	{ .fw_name = "xo" },
     98	{ .hw = &gpll0.clkr.hw},
     99	{ .hw = &gpll0_out_main_div2.hw},
    100};
    101
    102static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = {
    103	{ P_XO, 0 },
    104	{ P_GPLL0, 1 },
    105	{ P_GPLL0_DIV2, 4 },
    106};
    107
    108static struct clk_alpha_pll ubi32_pll_main = {
    109	.offset = 0x25000,
    110	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
    111	.flags = SUPPORTS_DYNAMIC_UPDATE,
    112	.clkr = {
    113		.enable_reg = 0x0b000,
    114		.enable_mask = BIT(6),
    115		.hw.init = &(struct clk_init_data){
    116			.name = "ubi32_pll_main",
    117			.parent_data = &(const struct clk_parent_data){
    118				.fw_name = "xo",
    119			},
    120			.num_parents = 1,
    121			.ops = &clk_alpha_pll_huayra_ops,
    122		},
    123	},
    124};
    125
    126static struct clk_alpha_pll_postdiv ubi32_pll = {
    127	.offset = 0x25000,
    128	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
    129	.width = 2,
    130	.clkr.hw.init = &(struct clk_init_data){
    131		.name = "ubi32_pll",
    132		.parent_hws = (const struct clk_hw *[]){
    133				&ubi32_pll_main.clkr.hw },
    134		.num_parents = 1,
    135		.ops = &clk_alpha_pll_postdiv_ro_ops,
    136		.flags = CLK_SET_RATE_PARENT,
    137	},
    138};
    139
    140static struct clk_alpha_pll gpll6_main = {
    141	.offset = 0x37000,
    142	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
    143	.clkr = {
    144		.enable_reg = 0x0b000,
    145		.enable_mask = BIT(7),
    146		.hw.init = &(struct clk_init_data){
    147			.name = "gpll6_main",
    148			.parent_data = &(const struct clk_parent_data){
    149				.fw_name = "xo",
    150			},
    151			.num_parents = 1,
    152			.ops = &clk_alpha_pll_ops,
    153		},
    154	},
    155};
    156
    157static struct clk_alpha_pll_postdiv gpll6 = {
    158	.offset = 0x37000,
    159	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
    160	.width = 2,
    161	.clkr.hw.init = &(struct clk_init_data){
    162		.name = "gpll6",
    163		.parent_hws = (const struct clk_hw *[]){
    164				&gpll6_main.clkr.hw },
    165		.num_parents = 1,
    166		.ops = &clk_alpha_pll_postdiv_ro_ops,
    167		.flags = CLK_SET_RATE_PARENT,
    168	},
    169};
    170
    171static struct clk_alpha_pll gpll4_main = {
    172	.offset = 0x24000,
    173	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
    174	.clkr = {
    175		.enable_reg = 0x0b000,
    176		.enable_mask = BIT(5),
    177		.hw.init = &(struct clk_init_data){
    178			.name = "gpll4_main",
    179			.parent_data = &(const struct clk_parent_data){
    180				.fw_name = "xo",
    181			},
    182			.num_parents = 1,
    183			.ops = &clk_alpha_pll_ops,
    184		},
    185	},
    186};
    187
    188static struct clk_alpha_pll_postdiv gpll4 = {
    189	.offset = 0x24000,
    190	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
    191	.width = 4,
    192	.clkr.hw.init = &(struct clk_init_data){
    193		.name = "gpll4",
    194		.parent_hws = (const struct clk_hw *[]){
    195				&gpll4_main.clkr.hw },
    196		.num_parents = 1,
    197		.ops = &clk_alpha_pll_postdiv_ro_ops,
    198		.flags = CLK_SET_RATE_PARENT,
    199	},
    200};
    201
    202static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src[] = {
    203	F(24000000, P_XO, 1, 0, 0),
    204	F(50000000, P_GPLL0, 16, 0, 0),
    205	F(100000000, P_GPLL0, 8, 0, 0),
    206	{ }
    207};
    208
    209static struct clk_rcg2 pcnoc_bfdcd_clk_src = {
    210	.cmd_rcgr = 0x27000,
    211	.freq_tbl = ftbl_pcnoc_bfdcd_clk_src,
    212	.hid_width = 5,
    213	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
    214	.clkr.hw.init = &(struct clk_init_data){
    215		.name = "pcnoc_bfdcd_clk_src",
    216		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
    217		.num_parents = 3,
    218		.ops = &clk_rcg2_ops,
    219	},
    220};
    221
    222static struct clk_alpha_pll gpll2_main = {
    223	.offset = 0x4a000,
    224	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
    225	.clkr = {
    226		.enable_reg = 0x0b000,
    227		.enable_mask = BIT(2),
    228		.hw.init = &(struct clk_init_data){
    229			.name = "gpll2_main",
    230			.parent_data = &(const struct clk_parent_data){
    231				.fw_name = "xo",
    232			},
    233			.num_parents = 1,
    234			.ops = &clk_alpha_pll_ops,
    235		},
    236	},
    237};
    238
    239static struct clk_alpha_pll_postdiv gpll2 = {
    240	.offset = 0x4a000,
    241	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
    242	.width = 4,
    243	.clkr.hw.init = &(struct clk_init_data){
    244		.name = "gpll2",
    245		.parent_hws = (const struct clk_hw *[]){
    246				&gpll2_main.clkr.hw },
    247		.num_parents = 1,
    248		.ops = &clk_alpha_pll_postdiv_ro_ops,
    249		.flags = CLK_SET_RATE_PARENT,
    250	},
    251};
    252
    253static struct clk_alpha_pll nss_crypto_pll_main = {
    254	.offset = 0x22000,
    255	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
    256	.clkr = {
    257		.enable_reg = 0x0b000,
    258		.enable_mask = BIT(4),
    259		.hw.init = &(struct clk_init_data){
    260			.name = "nss_crypto_pll_main",
    261			.parent_data = &(const struct clk_parent_data){
    262				.fw_name = "xo",
    263			},
    264			.num_parents = 1,
    265			.ops = &clk_alpha_pll_ops,
    266		},
    267	},
    268};
    269
    270static struct clk_alpha_pll_postdiv nss_crypto_pll = {
    271	.offset = 0x22000,
    272	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
    273	.width = 4,
    274	.clkr.hw.init = &(struct clk_init_data){
    275		.name = "nss_crypto_pll",
    276		.parent_hws = (const struct clk_hw *[]){
    277				&nss_crypto_pll_main.clkr.hw },
    278		.num_parents = 1,
    279		.ops = &clk_alpha_pll_postdiv_ro_ops,
    280		.flags = CLK_SET_RATE_PARENT,
    281	},
    282};
    283
    284static const struct freq_tbl ftbl_qdss_tsctr_clk_src[] = {
    285	F(160000000, P_GPLL0_DIV2, 2.5, 0, 0),
    286	F(320000000, P_GPLL0, 2.5, 0, 0),
    287	F(600000000, P_GPLL4, 2, 0, 0),
    288	{ }
    289};
    290
    291static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll6_gpll0_div2[] = {
    292	{ .fw_name = "xo" },
    293	{ .hw = &gpll4.clkr.hw },
    294	{ .hw = &gpll0.clkr.hw },
    295	{ .hw = &gpll6.clkr.hw },
    296	{ .hw = &gpll0_out_main_div2.hw },
    297};
    298
    299static const struct parent_map gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map[] = {
    300	{ P_XO, 0 },
    301	{ P_GPLL4, 1 },
    302	{ P_GPLL0, 2 },
    303	{ P_GPLL6, 3 },
    304	{ P_GPLL0_DIV2, 4 },
    305};
    306
    307static struct clk_rcg2 qdss_tsctr_clk_src = {
    308	.cmd_rcgr = 0x29064,
    309	.freq_tbl = ftbl_qdss_tsctr_clk_src,
    310	.hid_width = 5,
    311	.parent_map = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map,
    312	.clkr.hw.init = &(struct clk_init_data){
    313		.name = "qdss_tsctr_clk_src",
    314		.parent_data = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2,
    315		.num_parents = 5,
    316		.ops = &clk_rcg2_ops,
    317	},
    318};
    319
    320static struct clk_fixed_factor qdss_dap_sync_clk_src = {
    321	.mult = 1,
    322	.div = 4,
    323	.hw.init = &(struct clk_init_data){
    324		.name = "qdss_dap_sync_clk_src",
    325		.parent_hws = (const struct clk_hw *[]){
    326				&qdss_tsctr_clk_src.clkr.hw },
    327		.num_parents = 1,
    328		.ops = &clk_fixed_factor_ops,
    329	},
    330};
    331
    332static const struct freq_tbl ftbl_qdss_at_clk_src[] = {
    333	F(66670000, P_GPLL0_DIV2, 6, 0, 0),
    334	F(240000000, P_GPLL4, 5, 0, 0),
    335	{ }
    336};
    337
    338static struct clk_rcg2 qdss_at_clk_src = {
    339	.cmd_rcgr = 0x2900c,
    340	.freq_tbl = ftbl_qdss_at_clk_src,
    341	.hid_width = 5,
    342	.parent_map = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map,
    343	.clkr.hw.init = &(struct clk_init_data){
    344		.name = "qdss_at_clk_src",
    345		.parent_data = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2,
    346		.num_parents = 5,
    347		.ops = &clk_rcg2_ops,
    348	},
    349};
    350
    351static struct clk_fixed_factor qdss_tsctr_div2_clk_src = {
    352	.mult = 1,
    353	.div = 2,
    354	.hw.init = &(struct clk_init_data){
    355		.name = "qdss_tsctr_div2_clk_src",
    356		.parent_hws = (const struct clk_hw *[]){
    357				&qdss_tsctr_clk_src.clkr.hw },
    358		.num_parents = 1,
    359		.flags = CLK_SET_RATE_PARENT,
    360		.ops = &clk_fixed_factor_ops,
    361	},
    362};
    363
    364static const struct freq_tbl ftbl_nss_ppe_clk_src[] = {
    365	F(24000000, P_XO, 1, 0, 0),
    366	F(300000000, P_BIAS_PLL, 1, 0, 0),
    367	{ }
    368};
    369
    370static const struct clk_parent_data gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {
    371	{ .fw_name = "xo" },
    372	{ .fw_name = "bias_pll_cc_clk" },
    373	{ .hw = &gpll0.clkr.hw },
    374	{ .hw = &gpll4.clkr.hw },
    375	{ .hw = &nss_crypto_pll.clkr.hw },
    376	{ .hw = &ubi32_pll.clkr.hw },
    377};
    378
    379static const struct parent_map gcc_xo_bias_gpll0_gpll4_nss_ubi32_map[] = {
    380	{ P_XO, 0 },
    381	{ P_BIAS_PLL, 1 },
    382	{ P_GPLL0, 2 },
    383	{ P_GPLL4, 3 },
    384	{ P_NSS_CRYPTO_PLL, 4 },
    385	{ P_UBI32_PLL, 5 },
    386};
    387
    388static struct clk_rcg2 nss_ppe_clk_src = {
    389	.cmd_rcgr = 0x68080,
    390	.freq_tbl = ftbl_nss_ppe_clk_src,
    391	.hid_width = 5,
    392	.parent_map = gcc_xo_bias_gpll0_gpll4_nss_ubi32_map,
    393	.clkr.hw.init = &(struct clk_init_data){
    394		.name = "nss_ppe_clk_src",
    395		.parent_data = gcc_xo_bias_gpll0_gpll4_nss_ubi32,
    396		.num_parents = 6,
    397		.ops = &clk_rcg2_ops,
    398	},
    399};
    400
    401static struct clk_branch gcc_xo_clk_src = {
    402	.halt_reg = 0x30018,
    403	.clkr = {
    404		.enable_reg = 0x30018,
    405		.enable_mask = BIT(1),
    406		.hw.init = &(struct clk_init_data){
    407			.name = "gcc_xo_clk_src",
    408			.parent_data = &(const struct clk_parent_data){
    409				.fw_name = "xo",
    410			},
    411			.num_parents = 1,
    412			.flags = CLK_SET_RATE_PARENT,
    413			.ops = &clk_branch2_ops,
    414		},
    415	},
    416};
    417
    418static const struct freq_tbl ftbl_nss_ce_clk_src[] = {
    419	F(24000000, P_XO, 1, 0, 0),
    420	F(200000000, P_GPLL0, 4, 0, 0),
    421	{ }
    422};
    423
    424static const struct clk_parent_data gcc_xo_gpll0[] = {
    425	{ .fw_name = "xo" },
    426	{ .hw = &gpll0.clkr.hw },
    427};
    428
    429static const struct parent_map gcc_xo_gpll0_map[] = {
    430	{ P_XO, 0 },
    431	{ P_GPLL0, 1 },
    432};
    433
    434static struct clk_rcg2 nss_ce_clk_src = {
    435	.cmd_rcgr = 0x68098,
    436	.freq_tbl = ftbl_nss_ce_clk_src,
    437	.hid_width = 5,
    438	.parent_map = gcc_xo_gpll0_map,
    439	.clkr.hw.init = &(struct clk_init_data){
    440		.name = "nss_ce_clk_src",
    441		.parent_data = gcc_xo_gpll0,
    442		.num_parents = 2,
    443		.ops = &clk_rcg2_ops,
    444	},
    445};
    446
    447static struct clk_branch gcc_sleep_clk_src = {
    448	.halt_reg = 0x30000,
    449	.clkr = {
    450		.enable_reg = 0x30000,
    451		.enable_mask = BIT(1),
    452		.hw.init = &(struct clk_init_data){
    453			.name = "gcc_sleep_clk_src",
    454			.parent_data = &(const struct clk_parent_data){
    455				.fw_name = "sleep_clk",
    456			},
    457			.num_parents = 1,
    458			.ops = &clk_branch2_ops,
    459		},
    460	},
    461};
    462
    463static const struct freq_tbl ftbl_snoc_nssnoc_bfdcd_clk_src[] = {
    464	F(24000000, P_XO, 1, 0, 0),
    465	F(50000000, P_GPLL0_DIV2, 8, 0, 0),
    466	F(100000000, P_GPLL0, 8, 0, 0),
    467	F(133333333, P_GPLL0, 6, 0, 0),
    468	F(160000000, P_GPLL0, 5, 0, 0),
    469	F(200000000, P_GPLL0, 4, 0, 0),
    470	F(266666667, P_GPLL0, 3, 0, 0),
    471	{ }
    472};
    473
    474static const struct clk_parent_data
    475			gcc_xo_gpll0_gpll6_gpll0_out_main_div2[] = {
    476	{ .fw_name = "xo" },
    477	{ .hw = &gpll0.clkr.hw },
    478	{ .hw = &gpll6.clkr.hw },
    479	{ .hw = &gpll0_out_main_div2.hw },
    480};
    481
    482static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map[] = {
    483	{ P_XO, 0 },
    484	{ P_GPLL0, 1 },
    485	{ P_GPLL6, 2 },
    486	{ P_GPLL0_DIV2, 3 },
    487};
    488
    489static struct clk_rcg2 snoc_nssnoc_bfdcd_clk_src = {
    490	.cmd_rcgr = 0x76054,
    491	.freq_tbl = ftbl_snoc_nssnoc_bfdcd_clk_src,
    492	.hid_width = 5,
    493	.parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
    494	.clkr.hw.init = &(struct clk_init_data){
    495		.name = "snoc_nssnoc_bfdcd_clk_src",
    496		.parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
    497		.num_parents = 4,
    498		.ops = &clk_rcg2_ops,
    499	},
    500};
    501
    502static const struct freq_tbl ftbl_apss_ahb_clk_src[] = {
    503	F(24000000, P_XO, 1, 0, 0),
    504	F(25000000, P_GPLL0_DIV2, 16, 0, 0),
    505	F(50000000, P_GPLL0, 16, 0, 0),
    506	F(100000000, P_GPLL0, 8, 0, 0),
    507	{ }
    508};
    509
    510static struct clk_rcg2 apss_ahb_clk_src = {
    511	.cmd_rcgr = 0x46000,
    512	.freq_tbl = ftbl_apss_ahb_clk_src,
    513	.hid_width = 5,
    514	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
    515	.clkr.hw.init = &(struct clk_init_data){
    516		.name = "apss_ahb_clk_src",
    517		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
    518		.num_parents = 3,
    519		.ops = &clk_rcg2_ops,
    520	},
    521};
    522
    523static const struct freq_tbl ftbl_nss_port5_rx_clk_src[] = {
    524	F(24000000, P_XO, 1, 0, 0),
    525	F(25000000, P_UNIPHY1_RX, 12.5, 0, 0),
    526	F(25000000, P_UNIPHY0_RX, 5, 0, 0),
    527	F(78125000, P_UNIPHY1_RX, 4, 0, 0),
    528	F(125000000, P_UNIPHY1_RX, 2.5, 0, 0),
    529	F(125000000, P_UNIPHY0_RX, 1, 0, 0),
    530	F(156250000, P_UNIPHY1_RX, 2, 0, 0),
    531	F(312500000, P_UNIPHY1_RX, 1, 0, 0),
    532	{ }
    533};
    534
    535static const struct clk_parent_data
    536gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {
    537	{ .fw_name = "xo" },
    538	{ .fw_name = "uniphy0_gcc_rx_clk" },
    539	{ .fw_name = "uniphy0_gcc_tx_clk" },
    540	{ .fw_name = "uniphy1_gcc_rx_clk" },
    541	{ .fw_name = "uniphy1_gcc_tx_clk" },
    542	{ .hw = &ubi32_pll.clkr.hw },
    543	{ .fw_name = "bias_pll_cc_clk" },
    544};
    545
    546static const struct parent_map
    547gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map[] = {
    548	{ P_XO, 0 },
    549	{ P_UNIPHY0_RX, 1 },
    550	{ P_UNIPHY0_TX, 2 },
    551	{ P_UNIPHY1_RX, 3 },
    552	{ P_UNIPHY1_TX, 4 },
    553	{ P_UBI32_PLL, 5 },
    554	{ P_BIAS_PLL, 6 },
    555};
    556
    557static struct clk_rcg2 nss_port5_rx_clk_src = {
    558	.cmd_rcgr = 0x68060,
    559	.freq_tbl = ftbl_nss_port5_rx_clk_src,
    560	.hid_width = 5,
    561	.parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map,
    562	.clkr.hw.init = &(struct clk_init_data){
    563		.name = "nss_port5_rx_clk_src",
    564		.parent_data = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias,
    565		.num_parents = 7,
    566		.ops = &clk_rcg2_ops,
    567	},
    568};
    569
    570static const struct freq_tbl ftbl_nss_port5_tx_clk_src[] = {
    571	F(24000000, P_XO, 1, 0, 0),
    572	F(25000000, P_UNIPHY1_TX, 12.5, 0, 0),
    573	F(25000000, P_UNIPHY0_TX, 5, 0, 0),
    574	F(78125000, P_UNIPHY1_TX, 4, 0, 0),
    575	F(125000000, P_UNIPHY1_TX, 2.5, 0, 0),
    576	F(125000000, P_UNIPHY0_TX, 1, 0, 0),
    577	F(156250000, P_UNIPHY1_TX, 2, 0, 0),
    578	F(312500000, P_UNIPHY1_TX, 1, 0, 0),
    579	{ }
    580};
    581
    582static const struct clk_parent_data
    583gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {
    584	{ .fw_name = "xo" },
    585	{ .fw_name = "uniphy0_gcc_tx_clk" },
    586	{ .fw_name = "uniphy0_gcc_rx_clk" },
    587	{ .fw_name = "uniphy1_gcc_tx_clk" },
    588	{ .fw_name = "uniphy1_gcc_rx_clk" },
    589	{ .hw = &ubi32_pll.clkr.hw },
    590	{ .fw_name = "bias_pll_cc_clk" },
    591};
    592
    593static const struct parent_map
    594gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map[] = {
    595	{ P_XO, 0 },
    596	{ P_UNIPHY0_TX, 1 },
    597	{ P_UNIPHY0_RX, 2 },
    598	{ P_UNIPHY1_TX, 3 },
    599	{ P_UNIPHY1_RX, 4 },
    600	{ P_UBI32_PLL, 5 },
    601	{ P_BIAS_PLL, 6 },
    602};
    603
    604static struct clk_rcg2 nss_port5_tx_clk_src = {
    605	.cmd_rcgr = 0x68068,
    606	.freq_tbl = ftbl_nss_port5_tx_clk_src,
    607	.hid_width = 5,
    608	.parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map,
    609	.clkr.hw.init = &(struct clk_init_data){
    610		.name = "nss_port5_tx_clk_src",
    611		.parent_data = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias,
    612		.num_parents = 7,
    613		.ops = &clk_rcg2_ops,
    614	},
    615};
    616
    617static const struct freq_tbl ftbl_pcie_axi_clk_src[] = {
    618	F(24000000, P_XO, 1, 0, 0),
    619	F(200000000, P_GPLL0, 4, 0, 0),
    620	F(240000000, P_GPLL4, 5, 0, 0),
    621	{ }
    622};
    623
    624static const struct freq_tbl ftbl_pcie_rchng_clk_src[] = {
    625	F(24000000, P_XO, 1, 0, 0),
    626	F(100000000, P_GPLL0, 8, 0, 0),
    627	{ }
    628};
    629
    630static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
    631	{ .fw_name = "xo" },
    632	{ .hw = &gpll0.clkr.hw },
    633	{ .hw = &gpll4.clkr.hw },
    634};
    635
    636static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
    637	{ P_XO, 0 },
    638	{ P_GPLL0, 1 },
    639	{ P_GPLL4, 2 },
    640};
    641
    642static struct clk_rcg2 pcie0_axi_clk_src = {
    643	.cmd_rcgr = 0x75054,
    644	.freq_tbl = ftbl_pcie_axi_clk_src,
    645	.hid_width = 5,
    646	.parent_map = gcc_xo_gpll0_gpll4_map,
    647	.clkr.hw.init = &(struct clk_init_data){
    648		.name = "pcie0_axi_clk_src",
    649		.parent_data = gcc_xo_gpll0_gpll4,
    650		.num_parents = 3,
    651		.ops = &clk_rcg2_ops,
    652	},
    653};
    654
    655static const struct freq_tbl ftbl_usb0_master_clk_src[] = {
    656	F(80000000, P_GPLL0_DIV2, 5, 0, 0),
    657	F(100000000, P_GPLL0, 8, 0, 0),
    658	F(133330000, P_GPLL0, 6, 0, 0),
    659	F(200000000, P_GPLL0, 4, 0, 0),
    660	{ }
    661};
    662
    663static const struct clk_parent_data gcc_xo_gpll0_out_main_div2_gpll0[] = {
    664	{ .fw_name = "xo" },
    665	{ .hw = &gpll0_out_main_div2.hw },
    666	{ .hw = &gpll0.clkr.hw },
    667};
    668
    669static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = {
    670	{ P_XO, 0 },
    671	{ P_GPLL0_DIV2, 2 },
    672	{ P_GPLL0, 1 },
    673};
    674
    675static struct clk_rcg2 usb0_master_clk_src = {
    676	.cmd_rcgr = 0x3e00c,
    677	.freq_tbl = ftbl_usb0_master_clk_src,
    678	.mnd_width = 8,
    679	.hid_width = 5,
    680	.parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
    681	.clkr.hw.init = &(struct clk_init_data){
    682		.name = "usb0_master_clk_src",
    683		.parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
    684		.num_parents = 3,
    685		.ops = &clk_rcg2_ops,
    686	},
    687};
    688
    689static struct clk_regmap_div apss_ahb_postdiv_clk_src = {
    690	.reg = 0x46018,
    691	.shift = 4,
    692	.width = 4,
    693	.clkr = {
    694		.hw.init = &(struct clk_init_data){
    695			.name = "apss_ahb_postdiv_clk_src",
    696			.parent_hws = (const struct clk_hw *[]){
    697					&apss_ahb_clk_src.clkr.hw },
    698			.num_parents = 1,
    699			.ops = &clk_regmap_div_ops,
    700		},
    701	},
    702};
    703
    704static struct clk_fixed_factor gcc_xo_div4_clk_src = {
    705	.mult = 1,
    706	.div = 4,
    707	.hw.init = &(struct clk_init_data){
    708		.name = "gcc_xo_div4_clk_src",
    709		.parent_hws = (const struct clk_hw *[]){
    710				&gcc_xo_clk_src.clkr.hw },
    711		.num_parents = 1,
    712		.ops = &clk_fixed_factor_ops,
    713		.flags = CLK_SET_RATE_PARENT,
    714	},
    715};
    716
    717static const struct freq_tbl ftbl_nss_port1_rx_clk_src[] = {
    718	F(24000000, P_XO, 1, 0, 0),
    719	F(25000000, P_UNIPHY0_RX, 5, 0, 0),
    720	F(125000000, P_UNIPHY0_RX, 1, 0, 0),
    721	{ }
    722};
    723
    724static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {
    725	{ .fw_name = "xo" },
    726	{ .fw_name = "uniphy0_gcc_rx_clk" },
    727	{ .fw_name = "uniphy0_gcc_tx_clk" },
    728	{ .hw = &ubi32_pll.clkr.hw },
    729	{ .fw_name = "bias_pll_cc_clk" },
    730};
    731
    732static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {
    733	{ P_XO, 0 },
    734	{ P_UNIPHY0_RX, 1 },
    735	{ P_UNIPHY0_TX, 2 },
    736	{ P_UBI32_PLL, 5 },
    737	{ P_BIAS_PLL, 6 },
    738};
    739
    740static struct clk_rcg2 nss_port1_rx_clk_src = {
    741	.cmd_rcgr = 0x68020,
    742	.freq_tbl = ftbl_nss_port1_rx_clk_src,
    743	.hid_width = 5,
    744	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
    745	.clkr.hw.init = &(struct clk_init_data){
    746		.name = "nss_port1_rx_clk_src",
    747		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
    748		.num_parents = 5,
    749		.ops = &clk_rcg2_ops,
    750	},
    751};
    752
    753static const struct freq_tbl ftbl_nss_port1_tx_clk_src[] = {
    754	F(24000000, P_XO, 1, 0, 0),
    755	F(25000000, P_UNIPHY0_TX, 5, 0, 0),
    756	F(125000000, P_UNIPHY0_TX, 1, 0, 0),
    757	{ }
    758};
    759
    760static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {
    761	{ .fw_name = "xo" },
    762	{ .fw_name = "uniphy0_gcc_tx_clk" },
    763	{ .fw_name = "uniphy0_gcc_rx_clk" },
    764	{ .hw = &ubi32_pll.clkr.hw },
    765	{ .fw_name = "bias_pll_cc_clk" },
    766};
    767
    768static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {
    769	{ P_XO, 0 },
    770	{ P_UNIPHY0_TX, 1 },
    771	{ P_UNIPHY0_RX, 2 },
    772	{ P_UBI32_PLL, 5 },
    773	{ P_BIAS_PLL, 6 },
    774};
    775
    776static struct clk_rcg2 nss_port1_tx_clk_src = {
    777	.cmd_rcgr = 0x68028,
    778	.freq_tbl = ftbl_nss_port1_tx_clk_src,
    779	.hid_width = 5,
    780	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
    781	.clkr.hw.init = &(struct clk_init_data){
    782		.name = "nss_port1_tx_clk_src",
    783		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
    784		.num_parents = 5,
    785		.ops = &clk_rcg2_ops,
    786	},
    787};
    788
    789static struct clk_rcg2 nss_port2_rx_clk_src = {
    790	.cmd_rcgr = 0x68030,
    791	.freq_tbl = ftbl_nss_port1_rx_clk_src,
    792	.hid_width = 5,
    793	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
    794	.clkr.hw.init = &(struct clk_init_data){
    795		.name = "nss_port2_rx_clk_src",
    796		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
    797		.num_parents = 5,
    798		.ops = &clk_rcg2_ops,
    799	},
    800};
    801
    802static struct clk_rcg2 nss_port2_tx_clk_src = {
    803	.cmd_rcgr = 0x68038,
    804	.freq_tbl = ftbl_nss_port1_tx_clk_src,
    805	.hid_width = 5,
    806	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
    807	.clkr.hw.init = &(struct clk_init_data){
    808		.name = "nss_port2_tx_clk_src",
    809		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
    810		.num_parents = 5,
    811		.ops = &clk_rcg2_ops,
    812	},
    813};
    814
    815static struct clk_rcg2 nss_port3_rx_clk_src = {
    816	.cmd_rcgr = 0x68040,
    817	.freq_tbl = ftbl_nss_port1_rx_clk_src,
    818	.hid_width = 5,
    819	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
    820	.clkr.hw.init = &(struct clk_init_data){
    821		.name = "nss_port3_rx_clk_src",
    822		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
    823		.num_parents = 5,
    824		.ops = &clk_rcg2_ops,
    825	},
    826};
    827
    828static struct clk_rcg2 nss_port3_tx_clk_src = {
    829	.cmd_rcgr = 0x68048,
    830	.freq_tbl = ftbl_nss_port1_tx_clk_src,
    831	.hid_width = 5,
    832	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
    833	.clkr.hw.init = &(struct clk_init_data){
    834		.name = "nss_port3_tx_clk_src",
    835		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
    836		.num_parents = 5,
    837		.ops = &clk_rcg2_ops,
    838	},
    839};
    840
    841static struct clk_rcg2 nss_port4_rx_clk_src = {
    842	.cmd_rcgr = 0x68050,
    843	.freq_tbl = ftbl_nss_port1_rx_clk_src,
    844	.hid_width = 5,
    845	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
    846	.clkr.hw.init = &(struct clk_init_data){
    847		.name = "nss_port4_rx_clk_src",
    848		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
    849		.num_parents = 5,
    850		.ops = &clk_rcg2_ops,
    851	},
    852};
    853
    854static struct clk_rcg2 nss_port4_tx_clk_src = {
    855	.cmd_rcgr = 0x68058,
    856	.freq_tbl = ftbl_nss_port1_tx_clk_src,
    857	.hid_width = 5,
    858	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
    859	.clkr.hw.init = &(struct clk_init_data){
    860		.name = "nss_port4_tx_clk_src",
    861		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
    862		.num_parents = 5,
    863		.ops = &clk_rcg2_ops,
    864	},
    865};
    866
    867static struct clk_regmap_div nss_port5_rx_div_clk_src = {
    868	.reg = 0x68440,
    869	.shift = 0,
    870	.width = 4,
    871	.clkr = {
    872		.hw.init = &(struct clk_init_data){
    873			.name = "nss_port5_rx_div_clk_src",
    874			.parent_hws = (const struct clk_hw *[]){
    875					&nss_port5_rx_clk_src.clkr.hw },
    876			.num_parents = 1,
    877			.ops = &clk_regmap_div_ops,
    878			.flags = CLK_SET_RATE_PARENT,
    879		},
    880	},
    881};
    882
    883static struct clk_regmap_div nss_port5_tx_div_clk_src = {
    884	.reg = 0x68444,
    885	.shift = 0,
    886	.width = 4,
    887	.clkr = {
    888		.hw.init = &(struct clk_init_data){
    889			.name = "nss_port5_tx_div_clk_src",
    890			.parent_hws = (const struct clk_hw *[]){
    891					&nss_port5_tx_clk_src.clkr.hw },
    892			.num_parents = 1,
    893			.ops = &clk_regmap_div_ops,
    894			.flags = CLK_SET_RATE_PARENT,
    895		},
    896	},
    897};
    898
    899static const struct freq_tbl ftbl_apss_axi_clk_src[] = {
    900	F(24000000, P_XO, 1, 0, 0),
    901	F(100000000, P_GPLL0_DIV2, 4, 0, 0),
    902	F(200000000, P_GPLL0, 4, 0, 0),
    903	F(308570000, P_GPLL6, 3.5, 0, 0),
    904	F(400000000, P_GPLL0, 2, 0, 0),
    905	F(533000000, P_GPLL0, 1.5, 0, 0),
    906	{ }
    907};
    908
    909static const struct clk_parent_data gcc_xo_gpll0_gpll6_ubi32_gpll0_div2[] = {
    910	{ .fw_name = "xo" },
    911	{ .hw = &gpll0.clkr.hw },
    912	{ .hw = &gpll6.clkr.hw },
    913	{ .hw = &ubi32_pll.clkr.hw },
    914	{ .hw = &gpll0_out_main_div2.hw },
    915};
    916
    917static const struct parent_map
    918gcc_xo_gpll0_gpll6_ubi32_gpll0_div2_map[] = {
    919	{ P_XO, 0 },
    920	{ P_GPLL0, 1 },
    921	{ P_GPLL6, 2 },
    922	{ P_UBI32_PLL, 3 },
    923	{ P_GPLL0_DIV2, 6 },
    924};
    925
    926static struct clk_rcg2 apss_axi_clk_src = {
    927	.cmd_rcgr = 0x38048,
    928	.freq_tbl = ftbl_apss_axi_clk_src,
    929	.hid_width = 5,
    930	.parent_map = gcc_xo_gpll0_gpll6_ubi32_gpll0_div2_map,
    931	.clkr.hw.init = &(struct clk_init_data){
    932		.name = "apss_axi_clk_src",
    933		.parent_data = gcc_xo_gpll0_gpll6_ubi32_gpll0_div2,
    934		.num_parents = 5,
    935		.ops = &clk_rcg2_ops,
    936	},
    937};
    938
    939static const struct freq_tbl ftbl_nss_crypto_clk_src[] = {
    940	F(24000000, P_XO, 1, 0, 0),
    941	F(300000000, P_NSS_CRYPTO_PLL, 2, 0, 0),
    942	{ }
    943};
    944
    945static const struct clk_parent_data gcc_xo_nss_crypto_pll_gpll0[] = {
    946	{ .fw_name = "xo" },
    947	{ .hw = &nss_crypto_pll.clkr.hw },
    948	{ .hw = &gpll0.clkr.hw },
    949};
    950
    951static const struct parent_map gcc_xo_nss_crypto_pll_gpll0_map[] = {
    952	{ P_XO, 0 },
    953	{ P_NSS_CRYPTO_PLL, 1 },
    954	{ P_GPLL0, 2 },
    955};
    956
    957static struct clk_rcg2 nss_crypto_clk_src = {
    958	.cmd_rcgr = 0x68144,
    959	.freq_tbl = ftbl_nss_crypto_clk_src,
    960	.mnd_width = 16,
    961	.hid_width = 5,
    962	.parent_map = gcc_xo_nss_crypto_pll_gpll0_map,
    963	.clkr.hw.init = &(struct clk_init_data){
    964		.name = "nss_crypto_clk_src",
    965		.parent_data = gcc_xo_nss_crypto_pll_gpll0,
    966		.num_parents = 3,
    967		.ops = &clk_rcg2_ops,
    968	},
    969};
    970
    971static struct clk_regmap_div nss_port1_rx_div_clk_src = {
    972	.reg = 0x68400,
    973	.shift = 0,
    974	.width = 4,
    975	.clkr = {
    976		.hw.init = &(struct clk_init_data){
    977			.name = "nss_port1_rx_div_clk_src",
    978			.parent_hws = (const struct clk_hw *[]){
    979				&nss_port1_rx_clk_src.clkr.hw },
    980			.num_parents = 1,
    981			.ops = &clk_regmap_div_ops,
    982			.flags = CLK_SET_RATE_PARENT,
    983		},
    984	},
    985};
    986
    987static struct clk_regmap_div nss_port1_tx_div_clk_src = {
    988	.reg = 0x68404,
    989	.shift = 0,
    990	.width = 4,
    991	.clkr = {
    992		.hw.init = &(struct clk_init_data){
    993			.name = "nss_port1_tx_div_clk_src",
    994			.parent_hws = (const struct clk_hw *[]){
    995					&nss_port1_tx_clk_src.clkr.hw },
    996			.num_parents = 1,
    997			.ops = &clk_regmap_div_ops,
    998			.flags = CLK_SET_RATE_PARENT,
    999		},
   1000	},
   1001};
   1002
   1003static struct clk_regmap_div nss_port2_rx_div_clk_src = {
   1004	.reg = 0x68410,
   1005	.shift = 0,
   1006	.width = 4,
   1007	.clkr = {
   1008		.hw.init = &(struct clk_init_data){
   1009			.name = "nss_port2_rx_div_clk_src",
   1010			.parent_hws = (const struct clk_hw *[]){
   1011					&nss_port2_rx_clk_src.clkr.hw },
   1012			.num_parents = 1,
   1013			.ops = &clk_regmap_div_ops,
   1014			.flags = CLK_SET_RATE_PARENT,
   1015		},
   1016	},
   1017};
   1018
   1019static struct clk_regmap_div nss_port2_tx_div_clk_src = {
   1020	.reg = 0x68414,
   1021	.shift = 0,
   1022	.width = 4,
   1023	.clkr = {
   1024		.hw.init = &(struct clk_init_data){
   1025			.name = "nss_port2_tx_div_clk_src",
   1026			.parent_hws = (const struct clk_hw *[]){
   1027					&nss_port2_tx_clk_src.clkr.hw },
   1028			.num_parents = 1,
   1029			.ops = &clk_regmap_div_ops,
   1030			.flags = CLK_SET_RATE_PARENT,
   1031		},
   1032	},
   1033};
   1034
   1035static struct clk_regmap_div nss_port3_rx_div_clk_src = {
   1036	.reg = 0x68420,
   1037	.shift = 0,
   1038	.width = 4,
   1039	.clkr = {
   1040		.hw.init = &(struct clk_init_data){
   1041			.name = "nss_port3_rx_div_clk_src",
   1042			.parent_hws = (const struct clk_hw *[]){
   1043					&nss_port3_rx_clk_src.clkr.hw },
   1044			.num_parents = 1,
   1045			.ops = &clk_regmap_div_ops,
   1046			.flags = CLK_SET_RATE_PARENT,
   1047		},
   1048	},
   1049};
   1050
   1051static struct clk_regmap_div nss_port3_tx_div_clk_src = {
   1052	.reg = 0x68424,
   1053	.shift = 0,
   1054	.width = 4,
   1055	.clkr = {
   1056		.hw.init = &(struct clk_init_data){
   1057			.name = "nss_port3_tx_div_clk_src",
   1058			.parent_hws = (const struct clk_hw *[]){
   1059					&nss_port3_tx_clk_src.clkr.hw },
   1060			.num_parents = 1,
   1061			.ops = &clk_regmap_div_ops,
   1062			.flags = CLK_SET_RATE_PARENT,
   1063		},
   1064	},
   1065};
   1066
   1067static struct clk_regmap_div nss_port4_rx_div_clk_src = {
   1068	.reg = 0x68430,
   1069	.shift = 0,
   1070	.width = 4,
   1071	.clkr = {
   1072		.hw.init = &(struct clk_init_data){
   1073			.name = "nss_port4_rx_div_clk_src",
   1074			.parent_hws = (const struct clk_hw *[]){
   1075					&nss_port4_rx_clk_src.clkr.hw },
   1076			.num_parents = 1,
   1077			.ops = &clk_regmap_div_ops,
   1078			.flags = CLK_SET_RATE_PARENT,
   1079		},
   1080	},
   1081};
   1082
   1083static struct clk_regmap_div nss_port4_tx_div_clk_src = {
   1084	.reg = 0x68434,
   1085	.shift = 0,
   1086	.width = 4,
   1087	.clkr = {
   1088		.hw.init = &(struct clk_init_data){
   1089			.name = "nss_port4_tx_div_clk_src",
   1090			.parent_hws = (const struct clk_hw *[]){
   1091					&nss_port4_tx_clk_src.clkr.hw },
   1092			.num_parents = 1,
   1093			.ops = &clk_regmap_div_ops,
   1094			.flags = CLK_SET_RATE_PARENT,
   1095		},
   1096	},
   1097};
   1098
   1099static const struct freq_tbl ftbl_nss_ubi_clk_src[] = {
   1100	F(24000000, P_XO, 1, 0, 0),
   1101	F(149760000, P_UBI32_PLL, 10, 0, 0),
   1102	F(187200000, P_UBI32_PLL, 8, 0, 0),
   1103	F(249600000, P_UBI32_PLL, 6, 0, 0),
   1104	F(374400000, P_UBI32_PLL, 4, 0, 0),
   1105	F(748800000, P_UBI32_PLL, 2, 0, 0),
   1106	F(1497600000, P_UBI32_PLL, 1, 0, 0),
   1107	{ }
   1108};
   1109
   1110static const struct clk_parent_data
   1111			gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6[] = {
   1112	{ .fw_name = "xo" },
   1113	{ .hw = &ubi32_pll.clkr.hw },
   1114	{ .hw = &gpll0.clkr.hw },
   1115	{ .hw = &gpll2.clkr.hw },
   1116	{ .hw = &gpll4.clkr.hw },
   1117	{ .hw = &gpll6.clkr.hw },
   1118};
   1119
   1120static const struct parent_map gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map[] = {
   1121	{ P_XO, 0 },
   1122	{ P_UBI32_PLL, 1 },
   1123	{ P_GPLL0, 2 },
   1124	{ P_GPLL2, 3 },
   1125	{ P_GPLL4, 4 },
   1126	{ P_GPLL6, 5 },
   1127};
   1128
   1129static struct clk_rcg2 nss_ubi0_clk_src = {
   1130	.cmd_rcgr = 0x68104,
   1131	.freq_tbl = ftbl_nss_ubi_clk_src,
   1132	.hid_width = 5,
   1133	.parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,
   1134	.clkr.hw.init = &(struct clk_init_data){
   1135		.name = "nss_ubi0_clk_src",
   1136		.parent_data = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
   1137		.num_parents = 6,
   1138		.ops = &clk_rcg2_ops,
   1139		.flags = CLK_SET_RATE_PARENT,
   1140	},
   1141};
   1142
   1143static const struct freq_tbl ftbl_adss_pwm_clk_src[] = {
   1144	F(24000000, P_XO, 1, 0, 0),
   1145	F(100000000, P_GPLL0, 8, 0, 0),
   1146	{ }
   1147};
   1148
   1149static struct clk_rcg2 adss_pwm_clk_src = {
   1150	.cmd_rcgr = 0x1c008,
   1151	.freq_tbl = ftbl_adss_pwm_clk_src,
   1152	.hid_width = 5,
   1153	.parent_map = gcc_xo_gpll0_map,
   1154	.clkr.hw.init = &(struct clk_init_data){
   1155		.name = "adss_pwm_clk_src",
   1156		.parent_data = gcc_xo_gpll0,
   1157		.num_parents = 2,
   1158		.ops = &clk_rcg2_ops,
   1159	},
   1160};
   1161
   1162static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src[] = {
   1163	F(24000000, P_XO, 1, 0, 0),
   1164	F(25000000, P_GPLL0_DIV2, 16, 0, 0),
   1165	F(50000000, P_GPLL0, 16, 0, 0),
   1166	{ }
   1167};
   1168
   1169static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
   1170	.cmd_rcgr = 0x0200c,
   1171	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
   1172	.hid_width = 5,
   1173	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1174	.clkr.hw.init = &(struct clk_init_data){
   1175		.name = "blsp1_qup1_i2c_apps_clk_src",
   1176		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1177		.num_parents = 3,
   1178		.ops = &clk_rcg2_ops,
   1179	},
   1180};
   1181
   1182static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src[] = {
   1183	F(960000, P_XO, 10, 2, 5),
   1184	F(4800000, P_XO, 5, 0, 0),
   1185	F(9600000, P_XO, 2, 4, 5),
   1186	F(12500000, P_GPLL0_DIV2, 16, 1, 2),
   1187	F(16000000, P_GPLL0, 10, 1, 5),
   1188	F(24000000, P_XO, 1, 0, 0),
   1189	F(25000000, P_GPLL0, 16, 1, 2),
   1190	F(50000000, P_GPLL0, 16, 0, 0),
   1191	{ }
   1192};
   1193
   1194static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
   1195	.cmd_rcgr = 0x02024,
   1196	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
   1197	.mnd_width = 8,
   1198	.hid_width = 5,
   1199	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1200	.clkr.hw.init = &(struct clk_init_data){
   1201		.name = "blsp1_qup1_spi_apps_clk_src",
   1202		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1203		.num_parents = 3,
   1204		.ops = &clk_rcg2_ops,
   1205	},
   1206};
   1207
   1208static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
   1209	.cmd_rcgr = 0x03000,
   1210	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
   1211	.hid_width = 5,
   1212	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1213	.clkr.hw.init = &(struct clk_init_data){
   1214		.name = "blsp1_qup2_i2c_apps_clk_src",
   1215		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1216		.num_parents = 3,
   1217		.ops = &clk_rcg2_ops,
   1218	},
   1219};
   1220
   1221static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
   1222	.cmd_rcgr = 0x03014,
   1223	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
   1224	.mnd_width = 8,
   1225	.hid_width = 5,
   1226	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1227	.clkr.hw.init = &(struct clk_init_data){
   1228		.name = "blsp1_qup2_spi_apps_clk_src",
   1229		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1230		.num_parents = 3,
   1231		.ops = &clk_rcg2_ops,
   1232	},
   1233};
   1234
   1235static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
   1236	.cmd_rcgr = 0x04000,
   1237	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
   1238	.hid_width = 5,
   1239	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1240	.clkr.hw.init = &(struct clk_init_data){
   1241		.name = "blsp1_qup3_i2c_apps_clk_src",
   1242		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1243		.num_parents = 3,
   1244		.ops = &clk_rcg2_ops,
   1245	},
   1246};
   1247
   1248static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
   1249	.cmd_rcgr = 0x04014,
   1250	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
   1251	.mnd_width = 8,
   1252	.hid_width = 5,
   1253	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1254	.clkr.hw.init = &(struct clk_init_data){
   1255		.name = "blsp1_qup3_spi_apps_clk_src",
   1256		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1257		.num_parents = 3,
   1258		.ops = &clk_rcg2_ops,
   1259	},
   1260};
   1261
   1262static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
   1263	.cmd_rcgr = 0x05000,
   1264	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
   1265	.hid_width = 5,
   1266	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1267	.clkr.hw.init = &(struct clk_init_data){
   1268		.name = "blsp1_qup4_i2c_apps_clk_src",
   1269		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1270		.num_parents = 3,
   1271		.ops = &clk_rcg2_ops,
   1272	},
   1273};
   1274
   1275static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
   1276	.cmd_rcgr = 0x05014,
   1277	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
   1278	.mnd_width = 8,
   1279	.hid_width = 5,
   1280	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1281	.clkr.hw.init = &(struct clk_init_data){
   1282		.name = "blsp1_qup4_spi_apps_clk_src",
   1283		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1284		.num_parents = 3,
   1285		.ops = &clk_rcg2_ops,
   1286	},
   1287};
   1288
   1289static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
   1290	.cmd_rcgr = 0x06000,
   1291	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
   1292	.hid_width = 5,
   1293	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1294	.clkr.hw.init = &(struct clk_init_data){
   1295		.name = "blsp1_qup5_i2c_apps_clk_src",
   1296		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1297		.num_parents = 3,
   1298		.ops = &clk_rcg2_ops,
   1299	},
   1300};
   1301
   1302static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
   1303	.cmd_rcgr = 0x06014,
   1304	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
   1305	.mnd_width = 8,
   1306	.hid_width = 5,
   1307	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1308	.clkr.hw.init = &(struct clk_init_data){
   1309		.name = "blsp1_qup5_spi_apps_clk_src",
   1310		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1311		.num_parents = 3,
   1312		.ops = &clk_rcg2_ops,
   1313	},
   1314};
   1315
   1316static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
   1317	.cmd_rcgr = 0x07000,
   1318	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
   1319	.hid_width = 5,
   1320	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1321	.clkr.hw.init = &(struct clk_init_data){
   1322		.name = "blsp1_qup6_i2c_apps_clk_src",
   1323		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1324		.num_parents = 3,
   1325		.ops = &clk_rcg2_ops,
   1326	},
   1327};
   1328
   1329static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
   1330	.cmd_rcgr = 0x07014,
   1331	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
   1332	.mnd_width = 8,
   1333	.hid_width = 5,
   1334	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1335	.clkr.hw.init = &(struct clk_init_data){
   1336		.name = "blsp1_qup6_spi_apps_clk_src",
   1337		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1338		.num_parents = 3,
   1339		.ops = &clk_rcg2_ops,
   1340	},
   1341};
   1342
   1343static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src[] = {
   1344	F(3686400, P_GPLL0_DIV2, 1, 144, 15625),
   1345	F(7372800, P_GPLL0_DIV2, 1, 288, 15625),
   1346	F(14745600, P_GPLL0_DIV2, 1, 576, 15625),
   1347	F(16000000, P_GPLL0_DIV2, 5, 1, 5),
   1348	F(24000000, P_XO, 1, 0, 0),
   1349	F(24000000, P_GPLL0, 1, 3, 100),
   1350	F(25000000, P_GPLL0, 16, 1, 2),
   1351	F(32000000, P_GPLL0, 1, 1, 25),
   1352	F(40000000, P_GPLL0, 1, 1, 20),
   1353	F(46400000, P_GPLL0, 1, 29, 500),
   1354	F(48000000, P_GPLL0, 1, 3, 50),
   1355	F(51200000, P_GPLL0, 1, 8, 125),
   1356	F(56000000, P_GPLL0, 1, 7, 100),
   1357	F(58982400, P_GPLL0, 1, 1152, 15625),
   1358	F(60000000, P_GPLL0, 1, 3, 40),
   1359	F(64000000, P_GPLL0, 12.5, 1, 1),
   1360	{ }
   1361};
   1362
   1363static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
   1364	.cmd_rcgr = 0x02044,
   1365	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
   1366	.mnd_width = 16,
   1367	.hid_width = 5,
   1368	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1369	.clkr.hw.init = &(struct clk_init_data){
   1370		.name = "blsp1_uart1_apps_clk_src",
   1371		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1372		.num_parents = 3,
   1373		.ops = &clk_rcg2_ops,
   1374	},
   1375};
   1376
   1377static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
   1378	.cmd_rcgr = 0x03034,
   1379	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
   1380	.mnd_width = 16,
   1381	.hid_width = 5,
   1382	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1383	.clkr.hw.init = &(struct clk_init_data){
   1384		.name = "blsp1_uart2_apps_clk_src",
   1385		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1386		.num_parents = 3,
   1387		.ops = &clk_rcg2_ops,
   1388	},
   1389};
   1390
   1391static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
   1392	.cmd_rcgr = 0x04034,
   1393	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
   1394	.mnd_width = 16,
   1395	.hid_width = 5,
   1396	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1397	.clkr.hw.init = &(struct clk_init_data){
   1398		.name = "blsp1_uart3_apps_clk_src",
   1399		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1400		.num_parents = 3,
   1401		.ops = &clk_rcg2_ops,
   1402	},
   1403};
   1404
   1405static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
   1406	.cmd_rcgr = 0x05034,
   1407	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
   1408	.mnd_width = 16,
   1409	.hid_width = 5,
   1410	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1411	.clkr.hw.init = &(struct clk_init_data){
   1412		.name = "blsp1_uart4_apps_clk_src",
   1413		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1414		.num_parents = 3,
   1415		.ops = &clk_rcg2_ops,
   1416	},
   1417};
   1418
   1419static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
   1420	.cmd_rcgr = 0x06034,
   1421	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
   1422	.mnd_width = 16,
   1423	.hid_width = 5,
   1424	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1425	.clkr.hw.init = &(struct clk_init_data){
   1426		.name = "blsp1_uart5_apps_clk_src",
   1427		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1428		.num_parents = 3,
   1429		.ops = &clk_rcg2_ops,
   1430	},
   1431};
   1432
   1433static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
   1434	.cmd_rcgr = 0x07034,
   1435	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
   1436	.mnd_width = 16,
   1437	.hid_width = 5,
   1438	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1439	.clkr.hw.init = &(struct clk_init_data){
   1440		.name = "blsp1_uart6_apps_clk_src",
   1441		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1442		.num_parents = 3,
   1443		.ops = &clk_rcg2_ops,
   1444	},
   1445};
   1446
   1447static const struct freq_tbl ftbl_crypto_clk_src[] = {
   1448	F(40000000, P_GPLL0_DIV2, 10, 0, 0),
   1449	F(80000000, P_GPLL0, 10, 0, 0),
   1450	F(100000000, P_GPLL0, 8, 0, 0),
   1451	F(160000000, P_GPLL0, 5, 0, 0),
   1452	{ }
   1453};
   1454
   1455static struct clk_rcg2 crypto_clk_src = {
   1456	.cmd_rcgr = 0x16004,
   1457	.freq_tbl = ftbl_crypto_clk_src,
   1458	.hid_width = 5,
   1459	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1460	.clkr.hw.init = &(struct clk_init_data){
   1461		.name = "crypto_clk_src",
   1462		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1463		.num_parents = 3,
   1464		.ops = &clk_rcg2_ops,
   1465	},
   1466};
   1467
   1468static const struct freq_tbl ftbl_gp_clk_src[] = {
   1469	F(24000000, P_XO, 1, 0, 0),
   1470	F(50000000, P_GPLL0_DIV2, 8, 0, 0),
   1471	F(100000000, P_GPLL0, 8, 0, 0),
   1472	F(200000000, P_GPLL0, 4, 0, 0),
   1473	F(266666666, P_GPLL0, 3, 0, 0),
   1474	{ }
   1475};
   1476
   1477static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_sleep_clk[] = {
   1478	{ .fw_name = "xo" },
   1479	{ .hw = &gpll0.clkr.hw },
   1480	{ .hw = &gpll6.clkr.hw },
   1481	{ .hw = &gpll0_out_main_div2.hw },
   1482	{ .fw_name = "sleep_clk" },
   1483};
   1484
   1485static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map[] = {
   1486	{ P_XO, 0 },
   1487	{ P_GPLL0, 1 },
   1488	{ P_GPLL6, 2 },
   1489	{ P_GPLL0_DIV2, 4 },
   1490	{ P_SLEEP_CLK, 6 },
   1491};
   1492
   1493static struct clk_rcg2 gp1_clk_src = {
   1494	.cmd_rcgr = 0x08004,
   1495	.freq_tbl = ftbl_gp_clk_src,
   1496	.mnd_width = 8,
   1497	.hid_width = 5,
   1498	.parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
   1499	.clkr.hw.init = &(struct clk_init_data){
   1500		.name = "gp1_clk_src",
   1501		.parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
   1502		.num_parents = 5,
   1503		.ops = &clk_rcg2_ops,
   1504	},
   1505};
   1506
   1507static struct clk_rcg2 gp2_clk_src = {
   1508	.cmd_rcgr = 0x09004,
   1509	.freq_tbl = ftbl_gp_clk_src,
   1510	.mnd_width = 8,
   1511	.hid_width = 5,
   1512	.parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
   1513	.clkr.hw.init = &(struct clk_init_data){
   1514		.name = "gp2_clk_src",
   1515		.parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
   1516		.num_parents = 5,
   1517		.ops = &clk_rcg2_ops,
   1518	},
   1519};
   1520
   1521static struct clk_rcg2 gp3_clk_src = {
   1522	.cmd_rcgr = 0x0a004,
   1523	.freq_tbl = ftbl_gp_clk_src,
   1524	.mnd_width = 8,
   1525	.hid_width = 5,
   1526	.parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
   1527	.clkr.hw.init = &(struct clk_init_data){
   1528		.name = "gp3_clk_src",
   1529		.parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
   1530		.num_parents = 5,
   1531		.ops = &clk_rcg2_ops,
   1532	},
   1533};
   1534
   1535static struct clk_fixed_factor nss_ppe_cdiv_clk_src = {
   1536	.mult = 1,
   1537	.div = 4,
   1538	.hw.init = &(struct clk_init_data){
   1539		.name = "nss_ppe_cdiv_clk_src",
   1540		.parent_hws = (const struct clk_hw *[]){
   1541				&nss_ppe_clk_src.clkr.hw },
   1542		.num_parents = 1,
   1543		.ops = &clk_fixed_factor_ops,
   1544		.flags = CLK_SET_RATE_PARENT,
   1545	},
   1546};
   1547
   1548static struct clk_regmap_div nss_ubi0_div_clk_src = {
   1549	.reg = 0x68118,
   1550	.shift = 0,
   1551	.width = 4,
   1552	.clkr = {
   1553		.hw.init = &(struct clk_init_data){
   1554			.name = "nss_ubi0_div_clk_src",
   1555			.parent_hws = (const struct clk_hw *[]){
   1556				&nss_ubi0_clk_src.clkr.hw },
   1557			.num_parents = 1,
   1558			.ops = &clk_regmap_div_ro_ops,
   1559			.flags = CLK_SET_RATE_PARENT,
   1560		},
   1561	},
   1562};
   1563
   1564static const struct freq_tbl ftbl_pcie_aux_clk_src[] = {
   1565	F(24000000, P_XO, 1, 0, 0),
   1566};
   1567
   1568static const struct clk_parent_data gcc_xo_gpll0_core_pi_sleep_clk[] = {
   1569	{ .fw_name = "xo" },
   1570	{ .hw = &gpll0.clkr.hw },
   1571	{ .fw_name = "sleep_clk" },
   1572};
   1573
   1574static const struct parent_map gcc_xo_gpll0_core_pi_sleep_clk_map[] = {
   1575	{ P_XO, 0 },
   1576	{ P_GPLL0, 2 },
   1577	{ P_PI_SLEEP, 6 },
   1578};
   1579
   1580static struct clk_rcg2 pcie0_aux_clk_src = {
   1581	.cmd_rcgr = 0x75024,
   1582	.freq_tbl = ftbl_pcie_aux_clk_src,
   1583	.mnd_width = 16,
   1584	.hid_width = 5,
   1585	.parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,
   1586	.clkr.hw.init = &(struct clk_init_data){
   1587		.name = "pcie0_aux_clk_src",
   1588		.parent_data = gcc_xo_gpll0_core_pi_sleep_clk,
   1589		.num_parents = 3,
   1590		.ops = &clk_rcg2_ops,
   1591	},
   1592};
   1593
   1594static const struct clk_parent_data gcc_pcie20_phy0_pipe_clk_xo[] = {
   1595	{ .fw_name = "pcie20_phy0_pipe_clk" },
   1596	{ .fw_name = "xo" },
   1597};
   1598
   1599static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = {
   1600	{ P_PCIE20_PHY0_PIPE, 0 },
   1601	{ P_XO, 2 },
   1602};
   1603
   1604static struct clk_regmap_mux pcie0_pipe_clk_src = {
   1605	.reg = 0x7501c,
   1606	.shift = 8,
   1607	.width = 2,
   1608	.parent_map = gcc_pcie20_phy0_pipe_clk_xo_map,
   1609	.clkr = {
   1610		.hw.init = &(struct clk_init_data){
   1611			.name = "pcie0_pipe_clk_src",
   1612			.parent_data = gcc_pcie20_phy0_pipe_clk_xo,
   1613			.num_parents = 2,
   1614			.ops = &clk_regmap_mux_closest_ops,
   1615			.flags = CLK_SET_RATE_PARENT,
   1616		},
   1617	},
   1618};
   1619
   1620static const struct freq_tbl ftbl_sdcc_apps_clk_src[] = {
   1621	F(144000, P_XO, 16, 12, 125),
   1622	F(400000, P_XO, 12, 1, 5),
   1623	F(24000000, P_GPLL2, 12, 1, 4),
   1624	F(48000000, P_GPLL2, 12, 1, 2),
   1625	F(96000000, P_GPLL2, 12, 0, 0),
   1626	F(177777778, P_GPLL0, 4.5, 0, 0),
   1627	F(192000000, P_GPLL2, 6, 0, 0),
   1628	F(384000000, P_GPLL2, 3, 0, 0),
   1629	{ }
   1630};
   1631
   1632static const struct clk_parent_data
   1633			gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = {
   1634	{ .fw_name = "xo" },
   1635	{ .hw = &gpll0.clkr.hw },
   1636	{ .hw = &gpll2.clkr.hw },
   1637	{ .hw = &gpll0_out_main_div2.hw },
   1638};
   1639
   1640static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = {
   1641	{ P_XO, 0 },
   1642	{ P_GPLL0, 1 },
   1643	{ P_GPLL2, 2 },
   1644	{ P_GPLL0_DIV2, 4 },
   1645};
   1646
   1647static struct clk_rcg2 sdcc1_apps_clk_src = {
   1648	.cmd_rcgr = 0x42004,
   1649	.freq_tbl = ftbl_sdcc_apps_clk_src,
   1650	.mnd_width = 8,
   1651	.hid_width = 5,
   1652	.parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
   1653	.clkr.hw.init = &(struct clk_init_data){
   1654		.name = "sdcc1_apps_clk_src",
   1655		.parent_data = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
   1656		.num_parents = 4,
   1657		.ops = &clk_rcg2_ops,
   1658	},
   1659};
   1660
   1661static const struct freq_tbl ftbl_usb_aux_clk_src[] = {
   1662	F(24000000, P_XO, 1, 0, 0),
   1663	{ }
   1664};
   1665
   1666static struct clk_rcg2 usb0_aux_clk_src = {
   1667	.cmd_rcgr = 0x3e05c,
   1668	.freq_tbl = ftbl_usb_aux_clk_src,
   1669	.mnd_width = 16,
   1670	.hid_width = 5,
   1671	.parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,
   1672	.clkr.hw.init = &(struct clk_init_data){
   1673		.name = "usb0_aux_clk_src",
   1674		.parent_data = gcc_xo_gpll0_core_pi_sleep_clk,
   1675		.num_parents = 3,
   1676		.ops = &clk_rcg2_ops,
   1677	},
   1678};
   1679
   1680static const struct freq_tbl ftbl_usb_mock_utmi_clk_src[] = {
   1681	F(24000000, P_XO, 1, 0, 0),
   1682	F(60000000, P_GPLL6, 6, 1, 3),
   1683	{ }
   1684};
   1685
   1686static const struct clk_parent_data
   1687			gcc_xo_gpll6_gpll0_gpll0_out_main_div2[] = {
   1688	{ .fw_name = "xo" },
   1689	{ .hw = &gpll6.clkr.hw },
   1690	{ .hw = &gpll0.clkr.hw },
   1691	{ .hw = &gpll0_out_main_div2.hw },
   1692};
   1693
   1694static const struct parent_map gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map[] = {
   1695	{ P_XO, 0 },
   1696	{ P_GPLL6, 1 },
   1697	{ P_GPLL0, 3 },
   1698	{ P_GPLL0_DIV2, 4 },
   1699};
   1700
   1701static struct clk_rcg2 usb0_mock_utmi_clk_src = {
   1702	.cmd_rcgr = 0x3e020,
   1703	.freq_tbl = ftbl_usb_mock_utmi_clk_src,
   1704	.mnd_width = 8,
   1705	.hid_width = 5,
   1706	.parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
   1707	.clkr.hw.init = &(struct clk_init_data){
   1708		.name = "usb0_mock_utmi_clk_src",
   1709		.parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
   1710		.num_parents = 4,
   1711		.ops = &clk_rcg2_ops,
   1712	},
   1713};
   1714
   1715static const struct clk_parent_data gcc_usb3phy_0_cc_pipe_clk_xo[] = {
   1716	{ .fw_name = "usb3phy_0_cc_pipe_clk" },
   1717	{ .fw_name = "xo" },
   1718};
   1719
   1720static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = {
   1721	{ P_USB3PHY_0_PIPE, 0 },
   1722	{ P_XO, 2 },
   1723};
   1724
   1725static struct clk_regmap_mux usb0_pipe_clk_src = {
   1726	.reg = 0x3e048,
   1727	.shift = 8,
   1728	.width = 2,
   1729	.parent_map = gcc_usb3phy_0_cc_pipe_clk_xo_map,
   1730	.clkr = {
   1731		.hw.init = &(struct clk_init_data){
   1732			.name = "usb0_pipe_clk_src",
   1733			.parent_data = gcc_usb3phy_0_cc_pipe_clk_xo,
   1734			.num_parents = 2,
   1735			.ops = &clk_regmap_mux_closest_ops,
   1736			.flags = CLK_SET_RATE_PARENT,
   1737		},
   1738	},
   1739};
   1740
   1741static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = {
   1742	F(80000000, P_GPLL0_DIV2, 5, 0, 0),
   1743	F(160000000, P_GPLL0, 5, 0, 0),
   1744	F(216000000, P_GPLL6, 5, 0, 0),
   1745	F(308570000, P_GPLL6, 3.5, 0, 0),
   1746};
   1747
   1748static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_div2[] = {
   1749	{ .fw_name = "xo"},
   1750	{ .hw = &gpll0.clkr.hw },
   1751	{ .hw = &gpll6.clkr.hw },
   1752	{ .hw = &gpll0_out_main_div2.hw },
   1753};
   1754
   1755static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_div2_map[] = {
   1756	{ P_XO, 0 },
   1757	{ P_GPLL0, 1 },
   1758	{ P_GPLL6, 2 },
   1759	{ P_GPLL0_DIV2, 4 },
   1760};
   1761
   1762static struct clk_rcg2 sdcc1_ice_core_clk_src = {
   1763	.cmd_rcgr = 0x5d000,
   1764	.freq_tbl = ftbl_sdcc_ice_core_clk_src,
   1765	.mnd_width = 8,
   1766	.hid_width = 5,
   1767	.parent_map = gcc_xo_gpll0_gpll6_gpll0_div2_map,
   1768	.clkr.hw.init = &(struct clk_init_data){
   1769		.name = "sdcc1_ice_core_clk_src",
   1770		.parent_data = gcc_xo_gpll0_gpll6_gpll0_div2,
   1771		.num_parents = 4,
   1772		.ops = &clk_rcg2_ops,
   1773	},
   1774};
   1775
   1776static const struct freq_tbl ftbl_qdss_stm_clk_src[] = {
   1777	F(24000000, P_XO, 1, 0, 0),
   1778	F(50000000, P_GPLL0_DIV2, 8, 0, 0),
   1779	F(100000000, P_GPLL0, 8, 0, 0),
   1780	F(200000000, P_GPLL0, 4, 0, 0),
   1781	{ }
   1782};
   1783
   1784static struct clk_rcg2 qdss_stm_clk_src = {
   1785	.cmd_rcgr = 0x2902C,
   1786	.freq_tbl = ftbl_qdss_stm_clk_src,
   1787	.hid_width = 5,
   1788	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
   1789	.clkr.hw.init = &(struct clk_init_data){
   1790		.name = "qdss_stm_clk_src",
   1791		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
   1792		.num_parents = 3,
   1793		.ops = &clk_rcg2_ops,
   1794	},
   1795};
   1796
   1797static const struct freq_tbl ftbl_qdss_traceclkin_clk_src[] = {
   1798	F(80000000, P_GPLL0_DIV2, 5, 0, 0),
   1799	F(160000000, P_GPLL0, 5, 0, 0),
   1800	F(300000000, P_GPLL4, 4, 0, 0),
   1801	{ }
   1802};
   1803
   1804static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll0_div2[] = {
   1805	{ .fw_name = "xo" },
   1806	{ .hw = &gpll4.clkr.hw },
   1807	{ .hw = &gpll0.clkr.hw },
   1808	{ .hw = &gpll0_out_main_div2.hw },
   1809};
   1810
   1811static const struct parent_map gcc_xo_gpll4_gpll0_gpll0_div2_map[] = {
   1812	{ P_XO, 0 },
   1813	{ P_GPLL4, 1 },
   1814	{ P_GPLL0, 2 },
   1815	{ P_GPLL0_DIV2, 4 },
   1816};
   1817
   1818static struct clk_rcg2 qdss_traceclkin_clk_src = {
   1819	.cmd_rcgr = 0x29048,
   1820	.freq_tbl = ftbl_qdss_traceclkin_clk_src,
   1821	.hid_width = 5,
   1822	.parent_map = gcc_xo_gpll4_gpll0_gpll0_div2_map,
   1823	.clkr.hw.init = &(struct clk_init_data){
   1824		.name = "qdss_traceclkin_clk_src",
   1825		.parent_data = gcc_xo_gpll4_gpll0_gpll0_div2,
   1826		.num_parents = 4,
   1827		.ops = &clk_rcg2_ops,
   1828	},
   1829};
   1830
   1831static struct clk_rcg2 usb1_mock_utmi_clk_src = {
   1832	.cmd_rcgr = 0x3f020,
   1833	.freq_tbl = ftbl_usb_mock_utmi_clk_src,
   1834	.mnd_width = 8,
   1835	.hid_width = 5,
   1836	.parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
   1837	.clkr.hw.init = &(struct clk_init_data){
   1838		.name = "usb1_mock_utmi_clk_src",
   1839		.parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
   1840		.num_parents = 4,
   1841		.ops = &clk_rcg2_ops,
   1842	},
   1843};
   1844
   1845static struct clk_branch gcc_adss_pwm_clk = {
   1846	.halt_reg = 0x1c020,
   1847	.clkr = {
   1848		.enable_reg = 0x1c020,
   1849		.enable_mask = BIT(0),
   1850		.hw.init = &(struct clk_init_data){
   1851			.name = "gcc_adss_pwm_clk",
   1852			.parent_hws = (const struct clk_hw *[]){
   1853					&adss_pwm_clk_src.clkr.hw },
   1854			.num_parents = 1,
   1855			.flags = CLK_SET_RATE_PARENT,
   1856			.ops = &clk_branch2_ops,
   1857		},
   1858	},
   1859};
   1860
   1861static struct clk_branch gcc_apss_ahb_clk = {
   1862	.halt_reg = 0x4601c,
   1863	.halt_check = BRANCH_HALT_VOTED,
   1864	.clkr = {
   1865		.enable_reg = 0x0b004,
   1866		.enable_mask = BIT(14),
   1867		.hw.init = &(struct clk_init_data){
   1868			.name = "gcc_apss_ahb_clk",
   1869			.parent_hws = (const struct clk_hw *[]){
   1870					&apss_ahb_postdiv_clk_src.clkr.hw },
   1871			.num_parents = 1,
   1872			.flags = CLK_SET_RATE_PARENT,
   1873			.ops = &clk_branch2_ops,
   1874		},
   1875	},
   1876};
   1877
   1878static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src[] = {
   1879	F(24000000, P_XO, 1, 0, 0),
   1880	F(50000000, P_GPLL0_DIV2, 8, 0, 0),
   1881	F(100000000, P_GPLL0, 8, 0, 0),
   1882	F(133333333, P_GPLL0, 6, 0, 0),
   1883	F(160000000, P_GPLL0, 5, 0, 0),
   1884	F(200000000, P_GPLL0, 4, 0, 0),
   1885	F(266666667, P_GPLL0, 3, 0, 0),
   1886	{ }
   1887};
   1888
   1889static struct clk_rcg2 system_noc_bfdcd_clk_src = {
   1890	.cmd_rcgr = 0x26004,
   1891	.freq_tbl = ftbl_system_noc_bfdcd_clk_src,
   1892	.hid_width = 5,
   1893	.parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
   1894	.clkr.hw.init = &(struct clk_init_data){
   1895		.name = "system_noc_bfdcd_clk_src",
   1896		.parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
   1897		.num_parents = 4,
   1898		.ops = &clk_rcg2_ops,
   1899	},
   1900};
   1901
   1902static const struct freq_tbl ftbl_ubi32_mem_noc_bfdcd_clk_src[] = {
   1903	F(24000000, P_XO, 1, 0, 0),
   1904	F(307670000, P_BIAS_PLL_NSS_NOC, 1.5, 0, 0),
   1905	F(533333333, P_GPLL0, 1.5, 0, 0),
   1906	{ }
   1907};
   1908
   1909static const struct clk_parent_data
   1910			gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk[] = {
   1911	{ .fw_name = "xo" },
   1912	{ .hw = &gpll0.clkr.hw },
   1913	{ .hw = &gpll2.clkr.hw },
   1914	{ .fw_name = "bias_pll_nss_noc_clk" },
   1915};
   1916
   1917static const struct parent_map gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk_map[] = {
   1918	{ P_XO, 0 },
   1919	{ P_GPLL0, 1 },
   1920	{ P_GPLL2, 3 },
   1921	{ P_BIAS_PLL_NSS_NOC, 4 },
   1922};
   1923
   1924static struct clk_rcg2 ubi32_mem_noc_bfdcd_clk_src = {
   1925	.cmd_rcgr = 0x68088,
   1926	.freq_tbl = ftbl_ubi32_mem_noc_bfdcd_clk_src,
   1927	.hid_width = 5,
   1928	.parent_map = gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk_map,
   1929	.clkr.hw.init = &(struct clk_init_data){
   1930		.name = "ubi32_mem_noc_bfdcd_clk_src",
   1931		.parent_data = gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk,
   1932		.num_parents = 4,
   1933		.ops = &clk_rcg2_ops,
   1934	},
   1935};
   1936
   1937static struct clk_branch gcc_apss_axi_clk = {
   1938	.halt_reg = 0x46020,
   1939	.halt_check = BRANCH_HALT_VOTED,
   1940	.clkr = {
   1941		.enable_reg = 0x0b004,
   1942		.enable_mask = BIT(13),
   1943		.hw.init = &(struct clk_init_data){
   1944			.name = "gcc_apss_axi_clk",
   1945			.parent_hws = (const struct clk_hw *[]){
   1946					&apss_axi_clk_src.clkr.hw },
   1947			.num_parents = 1,
   1948			.flags = CLK_SET_RATE_PARENT,
   1949			.ops = &clk_branch2_ops,
   1950		},
   1951	},
   1952};
   1953
   1954static struct clk_branch gcc_blsp1_ahb_clk = {
   1955	.halt_reg = 0x01008,
   1956	.halt_check = BRANCH_HALT_VOTED,
   1957	.clkr = {
   1958		.enable_reg = 0x0b004,
   1959		.enable_mask = BIT(10),
   1960		.hw.init = &(struct clk_init_data){
   1961			.name = "gcc_blsp1_ahb_clk",
   1962			.parent_hws = (const struct clk_hw *[]){
   1963					&pcnoc_bfdcd_clk_src.clkr.hw },
   1964			.num_parents = 1,
   1965			.flags = CLK_SET_RATE_PARENT,
   1966			.ops = &clk_branch2_ops,
   1967		},
   1968	},
   1969};
   1970
   1971static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
   1972	.halt_reg = 0x02008,
   1973	.clkr = {
   1974		.enable_reg = 0x02008,
   1975		.enable_mask = BIT(0),
   1976		.hw.init = &(struct clk_init_data){
   1977			.name = "gcc_blsp1_qup1_i2c_apps_clk",
   1978			.parent_hws = (const struct clk_hw *[]){
   1979					&blsp1_qup1_i2c_apps_clk_src.clkr.hw },
   1980			.num_parents = 1,
   1981			.flags = CLK_SET_RATE_PARENT,
   1982			.ops = &clk_branch2_ops,
   1983		},
   1984	},
   1985};
   1986
   1987static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
   1988	.halt_reg = 0x02004,
   1989	.clkr = {
   1990		.enable_reg = 0x02004,
   1991		.enable_mask = BIT(0),
   1992		.hw.init = &(struct clk_init_data){
   1993			.name = "gcc_blsp1_qup1_spi_apps_clk",
   1994			.parent_hws = (const struct clk_hw *[]){
   1995					&blsp1_qup1_spi_apps_clk_src.clkr.hw },
   1996			.num_parents = 1,
   1997			.flags = CLK_SET_RATE_PARENT,
   1998			.ops = &clk_branch2_ops,
   1999		},
   2000	},
   2001};
   2002
   2003static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
   2004	.halt_reg = 0x03010,
   2005	.clkr = {
   2006		.enable_reg = 0x03010,
   2007		.enable_mask = BIT(0),
   2008		.hw.init = &(struct clk_init_data){
   2009			.name = "gcc_blsp1_qup2_i2c_apps_clk",
   2010			.parent_hws = (const struct clk_hw *[]){
   2011					&blsp1_qup2_i2c_apps_clk_src.clkr.hw },
   2012			.num_parents = 1,
   2013			.flags = CLK_SET_RATE_PARENT,
   2014			.ops = &clk_branch2_ops,
   2015		},
   2016	},
   2017};
   2018
   2019static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
   2020	.halt_reg = 0x0300c,
   2021	.clkr = {
   2022		.enable_reg = 0x0300c,
   2023		.enable_mask = BIT(0),
   2024		.hw.init = &(struct clk_init_data){
   2025			.name = "gcc_blsp1_qup2_spi_apps_clk",
   2026			.parent_hws = (const struct clk_hw *[]){
   2027					&blsp1_qup2_spi_apps_clk_src.clkr.hw },
   2028			.num_parents = 1,
   2029			.flags = CLK_SET_RATE_PARENT,
   2030			.ops = &clk_branch2_ops,
   2031		},
   2032	},
   2033};
   2034
   2035static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
   2036	.halt_reg = 0x04010,
   2037	.clkr = {
   2038		.enable_reg = 0x04010,
   2039		.enable_mask = BIT(0),
   2040		.hw.init = &(struct clk_init_data){
   2041			.name = "gcc_blsp1_qup3_i2c_apps_clk",
   2042			.parent_hws = (const struct clk_hw *[]){
   2043					&blsp1_qup3_i2c_apps_clk_src.clkr.hw },
   2044			.num_parents = 1,
   2045			.flags = CLK_SET_RATE_PARENT,
   2046			.ops = &clk_branch2_ops,
   2047		},
   2048	},
   2049};
   2050
   2051static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
   2052	.halt_reg = 0x0400c,
   2053	.clkr = {
   2054		.enable_reg = 0x0400c,
   2055		.enable_mask = BIT(0),
   2056		.hw.init = &(struct clk_init_data){
   2057			.name = "gcc_blsp1_qup3_spi_apps_clk",
   2058			.parent_hws = (const struct clk_hw *[]){
   2059					&blsp1_qup3_spi_apps_clk_src.clkr.hw },
   2060			.num_parents = 1,
   2061			.flags = CLK_SET_RATE_PARENT,
   2062			.ops = &clk_branch2_ops,
   2063		},
   2064	},
   2065};
   2066
   2067static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
   2068	.halt_reg = 0x05010,
   2069	.clkr = {
   2070		.enable_reg = 0x05010,
   2071		.enable_mask = BIT(0),
   2072		.hw.init = &(struct clk_init_data){
   2073			.name = "gcc_blsp1_qup4_i2c_apps_clk",
   2074			.parent_hws = (const struct clk_hw *[]){
   2075					&blsp1_qup4_i2c_apps_clk_src.clkr.hw },
   2076			.num_parents = 1,
   2077			.flags = CLK_SET_RATE_PARENT,
   2078			.ops = &clk_branch2_ops,
   2079		},
   2080	},
   2081};
   2082
   2083static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
   2084	.halt_reg = 0x0500c,
   2085	.clkr = {
   2086		.enable_reg = 0x0500c,
   2087		.enable_mask = BIT(0),
   2088		.hw.init = &(struct clk_init_data){
   2089			.name = "gcc_blsp1_qup4_spi_apps_clk",
   2090			.parent_hws = (const struct clk_hw *[]){
   2091					&blsp1_qup4_spi_apps_clk_src.clkr.hw },
   2092			.num_parents = 1,
   2093			.flags = CLK_SET_RATE_PARENT,
   2094			.ops = &clk_branch2_ops,
   2095		},
   2096	},
   2097};
   2098
   2099static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
   2100	.halt_reg = 0x06010,
   2101	.clkr = {
   2102		.enable_reg = 0x06010,
   2103		.enable_mask = BIT(0),
   2104		.hw.init = &(struct clk_init_data){
   2105			.name = "gcc_blsp1_qup5_i2c_apps_clk",
   2106			.parent_hws = (const struct clk_hw *[]){
   2107					&blsp1_qup5_i2c_apps_clk_src.clkr.hw },
   2108			.num_parents = 1,
   2109			.flags = CLK_SET_RATE_PARENT,
   2110			.ops = &clk_branch2_ops,
   2111		},
   2112	},
   2113};
   2114
   2115static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
   2116	.halt_reg = 0x0600c,
   2117	.clkr = {
   2118		.enable_reg = 0x0600c,
   2119		.enable_mask = BIT(0),
   2120		.hw.init = &(struct clk_init_data){
   2121			.name = "gcc_blsp1_qup5_spi_apps_clk",
   2122			.parent_hws = (const struct clk_hw *[]){
   2123					&blsp1_qup5_spi_apps_clk_src.clkr.hw },
   2124			.num_parents = 1,
   2125			.flags = CLK_SET_RATE_PARENT,
   2126			.ops = &clk_branch2_ops,
   2127		},
   2128	},
   2129};
   2130
   2131static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
   2132	.halt_reg = 0x0700c,
   2133	.clkr = {
   2134		.enable_reg = 0x0700c,
   2135		.enable_mask = BIT(0),
   2136		.hw.init = &(struct clk_init_data){
   2137			.name = "gcc_blsp1_qup6_spi_apps_clk",
   2138			.parent_hws = (const struct clk_hw *[]){
   2139					&blsp1_qup6_spi_apps_clk_src.clkr.hw },
   2140			.num_parents = 1,
   2141			.flags = CLK_SET_RATE_PARENT,
   2142			.ops = &clk_branch2_ops,
   2143		},
   2144	},
   2145};
   2146
   2147static struct clk_branch gcc_blsp1_uart1_apps_clk = {
   2148	.halt_reg = 0x0203c,
   2149	.clkr = {
   2150		.enable_reg = 0x0203c,
   2151		.enable_mask = BIT(0),
   2152		.hw.init = &(struct clk_init_data){
   2153			.name = "gcc_blsp1_uart1_apps_clk",
   2154			.parent_hws = (const struct clk_hw *[]){
   2155					&blsp1_uart1_apps_clk_src.clkr.hw },
   2156			.num_parents = 1,
   2157			.flags = CLK_SET_RATE_PARENT,
   2158			.ops = &clk_branch2_ops,
   2159		},
   2160	},
   2161};
   2162
   2163static struct clk_branch gcc_blsp1_uart2_apps_clk = {
   2164	.halt_reg = 0x0302c,
   2165	.clkr = {
   2166		.enable_reg = 0x0302c,
   2167		.enable_mask = BIT(0),
   2168		.hw.init = &(struct clk_init_data){
   2169			.name = "gcc_blsp1_uart2_apps_clk",
   2170			.parent_hws = (const struct clk_hw *[]){
   2171					&blsp1_uart2_apps_clk_src.clkr.hw },
   2172			.num_parents = 1,
   2173			.flags = CLK_SET_RATE_PARENT,
   2174			.ops = &clk_branch2_ops,
   2175		},
   2176	},
   2177};
   2178
   2179static struct clk_branch gcc_blsp1_uart3_apps_clk = {
   2180	.halt_reg = 0x0402c,
   2181	.clkr = {
   2182		.enable_reg = 0x0402c,
   2183		.enable_mask = BIT(0),
   2184		.hw.init = &(struct clk_init_data){
   2185			.name = "gcc_blsp1_uart3_apps_clk",
   2186			.parent_hws = (const struct clk_hw *[]){
   2187					&blsp1_uart3_apps_clk_src.clkr.hw },
   2188			.num_parents = 1,
   2189			.flags = CLK_SET_RATE_PARENT,
   2190			.ops = &clk_branch2_ops,
   2191		},
   2192	},
   2193};
   2194
   2195static struct clk_branch gcc_blsp1_uart4_apps_clk = {
   2196	.halt_reg = 0x0502c,
   2197	.clkr = {
   2198		.enable_reg = 0x0502c,
   2199		.enable_mask = BIT(0),
   2200		.hw.init = &(struct clk_init_data){
   2201			.name = "gcc_blsp1_uart4_apps_clk",
   2202			.parent_hws = (const struct clk_hw *[]){
   2203					&blsp1_uart4_apps_clk_src.clkr.hw },
   2204			.num_parents = 1,
   2205			.flags = CLK_SET_RATE_PARENT,
   2206			.ops = &clk_branch2_ops,
   2207		},
   2208	},
   2209};
   2210
   2211static struct clk_branch gcc_blsp1_uart5_apps_clk = {
   2212	.halt_reg = 0x0602c,
   2213	.clkr = {
   2214		.enable_reg = 0x0602c,
   2215		.enable_mask = BIT(0),
   2216		.hw.init = &(struct clk_init_data){
   2217			.name = "gcc_blsp1_uart5_apps_clk",
   2218			.parent_hws = (const struct clk_hw *[]){
   2219					&blsp1_uart5_apps_clk_src.clkr.hw },
   2220			.num_parents = 1,
   2221			.flags = CLK_SET_RATE_PARENT,
   2222			.ops = &clk_branch2_ops,
   2223		},
   2224	},
   2225};
   2226
   2227static struct clk_branch gcc_blsp1_uart6_apps_clk = {
   2228	.halt_reg = 0x0702c,
   2229	.clkr = {
   2230		.enable_reg = 0x0702c,
   2231		.enable_mask = BIT(0),
   2232		.hw.init = &(struct clk_init_data){
   2233			.name = "gcc_blsp1_uart6_apps_clk",
   2234			.parent_hws = (const struct clk_hw *[]){
   2235					&blsp1_uart6_apps_clk_src.clkr.hw },
   2236			.num_parents = 1,
   2237			.flags = CLK_SET_RATE_PARENT,
   2238			.ops = &clk_branch2_ops,
   2239		},
   2240	},
   2241};
   2242
   2243static struct clk_branch gcc_crypto_ahb_clk = {
   2244	.halt_reg = 0x16024,
   2245	.halt_check = BRANCH_HALT_VOTED,
   2246	.clkr = {
   2247		.enable_reg = 0x0b004,
   2248		.enable_mask = BIT(0),
   2249		.hw.init = &(struct clk_init_data){
   2250			.name = "gcc_crypto_ahb_clk",
   2251			.parent_hws = (const struct clk_hw *[]){
   2252					&pcnoc_bfdcd_clk_src.clkr.hw },
   2253			.num_parents = 1,
   2254			.flags = CLK_SET_RATE_PARENT,
   2255			.ops = &clk_branch2_ops,
   2256		},
   2257	},
   2258};
   2259
   2260static struct clk_branch gcc_crypto_axi_clk = {
   2261	.halt_reg = 0x16020,
   2262	.halt_check = BRANCH_HALT_VOTED,
   2263	.clkr = {
   2264		.enable_reg = 0x0b004,
   2265		.enable_mask = BIT(1),
   2266		.hw.init = &(struct clk_init_data){
   2267			.name = "gcc_crypto_axi_clk",
   2268			.parent_hws = (const struct clk_hw *[]){
   2269					&pcnoc_bfdcd_clk_src.clkr.hw },
   2270			.num_parents = 1,
   2271			.flags = CLK_SET_RATE_PARENT,
   2272			.ops = &clk_branch2_ops,
   2273		},
   2274	},
   2275};
   2276
   2277static struct clk_branch gcc_crypto_clk = {
   2278	.halt_reg = 0x1601c,
   2279	.halt_check = BRANCH_HALT_VOTED,
   2280	.clkr = {
   2281		.enable_reg = 0x0b004,
   2282		.enable_mask = BIT(2),
   2283		.hw.init = &(struct clk_init_data){
   2284			.name = "gcc_crypto_clk",
   2285			.parent_hws = (const struct clk_hw *[]){
   2286					&crypto_clk_src.clkr.hw },
   2287			.num_parents = 1,
   2288			.flags = CLK_SET_RATE_PARENT,
   2289			.ops = &clk_branch2_ops,
   2290		},
   2291	},
   2292};
   2293
   2294static struct clk_fixed_factor gpll6_out_main_div2 = {
   2295	.mult = 1,
   2296	.div = 2,
   2297	.hw.init = &(struct clk_init_data){
   2298		.name = "gpll6_out_main_div2",
   2299		.parent_hws = (const struct clk_hw *[]){
   2300				&gpll6_main.clkr.hw },
   2301		.num_parents = 1,
   2302		.ops = &clk_fixed_factor_ops,
   2303		.flags = CLK_SET_RATE_PARENT,
   2304	},
   2305};
   2306
   2307static struct clk_branch gcc_xo_clk = {
   2308	.halt_reg = 0x30030,
   2309	.clkr = {
   2310		.enable_reg = 0x30030,
   2311		.enable_mask = BIT(0),
   2312		.hw.init = &(struct clk_init_data){
   2313			.name = "gcc_xo_clk",
   2314			.parent_hws = (const struct clk_hw *[]){
   2315					&gcc_xo_clk_src.clkr.hw },
   2316			.num_parents = 1,
   2317			.flags = CLK_SET_RATE_PARENT,
   2318			.ops = &clk_branch2_ops,
   2319		},
   2320	},
   2321};
   2322
   2323static struct clk_branch gcc_gp1_clk = {
   2324	.halt_reg = 0x08000,
   2325	.clkr = {
   2326		.enable_reg = 0x08000,
   2327		.enable_mask = BIT(0),
   2328		.hw.init = &(struct clk_init_data){
   2329			.name = "gcc_gp1_clk",
   2330			.parent_hws = (const struct clk_hw *[]){
   2331					&gp1_clk_src.clkr.hw },
   2332			.num_parents = 1,
   2333			.flags = CLK_SET_RATE_PARENT,
   2334			.ops = &clk_branch2_ops,
   2335		},
   2336	},
   2337};
   2338
   2339static struct clk_branch gcc_gp2_clk = {
   2340	.halt_reg = 0x09000,
   2341	.clkr = {
   2342		.enable_reg = 0x09000,
   2343		.enable_mask = BIT(0),
   2344		.hw.init = &(struct clk_init_data){
   2345			.name = "gcc_gp2_clk",
   2346			.parent_hws = (const struct clk_hw *[]){
   2347					&gp2_clk_src.clkr.hw },
   2348			.num_parents = 1,
   2349			.flags = CLK_SET_RATE_PARENT,
   2350			.ops = &clk_branch2_ops,
   2351		},
   2352	},
   2353};
   2354
   2355static struct clk_branch gcc_gp3_clk = {
   2356	.halt_reg = 0x0a000,
   2357	.clkr = {
   2358		.enable_reg = 0x0a000,
   2359		.enable_mask = BIT(0),
   2360		.hw.init = &(struct clk_init_data){
   2361			.name = "gcc_gp3_clk",
   2362			.parent_hws = (const struct clk_hw *[]){
   2363					&gp3_clk_src.clkr.hw },
   2364			.num_parents = 1,
   2365			.flags = CLK_SET_RATE_PARENT,
   2366			.ops = &clk_branch2_ops,
   2367		},
   2368	},
   2369};
   2370
   2371static struct clk_branch gcc_mdio_ahb_clk = {
   2372	.halt_reg = 0x58004,
   2373	.clkr = {
   2374		.enable_reg = 0x58004,
   2375		.enable_mask = BIT(0),
   2376		.hw.init = &(struct clk_init_data){
   2377			.name = "gcc_mdio_ahb_clk",
   2378			.parent_hws = (const struct clk_hw *[]){
   2379					&pcnoc_bfdcd_clk_src.clkr.hw },
   2380			.num_parents = 1,
   2381			.flags = CLK_SET_RATE_PARENT,
   2382			.ops = &clk_branch2_ops,
   2383		},
   2384	},
   2385};
   2386
   2387static struct clk_branch gcc_crypto_ppe_clk = {
   2388	.halt_reg = 0x68310,
   2389	.clkr = {
   2390		.enable_reg = 0x68310,
   2391		.enable_mask = BIT(0),
   2392		.hw.init = &(struct clk_init_data){
   2393			.name = "gcc_crypto_ppe_clk",
   2394			.parent_hws = (const struct clk_hw *[]){
   2395					&nss_ppe_clk_src.clkr.hw },
   2396			.num_parents = 1,
   2397			.flags = CLK_SET_RATE_PARENT,
   2398			.ops = &clk_branch2_ops,
   2399		},
   2400	},
   2401};
   2402
   2403static struct clk_branch gcc_nss_ce_apb_clk = {
   2404	.halt_reg = 0x68174,
   2405	.clkr = {
   2406		.enable_reg = 0x68174,
   2407		.enable_mask = BIT(0),
   2408		.hw.init = &(struct clk_init_data){
   2409			.name = "gcc_nss_ce_apb_clk",
   2410			.parent_hws = (const struct clk_hw *[]){
   2411					&nss_ce_clk_src.clkr.hw },
   2412			.num_parents = 1,
   2413			.flags = CLK_SET_RATE_PARENT,
   2414			.ops = &clk_branch2_ops,
   2415		},
   2416	},
   2417};
   2418
   2419static struct clk_branch gcc_nss_ce_axi_clk = {
   2420	.halt_reg = 0x68170,
   2421	.clkr = {
   2422		.enable_reg = 0x68170,
   2423		.enable_mask = BIT(0),
   2424		.hw.init = &(struct clk_init_data){
   2425			.name = "gcc_nss_ce_axi_clk",
   2426			.parent_hws = (const struct clk_hw *[]){
   2427					&nss_ce_clk_src.clkr.hw },
   2428			.num_parents = 1,
   2429			.flags = CLK_SET_RATE_PARENT,
   2430			.ops = &clk_branch2_ops,
   2431		},
   2432	},
   2433};
   2434
   2435static struct clk_branch gcc_nss_cfg_clk = {
   2436	.halt_reg = 0x68160,
   2437	.clkr = {
   2438		.enable_reg = 0x68160,
   2439		.enable_mask = BIT(0),
   2440		.hw.init = &(struct clk_init_data){
   2441			.name = "gcc_nss_cfg_clk",
   2442			.parent_hws = (const struct clk_hw *[]){
   2443					&pcnoc_bfdcd_clk_src.clkr.hw },
   2444			.num_parents = 1,
   2445			.flags = CLK_SET_RATE_PARENT,
   2446			.ops = &clk_branch2_ops,
   2447		},
   2448	},
   2449};
   2450
   2451static struct clk_branch gcc_nss_crypto_clk = {
   2452	.halt_reg = 0x68164,
   2453	.clkr = {
   2454		.enable_reg = 0x68164,
   2455		.enable_mask = BIT(0),
   2456		.hw.init = &(struct clk_init_data){
   2457			.name = "gcc_nss_crypto_clk",
   2458			.parent_hws = (const struct clk_hw *[]){
   2459					&nss_crypto_clk_src.clkr.hw },
   2460			.num_parents = 1,
   2461			.flags = CLK_SET_RATE_PARENT,
   2462			.ops = &clk_branch2_ops,
   2463		},
   2464	},
   2465};
   2466
   2467static struct clk_branch gcc_nss_csr_clk = {
   2468	.halt_reg = 0x68318,
   2469	.clkr = {
   2470		.enable_reg = 0x68318,
   2471		.enable_mask = BIT(0),
   2472		.hw.init = &(struct clk_init_data){
   2473			.name = "gcc_nss_csr_clk",
   2474			.parent_hws = (const struct clk_hw *[]){
   2475					&nss_ce_clk_src.clkr.hw },
   2476			.num_parents = 1,
   2477			.flags = CLK_SET_RATE_PARENT,
   2478			.ops = &clk_branch2_ops,
   2479		},
   2480	},
   2481};
   2482
   2483static struct clk_branch gcc_nss_edma_cfg_clk = {
   2484	.halt_reg = 0x6819C,
   2485	.clkr = {
   2486		.enable_reg = 0x6819C,
   2487		.enable_mask = BIT(0),
   2488		.hw.init = &(struct clk_init_data){
   2489			.name = "gcc_nss_edma_cfg_clk",
   2490			.parent_hws = (const struct clk_hw *[]){
   2491					&nss_ppe_clk_src.clkr.hw },
   2492			.num_parents = 1,
   2493			.flags = CLK_SET_RATE_PARENT,
   2494			.ops = &clk_branch2_ops,
   2495		},
   2496	},
   2497};
   2498
   2499static struct clk_branch gcc_nss_edma_clk = {
   2500	.halt_reg = 0x68198,
   2501	.clkr = {
   2502		.enable_reg = 0x68198,
   2503		.enable_mask = BIT(0),
   2504		.hw.init = &(struct clk_init_data){
   2505			.name = "gcc_nss_edma_clk",
   2506			.parent_hws = (const struct clk_hw *[]){
   2507					&nss_ppe_clk_src.clkr.hw },
   2508			.num_parents = 1,
   2509			.flags = CLK_SET_RATE_PARENT,
   2510			.ops = &clk_branch2_ops,
   2511		},
   2512	},
   2513};
   2514
   2515static struct clk_branch gcc_nss_noc_clk = {
   2516	.halt_reg = 0x68168,
   2517	.clkr = {
   2518		.enable_reg = 0x68168,
   2519		.enable_mask = BIT(0),
   2520		.hw.init = &(struct clk_init_data){
   2521			.name = "gcc_nss_noc_clk",
   2522			.parent_hws = (const struct clk_hw *[]){
   2523					&snoc_nssnoc_bfdcd_clk_src.clkr.hw },
   2524			.num_parents = 1,
   2525			.flags = CLK_SET_RATE_PARENT,
   2526			.ops = &clk_branch2_ops,
   2527		},
   2528	},
   2529};
   2530
   2531static struct clk_branch gcc_ubi0_utcm_clk = {
   2532	.halt_reg = 0x2606c,
   2533	.clkr = {
   2534		.enable_reg = 0x2606c,
   2535		.enable_mask = BIT(0),
   2536		.hw.init = &(struct clk_init_data){
   2537			.name = "gcc_ubi0_utcm_clk",
   2538			.parent_hws = (const struct clk_hw *[]){
   2539					&snoc_nssnoc_bfdcd_clk_src.clkr.hw },
   2540			.num_parents = 1,
   2541			.flags = CLK_SET_RATE_PARENT,
   2542			.ops = &clk_branch2_ops,
   2543		},
   2544	},
   2545};
   2546
   2547static struct clk_branch gcc_snoc_nssnoc_clk = {
   2548	.halt_reg = 0x26070,
   2549	.clkr = {
   2550		.enable_reg = 0x26070,
   2551		.enable_mask = BIT(0),
   2552		.hw.init = &(struct clk_init_data){
   2553			.name = "gcc_snoc_nssnoc_clk",
   2554			.parent_hws = (const struct clk_hw *[]){
   2555					&snoc_nssnoc_bfdcd_clk_src.clkr.hw },
   2556			.num_parents = 1,
   2557			.flags = CLK_SET_RATE_PARENT,
   2558			.ops = &clk_branch2_ops,
   2559		},
   2560	},
   2561};
   2562
   2563static const struct freq_tbl ftbl_wcss_ahb_clk_src[] = {
   2564	F(24000000, P_XO, 1, 0, 0),
   2565	F(133333333, P_GPLL0, 6, 0, 0),
   2566	{ }
   2567};
   2568
   2569static const struct freq_tbl ftbl_q6_axi_clk_src[] = {
   2570	F(24000000, P_XO, 1, 0, 0),
   2571	F(400000000, P_GPLL0, 2, 0, 0),
   2572	{ }
   2573};
   2574
   2575static struct clk_rcg2 wcss_ahb_clk_src = {
   2576	.cmd_rcgr = 0x59020,
   2577	.freq_tbl = ftbl_wcss_ahb_clk_src,
   2578	.hid_width = 5,
   2579	.parent_map = gcc_xo_gpll0_map,
   2580	.clkr.hw.init = &(struct clk_init_data){
   2581		.name = "wcss_ahb_clk_src",
   2582		.parent_data = gcc_xo_gpll0,
   2583		.num_parents = 2,
   2584		.ops = &clk_rcg2_ops,
   2585	},
   2586};
   2587
   2588static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll4_gpll6[] = {
   2589	{ .fw_name = "xo" },
   2590	{ .hw = &gpll0.clkr.hw },
   2591	{ .hw = &gpll2.clkr.hw },
   2592	{ .hw = &gpll4.clkr.hw },
   2593	{ .hw = &gpll6.clkr.hw },
   2594};
   2595
   2596static const struct parent_map gcc_xo_gpll0_gpll2_gpll4_gpll6_map[] = {
   2597	{ P_XO, 0 },
   2598	{ P_GPLL0, 1 },
   2599	{ P_GPLL2, 2 },
   2600	{ P_GPLL4, 3 },
   2601	{ P_GPLL6, 4 },
   2602};
   2603
   2604static struct clk_rcg2 q6_axi_clk_src = {
   2605	.cmd_rcgr = 0x59120,
   2606	.freq_tbl = ftbl_q6_axi_clk_src,
   2607	.hid_width = 5,
   2608	.parent_map = gcc_xo_gpll0_gpll2_gpll4_gpll6_map,
   2609	.clkr.hw.init = &(struct clk_init_data){
   2610		.name = "q6_axi_clk_src",
   2611		.parent_data = gcc_xo_gpll0_gpll2_gpll4_gpll6,
   2612		.num_parents = 5,
   2613		.ops = &clk_rcg2_ops,
   2614	},
   2615};
   2616
   2617static const struct freq_tbl ftbl_lpass_core_axim_clk_src[] = {
   2618	F(24000000, P_XO, 1, 0, 0),
   2619	F(100000000, P_GPLL0, 8, 0, 0),
   2620	{ }
   2621};
   2622
   2623static struct clk_rcg2 lpass_core_axim_clk_src = {
   2624	.cmd_rcgr = 0x1F020,
   2625	.freq_tbl = ftbl_lpass_core_axim_clk_src,
   2626	.hid_width = 5,
   2627	.parent_map = gcc_xo_gpll0_map,
   2628	.clkr.hw.init = &(struct clk_init_data){
   2629		.name = "lpass_core_axim_clk_src",
   2630		.parent_data = gcc_xo_gpll0,
   2631		.num_parents = 2,
   2632		.ops = &clk_rcg2_ops,
   2633	},
   2634};
   2635
   2636static const struct freq_tbl ftbl_lpass_snoc_cfg_clk_src[] = {
   2637	F(24000000, P_XO, 1, 0, 0),
   2638	F(266666667, P_GPLL0, 3, 0, 0),
   2639	{ }
   2640};
   2641
   2642static struct clk_rcg2 lpass_snoc_cfg_clk_src = {
   2643	.cmd_rcgr = 0x1F040,
   2644	.freq_tbl = ftbl_lpass_snoc_cfg_clk_src,
   2645	.hid_width = 5,
   2646	.parent_map = gcc_xo_gpll0_map,
   2647	.clkr.hw.init = &(struct clk_init_data){
   2648		.name = "lpass_snoc_cfg_clk_src",
   2649		.parent_data = gcc_xo_gpll0,
   2650		.num_parents = 2,
   2651		.ops = &clk_rcg2_ops,
   2652	},
   2653};
   2654
   2655static const struct freq_tbl ftbl_lpass_q6_axim_clk_src[] = {
   2656	F(24000000, P_XO, 1, 0, 0),
   2657	F(400000000, P_GPLL0, 2, 0, 0),
   2658	{ }
   2659};
   2660
   2661static struct clk_rcg2 lpass_q6_axim_clk_src = {
   2662	.cmd_rcgr = 0x1F008,
   2663	.freq_tbl = ftbl_lpass_q6_axim_clk_src,
   2664	.hid_width = 5,
   2665	.parent_map = gcc_xo_gpll0_map,
   2666	.clkr.hw.init = &(struct clk_init_data){
   2667		.name = "lpass_q6_axim_clk_src",
   2668		.parent_data = gcc_xo_gpll0,
   2669		.num_parents = 2,
   2670		.ops = &clk_rcg2_ops,
   2671	},
   2672};
   2673
   2674static struct freq_tbl ftbl_rbcpr_wcss_clk_src[] = {
   2675	F(24000000, P_XO, 1, 0, 0),
   2676	F(50000000, P_GPLL0, 16, 0, 0),
   2677	{ }
   2678};
   2679
   2680static struct clk_rcg2 rbcpr_wcss_clk_src = {
   2681	.cmd_rcgr = 0x3a00c,
   2682	.freq_tbl = ftbl_rbcpr_wcss_clk_src,
   2683	.hid_width = 5,
   2684	.parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
   2685	.clkr.hw.init = &(struct clk_init_data){
   2686		.name = "rbcpr_wcss_clk_src",
   2687		.parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
   2688		.num_parents = 3,
   2689		.ops = &clk_rcg2_ops,
   2690	},
   2691};
   2692
   2693static struct clk_branch gcc_lpass_core_axim_clk = {
   2694	.halt_reg = 0x1F028,
   2695	.clkr = {
   2696		.enable_reg = 0x1F028,
   2697		.enable_mask = BIT(0),
   2698		.hw.init = &(struct clk_init_data){
   2699			.name = "gcc_lpass_core_axim_clk",
   2700			.parent_hws = (const struct clk_hw *[]){
   2701					&lpass_core_axim_clk_src.clkr.hw },
   2702			.num_parents = 1,
   2703			.flags = CLK_SET_RATE_PARENT,
   2704			.ops = &clk_branch2_ops,
   2705		},
   2706	},
   2707};
   2708
   2709static struct clk_branch gcc_lpass_snoc_cfg_clk = {
   2710	.halt_reg = 0x1F048,
   2711	.clkr = {
   2712		.enable_reg = 0x1F048,
   2713		.enable_mask = BIT(0),
   2714		.hw.init = &(struct clk_init_data){
   2715			.name = "gcc_lpass_snoc_cfg_clk",
   2716			.parent_hws = (const struct clk_hw *[]){
   2717					&lpass_snoc_cfg_clk_src.clkr.hw },
   2718			.num_parents = 1,
   2719			.flags = CLK_SET_RATE_PARENT,
   2720			.ops = &clk_branch2_ops,
   2721		},
   2722	},
   2723};
   2724
   2725static struct clk_branch gcc_lpass_q6_axim_clk = {
   2726	.halt_reg = 0x1F010,
   2727	.clkr = {
   2728		.enable_reg = 0x1F010,
   2729		.enable_mask = BIT(0),
   2730		.hw.init = &(struct clk_init_data){
   2731			.name = "gcc_lpass_q6_axim_clk",
   2732			.parent_hws = (const struct clk_hw *[]){
   2733					&lpass_q6_axim_clk_src.clkr.hw },
   2734			.num_parents = 1,
   2735			.flags = CLK_SET_RATE_PARENT,
   2736			.ops = &clk_branch2_ops,
   2737		},
   2738	},
   2739};
   2740
   2741static struct clk_branch gcc_lpass_q6_atbm_at_clk = {
   2742	.halt_reg = 0x1F018,
   2743	.clkr = {
   2744		.enable_reg = 0x1F018,
   2745		.enable_mask = BIT(0),
   2746		.hw.init = &(struct clk_init_data){
   2747			.name = "gcc_lpass_q6_atbm_at_clk",
   2748			.parent_hws = (const struct clk_hw *[]){
   2749					&qdss_at_clk_src.clkr.hw },
   2750			.num_parents = 1,
   2751			.flags = CLK_SET_RATE_PARENT,
   2752			.ops = &clk_branch2_ops,
   2753		},
   2754	},
   2755};
   2756
   2757static struct clk_branch gcc_lpass_q6_pclkdbg_clk = {
   2758	.halt_reg = 0x1F01C,
   2759	.clkr = {
   2760		.enable_reg = 0x1F01C,
   2761		.enable_mask = BIT(0),
   2762		.hw.init = &(struct clk_init_data){
   2763			.name = "gcc_lpass_q6_pclkdbg_clk",
   2764			.parent_hws = (const struct clk_hw *[]){
   2765					&qdss_dap_sync_clk_src.hw },
   2766			.num_parents = 1,
   2767			.flags = CLK_SET_RATE_PARENT,
   2768			.ops = &clk_branch2_ops,
   2769		},
   2770	},
   2771};
   2772
   2773static struct clk_branch gcc_lpass_q6ss_tsctr_1to2_clk = {
   2774	.halt_reg = 0x1F014,
   2775	.clkr = {
   2776		.enable_reg = 0x1F014,
   2777		.enable_mask = BIT(0),
   2778		.hw.init = &(struct clk_init_data){
   2779			.name = "gcc_lpass_q6ss_tsctr_1to2_clk",
   2780			.parent_hws = (const struct clk_hw *[]){
   2781					&qdss_tsctr_div2_clk_src.hw },
   2782			.num_parents = 1,
   2783			.flags = CLK_SET_RATE_PARENT,
   2784			.ops = &clk_branch2_ops,
   2785		},
   2786	},
   2787};
   2788
   2789static struct clk_branch gcc_lpass_q6ss_trig_clk = {
   2790	.halt_reg = 0x1F038,
   2791	.clkr = {
   2792		.enable_reg = 0x1F038,
   2793		.enable_mask = BIT(0),
   2794		.hw.init = &(struct clk_init_data){
   2795			.name = "gcc_lpass_q6ss_trig_clk",
   2796			.parent_hws = (const struct clk_hw *[]){
   2797					&qdss_dap_sync_clk_src.hw },
   2798			.num_parents = 1,
   2799			.flags = CLK_SET_RATE_PARENT,
   2800			.ops = &clk_branch2_ops,
   2801		},
   2802	},
   2803};
   2804
   2805static struct clk_branch gcc_lpass_tbu_clk = {
   2806	.halt_reg = 0x12094,
   2807	.clkr = {
   2808		.enable_reg = 0xb00c,
   2809		.enable_mask = BIT(10),
   2810		.hw.init = &(struct clk_init_data){
   2811			.name = "gcc_lpass_tbu_clk",
   2812			.parent_hws = (const struct clk_hw *[]){
   2813					&lpass_q6_axim_clk_src.clkr.hw },
   2814			.num_parents = 1,
   2815			.flags = CLK_SET_RATE_PARENT,
   2816			.ops = &clk_branch2_ops,
   2817		},
   2818	},
   2819};
   2820
   2821static struct clk_branch gcc_pcnoc_lpass_clk = {
   2822	.halt_reg = 0x27020,
   2823	.clkr = {
   2824		.enable_reg = 0x27020,
   2825		.enable_mask = BIT(0),
   2826		.hw.init = &(struct clk_init_data){
   2827			.name = "gcc_pcnoc_lpass_clk",
   2828			.parent_hws = (const struct clk_hw *[]){
   2829					&lpass_core_axim_clk_src.clkr.hw },
   2830			.num_parents = 1,
   2831			.flags = CLK_SET_RATE_PARENT,
   2832			.ops = &clk_branch2_ops,
   2833		},
   2834	},
   2835};
   2836
   2837static struct clk_branch gcc_mem_noc_lpass_clk = {
   2838	.halt_reg = 0x1D044,
   2839	.clkr = {
   2840		.enable_reg = 0x1D044,
   2841		.enable_mask = BIT(0),
   2842		.hw.init = &(struct clk_init_data){
   2843			.name = "gcc_mem_noc_lpass_clk",
   2844			.parent_hws = (const struct clk_hw *[]){
   2845					&lpass_q6_axim_clk_src.clkr.hw },
   2846			.num_parents = 1,
   2847			.flags = CLK_SET_RATE_PARENT,
   2848			.ops = &clk_branch2_ops,
   2849		},
   2850	},
   2851};
   2852
   2853static struct clk_branch gcc_snoc_lpass_cfg_clk = {
   2854	.halt_reg = 0x26074,
   2855	.clkr = {
   2856		.enable_reg = 0x26074,
   2857		.enable_mask = BIT(0),
   2858		.hw.init = &(struct clk_init_data){
   2859			.name = "gcc_snoc_lpass_cfg_clk",
   2860			.parent_hws = (const struct clk_hw *[]){
   2861					&lpass_snoc_cfg_clk_src.clkr.hw },
   2862			.num_parents = 1,
   2863			.flags = CLK_SET_RATE_PARENT,
   2864			.ops = &clk_branch2_ops,
   2865		},
   2866	},
   2867};
   2868
   2869static struct clk_branch gcc_mem_noc_ubi32_clk = {
   2870	.halt_reg = 0x1D03C,
   2871	.clkr = {
   2872		.enable_reg = 0x1D03C,
   2873		.enable_mask = BIT(0),
   2874		.hw.init = &(struct clk_init_data){
   2875			.name = "gcc_mem_noc_ubi32_clk",
   2876			.parent_hws = (const struct clk_hw *[]){
   2877					&ubi32_mem_noc_bfdcd_clk_src.clkr.hw },
   2878			.num_parents = 1,
   2879			.flags = CLK_SET_RATE_PARENT,
   2880			.ops = &clk_branch2_ops,
   2881		},
   2882	},
   2883};
   2884
   2885static struct clk_branch gcc_nss_port1_rx_clk = {
   2886	.halt_reg = 0x68240,
   2887	.clkr = {
   2888		.enable_reg = 0x68240,
   2889		.enable_mask = BIT(0),
   2890		.hw.init = &(struct clk_init_data){
   2891			.name = "gcc_nss_port1_rx_clk",
   2892			.parent_hws = (const struct clk_hw *[]){
   2893					&nss_port1_rx_div_clk_src.clkr.hw },
   2894			.num_parents = 1,
   2895			.flags = CLK_SET_RATE_PARENT,
   2896			.ops = &clk_branch2_ops,
   2897		},
   2898	},
   2899};
   2900
   2901static struct clk_branch gcc_nss_port1_tx_clk = {
   2902	.halt_reg = 0x68244,
   2903	.clkr = {
   2904		.enable_reg = 0x68244,
   2905		.enable_mask = BIT(0),
   2906		.hw.init = &(struct clk_init_data){
   2907			.name = "gcc_nss_port1_tx_clk",
   2908			.parent_hws = (const struct clk_hw *[]){
   2909					&nss_port1_tx_div_clk_src.clkr.hw },
   2910			.num_parents = 1,
   2911			.flags = CLK_SET_RATE_PARENT,
   2912			.ops = &clk_branch2_ops,
   2913		},
   2914	},
   2915};
   2916
   2917static struct clk_branch gcc_nss_port2_rx_clk = {
   2918	.halt_reg = 0x68248,
   2919	.clkr = {
   2920		.enable_reg = 0x68248,
   2921		.enable_mask = BIT(0),
   2922		.hw.init = &(struct clk_init_data){
   2923			.name = "gcc_nss_port2_rx_clk",
   2924			.parent_hws = (const struct clk_hw *[]){
   2925					&nss_port2_rx_div_clk_src.clkr.hw },
   2926			.num_parents = 1,
   2927			.flags = CLK_SET_RATE_PARENT,
   2928			.ops = &clk_branch2_ops,
   2929		},
   2930	},
   2931};
   2932
   2933static struct clk_branch gcc_nss_port2_tx_clk = {
   2934	.halt_reg = 0x6824c,
   2935	.clkr = {
   2936		.enable_reg = 0x6824c,
   2937		.enable_mask = BIT(0),
   2938		.hw.init = &(struct clk_init_data){
   2939			.name = "gcc_nss_port2_tx_clk",
   2940			.parent_hws = (const struct clk_hw *[]){
   2941					&nss_port2_tx_div_clk_src.clkr.hw },
   2942			.num_parents = 1,
   2943			.flags = CLK_SET_RATE_PARENT,
   2944			.ops = &clk_branch2_ops,
   2945		},
   2946	},
   2947};
   2948
   2949static struct clk_branch gcc_nss_port3_rx_clk = {
   2950	.halt_reg = 0x68250,
   2951	.clkr = {
   2952		.enable_reg = 0x68250,
   2953		.enable_mask = BIT(0),
   2954		.hw.init = &(struct clk_init_data){
   2955			.name = "gcc_nss_port3_rx_clk",
   2956			.parent_hws = (const struct clk_hw *[]){
   2957					&nss_port3_rx_div_clk_src.clkr.hw },
   2958			.num_parents = 1,
   2959			.flags = CLK_SET_RATE_PARENT,
   2960			.ops = &clk_branch2_ops,
   2961		},
   2962	},
   2963};
   2964
   2965static struct clk_branch gcc_nss_port3_tx_clk = {
   2966	.halt_reg = 0x68254,
   2967	.clkr = {
   2968		.enable_reg = 0x68254,
   2969		.enable_mask = BIT(0),
   2970		.hw.init = &(struct clk_init_data){
   2971			.name = "gcc_nss_port3_tx_clk",
   2972			.parent_hws = (const struct clk_hw *[]){
   2973					&nss_port3_tx_div_clk_src.clkr.hw },
   2974			.num_parents = 1,
   2975			.flags = CLK_SET_RATE_PARENT,
   2976			.ops = &clk_branch2_ops,
   2977		},
   2978	},
   2979};
   2980
   2981static struct clk_branch gcc_nss_port4_rx_clk = {
   2982	.halt_reg = 0x68258,
   2983	.clkr = {
   2984		.enable_reg = 0x68258,
   2985		.enable_mask = BIT(0),
   2986		.hw.init = &(struct clk_init_data){
   2987			.name = "gcc_nss_port4_rx_clk",
   2988			.parent_hws = (const struct clk_hw *[]){
   2989					&nss_port4_rx_div_clk_src.clkr.hw },
   2990			.num_parents = 1,
   2991			.flags = CLK_SET_RATE_PARENT,
   2992			.ops = &clk_branch2_ops,
   2993		},
   2994	},
   2995};
   2996
   2997static struct clk_branch gcc_nss_port4_tx_clk = {
   2998	.halt_reg = 0x6825c,
   2999	.clkr = {
   3000		.enable_reg = 0x6825c,
   3001		.enable_mask = BIT(0),
   3002		.hw.init = &(struct clk_init_data){
   3003			.name = "gcc_nss_port4_tx_clk",
   3004			.parent_hws = (const struct clk_hw *[]){
   3005					&nss_port4_tx_div_clk_src.clkr.hw },
   3006			.num_parents = 1,
   3007			.flags = CLK_SET_RATE_PARENT,
   3008			.ops = &clk_branch2_ops,
   3009		},
   3010	},
   3011};
   3012
   3013static struct clk_branch gcc_nss_port5_rx_clk = {
   3014	.halt_reg = 0x68260,
   3015	.clkr = {
   3016		.enable_reg = 0x68260,
   3017		.enable_mask = BIT(0),
   3018		.hw.init = &(struct clk_init_data){
   3019			.name = "gcc_nss_port5_rx_clk",
   3020			.parent_hws = (const struct clk_hw *[]){
   3021					&nss_port5_rx_div_clk_src.clkr.hw },
   3022			.num_parents = 1,
   3023			.flags = CLK_SET_RATE_PARENT,
   3024			.ops = &clk_branch2_ops,
   3025		},
   3026	},
   3027};
   3028
   3029static struct clk_branch gcc_nss_port5_tx_clk = {
   3030	.halt_reg = 0x68264,
   3031	.clkr = {
   3032		.enable_reg = 0x68264,
   3033		.enable_mask = BIT(0),
   3034		.hw.init = &(struct clk_init_data){
   3035			.name = "gcc_nss_port5_tx_clk",
   3036			.parent_hws = (const struct clk_hw *[]){
   3037					&nss_port5_tx_div_clk_src.clkr.hw },
   3038			.num_parents = 1,
   3039			.flags = CLK_SET_RATE_PARENT,
   3040			.ops = &clk_branch2_ops,
   3041		},
   3042	},
   3043};
   3044
   3045static struct clk_branch gcc_nss_ppe_cfg_clk = {
   3046	.halt_reg = 0x68194,
   3047	.clkr = {
   3048		.enable_reg = 0x68194,
   3049		.enable_mask = BIT(0),
   3050		.hw.init = &(struct clk_init_data){
   3051			.name = "gcc_nss_ppe_cfg_clk",
   3052			.parent_hws = (const struct clk_hw *[]){
   3053					&nss_ppe_clk_src.clkr.hw },
   3054			.num_parents = 1,
   3055			.flags = CLK_SET_RATE_PARENT,
   3056			.ops = &clk_branch2_ops,
   3057		},
   3058	},
   3059};
   3060
   3061static struct clk_branch gcc_nss_ppe_clk = {
   3062	.halt_reg = 0x68190,
   3063	.clkr = {
   3064		.enable_reg = 0x68190,
   3065		.enable_mask = BIT(0),
   3066		.hw.init = &(struct clk_init_data){
   3067			.name = "gcc_nss_ppe_clk",
   3068			.parent_hws = (const struct clk_hw *[]){
   3069					&nss_ppe_clk_src.clkr.hw },
   3070			.num_parents = 1,
   3071			.flags = CLK_SET_RATE_PARENT,
   3072			.ops = &clk_branch2_ops,
   3073		},
   3074	},
   3075};
   3076
   3077static struct clk_branch gcc_nss_ppe_ipe_clk = {
   3078	.halt_reg = 0x68338,
   3079	.clkr = {
   3080		.enable_reg = 0x68338,
   3081		.enable_mask = BIT(0),
   3082		.hw.init = &(struct clk_init_data){
   3083			.name = "gcc_nss_ppe_ipe_clk",
   3084			.parent_hws = (const struct clk_hw *[]){
   3085					&nss_ppe_clk_src.clkr.hw },
   3086			.num_parents = 1,
   3087			.flags = CLK_SET_RATE_PARENT,
   3088			.ops = &clk_branch2_ops,
   3089		},
   3090	},
   3091};
   3092
   3093static struct clk_branch gcc_nss_ptp_ref_clk = {
   3094	.halt_reg = 0x6816C,
   3095	.clkr = {
   3096		.enable_reg = 0x6816C,
   3097		.enable_mask = BIT(0),
   3098		.hw.init = &(struct clk_init_data){
   3099			.name = "gcc_nss_ptp_ref_clk",
   3100			.parent_hws = (const struct clk_hw *[]){
   3101					&nss_ppe_cdiv_clk_src.hw },
   3102			.num_parents = 1,
   3103			.flags = CLK_SET_RATE_PARENT,
   3104			.ops = &clk_branch2_ops,
   3105		},
   3106	},
   3107};
   3108
   3109static struct clk_branch gcc_nssnoc_ce_apb_clk = {
   3110	.halt_reg = 0x6830C,
   3111	.clkr = {
   3112		.enable_reg = 0x6830C,
   3113		.enable_mask = BIT(0),
   3114		.hw.init = &(struct clk_init_data){
   3115			.name = "gcc_nssnoc_ce_apb_clk",
   3116			.parent_hws = (const struct clk_hw *[]){
   3117					&nss_ce_clk_src.clkr.hw },
   3118			.num_parents = 1,
   3119			.flags = CLK_SET_RATE_PARENT,
   3120			.ops = &clk_branch2_ops,
   3121		},
   3122	},
   3123};
   3124
   3125static struct clk_branch gcc_nssnoc_ce_axi_clk = {
   3126	.halt_reg = 0x68308,
   3127	.clkr = {
   3128		.enable_reg = 0x68308,
   3129		.enable_mask = BIT(0),
   3130		.hw.init = &(struct clk_init_data){
   3131			.name = "gcc_nssnoc_ce_axi_clk",
   3132			.parent_hws = (const struct clk_hw *[]){
   3133					&nss_ce_clk_src.clkr.hw },
   3134			.num_parents = 1,
   3135			.flags = CLK_SET_RATE_PARENT,
   3136			.ops = &clk_branch2_ops,
   3137		},
   3138	},
   3139};
   3140
   3141static struct clk_branch gcc_nssnoc_crypto_clk = {
   3142	.halt_reg = 0x68314,
   3143	.clkr = {
   3144		.enable_reg = 0x68314,
   3145		.enable_mask = BIT(0),
   3146		.hw.init = &(struct clk_init_data){
   3147			.name = "gcc_nssnoc_crypto_clk",
   3148			.parent_hws = (const struct clk_hw *[]){
   3149					&nss_crypto_clk_src.clkr.hw },
   3150			.num_parents = 1,
   3151			.flags = CLK_SET_RATE_PARENT,
   3152			.ops = &clk_branch2_ops,
   3153		},
   3154	},
   3155};
   3156
   3157static struct clk_branch gcc_nssnoc_ppe_cfg_clk = {
   3158	.halt_reg = 0x68304,
   3159	.clkr = {
   3160		.enable_reg = 0x68304,
   3161		.enable_mask = BIT(0),
   3162		.hw.init = &(struct clk_init_data){
   3163			.name = "gcc_nssnoc_ppe_cfg_clk",
   3164			.parent_hws = (const struct clk_hw *[]){
   3165					&nss_ppe_clk_src.clkr.hw },
   3166			.flags = CLK_SET_RATE_PARENT,
   3167			.ops = &clk_branch2_ops,
   3168		},
   3169	},
   3170};
   3171
   3172static struct clk_branch gcc_nssnoc_ppe_clk = {
   3173	.halt_reg = 0x68300,
   3174	.clkr = {
   3175		.enable_reg = 0x68300,
   3176		.enable_mask = BIT(0),
   3177		.hw.init = &(struct clk_init_data){
   3178			.name = "gcc_nssnoc_ppe_clk",
   3179			.parent_hws = (const struct clk_hw *[]){
   3180					&nss_ppe_clk_src.clkr.hw },
   3181			.num_parents = 1,
   3182			.flags = CLK_SET_RATE_PARENT,
   3183			.ops = &clk_branch2_ops,
   3184		},
   3185	},
   3186};
   3187
   3188static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {
   3189	.halt_reg = 0x68180,
   3190	.clkr = {
   3191		.enable_reg = 0x68180,
   3192		.enable_mask = BIT(0),
   3193		.hw.init = &(struct clk_init_data){
   3194			.name = "gcc_nssnoc_qosgen_ref_clk",
   3195			.parent_hws = (const struct clk_hw *[]){
   3196					&gcc_xo_clk_src.clkr.hw },
   3197			.num_parents = 1,
   3198			.flags = CLK_SET_RATE_PARENT,
   3199			.ops = &clk_branch2_ops,
   3200		},
   3201	},
   3202};
   3203
   3204static struct clk_branch gcc_nssnoc_snoc_clk = {
   3205	.halt_reg = 0x68188,
   3206	.clkr = {
   3207		.enable_reg = 0x68188,
   3208		.enable_mask = BIT(0),
   3209		.hw.init = &(struct clk_init_data){
   3210			.name = "gcc_nssnoc_snoc_clk",
   3211			.parent_hws = (const struct clk_hw *[]){
   3212					&system_noc_bfdcd_clk_src.clkr.hw },
   3213			.num_parents = 1,
   3214			.flags = CLK_SET_RATE_PARENT,
   3215			.ops = &clk_branch2_ops,
   3216		},
   3217	},
   3218};
   3219
   3220static struct clk_branch gcc_nssnoc_timeout_ref_clk = {
   3221	.halt_reg = 0x68184,
   3222	.clkr = {
   3223		.enable_reg = 0x68184,
   3224		.enable_mask = BIT(0),
   3225		.hw.init = &(struct clk_init_data){
   3226			.name = "gcc_nssnoc_timeout_ref_clk",
   3227			.parent_hws = (const struct clk_hw *[]){
   3228					&gcc_xo_div4_clk_src.hw },
   3229			.num_parents = 1,
   3230			.flags = CLK_SET_RATE_PARENT,
   3231			.ops = &clk_branch2_ops,
   3232		},
   3233	},
   3234};
   3235
   3236static struct clk_branch gcc_nssnoc_ubi0_ahb_clk = {
   3237	.halt_reg = 0x68270,
   3238	.clkr = {
   3239		.enable_reg = 0x68270,
   3240		.enable_mask = BIT(0),
   3241		.hw.init = &(struct clk_init_data){
   3242			.name = "gcc_nssnoc_ubi0_ahb_clk",
   3243			.parent_hws = (const struct clk_hw *[]){
   3244					&nss_ce_clk_src.clkr.hw },
   3245			.num_parents = 1,
   3246			.flags = CLK_SET_RATE_PARENT,
   3247			.ops = &clk_branch2_ops,
   3248		},
   3249	},
   3250};
   3251
   3252static struct clk_branch gcc_port1_mac_clk = {
   3253	.halt_reg = 0x68320,
   3254	.clkr = {
   3255		.enable_reg = 0x68320,
   3256		.enable_mask = BIT(0),
   3257		.hw.init = &(struct clk_init_data){
   3258			.name = "gcc_port1_mac_clk",
   3259			.parent_hws = (const struct clk_hw *[]){
   3260					&nss_ppe_clk_src.clkr.hw },
   3261			.num_parents = 1,
   3262			.flags = CLK_SET_RATE_PARENT,
   3263			.ops = &clk_branch2_ops,
   3264		},
   3265	},
   3266};
   3267
   3268static struct clk_branch gcc_port2_mac_clk = {
   3269	.halt_reg = 0x68324,
   3270	.clkr = {
   3271		.enable_reg = 0x68324,
   3272		.enable_mask = BIT(0),
   3273		.hw.init = &(struct clk_init_data){
   3274			.name = "gcc_port2_mac_clk",
   3275			.parent_hws = (const struct clk_hw *[]){
   3276					&nss_ppe_clk_src.clkr.hw },
   3277			.num_parents = 1,
   3278			.flags = CLK_SET_RATE_PARENT,
   3279			.ops = &clk_branch2_ops,
   3280		},
   3281	},
   3282};
   3283
   3284static struct clk_branch gcc_port3_mac_clk = {
   3285	.halt_reg = 0x68328,
   3286	.clkr = {
   3287		.enable_reg = 0x68328,
   3288		.enable_mask = BIT(0),
   3289		.hw.init = &(struct clk_init_data){
   3290			.name = "gcc_port3_mac_clk",
   3291			.parent_hws = (const struct clk_hw *[]){
   3292					&nss_ppe_clk_src.clkr.hw },
   3293			.num_parents = 1,
   3294			.flags = CLK_SET_RATE_PARENT,
   3295			.ops = &clk_branch2_ops,
   3296		},
   3297	},
   3298};
   3299
   3300static struct clk_branch gcc_port4_mac_clk = {
   3301	.halt_reg = 0x6832c,
   3302	.clkr = {
   3303		.enable_reg = 0x6832c,
   3304		.enable_mask = BIT(0),
   3305		.hw.init = &(struct clk_init_data){
   3306			.name = "gcc_port4_mac_clk",
   3307			.parent_hws = (const struct clk_hw *[]){
   3308					&nss_ppe_clk_src.clkr.hw },
   3309			.num_parents = 1,
   3310			.flags = CLK_SET_RATE_PARENT,
   3311			.ops = &clk_branch2_ops,
   3312		},
   3313	},
   3314};
   3315
   3316static struct clk_branch gcc_port5_mac_clk = {
   3317	.halt_reg = 0x68330,
   3318	.clkr = {
   3319		.enable_reg = 0x68330,
   3320		.enable_mask = BIT(0),
   3321		.hw.init = &(struct clk_init_data){
   3322			.name = "gcc_port5_mac_clk",
   3323			.parent_hws = (const struct clk_hw *[]){
   3324					&nss_ppe_clk_src.clkr.hw },
   3325			.num_parents = 1,
   3326			.flags = CLK_SET_RATE_PARENT,
   3327			.ops = &clk_branch2_ops,
   3328		},
   3329	},
   3330};
   3331
   3332static struct clk_branch gcc_ubi0_ahb_clk = {
   3333	.halt_reg = 0x6820C,
   3334	.halt_check = BRANCH_HALT_DELAY,
   3335	.clkr = {
   3336		.enable_reg = 0x6820C,
   3337		.enable_mask = BIT(0),
   3338		.hw.init = &(struct clk_init_data){
   3339			.name = "gcc_ubi0_ahb_clk",
   3340			.parent_hws = (const struct clk_hw *[]){
   3341					&nss_ce_clk_src.clkr.hw },
   3342			.num_parents = 1,
   3343			.flags = CLK_SET_RATE_PARENT,
   3344			.ops = &clk_branch2_ops,
   3345		},
   3346	},
   3347};
   3348
   3349static struct clk_branch gcc_ubi0_axi_clk = {
   3350	.halt_reg = 0x68200,
   3351	.halt_check = BRANCH_HALT_DELAY,
   3352	.clkr = {
   3353		.enable_reg = 0x68200,
   3354		.enable_mask = BIT(0),
   3355		.hw.init = &(struct clk_init_data){
   3356			.name = "gcc_ubi0_axi_clk",
   3357			.parent_hws = (const struct clk_hw *[]){
   3358					&ubi32_mem_noc_bfdcd_clk_src.clkr.hw },
   3359			.num_parents = 1,
   3360			.flags = CLK_SET_RATE_PARENT,
   3361			.ops = &clk_branch2_ops,
   3362		},
   3363	},
   3364};
   3365
   3366static struct clk_branch gcc_ubi0_nc_axi_clk = {
   3367	.halt_reg = 0x68204,
   3368	.halt_check = BRANCH_HALT_DELAY,
   3369	.clkr = {
   3370		.enable_reg = 0x68204,
   3371		.enable_mask = BIT(0),
   3372		.hw.init = &(struct clk_init_data){
   3373			.name = "gcc_ubi0_nc_axi_clk",
   3374			.parent_hws = (const struct clk_hw *[]){
   3375					&snoc_nssnoc_bfdcd_clk_src.clkr.hw },
   3376			.num_parents = 1,
   3377			.flags = CLK_SET_RATE_PARENT,
   3378			.ops = &clk_branch2_ops,
   3379		},
   3380	},
   3381};
   3382
   3383static struct clk_branch gcc_ubi0_core_clk = {
   3384	.halt_reg = 0x68210,
   3385	.halt_check = BRANCH_HALT_DELAY,
   3386	.clkr = {
   3387		.enable_reg = 0x68210,
   3388		.enable_mask = BIT(0),
   3389		.hw.init = &(struct clk_init_data){
   3390			.name = "gcc_ubi0_core_clk",
   3391			.parent_hws = (const struct clk_hw *[]){
   3392					&nss_ubi0_div_clk_src.clkr.hw },
   3393			.num_parents = 1,
   3394			.flags = CLK_SET_RATE_PARENT,
   3395			.ops = &clk_branch2_ops,
   3396		},
   3397	},
   3398};
   3399
   3400static struct clk_branch gcc_pcie0_ahb_clk = {
   3401	.halt_reg = 0x75010,
   3402	.clkr = {
   3403		.enable_reg = 0x75010,
   3404		.enable_mask = BIT(0),
   3405		.hw.init = &(struct clk_init_data){
   3406			.name = "gcc_pcie0_ahb_clk",
   3407			.parent_hws = (const struct clk_hw *[]){
   3408					&pcnoc_bfdcd_clk_src.clkr.hw },
   3409			.num_parents = 1,
   3410			.flags = CLK_SET_RATE_PARENT,
   3411			.ops = &clk_branch2_ops,
   3412		},
   3413	},
   3414};
   3415
   3416static struct clk_branch gcc_pcie0_aux_clk = {
   3417	.halt_reg = 0x75014,
   3418	.clkr = {
   3419		.enable_reg = 0x75014,
   3420		.enable_mask = BIT(0),
   3421		.hw.init = &(struct clk_init_data){
   3422			.name = "gcc_pcie0_aux_clk",
   3423			.parent_hws = (const struct clk_hw *[]){
   3424					&pcie0_aux_clk_src.clkr.hw },
   3425			.num_parents = 1,
   3426			.flags = CLK_SET_RATE_PARENT,
   3427			.ops = &clk_branch2_ops,
   3428		},
   3429	},
   3430};
   3431
   3432static struct clk_branch gcc_pcie0_axi_m_clk = {
   3433	.halt_reg = 0x75008,
   3434	.clkr = {
   3435		.enable_reg = 0x75008,
   3436		.enable_mask = BIT(0),
   3437		.hw.init = &(struct clk_init_data){
   3438			.name = "gcc_pcie0_axi_m_clk",
   3439			.parent_hws = (const struct clk_hw *[]){
   3440					&pcie0_axi_clk_src.clkr.hw },
   3441			.num_parents = 1,
   3442			.flags = CLK_SET_RATE_PARENT,
   3443			.ops = &clk_branch2_ops,
   3444		},
   3445	},
   3446};
   3447
   3448static struct clk_branch gcc_pcie0_axi_s_clk = {
   3449	.halt_reg = 0x7500c,
   3450	.clkr = {
   3451		.enable_reg = 0x7500c,
   3452		.enable_mask = BIT(0),
   3453		.hw.init = &(struct clk_init_data){
   3454			.name = "gcc_pcie0_axi_s_clk",
   3455			.parent_hws = (const struct clk_hw *[]){
   3456					&pcie0_axi_clk_src.clkr.hw },
   3457			.num_parents = 1,
   3458			.flags = CLK_SET_RATE_PARENT,
   3459			.ops = &clk_branch2_ops,
   3460		},
   3461	},
   3462};
   3463
   3464static struct clk_branch gcc_sys_noc_pcie0_axi_clk = {
   3465	.halt_reg = 0x26048,
   3466	.clkr = {
   3467		.enable_reg = 0x26048,
   3468		.enable_mask = BIT(0),
   3469		.hw.init = &(struct clk_init_data){
   3470			.name = "gcc_sys_noc_pcie0_axi_clk",
   3471			.parent_hws = (const struct clk_hw *[]){
   3472					&pcie0_axi_clk_src.clkr.hw },
   3473			.num_parents = 1,
   3474			.flags = CLK_SET_RATE_PARENT,
   3475			.ops = &clk_branch2_ops,
   3476		},
   3477	},
   3478};
   3479
   3480static struct clk_branch gcc_pcie0_pipe_clk = {
   3481	.halt_reg = 0x75018,
   3482	.halt_check = BRANCH_HALT_DELAY,
   3483	.clkr = {
   3484		.enable_reg = 0x75018,
   3485		.enable_mask = BIT(0),
   3486		.hw.init = &(struct clk_init_data){
   3487			.name = "gcc_pcie0_pipe_clk",
   3488			.parent_hws = (const struct clk_hw *[]){
   3489					&pcie0_pipe_clk_src.clkr.hw },
   3490			.num_parents = 1,
   3491			.flags = CLK_SET_RATE_PARENT,
   3492			.ops = &clk_branch2_ops,
   3493		},
   3494	},
   3495};
   3496
   3497static struct clk_branch gcc_prng_ahb_clk = {
   3498	.halt_reg = 0x13004,
   3499	.halt_check = BRANCH_HALT_VOTED,
   3500	.clkr = {
   3501		.enable_reg = 0x0b004,
   3502		.enable_mask = BIT(8),
   3503		.hw.init = &(struct clk_init_data){
   3504			.name = "gcc_prng_ahb_clk",
   3505			.parent_hws = (const struct clk_hw *[]){
   3506					&pcnoc_bfdcd_clk_src.clkr.hw },
   3507			.num_parents = 1,
   3508			.flags = CLK_SET_RATE_PARENT,
   3509			.ops = &clk_branch2_ops,
   3510		},
   3511	},
   3512};
   3513
   3514static struct clk_branch gcc_qdss_dap_clk = {
   3515	.halt_reg = 0x29084,
   3516	.clkr = {
   3517		.enable_reg = 0x29084,
   3518		.enable_mask = BIT(0),
   3519		.hw.init = &(struct clk_init_data){
   3520			.name = "gcc_qdss_dap_clk",
   3521			.parent_hws = (const struct clk_hw *[]){
   3522					&qdss_dap_sync_clk_src.hw },
   3523			.num_parents = 1,
   3524			.flags = CLK_SET_RATE_PARENT,
   3525			.ops = &clk_branch2_ops,
   3526		},
   3527	},
   3528};
   3529
   3530static struct clk_branch gcc_qpic_ahb_clk = {
   3531	.halt_reg = 0x57024,
   3532	.clkr = {
   3533		.enable_reg = 0x57024,
   3534		.enable_mask = BIT(0),
   3535		.hw.init = &(struct clk_init_data){
   3536			.name = "gcc_qpic_ahb_clk",
   3537			.parent_hws = (const struct clk_hw *[]){
   3538					&pcnoc_bfdcd_clk_src.clkr.hw },
   3539			.num_parents = 1,
   3540			.flags = CLK_SET_RATE_PARENT,
   3541			.ops = &clk_branch2_ops,
   3542		},
   3543	},
   3544};
   3545
   3546static struct clk_branch gcc_qpic_clk = {
   3547	.halt_reg = 0x57020,
   3548	.clkr = {
   3549		.enable_reg = 0x57020,
   3550		.enable_mask = BIT(0),
   3551		.hw.init = &(struct clk_init_data){
   3552			.name = "gcc_qpic_clk",
   3553			.parent_hws = (const struct clk_hw *[]){
   3554					&pcnoc_bfdcd_clk_src.clkr.hw },
   3555			.num_parents = 1,
   3556			.flags = CLK_SET_RATE_PARENT,
   3557			.ops = &clk_branch2_ops,
   3558		},
   3559	},
   3560};
   3561
   3562static struct clk_branch gcc_sdcc1_ahb_clk = {
   3563	.halt_reg = 0x4201c,
   3564	.clkr = {
   3565		.enable_reg = 0x4201c,
   3566		.enable_mask = BIT(0),
   3567		.hw.init = &(struct clk_init_data){
   3568			.name = "gcc_sdcc1_ahb_clk",
   3569			.parent_hws = (const struct clk_hw *[]){
   3570					&pcnoc_bfdcd_clk_src.clkr.hw },
   3571			.num_parents = 1,
   3572			.flags = CLK_SET_RATE_PARENT,
   3573			.ops = &clk_branch2_ops,
   3574		},
   3575	},
   3576};
   3577
   3578static struct clk_branch gcc_sdcc1_apps_clk = {
   3579	.halt_reg = 0x42018,
   3580	.clkr = {
   3581		.enable_reg = 0x42018,
   3582		.enable_mask = BIT(0),
   3583		.hw.init = &(struct clk_init_data){
   3584			.name = "gcc_sdcc1_apps_clk",
   3585			.parent_hws = (const struct clk_hw *[]){
   3586					&sdcc1_apps_clk_src.clkr.hw },
   3587			.num_parents = 1,
   3588			.flags = CLK_SET_RATE_PARENT,
   3589			.ops = &clk_branch2_ops,
   3590		},
   3591	},
   3592};
   3593
   3594static struct clk_branch gcc_uniphy0_ahb_clk = {
   3595	.halt_reg = 0x56008,
   3596	.clkr = {
   3597		.enable_reg = 0x56008,
   3598		.enable_mask = BIT(0),
   3599		.hw.init = &(struct clk_init_data){
   3600			.name = "gcc_uniphy0_ahb_clk",
   3601			.parent_hws = (const struct clk_hw *[]){
   3602					&pcnoc_bfdcd_clk_src.clkr.hw },
   3603			.num_parents = 1,
   3604			.flags = CLK_SET_RATE_PARENT,
   3605			.ops = &clk_branch2_ops,
   3606		},
   3607	},
   3608};
   3609
   3610static struct clk_branch gcc_uniphy0_port1_rx_clk = {
   3611	.halt_reg = 0x56010,
   3612	.clkr = {
   3613		.enable_reg = 0x56010,
   3614		.enable_mask = BIT(0),
   3615		.hw.init = &(struct clk_init_data){
   3616			.name = "gcc_uniphy0_port1_rx_clk",
   3617			.parent_hws = (const struct clk_hw *[]){
   3618					&nss_port1_rx_div_clk_src.clkr.hw },
   3619			.num_parents = 1,
   3620			.flags = CLK_SET_RATE_PARENT,
   3621			.ops = &clk_branch2_ops,
   3622		},
   3623	},
   3624};
   3625
   3626static struct clk_branch gcc_uniphy0_port1_tx_clk = {
   3627	.halt_reg = 0x56014,
   3628	.clkr = {
   3629		.enable_reg = 0x56014,
   3630		.enable_mask = BIT(0),
   3631		.hw.init = &(struct clk_init_data){
   3632			.name = "gcc_uniphy0_port1_tx_clk",
   3633			.parent_hws = (const struct clk_hw *[]){
   3634					&nss_port1_tx_div_clk_src.clkr.hw },
   3635			.num_parents = 1,
   3636			.flags = CLK_SET_RATE_PARENT,
   3637			.ops = &clk_branch2_ops,
   3638		},
   3639	},
   3640};
   3641
   3642static struct clk_branch gcc_uniphy0_port2_rx_clk = {
   3643	.halt_reg = 0x56018,
   3644	.clkr = {
   3645		.enable_reg = 0x56018,
   3646		.enable_mask = BIT(0),
   3647		.hw.init = &(struct clk_init_data){
   3648			.name = "gcc_uniphy0_port2_rx_clk",
   3649			.parent_hws = (const struct clk_hw *[]){
   3650					&nss_port2_rx_div_clk_src.clkr.hw },
   3651			.num_parents = 1,
   3652			.flags = CLK_SET_RATE_PARENT,
   3653			.ops = &clk_branch2_ops,
   3654		},
   3655	},
   3656};
   3657
   3658static struct clk_branch gcc_uniphy0_port2_tx_clk = {
   3659	.halt_reg = 0x5601c,
   3660	.clkr = {
   3661		.enable_reg = 0x5601c,
   3662		.enable_mask = BIT(0),
   3663		.hw.init = &(struct clk_init_data){
   3664			.name = "gcc_uniphy0_port2_tx_clk",
   3665			.parent_hws = (const struct clk_hw *[]){
   3666					&nss_port2_tx_div_clk_src.clkr.hw },
   3667			.num_parents = 1,
   3668			.flags = CLK_SET_RATE_PARENT,
   3669			.ops = &clk_branch2_ops,
   3670		},
   3671	},
   3672};
   3673
   3674static struct clk_branch gcc_uniphy0_port3_rx_clk = {
   3675	.halt_reg = 0x56020,
   3676	.clkr = {
   3677		.enable_reg = 0x56020,
   3678		.enable_mask = BIT(0),
   3679		.hw.init = &(struct clk_init_data){
   3680			.name = "gcc_uniphy0_port3_rx_clk",
   3681			.parent_hws = (const struct clk_hw *[]){
   3682					&nss_port3_rx_div_clk_src.clkr.hw },
   3683			.num_parents = 1,
   3684			.flags = CLK_SET_RATE_PARENT,
   3685			.ops = &clk_branch2_ops,
   3686		},
   3687	},
   3688};
   3689
   3690static struct clk_branch gcc_uniphy0_port3_tx_clk = {
   3691	.halt_reg = 0x56024,
   3692	.clkr = {
   3693		.enable_reg = 0x56024,
   3694		.enable_mask = BIT(0),
   3695		.hw.init = &(struct clk_init_data){
   3696			.name = "gcc_uniphy0_port3_tx_clk",
   3697			.parent_hws = (const struct clk_hw *[]){
   3698					&nss_port3_tx_div_clk_src.clkr.hw },
   3699			.num_parents = 1,
   3700			.flags = CLK_SET_RATE_PARENT,
   3701			.ops = &clk_branch2_ops,
   3702		},
   3703	},
   3704};
   3705
   3706static struct clk_branch gcc_uniphy0_port4_rx_clk = {
   3707	.halt_reg = 0x56028,
   3708	.clkr = {
   3709		.enable_reg = 0x56028,
   3710		.enable_mask = BIT(0),
   3711		.hw.init = &(struct clk_init_data){
   3712			.name = "gcc_uniphy0_port4_rx_clk",
   3713			.parent_hws = (const struct clk_hw *[]){
   3714					&nss_port4_rx_div_clk_src.clkr.hw },
   3715			.num_parents = 1,
   3716			.flags = CLK_SET_RATE_PARENT,
   3717			.ops = &clk_branch2_ops,
   3718		},
   3719	},
   3720};
   3721
   3722static struct clk_branch gcc_uniphy0_port4_tx_clk = {
   3723	.halt_reg = 0x5602c,
   3724	.clkr = {
   3725		.enable_reg = 0x5602c,
   3726		.enable_mask = BIT(0),
   3727		.hw.init = &(struct clk_init_data){
   3728			.name = "gcc_uniphy0_port4_tx_clk",
   3729			.parent_hws = (const struct clk_hw *[]){
   3730					&nss_port4_tx_div_clk_src.clkr.hw },
   3731			.num_parents = 1,
   3732			.flags = CLK_SET_RATE_PARENT,
   3733			.ops = &clk_branch2_ops,
   3734		},
   3735	},
   3736};
   3737
   3738static struct clk_branch gcc_uniphy0_port5_rx_clk = {
   3739	.halt_reg = 0x56030,
   3740	.clkr = {
   3741		.enable_reg = 0x56030,
   3742		.enable_mask = BIT(0),
   3743		.hw.init = &(struct clk_init_data){
   3744			.name = "gcc_uniphy0_port5_rx_clk",
   3745			.parent_hws = (const struct clk_hw *[]){
   3746					&nss_port5_rx_div_clk_src.clkr.hw },
   3747			.num_parents = 1,
   3748			.flags = CLK_SET_RATE_PARENT,
   3749			.ops = &clk_branch2_ops,
   3750		},
   3751	},
   3752};
   3753
   3754static struct clk_branch gcc_uniphy0_port5_tx_clk = {
   3755	.halt_reg = 0x56034,
   3756	.clkr = {
   3757		.enable_reg = 0x56034,
   3758		.enable_mask = BIT(0),
   3759		.hw.init = &(struct clk_init_data){
   3760			.name = "gcc_uniphy0_port5_tx_clk",
   3761			.parent_hws = (const struct clk_hw *[]){
   3762					&nss_port5_tx_div_clk_src.clkr.hw },
   3763			.num_parents = 1,
   3764			.flags = CLK_SET_RATE_PARENT,
   3765			.ops = &clk_branch2_ops,
   3766		},
   3767	},
   3768};
   3769
   3770static struct clk_branch gcc_uniphy0_sys_clk = {
   3771	.halt_reg = 0x5600C,
   3772	.clkr = {
   3773		.enable_reg = 0x5600C,
   3774		.enable_mask = BIT(0),
   3775		.hw.init = &(struct clk_init_data){
   3776			.name = "gcc_uniphy0_sys_clk",
   3777			.parent_hws = (const struct clk_hw *[]){
   3778					&gcc_xo_clk_src.clkr.hw },
   3779			.num_parents = 1,
   3780			.flags = CLK_SET_RATE_PARENT,
   3781			.ops = &clk_branch2_ops,
   3782		},
   3783	},
   3784};
   3785
   3786static struct clk_branch gcc_uniphy1_ahb_clk = {
   3787	.halt_reg = 0x56108,
   3788	.clkr = {
   3789		.enable_reg = 0x56108,
   3790		.enable_mask = BIT(0),
   3791		.hw.init = &(struct clk_init_data){
   3792			.name = "gcc_uniphy1_ahb_clk",
   3793			.parent_hws = (const struct clk_hw *[]){
   3794					&pcnoc_bfdcd_clk_src.clkr.hw },
   3795			.num_parents = 1,
   3796			.flags = CLK_SET_RATE_PARENT,
   3797			.ops = &clk_branch2_ops,
   3798		},
   3799	},
   3800};
   3801
   3802static struct clk_branch gcc_uniphy1_port5_rx_clk = {
   3803	.halt_reg = 0x56110,
   3804	.clkr = {
   3805		.enable_reg = 0x56110,
   3806		.enable_mask = BIT(0),
   3807		.hw.init = &(struct clk_init_data){
   3808			.name = "gcc_uniphy1_port5_rx_clk",
   3809			.parent_hws = (const struct clk_hw *[]){
   3810					&nss_port5_rx_div_clk_src.clkr.hw },
   3811			.num_parents = 1,
   3812			.flags = CLK_SET_RATE_PARENT,
   3813			.ops = &clk_branch2_ops,
   3814		},
   3815	},
   3816};
   3817
   3818static struct clk_branch gcc_uniphy1_port5_tx_clk = {
   3819	.halt_reg = 0x56114,
   3820	.clkr = {
   3821		.enable_reg = 0x56114,
   3822		.enable_mask = BIT(0),
   3823		.hw.init = &(struct clk_init_data){
   3824			.name = "gcc_uniphy1_port5_tx_clk",
   3825			.parent_hws = (const struct clk_hw *[]){
   3826					&nss_port5_tx_div_clk_src.clkr.hw },
   3827			.num_parents = 1,
   3828			.flags = CLK_SET_RATE_PARENT,
   3829			.ops = &clk_branch2_ops,
   3830		},
   3831	},
   3832};
   3833
   3834static struct clk_branch gcc_uniphy1_sys_clk = {
   3835	.halt_reg = 0x5610C,
   3836	.clkr = {
   3837		.enable_reg = 0x5610C,
   3838		.enable_mask = BIT(0),
   3839		.hw.init = &(struct clk_init_data){
   3840			.name = "gcc_uniphy1_sys_clk",
   3841			.parent_hws = (const struct clk_hw *[]){
   3842					&gcc_xo_clk_src.clkr.hw },
   3843			.num_parents = 1,
   3844			.flags = CLK_SET_RATE_PARENT,
   3845			.ops = &clk_branch2_ops,
   3846		},
   3847	},
   3848};
   3849
   3850static struct clk_branch gcc_usb0_aux_clk = {
   3851	.halt_reg = 0x3e044,
   3852	.clkr = {
   3853		.enable_reg = 0x3e044,
   3854		.enable_mask = BIT(0),
   3855		.hw.init = &(struct clk_init_data){
   3856			.name = "gcc_usb0_aux_clk",
   3857			.parent_hws = (const struct clk_hw *[]){
   3858					&usb0_aux_clk_src.clkr.hw },
   3859			.num_parents = 1,
   3860			.flags = CLK_SET_RATE_PARENT,
   3861			.ops = &clk_branch2_ops,
   3862		},
   3863	},
   3864};
   3865
   3866static struct clk_branch gcc_usb0_master_clk = {
   3867	.halt_reg = 0x3e000,
   3868	.clkr = {
   3869		.enable_reg = 0x3e000,
   3870		.enable_mask = BIT(0),
   3871		.hw.init = &(struct clk_init_data){
   3872			.name = "gcc_usb0_master_clk",
   3873			.parent_hws = (const struct clk_hw *[]){
   3874					&usb0_master_clk_src.clkr.hw },
   3875			.num_parents = 1,
   3876			.flags = CLK_SET_RATE_PARENT,
   3877			.ops = &clk_branch2_ops,
   3878		},
   3879	},
   3880};
   3881
   3882static struct clk_branch gcc_snoc_bus_timeout2_ahb_clk = {
   3883	.halt_reg = 0x47014,
   3884	.clkr = {
   3885		.enable_reg = 0x47014,
   3886		.enable_mask = BIT(0),
   3887		.hw.init = &(struct clk_init_data){
   3888			.name = "gcc_snoc_bus_timeout2_ahb_clk",
   3889			.parent_hws = (const struct clk_hw *[]){
   3890					&usb0_master_clk_src.clkr.hw },
   3891			.num_parents = 1,
   3892			.flags = CLK_SET_RATE_PARENT,
   3893			.ops = &clk_branch2_ops,
   3894		},
   3895	},
   3896};
   3897
   3898static struct clk_rcg2 pcie0_rchng_clk_src = {
   3899	.cmd_rcgr = 0x75070,
   3900	.freq_tbl = ftbl_pcie_rchng_clk_src,
   3901	.hid_width = 5,
   3902	.parent_map = gcc_xo_gpll0_map,
   3903	.clkr.hw.init = &(struct clk_init_data){
   3904		.name = "pcie0_rchng_clk_src",
   3905		.parent_data = gcc_xo_gpll0,
   3906		.num_parents = 2,
   3907		.ops = &clk_rcg2_ops,
   3908	},
   3909};
   3910
   3911static struct clk_branch gcc_pcie0_rchng_clk = {
   3912	.halt_reg = 0x75070,
   3913	.clkr = {
   3914		.enable_reg = 0x75070,
   3915		.enable_mask = BIT(1),
   3916		.hw.init = &(struct clk_init_data){
   3917			.name = "gcc_pcie0_rchng_clk",
   3918			.parent_hws = (const struct clk_hw *[]){
   3919					&pcie0_rchng_clk_src.clkr.hw },
   3920			.num_parents = 1,
   3921			.flags = CLK_SET_RATE_PARENT,
   3922			.ops = &clk_branch2_ops,
   3923		},
   3924	},
   3925};
   3926
   3927static struct clk_branch gcc_pcie0_axi_s_bridge_clk = {
   3928	.halt_reg = 0x75048,
   3929	.clkr = {
   3930		.enable_reg = 0x75048,
   3931		.enable_mask = BIT(0),
   3932		.hw.init = &(struct clk_init_data){
   3933			.name = "gcc_pcie0_axi_s_bridge_clk",
   3934			.parent_hws = (const struct clk_hw *[]){
   3935					&pcie0_axi_clk_src.clkr.hw },
   3936			.num_parents = 1,
   3937			.flags = CLK_SET_RATE_PARENT,
   3938			.ops = &clk_branch2_ops,
   3939		},
   3940	},
   3941};
   3942
   3943static struct clk_branch gcc_sys_noc_usb0_axi_clk = {
   3944	.halt_reg = 0x26040,
   3945	.clkr = {
   3946		.enable_reg = 0x26040,
   3947		.enable_mask = BIT(0),
   3948		.hw.init = &(struct clk_init_data){
   3949			.name = "gcc_sys_noc_usb0_axi_clk",
   3950			.parent_hws = (const struct clk_hw *[]){
   3951					&usb0_master_clk_src.clkr.hw },
   3952			.num_parents = 1,
   3953			.flags = CLK_SET_RATE_PARENT,
   3954			.ops = &clk_branch2_ops,
   3955		},
   3956	},
   3957};
   3958
   3959static struct clk_branch gcc_usb0_mock_utmi_clk = {
   3960	.halt_reg = 0x3e008,
   3961	.clkr = {
   3962		.enable_reg = 0x3e008,
   3963		.enable_mask = BIT(0),
   3964		.hw.init = &(struct clk_init_data){
   3965			.name = "gcc_usb0_mock_utmi_clk",
   3966			.parent_hws = (const struct clk_hw *[]){
   3967					&usb0_mock_utmi_clk_src.clkr.hw },
   3968			.num_parents = 1,
   3969			.flags = CLK_SET_RATE_PARENT,
   3970			.ops = &clk_branch2_ops,
   3971		},
   3972	},
   3973};
   3974
   3975static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {
   3976	.halt_reg = 0x3e080,
   3977	.clkr = {
   3978		.enable_reg = 0x3e080,
   3979		.enable_mask = BIT(0),
   3980		.hw.init = &(struct clk_init_data){
   3981			.name = "gcc_usb0_phy_cfg_ahb_clk",
   3982			.parent_hws = (const struct clk_hw *[]){
   3983					&pcnoc_bfdcd_clk_src.clkr.hw },
   3984			.num_parents = 1,
   3985			.flags = CLK_SET_RATE_PARENT,
   3986			.ops = &clk_branch2_ops,
   3987		},
   3988	},
   3989};
   3990
   3991static struct clk_branch gcc_usb0_pipe_clk = {
   3992	.halt_reg = 0x3e040,
   3993	.halt_check = BRANCH_HALT_DELAY,
   3994	.clkr = {
   3995		.enable_reg = 0x3e040,
   3996		.enable_mask = BIT(0),
   3997		.hw.init = &(struct clk_init_data){
   3998			.name = "gcc_usb0_pipe_clk",
   3999			.parent_hws = (const struct clk_hw *[]){
   4000					&usb0_pipe_clk_src.clkr.hw },
   4001			.num_parents = 1,
   4002			.flags = CLK_SET_RATE_PARENT,
   4003			.ops = &clk_branch2_ops,
   4004		},
   4005	},
   4006};
   4007
   4008static struct clk_branch gcc_usb0_sleep_clk = {
   4009	.halt_reg = 0x3e004,
   4010	.clkr = {
   4011		.enable_reg = 0x3e004,
   4012		.enable_mask = BIT(0),
   4013		.hw.init = &(struct clk_init_data){
   4014			.name = "gcc_usb0_sleep_clk",
   4015			.parent_hws = (const struct clk_hw *[]){
   4016					&gcc_sleep_clk_src.clkr.hw },
   4017			.num_parents = 1,
   4018			.flags = CLK_SET_RATE_PARENT,
   4019			.ops = &clk_branch2_ops,
   4020		},
   4021	},
   4022};
   4023
   4024static struct clk_branch gcc_usb1_master_clk = {
   4025	.halt_reg = 0x3f000,
   4026	.clkr = {
   4027		.enable_reg = 0x3f000,
   4028		.enable_mask = BIT(0),
   4029		.hw.init = &(struct clk_init_data){
   4030			.name = "gcc_usb1_master_clk",
   4031			.parent_hws = (const struct clk_hw *[]){
   4032					&pcnoc_bfdcd_clk_src.clkr.hw },
   4033			.num_parents = 1,
   4034			.flags = CLK_SET_RATE_PARENT,
   4035			.ops = &clk_branch2_ops,
   4036		},
   4037	},
   4038};
   4039
   4040static struct clk_branch gcc_usb1_mock_utmi_clk = {
   4041	.halt_reg = 0x3f008,
   4042	.clkr = {
   4043		.enable_reg = 0x3f008,
   4044		.enable_mask = BIT(0),
   4045		.hw.init = &(struct clk_init_data){
   4046			.name = "gcc_usb1_mock_utmi_clk",
   4047			.parent_hws = (const struct clk_hw *[]){
   4048					&usb1_mock_utmi_clk_src.clkr.hw },
   4049			.num_parents = 1,
   4050			.flags = CLK_SET_RATE_PARENT,
   4051			.ops = &clk_branch2_ops,
   4052		},
   4053	},
   4054};
   4055
   4056static struct clk_branch gcc_usb1_phy_cfg_ahb_clk = {
   4057	.halt_reg = 0x3f080,
   4058	.clkr = {
   4059		.enable_reg = 0x3f080,
   4060		.enable_mask = BIT(0),
   4061		.hw.init = &(struct clk_init_data){
   4062			.name = "gcc_usb1_phy_cfg_ahb_clk",
   4063			.parent_hws = (const struct clk_hw *[]){
   4064					&pcnoc_bfdcd_clk_src.clkr.hw },
   4065			.num_parents = 1,
   4066			.flags = CLK_SET_RATE_PARENT,
   4067			.ops = &clk_branch2_ops,
   4068		},
   4069	},
   4070};
   4071
   4072static struct clk_branch gcc_usb1_sleep_clk = {
   4073	.halt_reg = 0x3f004,
   4074	.clkr = {
   4075		.enable_reg = 0x3f004,
   4076		.enable_mask = BIT(0),
   4077		.hw.init = &(struct clk_init_data){
   4078			.name = "gcc_usb1_sleep_clk",
   4079			.parent_hws = (const struct clk_hw *[]){
   4080					&gcc_sleep_clk_src.clkr.hw },
   4081			.num_parents = 1,
   4082			.flags = CLK_SET_RATE_PARENT,
   4083			.ops = &clk_branch2_ops,
   4084		},
   4085	},
   4086};
   4087
   4088static struct clk_branch gcc_cmn_12gpll_ahb_clk = {
   4089	.halt_reg = 0x56308,
   4090	.clkr = {
   4091		.enable_reg = 0x56308,
   4092		.enable_mask = BIT(0),
   4093		.hw.init = &(struct clk_init_data){
   4094			.name = "gcc_cmn_12gpll_ahb_clk",
   4095			.parent_hws = (const struct clk_hw *[]){
   4096					&pcnoc_bfdcd_clk_src.clkr.hw },
   4097			.num_parents = 1,
   4098			.flags = CLK_SET_RATE_PARENT,
   4099			.ops = &clk_branch2_ops,
   4100		},
   4101	},
   4102};
   4103
   4104static struct clk_branch gcc_cmn_12gpll_sys_clk = {
   4105	.halt_reg = 0x5630c,
   4106	.clkr = {
   4107		.enable_reg = 0x5630c,
   4108		.enable_mask = BIT(0),
   4109		.hw.init = &(struct clk_init_data){
   4110			.name = "gcc_cmn_12gpll_sys_clk",
   4111			.parent_hws = (const struct clk_hw *[]){
   4112					&gcc_xo_clk_src.clkr.hw },
   4113			.num_parents = 1,
   4114			.flags = CLK_SET_RATE_PARENT,
   4115			.ops = &clk_branch2_ops,
   4116		},
   4117	},
   4118};
   4119
   4120static struct clk_branch gcc_sdcc1_ice_core_clk = {
   4121	.halt_reg = 0x5d014,
   4122	.clkr = {
   4123		.enable_reg = 0x5d014,
   4124		.enable_mask = BIT(0),
   4125		.hw.init = &(struct clk_init_data){
   4126			.name = "gcc_sdcc1_ice_core_clk",
   4127			.parent_hws = (const struct clk_hw *[]){
   4128					&sdcc1_ice_core_clk_src.clkr.hw },
   4129			.num_parents = 1,
   4130			.flags = CLK_SET_RATE_PARENT,
   4131			.ops = &clk_branch2_ops,
   4132		},
   4133	},
   4134};
   4135
   4136static struct clk_branch gcc_dcc_clk = {
   4137	.halt_reg = 0x77004,
   4138	.clkr = {
   4139		.enable_reg = 0x77004,
   4140		.enable_mask = BIT(0),
   4141		.hw.init = &(struct clk_init_data){
   4142			.name = "gcc_dcc_clk",
   4143			.parent_hws = (const struct clk_hw *[]){
   4144					&pcnoc_bfdcd_clk_src.clkr.hw },
   4145			.num_parents = 1,
   4146			.flags = CLK_SET_RATE_PARENT,
   4147			.ops = &clk_branch2_ops,
   4148		},
   4149	},
   4150};
   4151
   4152static const struct alpha_pll_config ubi32_pll_config = {
   4153	.l = 0x3e,
   4154	.alpha = 0x57,
   4155	.config_ctl_val = 0x240d6aa8,
   4156	.config_ctl_hi_val = 0x3c2,
   4157	.main_output_mask = BIT(0),
   4158	.aux_output_mask = BIT(1),
   4159	.pre_div_val = 0x0,
   4160	.pre_div_mask = BIT(12),
   4161	.post_div_val = 0x0,
   4162	.post_div_mask = GENMASK(9, 8),
   4163};
   4164
   4165static const struct alpha_pll_config nss_crypto_pll_config = {
   4166	.l = 0x32,
   4167	.alpha = 0x0,
   4168	.alpha_hi = 0x0,
   4169	.config_ctl_val = 0x4001055b,
   4170	.main_output_mask = BIT(0),
   4171	.pre_div_val = 0x0,
   4172	.pre_div_mask = GENMASK(14, 12),
   4173	.post_div_val = 0x1 << 8,
   4174	.post_div_mask = GENMASK(11, 8),
   4175	.vco_mask = GENMASK(21, 20),
   4176	.vco_val = 0x0,
   4177	.alpha_en_mask = BIT(24),
   4178};
   4179
   4180static struct clk_hw *gcc_ipq6018_hws[] = {
   4181	&gpll0_out_main_div2.hw,
   4182	&gcc_xo_div4_clk_src.hw,
   4183	&nss_ppe_cdiv_clk_src.hw,
   4184	&gpll6_out_main_div2.hw,
   4185	&qdss_dap_sync_clk_src.hw,
   4186	&qdss_tsctr_div2_clk_src.hw,
   4187};
   4188
   4189static struct clk_regmap *gcc_ipq6018_clks[] = {
   4190	[GPLL0_MAIN] = &gpll0_main.clkr,
   4191	[GPLL0] = &gpll0.clkr,
   4192	[UBI32_PLL_MAIN] = &ubi32_pll_main.clkr,
   4193	[UBI32_PLL] = &ubi32_pll.clkr,
   4194	[GPLL6_MAIN] = &gpll6_main.clkr,
   4195	[GPLL6] = &gpll6.clkr,
   4196	[GPLL4_MAIN] = &gpll4_main.clkr,
   4197	[GPLL4] = &gpll4.clkr,
   4198	[PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr,
   4199	[GPLL2_MAIN] = &gpll2_main.clkr,
   4200	[GPLL2] = &gpll2.clkr,
   4201	[NSS_CRYPTO_PLL_MAIN] = &nss_crypto_pll_main.clkr,
   4202	[NSS_CRYPTO_PLL] = &nss_crypto_pll.clkr,
   4203	[QDSS_TSCTR_CLK_SRC] = &qdss_tsctr_clk_src.clkr,
   4204	[QDSS_AT_CLK_SRC] = &qdss_at_clk_src.clkr,
   4205	[NSS_PPE_CLK_SRC] = &nss_ppe_clk_src.clkr,
   4206	[GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,
   4207	[SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr,
   4208	[SNOC_NSSNOC_BFDCD_CLK_SRC] = &snoc_nssnoc_bfdcd_clk_src.clkr,
   4209	[NSS_CE_CLK_SRC] = &nss_ce_clk_src.clkr,
   4210	[GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,
   4211	[APSS_AHB_CLK_SRC] = &apss_ahb_clk_src.clkr,
   4212	[NSS_PORT5_RX_CLK_SRC] = &nss_port5_rx_clk_src.clkr,
   4213	[NSS_PORT5_TX_CLK_SRC] = &nss_port5_tx_clk_src.clkr,
   4214	[UBI32_MEM_NOC_BFDCD_CLK_SRC] = &ubi32_mem_noc_bfdcd_clk_src.clkr,
   4215	[PCIE0_AXI_CLK_SRC] = &pcie0_axi_clk_src.clkr,
   4216	[USB0_MASTER_CLK_SRC] = &usb0_master_clk_src.clkr,
   4217	[APSS_AHB_POSTDIV_CLK_SRC] = &apss_ahb_postdiv_clk_src.clkr,
   4218	[NSS_PORT1_RX_CLK_SRC] = &nss_port1_rx_clk_src.clkr,
   4219	[NSS_PORT1_TX_CLK_SRC] = &nss_port1_tx_clk_src.clkr,
   4220	[NSS_PORT2_RX_CLK_SRC] = &nss_port2_rx_clk_src.clkr,
   4221	[NSS_PORT2_TX_CLK_SRC] = &nss_port2_tx_clk_src.clkr,
   4222	[NSS_PORT3_RX_CLK_SRC] = &nss_port3_rx_clk_src.clkr,
   4223	[NSS_PORT3_TX_CLK_SRC] = &nss_port3_tx_clk_src.clkr,
   4224	[NSS_PORT4_RX_CLK_SRC] = &nss_port4_rx_clk_src.clkr,
   4225	[NSS_PORT4_TX_CLK_SRC] = &nss_port4_tx_clk_src.clkr,
   4226	[NSS_PORT5_RX_DIV_CLK_SRC] = &nss_port5_rx_div_clk_src.clkr,
   4227	[NSS_PORT5_TX_DIV_CLK_SRC] = &nss_port5_tx_div_clk_src.clkr,
   4228	[APSS_AXI_CLK_SRC] = &apss_axi_clk_src.clkr,
   4229	[NSS_CRYPTO_CLK_SRC] = &nss_crypto_clk_src.clkr,
   4230	[NSS_PORT1_RX_DIV_CLK_SRC] = &nss_port1_rx_div_clk_src.clkr,
   4231	[NSS_PORT1_TX_DIV_CLK_SRC] = &nss_port1_tx_div_clk_src.clkr,
   4232	[NSS_PORT2_RX_DIV_CLK_SRC] = &nss_port2_rx_div_clk_src.clkr,
   4233	[NSS_PORT2_TX_DIV_CLK_SRC] = &nss_port2_tx_div_clk_src.clkr,
   4234	[NSS_PORT3_RX_DIV_CLK_SRC] = &nss_port3_rx_div_clk_src.clkr,
   4235	[NSS_PORT3_TX_DIV_CLK_SRC] = &nss_port3_tx_div_clk_src.clkr,
   4236	[NSS_PORT4_RX_DIV_CLK_SRC] = &nss_port4_rx_div_clk_src.clkr,
   4237	[NSS_PORT4_TX_DIV_CLK_SRC] = &nss_port4_tx_div_clk_src.clkr,
   4238	[NSS_UBI0_CLK_SRC] = &nss_ubi0_clk_src.clkr,
   4239	[ADSS_PWM_CLK_SRC] = &adss_pwm_clk_src.clkr,
   4240	[BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
   4241	[BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
   4242	[BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
   4243	[BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
   4244	[BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
   4245	[BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
   4246	[BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
   4247	[BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
   4248	[BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
   4249	[BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
   4250	[BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
   4251	[BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
   4252	[BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
   4253	[BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
   4254	[BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
   4255	[BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
   4256	[BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
   4257	[BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
   4258	[CRYPTO_CLK_SRC] = &crypto_clk_src.clkr,
   4259	[GP1_CLK_SRC] = &gp1_clk_src.clkr,
   4260	[GP2_CLK_SRC] = &gp2_clk_src.clkr,
   4261	[GP3_CLK_SRC] = &gp3_clk_src.clkr,
   4262	[NSS_UBI0_DIV_CLK_SRC] = &nss_ubi0_div_clk_src.clkr,
   4263	[PCIE0_AUX_CLK_SRC] = &pcie0_aux_clk_src.clkr,
   4264	[PCIE0_PIPE_CLK_SRC] = &pcie0_pipe_clk_src.clkr,
   4265	[SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
   4266	[USB0_AUX_CLK_SRC] = &usb0_aux_clk_src.clkr,
   4267	[USB0_MOCK_UTMI_CLK_SRC] = &usb0_mock_utmi_clk_src.clkr,
   4268	[USB0_PIPE_CLK_SRC] = &usb0_pipe_clk_src.clkr,
   4269	[USB1_MOCK_UTMI_CLK_SRC] = &usb1_mock_utmi_clk_src.clkr,
   4270	[GCC_ADSS_PWM_CLK] = &gcc_adss_pwm_clk.clkr,
   4271	[GCC_APSS_AHB_CLK] = &gcc_apss_ahb_clk.clkr,
   4272	[GCC_APSS_AXI_CLK] = &gcc_apss_axi_clk.clkr,
   4273	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
   4274	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
   4275	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
   4276	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
   4277	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
   4278	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
   4279	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
   4280	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
   4281	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
   4282	[GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
   4283	[GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
   4284	[GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
   4285	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
   4286	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
   4287	[GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
   4288	[GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
   4289	[GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
   4290	[GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
   4291	[GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr,
   4292	[GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr,
   4293	[GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr,
   4294	[GCC_XO_CLK] = &gcc_xo_clk.clkr,
   4295	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
   4296	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
   4297	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
   4298	[GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,
   4299	[GCC_CRYPTO_PPE_CLK] = &gcc_crypto_ppe_clk.clkr,
   4300	[GCC_NSS_CE_APB_CLK] = &gcc_nss_ce_apb_clk.clkr,
   4301	[GCC_NSS_CE_AXI_CLK] = &gcc_nss_ce_axi_clk.clkr,
   4302	[GCC_NSS_CFG_CLK] = &gcc_nss_cfg_clk.clkr,
   4303	[GCC_NSS_CRYPTO_CLK] = &gcc_nss_crypto_clk.clkr,
   4304	[GCC_NSS_CSR_CLK] = &gcc_nss_csr_clk.clkr,
   4305	[GCC_NSS_EDMA_CFG_CLK] = &gcc_nss_edma_cfg_clk.clkr,
   4306	[GCC_NSS_EDMA_CLK] = &gcc_nss_edma_clk.clkr,
   4307	[GCC_NSS_NOC_CLK] = &gcc_nss_noc_clk.clkr,
   4308	[GCC_UBI0_UTCM_CLK] = &gcc_ubi0_utcm_clk.clkr,
   4309	[GCC_SNOC_NSSNOC_CLK] = &gcc_snoc_nssnoc_clk.clkr,
   4310	[GCC_NSS_PORT1_RX_CLK] = &gcc_nss_port1_rx_clk.clkr,
   4311	[GCC_NSS_PORT1_TX_CLK] = &gcc_nss_port1_tx_clk.clkr,
   4312	[GCC_NSS_PORT2_RX_CLK] = &gcc_nss_port2_rx_clk.clkr,
   4313	[GCC_NSS_PORT2_TX_CLK] = &gcc_nss_port2_tx_clk.clkr,
   4314	[GCC_NSS_PORT3_RX_CLK] = &gcc_nss_port3_rx_clk.clkr,
   4315	[GCC_NSS_PORT3_TX_CLK] = &gcc_nss_port3_tx_clk.clkr,
   4316	[GCC_NSS_PORT4_RX_CLK] = &gcc_nss_port4_rx_clk.clkr,
   4317	[GCC_NSS_PORT4_TX_CLK] = &gcc_nss_port4_tx_clk.clkr,
   4318	[GCC_NSS_PORT5_RX_CLK] = &gcc_nss_port5_rx_clk.clkr,
   4319	[GCC_NSS_PORT5_TX_CLK] = &gcc_nss_port5_tx_clk.clkr,
   4320	[GCC_NSS_PPE_CFG_CLK] = &gcc_nss_ppe_cfg_clk.clkr,
   4321	[GCC_NSS_PPE_CLK] = &gcc_nss_ppe_clk.clkr,
   4322	[GCC_NSS_PPE_IPE_CLK] = &gcc_nss_ppe_ipe_clk.clkr,
   4323	[GCC_NSS_PTP_REF_CLK] = &gcc_nss_ptp_ref_clk.clkr,
   4324	[GCC_NSSNOC_CE_APB_CLK] = &gcc_nssnoc_ce_apb_clk.clkr,
   4325	[GCC_NSSNOC_CE_AXI_CLK] = &gcc_nssnoc_ce_axi_clk.clkr,
   4326	[GCC_NSSNOC_CRYPTO_CLK] = &gcc_nssnoc_crypto_clk.clkr,
   4327	[GCC_NSSNOC_PPE_CFG_CLK] = &gcc_nssnoc_ppe_cfg_clk.clkr,
   4328	[GCC_NSSNOC_PPE_CLK] = &gcc_nssnoc_ppe_clk.clkr,
   4329	[GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,
   4330	[GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,
   4331	[GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,
   4332	[GCC_NSSNOC_UBI0_AHB_CLK] = &gcc_nssnoc_ubi0_ahb_clk.clkr,
   4333	[GCC_PORT1_MAC_CLK] = &gcc_port1_mac_clk.clkr,
   4334	[GCC_PORT2_MAC_CLK] = &gcc_port2_mac_clk.clkr,
   4335	[GCC_PORT3_MAC_CLK] = &gcc_port3_mac_clk.clkr,
   4336	[GCC_PORT4_MAC_CLK] = &gcc_port4_mac_clk.clkr,
   4337	[GCC_PORT5_MAC_CLK] = &gcc_port5_mac_clk.clkr,
   4338	[GCC_UBI0_AHB_CLK] = &gcc_ubi0_ahb_clk.clkr,
   4339	[GCC_UBI0_AXI_CLK] = &gcc_ubi0_axi_clk.clkr,
   4340	[GCC_UBI0_NC_AXI_CLK] = &gcc_ubi0_nc_axi_clk.clkr,
   4341	[GCC_UBI0_CORE_CLK] = &gcc_ubi0_core_clk.clkr,
   4342	[GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr,
   4343	[GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr,
   4344	[GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr,
   4345	[GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr,
   4346	[GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr,
   4347	[GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,
   4348	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
   4349	[GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,
   4350	[GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
   4351	[GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
   4352	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
   4353	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
   4354	[GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,
   4355	[GCC_UNIPHY0_PORT1_RX_CLK] = &gcc_uniphy0_port1_rx_clk.clkr,
   4356	[GCC_UNIPHY0_PORT1_TX_CLK] = &gcc_uniphy0_port1_tx_clk.clkr,
   4357	[GCC_UNIPHY0_PORT2_RX_CLK] = &gcc_uniphy0_port2_rx_clk.clkr,
   4358	[GCC_UNIPHY0_PORT2_TX_CLK] = &gcc_uniphy0_port2_tx_clk.clkr,
   4359	[GCC_UNIPHY0_PORT3_RX_CLK] = &gcc_uniphy0_port3_rx_clk.clkr,
   4360	[GCC_UNIPHY0_PORT3_TX_CLK] = &gcc_uniphy0_port3_tx_clk.clkr,
   4361	[GCC_UNIPHY0_PORT4_RX_CLK] = &gcc_uniphy0_port4_rx_clk.clkr,
   4362	[GCC_UNIPHY0_PORT4_TX_CLK] = &gcc_uniphy0_port4_tx_clk.clkr,
   4363	[GCC_UNIPHY0_PORT5_RX_CLK] = &gcc_uniphy0_port5_rx_clk.clkr,
   4364	[GCC_UNIPHY0_PORT5_TX_CLK] = &gcc_uniphy0_port5_tx_clk.clkr,
   4365	[GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,
   4366	[GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,
   4367	[GCC_UNIPHY1_PORT5_RX_CLK] = &gcc_uniphy1_port5_rx_clk.clkr,
   4368	[GCC_UNIPHY1_PORT5_TX_CLK] = &gcc_uniphy1_port5_tx_clk.clkr,
   4369	[GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,
   4370	[GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,
   4371	[GCC_SYS_NOC_USB0_AXI_CLK] = &gcc_sys_noc_usb0_axi_clk.clkr,
   4372	[GCC_SNOC_BUS_TIMEOUT2_AHB_CLK] = &gcc_snoc_bus_timeout2_ahb_clk.clkr,
   4373	[GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,
   4374	[GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,
   4375	[GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,
   4376	[GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,
   4377	[GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,
   4378	[GCC_USB1_MASTER_CLK] = &gcc_usb1_master_clk.clkr,
   4379	[GCC_USB1_MOCK_UTMI_CLK] = &gcc_usb1_mock_utmi_clk.clkr,
   4380	[GCC_USB1_PHY_CFG_AHB_CLK] = &gcc_usb1_phy_cfg_ahb_clk.clkr,
   4381	[GCC_USB1_SLEEP_CLK] = &gcc_usb1_sleep_clk.clkr,
   4382	[GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,
   4383	[GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,
   4384	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
   4385	[SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr,
   4386	[GCC_DCC_CLK] = &gcc_dcc_clk.clkr,
   4387	[PCIE0_RCHNG_CLK_SRC] = &pcie0_rchng_clk_src.clkr,
   4388	[GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,
   4389	[PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr,
   4390	[WCSS_AHB_CLK_SRC] = &wcss_ahb_clk_src.clkr,
   4391	[Q6_AXI_CLK_SRC] = &q6_axi_clk_src.clkr,
   4392	[RBCPR_WCSS_CLK_SRC] = &rbcpr_wcss_clk_src.clkr,
   4393	[GCC_LPASS_CORE_AXIM_CLK] = &gcc_lpass_core_axim_clk.clkr,
   4394	[LPASS_CORE_AXIM_CLK_SRC] = &lpass_core_axim_clk_src.clkr,
   4395	[GCC_LPASS_SNOC_CFG_CLK] = &gcc_lpass_snoc_cfg_clk.clkr,
   4396	[LPASS_SNOC_CFG_CLK_SRC] = &lpass_snoc_cfg_clk_src.clkr,
   4397	[GCC_LPASS_Q6_AXIM_CLK] = &gcc_lpass_q6_axim_clk.clkr,
   4398	[LPASS_Q6_AXIM_CLK_SRC] = &lpass_q6_axim_clk_src.clkr,
   4399	[GCC_LPASS_Q6_ATBM_AT_CLK] = &gcc_lpass_q6_atbm_at_clk.clkr,
   4400	[GCC_LPASS_Q6_PCLKDBG_CLK] = &gcc_lpass_q6_pclkdbg_clk.clkr,
   4401	[GCC_LPASS_Q6SS_TSCTR_1TO2_CLK] = &gcc_lpass_q6ss_tsctr_1to2_clk.clkr,
   4402	[GCC_LPASS_Q6SS_TRIG_CLK] = &gcc_lpass_q6ss_trig_clk.clkr,
   4403	[GCC_LPASS_TBU_CLK] = &gcc_lpass_tbu_clk.clkr,
   4404	[GCC_PCNOC_LPASS_CLK] = &gcc_pcnoc_lpass_clk.clkr,
   4405	[GCC_MEM_NOC_UBI32_CLK] = &gcc_mem_noc_ubi32_clk.clkr,
   4406	[GCC_MEM_NOC_LPASS_CLK] = &gcc_mem_noc_lpass_clk.clkr,
   4407	[GCC_SNOC_LPASS_CFG_CLK] = &gcc_snoc_lpass_cfg_clk.clkr,
   4408	[QDSS_STM_CLK_SRC] = &qdss_stm_clk_src.clkr,
   4409	[QDSS_TRACECLKIN_CLK_SRC] = &qdss_traceclkin_clk_src.clkr,
   4410};
   4411
   4412static const struct qcom_reset_map gcc_ipq6018_resets[] = {
   4413	[GCC_BLSP1_BCR] = { 0x01000, 0 },
   4414	[GCC_BLSP1_QUP1_BCR] = { 0x02000, 0 },
   4415	[GCC_BLSP1_UART1_BCR] = { 0x02038, 0 },
   4416	[GCC_BLSP1_QUP2_BCR] = { 0x03008, 0 },
   4417	[GCC_BLSP1_UART2_BCR] = { 0x03028, 0 },
   4418	[GCC_BLSP1_QUP3_BCR] = { 0x04008, 0 },
   4419	[GCC_BLSP1_UART3_BCR] = { 0x04028, 0 },
   4420	[GCC_BLSP1_QUP4_BCR] = { 0x05008, 0 },
   4421	[GCC_BLSP1_UART4_BCR] = { 0x05028, 0 },
   4422	[GCC_BLSP1_QUP5_BCR] = { 0x06008, 0 },
   4423	[GCC_BLSP1_UART5_BCR] = { 0x06028, 0 },
   4424	[GCC_BLSP1_QUP6_BCR] = { 0x07008, 0 },
   4425	[GCC_BLSP1_UART6_BCR] = { 0x07028, 0 },
   4426	[GCC_IMEM_BCR] = { 0x0e000, 0 },
   4427	[GCC_SMMU_BCR] = { 0x12000, 0 },
   4428	[GCC_APSS_TCU_BCR] = { 0x12050, 0 },
   4429	[GCC_SMMU_XPU_BCR] = { 0x12054, 0 },
   4430	[GCC_PCNOC_TBU_BCR] = { 0x12058, 0 },
   4431	[GCC_SMMU_CFG_BCR] = { 0x1208c, 0 },
   4432	[GCC_PRNG_BCR] = { 0x13000, 0 },
   4433	[GCC_BOOT_ROM_BCR] = { 0x13008, 0 },
   4434	[GCC_CRYPTO_BCR] = { 0x16000, 0 },
   4435	[GCC_WCSS_BCR] = { 0x18000, 0 },
   4436	[GCC_WCSS_Q6_BCR] = { 0x18100, 0 },
   4437	[GCC_NSS_BCR] = { 0x19000, 0 },
   4438	[GCC_SEC_CTRL_BCR] = { 0x1a000, 0 },
   4439	[GCC_ADSS_BCR] = { 0x1c000, 0 },
   4440	[GCC_DDRSS_BCR] = { 0x1e000, 0 },
   4441	[GCC_SYSTEM_NOC_BCR] = { 0x26000, 0 },
   4442	[GCC_PCNOC_BCR] = { 0x27018, 0 },
   4443	[GCC_TCSR_BCR] = { 0x28000, 0 },
   4444	[GCC_QDSS_BCR] = { 0x29000, 0 },
   4445	[GCC_DCD_BCR] = { 0x2a000, 0 },
   4446	[GCC_MSG_RAM_BCR] = { 0x2b000, 0 },
   4447	[GCC_MPM_BCR] = { 0x2c000, 0 },
   4448	[GCC_SPDM_BCR] = { 0x2f000, 0 },
   4449	[GCC_RBCPR_BCR] = { 0x33000, 0 },
   4450	[GCC_RBCPR_MX_BCR] = { 0x33014, 0 },
   4451	[GCC_TLMM_BCR] = { 0x34000, 0 },
   4452	[GCC_RBCPR_WCSS_BCR] = { 0x3a000, 0 },
   4453	[GCC_USB0_PHY_BCR] = { 0x3e034, 0 },
   4454	[GCC_USB3PHY_0_PHY_BCR] = { 0x3e03c, 0 },
   4455	[GCC_USB0_BCR] = { 0x3e070, 0 },
   4456	[GCC_USB1_BCR] = { 0x3f070, 0 },
   4457	[GCC_QUSB2_0_PHY_BCR] = { 0x4103c, 0 },
   4458	[GCC_QUSB2_1_PHY_BCR] = { 0x41040, 0 },
   4459	[GCC_SDCC1_BCR] = { 0x42000, 0 },
   4460	[GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x47000, 0 },
   4461	[GCC_SNOC_BUS_TIMEOUT1_BCR] = { 0x47008, 0 },
   4462	[GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x47010, 0 },
   4463	[GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x48000, 0 },
   4464	[GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x48008, 0 },
   4465	[GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x48010, 0 },
   4466	[GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x48018, 0 },
   4467	[GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x48020, 0 },
   4468	[GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x48028, 0 },
   4469	[GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x48030, 0 },
   4470	[GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x48038, 0 },
   4471	[GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x48040, 0 },
   4472	[GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x48048, 0 },
   4473	[GCC_UNIPHY0_BCR] = { 0x56000, 0 },
   4474	[GCC_UNIPHY1_BCR] = { 0x56100, 0 },
   4475	[GCC_CMN_12GPLL_BCR] = { 0x56300, 0 },
   4476	[GCC_QPIC_BCR] = { 0x57018, 0 },
   4477	[GCC_MDIO_BCR] = { 0x58000, 0 },
   4478	[GCC_WCSS_CORE_TBU_BCR] = { 0x66000, 0 },
   4479	[GCC_WCSS_Q6_TBU_BCR] = { 0x67000, 0 },
   4480	[GCC_USB0_TBU_BCR] = { 0x6a000, 0 },
   4481	[GCC_PCIE0_TBU_BCR] = { 0x6b000, 0 },
   4482	[GCC_NSS_NOC_TBU_BCR] = { 0x6e000, 0 },
   4483	[GCC_PCIE0_BCR] = { 0x75004, 0 },
   4484	[GCC_PCIE0_PHY_BCR] = { 0x75038, 0 },
   4485	[GCC_PCIE0PHY_PHY_BCR] = { 0x7503c, 0 },
   4486	[GCC_PCIE0_LINK_DOWN_BCR] = { 0x75044, 0 },
   4487	[GCC_DCC_BCR] = { 0x77000, 0 },
   4488	[GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x78000, 0 },
   4489	[GCC_SMMU_CATS_BCR] = { 0x7c000, 0 },
   4490	[GCC_UBI0_AXI_ARES] = { 0x68010, 0 },
   4491	[GCC_UBI0_AHB_ARES] = { 0x68010, 1 },
   4492	[GCC_UBI0_NC_AXI_ARES] = { 0x68010, 2 },
   4493	[GCC_UBI0_DBG_ARES] = { 0x68010, 3 },
   4494	[GCC_UBI0_CORE_CLAMP_ENABLE] = { 0x68010, 4 },
   4495	[GCC_UBI0_CLKRST_CLAMP_ENABLE] = { 0x68010, 5 },
   4496	[GCC_UBI0_UTCM_ARES] = { 0x68010, 6 },
   4497	[GCC_UBI0_CORE_ARES] = { 0x68010, 7 },
   4498	[GCC_NSS_CFG_ARES] = { 0x68010, 16 },
   4499	[GCC_NSS_NOC_ARES] = { 0x68010, 18 },
   4500	[GCC_NSS_CRYPTO_ARES] = { 0x68010, 19 },
   4501	[GCC_NSS_CSR_ARES] = { 0x68010, 20 },
   4502	[GCC_NSS_CE_APB_ARES] = { 0x68010, 21 },
   4503	[GCC_NSS_CE_AXI_ARES] = { 0x68010, 22 },
   4504	[GCC_NSSNOC_CE_APB_ARES] = { 0x68010, 23 },
   4505	[GCC_NSSNOC_CE_AXI_ARES] = { 0x68010, 24 },
   4506	[GCC_NSSNOC_UBI0_AHB_ARES] = { 0x68010, 25 },
   4507	[GCC_NSSNOC_SNOC_ARES] = { 0x68010, 27 },
   4508	[GCC_NSSNOC_CRYPTO_ARES] = { 0x68010, 28 },
   4509	[GCC_NSSNOC_ATB_ARES] = { 0x68010, 29 },
   4510	[GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x68010, 30 },
   4511	[GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x68010, 31 },
   4512	[GCC_PCIE0_PIPE_ARES] = { 0x75040, 0 },
   4513	[GCC_PCIE0_SLEEP_ARES] = { 0x75040, 1 },
   4514	[GCC_PCIE0_CORE_STICKY_ARES] = { 0x75040, 2 },
   4515	[GCC_PCIE0_AXI_MASTER_ARES] = { 0x75040, 3 },
   4516	[GCC_PCIE0_AXI_SLAVE_ARES] = { 0x75040, 4 },
   4517	[GCC_PCIE0_AHB_ARES] = { 0x75040, 5 },
   4518	[GCC_PCIE0_AXI_MASTER_STICKY_ARES] = { 0x75040, 6 },
   4519	[GCC_PCIE0_AXI_SLAVE_STICKY_ARES] = { 0x75040, 7 },
   4520	[GCC_PPE_FULL_RESET] = { 0x68014, 0 },
   4521	[GCC_UNIPHY0_SOFT_RESET] = { 0x56004, 0 },
   4522	[GCC_UNIPHY0_XPCS_RESET] = { 0x56004, 2 },
   4523	[GCC_UNIPHY1_SOFT_RESET] = { 0x56104, 0 },
   4524	[GCC_UNIPHY1_XPCS_RESET] = { 0x56104, 2 },
   4525	[GCC_EDMA_HW_RESET] = { 0x68014, 0 },
   4526	[GCC_NSSPORT1_RESET] = { 0x68014, 0 },
   4527	[GCC_NSSPORT2_RESET] = { 0x68014, 0 },
   4528	[GCC_NSSPORT3_RESET] = { 0x68014, 0 },
   4529	[GCC_NSSPORT4_RESET] = { 0x68014, 0 },
   4530	[GCC_NSSPORT5_RESET] = { 0x68014, 0 },
   4531	[GCC_UNIPHY0_PORT1_ARES] = { 0x56004, 0 },
   4532	[GCC_UNIPHY0_PORT2_ARES] = { 0x56004, 0 },
   4533	[GCC_UNIPHY0_PORT3_ARES] = { 0x56004, 0 },
   4534	[GCC_UNIPHY0_PORT4_ARES] = { 0x56004, 0 },
   4535	[GCC_UNIPHY0_PORT5_ARES] = { 0x56004, 0 },
   4536	[GCC_UNIPHY0_PORT_4_5_RESET] = { 0x56004, 0 },
   4537	[GCC_UNIPHY0_PORT_4_RESET] = { 0x56004, 0 },
   4538	[GCC_LPASS_BCR] = {0x1F000, 0},
   4539	[GCC_UBI32_TBU_BCR] = {0x65000, 0},
   4540	[GCC_LPASS_TBU_BCR] = {0x6C000, 0},
   4541	[GCC_WCSSAON_RESET] = {0x59010, 0},
   4542	[GCC_LPASS_Q6_AXIM_ARES] = {0x1F004, 0},
   4543	[GCC_LPASS_Q6SS_TSCTR_1TO2_ARES] = {0x1F004, 1},
   4544	[GCC_LPASS_Q6SS_TRIG_ARES] = {0x1F004, 2},
   4545	[GCC_LPASS_Q6_ATBM_AT_ARES] = {0x1F004, 3},
   4546	[GCC_LPASS_Q6_PCLKDBG_ARES] = {0x1F004, 4},
   4547	[GCC_LPASS_CORE_AXIM_ARES] = {0x1F004, 5},
   4548	[GCC_LPASS_SNOC_CFG_ARES] = {0x1F004, 6},
   4549	[GCC_WCSS_DBG_ARES] = {0x59008, 0},
   4550	[GCC_WCSS_ECAHB_ARES] = {0x59008, 1},
   4551	[GCC_WCSS_ACMT_ARES] = {0x59008, 2},
   4552	[GCC_WCSS_DBG_BDG_ARES] = {0x59008, 3},
   4553	[GCC_WCSS_AHB_S_ARES] = {0x59008, 4},
   4554	[GCC_WCSS_AXI_M_ARES] = {0x59008, 5},
   4555	[GCC_Q6SS_DBG_ARES] = {0x59110, 0},
   4556	[GCC_Q6_AHB_S_ARES] = {0x59110, 1},
   4557	[GCC_Q6_AHB_ARES] = {0x59110, 2},
   4558	[GCC_Q6_AXIM2_ARES] = {0x59110, 3},
   4559	[GCC_Q6_AXIM_ARES] = {0x59110, 4},
   4560};
   4561
   4562static const struct of_device_id gcc_ipq6018_match_table[] = {
   4563	{ .compatible = "qcom,gcc-ipq6018" },
   4564	{ }
   4565};
   4566MODULE_DEVICE_TABLE(of, gcc_ipq6018_match_table);
   4567
   4568static const struct regmap_config gcc_ipq6018_regmap_config = {
   4569	.reg_bits       = 32,
   4570	.reg_stride     = 4,
   4571	.val_bits       = 32,
   4572	.max_register   = 0x7fffc,
   4573	.fast_io	= true,
   4574};
   4575
   4576static const struct qcom_cc_desc gcc_ipq6018_desc = {
   4577	.config = &gcc_ipq6018_regmap_config,
   4578	.clks = gcc_ipq6018_clks,
   4579	.num_clks = ARRAY_SIZE(gcc_ipq6018_clks),
   4580	.resets = gcc_ipq6018_resets,
   4581	.num_resets = ARRAY_SIZE(gcc_ipq6018_resets),
   4582	.clk_hws = gcc_ipq6018_hws,
   4583	.num_clk_hws = ARRAY_SIZE(gcc_ipq6018_hws),
   4584};
   4585
   4586static int gcc_ipq6018_probe(struct platform_device *pdev)
   4587{
   4588	struct regmap *regmap;
   4589
   4590	regmap = qcom_cc_map(pdev, &gcc_ipq6018_desc);
   4591	if (IS_ERR(regmap))
   4592		return PTR_ERR(regmap);
   4593
   4594	/* Disable SW_COLLAPSE for USB0 GDSCR */
   4595	regmap_update_bits(regmap, 0x3e078, BIT(0), 0x0);
   4596	/* Enable SW_OVERRIDE for USB0 GDSCR */
   4597	regmap_update_bits(regmap, 0x3e078, BIT(2), BIT(2));
   4598	/* Disable SW_COLLAPSE for USB1 GDSCR */
   4599	regmap_update_bits(regmap, 0x3f078, BIT(0), 0x0);
   4600	/* Enable SW_OVERRIDE for USB1 GDSCR */
   4601	regmap_update_bits(regmap, 0x3f078, BIT(2), BIT(2));
   4602
   4603	/* SW Workaround for UBI Huyara PLL */
   4604	regmap_update_bits(regmap, 0x2501c, BIT(26), BIT(26));
   4605
   4606	clk_alpha_pll_configure(&ubi32_pll_main, regmap, &ubi32_pll_config);
   4607
   4608	clk_alpha_pll_configure(&nss_crypto_pll_main, regmap,
   4609				&nss_crypto_pll_config);
   4610
   4611	return qcom_cc_really_probe(pdev, &gcc_ipq6018_desc, regmap);
   4612}
   4613
   4614static struct platform_driver gcc_ipq6018_driver = {
   4615	.probe = gcc_ipq6018_probe,
   4616	.driver = {
   4617		.name   = "qcom,gcc-ipq6018",
   4618		.of_match_table = gcc_ipq6018_match_table,
   4619	},
   4620};
   4621
   4622static int __init gcc_ipq6018_init(void)
   4623{
   4624	return platform_driver_register(&gcc_ipq6018_driver);
   4625}
   4626core_initcall(gcc_ipq6018_init);
   4627
   4628static void __exit gcc_ipq6018_exit(void)
   4629{
   4630	platform_driver_unregister(&gcc_ipq6018_driver);
   4631}
   4632module_exit(gcc_ipq6018_exit);
   4633
   4634MODULE_DESCRIPTION("Qualcomm Technologies, Inc. GCC IPQ6018 Driver");
   4635MODULE_LICENSE("GPL v2");