1*a4f780cdSTaniya Das // SPDX-License-Identifier: GPL-2.0-only 2*a4f780cdSTaniya Das /* 3*a4f780cdSTaniya Das * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. 4*a4f780cdSTaniya Das */ 5*a4f780cdSTaniya Das 6*a4f780cdSTaniya Das #include <linux/clk-provider.h> 7*a4f780cdSTaniya Das #include <linux/mod_devicetable.h> 8*a4f780cdSTaniya Das #include <linux/module.h> 9*a4f780cdSTaniya Das #include <linux/platform_device.h> 10*a4f780cdSTaniya Das #include <linux/regmap.h> 11*a4f780cdSTaniya Das 12*a4f780cdSTaniya Das #include <dt-bindings/clock/qcom,nord-negcc.h> 13*a4f780cdSTaniya Das 14*a4f780cdSTaniya Das #include "clk-alpha-pll.h" 15*a4f780cdSTaniya Das #include "clk-branch.h" 16*a4f780cdSTaniya Das #include "clk-pll.h" 17*a4f780cdSTaniya Das #include "clk-rcg.h" 18*a4f780cdSTaniya Das #include "clk-regmap.h" 19*a4f780cdSTaniya Das #include "clk-regmap-divider.h" 20*a4f780cdSTaniya Das #include "clk-regmap-mux.h" 21*a4f780cdSTaniya Das #include "clk-regmap-phy-mux.h" 22*a4f780cdSTaniya Das #include "common.h" 23*a4f780cdSTaniya Das #include "gdsc.h" 24*a4f780cdSTaniya Das #include "reset.h" 25*a4f780cdSTaniya Das 26*a4f780cdSTaniya Das enum { 27*a4f780cdSTaniya Das DT_BI_TCXO, 28*a4f780cdSTaniya Das DT_SLEEP_CLK, 29*a4f780cdSTaniya Das DT_UFS_PHY_RX_SYMBOL_0_CLK, 30*a4f780cdSTaniya Das DT_UFS_PHY_RX_SYMBOL_1_CLK, 31*a4f780cdSTaniya Das DT_UFS_PHY_TX_SYMBOL_0_CLK, 32*a4f780cdSTaniya Das DT_USB3_PHY_SEC_WRAPPER_NE_GCC_USB31_PIPE_CLK, 33*a4f780cdSTaniya Das DT_USB3_PHY_WRAPPER_NE_GCC_USB31_PIPE_CLK, 34*a4f780cdSTaniya Das }; 35*a4f780cdSTaniya Das 36*a4f780cdSTaniya Das enum { 37*a4f780cdSTaniya Das P_BI_TCXO, 38*a4f780cdSTaniya Das P_NE_GCC_GPLL0_OUT_EVEN, 39*a4f780cdSTaniya Das P_NE_GCC_GPLL0_OUT_MAIN, 40*a4f780cdSTaniya Das P_NE_GCC_GPLL2_OUT_MAIN, 41*a4f780cdSTaniya Das P_SLEEP_CLK, 42*a4f780cdSTaniya Das P_UFS_PHY_RX_SYMBOL_0_CLK, 43*a4f780cdSTaniya Das P_UFS_PHY_RX_SYMBOL_1_CLK, 44*a4f780cdSTaniya Das P_UFS_PHY_TX_SYMBOL_0_CLK, 45*a4f780cdSTaniya Das P_USB3_PHY_SEC_WRAPPER_NE_GCC_USB31_PIPE_CLK, 46*a4f780cdSTaniya Das P_USB3_PHY_WRAPPER_NE_GCC_USB31_PIPE_CLK, 47*a4f780cdSTaniya Das }; 48*a4f780cdSTaniya Das 49*a4f780cdSTaniya Das static struct clk_alpha_pll ne_gcc_gpll0 = { 50*a4f780cdSTaniya Das .offset = 0x0, 51*a4f780cdSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 52*a4f780cdSTaniya Das .clkr = { 53*a4f780cdSTaniya Das .enable_reg = 0x0, 54*a4f780cdSTaniya Das .enable_mask = BIT(0), 55*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 56*a4f780cdSTaniya Das .name = "ne_gcc_gpll0", 57*a4f780cdSTaniya Das .parent_data = &(const struct clk_parent_data) { 58*a4f780cdSTaniya Das .index = DT_BI_TCXO, 59*a4f780cdSTaniya Das }, 60*a4f780cdSTaniya Das .num_parents = 1, 61*a4f780cdSTaniya Das .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 62*a4f780cdSTaniya Das }, 63*a4f780cdSTaniya Das }, 64*a4f780cdSTaniya Das }; 65*a4f780cdSTaniya Das 66*a4f780cdSTaniya Das static const struct clk_div_table post_div_table_ne_gcc_gpll0_out_even[] = { 67*a4f780cdSTaniya Das { 0x1, 2 }, 68*a4f780cdSTaniya Das { } 69*a4f780cdSTaniya Das }; 70*a4f780cdSTaniya Das 71*a4f780cdSTaniya Das static struct clk_alpha_pll_postdiv ne_gcc_gpll0_out_even = { 72*a4f780cdSTaniya Das .offset = 0x0, 73*a4f780cdSTaniya Das .post_div_shift = 10, 74*a4f780cdSTaniya Das .post_div_table = post_div_table_ne_gcc_gpll0_out_even, 75*a4f780cdSTaniya Das .num_post_div = ARRAY_SIZE(post_div_table_ne_gcc_gpll0_out_even), 76*a4f780cdSTaniya Das .width = 4, 77*a4f780cdSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 78*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 79*a4f780cdSTaniya Das .name = "ne_gcc_gpll0_out_even", 80*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 81*a4f780cdSTaniya Das &ne_gcc_gpll0.clkr.hw, 82*a4f780cdSTaniya Das }, 83*a4f780cdSTaniya Das .num_parents = 1, 84*a4f780cdSTaniya Das .ops = &clk_alpha_pll_postdiv_lucid_ole_ops, 85*a4f780cdSTaniya Das }, 86*a4f780cdSTaniya Das }; 87*a4f780cdSTaniya Das 88*a4f780cdSTaniya Das static struct clk_alpha_pll ne_gcc_gpll2 = { 89*a4f780cdSTaniya Das .offset = 0x2000, 90*a4f780cdSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 91*a4f780cdSTaniya Das .clkr = { 92*a4f780cdSTaniya Das .enable_reg = 0x0, 93*a4f780cdSTaniya Das .enable_mask = BIT(2), 94*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 95*a4f780cdSTaniya Das .name = "ne_gcc_gpll2", 96*a4f780cdSTaniya Das .parent_data = &(const struct clk_parent_data) { 97*a4f780cdSTaniya Das .index = DT_BI_TCXO, 98*a4f780cdSTaniya Das }, 99*a4f780cdSTaniya Das .num_parents = 1, 100*a4f780cdSTaniya Das .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 101*a4f780cdSTaniya Das }, 102*a4f780cdSTaniya Das }, 103*a4f780cdSTaniya Das }; 104*a4f780cdSTaniya Das 105*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_0[] = { 106*a4f780cdSTaniya Das { P_BI_TCXO, 0 }, 107*a4f780cdSTaniya Das { P_NE_GCC_GPLL0_OUT_MAIN, 1 }, 108*a4f780cdSTaniya Das }; 109*a4f780cdSTaniya Das 110*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_0[] = { 111*a4f780cdSTaniya Das { .index = DT_BI_TCXO }, 112*a4f780cdSTaniya Das { .hw = &ne_gcc_gpll0.clkr.hw }, 113*a4f780cdSTaniya Das }; 114*a4f780cdSTaniya Das 115*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_1[] = { 116*a4f780cdSTaniya Das { P_BI_TCXO, 0 }, 117*a4f780cdSTaniya Das { P_NE_GCC_GPLL0_OUT_MAIN, 1 }, 118*a4f780cdSTaniya Das { P_NE_GCC_GPLL0_OUT_EVEN, 5 }, 119*a4f780cdSTaniya Das }; 120*a4f780cdSTaniya Das 121*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_1[] = { 122*a4f780cdSTaniya Das { .index = DT_BI_TCXO }, 123*a4f780cdSTaniya Das { .hw = &ne_gcc_gpll0.clkr.hw }, 124*a4f780cdSTaniya Das { .hw = &ne_gcc_gpll0_out_even.clkr.hw }, 125*a4f780cdSTaniya Das }; 126*a4f780cdSTaniya Das 127*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_2[] = { 128*a4f780cdSTaniya Das { P_BI_TCXO, 0 }, 129*a4f780cdSTaniya Das { P_NE_GCC_GPLL0_OUT_MAIN, 1 }, 130*a4f780cdSTaniya Das { P_NE_GCC_GPLL2_OUT_MAIN, 3 }, 131*a4f780cdSTaniya Das }; 132*a4f780cdSTaniya Das 133*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_2[] = { 134*a4f780cdSTaniya Das { .index = DT_BI_TCXO }, 135*a4f780cdSTaniya Das { .hw = &ne_gcc_gpll0.clkr.hw }, 136*a4f780cdSTaniya Das { .hw = &ne_gcc_gpll2.clkr.hw }, 137*a4f780cdSTaniya Das }; 138*a4f780cdSTaniya Das 139*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_3[] = { 140*a4f780cdSTaniya Das { P_BI_TCXO, 0 }, 141*a4f780cdSTaniya Das { P_SLEEP_CLK, 5 }, 142*a4f780cdSTaniya Das }; 143*a4f780cdSTaniya Das 144*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_3[] = { 145*a4f780cdSTaniya Das { .index = DT_BI_TCXO }, 146*a4f780cdSTaniya Das { .index = DT_SLEEP_CLK }, 147*a4f780cdSTaniya Das }; 148*a4f780cdSTaniya Das 149*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_4[] = { 150*a4f780cdSTaniya Das { P_BI_TCXO, 0 }, 151*a4f780cdSTaniya Das { P_NE_GCC_GPLL0_OUT_MAIN, 1 }, 152*a4f780cdSTaniya Das { P_SLEEP_CLK, 5 }, 153*a4f780cdSTaniya Das }; 154*a4f780cdSTaniya Das 155*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_4[] = { 156*a4f780cdSTaniya Das { .index = DT_BI_TCXO }, 157*a4f780cdSTaniya Das { .hw = &ne_gcc_gpll0.clkr.hw }, 158*a4f780cdSTaniya Das { .index = DT_SLEEP_CLK }, 159*a4f780cdSTaniya Das }; 160*a4f780cdSTaniya Das 161*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_5[] = { 162*a4f780cdSTaniya Das { P_BI_TCXO, 0 }, 163*a4f780cdSTaniya Das }; 164*a4f780cdSTaniya Das 165*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_5[] = { 166*a4f780cdSTaniya Das { .index = DT_BI_TCXO }, 167*a4f780cdSTaniya Das }; 168*a4f780cdSTaniya Das 169*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_6[] = { 170*a4f780cdSTaniya Das { P_USB3_PHY_WRAPPER_NE_GCC_USB31_PIPE_CLK, 0 }, 171*a4f780cdSTaniya Das { P_BI_TCXO, 2 }, 172*a4f780cdSTaniya Das }; 173*a4f780cdSTaniya Das 174*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_6[] = { 175*a4f780cdSTaniya Das { .index = DT_USB3_PHY_WRAPPER_NE_GCC_USB31_PIPE_CLK }, 176*a4f780cdSTaniya Das { .index = DT_BI_TCXO }, 177*a4f780cdSTaniya Das }; 178*a4f780cdSTaniya Das 179*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_7[] = { 180*a4f780cdSTaniya Das { P_USB3_PHY_SEC_WRAPPER_NE_GCC_USB31_PIPE_CLK, 0 }, 181*a4f780cdSTaniya Das { P_BI_TCXO, 2 }, 182*a4f780cdSTaniya Das }; 183*a4f780cdSTaniya Das 184*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_7[] = { 185*a4f780cdSTaniya Das { .index = DT_USB3_PHY_SEC_WRAPPER_NE_GCC_USB31_PIPE_CLK }, 186*a4f780cdSTaniya Das { .index = DT_BI_TCXO }, 187*a4f780cdSTaniya Das }; 188*a4f780cdSTaniya Das 189*a4f780cdSTaniya Das static struct clk_regmap_phy_mux ne_gcc_ufs_phy_rx_symbol_0_clk_src = { 190*a4f780cdSTaniya Das .reg = 0x33068, 191*a4f780cdSTaniya Das .clkr = { 192*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 193*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_rx_symbol_0_clk_src", 194*a4f780cdSTaniya Das .parent_data = &(const struct clk_parent_data){ 195*a4f780cdSTaniya Das .index = DT_UFS_PHY_RX_SYMBOL_0_CLK, 196*a4f780cdSTaniya Das }, 197*a4f780cdSTaniya Das .num_parents = 1, 198*a4f780cdSTaniya Das .ops = &clk_regmap_phy_mux_ops, 199*a4f780cdSTaniya Das }, 200*a4f780cdSTaniya Das }, 201*a4f780cdSTaniya Das }; 202*a4f780cdSTaniya Das 203*a4f780cdSTaniya Das static struct clk_regmap_phy_mux ne_gcc_ufs_phy_rx_symbol_1_clk_src = { 204*a4f780cdSTaniya Das .reg = 0x330f0, 205*a4f780cdSTaniya Das .clkr = { 206*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 207*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_rx_symbol_1_clk_src", 208*a4f780cdSTaniya Das .parent_data = &(const struct clk_parent_data){ 209*a4f780cdSTaniya Das .index = DT_UFS_PHY_RX_SYMBOL_1_CLK, 210*a4f780cdSTaniya Das }, 211*a4f780cdSTaniya Das .num_parents = 1, 212*a4f780cdSTaniya Das .ops = &clk_regmap_phy_mux_ops, 213*a4f780cdSTaniya Das }, 214*a4f780cdSTaniya Das }, 215*a4f780cdSTaniya Das }; 216*a4f780cdSTaniya Das 217*a4f780cdSTaniya Das static struct clk_regmap_phy_mux ne_gcc_ufs_phy_tx_symbol_0_clk_src = { 218*a4f780cdSTaniya Das .reg = 0x33058, 219*a4f780cdSTaniya Das .clkr = { 220*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 221*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_tx_symbol_0_clk_src", 222*a4f780cdSTaniya Das .parent_data = &(const struct clk_parent_data){ 223*a4f780cdSTaniya Das .index = DT_UFS_PHY_TX_SYMBOL_0_CLK, 224*a4f780cdSTaniya Das }, 225*a4f780cdSTaniya Das .num_parents = 1, 226*a4f780cdSTaniya Das .ops = &clk_regmap_phy_mux_ops, 227*a4f780cdSTaniya Das }, 228*a4f780cdSTaniya Das }, 229*a4f780cdSTaniya Das }; 230*a4f780cdSTaniya Das 231*a4f780cdSTaniya Das static struct clk_regmap_mux ne_gcc_usb3_prim_phy_pipe_clk_src = { 232*a4f780cdSTaniya Das .reg = 0x2a078, 233*a4f780cdSTaniya Das .shift = 0, 234*a4f780cdSTaniya Das .width = 2, 235*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_6, 236*a4f780cdSTaniya Das .clkr = { 237*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 238*a4f780cdSTaniya Das .name = "ne_gcc_usb3_prim_phy_pipe_clk_src", 239*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_6, 240*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_6), 241*a4f780cdSTaniya Das .ops = &clk_regmap_mux_closest_ops, 242*a4f780cdSTaniya Das }, 243*a4f780cdSTaniya Das }, 244*a4f780cdSTaniya Das }; 245*a4f780cdSTaniya Das 246*a4f780cdSTaniya Das static struct clk_regmap_mux ne_gcc_usb3_sec_phy_pipe_clk_src = { 247*a4f780cdSTaniya Das .reg = 0x2c078, 248*a4f780cdSTaniya Das .shift = 0, 249*a4f780cdSTaniya Das .width = 2, 250*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_7, 251*a4f780cdSTaniya Das .clkr = { 252*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 253*a4f780cdSTaniya Das .name = "ne_gcc_usb3_sec_phy_pipe_clk_src", 254*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_7, 255*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_7), 256*a4f780cdSTaniya Das .ops = &clk_regmap_mux_closest_ops, 257*a4f780cdSTaniya Das }, 258*a4f780cdSTaniya Das }, 259*a4f780cdSTaniya Das }; 260*a4f780cdSTaniya Das 261*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_gp1_clk_src[] = { 262*a4f780cdSTaniya Das F(66666667, P_NE_GCC_GPLL0_OUT_MAIN, 9, 0, 0), 263*a4f780cdSTaniya Das F(100000000, P_NE_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 264*a4f780cdSTaniya Das F(200000000, P_NE_GCC_GPLL0_OUT_MAIN, 3, 0, 0), 265*a4f780cdSTaniya Das { } 266*a4f780cdSTaniya Das }; 267*a4f780cdSTaniya Das 268*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_gp1_clk_src = { 269*a4f780cdSTaniya Das .cmd_rcgr = 0x21004, 270*a4f780cdSTaniya Das .mnd_width = 16, 271*a4f780cdSTaniya Das .hid_width = 5, 272*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_4, 273*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_gp1_clk_src, 274*a4f780cdSTaniya Das .hw_clk_ctrl = true, 275*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 276*a4f780cdSTaniya Das .name = "ne_gcc_gp1_clk_src", 277*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_4, 278*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_4), 279*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 280*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 281*a4f780cdSTaniya Das }, 282*a4f780cdSTaniya Das }; 283*a4f780cdSTaniya Das 284*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_gp2_clk_src = { 285*a4f780cdSTaniya Das .cmd_rcgr = 0x22004, 286*a4f780cdSTaniya Das .mnd_width = 16, 287*a4f780cdSTaniya Das .hid_width = 5, 288*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_4, 289*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_gp1_clk_src, 290*a4f780cdSTaniya Das .hw_clk_ctrl = true, 291*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 292*a4f780cdSTaniya Das .name = "ne_gcc_gp2_clk_src", 293*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_4, 294*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_4), 295*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 296*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 297*a4f780cdSTaniya Das }, 298*a4f780cdSTaniya Das }; 299*a4f780cdSTaniya Das 300*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_qupv3_wrap2_s0_clk_src[] = { 301*a4f780cdSTaniya Das F(7372800, P_NE_GCC_GPLL0_OUT_MAIN, 1, 192, 15625), 302*a4f780cdSTaniya Das F(14745600, P_NE_GCC_GPLL0_OUT_MAIN, 1, 384, 15625), 303*a4f780cdSTaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 304*a4f780cdSTaniya Das F(29491200, P_NE_GCC_GPLL0_OUT_MAIN, 1, 768, 15625), 305*a4f780cdSTaniya Das F(32000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 4, 75), 306*a4f780cdSTaniya Das F(48000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 2, 25), 307*a4f780cdSTaniya Das F(51200000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 32, 375), 308*a4f780cdSTaniya Das F(64000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 8, 75), 309*a4f780cdSTaniya Das F(66666667, P_NE_GCC_GPLL0_OUT_MAIN, 9, 0, 0), 310*a4f780cdSTaniya Das F(75000000, P_NE_GCC_GPLL0_OUT_MAIN, 8, 0, 0), 311*a4f780cdSTaniya Das F(80000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 2, 15), 312*a4f780cdSTaniya Das F(96000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 4, 25), 313*a4f780cdSTaniya Das F(100000000, P_NE_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 314*a4f780cdSTaniya Das F(102400000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 64, 375), 315*a4f780cdSTaniya Das F(112000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 14, 75), 316*a4f780cdSTaniya Das F(117964800, P_NE_GCC_GPLL0_OUT_MAIN, 1, 3072, 15625), 317*a4f780cdSTaniya Das F(120000000, P_NE_GCC_GPLL0_OUT_MAIN, 5, 0, 0), 318*a4f780cdSTaniya Das { } 319*a4f780cdSTaniya Das }; 320*a4f780cdSTaniya Das 321*a4f780cdSTaniya Das static struct clk_init_data ne_gcc_qupv3_wrap2_s0_clk_src_init = { 322*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s0_clk_src", 323*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_0, 324*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_0), 325*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 326*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 327*a4f780cdSTaniya Das }; 328*a4f780cdSTaniya Das 329*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_qupv3_wrap2_s0_clk_src = { 330*a4f780cdSTaniya Das .cmd_rcgr = 0x3816c, 331*a4f780cdSTaniya Das .mnd_width = 16, 332*a4f780cdSTaniya Das .hid_width = 5, 333*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_0, 334*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_qupv3_wrap2_s0_clk_src, 335*a4f780cdSTaniya Das .hw_clk_ctrl = true, 336*a4f780cdSTaniya Das .clkr.hw.init = &ne_gcc_qupv3_wrap2_s0_clk_src_init, 337*a4f780cdSTaniya Das }; 338*a4f780cdSTaniya Das 339*a4f780cdSTaniya Das static struct clk_init_data ne_gcc_qupv3_wrap2_s1_clk_src_init = { 340*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s1_clk_src", 341*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_0, 342*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_0), 343*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 344*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 345*a4f780cdSTaniya Das }; 346*a4f780cdSTaniya Das 347*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_qupv3_wrap2_s1_clk_src = { 348*a4f780cdSTaniya Das .cmd_rcgr = 0x382a8, 349*a4f780cdSTaniya Das .mnd_width = 16, 350*a4f780cdSTaniya Das .hid_width = 5, 351*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_0, 352*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_qupv3_wrap2_s0_clk_src, 353*a4f780cdSTaniya Das .hw_clk_ctrl = true, 354*a4f780cdSTaniya Das .clkr.hw.init = &ne_gcc_qupv3_wrap2_s1_clk_src_init, 355*a4f780cdSTaniya Das }; 356*a4f780cdSTaniya Das 357*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_qupv3_wrap2_s2_clk_src[] = { 358*a4f780cdSTaniya Das F(7372800, P_NE_GCC_GPLL0_OUT_MAIN, 1, 192, 15625), 359*a4f780cdSTaniya Das F(14745600, P_NE_GCC_GPLL0_OUT_MAIN, 1, 384, 15625), 360*a4f780cdSTaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 361*a4f780cdSTaniya Das F(29491200, P_NE_GCC_GPLL0_OUT_MAIN, 1, 768, 15625), 362*a4f780cdSTaniya Das F(32000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 4, 75), 363*a4f780cdSTaniya Das F(48000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 2, 25), 364*a4f780cdSTaniya Das F(51200000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 32, 375), 365*a4f780cdSTaniya Das F(64000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 8, 75), 366*a4f780cdSTaniya Das F(66666667, P_NE_GCC_GPLL0_OUT_MAIN, 9, 0, 0), 367*a4f780cdSTaniya Das F(75000000, P_NE_GCC_GPLL0_OUT_MAIN, 8, 0, 0), 368*a4f780cdSTaniya Das F(80000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 2, 15), 369*a4f780cdSTaniya Das F(96000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 4, 25), 370*a4f780cdSTaniya Das F(100000000, P_NE_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 371*a4f780cdSTaniya Das { } 372*a4f780cdSTaniya Das }; 373*a4f780cdSTaniya Das 374*a4f780cdSTaniya Das static struct clk_init_data ne_gcc_qupv3_wrap2_s2_clk_src_init = { 375*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s2_clk_src", 376*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_0, 377*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_0), 378*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 379*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 380*a4f780cdSTaniya Das }; 381*a4f780cdSTaniya Das 382*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_qupv3_wrap2_s2_clk_src = { 383*a4f780cdSTaniya Das .cmd_rcgr = 0x383e4, 384*a4f780cdSTaniya Das .mnd_width = 16, 385*a4f780cdSTaniya Das .hid_width = 5, 386*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_0, 387*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_qupv3_wrap2_s2_clk_src, 388*a4f780cdSTaniya Das .hw_clk_ctrl = true, 389*a4f780cdSTaniya Das .clkr.hw.init = &ne_gcc_qupv3_wrap2_s2_clk_src_init, 390*a4f780cdSTaniya Das }; 391*a4f780cdSTaniya Das 392*a4f780cdSTaniya Das static struct clk_init_data ne_gcc_qupv3_wrap2_s3_clk_src_init = { 393*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s3_clk_src", 394*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_0, 395*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_0), 396*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 397*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 398*a4f780cdSTaniya Das }; 399*a4f780cdSTaniya Das 400*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_qupv3_wrap2_s3_clk_src = { 401*a4f780cdSTaniya Das .cmd_rcgr = 0x38520, 402*a4f780cdSTaniya Das .mnd_width = 16, 403*a4f780cdSTaniya Das .hid_width = 5, 404*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_0, 405*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_qupv3_wrap2_s2_clk_src, 406*a4f780cdSTaniya Das .hw_clk_ctrl = true, 407*a4f780cdSTaniya Das .clkr.hw.init = &ne_gcc_qupv3_wrap2_s3_clk_src_init, 408*a4f780cdSTaniya Das }; 409*a4f780cdSTaniya Das 410*a4f780cdSTaniya Das static struct clk_init_data ne_gcc_qupv3_wrap2_s4_clk_src_init = { 411*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s4_clk_src", 412*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_0, 413*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_0), 414*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 415*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 416*a4f780cdSTaniya Das }; 417*a4f780cdSTaniya Das 418*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_qupv3_wrap2_s4_clk_src = { 419*a4f780cdSTaniya Das .cmd_rcgr = 0x3865c, 420*a4f780cdSTaniya Das .mnd_width = 16, 421*a4f780cdSTaniya Das .hid_width = 5, 422*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_0, 423*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_qupv3_wrap2_s2_clk_src, 424*a4f780cdSTaniya Das .hw_clk_ctrl = true, 425*a4f780cdSTaniya Das .clkr.hw.init = &ne_gcc_qupv3_wrap2_s4_clk_src_init, 426*a4f780cdSTaniya Das }; 427*a4f780cdSTaniya Das 428*a4f780cdSTaniya Das static struct clk_init_data ne_gcc_qupv3_wrap2_s5_clk_src_init = { 429*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s5_clk_src", 430*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_0, 431*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_0), 432*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 433*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 434*a4f780cdSTaniya Das }; 435*a4f780cdSTaniya Das 436*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_qupv3_wrap2_s5_clk_src = { 437*a4f780cdSTaniya Das .cmd_rcgr = 0x38798, 438*a4f780cdSTaniya Das .mnd_width = 16, 439*a4f780cdSTaniya Das .hid_width = 5, 440*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_0, 441*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_qupv3_wrap2_s2_clk_src, 442*a4f780cdSTaniya Das .hw_clk_ctrl = true, 443*a4f780cdSTaniya Das .clkr.hw.init = &ne_gcc_qupv3_wrap2_s5_clk_src_init, 444*a4f780cdSTaniya Das }; 445*a4f780cdSTaniya Das 446*a4f780cdSTaniya Das static struct clk_init_data ne_gcc_qupv3_wrap2_s6_clk_src_init = { 447*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s6_clk_src", 448*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_0, 449*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_0), 450*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 451*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 452*a4f780cdSTaniya Das }; 453*a4f780cdSTaniya Das 454*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_qupv3_wrap2_s6_clk_src = { 455*a4f780cdSTaniya Das .cmd_rcgr = 0x388d4, 456*a4f780cdSTaniya Das .mnd_width = 16, 457*a4f780cdSTaniya Das .hid_width = 5, 458*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_0, 459*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_qupv3_wrap2_s2_clk_src, 460*a4f780cdSTaniya Das .hw_clk_ctrl = true, 461*a4f780cdSTaniya Das .clkr.hw.init = &ne_gcc_qupv3_wrap2_s6_clk_src_init, 462*a4f780cdSTaniya Das }; 463*a4f780cdSTaniya Das 464*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_sdcc4_apps_clk_src[] = { 465*a4f780cdSTaniya Das F(37500000, P_NE_GCC_GPLL0_OUT_MAIN, 16, 0, 0), 466*a4f780cdSTaniya Das F(50000000, P_NE_GCC_GPLL0_OUT_MAIN, 12, 0, 0), 467*a4f780cdSTaniya Das F(100000000, P_NE_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 468*a4f780cdSTaniya Das { } 469*a4f780cdSTaniya Das }; 470*a4f780cdSTaniya Das 471*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_sdcc4_apps_clk_src = { 472*a4f780cdSTaniya Das .cmd_rcgr = 0x1801c, 473*a4f780cdSTaniya Das .mnd_width = 8, 474*a4f780cdSTaniya Das .hid_width = 5, 475*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_0, 476*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_sdcc4_apps_clk_src, 477*a4f780cdSTaniya Das .hw_clk_ctrl = true, 478*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 479*a4f780cdSTaniya Das .name = "ne_gcc_sdcc4_apps_clk_src", 480*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_0, 481*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_0), 482*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 483*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_floor_ops, 484*a4f780cdSTaniya Das }, 485*a4f780cdSTaniya Das }; 486*a4f780cdSTaniya Das 487*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_ufs_phy_axi_clk_src[] = { 488*a4f780cdSTaniya Das F(120000000, P_NE_GCC_GPLL0_OUT_MAIN, 5, 0, 0), 489*a4f780cdSTaniya Das F(201500000, P_NE_GCC_GPLL2_OUT_MAIN, 4, 0, 0), 490*a4f780cdSTaniya Das F(300000000, P_NE_GCC_GPLL0_OUT_MAIN, 2, 0, 0), 491*a4f780cdSTaniya Das F(403000000, P_NE_GCC_GPLL2_OUT_MAIN, 2, 0, 0), 492*a4f780cdSTaniya Das { } 493*a4f780cdSTaniya Das }; 494*a4f780cdSTaniya Das 495*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_ufs_phy_axi_clk_src = { 496*a4f780cdSTaniya Das .cmd_rcgr = 0x33034, 497*a4f780cdSTaniya Das .mnd_width = 8, 498*a4f780cdSTaniya Das .hid_width = 5, 499*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_2, 500*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_ufs_phy_axi_clk_src, 501*a4f780cdSTaniya Das .hw_clk_ctrl = true, 502*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 503*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_axi_clk_src", 504*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_2, 505*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_2), 506*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 507*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 508*a4f780cdSTaniya Das }, 509*a4f780cdSTaniya Das }; 510*a4f780cdSTaniya Das 511*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_ufs_phy_ice_core_clk_src = { 512*a4f780cdSTaniya Das .cmd_rcgr = 0x3308c, 513*a4f780cdSTaniya Das .mnd_width = 0, 514*a4f780cdSTaniya Das .hid_width = 5, 515*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_2, 516*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_ufs_phy_axi_clk_src, 517*a4f780cdSTaniya Das .hw_clk_ctrl = true, 518*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 519*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_ice_core_clk_src", 520*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_2, 521*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_2), 522*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 523*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 524*a4f780cdSTaniya Das }, 525*a4f780cdSTaniya Das }; 526*a4f780cdSTaniya Das 527*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_ufs_phy_phy_aux_clk_src[] = { 528*a4f780cdSTaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 529*a4f780cdSTaniya Das { } 530*a4f780cdSTaniya Das }; 531*a4f780cdSTaniya Das 532*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_ufs_phy_phy_aux_clk_src = { 533*a4f780cdSTaniya Das .cmd_rcgr = 0x330c0, 534*a4f780cdSTaniya Das .mnd_width = 0, 535*a4f780cdSTaniya Das .hid_width = 5, 536*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_5, 537*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_ufs_phy_phy_aux_clk_src, 538*a4f780cdSTaniya Das .hw_clk_ctrl = true, 539*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 540*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_phy_aux_clk_src", 541*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_5, 542*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_5), 543*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 544*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 545*a4f780cdSTaniya Das }, 546*a4f780cdSTaniya Das }; 547*a4f780cdSTaniya Das 548*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_ufs_phy_unipro_core_clk_src = { 549*a4f780cdSTaniya Das .cmd_rcgr = 0x330a4, 550*a4f780cdSTaniya Das .mnd_width = 0, 551*a4f780cdSTaniya Das .hid_width = 5, 552*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_2, 553*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_ufs_phy_axi_clk_src, 554*a4f780cdSTaniya Das .hw_clk_ctrl = true, 555*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 556*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_unipro_core_clk_src", 557*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_2, 558*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_2), 559*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 560*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 561*a4f780cdSTaniya Das }, 562*a4f780cdSTaniya Das }; 563*a4f780cdSTaniya Das 564*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_usb20_master_clk_src[] = { 565*a4f780cdSTaniya Das F(75000000, P_NE_GCC_GPLL0_OUT_MAIN, 8, 0, 0), 566*a4f780cdSTaniya Das F(120000000, P_NE_GCC_GPLL0_OUT_MAIN, 5, 0, 0), 567*a4f780cdSTaniya Das { } 568*a4f780cdSTaniya Das }; 569*a4f780cdSTaniya Das 570*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb20_master_clk_src = { 571*a4f780cdSTaniya Das .cmd_rcgr = 0x31030, 572*a4f780cdSTaniya Das .mnd_width = 8, 573*a4f780cdSTaniya Das .hid_width = 5, 574*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_0, 575*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_usb20_master_clk_src, 576*a4f780cdSTaniya Das .hw_clk_ctrl = true, 577*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 578*a4f780cdSTaniya Das .name = "ne_gcc_usb20_master_clk_src", 579*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_0, 580*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_0), 581*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 582*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 583*a4f780cdSTaniya Das }, 584*a4f780cdSTaniya Das }; 585*a4f780cdSTaniya Das 586*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb20_mock_utmi_clk_src = { 587*a4f780cdSTaniya Das .cmd_rcgr = 0x31048, 588*a4f780cdSTaniya Das .mnd_width = 0, 589*a4f780cdSTaniya Das .hid_width = 5, 590*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_0, 591*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_ufs_phy_phy_aux_clk_src, 592*a4f780cdSTaniya Das .hw_clk_ctrl = true, 593*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 594*a4f780cdSTaniya Das .name = "ne_gcc_usb20_mock_utmi_clk_src", 595*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_0, 596*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_0), 597*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 598*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 599*a4f780cdSTaniya Das }, 600*a4f780cdSTaniya Das }; 601*a4f780cdSTaniya Das 602*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_usb31_prim_master_clk_src[] = { 603*a4f780cdSTaniya Das F(85714286, P_NE_GCC_GPLL0_OUT_MAIN, 7, 0, 0), 604*a4f780cdSTaniya Das F(133333333, P_NE_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0), 605*a4f780cdSTaniya Das F(200000000, P_NE_GCC_GPLL0_OUT_MAIN, 3, 0, 0), 606*a4f780cdSTaniya Das F(240000000, P_NE_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0), 607*a4f780cdSTaniya Das { } 608*a4f780cdSTaniya Das }; 609*a4f780cdSTaniya Das 610*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb31_prim_master_clk_src = { 611*a4f780cdSTaniya Das .cmd_rcgr = 0x2a038, 612*a4f780cdSTaniya Das .mnd_width = 8, 613*a4f780cdSTaniya Das .hid_width = 5, 614*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_1, 615*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_usb31_prim_master_clk_src, 616*a4f780cdSTaniya Das .hw_clk_ctrl = true, 617*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 618*a4f780cdSTaniya Das .name = "ne_gcc_usb31_prim_master_clk_src", 619*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_1, 620*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_1), 621*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 622*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 623*a4f780cdSTaniya Das }, 624*a4f780cdSTaniya Das }; 625*a4f780cdSTaniya Das 626*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb31_prim_mock_utmi_clk_src = { 627*a4f780cdSTaniya Das .cmd_rcgr = 0x2a050, 628*a4f780cdSTaniya Das .mnd_width = 0, 629*a4f780cdSTaniya Das .hid_width = 5, 630*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_0, 631*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_ufs_phy_phy_aux_clk_src, 632*a4f780cdSTaniya Das .hw_clk_ctrl = true, 633*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 634*a4f780cdSTaniya Das .name = "ne_gcc_usb31_prim_mock_utmi_clk_src", 635*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_0, 636*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_0), 637*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 638*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 639*a4f780cdSTaniya Das }, 640*a4f780cdSTaniya Das }; 641*a4f780cdSTaniya Das 642*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb31_sec_master_clk_src = { 643*a4f780cdSTaniya Das .cmd_rcgr = 0x2c038, 644*a4f780cdSTaniya Das .mnd_width = 8, 645*a4f780cdSTaniya Das .hid_width = 5, 646*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_0, 647*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_usb31_prim_master_clk_src, 648*a4f780cdSTaniya Das .hw_clk_ctrl = true, 649*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 650*a4f780cdSTaniya Das .name = "ne_gcc_usb31_sec_master_clk_src", 651*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_0, 652*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_0), 653*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 654*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 655*a4f780cdSTaniya Das }, 656*a4f780cdSTaniya Das }; 657*a4f780cdSTaniya Das 658*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb31_sec_mock_utmi_clk_src = { 659*a4f780cdSTaniya Das .cmd_rcgr = 0x2c050, 660*a4f780cdSTaniya Das .mnd_width = 0, 661*a4f780cdSTaniya Das .hid_width = 5, 662*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_0, 663*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_ufs_phy_phy_aux_clk_src, 664*a4f780cdSTaniya Das .hw_clk_ctrl = true, 665*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 666*a4f780cdSTaniya Das .name = "ne_gcc_usb31_sec_mock_utmi_clk_src", 667*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_0, 668*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_0), 669*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 670*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 671*a4f780cdSTaniya Das }, 672*a4f780cdSTaniya Das }; 673*a4f780cdSTaniya Das 674*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb3_prim_phy_aux_clk_src = { 675*a4f780cdSTaniya Das .cmd_rcgr = 0x2a07c, 676*a4f780cdSTaniya Das .mnd_width = 0, 677*a4f780cdSTaniya Das .hid_width = 5, 678*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_3, 679*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_ufs_phy_phy_aux_clk_src, 680*a4f780cdSTaniya Das .hw_clk_ctrl = true, 681*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 682*a4f780cdSTaniya Das .name = "ne_gcc_usb3_prim_phy_aux_clk_src", 683*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_3, 684*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_3), 685*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 686*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 687*a4f780cdSTaniya Das }, 688*a4f780cdSTaniya Das }; 689*a4f780cdSTaniya Das 690*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb3_sec_phy_aux_clk_src = { 691*a4f780cdSTaniya Das .cmd_rcgr = 0x2c07c, 692*a4f780cdSTaniya Das .mnd_width = 0, 693*a4f780cdSTaniya Das .hid_width = 5, 694*a4f780cdSTaniya Das .parent_map = ne_gcc_parent_map_3, 695*a4f780cdSTaniya Das .freq_tbl = ftbl_ne_gcc_ufs_phy_phy_aux_clk_src, 696*a4f780cdSTaniya Das .hw_clk_ctrl = true, 697*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 698*a4f780cdSTaniya Das .name = "ne_gcc_usb3_sec_phy_aux_clk_src", 699*a4f780cdSTaniya Das .parent_data = ne_gcc_parent_data_3, 700*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(ne_gcc_parent_data_3), 701*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 702*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 703*a4f780cdSTaniya Das }, 704*a4f780cdSTaniya Das }; 705*a4f780cdSTaniya Das 706*a4f780cdSTaniya Das static struct clk_regmap_div ne_gcc_usb20_mock_utmi_postdiv_clk_src = { 707*a4f780cdSTaniya Das .reg = 0x31060, 708*a4f780cdSTaniya Das .shift = 0, 709*a4f780cdSTaniya Das .width = 4, 710*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 711*a4f780cdSTaniya Das .name = "ne_gcc_usb20_mock_utmi_postdiv_clk_src", 712*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 713*a4f780cdSTaniya Das &ne_gcc_usb20_mock_utmi_clk_src.clkr.hw, 714*a4f780cdSTaniya Das }, 715*a4f780cdSTaniya Das .num_parents = 1, 716*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 717*a4f780cdSTaniya Das .ops = &clk_regmap_div_ro_ops, 718*a4f780cdSTaniya Das }, 719*a4f780cdSTaniya Das }; 720*a4f780cdSTaniya Das 721*a4f780cdSTaniya Das static struct clk_regmap_div ne_gcc_usb31_prim_mock_utmi_postdiv_clk_src = { 722*a4f780cdSTaniya Das .reg = 0x2a068, 723*a4f780cdSTaniya Das .shift = 0, 724*a4f780cdSTaniya Das .width = 4, 725*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 726*a4f780cdSTaniya Das .name = "ne_gcc_usb31_prim_mock_utmi_postdiv_clk_src", 727*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 728*a4f780cdSTaniya Das &ne_gcc_usb31_prim_mock_utmi_clk_src.clkr.hw, 729*a4f780cdSTaniya Das }, 730*a4f780cdSTaniya Das .num_parents = 1, 731*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 732*a4f780cdSTaniya Das .ops = &clk_regmap_div_ro_ops, 733*a4f780cdSTaniya Das }, 734*a4f780cdSTaniya Das }; 735*a4f780cdSTaniya Das 736*a4f780cdSTaniya Das static struct clk_regmap_div ne_gcc_usb31_sec_mock_utmi_postdiv_clk_src = { 737*a4f780cdSTaniya Das .reg = 0x2c068, 738*a4f780cdSTaniya Das .shift = 0, 739*a4f780cdSTaniya Das .width = 4, 740*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 741*a4f780cdSTaniya Das .name = "ne_gcc_usb31_sec_mock_utmi_postdiv_clk_src", 742*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 743*a4f780cdSTaniya Das &ne_gcc_usb31_sec_mock_utmi_clk_src.clkr.hw, 744*a4f780cdSTaniya Das }, 745*a4f780cdSTaniya Das .num_parents = 1, 746*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 747*a4f780cdSTaniya Das .ops = &clk_regmap_div_ro_ops, 748*a4f780cdSTaniya Das }, 749*a4f780cdSTaniya Das }; 750*a4f780cdSTaniya Das 751*a4f780cdSTaniya Das static struct clk_branch ne_gcc_aggre_noc_ufs_phy_axi_clk = { 752*a4f780cdSTaniya Das .halt_reg = 0x330f4, 753*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 754*a4f780cdSTaniya Das .hwcg_reg = 0x330f4, 755*a4f780cdSTaniya Das .hwcg_bit = 1, 756*a4f780cdSTaniya Das .clkr = { 757*a4f780cdSTaniya Das .enable_reg = 0x330f4, 758*a4f780cdSTaniya Das .enable_mask = BIT(0), 759*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 760*a4f780cdSTaniya Das .name = "ne_gcc_aggre_noc_ufs_phy_axi_clk", 761*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 762*a4f780cdSTaniya Das &ne_gcc_ufs_phy_axi_clk_src.clkr.hw, 763*a4f780cdSTaniya Das }, 764*a4f780cdSTaniya Das .num_parents = 1, 765*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 766*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 767*a4f780cdSTaniya Das }, 768*a4f780cdSTaniya Das }, 769*a4f780cdSTaniya Das }; 770*a4f780cdSTaniya Das 771*a4f780cdSTaniya Das static struct clk_branch ne_gcc_aggre_noc_usb2_axi_clk = { 772*a4f780cdSTaniya Das .halt_reg = 0x31068, 773*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 774*a4f780cdSTaniya Das .hwcg_reg = 0x31068, 775*a4f780cdSTaniya Das .hwcg_bit = 1, 776*a4f780cdSTaniya Das .clkr = { 777*a4f780cdSTaniya Das .enable_reg = 0x31068, 778*a4f780cdSTaniya Das .enable_mask = BIT(0), 779*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 780*a4f780cdSTaniya Das .name = "ne_gcc_aggre_noc_usb2_axi_clk", 781*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 782*a4f780cdSTaniya Das &ne_gcc_usb20_master_clk_src.clkr.hw, 783*a4f780cdSTaniya Das }, 784*a4f780cdSTaniya Das .num_parents = 1, 785*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 786*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 787*a4f780cdSTaniya Das }, 788*a4f780cdSTaniya Das }, 789*a4f780cdSTaniya Das }; 790*a4f780cdSTaniya Das 791*a4f780cdSTaniya Das static struct clk_branch ne_gcc_aggre_noc_usb3_prim_axi_clk = { 792*a4f780cdSTaniya Das .halt_reg = 0x2a098, 793*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 794*a4f780cdSTaniya Das .hwcg_reg = 0x2a098, 795*a4f780cdSTaniya Das .hwcg_bit = 1, 796*a4f780cdSTaniya Das .clkr = { 797*a4f780cdSTaniya Das .enable_reg = 0x2a098, 798*a4f780cdSTaniya Das .enable_mask = BIT(0), 799*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 800*a4f780cdSTaniya Das .name = "ne_gcc_aggre_noc_usb3_prim_axi_clk", 801*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 802*a4f780cdSTaniya Das &ne_gcc_usb31_prim_master_clk_src.clkr.hw, 803*a4f780cdSTaniya Das }, 804*a4f780cdSTaniya Das .num_parents = 1, 805*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 806*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 807*a4f780cdSTaniya Das }, 808*a4f780cdSTaniya Das }, 809*a4f780cdSTaniya Das }; 810*a4f780cdSTaniya Das 811*a4f780cdSTaniya Das static struct clk_branch ne_gcc_aggre_noc_usb3_sec_axi_clk = { 812*a4f780cdSTaniya Das .halt_reg = 0x2c098, 813*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 814*a4f780cdSTaniya Das .hwcg_reg = 0x2c098, 815*a4f780cdSTaniya Das .hwcg_bit = 1, 816*a4f780cdSTaniya Das .clkr = { 817*a4f780cdSTaniya Das .enable_reg = 0x2c098, 818*a4f780cdSTaniya Das .enable_mask = BIT(0), 819*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 820*a4f780cdSTaniya Das .name = "ne_gcc_aggre_noc_usb3_sec_axi_clk", 821*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 822*a4f780cdSTaniya Das &ne_gcc_usb31_sec_master_clk_src.clkr.hw, 823*a4f780cdSTaniya Das }, 824*a4f780cdSTaniya Das .num_parents = 1, 825*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 826*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 827*a4f780cdSTaniya Das }, 828*a4f780cdSTaniya Das }, 829*a4f780cdSTaniya Das }; 830*a4f780cdSTaniya Das 831*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ahb2phy_clk = { 832*a4f780cdSTaniya Das .halt_reg = 0x30004, 833*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 834*a4f780cdSTaniya Das .hwcg_reg = 0x30004, 835*a4f780cdSTaniya Das .hwcg_bit = 1, 836*a4f780cdSTaniya Das .clkr = { 837*a4f780cdSTaniya Das .enable_reg = 0x30004, 838*a4f780cdSTaniya Das .enable_mask = BIT(0), 839*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 840*a4f780cdSTaniya Das .name = "ne_gcc_ahb2phy_clk", 841*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 842*a4f780cdSTaniya Das }, 843*a4f780cdSTaniya Das }, 844*a4f780cdSTaniya Das }; 845*a4f780cdSTaniya Das 846*a4f780cdSTaniya Das static struct clk_branch ne_gcc_cnoc_usb2_axi_clk = { 847*a4f780cdSTaniya Das .halt_reg = 0x31064, 848*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 849*a4f780cdSTaniya Das .hwcg_reg = 0x31064, 850*a4f780cdSTaniya Das .hwcg_bit = 1, 851*a4f780cdSTaniya Das .clkr = { 852*a4f780cdSTaniya Das .enable_reg = 0x31064, 853*a4f780cdSTaniya Das .enable_mask = BIT(0), 854*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 855*a4f780cdSTaniya Das .name = "ne_gcc_cnoc_usb2_axi_clk", 856*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 857*a4f780cdSTaniya Das &ne_gcc_usb20_master_clk_src.clkr.hw, 858*a4f780cdSTaniya Das }, 859*a4f780cdSTaniya Das .num_parents = 1, 860*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 861*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 862*a4f780cdSTaniya Das }, 863*a4f780cdSTaniya Das }, 864*a4f780cdSTaniya Das }; 865*a4f780cdSTaniya Das 866*a4f780cdSTaniya Das static struct clk_branch ne_gcc_cnoc_usb3_prim_axi_clk = { 867*a4f780cdSTaniya Das .halt_reg = 0x2a094, 868*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 869*a4f780cdSTaniya Das .hwcg_reg = 0x2a094, 870*a4f780cdSTaniya Das .hwcg_bit = 1, 871*a4f780cdSTaniya Das .clkr = { 872*a4f780cdSTaniya Das .enable_reg = 0x2a094, 873*a4f780cdSTaniya Das .enable_mask = BIT(0), 874*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 875*a4f780cdSTaniya Das .name = "ne_gcc_cnoc_usb3_prim_axi_clk", 876*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 877*a4f780cdSTaniya Das &ne_gcc_usb31_prim_master_clk_src.clkr.hw, 878*a4f780cdSTaniya Das }, 879*a4f780cdSTaniya Das .num_parents = 1, 880*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 881*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 882*a4f780cdSTaniya Das }, 883*a4f780cdSTaniya Das }, 884*a4f780cdSTaniya Das }; 885*a4f780cdSTaniya Das 886*a4f780cdSTaniya Das static struct clk_branch ne_gcc_cnoc_usb3_sec_axi_clk = { 887*a4f780cdSTaniya Das .halt_reg = 0x2c094, 888*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 889*a4f780cdSTaniya Das .hwcg_reg = 0x2c094, 890*a4f780cdSTaniya Das .hwcg_bit = 1, 891*a4f780cdSTaniya Das .clkr = { 892*a4f780cdSTaniya Das .enable_reg = 0x2c094, 893*a4f780cdSTaniya Das .enable_mask = BIT(0), 894*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 895*a4f780cdSTaniya Das .name = "ne_gcc_cnoc_usb3_sec_axi_clk", 896*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 897*a4f780cdSTaniya Das &ne_gcc_usb31_sec_master_clk_src.clkr.hw, 898*a4f780cdSTaniya Das }, 899*a4f780cdSTaniya Das .num_parents = 1, 900*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 901*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 902*a4f780cdSTaniya Das }, 903*a4f780cdSTaniya Das }, 904*a4f780cdSTaniya Das }; 905*a4f780cdSTaniya Das 906*a4f780cdSTaniya Das static struct clk_branch ne_gcc_frq_measure_ref_clk = { 907*a4f780cdSTaniya Das .halt_reg = 0x20008, 908*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 909*a4f780cdSTaniya Das .clkr = { 910*a4f780cdSTaniya Das .enable_reg = 0x20008, 911*a4f780cdSTaniya Das .enable_mask = BIT(0), 912*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 913*a4f780cdSTaniya Das .name = "ne_gcc_frq_measure_ref_clk", 914*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 915*a4f780cdSTaniya Das }, 916*a4f780cdSTaniya Das }, 917*a4f780cdSTaniya Das }; 918*a4f780cdSTaniya Das 919*a4f780cdSTaniya Das static struct clk_branch ne_gcc_gp1_clk = { 920*a4f780cdSTaniya Das .halt_reg = 0x21000, 921*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 922*a4f780cdSTaniya Das .clkr = { 923*a4f780cdSTaniya Das .enable_reg = 0x21000, 924*a4f780cdSTaniya Das .enable_mask = BIT(0), 925*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 926*a4f780cdSTaniya Das .name = "ne_gcc_gp1_clk", 927*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 928*a4f780cdSTaniya Das &ne_gcc_gp1_clk_src.clkr.hw, 929*a4f780cdSTaniya Das }, 930*a4f780cdSTaniya Das .num_parents = 1, 931*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 932*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 933*a4f780cdSTaniya Das }, 934*a4f780cdSTaniya Das }, 935*a4f780cdSTaniya Das }; 936*a4f780cdSTaniya Das 937*a4f780cdSTaniya Das static struct clk_branch ne_gcc_gp2_clk = { 938*a4f780cdSTaniya Das .halt_reg = 0x22000, 939*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 940*a4f780cdSTaniya Das .clkr = { 941*a4f780cdSTaniya Das .enable_reg = 0x22000, 942*a4f780cdSTaniya Das .enable_mask = BIT(0), 943*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 944*a4f780cdSTaniya Das .name = "ne_gcc_gp2_clk", 945*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 946*a4f780cdSTaniya Das &ne_gcc_gp2_clk_src.clkr.hw, 947*a4f780cdSTaniya Das }, 948*a4f780cdSTaniya Das .num_parents = 1, 949*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 950*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 951*a4f780cdSTaniya Das }, 952*a4f780cdSTaniya Das }, 953*a4f780cdSTaniya Das }; 954*a4f780cdSTaniya Das 955*a4f780cdSTaniya Das static struct clk_branch ne_gcc_gpu_2_cfg_clk = { 956*a4f780cdSTaniya Das .halt_reg = 0x34004, 957*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 958*a4f780cdSTaniya Das .hwcg_reg = 0x34004, 959*a4f780cdSTaniya Das .hwcg_bit = 1, 960*a4f780cdSTaniya Das .clkr = { 961*a4f780cdSTaniya Das .enable_reg = 0x34004, 962*a4f780cdSTaniya Das .enable_mask = BIT(0), 963*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 964*a4f780cdSTaniya Das .name = "ne_gcc_gpu_2_cfg_clk", 965*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 966*a4f780cdSTaniya Das }, 967*a4f780cdSTaniya Das }, 968*a4f780cdSTaniya Das }; 969*a4f780cdSTaniya Das 970*a4f780cdSTaniya Das static struct clk_branch ne_gcc_gpu_2_gpll0_clk_src = { 971*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_DELAY, 972*a4f780cdSTaniya Das .clkr = { 973*a4f780cdSTaniya Das .enable_reg = 0x57000, 974*a4f780cdSTaniya Das .enable_mask = BIT(19), 975*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 976*a4f780cdSTaniya Das .name = "ne_gcc_gpu_2_gpll0_clk_src", 977*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 978*a4f780cdSTaniya Das &ne_gcc_gpll0.clkr.hw, 979*a4f780cdSTaniya Das }, 980*a4f780cdSTaniya Das .num_parents = 1, 981*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 982*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 983*a4f780cdSTaniya Das }, 984*a4f780cdSTaniya Das }, 985*a4f780cdSTaniya Das }; 986*a4f780cdSTaniya Das 987*a4f780cdSTaniya Das static struct clk_branch ne_gcc_gpu_2_gpll0_div_clk_src = { 988*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_DELAY, 989*a4f780cdSTaniya Das .clkr = { 990*a4f780cdSTaniya Das .enable_reg = 0x57000, 991*a4f780cdSTaniya Das .enable_mask = BIT(20), 992*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 993*a4f780cdSTaniya Das .name = "ne_gcc_gpu_2_gpll0_div_clk_src", 994*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 995*a4f780cdSTaniya Das &ne_gcc_gpll0_out_even.clkr.hw, 996*a4f780cdSTaniya Das }, 997*a4f780cdSTaniya Das .num_parents = 1, 998*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 999*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1000*a4f780cdSTaniya Das }, 1001*a4f780cdSTaniya Das }, 1002*a4f780cdSTaniya Das }; 1003*a4f780cdSTaniya Das 1004*a4f780cdSTaniya Das static struct clk_branch ne_gcc_gpu_2_hscnoc_gfx_clk = { 1005*a4f780cdSTaniya Das .halt_reg = 0x34014, 1006*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1007*a4f780cdSTaniya Das .hwcg_reg = 0x34014, 1008*a4f780cdSTaniya Das .hwcg_bit = 1, 1009*a4f780cdSTaniya Das .clkr = { 1010*a4f780cdSTaniya Das .enable_reg = 0x34014, 1011*a4f780cdSTaniya Das .enable_mask = BIT(0), 1012*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1013*a4f780cdSTaniya Das .name = "ne_gcc_gpu_2_hscnoc_gfx_clk", 1014*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1015*a4f780cdSTaniya Das }, 1016*a4f780cdSTaniya Das }, 1017*a4f780cdSTaniya Das }; 1018*a4f780cdSTaniya Das 1019*a4f780cdSTaniya Das static struct clk_branch ne_gcc_gpu_2_smmu_vote_clk = { 1020*a4f780cdSTaniya Das .halt_reg = 0x57028, 1021*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1022*a4f780cdSTaniya Das .clkr = { 1023*a4f780cdSTaniya Das .enable_reg = 0x57028, 1024*a4f780cdSTaniya Das .enable_mask = BIT(0), 1025*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1026*a4f780cdSTaniya Das .name = "ne_gcc_gpu_2_smmu_vote_clk", 1027*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1028*a4f780cdSTaniya Das }, 1029*a4f780cdSTaniya Das }, 1030*a4f780cdSTaniya Das }; 1031*a4f780cdSTaniya Das 1032*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_core_2x_clk = { 1033*a4f780cdSTaniya Das .halt_reg = 0x38020, 1034*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1035*a4f780cdSTaniya Das .clkr = { 1036*a4f780cdSTaniya Das .enable_reg = 0x57008, 1037*a4f780cdSTaniya Das .enable_mask = BIT(1), 1038*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1039*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_core_2x_clk", 1040*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1041*a4f780cdSTaniya Das }, 1042*a4f780cdSTaniya Das }, 1043*a4f780cdSTaniya Das }; 1044*a4f780cdSTaniya Das 1045*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_core_clk = { 1046*a4f780cdSTaniya Das .halt_reg = 0x3800c, 1047*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1048*a4f780cdSTaniya Das .clkr = { 1049*a4f780cdSTaniya Das .enable_reg = 0x57008, 1050*a4f780cdSTaniya Das .enable_mask = BIT(0), 1051*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1052*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_core_clk", 1053*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1054*a4f780cdSTaniya Das }, 1055*a4f780cdSTaniya Das }, 1056*a4f780cdSTaniya Das }; 1057*a4f780cdSTaniya Das 1058*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_m_ahb_clk = { 1059*a4f780cdSTaniya Das .halt_reg = 0x38004, 1060*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1061*a4f780cdSTaniya Das .hwcg_reg = 0x38004, 1062*a4f780cdSTaniya Das .hwcg_bit = 1, 1063*a4f780cdSTaniya Das .clkr = { 1064*a4f780cdSTaniya Das .enable_reg = 0x57000, 1065*a4f780cdSTaniya Das .enable_mask = BIT(30), 1066*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1067*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_m_ahb_clk", 1068*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1069*a4f780cdSTaniya Das }, 1070*a4f780cdSTaniya Das }, 1071*a4f780cdSTaniya Das }; 1072*a4f780cdSTaniya Das 1073*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s0_clk = { 1074*a4f780cdSTaniya Das .halt_reg = 0x3815c, 1075*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1076*a4f780cdSTaniya Das .clkr = { 1077*a4f780cdSTaniya Das .enable_reg = 0x57008, 1078*a4f780cdSTaniya Das .enable_mask = BIT(2), 1079*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1080*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s0_clk", 1081*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1082*a4f780cdSTaniya Das &ne_gcc_qupv3_wrap2_s0_clk_src.clkr.hw, 1083*a4f780cdSTaniya Das }, 1084*a4f780cdSTaniya Das .num_parents = 1, 1085*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1086*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1087*a4f780cdSTaniya Das }, 1088*a4f780cdSTaniya Das }, 1089*a4f780cdSTaniya Das }; 1090*a4f780cdSTaniya Das 1091*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s1_clk = { 1092*a4f780cdSTaniya Das .halt_reg = 0x38298, 1093*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1094*a4f780cdSTaniya Das .clkr = { 1095*a4f780cdSTaniya Das .enable_reg = 0x57008, 1096*a4f780cdSTaniya Das .enable_mask = BIT(3), 1097*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1098*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s1_clk", 1099*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1100*a4f780cdSTaniya Das &ne_gcc_qupv3_wrap2_s1_clk_src.clkr.hw, 1101*a4f780cdSTaniya Das }, 1102*a4f780cdSTaniya Das .num_parents = 1, 1103*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1104*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1105*a4f780cdSTaniya Das }, 1106*a4f780cdSTaniya Das }, 1107*a4f780cdSTaniya Das }; 1108*a4f780cdSTaniya Das 1109*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s2_clk = { 1110*a4f780cdSTaniya Das .halt_reg = 0x383d4, 1111*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1112*a4f780cdSTaniya Das .clkr = { 1113*a4f780cdSTaniya Das .enable_reg = 0x57008, 1114*a4f780cdSTaniya Das .enable_mask = BIT(4), 1115*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1116*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s2_clk", 1117*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1118*a4f780cdSTaniya Das &ne_gcc_qupv3_wrap2_s2_clk_src.clkr.hw, 1119*a4f780cdSTaniya Das }, 1120*a4f780cdSTaniya Das .num_parents = 1, 1121*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1122*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1123*a4f780cdSTaniya Das }, 1124*a4f780cdSTaniya Das }, 1125*a4f780cdSTaniya Das }; 1126*a4f780cdSTaniya Das 1127*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s3_clk = { 1128*a4f780cdSTaniya Das .halt_reg = 0x38510, 1129*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1130*a4f780cdSTaniya Das .clkr = { 1131*a4f780cdSTaniya Das .enable_reg = 0x57008, 1132*a4f780cdSTaniya Das .enable_mask = BIT(5), 1133*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1134*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s3_clk", 1135*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1136*a4f780cdSTaniya Das &ne_gcc_qupv3_wrap2_s3_clk_src.clkr.hw, 1137*a4f780cdSTaniya Das }, 1138*a4f780cdSTaniya Das .num_parents = 1, 1139*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1140*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1141*a4f780cdSTaniya Das }, 1142*a4f780cdSTaniya Das }, 1143*a4f780cdSTaniya Das }; 1144*a4f780cdSTaniya Das 1145*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s4_clk = { 1146*a4f780cdSTaniya Das .halt_reg = 0x3864c, 1147*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1148*a4f780cdSTaniya Das .clkr = { 1149*a4f780cdSTaniya Das .enable_reg = 0x57008, 1150*a4f780cdSTaniya Das .enable_mask = BIT(6), 1151*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1152*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s4_clk", 1153*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1154*a4f780cdSTaniya Das &ne_gcc_qupv3_wrap2_s4_clk_src.clkr.hw, 1155*a4f780cdSTaniya Das }, 1156*a4f780cdSTaniya Das .num_parents = 1, 1157*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1158*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1159*a4f780cdSTaniya Das }, 1160*a4f780cdSTaniya Das }, 1161*a4f780cdSTaniya Das }; 1162*a4f780cdSTaniya Das 1163*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s5_clk = { 1164*a4f780cdSTaniya Das .halt_reg = 0x38788, 1165*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1166*a4f780cdSTaniya Das .clkr = { 1167*a4f780cdSTaniya Das .enable_reg = 0x57008, 1168*a4f780cdSTaniya Das .enable_mask = BIT(7), 1169*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1170*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s5_clk", 1171*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1172*a4f780cdSTaniya Das &ne_gcc_qupv3_wrap2_s5_clk_src.clkr.hw, 1173*a4f780cdSTaniya Das }, 1174*a4f780cdSTaniya Das .num_parents = 1, 1175*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1176*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1177*a4f780cdSTaniya Das }, 1178*a4f780cdSTaniya Das }, 1179*a4f780cdSTaniya Das }; 1180*a4f780cdSTaniya Das 1181*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s6_clk = { 1182*a4f780cdSTaniya Das .halt_reg = 0x388c4, 1183*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1184*a4f780cdSTaniya Das .clkr = { 1185*a4f780cdSTaniya Das .enable_reg = 0x57008, 1186*a4f780cdSTaniya Das .enable_mask = BIT(8), 1187*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1188*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s6_clk", 1189*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1190*a4f780cdSTaniya Das &ne_gcc_qupv3_wrap2_s6_clk_src.clkr.hw, 1191*a4f780cdSTaniya Das }, 1192*a4f780cdSTaniya Das .num_parents = 1, 1193*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1194*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1195*a4f780cdSTaniya Das }, 1196*a4f780cdSTaniya Das }, 1197*a4f780cdSTaniya Das }; 1198*a4f780cdSTaniya Das 1199*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s_ahb_clk = { 1200*a4f780cdSTaniya Das .halt_reg = 0x38008, 1201*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1202*a4f780cdSTaniya Das .hwcg_reg = 0x38008, 1203*a4f780cdSTaniya Das .hwcg_bit = 1, 1204*a4f780cdSTaniya Das .clkr = { 1205*a4f780cdSTaniya Das .enable_reg = 0x57000, 1206*a4f780cdSTaniya Das .enable_mask = BIT(31), 1207*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1208*a4f780cdSTaniya Das .name = "ne_gcc_qupv3_wrap2_s_ahb_clk", 1209*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1210*a4f780cdSTaniya Das }, 1211*a4f780cdSTaniya Das }, 1212*a4f780cdSTaniya Das }; 1213*a4f780cdSTaniya Das 1214*a4f780cdSTaniya Das static struct clk_branch ne_gcc_sdcc4_apps_clk = { 1215*a4f780cdSTaniya Das .halt_reg = 0x18004, 1216*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1217*a4f780cdSTaniya Das .clkr = { 1218*a4f780cdSTaniya Das .enable_reg = 0x18004, 1219*a4f780cdSTaniya Das .enable_mask = BIT(0), 1220*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1221*a4f780cdSTaniya Das .name = "ne_gcc_sdcc4_apps_clk", 1222*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1223*a4f780cdSTaniya Das &ne_gcc_sdcc4_apps_clk_src.clkr.hw, 1224*a4f780cdSTaniya Das }, 1225*a4f780cdSTaniya Das .num_parents = 1, 1226*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1227*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1228*a4f780cdSTaniya Das }, 1229*a4f780cdSTaniya Das }, 1230*a4f780cdSTaniya Das }; 1231*a4f780cdSTaniya Das 1232*a4f780cdSTaniya Das static struct clk_branch ne_gcc_sdcc4_axi_clk = { 1233*a4f780cdSTaniya Das .halt_reg = 0x18014, 1234*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1235*a4f780cdSTaniya Das .clkr = { 1236*a4f780cdSTaniya Das .enable_reg = 0x18014, 1237*a4f780cdSTaniya Das .enable_mask = BIT(0), 1238*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1239*a4f780cdSTaniya Das .name = "ne_gcc_sdcc4_axi_clk", 1240*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1241*a4f780cdSTaniya Das }, 1242*a4f780cdSTaniya Das }, 1243*a4f780cdSTaniya Das }; 1244*a4f780cdSTaniya Das 1245*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_ahb_clk = { 1246*a4f780cdSTaniya Das .halt_reg = 0x33028, 1247*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1248*a4f780cdSTaniya Das .hwcg_reg = 0x33028, 1249*a4f780cdSTaniya Das .hwcg_bit = 1, 1250*a4f780cdSTaniya Das .clkr = { 1251*a4f780cdSTaniya Das .enable_reg = 0x33028, 1252*a4f780cdSTaniya Das .enable_mask = BIT(0), 1253*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1254*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_ahb_clk", 1255*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1256*a4f780cdSTaniya Das }, 1257*a4f780cdSTaniya Das }, 1258*a4f780cdSTaniya Das }; 1259*a4f780cdSTaniya Das 1260*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_axi_clk = { 1261*a4f780cdSTaniya Das .halt_reg = 0x33018, 1262*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1263*a4f780cdSTaniya Das .hwcg_reg = 0x33018, 1264*a4f780cdSTaniya Das .hwcg_bit = 1, 1265*a4f780cdSTaniya Das .clkr = { 1266*a4f780cdSTaniya Das .enable_reg = 0x33018, 1267*a4f780cdSTaniya Das .enable_mask = BIT(0), 1268*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1269*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_axi_clk", 1270*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1271*a4f780cdSTaniya Das &ne_gcc_ufs_phy_axi_clk_src.clkr.hw, 1272*a4f780cdSTaniya Das }, 1273*a4f780cdSTaniya Das .num_parents = 1, 1274*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1275*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1276*a4f780cdSTaniya Das }, 1277*a4f780cdSTaniya Das }, 1278*a4f780cdSTaniya Das }; 1279*a4f780cdSTaniya Das 1280*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_ice_core_clk = { 1281*a4f780cdSTaniya Das .halt_reg = 0x3307c, 1282*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1283*a4f780cdSTaniya Das .hwcg_reg = 0x3307c, 1284*a4f780cdSTaniya Das .hwcg_bit = 1, 1285*a4f780cdSTaniya Das .clkr = { 1286*a4f780cdSTaniya Das .enable_reg = 0x3307c, 1287*a4f780cdSTaniya Das .enable_mask = BIT(0), 1288*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1289*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_ice_core_clk", 1290*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1291*a4f780cdSTaniya Das &ne_gcc_ufs_phy_ice_core_clk_src.clkr.hw, 1292*a4f780cdSTaniya Das }, 1293*a4f780cdSTaniya Das .num_parents = 1, 1294*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1295*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1296*a4f780cdSTaniya Das }, 1297*a4f780cdSTaniya Das }, 1298*a4f780cdSTaniya Das }; 1299*a4f780cdSTaniya Das 1300*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_phy_aux_clk = { 1301*a4f780cdSTaniya Das .halt_reg = 0x330bc, 1302*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1303*a4f780cdSTaniya Das .hwcg_reg = 0x330bc, 1304*a4f780cdSTaniya Das .hwcg_bit = 1, 1305*a4f780cdSTaniya Das .clkr = { 1306*a4f780cdSTaniya Das .enable_reg = 0x330bc, 1307*a4f780cdSTaniya Das .enable_mask = BIT(0), 1308*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1309*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_phy_aux_clk", 1310*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1311*a4f780cdSTaniya Das &ne_gcc_ufs_phy_phy_aux_clk_src.clkr.hw, 1312*a4f780cdSTaniya Das }, 1313*a4f780cdSTaniya Das .num_parents = 1, 1314*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1315*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1316*a4f780cdSTaniya Das }, 1317*a4f780cdSTaniya Das }, 1318*a4f780cdSTaniya Das }; 1319*a4f780cdSTaniya Das 1320*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_rx_symbol_0_clk = { 1321*a4f780cdSTaniya Das .halt_reg = 0x33030, 1322*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_DELAY, 1323*a4f780cdSTaniya Das .clkr = { 1324*a4f780cdSTaniya Das .enable_reg = 0x33030, 1325*a4f780cdSTaniya Das .enable_mask = BIT(0), 1326*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1327*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_rx_symbol_0_clk", 1328*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1329*a4f780cdSTaniya Das &ne_gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw, 1330*a4f780cdSTaniya Das }, 1331*a4f780cdSTaniya Das .num_parents = 1, 1332*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1333*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1334*a4f780cdSTaniya Das }, 1335*a4f780cdSTaniya Das }, 1336*a4f780cdSTaniya Das }; 1337*a4f780cdSTaniya Das 1338*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_rx_symbol_1_clk = { 1339*a4f780cdSTaniya Das .halt_reg = 0x330d8, 1340*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_DELAY, 1341*a4f780cdSTaniya Das .clkr = { 1342*a4f780cdSTaniya Das .enable_reg = 0x330d8, 1343*a4f780cdSTaniya Das .enable_mask = BIT(0), 1344*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1345*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_rx_symbol_1_clk", 1346*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1347*a4f780cdSTaniya Das &ne_gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw, 1348*a4f780cdSTaniya Das }, 1349*a4f780cdSTaniya Das .num_parents = 1, 1350*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1351*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1352*a4f780cdSTaniya Das }, 1353*a4f780cdSTaniya Das }, 1354*a4f780cdSTaniya Das }; 1355*a4f780cdSTaniya Das 1356*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_tx_symbol_0_clk = { 1357*a4f780cdSTaniya Das .halt_reg = 0x3302c, 1358*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_DELAY, 1359*a4f780cdSTaniya Das .clkr = { 1360*a4f780cdSTaniya Das .enable_reg = 0x3302c, 1361*a4f780cdSTaniya Das .enable_mask = BIT(0), 1362*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1363*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_tx_symbol_0_clk", 1364*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1365*a4f780cdSTaniya Das &ne_gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw, 1366*a4f780cdSTaniya Das }, 1367*a4f780cdSTaniya Das .num_parents = 1, 1368*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1369*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1370*a4f780cdSTaniya Das }, 1371*a4f780cdSTaniya Das }, 1372*a4f780cdSTaniya Das }; 1373*a4f780cdSTaniya Das 1374*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_unipro_core_clk = { 1375*a4f780cdSTaniya Das .halt_reg = 0x3306c, 1376*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1377*a4f780cdSTaniya Das .hwcg_reg = 0x3306c, 1378*a4f780cdSTaniya Das .hwcg_bit = 1, 1379*a4f780cdSTaniya Das .clkr = { 1380*a4f780cdSTaniya Das .enable_reg = 0x3306c, 1381*a4f780cdSTaniya Das .enable_mask = BIT(0), 1382*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1383*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_unipro_core_clk", 1384*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1385*a4f780cdSTaniya Das &ne_gcc_ufs_phy_unipro_core_clk_src.clkr.hw, 1386*a4f780cdSTaniya Das }, 1387*a4f780cdSTaniya Das .num_parents = 1, 1388*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1389*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1390*a4f780cdSTaniya Das }, 1391*a4f780cdSTaniya Das }, 1392*a4f780cdSTaniya Das }; 1393*a4f780cdSTaniya Das 1394*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb20_master_clk = { 1395*a4f780cdSTaniya Das .halt_reg = 0x31018, 1396*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1397*a4f780cdSTaniya Das .clkr = { 1398*a4f780cdSTaniya Das .enable_reg = 0x31018, 1399*a4f780cdSTaniya Das .enable_mask = BIT(0), 1400*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1401*a4f780cdSTaniya Das .name = "ne_gcc_usb20_master_clk", 1402*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1403*a4f780cdSTaniya Das &ne_gcc_usb20_master_clk_src.clkr.hw, 1404*a4f780cdSTaniya Das }, 1405*a4f780cdSTaniya Das .num_parents = 1, 1406*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1407*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1408*a4f780cdSTaniya Das }, 1409*a4f780cdSTaniya Das }, 1410*a4f780cdSTaniya Das }; 1411*a4f780cdSTaniya Das 1412*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb20_mock_utmi_clk = { 1413*a4f780cdSTaniya Das .halt_reg = 0x3102c, 1414*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1415*a4f780cdSTaniya Das .clkr = { 1416*a4f780cdSTaniya Das .enable_reg = 0x3102c, 1417*a4f780cdSTaniya Das .enable_mask = BIT(0), 1418*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1419*a4f780cdSTaniya Das .name = "ne_gcc_usb20_mock_utmi_clk", 1420*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1421*a4f780cdSTaniya Das &ne_gcc_usb20_mock_utmi_postdiv_clk_src.clkr.hw, 1422*a4f780cdSTaniya Das }, 1423*a4f780cdSTaniya Das .num_parents = 1, 1424*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1425*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1426*a4f780cdSTaniya Das }, 1427*a4f780cdSTaniya Das }, 1428*a4f780cdSTaniya Das }; 1429*a4f780cdSTaniya Das 1430*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb20_sleep_clk = { 1431*a4f780cdSTaniya Das .halt_reg = 0x31028, 1432*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1433*a4f780cdSTaniya Das .clkr = { 1434*a4f780cdSTaniya Das .enable_reg = 0x31028, 1435*a4f780cdSTaniya Das .enable_mask = BIT(0), 1436*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1437*a4f780cdSTaniya Das .name = "ne_gcc_usb20_sleep_clk", 1438*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1439*a4f780cdSTaniya Das }, 1440*a4f780cdSTaniya Das }, 1441*a4f780cdSTaniya Das }; 1442*a4f780cdSTaniya Das 1443*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_prim_atb_clk = { 1444*a4f780cdSTaniya Das .halt_reg = 0x2a018, 1445*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1446*a4f780cdSTaniya Das .clkr = { 1447*a4f780cdSTaniya Das .enable_reg = 0x2a018, 1448*a4f780cdSTaniya Das .enable_mask = BIT(0), 1449*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1450*a4f780cdSTaniya Das .name = "ne_gcc_usb31_prim_atb_clk", 1451*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1452*a4f780cdSTaniya Das &ne_gcc_usb31_prim_master_clk_src.clkr.hw, 1453*a4f780cdSTaniya Das }, 1454*a4f780cdSTaniya Das .num_parents = 1, 1455*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1456*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1457*a4f780cdSTaniya Das }, 1458*a4f780cdSTaniya Das }, 1459*a4f780cdSTaniya Das }; 1460*a4f780cdSTaniya Das 1461*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_prim_eud_ahb_clk = { 1462*a4f780cdSTaniya Das .halt_reg = 0x2a02c, 1463*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1464*a4f780cdSTaniya Das .hwcg_reg = 0x2a02c, 1465*a4f780cdSTaniya Das .hwcg_bit = 1, 1466*a4f780cdSTaniya Das .clkr = { 1467*a4f780cdSTaniya Das .enable_reg = 0x2a02c, 1468*a4f780cdSTaniya Das .enable_mask = BIT(0), 1469*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1470*a4f780cdSTaniya Das .name = "ne_gcc_usb31_prim_eud_ahb_clk", 1471*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1472*a4f780cdSTaniya Das }, 1473*a4f780cdSTaniya Das }, 1474*a4f780cdSTaniya Das }; 1475*a4f780cdSTaniya Das 1476*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_prim_master_clk = { 1477*a4f780cdSTaniya Das .halt_reg = 0x2a01c, 1478*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1479*a4f780cdSTaniya Das .clkr = { 1480*a4f780cdSTaniya Das .enable_reg = 0x2a01c, 1481*a4f780cdSTaniya Das .enable_mask = BIT(0), 1482*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1483*a4f780cdSTaniya Das .name = "ne_gcc_usb31_prim_master_clk", 1484*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1485*a4f780cdSTaniya Das &ne_gcc_usb31_prim_master_clk_src.clkr.hw, 1486*a4f780cdSTaniya Das }, 1487*a4f780cdSTaniya Das .num_parents = 1, 1488*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1489*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1490*a4f780cdSTaniya Das }, 1491*a4f780cdSTaniya Das }, 1492*a4f780cdSTaniya Das }; 1493*a4f780cdSTaniya Das 1494*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_prim_mock_utmi_clk = { 1495*a4f780cdSTaniya Das .halt_reg = 0x2a034, 1496*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1497*a4f780cdSTaniya Das .clkr = { 1498*a4f780cdSTaniya Das .enable_reg = 0x2a034, 1499*a4f780cdSTaniya Das .enable_mask = BIT(0), 1500*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1501*a4f780cdSTaniya Das .name = "ne_gcc_usb31_prim_mock_utmi_clk", 1502*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1503*a4f780cdSTaniya Das &ne_gcc_usb31_prim_mock_utmi_postdiv_clk_src.clkr.hw, 1504*a4f780cdSTaniya Das }, 1505*a4f780cdSTaniya Das .num_parents = 1, 1506*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1507*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1508*a4f780cdSTaniya Das }, 1509*a4f780cdSTaniya Das }, 1510*a4f780cdSTaniya Das }; 1511*a4f780cdSTaniya Das 1512*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_prim_sleep_clk = { 1513*a4f780cdSTaniya Das .halt_reg = 0x2a030, 1514*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1515*a4f780cdSTaniya Das .clkr = { 1516*a4f780cdSTaniya Das .enable_reg = 0x2a030, 1517*a4f780cdSTaniya Das .enable_mask = BIT(0), 1518*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1519*a4f780cdSTaniya Das .name = "ne_gcc_usb31_prim_sleep_clk", 1520*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1521*a4f780cdSTaniya Das }, 1522*a4f780cdSTaniya Das }, 1523*a4f780cdSTaniya Das }; 1524*a4f780cdSTaniya Das 1525*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_sec_atb_clk = { 1526*a4f780cdSTaniya Das .halt_reg = 0x2c018, 1527*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1528*a4f780cdSTaniya Das .clkr = { 1529*a4f780cdSTaniya Das .enable_reg = 0x2c018, 1530*a4f780cdSTaniya Das .enable_mask = BIT(0), 1531*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1532*a4f780cdSTaniya Das .name = "ne_gcc_usb31_sec_atb_clk", 1533*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1534*a4f780cdSTaniya Das &ne_gcc_usb31_prim_master_clk_src.clkr.hw, 1535*a4f780cdSTaniya Das }, 1536*a4f780cdSTaniya Das .num_parents = 1, 1537*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1538*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1539*a4f780cdSTaniya Das }, 1540*a4f780cdSTaniya Das }, 1541*a4f780cdSTaniya Das }; 1542*a4f780cdSTaniya Das 1543*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_sec_eud_ahb_clk = { 1544*a4f780cdSTaniya Das .halt_reg = 0x2c02c, 1545*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1546*a4f780cdSTaniya Das .hwcg_reg = 0x2c02c, 1547*a4f780cdSTaniya Das .hwcg_bit = 1, 1548*a4f780cdSTaniya Das .clkr = { 1549*a4f780cdSTaniya Das .enable_reg = 0x2c02c, 1550*a4f780cdSTaniya Das .enable_mask = BIT(0), 1551*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1552*a4f780cdSTaniya Das .name = "ne_gcc_usb31_sec_eud_ahb_clk", 1553*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1554*a4f780cdSTaniya Das }, 1555*a4f780cdSTaniya Das }, 1556*a4f780cdSTaniya Das }; 1557*a4f780cdSTaniya Das 1558*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_sec_master_clk = { 1559*a4f780cdSTaniya Das .halt_reg = 0x2c01c, 1560*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1561*a4f780cdSTaniya Das .clkr = { 1562*a4f780cdSTaniya Das .enable_reg = 0x2c01c, 1563*a4f780cdSTaniya Das .enable_mask = BIT(0), 1564*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1565*a4f780cdSTaniya Das .name = "ne_gcc_usb31_sec_master_clk", 1566*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1567*a4f780cdSTaniya Das &ne_gcc_usb31_sec_master_clk_src.clkr.hw, 1568*a4f780cdSTaniya Das }, 1569*a4f780cdSTaniya Das .num_parents = 1, 1570*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1571*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1572*a4f780cdSTaniya Das }, 1573*a4f780cdSTaniya Das }, 1574*a4f780cdSTaniya Das }; 1575*a4f780cdSTaniya Das 1576*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_sec_mock_utmi_clk = { 1577*a4f780cdSTaniya Das .halt_reg = 0x2c034, 1578*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1579*a4f780cdSTaniya Das .clkr = { 1580*a4f780cdSTaniya Das .enable_reg = 0x2c034, 1581*a4f780cdSTaniya Das .enable_mask = BIT(0), 1582*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1583*a4f780cdSTaniya Das .name = "ne_gcc_usb31_sec_mock_utmi_clk", 1584*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1585*a4f780cdSTaniya Das &ne_gcc_usb31_sec_mock_utmi_postdiv_clk_src.clkr.hw, 1586*a4f780cdSTaniya Das }, 1587*a4f780cdSTaniya Das .num_parents = 1, 1588*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1589*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1590*a4f780cdSTaniya Das }, 1591*a4f780cdSTaniya Das }, 1592*a4f780cdSTaniya Das }; 1593*a4f780cdSTaniya Das 1594*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_sec_sleep_clk = { 1595*a4f780cdSTaniya Das .halt_reg = 0x2c030, 1596*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1597*a4f780cdSTaniya Das .clkr = { 1598*a4f780cdSTaniya Das .enable_reg = 0x2c030, 1599*a4f780cdSTaniya Das .enable_mask = BIT(0), 1600*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1601*a4f780cdSTaniya Das .name = "ne_gcc_usb31_sec_sleep_clk", 1602*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1603*a4f780cdSTaniya Das }, 1604*a4f780cdSTaniya Das }, 1605*a4f780cdSTaniya Das }; 1606*a4f780cdSTaniya Das 1607*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb3_prim_phy_aux_clk = { 1608*a4f780cdSTaniya Das .halt_reg = 0x2a06c, 1609*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1610*a4f780cdSTaniya Das .clkr = { 1611*a4f780cdSTaniya Das .enable_reg = 0x2a06c, 1612*a4f780cdSTaniya Das .enable_mask = BIT(0), 1613*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1614*a4f780cdSTaniya Das .name = "ne_gcc_usb3_prim_phy_aux_clk", 1615*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1616*a4f780cdSTaniya Das &ne_gcc_usb3_prim_phy_aux_clk_src.clkr.hw, 1617*a4f780cdSTaniya Das }, 1618*a4f780cdSTaniya Das .num_parents = 1, 1619*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1620*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1621*a4f780cdSTaniya Das }, 1622*a4f780cdSTaniya Das }, 1623*a4f780cdSTaniya Das }; 1624*a4f780cdSTaniya Das 1625*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb3_prim_phy_com_aux_clk = { 1626*a4f780cdSTaniya Das .halt_reg = 0x2a070, 1627*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1628*a4f780cdSTaniya Das .clkr = { 1629*a4f780cdSTaniya Das .enable_reg = 0x2a070, 1630*a4f780cdSTaniya Das .enable_mask = BIT(0), 1631*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1632*a4f780cdSTaniya Das .name = "ne_gcc_usb3_prim_phy_com_aux_clk", 1633*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1634*a4f780cdSTaniya Das &ne_gcc_usb3_prim_phy_aux_clk_src.clkr.hw, 1635*a4f780cdSTaniya Das }, 1636*a4f780cdSTaniya Das .num_parents = 1, 1637*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1638*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1639*a4f780cdSTaniya Das }, 1640*a4f780cdSTaniya Das }, 1641*a4f780cdSTaniya Das }; 1642*a4f780cdSTaniya Das 1643*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb3_prim_phy_pipe_clk = { 1644*a4f780cdSTaniya Das .halt_reg = 0x2a074, 1645*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1646*a4f780cdSTaniya Das .hwcg_reg = 0x2a074, 1647*a4f780cdSTaniya Das .hwcg_bit = 1, 1648*a4f780cdSTaniya Das .clkr = { 1649*a4f780cdSTaniya Das .enable_reg = 0x2a074, 1650*a4f780cdSTaniya Das .enable_mask = BIT(0), 1651*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1652*a4f780cdSTaniya Das .name = "ne_gcc_usb3_prim_phy_pipe_clk", 1653*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1654*a4f780cdSTaniya Das &ne_gcc_usb3_prim_phy_pipe_clk_src.clkr.hw, 1655*a4f780cdSTaniya Das }, 1656*a4f780cdSTaniya Das .num_parents = 1, 1657*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1658*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1659*a4f780cdSTaniya Das }, 1660*a4f780cdSTaniya Das }, 1661*a4f780cdSTaniya Das }; 1662*a4f780cdSTaniya Das 1663*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb3_sec_phy_aux_clk = { 1664*a4f780cdSTaniya Das .halt_reg = 0x2c06c, 1665*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1666*a4f780cdSTaniya Das .clkr = { 1667*a4f780cdSTaniya Das .enable_reg = 0x2c06c, 1668*a4f780cdSTaniya Das .enable_mask = BIT(0), 1669*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1670*a4f780cdSTaniya Das .name = "ne_gcc_usb3_sec_phy_aux_clk", 1671*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1672*a4f780cdSTaniya Das &ne_gcc_usb3_sec_phy_aux_clk_src.clkr.hw, 1673*a4f780cdSTaniya Das }, 1674*a4f780cdSTaniya Das .num_parents = 1, 1675*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1676*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1677*a4f780cdSTaniya Das }, 1678*a4f780cdSTaniya Das }, 1679*a4f780cdSTaniya Das }; 1680*a4f780cdSTaniya Das 1681*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb3_sec_phy_com_aux_clk = { 1682*a4f780cdSTaniya Das .halt_reg = 0x2c070, 1683*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1684*a4f780cdSTaniya Das .clkr = { 1685*a4f780cdSTaniya Das .enable_reg = 0x2c070, 1686*a4f780cdSTaniya Das .enable_mask = BIT(0), 1687*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1688*a4f780cdSTaniya Das .name = "ne_gcc_usb3_sec_phy_com_aux_clk", 1689*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1690*a4f780cdSTaniya Das &ne_gcc_usb3_sec_phy_aux_clk_src.clkr.hw, 1691*a4f780cdSTaniya Das }, 1692*a4f780cdSTaniya Das .num_parents = 1, 1693*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1694*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1695*a4f780cdSTaniya Das }, 1696*a4f780cdSTaniya Das }, 1697*a4f780cdSTaniya Das }; 1698*a4f780cdSTaniya Das 1699*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb3_sec_phy_pipe_clk = { 1700*a4f780cdSTaniya Das .halt_reg = 0x2c074, 1701*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1702*a4f780cdSTaniya Das .hwcg_reg = 0x2c074, 1703*a4f780cdSTaniya Das .hwcg_bit = 1, 1704*a4f780cdSTaniya Das .clkr = { 1705*a4f780cdSTaniya Das .enable_reg = 0x2c074, 1706*a4f780cdSTaniya Das .enable_mask = BIT(0), 1707*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1708*a4f780cdSTaniya Das .name = "ne_gcc_usb3_sec_phy_pipe_clk", 1709*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1710*a4f780cdSTaniya Das &ne_gcc_usb3_sec_phy_pipe_clk_src.clkr.hw, 1711*a4f780cdSTaniya Das }, 1712*a4f780cdSTaniya Das .num_parents = 1, 1713*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1714*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1715*a4f780cdSTaniya Das }, 1716*a4f780cdSTaniya Das }, 1717*a4f780cdSTaniya Das }; 1718*a4f780cdSTaniya Das 1719*a4f780cdSTaniya Das static struct gdsc ne_gcc_ufs_mem_phy_gdsc = { 1720*a4f780cdSTaniya Das .gdscr = 0x32000, 1721*a4f780cdSTaniya Das .en_rest_wait_val = 0x2, 1722*a4f780cdSTaniya Das .en_few_wait_val = 0x2, 1723*a4f780cdSTaniya Das .clk_dis_wait_val = 0x2, 1724*a4f780cdSTaniya Das .pd = { 1725*a4f780cdSTaniya Das .name = "ne_gcc_ufs_mem_phy_gdsc", 1726*a4f780cdSTaniya Das }, 1727*a4f780cdSTaniya Das .pwrsts = PWRSTS_OFF_ON, 1728*a4f780cdSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 1729*a4f780cdSTaniya Das }; 1730*a4f780cdSTaniya Das 1731*a4f780cdSTaniya Das static struct gdsc ne_gcc_ufs_phy_gdsc = { 1732*a4f780cdSTaniya Das .gdscr = 0x33004, 1733*a4f780cdSTaniya Das .en_rest_wait_val = 0x2, 1734*a4f780cdSTaniya Das .en_few_wait_val = 0x2, 1735*a4f780cdSTaniya Das .clk_dis_wait_val = 0xf, 1736*a4f780cdSTaniya Das .pd = { 1737*a4f780cdSTaniya Das .name = "ne_gcc_ufs_phy_gdsc", 1738*a4f780cdSTaniya Das }, 1739*a4f780cdSTaniya Das .pwrsts = PWRSTS_OFF_ON, 1740*a4f780cdSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 1741*a4f780cdSTaniya Das }; 1742*a4f780cdSTaniya Das 1743*a4f780cdSTaniya Das static struct gdsc ne_gcc_usb20_prim_gdsc = { 1744*a4f780cdSTaniya Das .gdscr = 0x31004, 1745*a4f780cdSTaniya Das .en_rest_wait_val = 0x2, 1746*a4f780cdSTaniya Das .en_few_wait_val = 0x2, 1747*a4f780cdSTaniya Das .clk_dis_wait_val = 0xf, 1748*a4f780cdSTaniya Das .pd = { 1749*a4f780cdSTaniya Das .name = "ne_gcc_usb20_prim_gdsc", 1750*a4f780cdSTaniya Das }, 1751*a4f780cdSTaniya Das .pwrsts = PWRSTS_OFF_ON, 1752*a4f780cdSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 1753*a4f780cdSTaniya Das }; 1754*a4f780cdSTaniya Das 1755*a4f780cdSTaniya Das static struct gdsc ne_gcc_usb31_prim_gdsc = { 1756*a4f780cdSTaniya Das .gdscr = 0x2a004, 1757*a4f780cdSTaniya Das .en_rest_wait_val = 0x2, 1758*a4f780cdSTaniya Das .en_few_wait_val = 0x2, 1759*a4f780cdSTaniya Das .clk_dis_wait_val = 0xf, 1760*a4f780cdSTaniya Das .pd = { 1761*a4f780cdSTaniya Das .name = "ne_gcc_usb31_prim_gdsc", 1762*a4f780cdSTaniya Das }, 1763*a4f780cdSTaniya Das .pwrsts = PWRSTS_OFF_ON, 1764*a4f780cdSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 1765*a4f780cdSTaniya Das }; 1766*a4f780cdSTaniya Das 1767*a4f780cdSTaniya Das static struct gdsc ne_gcc_usb31_sec_gdsc = { 1768*a4f780cdSTaniya Das .gdscr = 0x2c004, 1769*a4f780cdSTaniya Das .en_rest_wait_val = 0x2, 1770*a4f780cdSTaniya Das .en_few_wait_val = 0x2, 1771*a4f780cdSTaniya Das .clk_dis_wait_val = 0xf, 1772*a4f780cdSTaniya Das .pd = { 1773*a4f780cdSTaniya Das .name = "ne_gcc_usb31_sec_gdsc", 1774*a4f780cdSTaniya Das }, 1775*a4f780cdSTaniya Das .pwrsts = PWRSTS_OFF_ON, 1776*a4f780cdSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 1777*a4f780cdSTaniya Das }; 1778*a4f780cdSTaniya Das 1779*a4f780cdSTaniya Das static struct gdsc ne_gcc_usb3_phy_gdsc = { 1780*a4f780cdSTaniya Das .gdscr = 0x2b00c, 1781*a4f780cdSTaniya Das .en_rest_wait_val = 0x2, 1782*a4f780cdSTaniya Das .en_few_wait_val = 0x2, 1783*a4f780cdSTaniya Das .clk_dis_wait_val = 0x2, 1784*a4f780cdSTaniya Das .pd = { 1785*a4f780cdSTaniya Das .name = "ne_gcc_usb3_phy_gdsc", 1786*a4f780cdSTaniya Das }, 1787*a4f780cdSTaniya Das .pwrsts = PWRSTS_OFF_ON, 1788*a4f780cdSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 1789*a4f780cdSTaniya Das }; 1790*a4f780cdSTaniya Das 1791*a4f780cdSTaniya Das static struct gdsc ne_gcc_usb3_sec_phy_gdsc = { 1792*a4f780cdSTaniya Das .gdscr = 0x2d00c, 1793*a4f780cdSTaniya Das .en_rest_wait_val = 0x2, 1794*a4f780cdSTaniya Das .en_few_wait_val = 0x2, 1795*a4f780cdSTaniya Das .clk_dis_wait_val = 0x2, 1796*a4f780cdSTaniya Das .pd = { 1797*a4f780cdSTaniya Das .name = "ne_gcc_usb3_sec_phy_gdsc", 1798*a4f780cdSTaniya Das }, 1799*a4f780cdSTaniya Das .pwrsts = PWRSTS_OFF_ON, 1800*a4f780cdSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 1801*a4f780cdSTaniya Das }; 1802*a4f780cdSTaniya Das 1803*a4f780cdSTaniya Das static struct clk_regmap *ne_gcc_nord_clocks[] = { 1804*a4f780cdSTaniya Das [NE_GCC_AGGRE_NOC_UFS_PHY_AXI_CLK] = &ne_gcc_aggre_noc_ufs_phy_axi_clk.clkr, 1805*a4f780cdSTaniya Das [NE_GCC_AGGRE_NOC_USB2_AXI_CLK] = &ne_gcc_aggre_noc_usb2_axi_clk.clkr, 1806*a4f780cdSTaniya Das [NE_GCC_AGGRE_NOC_USB3_PRIM_AXI_CLK] = &ne_gcc_aggre_noc_usb3_prim_axi_clk.clkr, 1807*a4f780cdSTaniya Das [NE_GCC_AGGRE_NOC_USB3_SEC_AXI_CLK] = &ne_gcc_aggre_noc_usb3_sec_axi_clk.clkr, 1808*a4f780cdSTaniya Das [NE_GCC_AHB2PHY_CLK] = &ne_gcc_ahb2phy_clk.clkr, 1809*a4f780cdSTaniya Das [NE_GCC_CNOC_USB2_AXI_CLK] = &ne_gcc_cnoc_usb2_axi_clk.clkr, 1810*a4f780cdSTaniya Das [NE_GCC_CNOC_USB3_PRIM_AXI_CLK] = &ne_gcc_cnoc_usb3_prim_axi_clk.clkr, 1811*a4f780cdSTaniya Das [NE_GCC_CNOC_USB3_SEC_AXI_CLK] = &ne_gcc_cnoc_usb3_sec_axi_clk.clkr, 1812*a4f780cdSTaniya Das [NE_GCC_FRQ_MEASURE_REF_CLK] = &ne_gcc_frq_measure_ref_clk.clkr, 1813*a4f780cdSTaniya Das [NE_GCC_GP1_CLK] = &ne_gcc_gp1_clk.clkr, 1814*a4f780cdSTaniya Das [NE_GCC_GP1_CLK_SRC] = &ne_gcc_gp1_clk_src.clkr, 1815*a4f780cdSTaniya Das [NE_GCC_GP2_CLK] = &ne_gcc_gp2_clk.clkr, 1816*a4f780cdSTaniya Das [NE_GCC_GP2_CLK_SRC] = &ne_gcc_gp2_clk_src.clkr, 1817*a4f780cdSTaniya Das [NE_GCC_GPLL0] = &ne_gcc_gpll0.clkr, 1818*a4f780cdSTaniya Das [NE_GCC_GPLL0_OUT_EVEN] = &ne_gcc_gpll0_out_even.clkr, 1819*a4f780cdSTaniya Das [NE_GCC_GPLL2] = &ne_gcc_gpll2.clkr, 1820*a4f780cdSTaniya Das [NE_GCC_GPU_2_CFG_CLK] = &ne_gcc_gpu_2_cfg_clk.clkr, 1821*a4f780cdSTaniya Das [NE_GCC_GPU_2_GPLL0_CLK_SRC] = &ne_gcc_gpu_2_gpll0_clk_src.clkr, 1822*a4f780cdSTaniya Das [NE_GCC_GPU_2_GPLL0_DIV_CLK_SRC] = &ne_gcc_gpu_2_gpll0_div_clk_src.clkr, 1823*a4f780cdSTaniya Das [NE_GCC_GPU_2_HSCNOC_GFX_CLK] = &ne_gcc_gpu_2_hscnoc_gfx_clk.clkr, 1824*a4f780cdSTaniya Das [NE_GCC_GPU_2_SMMU_VOTE_CLK] = &ne_gcc_gpu_2_smmu_vote_clk.clkr, 1825*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_CORE_2X_CLK] = &ne_gcc_qupv3_wrap2_core_2x_clk.clkr, 1826*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_CORE_CLK] = &ne_gcc_qupv3_wrap2_core_clk.clkr, 1827*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_M_AHB_CLK] = &ne_gcc_qupv3_wrap2_m_ahb_clk.clkr, 1828*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S0_CLK] = &ne_gcc_qupv3_wrap2_s0_clk.clkr, 1829*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S0_CLK_SRC] = &ne_gcc_qupv3_wrap2_s0_clk_src.clkr, 1830*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S1_CLK] = &ne_gcc_qupv3_wrap2_s1_clk.clkr, 1831*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S1_CLK_SRC] = &ne_gcc_qupv3_wrap2_s1_clk_src.clkr, 1832*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S2_CLK] = &ne_gcc_qupv3_wrap2_s2_clk.clkr, 1833*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S2_CLK_SRC] = &ne_gcc_qupv3_wrap2_s2_clk_src.clkr, 1834*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S3_CLK] = &ne_gcc_qupv3_wrap2_s3_clk.clkr, 1835*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S3_CLK_SRC] = &ne_gcc_qupv3_wrap2_s3_clk_src.clkr, 1836*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S4_CLK] = &ne_gcc_qupv3_wrap2_s4_clk.clkr, 1837*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S4_CLK_SRC] = &ne_gcc_qupv3_wrap2_s4_clk_src.clkr, 1838*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S5_CLK] = &ne_gcc_qupv3_wrap2_s5_clk.clkr, 1839*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S5_CLK_SRC] = &ne_gcc_qupv3_wrap2_s5_clk_src.clkr, 1840*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S6_CLK] = &ne_gcc_qupv3_wrap2_s6_clk.clkr, 1841*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S6_CLK_SRC] = &ne_gcc_qupv3_wrap2_s6_clk_src.clkr, 1842*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAP2_S_AHB_CLK] = &ne_gcc_qupv3_wrap2_s_ahb_clk.clkr, 1843*a4f780cdSTaniya Das [NE_GCC_SDCC4_APPS_CLK] = &ne_gcc_sdcc4_apps_clk.clkr, 1844*a4f780cdSTaniya Das [NE_GCC_SDCC4_APPS_CLK_SRC] = &ne_gcc_sdcc4_apps_clk_src.clkr, 1845*a4f780cdSTaniya Das [NE_GCC_SDCC4_AXI_CLK] = &ne_gcc_sdcc4_axi_clk.clkr, 1846*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_AHB_CLK] = &ne_gcc_ufs_phy_ahb_clk.clkr, 1847*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_AXI_CLK] = &ne_gcc_ufs_phy_axi_clk.clkr, 1848*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_AXI_CLK_SRC] = &ne_gcc_ufs_phy_axi_clk_src.clkr, 1849*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_ICE_CORE_CLK] = &ne_gcc_ufs_phy_ice_core_clk.clkr, 1850*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &ne_gcc_ufs_phy_ice_core_clk_src.clkr, 1851*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_PHY_AUX_CLK] = &ne_gcc_ufs_phy_phy_aux_clk.clkr, 1852*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &ne_gcc_ufs_phy_phy_aux_clk_src.clkr, 1853*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &ne_gcc_ufs_phy_rx_symbol_0_clk.clkr, 1854*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &ne_gcc_ufs_phy_rx_symbol_0_clk_src.clkr, 1855*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &ne_gcc_ufs_phy_rx_symbol_1_clk.clkr, 1856*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &ne_gcc_ufs_phy_rx_symbol_1_clk_src.clkr, 1857*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &ne_gcc_ufs_phy_tx_symbol_0_clk.clkr, 1858*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &ne_gcc_ufs_phy_tx_symbol_0_clk_src.clkr, 1859*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_UNIPRO_CORE_CLK] = &ne_gcc_ufs_phy_unipro_core_clk.clkr, 1860*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &ne_gcc_ufs_phy_unipro_core_clk_src.clkr, 1861*a4f780cdSTaniya Das [NE_GCC_USB20_MASTER_CLK] = &ne_gcc_usb20_master_clk.clkr, 1862*a4f780cdSTaniya Das [NE_GCC_USB20_MASTER_CLK_SRC] = &ne_gcc_usb20_master_clk_src.clkr, 1863*a4f780cdSTaniya Das [NE_GCC_USB20_MOCK_UTMI_CLK] = &ne_gcc_usb20_mock_utmi_clk.clkr, 1864*a4f780cdSTaniya Das [NE_GCC_USB20_MOCK_UTMI_CLK_SRC] = &ne_gcc_usb20_mock_utmi_clk_src.clkr, 1865*a4f780cdSTaniya Das [NE_GCC_USB20_MOCK_UTMI_POSTDIV_CLK_SRC] = &ne_gcc_usb20_mock_utmi_postdiv_clk_src.clkr, 1866*a4f780cdSTaniya Das [NE_GCC_USB20_SLEEP_CLK] = &ne_gcc_usb20_sleep_clk.clkr, 1867*a4f780cdSTaniya Das [NE_GCC_USB31_PRIM_ATB_CLK] = &ne_gcc_usb31_prim_atb_clk.clkr, 1868*a4f780cdSTaniya Das [NE_GCC_USB31_PRIM_EUD_AHB_CLK] = &ne_gcc_usb31_prim_eud_ahb_clk.clkr, 1869*a4f780cdSTaniya Das [NE_GCC_USB31_PRIM_MASTER_CLK] = &ne_gcc_usb31_prim_master_clk.clkr, 1870*a4f780cdSTaniya Das [NE_GCC_USB31_PRIM_MASTER_CLK_SRC] = &ne_gcc_usb31_prim_master_clk_src.clkr, 1871*a4f780cdSTaniya Das [NE_GCC_USB31_PRIM_MOCK_UTMI_CLK] = &ne_gcc_usb31_prim_mock_utmi_clk.clkr, 1872*a4f780cdSTaniya Das [NE_GCC_USB31_PRIM_MOCK_UTMI_CLK_SRC] = &ne_gcc_usb31_prim_mock_utmi_clk_src.clkr, 1873*a4f780cdSTaniya Das [NE_GCC_USB31_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = 1874*a4f780cdSTaniya Das &ne_gcc_usb31_prim_mock_utmi_postdiv_clk_src.clkr, 1875*a4f780cdSTaniya Das [NE_GCC_USB31_PRIM_SLEEP_CLK] = &ne_gcc_usb31_prim_sleep_clk.clkr, 1876*a4f780cdSTaniya Das [NE_GCC_USB31_SEC_ATB_CLK] = &ne_gcc_usb31_sec_atb_clk.clkr, 1877*a4f780cdSTaniya Das [NE_GCC_USB31_SEC_EUD_AHB_CLK] = &ne_gcc_usb31_sec_eud_ahb_clk.clkr, 1878*a4f780cdSTaniya Das [NE_GCC_USB31_SEC_MASTER_CLK] = &ne_gcc_usb31_sec_master_clk.clkr, 1879*a4f780cdSTaniya Das [NE_GCC_USB31_SEC_MASTER_CLK_SRC] = &ne_gcc_usb31_sec_master_clk_src.clkr, 1880*a4f780cdSTaniya Das [NE_GCC_USB31_SEC_MOCK_UTMI_CLK] = &ne_gcc_usb31_sec_mock_utmi_clk.clkr, 1881*a4f780cdSTaniya Das [NE_GCC_USB31_SEC_MOCK_UTMI_CLK_SRC] = &ne_gcc_usb31_sec_mock_utmi_clk_src.clkr, 1882*a4f780cdSTaniya Das [NE_GCC_USB31_SEC_MOCK_UTMI_POSTDIV_CLK_SRC] = 1883*a4f780cdSTaniya Das &ne_gcc_usb31_sec_mock_utmi_postdiv_clk_src.clkr, 1884*a4f780cdSTaniya Das [NE_GCC_USB31_SEC_SLEEP_CLK] = &ne_gcc_usb31_sec_sleep_clk.clkr, 1885*a4f780cdSTaniya Das [NE_GCC_USB3_PRIM_PHY_AUX_CLK] = &ne_gcc_usb3_prim_phy_aux_clk.clkr, 1886*a4f780cdSTaniya Das [NE_GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &ne_gcc_usb3_prim_phy_aux_clk_src.clkr, 1887*a4f780cdSTaniya Das [NE_GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &ne_gcc_usb3_prim_phy_com_aux_clk.clkr, 1888*a4f780cdSTaniya Das [NE_GCC_USB3_PRIM_PHY_PIPE_CLK] = &ne_gcc_usb3_prim_phy_pipe_clk.clkr, 1889*a4f780cdSTaniya Das [NE_GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &ne_gcc_usb3_prim_phy_pipe_clk_src.clkr, 1890*a4f780cdSTaniya Das [NE_GCC_USB3_SEC_PHY_AUX_CLK] = &ne_gcc_usb3_sec_phy_aux_clk.clkr, 1891*a4f780cdSTaniya Das [NE_GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &ne_gcc_usb3_sec_phy_aux_clk_src.clkr, 1892*a4f780cdSTaniya Das [NE_GCC_USB3_SEC_PHY_COM_AUX_CLK] = &ne_gcc_usb3_sec_phy_com_aux_clk.clkr, 1893*a4f780cdSTaniya Das [NE_GCC_USB3_SEC_PHY_PIPE_CLK] = &ne_gcc_usb3_sec_phy_pipe_clk.clkr, 1894*a4f780cdSTaniya Das [NE_GCC_USB3_SEC_PHY_PIPE_CLK_SRC] = &ne_gcc_usb3_sec_phy_pipe_clk_src.clkr, 1895*a4f780cdSTaniya Das }; 1896*a4f780cdSTaniya Das 1897*a4f780cdSTaniya Das static struct gdsc *ne_gcc_nord_gdscs[] = { 1898*a4f780cdSTaniya Das [NE_GCC_UFS_MEM_PHY_GDSC] = &ne_gcc_ufs_mem_phy_gdsc, 1899*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_GDSC] = &ne_gcc_ufs_phy_gdsc, 1900*a4f780cdSTaniya Das [NE_GCC_USB20_PRIM_GDSC] = &ne_gcc_usb20_prim_gdsc, 1901*a4f780cdSTaniya Das [NE_GCC_USB31_PRIM_GDSC] = &ne_gcc_usb31_prim_gdsc, 1902*a4f780cdSTaniya Das [NE_GCC_USB31_SEC_GDSC] = &ne_gcc_usb31_sec_gdsc, 1903*a4f780cdSTaniya Das [NE_GCC_USB3_PHY_GDSC] = &ne_gcc_usb3_phy_gdsc, 1904*a4f780cdSTaniya Das [NE_GCC_USB3_SEC_PHY_GDSC] = &ne_gcc_usb3_sec_phy_gdsc, 1905*a4f780cdSTaniya Das }; 1906*a4f780cdSTaniya Das 1907*a4f780cdSTaniya Das static const struct qcom_reset_map ne_gcc_nord_resets[] = { 1908*a4f780cdSTaniya Das [NE_GCC_GPU_2_BCR] = { 0x34000 }, 1909*a4f780cdSTaniya Das [NE_GCC_QUPV3_WRAPPER_2_BCR] = { 0x38000 }, 1910*a4f780cdSTaniya Das [NE_GCC_SDCC4_BCR] = { 0x18000 }, 1911*a4f780cdSTaniya Das [NE_GCC_UFS_PHY_BCR] = { 0x33000 }, 1912*a4f780cdSTaniya Das [NE_GCC_USB20_PRIM_BCR] = { 0x31000 }, 1913*a4f780cdSTaniya Das [NE_GCC_USB31_PRIM_BCR] = { 0x2a000 }, 1914*a4f780cdSTaniya Das [NE_GCC_USB31_SEC_BCR] = { 0x2c000 }, 1915*a4f780cdSTaniya Das [NE_GCC_USB3_DP_PHY_PRIM_BCR] = { 0x2b008 }, 1916*a4f780cdSTaniya Das [NE_GCC_USB3_DP_PHY_SEC_BCR] = { 0x2d008 }, 1917*a4f780cdSTaniya Das [NE_GCC_USB3_PHY_PRIM_BCR] = { 0x2b000 }, 1918*a4f780cdSTaniya Das [NE_GCC_USB3_PHY_SEC_BCR] = { 0x2d000 }, 1919*a4f780cdSTaniya Das [NE_GCC_USB3PHY_PHY_PRIM_BCR] = { 0x2b004 }, 1920*a4f780cdSTaniya Das [NE_GCC_USB3PHY_PHY_SEC_BCR] = { 0x2d004 }, 1921*a4f780cdSTaniya Das }; 1922*a4f780cdSTaniya Das 1923*a4f780cdSTaniya Das static const struct clk_rcg_dfs_data ne_gcc_nord_dfs_clocks[] = { 1924*a4f780cdSTaniya Das DEFINE_RCG_DFS(ne_gcc_qupv3_wrap2_s0_clk_src), 1925*a4f780cdSTaniya Das DEFINE_RCG_DFS(ne_gcc_qupv3_wrap2_s1_clk_src), 1926*a4f780cdSTaniya Das DEFINE_RCG_DFS(ne_gcc_qupv3_wrap2_s2_clk_src), 1927*a4f780cdSTaniya Das DEFINE_RCG_DFS(ne_gcc_qupv3_wrap2_s3_clk_src), 1928*a4f780cdSTaniya Das DEFINE_RCG_DFS(ne_gcc_qupv3_wrap2_s4_clk_src), 1929*a4f780cdSTaniya Das DEFINE_RCG_DFS(ne_gcc_qupv3_wrap2_s5_clk_src), 1930*a4f780cdSTaniya Das DEFINE_RCG_DFS(ne_gcc_qupv3_wrap2_s6_clk_src), 1931*a4f780cdSTaniya Das }; 1932*a4f780cdSTaniya Das 1933*a4f780cdSTaniya Das static const struct regmap_config ne_gcc_nord_regmap_config = { 1934*a4f780cdSTaniya Das .reg_bits = 32, 1935*a4f780cdSTaniya Das .reg_stride = 4, 1936*a4f780cdSTaniya Das .val_bits = 32, 1937*a4f780cdSTaniya Das .max_register = 0xf41f0, 1938*a4f780cdSTaniya Das .fast_io = true, 1939*a4f780cdSTaniya Das }; 1940*a4f780cdSTaniya Das 1941*a4f780cdSTaniya Das static void clk_nord_regs_configure(struct device *dev, struct regmap *regmap) 1942*a4f780cdSTaniya Das { 1943*a4f780cdSTaniya Das /* FORCE_MEM_CORE_ON for ne_gcc_ufs_phy_ice_core_clk and ne_gcc_ufs_phy_axi_clk */ 1944*a4f780cdSTaniya Das qcom_branch_set_force_mem_core(regmap, ne_gcc_ufs_phy_ice_core_clk, true); 1945*a4f780cdSTaniya Das qcom_branch_set_force_mem_core(regmap, ne_gcc_ufs_phy_axi_clk, true); 1946*a4f780cdSTaniya Das } 1947*a4f780cdSTaniya Das 1948*a4f780cdSTaniya Das static struct qcom_cc_driver_data ne_gcc_nord_driver_data = { 1949*a4f780cdSTaniya Das .dfs_rcgs = ne_gcc_nord_dfs_clocks, 1950*a4f780cdSTaniya Das .num_dfs_rcgs = ARRAY_SIZE(ne_gcc_nord_dfs_clocks), 1951*a4f780cdSTaniya Das .clk_regs_configure = clk_nord_regs_configure, 1952*a4f780cdSTaniya Das }; 1953*a4f780cdSTaniya Das 1954*a4f780cdSTaniya Das static const struct qcom_cc_desc ne_gcc_nord_desc = { 1955*a4f780cdSTaniya Das .config = &ne_gcc_nord_regmap_config, 1956*a4f780cdSTaniya Das .clks = ne_gcc_nord_clocks, 1957*a4f780cdSTaniya Das .num_clks = ARRAY_SIZE(ne_gcc_nord_clocks), 1958*a4f780cdSTaniya Das .resets = ne_gcc_nord_resets, 1959*a4f780cdSTaniya Das .num_resets = ARRAY_SIZE(ne_gcc_nord_resets), 1960*a4f780cdSTaniya Das .gdscs = ne_gcc_nord_gdscs, 1961*a4f780cdSTaniya Das .num_gdscs = ARRAY_SIZE(ne_gcc_nord_gdscs), 1962*a4f780cdSTaniya Das .driver_data = &ne_gcc_nord_driver_data, 1963*a4f780cdSTaniya Das }; 1964*a4f780cdSTaniya Das 1965*a4f780cdSTaniya Das static const struct of_device_id ne_gcc_nord_match_table[] = { 1966*a4f780cdSTaniya Das { .compatible = "qcom,nord-negcc" }, 1967*a4f780cdSTaniya Das { } 1968*a4f780cdSTaniya Das }; 1969*a4f780cdSTaniya Das MODULE_DEVICE_TABLE(of, ne_gcc_nord_match_table); 1970*a4f780cdSTaniya Das 1971*a4f780cdSTaniya Das static int ne_gcc_nord_probe(struct platform_device *pdev) 1972*a4f780cdSTaniya Das { 1973*a4f780cdSTaniya Das return qcom_cc_probe(pdev, &ne_gcc_nord_desc); 1974*a4f780cdSTaniya Das } 1975*a4f780cdSTaniya Das 1976*a4f780cdSTaniya Das static struct platform_driver ne_gcc_nord_driver = { 1977*a4f780cdSTaniya Das .probe = ne_gcc_nord_probe, 1978*a4f780cdSTaniya Das .driver = { 1979*a4f780cdSTaniya Das .name = "negcc-nord", 1980*a4f780cdSTaniya Das .of_match_table = ne_gcc_nord_match_table, 1981*a4f780cdSTaniya Das }, 1982*a4f780cdSTaniya Das }; 1983*a4f780cdSTaniya Das 1984*a4f780cdSTaniya Das module_platform_driver(ne_gcc_nord_driver); 1985*a4f780cdSTaniya Das 1986*a4f780cdSTaniya Das MODULE_DESCRIPTION("QTI NEGCC NORD Driver"); 1987*a4f780cdSTaniya Das MODULE_LICENSE("GPL"); 1988