1*844be6e2SKathiravan Thirumoorthy // SPDX-License-Identifier: GPL-2.0-only 2*844be6e2SKathiravan Thirumoorthy /* 3*844be6e2SKathiravan Thirumoorthy * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. 4*844be6e2SKathiravan Thirumoorthy */ 5*844be6e2SKathiravan Thirumoorthy 6*844be6e2SKathiravan Thirumoorthy #include <linux/clk-provider.h> 7*844be6e2SKathiravan Thirumoorthy #include <linux/module.h> 8*844be6e2SKathiravan Thirumoorthy #include <linux/platform_device.h> 9*844be6e2SKathiravan Thirumoorthy #include <linux/regmap.h> 10*844be6e2SKathiravan Thirumoorthy 11*844be6e2SKathiravan Thirumoorthy #include <dt-bindings/clock/qcom,ipq5210-gcc.h> 12*844be6e2SKathiravan Thirumoorthy #include <dt-bindings/reset/qcom,ipq5210-gcc.h> 13*844be6e2SKathiravan Thirumoorthy 14*844be6e2SKathiravan Thirumoorthy #include "clk-alpha-pll.h" 15*844be6e2SKathiravan Thirumoorthy #include "clk-branch.h" 16*844be6e2SKathiravan Thirumoorthy #include "clk-rcg.h" 17*844be6e2SKathiravan Thirumoorthy #include "clk-regmap.h" 18*844be6e2SKathiravan Thirumoorthy #include "clk-regmap-divider.h" 19*844be6e2SKathiravan Thirumoorthy #include "clk-regmap-mux.h" 20*844be6e2SKathiravan Thirumoorthy #include "clk-regmap-phy-mux.h" 21*844be6e2SKathiravan Thirumoorthy #include "reset.h" 22*844be6e2SKathiravan Thirumoorthy 23*844be6e2SKathiravan Thirumoorthy enum { 24*844be6e2SKathiravan Thirumoorthy DT_XO, 25*844be6e2SKathiravan Thirumoorthy DT_SLEEP_CLK, 26*844be6e2SKathiravan Thirumoorthy DT_PCIE30_PHY0_PIPE_CLK, 27*844be6e2SKathiravan Thirumoorthy DT_PCIE30_PHY1_PIPE_CLK, 28*844be6e2SKathiravan Thirumoorthy DT_USB3_PHY0_CC_PIPE_CLK, 29*844be6e2SKathiravan Thirumoorthy DT_NSS_CMN_CLK, 30*844be6e2SKathiravan Thirumoorthy }; 31*844be6e2SKathiravan Thirumoorthy 32*844be6e2SKathiravan Thirumoorthy enum { 33*844be6e2SKathiravan Thirumoorthy P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 34*844be6e2SKathiravan Thirumoorthy P_GPLL0_OUT_AUX, 35*844be6e2SKathiravan Thirumoorthy P_GPLL0_OUT_MAIN, 36*844be6e2SKathiravan Thirumoorthy P_GPLL2_OUT_AUX, 37*844be6e2SKathiravan Thirumoorthy P_GPLL2_OUT_MAIN, 38*844be6e2SKathiravan Thirumoorthy P_GPLL4_OUT_AUX, 39*844be6e2SKathiravan Thirumoorthy P_GPLL4_OUT_MAIN, 40*844be6e2SKathiravan Thirumoorthy P_NSS_CMN_CLK, 41*844be6e2SKathiravan Thirumoorthy P_SLEEP_CLK, 42*844be6e2SKathiravan Thirumoorthy P_USB3PHY_0_PIPE, 43*844be6e2SKathiravan Thirumoorthy P_XO, 44*844be6e2SKathiravan Thirumoorthy }; 45*844be6e2SKathiravan Thirumoorthy 46*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_xo = { .index = DT_XO }; 47*844be6e2SKathiravan Thirumoorthy 48*844be6e2SKathiravan Thirumoorthy static struct clk_alpha_pll gpll0_main = { 49*844be6e2SKathiravan Thirumoorthy .offset = 0x20000, 50*844be6e2SKathiravan Thirumoorthy .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO], 51*844be6e2SKathiravan Thirumoorthy .clkr = { 52*844be6e2SKathiravan Thirumoorthy .enable_reg = 0xb000, 53*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 54*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 55*844be6e2SKathiravan Thirumoorthy .name = "gpll0_main", 56*844be6e2SKathiravan Thirumoorthy .parent_data = &gcc_parent_data_xo, 57*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 58*844be6e2SKathiravan Thirumoorthy .ops = &clk_alpha_pll_ops, 59*844be6e2SKathiravan Thirumoorthy }, 60*844be6e2SKathiravan Thirumoorthy }, 61*844be6e2SKathiravan Thirumoorthy }; 62*844be6e2SKathiravan Thirumoorthy 63*844be6e2SKathiravan Thirumoorthy static struct clk_fixed_factor gpll0_div2 = { 64*844be6e2SKathiravan Thirumoorthy .mult = 1, 65*844be6e2SKathiravan Thirumoorthy .div = 2, 66*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 67*844be6e2SKathiravan Thirumoorthy .name = "gpll0_div2", 68*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw *[]) { 69*844be6e2SKathiravan Thirumoorthy &gpll0_main.clkr.hw 70*844be6e2SKathiravan Thirumoorthy }, 71*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 72*844be6e2SKathiravan Thirumoorthy .ops = &clk_fixed_factor_ops, 73*844be6e2SKathiravan Thirumoorthy }, 74*844be6e2SKathiravan Thirumoorthy }; 75*844be6e2SKathiravan Thirumoorthy 76*844be6e2SKathiravan Thirumoorthy static struct clk_alpha_pll_postdiv gpll0 = { 77*844be6e2SKathiravan Thirumoorthy .offset = 0x20000, 78*844be6e2SKathiravan Thirumoorthy .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO], 79*844be6e2SKathiravan Thirumoorthy .width = 4, 80*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 81*844be6e2SKathiravan Thirumoorthy .name = "gpll0", 82*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw *[]) { 83*844be6e2SKathiravan Thirumoorthy &gpll0_main.clkr.hw 84*844be6e2SKathiravan Thirumoorthy }, 85*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 86*844be6e2SKathiravan Thirumoorthy .ops = &clk_alpha_pll_postdiv_ro_ops, 87*844be6e2SKathiravan Thirumoorthy }, 88*844be6e2SKathiravan Thirumoorthy }; 89*844be6e2SKathiravan Thirumoorthy 90*844be6e2SKathiravan Thirumoorthy static struct clk_alpha_pll gpll2_main = { 91*844be6e2SKathiravan Thirumoorthy .offset = 0x21000, 92*844be6e2SKathiravan Thirumoorthy .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO], 93*844be6e2SKathiravan Thirumoorthy .clkr = { 94*844be6e2SKathiravan Thirumoorthy .enable_reg = 0xb000, 95*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(1), 96*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 97*844be6e2SKathiravan Thirumoorthy .name = "gpll2_main", 98*844be6e2SKathiravan Thirumoorthy .parent_data = &gcc_parent_data_xo, 99*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 100*844be6e2SKathiravan Thirumoorthy .ops = &clk_alpha_pll_ops, 101*844be6e2SKathiravan Thirumoorthy }, 102*844be6e2SKathiravan Thirumoorthy }, 103*844be6e2SKathiravan Thirumoorthy }; 104*844be6e2SKathiravan Thirumoorthy 105*844be6e2SKathiravan Thirumoorthy static const struct clk_div_table post_div_table_gpll2[] = { 106*844be6e2SKathiravan Thirumoorthy { 0x1, 2 }, 107*844be6e2SKathiravan Thirumoorthy { } 108*844be6e2SKathiravan Thirumoorthy }; 109*844be6e2SKathiravan Thirumoorthy 110*844be6e2SKathiravan Thirumoorthy static struct clk_alpha_pll_postdiv gpll2 = { 111*844be6e2SKathiravan Thirumoorthy .offset = 0x21000, 112*844be6e2SKathiravan Thirumoorthy .post_div_table = post_div_table_gpll2, 113*844be6e2SKathiravan Thirumoorthy .num_post_div = ARRAY_SIZE(post_div_table_gpll2), 114*844be6e2SKathiravan Thirumoorthy .width = 4, 115*844be6e2SKathiravan Thirumoorthy .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO], 116*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 117*844be6e2SKathiravan Thirumoorthy .name = "gpll2", 118*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 119*844be6e2SKathiravan Thirumoorthy &gpll2_main.clkr.hw, 120*844be6e2SKathiravan Thirumoorthy }, 121*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 122*844be6e2SKathiravan Thirumoorthy .ops = &clk_alpha_pll_postdiv_ro_ops, 123*844be6e2SKathiravan Thirumoorthy }, 124*844be6e2SKathiravan Thirumoorthy }; 125*844be6e2SKathiravan Thirumoorthy 126*844be6e2SKathiravan Thirumoorthy static struct clk_alpha_pll gpll4_main = { 127*844be6e2SKathiravan Thirumoorthy .offset = 0x22000, 128*844be6e2SKathiravan Thirumoorthy .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO], 129*844be6e2SKathiravan Thirumoorthy .clkr = { 130*844be6e2SKathiravan Thirumoorthy .enable_reg = 0xb000, 131*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(2), 132*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 133*844be6e2SKathiravan Thirumoorthy .name = "gpll4_main", 134*844be6e2SKathiravan Thirumoorthy .parent_data = &gcc_parent_data_xo, 135*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 136*844be6e2SKathiravan Thirumoorthy .ops = &clk_alpha_pll_ops, 137*844be6e2SKathiravan Thirumoorthy /* 138*844be6e2SKathiravan Thirumoorthy * There are no consumers for this GPLL in kernel yet, 139*844be6e2SKathiravan Thirumoorthy * (will be added soon), so the clock framework 140*844be6e2SKathiravan Thirumoorthy * disables this source. But some of the clocks 141*844be6e2SKathiravan Thirumoorthy * initialized by boot loaders uses this source. So we 142*844be6e2SKathiravan Thirumoorthy * need to keep this clock ON. Add the 143*844be6e2SKathiravan Thirumoorthy * CLK_IGNORE_UNUSED flag so the clock will not be 144*844be6e2SKathiravan Thirumoorthy * disabled. Once the consumer in kernel is added, we 145*844be6e2SKathiravan Thirumoorthy * can get rid of this flag. 146*844be6e2SKathiravan Thirumoorthy */ 147*844be6e2SKathiravan Thirumoorthy .flags = CLK_IS_CRITICAL, 148*844be6e2SKathiravan Thirumoorthy }, 149*844be6e2SKathiravan Thirumoorthy }, 150*844be6e2SKathiravan Thirumoorthy }; 151*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_xo[] = { 152*844be6e2SKathiravan Thirumoorthy { P_XO, 0 }, 153*844be6e2SKathiravan Thirumoorthy }; 154*844be6e2SKathiravan Thirumoorthy 155*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_0[] = { 156*844be6e2SKathiravan Thirumoorthy { P_XO, 0 }, 157*844be6e2SKathiravan Thirumoorthy { P_GPLL0_OUT_MAIN, 1 }, 158*844be6e2SKathiravan Thirumoorthy { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 }, 159*844be6e2SKathiravan Thirumoorthy }; 160*844be6e2SKathiravan Thirumoorthy 161*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_0[] = { 162*844be6e2SKathiravan Thirumoorthy { .index = DT_XO }, 163*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0.clkr.hw }, 164*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0_div2.hw }, 165*844be6e2SKathiravan Thirumoorthy }; 166*844be6e2SKathiravan Thirumoorthy 167*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_1[] = { 168*844be6e2SKathiravan Thirumoorthy { P_XO, 0 }, 169*844be6e2SKathiravan Thirumoorthy { P_GPLL0_OUT_MAIN, 1 }, 170*844be6e2SKathiravan Thirumoorthy }; 171*844be6e2SKathiravan Thirumoorthy 172*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_1[] = { 173*844be6e2SKathiravan Thirumoorthy { .index = DT_XO }, 174*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0.clkr.hw }, 175*844be6e2SKathiravan Thirumoorthy }; 176*844be6e2SKathiravan Thirumoorthy 177*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_2[] = { 178*844be6e2SKathiravan Thirumoorthy { P_XO, 0 }, 179*844be6e2SKathiravan Thirumoorthy { P_GPLL0_OUT_MAIN, 1 }, 180*844be6e2SKathiravan Thirumoorthy { P_GPLL4_OUT_MAIN, 2 }, 181*844be6e2SKathiravan Thirumoorthy }; 182*844be6e2SKathiravan Thirumoorthy 183*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_2[] = { 184*844be6e2SKathiravan Thirumoorthy { .index = DT_XO }, 185*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0.clkr.hw }, 186*844be6e2SKathiravan Thirumoorthy { .hw = &gpll4_main.clkr.hw }, 187*844be6e2SKathiravan Thirumoorthy }; 188*844be6e2SKathiravan Thirumoorthy 189*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_3[] = { 190*844be6e2SKathiravan Thirumoorthy { P_XO, 0 }, 191*844be6e2SKathiravan Thirumoorthy }; 192*844be6e2SKathiravan Thirumoorthy 193*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_3[] = { 194*844be6e2SKathiravan Thirumoorthy { .index = DT_XO }, 195*844be6e2SKathiravan Thirumoorthy }; 196*844be6e2SKathiravan Thirumoorthy 197*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_4[] = { 198*844be6e2SKathiravan Thirumoorthy { P_XO, 0 }, 199*844be6e2SKathiravan Thirumoorthy { P_NSS_CMN_CLK, 1 }, 200*844be6e2SKathiravan Thirumoorthy { P_GPLL0_OUT_AUX, 2 }, 201*844be6e2SKathiravan Thirumoorthy { P_GPLL2_OUT_AUX, 3 }, 202*844be6e2SKathiravan Thirumoorthy }; 203*844be6e2SKathiravan Thirumoorthy 204*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_4[] = { 205*844be6e2SKathiravan Thirumoorthy { .index = DT_XO }, 206*844be6e2SKathiravan Thirumoorthy { .index = DT_NSS_CMN_CLK }, 207*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0.clkr.hw }, 208*844be6e2SKathiravan Thirumoorthy { .hw = &gpll2_main.clkr.hw }, 209*844be6e2SKathiravan Thirumoorthy }; 210*844be6e2SKathiravan Thirumoorthy 211*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_5[] = { 212*844be6e2SKathiravan Thirumoorthy { P_XO, 0 }, 213*844be6e2SKathiravan Thirumoorthy { P_GPLL0_OUT_MAIN, 1 }, 214*844be6e2SKathiravan Thirumoorthy { P_GPLL0_OUT_AUX, 2 }, 215*844be6e2SKathiravan Thirumoorthy { P_SLEEP_CLK, 6 }, 216*844be6e2SKathiravan Thirumoorthy }; 217*844be6e2SKathiravan Thirumoorthy 218*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_5[] = { 219*844be6e2SKathiravan Thirumoorthy { .index = DT_XO }, 220*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0.clkr.hw }, 221*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0.clkr.hw }, 222*844be6e2SKathiravan Thirumoorthy { .index = DT_SLEEP_CLK }, 223*844be6e2SKathiravan Thirumoorthy }; 224*844be6e2SKathiravan Thirumoorthy 225*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_6[] = { 226*844be6e2SKathiravan Thirumoorthy { P_XO, 0 }, 227*844be6e2SKathiravan Thirumoorthy { P_GPLL0_OUT_MAIN, 1 }, 228*844be6e2SKathiravan Thirumoorthy { P_GPLL2_OUT_MAIN, 2 }, 229*844be6e2SKathiravan Thirumoorthy { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 }, 230*844be6e2SKathiravan Thirumoorthy }; 231*844be6e2SKathiravan Thirumoorthy 232*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_6[] = { 233*844be6e2SKathiravan Thirumoorthy { .index = DT_XO }, 234*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0.clkr.hw }, 235*844be6e2SKathiravan Thirumoorthy { .hw = &gpll2.clkr.hw }, 236*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0_div2.hw }, 237*844be6e2SKathiravan Thirumoorthy }; 238*844be6e2SKathiravan Thirumoorthy 239*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_7[] = { 240*844be6e2SKathiravan Thirumoorthy { P_XO, 0 }, 241*844be6e2SKathiravan Thirumoorthy { P_GPLL0_OUT_MAIN, 1 }, 242*844be6e2SKathiravan Thirumoorthy { P_GPLL4_OUT_MAIN, 2 }, 243*844be6e2SKathiravan Thirumoorthy { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 }, 244*844be6e2SKathiravan Thirumoorthy }; 245*844be6e2SKathiravan Thirumoorthy 246*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_7[] = { 247*844be6e2SKathiravan Thirumoorthy { .index = DT_XO }, 248*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0.clkr.hw }, 249*844be6e2SKathiravan Thirumoorthy { .hw = &gpll4_main.clkr.hw }, 250*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0_div2.hw }, 251*844be6e2SKathiravan Thirumoorthy }; 252*844be6e2SKathiravan Thirumoorthy 253*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_8[] = { 254*844be6e2SKathiravan Thirumoorthy { P_XO, 0 }, 255*844be6e2SKathiravan Thirumoorthy { P_GPLL0_OUT_AUX, 2 }, 256*844be6e2SKathiravan Thirumoorthy { P_SLEEP_CLK, 6 }, 257*844be6e2SKathiravan Thirumoorthy }; 258*844be6e2SKathiravan Thirumoorthy 259*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_8[] = { 260*844be6e2SKathiravan Thirumoorthy { .index = DT_XO }, 261*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0.clkr.hw }, 262*844be6e2SKathiravan Thirumoorthy { .index = DT_SLEEP_CLK }, 263*844be6e2SKathiravan Thirumoorthy }; 264*844be6e2SKathiravan Thirumoorthy 265*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_9[] = { 266*844be6e2SKathiravan Thirumoorthy { P_XO, 0 }, 267*844be6e2SKathiravan Thirumoorthy { P_GPLL4_OUT_AUX, 1 }, 268*844be6e2SKathiravan Thirumoorthy { P_GPLL0_OUT_MAIN, 3 }, 269*844be6e2SKathiravan Thirumoorthy { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 }, 270*844be6e2SKathiravan Thirumoorthy }; 271*844be6e2SKathiravan Thirumoorthy 272*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_9[] = { 273*844be6e2SKathiravan Thirumoorthy { .index = DT_XO }, 274*844be6e2SKathiravan Thirumoorthy { .hw = &gpll4_main.clkr.hw }, 275*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0.clkr.hw }, 276*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0_div2.hw }, 277*844be6e2SKathiravan Thirumoorthy }; 278*844be6e2SKathiravan Thirumoorthy 279*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_10[] = { 280*844be6e2SKathiravan Thirumoorthy { P_XO, 0 }, 281*844be6e2SKathiravan Thirumoorthy { P_GPLL4_OUT_MAIN, 1 }, 282*844be6e2SKathiravan Thirumoorthy { P_GPLL0_OUT_AUX, 2 }, 283*844be6e2SKathiravan Thirumoorthy { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 }, 284*844be6e2SKathiravan Thirumoorthy }; 285*844be6e2SKathiravan Thirumoorthy 286*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_10[] = { 287*844be6e2SKathiravan Thirumoorthy { .index = DT_XO }, 288*844be6e2SKathiravan Thirumoorthy { .hw = &gpll4_main.clkr.hw }, 289*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0.clkr.hw }, 290*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0_div2.hw }, 291*844be6e2SKathiravan Thirumoorthy }; 292*844be6e2SKathiravan Thirumoorthy 293*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_11[] = { 294*844be6e2SKathiravan Thirumoorthy { P_XO, 0 }, 295*844be6e2SKathiravan Thirumoorthy { P_GPLL4_OUT_MAIN, 1 }, 296*844be6e2SKathiravan Thirumoorthy { P_GPLL0_OUT_AUX, 2 }, 297*844be6e2SKathiravan Thirumoorthy { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 }, 298*844be6e2SKathiravan Thirumoorthy }; 299*844be6e2SKathiravan Thirumoorthy 300*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_11[] = { 301*844be6e2SKathiravan Thirumoorthy { .index = DT_XO }, 302*844be6e2SKathiravan Thirumoorthy { .hw = &gpll4_main.clkr.hw }, 303*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0.clkr.hw }, 304*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0_div2.hw }, 305*844be6e2SKathiravan Thirumoorthy }; 306*844be6e2SKathiravan Thirumoorthy 307*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_12[] = { 308*844be6e2SKathiravan Thirumoorthy { P_XO, 0 }, 309*844be6e2SKathiravan Thirumoorthy { P_GPLL0_OUT_MAIN, 1 }, 310*844be6e2SKathiravan Thirumoorthy { P_GPLL2_OUT_AUX, 2 }, 311*844be6e2SKathiravan Thirumoorthy }; 312*844be6e2SKathiravan Thirumoorthy 313*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_12[] = { 314*844be6e2SKathiravan Thirumoorthy { .index = DT_XO }, 315*844be6e2SKathiravan Thirumoorthy { .hw = &gpll0.clkr.hw }, 316*844be6e2SKathiravan Thirumoorthy { .hw = &gpll2_main.clkr.hw }, 317*844be6e2SKathiravan Thirumoorthy }; 318*844be6e2SKathiravan Thirumoorthy 319*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_13[] = { 320*844be6e2SKathiravan Thirumoorthy { P_SLEEP_CLK, 6 }, 321*844be6e2SKathiravan Thirumoorthy }; 322*844be6e2SKathiravan Thirumoorthy 323*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_13[] = { 324*844be6e2SKathiravan Thirumoorthy { .index = DT_SLEEP_CLK }, 325*844be6e2SKathiravan Thirumoorthy }; 326*844be6e2SKathiravan Thirumoorthy 327*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_adss_pwm_clk_src[] = { 328*844be6e2SKathiravan Thirumoorthy F(24000000, P_XO, 1, 0, 0), 329*844be6e2SKathiravan Thirumoorthy F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0), 330*844be6e2SKathiravan Thirumoorthy { } 331*844be6e2SKathiravan Thirumoorthy }; 332*844be6e2SKathiravan Thirumoorthy 333*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_adss_pwm_clk_src = { 334*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x1c004, 335*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 336*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 337*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_1, 338*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_adss_pwm_clk_src, 339*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 340*844be6e2SKathiravan Thirumoorthy .name = "gcc_adss_pwm_clk_src", 341*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_1, 342*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_1), 343*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 344*844be6e2SKathiravan Thirumoorthy }, 345*844be6e2SKathiravan Thirumoorthy }; 346*844be6e2SKathiravan Thirumoorthy 347*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_nss_ts_clk_src[] = { 348*844be6e2SKathiravan Thirumoorthy F(24000000, P_XO, 1, 0, 0), 349*844be6e2SKathiravan Thirumoorthy { } 350*844be6e2SKathiravan Thirumoorthy }; 351*844be6e2SKathiravan Thirumoorthy 352*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_nss_ts_clk_src = { 353*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x17088, 354*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 355*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 356*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_3, 357*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_nss_ts_clk_src, 358*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 359*844be6e2SKathiravan Thirumoorthy .name = "gcc_nss_ts_clk_src", 360*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_3, 361*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_3), 362*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 363*844be6e2SKathiravan Thirumoorthy }, 364*844be6e2SKathiravan Thirumoorthy }; 365*844be6e2SKathiravan Thirumoorthy 366*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_system_noc_bfdcd_clk_src[] = { 367*844be6e2SKathiravan Thirumoorthy F(24000000, P_XO, 1, 0, 0), 368*844be6e2SKathiravan Thirumoorthy F(133333333, P_GPLL0_OUT_MAIN, 6, 0, 0), 369*844be6e2SKathiravan Thirumoorthy F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0), 370*844be6e2SKathiravan Thirumoorthy F(266666667, P_GPLL4_OUT_MAIN, 4.5, 0, 0), 371*844be6e2SKathiravan Thirumoorthy { } 372*844be6e2SKathiravan Thirumoorthy }; 373*844be6e2SKathiravan Thirumoorthy 374*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_system_noc_bfdcd_clk_src = { 375*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x2e004, 376*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_system_noc_bfdcd_clk_src, 377*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 378*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_7, 379*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 380*844be6e2SKathiravan Thirumoorthy .name = "gcc_system_noc_bfdcd_clk_src", 381*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_7, 382*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_7), 383*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 384*844be6e2SKathiravan Thirumoorthy }, 385*844be6e2SKathiravan Thirumoorthy }; 386*844be6e2SKathiravan Thirumoorthy 387*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_nssnoc_memnoc_bfdcd_clk_src[] = { 388*844be6e2SKathiravan Thirumoorthy F(429000000, P_NSS_CMN_CLK, 1, 0, 0), 389*844be6e2SKathiravan Thirumoorthy { } 390*844be6e2SKathiravan Thirumoorthy }; 391*844be6e2SKathiravan Thirumoorthy 392*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_nssnoc_memnoc_bfdcd_clk_src = { 393*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x17004, 394*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 395*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 396*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_4, 397*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_nssnoc_memnoc_bfdcd_clk_src, 398*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 399*844be6e2SKathiravan Thirumoorthy .name = "gcc_nssnoc_memnoc_bfdcd_clk_src", 400*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_4, 401*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_4), 402*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 403*844be6e2SKathiravan Thirumoorthy }, 404*844be6e2SKathiravan Thirumoorthy }; 405*844be6e2SKathiravan Thirumoorthy 406*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_pcie0_axi_m_clk_src[] = { 407*844be6e2SKathiravan Thirumoorthy F(200000000, P_GPLL4_OUT_MAIN, 6, 0, 0), 408*844be6e2SKathiravan Thirumoorthy { } 409*844be6e2SKathiravan Thirumoorthy }; 410*844be6e2SKathiravan Thirumoorthy 411*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie0_axi_m_clk_src = { 412*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x28018, 413*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 414*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 415*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_2, 416*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_pcie0_axi_m_clk_src, 417*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 418*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie0_axi_m_clk_src", 419*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_2, 420*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_2), 421*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 422*844be6e2SKathiravan Thirumoorthy }, 423*844be6e2SKathiravan Thirumoorthy }; 424*844be6e2SKathiravan Thirumoorthy 425*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie0_axi_s_clk_src = { 426*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x28020, 427*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 428*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 429*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_2, 430*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_pcie0_axi_m_clk_src, 431*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 432*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie0_axi_s_clk_src", 433*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_2, 434*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_2), 435*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 436*844be6e2SKathiravan Thirumoorthy }, 437*844be6e2SKathiravan Thirumoorthy }; 438*844be6e2SKathiravan Thirumoorthy 439*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie0_rchng_clk_src = { 440*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x28028, 441*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 442*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 443*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_1, 444*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_adss_pwm_clk_src, 445*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 446*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie0_rchng_clk_src", 447*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_1, 448*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_1), 449*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 450*844be6e2SKathiravan Thirumoorthy }, 451*844be6e2SKathiravan Thirumoorthy }; 452*844be6e2SKathiravan Thirumoorthy 453*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_pcie1_axi_m_clk_src[] = { 454*844be6e2SKathiravan Thirumoorthy F(266666667, P_GPLL4_OUT_MAIN, 4.5, 0, 0), 455*844be6e2SKathiravan Thirumoorthy { } 456*844be6e2SKathiravan Thirumoorthy }; 457*844be6e2SKathiravan Thirumoorthy 458*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie1_axi_m_clk_src = { 459*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x29018, 460*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 461*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 462*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_2, 463*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_pcie1_axi_m_clk_src, 464*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 465*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie1_axi_m_clk_src", 466*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_2, 467*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_2), 468*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 469*844be6e2SKathiravan Thirumoorthy }, 470*844be6e2SKathiravan Thirumoorthy }; 471*844be6e2SKathiravan Thirumoorthy 472*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie1_axi_s_clk_src = { 473*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x29020, 474*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 475*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 476*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_2, 477*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_pcie0_axi_m_clk_src, 478*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 479*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie1_axi_s_clk_src", 480*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_2, 481*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_2), 482*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 483*844be6e2SKathiravan Thirumoorthy }, 484*844be6e2SKathiravan Thirumoorthy }; 485*844be6e2SKathiravan Thirumoorthy 486*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie1_rchng_clk_src = { 487*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x29028, 488*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 489*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 490*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_1, 491*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_adss_pwm_clk_src, 492*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 493*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie1_rchng_clk_src", 494*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_1, 495*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_1), 496*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 497*844be6e2SKathiravan Thirumoorthy }, 498*844be6e2SKathiravan Thirumoorthy }; 499*844be6e2SKathiravan Thirumoorthy 500*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_pcie_aux_clk_src[] = { 501*844be6e2SKathiravan Thirumoorthy F(20000000, P_GPLL0_OUT_MAIN, 10, 1, 4), 502*844be6e2SKathiravan Thirumoorthy { } 503*844be6e2SKathiravan Thirumoorthy }; 504*844be6e2SKathiravan Thirumoorthy 505*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie_aux_clk_src = { 506*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x28004, 507*844be6e2SKathiravan Thirumoorthy .mnd_width = 16, 508*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 509*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_5, 510*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_pcie_aux_clk_src, 511*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 512*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie_aux_clk_src", 513*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_5, 514*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_5), 515*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 516*844be6e2SKathiravan Thirumoorthy }, 517*844be6e2SKathiravan Thirumoorthy }; 518*844be6e2SKathiravan Thirumoorthy 519*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qupv3_wrap_se0_clk_src[] = { 520*844be6e2SKathiravan Thirumoorthy F(960000, P_XO, 10, 2, 5), 521*844be6e2SKathiravan Thirumoorthy F(3686636, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 2, 217), 522*844be6e2SKathiravan Thirumoorthy F(4800000, P_XO, 5, 0, 0), 523*844be6e2SKathiravan Thirumoorthy F(7373272, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 4, 217), 524*844be6e2SKathiravan Thirumoorthy F(9600000, P_XO, 2.5, 0, 0), 525*844be6e2SKathiravan Thirumoorthy F(14746544, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 8, 217), 526*844be6e2SKathiravan Thirumoorthy F(16000000, P_GPLL0_OUT_MAIN, 10, 1, 5), 527*844be6e2SKathiravan Thirumoorthy F(24000000, P_XO, 1, 0, 0), 528*844be6e2SKathiravan Thirumoorthy F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2), 529*844be6e2SKathiravan Thirumoorthy F(32000000, P_GPLL0_OUT_MAIN, 1, 1, 25), 530*844be6e2SKathiravan Thirumoorthy F(40000000, P_GPLL0_OUT_MAIN, 1, 1, 20), 531*844be6e2SKathiravan Thirumoorthy F(46400000, P_GPLL0_OUT_MAIN, 2, 29, 250), 532*844be6e2SKathiravan Thirumoorthy F(48000000, P_GPLL0_OUT_MAIN, 1, 3, 50), 533*844be6e2SKathiravan Thirumoorthy F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0), 534*844be6e2SKathiravan Thirumoorthy F(51200000, P_GPLL0_OUT_MAIN, 1, 8, 125), 535*844be6e2SKathiravan Thirumoorthy F(56000000, P_GPLL0_OUT_MAIN, 1, 7, 100), 536*844be6e2SKathiravan Thirumoorthy F(58986175, P_GPLL0_OUT_MAIN, 1, 16, 217), 537*844be6e2SKathiravan Thirumoorthy F(60000000, P_GPLL0_OUT_MAIN, 1, 3, 40), 538*844be6e2SKathiravan Thirumoorthy F(64000000, P_GPLL0_OUT_MAIN, 12.5, 0, 0), 539*844be6e2SKathiravan Thirumoorthy { } 540*844be6e2SKathiravan Thirumoorthy }; 541*844be6e2SKathiravan Thirumoorthy 542*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se0_clk_src = { 543*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x4004, 544*844be6e2SKathiravan Thirumoorthy .mnd_width = 8, 545*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 546*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_0, 547*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src, 548*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 549*844be6e2SKathiravan Thirumoorthy .name = "gcc_qupv3_wrap_se0_clk_src", 550*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_0, 551*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_0), 552*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 553*844be6e2SKathiravan Thirumoorthy }, 554*844be6e2SKathiravan Thirumoorthy }; 555*844be6e2SKathiravan Thirumoorthy 556*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se1_clk_src = { 557*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x5004, 558*844be6e2SKathiravan Thirumoorthy .mnd_width = 8, 559*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 560*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_0, 561*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src, 562*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 563*844be6e2SKathiravan Thirumoorthy .name = "gcc_qupv3_wrap_se1_clk_src", 564*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_0, 565*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_0), 566*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 567*844be6e2SKathiravan Thirumoorthy }, 568*844be6e2SKathiravan Thirumoorthy }; 569*844be6e2SKathiravan Thirumoorthy 570*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se2_clk_src = { 571*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x2018, 572*844be6e2SKathiravan Thirumoorthy .mnd_width = 8, 573*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 574*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_0, 575*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src, 576*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 577*844be6e2SKathiravan Thirumoorthy .name = "gcc_qupv3_wrap_se2_clk_src", 578*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_0, 579*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_0), 580*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 581*844be6e2SKathiravan Thirumoorthy }, 582*844be6e2SKathiravan Thirumoorthy }; 583*844be6e2SKathiravan Thirumoorthy 584*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se3_clk_src = { 585*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x2034, 586*844be6e2SKathiravan Thirumoorthy .mnd_width = 8, 587*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 588*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_0, 589*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src, 590*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 591*844be6e2SKathiravan Thirumoorthy .name = "gcc_qupv3_wrap_se3_clk_src", 592*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_0, 593*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_0), 594*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 595*844be6e2SKathiravan Thirumoorthy }, 596*844be6e2SKathiravan Thirumoorthy }; 597*844be6e2SKathiravan Thirumoorthy 598*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se4_clk_src = { 599*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x3018, 600*844be6e2SKathiravan Thirumoorthy .mnd_width = 8, 601*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 602*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_0, 603*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src, 604*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 605*844be6e2SKathiravan Thirumoorthy .name = "gcc_qupv3_wrap_se4_clk_src", 606*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_0, 607*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_0), 608*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 609*844be6e2SKathiravan Thirumoorthy }, 610*844be6e2SKathiravan Thirumoorthy }; 611*844be6e2SKathiravan Thirumoorthy 612*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se5_clk_src = { 613*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x3034, 614*844be6e2SKathiravan Thirumoorthy .mnd_width = 8, 615*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 616*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_0, 617*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src, 618*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 619*844be6e2SKathiravan Thirumoorthy .name = "gcc_qupv3_wrap_se5_clk_src", 620*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_0, 621*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_0), 622*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 623*844be6e2SKathiravan Thirumoorthy }, 624*844be6e2SKathiravan Thirumoorthy }; 625*844be6e2SKathiravan Thirumoorthy 626*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = { 627*844be6e2SKathiravan Thirumoorthy F(144000, P_XO, 16, 12, 125), 628*844be6e2SKathiravan Thirumoorthy F(400000, P_XO, 12, 1, 5), 629*844be6e2SKathiravan Thirumoorthy F(24000000, P_GPLL2_OUT_MAIN, 12, 1, 2), 630*844be6e2SKathiravan Thirumoorthy F(48000000, P_GPLL2_OUT_MAIN, 12, 0, 0), 631*844be6e2SKathiravan Thirumoorthy F(96000000, P_GPLL2_OUT_MAIN, 6, 0, 0), 632*844be6e2SKathiravan Thirumoorthy F(177777778, P_GPLL0_OUT_MAIN, 4.5, 0, 0), 633*844be6e2SKathiravan Thirumoorthy F(192000000, P_GPLL2_OUT_MAIN, 3, 0, 0), 634*844be6e2SKathiravan Thirumoorthy F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0), 635*844be6e2SKathiravan Thirumoorthy { } 636*844be6e2SKathiravan Thirumoorthy }; 637*844be6e2SKathiravan Thirumoorthy 638*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_sdcc1_apps_clk_src = { 639*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x33004, 640*844be6e2SKathiravan Thirumoorthy .mnd_width = 8, 641*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 642*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_6, 643*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_sdcc1_apps_clk_src, 644*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 645*844be6e2SKathiravan Thirumoorthy .name = "gcc_sdcc1_apps_clk_src", 646*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_6, 647*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_6), 648*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_floor_ops, 649*844be6e2SKathiravan Thirumoorthy }, 650*844be6e2SKathiravan Thirumoorthy }; 651*844be6e2SKathiravan Thirumoorthy 652*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = { 653*844be6e2SKathiravan Thirumoorthy F(300000000, P_GPLL4_OUT_MAIN, 4, 0, 0), 654*844be6e2SKathiravan Thirumoorthy { } 655*844be6e2SKathiravan Thirumoorthy }; 656*844be6e2SKathiravan Thirumoorthy 657*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = { 658*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x33018, 659*844be6e2SKathiravan Thirumoorthy .mnd_width = 8, 660*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 661*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_7, 662*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src, 663*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 664*844be6e2SKathiravan Thirumoorthy .name = "gcc_sdcc1_ice_core_clk_src", 665*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_7, 666*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_7), 667*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_floor_ops, 668*844be6e2SKathiravan Thirumoorthy }, 669*844be6e2SKathiravan Thirumoorthy }; 670*844be6e2SKathiravan Thirumoorthy 671*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_uniphy_sys_clk_src = { 672*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x17090, 673*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 674*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 675*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_3, 676*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_nss_ts_clk_src, 677*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 678*844be6e2SKathiravan Thirumoorthy .name = "gcc_uniphy_sys_clk_src", 679*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_3, 680*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_3), 681*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 682*844be6e2SKathiravan Thirumoorthy }, 683*844be6e2SKathiravan Thirumoorthy }; 684*844be6e2SKathiravan Thirumoorthy 685*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_usb0_aux_clk_src = { 686*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x2c018, 687*844be6e2SKathiravan Thirumoorthy .mnd_width = 16, 688*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 689*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_8, 690*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_nss_ts_clk_src, 691*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 692*844be6e2SKathiravan Thirumoorthy .name = "gcc_usb0_aux_clk_src", 693*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_8, 694*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_8), 695*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 696*844be6e2SKathiravan Thirumoorthy }, 697*844be6e2SKathiravan Thirumoorthy }; 698*844be6e2SKathiravan Thirumoorthy 699*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_usb0_master_clk_src[] = { 700*844be6e2SKathiravan Thirumoorthy F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0), 701*844be6e2SKathiravan Thirumoorthy { } 702*844be6e2SKathiravan Thirumoorthy }; 703*844be6e2SKathiravan Thirumoorthy 704*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_usb0_master_clk_src = { 705*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x2c004, 706*844be6e2SKathiravan Thirumoorthy .mnd_width = 8, 707*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 708*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_0, 709*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_usb0_master_clk_src, 710*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 711*844be6e2SKathiravan Thirumoorthy .name = "gcc_usb0_master_clk_src", 712*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_0, 713*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_0), 714*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 715*844be6e2SKathiravan Thirumoorthy }, 716*844be6e2SKathiravan Thirumoorthy }; 717*844be6e2SKathiravan Thirumoorthy 718*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_usb0_mock_utmi_clk_src[] = { 719*844be6e2SKathiravan Thirumoorthy F(60000000, P_GPLL4_OUT_AUX, 10, 1, 2), 720*844be6e2SKathiravan Thirumoorthy { } 721*844be6e2SKathiravan Thirumoorthy }; 722*844be6e2SKathiravan Thirumoorthy 723*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_usb0_mock_utmi_clk_src = { 724*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x2c02c, 725*844be6e2SKathiravan Thirumoorthy .mnd_width = 8, 726*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 727*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_9, 728*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_usb0_mock_utmi_clk_src, 729*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 730*844be6e2SKathiravan Thirumoorthy .name = "gcc_usb0_mock_utmi_clk_src", 731*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_9, 732*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_9), 733*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 734*844be6e2SKathiravan Thirumoorthy }, 735*844be6e2SKathiravan Thirumoorthy }; 736*844be6e2SKathiravan Thirumoorthy 737*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qdss_at_clk_src[] = { 738*844be6e2SKathiravan Thirumoorthy F(240000000, P_GPLL4_OUT_MAIN, 5, 0, 0), 739*844be6e2SKathiravan Thirumoorthy { } 740*844be6e2SKathiravan Thirumoorthy }; 741*844be6e2SKathiravan Thirumoorthy 742*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qdss_at_clk_src = { 743*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x2d004, 744*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 745*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 746*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_10, 747*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_qdss_at_clk_src, 748*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 749*844be6e2SKathiravan Thirumoorthy .name = "gcc_qdss_at_clk_src", 750*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_10, 751*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_10), 752*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 753*844be6e2SKathiravan Thirumoorthy }, 754*844be6e2SKathiravan Thirumoorthy }; 755*844be6e2SKathiravan Thirumoorthy 756*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qdss_tsctr_clk_src[] = { 757*844be6e2SKathiravan Thirumoorthy F(600000000, P_GPLL4_OUT_MAIN, 2, 0, 0), 758*844be6e2SKathiravan Thirumoorthy { } 759*844be6e2SKathiravan Thirumoorthy }; 760*844be6e2SKathiravan Thirumoorthy 761*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qdss_tsctr_clk_src = { 762*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x2d01c, 763*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 764*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 765*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_10, 766*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_qdss_tsctr_clk_src, 767*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 768*844be6e2SKathiravan Thirumoorthy .name = "gcc_qdss_tsctr_clk_src", 769*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_10, 770*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_10), 771*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 772*844be6e2SKathiravan Thirumoorthy }, 773*844be6e2SKathiravan Thirumoorthy }; 774*844be6e2SKathiravan Thirumoorthy 775*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_pcnoc_bfdcd_clk_src[] = { 776*844be6e2SKathiravan Thirumoorthy F(24000000, P_XO, 1, 0, 0), 777*844be6e2SKathiravan Thirumoorthy F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0), 778*844be6e2SKathiravan Thirumoorthy F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0), 779*844be6e2SKathiravan Thirumoorthy { } 780*844be6e2SKathiravan Thirumoorthy }; 781*844be6e2SKathiravan Thirumoorthy 782*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcnoc_bfdcd_clk_src = { 783*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x31004, 784*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 785*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 786*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_0, 787*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_pcnoc_bfdcd_clk_src, 788*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 789*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcnoc_bfdcd_clk_src", 790*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_0, 791*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_0), 792*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 793*844be6e2SKathiravan Thirumoorthy /* 794*844be6e2SKathiravan Thirumoorthy * There are no consumers for this source in kernel yet, 795*844be6e2SKathiravan Thirumoorthy * (will be added soon), so the clock framework 796*844be6e2SKathiravan Thirumoorthy * disables this source. But some of the clocks 797*844be6e2SKathiravan Thirumoorthy * initialized by boot loaders uses this source. So we 798*844be6e2SKathiravan Thirumoorthy * need to keep this clock ON. Add the 799*844be6e2SKathiravan Thirumoorthy * CLK_IGNORE_UNUSED flag so the clock will not be 800*844be6e2SKathiravan Thirumoorthy * disabled. Once the consumer in kernel is added, we 801*844be6e2SKathiravan Thirumoorthy * can get rid of this flag. 802*844be6e2SKathiravan Thirumoorthy */ 803*844be6e2SKathiravan Thirumoorthy .flags = CLK_IS_CRITICAL, 804*844be6e2SKathiravan Thirumoorthy }, 805*844be6e2SKathiravan Thirumoorthy }; 806*844be6e2SKathiravan Thirumoorthy 807*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qpic_io_macro_clk_src[] = { 808*844be6e2SKathiravan Thirumoorthy F(24000000, P_XO, 1, 0, 0), 809*844be6e2SKathiravan Thirumoorthy F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0), 810*844be6e2SKathiravan Thirumoorthy F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0), 811*844be6e2SKathiravan Thirumoorthy F(320000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0), 812*844be6e2SKathiravan Thirumoorthy F(400000000, P_GPLL0_OUT_MAIN, 2, 0, 0), 813*844be6e2SKathiravan Thirumoorthy { } 814*844be6e2SKathiravan Thirumoorthy }; 815*844be6e2SKathiravan Thirumoorthy 816*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qpic_io_macro_clk_src = { 817*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x32004, 818*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 819*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 820*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_12, 821*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_qpic_io_macro_clk_src, 822*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 823*844be6e2SKathiravan Thirumoorthy .name = "gcc_qpic_io_macro_clk_src", 824*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_12, 825*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_12), 826*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 827*844be6e2SKathiravan Thirumoorthy }, 828*844be6e2SKathiravan Thirumoorthy }; 829*844be6e2SKathiravan Thirumoorthy 830*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qpic_clk_src[] = { 831*844be6e2SKathiravan Thirumoorthy F(24000000, P_XO, 1, 0, 0), 832*844be6e2SKathiravan Thirumoorthy F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0), 833*844be6e2SKathiravan Thirumoorthy F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0), 834*844be6e2SKathiravan Thirumoorthy { } 835*844be6e2SKathiravan Thirumoorthy }; 836*844be6e2SKathiravan Thirumoorthy 837*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qpic_clk_src = { 838*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x32020, 839*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 840*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 841*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_12, 842*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_qpic_clk_src, 843*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 844*844be6e2SKathiravan Thirumoorthy .name = "gcc_qpic_clk_src", 845*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_12, 846*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_12), 847*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 848*844be6e2SKathiravan Thirumoorthy }, 849*844be6e2SKathiravan Thirumoorthy }; 850*844be6e2SKathiravan Thirumoorthy 851*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_pon_tm2x_clk_src[] = { 852*844be6e2SKathiravan Thirumoorthy F(342860000, P_GPLL4_OUT_MAIN, 3.5, 0, 0), 853*844be6e2SKathiravan Thirumoorthy { } 854*844be6e2SKathiravan Thirumoorthy }; 855*844be6e2SKathiravan Thirumoorthy 856*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pon_tm2x_clk_src = { 857*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x3c004, 858*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 859*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 860*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_11, 861*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_pon_tm2x_clk_src, 862*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 863*844be6e2SKathiravan Thirumoorthy .name = "gcc_pon_tm2x_clk_src", 864*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_11, 865*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_11), 866*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 867*844be6e2SKathiravan Thirumoorthy }, 868*844be6e2SKathiravan Thirumoorthy }; 869*844be6e2SKathiravan Thirumoorthy 870*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_sleep_clk_src[] = { 871*844be6e2SKathiravan Thirumoorthy F(32000, P_SLEEP_CLK, 1, 0, 0), 872*844be6e2SKathiravan Thirumoorthy { } 873*844be6e2SKathiravan Thirumoorthy }; 874*844be6e2SKathiravan Thirumoorthy 875*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_sleep_clk_src = { 876*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x3400c, 877*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 878*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 879*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_13, 880*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_sleep_clk_src, 881*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 882*844be6e2SKathiravan Thirumoorthy .name = "gcc_sleep_clk_src", 883*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_13, 884*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_13), 885*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 886*844be6e2SKathiravan Thirumoorthy }, 887*844be6e2SKathiravan Thirumoorthy }; 888*844be6e2SKathiravan Thirumoorthy 889*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_lpass_sway_clk_src[] = { 890*844be6e2SKathiravan Thirumoorthy F(133333333, P_GPLL0_OUT_MAIN, 6, 0, 0), 891*844be6e2SKathiravan Thirumoorthy { } 892*844be6e2SKathiravan Thirumoorthy }; 893*844be6e2SKathiravan Thirumoorthy 894*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_lpass_sway_clk_src = { 895*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x27004, 896*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 897*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 898*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_1, 899*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_lpass_sway_clk_src, 900*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 901*844be6e2SKathiravan Thirumoorthy .name = "gcc_lpass_sway_clk_src", 902*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_1, 903*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_1), 904*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 905*844be6e2SKathiravan Thirumoorthy }, 906*844be6e2SKathiravan Thirumoorthy }; 907*844be6e2SKathiravan Thirumoorthy 908*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_lpass_axim_clk_src = { 909*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x2700c, 910*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 911*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 912*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_1, 913*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_lpass_sway_clk_src, 914*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 915*844be6e2SKathiravan Thirumoorthy .name = "gcc_lpass_axim_clk_src", 916*844be6e2SKathiravan Thirumoorthy .parent_data = gcc_parent_data_1, 917*844be6e2SKathiravan Thirumoorthy .num_parents = ARRAY_SIZE(gcc_parent_data_1), 918*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 919*844be6e2SKathiravan Thirumoorthy }, 920*844be6e2SKathiravan Thirumoorthy }; 921*844be6e2SKathiravan Thirumoorthy 922*844be6e2SKathiravan Thirumoorthy static struct clk_regmap_div gcc_nssnoc_memnoc_div_clk_src = { 923*844be6e2SKathiravan Thirumoorthy .reg = 0x1700c, 924*844be6e2SKathiravan Thirumoorthy .shift = 0, 925*844be6e2SKathiravan Thirumoorthy .width = 4, 926*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 927*844be6e2SKathiravan Thirumoorthy .name = "gcc_nssnoc_memnoc_div_clk_src", 928*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 929*844be6e2SKathiravan Thirumoorthy &gcc_nssnoc_memnoc_bfdcd_clk_src.clkr.hw, 930*844be6e2SKathiravan Thirumoorthy }, 931*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 932*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 933*844be6e2SKathiravan Thirumoorthy .ops = &clk_regmap_div_ro_ops, 934*844be6e2SKathiravan Thirumoorthy }, 935*844be6e2SKathiravan Thirumoorthy }; 936*844be6e2SKathiravan Thirumoorthy 937*844be6e2SKathiravan Thirumoorthy static struct clk_regmap_div gcc_usb0_mock_utmi_div_clk_src = { 938*844be6e2SKathiravan Thirumoorthy .reg = 0x2c040, 939*844be6e2SKathiravan Thirumoorthy .shift = 0, 940*844be6e2SKathiravan Thirumoorthy .width = 2, 941*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 942*844be6e2SKathiravan Thirumoorthy .name = "gcc_usb0_mock_utmi_div_clk_src", 943*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 944*844be6e2SKathiravan Thirumoorthy &gcc_usb0_mock_utmi_clk_src.clkr.hw, 945*844be6e2SKathiravan Thirumoorthy }, 946*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 947*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 948*844be6e2SKathiravan Thirumoorthy .ops = &clk_regmap_div_ro_ops, 949*844be6e2SKathiravan Thirumoorthy }, 950*844be6e2SKathiravan Thirumoorthy }; 951*844be6e2SKathiravan Thirumoorthy 952*844be6e2SKathiravan Thirumoorthy static struct clk_fixed_factor gcc_pon_tm_div_clk_src = { 953*844be6e2SKathiravan Thirumoorthy .mult = 1, 954*844be6e2SKathiravan Thirumoorthy .div = 2, 955*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 956*844be6e2SKathiravan Thirumoorthy .name = "gcc_pon_tm_div_clk_src", 957*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw *[]) { 958*844be6e2SKathiravan Thirumoorthy &gcc_pon_tm2x_clk_src.clkr.hw 959*844be6e2SKathiravan Thirumoorthy }, 960*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 961*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 962*844be6e2SKathiravan Thirumoorthy .ops = &clk_fixed_factor_ops, 963*844be6e2SKathiravan Thirumoorthy }, 964*844be6e2SKathiravan Thirumoorthy }; 965*844be6e2SKathiravan Thirumoorthy 966*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_adss_pwm_clk = { 967*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x1c00c, 968*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 969*844be6e2SKathiravan Thirumoorthy .clkr = { 970*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x1c00c, 971*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 972*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 973*844be6e2SKathiravan Thirumoorthy .name = "gcc_adss_pwm_clk", 974*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 975*844be6e2SKathiravan Thirumoorthy &gcc_adss_pwm_clk_src.clkr.hw, 976*844be6e2SKathiravan Thirumoorthy }, 977*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 978*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 979*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 980*844be6e2SKathiravan Thirumoorthy }, 981*844be6e2SKathiravan Thirumoorthy }, 982*844be6e2SKathiravan Thirumoorthy }; 983*844be6e2SKathiravan Thirumoorthy 984*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_cnoc_pcie0_1lane_s_clk = { 985*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x31088, 986*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 987*844be6e2SKathiravan Thirumoorthy .clkr = { 988*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x31088, 989*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 990*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 991*844be6e2SKathiravan Thirumoorthy .name = "gcc_cnoc_pcie0_1lane_s_clk", 992*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 993*844be6e2SKathiravan Thirumoorthy &gcc_pcie0_axi_s_clk_src.clkr.hw, 994*844be6e2SKathiravan Thirumoorthy }, 995*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 996*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 997*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 998*844be6e2SKathiravan Thirumoorthy }, 999*844be6e2SKathiravan Thirumoorthy }, 1000*844be6e2SKathiravan Thirumoorthy }; 1001*844be6e2SKathiravan Thirumoorthy 1002*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_cnoc_pcie1_2lane_s_clk = { 1003*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x3108c, 1004*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1005*844be6e2SKathiravan Thirumoorthy .clkr = { 1006*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x3108c, 1007*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1008*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1009*844be6e2SKathiravan Thirumoorthy .name = "gcc_cnoc_pcie1_2lane_s_clk", 1010*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1011*844be6e2SKathiravan Thirumoorthy &gcc_pcie1_axi_s_clk_src.clkr.hw, 1012*844be6e2SKathiravan Thirumoorthy }, 1013*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1014*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1015*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1016*844be6e2SKathiravan Thirumoorthy }, 1017*844be6e2SKathiravan Thirumoorthy }, 1018*844be6e2SKathiravan Thirumoorthy }; 1019*844be6e2SKathiravan Thirumoorthy 1020*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_cnoc_usb_clk = { 1021*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x310a8, 1022*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1023*844be6e2SKathiravan Thirumoorthy .clkr = { 1024*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x310a8, 1025*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1026*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1027*844be6e2SKathiravan Thirumoorthy .name = "gcc_cnoc_usb_clk", 1028*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1029*844be6e2SKathiravan Thirumoorthy &gcc_usb0_master_clk_src.clkr.hw, 1030*844be6e2SKathiravan Thirumoorthy }, 1031*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1032*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1033*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1034*844be6e2SKathiravan Thirumoorthy }, 1035*844be6e2SKathiravan Thirumoorthy }, 1036*844be6e2SKathiravan Thirumoorthy }; 1037*844be6e2SKathiravan Thirumoorthy 1038*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_mdio_ahb_clk = { 1039*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17040, 1040*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1041*844be6e2SKathiravan Thirumoorthy .clkr = { 1042*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17040, 1043*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1044*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1045*844be6e2SKathiravan Thirumoorthy .name = "gcc_mdio_ahb_clk", 1046*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1047*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 1048*844be6e2SKathiravan Thirumoorthy }, 1049*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1050*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1051*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1052*844be6e2SKathiravan Thirumoorthy }, 1053*844be6e2SKathiravan Thirumoorthy }, 1054*844be6e2SKathiravan Thirumoorthy }; 1055*844be6e2SKathiravan Thirumoorthy 1056*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_mdio_gephy_ahb_clk = { 1057*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17098, 1058*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1059*844be6e2SKathiravan Thirumoorthy .clkr = { 1060*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17098, 1061*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1062*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1063*844be6e2SKathiravan Thirumoorthy .name = "gcc_mdio_gephy_ahb_clk", 1064*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1065*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 1066*844be6e2SKathiravan Thirumoorthy }, 1067*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1068*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1069*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1070*844be6e2SKathiravan Thirumoorthy }, 1071*844be6e2SKathiravan Thirumoorthy }, 1072*844be6e2SKathiravan Thirumoorthy }; 1073*844be6e2SKathiravan Thirumoorthy 1074*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nss_ts_clk = { 1075*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17018, 1076*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1077*844be6e2SKathiravan Thirumoorthy .clkr = { 1078*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17018, 1079*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1080*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1081*844be6e2SKathiravan Thirumoorthy .name = "gcc_nss_ts_clk", 1082*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1083*844be6e2SKathiravan Thirumoorthy &gcc_nss_ts_clk_src.clkr.hw, 1084*844be6e2SKathiravan Thirumoorthy }, 1085*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1086*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1087*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1088*844be6e2SKathiravan Thirumoorthy }, 1089*844be6e2SKathiravan Thirumoorthy }, 1090*844be6e2SKathiravan Thirumoorthy }; 1091*844be6e2SKathiravan Thirumoorthy 1092*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nsscc_clk = { 1093*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17034, 1094*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1095*844be6e2SKathiravan Thirumoorthy .clkr = { 1096*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17034, 1097*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1098*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1099*844be6e2SKathiravan Thirumoorthy .name = "gcc_nsscc_clk", 1100*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1101*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 1102*844be6e2SKathiravan Thirumoorthy }, 1103*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1104*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1105*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1106*844be6e2SKathiravan Thirumoorthy }, 1107*844be6e2SKathiravan Thirumoorthy }, 1108*844be6e2SKathiravan Thirumoorthy }; 1109*844be6e2SKathiravan Thirumoorthy 1110*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nsscfg_clk = { 1111*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x1702c, 1112*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1113*844be6e2SKathiravan Thirumoorthy .clkr = { 1114*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x1702c, 1115*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1116*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1117*844be6e2SKathiravan Thirumoorthy .name = "gcc_nsscfg_clk", 1118*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1119*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 1120*844be6e2SKathiravan Thirumoorthy }, 1121*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1122*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1123*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1124*844be6e2SKathiravan Thirumoorthy }, 1125*844be6e2SKathiravan Thirumoorthy }, 1126*844be6e2SKathiravan Thirumoorthy }; 1127*844be6e2SKathiravan Thirumoorthy 1128*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_atb_clk = { 1129*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17014, 1130*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1131*844be6e2SKathiravan Thirumoorthy .clkr = { 1132*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17014, 1133*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1134*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1135*844be6e2SKathiravan Thirumoorthy .name = "gcc_nssnoc_atb_clk", 1136*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1137*844be6e2SKathiravan Thirumoorthy &gcc_qdss_at_clk_src.clkr.hw, 1138*844be6e2SKathiravan Thirumoorthy }, 1139*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1140*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1141*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1142*844be6e2SKathiravan Thirumoorthy }, 1143*844be6e2SKathiravan Thirumoorthy }, 1144*844be6e2SKathiravan Thirumoorthy }; 1145*844be6e2SKathiravan Thirumoorthy 1146*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_memnoc_1_clk = { 1147*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17084, 1148*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1149*844be6e2SKathiravan Thirumoorthy .clkr = { 1150*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17084, 1151*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1152*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1153*844be6e2SKathiravan Thirumoorthy .name = "gcc_nssnoc_memnoc_1_clk", 1154*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1155*844be6e2SKathiravan Thirumoorthy &gcc_nssnoc_memnoc_div_clk_src.clkr.hw, 1156*844be6e2SKathiravan Thirumoorthy }, 1157*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1158*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1159*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1160*844be6e2SKathiravan Thirumoorthy }, 1161*844be6e2SKathiravan Thirumoorthy }, 1162*844be6e2SKathiravan Thirumoorthy }; 1163*844be6e2SKathiravan Thirumoorthy 1164*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_memnoc_clk = { 1165*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17024, 1166*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1167*844be6e2SKathiravan Thirumoorthy .clkr = { 1168*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17024, 1169*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1170*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1171*844be6e2SKathiravan Thirumoorthy .name = "gcc_nssnoc_memnoc_clk", 1172*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1173*844be6e2SKathiravan Thirumoorthy &gcc_nssnoc_memnoc_div_clk_src.clkr.hw, 1174*844be6e2SKathiravan Thirumoorthy }, 1175*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1176*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1177*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1178*844be6e2SKathiravan Thirumoorthy }, 1179*844be6e2SKathiravan Thirumoorthy }, 1180*844be6e2SKathiravan Thirumoorthy }; 1181*844be6e2SKathiravan Thirumoorthy 1182*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_nsscc_clk = { 1183*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17030, 1184*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1185*844be6e2SKathiravan Thirumoorthy .clkr = { 1186*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17030, 1187*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1188*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1189*844be6e2SKathiravan Thirumoorthy .name = "gcc_nssnoc_nsscc_clk", 1190*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1191*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 1192*844be6e2SKathiravan Thirumoorthy }, 1193*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1194*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1195*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1196*844be6e2SKathiravan Thirumoorthy }, 1197*844be6e2SKathiravan Thirumoorthy }, 1198*844be6e2SKathiravan Thirumoorthy }; 1199*844be6e2SKathiravan Thirumoorthy 1200*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_xo_clk_src = { 1201*844be6e2SKathiravan Thirumoorthy .cmd_rcgr = 0x34004, 1202*844be6e2SKathiravan Thirumoorthy .mnd_width = 0, 1203*844be6e2SKathiravan Thirumoorthy .hid_width = 5, 1204*844be6e2SKathiravan Thirumoorthy .parent_map = gcc_parent_map_xo, 1205*844be6e2SKathiravan Thirumoorthy .freq_tbl = ftbl_gcc_nss_ts_clk_src, 1206*844be6e2SKathiravan Thirumoorthy .clkr.hw.init = &(const struct clk_init_data) { 1207*844be6e2SKathiravan Thirumoorthy .name = "gcc_xo_clk_src", 1208*844be6e2SKathiravan Thirumoorthy .parent_data = &gcc_parent_data_xo, 1209*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1210*844be6e2SKathiravan Thirumoorthy .ops = &clk_rcg2_ops, 1211*844be6e2SKathiravan Thirumoorthy }, 1212*844be6e2SKathiravan Thirumoorthy }; 1213*844be6e2SKathiravan Thirumoorthy 1214*844be6e2SKathiravan Thirumoorthy static struct clk_fixed_factor gcc_xo_div4_clk_src = { 1215*844be6e2SKathiravan Thirumoorthy .mult = 1, 1216*844be6e2SKathiravan Thirumoorthy .div = 4, 1217*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1218*844be6e2SKathiravan Thirumoorthy .name = "gcc_xo_div4_clk_src", 1219*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw *[]) { 1220*844be6e2SKathiravan Thirumoorthy &gcc_xo_clk_src.clkr.hw 1221*844be6e2SKathiravan Thirumoorthy }, 1222*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1223*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1224*844be6e2SKathiravan Thirumoorthy .ops = &clk_fixed_factor_ops, 1225*844be6e2SKathiravan Thirumoorthy }, 1226*844be6e2SKathiravan Thirumoorthy }; 1227*844be6e2SKathiravan Thirumoorthy 1228*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_gephy_sys_clk = { 1229*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x2a004, 1230*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1231*844be6e2SKathiravan Thirumoorthy .clkr = { 1232*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x2a004, 1233*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1234*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1235*844be6e2SKathiravan Thirumoorthy .name = "gcc_gephy_sys_clk", 1236*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1237*844be6e2SKathiravan Thirumoorthy &gcc_xo_clk_src.clkr.hw, 1238*844be6e2SKathiravan Thirumoorthy }, 1239*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1240*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1241*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1242*844be6e2SKathiravan Thirumoorthy }, 1243*844be6e2SKathiravan Thirumoorthy }, 1244*844be6e2SKathiravan Thirumoorthy }; 1245*844be6e2SKathiravan Thirumoorthy 1246*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_pcnoc_1_clk = { 1247*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17080, 1248*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1249*844be6e2SKathiravan Thirumoorthy .clkr = { 1250*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17080, 1251*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1252*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1253*844be6e2SKathiravan Thirumoorthy .name = "gcc_nssnoc_pcnoc_1_clk", 1254*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1255*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw 1256*844be6e2SKathiravan Thirumoorthy }, 1257*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1258*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1259*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1260*844be6e2SKathiravan Thirumoorthy }, 1261*844be6e2SKathiravan Thirumoorthy }, 1262*844be6e2SKathiravan Thirumoorthy }; 1263*844be6e2SKathiravan Thirumoorthy 1264*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_qosgen_ref_clk = { 1265*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x1701c, 1266*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1267*844be6e2SKathiravan Thirumoorthy .clkr = { 1268*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x1701c, 1269*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1270*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1271*844be6e2SKathiravan Thirumoorthy .name = "gcc_nssnoc_qosgen_ref_clk", 1272*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw *[]){ 1273*844be6e2SKathiravan Thirumoorthy &gcc_xo_div4_clk_src.hw 1274*844be6e2SKathiravan Thirumoorthy }, 1275*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1276*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1277*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1278*844be6e2SKathiravan Thirumoorthy }, 1279*844be6e2SKathiravan Thirumoorthy }, 1280*844be6e2SKathiravan Thirumoorthy }; 1281*844be6e2SKathiravan Thirumoorthy 1282*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_snoc_1_clk = { 1283*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x1707c, 1284*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1285*844be6e2SKathiravan Thirumoorthy .clkr = { 1286*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x1707c, 1287*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1288*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1289*844be6e2SKathiravan Thirumoorthy .name = "gcc_nssnoc_snoc_1_clk", 1290*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1291*844be6e2SKathiravan Thirumoorthy &gcc_system_noc_bfdcd_clk_src.clkr.hw 1292*844be6e2SKathiravan Thirumoorthy }, 1293*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1294*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1295*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1296*844be6e2SKathiravan Thirumoorthy }, 1297*844be6e2SKathiravan Thirumoorthy }, 1298*844be6e2SKathiravan Thirumoorthy }; 1299*844be6e2SKathiravan Thirumoorthy 1300*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_snoc_clk = { 1301*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17028, 1302*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1303*844be6e2SKathiravan Thirumoorthy .clkr = { 1304*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17028, 1305*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1306*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1307*844be6e2SKathiravan Thirumoorthy .name = "gcc_nssnoc_snoc_clk", 1308*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1309*844be6e2SKathiravan Thirumoorthy &gcc_system_noc_bfdcd_clk_src.clkr.hw, 1310*844be6e2SKathiravan Thirumoorthy }, 1311*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1312*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1313*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1314*844be6e2SKathiravan Thirumoorthy }, 1315*844be6e2SKathiravan Thirumoorthy }, 1316*844be6e2SKathiravan Thirumoorthy }; 1317*844be6e2SKathiravan Thirumoorthy 1318*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_timeout_ref_clk = { 1319*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17020, 1320*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1321*844be6e2SKathiravan Thirumoorthy .clkr = { 1322*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17020, 1323*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1324*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1325*844be6e2SKathiravan Thirumoorthy .name = "gcc_nssnoc_timeout_ref_clk", 1326*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1327*844be6e2SKathiravan Thirumoorthy &gcc_xo_div4_clk_src.hw, 1328*844be6e2SKathiravan Thirumoorthy }, 1329*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1330*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1331*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1332*844be6e2SKathiravan Thirumoorthy }, 1333*844be6e2SKathiravan Thirumoorthy }, 1334*844be6e2SKathiravan Thirumoorthy }; 1335*844be6e2SKathiravan Thirumoorthy 1336*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_xo_dcd_clk = { 1337*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17074, 1338*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1339*844be6e2SKathiravan Thirumoorthy .clkr = { 1340*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17074, 1341*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1342*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1343*844be6e2SKathiravan Thirumoorthy .name = "gcc_nssnoc_xo_dcd_clk", 1344*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1345*844be6e2SKathiravan Thirumoorthy &gcc_xo_clk_src.clkr.hw, 1346*844be6e2SKathiravan Thirumoorthy }, 1347*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1348*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1349*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1350*844be6e2SKathiravan Thirumoorthy }, 1351*844be6e2SKathiravan Thirumoorthy }, 1352*844be6e2SKathiravan Thirumoorthy }; 1353*844be6e2SKathiravan Thirumoorthy 1354*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_ahb_clk = { 1355*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x28030, 1356*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1357*844be6e2SKathiravan Thirumoorthy .clkr = { 1358*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x28030, 1359*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1360*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1361*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie0_ahb_clk", 1362*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1363*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 1364*844be6e2SKathiravan Thirumoorthy }, 1365*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1366*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1367*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1368*844be6e2SKathiravan Thirumoorthy }, 1369*844be6e2SKathiravan Thirumoorthy }, 1370*844be6e2SKathiravan Thirumoorthy }; 1371*844be6e2SKathiravan Thirumoorthy 1372*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_aux_clk = { 1373*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x28070, 1374*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1375*844be6e2SKathiravan Thirumoorthy .clkr = { 1376*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x28070, 1377*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1378*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1379*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie0_aux_clk", 1380*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1381*844be6e2SKathiravan Thirumoorthy &gcc_pcie_aux_clk_src.clkr.hw, 1382*844be6e2SKathiravan Thirumoorthy }, 1383*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1384*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1385*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1386*844be6e2SKathiravan Thirumoorthy }, 1387*844be6e2SKathiravan Thirumoorthy }, 1388*844be6e2SKathiravan Thirumoorthy }; 1389*844be6e2SKathiravan Thirumoorthy 1390*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_axi_m_clk = { 1391*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x28038, 1392*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1393*844be6e2SKathiravan Thirumoorthy .clkr = { 1394*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x28038, 1395*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1396*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1397*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie0_axi_m_clk", 1398*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1399*844be6e2SKathiravan Thirumoorthy &gcc_pcie0_axi_m_clk_src.clkr.hw, 1400*844be6e2SKathiravan Thirumoorthy }, 1401*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1402*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1403*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1404*844be6e2SKathiravan Thirumoorthy }, 1405*844be6e2SKathiravan Thirumoorthy }, 1406*844be6e2SKathiravan Thirumoorthy }; 1407*844be6e2SKathiravan Thirumoorthy 1408*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_axi_s_bridge_clk = { 1409*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x28048, 1410*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1411*844be6e2SKathiravan Thirumoorthy .clkr = { 1412*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x28048, 1413*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1414*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1415*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie0_axi_s_bridge_clk", 1416*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1417*844be6e2SKathiravan Thirumoorthy &gcc_pcie0_axi_s_clk_src.clkr.hw, 1418*844be6e2SKathiravan Thirumoorthy }, 1419*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1420*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1421*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1422*844be6e2SKathiravan Thirumoorthy }, 1423*844be6e2SKathiravan Thirumoorthy }, 1424*844be6e2SKathiravan Thirumoorthy }; 1425*844be6e2SKathiravan Thirumoorthy 1426*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_axi_s_clk = { 1427*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x28040, 1428*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1429*844be6e2SKathiravan Thirumoorthy .clkr = { 1430*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x28040, 1431*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1432*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1433*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie0_axi_s_clk", 1434*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1435*844be6e2SKathiravan Thirumoorthy &gcc_pcie0_axi_s_clk_src.clkr.hw, 1436*844be6e2SKathiravan Thirumoorthy }, 1437*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1438*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1439*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1440*844be6e2SKathiravan Thirumoorthy }, 1441*844be6e2SKathiravan Thirumoorthy }, 1442*844be6e2SKathiravan Thirumoorthy }; 1443*844be6e2SKathiravan Thirumoorthy 1444*844be6e2SKathiravan Thirumoorthy static struct clk_regmap_phy_mux gcc_pcie0_pipe_clk_src = { 1445*844be6e2SKathiravan Thirumoorthy .reg = 0x28064, 1446*844be6e2SKathiravan Thirumoorthy .clkr = { 1447*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1448*844be6e2SKathiravan Thirumoorthy .name = "pcie0_pipe_clk_src", 1449*844be6e2SKathiravan Thirumoorthy .parent_data = &(const struct clk_parent_data) { 1450*844be6e2SKathiravan Thirumoorthy .index = DT_PCIE30_PHY0_PIPE_CLK, 1451*844be6e2SKathiravan Thirumoorthy }, 1452*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1453*844be6e2SKathiravan Thirumoorthy .ops = &clk_regmap_phy_mux_ops, 1454*844be6e2SKathiravan Thirumoorthy }, 1455*844be6e2SKathiravan Thirumoorthy }, 1456*844be6e2SKathiravan Thirumoorthy }; 1457*844be6e2SKathiravan Thirumoorthy 1458*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_pipe_clk = { 1459*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x28068, 1460*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT_DELAY, 1461*844be6e2SKathiravan Thirumoorthy .clkr = { 1462*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x28068, 1463*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1464*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1465*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie0_pipe_clk", 1466*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw *[]) { 1467*844be6e2SKathiravan Thirumoorthy &gcc_pcie0_pipe_clk_src.clkr.hw 1468*844be6e2SKathiravan Thirumoorthy }, 1469*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1470*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1471*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1472*844be6e2SKathiravan Thirumoorthy }, 1473*844be6e2SKathiravan Thirumoorthy }, 1474*844be6e2SKathiravan Thirumoorthy }; 1475*844be6e2SKathiravan Thirumoorthy 1476*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_ahb_clk = { 1477*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x29030, 1478*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1479*844be6e2SKathiravan Thirumoorthy .clkr = { 1480*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x29030, 1481*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1482*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1483*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie1_ahb_clk", 1484*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1485*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 1486*844be6e2SKathiravan Thirumoorthy }, 1487*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1488*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1489*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1490*844be6e2SKathiravan Thirumoorthy }, 1491*844be6e2SKathiravan Thirumoorthy }, 1492*844be6e2SKathiravan Thirumoorthy }; 1493*844be6e2SKathiravan Thirumoorthy 1494*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_aux_clk = { 1495*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x29074, 1496*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1497*844be6e2SKathiravan Thirumoorthy .clkr = { 1498*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x29074, 1499*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1500*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1501*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie1_aux_clk", 1502*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1503*844be6e2SKathiravan Thirumoorthy &gcc_pcie_aux_clk_src.clkr.hw, 1504*844be6e2SKathiravan Thirumoorthy }, 1505*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1506*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1507*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1508*844be6e2SKathiravan Thirumoorthy }, 1509*844be6e2SKathiravan Thirumoorthy }, 1510*844be6e2SKathiravan Thirumoorthy }; 1511*844be6e2SKathiravan Thirumoorthy 1512*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_axi_m_clk = { 1513*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x29038, 1514*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1515*844be6e2SKathiravan Thirumoorthy .clkr = { 1516*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x29038, 1517*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1518*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1519*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie1_axi_m_clk", 1520*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1521*844be6e2SKathiravan Thirumoorthy &gcc_pcie1_axi_m_clk_src.clkr.hw, 1522*844be6e2SKathiravan Thirumoorthy }, 1523*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1524*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1525*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1526*844be6e2SKathiravan Thirumoorthy }, 1527*844be6e2SKathiravan Thirumoorthy }, 1528*844be6e2SKathiravan Thirumoorthy }; 1529*844be6e2SKathiravan Thirumoorthy 1530*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_axi_s_bridge_clk = { 1531*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x29048, 1532*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1533*844be6e2SKathiravan Thirumoorthy .clkr = { 1534*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x29048, 1535*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1536*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1537*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie1_axi_s_bridge_clk", 1538*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1539*844be6e2SKathiravan Thirumoorthy &gcc_pcie1_axi_s_clk_src.clkr.hw, 1540*844be6e2SKathiravan Thirumoorthy }, 1541*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1542*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1543*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1544*844be6e2SKathiravan Thirumoorthy }, 1545*844be6e2SKathiravan Thirumoorthy }, 1546*844be6e2SKathiravan Thirumoorthy }; 1547*844be6e2SKathiravan Thirumoorthy 1548*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_axi_s_clk = { 1549*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x29040, 1550*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1551*844be6e2SKathiravan Thirumoorthy .clkr = { 1552*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x29040, 1553*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1554*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1555*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie1_axi_s_clk", 1556*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1557*844be6e2SKathiravan Thirumoorthy &gcc_pcie1_axi_s_clk_src.clkr.hw, 1558*844be6e2SKathiravan Thirumoorthy }, 1559*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1560*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1561*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1562*844be6e2SKathiravan Thirumoorthy }, 1563*844be6e2SKathiravan Thirumoorthy }, 1564*844be6e2SKathiravan Thirumoorthy }; 1565*844be6e2SKathiravan Thirumoorthy 1566*844be6e2SKathiravan Thirumoorthy static struct clk_regmap_phy_mux gcc_pcie1_pipe_clk_src = { 1567*844be6e2SKathiravan Thirumoorthy .reg = 0x29064, 1568*844be6e2SKathiravan Thirumoorthy .clkr = { 1569*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1570*844be6e2SKathiravan Thirumoorthy .name = "pcie1_pipe_clk_src", 1571*844be6e2SKathiravan Thirumoorthy .parent_data = &(const struct clk_parent_data) { 1572*844be6e2SKathiravan Thirumoorthy .index = DT_PCIE30_PHY1_PIPE_CLK, 1573*844be6e2SKathiravan Thirumoorthy }, 1574*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1575*844be6e2SKathiravan Thirumoorthy .ops = &clk_regmap_phy_mux_ops, 1576*844be6e2SKathiravan Thirumoorthy }, 1577*844be6e2SKathiravan Thirumoorthy }, 1578*844be6e2SKathiravan Thirumoorthy }; 1579*844be6e2SKathiravan Thirumoorthy 1580*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_pipe_clk = { 1581*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x29068, 1582*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT_DELAY, 1583*844be6e2SKathiravan Thirumoorthy .clkr = { 1584*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x29068, 1585*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1586*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1587*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie1_pipe_clk", 1588*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw *[]) { 1589*844be6e2SKathiravan Thirumoorthy &gcc_pcie1_pipe_clk_src.clkr.hw 1590*844be6e2SKathiravan Thirumoorthy }, 1591*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1592*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1593*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1594*844be6e2SKathiravan Thirumoorthy }, 1595*844be6e2SKathiravan Thirumoorthy }, 1596*844be6e2SKathiravan Thirumoorthy }; 1597*844be6e2SKathiravan Thirumoorthy 1598*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qrng_ahb_clk = { 1599*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x13024, 1600*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT_VOTED, 1601*844be6e2SKathiravan Thirumoorthy .clkr = { 1602*844be6e2SKathiravan Thirumoorthy .enable_reg = 0xb004, 1603*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(10), 1604*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1605*844be6e2SKathiravan Thirumoorthy .name = "gcc_qrng_ahb_clk", 1606*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1607*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 1608*844be6e2SKathiravan Thirumoorthy }, 1609*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1610*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1611*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1612*844be6e2SKathiravan Thirumoorthy }, 1613*844be6e2SKathiravan Thirumoorthy }, 1614*844be6e2SKathiravan Thirumoorthy }; 1615*844be6e2SKathiravan Thirumoorthy 1616*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_ahb_mst_clk = { 1617*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x1014, 1618*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT_VOTED, 1619*844be6e2SKathiravan Thirumoorthy .clkr = { 1620*844be6e2SKathiravan Thirumoorthy .enable_reg = 0xb004, 1621*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(14), 1622*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1623*844be6e2SKathiravan Thirumoorthy .name = "gcc_qupv3_ahb_mst_clk", 1624*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1625*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 1626*844be6e2SKathiravan Thirumoorthy }, 1627*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1628*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1629*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1630*844be6e2SKathiravan Thirumoorthy }, 1631*844be6e2SKathiravan Thirumoorthy }, 1632*844be6e2SKathiravan Thirumoorthy }; 1633*844be6e2SKathiravan Thirumoorthy 1634*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_ahb_slv_clk = { 1635*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x102c, 1636*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT_VOTED, 1637*844be6e2SKathiravan Thirumoorthy .clkr = { 1638*844be6e2SKathiravan Thirumoorthy .enable_reg = 0xb004, 1639*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(4), 1640*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1641*844be6e2SKathiravan Thirumoorthy .name = "gcc_qupv3_ahb_slv_clk", 1642*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1643*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 1644*844be6e2SKathiravan Thirumoorthy }, 1645*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1646*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1647*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1648*844be6e2SKathiravan Thirumoorthy }, 1649*844be6e2SKathiravan Thirumoorthy }, 1650*844be6e2SKathiravan Thirumoorthy }; 1651*844be6e2SKathiravan Thirumoorthy 1652*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se0_clk = { 1653*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x4020, 1654*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1655*844be6e2SKathiravan Thirumoorthy .clkr = { 1656*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x4020, 1657*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1658*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1659*844be6e2SKathiravan Thirumoorthy .name = "gcc_qupv3_wrap_se0_clk", 1660*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1661*844be6e2SKathiravan Thirumoorthy &gcc_qupv3_wrap_se0_clk_src.clkr.hw, 1662*844be6e2SKathiravan Thirumoorthy }, 1663*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1664*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1665*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1666*844be6e2SKathiravan Thirumoorthy }, 1667*844be6e2SKathiravan Thirumoorthy }, 1668*844be6e2SKathiravan Thirumoorthy }; 1669*844be6e2SKathiravan Thirumoorthy 1670*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se1_clk = { 1671*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x5020, 1672*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1673*844be6e2SKathiravan Thirumoorthy .clkr = { 1674*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x5020, 1675*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1676*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1677*844be6e2SKathiravan Thirumoorthy .name = "gcc_qupv3_wrap_se1_clk", 1678*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1679*844be6e2SKathiravan Thirumoorthy &gcc_qupv3_wrap_se1_clk_src.clkr.hw, 1680*844be6e2SKathiravan Thirumoorthy }, 1681*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1682*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1683*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1684*844be6e2SKathiravan Thirumoorthy }, 1685*844be6e2SKathiravan Thirumoorthy }, 1686*844be6e2SKathiravan Thirumoorthy }; 1687*844be6e2SKathiravan Thirumoorthy 1688*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se2_clk = { 1689*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x202c, 1690*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1691*844be6e2SKathiravan Thirumoorthy .clkr = { 1692*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x202c, 1693*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1694*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1695*844be6e2SKathiravan Thirumoorthy .name = "gcc_qupv3_wrap_se2_clk", 1696*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1697*844be6e2SKathiravan Thirumoorthy &gcc_qupv3_wrap_se2_clk_src.clkr.hw, 1698*844be6e2SKathiravan Thirumoorthy }, 1699*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1700*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1701*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1702*844be6e2SKathiravan Thirumoorthy }, 1703*844be6e2SKathiravan Thirumoorthy }, 1704*844be6e2SKathiravan Thirumoorthy }; 1705*844be6e2SKathiravan Thirumoorthy 1706*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se3_clk = { 1707*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x2048, 1708*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1709*844be6e2SKathiravan Thirumoorthy .clkr = { 1710*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x2048, 1711*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1712*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1713*844be6e2SKathiravan Thirumoorthy .name = "gcc_qupv3_wrap_se3_clk", 1714*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1715*844be6e2SKathiravan Thirumoorthy &gcc_qupv3_wrap_se3_clk_src.clkr.hw, 1716*844be6e2SKathiravan Thirumoorthy }, 1717*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1718*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1719*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1720*844be6e2SKathiravan Thirumoorthy }, 1721*844be6e2SKathiravan Thirumoorthy }, 1722*844be6e2SKathiravan Thirumoorthy }; 1723*844be6e2SKathiravan Thirumoorthy 1724*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se4_clk = { 1725*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x302c, 1726*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1727*844be6e2SKathiravan Thirumoorthy .clkr = { 1728*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x302c, 1729*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1730*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1731*844be6e2SKathiravan Thirumoorthy .name = "gcc_qupv3_wrap_se4_clk", 1732*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1733*844be6e2SKathiravan Thirumoorthy &gcc_qupv3_wrap_se4_clk_src.clkr.hw, 1734*844be6e2SKathiravan Thirumoorthy }, 1735*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1736*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1737*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1738*844be6e2SKathiravan Thirumoorthy }, 1739*844be6e2SKathiravan Thirumoorthy }, 1740*844be6e2SKathiravan Thirumoorthy }; 1741*844be6e2SKathiravan Thirumoorthy 1742*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se5_clk = { 1743*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x3048, 1744*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1745*844be6e2SKathiravan Thirumoorthy .clkr = { 1746*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x3048, 1747*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1748*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1749*844be6e2SKathiravan Thirumoorthy .name = "gcc_qupv3_wrap_se5_clk", 1750*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1751*844be6e2SKathiravan Thirumoorthy &gcc_qupv3_wrap_se5_clk_src.clkr.hw, 1752*844be6e2SKathiravan Thirumoorthy }, 1753*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1754*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1755*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1756*844be6e2SKathiravan Thirumoorthy }, 1757*844be6e2SKathiravan Thirumoorthy }, 1758*844be6e2SKathiravan Thirumoorthy }; 1759*844be6e2SKathiravan Thirumoorthy 1760*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_sdcc1_ahb_clk = { 1761*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x3303c, 1762*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1763*844be6e2SKathiravan Thirumoorthy .clkr = { 1764*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x3303c, 1765*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1766*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1767*844be6e2SKathiravan Thirumoorthy .name = "gcc_sdcc1_ahb_clk", 1768*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1769*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw 1770*844be6e2SKathiravan Thirumoorthy }, 1771*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1772*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1773*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1774*844be6e2SKathiravan Thirumoorthy }, 1775*844be6e2SKathiravan Thirumoorthy }, 1776*844be6e2SKathiravan Thirumoorthy }; 1777*844be6e2SKathiravan Thirumoorthy 1778*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_sdcc1_apps_clk = { 1779*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x3302c, 1780*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1781*844be6e2SKathiravan Thirumoorthy .clkr = { 1782*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x3302c, 1783*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1784*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1785*844be6e2SKathiravan Thirumoorthy .name = "gcc_sdcc1_apps_clk", 1786*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1787*844be6e2SKathiravan Thirumoorthy &gcc_sdcc1_apps_clk_src.clkr.hw, 1788*844be6e2SKathiravan Thirumoorthy }, 1789*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1790*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1791*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1792*844be6e2SKathiravan Thirumoorthy }, 1793*844be6e2SKathiravan Thirumoorthy }, 1794*844be6e2SKathiravan Thirumoorthy }; 1795*844be6e2SKathiravan Thirumoorthy 1796*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_sdcc1_ice_core_clk = { 1797*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x33034, 1798*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1799*844be6e2SKathiravan Thirumoorthy .clkr = { 1800*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x33034, 1801*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1802*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1803*844be6e2SKathiravan Thirumoorthy .name = "gcc_sdcc1_ice_core_clk", 1804*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1805*844be6e2SKathiravan Thirumoorthy &gcc_sdcc1_ice_core_clk_src.clkr.hw, 1806*844be6e2SKathiravan Thirumoorthy }, 1807*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1808*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1809*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1810*844be6e2SKathiravan Thirumoorthy }, 1811*844be6e2SKathiravan Thirumoorthy }, 1812*844be6e2SKathiravan Thirumoorthy }; 1813*844be6e2SKathiravan Thirumoorthy 1814*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_snoc_pcie0_axi_m_clk = { 1815*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x2e04c, 1816*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1817*844be6e2SKathiravan Thirumoorthy .clkr = { 1818*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x2e04c, 1819*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1820*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1821*844be6e2SKathiravan Thirumoorthy .name = "gcc_snoc_pcie0_axi_m_clk", 1822*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1823*844be6e2SKathiravan Thirumoorthy &gcc_pcie0_axi_m_clk_src.clkr.hw, 1824*844be6e2SKathiravan Thirumoorthy }, 1825*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1826*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1827*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1828*844be6e2SKathiravan Thirumoorthy }, 1829*844be6e2SKathiravan Thirumoorthy }, 1830*844be6e2SKathiravan Thirumoorthy }; 1831*844be6e2SKathiravan Thirumoorthy 1832*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_snoc_pcie1_axi_m_clk = { 1833*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x2e050, 1834*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1835*844be6e2SKathiravan Thirumoorthy .clkr = { 1836*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x2e050, 1837*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1838*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1839*844be6e2SKathiravan Thirumoorthy .name = "gcc_snoc_pcie1_axi_m_clk", 1840*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1841*844be6e2SKathiravan Thirumoorthy &gcc_pcie1_axi_m_clk_src.clkr.hw, 1842*844be6e2SKathiravan Thirumoorthy }, 1843*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1844*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1845*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1846*844be6e2SKathiravan Thirumoorthy }, 1847*844be6e2SKathiravan Thirumoorthy }, 1848*844be6e2SKathiravan Thirumoorthy }; 1849*844be6e2SKathiravan Thirumoorthy 1850*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_uniphy0_ahb_clk = { 1851*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x1704c, 1852*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1853*844be6e2SKathiravan Thirumoorthy .clkr = { 1854*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x1704c, 1855*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1856*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1857*844be6e2SKathiravan Thirumoorthy .name = "gcc_uniphy0_ahb_clk", 1858*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1859*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 1860*844be6e2SKathiravan Thirumoorthy }, 1861*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1862*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1863*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1864*844be6e2SKathiravan Thirumoorthy }, 1865*844be6e2SKathiravan Thirumoorthy }, 1866*844be6e2SKathiravan Thirumoorthy }; 1867*844be6e2SKathiravan Thirumoorthy 1868*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_uniphy0_sys_clk = { 1869*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17048, 1870*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1871*844be6e2SKathiravan Thirumoorthy .clkr = { 1872*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17048, 1873*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1874*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1875*844be6e2SKathiravan Thirumoorthy .name = "gcc_uniphy0_sys_clk", 1876*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1877*844be6e2SKathiravan Thirumoorthy &gcc_uniphy_sys_clk_src.clkr.hw, 1878*844be6e2SKathiravan Thirumoorthy }, 1879*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1880*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1881*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1882*844be6e2SKathiravan Thirumoorthy }, 1883*844be6e2SKathiravan Thirumoorthy }, 1884*844be6e2SKathiravan Thirumoorthy }; 1885*844be6e2SKathiravan Thirumoorthy 1886*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_uniphy1_ahb_clk = { 1887*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x1705c, 1888*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1889*844be6e2SKathiravan Thirumoorthy .clkr = { 1890*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x1705c, 1891*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1892*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1893*844be6e2SKathiravan Thirumoorthy .name = "gcc_uniphy1_ahb_clk", 1894*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1895*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 1896*844be6e2SKathiravan Thirumoorthy }, 1897*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1898*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1899*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1900*844be6e2SKathiravan Thirumoorthy }, 1901*844be6e2SKathiravan Thirumoorthy }, 1902*844be6e2SKathiravan Thirumoorthy }; 1903*844be6e2SKathiravan Thirumoorthy 1904*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_uniphy1_sys_clk = { 1905*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17058, 1906*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1907*844be6e2SKathiravan Thirumoorthy .clkr = { 1908*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17058, 1909*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1910*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1911*844be6e2SKathiravan Thirumoorthy .name = "gcc_uniphy1_sys_clk", 1912*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1913*844be6e2SKathiravan Thirumoorthy &gcc_uniphy_sys_clk_src.clkr.hw, 1914*844be6e2SKathiravan Thirumoorthy }, 1915*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1916*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1917*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1918*844be6e2SKathiravan Thirumoorthy }, 1919*844be6e2SKathiravan Thirumoorthy }, 1920*844be6e2SKathiravan Thirumoorthy }; 1921*844be6e2SKathiravan Thirumoorthy 1922*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_uniphy2_ahb_clk = { 1923*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x1706c, 1924*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1925*844be6e2SKathiravan Thirumoorthy .clkr = { 1926*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x1706c, 1927*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1928*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1929*844be6e2SKathiravan Thirumoorthy .name = "gcc_uniphy2_ahb_clk", 1930*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1931*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 1932*844be6e2SKathiravan Thirumoorthy }, 1933*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1934*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1935*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1936*844be6e2SKathiravan Thirumoorthy }, 1937*844be6e2SKathiravan Thirumoorthy }, 1938*844be6e2SKathiravan Thirumoorthy }; 1939*844be6e2SKathiravan Thirumoorthy 1940*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_uniphy2_sys_clk = { 1941*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x17068, 1942*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1943*844be6e2SKathiravan Thirumoorthy .clkr = { 1944*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x17068, 1945*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1946*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1947*844be6e2SKathiravan Thirumoorthy .name = "gcc_uniphy2_sys_clk", 1948*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1949*844be6e2SKathiravan Thirumoorthy &gcc_uniphy_sys_clk_src.clkr.hw, 1950*844be6e2SKathiravan Thirumoorthy }, 1951*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1952*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1953*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1954*844be6e2SKathiravan Thirumoorthy }, 1955*844be6e2SKathiravan Thirumoorthy }, 1956*844be6e2SKathiravan Thirumoorthy }; 1957*844be6e2SKathiravan Thirumoorthy 1958*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_usb0_aux_clk = { 1959*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x2c04c, 1960*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1961*844be6e2SKathiravan Thirumoorthy .clkr = { 1962*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x2c04c, 1963*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1964*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1965*844be6e2SKathiravan Thirumoorthy .name = "gcc_usb0_aux_clk", 1966*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1967*844be6e2SKathiravan Thirumoorthy &gcc_usb0_aux_clk_src.clkr.hw, 1968*844be6e2SKathiravan Thirumoorthy }, 1969*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1970*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1971*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1972*844be6e2SKathiravan Thirumoorthy }, 1973*844be6e2SKathiravan Thirumoorthy }, 1974*844be6e2SKathiravan Thirumoorthy }; 1975*844be6e2SKathiravan Thirumoorthy 1976*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_usb0_master_clk = { 1977*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x2c044, 1978*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1979*844be6e2SKathiravan Thirumoorthy .clkr = { 1980*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x2c044, 1981*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 1982*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 1983*844be6e2SKathiravan Thirumoorthy .name = "gcc_usb0_master_clk", 1984*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 1985*844be6e2SKathiravan Thirumoorthy &gcc_usb0_master_clk_src.clkr.hw, 1986*844be6e2SKathiravan Thirumoorthy }, 1987*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 1988*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 1989*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 1990*844be6e2SKathiravan Thirumoorthy }, 1991*844be6e2SKathiravan Thirumoorthy }, 1992*844be6e2SKathiravan Thirumoorthy }; 1993*844be6e2SKathiravan Thirumoorthy 1994*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_usb0_mock_utmi_clk = { 1995*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x2c050, 1996*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 1997*844be6e2SKathiravan Thirumoorthy .clkr = { 1998*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x2c050, 1999*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2000*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2001*844be6e2SKathiravan Thirumoorthy .name = "gcc_usb0_mock_utmi_clk", 2002*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2003*844be6e2SKathiravan Thirumoorthy &gcc_usb0_mock_utmi_div_clk_src.clkr.hw, 2004*844be6e2SKathiravan Thirumoorthy }, 2005*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2006*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2007*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2008*844be6e2SKathiravan Thirumoorthy }, 2009*844be6e2SKathiravan Thirumoorthy }, 2010*844be6e2SKathiravan Thirumoorthy }; 2011*844be6e2SKathiravan Thirumoorthy 2012*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = { 2013*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x2c05c, 2014*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2015*844be6e2SKathiravan Thirumoorthy .clkr = { 2016*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x2c05c, 2017*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2018*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2019*844be6e2SKathiravan Thirumoorthy .name = "gcc_usb0_phy_cfg_ahb_clk", 2020*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2021*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 2022*844be6e2SKathiravan Thirumoorthy }, 2023*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2024*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2025*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2026*844be6e2SKathiravan Thirumoorthy }, 2027*844be6e2SKathiravan Thirumoorthy }, 2028*844be6e2SKathiravan Thirumoorthy }; 2029*844be6e2SKathiravan Thirumoorthy 2030*844be6e2SKathiravan Thirumoorthy static struct clk_regmap_phy_mux gcc_usb0_pipe_clk_src = { 2031*844be6e2SKathiravan Thirumoorthy .reg = 0x2c074, 2032*844be6e2SKathiravan Thirumoorthy .clkr = { 2033*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2034*844be6e2SKathiravan Thirumoorthy .name = "gcc_usb0_pipe_clk_src", 2035*844be6e2SKathiravan Thirumoorthy .parent_data = &(const struct clk_parent_data) { 2036*844be6e2SKathiravan Thirumoorthy .index = DT_USB3_PHY0_CC_PIPE_CLK, 2037*844be6e2SKathiravan Thirumoorthy }, 2038*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2039*844be6e2SKathiravan Thirumoorthy .ops = &clk_regmap_phy_mux_ops, 2040*844be6e2SKathiravan Thirumoorthy }, 2041*844be6e2SKathiravan Thirumoorthy }, 2042*844be6e2SKathiravan Thirumoorthy }; 2043*844be6e2SKathiravan Thirumoorthy 2044*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_usb0_pipe_clk = { 2045*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x2c054, 2046*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT_DELAY, 2047*844be6e2SKathiravan Thirumoorthy .clkr = { 2048*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x2c054, 2049*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2050*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2051*844be6e2SKathiravan Thirumoorthy .name = "gcc_usb0_pipe_clk", 2052*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw *[]) { 2053*844be6e2SKathiravan Thirumoorthy &gcc_usb0_pipe_clk_src.clkr.hw 2054*844be6e2SKathiravan Thirumoorthy }, 2055*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2056*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2057*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2058*844be6e2SKathiravan Thirumoorthy }, 2059*844be6e2SKathiravan Thirumoorthy }, 2060*844be6e2SKathiravan Thirumoorthy }; 2061*844be6e2SKathiravan Thirumoorthy 2062*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_usb0_sleep_clk = { 2063*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x2c058, 2064*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2065*844be6e2SKathiravan Thirumoorthy .clkr = { 2066*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x2c058, 2067*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2068*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2069*844be6e2SKathiravan Thirumoorthy .name = "gcc_usb0_sleep_clk", 2070*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2071*844be6e2SKathiravan Thirumoorthy &gcc_sleep_clk_src.clkr.hw, 2072*844be6e2SKathiravan Thirumoorthy }, 2073*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2074*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2075*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2076*844be6e2SKathiravan Thirumoorthy }, 2077*844be6e2SKathiravan Thirumoorthy }, 2078*844be6e2SKathiravan Thirumoorthy }; 2079*844be6e2SKathiravan Thirumoorthy 2080*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_rchng_clk = { 2081*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x28028, 2082*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2083*844be6e2SKathiravan Thirumoorthy .clkr = { 2084*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x28028, 2085*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(1), 2086*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2087*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie0_rchng_clk", 2088*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw *[]) { 2089*844be6e2SKathiravan Thirumoorthy &gcc_pcie0_rchng_clk_src.clkr.hw 2090*844be6e2SKathiravan Thirumoorthy }, 2091*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2092*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2093*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2094*844be6e2SKathiravan Thirumoorthy }, 2095*844be6e2SKathiravan Thirumoorthy }, 2096*844be6e2SKathiravan Thirumoorthy }; 2097*844be6e2SKathiravan Thirumoorthy 2098*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_rchng_clk = { 2099*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x29028, 2100*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2101*844be6e2SKathiravan Thirumoorthy .clkr = { 2102*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x29028, 2103*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(1), 2104*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2105*844be6e2SKathiravan Thirumoorthy .name = "gcc_pcie1_rchng_clk", 2106*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw *[]) { 2107*844be6e2SKathiravan Thirumoorthy &gcc_pcie1_rchng_clk_src.clkr.hw 2108*844be6e2SKathiravan Thirumoorthy }, 2109*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2110*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2111*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2112*844be6e2SKathiravan Thirumoorthy }, 2113*844be6e2SKathiravan Thirumoorthy }, 2114*844be6e2SKathiravan Thirumoorthy }; 2115*844be6e2SKathiravan Thirumoorthy 2116*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qpic_ahb_clk = { 2117*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x32010, 2118*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2119*844be6e2SKathiravan Thirumoorthy .clkr = { 2120*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x32010, 2121*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2122*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2123*844be6e2SKathiravan Thirumoorthy .name = "gcc_qpic_ahb_clk", 2124*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2125*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 2126*844be6e2SKathiravan Thirumoorthy }, 2127*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2128*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2129*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2130*844be6e2SKathiravan Thirumoorthy }, 2131*844be6e2SKathiravan Thirumoorthy }, 2132*844be6e2SKathiravan Thirumoorthy }; 2133*844be6e2SKathiravan Thirumoorthy 2134*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qpic_clk = { 2135*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x32028, 2136*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2137*844be6e2SKathiravan Thirumoorthy .clkr = { 2138*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x32028, 2139*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2140*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2141*844be6e2SKathiravan Thirumoorthy .name = "gcc_qpic_clk", 2142*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2143*844be6e2SKathiravan Thirumoorthy &gcc_qpic_clk_src.clkr.hw, 2144*844be6e2SKathiravan Thirumoorthy }, 2145*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2146*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2147*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2148*844be6e2SKathiravan Thirumoorthy }, 2149*844be6e2SKathiravan Thirumoorthy }, 2150*844be6e2SKathiravan Thirumoorthy }; 2151*844be6e2SKathiravan Thirumoorthy 2152*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qpic_io_macro_clk = { 2153*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x3200c, 2154*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2155*844be6e2SKathiravan Thirumoorthy .clkr = { 2156*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x3200c, 2157*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2158*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2159*844be6e2SKathiravan Thirumoorthy .name = "gcc_qpic_io_macro_clk", 2160*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2161*844be6e2SKathiravan Thirumoorthy &gcc_qpic_io_macro_clk_src.clkr.hw, 2162*844be6e2SKathiravan Thirumoorthy }, 2163*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2164*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2165*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2166*844be6e2SKathiravan Thirumoorthy }, 2167*844be6e2SKathiravan Thirumoorthy }, 2168*844be6e2SKathiravan Thirumoorthy }; 2169*844be6e2SKathiravan Thirumoorthy 2170*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_cmn_12gpll_ahb_clk = { 2171*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x3a004, 2172*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2173*844be6e2SKathiravan Thirumoorthy .clkr = { 2174*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x3a004, 2175*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2176*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2177*844be6e2SKathiravan Thirumoorthy .name = "gcc_cmn_12gpll_ahb_clk", 2178*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2179*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 2180*844be6e2SKathiravan Thirumoorthy }, 2181*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2182*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2183*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2184*844be6e2SKathiravan Thirumoorthy }, 2185*844be6e2SKathiravan Thirumoorthy }, 2186*844be6e2SKathiravan Thirumoorthy }; 2187*844be6e2SKathiravan Thirumoorthy 2188*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_cmn_12gpll_sys_clk = { 2189*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x3a008, 2190*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2191*844be6e2SKathiravan Thirumoorthy .clkr = { 2192*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x3a008, 2193*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2194*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2195*844be6e2SKathiravan Thirumoorthy .name = "gcc_cmn_12gpll_sys_clk", 2196*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2197*844be6e2SKathiravan Thirumoorthy &gcc_uniphy_sys_clk_src.clkr.hw, 2198*844be6e2SKathiravan Thirumoorthy }, 2199*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2200*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2201*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2202*844be6e2SKathiravan Thirumoorthy }, 2203*844be6e2SKathiravan Thirumoorthy }, 2204*844be6e2SKathiravan Thirumoorthy }; 2205*844be6e2SKathiravan Thirumoorthy 2206*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qdss_at_clk = { 2207*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x2d034, 2208*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2209*844be6e2SKathiravan Thirumoorthy .clkr = { 2210*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x2d034, 2211*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2212*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2213*844be6e2SKathiravan Thirumoorthy .name = "gcc_qdss_at_clk", 2214*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2215*844be6e2SKathiravan Thirumoorthy &gcc_qdss_at_clk_src.clkr.hw, 2216*844be6e2SKathiravan Thirumoorthy }, 2217*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2218*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2219*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2220*844be6e2SKathiravan Thirumoorthy }, 2221*844be6e2SKathiravan Thirumoorthy }, 2222*844be6e2SKathiravan Thirumoorthy }; 2223*844be6e2SKathiravan Thirumoorthy 2224*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qdss_dap_clk = { 2225*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x2d058, 2226*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT_VOTED, 2227*844be6e2SKathiravan Thirumoorthy .clkr = { 2228*844be6e2SKathiravan Thirumoorthy .enable_reg = 0xb004, 2229*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(2), 2230*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2231*844be6e2SKathiravan Thirumoorthy .name = "gcc_qdss_dap_clk", 2232*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2233*844be6e2SKathiravan Thirumoorthy &gcc_qdss_tsctr_clk_src.clkr.hw, 2234*844be6e2SKathiravan Thirumoorthy }, 2235*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2236*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2237*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2238*844be6e2SKathiravan Thirumoorthy }, 2239*844be6e2SKathiravan Thirumoorthy }, 2240*844be6e2SKathiravan Thirumoorthy }; 2241*844be6e2SKathiravan Thirumoorthy 2242*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pon_apb_clk = { 2243*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x3c01c, 2244*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2245*844be6e2SKathiravan Thirumoorthy .clkr = { 2246*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x3c01c, 2247*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2248*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2249*844be6e2SKathiravan Thirumoorthy .name = "gcc_pon_apb_clk", 2250*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2251*844be6e2SKathiravan Thirumoorthy &gcc_pcnoc_bfdcd_clk_src.clkr.hw, 2252*844be6e2SKathiravan Thirumoorthy }, 2253*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2254*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2255*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2256*844be6e2SKathiravan Thirumoorthy }, 2257*844be6e2SKathiravan Thirumoorthy }, 2258*844be6e2SKathiravan Thirumoorthy }; 2259*844be6e2SKathiravan Thirumoorthy 2260*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pon_tm_clk = { 2261*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x3c014, 2262*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2263*844be6e2SKathiravan Thirumoorthy .clkr = { 2264*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x3c014, 2265*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2266*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2267*844be6e2SKathiravan Thirumoorthy .name = "gcc_pon_tm_clk", 2268*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2269*844be6e2SKathiravan Thirumoorthy &gcc_pon_tm_div_clk_src.hw, 2270*844be6e2SKathiravan Thirumoorthy }, 2271*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2272*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2273*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2274*844be6e2SKathiravan Thirumoorthy }, 2275*844be6e2SKathiravan Thirumoorthy }, 2276*844be6e2SKathiravan Thirumoorthy }; 2277*844be6e2SKathiravan Thirumoorthy 2278*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pon_tm2x_clk = { 2279*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x3c00c, 2280*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2281*844be6e2SKathiravan Thirumoorthy .clkr = { 2282*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x3c00c, 2283*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2284*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2285*844be6e2SKathiravan Thirumoorthy .name = "gcc_pon_tm2x_clk", 2286*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2287*844be6e2SKathiravan Thirumoorthy &gcc_pon_tm2x_clk_src.clkr.hw, 2288*844be6e2SKathiravan Thirumoorthy }, 2289*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2290*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2291*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2292*844be6e2SKathiravan Thirumoorthy }, 2293*844be6e2SKathiravan Thirumoorthy }, 2294*844be6e2SKathiravan Thirumoorthy }; 2295*844be6e2SKathiravan Thirumoorthy 2296*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_snoc_lpass_clk = { 2297*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x2e028, 2298*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2299*844be6e2SKathiravan Thirumoorthy .clkr = { 2300*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x2e028, 2301*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2302*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2303*844be6e2SKathiravan Thirumoorthy .name = "gcc_snoc_lpass_clk", 2304*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2305*844be6e2SKathiravan Thirumoorthy &gcc_lpass_axim_clk_src.clkr.hw, 2306*844be6e2SKathiravan Thirumoorthy }, 2307*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2308*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2309*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2310*844be6e2SKathiravan Thirumoorthy }, 2311*844be6e2SKathiravan Thirumoorthy }, 2312*844be6e2SKathiravan Thirumoorthy }; 2313*844be6e2SKathiravan Thirumoorthy 2314*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_lpass_sway_clk = { 2315*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x27014, 2316*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2317*844be6e2SKathiravan Thirumoorthy .clkr = { 2318*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x27014, 2319*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2320*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2321*844be6e2SKathiravan Thirumoorthy .name = "gcc_lpass_sway_clk", 2322*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2323*844be6e2SKathiravan Thirumoorthy &gcc_lpass_sway_clk_src.clkr.hw, 2324*844be6e2SKathiravan Thirumoorthy }, 2325*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2326*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2327*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2328*844be6e2SKathiravan Thirumoorthy }, 2329*844be6e2SKathiravan Thirumoorthy }, 2330*844be6e2SKathiravan Thirumoorthy }; 2331*844be6e2SKathiravan Thirumoorthy 2332*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_cnoc_lpass_cfg_clk = { 2333*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x31020, 2334*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2335*844be6e2SKathiravan Thirumoorthy .clkr = { 2336*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x31020, 2337*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2338*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2339*844be6e2SKathiravan Thirumoorthy .name = "gcc_cnoc_lpass_cfg_clk", 2340*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2341*844be6e2SKathiravan Thirumoorthy &gcc_lpass_sway_clk_src.clkr.hw, 2342*844be6e2SKathiravan Thirumoorthy }, 2343*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2344*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2345*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2346*844be6e2SKathiravan Thirumoorthy }, 2347*844be6e2SKathiravan Thirumoorthy }, 2348*844be6e2SKathiravan Thirumoorthy }; 2349*844be6e2SKathiravan Thirumoorthy 2350*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_lpass_core_axim_clk = { 2351*844be6e2SKathiravan Thirumoorthy .halt_reg = 0x27018, 2352*844be6e2SKathiravan Thirumoorthy .halt_check = BRANCH_HALT, 2353*844be6e2SKathiravan Thirumoorthy .clkr = { 2354*844be6e2SKathiravan Thirumoorthy .enable_reg = 0x27018, 2355*844be6e2SKathiravan Thirumoorthy .enable_mask = BIT(0), 2356*844be6e2SKathiravan Thirumoorthy .hw.init = &(const struct clk_init_data) { 2357*844be6e2SKathiravan Thirumoorthy .name = "gcc_lpass_core_axim_clk", 2358*844be6e2SKathiravan Thirumoorthy .parent_hws = (const struct clk_hw*[]) { 2359*844be6e2SKathiravan Thirumoorthy &gcc_lpass_axim_clk_src.clkr.hw, 2360*844be6e2SKathiravan Thirumoorthy }, 2361*844be6e2SKathiravan Thirumoorthy .num_parents = 1, 2362*844be6e2SKathiravan Thirumoorthy .flags = CLK_SET_RATE_PARENT, 2363*844be6e2SKathiravan Thirumoorthy .ops = &clk_branch2_ops, 2364*844be6e2SKathiravan Thirumoorthy }, 2365*844be6e2SKathiravan Thirumoorthy }, 2366*844be6e2SKathiravan Thirumoorthy }; 2367*844be6e2SKathiravan Thirumoorthy 2368*844be6e2SKathiravan Thirumoorthy static __maybe_unused struct clk_regmap *gcc_ipq5210_clocks[] = { 2369*844be6e2SKathiravan Thirumoorthy [GCC_ADSS_PWM_CLK] = &gcc_adss_pwm_clk.clkr, 2370*844be6e2SKathiravan Thirumoorthy [GCC_ADSS_PWM_CLK_SRC] = &gcc_adss_pwm_clk_src.clkr, 2371*844be6e2SKathiravan Thirumoorthy [GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr, 2372*844be6e2SKathiravan Thirumoorthy [GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr, 2373*844be6e2SKathiravan Thirumoorthy [GCC_CNOC_LPASS_CFG_CLK] = &gcc_cnoc_lpass_cfg_clk.clkr, 2374*844be6e2SKathiravan Thirumoorthy [GCC_CNOC_PCIE0_1LANE_S_CLK] = &gcc_cnoc_pcie0_1lane_s_clk.clkr, 2375*844be6e2SKathiravan Thirumoorthy [GCC_CNOC_PCIE1_2LANE_S_CLK] = &gcc_cnoc_pcie1_2lane_s_clk.clkr, 2376*844be6e2SKathiravan Thirumoorthy [GCC_CNOC_USB_CLK] = &gcc_cnoc_usb_clk.clkr, 2377*844be6e2SKathiravan Thirumoorthy [GCC_GEPHY_SYS_CLK] = &gcc_gephy_sys_clk.clkr, 2378*844be6e2SKathiravan Thirumoorthy [GCC_LPASS_AXIM_CLK_SRC] = &gcc_lpass_axim_clk_src.clkr, 2379*844be6e2SKathiravan Thirumoorthy [GCC_LPASS_CORE_AXIM_CLK] = &gcc_lpass_core_axim_clk.clkr, 2380*844be6e2SKathiravan Thirumoorthy [GCC_LPASS_SWAY_CLK] = &gcc_lpass_sway_clk.clkr, 2381*844be6e2SKathiravan Thirumoorthy [GCC_LPASS_SWAY_CLK_SRC] = &gcc_lpass_sway_clk_src.clkr, 2382*844be6e2SKathiravan Thirumoorthy [GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr, 2383*844be6e2SKathiravan Thirumoorthy [GCC_MDIO_GEPHY_AHB_CLK] = &gcc_mdio_gephy_ahb_clk.clkr, 2384*844be6e2SKathiravan Thirumoorthy [GCC_NSS_TS_CLK] = &gcc_nss_ts_clk.clkr, 2385*844be6e2SKathiravan Thirumoorthy [GCC_NSS_TS_CLK_SRC] = &gcc_nss_ts_clk_src.clkr, 2386*844be6e2SKathiravan Thirumoorthy [GCC_NSSCC_CLK] = &gcc_nsscc_clk.clkr, 2387*844be6e2SKathiravan Thirumoorthy [GCC_NSSCFG_CLK] = &gcc_nsscfg_clk.clkr, 2388*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_ATB_CLK] = &gcc_nssnoc_atb_clk.clkr, 2389*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_MEMNOC_1_CLK] = &gcc_nssnoc_memnoc_1_clk.clkr, 2390*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_MEMNOC_BFDCD_CLK_SRC] = &gcc_nssnoc_memnoc_bfdcd_clk_src.clkr, 2391*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_MEMNOC_CLK] = &gcc_nssnoc_memnoc_clk.clkr, 2392*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_MEMNOC_DIV_CLK_SRC] = &gcc_nssnoc_memnoc_div_clk_src.clkr, 2393*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_NSSCC_CLK] = &gcc_nssnoc_nsscc_clk.clkr, 2394*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_PCNOC_1_CLK] = &gcc_nssnoc_pcnoc_1_clk.clkr, 2395*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr, 2396*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_SNOC_1_CLK] = &gcc_nssnoc_snoc_1_clk.clkr, 2397*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr, 2398*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr, 2399*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_XO_DCD_CLK] = &gcc_nssnoc_xo_dcd_clk.clkr, 2400*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr, 2401*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr, 2402*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr, 2403*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AXI_M_CLK_SRC] = &gcc_pcie0_axi_m_clk_src.clkr, 2404*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr, 2405*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr, 2406*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AXI_S_CLK_SRC] = &gcc_pcie0_axi_s_clk_src.clkr, 2407*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr, 2408*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_PIPE_CLK_SRC] = &gcc_pcie0_pipe_clk_src.clkr, 2409*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr, 2410*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_RCHNG_CLK_SRC] = &gcc_pcie0_rchng_clk_src.clkr, 2411*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AHB_CLK] = &gcc_pcie1_ahb_clk.clkr, 2412*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AUX_CLK] = &gcc_pcie1_aux_clk.clkr, 2413*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AXI_M_CLK] = &gcc_pcie1_axi_m_clk.clkr, 2414*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AXI_M_CLK_SRC] = &gcc_pcie1_axi_m_clk_src.clkr, 2415*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AXI_S_BRIDGE_CLK] = &gcc_pcie1_axi_s_bridge_clk.clkr, 2416*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AXI_S_CLK] = &gcc_pcie1_axi_s_clk.clkr, 2417*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AXI_S_CLK_SRC] = &gcc_pcie1_axi_s_clk_src.clkr, 2418*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_PIPE_CLK] = &gcc_pcie1_pipe_clk.clkr, 2419*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_PIPE_CLK_SRC] = &gcc_pcie1_pipe_clk_src.clkr, 2420*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_RCHNG_CLK] = &gcc_pcie1_rchng_clk.clkr, 2421*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_RCHNG_CLK_SRC] = &gcc_pcie1_rchng_clk_src.clkr, 2422*844be6e2SKathiravan Thirumoorthy [GCC_PCIE_AUX_CLK_SRC] = &gcc_pcie_aux_clk_src.clkr, 2423*844be6e2SKathiravan Thirumoorthy [GCC_PCNOC_BFDCD_CLK_SRC] = &gcc_pcnoc_bfdcd_clk_src.clkr, 2424*844be6e2SKathiravan Thirumoorthy [GCC_PON_APB_CLK] = &gcc_pon_apb_clk.clkr, 2425*844be6e2SKathiravan Thirumoorthy [GCC_PON_TM_CLK] = &gcc_pon_tm_clk.clkr, 2426*844be6e2SKathiravan Thirumoorthy [GCC_PON_TM2X_CLK] = &gcc_pon_tm2x_clk.clkr, 2427*844be6e2SKathiravan Thirumoorthy [GCC_PON_TM2X_CLK_SRC] = &gcc_pon_tm2x_clk_src.clkr, 2428*844be6e2SKathiravan Thirumoorthy [GCC_QDSS_AT_CLK] = &gcc_qdss_at_clk.clkr, 2429*844be6e2SKathiravan Thirumoorthy [GCC_QDSS_AT_CLK_SRC] = &gcc_qdss_at_clk_src.clkr, 2430*844be6e2SKathiravan Thirumoorthy [GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr, 2431*844be6e2SKathiravan Thirumoorthy [GCC_QDSS_TSCTR_CLK_SRC] = &gcc_qdss_tsctr_clk_src.clkr, 2432*844be6e2SKathiravan Thirumoorthy [GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr, 2433*844be6e2SKathiravan Thirumoorthy [GCC_QPIC_CLK] = &gcc_qpic_clk.clkr, 2434*844be6e2SKathiravan Thirumoorthy [GCC_QPIC_CLK_SRC] = &gcc_qpic_clk_src.clkr, 2435*844be6e2SKathiravan Thirumoorthy [GCC_QPIC_IO_MACRO_CLK] = &gcc_qpic_io_macro_clk.clkr, 2436*844be6e2SKathiravan Thirumoorthy [GCC_QPIC_IO_MACRO_CLK_SRC] = &gcc_qpic_io_macro_clk_src.clkr, 2437*844be6e2SKathiravan Thirumoorthy [GCC_QRNG_AHB_CLK] = &gcc_qrng_ahb_clk.clkr, 2438*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_AHB_MST_CLK] = &gcc_qupv3_ahb_mst_clk.clkr, 2439*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_AHB_SLV_CLK] = &gcc_qupv3_ahb_slv_clk.clkr, 2440*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE0_CLK] = &gcc_qupv3_wrap_se0_clk.clkr, 2441*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE0_CLK_SRC] = &gcc_qupv3_wrap_se0_clk_src.clkr, 2442*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE1_CLK] = &gcc_qupv3_wrap_se1_clk.clkr, 2443*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE1_CLK_SRC] = &gcc_qupv3_wrap_se1_clk_src.clkr, 2444*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE2_CLK] = &gcc_qupv3_wrap_se2_clk.clkr, 2445*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE2_CLK_SRC] = &gcc_qupv3_wrap_se2_clk_src.clkr, 2446*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE3_CLK] = &gcc_qupv3_wrap_se3_clk.clkr, 2447*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE3_CLK_SRC] = &gcc_qupv3_wrap_se3_clk_src.clkr, 2448*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE4_CLK] = &gcc_qupv3_wrap_se4_clk.clkr, 2449*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE4_CLK_SRC] = &gcc_qupv3_wrap_se4_clk_src.clkr, 2450*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE5_CLK] = &gcc_qupv3_wrap_se5_clk.clkr, 2451*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE5_CLK_SRC] = &gcc_qupv3_wrap_se5_clk_src.clkr, 2452*844be6e2SKathiravan Thirumoorthy [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 2453*844be6e2SKathiravan Thirumoorthy [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 2454*844be6e2SKathiravan Thirumoorthy [GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr, 2455*844be6e2SKathiravan Thirumoorthy [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr, 2456*844be6e2SKathiravan Thirumoorthy [GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr, 2457*844be6e2SKathiravan Thirumoorthy [GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr, 2458*844be6e2SKathiravan Thirumoorthy [GCC_SNOC_LPASS_CLK] = &gcc_snoc_lpass_clk.clkr, 2459*844be6e2SKathiravan Thirumoorthy [GCC_SNOC_PCIE0_AXI_M_CLK] = &gcc_snoc_pcie0_axi_m_clk.clkr, 2460*844be6e2SKathiravan Thirumoorthy [GCC_SNOC_PCIE1_AXI_M_CLK] = &gcc_snoc_pcie1_axi_m_clk.clkr, 2461*844be6e2SKathiravan Thirumoorthy [GCC_SYSTEM_NOC_BFDCD_CLK_SRC] = &gcc_system_noc_bfdcd_clk_src.clkr, 2462*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr, 2463*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr, 2464*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr, 2465*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr, 2466*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY2_AHB_CLK] = &gcc_uniphy2_ahb_clk.clkr, 2467*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY2_SYS_CLK] = &gcc_uniphy2_sys_clk.clkr, 2468*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY_SYS_CLK_SRC] = &gcc_uniphy_sys_clk_src.clkr, 2469*844be6e2SKathiravan Thirumoorthy [GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr, 2470*844be6e2SKathiravan Thirumoorthy [GCC_USB0_AUX_CLK_SRC] = &gcc_usb0_aux_clk_src.clkr, 2471*844be6e2SKathiravan Thirumoorthy [GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr, 2472*844be6e2SKathiravan Thirumoorthy [GCC_USB0_MASTER_CLK_SRC] = &gcc_usb0_master_clk_src.clkr, 2473*844be6e2SKathiravan Thirumoorthy [GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr, 2474*844be6e2SKathiravan Thirumoorthy [GCC_USB0_MOCK_UTMI_CLK_SRC] = &gcc_usb0_mock_utmi_clk_src.clkr, 2475*844be6e2SKathiravan Thirumoorthy [GCC_USB0_MOCK_UTMI_DIV_CLK_SRC] = &gcc_usb0_mock_utmi_div_clk_src.clkr, 2476*844be6e2SKathiravan Thirumoorthy [GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr, 2477*844be6e2SKathiravan Thirumoorthy [GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr, 2478*844be6e2SKathiravan Thirumoorthy [GCC_USB0_PIPE_CLK_SRC] = &gcc_usb0_pipe_clk_src.clkr, 2479*844be6e2SKathiravan Thirumoorthy [GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr, 2480*844be6e2SKathiravan Thirumoorthy [GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr, 2481*844be6e2SKathiravan Thirumoorthy [GPLL0_MAIN] = &gpll0_main.clkr, 2482*844be6e2SKathiravan Thirumoorthy [GPLL0] = &gpll0.clkr, 2483*844be6e2SKathiravan Thirumoorthy [GPLL2_MAIN] = &gpll2_main.clkr, 2484*844be6e2SKathiravan Thirumoorthy [GPLL2] = &gpll2.clkr, 2485*844be6e2SKathiravan Thirumoorthy [GPLL4_MAIN] = &gpll4_main.clkr, 2486*844be6e2SKathiravan Thirumoorthy }; 2487*844be6e2SKathiravan Thirumoorthy 2488*844be6e2SKathiravan Thirumoorthy static const struct qcom_reset_map gcc_ipq5210_resets[] = { 2489*844be6e2SKathiravan Thirumoorthy [GCC_ADSS_BCR] = { 0x1c000 }, 2490*844be6e2SKathiravan Thirumoorthy [GCC_ADSS_PWM_ARES] = { 0x1c00c, 2 }, 2491*844be6e2SKathiravan Thirumoorthy [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x38000 }, 2492*844be6e2SKathiravan Thirumoorthy [GCC_APC0_VOLTAGE_DROOP_DETECTOR_GPLL0_ARES] = { 0x3800c, 2 }, 2493*844be6e2SKathiravan Thirumoorthy [GCC_APSS_AHB_ARES] = { 0x24014, 2 }, 2494*844be6e2SKathiravan Thirumoorthy [GCC_APSS_ATB_ARES] = { 0x24034, 2 }, 2495*844be6e2SKathiravan Thirumoorthy [GCC_APSS_AXI_ARES] = { 0x24018, 2 }, 2496*844be6e2SKathiravan Thirumoorthy [GCC_APSS_TS_ARES] = { 0x24030, 2 }, 2497*844be6e2SKathiravan Thirumoorthy [GCC_BOOT_ROM_AHB_ARES] = { 0x1302c, 2 }, 2498*844be6e2SKathiravan Thirumoorthy [GCC_BOOT_ROM_BCR] = { 0x13028 }, 2499*844be6e2SKathiravan Thirumoorthy [GCC_GEPHY_BCR] = { 0x2a000 }, 2500*844be6e2SKathiravan Thirumoorthy [GCC_GEPHY_SYS_ARES] = { 0x2a004, 2 }, 2501*844be6e2SKathiravan Thirumoorthy [GCC_GP1_ARES] = { 0x8018, 2 }, 2502*844be6e2SKathiravan Thirumoorthy [GCC_GP2_ARES] = { 0x9018, 2 }, 2503*844be6e2SKathiravan Thirumoorthy [GCC_GP3_ARES] = { 0xa018, 2 }, 2504*844be6e2SKathiravan Thirumoorthy [GCC_MDIO_AHB_ARES] = { 0x17040, 2 }, 2505*844be6e2SKathiravan Thirumoorthy [GCC_MDIO_BCR] = { 0x1703c }, 2506*844be6e2SKathiravan Thirumoorthy [GCC_MDIO_GEPHY_AHB_ARES] = { 0x17098, 2 }, 2507*844be6e2SKathiravan Thirumoorthy [GCC_NSS_BCR] = { 0x17000 }, 2508*844be6e2SKathiravan Thirumoorthy [GCC_NSS_TS_ARES] = { 0x17018, 2 }, 2509*844be6e2SKathiravan Thirumoorthy [GCC_NSSCC_ARES] = { 0x17034, 2 }, 2510*844be6e2SKathiravan Thirumoorthy [GCC_NSSCFG_ARES] = { 0x1702c, 2 }, 2511*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_ATB_ARES] = { 0x17014, 2 }, 2512*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_MEMNOC_1_ARES] = { 0x17084, 2 }, 2513*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_MEMNOC_ARES] = { 0x17024, 2 }, 2514*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_NSSCC_ARES] = { 0x17030, 2 }, 2515*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_PCNOC_1_ARES] = { 0x17080, 2 }, 2516*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x1701c, 2 }, 2517*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_SNOC_1_ARES] = { 0x1707c, 2 }, 2518*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_SNOC_ARES] = { 0x17028, 2 }, 2519*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x17020, 2 }, 2520*844be6e2SKathiravan Thirumoorthy [GCC_NSSNOC_XO_DCD_ARES] = { 0x17074, 2 }, 2521*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AHB_ARES] = { 0x28030, 2 }, 2522*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AUX_ARES] = { 0x28070, 2 }, 2523*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AXI_M_ARES] = { 0x28038, 2 }, 2524*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AXI_S_BRIDGE_ARES] = { 0x28048, 2 }, 2525*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AXI_S_ARES] = { 0x28040, 2 }, 2526*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_BCR] = { 0x28000 }, 2527*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_LINK_DOWN_BCR] = { 0x28054 }, 2528*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_PIPE_RESET] = { 0x28058, 0 }, 2529*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_CORE_STICKY_RESET] = { 0x28058, 1 }, 2530*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AXI_S_STICKY_RESET] = { 0x28058, 2 }, 2531*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AXI_S_RESET] = { 0x28058, 3 }, 2532*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AXI_M_STICKY_RESET] = { 0x28058, 4 }, 2533*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AXI_M_RESET] = { 0x28058, 5 }, 2534*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AUX_RESET] = { 0x28058, 6 }, 2535*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_AHB_RESET] = { 0x28058, 7 }, 2536*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_PHY_BCR] = { 0x28060 }, 2537*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0_PIPE_ARES] = { 0x28068, 2 }, 2538*844be6e2SKathiravan Thirumoorthy [GCC_PCIE0PHY_PHY_BCR] = { 0x2805c }, 2539*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AHB_ARES] = { 0x29030, 2 }, 2540*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AUX_ARES] = { 0x29074, 2 }, 2541*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AXI_M_ARES] = { 0x29038, 2 }, 2542*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AXI_S_BRIDGE_ARES] = { 0x29048, 2 }, 2543*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AXI_S_ARES] = { 0x29040, 2 }, 2544*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_BCR] = { 0x29000 }, 2545*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_LINK_DOWN_BCR] = { 0x29054 }, 2546*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_PIPE_RESET] = { 0x29058, 0 }, 2547*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_CORE_STICKY_RESET] = { 0x29058, 1 }, 2548*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AXI_S_STICKY_RESET] = { 0x29058, 2 }, 2549*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AXI_S_RESET] = { 0x29058, 3 }, 2550*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AXI_M_STICKY_RESET] = { 0x29058, 4 }, 2551*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AXI_M_RESET] = { 0x29058, 5 }, 2552*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AUX_RESET] = { 0x29058, 6 }, 2553*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_AHB_RESET] = { 0x29058, 7 }, 2554*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_PHY_BCR] = { 0x29060 }, 2555*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1_PIPE_ARES] = { 0x29068, 2 }, 2556*844be6e2SKathiravan Thirumoorthy [GCC_PCIE1PHY_PHY_BCR] = { 0x2905c }, 2557*844be6e2SKathiravan Thirumoorthy [GCC_QRNG_AHB_ARES] = { 0x13024, 2 }, 2558*844be6e2SKathiravan Thirumoorthy [GCC_QRNG_BCR] = { 0x13020 }, 2559*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_2X_CORE_ARES] = { 0x1020, 2 }, 2560*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_AHB_MST_ARES] = { 0x1014, 2 }, 2561*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_AHB_SLV_ARES] = { 0x102c, 2 }, 2562*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_BCR] = { 0x1000 }, 2563*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_CORE_ARES] = { 0x1018, 2 }, 2564*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE0_ARES] = { 0x4020, 2 }, 2565*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE0_BCR] = { 0x4000 }, 2566*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE1_ARES] = { 0x5020, 2 }, 2567*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE1_BCR] = { 0x5000 }, 2568*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE2_ARES] = { 0x202c, 2 }, 2569*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE2_BCR] = { 0x2000 }, 2570*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE3_ARES] = { 0x2048, 2 }, 2571*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE3_BCR] = { 0x2030 }, 2572*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE4_ARES] = { 0x302c, 2 }, 2573*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE4_BCR] = { 0x3000 }, 2574*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE5_ARES] = { 0x3048, 2 }, 2575*844be6e2SKathiravan Thirumoorthy [GCC_QUPV3_WRAP_SE5_BCR] = { 0x3030 }, 2576*844be6e2SKathiravan Thirumoorthy [GCC_QUSB2_0_PHY_BCR] = { 0x2c068 }, 2577*844be6e2SKathiravan Thirumoorthy [GCC_SDCC1_AHB_ARES] = { 0x3303c, 2 }, 2578*844be6e2SKathiravan Thirumoorthy [GCC_SDCC1_APPS_ARES] = { 0x3302c, 2 }, 2579*844be6e2SKathiravan Thirumoorthy [GCC_SDCC1_ICE_CORE_ARES] = { 0x33034, 2 }, 2580*844be6e2SKathiravan Thirumoorthy [GCC_SDCC_BCR] = { 0x33000 }, 2581*844be6e2SKathiravan Thirumoorthy [GCC_TLMM_AHB_ARES] = { 0x3e004, 2 }, 2582*844be6e2SKathiravan Thirumoorthy [GCC_TLMM_ARES] = { 0x3e008, 2 }, 2583*844be6e2SKathiravan Thirumoorthy [GCC_TLMM_BCR] = { 0x3e000 }, 2584*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY0_AHB_ARES] = { 0x1704c, 2 }, 2585*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY0_BCR] = { 0x17044 }, 2586*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY0_SYS_ARES] = { 0x17048, 2 }, 2587*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY1_AHB_ARES] = { 0x1705c, 2 }, 2588*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY1_BCR] = { 0x17054 }, 2589*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY1_SYS_ARES] = { 0x17058, 2 }, 2590*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY2_AHB_ARES] = { 0x1706c, 2 }, 2591*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY2_BCR] = { 0x17064 }, 2592*844be6e2SKathiravan Thirumoorthy [GCC_UNIPHY2_SYS_ARES] = { 0x17068, 2 }, 2593*844be6e2SKathiravan Thirumoorthy [GCC_USB0_AUX_ARES] = { 0x2c04c, 2 }, 2594*844be6e2SKathiravan Thirumoorthy [GCC_USB0_MASTER_ARES] = { 0x2c044, 2 }, 2595*844be6e2SKathiravan Thirumoorthy [GCC_USB0_MOCK_UTMI_ARES] = { 0x2c050, 2 }, 2596*844be6e2SKathiravan Thirumoorthy [GCC_USB0_PHY_BCR] = { 0x2c06c }, 2597*844be6e2SKathiravan Thirumoorthy [GCC_USB0_PHY_CFG_AHB_ARES] = { 0x2c05c, 2 }, 2598*844be6e2SKathiravan Thirumoorthy [GCC_USB0_PIPE_ARES] = { 0x2c054, 2 }, 2599*844be6e2SKathiravan Thirumoorthy [GCC_USB0_SLEEP_ARES] = { 0x2c058, 2 }, 2600*844be6e2SKathiravan Thirumoorthy [GCC_USB3PHY_0_PHY_BCR] = { 0x2c070 }, 2601*844be6e2SKathiravan Thirumoorthy [GCC_USB_BCR] = { 0x2c000 }, 2602*844be6e2SKathiravan Thirumoorthy [GCC_QDSS_BCR] = { 0x2d000 }, 2603*844be6e2SKathiravan Thirumoorthy }; 2604*844be6e2SKathiravan Thirumoorthy 2605*844be6e2SKathiravan Thirumoorthy static const struct of_device_id gcc_ipq5210_match_table[] = { 2606*844be6e2SKathiravan Thirumoorthy { .compatible = "qcom,ipq5210-gcc" }, 2607*844be6e2SKathiravan Thirumoorthy { } 2608*844be6e2SKathiravan Thirumoorthy }; 2609*844be6e2SKathiravan Thirumoorthy MODULE_DEVICE_TABLE(of, gcc_ipq5210_match_table); 2610*844be6e2SKathiravan Thirumoorthy 2611*844be6e2SKathiravan Thirumoorthy static const struct regmap_config gcc_ipq5210_regmap_config = { 2612*844be6e2SKathiravan Thirumoorthy .reg_bits = 32, 2613*844be6e2SKathiravan Thirumoorthy .reg_stride = 4, 2614*844be6e2SKathiravan Thirumoorthy .val_bits = 32, 2615*844be6e2SKathiravan Thirumoorthy .max_register = 0x3f024, 2616*844be6e2SKathiravan Thirumoorthy .fast_io = true, 2617*844be6e2SKathiravan Thirumoorthy }; 2618*844be6e2SKathiravan Thirumoorthy 2619*844be6e2SKathiravan Thirumoorthy static struct clk_hw *gcc_ipq5210_hws[] = { 2620*844be6e2SKathiravan Thirumoorthy &gpll0_div2.hw, 2621*844be6e2SKathiravan Thirumoorthy &gcc_xo_div4_clk_src.hw, 2622*844be6e2SKathiravan Thirumoorthy &gcc_pon_tm_div_clk_src.hw, 2623*844be6e2SKathiravan Thirumoorthy }; 2624*844be6e2SKathiravan Thirumoorthy 2625*844be6e2SKathiravan Thirumoorthy static const struct qcom_cc_desc gcc_ipq5210_desc = { 2626*844be6e2SKathiravan Thirumoorthy .config = &gcc_ipq5210_regmap_config, 2627*844be6e2SKathiravan Thirumoorthy .clks = gcc_ipq5210_clocks, 2628*844be6e2SKathiravan Thirumoorthy .num_clks = ARRAY_SIZE(gcc_ipq5210_clocks), 2629*844be6e2SKathiravan Thirumoorthy .resets = gcc_ipq5210_resets, 2630*844be6e2SKathiravan Thirumoorthy .num_resets = ARRAY_SIZE(gcc_ipq5210_resets), 2631*844be6e2SKathiravan Thirumoorthy .clk_hws = gcc_ipq5210_hws, 2632*844be6e2SKathiravan Thirumoorthy .num_clk_hws = ARRAY_SIZE(gcc_ipq5210_hws), 2633*844be6e2SKathiravan Thirumoorthy }; 2634*844be6e2SKathiravan Thirumoorthy 2635*844be6e2SKathiravan Thirumoorthy static int gcc_ipq5210_probe(struct platform_device *pdev) 2636*844be6e2SKathiravan Thirumoorthy { 2637*844be6e2SKathiravan Thirumoorthy return qcom_cc_probe(pdev, &gcc_ipq5210_desc); 2638*844be6e2SKathiravan Thirumoorthy } 2639*844be6e2SKathiravan Thirumoorthy 2640*844be6e2SKathiravan Thirumoorthy static struct platform_driver gcc_ipq5210_driver = { 2641*844be6e2SKathiravan Thirumoorthy .probe = gcc_ipq5210_probe, 2642*844be6e2SKathiravan Thirumoorthy .driver = { 2643*844be6e2SKathiravan Thirumoorthy .name = "qcom,gcc-ipq5210", 2644*844be6e2SKathiravan Thirumoorthy .of_match_table = gcc_ipq5210_match_table, 2645*844be6e2SKathiravan Thirumoorthy }, 2646*844be6e2SKathiravan Thirumoorthy }; 2647*844be6e2SKathiravan Thirumoorthy 2648*844be6e2SKathiravan Thirumoorthy static int __init gcc_ipq5210_init(void) 2649*844be6e2SKathiravan Thirumoorthy { 2650*844be6e2SKathiravan Thirumoorthy return platform_driver_register(&gcc_ipq5210_driver); 2651*844be6e2SKathiravan Thirumoorthy } 2652*844be6e2SKathiravan Thirumoorthy core_initcall(gcc_ipq5210_init); 2653*844be6e2SKathiravan Thirumoorthy 2654*844be6e2SKathiravan Thirumoorthy static void __exit gcc_ipq5210_exit(void) 2655*844be6e2SKathiravan Thirumoorthy { 2656*844be6e2SKathiravan Thirumoorthy platform_driver_unregister(&gcc_ipq5210_driver); 2657*844be6e2SKathiravan Thirumoorthy } 2658*844be6e2SKathiravan Thirumoorthy module_exit(gcc_ipq5210_exit); 2659*844be6e2SKathiravan Thirumoorthy 2660*844be6e2SKathiravan Thirumoorthy MODULE_DESCRIPTION("QTI GCC IPQ5210 Driver"); 2661*844be6e2SKathiravan Thirumoorthy MODULE_LICENSE("GPL"); 2662