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-segcc.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 "common.h" 21*a4f780cdSTaniya Das #include "gdsc.h" 22*a4f780cdSTaniya Das #include "reset.h" 23*a4f780cdSTaniya Das 24*a4f780cdSTaniya Das enum { 25*a4f780cdSTaniya Das DT_BI_TCXO, 26*a4f780cdSTaniya Das DT_SLEEP_CLK, 27*a4f780cdSTaniya Das }; 28*a4f780cdSTaniya Das 29*a4f780cdSTaniya Das enum { 30*a4f780cdSTaniya Das P_BI_TCXO, 31*a4f780cdSTaniya Das P_SE_GCC_GPLL0_OUT_EVEN, 32*a4f780cdSTaniya Das P_SE_GCC_GPLL0_OUT_MAIN, 33*a4f780cdSTaniya Das P_SE_GCC_GPLL2_OUT_MAIN, 34*a4f780cdSTaniya Das P_SE_GCC_GPLL4_OUT_MAIN, 35*a4f780cdSTaniya Das P_SE_GCC_GPLL5_OUT_MAIN, 36*a4f780cdSTaniya Das P_SLEEP_CLK, 37*a4f780cdSTaniya Das }; 38*a4f780cdSTaniya Das 39*a4f780cdSTaniya Das static struct clk_alpha_pll se_gcc_gpll0 = { 40*a4f780cdSTaniya Das .offset = 0x0, 41*a4f780cdSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 42*a4f780cdSTaniya Das .clkr = { 43*a4f780cdSTaniya Das .enable_reg = 0x0, 44*a4f780cdSTaniya Das .enable_mask = BIT(0), 45*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 46*a4f780cdSTaniya Das .name = "se_gcc_gpll0", 47*a4f780cdSTaniya Das .parent_data = &(const struct clk_parent_data) { 48*a4f780cdSTaniya Das .index = DT_BI_TCXO, 49*a4f780cdSTaniya Das }, 50*a4f780cdSTaniya Das .num_parents = 1, 51*a4f780cdSTaniya Das .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 52*a4f780cdSTaniya Das }, 53*a4f780cdSTaniya Das }, 54*a4f780cdSTaniya Das }; 55*a4f780cdSTaniya Das 56*a4f780cdSTaniya Das static const struct clk_div_table post_div_table_se_gcc_gpll0_out_even[] = { 57*a4f780cdSTaniya Das { 0x1, 2 }, 58*a4f780cdSTaniya Das { } 59*a4f780cdSTaniya Das }; 60*a4f780cdSTaniya Das 61*a4f780cdSTaniya Das static struct clk_alpha_pll_postdiv se_gcc_gpll0_out_even = { 62*a4f780cdSTaniya Das .offset = 0x0, 63*a4f780cdSTaniya Das .post_div_shift = 10, 64*a4f780cdSTaniya Das .post_div_table = post_div_table_se_gcc_gpll0_out_even, 65*a4f780cdSTaniya Das .num_post_div = ARRAY_SIZE(post_div_table_se_gcc_gpll0_out_even), 66*a4f780cdSTaniya Das .width = 4, 67*a4f780cdSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 68*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 69*a4f780cdSTaniya Das .name = "se_gcc_gpll0_out_even", 70*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 71*a4f780cdSTaniya Das &se_gcc_gpll0.clkr.hw, 72*a4f780cdSTaniya Das }, 73*a4f780cdSTaniya Das .num_parents = 1, 74*a4f780cdSTaniya Das .ops = &clk_alpha_pll_postdiv_lucid_ole_ops, 75*a4f780cdSTaniya Das }, 76*a4f780cdSTaniya Das }; 77*a4f780cdSTaniya Das 78*a4f780cdSTaniya Das static struct clk_alpha_pll se_gcc_gpll2 = { 79*a4f780cdSTaniya Das .offset = 0x2000, 80*a4f780cdSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 81*a4f780cdSTaniya Das .clkr = { 82*a4f780cdSTaniya Das .enable_reg = 0x0, 83*a4f780cdSTaniya Das .enable_mask = BIT(2), 84*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 85*a4f780cdSTaniya Das .name = "se_gcc_gpll2", 86*a4f780cdSTaniya Das .parent_data = &(const struct clk_parent_data) { 87*a4f780cdSTaniya Das .index = DT_BI_TCXO, 88*a4f780cdSTaniya Das }, 89*a4f780cdSTaniya Das .num_parents = 1, 90*a4f780cdSTaniya Das .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 91*a4f780cdSTaniya Das }, 92*a4f780cdSTaniya Das }, 93*a4f780cdSTaniya Das }; 94*a4f780cdSTaniya Das 95*a4f780cdSTaniya Das static struct clk_alpha_pll se_gcc_gpll4 = { 96*a4f780cdSTaniya Das .offset = 0x4000, 97*a4f780cdSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 98*a4f780cdSTaniya Das .clkr = { 99*a4f780cdSTaniya Das .enable_reg = 0x0, 100*a4f780cdSTaniya Das .enable_mask = BIT(4), 101*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 102*a4f780cdSTaniya Das .name = "se_gcc_gpll4", 103*a4f780cdSTaniya Das .parent_data = &(const struct clk_parent_data) { 104*a4f780cdSTaniya Das .index = DT_BI_TCXO, 105*a4f780cdSTaniya Das }, 106*a4f780cdSTaniya Das .num_parents = 1, 107*a4f780cdSTaniya Das .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 108*a4f780cdSTaniya Das }, 109*a4f780cdSTaniya Das }, 110*a4f780cdSTaniya Das }; 111*a4f780cdSTaniya Das 112*a4f780cdSTaniya Das static struct clk_alpha_pll se_gcc_gpll5 = { 113*a4f780cdSTaniya Das .offset = 0x5000, 114*a4f780cdSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 115*a4f780cdSTaniya Das .clkr = { 116*a4f780cdSTaniya Das .enable_reg = 0x0, 117*a4f780cdSTaniya Das .enable_mask = BIT(5), 118*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 119*a4f780cdSTaniya Das .name = "se_gcc_gpll5", 120*a4f780cdSTaniya Das .parent_data = &(const struct clk_parent_data) { 121*a4f780cdSTaniya Das .index = DT_BI_TCXO, 122*a4f780cdSTaniya Das }, 123*a4f780cdSTaniya Das .num_parents = 1, 124*a4f780cdSTaniya Das .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 125*a4f780cdSTaniya Das }, 126*a4f780cdSTaniya Das }, 127*a4f780cdSTaniya Das }; 128*a4f780cdSTaniya Das 129*a4f780cdSTaniya Das static const struct parent_map se_gcc_parent_map_0[] = { 130*a4f780cdSTaniya Das { P_BI_TCXO, 0 }, 131*a4f780cdSTaniya Das { P_SE_GCC_GPLL0_OUT_MAIN, 1 }, 132*a4f780cdSTaniya Das { P_SE_GCC_GPLL0_OUT_EVEN, 2 }, 133*a4f780cdSTaniya Das }; 134*a4f780cdSTaniya Das 135*a4f780cdSTaniya Das static const struct clk_parent_data se_gcc_parent_data_0[] = { 136*a4f780cdSTaniya Das { .index = DT_BI_TCXO }, 137*a4f780cdSTaniya Das { .hw = &se_gcc_gpll0.clkr.hw }, 138*a4f780cdSTaniya Das { .hw = &se_gcc_gpll0_out_even.clkr.hw }, 139*a4f780cdSTaniya Das }; 140*a4f780cdSTaniya Das 141*a4f780cdSTaniya Das static const struct parent_map se_gcc_parent_map_1[] = { 142*a4f780cdSTaniya Das { P_BI_TCXO, 0 }, 143*a4f780cdSTaniya Das { P_SE_GCC_GPLL0_OUT_MAIN, 1 }, 144*a4f780cdSTaniya Das }; 145*a4f780cdSTaniya Das 146*a4f780cdSTaniya Das static const struct clk_parent_data se_gcc_parent_data_1[] = { 147*a4f780cdSTaniya Das { .index = DT_BI_TCXO }, 148*a4f780cdSTaniya Das { .hw = &se_gcc_gpll0.clkr.hw }, 149*a4f780cdSTaniya Das }; 150*a4f780cdSTaniya Das 151*a4f780cdSTaniya Das static const struct parent_map se_gcc_parent_map_2[] = { 152*a4f780cdSTaniya Das { P_BI_TCXO, 0 }, 153*a4f780cdSTaniya Das { P_SE_GCC_GPLL0_OUT_MAIN, 1 }, 154*a4f780cdSTaniya Das { P_SLEEP_CLK, 5 }, 155*a4f780cdSTaniya Das }; 156*a4f780cdSTaniya Das 157*a4f780cdSTaniya Das static const struct clk_parent_data se_gcc_parent_data_2[] = { 158*a4f780cdSTaniya Das { .index = DT_BI_TCXO }, 159*a4f780cdSTaniya Das { .hw = &se_gcc_gpll0.clkr.hw }, 160*a4f780cdSTaniya Das { .index = DT_SLEEP_CLK }, 161*a4f780cdSTaniya Das }; 162*a4f780cdSTaniya Das 163*a4f780cdSTaniya Das static const struct parent_map se_gcc_parent_map_3[] = { 164*a4f780cdSTaniya Das { P_BI_TCXO, 0 }, 165*a4f780cdSTaniya Das { P_SE_GCC_GPLL0_OUT_MAIN, 1 }, 166*a4f780cdSTaniya Das { P_SE_GCC_GPLL5_OUT_MAIN, 3 }, 167*a4f780cdSTaniya Das { P_SE_GCC_GPLL4_OUT_MAIN, 5 }, 168*a4f780cdSTaniya Das { P_SE_GCC_GPLL2_OUT_MAIN, 6 }, 169*a4f780cdSTaniya Das }; 170*a4f780cdSTaniya Das 171*a4f780cdSTaniya Das static const struct clk_parent_data se_gcc_parent_data_3[] = { 172*a4f780cdSTaniya Das { .index = DT_BI_TCXO }, 173*a4f780cdSTaniya Das { .hw = &se_gcc_gpll0.clkr.hw }, 174*a4f780cdSTaniya Das { .hw = &se_gcc_gpll5.clkr.hw }, 175*a4f780cdSTaniya Das { .hw = &se_gcc_gpll4.clkr.hw }, 176*a4f780cdSTaniya Das { .hw = &se_gcc_gpll2.clkr.hw }, 177*a4f780cdSTaniya Das }; 178*a4f780cdSTaniya Das 179*a4f780cdSTaniya Das static const struct parent_map se_gcc_parent_map_4[] = { 180*a4f780cdSTaniya Das { P_BI_TCXO, 0 }, 181*a4f780cdSTaniya Das { P_SE_GCC_GPLL0_OUT_MAIN, 1 }, 182*a4f780cdSTaniya Das { P_SE_GCC_GPLL0_OUT_EVEN, 2 }, 183*a4f780cdSTaniya Das { P_SLEEP_CLK, 5 }, 184*a4f780cdSTaniya Das }; 185*a4f780cdSTaniya Das 186*a4f780cdSTaniya Das static const struct clk_parent_data se_gcc_parent_data_4[] = { 187*a4f780cdSTaniya Das { .index = DT_BI_TCXO }, 188*a4f780cdSTaniya Das { .hw = &se_gcc_gpll0.clkr.hw }, 189*a4f780cdSTaniya Das { .hw = &se_gcc_gpll0_out_even.clkr.hw }, 190*a4f780cdSTaniya Das { .index = DT_SLEEP_CLK }, 191*a4f780cdSTaniya Das }; 192*a4f780cdSTaniya Das 193*a4f780cdSTaniya Das static const struct freq_tbl ftbl_se_gcc_eee_emac0_clk_src[] = { 194*a4f780cdSTaniya Das F(66666667, P_SE_GCC_GPLL0_OUT_MAIN, 9, 0, 0), 195*a4f780cdSTaniya Das F(100000000, P_SE_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 196*a4f780cdSTaniya Das { } 197*a4f780cdSTaniya Das }; 198*a4f780cdSTaniya Das 199*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_eee_emac0_clk_src = { 200*a4f780cdSTaniya Das .cmd_rcgr = 0x240b8, 201*a4f780cdSTaniya Das .mnd_width = 16, 202*a4f780cdSTaniya Das .hid_width = 5, 203*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_2, 204*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_eee_emac0_clk_src, 205*a4f780cdSTaniya Das .hw_clk_ctrl = true, 206*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 207*a4f780cdSTaniya Das .name = "se_gcc_eee_emac0_clk_src", 208*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_2, 209*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_2), 210*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 211*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 212*a4f780cdSTaniya Das }, 213*a4f780cdSTaniya Das }; 214*a4f780cdSTaniya Das 215*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_eee_emac1_clk_src = { 216*a4f780cdSTaniya Das .cmd_rcgr = 0x250b8, 217*a4f780cdSTaniya Das .mnd_width = 16, 218*a4f780cdSTaniya Das .hid_width = 5, 219*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_2, 220*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_eee_emac0_clk_src, 221*a4f780cdSTaniya Das .hw_clk_ctrl = true, 222*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 223*a4f780cdSTaniya Das .name = "se_gcc_eee_emac1_clk_src", 224*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_2, 225*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_2), 226*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 227*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 228*a4f780cdSTaniya Das }, 229*a4f780cdSTaniya Das }; 230*a4f780cdSTaniya Das 231*a4f780cdSTaniya Das static const struct freq_tbl ftbl_se_gcc_emac0_phy_aux_clk_src[] = { 232*a4f780cdSTaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 233*a4f780cdSTaniya Das { } 234*a4f780cdSTaniya Das }; 235*a4f780cdSTaniya Das 236*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_emac0_phy_aux_clk_src = { 237*a4f780cdSTaniya Das .cmd_rcgr = 0x24030, 238*a4f780cdSTaniya Das .mnd_width = 0, 239*a4f780cdSTaniya Das .hid_width = 5, 240*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_2, 241*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_emac0_phy_aux_clk_src, 242*a4f780cdSTaniya Das .hw_clk_ctrl = true, 243*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 244*a4f780cdSTaniya Das .name = "se_gcc_emac0_phy_aux_clk_src", 245*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_2, 246*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_2), 247*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 248*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 249*a4f780cdSTaniya Das }, 250*a4f780cdSTaniya Das }; 251*a4f780cdSTaniya Das 252*a4f780cdSTaniya Das static const struct freq_tbl ftbl_se_gcc_emac0_ptp_clk_src[] = { 253*a4f780cdSTaniya Das F(150000000, P_SE_GCC_GPLL0_OUT_MAIN, 4, 0, 0), 254*a4f780cdSTaniya Das F(250000000, P_SE_GCC_GPLL5_OUT_MAIN, 4, 0, 0), 255*a4f780cdSTaniya Das { } 256*a4f780cdSTaniya Das }; 257*a4f780cdSTaniya Das 258*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_emac0_ptp_clk_src = { 259*a4f780cdSTaniya Das .cmd_rcgr = 0x24084, 260*a4f780cdSTaniya Das .mnd_width = 16, 261*a4f780cdSTaniya Das .hid_width = 5, 262*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_3, 263*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_emac0_ptp_clk_src, 264*a4f780cdSTaniya Das .hw_clk_ctrl = true, 265*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 266*a4f780cdSTaniya Das .name = "se_gcc_emac0_ptp_clk_src", 267*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_3, 268*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_3), 269*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 270*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 271*a4f780cdSTaniya Das }, 272*a4f780cdSTaniya Das }; 273*a4f780cdSTaniya Das 274*a4f780cdSTaniya Das static const struct freq_tbl ftbl_se_gcc_emac0_rgmii_clk_src[] = { 275*a4f780cdSTaniya Das F(75000000, P_SE_GCC_GPLL0_OUT_MAIN, 8, 0, 0), 276*a4f780cdSTaniya Das F(120000000, P_SE_GCC_GPLL0_OUT_MAIN, 5, 0, 0), 277*a4f780cdSTaniya Das F(250000000, P_SE_GCC_GPLL5_OUT_MAIN, 4, 0, 0), 278*a4f780cdSTaniya Das { } 279*a4f780cdSTaniya Das }; 280*a4f780cdSTaniya Das 281*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_emac0_rgmii_clk_src = { 282*a4f780cdSTaniya Das .cmd_rcgr = 0x2406c, 283*a4f780cdSTaniya Das .mnd_width = 16, 284*a4f780cdSTaniya Das .hid_width = 5, 285*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_3, 286*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_emac0_rgmii_clk_src, 287*a4f780cdSTaniya Das .hw_clk_ctrl = true, 288*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 289*a4f780cdSTaniya Das .name = "se_gcc_emac0_rgmii_clk_src", 290*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_3, 291*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_3), 292*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 293*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 294*a4f780cdSTaniya Das }, 295*a4f780cdSTaniya Das }; 296*a4f780cdSTaniya Das 297*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_emac1_phy_aux_clk_src = { 298*a4f780cdSTaniya Das .cmd_rcgr = 0x25030, 299*a4f780cdSTaniya Das .mnd_width = 0, 300*a4f780cdSTaniya Das .hid_width = 5, 301*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_2, 302*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_emac0_phy_aux_clk_src, 303*a4f780cdSTaniya Das .hw_clk_ctrl = true, 304*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 305*a4f780cdSTaniya Das .name = "se_gcc_emac1_phy_aux_clk_src", 306*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_2, 307*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_2), 308*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 309*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 310*a4f780cdSTaniya Das }, 311*a4f780cdSTaniya Das }; 312*a4f780cdSTaniya Das 313*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_emac1_ptp_clk_src = { 314*a4f780cdSTaniya Das .cmd_rcgr = 0x25084, 315*a4f780cdSTaniya Das .mnd_width = 16, 316*a4f780cdSTaniya Das .hid_width = 5, 317*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_3, 318*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_emac0_ptp_clk_src, 319*a4f780cdSTaniya Das .hw_clk_ctrl = true, 320*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 321*a4f780cdSTaniya Das .name = "se_gcc_emac1_ptp_clk_src", 322*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_3, 323*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_3), 324*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 325*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 326*a4f780cdSTaniya Das }, 327*a4f780cdSTaniya Das }; 328*a4f780cdSTaniya Das 329*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_emac1_rgmii_clk_src = { 330*a4f780cdSTaniya Das .cmd_rcgr = 0x2506c, 331*a4f780cdSTaniya Das .mnd_width = 16, 332*a4f780cdSTaniya Das .hid_width = 5, 333*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_3, 334*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_emac0_rgmii_clk_src, 335*a4f780cdSTaniya Das .hw_clk_ctrl = true, 336*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 337*a4f780cdSTaniya Das .name = "se_gcc_emac1_rgmii_clk_src", 338*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_3, 339*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_3), 340*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 341*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 342*a4f780cdSTaniya Das }, 343*a4f780cdSTaniya Das }; 344*a4f780cdSTaniya Das 345*a4f780cdSTaniya Das static const struct freq_tbl ftbl_se_gcc_gp1_clk_src[] = { 346*a4f780cdSTaniya Das F(66666667, P_SE_GCC_GPLL0_OUT_MAIN, 9, 0, 0), 347*a4f780cdSTaniya Das F(100000000, P_SE_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 348*a4f780cdSTaniya Das F(200000000, P_SE_GCC_GPLL0_OUT_MAIN, 3, 0, 0), 349*a4f780cdSTaniya Das { } 350*a4f780cdSTaniya Das }; 351*a4f780cdSTaniya Das 352*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_gp1_clk_src = { 353*a4f780cdSTaniya Das .cmd_rcgr = 0x19004, 354*a4f780cdSTaniya Das .mnd_width = 16, 355*a4f780cdSTaniya Das .hid_width = 5, 356*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_4, 357*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_gp1_clk_src, 358*a4f780cdSTaniya Das .hw_clk_ctrl = true, 359*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 360*a4f780cdSTaniya Das .name = "se_gcc_gp1_clk_src", 361*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_4, 362*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_4), 363*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 364*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 365*a4f780cdSTaniya Das }, 366*a4f780cdSTaniya Das }; 367*a4f780cdSTaniya Das 368*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_gp2_clk_src = { 369*a4f780cdSTaniya Das .cmd_rcgr = 0x1a004, 370*a4f780cdSTaniya Das .mnd_width = 16, 371*a4f780cdSTaniya Das .hid_width = 5, 372*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_4, 373*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_gp1_clk_src, 374*a4f780cdSTaniya Das .hw_clk_ctrl = true, 375*a4f780cdSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 376*a4f780cdSTaniya Das .name = "se_gcc_gp2_clk_src", 377*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_4, 378*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_4), 379*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 380*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_ops, 381*a4f780cdSTaniya Das }, 382*a4f780cdSTaniya Das }; 383*a4f780cdSTaniya Das 384*a4f780cdSTaniya Das static const struct freq_tbl ftbl_se_gcc_qupv3_wrap0_s0_clk_src[] = { 385*a4f780cdSTaniya Das F(7372800, P_SE_GCC_GPLL0_OUT_MAIN, 1, 192, 15625), 386*a4f780cdSTaniya Das F(14745600, P_SE_GCC_GPLL0_OUT_MAIN, 1, 384, 15625), 387*a4f780cdSTaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 388*a4f780cdSTaniya Das F(29491200, P_SE_GCC_GPLL0_OUT_MAIN, 1, 768, 15625), 389*a4f780cdSTaniya Das F(32000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 4, 75), 390*a4f780cdSTaniya Das F(48000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 2, 25), 391*a4f780cdSTaniya Das F(51200000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 32, 375), 392*a4f780cdSTaniya Das F(64000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 8, 75), 393*a4f780cdSTaniya Das F(66666667, P_SE_GCC_GPLL0_OUT_MAIN, 9, 0, 0), 394*a4f780cdSTaniya Das F(75000000, P_SE_GCC_GPLL0_OUT_MAIN, 8, 0, 0), 395*a4f780cdSTaniya Das F(80000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 2, 15), 396*a4f780cdSTaniya Das F(96000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 4, 25), 397*a4f780cdSTaniya Das F(100000000, P_SE_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 398*a4f780cdSTaniya Das F(102400000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 64, 375), 399*a4f780cdSTaniya Das F(112000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 14, 75), 400*a4f780cdSTaniya Das F(117964800, P_SE_GCC_GPLL0_OUT_MAIN, 1, 3072, 15625), 401*a4f780cdSTaniya Das F(120000000, P_SE_GCC_GPLL0_OUT_MAIN, 5, 0, 0), 402*a4f780cdSTaniya Das { } 403*a4f780cdSTaniya Das }; 404*a4f780cdSTaniya Das 405*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap0_s0_clk_src_init = { 406*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s0_clk_src", 407*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_1, 408*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_1), 409*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 410*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 411*a4f780cdSTaniya Das }; 412*a4f780cdSTaniya Das 413*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap0_s0_clk_src = { 414*a4f780cdSTaniya Das .cmd_rcgr = 0x2616c, 415*a4f780cdSTaniya Das .mnd_width = 16, 416*a4f780cdSTaniya Das .hid_width = 5, 417*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_1, 418*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_qupv3_wrap0_s0_clk_src, 419*a4f780cdSTaniya Das .hw_clk_ctrl = true, 420*a4f780cdSTaniya Das .clkr.hw.init = &se_gcc_qupv3_wrap0_s0_clk_src_init, 421*a4f780cdSTaniya Das }; 422*a4f780cdSTaniya Das 423*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap0_s1_clk_src_init = { 424*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s1_clk_src", 425*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_1, 426*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_1), 427*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 428*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 429*a4f780cdSTaniya Das }; 430*a4f780cdSTaniya Das 431*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap0_s1_clk_src = { 432*a4f780cdSTaniya Das .cmd_rcgr = 0x262a8, 433*a4f780cdSTaniya Das .mnd_width = 16, 434*a4f780cdSTaniya Das .hid_width = 5, 435*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_1, 436*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_qupv3_wrap0_s0_clk_src, 437*a4f780cdSTaniya Das .hw_clk_ctrl = true, 438*a4f780cdSTaniya Das .clkr.hw.init = &se_gcc_qupv3_wrap0_s1_clk_src_init, 439*a4f780cdSTaniya Das }; 440*a4f780cdSTaniya Das 441*a4f780cdSTaniya Das static const struct freq_tbl ftbl_se_gcc_qupv3_wrap0_s2_clk_src[] = { 442*a4f780cdSTaniya Das F(7372800, P_SE_GCC_GPLL0_OUT_MAIN, 1, 192, 15625), 443*a4f780cdSTaniya Das F(14745600, P_SE_GCC_GPLL0_OUT_MAIN, 1, 384, 15625), 444*a4f780cdSTaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 445*a4f780cdSTaniya Das F(29491200, P_SE_GCC_GPLL0_OUT_MAIN, 1, 768, 15625), 446*a4f780cdSTaniya Das F(32000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 4, 75), 447*a4f780cdSTaniya Das F(48000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 2, 25), 448*a4f780cdSTaniya Das F(51200000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 32, 375), 449*a4f780cdSTaniya Das F(64000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 8, 75), 450*a4f780cdSTaniya Das F(66666667, P_SE_GCC_GPLL0_OUT_MAIN, 9, 0, 0), 451*a4f780cdSTaniya Das F(75000000, P_SE_GCC_GPLL0_OUT_MAIN, 8, 0, 0), 452*a4f780cdSTaniya Das F(80000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 2, 15), 453*a4f780cdSTaniya Das F(96000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 4, 25), 454*a4f780cdSTaniya Das F(100000000, P_SE_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 455*a4f780cdSTaniya Das { } 456*a4f780cdSTaniya Das }; 457*a4f780cdSTaniya Das 458*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap0_s2_clk_src_init = { 459*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s2_clk_src", 460*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_1, 461*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_1), 462*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 463*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 464*a4f780cdSTaniya Das }; 465*a4f780cdSTaniya Das 466*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap0_s2_clk_src = { 467*a4f780cdSTaniya Das .cmd_rcgr = 0x263e4, 468*a4f780cdSTaniya Das .mnd_width = 16, 469*a4f780cdSTaniya Das .hid_width = 5, 470*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_1, 471*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src, 472*a4f780cdSTaniya Das .hw_clk_ctrl = true, 473*a4f780cdSTaniya Das .clkr.hw.init = &se_gcc_qupv3_wrap0_s2_clk_src_init, 474*a4f780cdSTaniya Das }; 475*a4f780cdSTaniya Das 476*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap0_s3_clk_src_init = { 477*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s3_clk_src", 478*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_1, 479*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_1), 480*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 481*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 482*a4f780cdSTaniya Das }; 483*a4f780cdSTaniya Das 484*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap0_s3_clk_src = { 485*a4f780cdSTaniya Das .cmd_rcgr = 0x26520, 486*a4f780cdSTaniya Das .mnd_width = 16, 487*a4f780cdSTaniya Das .hid_width = 5, 488*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_1, 489*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src, 490*a4f780cdSTaniya Das .hw_clk_ctrl = true, 491*a4f780cdSTaniya Das .clkr.hw.init = &se_gcc_qupv3_wrap0_s3_clk_src_init, 492*a4f780cdSTaniya Das }; 493*a4f780cdSTaniya Das 494*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap0_s4_clk_src_init = { 495*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s4_clk_src", 496*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_1, 497*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_1), 498*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 499*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 500*a4f780cdSTaniya Das }; 501*a4f780cdSTaniya Das 502*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap0_s4_clk_src = { 503*a4f780cdSTaniya Das .cmd_rcgr = 0x2665c, 504*a4f780cdSTaniya Das .mnd_width = 16, 505*a4f780cdSTaniya Das .hid_width = 5, 506*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_1, 507*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src, 508*a4f780cdSTaniya Das .hw_clk_ctrl = true, 509*a4f780cdSTaniya Das .clkr.hw.init = &se_gcc_qupv3_wrap0_s4_clk_src_init, 510*a4f780cdSTaniya Das }; 511*a4f780cdSTaniya Das 512*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap0_s5_clk_src_init = { 513*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s5_clk_src", 514*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_1, 515*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_1), 516*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 517*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 518*a4f780cdSTaniya Das }; 519*a4f780cdSTaniya Das 520*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap0_s5_clk_src = { 521*a4f780cdSTaniya Das .cmd_rcgr = 0x26798, 522*a4f780cdSTaniya Das .mnd_width = 16, 523*a4f780cdSTaniya Das .hid_width = 5, 524*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_1, 525*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src, 526*a4f780cdSTaniya Das .hw_clk_ctrl = true, 527*a4f780cdSTaniya Das .clkr.hw.init = &se_gcc_qupv3_wrap0_s5_clk_src_init, 528*a4f780cdSTaniya Das }; 529*a4f780cdSTaniya Das 530*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap0_s6_clk_src_init = { 531*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s6_clk_src", 532*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_1, 533*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_1), 534*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 535*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 536*a4f780cdSTaniya Das }; 537*a4f780cdSTaniya Das 538*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap0_s6_clk_src = { 539*a4f780cdSTaniya Das .cmd_rcgr = 0x268d4, 540*a4f780cdSTaniya Das .mnd_width = 16, 541*a4f780cdSTaniya Das .hid_width = 5, 542*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_1, 543*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src, 544*a4f780cdSTaniya Das .hw_clk_ctrl = true, 545*a4f780cdSTaniya Das .clkr.hw.init = &se_gcc_qupv3_wrap0_s6_clk_src_init, 546*a4f780cdSTaniya Das }; 547*a4f780cdSTaniya Das 548*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap1_s0_clk_src_init = { 549*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s0_clk_src", 550*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_0, 551*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_0), 552*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 553*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 554*a4f780cdSTaniya Das }; 555*a4f780cdSTaniya Das 556*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap1_s0_clk_src = { 557*a4f780cdSTaniya Das .cmd_rcgr = 0x2716c, 558*a4f780cdSTaniya Das .mnd_width = 16, 559*a4f780cdSTaniya Das .hid_width = 5, 560*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_0, 561*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_qupv3_wrap0_s0_clk_src, 562*a4f780cdSTaniya Das .hw_clk_ctrl = true, 563*a4f780cdSTaniya Das .clkr.hw.init = &se_gcc_qupv3_wrap1_s0_clk_src_init, 564*a4f780cdSTaniya Das }; 565*a4f780cdSTaniya Das 566*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap1_s1_clk_src_init = { 567*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s1_clk_src", 568*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_0, 569*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_0), 570*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 571*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 572*a4f780cdSTaniya Das }; 573*a4f780cdSTaniya Das 574*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap1_s1_clk_src = { 575*a4f780cdSTaniya Das .cmd_rcgr = 0x272a8, 576*a4f780cdSTaniya Das .mnd_width = 16, 577*a4f780cdSTaniya Das .hid_width = 5, 578*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_0, 579*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_qupv3_wrap0_s0_clk_src, 580*a4f780cdSTaniya Das .hw_clk_ctrl = true, 581*a4f780cdSTaniya Das .clkr.hw.init = &se_gcc_qupv3_wrap1_s1_clk_src_init, 582*a4f780cdSTaniya Das }; 583*a4f780cdSTaniya Das 584*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap1_s2_clk_src_init = { 585*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s2_clk_src", 586*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_0, 587*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_0), 588*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 589*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 590*a4f780cdSTaniya Das }; 591*a4f780cdSTaniya Das 592*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap1_s2_clk_src = { 593*a4f780cdSTaniya Das .cmd_rcgr = 0x273e4, 594*a4f780cdSTaniya Das .mnd_width = 16, 595*a4f780cdSTaniya Das .hid_width = 5, 596*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_0, 597*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src, 598*a4f780cdSTaniya Das .hw_clk_ctrl = true, 599*a4f780cdSTaniya Das .clkr.hw.init = &se_gcc_qupv3_wrap1_s2_clk_src_init, 600*a4f780cdSTaniya Das }; 601*a4f780cdSTaniya Das 602*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap1_s3_clk_src_init = { 603*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s3_clk_src", 604*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_0, 605*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_0), 606*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 607*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 608*a4f780cdSTaniya Das }; 609*a4f780cdSTaniya Das 610*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap1_s3_clk_src = { 611*a4f780cdSTaniya Das .cmd_rcgr = 0x27520, 612*a4f780cdSTaniya Das .mnd_width = 16, 613*a4f780cdSTaniya Das .hid_width = 5, 614*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_0, 615*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src, 616*a4f780cdSTaniya Das .hw_clk_ctrl = true, 617*a4f780cdSTaniya Das .clkr.hw.init = &se_gcc_qupv3_wrap1_s3_clk_src_init, 618*a4f780cdSTaniya Das }; 619*a4f780cdSTaniya Das 620*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap1_s4_clk_src_init = { 621*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s4_clk_src", 622*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_0, 623*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_0), 624*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 625*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 626*a4f780cdSTaniya Das }; 627*a4f780cdSTaniya Das 628*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap1_s4_clk_src = { 629*a4f780cdSTaniya Das .cmd_rcgr = 0x2765c, 630*a4f780cdSTaniya Das .mnd_width = 16, 631*a4f780cdSTaniya Das .hid_width = 5, 632*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_0, 633*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src, 634*a4f780cdSTaniya Das .hw_clk_ctrl = true, 635*a4f780cdSTaniya Das .clkr.hw.init = &se_gcc_qupv3_wrap1_s4_clk_src_init, 636*a4f780cdSTaniya Das }; 637*a4f780cdSTaniya Das 638*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap1_s5_clk_src_init = { 639*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s5_clk_src", 640*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_0, 641*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_0), 642*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 643*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 644*a4f780cdSTaniya Das }; 645*a4f780cdSTaniya Das 646*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap1_s5_clk_src = { 647*a4f780cdSTaniya Das .cmd_rcgr = 0x27798, 648*a4f780cdSTaniya Das .mnd_width = 16, 649*a4f780cdSTaniya Das .hid_width = 5, 650*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_0, 651*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src, 652*a4f780cdSTaniya Das .hw_clk_ctrl = true, 653*a4f780cdSTaniya Das .clkr.hw.init = &se_gcc_qupv3_wrap1_s5_clk_src_init, 654*a4f780cdSTaniya Das }; 655*a4f780cdSTaniya Das 656*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap1_s6_clk_src_init = { 657*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s6_clk_src", 658*a4f780cdSTaniya Das .parent_data = se_gcc_parent_data_0, 659*a4f780cdSTaniya Das .num_parents = ARRAY_SIZE(se_gcc_parent_data_0), 660*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 661*a4f780cdSTaniya Das .ops = &clk_rcg2_shared_no_init_park_ops, 662*a4f780cdSTaniya Das }; 663*a4f780cdSTaniya Das 664*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap1_s6_clk_src = { 665*a4f780cdSTaniya Das .cmd_rcgr = 0x278d4, 666*a4f780cdSTaniya Das .mnd_width = 16, 667*a4f780cdSTaniya Das .hid_width = 5, 668*a4f780cdSTaniya Das .parent_map = se_gcc_parent_map_0, 669*a4f780cdSTaniya Das .freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src, 670*a4f780cdSTaniya Das .hw_clk_ctrl = true, 671*a4f780cdSTaniya Das .clkr.hw.init = &se_gcc_qupv3_wrap1_s6_clk_src_init, 672*a4f780cdSTaniya Das }; 673*a4f780cdSTaniya Das 674*a4f780cdSTaniya Das static struct clk_branch se_gcc_eee_emac0_clk = { 675*a4f780cdSTaniya Das .halt_reg = 0x240b4, 676*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 677*a4f780cdSTaniya Das .clkr = { 678*a4f780cdSTaniya Das .enable_reg = 0x240b4, 679*a4f780cdSTaniya Das .enable_mask = BIT(0), 680*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 681*a4f780cdSTaniya Das .name = "se_gcc_eee_emac0_clk", 682*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 683*a4f780cdSTaniya Das &se_gcc_eee_emac0_clk_src.clkr.hw, 684*a4f780cdSTaniya Das }, 685*a4f780cdSTaniya Das .num_parents = 1, 686*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 687*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 688*a4f780cdSTaniya Das }, 689*a4f780cdSTaniya Das }, 690*a4f780cdSTaniya Das }; 691*a4f780cdSTaniya Das 692*a4f780cdSTaniya Das static struct clk_branch se_gcc_eee_emac1_clk = { 693*a4f780cdSTaniya Das .halt_reg = 0x250b4, 694*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 695*a4f780cdSTaniya Das .clkr = { 696*a4f780cdSTaniya Das .enable_reg = 0x250b4, 697*a4f780cdSTaniya Das .enable_mask = BIT(0), 698*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 699*a4f780cdSTaniya Das .name = "se_gcc_eee_emac1_clk", 700*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 701*a4f780cdSTaniya Das &se_gcc_eee_emac1_clk_src.clkr.hw, 702*a4f780cdSTaniya Das }, 703*a4f780cdSTaniya Das .num_parents = 1, 704*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 705*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 706*a4f780cdSTaniya Das }, 707*a4f780cdSTaniya Das }, 708*a4f780cdSTaniya Das }; 709*a4f780cdSTaniya Das 710*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_axi_clk = { 711*a4f780cdSTaniya Das .halt_reg = 0x2401c, 712*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 713*a4f780cdSTaniya Das .hwcg_reg = 0x2401c, 714*a4f780cdSTaniya Das .hwcg_bit = 1, 715*a4f780cdSTaniya Das .clkr = { 716*a4f780cdSTaniya Das .enable_reg = 0x2401c, 717*a4f780cdSTaniya Das .enable_mask = BIT(0), 718*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 719*a4f780cdSTaniya Das .name = "se_gcc_emac0_axi_clk", 720*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 721*a4f780cdSTaniya Das }, 722*a4f780cdSTaniya Das }, 723*a4f780cdSTaniya Das }; 724*a4f780cdSTaniya Das 725*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_cc_sgmiiphy_rx_clk = { 726*a4f780cdSTaniya Das .halt_reg = 0x24064, 727*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 728*a4f780cdSTaniya Das .clkr = { 729*a4f780cdSTaniya Das .enable_reg = 0x24064, 730*a4f780cdSTaniya Das .enable_mask = BIT(0), 731*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 732*a4f780cdSTaniya Das .name = "se_gcc_emac0_cc_sgmiiphy_rx_clk", 733*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 734*a4f780cdSTaniya Das }, 735*a4f780cdSTaniya Das }, 736*a4f780cdSTaniya Das }; 737*a4f780cdSTaniya Das 738*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_cc_sgmiiphy_tx_clk = { 739*a4f780cdSTaniya Das .halt_reg = 0x2405c, 740*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 741*a4f780cdSTaniya Das .clkr = { 742*a4f780cdSTaniya Das .enable_reg = 0x2405c, 743*a4f780cdSTaniya Das .enable_mask = BIT(0), 744*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 745*a4f780cdSTaniya Das .name = "se_gcc_emac0_cc_sgmiiphy_tx_clk", 746*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 747*a4f780cdSTaniya Das }, 748*a4f780cdSTaniya Das }, 749*a4f780cdSTaniya Das }; 750*a4f780cdSTaniya Das 751*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_phy_aux_clk = { 752*a4f780cdSTaniya Das .halt_reg = 0x2402c, 753*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 754*a4f780cdSTaniya Das .clkr = { 755*a4f780cdSTaniya Das .enable_reg = 0x2402c, 756*a4f780cdSTaniya Das .enable_mask = BIT(0), 757*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 758*a4f780cdSTaniya Das .name = "se_gcc_emac0_phy_aux_clk", 759*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 760*a4f780cdSTaniya Das &se_gcc_emac0_phy_aux_clk_src.clkr.hw, 761*a4f780cdSTaniya Das }, 762*a4f780cdSTaniya Das .num_parents = 1, 763*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 764*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 765*a4f780cdSTaniya Das }, 766*a4f780cdSTaniya Das }, 767*a4f780cdSTaniya Das }; 768*a4f780cdSTaniya Das 769*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_ptp_clk = { 770*a4f780cdSTaniya Das .halt_reg = 0x24048, 771*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 772*a4f780cdSTaniya Das .clkr = { 773*a4f780cdSTaniya Das .enable_reg = 0x24048, 774*a4f780cdSTaniya Das .enable_mask = BIT(0), 775*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 776*a4f780cdSTaniya Das .name = "se_gcc_emac0_ptp_clk", 777*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 778*a4f780cdSTaniya Das &se_gcc_emac0_ptp_clk_src.clkr.hw, 779*a4f780cdSTaniya Das }, 780*a4f780cdSTaniya Das .num_parents = 1, 781*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 782*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 783*a4f780cdSTaniya Das }, 784*a4f780cdSTaniya Das }, 785*a4f780cdSTaniya Das }; 786*a4f780cdSTaniya Das 787*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_rgmii_clk = { 788*a4f780cdSTaniya Das .halt_reg = 0x24058, 789*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 790*a4f780cdSTaniya Das .clkr = { 791*a4f780cdSTaniya Das .enable_reg = 0x24058, 792*a4f780cdSTaniya Das .enable_mask = BIT(0), 793*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 794*a4f780cdSTaniya Das .name = "se_gcc_emac0_rgmii_clk", 795*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 796*a4f780cdSTaniya Das &se_gcc_emac0_rgmii_clk_src.clkr.hw, 797*a4f780cdSTaniya Das }, 798*a4f780cdSTaniya Das .num_parents = 1, 799*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 800*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 801*a4f780cdSTaniya Das }, 802*a4f780cdSTaniya Das }, 803*a4f780cdSTaniya Das }; 804*a4f780cdSTaniya Das 805*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_rpcs_rx_clk = { 806*a4f780cdSTaniya Das .halt_reg = 0x240a8, 807*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 808*a4f780cdSTaniya Das .clkr = { 809*a4f780cdSTaniya Das .enable_reg = 0x240a8, 810*a4f780cdSTaniya Das .enable_mask = BIT(0), 811*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 812*a4f780cdSTaniya Das .name = "se_gcc_emac0_rpcs_rx_clk", 813*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 814*a4f780cdSTaniya Das }, 815*a4f780cdSTaniya Das }, 816*a4f780cdSTaniya Das }; 817*a4f780cdSTaniya Das 818*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_rpcs_tx_clk = { 819*a4f780cdSTaniya Das .halt_reg = 0x240a4, 820*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 821*a4f780cdSTaniya Das .clkr = { 822*a4f780cdSTaniya Das .enable_reg = 0x240a4, 823*a4f780cdSTaniya Das .enable_mask = BIT(0), 824*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 825*a4f780cdSTaniya Das .name = "se_gcc_emac0_rpcs_tx_clk", 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 se_gcc_emac0_xgxs_rx_clk = { 832*a4f780cdSTaniya Das .halt_reg = 0x240b0, 833*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 834*a4f780cdSTaniya Das .clkr = { 835*a4f780cdSTaniya Das .enable_reg = 0x240b0, 836*a4f780cdSTaniya Das .enable_mask = BIT(0), 837*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 838*a4f780cdSTaniya Das .name = "se_gcc_emac0_xgxs_rx_clk", 839*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 840*a4f780cdSTaniya Das }, 841*a4f780cdSTaniya Das }, 842*a4f780cdSTaniya Das }; 843*a4f780cdSTaniya Das 844*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_xgxs_tx_clk = { 845*a4f780cdSTaniya Das .halt_reg = 0x240ac, 846*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 847*a4f780cdSTaniya Das .clkr = { 848*a4f780cdSTaniya Das .enable_reg = 0x240ac, 849*a4f780cdSTaniya Das .enable_mask = BIT(0), 850*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 851*a4f780cdSTaniya Das .name = "se_gcc_emac0_xgxs_tx_clk", 852*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 853*a4f780cdSTaniya Das }, 854*a4f780cdSTaniya Das }, 855*a4f780cdSTaniya Das }; 856*a4f780cdSTaniya Das 857*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_axi_clk = { 858*a4f780cdSTaniya Das .halt_reg = 0x2501c, 859*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 860*a4f780cdSTaniya Das .hwcg_reg = 0x2501c, 861*a4f780cdSTaniya Das .hwcg_bit = 1, 862*a4f780cdSTaniya Das .clkr = { 863*a4f780cdSTaniya Das .enable_reg = 0x2501c, 864*a4f780cdSTaniya Das .enable_mask = BIT(0), 865*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 866*a4f780cdSTaniya Das .name = "se_gcc_emac1_axi_clk", 867*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 868*a4f780cdSTaniya Das }, 869*a4f780cdSTaniya Das }, 870*a4f780cdSTaniya Das }; 871*a4f780cdSTaniya Das 872*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_cc_sgmiiphy_rx_clk = { 873*a4f780cdSTaniya Das .halt_reg = 0x25064, 874*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 875*a4f780cdSTaniya Das .clkr = { 876*a4f780cdSTaniya Das .enable_reg = 0x25064, 877*a4f780cdSTaniya Das .enable_mask = BIT(0), 878*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 879*a4f780cdSTaniya Das .name = "se_gcc_emac1_cc_sgmiiphy_rx_clk", 880*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 881*a4f780cdSTaniya Das }, 882*a4f780cdSTaniya Das }, 883*a4f780cdSTaniya Das }; 884*a4f780cdSTaniya Das 885*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_cc_sgmiiphy_tx_clk = { 886*a4f780cdSTaniya Das .halt_reg = 0x2505c, 887*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 888*a4f780cdSTaniya Das .clkr = { 889*a4f780cdSTaniya Das .enable_reg = 0x2505c, 890*a4f780cdSTaniya Das .enable_mask = BIT(0), 891*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 892*a4f780cdSTaniya Das .name = "se_gcc_emac1_cc_sgmiiphy_tx_clk", 893*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 894*a4f780cdSTaniya Das }, 895*a4f780cdSTaniya Das }, 896*a4f780cdSTaniya Das }; 897*a4f780cdSTaniya Das 898*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_phy_aux_clk = { 899*a4f780cdSTaniya Das .halt_reg = 0x2502c, 900*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 901*a4f780cdSTaniya Das .clkr = { 902*a4f780cdSTaniya Das .enable_reg = 0x2502c, 903*a4f780cdSTaniya Das .enable_mask = BIT(0), 904*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 905*a4f780cdSTaniya Das .name = "se_gcc_emac1_phy_aux_clk", 906*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 907*a4f780cdSTaniya Das &se_gcc_emac1_phy_aux_clk_src.clkr.hw, 908*a4f780cdSTaniya Das }, 909*a4f780cdSTaniya Das .num_parents = 1, 910*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 911*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 912*a4f780cdSTaniya Das }, 913*a4f780cdSTaniya Das }, 914*a4f780cdSTaniya Das }; 915*a4f780cdSTaniya Das 916*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_ptp_clk = { 917*a4f780cdSTaniya Das .halt_reg = 0x25048, 918*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 919*a4f780cdSTaniya Das .clkr = { 920*a4f780cdSTaniya Das .enable_reg = 0x25048, 921*a4f780cdSTaniya Das .enable_mask = BIT(0), 922*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 923*a4f780cdSTaniya Das .name = "se_gcc_emac1_ptp_clk", 924*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 925*a4f780cdSTaniya Das &se_gcc_emac1_ptp_clk_src.clkr.hw, 926*a4f780cdSTaniya Das }, 927*a4f780cdSTaniya Das .num_parents = 1, 928*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 929*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 930*a4f780cdSTaniya Das }, 931*a4f780cdSTaniya Das }, 932*a4f780cdSTaniya Das }; 933*a4f780cdSTaniya Das 934*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_rgmii_clk = { 935*a4f780cdSTaniya Das .halt_reg = 0x25058, 936*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 937*a4f780cdSTaniya Das .clkr = { 938*a4f780cdSTaniya Das .enable_reg = 0x25058, 939*a4f780cdSTaniya Das .enable_mask = BIT(0), 940*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 941*a4f780cdSTaniya Das .name = "se_gcc_emac1_rgmii_clk", 942*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 943*a4f780cdSTaniya Das &se_gcc_emac1_rgmii_clk_src.clkr.hw, 944*a4f780cdSTaniya Das }, 945*a4f780cdSTaniya Das .num_parents = 1, 946*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 947*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 948*a4f780cdSTaniya Das }, 949*a4f780cdSTaniya Das }, 950*a4f780cdSTaniya Das }; 951*a4f780cdSTaniya Das 952*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_rpcs_rx_clk = { 953*a4f780cdSTaniya Das .halt_reg = 0x250a8, 954*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 955*a4f780cdSTaniya Das .clkr = { 956*a4f780cdSTaniya Das .enable_reg = 0x250a8, 957*a4f780cdSTaniya Das .enable_mask = BIT(0), 958*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 959*a4f780cdSTaniya Das .name = "se_gcc_emac1_rpcs_rx_clk", 960*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 961*a4f780cdSTaniya Das }, 962*a4f780cdSTaniya Das }, 963*a4f780cdSTaniya Das }; 964*a4f780cdSTaniya Das 965*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_rpcs_tx_clk = { 966*a4f780cdSTaniya Das .halt_reg = 0x250a4, 967*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 968*a4f780cdSTaniya Das .clkr = { 969*a4f780cdSTaniya Das .enable_reg = 0x250a4, 970*a4f780cdSTaniya Das .enable_mask = BIT(0), 971*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 972*a4f780cdSTaniya Das .name = "se_gcc_emac1_rpcs_tx_clk", 973*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 974*a4f780cdSTaniya Das }, 975*a4f780cdSTaniya Das }, 976*a4f780cdSTaniya Das }; 977*a4f780cdSTaniya Das 978*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_xgxs_rx_clk = { 979*a4f780cdSTaniya Das .halt_reg = 0x250b0, 980*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 981*a4f780cdSTaniya Das .clkr = { 982*a4f780cdSTaniya Das .enable_reg = 0x250b0, 983*a4f780cdSTaniya Das .enable_mask = BIT(0), 984*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 985*a4f780cdSTaniya Das .name = "se_gcc_emac1_xgxs_rx_clk", 986*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 987*a4f780cdSTaniya Das }, 988*a4f780cdSTaniya Das }, 989*a4f780cdSTaniya Das }; 990*a4f780cdSTaniya Das 991*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_xgxs_tx_clk = { 992*a4f780cdSTaniya Das .halt_reg = 0x250ac, 993*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 994*a4f780cdSTaniya Das .clkr = { 995*a4f780cdSTaniya Das .enable_reg = 0x250ac, 996*a4f780cdSTaniya Das .enable_mask = BIT(0), 997*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 998*a4f780cdSTaniya Das .name = "se_gcc_emac1_xgxs_tx_clk", 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 se_gcc_frq_measure_ref_clk = { 1005*a4f780cdSTaniya Das .halt_reg = 0x18008, 1006*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1007*a4f780cdSTaniya Das .clkr = { 1008*a4f780cdSTaniya Das .enable_reg = 0x18008, 1009*a4f780cdSTaniya Das .enable_mask = BIT(0), 1010*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1011*a4f780cdSTaniya Das .name = "se_gcc_frq_measure_ref_clk", 1012*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1013*a4f780cdSTaniya Das }, 1014*a4f780cdSTaniya Das }, 1015*a4f780cdSTaniya Das }; 1016*a4f780cdSTaniya Das 1017*a4f780cdSTaniya Das static struct clk_branch se_gcc_gp1_clk = { 1018*a4f780cdSTaniya Das .halt_reg = 0x19000, 1019*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1020*a4f780cdSTaniya Das .clkr = { 1021*a4f780cdSTaniya Das .enable_reg = 0x19000, 1022*a4f780cdSTaniya Das .enable_mask = BIT(0), 1023*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1024*a4f780cdSTaniya Das .name = "se_gcc_gp1_clk", 1025*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1026*a4f780cdSTaniya Das &se_gcc_gp1_clk_src.clkr.hw, 1027*a4f780cdSTaniya Das }, 1028*a4f780cdSTaniya Das .num_parents = 1, 1029*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1030*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1031*a4f780cdSTaniya Das }, 1032*a4f780cdSTaniya Das }, 1033*a4f780cdSTaniya Das }; 1034*a4f780cdSTaniya Das 1035*a4f780cdSTaniya Das static struct clk_branch se_gcc_gp2_clk = { 1036*a4f780cdSTaniya Das .halt_reg = 0x1a000, 1037*a4f780cdSTaniya Das .halt_check = BRANCH_HALT, 1038*a4f780cdSTaniya Das .clkr = { 1039*a4f780cdSTaniya Das .enable_reg = 0x1a000, 1040*a4f780cdSTaniya Das .enable_mask = BIT(0), 1041*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1042*a4f780cdSTaniya Das .name = "se_gcc_gp2_clk", 1043*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1044*a4f780cdSTaniya Das &se_gcc_gp2_clk_src.clkr.hw, 1045*a4f780cdSTaniya Das }, 1046*a4f780cdSTaniya Das .num_parents = 1, 1047*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1048*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1049*a4f780cdSTaniya Das }, 1050*a4f780cdSTaniya Das }, 1051*a4f780cdSTaniya Das }; 1052*a4f780cdSTaniya Das 1053*a4f780cdSTaniya Das static struct clk_branch se_gcc_mmu_2_tcu_vote_clk = { 1054*a4f780cdSTaniya Das .halt_reg = 0x57040, 1055*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1056*a4f780cdSTaniya Das .clkr = { 1057*a4f780cdSTaniya Das .enable_reg = 0x57040, 1058*a4f780cdSTaniya Das .enable_mask = BIT(0), 1059*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1060*a4f780cdSTaniya Das .name = "se_gcc_mmu_2_tcu_vote_clk", 1061*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1062*a4f780cdSTaniya Das }, 1063*a4f780cdSTaniya Das }, 1064*a4f780cdSTaniya Das }; 1065*a4f780cdSTaniya Das 1066*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_core_2x_clk = { 1067*a4f780cdSTaniya Das .halt_reg = 0x26020, 1068*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1069*a4f780cdSTaniya Das .clkr = { 1070*a4f780cdSTaniya Das .enable_reg = 0x57000, 1071*a4f780cdSTaniya Das .enable_mask = BIT(15), 1072*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1073*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_core_2x_clk", 1074*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1075*a4f780cdSTaniya Das }, 1076*a4f780cdSTaniya Das }, 1077*a4f780cdSTaniya Das }; 1078*a4f780cdSTaniya Das 1079*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_core_clk = { 1080*a4f780cdSTaniya Das .halt_reg = 0x2600c, 1081*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1082*a4f780cdSTaniya Das .clkr = { 1083*a4f780cdSTaniya Das .enable_reg = 0x57000, 1084*a4f780cdSTaniya Das .enable_mask = BIT(14), 1085*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1086*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_core_clk", 1087*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1088*a4f780cdSTaniya Das }, 1089*a4f780cdSTaniya Das }, 1090*a4f780cdSTaniya Das }; 1091*a4f780cdSTaniya Das 1092*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_m_ahb_clk = { 1093*a4f780cdSTaniya Das .halt_reg = 0x26004, 1094*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1095*a4f780cdSTaniya Das .hwcg_reg = 0x26004, 1096*a4f780cdSTaniya Das .hwcg_bit = 1, 1097*a4f780cdSTaniya Das .clkr = { 1098*a4f780cdSTaniya Das .enable_reg = 0x57000, 1099*a4f780cdSTaniya Das .enable_mask = BIT(12), 1100*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1101*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_m_ahb_clk", 1102*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1103*a4f780cdSTaniya Das }, 1104*a4f780cdSTaniya Das }, 1105*a4f780cdSTaniya Das }; 1106*a4f780cdSTaniya Das 1107*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s0_clk = { 1108*a4f780cdSTaniya Das .halt_reg = 0x2615c, 1109*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1110*a4f780cdSTaniya Das .clkr = { 1111*a4f780cdSTaniya Das .enable_reg = 0x57000, 1112*a4f780cdSTaniya Das .enable_mask = BIT(16), 1113*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1114*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s0_clk", 1115*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1116*a4f780cdSTaniya Das &se_gcc_qupv3_wrap0_s0_clk_src.clkr.hw, 1117*a4f780cdSTaniya Das }, 1118*a4f780cdSTaniya Das .num_parents = 1, 1119*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1120*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1121*a4f780cdSTaniya Das }, 1122*a4f780cdSTaniya Das }, 1123*a4f780cdSTaniya Das }; 1124*a4f780cdSTaniya Das 1125*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s1_clk = { 1126*a4f780cdSTaniya Das .halt_reg = 0x26298, 1127*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1128*a4f780cdSTaniya Das .clkr = { 1129*a4f780cdSTaniya Das .enable_reg = 0x57000, 1130*a4f780cdSTaniya Das .enable_mask = BIT(17), 1131*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1132*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s1_clk", 1133*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1134*a4f780cdSTaniya Das &se_gcc_qupv3_wrap0_s1_clk_src.clkr.hw, 1135*a4f780cdSTaniya Das }, 1136*a4f780cdSTaniya Das .num_parents = 1, 1137*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1138*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1139*a4f780cdSTaniya Das }, 1140*a4f780cdSTaniya Das }, 1141*a4f780cdSTaniya Das }; 1142*a4f780cdSTaniya Das 1143*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s2_clk = { 1144*a4f780cdSTaniya Das .halt_reg = 0x263d4, 1145*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1146*a4f780cdSTaniya Das .clkr = { 1147*a4f780cdSTaniya Das .enable_reg = 0x57000, 1148*a4f780cdSTaniya Das .enable_mask = BIT(18), 1149*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1150*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s2_clk", 1151*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1152*a4f780cdSTaniya Das &se_gcc_qupv3_wrap0_s2_clk_src.clkr.hw, 1153*a4f780cdSTaniya Das }, 1154*a4f780cdSTaniya Das .num_parents = 1, 1155*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1156*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1157*a4f780cdSTaniya Das }, 1158*a4f780cdSTaniya Das }, 1159*a4f780cdSTaniya Das }; 1160*a4f780cdSTaniya Das 1161*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s3_clk = { 1162*a4f780cdSTaniya Das .halt_reg = 0x26510, 1163*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1164*a4f780cdSTaniya Das .clkr = { 1165*a4f780cdSTaniya Das .enable_reg = 0x57000, 1166*a4f780cdSTaniya Das .enable_mask = BIT(19), 1167*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1168*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s3_clk", 1169*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1170*a4f780cdSTaniya Das &se_gcc_qupv3_wrap0_s3_clk_src.clkr.hw, 1171*a4f780cdSTaniya Das }, 1172*a4f780cdSTaniya Das .num_parents = 1, 1173*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1174*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1175*a4f780cdSTaniya Das }, 1176*a4f780cdSTaniya Das }, 1177*a4f780cdSTaniya Das }; 1178*a4f780cdSTaniya Das 1179*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s4_clk = { 1180*a4f780cdSTaniya Das .halt_reg = 0x2664c, 1181*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1182*a4f780cdSTaniya Das .clkr = { 1183*a4f780cdSTaniya Das .enable_reg = 0x57000, 1184*a4f780cdSTaniya Das .enable_mask = BIT(20), 1185*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1186*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s4_clk", 1187*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1188*a4f780cdSTaniya Das &se_gcc_qupv3_wrap0_s4_clk_src.clkr.hw, 1189*a4f780cdSTaniya Das }, 1190*a4f780cdSTaniya Das .num_parents = 1, 1191*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1192*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1193*a4f780cdSTaniya Das }, 1194*a4f780cdSTaniya Das }, 1195*a4f780cdSTaniya Das }; 1196*a4f780cdSTaniya Das 1197*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s5_clk = { 1198*a4f780cdSTaniya Das .halt_reg = 0x26788, 1199*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1200*a4f780cdSTaniya Das .clkr = { 1201*a4f780cdSTaniya Das .enable_reg = 0x57000, 1202*a4f780cdSTaniya Das .enable_mask = BIT(21), 1203*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1204*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s5_clk", 1205*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1206*a4f780cdSTaniya Das &se_gcc_qupv3_wrap0_s5_clk_src.clkr.hw, 1207*a4f780cdSTaniya Das }, 1208*a4f780cdSTaniya Das .num_parents = 1, 1209*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1210*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1211*a4f780cdSTaniya Das }, 1212*a4f780cdSTaniya Das }, 1213*a4f780cdSTaniya Das }; 1214*a4f780cdSTaniya Das 1215*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s6_clk = { 1216*a4f780cdSTaniya Das .halt_reg = 0x268c4, 1217*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1218*a4f780cdSTaniya Das .clkr = { 1219*a4f780cdSTaniya Das .enable_reg = 0x57000, 1220*a4f780cdSTaniya Das .enable_mask = BIT(22), 1221*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1222*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s6_clk", 1223*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1224*a4f780cdSTaniya Das &se_gcc_qupv3_wrap0_s6_clk_src.clkr.hw, 1225*a4f780cdSTaniya Das }, 1226*a4f780cdSTaniya Das .num_parents = 1, 1227*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1228*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1229*a4f780cdSTaniya Das }, 1230*a4f780cdSTaniya Das }, 1231*a4f780cdSTaniya Das }; 1232*a4f780cdSTaniya Das 1233*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s_ahb_clk = { 1234*a4f780cdSTaniya Das .halt_reg = 0x26008, 1235*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1236*a4f780cdSTaniya Das .hwcg_reg = 0x26008, 1237*a4f780cdSTaniya Das .hwcg_bit = 1, 1238*a4f780cdSTaniya Das .clkr = { 1239*a4f780cdSTaniya Das .enable_reg = 0x57000, 1240*a4f780cdSTaniya Das .enable_mask = BIT(13), 1241*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1242*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap0_s_ahb_clk", 1243*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1244*a4f780cdSTaniya Das }, 1245*a4f780cdSTaniya Das }, 1246*a4f780cdSTaniya Das }; 1247*a4f780cdSTaniya Das 1248*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_core_2x_clk = { 1249*a4f780cdSTaniya Das .halt_reg = 0x27020, 1250*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1251*a4f780cdSTaniya Das .clkr = { 1252*a4f780cdSTaniya Das .enable_reg = 0x57000, 1253*a4f780cdSTaniya Das .enable_mask = BIT(26), 1254*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1255*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_core_2x_clk", 1256*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1257*a4f780cdSTaniya Das }, 1258*a4f780cdSTaniya Das }, 1259*a4f780cdSTaniya Das }; 1260*a4f780cdSTaniya Das 1261*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_core_clk = { 1262*a4f780cdSTaniya Das .halt_reg = 0x2700c, 1263*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1264*a4f780cdSTaniya Das .clkr = { 1265*a4f780cdSTaniya Das .enable_reg = 0x57000, 1266*a4f780cdSTaniya Das .enable_mask = BIT(25), 1267*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1268*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_core_clk", 1269*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1270*a4f780cdSTaniya Das }, 1271*a4f780cdSTaniya Das }, 1272*a4f780cdSTaniya Das }; 1273*a4f780cdSTaniya Das 1274*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_m_ahb_clk = { 1275*a4f780cdSTaniya Das .halt_reg = 0x27004, 1276*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1277*a4f780cdSTaniya Das .hwcg_reg = 0x27004, 1278*a4f780cdSTaniya Das .hwcg_bit = 1, 1279*a4f780cdSTaniya Das .clkr = { 1280*a4f780cdSTaniya Das .enable_reg = 0x57000, 1281*a4f780cdSTaniya Das .enable_mask = BIT(23), 1282*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1283*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_m_ahb_clk", 1284*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1285*a4f780cdSTaniya Das }, 1286*a4f780cdSTaniya Das }, 1287*a4f780cdSTaniya Das }; 1288*a4f780cdSTaniya Das 1289*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s0_clk = { 1290*a4f780cdSTaniya Das .halt_reg = 0x2715c, 1291*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1292*a4f780cdSTaniya Das .clkr = { 1293*a4f780cdSTaniya Das .enable_reg = 0x57000, 1294*a4f780cdSTaniya Das .enable_mask = BIT(27), 1295*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1296*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s0_clk", 1297*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1298*a4f780cdSTaniya Das &se_gcc_qupv3_wrap1_s0_clk_src.clkr.hw, 1299*a4f780cdSTaniya Das }, 1300*a4f780cdSTaniya Das .num_parents = 1, 1301*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1302*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1303*a4f780cdSTaniya Das }, 1304*a4f780cdSTaniya Das }, 1305*a4f780cdSTaniya Das }; 1306*a4f780cdSTaniya Das 1307*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s1_clk = { 1308*a4f780cdSTaniya Das .halt_reg = 0x27298, 1309*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1310*a4f780cdSTaniya Das .clkr = { 1311*a4f780cdSTaniya Das .enable_reg = 0x57000, 1312*a4f780cdSTaniya Das .enable_mask = BIT(28), 1313*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1314*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s1_clk", 1315*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1316*a4f780cdSTaniya Das &se_gcc_qupv3_wrap1_s1_clk_src.clkr.hw, 1317*a4f780cdSTaniya Das }, 1318*a4f780cdSTaniya Das .num_parents = 1, 1319*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1320*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1321*a4f780cdSTaniya Das }, 1322*a4f780cdSTaniya Das }, 1323*a4f780cdSTaniya Das }; 1324*a4f780cdSTaniya Das 1325*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s2_clk = { 1326*a4f780cdSTaniya Das .halt_reg = 0x273d4, 1327*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1328*a4f780cdSTaniya Das .clkr = { 1329*a4f780cdSTaniya Das .enable_reg = 0x57000, 1330*a4f780cdSTaniya Das .enable_mask = BIT(29), 1331*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1332*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s2_clk", 1333*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1334*a4f780cdSTaniya Das &se_gcc_qupv3_wrap1_s2_clk_src.clkr.hw, 1335*a4f780cdSTaniya Das }, 1336*a4f780cdSTaniya Das .num_parents = 1, 1337*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1338*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1339*a4f780cdSTaniya Das }, 1340*a4f780cdSTaniya Das }, 1341*a4f780cdSTaniya Das }; 1342*a4f780cdSTaniya Das 1343*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s3_clk = { 1344*a4f780cdSTaniya Das .halt_reg = 0x27510, 1345*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1346*a4f780cdSTaniya Das .clkr = { 1347*a4f780cdSTaniya Das .enable_reg = 0x57000, 1348*a4f780cdSTaniya Das .enable_mask = BIT(30), 1349*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1350*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s3_clk", 1351*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1352*a4f780cdSTaniya Das &se_gcc_qupv3_wrap1_s3_clk_src.clkr.hw, 1353*a4f780cdSTaniya Das }, 1354*a4f780cdSTaniya Das .num_parents = 1, 1355*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1356*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1357*a4f780cdSTaniya Das }, 1358*a4f780cdSTaniya Das }, 1359*a4f780cdSTaniya Das }; 1360*a4f780cdSTaniya Das 1361*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s4_clk = { 1362*a4f780cdSTaniya Das .halt_reg = 0x2764c, 1363*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1364*a4f780cdSTaniya Das .clkr = { 1365*a4f780cdSTaniya Das .enable_reg = 0x57000, 1366*a4f780cdSTaniya Das .enable_mask = BIT(31), 1367*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1368*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s4_clk", 1369*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1370*a4f780cdSTaniya Das &se_gcc_qupv3_wrap1_s4_clk_src.clkr.hw, 1371*a4f780cdSTaniya Das }, 1372*a4f780cdSTaniya Das .num_parents = 1, 1373*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1374*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1375*a4f780cdSTaniya Das }, 1376*a4f780cdSTaniya Das }, 1377*a4f780cdSTaniya Das }; 1378*a4f780cdSTaniya Das 1379*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s5_clk = { 1380*a4f780cdSTaniya Das .halt_reg = 0x27788, 1381*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1382*a4f780cdSTaniya Das .clkr = { 1383*a4f780cdSTaniya Das .enable_reg = 0x57008, 1384*a4f780cdSTaniya Das .enable_mask = BIT(0), 1385*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1386*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s5_clk", 1387*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1388*a4f780cdSTaniya Das &se_gcc_qupv3_wrap1_s5_clk_src.clkr.hw, 1389*a4f780cdSTaniya Das }, 1390*a4f780cdSTaniya Das .num_parents = 1, 1391*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1392*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1393*a4f780cdSTaniya Das }, 1394*a4f780cdSTaniya Das }, 1395*a4f780cdSTaniya Das }; 1396*a4f780cdSTaniya Das 1397*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s6_clk = { 1398*a4f780cdSTaniya Das .halt_reg = 0x278c4, 1399*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1400*a4f780cdSTaniya Das .clkr = { 1401*a4f780cdSTaniya Das .enable_reg = 0x57008, 1402*a4f780cdSTaniya Das .enable_mask = BIT(1), 1403*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1404*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s6_clk", 1405*a4f780cdSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1406*a4f780cdSTaniya Das &se_gcc_qupv3_wrap1_s6_clk_src.clkr.hw, 1407*a4f780cdSTaniya Das }, 1408*a4f780cdSTaniya Das .num_parents = 1, 1409*a4f780cdSTaniya Das .flags = CLK_SET_RATE_PARENT, 1410*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1411*a4f780cdSTaniya Das }, 1412*a4f780cdSTaniya Das }, 1413*a4f780cdSTaniya Das }; 1414*a4f780cdSTaniya Das 1415*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s_ahb_clk = { 1416*a4f780cdSTaniya Das .halt_reg = 0x27008, 1417*a4f780cdSTaniya Das .halt_check = BRANCH_HALT_VOTED, 1418*a4f780cdSTaniya Das .hwcg_reg = 0x27008, 1419*a4f780cdSTaniya Das .hwcg_bit = 1, 1420*a4f780cdSTaniya Das .clkr = { 1421*a4f780cdSTaniya Das .enable_reg = 0x57000, 1422*a4f780cdSTaniya Das .enable_mask = BIT(24), 1423*a4f780cdSTaniya Das .hw.init = &(const struct clk_init_data) { 1424*a4f780cdSTaniya Das .name = "se_gcc_qupv3_wrap1_s_ahb_clk", 1425*a4f780cdSTaniya Das .ops = &clk_branch2_ops, 1426*a4f780cdSTaniya Das }, 1427*a4f780cdSTaniya Das }, 1428*a4f780cdSTaniya Das }; 1429*a4f780cdSTaniya Das 1430*a4f780cdSTaniya Das static struct gdsc se_gcc_emac0_gdsc = { 1431*a4f780cdSTaniya Das .gdscr = 0x24004, 1432*a4f780cdSTaniya Das .en_rest_wait_val = 0x2, 1433*a4f780cdSTaniya Das .en_few_wait_val = 0x2, 1434*a4f780cdSTaniya Das .clk_dis_wait_val = 0xf, 1435*a4f780cdSTaniya Das .pd = { 1436*a4f780cdSTaniya Das .name = "se_gcc_emac0_gdsc", 1437*a4f780cdSTaniya Das }, 1438*a4f780cdSTaniya Das .pwrsts = PWRSTS_OFF_ON, 1439*a4f780cdSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 1440*a4f780cdSTaniya Das }; 1441*a4f780cdSTaniya Das 1442*a4f780cdSTaniya Das static struct gdsc se_gcc_emac1_gdsc = { 1443*a4f780cdSTaniya Das .gdscr = 0x25004, 1444*a4f780cdSTaniya Das .en_rest_wait_val = 0x2, 1445*a4f780cdSTaniya Das .en_few_wait_val = 0x2, 1446*a4f780cdSTaniya Das .clk_dis_wait_val = 0xf, 1447*a4f780cdSTaniya Das .pd = { 1448*a4f780cdSTaniya Das .name = "se_gcc_emac1_gdsc", 1449*a4f780cdSTaniya Das }, 1450*a4f780cdSTaniya Das .pwrsts = PWRSTS_OFF_ON, 1451*a4f780cdSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 1452*a4f780cdSTaniya Das }; 1453*a4f780cdSTaniya Das 1454*a4f780cdSTaniya Das static struct clk_regmap *se_gcc_nord_clocks[] = { 1455*a4f780cdSTaniya Das [SE_GCC_EEE_EMAC0_CLK] = &se_gcc_eee_emac0_clk.clkr, 1456*a4f780cdSTaniya Das [SE_GCC_EEE_EMAC0_CLK_SRC] = &se_gcc_eee_emac0_clk_src.clkr, 1457*a4f780cdSTaniya Das [SE_GCC_EEE_EMAC1_CLK] = &se_gcc_eee_emac1_clk.clkr, 1458*a4f780cdSTaniya Das [SE_GCC_EEE_EMAC1_CLK_SRC] = &se_gcc_eee_emac1_clk_src.clkr, 1459*a4f780cdSTaniya Das [SE_GCC_EMAC0_AXI_CLK] = &se_gcc_emac0_axi_clk.clkr, 1460*a4f780cdSTaniya Das [SE_GCC_EMAC0_CC_SGMIIPHY_RX_CLK] = &se_gcc_emac0_cc_sgmiiphy_rx_clk.clkr, 1461*a4f780cdSTaniya Das [SE_GCC_EMAC0_CC_SGMIIPHY_TX_CLK] = &se_gcc_emac0_cc_sgmiiphy_tx_clk.clkr, 1462*a4f780cdSTaniya Das [SE_GCC_EMAC0_PHY_AUX_CLK] = &se_gcc_emac0_phy_aux_clk.clkr, 1463*a4f780cdSTaniya Das [SE_GCC_EMAC0_PHY_AUX_CLK_SRC] = &se_gcc_emac0_phy_aux_clk_src.clkr, 1464*a4f780cdSTaniya Das [SE_GCC_EMAC0_PTP_CLK] = &se_gcc_emac0_ptp_clk.clkr, 1465*a4f780cdSTaniya Das [SE_GCC_EMAC0_PTP_CLK_SRC] = &se_gcc_emac0_ptp_clk_src.clkr, 1466*a4f780cdSTaniya Das [SE_GCC_EMAC0_RGMII_CLK] = &se_gcc_emac0_rgmii_clk.clkr, 1467*a4f780cdSTaniya Das [SE_GCC_EMAC0_RGMII_CLK_SRC] = &se_gcc_emac0_rgmii_clk_src.clkr, 1468*a4f780cdSTaniya Das [SE_GCC_EMAC0_RPCS_RX_CLK] = &se_gcc_emac0_rpcs_rx_clk.clkr, 1469*a4f780cdSTaniya Das [SE_GCC_EMAC0_RPCS_TX_CLK] = &se_gcc_emac0_rpcs_tx_clk.clkr, 1470*a4f780cdSTaniya Das [SE_GCC_EMAC0_XGXS_RX_CLK] = &se_gcc_emac0_xgxs_rx_clk.clkr, 1471*a4f780cdSTaniya Das [SE_GCC_EMAC0_XGXS_TX_CLK] = &se_gcc_emac0_xgxs_tx_clk.clkr, 1472*a4f780cdSTaniya Das [SE_GCC_EMAC1_AXI_CLK] = &se_gcc_emac1_axi_clk.clkr, 1473*a4f780cdSTaniya Das [SE_GCC_EMAC1_CC_SGMIIPHY_RX_CLK] = &se_gcc_emac1_cc_sgmiiphy_rx_clk.clkr, 1474*a4f780cdSTaniya Das [SE_GCC_EMAC1_CC_SGMIIPHY_TX_CLK] = &se_gcc_emac1_cc_sgmiiphy_tx_clk.clkr, 1475*a4f780cdSTaniya Das [SE_GCC_EMAC1_PHY_AUX_CLK] = &se_gcc_emac1_phy_aux_clk.clkr, 1476*a4f780cdSTaniya Das [SE_GCC_EMAC1_PHY_AUX_CLK_SRC] = &se_gcc_emac1_phy_aux_clk_src.clkr, 1477*a4f780cdSTaniya Das [SE_GCC_EMAC1_PTP_CLK] = &se_gcc_emac1_ptp_clk.clkr, 1478*a4f780cdSTaniya Das [SE_GCC_EMAC1_PTP_CLK_SRC] = &se_gcc_emac1_ptp_clk_src.clkr, 1479*a4f780cdSTaniya Das [SE_GCC_EMAC1_RGMII_CLK] = &se_gcc_emac1_rgmii_clk.clkr, 1480*a4f780cdSTaniya Das [SE_GCC_EMAC1_RGMII_CLK_SRC] = &se_gcc_emac1_rgmii_clk_src.clkr, 1481*a4f780cdSTaniya Das [SE_GCC_EMAC1_RPCS_RX_CLK] = &se_gcc_emac1_rpcs_rx_clk.clkr, 1482*a4f780cdSTaniya Das [SE_GCC_EMAC1_RPCS_TX_CLK] = &se_gcc_emac1_rpcs_tx_clk.clkr, 1483*a4f780cdSTaniya Das [SE_GCC_EMAC1_XGXS_RX_CLK] = &se_gcc_emac1_xgxs_rx_clk.clkr, 1484*a4f780cdSTaniya Das [SE_GCC_EMAC1_XGXS_TX_CLK] = &se_gcc_emac1_xgxs_tx_clk.clkr, 1485*a4f780cdSTaniya Das [SE_GCC_FRQ_MEASURE_REF_CLK] = &se_gcc_frq_measure_ref_clk.clkr, 1486*a4f780cdSTaniya Das [SE_GCC_GP1_CLK] = &se_gcc_gp1_clk.clkr, 1487*a4f780cdSTaniya Das [SE_GCC_GP1_CLK_SRC] = &se_gcc_gp1_clk_src.clkr, 1488*a4f780cdSTaniya Das [SE_GCC_GP2_CLK] = &se_gcc_gp2_clk.clkr, 1489*a4f780cdSTaniya Das [SE_GCC_GP2_CLK_SRC] = &se_gcc_gp2_clk_src.clkr, 1490*a4f780cdSTaniya Das [SE_GCC_GPLL0] = &se_gcc_gpll0.clkr, 1491*a4f780cdSTaniya Das [SE_GCC_GPLL0_OUT_EVEN] = &se_gcc_gpll0_out_even.clkr, 1492*a4f780cdSTaniya Das [SE_GCC_GPLL2] = &se_gcc_gpll2.clkr, 1493*a4f780cdSTaniya Das [SE_GCC_GPLL4] = &se_gcc_gpll4.clkr, 1494*a4f780cdSTaniya Das [SE_GCC_GPLL5] = &se_gcc_gpll5.clkr, 1495*a4f780cdSTaniya Das [SE_GCC_MMU_2_TCU_VOTE_CLK] = &se_gcc_mmu_2_tcu_vote_clk.clkr, 1496*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_CORE_2X_CLK] = &se_gcc_qupv3_wrap0_core_2x_clk.clkr, 1497*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_CORE_CLK] = &se_gcc_qupv3_wrap0_core_clk.clkr, 1498*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_M_AHB_CLK] = &se_gcc_qupv3_wrap0_m_ahb_clk.clkr, 1499*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S0_CLK] = &se_gcc_qupv3_wrap0_s0_clk.clkr, 1500*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S0_CLK_SRC] = &se_gcc_qupv3_wrap0_s0_clk_src.clkr, 1501*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S1_CLK] = &se_gcc_qupv3_wrap0_s1_clk.clkr, 1502*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S1_CLK_SRC] = &se_gcc_qupv3_wrap0_s1_clk_src.clkr, 1503*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S2_CLK] = &se_gcc_qupv3_wrap0_s2_clk.clkr, 1504*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S2_CLK_SRC] = &se_gcc_qupv3_wrap0_s2_clk_src.clkr, 1505*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S3_CLK] = &se_gcc_qupv3_wrap0_s3_clk.clkr, 1506*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S3_CLK_SRC] = &se_gcc_qupv3_wrap0_s3_clk_src.clkr, 1507*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S4_CLK] = &se_gcc_qupv3_wrap0_s4_clk.clkr, 1508*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S4_CLK_SRC] = &se_gcc_qupv3_wrap0_s4_clk_src.clkr, 1509*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S5_CLK] = &se_gcc_qupv3_wrap0_s5_clk.clkr, 1510*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S5_CLK_SRC] = &se_gcc_qupv3_wrap0_s5_clk_src.clkr, 1511*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S6_CLK] = &se_gcc_qupv3_wrap0_s6_clk.clkr, 1512*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S6_CLK_SRC] = &se_gcc_qupv3_wrap0_s6_clk_src.clkr, 1513*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP0_S_AHB_CLK] = &se_gcc_qupv3_wrap0_s_ahb_clk.clkr, 1514*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_CORE_2X_CLK] = &se_gcc_qupv3_wrap1_core_2x_clk.clkr, 1515*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_CORE_CLK] = &se_gcc_qupv3_wrap1_core_clk.clkr, 1516*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_M_AHB_CLK] = &se_gcc_qupv3_wrap1_m_ahb_clk.clkr, 1517*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S0_CLK] = &se_gcc_qupv3_wrap1_s0_clk.clkr, 1518*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S0_CLK_SRC] = &se_gcc_qupv3_wrap1_s0_clk_src.clkr, 1519*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S1_CLK] = &se_gcc_qupv3_wrap1_s1_clk.clkr, 1520*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S1_CLK_SRC] = &se_gcc_qupv3_wrap1_s1_clk_src.clkr, 1521*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S2_CLK] = &se_gcc_qupv3_wrap1_s2_clk.clkr, 1522*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S2_CLK_SRC] = &se_gcc_qupv3_wrap1_s2_clk_src.clkr, 1523*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S3_CLK] = &se_gcc_qupv3_wrap1_s3_clk.clkr, 1524*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S3_CLK_SRC] = &se_gcc_qupv3_wrap1_s3_clk_src.clkr, 1525*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S4_CLK] = &se_gcc_qupv3_wrap1_s4_clk.clkr, 1526*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S4_CLK_SRC] = &se_gcc_qupv3_wrap1_s4_clk_src.clkr, 1527*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S5_CLK] = &se_gcc_qupv3_wrap1_s5_clk.clkr, 1528*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S5_CLK_SRC] = &se_gcc_qupv3_wrap1_s5_clk_src.clkr, 1529*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S6_CLK] = &se_gcc_qupv3_wrap1_s6_clk.clkr, 1530*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S6_CLK_SRC] = &se_gcc_qupv3_wrap1_s6_clk_src.clkr, 1531*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAP1_S_AHB_CLK] = &se_gcc_qupv3_wrap1_s_ahb_clk.clkr, 1532*a4f780cdSTaniya Das }; 1533*a4f780cdSTaniya Das 1534*a4f780cdSTaniya Das static struct gdsc *se_gcc_nord_gdscs[] = { 1535*a4f780cdSTaniya Das [SE_GCC_EMAC0_GDSC] = &se_gcc_emac0_gdsc, 1536*a4f780cdSTaniya Das [SE_GCC_EMAC1_GDSC] = &se_gcc_emac1_gdsc, 1537*a4f780cdSTaniya Das }; 1538*a4f780cdSTaniya Das 1539*a4f780cdSTaniya Das static const struct qcom_reset_map se_gcc_nord_resets[] = { 1540*a4f780cdSTaniya Das [SE_GCC_EMAC0_BCR] = { 0x24000 }, 1541*a4f780cdSTaniya Das [SE_GCC_EMAC1_BCR] = { 0x25000 }, 1542*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAPPER_0_BCR] = { 0x26000 }, 1543*a4f780cdSTaniya Das [SE_GCC_QUPV3_WRAPPER_1_BCR] = { 0x27000 }, 1544*a4f780cdSTaniya Das }; 1545*a4f780cdSTaniya Das 1546*a4f780cdSTaniya Das static const struct clk_rcg_dfs_data se_gcc_nord_dfs_clocks[] = { 1547*a4f780cdSTaniya Das DEFINE_RCG_DFS(se_gcc_qupv3_wrap0_s0_clk_src), 1548*a4f780cdSTaniya Das DEFINE_RCG_DFS(se_gcc_qupv3_wrap0_s1_clk_src), 1549*a4f780cdSTaniya Das DEFINE_RCG_DFS(se_gcc_qupv3_wrap0_s2_clk_src), 1550*a4f780cdSTaniya Das DEFINE_RCG_DFS(se_gcc_qupv3_wrap0_s3_clk_src), 1551*a4f780cdSTaniya Das DEFINE_RCG_DFS(se_gcc_qupv3_wrap0_s4_clk_src), 1552*a4f780cdSTaniya Das DEFINE_RCG_DFS(se_gcc_qupv3_wrap0_s5_clk_src), 1553*a4f780cdSTaniya Das DEFINE_RCG_DFS(se_gcc_qupv3_wrap0_s6_clk_src), 1554*a4f780cdSTaniya Das DEFINE_RCG_DFS(se_gcc_qupv3_wrap1_s0_clk_src), 1555*a4f780cdSTaniya Das DEFINE_RCG_DFS(se_gcc_qupv3_wrap1_s1_clk_src), 1556*a4f780cdSTaniya Das DEFINE_RCG_DFS(se_gcc_qupv3_wrap1_s2_clk_src), 1557*a4f780cdSTaniya Das DEFINE_RCG_DFS(se_gcc_qupv3_wrap1_s3_clk_src), 1558*a4f780cdSTaniya Das DEFINE_RCG_DFS(se_gcc_qupv3_wrap1_s4_clk_src), 1559*a4f780cdSTaniya Das DEFINE_RCG_DFS(se_gcc_qupv3_wrap1_s5_clk_src), 1560*a4f780cdSTaniya Das DEFINE_RCG_DFS(se_gcc_qupv3_wrap1_s6_clk_src), 1561*a4f780cdSTaniya Das }; 1562*a4f780cdSTaniya Das 1563*a4f780cdSTaniya Das static const struct regmap_config se_gcc_nord_regmap_config = { 1564*a4f780cdSTaniya Das .reg_bits = 32, 1565*a4f780cdSTaniya Das .reg_stride = 4, 1566*a4f780cdSTaniya Das .val_bits = 32, 1567*a4f780cdSTaniya Das .max_register = 0xf41f0, 1568*a4f780cdSTaniya Das .fast_io = true, 1569*a4f780cdSTaniya Das }; 1570*a4f780cdSTaniya Das 1571*a4f780cdSTaniya Das static struct qcom_cc_driver_data se_gcc_nord_driver_data = { 1572*a4f780cdSTaniya Das .dfs_rcgs = se_gcc_nord_dfs_clocks, 1573*a4f780cdSTaniya Das .num_dfs_rcgs = ARRAY_SIZE(se_gcc_nord_dfs_clocks), 1574*a4f780cdSTaniya Das }; 1575*a4f780cdSTaniya Das 1576*a4f780cdSTaniya Das static const struct qcom_cc_desc se_gcc_nord_desc = { 1577*a4f780cdSTaniya Das .config = &se_gcc_nord_regmap_config, 1578*a4f780cdSTaniya Das .clks = se_gcc_nord_clocks, 1579*a4f780cdSTaniya Das .num_clks = ARRAY_SIZE(se_gcc_nord_clocks), 1580*a4f780cdSTaniya Das .resets = se_gcc_nord_resets, 1581*a4f780cdSTaniya Das .num_resets = ARRAY_SIZE(se_gcc_nord_resets), 1582*a4f780cdSTaniya Das .gdscs = se_gcc_nord_gdscs, 1583*a4f780cdSTaniya Das .num_gdscs = ARRAY_SIZE(se_gcc_nord_gdscs), 1584*a4f780cdSTaniya Das .driver_data = &se_gcc_nord_driver_data, 1585*a4f780cdSTaniya Das }; 1586*a4f780cdSTaniya Das 1587*a4f780cdSTaniya Das static const struct of_device_id se_gcc_nord_match_table[] = { 1588*a4f780cdSTaniya Das { .compatible = "qcom,nord-segcc" }, 1589*a4f780cdSTaniya Das { } 1590*a4f780cdSTaniya Das }; 1591*a4f780cdSTaniya Das MODULE_DEVICE_TABLE(of, se_gcc_nord_match_table); 1592*a4f780cdSTaniya Das 1593*a4f780cdSTaniya Das static int se_gcc_nord_probe(struct platform_device *pdev) 1594*a4f780cdSTaniya Das { 1595*a4f780cdSTaniya Das return qcom_cc_probe(pdev, &se_gcc_nord_desc); 1596*a4f780cdSTaniya Das } 1597*a4f780cdSTaniya Das 1598*a4f780cdSTaniya Das static struct platform_driver se_gcc_nord_driver = { 1599*a4f780cdSTaniya Das .probe = se_gcc_nord_probe, 1600*a4f780cdSTaniya Das .driver = { 1601*a4f780cdSTaniya Das .name = "segcc-nord", 1602*a4f780cdSTaniya Das .of_match_table = se_gcc_nord_match_table, 1603*a4f780cdSTaniya Das }, 1604*a4f780cdSTaniya Das }; 1605*a4f780cdSTaniya Das 1606*a4f780cdSTaniya Das module_platform_driver(se_gcc_nord_driver); 1607*a4f780cdSTaniya Das 1608*a4f780cdSTaniya Das MODULE_DESCRIPTION("QTI SEGCC NORD Driver"); 1609*a4f780cdSTaniya Das MODULE_LICENSE("GPL"); 1610