1*67121dadSVivek Aknurwar // SPDX-License-Identifier: GPL-2.0-only 2*67121dadSVivek Aknurwar /* 3*67121dadSVivek Aknurwar * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. 4*67121dadSVivek Aknurwar */ 5*67121dadSVivek Aknurwar 6*67121dadSVivek Aknurwar #include <linux/clk-provider.h> 7*67121dadSVivek Aknurwar #include <linux/mod_devicetable.h> 8*67121dadSVivek Aknurwar #include <linux/module.h> 9*67121dadSVivek Aknurwar #include <linux/of.h> 10*67121dadSVivek Aknurwar #include <linux/platform_device.h> 11*67121dadSVivek Aknurwar #include <linux/regmap.h> 12*67121dadSVivek Aknurwar 13*67121dadSVivek Aknurwar #include <dt-bindings/clock/qcom,hawi-gcc.h> 14*67121dadSVivek Aknurwar 15*67121dadSVivek Aknurwar #include "clk-alpha-pll.h" 16*67121dadSVivek Aknurwar #include "clk-branch.h" 17*67121dadSVivek Aknurwar #include "clk-pll.h" 18*67121dadSVivek Aknurwar #include "clk-rcg.h" 19*67121dadSVivek Aknurwar #include "clk-regmap.h" 20*67121dadSVivek Aknurwar #include "clk-regmap-divider.h" 21*67121dadSVivek Aknurwar #include "clk-regmap-mux.h" 22*67121dadSVivek Aknurwar #include "clk-regmap-phy-mux.h" 23*67121dadSVivek Aknurwar #include "common.h" 24*67121dadSVivek Aknurwar #include "gdsc.h" 25*67121dadSVivek Aknurwar #include "reset.h" 26*67121dadSVivek Aknurwar 27*67121dadSVivek Aknurwar enum { 28*67121dadSVivek Aknurwar DT_BI_TCXO, 29*67121dadSVivek Aknurwar DT_BI_TCXO_AO, 30*67121dadSVivek Aknurwar DT_SLEEP_CLK, 31*67121dadSVivek Aknurwar DT_PCIE_0_PIPE_CLK, 32*67121dadSVivek Aknurwar DT_PCIE_1_PIPE_CLK, 33*67121dadSVivek Aknurwar DT_UFS_PHY_RX_SYMBOL_0_CLK, 34*67121dadSVivek Aknurwar DT_UFS_PHY_RX_SYMBOL_1_CLK, 35*67121dadSVivek Aknurwar DT_UFS_PHY_TX_SYMBOL_0_CLK, 36*67121dadSVivek Aknurwar DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 37*67121dadSVivek Aknurwar }; 38*67121dadSVivek Aknurwar 39*67121dadSVivek Aknurwar enum { 40*67121dadSVivek Aknurwar P_BI_TCXO, 41*67121dadSVivek Aknurwar P_GCC_GPLL0_OUT_EVEN, 42*67121dadSVivek Aknurwar P_GCC_GPLL0_OUT_MAIN, 43*67121dadSVivek Aknurwar P_GCC_GPLL4_OUT_MAIN, 44*67121dadSVivek Aknurwar P_GCC_GPLL5_OUT_MAIN, 45*67121dadSVivek Aknurwar P_GCC_GPLL7_OUT_MAIN, 46*67121dadSVivek Aknurwar P_GCC_GPLL9_OUT_MAIN, 47*67121dadSVivek Aknurwar P_PCIE_0_PIPE_CLK, 48*67121dadSVivek Aknurwar P_PCIE_1_PIPE_CLK, 49*67121dadSVivek Aknurwar P_SLEEP_CLK, 50*67121dadSVivek Aknurwar P_UFS_PHY_RX_SYMBOL_0_CLK, 51*67121dadSVivek Aknurwar P_UFS_PHY_RX_SYMBOL_1_CLK, 52*67121dadSVivek Aknurwar P_UFS_PHY_TX_SYMBOL_0_CLK, 53*67121dadSVivek Aknurwar P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 54*67121dadSVivek Aknurwar }; 55*67121dadSVivek Aknurwar 56*67121dadSVivek Aknurwar static struct clk_alpha_pll gcc_gpll0 = { 57*67121dadSVivek Aknurwar .offset = 0x0, 58*67121dadSVivek Aknurwar .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T], 59*67121dadSVivek Aknurwar .clkr = { 60*67121dadSVivek Aknurwar .enable_reg = 0x52028, 61*67121dadSVivek Aknurwar .enable_mask = BIT(0), 62*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 63*67121dadSVivek Aknurwar .name = "gcc_gpll0", 64*67121dadSVivek Aknurwar .parent_data = &(const struct clk_parent_data) { 65*67121dadSVivek Aknurwar .index = DT_BI_TCXO, 66*67121dadSVivek Aknurwar }, 67*67121dadSVivek Aknurwar .num_parents = 1, 68*67121dadSVivek Aknurwar .ops = &clk_alpha_pll_fixed_taycan_eha_t_ops, 69*67121dadSVivek Aknurwar }, 70*67121dadSVivek Aknurwar }, 71*67121dadSVivek Aknurwar }; 72*67121dadSVivek Aknurwar 73*67121dadSVivek Aknurwar static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = { 74*67121dadSVivek Aknurwar { 0x1, 2 }, 75*67121dadSVivek Aknurwar { } 76*67121dadSVivek Aknurwar }; 77*67121dadSVivek Aknurwar 78*67121dadSVivek Aknurwar static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = { 79*67121dadSVivek Aknurwar .offset = 0x0, 80*67121dadSVivek Aknurwar .post_div_shift = 10, 81*67121dadSVivek Aknurwar .post_div_table = post_div_table_gcc_gpll0_out_even, 82*67121dadSVivek Aknurwar .num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even), 83*67121dadSVivek Aknurwar .width = 4, 84*67121dadSVivek Aknurwar .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T], 85*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 86*67121dadSVivek Aknurwar .name = "gcc_gpll0_out_even", 87*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 88*67121dadSVivek Aknurwar &gcc_gpll0.clkr.hw, 89*67121dadSVivek Aknurwar }, 90*67121dadSVivek Aknurwar .num_parents = 1, 91*67121dadSVivek Aknurwar .ops = &clk_alpha_pll_postdiv_taycan_eha_t_ops, 92*67121dadSVivek Aknurwar }, 93*67121dadSVivek Aknurwar }; 94*67121dadSVivek Aknurwar 95*67121dadSVivek Aknurwar static struct clk_alpha_pll gcc_gpll4 = { 96*67121dadSVivek Aknurwar .offset = 0x4000, 97*67121dadSVivek Aknurwar .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T], 98*67121dadSVivek Aknurwar .clkr = { 99*67121dadSVivek Aknurwar .enable_reg = 0x52028, 100*67121dadSVivek Aknurwar .enable_mask = BIT(4), 101*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 102*67121dadSVivek Aknurwar .name = "gcc_gpll4", 103*67121dadSVivek Aknurwar .parent_data = &(const struct clk_parent_data) { 104*67121dadSVivek Aknurwar .index = DT_BI_TCXO, 105*67121dadSVivek Aknurwar }, 106*67121dadSVivek Aknurwar .num_parents = 1, 107*67121dadSVivek Aknurwar .ops = &clk_alpha_pll_fixed_taycan_eha_t_ops, 108*67121dadSVivek Aknurwar }, 109*67121dadSVivek Aknurwar }, 110*67121dadSVivek Aknurwar }; 111*67121dadSVivek Aknurwar 112*67121dadSVivek Aknurwar static struct clk_alpha_pll gcc_gpll5 = { 113*67121dadSVivek Aknurwar .offset = 0x5000, 114*67121dadSVivek Aknurwar .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T], 115*67121dadSVivek Aknurwar .clkr = { 116*67121dadSVivek Aknurwar .enable_reg = 0x52028, 117*67121dadSVivek Aknurwar .enable_mask = BIT(5), 118*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 119*67121dadSVivek Aknurwar .name = "gcc_gpll5", 120*67121dadSVivek Aknurwar .parent_data = &(const struct clk_parent_data) { 121*67121dadSVivek Aknurwar .index = DT_BI_TCXO, 122*67121dadSVivek Aknurwar }, 123*67121dadSVivek Aknurwar .num_parents = 1, 124*67121dadSVivek Aknurwar .ops = &clk_alpha_pll_fixed_taycan_eha_t_ops, 125*67121dadSVivek Aknurwar }, 126*67121dadSVivek Aknurwar }, 127*67121dadSVivek Aknurwar }; 128*67121dadSVivek Aknurwar 129*67121dadSVivek Aknurwar static struct clk_alpha_pll gcc_gpll7 = { 130*67121dadSVivek Aknurwar .offset = 0x7000, 131*67121dadSVivek Aknurwar .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T], 132*67121dadSVivek Aknurwar .clkr = { 133*67121dadSVivek Aknurwar .enable_reg = 0x52028, 134*67121dadSVivek Aknurwar .enable_mask = BIT(7), 135*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 136*67121dadSVivek Aknurwar .name = "gcc_gpll7", 137*67121dadSVivek Aknurwar .parent_data = &(const struct clk_parent_data) { 138*67121dadSVivek Aknurwar .index = DT_BI_TCXO, 139*67121dadSVivek Aknurwar }, 140*67121dadSVivek Aknurwar .num_parents = 1, 141*67121dadSVivek Aknurwar .ops = &clk_alpha_pll_fixed_taycan_eha_t_ops, 142*67121dadSVivek Aknurwar }, 143*67121dadSVivek Aknurwar }, 144*67121dadSVivek Aknurwar }; 145*67121dadSVivek Aknurwar 146*67121dadSVivek Aknurwar static struct clk_alpha_pll gcc_gpll9 = { 147*67121dadSVivek Aknurwar .offset = 0x9000, 148*67121dadSVivek Aknurwar .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T], 149*67121dadSVivek Aknurwar .clkr = { 150*67121dadSVivek Aknurwar .enable_reg = 0x52028, 151*67121dadSVivek Aknurwar .enable_mask = BIT(9), 152*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 153*67121dadSVivek Aknurwar .name = "gcc_gpll9", 154*67121dadSVivek Aknurwar .parent_data = &(const struct clk_parent_data) { 155*67121dadSVivek Aknurwar .index = DT_BI_TCXO, 156*67121dadSVivek Aknurwar }, 157*67121dadSVivek Aknurwar .num_parents = 1, 158*67121dadSVivek Aknurwar .ops = &clk_alpha_pll_fixed_taycan_eha_t_ops, 159*67121dadSVivek Aknurwar }, 160*67121dadSVivek Aknurwar }, 161*67121dadSVivek Aknurwar }; 162*67121dadSVivek Aknurwar 163*67121dadSVivek Aknurwar static const struct parent_map gcc_parent_map_0[] = { 164*67121dadSVivek Aknurwar { P_BI_TCXO, 0 }, 165*67121dadSVivek Aknurwar { P_GCC_GPLL0_OUT_MAIN, 1 }, 166*67121dadSVivek Aknurwar { P_GCC_GPLL0_OUT_EVEN, 6 }, 167*67121dadSVivek Aknurwar }; 168*67121dadSVivek Aknurwar 169*67121dadSVivek Aknurwar static const struct clk_parent_data gcc_parent_data_0[] = { 170*67121dadSVivek Aknurwar { .index = DT_BI_TCXO }, 171*67121dadSVivek Aknurwar { .hw = &gcc_gpll0.clkr.hw }, 172*67121dadSVivek Aknurwar { .hw = &gcc_gpll0_out_even.clkr.hw }, 173*67121dadSVivek Aknurwar }; 174*67121dadSVivek Aknurwar 175*67121dadSVivek Aknurwar static const struct parent_map gcc_parent_map_1[] = { 176*67121dadSVivek Aknurwar { P_BI_TCXO, 0 }, 177*67121dadSVivek Aknurwar { P_GCC_GPLL0_OUT_MAIN, 1 }, 178*67121dadSVivek Aknurwar { P_GCC_GPLL7_OUT_MAIN, 2 }, 179*67121dadSVivek Aknurwar { P_GCC_GPLL0_OUT_EVEN, 6 }, 180*67121dadSVivek Aknurwar }; 181*67121dadSVivek Aknurwar 182*67121dadSVivek Aknurwar static const struct clk_parent_data gcc_parent_data_1[] = { 183*67121dadSVivek Aknurwar { .index = DT_BI_TCXO }, 184*67121dadSVivek Aknurwar { .hw = &gcc_gpll0.clkr.hw }, 185*67121dadSVivek Aknurwar { .hw = &gcc_gpll7.clkr.hw }, 186*67121dadSVivek Aknurwar { .hw = &gcc_gpll0_out_even.clkr.hw }, 187*67121dadSVivek Aknurwar }; 188*67121dadSVivek Aknurwar 189*67121dadSVivek Aknurwar static const struct parent_map gcc_parent_map_2[] = { 190*67121dadSVivek Aknurwar { P_BI_TCXO, 0 }, 191*67121dadSVivek Aknurwar { P_GCC_GPLL0_OUT_MAIN, 1 }, 192*67121dadSVivek Aknurwar { P_SLEEP_CLK, 5 }, 193*67121dadSVivek Aknurwar { P_GCC_GPLL0_OUT_EVEN, 6 }, 194*67121dadSVivek Aknurwar }; 195*67121dadSVivek Aknurwar 196*67121dadSVivek Aknurwar static const struct clk_parent_data gcc_parent_data_2[] = { 197*67121dadSVivek Aknurwar { .index = DT_BI_TCXO }, 198*67121dadSVivek Aknurwar { .hw = &gcc_gpll0.clkr.hw }, 199*67121dadSVivek Aknurwar { .index = DT_SLEEP_CLK }, 200*67121dadSVivek Aknurwar { .hw = &gcc_gpll0_out_even.clkr.hw }, 201*67121dadSVivek Aknurwar }; 202*67121dadSVivek Aknurwar 203*67121dadSVivek Aknurwar static const struct parent_map gcc_parent_map_3[] = { 204*67121dadSVivek Aknurwar { P_BI_TCXO, 0 }, 205*67121dadSVivek Aknurwar }; 206*67121dadSVivek Aknurwar 207*67121dadSVivek Aknurwar static const struct clk_parent_data gcc_parent_data_3[] = { 208*67121dadSVivek Aknurwar { .index = DT_BI_TCXO }, 209*67121dadSVivek Aknurwar }; 210*67121dadSVivek Aknurwar 211*67121dadSVivek Aknurwar static const struct parent_map gcc_parent_map_4[] = { 212*67121dadSVivek Aknurwar { P_BI_TCXO, 0 }, 213*67121dadSVivek Aknurwar { P_SLEEP_CLK, 5 }, 214*67121dadSVivek Aknurwar }; 215*67121dadSVivek Aknurwar 216*67121dadSVivek Aknurwar static const struct clk_parent_data gcc_parent_data_4[] = { 217*67121dadSVivek Aknurwar { .index = DT_BI_TCXO }, 218*67121dadSVivek Aknurwar { .index = DT_SLEEP_CLK }, 219*67121dadSVivek Aknurwar }; 220*67121dadSVivek Aknurwar 221*67121dadSVivek Aknurwar static const struct parent_map gcc_parent_map_5[] = { 222*67121dadSVivek Aknurwar { P_BI_TCXO, 0 }, 223*67121dadSVivek Aknurwar { P_GCC_GPLL0_OUT_MAIN, 1 }, 224*67121dadSVivek Aknurwar { P_GCC_GPLL5_OUT_MAIN, 3 }, 225*67121dadSVivek Aknurwar { P_GCC_GPLL4_OUT_MAIN, 5 }, 226*67121dadSVivek Aknurwar { P_GCC_GPLL0_OUT_EVEN, 6 }, 227*67121dadSVivek Aknurwar }; 228*67121dadSVivek Aknurwar 229*67121dadSVivek Aknurwar static const struct clk_parent_data gcc_parent_data_5[] = { 230*67121dadSVivek Aknurwar { .index = DT_BI_TCXO }, 231*67121dadSVivek Aknurwar { .hw = &gcc_gpll0.clkr.hw }, 232*67121dadSVivek Aknurwar { .hw = &gcc_gpll5.clkr.hw }, 233*67121dadSVivek Aknurwar { .hw = &gcc_gpll4.clkr.hw }, 234*67121dadSVivek Aknurwar { .hw = &gcc_gpll0_out_even.clkr.hw }, 235*67121dadSVivek Aknurwar }; 236*67121dadSVivek Aknurwar 237*67121dadSVivek Aknurwar static const struct parent_map gcc_parent_map_8[] = { 238*67121dadSVivek Aknurwar { P_BI_TCXO, 0 }, 239*67121dadSVivek Aknurwar { P_GCC_GPLL0_OUT_MAIN, 1 }, 240*67121dadSVivek Aknurwar { P_GCC_GPLL9_OUT_MAIN, 2 }, 241*67121dadSVivek Aknurwar { P_GCC_GPLL4_OUT_MAIN, 5 }, 242*67121dadSVivek Aknurwar { P_GCC_GPLL0_OUT_EVEN, 6 }, 243*67121dadSVivek Aknurwar }; 244*67121dadSVivek Aknurwar 245*67121dadSVivek Aknurwar static const struct clk_parent_data gcc_parent_data_8[] = { 246*67121dadSVivek Aknurwar { .index = DT_BI_TCXO }, 247*67121dadSVivek Aknurwar { .hw = &gcc_gpll0.clkr.hw }, 248*67121dadSVivek Aknurwar { .hw = &gcc_gpll9.clkr.hw }, 249*67121dadSVivek Aknurwar { .hw = &gcc_gpll4.clkr.hw }, 250*67121dadSVivek Aknurwar { .hw = &gcc_gpll0_out_even.clkr.hw }, 251*67121dadSVivek Aknurwar }; 252*67121dadSVivek Aknurwar 253*67121dadSVivek Aknurwar static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src = { 254*67121dadSVivek Aknurwar .reg = 0x6b0a8, 255*67121dadSVivek Aknurwar .clkr = { 256*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 257*67121dadSVivek Aknurwar .name = "gcc_pcie_0_pipe_clk_src", 258*67121dadSVivek Aknurwar .parent_data = &(const struct clk_parent_data){ 259*67121dadSVivek Aknurwar .index = DT_PCIE_0_PIPE_CLK, 260*67121dadSVivek Aknurwar }, 261*67121dadSVivek Aknurwar .num_parents = 1, 262*67121dadSVivek Aknurwar .ops = &clk_regmap_phy_mux_ops, 263*67121dadSVivek Aknurwar }, 264*67121dadSVivek Aknurwar }, 265*67121dadSVivek Aknurwar }; 266*67121dadSVivek Aknurwar 267*67121dadSVivek Aknurwar static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = { 268*67121dadSVivek Aknurwar .reg = 0x670a4, 269*67121dadSVivek Aknurwar .clkr = { 270*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 271*67121dadSVivek Aknurwar .name = "gcc_pcie_1_pipe_clk_src", 272*67121dadSVivek Aknurwar .parent_data = &(const struct clk_parent_data){ 273*67121dadSVivek Aknurwar .index = DT_PCIE_1_PIPE_CLK, 274*67121dadSVivek Aknurwar }, 275*67121dadSVivek Aknurwar .num_parents = 1, 276*67121dadSVivek Aknurwar .ops = &clk_regmap_phy_mux_ops, 277*67121dadSVivek Aknurwar }, 278*67121dadSVivek Aknurwar }, 279*67121dadSVivek Aknurwar }; 280*67121dadSVivek Aknurwar 281*67121dadSVivek Aknurwar static struct clk_regmap_phy_mux gcc_ufs_phy_rx_symbol_0_clk_src = { 282*67121dadSVivek Aknurwar .reg = 0x77068, 283*67121dadSVivek Aknurwar .clkr = { 284*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 285*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_rx_symbol_0_clk_src", 286*67121dadSVivek Aknurwar .parent_data = &(const struct clk_parent_data){ 287*67121dadSVivek Aknurwar .index = DT_UFS_PHY_RX_SYMBOL_0_CLK, 288*67121dadSVivek Aknurwar }, 289*67121dadSVivek Aknurwar .num_parents = 1, 290*67121dadSVivek Aknurwar .ops = &clk_regmap_phy_mux_ops, 291*67121dadSVivek Aknurwar }, 292*67121dadSVivek Aknurwar }, 293*67121dadSVivek Aknurwar }; 294*67121dadSVivek Aknurwar 295*67121dadSVivek Aknurwar static struct clk_regmap_phy_mux gcc_ufs_phy_rx_symbol_1_clk_src = { 296*67121dadSVivek Aknurwar .reg = 0x770ec, 297*67121dadSVivek Aknurwar .clkr = { 298*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 299*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_rx_symbol_1_clk_src", 300*67121dadSVivek Aknurwar .parent_data = &(const struct clk_parent_data){ 301*67121dadSVivek Aknurwar .index = DT_UFS_PHY_RX_SYMBOL_1_CLK, 302*67121dadSVivek Aknurwar }, 303*67121dadSVivek Aknurwar .num_parents = 1, 304*67121dadSVivek Aknurwar .ops = &clk_regmap_phy_mux_ops, 305*67121dadSVivek Aknurwar }, 306*67121dadSVivek Aknurwar }, 307*67121dadSVivek Aknurwar }; 308*67121dadSVivek Aknurwar 309*67121dadSVivek Aknurwar static struct clk_regmap_phy_mux gcc_ufs_phy_tx_symbol_0_clk_src = { 310*67121dadSVivek Aknurwar .reg = 0x77058, 311*67121dadSVivek Aknurwar .clkr = { 312*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 313*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_tx_symbol_0_clk_src", 314*67121dadSVivek Aknurwar .parent_data = &(const struct clk_parent_data){ 315*67121dadSVivek Aknurwar .index = DT_UFS_PHY_TX_SYMBOL_0_CLK, 316*67121dadSVivek Aknurwar }, 317*67121dadSVivek Aknurwar .num_parents = 1, 318*67121dadSVivek Aknurwar .ops = &clk_regmap_phy_mux_ops, 319*67121dadSVivek Aknurwar }, 320*67121dadSVivek Aknurwar }, 321*67121dadSVivek Aknurwar }; 322*67121dadSVivek Aknurwar 323*67121dadSVivek Aknurwar static struct clk_regmap_phy_mux gcc_usb3_prim_phy_pipe_clk_src = { 324*67121dadSVivek Aknurwar .reg = 0x39074, 325*67121dadSVivek Aknurwar .clkr = { 326*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 327*67121dadSVivek Aknurwar .name = "gcc_usb3_prim_phy_pipe_clk_src", 328*67121dadSVivek Aknurwar .parent_data = &(const struct clk_parent_data){ 329*67121dadSVivek Aknurwar .index = DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 330*67121dadSVivek Aknurwar }, 331*67121dadSVivek Aknurwar .num_parents = 1, 332*67121dadSVivek Aknurwar .ops = &clk_regmap_phy_mux_ops, 333*67121dadSVivek Aknurwar }, 334*67121dadSVivek Aknurwar }, 335*67121dadSVivek Aknurwar }; 336*67121dadSVivek Aknurwar 337*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = { 338*67121dadSVivek Aknurwar F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0), 339*67121dadSVivek Aknurwar F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 340*67121dadSVivek Aknurwar F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0), 341*67121dadSVivek Aknurwar { } 342*67121dadSVivek Aknurwar }; 343*67121dadSVivek Aknurwar 344*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_gp1_clk_src = { 345*67121dadSVivek Aknurwar .cmd_rcgr = 0x64004, 346*67121dadSVivek Aknurwar .mnd_width = 16, 347*67121dadSVivek Aknurwar .hid_width = 5, 348*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_2, 349*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_gp1_clk_src, 350*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 351*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 352*67121dadSVivek Aknurwar .name = "gcc_gp1_clk_src", 353*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_2, 354*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_2), 355*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 356*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 357*67121dadSVivek Aknurwar }, 358*67121dadSVivek Aknurwar }; 359*67121dadSVivek Aknurwar 360*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_gp2_clk_src = { 361*67121dadSVivek Aknurwar .cmd_rcgr = 0x65004, 362*67121dadSVivek Aknurwar .mnd_width = 16, 363*67121dadSVivek Aknurwar .hid_width = 5, 364*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_2, 365*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_gp1_clk_src, 366*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 367*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 368*67121dadSVivek Aknurwar .name = "gcc_gp2_clk_src", 369*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_2, 370*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_2), 371*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 372*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 373*67121dadSVivek Aknurwar }, 374*67121dadSVivek Aknurwar }; 375*67121dadSVivek Aknurwar 376*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_gp3_clk_src = { 377*67121dadSVivek Aknurwar .cmd_rcgr = 0x66004, 378*67121dadSVivek Aknurwar .mnd_width = 16, 379*67121dadSVivek Aknurwar .hid_width = 5, 380*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_2, 381*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_gp1_clk_src, 382*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 383*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 384*67121dadSVivek Aknurwar .name = "gcc_gp3_clk_src", 385*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_2, 386*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_2), 387*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 388*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 389*67121dadSVivek Aknurwar }, 390*67121dadSVivek Aknurwar }; 391*67121dadSVivek Aknurwar 392*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = { 393*67121dadSVivek Aknurwar F(19200000, P_BI_TCXO, 1, 0, 0), 394*67121dadSVivek Aknurwar { } 395*67121dadSVivek Aknurwar }; 396*67121dadSVivek Aknurwar 397*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_pcie_0_aux_clk_src = { 398*67121dadSVivek Aknurwar .cmd_rcgr = 0x6b0ac, 399*67121dadSVivek Aknurwar .mnd_width = 16, 400*67121dadSVivek Aknurwar .hid_width = 5, 401*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_4, 402*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 403*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 404*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 405*67121dadSVivek Aknurwar .name = "gcc_pcie_0_aux_clk_src", 406*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_4, 407*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_4), 408*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 409*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 410*67121dadSVivek Aknurwar }, 411*67121dadSVivek Aknurwar }; 412*67121dadSVivek Aknurwar 413*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_pcie_0_phy_aux_clk_src = { 414*67121dadSVivek Aknurwar .cmd_rcgr = 0x6b0c4, 415*67121dadSVivek Aknurwar .mnd_width = 0, 416*67121dadSVivek Aknurwar .hid_width = 5, 417*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 418*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 419*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 420*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 421*67121dadSVivek Aknurwar .name = "gcc_pcie_0_phy_aux_clk_src", 422*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 423*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 424*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 425*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 426*67121dadSVivek Aknurwar }, 427*67121dadSVivek Aknurwar }; 428*67121dadSVivek Aknurwar 429*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = { 430*67121dadSVivek Aknurwar F(19200000, P_BI_TCXO, 1, 0, 0), 431*67121dadSVivek Aknurwar F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 432*67121dadSVivek Aknurwar { } 433*67121dadSVivek Aknurwar }; 434*67121dadSVivek Aknurwar 435*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = { 436*67121dadSVivek Aknurwar .cmd_rcgr = 0x6b08c, 437*67121dadSVivek Aknurwar .mnd_width = 0, 438*67121dadSVivek Aknurwar .hid_width = 5, 439*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 440*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src, 441*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 442*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 443*67121dadSVivek Aknurwar .name = "gcc_pcie_0_phy_rchng_clk_src", 444*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 445*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 446*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 447*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 448*67121dadSVivek Aknurwar }, 449*67121dadSVivek Aknurwar }; 450*67121dadSVivek Aknurwar 451*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_pcie_1_aux_clk_src = { 452*67121dadSVivek Aknurwar .cmd_rcgr = 0x670a8, 453*67121dadSVivek Aknurwar .mnd_width = 16, 454*67121dadSVivek Aknurwar .hid_width = 5, 455*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_4, 456*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 457*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 458*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 459*67121dadSVivek Aknurwar .name = "gcc_pcie_1_aux_clk_src", 460*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_4, 461*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_4), 462*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 463*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 464*67121dadSVivek Aknurwar }, 465*67121dadSVivek Aknurwar }; 466*67121dadSVivek Aknurwar 467*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_pcie_1_phy_aux_clk_src = { 468*67121dadSVivek Aknurwar .cmd_rcgr = 0x670c0, 469*67121dadSVivek Aknurwar .mnd_width = 0, 470*67121dadSVivek Aknurwar .hid_width = 5, 471*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 472*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 473*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 474*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 475*67121dadSVivek Aknurwar .name = "gcc_pcie_1_phy_aux_clk_src", 476*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 477*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 478*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 479*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 480*67121dadSVivek Aknurwar }, 481*67121dadSVivek Aknurwar }; 482*67121dadSVivek Aknurwar 483*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = { 484*67121dadSVivek Aknurwar .cmd_rcgr = 0x67088, 485*67121dadSVivek Aknurwar .mnd_width = 0, 486*67121dadSVivek Aknurwar .hid_width = 5, 487*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 488*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src, 489*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 490*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 491*67121dadSVivek Aknurwar .name = "gcc_pcie_1_phy_rchng_clk_src", 492*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 493*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 494*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 495*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 496*67121dadSVivek Aknurwar }, 497*67121dadSVivek Aknurwar }; 498*67121dadSVivek Aknurwar 499*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = { 500*67121dadSVivek Aknurwar F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0), 501*67121dadSVivek Aknurwar { } 502*67121dadSVivek Aknurwar }; 503*67121dadSVivek Aknurwar 504*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_pdm2_clk_src = { 505*67121dadSVivek Aknurwar .cmd_rcgr = 0x33010, 506*67121dadSVivek Aknurwar .mnd_width = 0, 507*67121dadSVivek Aknurwar .hid_width = 5, 508*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 509*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_pdm2_clk_src, 510*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 511*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 512*67121dadSVivek Aknurwar .name = "gcc_pdm2_clk_src", 513*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 514*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 515*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 516*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 517*67121dadSVivek Aknurwar }, 518*67121dadSVivek Aknurwar }; 519*67121dadSVivek Aknurwar 520*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_i2c_s0_clk_src = { 521*67121dadSVivek Aknurwar .cmd_rcgr = 0x17008, 522*67121dadSVivek Aknurwar .mnd_width = 0, 523*67121dadSVivek Aknurwar .hid_width = 5, 524*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 525*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 526*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 527*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 528*67121dadSVivek Aknurwar .name = "gcc_qupv3_i2c_s0_clk_src", 529*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 530*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 531*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 532*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 533*67121dadSVivek Aknurwar }, 534*67121dadSVivek Aknurwar }; 535*67121dadSVivek Aknurwar 536*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_i2c_s1_clk_src = { 537*67121dadSVivek Aknurwar .cmd_rcgr = 0x17024, 538*67121dadSVivek Aknurwar .mnd_width = 0, 539*67121dadSVivek Aknurwar .hid_width = 5, 540*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 541*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 542*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 543*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 544*67121dadSVivek Aknurwar .name = "gcc_qupv3_i2c_s1_clk_src", 545*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 546*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 547*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 548*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 549*67121dadSVivek Aknurwar }, 550*67121dadSVivek Aknurwar }; 551*67121dadSVivek Aknurwar 552*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_i2c_s2_clk_src = { 553*67121dadSVivek Aknurwar .cmd_rcgr = 0x17040, 554*67121dadSVivek Aknurwar .mnd_width = 0, 555*67121dadSVivek Aknurwar .hid_width = 5, 556*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 557*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 558*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 559*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 560*67121dadSVivek Aknurwar .name = "gcc_qupv3_i2c_s2_clk_src", 561*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 562*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 563*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 564*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 565*67121dadSVivek Aknurwar }, 566*67121dadSVivek Aknurwar }; 567*67121dadSVivek Aknurwar 568*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_i2c_s3_clk_src = { 569*67121dadSVivek Aknurwar .cmd_rcgr = 0x1705c, 570*67121dadSVivek Aknurwar .mnd_width = 0, 571*67121dadSVivek Aknurwar .hid_width = 5, 572*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 573*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 574*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 575*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 576*67121dadSVivek Aknurwar .name = "gcc_qupv3_i2c_s3_clk_src", 577*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 578*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 579*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 580*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 581*67121dadSVivek Aknurwar }, 582*67121dadSVivek Aknurwar }; 583*67121dadSVivek Aknurwar 584*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_i2c_s4_clk_src = { 585*67121dadSVivek Aknurwar .cmd_rcgr = 0x17078, 586*67121dadSVivek Aknurwar .mnd_width = 0, 587*67121dadSVivek Aknurwar .hid_width = 5, 588*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 589*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 590*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 591*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 592*67121dadSVivek Aknurwar .name = "gcc_qupv3_i2c_s4_clk_src", 593*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 594*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 595*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 596*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 597*67121dadSVivek Aknurwar }, 598*67121dadSVivek Aknurwar }; 599*67121dadSVivek Aknurwar 600*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_qupv3_wrap1_qspi_ref_clk_src[] = { 601*67121dadSVivek Aknurwar F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625), 602*67121dadSVivek Aknurwar F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625), 603*67121dadSVivek Aknurwar F(19200000, P_BI_TCXO, 1, 0, 0), 604*67121dadSVivek Aknurwar F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625), 605*67121dadSVivek Aknurwar F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75), 606*67121dadSVivek Aknurwar F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25), 607*67121dadSVivek Aknurwar F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375), 608*67121dadSVivek Aknurwar F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75), 609*67121dadSVivek Aknurwar F(66666667, P_GCC_GPLL0_OUT_MAIN, 9, 0, 0), 610*67121dadSVivek Aknurwar F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 611*67121dadSVivek Aknurwar F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15), 612*67121dadSVivek Aknurwar F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25), 613*67121dadSVivek Aknurwar F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 614*67121dadSVivek Aknurwar F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375), 615*67121dadSVivek Aknurwar F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75), 616*67121dadSVivek Aknurwar F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625), 617*67121dadSVivek Aknurwar F(120000000, P_GCC_GPLL0_OUT_EVEN, 2.5, 0, 0), 618*67121dadSVivek Aknurwar F(150000000, P_GCC_GPLL0_OUT_EVEN, 2, 0, 0), 619*67121dadSVivek Aknurwar F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0), 620*67121dadSVivek Aknurwar { } 621*67121dadSVivek Aknurwar }; 622*67121dadSVivek Aknurwar 623*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_qspi_ref_clk_src_init = { 624*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_qspi_ref_clk_src", 625*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 626*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 627*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 628*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 629*67121dadSVivek Aknurwar }; 630*67121dadSVivek Aknurwar 631*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_qspi_ref_clk_src = { 632*67121dadSVivek Aknurwar .cmd_rcgr = 0x188c0, 633*67121dadSVivek Aknurwar .mnd_width = 16, 634*67121dadSVivek Aknurwar .hid_width = 5, 635*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 636*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_qspi_ref_clk_src, 637*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 638*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap1_qspi_ref_clk_src_init, 639*67121dadSVivek Aknurwar }; 640*67121dadSVivek Aknurwar 641*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s0_clk_src[] = { 642*67121dadSVivek Aknurwar F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625), 643*67121dadSVivek Aknurwar F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625), 644*67121dadSVivek Aknurwar F(19200000, P_BI_TCXO, 1, 0, 0), 645*67121dadSVivek Aknurwar F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625), 646*67121dadSVivek Aknurwar F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75), 647*67121dadSVivek Aknurwar F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25), 648*67121dadSVivek Aknurwar F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375), 649*67121dadSVivek Aknurwar F(60000000, P_GCC_GPLL0_OUT_EVEN, 5, 0, 0), 650*67121dadSVivek Aknurwar F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75), 651*67121dadSVivek Aknurwar F(66666667, P_GCC_GPLL0_OUT_MAIN, 9, 0, 0), 652*67121dadSVivek Aknurwar F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 653*67121dadSVivek Aknurwar F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15), 654*67121dadSVivek Aknurwar F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25), 655*67121dadSVivek Aknurwar F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 656*67121dadSVivek Aknurwar { } 657*67121dadSVivek Aknurwar }; 658*67121dadSVivek Aknurwar 659*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = { 660*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s0_clk_src", 661*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 662*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 663*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 664*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 665*67121dadSVivek Aknurwar }; 666*67121dadSVivek Aknurwar 667*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = { 668*67121dadSVivek Aknurwar .cmd_rcgr = 0x18014, 669*67121dadSVivek Aknurwar .mnd_width = 16, 670*67121dadSVivek Aknurwar .hid_width = 5, 671*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 672*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 673*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 674*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init, 675*67121dadSVivek Aknurwar }; 676*67121dadSVivek Aknurwar 677*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = { 678*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s1_clk_src", 679*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 680*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 681*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 682*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 683*67121dadSVivek Aknurwar }; 684*67121dadSVivek Aknurwar 685*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = { 686*67121dadSVivek Aknurwar .cmd_rcgr = 0x18150, 687*67121dadSVivek Aknurwar .mnd_width = 16, 688*67121dadSVivek Aknurwar .hid_width = 5, 689*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 690*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 691*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 692*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init, 693*67121dadSVivek Aknurwar }; 694*67121dadSVivek Aknurwar 695*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = { 696*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s3_clk_src", 697*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 698*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 699*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 700*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 701*67121dadSVivek Aknurwar }; 702*67121dadSVivek Aknurwar 703*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = { 704*67121dadSVivek Aknurwar .cmd_rcgr = 0x182a0, 705*67121dadSVivek Aknurwar .mnd_width = 16, 706*67121dadSVivek Aknurwar .hid_width = 5, 707*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 708*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 709*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 710*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init, 711*67121dadSVivek Aknurwar }; 712*67121dadSVivek Aknurwar 713*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s4_clk_src[] = { 714*67121dadSVivek Aknurwar F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625), 715*67121dadSVivek Aknurwar F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625), 716*67121dadSVivek Aknurwar F(19200000, P_BI_TCXO, 1, 0, 0), 717*67121dadSVivek Aknurwar F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625), 718*67121dadSVivek Aknurwar F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75), 719*67121dadSVivek Aknurwar F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25), 720*67121dadSVivek Aknurwar F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375), 721*67121dadSVivek Aknurwar F(60000000, P_GCC_GPLL0_OUT_EVEN, 5, 0, 0), 722*67121dadSVivek Aknurwar F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75), 723*67121dadSVivek Aknurwar F(66666667, P_GCC_GPLL0_OUT_MAIN, 9, 0, 0), 724*67121dadSVivek Aknurwar F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 725*67121dadSVivek Aknurwar F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15), 726*67121dadSVivek Aknurwar F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25), 727*67121dadSVivek Aknurwar F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 728*67121dadSVivek Aknurwar F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375), 729*67121dadSVivek Aknurwar F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75), 730*67121dadSVivek Aknurwar F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625), 731*67121dadSVivek Aknurwar F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0), 732*67121dadSVivek Aknurwar { } 733*67121dadSVivek Aknurwar }; 734*67121dadSVivek Aknurwar 735*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = { 736*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s4_clk_src", 737*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 738*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 739*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 740*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 741*67121dadSVivek Aknurwar }; 742*67121dadSVivek Aknurwar 743*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = { 744*67121dadSVivek Aknurwar .cmd_rcgr = 0x183dc, 745*67121dadSVivek Aknurwar .mnd_width = 16, 746*67121dadSVivek Aknurwar .hid_width = 5, 747*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 748*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src, 749*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 750*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init, 751*67121dadSVivek Aknurwar }; 752*67121dadSVivek Aknurwar 753*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = { 754*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s5_clk_src", 755*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 756*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 757*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 758*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 759*67121dadSVivek Aknurwar }; 760*67121dadSVivek Aknurwar 761*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = { 762*67121dadSVivek Aknurwar .cmd_rcgr = 0x18518, 763*67121dadSVivek Aknurwar .mnd_width = 16, 764*67121dadSVivek Aknurwar .hid_width = 5, 765*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 766*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 767*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 768*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init, 769*67121dadSVivek Aknurwar }; 770*67121dadSVivek Aknurwar 771*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = { 772*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s6_clk_src", 773*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 774*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 775*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 776*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 777*67121dadSVivek Aknurwar }; 778*67121dadSVivek Aknurwar 779*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = { 780*67121dadSVivek Aknurwar .cmd_rcgr = 0x18654, 781*67121dadSVivek Aknurwar .mnd_width = 16, 782*67121dadSVivek Aknurwar .hid_width = 5, 783*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 784*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 785*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 786*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init, 787*67121dadSVivek Aknurwar }; 788*67121dadSVivek Aknurwar 789*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = { 790*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s7_clk_src", 791*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 792*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 793*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 794*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 795*67121dadSVivek Aknurwar }; 796*67121dadSVivek Aknurwar 797*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = { 798*67121dadSVivek Aknurwar .cmd_rcgr = 0x18790, 799*67121dadSVivek Aknurwar .mnd_width = 16, 800*67121dadSVivek Aknurwar .hid_width = 5, 801*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 802*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src, 803*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 804*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init, 805*67121dadSVivek Aknurwar }; 806*67121dadSVivek Aknurwar 807*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = { 808*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap2_s0_clk_src", 809*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_1, 810*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_1), 811*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 812*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 813*67121dadSVivek Aknurwar }; 814*67121dadSVivek Aknurwar 815*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = { 816*67121dadSVivek Aknurwar .cmd_rcgr = 0x1e01c, 817*67121dadSVivek Aknurwar .mnd_width = 16, 818*67121dadSVivek Aknurwar .hid_width = 5, 819*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_1, 820*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src, 821*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 822*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init, 823*67121dadSVivek Aknurwar }; 824*67121dadSVivek Aknurwar 825*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = { 826*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap2_s1_clk_src", 827*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_1, 828*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_1), 829*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 830*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 831*67121dadSVivek Aknurwar }; 832*67121dadSVivek Aknurwar 833*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = { 834*67121dadSVivek Aknurwar .cmd_rcgr = 0x1e160, 835*67121dadSVivek Aknurwar .mnd_width = 16, 836*67121dadSVivek Aknurwar .hid_width = 5, 837*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_1, 838*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src, 839*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 840*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init, 841*67121dadSVivek Aknurwar }; 842*67121dadSVivek Aknurwar 843*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = { 844*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap2_s2_clk_src", 845*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 846*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 847*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 848*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 849*67121dadSVivek Aknurwar }; 850*67121dadSVivek Aknurwar 851*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = { 852*67121dadSVivek Aknurwar .cmd_rcgr = 0x1e29c, 853*67121dadSVivek Aknurwar .mnd_width = 16, 854*67121dadSVivek Aknurwar .hid_width = 5, 855*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 856*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src, 857*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 858*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init, 859*67121dadSVivek Aknurwar }; 860*67121dadSVivek Aknurwar 861*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = { 862*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap2_s3_clk_src", 863*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 864*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 865*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 866*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 867*67121dadSVivek Aknurwar }; 868*67121dadSVivek Aknurwar 869*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = { 870*67121dadSVivek Aknurwar .cmd_rcgr = 0x1e3d8, 871*67121dadSVivek Aknurwar .mnd_width = 16, 872*67121dadSVivek Aknurwar .hid_width = 5, 873*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 874*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 875*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 876*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init, 877*67121dadSVivek Aknurwar }; 878*67121dadSVivek Aknurwar 879*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = { 880*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap2_s4_clk_src", 881*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 882*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 883*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 884*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 885*67121dadSVivek Aknurwar }; 886*67121dadSVivek Aknurwar 887*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = { 888*67121dadSVivek Aknurwar .cmd_rcgr = 0x1e514, 889*67121dadSVivek Aknurwar .mnd_width = 16, 890*67121dadSVivek Aknurwar .hid_width = 5, 891*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 892*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 893*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 894*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init, 895*67121dadSVivek Aknurwar }; 896*67121dadSVivek Aknurwar 897*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_qupv3_wrap3_qspi_ref_clk_src[] = { 898*67121dadSVivek Aknurwar F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625), 899*67121dadSVivek Aknurwar F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625), 900*67121dadSVivek Aknurwar F(19200000, P_BI_TCXO, 1, 0, 0), 901*67121dadSVivek Aknurwar F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625), 902*67121dadSVivek Aknurwar F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75), 903*67121dadSVivek Aknurwar F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25), 904*67121dadSVivek Aknurwar F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375), 905*67121dadSVivek Aknurwar F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75), 906*67121dadSVivek Aknurwar F(66666667, P_GCC_GPLL0_OUT_MAIN, 9, 0, 0), 907*67121dadSVivek Aknurwar F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 908*67121dadSVivek Aknurwar F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15), 909*67121dadSVivek Aknurwar F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25), 910*67121dadSVivek Aknurwar F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 911*67121dadSVivek Aknurwar F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375), 912*67121dadSVivek Aknurwar F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75), 913*67121dadSVivek Aknurwar F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625), 914*67121dadSVivek Aknurwar F(120000000, P_GCC_GPLL0_OUT_EVEN, 2.5, 0, 0), 915*67121dadSVivek Aknurwar F(150000000, P_GCC_GPLL0_OUT_EVEN, 2, 0, 0), 916*67121dadSVivek Aknurwar F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0), 917*67121dadSVivek Aknurwar { } 918*67121dadSVivek Aknurwar }; 919*67121dadSVivek Aknurwar 920*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap3_qspi_ref_clk_src_init = { 921*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_qspi_ref_clk_src", 922*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_1, 923*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_1), 924*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 925*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 926*67121dadSVivek Aknurwar }; 927*67121dadSVivek Aknurwar 928*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap3_qspi_ref_clk_src = { 929*67121dadSVivek Aknurwar .cmd_rcgr = 0xa8650, 930*67121dadSVivek Aknurwar .mnd_width = 16, 931*67121dadSVivek Aknurwar .hid_width = 5, 932*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_1, 933*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap3_qspi_ref_clk_src, 934*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 935*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap3_qspi_ref_clk_src_init, 936*67121dadSVivek Aknurwar }; 937*67121dadSVivek Aknurwar 938*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap3_s0_clk_src_init = { 939*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_s0_clk_src", 940*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 941*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 942*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 943*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 944*67121dadSVivek Aknurwar }; 945*67121dadSVivek Aknurwar 946*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap3_s0_clk_src = { 947*67121dadSVivek Aknurwar .cmd_rcgr = 0xa8014, 948*67121dadSVivek Aknurwar .mnd_width = 16, 949*67121dadSVivek Aknurwar .hid_width = 5, 950*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 951*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 952*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 953*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap3_s0_clk_src_init, 954*67121dadSVivek Aknurwar }; 955*67121dadSVivek Aknurwar 956*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap3_s2_clk_src_init = { 957*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_s2_clk_src", 958*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 959*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 960*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 961*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 962*67121dadSVivek Aknurwar }; 963*67121dadSVivek Aknurwar 964*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap3_s2_clk_src = { 965*67121dadSVivek Aknurwar .cmd_rcgr = 0xa8168, 966*67121dadSVivek Aknurwar .mnd_width = 16, 967*67121dadSVivek Aknurwar .hid_width = 5, 968*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 969*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src, 970*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 971*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap3_s2_clk_src_init, 972*67121dadSVivek Aknurwar }; 973*67121dadSVivek Aknurwar 974*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap3_s3_clk_src_init = { 975*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_s3_clk_src", 976*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 977*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 978*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 979*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 980*67121dadSVivek Aknurwar }; 981*67121dadSVivek Aknurwar 982*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap3_s3_clk_src = { 983*67121dadSVivek Aknurwar .cmd_rcgr = 0xa82a4, 984*67121dadSVivek Aknurwar .mnd_width = 16, 985*67121dadSVivek Aknurwar .hid_width = 5, 986*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 987*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 988*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 989*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap3_s3_clk_src_init, 990*67121dadSVivek Aknurwar }; 991*67121dadSVivek Aknurwar 992*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap3_s4_clk_src_init = { 993*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_s4_clk_src", 994*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 995*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 996*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 997*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 998*67121dadSVivek Aknurwar }; 999*67121dadSVivek Aknurwar 1000*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap3_s4_clk_src = { 1001*67121dadSVivek Aknurwar .cmd_rcgr = 0xa83e0, 1002*67121dadSVivek Aknurwar .mnd_width = 16, 1003*67121dadSVivek Aknurwar .hid_width = 5, 1004*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 1005*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 1006*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1007*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap3_s4_clk_src_init, 1008*67121dadSVivek Aknurwar }; 1009*67121dadSVivek Aknurwar 1010*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap3_s5_clk_src_init = { 1011*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_s5_clk_src", 1012*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 1013*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1014*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1015*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 1016*67121dadSVivek Aknurwar }; 1017*67121dadSVivek Aknurwar 1018*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap3_s5_clk_src = { 1019*67121dadSVivek Aknurwar .cmd_rcgr = 0xa851c, 1020*67121dadSVivek Aknurwar .mnd_width = 16, 1021*67121dadSVivek Aknurwar .hid_width = 5, 1022*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 1023*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src, 1024*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1025*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap3_s5_clk_src_init, 1026*67121dadSVivek Aknurwar }; 1027*67121dadSVivek Aknurwar 1028*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap4_s0_clk_src_init = { 1029*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap4_s0_clk_src", 1030*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_1, 1031*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_1), 1032*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1033*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 1034*67121dadSVivek Aknurwar }; 1035*67121dadSVivek Aknurwar 1036*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap4_s0_clk_src = { 1037*67121dadSVivek Aknurwar .cmd_rcgr = 0xa9014, 1038*67121dadSVivek Aknurwar .mnd_width = 16, 1039*67121dadSVivek Aknurwar .hid_width = 5, 1040*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_1, 1041*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src, 1042*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1043*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap4_s0_clk_src_init, 1044*67121dadSVivek Aknurwar }; 1045*67121dadSVivek Aknurwar 1046*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap4_s1_clk_src_init = { 1047*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap4_s1_clk_src", 1048*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_1, 1049*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_1), 1050*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1051*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 1052*67121dadSVivek Aknurwar }; 1053*67121dadSVivek Aknurwar 1054*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap4_s1_clk_src = { 1055*67121dadSVivek Aknurwar .cmd_rcgr = 0xa9150, 1056*67121dadSVivek Aknurwar .mnd_width = 16, 1057*67121dadSVivek Aknurwar .hid_width = 5, 1058*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_1, 1059*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src, 1060*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1061*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap4_s1_clk_src_init, 1062*67121dadSVivek Aknurwar }; 1063*67121dadSVivek Aknurwar 1064*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap4_s2_clk_src_init = { 1065*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap4_s2_clk_src", 1066*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_1, 1067*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_1), 1068*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1069*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 1070*67121dadSVivek Aknurwar }; 1071*67121dadSVivek Aknurwar 1072*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap4_s2_clk_src = { 1073*67121dadSVivek Aknurwar .cmd_rcgr = 0xa928c, 1074*67121dadSVivek Aknurwar .mnd_width = 16, 1075*67121dadSVivek Aknurwar .hid_width = 5, 1076*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_1, 1077*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src, 1078*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1079*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap4_s2_clk_src_init, 1080*67121dadSVivek Aknurwar }; 1081*67121dadSVivek Aknurwar 1082*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap4_s3_clk_src_init = { 1083*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap4_s3_clk_src", 1084*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_1, 1085*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_1), 1086*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1087*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 1088*67121dadSVivek Aknurwar }; 1089*67121dadSVivek Aknurwar 1090*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap4_s3_clk_src = { 1091*67121dadSVivek Aknurwar .cmd_rcgr = 0xa93c8, 1092*67121dadSVivek Aknurwar .mnd_width = 16, 1093*67121dadSVivek Aknurwar .hid_width = 5, 1094*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_1, 1095*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 1096*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1097*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap4_s3_clk_src_init, 1098*67121dadSVivek Aknurwar }; 1099*67121dadSVivek Aknurwar 1100*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap4_s4_clk_src_init = { 1101*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap4_s4_clk_src", 1102*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_1, 1103*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_1), 1104*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1105*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 1106*67121dadSVivek Aknurwar }; 1107*67121dadSVivek Aknurwar 1108*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap4_s4_clk_src = { 1109*67121dadSVivek Aknurwar .cmd_rcgr = 0xa9504, 1110*67121dadSVivek Aknurwar .mnd_width = 16, 1111*67121dadSVivek Aknurwar .hid_width = 5, 1112*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_1, 1113*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src, 1114*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1115*67121dadSVivek Aknurwar .clkr.hw.init = &gcc_qupv3_wrap4_s4_clk_src_init, 1116*67121dadSVivek Aknurwar }; 1117*67121dadSVivek Aknurwar 1118*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = { 1119*67121dadSVivek Aknurwar F(400000, P_BI_TCXO, 12, 1, 4), 1120*67121dadSVivek Aknurwar F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), 1121*67121dadSVivek Aknurwar F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0), 1122*67121dadSVivek Aknurwar F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0), 1123*67121dadSVivek Aknurwar F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 1124*67121dadSVivek Aknurwar F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 1125*67121dadSVivek Aknurwar F(202000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0), 1126*67121dadSVivek Aknurwar { } 1127*67121dadSVivek Aknurwar }; 1128*67121dadSVivek Aknurwar 1129*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_sdcc2_apps_clk_src = { 1130*67121dadSVivek Aknurwar .cmd_rcgr = 0x1401c, 1131*67121dadSVivek Aknurwar .mnd_width = 8, 1132*67121dadSVivek Aknurwar .hid_width = 5, 1133*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_8, 1134*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src, 1135*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1136*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 1137*67121dadSVivek Aknurwar .name = "gcc_sdcc2_apps_clk_src", 1138*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_8, 1139*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_8), 1140*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1141*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_floor_ops, 1142*67121dadSVivek Aknurwar }, 1143*67121dadSVivek Aknurwar }; 1144*67121dadSVivek Aknurwar 1145*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = { 1146*67121dadSVivek Aknurwar F(400000, P_BI_TCXO, 12, 1, 4), 1147*67121dadSVivek Aknurwar F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), 1148*67121dadSVivek Aknurwar F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 1149*67121dadSVivek Aknurwar { } 1150*67121dadSVivek Aknurwar }; 1151*67121dadSVivek Aknurwar 1152*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_sdcc4_apps_clk_src = { 1153*67121dadSVivek Aknurwar .cmd_rcgr = 0x1601c, 1154*67121dadSVivek Aknurwar .mnd_width = 8, 1155*67121dadSVivek Aknurwar .hid_width = 5, 1156*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 1157*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_sdcc4_apps_clk_src, 1158*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1159*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 1160*67121dadSVivek Aknurwar .name = "gcc_sdcc4_apps_clk_src", 1161*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 1162*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1163*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1164*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_floor_ops, 1165*67121dadSVivek Aknurwar }, 1166*67121dadSVivek Aknurwar }; 1167*67121dadSVivek Aknurwar 1168*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = { 1169*67121dadSVivek Aknurwar F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), 1170*67121dadSVivek Aknurwar F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 1171*67121dadSVivek Aknurwar F(225000000, P_GCC_GPLL5_OUT_MAIN, 4, 0, 0), 1172*67121dadSVivek Aknurwar F(450000000, P_GCC_GPLL5_OUT_MAIN, 2, 0, 0), 1173*67121dadSVivek Aknurwar { } 1174*67121dadSVivek Aknurwar }; 1175*67121dadSVivek Aknurwar 1176*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = { 1177*67121dadSVivek Aknurwar .cmd_rcgr = 0x77034, 1178*67121dadSVivek Aknurwar .mnd_width = 8, 1179*67121dadSVivek Aknurwar .hid_width = 5, 1180*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_5, 1181*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src, 1182*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1183*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 1184*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_axi_clk_src", 1185*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_5, 1186*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_5), 1187*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1188*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_ops, 1189*67121dadSVivek Aknurwar }, 1190*67121dadSVivek Aknurwar }; 1191*67121dadSVivek Aknurwar 1192*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = { 1193*67121dadSVivek Aknurwar F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 1194*67121dadSVivek Aknurwar F(225000000, P_GCC_GPLL5_OUT_MAIN, 4, 0, 0), 1195*67121dadSVivek Aknurwar F(450000000, P_GCC_GPLL5_OUT_MAIN, 2, 0, 0), 1196*67121dadSVivek Aknurwar { } 1197*67121dadSVivek Aknurwar }; 1198*67121dadSVivek Aknurwar 1199*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = { 1200*67121dadSVivek Aknurwar .cmd_rcgr = 0x7708c, 1201*67121dadSVivek Aknurwar .mnd_width = 0, 1202*67121dadSVivek Aknurwar .hid_width = 5, 1203*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_5, 1204*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src, 1205*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1206*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 1207*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_ice_core_clk_src", 1208*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_5, 1209*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_5), 1210*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1211*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_ops, 1212*67121dadSVivek Aknurwar }, 1213*67121dadSVivek Aknurwar }; 1214*67121dadSVivek Aknurwar 1215*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = { 1216*67121dadSVivek Aknurwar F(9600000, P_BI_TCXO, 2, 0, 0), 1217*67121dadSVivek Aknurwar F(19200000, P_BI_TCXO, 1, 0, 0), 1218*67121dadSVivek Aknurwar { } 1219*67121dadSVivek Aknurwar }; 1220*67121dadSVivek Aknurwar 1221*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = { 1222*67121dadSVivek Aknurwar .cmd_rcgr = 0x770c0, 1223*67121dadSVivek Aknurwar .mnd_width = 0, 1224*67121dadSVivek Aknurwar .hid_width = 5, 1225*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_3, 1226*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src, 1227*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1228*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 1229*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_phy_aux_clk_src", 1230*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_3, 1231*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_3), 1232*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1233*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_ops, 1234*67121dadSVivek Aknurwar }, 1235*67121dadSVivek Aknurwar }; 1236*67121dadSVivek Aknurwar 1237*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_5_core_clk_src[] = { 1238*67121dadSVivek Aknurwar F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 1239*67121dadSVivek Aknurwar F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 1240*67121dadSVivek Aknurwar F(201500000, P_GCC_GPLL4_OUT_MAIN, 4, 0, 0), 1241*67121dadSVivek Aknurwar F(403000000, P_GCC_GPLL4_OUT_MAIN, 2, 0, 0), 1242*67121dadSVivek Aknurwar { } 1243*67121dadSVivek Aknurwar }; 1244*67121dadSVivek Aknurwar 1245*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_ufs_phy_unipro_5_core_clk_src = { 1246*67121dadSVivek Aknurwar .cmd_rcgr = 0x770a4, 1247*67121dadSVivek Aknurwar .mnd_width = 0, 1248*67121dadSVivek Aknurwar .hid_width = 5, 1249*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_5, 1250*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_ufs_phy_unipro_5_core_clk_src, 1251*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1252*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 1253*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_unipro_5_core_clk_src", 1254*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_5, 1255*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_5), 1256*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1257*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_ops, 1258*67121dadSVivek Aknurwar }, 1259*67121dadSVivek Aknurwar }; 1260*67121dadSVivek Aknurwar 1261*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = { 1262*67121dadSVivek Aknurwar F(66666667, P_GCC_GPLL0_OUT_EVEN, 4.5, 0, 0), 1263*67121dadSVivek Aknurwar F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0), 1264*67121dadSVivek Aknurwar F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0), 1265*67121dadSVivek Aknurwar F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0), 1266*67121dadSVivek Aknurwar { } 1267*67121dadSVivek Aknurwar }; 1268*67121dadSVivek Aknurwar 1269*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_usb30_prim_master_clk_src = { 1270*67121dadSVivek Aknurwar .cmd_rcgr = 0x39034, 1271*67121dadSVivek Aknurwar .mnd_width = 8, 1272*67121dadSVivek Aknurwar .hid_width = 5, 1273*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 1274*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src, 1275*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1276*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 1277*67121dadSVivek Aknurwar .name = "gcc_usb30_prim_master_clk_src", 1278*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 1279*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1280*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1281*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 1282*67121dadSVivek Aknurwar }, 1283*67121dadSVivek Aknurwar }; 1284*67121dadSVivek Aknurwar 1285*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = { 1286*67121dadSVivek Aknurwar .cmd_rcgr = 0x3904c, 1287*67121dadSVivek Aknurwar .mnd_width = 0, 1288*67121dadSVivek Aknurwar .hid_width = 5, 1289*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_0, 1290*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 1291*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1292*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 1293*67121dadSVivek Aknurwar .name = "gcc_usb30_prim_mock_utmi_clk_src", 1294*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_0, 1295*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1296*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1297*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 1298*67121dadSVivek Aknurwar }, 1299*67121dadSVivek Aknurwar }; 1300*67121dadSVivek Aknurwar 1301*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = { 1302*67121dadSVivek Aknurwar .cmd_rcgr = 0x39078, 1303*67121dadSVivek Aknurwar .mnd_width = 0, 1304*67121dadSVivek Aknurwar .hid_width = 5, 1305*67121dadSVivek Aknurwar .parent_map = gcc_parent_map_4, 1306*67121dadSVivek Aknurwar .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 1307*67121dadSVivek Aknurwar .hw_clk_ctrl = true, 1308*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 1309*67121dadSVivek Aknurwar .name = "gcc_usb3_prim_phy_aux_clk_src", 1310*67121dadSVivek Aknurwar .parent_data = gcc_parent_data_4, 1311*67121dadSVivek Aknurwar .num_parents = ARRAY_SIZE(gcc_parent_data_4), 1312*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1313*67121dadSVivek Aknurwar .ops = &clk_rcg2_shared_no_init_park_ops, 1314*67121dadSVivek Aknurwar }, 1315*67121dadSVivek Aknurwar }; 1316*67121dadSVivek Aknurwar 1317*67121dadSVivek Aknurwar static struct clk_regmap_div gcc_pcie_0_pipe_div_clk_src = { 1318*67121dadSVivek Aknurwar .reg = 0x6b0a4, 1319*67121dadSVivek Aknurwar .shift = 0, 1320*67121dadSVivek Aknurwar .width = 4, 1321*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 1322*67121dadSVivek Aknurwar .name = "gcc_pcie_0_pipe_div_clk_src", 1323*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1324*67121dadSVivek Aknurwar &gcc_pcie_0_pipe_clk_src.clkr.hw, 1325*67121dadSVivek Aknurwar }, 1326*67121dadSVivek Aknurwar .num_parents = 1, 1327*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1328*67121dadSVivek Aknurwar .ops = &clk_regmap_div_ro_ops, 1329*67121dadSVivek Aknurwar }, 1330*67121dadSVivek Aknurwar }; 1331*67121dadSVivek Aknurwar 1332*67121dadSVivek Aknurwar static struct clk_regmap_div gcc_pcie_1_pipe_div_clk_src = { 1333*67121dadSVivek Aknurwar .reg = 0x670a0, 1334*67121dadSVivek Aknurwar .shift = 0, 1335*67121dadSVivek Aknurwar .width = 4, 1336*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 1337*67121dadSVivek Aknurwar .name = "gcc_pcie_1_pipe_div_clk_src", 1338*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1339*67121dadSVivek Aknurwar &gcc_pcie_1_pipe_clk_src.clkr.hw, 1340*67121dadSVivek Aknurwar }, 1341*67121dadSVivek Aknurwar .num_parents = 1, 1342*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1343*67121dadSVivek Aknurwar .ops = &clk_regmap_div_ro_ops, 1344*67121dadSVivek Aknurwar }, 1345*67121dadSVivek Aknurwar }; 1346*67121dadSVivek Aknurwar 1347*67121dadSVivek Aknurwar static struct clk_regmap_div gcc_qupv3_wrap1_s2_clk_src = { 1348*67121dadSVivek Aknurwar .reg = 0x1828c, 1349*67121dadSVivek Aknurwar .shift = 0, 1350*67121dadSVivek Aknurwar .width = 4, 1351*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 1352*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s2_clk_src", 1353*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1354*67121dadSVivek Aknurwar &gcc_qupv3_wrap1_qspi_ref_clk_src.clkr.hw, 1355*67121dadSVivek Aknurwar }, 1356*67121dadSVivek Aknurwar .num_parents = 1, 1357*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1358*67121dadSVivek Aknurwar .ops = &clk_regmap_div_ro_ops, 1359*67121dadSVivek Aknurwar }, 1360*67121dadSVivek Aknurwar }; 1361*67121dadSVivek Aknurwar 1362*67121dadSVivek Aknurwar static struct clk_regmap_div gcc_qupv3_wrap3_s1_clk_src = { 1363*67121dadSVivek Aknurwar .reg = 0xa8154, 1364*67121dadSVivek Aknurwar .shift = 0, 1365*67121dadSVivek Aknurwar .width = 4, 1366*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 1367*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_s1_clk_src", 1368*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1369*67121dadSVivek Aknurwar &gcc_qupv3_wrap3_qspi_ref_clk_src.clkr.hw, 1370*67121dadSVivek Aknurwar }, 1371*67121dadSVivek Aknurwar .num_parents = 1, 1372*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1373*67121dadSVivek Aknurwar .ops = &clk_regmap_div_ro_ops, 1374*67121dadSVivek Aknurwar }, 1375*67121dadSVivek Aknurwar }; 1376*67121dadSVivek Aknurwar 1377*67121dadSVivek Aknurwar static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = { 1378*67121dadSVivek Aknurwar .reg = 0x39064, 1379*67121dadSVivek Aknurwar .shift = 0, 1380*67121dadSVivek Aknurwar .width = 4, 1381*67121dadSVivek Aknurwar .clkr.hw.init = &(const struct clk_init_data) { 1382*67121dadSVivek Aknurwar .name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src", 1383*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1384*67121dadSVivek Aknurwar &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw, 1385*67121dadSVivek Aknurwar }, 1386*67121dadSVivek Aknurwar .num_parents = 1, 1387*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1388*67121dadSVivek Aknurwar .ops = &clk_regmap_div_ro_ops, 1389*67121dadSVivek Aknurwar }, 1390*67121dadSVivek Aknurwar }; 1391*67121dadSVivek Aknurwar 1392*67121dadSVivek Aknurwar static struct clk_branch gcc_aggre_noc_pcie_axi_clk = { 1393*67121dadSVivek Aknurwar .halt_reg = 0x10068, 1394*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_SKIP, 1395*67121dadSVivek Aknurwar .hwcg_reg = 0x10068, 1396*67121dadSVivek Aknurwar .hwcg_bit = 1, 1397*67121dadSVivek Aknurwar .clkr = { 1398*67121dadSVivek Aknurwar .enable_reg = 0x52000, 1399*67121dadSVivek Aknurwar .enable_mask = BIT(24), 1400*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1401*67121dadSVivek Aknurwar .name = "gcc_aggre_noc_pcie_axi_clk", 1402*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1403*67121dadSVivek Aknurwar }, 1404*67121dadSVivek Aknurwar }, 1405*67121dadSVivek Aknurwar }; 1406*67121dadSVivek Aknurwar 1407*67121dadSVivek Aknurwar static struct clk_branch gcc_aggre_stardustnoc_usb3_prim_axi_clk = { 1408*67121dadSVivek Aknurwar .halt_reg = 0x39094, 1409*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1410*67121dadSVivek Aknurwar .hwcg_reg = 0x39094, 1411*67121dadSVivek Aknurwar .hwcg_bit = 1, 1412*67121dadSVivek Aknurwar .clkr = { 1413*67121dadSVivek Aknurwar .enable_reg = 0x39094, 1414*67121dadSVivek Aknurwar .enable_mask = BIT(0), 1415*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1416*67121dadSVivek Aknurwar .name = "gcc_aggre_stardustnoc_usb3_prim_axi_clk", 1417*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1418*67121dadSVivek Aknurwar &gcc_usb30_prim_master_clk_src.clkr.hw, 1419*67121dadSVivek Aknurwar }, 1420*67121dadSVivek Aknurwar .num_parents = 1, 1421*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1422*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1423*67121dadSVivek Aknurwar }, 1424*67121dadSVivek Aknurwar }, 1425*67121dadSVivek Aknurwar }; 1426*67121dadSVivek Aknurwar 1427*67121dadSVivek Aknurwar static struct clk_branch gcc_aggre_ufs_phy_axi_clk = { 1428*67121dadSVivek Aknurwar .halt_reg = 0x770f0, 1429*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1430*67121dadSVivek Aknurwar .hwcg_reg = 0x770f0, 1431*67121dadSVivek Aknurwar .hwcg_bit = 1, 1432*67121dadSVivek Aknurwar .clkr = { 1433*67121dadSVivek Aknurwar .enable_reg = 0x770f0, 1434*67121dadSVivek Aknurwar .enable_mask = BIT(0), 1435*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1436*67121dadSVivek Aknurwar .name = "gcc_aggre_ufs_phy_axi_clk", 1437*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1438*67121dadSVivek Aknurwar &gcc_ufs_phy_axi_clk_src.clkr.hw, 1439*67121dadSVivek Aknurwar }, 1440*67121dadSVivek Aknurwar .num_parents = 1, 1441*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1442*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1443*67121dadSVivek Aknurwar }, 1444*67121dadSVivek Aknurwar }, 1445*67121dadSVivek Aknurwar }; 1446*67121dadSVivek Aknurwar 1447*67121dadSVivek Aknurwar static struct clk_branch gcc_boot_rom_ahb_clk = { 1448*67121dadSVivek Aknurwar .halt_reg = 0x38004, 1449*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1450*67121dadSVivek Aknurwar .hwcg_reg = 0x38004, 1451*67121dadSVivek Aknurwar .hwcg_bit = 1, 1452*67121dadSVivek Aknurwar .clkr = { 1453*67121dadSVivek Aknurwar .enable_reg = 0x52010, 1454*67121dadSVivek Aknurwar .enable_mask = BIT(18), 1455*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1456*67121dadSVivek Aknurwar .name = "gcc_boot_rom_ahb_clk", 1457*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1458*67121dadSVivek Aknurwar }, 1459*67121dadSVivek Aknurwar }, 1460*67121dadSVivek Aknurwar }; 1461*67121dadSVivek Aknurwar 1462*67121dadSVivek Aknurwar static struct clk_branch gcc_camera_hf_axi_clk = { 1463*67121dadSVivek Aknurwar .halt_reg = 0x26014, 1464*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_SKIP, 1465*67121dadSVivek Aknurwar .hwcg_reg = 0x26014, 1466*67121dadSVivek Aknurwar .hwcg_bit = 1, 1467*67121dadSVivek Aknurwar .clkr = { 1468*67121dadSVivek Aknurwar .enable_reg = 0x26014, 1469*67121dadSVivek Aknurwar .enable_mask = BIT(0), 1470*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1471*67121dadSVivek Aknurwar .name = "gcc_camera_hf_axi_clk", 1472*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1473*67121dadSVivek Aknurwar }, 1474*67121dadSVivek Aknurwar }, 1475*67121dadSVivek Aknurwar }; 1476*67121dadSVivek Aknurwar 1477*67121dadSVivek Aknurwar static struct clk_branch gcc_camera_sf_axi_clk = { 1478*67121dadSVivek Aknurwar .halt_reg = 0x2601c, 1479*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_SKIP, 1480*67121dadSVivek Aknurwar .hwcg_reg = 0x2601c, 1481*67121dadSVivek Aknurwar .hwcg_bit = 1, 1482*67121dadSVivek Aknurwar .clkr = { 1483*67121dadSVivek Aknurwar .enable_reg = 0x2601c, 1484*67121dadSVivek Aknurwar .enable_mask = BIT(0), 1485*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1486*67121dadSVivek Aknurwar .name = "gcc_camera_sf_axi_clk", 1487*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1488*67121dadSVivek Aknurwar }, 1489*67121dadSVivek Aknurwar }, 1490*67121dadSVivek Aknurwar }; 1491*67121dadSVivek Aknurwar 1492*67121dadSVivek Aknurwar static struct clk_branch gcc_cfg_noc_pcie_anoc_ahb_clk = { 1493*67121dadSVivek Aknurwar .halt_reg = 0x10050, 1494*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_SKIP, 1495*67121dadSVivek Aknurwar .hwcg_reg = 0x10050, 1496*67121dadSVivek Aknurwar .hwcg_bit = 1, 1497*67121dadSVivek Aknurwar .clkr = { 1498*67121dadSVivek Aknurwar .enable_reg = 0x52000, 1499*67121dadSVivek Aknurwar .enable_mask = BIT(20), 1500*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1501*67121dadSVivek Aknurwar .name = "gcc_cfg_noc_pcie_anoc_ahb_clk", 1502*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1503*67121dadSVivek Aknurwar }, 1504*67121dadSVivek Aknurwar }, 1505*67121dadSVivek Aknurwar }; 1506*67121dadSVivek Aknurwar 1507*67121dadSVivek Aknurwar static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = { 1508*67121dadSVivek Aknurwar .halt_reg = 0x39090, 1509*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1510*67121dadSVivek Aknurwar .hwcg_reg = 0x39090, 1511*67121dadSVivek Aknurwar .hwcg_bit = 1, 1512*67121dadSVivek Aknurwar .clkr = { 1513*67121dadSVivek Aknurwar .enable_reg = 0x39090, 1514*67121dadSVivek Aknurwar .enable_mask = BIT(0), 1515*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1516*67121dadSVivek Aknurwar .name = "gcc_cfg_noc_usb3_prim_axi_clk", 1517*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1518*67121dadSVivek Aknurwar &gcc_usb30_prim_master_clk_src.clkr.hw, 1519*67121dadSVivek Aknurwar }, 1520*67121dadSVivek Aknurwar .num_parents = 1, 1521*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1522*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1523*67121dadSVivek Aknurwar }, 1524*67121dadSVivek Aknurwar }, 1525*67121dadSVivek Aknurwar }; 1526*67121dadSVivek Aknurwar 1527*67121dadSVivek Aknurwar static struct clk_branch gcc_cnoc_pcie_sf_axi_clk = { 1528*67121dadSVivek Aknurwar .halt_reg = 0x10058, 1529*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1530*67121dadSVivek Aknurwar .clkr = { 1531*67121dadSVivek Aknurwar .enable_reg = 0x52008, 1532*67121dadSVivek Aknurwar .enable_mask = BIT(6), 1533*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1534*67121dadSVivek Aknurwar .name = "gcc_cnoc_pcie_sf_axi_clk", 1535*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1536*67121dadSVivek Aknurwar }, 1537*67121dadSVivek Aknurwar }, 1538*67121dadSVivek Aknurwar }; 1539*67121dadSVivek Aknurwar 1540*67121dadSVivek Aknurwar static struct clk_branch gcc_eva_axi0_clk = { 1541*67121dadSVivek Aknurwar .halt_reg = 0x9f008, 1542*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_SKIP, 1543*67121dadSVivek Aknurwar .hwcg_reg = 0x9f008, 1544*67121dadSVivek Aknurwar .hwcg_bit = 1, 1545*67121dadSVivek Aknurwar .clkr = { 1546*67121dadSVivek Aknurwar .enable_reg = 0x9f008, 1547*67121dadSVivek Aknurwar .enable_mask = BIT(0), 1548*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1549*67121dadSVivek Aknurwar .name = "gcc_eva_axi0_clk", 1550*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1551*67121dadSVivek Aknurwar }, 1552*67121dadSVivek Aknurwar }, 1553*67121dadSVivek Aknurwar }; 1554*67121dadSVivek Aknurwar 1555*67121dadSVivek Aknurwar static struct clk_branch gcc_eva_axi0c_clk = { 1556*67121dadSVivek Aknurwar .halt_reg = 0x9f010, 1557*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_SKIP, 1558*67121dadSVivek Aknurwar .hwcg_reg = 0x9f010, 1559*67121dadSVivek Aknurwar .hwcg_bit = 1, 1560*67121dadSVivek Aknurwar .clkr = { 1561*67121dadSVivek Aknurwar .enable_reg = 0x9f010, 1562*67121dadSVivek Aknurwar .enable_mask = BIT(0), 1563*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1564*67121dadSVivek Aknurwar .name = "gcc_eva_axi0c_clk", 1565*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1566*67121dadSVivek Aknurwar }, 1567*67121dadSVivek Aknurwar }, 1568*67121dadSVivek Aknurwar }; 1569*67121dadSVivek Aknurwar 1570*67121dadSVivek Aknurwar static struct clk_branch gcc_gp1_clk = { 1571*67121dadSVivek Aknurwar .halt_reg = 0x64000, 1572*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT, 1573*67121dadSVivek Aknurwar .clkr = { 1574*67121dadSVivek Aknurwar .enable_reg = 0x64000, 1575*67121dadSVivek Aknurwar .enable_mask = BIT(0), 1576*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1577*67121dadSVivek Aknurwar .name = "gcc_gp1_clk", 1578*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1579*67121dadSVivek Aknurwar &gcc_gp1_clk_src.clkr.hw, 1580*67121dadSVivek Aknurwar }, 1581*67121dadSVivek Aknurwar .num_parents = 1, 1582*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1583*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1584*67121dadSVivek Aknurwar }, 1585*67121dadSVivek Aknurwar }, 1586*67121dadSVivek Aknurwar }; 1587*67121dadSVivek Aknurwar 1588*67121dadSVivek Aknurwar static struct clk_branch gcc_gp2_clk = { 1589*67121dadSVivek Aknurwar .halt_reg = 0x65000, 1590*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT, 1591*67121dadSVivek Aknurwar .clkr = { 1592*67121dadSVivek Aknurwar .enable_reg = 0x65000, 1593*67121dadSVivek Aknurwar .enable_mask = BIT(0), 1594*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1595*67121dadSVivek Aknurwar .name = "gcc_gp2_clk", 1596*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1597*67121dadSVivek Aknurwar &gcc_gp2_clk_src.clkr.hw, 1598*67121dadSVivek Aknurwar }, 1599*67121dadSVivek Aknurwar .num_parents = 1, 1600*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1601*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1602*67121dadSVivek Aknurwar }, 1603*67121dadSVivek Aknurwar }, 1604*67121dadSVivek Aknurwar }; 1605*67121dadSVivek Aknurwar 1606*67121dadSVivek Aknurwar static struct clk_branch gcc_gp3_clk = { 1607*67121dadSVivek Aknurwar .halt_reg = 0x66000, 1608*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT, 1609*67121dadSVivek Aknurwar .clkr = { 1610*67121dadSVivek Aknurwar .enable_reg = 0x66000, 1611*67121dadSVivek Aknurwar .enable_mask = BIT(0), 1612*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1613*67121dadSVivek Aknurwar .name = "gcc_gp3_clk", 1614*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1615*67121dadSVivek Aknurwar &gcc_gp3_clk_src.clkr.hw, 1616*67121dadSVivek Aknurwar }, 1617*67121dadSVivek Aknurwar .num_parents = 1, 1618*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1619*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1620*67121dadSVivek Aknurwar }, 1621*67121dadSVivek Aknurwar }, 1622*67121dadSVivek Aknurwar }; 1623*67121dadSVivek Aknurwar 1624*67121dadSVivek Aknurwar static struct clk_branch gcc_gpu_gemnoc_gfx_clk = { 1625*67121dadSVivek Aknurwar .halt_reg = 0x71010, 1626*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1627*67121dadSVivek Aknurwar .hwcg_reg = 0x71010, 1628*67121dadSVivek Aknurwar .hwcg_bit = 1, 1629*67121dadSVivek Aknurwar .clkr = { 1630*67121dadSVivek Aknurwar .enable_reg = 0x71010, 1631*67121dadSVivek Aknurwar .enable_mask = BIT(0), 1632*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1633*67121dadSVivek Aknurwar .name = "gcc_gpu_gemnoc_gfx_clk", 1634*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1635*67121dadSVivek Aknurwar }, 1636*67121dadSVivek Aknurwar }, 1637*67121dadSVivek Aknurwar }; 1638*67121dadSVivek Aknurwar 1639*67121dadSVivek Aknurwar static struct clk_branch gcc_gpu_gpll0_clk_src = { 1640*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_DELAY, 1641*67121dadSVivek Aknurwar .clkr = { 1642*67121dadSVivek Aknurwar .enable_reg = 0x52000, 1643*67121dadSVivek Aknurwar .enable_mask = BIT(15), 1644*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1645*67121dadSVivek Aknurwar .name = "gcc_gpu_gpll0_clk_src", 1646*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1647*67121dadSVivek Aknurwar &gcc_gpll0.clkr.hw, 1648*67121dadSVivek Aknurwar }, 1649*67121dadSVivek Aknurwar .num_parents = 1, 1650*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1651*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1652*67121dadSVivek Aknurwar }, 1653*67121dadSVivek Aknurwar }, 1654*67121dadSVivek Aknurwar }; 1655*67121dadSVivek Aknurwar 1656*67121dadSVivek Aknurwar static struct clk_branch gcc_gpu_gpll0_div_clk_src = { 1657*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_DELAY, 1658*67121dadSVivek Aknurwar .clkr = { 1659*67121dadSVivek Aknurwar .enable_reg = 0x52000, 1660*67121dadSVivek Aknurwar .enable_mask = BIT(16), 1661*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1662*67121dadSVivek Aknurwar .name = "gcc_gpu_gpll0_div_clk_src", 1663*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1664*67121dadSVivek Aknurwar &gcc_gpll0_out_even.clkr.hw, 1665*67121dadSVivek Aknurwar }, 1666*67121dadSVivek Aknurwar .num_parents = 1, 1667*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1668*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1669*67121dadSVivek Aknurwar }, 1670*67121dadSVivek Aknurwar }, 1671*67121dadSVivek Aknurwar }; 1672*67121dadSVivek Aknurwar 1673*67121dadSVivek Aknurwar static struct clk_branch gcc_gpu_smmu_vote_clk = { 1674*67121dadSVivek Aknurwar .halt_reg = 0x7d000, 1675*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1676*67121dadSVivek Aknurwar .clkr = { 1677*67121dadSVivek Aknurwar .enable_reg = 0x7d000, 1678*67121dadSVivek Aknurwar .enable_mask = BIT(0), 1679*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1680*67121dadSVivek Aknurwar .name = "gcc_gpu_smmu_vote_clk", 1681*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1682*67121dadSVivek Aknurwar }, 1683*67121dadSVivek Aknurwar }, 1684*67121dadSVivek Aknurwar }; 1685*67121dadSVivek Aknurwar 1686*67121dadSVivek Aknurwar static struct clk_branch gcc_mmu_tcu_vote_clk = { 1687*67121dadSVivek Aknurwar .halt_reg = 0x7d02c, 1688*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1689*67121dadSVivek Aknurwar .clkr = { 1690*67121dadSVivek Aknurwar .enable_reg = 0x7d02c, 1691*67121dadSVivek Aknurwar .enable_mask = BIT(0), 1692*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1693*67121dadSVivek Aknurwar .name = "gcc_mmu_tcu_vote_clk", 1694*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1695*67121dadSVivek Aknurwar }, 1696*67121dadSVivek Aknurwar }, 1697*67121dadSVivek Aknurwar }; 1698*67121dadSVivek Aknurwar 1699*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_aux_clk = { 1700*67121dadSVivek Aknurwar .halt_reg = 0x6b044, 1701*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1702*67121dadSVivek Aknurwar .hwcg_reg = 0x6b044, 1703*67121dadSVivek Aknurwar .hwcg_bit = 1, 1704*67121dadSVivek Aknurwar .clkr = { 1705*67121dadSVivek Aknurwar .enable_reg = 0x52020, 1706*67121dadSVivek Aknurwar .enable_mask = BIT(4), 1707*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1708*67121dadSVivek Aknurwar .name = "gcc_pcie_0_aux_clk", 1709*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1710*67121dadSVivek Aknurwar &gcc_pcie_0_aux_clk_src.clkr.hw, 1711*67121dadSVivek Aknurwar }, 1712*67121dadSVivek Aknurwar .num_parents = 1, 1713*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1714*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1715*67121dadSVivek Aknurwar }, 1716*67121dadSVivek Aknurwar }, 1717*67121dadSVivek Aknurwar }; 1718*67121dadSVivek Aknurwar 1719*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_cfg_ahb_clk = { 1720*67121dadSVivek Aknurwar .halt_reg = 0x6b040, 1721*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1722*67121dadSVivek Aknurwar .hwcg_reg = 0x6b040, 1723*67121dadSVivek Aknurwar .hwcg_bit = 1, 1724*67121dadSVivek Aknurwar .clkr = { 1725*67121dadSVivek Aknurwar .enable_reg = 0x52020, 1726*67121dadSVivek Aknurwar .enable_mask = BIT(3), 1727*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1728*67121dadSVivek Aknurwar .name = "gcc_pcie_0_cfg_ahb_clk", 1729*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1730*67121dadSVivek Aknurwar }, 1731*67121dadSVivek Aknurwar }, 1732*67121dadSVivek Aknurwar }; 1733*67121dadSVivek Aknurwar 1734*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_mstr_axi_clk = { 1735*67121dadSVivek Aknurwar .halt_reg = 0x6b030, 1736*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_SKIP, 1737*67121dadSVivek Aknurwar .hwcg_reg = 0x6b030, 1738*67121dadSVivek Aknurwar .hwcg_bit = 1, 1739*67121dadSVivek Aknurwar .clkr = { 1740*67121dadSVivek Aknurwar .enable_reg = 0x52020, 1741*67121dadSVivek Aknurwar .enable_mask = BIT(2), 1742*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1743*67121dadSVivek Aknurwar .name = "gcc_pcie_0_mstr_axi_clk", 1744*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1745*67121dadSVivek Aknurwar }, 1746*67121dadSVivek Aknurwar }, 1747*67121dadSVivek Aknurwar }; 1748*67121dadSVivek Aknurwar 1749*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_phy_aux_clk = { 1750*67121dadSVivek Aknurwar .halt_reg = 0x6b054, 1751*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1752*67121dadSVivek Aknurwar .hwcg_reg = 0x6b054, 1753*67121dadSVivek Aknurwar .hwcg_bit = 1, 1754*67121dadSVivek Aknurwar .clkr = { 1755*67121dadSVivek Aknurwar .enable_reg = 0x52020, 1756*67121dadSVivek Aknurwar .enable_mask = BIT(5), 1757*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1758*67121dadSVivek Aknurwar .name = "gcc_pcie_0_phy_aux_clk", 1759*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1760*67121dadSVivek Aknurwar &gcc_pcie_0_phy_aux_clk_src.clkr.hw, 1761*67121dadSVivek Aknurwar }, 1762*67121dadSVivek Aknurwar .num_parents = 1, 1763*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1764*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1765*67121dadSVivek Aknurwar }, 1766*67121dadSVivek Aknurwar }, 1767*67121dadSVivek Aknurwar }; 1768*67121dadSVivek Aknurwar 1769*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_phy_rchng_clk = { 1770*67121dadSVivek Aknurwar .halt_reg = 0x6b084, 1771*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1772*67121dadSVivek Aknurwar .hwcg_reg = 0x6b084, 1773*67121dadSVivek Aknurwar .hwcg_bit = 1, 1774*67121dadSVivek Aknurwar .clkr = { 1775*67121dadSVivek Aknurwar .enable_reg = 0x52020, 1776*67121dadSVivek Aknurwar .enable_mask = BIT(8), 1777*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1778*67121dadSVivek Aknurwar .name = "gcc_pcie_0_phy_rchng_clk", 1779*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1780*67121dadSVivek Aknurwar &gcc_pcie_0_phy_rchng_clk_src.clkr.hw, 1781*67121dadSVivek Aknurwar }, 1782*67121dadSVivek Aknurwar .num_parents = 1, 1783*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1784*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1785*67121dadSVivek Aknurwar }, 1786*67121dadSVivek Aknurwar }, 1787*67121dadSVivek Aknurwar }; 1788*67121dadSVivek Aknurwar 1789*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_pipe_clk = { 1790*67121dadSVivek Aknurwar .halt_reg = 0x6b074, 1791*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_SKIP, 1792*67121dadSVivek Aknurwar .hwcg_reg = 0x6b074, 1793*67121dadSVivek Aknurwar .hwcg_bit = 1, 1794*67121dadSVivek Aknurwar .clkr = { 1795*67121dadSVivek Aknurwar .enable_reg = 0x52020, 1796*67121dadSVivek Aknurwar .enable_mask = BIT(7), 1797*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1798*67121dadSVivek Aknurwar .name = "gcc_pcie_0_pipe_clk", 1799*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1800*67121dadSVivek Aknurwar &gcc_pcie_0_pipe_clk_src.clkr.hw, 1801*67121dadSVivek Aknurwar }, 1802*67121dadSVivek Aknurwar .num_parents = 1, 1803*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1804*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1805*67121dadSVivek Aknurwar }, 1806*67121dadSVivek Aknurwar }, 1807*67121dadSVivek Aknurwar }; 1808*67121dadSVivek Aknurwar 1809*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_pipe_div2_clk = { 1810*67121dadSVivek Aknurwar .halt_reg = 0x6b064, 1811*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_SKIP, 1812*67121dadSVivek Aknurwar .hwcg_reg = 0x6b064, 1813*67121dadSVivek Aknurwar .hwcg_bit = 1, 1814*67121dadSVivek Aknurwar .clkr = { 1815*67121dadSVivek Aknurwar .enable_reg = 0x52020, 1816*67121dadSVivek Aknurwar .enable_mask = BIT(6), 1817*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1818*67121dadSVivek Aknurwar .name = "gcc_pcie_0_pipe_div2_clk", 1819*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1820*67121dadSVivek Aknurwar &gcc_pcie_0_pipe_div_clk_src.clkr.hw, 1821*67121dadSVivek Aknurwar }, 1822*67121dadSVivek Aknurwar .num_parents = 1, 1823*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1824*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1825*67121dadSVivek Aknurwar }, 1826*67121dadSVivek Aknurwar }, 1827*67121dadSVivek Aknurwar }; 1828*67121dadSVivek Aknurwar 1829*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_slv_axi_clk = { 1830*67121dadSVivek Aknurwar .halt_reg = 0x6b020, 1831*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1832*67121dadSVivek Aknurwar .hwcg_reg = 0x6b020, 1833*67121dadSVivek Aknurwar .hwcg_bit = 1, 1834*67121dadSVivek Aknurwar .clkr = { 1835*67121dadSVivek Aknurwar .enable_reg = 0x52020, 1836*67121dadSVivek Aknurwar .enable_mask = BIT(1), 1837*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1838*67121dadSVivek Aknurwar .name = "gcc_pcie_0_slv_axi_clk", 1839*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1840*67121dadSVivek Aknurwar }, 1841*67121dadSVivek Aknurwar }, 1842*67121dadSVivek Aknurwar }; 1843*67121dadSVivek Aknurwar 1844*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = { 1845*67121dadSVivek Aknurwar .halt_reg = 0x6b01c, 1846*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1847*67121dadSVivek Aknurwar .hwcg_reg = 0x6b01c, 1848*67121dadSVivek Aknurwar .hwcg_bit = 1, 1849*67121dadSVivek Aknurwar .clkr = { 1850*67121dadSVivek Aknurwar .enable_reg = 0x52020, 1851*67121dadSVivek Aknurwar .enable_mask = BIT(0), 1852*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1853*67121dadSVivek Aknurwar .name = "gcc_pcie_0_slv_q2a_axi_clk", 1854*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1855*67121dadSVivek Aknurwar }, 1856*67121dadSVivek Aknurwar }, 1857*67121dadSVivek Aknurwar }; 1858*67121dadSVivek Aknurwar 1859*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_aux_clk = { 1860*67121dadSVivek Aknurwar .halt_reg = 0x67040, 1861*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1862*67121dadSVivek Aknurwar .clkr = { 1863*67121dadSVivek Aknurwar .enable_reg = 0x52010, 1864*67121dadSVivek Aknurwar .enable_mask = BIT(10), 1865*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1866*67121dadSVivek Aknurwar .name = "gcc_pcie_1_aux_clk", 1867*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1868*67121dadSVivek Aknurwar &gcc_pcie_1_aux_clk_src.clkr.hw, 1869*67121dadSVivek Aknurwar }, 1870*67121dadSVivek Aknurwar .num_parents = 1, 1871*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1872*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1873*67121dadSVivek Aknurwar }, 1874*67121dadSVivek Aknurwar }, 1875*67121dadSVivek Aknurwar }; 1876*67121dadSVivek Aknurwar 1877*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_cfg_ahb_clk = { 1878*67121dadSVivek Aknurwar .halt_reg = 0x6703c, 1879*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1880*67121dadSVivek Aknurwar .hwcg_reg = 0x6703c, 1881*67121dadSVivek Aknurwar .hwcg_bit = 1, 1882*67121dadSVivek Aknurwar .clkr = { 1883*67121dadSVivek Aknurwar .enable_reg = 0x52010, 1884*67121dadSVivek Aknurwar .enable_mask = BIT(9), 1885*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1886*67121dadSVivek Aknurwar .name = "gcc_pcie_1_cfg_ahb_clk", 1887*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1888*67121dadSVivek Aknurwar }, 1889*67121dadSVivek Aknurwar }, 1890*67121dadSVivek Aknurwar }; 1891*67121dadSVivek Aknurwar 1892*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_mstr_axi_clk = { 1893*67121dadSVivek Aknurwar .halt_reg = 0x6702c, 1894*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_SKIP, 1895*67121dadSVivek Aknurwar .hwcg_reg = 0x6702c, 1896*67121dadSVivek Aknurwar .hwcg_bit = 1, 1897*67121dadSVivek Aknurwar .clkr = { 1898*67121dadSVivek Aknurwar .enable_reg = 0x52008, 1899*67121dadSVivek Aknurwar .enable_mask = BIT(17), 1900*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1901*67121dadSVivek Aknurwar .name = "gcc_pcie_1_mstr_axi_clk", 1902*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1903*67121dadSVivek Aknurwar }, 1904*67121dadSVivek Aknurwar }, 1905*67121dadSVivek Aknurwar }; 1906*67121dadSVivek Aknurwar 1907*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_phy_aux_clk = { 1908*67121dadSVivek Aknurwar .halt_reg = 0x67050, 1909*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1910*67121dadSVivek Aknurwar .clkr = { 1911*67121dadSVivek Aknurwar .enable_reg = 0x52010, 1912*67121dadSVivek Aknurwar .enable_mask = BIT(14), 1913*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1914*67121dadSVivek Aknurwar .name = "gcc_pcie_1_phy_aux_clk", 1915*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1916*67121dadSVivek Aknurwar &gcc_pcie_1_phy_aux_clk_src.clkr.hw, 1917*67121dadSVivek Aknurwar }, 1918*67121dadSVivek Aknurwar .num_parents = 1, 1919*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1920*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1921*67121dadSVivek Aknurwar }, 1922*67121dadSVivek Aknurwar }, 1923*67121dadSVivek Aknurwar }; 1924*67121dadSVivek Aknurwar 1925*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_phy_rchng_clk = { 1926*67121dadSVivek Aknurwar .halt_reg = 0x67080, 1927*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1928*67121dadSVivek Aknurwar .clkr = { 1929*67121dadSVivek Aknurwar .enable_reg = 0x52010, 1930*67121dadSVivek Aknurwar .enable_mask = BIT(26), 1931*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1932*67121dadSVivek Aknurwar .name = "gcc_pcie_1_phy_rchng_clk", 1933*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1934*67121dadSVivek Aknurwar &gcc_pcie_1_phy_rchng_clk_src.clkr.hw, 1935*67121dadSVivek Aknurwar }, 1936*67121dadSVivek Aknurwar .num_parents = 1, 1937*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1938*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1939*67121dadSVivek Aknurwar }, 1940*67121dadSVivek Aknurwar }, 1941*67121dadSVivek Aknurwar }; 1942*67121dadSVivek Aknurwar 1943*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_pipe_clk = { 1944*67121dadSVivek Aknurwar .halt_reg = 0x67070, 1945*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_SKIP, 1946*67121dadSVivek Aknurwar .clkr = { 1947*67121dadSVivek Aknurwar .enable_reg = 0x52010, 1948*67121dadSVivek Aknurwar .enable_mask = BIT(17), 1949*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1950*67121dadSVivek Aknurwar .name = "gcc_pcie_1_pipe_clk", 1951*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1952*67121dadSVivek Aknurwar &gcc_pcie_1_pipe_clk_src.clkr.hw, 1953*67121dadSVivek Aknurwar }, 1954*67121dadSVivek Aknurwar .num_parents = 1, 1955*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1956*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1957*67121dadSVivek Aknurwar }, 1958*67121dadSVivek Aknurwar }, 1959*67121dadSVivek Aknurwar }; 1960*67121dadSVivek Aknurwar 1961*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_pipe_div2_clk = { 1962*67121dadSVivek Aknurwar .halt_reg = 0x67060, 1963*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_SKIP, 1964*67121dadSVivek Aknurwar .clkr = { 1965*67121dadSVivek Aknurwar .enable_reg = 0x52010, 1966*67121dadSVivek Aknurwar .enable_mask = BIT(15), 1967*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1968*67121dadSVivek Aknurwar .name = "gcc_pcie_1_pipe_div2_clk", 1969*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 1970*67121dadSVivek Aknurwar &gcc_pcie_1_pipe_div_clk_src.clkr.hw, 1971*67121dadSVivek Aknurwar }, 1972*67121dadSVivek Aknurwar .num_parents = 1, 1973*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 1974*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1975*67121dadSVivek Aknurwar }, 1976*67121dadSVivek Aknurwar }, 1977*67121dadSVivek Aknurwar }; 1978*67121dadSVivek Aknurwar 1979*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_slv_axi_clk = { 1980*67121dadSVivek Aknurwar .halt_reg = 0x6701c, 1981*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1982*67121dadSVivek Aknurwar .hwcg_reg = 0x6701c, 1983*67121dadSVivek Aknurwar .hwcg_bit = 1, 1984*67121dadSVivek Aknurwar .clkr = { 1985*67121dadSVivek Aknurwar .enable_reg = 0x52008, 1986*67121dadSVivek Aknurwar .enable_mask = BIT(16), 1987*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 1988*67121dadSVivek Aknurwar .name = "gcc_pcie_1_slv_axi_clk", 1989*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 1990*67121dadSVivek Aknurwar }, 1991*67121dadSVivek Aknurwar }, 1992*67121dadSVivek Aknurwar }; 1993*67121dadSVivek Aknurwar 1994*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = { 1995*67121dadSVivek Aknurwar .halt_reg = 0x67018, 1996*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 1997*67121dadSVivek Aknurwar .clkr = { 1998*67121dadSVivek Aknurwar .enable_reg = 0x52008, 1999*67121dadSVivek Aknurwar .enable_mask = BIT(15), 2000*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2001*67121dadSVivek Aknurwar .name = "gcc_pcie_1_slv_q2a_axi_clk", 2002*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2003*67121dadSVivek Aknurwar }, 2004*67121dadSVivek Aknurwar }, 2005*67121dadSVivek Aknurwar }; 2006*67121dadSVivek Aknurwar 2007*67121dadSVivek Aknurwar static struct clk_branch gcc_pdm2_clk = { 2008*67121dadSVivek Aknurwar .halt_reg = 0x3300c, 2009*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT, 2010*67121dadSVivek Aknurwar .clkr = { 2011*67121dadSVivek Aknurwar .enable_reg = 0x3300c, 2012*67121dadSVivek Aknurwar .enable_mask = BIT(0), 2013*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2014*67121dadSVivek Aknurwar .name = "gcc_pdm2_clk", 2015*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2016*67121dadSVivek Aknurwar &gcc_pdm2_clk_src.clkr.hw, 2017*67121dadSVivek Aknurwar }, 2018*67121dadSVivek Aknurwar .num_parents = 1, 2019*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2020*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2021*67121dadSVivek Aknurwar }, 2022*67121dadSVivek Aknurwar }, 2023*67121dadSVivek Aknurwar }; 2024*67121dadSVivek Aknurwar 2025*67121dadSVivek Aknurwar static struct clk_branch gcc_pdm_ahb_clk = { 2026*67121dadSVivek Aknurwar .halt_reg = 0x33004, 2027*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2028*67121dadSVivek Aknurwar .hwcg_reg = 0x33004, 2029*67121dadSVivek Aknurwar .hwcg_bit = 1, 2030*67121dadSVivek Aknurwar .clkr = { 2031*67121dadSVivek Aknurwar .enable_reg = 0x33004, 2032*67121dadSVivek Aknurwar .enable_mask = BIT(0), 2033*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2034*67121dadSVivek Aknurwar .name = "gcc_pdm_ahb_clk", 2035*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2036*67121dadSVivek Aknurwar }, 2037*67121dadSVivek Aknurwar }, 2038*67121dadSVivek Aknurwar }; 2039*67121dadSVivek Aknurwar 2040*67121dadSVivek Aknurwar static struct clk_branch gcc_pdm_xo4_clk = { 2041*67121dadSVivek Aknurwar .halt_reg = 0x33008, 2042*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT, 2043*67121dadSVivek Aknurwar .clkr = { 2044*67121dadSVivek Aknurwar .enable_reg = 0x33008, 2045*67121dadSVivek Aknurwar .enable_mask = BIT(0), 2046*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2047*67121dadSVivek Aknurwar .name = "gcc_pdm_xo4_clk", 2048*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2049*67121dadSVivek Aknurwar }, 2050*67121dadSVivek Aknurwar }, 2051*67121dadSVivek Aknurwar }; 2052*67121dadSVivek Aknurwar 2053*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_i2c_core_clk = { 2054*67121dadSVivek Aknurwar .halt_reg = 0x23004, 2055*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2056*67121dadSVivek Aknurwar .clkr = { 2057*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2058*67121dadSVivek Aknurwar .enable_mask = BIT(8), 2059*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2060*67121dadSVivek Aknurwar .name = "gcc_qupv3_i2c_core_clk", 2061*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2062*67121dadSVivek Aknurwar }, 2063*67121dadSVivek Aknurwar }, 2064*67121dadSVivek Aknurwar }; 2065*67121dadSVivek Aknurwar 2066*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_i2c_s0_clk = { 2067*67121dadSVivek Aknurwar .halt_reg = 0x17004, 2068*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2069*67121dadSVivek Aknurwar .clkr = { 2070*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2071*67121dadSVivek Aknurwar .enable_mask = BIT(10), 2072*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2073*67121dadSVivek Aknurwar .name = "gcc_qupv3_i2c_s0_clk", 2074*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2075*67121dadSVivek Aknurwar &gcc_qupv3_i2c_s0_clk_src.clkr.hw, 2076*67121dadSVivek Aknurwar }, 2077*67121dadSVivek Aknurwar .num_parents = 1, 2078*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2079*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2080*67121dadSVivek Aknurwar }, 2081*67121dadSVivek Aknurwar }, 2082*67121dadSVivek Aknurwar }; 2083*67121dadSVivek Aknurwar 2084*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_i2c_s1_clk = { 2085*67121dadSVivek Aknurwar .halt_reg = 0x17020, 2086*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2087*67121dadSVivek Aknurwar .clkr = { 2088*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2089*67121dadSVivek Aknurwar .enable_mask = BIT(11), 2090*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2091*67121dadSVivek Aknurwar .name = "gcc_qupv3_i2c_s1_clk", 2092*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2093*67121dadSVivek Aknurwar &gcc_qupv3_i2c_s1_clk_src.clkr.hw, 2094*67121dadSVivek Aknurwar }, 2095*67121dadSVivek Aknurwar .num_parents = 1, 2096*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2097*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2098*67121dadSVivek Aknurwar }, 2099*67121dadSVivek Aknurwar }, 2100*67121dadSVivek Aknurwar }; 2101*67121dadSVivek Aknurwar 2102*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_i2c_s2_clk = { 2103*67121dadSVivek Aknurwar .halt_reg = 0x1703c, 2104*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2105*67121dadSVivek Aknurwar .clkr = { 2106*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2107*67121dadSVivek Aknurwar .enable_mask = BIT(12), 2108*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2109*67121dadSVivek Aknurwar .name = "gcc_qupv3_i2c_s2_clk", 2110*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2111*67121dadSVivek Aknurwar &gcc_qupv3_i2c_s2_clk_src.clkr.hw, 2112*67121dadSVivek Aknurwar }, 2113*67121dadSVivek Aknurwar .num_parents = 1, 2114*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2115*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2116*67121dadSVivek Aknurwar }, 2117*67121dadSVivek Aknurwar }, 2118*67121dadSVivek Aknurwar }; 2119*67121dadSVivek Aknurwar 2120*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_i2c_s3_clk = { 2121*67121dadSVivek Aknurwar .halt_reg = 0x17058, 2122*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2123*67121dadSVivek Aknurwar .clkr = { 2124*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2125*67121dadSVivek Aknurwar .enable_mask = BIT(13), 2126*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2127*67121dadSVivek Aknurwar .name = "gcc_qupv3_i2c_s3_clk", 2128*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2129*67121dadSVivek Aknurwar &gcc_qupv3_i2c_s3_clk_src.clkr.hw, 2130*67121dadSVivek Aknurwar }, 2131*67121dadSVivek Aknurwar .num_parents = 1, 2132*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2133*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2134*67121dadSVivek Aknurwar }, 2135*67121dadSVivek Aknurwar }, 2136*67121dadSVivek Aknurwar }; 2137*67121dadSVivek Aknurwar 2138*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_i2c_s4_clk = { 2139*67121dadSVivek Aknurwar .halt_reg = 0x17074, 2140*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2141*67121dadSVivek Aknurwar .clkr = { 2142*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2143*67121dadSVivek Aknurwar .enable_mask = BIT(14), 2144*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2145*67121dadSVivek Aknurwar .name = "gcc_qupv3_i2c_s4_clk", 2146*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2147*67121dadSVivek Aknurwar &gcc_qupv3_i2c_s4_clk_src.clkr.hw, 2148*67121dadSVivek Aknurwar }, 2149*67121dadSVivek Aknurwar .num_parents = 1, 2150*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2151*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2152*67121dadSVivek Aknurwar }, 2153*67121dadSVivek Aknurwar }, 2154*67121dadSVivek Aknurwar }; 2155*67121dadSVivek Aknurwar 2156*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_i2c_s_ahb_clk = { 2157*67121dadSVivek Aknurwar .halt_reg = 0x23000, 2158*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2159*67121dadSVivek Aknurwar .hwcg_reg = 0x23000, 2160*67121dadSVivek Aknurwar .hwcg_bit = 1, 2161*67121dadSVivek Aknurwar .clkr = { 2162*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2163*67121dadSVivek Aknurwar .enable_mask = BIT(7), 2164*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2165*67121dadSVivek Aknurwar .name = "gcc_qupv3_i2c_s_ahb_clk", 2166*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2167*67121dadSVivek Aknurwar }, 2168*67121dadSVivek Aknurwar }, 2169*67121dadSVivek Aknurwar }; 2170*67121dadSVivek Aknurwar 2171*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = { 2172*67121dadSVivek Aknurwar .halt_reg = 0x2315c, 2173*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2174*67121dadSVivek Aknurwar .clkr = { 2175*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2176*67121dadSVivek Aknurwar .enable_mask = BIT(18), 2177*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2178*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_core_2x_clk", 2179*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2180*67121dadSVivek Aknurwar }, 2181*67121dadSVivek Aknurwar }, 2182*67121dadSVivek Aknurwar }; 2183*67121dadSVivek Aknurwar 2184*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_core_clk = { 2185*67121dadSVivek Aknurwar .halt_reg = 0x23148, 2186*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2187*67121dadSVivek Aknurwar .clkr = { 2188*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2189*67121dadSVivek Aknurwar .enable_mask = BIT(19), 2190*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2191*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_core_clk", 2192*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2193*67121dadSVivek Aknurwar }, 2194*67121dadSVivek Aknurwar }, 2195*67121dadSVivek Aknurwar }; 2196*67121dadSVivek Aknurwar 2197*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_qspi_ref_clk = { 2198*67121dadSVivek Aknurwar .halt_reg = 0x188bc, 2199*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2200*67121dadSVivek Aknurwar .clkr = { 2201*67121dadSVivek Aknurwar .enable_reg = 0x52010, 2202*67121dadSVivek Aknurwar .enable_mask = BIT(29), 2203*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2204*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_qspi_ref_clk", 2205*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2206*67121dadSVivek Aknurwar &gcc_qupv3_wrap1_qspi_ref_clk_src.clkr.hw, 2207*67121dadSVivek Aknurwar }, 2208*67121dadSVivek Aknurwar .num_parents = 1, 2209*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2210*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2211*67121dadSVivek Aknurwar }, 2212*67121dadSVivek Aknurwar }, 2213*67121dadSVivek Aknurwar }; 2214*67121dadSVivek Aknurwar 2215*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s0_clk = { 2216*67121dadSVivek Aknurwar .halt_reg = 0x18004, 2217*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2218*67121dadSVivek Aknurwar .clkr = { 2219*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2220*67121dadSVivek Aknurwar .enable_mask = BIT(22), 2221*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2222*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s0_clk", 2223*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2224*67121dadSVivek Aknurwar &gcc_qupv3_wrap1_s0_clk_src.clkr.hw, 2225*67121dadSVivek Aknurwar }, 2226*67121dadSVivek Aknurwar .num_parents = 1, 2227*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2228*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2229*67121dadSVivek Aknurwar }, 2230*67121dadSVivek Aknurwar }, 2231*67121dadSVivek Aknurwar }; 2232*67121dadSVivek Aknurwar 2233*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s1_clk = { 2234*67121dadSVivek Aknurwar .halt_reg = 0x18140, 2235*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2236*67121dadSVivek Aknurwar .clkr = { 2237*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2238*67121dadSVivek Aknurwar .enable_mask = BIT(23), 2239*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2240*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s1_clk", 2241*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2242*67121dadSVivek Aknurwar &gcc_qupv3_wrap1_s1_clk_src.clkr.hw, 2243*67121dadSVivek Aknurwar }, 2244*67121dadSVivek Aknurwar .num_parents = 1, 2245*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2246*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2247*67121dadSVivek Aknurwar }, 2248*67121dadSVivek Aknurwar }, 2249*67121dadSVivek Aknurwar }; 2250*67121dadSVivek Aknurwar 2251*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s2_clk = { 2252*67121dadSVivek Aknurwar .halt_reg = 0x1827c, 2253*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2254*67121dadSVivek Aknurwar .clkr = { 2255*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2256*67121dadSVivek Aknurwar .enable_mask = BIT(24), 2257*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2258*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s2_clk", 2259*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2260*67121dadSVivek Aknurwar &gcc_qupv3_wrap1_s2_clk_src.clkr.hw, 2261*67121dadSVivek Aknurwar }, 2262*67121dadSVivek Aknurwar .num_parents = 1, 2263*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2264*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2265*67121dadSVivek Aknurwar }, 2266*67121dadSVivek Aknurwar }, 2267*67121dadSVivek Aknurwar }; 2268*67121dadSVivek Aknurwar 2269*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s3_clk = { 2270*67121dadSVivek Aknurwar .halt_reg = 0x18290, 2271*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2272*67121dadSVivek Aknurwar .clkr = { 2273*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2274*67121dadSVivek Aknurwar .enable_mask = BIT(25), 2275*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2276*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s3_clk", 2277*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2278*67121dadSVivek Aknurwar &gcc_qupv3_wrap1_s3_clk_src.clkr.hw, 2279*67121dadSVivek Aknurwar }, 2280*67121dadSVivek Aknurwar .num_parents = 1, 2281*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2282*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2283*67121dadSVivek Aknurwar }, 2284*67121dadSVivek Aknurwar }, 2285*67121dadSVivek Aknurwar }; 2286*67121dadSVivek Aknurwar 2287*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s4_clk = { 2288*67121dadSVivek Aknurwar .halt_reg = 0x183cc, 2289*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2290*67121dadSVivek Aknurwar .clkr = { 2291*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2292*67121dadSVivek Aknurwar .enable_mask = BIT(26), 2293*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2294*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s4_clk", 2295*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2296*67121dadSVivek Aknurwar &gcc_qupv3_wrap1_s4_clk_src.clkr.hw, 2297*67121dadSVivek Aknurwar }, 2298*67121dadSVivek Aknurwar .num_parents = 1, 2299*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2300*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2301*67121dadSVivek Aknurwar }, 2302*67121dadSVivek Aknurwar }, 2303*67121dadSVivek Aknurwar }; 2304*67121dadSVivek Aknurwar 2305*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s5_clk = { 2306*67121dadSVivek Aknurwar .halt_reg = 0x18508, 2307*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2308*67121dadSVivek Aknurwar .clkr = { 2309*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2310*67121dadSVivek Aknurwar .enable_mask = BIT(27), 2311*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2312*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s5_clk", 2313*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2314*67121dadSVivek Aknurwar &gcc_qupv3_wrap1_s5_clk_src.clkr.hw, 2315*67121dadSVivek Aknurwar }, 2316*67121dadSVivek Aknurwar .num_parents = 1, 2317*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2318*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2319*67121dadSVivek Aknurwar }, 2320*67121dadSVivek Aknurwar }, 2321*67121dadSVivek Aknurwar }; 2322*67121dadSVivek Aknurwar 2323*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s6_clk = { 2324*67121dadSVivek Aknurwar .halt_reg = 0x18644, 2325*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2326*67121dadSVivek Aknurwar .clkr = { 2327*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2328*67121dadSVivek Aknurwar .enable_mask = BIT(28), 2329*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2330*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s6_clk", 2331*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2332*67121dadSVivek Aknurwar &gcc_qupv3_wrap1_s6_clk_src.clkr.hw, 2333*67121dadSVivek Aknurwar }, 2334*67121dadSVivek Aknurwar .num_parents = 1, 2335*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2336*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2337*67121dadSVivek Aknurwar }, 2338*67121dadSVivek Aknurwar }, 2339*67121dadSVivek Aknurwar }; 2340*67121dadSVivek Aknurwar 2341*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s7_clk = { 2342*67121dadSVivek Aknurwar .halt_reg = 0x18780, 2343*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2344*67121dadSVivek Aknurwar .clkr = { 2345*67121dadSVivek Aknurwar .enable_reg = 0x52010, 2346*67121dadSVivek Aknurwar .enable_mask = BIT(16), 2347*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2348*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap1_s7_clk", 2349*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2350*67121dadSVivek Aknurwar &gcc_qupv3_wrap1_s7_clk_src.clkr.hw, 2351*67121dadSVivek Aknurwar }, 2352*67121dadSVivek Aknurwar .num_parents = 1, 2353*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2354*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2355*67121dadSVivek Aknurwar }, 2356*67121dadSVivek Aknurwar }, 2357*67121dadSVivek Aknurwar }; 2358*67121dadSVivek Aknurwar 2359*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = { 2360*67121dadSVivek Aknurwar .halt_reg = 0x232b4, 2361*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2362*67121dadSVivek Aknurwar .clkr = { 2363*67121dadSVivek Aknurwar .enable_reg = 0x52010, 2364*67121dadSVivek Aknurwar .enable_mask = BIT(3), 2365*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2366*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap2_core_2x_clk", 2367*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2368*67121dadSVivek Aknurwar }, 2369*67121dadSVivek Aknurwar }, 2370*67121dadSVivek Aknurwar }; 2371*67121dadSVivek Aknurwar 2372*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap2_core_clk = { 2373*67121dadSVivek Aknurwar .halt_reg = 0x232a0, 2374*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2375*67121dadSVivek Aknurwar .clkr = { 2376*67121dadSVivek Aknurwar .enable_reg = 0x52010, 2377*67121dadSVivek Aknurwar .enable_mask = BIT(0), 2378*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2379*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap2_core_clk", 2380*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2381*67121dadSVivek Aknurwar }, 2382*67121dadSVivek Aknurwar }, 2383*67121dadSVivek Aknurwar }; 2384*67121dadSVivek Aknurwar 2385*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap2_s0_clk = { 2386*67121dadSVivek Aknurwar .halt_reg = 0x1e004, 2387*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2388*67121dadSVivek Aknurwar .clkr = { 2389*67121dadSVivek Aknurwar .enable_reg = 0x52010, 2390*67121dadSVivek Aknurwar .enable_mask = BIT(4), 2391*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2392*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap2_s0_clk", 2393*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2394*67121dadSVivek Aknurwar &gcc_qupv3_wrap2_s0_clk_src.clkr.hw, 2395*67121dadSVivek Aknurwar }, 2396*67121dadSVivek Aknurwar .num_parents = 1, 2397*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2398*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2399*67121dadSVivek Aknurwar }, 2400*67121dadSVivek Aknurwar }, 2401*67121dadSVivek Aknurwar }; 2402*67121dadSVivek Aknurwar 2403*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap2_s1_clk = { 2404*67121dadSVivek Aknurwar .halt_reg = 0x1e148, 2405*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2406*67121dadSVivek Aknurwar .clkr = { 2407*67121dadSVivek Aknurwar .enable_reg = 0x52010, 2408*67121dadSVivek Aknurwar .enable_mask = BIT(5), 2409*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2410*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap2_s1_clk", 2411*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2412*67121dadSVivek Aknurwar &gcc_qupv3_wrap2_s1_clk_src.clkr.hw, 2413*67121dadSVivek Aknurwar }, 2414*67121dadSVivek Aknurwar .num_parents = 1, 2415*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2416*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2417*67121dadSVivek Aknurwar }, 2418*67121dadSVivek Aknurwar }, 2419*67121dadSVivek Aknurwar }; 2420*67121dadSVivek Aknurwar 2421*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap2_s2_clk = { 2422*67121dadSVivek Aknurwar .halt_reg = 0x1e28c, 2423*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2424*67121dadSVivek Aknurwar .clkr = { 2425*67121dadSVivek Aknurwar .enable_reg = 0x52010, 2426*67121dadSVivek Aknurwar .enable_mask = BIT(6), 2427*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2428*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap2_s2_clk", 2429*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2430*67121dadSVivek Aknurwar &gcc_qupv3_wrap2_s2_clk_src.clkr.hw, 2431*67121dadSVivek Aknurwar }, 2432*67121dadSVivek Aknurwar .num_parents = 1, 2433*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2434*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2435*67121dadSVivek Aknurwar }, 2436*67121dadSVivek Aknurwar }, 2437*67121dadSVivek Aknurwar }; 2438*67121dadSVivek Aknurwar 2439*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap2_s3_clk = { 2440*67121dadSVivek Aknurwar .halt_reg = 0x1e3c8, 2441*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2442*67121dadSVivek Aknurwar .clkr = { 2443*67121dadSVivek Aknurwar .enable_reg = 0x52010, 2444*67121dadSVivek Aknurwar .enable_mask = BIT(7), 2445*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2446*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap2_s3_clk", 2447*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2448*67121dadSVivek Aknurwar &gcc_qupv3_wrap2_s3_clk_src.clkr.hw, 2449*67121dadSVivek Aknurwar }, 2450*67121dadSVivek Aknurwar .num_parents = 1, 2451*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2452*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2453*67121dadSVivek Aknurwar }, 2454*67121dadSVivek Aknurwar }, 2455*67121dadSVivek Aknurwar }; 2456*67121dadSVivek Aknurwar 2457*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap2_s4_clk = { 2458*67121dadSVivek Aknurwar .halt_reg = 0x1e504, 2459*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2460*67121dadSVivek Aknurwar .clkr = { 2461*67121dadSVivek Aknurwar .enable_reg = 0x52010, 2462*67121dadSVivek Aknurwar .enable_mask = BIT(8), 2463*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2464*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap2_s4_clk", 2465*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2466*67121dadSVivek Aknurwar &gcc_qupv3_wrap2_s4_clk_src.clkr.hw, 2467*67121dadSVivek Aknurwar }, 2468*67121dadSVivek Aknurwar .num_parents = 1, 2469*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2470*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2471*67121dadSVivek Aknurwar }, 2472*67121dadSVivek Aknurwar }, 2473*67121dadSVivek Aknurwar }; 2474*67121dadSVivek Aknurwar 2475*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_core_2x_clk = { 2476*67121dadSVivek Aknurwar .halt_reg = 0x2340c, 2477*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2478*67121dadSVivek Aknurwar .clkr = { 2479*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2480*67121dadSVivek Aknurwar .enable_mask = BIT(11), 2481*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2482*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_core_2x_clk", 2483*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2484*67121dadSVivek Aknurwar }, 2485*67121dadSVivek Aknurwar }, 2486*67121dadSVivek Aknurwar }; 2487*67121dadSVivek Aknurwar 2488*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_core_clk = { 2489*67121dadSVivek Aknurwar .halt_reg = 0x233f8, 2490*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2491*67121dadSVivek Aknurwar .clkr = { 2492*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2493*67121dadSVivek Aknurwar .enable_mask = BIT(10), 2494*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2495*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_core_clk", 2496*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2497*67121dadSVivek Aknurwar }, 2498*67121dadSVivek Aknurwar }, 2499*67121dadSVivek Aknurwar }; 2500*67121dadSVivek Aknurwar 2501*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_qspi_ref_clk = { 2502*67121dadSVivek Aknurwar .halt_reg = 0xa8648, 2503*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2504*67121dadSVivek Aknurwar .clkr = { 2505*67121dadSVivek Aknurwar .enable_reg = 0x52010, 2506*67121dadSVivek Aknurwar .enable_mask = BIT(25), 2507*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2508*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_qspi_ref_clk", 2509*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2510*67121dadSVivek Aknurwar &gcc_qupv3_wrap3_qspi_ref_clk_src.clkr.hw, 2511*67121dadSVivek Aknurwar }, 2512*67121dadSVivek Aknurwar .num_parents = 1, 2513*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2514*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2515*67121dadSVivek Aknurwar }, 2516*67121dadSVivek Aknurwar }, 2517*67121dadSVivek Aknurwar }; 2518*67121dadSVivek Aknurwar 2519*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_s0_clk = { 2520*67121dadSVivek Aknurwar .halt_reg = 0xa8004, 2521*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2522*67121dadSVivek Aknurwar .clkr = { 2523*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2524*67121dadSVivek Aknurwar .enable_mask = BIT(12), 2525*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2526*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_s0_clk", 2527*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2528*67121dadSVivek Aknurwar &gcc_qupv3_wrap3_s0_clk_src.clkr.hw, 2529*67121dadSVivek Aknurwar }, 2530*67121dadSVivek Aknurwar .num_parents = 1, 2531*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2532*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2533*67121dadSVivek Aknurwar }, 2534*67121dadSVivek Aknurwar }, 2535*67121dadSVivek Aknurwar }; 2536*67121dadSVivek Aknurwar 2537*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_s1_clk = { 2538*67121dadSVivek Aknurwar .halt_reg = 0xa8140, 2539*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2540*67121dadSVivek Aknurwar .clkr = { 2541*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2542*67121dadSVivek Aknurwar .enable_mask = BIT(13), 2543*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2544*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_s1_clk", 2545*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2546*67121dadSVivek Aknurwar &gcc_qupv3_wrap3_s1_clk_src.clkr.hw, 2547*67121dadSVivek Aknurwar }, 2548*67121dadSVivek Aknurwar .num_parents = 1, 2549*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2550*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2551*67121dadSVivek Aknurwar }, 2552*67121dadSVivek Aknurwar }, 2553*67121dadSVivek Aknurwar }; 2554*67121dadSVivek Aknurwar 2555*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_s2_clk = { 2556*67121dadSVivek Aknurwar .halt_reg = 0xa8158, 2557*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2558*67121dadSVivek Aknurwar .clkr = { 2559*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2560*67121dadSVivek Aknurwar .enable_mask = BIT(14), 2561*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2562*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_s2_clk", 2563*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2564*67121dadSVivek Aknurwar &gcc_qupv3_wrap3_s2_clk_src.clkr.hw, 2565*67121dadSVivek Aknurwar }, 2566*67121dadSVivek Aknurwar .num_parents = 1, 2567*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2568*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2569*67121dadSVivek Aknurwar }, 2570*67121dadSVivek Aknurwar }, 2571*67121dadSVivek Aknurwar }; 2572*67121dadSVivek Aknurwar 2573*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_s3_clk = { 2574*67121dadSVivek Aknurwar .halt_reg = 0xa8294, 2575*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2576*67121dadSVivek Aknurwar .clkr = { 2577*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2578*67121dadSVivek Aknurwar .enable_mask = BIT(15), 2579*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2580*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_s3_clk", 2581*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2582*67121dadSVivek Aknurwar &gcc_qupv3_wrap3_s3_clk_src.clkr.hw, 2583*67121dadSVivek Aknurwar }, 2584*67121dadSVivek Aknurwar .num_parents = 1, 2585*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2586*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2587*67121dadSVivek Aknurwar }, 2588*67121dadSVivek Aknurwar }, 2589*67121dadSVivek Aknurwar }; 2590*67121dadSVivek Aknurwar 2591*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_s4_clk = { 2592*67121dadSVivek Aknurwar .halt_reg = 0xa83d0, 2593*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2594*67121dadSVivek Aknurwar .clkr = { 2595*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2596*67121dadSVivek Aknurwar .enable_mask = BIT(16), 2597*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2598*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_s4_clk", 2599*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2600*67121dadSVivek Aknurwar &gcc_qupv3_wrap3_s4_clk_src.clkr.hw, 2601*67121dadSVivek Aknurwar }, 2602*67121dadSVivek Aknurwar .num_parents = 1, 2603*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2604*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2605*67121dadSVivek Aknurwar }, 2606*67121dadSVivek Aknurwar }, 2607*67121dadSVivek Aknurwar }; 2608*67121dadSVivek Aknurwar 2609*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_s5_clk = { 2610*67121dadSVivek Aknurwar .halt_reg = 0xa850c, 2611*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2612*67121dadSVivek Aknurwar .clkr = { 2613*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2614*67121dadSVivek Aknurwar .enable_mask = BIT(17), 2615*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2616*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap3_s5_clk", 2617*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2618*67121dadSVivek Aknurwar &gcc_qupv3_wrap3_s5_clk_src.clkr.hw, 2619*67121dadSVivek Aknurwar }, 2620*67121dadSVivek Aknurwar .num_parents = 1, 2621*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2622*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2623*67121dadSVivek Aknurwar }, 2624*67121dadSVivek Aknurwar }, 2625*67121dadSVivek Aknurwar }; 2626*67121dadSVivek Aknurwar 2627*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap4_core_2x_clk = { 2628*67121dadSVivek Aknurwar .halt_reg = 0x23564, 2629*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2630*67121dadSVivek Aknurwar .clkr = { 2631*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2632*67121dadSVivek Aknurwar .enable_mask = BIT(25), 2633*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2634*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap4_core_2x_clk", 2635*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2636*67121dadSVivek Aknurwar }, 2637*67121dadSVivek Aknurwar }, 2638*67121dadSVivek Aknurwar }; 2639*67121dadSVivek Aknurwar 2640*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap4_core_clk = { 2641*67121dadSVivek Aknurwar .halt_reg = 0x23550, 2642*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2643*67121dadSVivek Aknurwar .clkr = { 2644*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2645*67121dadSVivek Aknurwar .enable_mask = BIT(24), 2646*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2647*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap4_core_clk", 2648*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2649*67121dadSVivek Aknurwar }, 2650*67121dadSVivek Aknurwar }, 2651*67121dadSVivek Aknurwar }; 2652*67121dadSVivek Aknurwar 2653*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap4_s0_clk = { 2654*67121dadSVivek Aknurwar .halt_reg = 0xa9004, 2655*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2656*67121dadSVivek Aknurwar .clkr = { 2657*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2658*67121dadSVivek Aknurwar .enable_mask = BIT(26), 2659*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2660*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap4_s0_clk", 2661*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2662*67121dadSVivek Aknurwar &gcc_qupv3_wrap4_s0_clk_src.clkr.hw, 2663*67121dadSVivek Aknurwar }, 2664*67121dadSVivek Aknurwar .num_parents = 1, 2665*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2666*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2667*67121dadSVivek Aknurwar }, 2668*67121dadSVivek Aknurwar }, 2669*67121dadSVivek Aknurwar }; 2670*67121dadSVivek Aknurwar 2671*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap4_s1_clk = { 2672*67121dadSVivek Aknurwar .halt_reg = 0xa9140, 2673*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2674*67121dadSVivek Aknurwar .clkr = { 2675*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2676*67121dadSVivek Aknurwar .enable_mask = BIT(27), 2677*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2678*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap4_s1_clk", 2679*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2680*67121dadSVivek Aknurwar &gcc_qupv3_wrap4_s1_clk_src.clkr.hw, 2681*67121dadSVivek Aknurwar }, 2682*67121dadSVivek Aknurwar .num_parents = 1, 2683*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2684*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2685*67121dadSVivek Aknurwar }, 2686*67121dadSVivek Aknurwar }, 2687*67121dadSVivek Aknurwar }; 2688*67121dadSVivek Aknurwar 2689*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap4_s2_clk = { 2690*67121dadSVivek Aknurwar .halt_reg = 0xa927c, 2691*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2692*67121dadSVivek Aknurwar .clkr = { 2693*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2694*67121dadSVivek Aknurwar .enable_mask = BIT(28), 2695*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2696*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap4_s2_clk", 2697*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2698*67121dadSVivek Aknurwar &gcc_qupv3_wrap4_s2_clk_src.clkr.hw, 2699*67121dadSVivek Aknurwar }, 2700*67121dadSVivek Aknurwar .num_parents = 1, 2701*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2702*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2703*67121dadSVivek Aknurwar }, 2704*67121dadSVivek Aknurwar }, 2705*67121dadSVivek Aknurwar }; 2706*67121dadSVivek Aknurwar 2707*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap4_s3_clk = { 2708*67121dadSVivek Aknurwar .halt_reg = 0xa93b8, 2709*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2710*67121dadSVivek Aknurwar .clkr = { 2711*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2712*67121dadSVivek Aknurwar .enable_mask = BIT(29), 2713*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2714*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap4_s3_clk", 2715*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2716*67121dadSVivek Aknurwar &gcc_qupv3_wrap4_s3_clk_src.clkr.hw, 2717*67121dadSVivek Aknurwar }, 2718*67121dadSVivek Aknurwar .num_parents = 1, 2719*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2720*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2721*67121dadSVivek Aknurwar }, 2722*67121dadSVivek Aknurwar }, 2723*67121dadSVivek Aknurwar }; 2724*67121dadSVivek Aknurwar 2725*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap4_s4_clk = { 2726*67121dadSVivek Aknurwar .halt_reg = 0xa94f4, 2727*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2728*67121dadSVivek Aknurwar .clkr = { 2729*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2730*67121dadSVivek Aknurwar .enable_mask = BIT(30), 2731*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2732*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap4_s4_clk", 2733*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2734*67121dadSVivek Aknurwar &gcc_qupv3_wrap4_s4_clk_src.clkr.hw, 2735*67121dadSVivek Aknurwar }, 2736*67121dadSVivek Aknurwar .num_parents = 1, 2737*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2738*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2739*67121dadSVivek Aknurwar }, 2740*67121dadSVivek Aknurwar }, 2741*67121dadSVivek Aknurwar }; 2742*67121dadSVivek Aknurwar 2743*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_1_m_axi_clk = { 2744*67121dadSVivek Aknurwar .halt_reg = 0x23140, 2745*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2746*67121dadSVivek Aknurwar .hwcg_reg = 0x23140, 2747*67121dadSVivek Aknurwar .hwcg_bit = 1, 2748*67121dadSVivek Aknurwar .clkr = { 2749*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2750*67121dadSVivek Aknurwar .enable_mask = BIT(20), 2751*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2752*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap_1_m_axi_clk", 2753*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2754*67121dadSVivek Aknurwar }, 2755*67121dadSVivek Aknurwar }, 2756*67121dadSVivek Aknurwar }; 2757*67121dadSVivek Aknurwar 2758*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = { 2759*67121dadSVivek Aknurwar .halt_reg = 0x23144, 2760*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2761*67121dadSVivek Aknurwar .hwcg_reg = 0x23144, 2762*67121dadSVivek Aknurwar .hwcg_bit = 1, 2763*67121dadSVivek Aknurwar .clkr = { 2764*67121dadSVivek Aknurwar .enable_reg = 0x52008, 2765*67121dadSVivek Aknurwar .enable_mask = BIT(21), 2766*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2767*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap_1_s_ahb_clk", 2768*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2769*67121dadSVivek Aknurwar }, 2770*67121dadSVivek Aknurwar }, 2771*67121dadSVivek Aknurwar }; 2772*67121dadSVivek Aknurwar 2773*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = { 2774*67121dadSVivek Aknurwar .halt_reg = 0x23298, 2775*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2776*67121dadSVivek Aknurwar .hwcg_reg = 0x23298, 2777*67121dadSVivek Aknurwar .hwcg_bit = 1, 2778*67121dadSVivek Aknurwar .clkr = { 2779*67121dadSVivek Aknurwar .enable_reg = 0x52010, 2780*67121dadSVivek Aknurwar .enable_mask = BIT(2), 2781*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2782*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap_2_m_ahb_clk", 2783*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2784*67121dadSVivek Aknurwar }, 2785*67121dadSVivek Aknurwar }, 2786*67121dadSVivek Aknurwar }; 2787*67121dadSVivek Aknurwar 2788*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = { 2789*67121dadSVivek Aknurwar .halt_reg = 0x2329c, 2790*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2791*67121dadSVivek Aknurwar .hwcg_reg = 0x2329c, 2792*67121dadSVivek Aknurwar .hwcg_bit = 1, 2793*67121dadSVivek Aknurwar .clkr = { 2794*67121dadSVivek Aknurwar .enable_reg = 0x52010, 2795*67121dadSVivek Aknurwar .enable_mask = BIT(1), 2796*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2797*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap_2_s_ahb_clk", 2798*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2799*67121dadSVivek Aknurwar }, 2800*67121dadSVivek Aknurwar }, 2801*67121dadSVivek Aknurwar }; 2802*67121dadSVivek Aknurwar 2803*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_3_m_ahb_clk = { 2804*67121dadSVivek Aknurwar .halt_reg = 0x233f0, 2805*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2806*67121dadSVivek Aknurwar .hwcg_reg = 0x233f0, 2807*67121dadSVivek Aknurwar .hwcg_bit = 1, 2808*67121dadSVivek Aknurwar .clkr = { 2809*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2810*67121dadSVivek Aknurwar .enable_mask = BIT(8), 2811*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2812*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap_3_m_ahb_clk", 2813*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2814*67121dadSVivek Aknurwar }, 2815*67121dadSVivek Aknurwar }, 2816*67121dadSVivek Aknurwar }; 2817*67121dadSVivek Aknurwar 2818*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_3_s_ahb_clk = { 2819*67121dadSVivek Aknurwar .halt_reg = 0x233f4, 2820*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2821*67121dadSVivek Aknurwar .hwcg_reg = 0x233f4, 2822*67121dadSVivek Aknurwar .hwcg_bit = 1, 2823*67121dadSVivek Aknurwar .clkr = { 2824*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2825*67121dadSVivek Aknurwar .enable_mask = BIT(9), 2826*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2827*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap_3_s_ahb_clk", 2828*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2829*67121dadSVivek Aknurwar }, 2830*67121dadSVivek Aknurwar }, 2831*67121dadSVivek Aknurwar }; 2832*67121dadSVivek Aknurwar 2833*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_4_m_ahb_clk = { 2834*67121dadSVivek Aknurwar .halt_reg = 0x23548, 2835*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2836*67121dadSVivek Aknurwar .hwcg_reg = 0x23548, 2837*67121dadSVivek Aknurwar .hwcg_bit = 1, 2838*67121dadSVivek Aknurwar .clkr = { 2839*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2840*67121dadSVivek Aknurwar .enable_mask = BIT(22), 2841*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2842*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap_4_m_ahb_clk", 2843*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2844*67121dadSVivek Aknurwar }, 2845*67121dadSVivek Aknurwar }, 2846*67121dadSVivek Aknurwar }; 2847*67121dadSVivek Aknurwar 2848*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_4_s_ahb_clk = { 2849*67121dadSVivek Aknurwar .halt_reg = 0x2354c, 2850*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2851*67121dadSVivek Aknurwar .hwcg_reg = 0x2354c, 2852*67121dadSVivek Aknurwar .hwcg_bit = 1, 2853*67121dadSVivek Aknurwar .clkr = { 2854*67121dadSVivek Aknurwar .enable_reg = 0x52018, 2855*67121dadSVivek Aknurwar .enable_mask = BIT(23), 2856*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2857*67121dadSVivek Aknurwar .name = "gcc_qupv3_wrap_4_s_ahb_clk", 2858*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2859*67121dadSVivek Aknurwar }, 2860*67121dadSVivek Aknurwar }, 2861*67121dadSVivek Aknurwar }; 2862*67121dadSVivek Aknurwar 2863*67121dadSVivek Aknurwar static struct clk_branch gcc_sdcc2_ahb_clk = { 2864*67121dadSVivek Aknurwar .halt_reg = 0x14014, 2865*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT, 2866*67121dadSVivek Aknurwar .clkr = { 2867*67121dadSVivek Aknurwar .enable_reg = 0x14014, 2868*67121dadSVivek Aknurwar .enable_mask = BIT(0), 2869*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2870*67121dadSVivek Aknurwar .name = "gcc_sdcc2_ahb_clk", 2871*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2872*67121dadSVivek Aknurwar }, 2873*67121dadSVivek Aknurwar }, 2874*67121dadSVivek Aknurwar }; 2875*67121dadSVivek Aknurwar 2876*67121dadSVivek Aknurwar static struct clk_branch gcc_sdcc2_apps_clk = { 2877*67121dadSVivek Aknurwar .halt_reg = 0x14004, 2878*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT, 2879*67121dadSVivek Aknurwar .clkr = { 2880*67121dadSVivek Aknurwar .enable_reg = 0x14004, 2881*67121dadSVivek Aknurwar .enable_mask = BIT(0), 2882*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2883*67121dadSVivek Aknurwar .name = "gcc_sdcc2_apps_clk", 2884*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2885*67121dadSVivek Aknurwar &gcc_sdcc2_apps_clk_src.clkr.hw, 2886*67121dadSVivek Aknurwar }, 2887*67121dadSVivek Aknurwar .num_parents = 1, 2888*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2889*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2890*67121dadSVivek Aknurwar }, 2891*67121dadSVivek Aknurwar }, 2892*67121dadSVivek Aknurwar }; 2893*67121dadSVivek Aknurwar 2894*67121dadSVivek Aknurwar static struct clk_branch gcc_sdcc4_ahb_clk = { 2895*67121dadSVivek Aknurwar .halt_reg = 0x16014, 2896*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT, 2897*67121dadSVivek Aknurwar .clkr = { 2898*67121dadSVivek Aknurwar .enable_reg = 0x16014, 2899*67121dadSVivek Aknurwar .enable_mask = BIT(0), 2900*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2901*67121dadSVivek Aknurwar .name = "gcc_sdcc4_ahb_clk", 2902*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2903*67121dadSVivek Aknurwar }, 2904*67121dadSVivek Aknurwar }, 2905*67121dadSVivek Aknurwar }; 2906*67121dadSVivek Aknurwar 2907*67121dadSVivek Aknurwar static struct clk_branch gcc_sdcc4_apps_clk = { 2908*67121dadSVivek Aknurwar .halt_reg = 0x16004, 2909*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT, 2910*67121dadSVivek Aknurwar .clkr = { 2911*67121dadSVivek Aknurwar .enable_reg = 0x16004, 2912*67121dadSVivek Aknurwar .enable_mask = BIT(0), 2913*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2914*67121dadSVivek Aknurwar .name = "gcc_sdcc4_apps_clk", 2915*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2916*67121dadSVivek Aknurwar &gcc_sdcc4_apps_clk_src.clkr.hw, 2917*67121dadSVivek Aknurwar }, 2918*67121dadSVivek Aknurwar .num_parents = 1, 2919*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2920*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2921*67121dadSVivek Aknurwar }, 2922*67121dadSVivek Aknurwar }, 2923*67121dadSVivek Aknurwar }; 2924*67121dadSVivek Aknurwar 2925*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_ahb_clk = { 2926*67121dadSVivek Aknurwar .halt_reg = 0x77028, 2927*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2928*67121dadSVivek Aknurwar .hwcg_reg = 0x77028, 2929*67121dadSVivek Aknurwar .hwcg_bit = 1, 2930*67121dadSVivek Aknurwar .clkr = { 2931*67121dadSVivek Aknurwar .enable_reg = 0x77028, 2932*67121dadSVivek Aknurwar .enable_mask = BIT(0), 2933*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2934*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_ahb_clk", 2935*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2936*67121dadSVivek Aknurwar }, 2937*67121dadSVivek Aknurwar }, 2938*67121dadSVivek Aknurwar }; 2939*67121dadSVivek Aknurwar 2940*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_axi_clk = { 2941*67121dadSVivek Aknurwar .halt_reg = 0x77018, 2942*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2943*67121dadSVivek Aknurwar .hwcg_reg = 0x77018, 2944*67121dadSVivek Aknurwar .hwcg_bit = 1, 2945*67121dadSVivek Aknurwar .clkr = { 2946*67121dadSVivek Aknurwar .enable_reg = 0x77018, 2947*67121dadSVivek Aknurwar .enable_mask = BIT(0), 2948*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2949*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_axi_clk", 2950*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2951*67121dadSVivek Aknurwar &gcc_ufs_phy_axi_clk_src.clkr.hw, 2952*67121dadSVivek Aknurwar }, 2953*67121dadSVivek Aknurwar .num_parents = 1, 2954*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2955*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2956*67121dadSVivek Aknurwar }, 2957*67121dadSVivek Aknurwar }, 2958*67121dadSVivek Aknurwar }; 2959*67121dadSVivek Aknurwar 2960*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_ice_core_clk = { 2961*67121dadSVivek Aknurwar .halt_reg = 0x7707c, 2962*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2963*67121dadSVivek Aknurwar .hwcg_reg = 0x7707c, 2964*67121dadSVivek Aknurwar .hwcg_bit = 1, 2965*67121dadSVivek Aknurwar .clkr = { 2966*67121dadSVivek Aknurwar .enable_reg = 0x7707c, 2967*67121dadSVivek Aknurwar .enable_mask = BIT(0), 2968*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2969*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_ice_core_clk", 2970*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2971*67121dadSVivek Aknurwar &gcc_ufs_phy_ice_core_clk_src.clkr.hw, 2972*67121dadSVivek Aknurwar }, 2973*67121dadSVivek Aknurwar .num_parents = 1, 2974*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2975*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2976*67121dadSVivek Aknurwar }, 2977*67121dadSVivek Aknurwar }, 2978*67121dadSVivek Aknurwar }; 2979*67121dadSVivek Aknurwar 2980*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_phy_aux_clk = { 2981*67121dadSVivek Aknurwar .halt_reg = 0x770bc, 2982*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 2983*67121dadSVivek Aknurwar .hwcg_reg = 0x770bc, 2984*67121dadSVivek Aknurwar .hwcg_bit = 1, 2985*67121dadSVivek Aknurwar .clkr = { 2986*67121dadSVivek Aknurwar .enable_reg = 0x770bc, 2987*67121dadSVivek Aknurwar .enable_mask = BIT(0), 2988*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 2989*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_phy_aux_clk", 2990*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 2991*67121dadSVivek Aknurwar &gcc_ufs_phy_phy_aux_clk_src.clkr.hw, 2992*67121dadSVivek Aknurwar }, 2993*67121dadSVivek Aknurwar .num_parents = 1, 2994*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 2995*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 2996*67121dadSVivek Aknurwar }, 2997*67121dadSVivek Aknurwar }, 2998*67121dadSVivek Aknurwar }; 2999*67121dadSVivek Aknurwar 3000*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = { 3001*67121dadSVivek Aknurwar .halt_reg = 0x77030, 3002*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_DELAY, 3003*67121dadSVivek Aknurwar .clkr = { 3004*67121dadSVivek Aknurwar .enable_reg = 0x77030, 3005*67121dadSVivek Aknurwar .enable_mask = BIT(0), 3006*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 3007*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_rx_symbol_0_clk", 3008*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 3009*67121dadSVivek Aknurwar &gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw, 3010*67121dadSVivek Aknurwar }, 3011*67121dadSVivek Aknurwar .num_parents = 1, 3012*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 3013*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 3014*67121dadSVivek Aknurwar }, 3015*67121dadSVivek Aknurwar }, 3016*67121dadSVivek Aknurwar }; 3017*67121dadSVivek Aknurwar 3018*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = { 3019*67121dadSVivek Aknurwar .halt_reg = 0x770d8, 3020*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_DELAY, 3021*67121dadSVivek Aknurwar .clkr = { 3022*67121dadSVivek Aknurwar .enable_reg = 0x770d8, 3023*67121dadSVivek Aknurwar .enable_mask = BIT(0), 3024*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 3025*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_rx_symbol_1_clk", 3026*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 3027*67121dadSVivek Aknurwar &gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw, 3028*67121dadSVivek Aknurwar }, 3029*67121dadSVivek Aknurwar .num_parents = 1, 3030*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 3031*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 3032*67121dadSVivek Aknurwar }, 3033*67121dadSVivek Aknurwar }, 3034*67121dadSVivek Aknurwar }; 3035*67121dadSVivek Aknurwar 3036*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = { 3037*67121dadSVivek Aknurwar .halt_reg = 0x7702c, 3038*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_DELAY, 3039*67121dadSVivek Aknurwar .clkr = { 3040*67121dadSVivek Aknurwar .enable_reg = 0x7702c, 3041*67121dadSVivek Aknurwar .enable_mask = BIT(0), 3042*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 3043*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_tx_symbol_0_clk", 3044*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 3045*67121dadSVivek Aknurwar &gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw, 3046*67121dadSVivek Aknurwar }, 3047*67121dadSVivek Aknurwar .num_parents = 1, 3048*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 3049*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 3050*67121dadSVivek Aknurwar }, 3051*67121dadSVivek Aknurwar }, 3052*67121dadSVivek Aknurwar }; 3053*67121dadSVivek Aknurwar 3054*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_unipro_5_core_clk = { 3055*67121dadSVivek Aknurwar .halt_reg = 0x7706c, 3056*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_VOTED, 3057*67121dadSVivek Aknurwar .hwcg_reg = 0x7706c, 3058*67121dadSVivek Aknurwar .hwcg_bit = 1, 3059*67121dadSVivek Aknurwar .clkr = { 3060*67121dadSVivek Aknurwar .enable_reg = 0x7706c, 3061*67121dadSVivek Aknurwar .enable_mask = BIT(0), 3062*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 3063*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_unipro_5_core_clk", 3064*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 3065*67121dadSVivek Aknurwar &gcc_ufs_phy_unipro_5_core_clk_src.clkr.hw, 3066*67121dadSVivek Aknurwar }, 3067*67121dadSVivek Aknurwar .num_parents = 1, 3068*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 3069*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 3070*67121dadSVivek Aknurwar }, 3071*67121dadSVivek Aknurwar }, 3072*67121dadSVivek Aknurwar }; 3073*67121dadSVivek Aknurwar 3074*67121dadSVivek Aknurwar static struct clk_branch gcc_usb30_prim_master_clk = { 3075*67121dadSVivek Aknurwar .halt_reg = 0x39018, 3076*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT, 3077*67121dadSVivek Aknurwar .clkr = { 3078*67121dadSVivek Aknurwar .enable_reg = 0x39018, 3079*67121dadSVivek Aknurwar .enable_mask = BIT(0), 3080*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 3081*67121dadSVivek Aknurwar .name = "gcc_usb30_prim_master_clk", 3082*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 3083*67121dadSVivek Aknurwar &gcc_usb30_prim_master_clk_src.clkr.hw, 3084*67121dadSVivek Aknurwar }, 3085*67121dadSVivek Aknurwar .num_parents = 1, 3086*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 3087*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 3088*67121dadSVivek Aknurwar }, 3089*67121dadSVivek Aknurwar }, 3090*67121dadSVivek Aknurwar }; 3091*67121dadSVivek Aknurwar 3092*67121dadSVivek Aknurwar static struct clk_branch gcc_usb30_prim_mock_utmi_clk = { 3093*67121dadSVivek Aknurwar .halt_reg = 0x3902c, 3094*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT, 3095*67121dadSVivek Aknurwar .clkr = { 3096*67121dadSVivek Aknurwar .enable_reg = 0x3902c, 3097*67121dadSVivek Aknurwar .enable_mask = BIT(0), 3098*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 3099*67121dadSVivek Aknurwar .name = "gcc_usb30_prim_mock_utmi_clk", 3100*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 3101*67121dadSVivek Aknurwar &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw, 3102*67121dadSVivek Aknurwar }, 3103*67121dadSVivek Aknurwar .num_parents = 1, 3104*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 3105*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 3106*67121dadSVivek Aknurwar }, 3107*67121dadSVivek Aknurwar }, 3108*67121dadSVivek Aknurwar }; 3109*67121dadSVivek Aknurwar 3110*67121dadSVivek Aknurwar static struct clk_branch gcc_usb30_prim_sleep_clk = { 3111*67121dadSVivek Aknurwar .halt_reg = 0x39028, 3112*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT, 3113*67121dadSVivek Aknurwar .clkr = { 3114*67121dadSVivek Aknurwar .enable_reg = 0x39028, 3115*67121dadSVivek Aknurwar .enable_mask = BIT(0), 3116*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 3117*67121dadSVivek Aknurwar .name = "gcc_usb30_prim_sleep_clk", 3118*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 3119*67121dadSVivek Aknurwar }, 3120*67121dadSVivek Aknurwar }, 3121*67121dadSVivek Aknurwar }; 3122*67121dadSVivek Aknurwar 3123*67121dadSVivek Aknurwar static struct clk_branch gcc_usb3_prim_phy_aux_clk = { 3124*67121dadSVivek Aknurwar .halt_reg = 0x39068, 3125*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT, 3126*67121dadSVivek Aknurwar .clkr = { 3127*67121dadSVivek Aknurwar .enable_reg = 0x39068, 3128*67121dadSVivek Aknurwar .enable_mask = BIT(0), 3129*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 3130*67121dadSVivek Aknurwar .name = "gcc_usb3_prim_phy_aux_clk", 3131*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 3132*67121dadSVivek Aknurwar &gcc_usb3_prim_phy_aux_clk_src.clkr.hw, 3133*67121dadSVivek Aknurwar }, 3134*67121dadSVivek Aknurwar .num_parents = 1, 3135*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 3136*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 3137*67121dadSVivek Aknurwar }, 3138*67121dadSVivek Aknurwar }, 3139*67121dadSVivek Aknurwar }; 3140*67121dadSVivek Aknurwar 3141*67121dadSVivek Aknurwar static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = { 3142*67121dadSVivek Aknurwar .halt_reg = 0x3906c, 3143*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT, 3144*67121dadSVivek Aknurwar .clkr = { 3145*67121dadSVivek Aknurwar .enable_reg = 0x3906c, 3146*67121dadSVivek Aknurwar .enable_mask = BIT(0), 3147*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 3148*67121dadSVivek Aknurwar .name = "gcc_usb3_prim_phy_com_aux_clk", 3149*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 3150*67121dadSVivek Aknurwar &gcc_usb3_prim_phy_aux_clk_src.clkr.hw, 3151*67121dadSVivek Aknurwar }, 3152*67121dadSVivek Aknurwar .num_parents = 1, 3153*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 3154*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 3155*67121dadSVivek Aknurwar }, 3156*67121dadSVivek Aknurwar }, 3157*67121dadSVivek Aknurwar }; 3158*67121dadSVivek Aknurwar 3159*67121dadSVivek Aknurwar static struct clk_branch gcc_usb3_prim_phy_pipe_clk = { 3160*67121dadSVivek Aknurwar .halt_reg = 0x39070, 3161*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_DELAY, 3162*67121dadSVivek Aknurwar .hwcg_reg = 0x39070, 3163*67121dadSVivek Aknurwar .hwcg_bit = 1, 3164*67121dadSVivek Aknurwar .clkr = { 3165*67121dadSVivek Aknurwar .enable_reg = 0x39070, 3166*67121dadSVivek Aknurwar .enable_mask = BIT(0), 3167*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 3168*67121dadSVivek Aknurwar .name = "gcc_usb3_prim_phy_pipe_clk", 3169*67121dadSVivek Aknurwar .parent_hws = (const struct clk_hw*[]) { 3170*67121dadSVivek Aknurwar &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw, 3171*67121dadSVivek Aknurwar }, 3172*67121dadSVivek Aknurwar .num_parents = 1, 3173*67121dadSVivek Aknurwar .flags = CLK_SET_RATE_PARENT, 3174*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 3175*67121dadSVivek Aknurwar }, 3176*67121dadSVivek Aknurwar }, 3177*67121dadSVivek Aknurwar }; 3178*67121dadSVivek Aknurwar 3179*67121dadSVivek Aknurwar static struct clk_branch gcc_video_axi0_clk = { 3180*67121dadSVivek Aknurwar .halt_reg = 0x32018, 3181*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_SKIP, 3182*67121dadSVivek Aknurwar .hwcg_reg = 0x32018, 3183*67121dadSVivek Aknurwar .hwcg_bit = 1, 3184*67121dadSVivek Aknurwar .clkr = { 3185*67121dadSVivek Aknurwar .enable_reg = 0x32018, 3186*67121dadSVivek Aknurwar .enable_mask = BIT(0), 3187*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 3188*67121dadSVivek Aknurwar .name = "gcc_video_axi0_clk", 3189*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 3190*67121dadSVivek Aknurwar }, 3191*67121dadSVivek Aknurwar }, 3192*67121dadSVivek Aknurwar }; 3193*67121dadSVivek Aknurwar 3194*67121dadSVivek Aknurwar static struct clk_branch gcc_video_axi0c_clk = { 3195*67121dadSVivek Aknurwar .halt_reg = 0x32020, 3196*67121dadSVivek Aknurwar .halt_check = BRANCH_HALT_SKIP, 3197*67121dadSVivek Aknurwar .hwcg_reg = 0x32020, 3198*67121dadSVivek Aknurwar .hwcg_bit = 1, 3199*67121dadSVivek Aknurwar .clkr = { 3200*67121dadSVivek Aknurwar .enable_reg = 0x32020, 3201*67121dadSVivek Aknurwar .enable_mask = BIT(0), 3202*67121dadSVivek Aknurwar .hw.init = &(const struct clk_init_data) { 3203*67121dadSVivek Aknurwar .name = "gcc_video_axi0c_clk", 3204*67121dadSVivek Aknurwar .ops = &clk_branch2_ops, 3205*67121dadSVivek Aknurwar }, 3206*67121dadSVivek Aknurwar }, 3207*67121dadSVivek Aknurwar }; 3208*67121dadSVivek Aknurwar 3209*67121dadSVivek Aknurwar static struct gdsc gcc_pcie_0_gdsc = { 3210*67121dadSVivek Aknurwar .gdscr = 0x6b004, 3211*67121dadSVivek Aknurwar .en_rest_wait_val = 0x2, 3212*67121dadSVivek Aknurwar .en_few_wait_val = 0x2, 3213*67121dadSVivek Aknurwar .clk_dis_wait_val = 0xf, 3214*67121dadSVivek Aknurwar .collapse_ctrl = 0x52154, 3215*67121dadSVivek Aknurwar .collapse_mask = BIT(0), 3216*67121dadSVivek Aknurwar .pd = { 3217*67121dadSVivek Aknurwar .name = "gcc_pcie_0_gdsc", 3218*67121dadSVivek Aknurwar }, 3219*67121dadSVivek Aknurwar .pwrsts = PWRSTS_OFF_ON, 3220*67121dadSVivek Aknurwar .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE, 3221*67121dadSVivek Aknurwar }; 3222*67121dadSVivek Aknurwar 3223*67121dadSVivek Aknurwar static struct gdsc gcc_pcie_0_phy_gdsc = { 3224*67121dadSVivek Aknurwar .gdscr = 0x6c000, 3225*67121dadSVivek Aknurwar .en_rest_wait_val = 0x2, 3226*67121dadSVivek Aknurwar .en_few_wait_val = 0x2, 3227*67121dadSVivek Aknurwar .clk_dis_wait_val = 0x2, 3228*67121dadSVivek Aknurwar .collapse_ctrl = 0x52154, 3229*67121dadSVivek Aknurwar .collapse_mask = BIT(1), 3230*67121dadSVivek Aknurwar .pd = { 3231*67121dadSVivek Aknurwar .name = "gcc_pcie_0_phy_gdsc", 3232*67121dadSVivek Aknurwar }, 3233*67121dadSVivek Aknurwar .pwrsts = PWRSTS_OFF_ON, 3234*67121dadSVivek Aknurwar .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE, 3235*67121dadSVivek Aknurwar }; 3236*67121dadSVivek Aknurwar 3237*67121dadSVivek Aknurwar static struct gdsc gcc_pcie_1_gdsc = { 3238*67121dadSVivek Aknurwar .gdscr = 0x67004, 3239*67121dadSVivek Aknurwar .en_rest_wait_val = 0x2, 3240*67121dadSVivek Aknurwar .en_few_wait_val = 0x2, 3241*67121dadSVivek Aknurwar .clk_dis_wait_val = 0xf, 3242*67121dadSVivek Aknurwar .collapse_ctrl = 0x5214c, 3243*67121dadSVivek Aknurwar .collapse_mask = BIT(2), 3244*67121dadSVivek Aknurwar .pd = { 3245*67121dadSVivek Aknurwar .name = "gcc_pcie_1_gdsc", 3246*67121dadSVivek Aknurwar }, 3247*67121dadSVivek Aknurwar .pwrsts = PWRSTS_OFF_ON, 3248*67121dadSVivek Aknurwar .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE, 3249*67121dadSVivek Aknurwar }; 3250*67121dadSVivek Aknurwar 3251*67121dadSVivek Aknurwar static struct gdsc gcc_pcie_1_phy_gdsc = { 3252*67121dadSVivek Aknurwar .gdscr = 0x68000, 3253*67121dadSVivek Aknurwar .en_rest_wait_val = 0x2, 3254*67121dadSVivek Aknurwar .en_few_wait_val = 0x2, 3255*67121dadSVivek Aknurwar .clk_dis_wait_val = 0x2, 3256*67121dadSVivek Aknurwar .collapse_ctrl = 0x5214c, 3257*67121dadSVivek Aknurwar .collapse_mask = BIT(3), 3258*67121dadSVivek Aknurwar .pd = { 3259*67121dadSVivek Aknurwar .name = "gcc_pcie_1_phy_gdsc", 3260*67121dadSVivek Aknurwar }, 3261*67121dadSVivek Aknurwar .pwrsts = PWRSTS_OFF_ON, 3262*67121dadSVivek Aknurwar .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE, 3263*67121dadSVivek Aknurwar }; 3264*67121dadSVivek Aknurwar 3265*67121dadSVivek Aknurwar static struct gdsc gcc_ufs_mem_phy_gdsc = { 3266*67121dadSVivek Aknurwar .gdscr = 0x9e000, 3267*67121dadSVivek Aknurwar .en_rest_wait_val = 0x2, 3268*67121dadSVivek Aknurwar .en_few_wait_val = 0x2, 3269*67121dadSVivek Aknurwar .clk_dis_wait_val = 0x2, 3270*67121dadSVivek Aknurwar .pd = { 3271*67121dadSVivek Aknurwar .name = "gcc_ufs_mem_phy_gdsc", 3272*67121dadSVivek Aknurwar }, 3273*67121dadSVivek Aknurwar .pwrsts = PWRSTS_OFF_ON, 3274*67121dadSVivek Aknurwar .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 3275*67121dadSVivek Aknurwar }; 3276*67121dadSVivek Aknurwar 3277*67121dadSVivek Aknurwar static struct gdsc gcc_ufs_phy_gdsc = { 3278*67121dadSVivek Aknurwar .gdscr = 0x77004, 3279*67121dadSVivek Aknurwar .en_rest_wait_val = 0x2, 3280*67121dadSVivek Aknurwar .en_few_wait_val = 0x2, 3281*67121dadSVivek Aknurwar .clk_dis_wait_val = 0xf, 3282*67121dadSVivek Aknurwar .pd = { 3283*67121dadSVivek Aknurwar .name = "gcc_ufs_phy_gdsc", 3284*67121dadSVivek Aknurwar }, 3285*67121dadSVivek Aknurwar .pwrsts = PWRSTS_OFF_ON, 3286*67121dadSVivek Aknurwar .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 3287*67121dadSVivek Aknurwar }; 3288*67121dadSVivek Aknurwar 3289*67121dadSVivek Aknurwar static struct gdsc gcc_usb30_prim_gdsc = { 3290*67121dadSVivek Aknurwar .gdscr = 0x39004, 3291*67121dadSVivek Aknurwar .en_rest_wait_val = 0x2, 3292*67121dadSVivek Aknurwar .en_few_wait_val = 0x2, 3293*67121dadSVivek Aknurwar .clk_dis_wait_val = 0xf, 3294*67121dadSVivek Aknurwar .pd = { 3295*67121dadSVivek Aknurwar .name = "gcc_usb30_prim_gdsc", 3296*67121dadSVivek Aknurwar }, 3297*67121dadSVivek Aknurwar .pwrsts = PWRSTS_OFF_ON, 3298*67121dadSVivek Aknurwar .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 3299*67121dadSVivek Aknurwar }; 3300*67121dadSVivek Aknurwar 3301*67121dadSVivek Aknurwar static struct gdsc gcc_usb3_phy_gdsc = { 3302*67121dadSVivek Aknurwar .gdscr = 0x50018, 3303*67121dadSVivek Aknurwar .en_rest_wait_val = 0x2, 3304*67121dadSVivek Aknurwar .en_few_wait_val = 0x2, 3305*67121dadSVivek Aknurwar .clk_dis_wait_val = 0x2, 3306*67121dadSVivek Aknurwar .pd = { 3307*67121dadSVivek Aknurwar .name = "gcc_usb3_phy_gdsc", 3308*67121dadSVivek Aknurwar }, 3309*67121dadSVivek Aknurwar .pwrsts = PWRSTS_OFF_ON, 3310*67121dadSVivek Aknurwar .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 3311*67121dadSVivek Aknurwar }; 3312*67121dadSVivek Aknurwar 3313*67121dadSVivek Aknurwar static struct clk_regmap *gcc_hawi_clocks[] = { 3314*67121dadSVivek Aknurwar [GCC_AGGRE_NOC_PCIE_AXI_CLK] = &gcc_aggre_noc_pcie_axi_clk.clkr, 3315*67121dadSVivek Aknurwar [GCC_AGGRE_STARDUSTNOC_USB3_PRIM_AXI_CLK] = &gcc_aggre_stardustnoc_usb3_prim_axi_clk.clkr, 3316*67121dadSVivek Aknurwar [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr, 3317*67121dadSVivek Aknurwar [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 3318*67121dadSVivek Aknurwar [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr, 3319*67121dadSVivek Aknurwar [GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr, 3320*67121dadSVivek Aknurwar [GCC_CFG_NOC_PCIE_ANOC_AHB_CLK] = &gcc_cfg_noc_pcie_anoc_ahb_clk.clkr, 3321*67121dadSVivek Aknurwar [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr, 3322*67121dadSVivek Aknurwar [GCC_CNOC_PCIE_SF_AXI_CLK] = &gcc_cnoc_pcie_sf_axi_clk.clkr, 3323*67121dadSVivek Aknurwar [GCC_EVA_AXI0_CLK] = &gcc_eva_axi0_clk.clkr, 3324*67121dadSVivek Aknurwar [GCC_EVA_AXI0C_CLK] = &gcc_eva_axi0c_clk.clkr, 3325*67121dadSVivek Aknurwar [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 3326*67121dadSVivek Aknurwar [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr, 3327*67121dadSVivek Aknurwar [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 3328*67121dadSVivek Aknurwar [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr, 3329*67121dadSVivek Aknurwar [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 3330*67121dadSVivek Aknurwar [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr, 3331*67121dadSVivek Aknurwar [GCC_GPLL0] = &gcc_gpll0.clkr, 3332*67121dadSVivek Aknurwar [GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr, 3333*67121dadSVivek Aknurwar [GCC_GPLL4] = &gcc_gpll4.clkr, 3334*67121dadSVivek Aknurwar [GCC_GPLL5] = &gcc_gpll5.clkr, 3335*67121dadSVivek Aknurwar [GCC_GPLL7] = &gcc_gpll7.clkr, 3336*67121dadSVivek Aknurwar [GCC_GPLL9] = &gcc_gpll9.clkr, 3337*67121dadSVivek Aknurwar [GCC_GPU_GEMNOC_GFX_CLK] = &gcc_gpu_gemnoc_gfx_clk.clkr, 3338*67121dadSVivek Aknurwar [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr, 3339*67121dadSVivek Aknurwar [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr, 3340*67121dadSVivek Aknurwar [GCC_GPU_SMMU_VOTE_CLK] = &gcc_gpu_smmu_vote_clk.clkr, 3341*67121dadSVivek Aknurwar [GCC_MMU_TCU_VOTE_CLK] = &gcc_mmu_tcu_vote_clk.clkr, 3342*67121dadSVivek Aknurwar [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr, 3343*67121dadSVivek Aknurwar [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr, 3344*67121dadSVivek Aknurwar [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr, 3345*67121dadSVivek Aknurwar [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr, 3346*67121dadSVivek Aknurwar [GCC_PCIE_0_PHY_AUX_CLK] = &gcc_pcie_0_phy_aux_clk.clkr, 3347*67121dadSVivek Aknurwar [GCC_PCIE_0_PHY_AUX_CLK_SRC] = &gcc_pcie_0_phy_aux_clk_src.clkr, 3348*67121dadSVivek Aknurwar [GCC_PCIE_0_PHY_RCHNG_CLK] = &gcc_pcie_0_phy_rchng_clk.clkr, 3349*67121dadSVivek Aknurwar [GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr, 3350*67121dadSVivek Aknurwar [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr, 3351*67121dadSVivek Aknurwar [GCC_PCIE_0_PIPE_CLK_SRC] = &gcc_pcie_0_pipe_clk_src.clkr, 3352*67121dadSVivek Aknurwar [GCC_PCIE_0_PIPE_DIV2_CLK] = &gcc_pcie_0_pipe_div2_clk.clkr, 3353*67121dadSVivek Aknurwar [GCC_PCIE_0_PIPE_DIV_CLK_SRC] = &gcc_pcie_0_pipe_div_clk_src.clkr, 3354*67121dadSVivek Aknurwar [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr, 3355*67121dadSVivek Aknurwar [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr, 3356*67121dadSVivek Aknurwar [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr, 3357*67121dadSVivek Aknurwar [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr, 3358*67121dadSVivek Aknurwar [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr, 3359*67121dadSVivek Aknurwar [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr, 3360*67121dadSVivek Aknurwar [GCC_PCIE_1_PHY_AUX_CLK] = &gcc_pcie_1_phy_aux_clk.clkr, 3361*67121dadSVivek Aknurwar [GCC_PCIE_1_PHY_AUX_CLK_SRC] = &gcc_pcie_1_phy_aux_clk_src.clkr, 3362*67121dadSVivek Aknurwar [GCC_PCIE_1_PHY_RCHNG_CLK] = &gcc_pcie_1_phy_rchng_clk.clkr, 3363*67121dadSVivek Aknurwar [GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr, 3364*67121dadSVivek Aknurwar [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr, 3365*67121dadSVivek Aknurwar [GCC_PCIE_1_PIPE_CLK_SRC] = &gcc_pcie_1_pipe_clk_src.clkr, 3366*67121dadSVivek Aknurwar [GCC_PCIE_1_PIPE_DIV2_CLK] = &gcc_pcie_1_pipe_div2_clk.clkr, 3367*67121dadSVivek Aknurwar [GCC_PCIE_1_PIPE_DIV_CLK_SRC] = &gcc_pcie_1_pipe_div_clk_src.clkr, 3368*67121dadSVivek Aknurwar [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr, 3369*67121dadSVivek Aknurwar [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr, 3370*67121dadSVivek Aknurwar [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 3371*67121dadSVivek Aknurwar [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr, 3372*67121dadSVivek Aknurwar [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 3373*67121dadSVivek Aknurwar [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr, 3374*67121dadSVivek Aknurwar [GCC_QUPV3_I2C_CORE_CLK] = &gcc_qupv3_i2c_core_clk.clkr, 3375*67121dadSVivek Aknurwar [GCC_QUPV3_I2C_S0_CLK] = &gcc_qupv3_i2c_s0_clk.clkr, 3376*67121dadSVivek Aknurwar [GCC_QUPV3_I2C_S0_CLK_SRC] = &gcc_qupv3_i2c_s0_clk_src.clkr, 3377*67121dadSVivek Aknurwar [GCC_QUPV3_I2C_S1_CLK] = &gcc_qupv3_i2c_s1_clk.clkr, 3378*67121dadSVivek Aknurwar [GCC_QUPV3_I2C_S1_CLK_SRC] = &gcc_qupv3_i2c_s1_clk_src.clkr, 3379*67121dadSVivek Aknurwar [GCC_QUPV3_I2C_S2_CLK] = &gcc_qupv3_i2c_s2_clk.clkr, 3380*67121dadSVivek Aknurwar [GCC_QUPV3_I2C_S2_CLK_SRC] = &gcc_qupv3_i2c_s2_clk_src.clkr, 3381*67121dadSVivek Aknurwar [GCC_QUPV3_I2C_S3_CLK] = &gcc_qupv3_i2c_s3_clk.clkr, 3382*67121dadSVivek Aknurwar [GCC_QUPV3_I2C_S3_CLK_SRC] = &gcc_qupv3_i2c_s3_clk_src.clkr, 3383*67121dadSVivek Aknurwar [GCC_QUPV3_I2C_S4_CLK] = &gcc_qupv3_i2c_s4_clk.clkr, 3384*67121dadSVivek Aknurwar [GCC_QUPV3_I2C_S4_CLK_SRC] = &gcc_qupv3_i2c_s4_clk_src.clkr, 3385*67121dadSVivek Aknurwar [GCC_QUPV3_I2C_S_AHB_CLK] = &gcc_qupv3_i2c_s_ahb_clk.clkr, 3386*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr, 3387*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr, 3388*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_QSPI_REF_CLK] = &gcc_qupv3_wrap1_qspi_ref_clk.clkr, 3389*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_QSPI_REF_CLK_SRC] = &gcc_qupv3_wrap1_qspi_ref_clk_src.clkr, 3390*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr, 3391*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr, 3392*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr, 3393*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr, 3394*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr, 3395*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr, 3396*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr, 3397*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr, 3398*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr, 3399*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr, 3400*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr, 3401*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr, 3402*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr, 3403*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr, 3404*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr, 3405*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr, 3406*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr, 3407*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr, 3408*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr, 3409*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr, 3410*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr, 3411*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr, 3412*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr, 3413*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr, 3414*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr, 3415*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr, 3416*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr, 3417*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr, 3418*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_CORE_2X_CLK] = &gcc_qupv3_wrap3_core_2x_clk.clkr, 3419*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_CORE_CLK] = &gcc_qupv3_wrap3_core_clk.clkr, 3420*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_QSPI_REF_CLK] = &gcc_qupv3_wrap3_qspi_ref_clk.clkr, 3421*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_QSPI_REF_CLK_SRC] = &gcc_qupv3_wrap3_qspi_ref_clk_src.clkr, 3422*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_S0_CLK] = &gcc_qupv3_wrap3_s0_clk.clkr, 3423*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_S0_CLK_SRC] = &gcc_qupv3_wrap3_s0_clk_src.clkr, 3424*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_S1_CLK] = &gcc_qupv3_wrap3_s1_clk.clkr, 3425*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_S1_CLK_SRC] = &gcc_qupv3_wrap3_s1_clk_src.clkr, 3426*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_S2_CLK] = &gcc_qupv3_wrap3_s2_clk.clkr, 3427*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_S2_CLK_SRC] = &gcc_qupv3_wrap3_s2_clk_src.clkr, 3428*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_S3_CLK] = &gcc_qupv3_wrap3_s3_clk.clkr, 3429*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_S3_CLK_SRC] = &gcc_qupv3_wrap3_s3_clk_src.clkr, 3430*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_S4_CLK] = &gcc_qupv3_wrap3_s4_clk.clkr, 3431*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_S4_CLK_SRC] = &gcc_qupv3_wrap3_s4_clk_src.clkr, 3432*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_S5_CLK] = &gcc_qupv3_wrap3_s5_clk.clkr, 3433*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP3_S5_CLK_SRC] = &gcc_qupv3_wrap3_s5_clk_src.clkr, 3434*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP4_CORE_2X_CLK] = &gcc_qupv3_wrap4_core_2x_clk.clkr, 3435*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP4_CORE_CLK] = &gcc_qupv3_wrap4_core_clk.clkr, 3436*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP4_S0_CLK] = &gcc_qupv3_wrap4_s0_clk.clkr, 3437*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP4_S0_CLK_SRC] = &gcc_qupv3_wrap4_s0_clk_src.clkr, 3438*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP4_S1_CLK] = &gcc_qupv3_wrap4_s1_clk.clkr, 3439*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP4_S1_CLK_SRC] = &gcc_qupv3_wrap4_s1_clk_src.clkr, 3440*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP4_S2_CLK] = &gcc_qupv3_wrap4_s2_clk.clkr, 3441*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP4_S2_CLK_SRC] = &gcc_qupv3_wrap4_s2_clk_src.clkr, 3442*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP4_S3_CLK] = &gcc_qupv3_wrap4_s3_clk.clkr, 3443*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP4_S3_CLK_SRC] = &gcc_qupv3_wrap4_s3_clk_src.clkr, 3444*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP4_S4_CLK] = &gcc_qupv3_wrap4_s4_clk.clkr, 3445*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP4_S4_CLK_SRC] = &gcc_qupv3_wrap4_s4_clk_src.clkr, 3446*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP_1_M_AXI_CLK] = &gcc_qupv3_wrap_1_m_axi_clk.clkr, 3447*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr, 3448*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr, 3449*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr, 3450*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP_3_M_AHB_CLK] = &gcc_qupv3_wrap_3_m_ahb_clk.clkr, 3451*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP_3_S_AHB_CLK] = &gcc_qupv3_wrap_3_s_ahb_clk.clkr, 3452*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP_4_M_AHB_CLK] = &gcc_qupv3_wrap_4_m_ahb_clk.clkr, 3453*67121dadSVivek Aknurwar [GCC_QUPV3_WRAP_4_S_AHB_CLK] = &gcc_qupv3_wrap_4_s_ahb_clk.clkr, 3454*67121dadSVivek Aknurwar [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 3455*67121dadSVivek Aknurwar [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 3456*67121dadSVivek Aknurwar [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr, 3457*67121dadSVivek Aknurwar [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr, 3458*67121dadSVivek Aknurwar [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr, 3459*67121dadSVivek Aknurwar [GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr, 3460*67121dadSVivek Aknurwar [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr, 3461*67121dadSVivek Aknurwar [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr, 3462*67121dadSVivek Aknurwar [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr, 3463*67121dadSVivek Aknurwar [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr, 3464*67121dadSVivek Aknurwar [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr, 3465*67121dadSVivek Aknurwar [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr, 3466*67121dadSVivek Aknurwar [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr, 3467*67121dadSVivek Aknurwar [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr, 3468*67121dadSVivek Aknurwar [GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr, 3469*67121dadSVivek Aknurwar [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr, 3470*67121dadSVivek Aknurwar [GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr, 3471*67121dadSVivek Aknurwar [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr, 3472*67121dadSVivek Aknurwar [GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr, 3473*67121dadSVivek Aknurwar [GCC_UFS_PHY_UNIPRO_5_CORE_CLK] = &gcc_ufs_phy_unipro_5_core_clk.clkr, 3474*67121dadSVivek Aknurwar [GCC_UFS_PHY_UNIPRO_5_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_5_core_clk_src.clkr, 3475*67121dadSVivek Aknurwar [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr, 3476*67121dadSVivek Aknurwar [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr, 3477*67121dadSVivek Aknurwar [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr, 3478*67121dadSVivek Aknurwar [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr, 3479*67121dadSVivek Aknurwar [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr, 3480*67121dadSVivek Aknurwar [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr, 3481*67121dadSVivek Aknurwar [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr, 3482*67121dadSVivek Aknurwar [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr, 3483*67121dadSVivek Aknurwar [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr, 3484*67121dadSVivek Aknurwar [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr, 3485*67121dadSVivek Aknurwar [GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr, 3486*67121dadSVivek Aknurwar [GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr, 3487*67121dadSVivek Aknurwar [GCC_VIDEO_AXI0C_CLK] = &gcc_video_axi0c_clk.clkr, 3488*67121dadSVivek Aknurwar }; 3489*67121dadSVivek Aknurwar 3490*67121dadSVivek Aknurwar static struct gdsc *gcc_hawi_gdscs[] = { 3491*67121dadSVivek Aknurwar [GCC_PCIE_0_GDSC] = &gcc_pcie_0_gdsc, 3492*67121dadSVivek Aknurwar [GCC_PCIE_0_PHY_GDSC] = &gcc_pcie_0_phy_gdsc, 3493*67121dadSVivek Aknurwar [GCC_PCIE_1_GDSC] = &gcc_pcie_1_gdsc, 3494*67121dadSVivek Aknurwar [GCC_PCIE_1_PHY_GDSC] = &gcc_pcie_1_phy_gdsc, 3495*67121dadSVivek Aknurwar [GCC_UFS_MEM_PHY_GDSC] = &gcc_ufs_mem_phy_gdsc, 3496*67121dadSVivek Aknurwar [GCC_UFS_PHY_GDSC] = &gcc_ufs_phy_gdsc, 3497*67121dadSVivek Aknurwar [GCC_USB30_PRIM_GDSC] = &gcc_usb30_prim_gdsc, 3498*67121dadSVivek Aknurwar [GCC_USB3_PHY_GDSC] = &gcc_usb3_phy_gdsc, 3499*67121dadSVivek Aknurwar }; 3500*67121dadSVivek Aknurwar 3501*67121dadSVivek Aknurwar static const struct qcom_reset_map gcc_hawi_resets[] = { 3502*67121dadSVivek Aknurwar [GCC_CAMERA_BCR] = { 0x26000 }, 3503*67121dadSVivek Aknurwar [GCC_EVA_AXI0_CLK_ARES] = { 0x9f008, 2 }, 3504*67121dadSVivek Aknurwar [GCC_EVA_AXI0C_CLK_ARES] = { 0x9f010, 2 }, 3505*67121dadSVivek Aknurwar [GCC_EVA_BCR] = { 0x9f000 }, 3506*67121dadSVivek Aknurwar [GCC_GPU_BCR] = { 0x71000 }, 3507*67121dadSVivek Aknurwar [GCC_PCIE_0_BCR] = { 0x6b000 }, 3508*67121dadSVivek Aknurwar [GCC_PCIE_0_LINK_DOWN_BCR] = { 0x6c014 }, 3509*67121dadSVivek Aknurwar [GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x6c020 }, 3510*67121dadSVivek Aknurwar [GCC_PCIE_0_PHY_BCR] = { 0x6c01c }, 3511*67121dadSVivek Aknurwar [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x6c028 }, 3512*67121dadSVivek Aknurwar [GCC_PCIE_1_BCR] = { 0x67000 }, 3513*67121dadSVivek Aknurwar [GCC_PCIE_1_LINK_DOWN_BCR] = { 0x8e014 }, 3514*67121dadSVivek Aknurwar [GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x8e020 }, 3515*67121dadSVivek Aknurwar [GCC_PCIE_1_PHY_BCR] = { 0x8e01c }, 3516*67121dadSVivek Aknurwar [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x8e024 }, 3517*67121dadSVivek Aknurwar [GCC_PCIE_PHY_BCR] = { 0x6f000 }, 3518*67121dadSVivek Aknurwar [GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x6f00c }, 3519*67121dadSVivek Aknurwar [GCC_PCIE_PHY_COM_BCR] = { 0x6f010 }, 3520*67121dadSVivek Aknurwar [GCC_PCIE_RSCC_BCR] = { 0x11000 }, 3521*67121dadSVivek Aknurwar [GCC_PDM_BCR] = { 0x33000 }, 3522*67121dadSVivek Aknurwar [GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 }, 3523*67121dadSVivek Aknurwar [GCC_QUPV3_WRAPPER_2_BCR] = { 0x1e000 }, 3524*67121dadSVivek Aknurwar [GCC_QUPV3_WRAPPER_3_BCR] = { 0xa8000 }, 3525*67121dadSVivek Aknurwar [GCC_QUPV3_WRAPPER_4_BCR] = { 0xa9000 }, 3526*67121dadSVivek Aknurwar [GCC_QUPV3_WRAPPER_I2C_BCR] = { 0x17000 }, 3527*67121dadSVivek Aknurwar [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 }, 3528*67121dadSVivek Aknurwar [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 }, 3529*67121dadSVivek Aknurwar [GCC_SDCC2_BCR] = { 0x14000 }, 3530*67121dadSVivek Aknurwar [GCC_SDCC4_BCR] = { 0x16000 }, 3531*67121dadSVivek Aknurwar [GCC_TCSR_PCIE_BCR] = { 0x6f018 }, 3532*67121dadSVivek Aknurwar [GCC_UFS_PHY_BCR] = { 0x77000 }, 3533*67121dadSVivek Aknurwar [GCC_USB30_PRIM_BCR] = { 0x39000 }, 3534*67121dadSVivek Aknurwar [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 }, 3535*67121dadSVivek Aknurwar [GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 }, 3536*67121dadSVivek Aknurwar [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 }, 3537*67121dadSVivek Aknurwar [GCC_USB3_PHY_SEC_BCR] = { 0x5000c }, 3538*67121dadSVivek Aknurwar [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 }, 3539*67121dadSVivek Aknurwar [GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 }, 3540*67121dadSVivek Aknurwar [GCC_VIDEO_AXI0_CLK_ARES] = { 0x32018, 2 }, 3541*67121dadSVivek Aknurwar [GCC_VIDEO_AXI0C_CLK_ARES] = { 0x32020, 2 }, 3542*67121dadSVivek Aknurwar [GCC_VIDEO_BCR] = { 0x32000 }, 3543*67121dadSVivek Aknurwar [GCC_VIDEO_XO_CLK_ARES] = { 0x32028, 2 }, 3544*67121dadSVivek Aknurwar }; 3545*67121dadSVivek Aknurwar 3546*67121dadSVivek Aknurwar static const u32 gcc_hawi_critical_cbcrs[] = { 3547*67121dadSVivek Aknurwar 0xa0004, /* GCC_CAM_BIST_MCLK_AHB_CLK */ 3548*67121dadSVivek Aknurwar 0x26004, /* GCC_CAMERA_AHB_CLK */ 3549*67121dadSVivek Aknurwar 0x26028, /* GCC_CAMERA_RSC_CORE_CLK */ 3550*67121dadSVivek Aknurwar 0x26024, /* GCC_CAMERA_XO_CLK */ 3551*67121dadSVivek Aknurwar 0x9f004, /* GCC_EVA_AHB_CLK */ 3552*67121dadSVivek Aknurwar 0x9f018, /* GCC_EVA_XO_CLK */ 3553*67121dadSVivek Aknurwar 0x71004, /* GCC_GPU_CFG_AHB_CLK */ 3554*67121dadSVivek Aknurwar 0x7101c, /* GCC_GPU_RSC_CORE_CLK */ 3555*67121dadSVivek Aknurwar 0x67084, /* GCC_PCIE_1_RSC_CORE_CLK */ 3556*67121dadSVivek Aknurwar 0x43014, /* GCC_PCIE_LINK_XO_CLK */ 3557*67121dadSVivek Aknurwar 0x6b088, /* GCC_PCIE_RSC_CORE_CLK */ 3558*67121dadSVivek Aknurwar 0x52010, /* GCC_PCIE_RSCC_CFG_AHB_CLK */ 3559*67121dadSVivek Aknurwar 0x52010, /* GCC_PCIE_RSCC_XO_CLK */ 3560*67121dadSVivek Aknurwar 0x32004, /* GCC_VIDEO_AHB_CLK */ 3561*67121dadSVivek Aknurwar 0x32028, /* GCC_VIDEO_XO_CLK */ 3562*67121dadSVivek Aknurwar }; 3563*67121dadSVivek Aknurwar 3564*67121dadSVivek Aknurwar static const struct clk_rcg_dfs_data gcc_hawi_dfs_clocks[] = { 3565*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap1_qspi_ref_clk_src), 3566*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src), 3567*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src), 3568*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src), 3569*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src), 3570*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src), 3571*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src), 3572*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src), 3573*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src), 3574*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src), 3575*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src), 3576*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src), 3577*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src), 3578*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap3_qspi_ref_clk_src), 3579*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap3_s0_clk_src), 3580*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap3_s2_clk_src), 3581*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap3_s3_clk_src), 3582*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap3_s4_clk_src), 3583*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap3_s5_clk_src), 3584*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap4_s0_clk_src), 3585*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap4_s1_clk_src), 3586*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap4_s2_clk_src), 3587*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap4_s3_clk_src), 3588*67121dadSVivek Aknurwar DEFINE_RCG_DFS(gcc_qupv3_wrap4_s4_clk_src), 3589*67121dadSVivek Aknurwar }; 3590*67121dadSVivek Aknurwar 3591*67121dadSVivek Aknurwar static const struct regmap_config gcc_hawi_regmap_config = { 3592*67121dadSVivek Aknurwar .reg_bits = 32, 3593*67121dadSVivek Aknurwar .reg_stride = 4, 3594*67121dadSVivek Aknurwar .val_bits = 32, 3595*67121dadSVivek Aknurwar .max_register = 0x1f41f4, 3596*67121dadSVivek Aknurwar .fast_io = true, 3597*67121dadSVivek Aknurwar }; 3598*67121dadSVivek Aknurwar 3599*67121dadSVivek Aknurwar static void clk_hawi_regs_configure(struct device *dev, struct regmap *regmap) 3600*67121dadSVivek Aknurwar { 3601*67121dadSVivek Aknurwar /* FORCE_MEM_CORE_ON for ufs phy ice core clocks */ 3602*67121dadSVivek Aknurwar qcom_branch_set_force_mem_core(regmap, gcc_ufs_phy_ice_core_clk, true); 3603*67121dadSVivek Aknurwar } 3604*67121dadSVivek Aknurwar 3605*67121dadSVivek Aknurwar static const struct qcom_cc_driver_data gcc_hawi_driver_data = { 3606*67121dadSVivek Aknurwar .clk_cbcrs = gcc_hawi_critical_cbcrs, 3607*67121dadSVivek Aknurwar .num_clk_cbcrs = ARRAY_SIZE(gcc_hawi_critical_cbcrs), 3608*67121dadSVivek Aknurwar .dfs_rcgs = gcc_hawi_dfs_clocks, 3609*67121dadSVivek Aknurwar .num_dfs_rcgs = ARRAY_SIZE(gcc_hawi_dfs_clocks), 3610*67121dadSVivek Aknurwar .clk_regs_configure = clk_hawi_regs_configure, 3611*67121dadSVivek Aknurwar }; 3612*67121dadSVivek Aknurwar 3613*67121dadSVivek Aknurwar static const struct qcom_cc_desc gcc_hawi_desc = { 3614*67121dadSVivek Aknurwar .config = &gcc_hawi_regmap_config, 3615*67121dadSVivek Aknurwar .clks = gcc_hawi_clocks, 3616*67121dadSVivek Aknurwar .num_clks = ARRAY_SIZE(gcc_hawi_clocks), 3617*67121dadSVivek Aknurwar .resets = gcc_hawi_resets, 3618*67121dadSVivek Aknurwar .num_resets = ARRAY_SIZE(gcc_hawi_resets), 3619*67121dadSVivek Aknurwar .gdscs = gcc_hawi_gdscs, 3620*67121dadSVivek Aknurwar .num_gdscs = ARRAY_SIZE(gcc_hawi_gdscs), 3621*67121dadSVivek Aknurwar .use_rpm = true, 3622*67121dadSVivek Aknurwar .driver_data = &gcc_hawi_driver_data, 3623*67121dadSVivek Aknurwar }; 3624*67121dadSVivek Aknurwar 3625*67121dadSVivek Aknurwar static const struct of_device_id gcc_hawi_match_table[] = { 3626*67121dadSVivek Aknurwar { .compatible = "qcom,hawi-gcc" }, 3627*67121dadSVivek Aknurwar { } 3628*67121dadSVivek Aknurwar }; 3629*67121dadSVivek Aknurwar MODULE_DEVICE_TABLE(of, gcc_hawi_match_table); 3630*67121dadSVivek Aknurwar 3631*67121dadSVivek Aknurwar static int gcc_hawi_probe(struct platform_device *pdev) 3632*67121dadSVivek Aknurwar { 3633*67121dadSVivek Aknurwar return qcom_cc_probe(pdev, &gcc_hawi_desc); 3634*67121dadSVivek Aknurwar } 3635*67121dadSVivek Aknurwar 3636*67121dadSVivek Aknurwar static struct platform_driver gcc_hawi_driver = { 3637*67121dadSVivek Aknurwar .probe = gcc_hawi_probe, 3638*67121dadSVivek Aknurwar .driver = { 3639*67121dadSVivek Aknurwar .name = "gcc-hawi", 3640*67121dadSVivek Aknurwar .of_match_table = gcc_hawi_match_table, 3641*67121dadSVivek Aknurwar }, 3642*67121dadSVivek Aknurwar }; 3643*67121dadSVivek Aknurwar 3644*67121dadSVivek Aknurwar static int __init gcc_hawi_init(void) 3645*67121dadSVivek Aknurwar { 3646*67121dadSVivek Aknurwar return platform_driver_register(&gcc_hawi_driver); 3647*67121dadSVivek Aknurwar } 3648*67121dadSVivek Aknurwar subsys_initcall(gcc_hawi_init); 3649*67121dadSVivek Aknurwar 3650*67121dadSVivek Aknurwar static void __exit gcc_hawi_exit(void) 3651*67121dadSVivek Aknurwar { 3652*67121dadSVivek Aknurwar platform_driver_unregister(&gcc_hawi_driver); 3653*67121dadSVivek Aknurwar } 3654*67121dadSVivek Aknurwar module_exit(gcc_hawi_exit); 3655*67121dadSVivek Aknurwar 3656*67121dadSVivek Aknurwar MODULE_DESCRIPTION("QTI GCC HAWI Driver"); 3657*67121dadSVivek Aknurwar MODULE_LICENSE("GPL"); 3658