1*88174d5dSLuca Weiss // SPDX-License-Identifier: GPL-2.0-only 2*88174d5dSLuca Weiss /* 3*88174d5dSLuca Weiss * Copyright (c) 2023-2024, Qualcomm Innovation Center, Inc. All rights reserved. 4*88174d5dSLuca Weiss * Copyright (c) 2025, Luca Weiss <luca.weiss@fairphone.com> 5*88174d5dSLuca Weiss */ 6*88174d5dSLuca Weiss 7*88174d5dSLuca Weiss #include <linux/clk-provider.h> 8*88174d5dSLuca Weiss #include <linux/mod_devicetable.h> 9*88174d5dSLuca Weiss #include <linux/module.h> 10*88174d5dSLuca Weiss #include <linux/platform_device.h> 11*88174d5dSLuca Weiss #include <linux/regmap.h> 12*88174d5dSLuca Weiss 13*88174d5dSLuca Weiss #include <dt-bindings/clock/qcom,milos-gcc.h> 14*88174d5dSLuca Weiss 15*88174d5dSLuca Weiss #include "clk-alpha-pll.h" 16*88174d5dSLuca Weiss #include "clk-branch.h" 17*88174d5dSLuca Weiss #include "clk-rcg.h" 18*88174d5dSLuca Weiss #include "clk-regmap-divider.h" 19*88174d5dSLuca Weiss #include "clk-regmap-mux.h" 20*88174d5dSLuca Weiss #include "gdsc.h" 21*88174d5dSLuca Weiss #include "reset.h" 22*88174d5dSLuca Weiss 23*88174d5dSLuca Weiss /* Need to match the order of clocks in DT binding */ 24*88174d5dSLuca Weiss enum { 25*88174d5dSLuca Weiss DT_BI_TCXO, 26*88174d5dSLuca Weiss DT_SLEEP_CLK, 27*88174d5dSLuca Weiss DT_PCIE_0_PIPE, 28*88174d5dSLuca Weiss DT_PCIE_1_PIPE, 29*88174d5dSLuca Weiss DT_UFS_PHY_RX_SYMBOL_0, 30*88174d5dSLuca Weiss DT_UFS_PHY_RX_SYMBOL_1, 31*88174d5dSLuca Weiss DT_UFS_PHY_TX_SYMBOL_0, 32*88174d5dSLuca Weiss DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE, 33*88174d5dSLuca Weiss }; 34*88174d5dSLuca Weiss 35*88174d5dSLuca Weiss enum { 36*88174d5dSLuca Weiss P_BI_TCXO, 37*88174d5dSLuca Weiss P_GCC_GPLL0_OUT_EVEN, 38*88174d5dSLuca Weiss P_GCC_GPLL0_OUT_MAIN, 39*88174d5dSLuca Weiss P_GCC_GPLL0_OUT_ODD, 40*88174d5dSLuca Weiss P_GCC_GPLL2_OUT_MAIN, 41*88174d5dSLuca Weiss P_GCC_GPLL4_OUT_MAIN, 42*88174d5dSLuca Weiss P_GCC_GPLL6_OUT_MAIN, 43*88174d5dSLuca Weiss P_GCC_GPLL7_OUT_MAIN, 44*88174d5dSLuca Weiss P_GCC_GPLL9_OUT_MAIN, 45*88174d5dSLuca Weiss P_PCIE_0_PIPE_CLK, 46*88174d5dSLuca Weiss P_PCIE_1_PIPE_CLK, 47*88174d5dSLuca Weiss P_SLEEP_CLK, 48*88174d5dSLuca Weiss P_UFS_PHY_RX_SYMBOL_0_CLK, 49*88174d5dSLuca Weiss P_UFS_PHY_RX_SYMBOL_1_CLK, 50*88174d5dSLuca Weiss P_UFS_PHY_TX_SYMBOL_0_CLK, 51*88174d5dSLuca Weiss P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 52*88174d5dSLuca Weiss }; 53*88174d5dSLuca Weiss 54*88174d5dSLuca Weiss static struct clk_alpha_pll gcc_gpll0 = { 55*88174d5dSLuca Weiss .offset = 0x0, 56*88174d5dSLuca Weiss .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 57*88174d5dSLuca Weiss .clkr = { 58*88174d5dSLuca Weiss .enable_reg = 0x52020, 59*88174d5dSLuca Weiss .enable_mask = BIT(0), 60*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 61*88174d5dSLuca Weiss .name = "gcc_gpll0", 62*88174d5dSLuca Weiss .parent_data = &(const struct clk_parent_data) { 63*88174d5dSLuca Weiss .index = DT_BI_TCXO, 64*88174d5dSLuca Weiss }, 65*88174d5dSLuca Weiss .num_parents = 1, 66*88174d5dSLuca Weiss .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 67*88174d5dSLuca Weiss }, 68*88174d5dSLuca Weiss }, 69*88174d5dSLuca Weiss }; 70*88174d5dSLuca Weiss 71*88174d5dSLuca Weiss static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = { 72*88174d5dSLuca Weiss { 0x1, 2 }, 73*88174d5dSLuca Weiss { } 74*88174d5dSLuca Weiss }; 75*88174d5dSLuca Weiss 76*88174d5dSLuca Weiss static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = { 77*88174d5dSLuca Weiss .offset = 0x0, 78*88174d5dSLuca Weiss .post_div_shift = 10, 79*88174d5dSLuca Weiss .post_div_table = post_div_table_gcc_gpll0_out_even, 80*88174d5dSLuca Weiss .num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even), 81*88174d5dSLuca Weiss .width = 4, 82*88174d5dSLuca Weiss .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 83*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 84*88174d5dSLuca Weiss .name = "gcc_gpll0_out_even", 85*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 86*88174d5dSLuca Weiss &gcc_gpll0.clkr.hw, 87*88174d5dSLuca Weiss }, 88*88174d5dSLuca Weiss .num_parents = 1, 89*88174d5dSLuca Weiss .ops = &clk_alpha_pll_postdiv_lucid_ole_ops, 90*88174d5dSLuca Weiss }, 91*88174d5dSLuca Weiss }; 92*88174d5dSLuca Weiss 93*88174d5dSLuca Weiss static struct clk_alpha_pll gcc_gpll2 = { 94*88174d5dSLuca Weiss .offset = 0x2000, 95*88174d5dSLuca Weiss .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 96*88174d5dSLuca Weiss .clkr = { 97*88174d5dSLuca Weiss .enable_reg = 0x52020, 98*88174d5dSLuca Weiss .enable_mask = BIT(2), 99*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 100*88174d5dSLuca Weiss .name = "gcc_gpll2", 101*88174d5dSLuca Weiss .parent_data = &(const struct clk_parent_data) { 102*88174d5dSLuca Weiss .index = DT_BI_TCXO, 103*88174d5dSLuca Weiss }, 104*88174d5dSLuca Weiss .num_parents = 1, 105*88174d5dSLuca Weiss .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 106*88174d5dSLuca Weiss }, 107*88174d5dSLuca Weiss }, 108*88174d5dSLuca Weiss }; 109*88174d5dSLuca Weiss 110*88174d5dSLuca Weiss static struct clk_alpha_pll gcc_gpll4 = { 111*88174d5dSLuca Weiss .offset = 0x4000, 112*88174d5dSLuca Weiss .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 113*88174d5dSLuca Weiss .clkr = { 114*88174d5dSLuca Weiss .enable_reg = 0x52020, 115*88174d5dSLuca Weiss .enable_mask = BIT(4), 116*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 117*88174d5dSLuca Weiss .name = "gcc_gpll4", 118*88174d5dSLuca Weiss .parent_data = &(const struct clk_parent_data) { 119*88174d5dSLuca Weiss .index = DT_BI_TCXO, 120*88174d5dSLuca Weiss }, 121*88174d5dSLuca Weiss .num_parents = 1, 122*88174d5dSLuca Weiss .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 123*88174d5dSLuca Weiss }, 124*88174d5dSLuca Weiss }, 125*88174d5dSLuca Weiss }; 126*88174d5dSLuca Weiss 127*88174d5dSLuca Weiss static struct clk_alpha_pll gcc_gpll6 = { 128*88174d5dSLuca Weiss .offset = 0x6000, 129*88174d5dSLuca Weiss .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 130*88174d5dSLuca Weiss .clkr = { 131*88174d5dSLuca Weiss .enable_reg = 0x52020, 132*88174d5dSLuca Weiss .enable_mask = BIT(6), 133*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 134*88174d5dSLuca Weiss .name = "gcc_gpll6", 135*88174d5dSLuca Weiss .parent_data = &(const struct clk_parent_data) { 136*88174d5dSLuca Weiss .index = DT_BI_TCXO, 137*88174d5dSLuca Weiss }, 138*88174d5dSLuca Weiss .num_parents = 1, 139*88174d5dSLuca Weiss .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 140*88174d5dSLuca Weiss }, 141*88174d5dSLuca Weiss }, 142*88174d5dSLuca Weiss }; 143*88174d5dSLuca Weiss 144*88174d5dSLuca Weiss static struct clk_alpha_pll gcc_gpll7 = { 145*88174d5dSLuca Weiss .offset = 0x7000, 146*88174d5dSLuca Weiss .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 147*88174d5dSLuca Weiss .clkr = { 148*88174d5dSLuca Weiss .enable_reg = 0x52020, 149*88174d5dSLuca Weiss .enable_mask = BIT(7), 150*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 151*88174d5dSLuca Weiss .name = "gcc_gpll7", 152*88174d5dSLuca Weiss .parent_data = &(const struct clk_parent_data) { 153*88174d5dSLuca Weiss .index = DT_BI_TCXO, 154*88174d5dSLuca Weiss }, 155*88174d5dSLuca Weiss .num_parents = 1, 156*88174d5dSLuca Weiss .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 157*88174d5dSLuca Weiss }, 158*88174d5dSLuca Weiss }, 159*88174d5dSLuca Weiss }; 160*88174d5dSLuca Weiss 161*88174d5dSLuca Weiss static struct clk_alpha_pll gcc_gpll9 = { 162*88174d5dSLuca Weiss .offset = 0x9000, 163*88174d5dSLuca Weiss .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 164*88174d5dSLuca Weiss .clkr = { 165*88174d5dSLuca Weiss .enable_reg = 0x52020, 166*88174d5dSLuca Weiss .enable_mask = BIT(9), 167*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 168*88174d5dSLuca Weiss .name = "gcc_gpll9", 169*88174d5dSLuca Weiss .parent_data = &(const struct clk_parent_data) { 170*88174d5dSLuca Weiss .index = DT_BI_TCXO, 171*88174d5dSLuca Weiss }, 172*88174d5dSLuca Weiss .num_parents = 1, 173*88174d5dSLuca Weiss .ops = &clk_alpha_pll_fixed_lucid_ole_ops, 174*88174d5dSLuca Weiss }, 175*88174d5dSLuca Weiss }, 176*88174d5dSLuca Weiss }; 177*88174d5dSLuca Weiss 178*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_0[] = { 179*88174d5dSLuca Weiss { P_BI_TCXO, 0 }, 180*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_MAIN, 1 }, 181*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_EVEN, 6 }, 182*88174d5dSLuca Weiss }; 183*88174d5dSLuca Weiss 184*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_0[] = { 185*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 186*88174d5dSLuca Weiss { .hw = &gcc_gpll0.clkr.hw }, 187*88174d5dSLuca Weiss { .hw = &gcc_gpll0_out_even.clkr.hw }, 188*88174d5dSLuca Weiss }; 189*88174d5dSLuca Weiss 190*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_1[] = { 191*88174d5dSLuca Weiss { P_BI_TCXO, 0 }, 192*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_MAIN, 1 }, 193*88174d5dSLuca Weiss { P_SLEEP_CLK, 5 }, 194*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_EVEN, 6 }, 195*88174d5dSLuca Weiss }; 196*88174d5dSLuca Weiss 197*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_1[] = { 198*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 199*88174d5dSLuca Weiss { .hw = &gcc_gpll0.clkr.hw }, 200*88174d5dSLuca Weiss { .index = DT_SLEEP_CLK }, 201*88174d5dSLuca Weiss { .hw = &gcc_gpll0_out_even.clkr.hw }, 202*88174d5dSLuca Weiss }; 203*88174d5dSLuca Weiss 204*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_2[] = { 205*88174d5dSLuca Weiss { P_BI_TCXO, 0 }, 206*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_MAIN, 1 }, 207*88174d5dSLuca Weiss { P_GCC_GPLL4_OUT_MAIN, 5 }, 208*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_EVEN, 6 }, 209*88174d5dSLuca Weiss }; 210*88174d5dSLuca Weiss 211*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_2[] = { 212*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 213*88174d5dSLuca Weiss { .hw = &gcc_gpll0.clkr.hw }, 214*88174d5dSLuca Weiss { .hw = &gcc_gpll4.clkr.hw }, 215*88174d5dSLuca Weiss { .hw = &gcc_gpll0_out_even.clkr.hw }, 216*88174d5dSLuca Weiss }; 217*88174d5dSLuca Weiss 218*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_3[] = { 219*88174d5dSLuca Weiss { P_BI_TCXO, 0 }, 220*88174d5dSLuca Weiss { P_SLEEP_CLK, 5 }, 221*88174d5dSLuca Weiss }; 222*88174d5dSLuca Weiss 223*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_3[] = { 224*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 225*88174d5dSLuca Weiss { .index = DT_SLEEP_CLK }, 226*88174d5dSLuca Weiss }; 227*88174d5dSLuca Weiss 228*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_4[] = { 229*88174d5dSLuca Weiss { P_BI_TCXO, 0 }, 230*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_MAIN, 1 }, 231*88174d5dSLuca Weiss { P_GCC_GPLL6_OUT_MAIN, 2 }, 232*88174d5dSLuca Weiss { P_GCC_GPLL7_OUT_MAIN, 3 }, 233*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_EVEN, 6 }, 234*88174d5dSLuca Weiss }; 235*88174d5dSLuca Weiss 236*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_4[] = { 237*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 238*88174d5dSLuca Weiss { .hw = &gcc_gpll0.clkr.hw }, 239*88174d5dSLuca Weiss { .hw = &gcc_gpll6.clkr.hw }, 240*88174d5dSLuca Weiss { .hw = &gcc_gpll7.clkr.hw }, 241*88174d5dSLuca Weiss { .hw = &gcc_gpll0_out_even.clkr.hw }, 242*88174d5dSLuca Weiss }; 243*88174d5dSLuca Weiss 244*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_5[] = { 245*88174d5dSLuca Weiss { P_BI_TCXO, 0 }, 246*88174d5dSLuca Weiss }; 247*88174d5dSLuca Weiss 248*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_5[] = { 249*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 250*88174d5dSLuca Weiss }; 251*88174d5dSLuca Weiss 252*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_6[] = { 253*88174d5dSLuca Weiss { P_PCIE_0_PIPE_CLK, 0 }, 254*88174d5dSLuca Weiss { P_BI_TCXO, 2 }, 255*88174d5dSLuca Weiss }; 256*88174d5dSLuca Weiss 257*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_6[] = { 258*88174d5dSLuca Weiss { .index = DT_PCIE_0_PIPE }, 259*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 260*88174d5dSLuca Weiss }; 261*88174d5dSLuca Weiss 262*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_7[] = { 263*88174d5dSLuca Weiss { P_PCIE_1_PIPE_CLK, 0 }, 264*88174d5dSLuca Weiss { P_BI_TCXO, 2 }, 265*88174d5dSLuca Weiss }; 266*88174d5dSLuca Weiss 267*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_7[] = { 268*88174d5dSLuca Weiss { .index = DT_PCIE_1_PIPE }, 269*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 270*88174d5dSLuca Weiss }; 271*88174d5dSLuca Weiss 272*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_8[] = { 273*88174d5dSLuca Weiss { P_BI_TCXO, 0 }, 274*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_MAIN, 1 }, 275*88174d5dSLuca Weiss { P_GCC_GPLL7_OUT_MAIN, 2 }, 276*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_EVEN, 6 }, 277*88174d5dSLuca Weiss }; 278*88174d5dSLuca Weiss 279*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_8[] = { 280*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 281*88174d5dSLuca Weiss { .hw = &gcc_gpll0.clkr.hw }, 282*88174d5dSLuca Weiss { .hw = &gcc_gpll7.clkr.hw }, 283*88174d5dSLuca Weiss { .hw = &gcc_gpll0_out_even.clkr.hw }, 284*88174d5dSLuca Weiss }; 285*88174d5dSLuca Weiss 286*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_9[] = { 287*88174d5dSLuca Weiss { P_BI_TCXO, 0 }, 288*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_MAIN, 1 }, 289*88174d5dSLuca Weiss { P_GCC_GPLL6_OUT_MAIN, 2 }, 290*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_ODD, 3 }, 291*88174d5dSLuca Weiss { P_GCC_GPLL2_OUT_MAIN, 4 }, 292*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_EVEN, 6 }, 293*88174d5dSLuca Weiss }; 294*88174d5dSLuca Weiss 295*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_9[] = { 296*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 297*88174d5dSLuca Weiss { .hw = &gcc_gpll0.clkr.hw }, 298*88174d5dSLuca Weiss { .hw = &gcc_gpll6.clkr.hw }, 299*88174d5dSLuca Weiss { .hw = &gcc_gpll0.clkr.hw }, 300*88174d5dSLuca Weiss { .hw = &gcc_gpll2.clkr.hw }, 301*88174d5dSLuca Weiss { .hw = &gcc_gpll0_out_even.clkr.hw }, 302*88174d5dSLuca Weiss }; 303*88174d5dSLuca Weiss 304*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_10[] = { 305*88174d5dSLuca Weiss { P_BI_TCXO, 0 }, 306*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_MAIN, 1 }, 307*88174d5dSLuca Weiss { P_GCC_GPLL6_OUT_MAIN, 2 }, 308*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_ODD, 3 }, 309*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_EVEN, 6 }, 310*88174d5dSLuca Weiss }; 311*88174d5dSLuca Weiss 312*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_10[] = { 313*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 314*88174d5dSLuca Weiss { .hw = &gcc_gpll0.clkr.hw }, 315*88174d5dSLuca Weiss { .hw = &gcc_gpll6.clkr.hw }, 316*88174d5dSLuca Weiss { .hw = &gcc_gpll0.clkr.hw }, 317*88174d5dSLuca Weiss { .hw = &gcc_gpll0_out_even.clkr.hw }, 318*88174d5dSLuca Weiss }; 319*88174d5dSLuca Weiss 320*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_11[] = { 321*88174d5dSLuca Weiss { P_BI_TCXO, 0 }, 322*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_MAIN, 1 }, 323*88174d5dSLuca Weiss { P_GCC_GPLL9_OUT_MAIN, 2 }, 324*88174d5dSLuca Weiss { P_GCC_GPLL4_OUT_MAIN, 5 }, 325*88174d5dSLuca Weiss { P_GCC_GPLL0_OUT_EVEN, 6 }, 326*88174d5dSLuca Weiss }; 327*88174d5dSLuca Weiss 328*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_11[] = { 329*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 330*88174d5dSLuca Weiss { .hw = &gcc_gpll0.clkr.hw }, 331*88174d5dSLuca Weiss { .hw = &gcc_gpll9.clkr.hw }, 332*88174d5dSLuca Weiss { .hw = &gcc_gpll4.clkr.hw }, 333*88174d5dSLuca Weiss { .hw = &gcc_gpll0_out_even.clkr.hw }, 334*88174d5dSLuca Weiss }; 335*88174d5dSLuca Weiss 336*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_12[] = { 337*88174d5dSLuca Weiss { P_UFS_PHY_RX_SYMBOL_0_CLK, 0 }, 338*88174d5dSLuca Weiss { P_BI_TCXO, 2 }, 339*88174d5dSLuca Weiss }; 340*88174d5dSLuca Weiss 341*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_12[] = { 342*88174d5dSLuca Weiss { .index = DT_UFS_PHY_RX_SYMBOL_0 }, 343*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 344*88174d5dSLuca Weiss }; 345*88174d5dSLuca Weiss 346*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_13[] = { 347*88174d5dSLuca Weiss { P_UFS_PHY_RX_SYMBOL_1_CLK, 0 }, 348*88174d5dSLuca Weiss { P_BI_TCXO, 2 }, 349*88174d5dSLuca Weiss }; 350*88174d5dSLuca Weiss 351*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_13[] = { 352*88174d5dSLuca Weiss { .index = DT_UFS_PHY_RX_SYMBOL_1 }, 353*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 354*88174d5dSLuca Weiss }; 355*88174d5dSLuca Weiss 356*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_14[] = { 357*88174d5dSLuca Weiss { P_UFS_PHY_TX_SYMBOL_0_CLK, 0 }, 358*88174d5dSLuca Weiss { P_BI_TCXO, 2 }, 359*88174d5dSLuca Weiss }; 360*88174d5dSLuca Weiss 361*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_14[] = { 362*88174d5dSLuca Weiss { .index = DT_UFS_PHY_TX_SYMBOL_0 }, 363*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 364*88174d5dSLuca Weiss }; 365*88174d5dSLuca Weiss 366*88174d5dSLuca Weiss static const struct parent_map gcc_parent_map_15[] = { 367*88174d5dSLuca Weiss { P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 0 }, 368*88174d5dSLuca Weiss { P_BI_TCXO, 2 }, 369*88174d5dSLuca Weiss }; 370*88174d5dSLuca Weiss 371*88174d5dSLuca Weiss static const struct clk_parent_data gcc_parent_data_15[] = { 372*88174d5dSLuca Weiss { .index = DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE }, 373*88174d5dSLuca Weiss { .index = DT_BI_TCXO }, 374*88174d5dSLuca Weiss }; 375*88174d5dSLuca Weiss 376*88174d5dSLuca Weiss static struct clk_regmap_mux gcc_pcie_0_pipe_clk_src = { 377*88174d5dSLuca Weiss .reg = 0x6b070, 378*88174d5dSLuca Weiss .shift = 0, 379*88174d5dSLuca Weiss .width = 2, 380*88174d5dSLuca Weiss .parent_map = gcc_parent_map_6, 381*88174d5dSLuca Weiss .clkr = { 382*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 383*88174d5dSLuca Weiss .name = "gcc_pcie_0_pipe_clk_src", 384*88174d5dSLuca Weiss .parent_data = gcc_parent_data_6, 385*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_6), 386*88174d5dSLuca Weiss .ops = &clk_regmap_mux_closest_ops, 387*88174d5dSLuca Weiss }, 388*88174d5dSLuca Weiss }, 389*88174d5dSLuca Weiss }; 390*88174d5dSLuca Weiss 391*88174d5dSLuca Weiss static struct clk_regmap_mux gcc_pcie_1_pipe_clk_src = { 392*88174d5dSLuca Weiss .reg = 0x9006c, 393*88174d5dSLuca Weiss .shift = 0, 394*88174d5dSLuca Weiss .width = 2, 395*88174d5dSLuca Weiss .parent_map = gcc_parent_map_7, 396*88174d5dSLuca Weiss .clkr = { 397*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 398*88174d5dSLuca Weiss .name = "gcc_pcie_1_pipe_clk_src", 399*88174d5dSLuca Weiss .parent_data = gcc_parent_data_7, 400*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_7), 401*88174d5dSLuca Weiss .ops = &clk_regmap_mux_closest_ops, 402*88174d5dSLuca Weiss }, 403*88174d5dSLuca Weiss }, 404*88174d5dSLuca Weiss }; 405*88174d5dSLuca Weiss 406*88174d5dSLuca Weiss static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src = { 407*88174d5dSLuca Weiss .reg = 0x77064, 408*88174d5dSLuca Weiss .shift = 0, 409*88174d5dSLuca Weiss .width = 2, 410*88174d5dSLuca Weiss .parent_map = gcc_parent_map_12, 411*88174d5dSLuca Weiss .clkr = { 412*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 413*88174d5dSLuca Weiss .name = "gcc_ufs_phy_rx_symbol_0_clk_src", 414*88174d5dSLuca Weiss .parent_data = gcc_parent_data_12, 415*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_12), 416*88174d5dSLuca Weiss .ops = &clk_regmap_mux_closest_ops, 417*88174d5dSLuca Weiss }, 418*88174d5dSLuca Weiss }, 419*88174d5dSLuca Weiss }; 420*88174d5dSLuca Weiss 421*88174d5dSLuca Weiss static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src = { 422*88174d5dSLuca Weiss .reg = 0x770e0, 423*88174d5dSLuca Weiss .shift = 0, 424*88174d5dSLuca Weiss .width = 2, 425*88174d5dSLuca Weiss .parent_map = gcc_parent_map_13, 426*88174d5dSLuca Weiss .clkr = { 427*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 428*88174d5dSLuca Weiss .name = "gcc_ufs_phy_rx_symbol_1_clk_src", 429*88174d5dSLuca Weiss .parent_data = gcc_parent_data_13, 430*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_13), 431*88174d5dSLuca Weiss .ops = &clk_regmap_mux_closest_ops, 432*88174d5dSLuca Weiss }, 433*88174d5dSLuca Weiss }, 434*88174d5dSLuca Weiss }; 435*88174d5dSLuca Weiss 436*88174d5dSLuca Weiss static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src = { 437*88174d5dSLuca Weiss .reg = 0x77054, 438*88174d5dSLuca Weiss .shift = 0, 439*88174d5dSLuca Weiss .width = 2, 440*88174d5dSLuca Weiss .parent_map = gcc_parent_map_14, 441*88174d5dSLuca Weiss .clkr = { 442*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 443*88174d5dSLuca Weiss .name = "gcc_ufs_phy_tx_symbol_0_clk_src", 444*88174d5dSLuca Weiss .parent_data = gcc_parent_data_14, 445*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_14), 446*88174d5dSLuca Weiss .ops = &clk_regmap_mux_closest_ops, 447*88174d5dSLuca Weiss }, 448*88174d5dSLuca Weiss }, 449*88174d5dSLuca Weiss }; 450*88174d5dSLuca Weiss 451*88174d5dSLuca Weiss static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = { 452*88174d5dSLuca Weiss .reg = 0x3906c, 453*88174d5dSLuca Weiss .shift = 0, 454*88174d5dSLuca Weiss .width = 2, 455*88174d5dSLuca Weiss .parent_map = gcc_parent_map_15, 456*88174d5dSLuca Weiss .clkr = { 457*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 458*88174d5dSLuca Weiss .name = "gcc_usb3_prim_phy_pipe_clk_src", 459*88174d5dSLuca Weiss .parent_data = gcc_parent_data_15, 460*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_15), 461*88174d5dSLuca Weiss .ops = &clk_regmap_mux_closest_ops, 462*88174d5dSLuca Weiss }, 463*88174d5dSLuca Weiss }, 464*88174d5dSLuca Weiss }; 465*88174d5dSLuca Weiss 466*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = { 467*88174d5dSLuca Weiss F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0), 468*88174d5dSLuca Weiss F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 469*88174d5dSLuca Weiss F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0), 470*88174d5dSLuca Weiss { } 471*88174d5dSLuca Weiss }; 472*88174d5dSLuca Weiss 473*88174d5dSLuca Weiss static struct clk_rcg2 gcc_gp1_clk_src = { 474*88174d5dSLuca Weiss .cmd_rcgr = 0x64004, 475*88174d5dSLuca Weiss .mnd_width = 16, 476*88174d5dSLuca Weiss .hid_width = 5, 477*88174d5dSLuca Weiss .parent_map = gcc_parent_map_1, 478*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_gp1_clk_src, 479*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 480*88174d5dSLuca Weiss .name = "gcc_gp1_clk_src", 481*88174d5dSLuca Weiss .parent_data = gcc_parent_data_1, 482*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_1), 483*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 484*88174d5dSLuca Weiss }, 485*88174d5dSLuca Weiss }; 486*88174d5dSLuca Weiss 487*88174d5dSLuca Weiss static struct clk_rcg2 gcc_gp2_clk_src = { 488*88174d5dSLuca Weiss .cmd_rcgr = 0x65004, 489*88174d5dSLuca Weiss .mnd_width = 16, 490*88174d5dSLuca Weiss .hid_width = 5, 491*88174d5dSLuca Weiss .parent_map = gcc_parent_map_1, 492*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_gp1_clk_src, 493*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 494*88174d5dSLuca Weiss .name = "gcc_gp2_clk_src", 495*88174d5dSLuca Weiss .parent_data = gcc_parent_data_1, 496*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_1), 497*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 498*88174d5dSLuca Weiss }, 499*88174d5dSLuca Weiss }; 500*88174d5dSLuca Weiss 501*88174d5dSLuca Weiss static struct clk_rcg2 gcc_gp3_clk_src = { 502*88174d5dSLuca Weiss .cmd_rcgr = 0x66004, 503*88174d5dSLuca Weiss .mnd_width = 16, 504*88174d5dSLuca Weiss .hid_width = 5, 505*88174d5dSLuca Weiss .parent_map = gcc_parent_map_1, 506*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_gp1_clk_src, 507*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 508*88174d5dSLuca Weiss .name = "gcc_gp3_clk_src", 509*88174d5dSLuca Weiss .parent_data = gcc_parent_data_1, 510*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_1), 511*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 512*88174d5dSLuca Weiss }, 513*88174d5dSLuca Weiss }; 514*88174d5dSLuca Weiss 515*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = { 516*88174d5dSLuca Weiss F(19200000, P_BI_TCXO, 1, 0, 0), 517*88174d5dSLuca Weiss { } 518*88174d5dSLuca Weiss }; 519*88174d5dSLuca Weiss 520*88174d5dSLuca Weiss static struct clk_rcg2 gcc_pcie_0_aux_clk_src = { 521*88174d5dSLuca Weiss .cmd_rcgr = 0x6b074, 522*88174d5dSLuca Weiss .mnd_width = 16, 523*88174d5dSLuca Weiss .hid_width = 5, 524*88174d5dSLuca Weiss .parent_map = gcc_parent_map_3, 525*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 526*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 527*88174d5dSLuca Weiss .name = "gcc_pcie_0_aux_clk_src", 528*88174d5dSLuca Weiss .parent_data = gcc_parent_data_3, 529*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_3), 530*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 531*88174d5dSLuca Weiss }, 532*88174d5dSLuca Weiss }; 533*88174d5dSLuca Weiss 534*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = { 535*88174d5dSLuca Weiss F(19200000, P_BI_TCXO, 1, 0, 0), 536*88174d5dSLuca Weiss F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 537*88174d5dSLuca Weiss { } 538*88174d5dSLuca Weiss }; 539*88174d5dSLuca Weiss 540*88174d5dSLuca Weiss static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = { 541*88174d5dSLuca Weiss .cmd_rcgr = 0x6b058, 542*88174d5dSLuca Weiss .mnd_width = 0, 543*88174d5dSLuca Weiss .hid_width = 5, 544*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 545*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src, 546*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 547*88174d5dSLuca Weiss .name = "gcc_pcie_0_phy_rchng_clk_src", 548*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 549*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 550*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 551*88174d5dSLuca Weiss }, 552*88174d5dSLuca Weiss }; 553*88174d5dSLuca Weiss 554*88174d5dSLuca Weiss static struct clk_rcg2 gcc_pcie_1_aux_clk_src = { 555*88174d5dSLuca Weiss .cmd_rcgr = 0x90070, 556*88174d5dSLuca Weiss .mnd_width = 16, 557*88174d5dSLuca Weiss .hid_width = 5, 558*88174d5dSLuca Weiss .parent_map = gcc_parent_map_3, 559*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 560*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 561*88174d5dSLuca Weiss .name = "gcc_pcie_1_aux_clk_src", 562*88174d5dSLuca Weiss .parent_data = gcc_parent_data_3, 563*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_3), 564*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 565*88174d5dSLuca Weiss }, 566*88174d5dSLuca Weiss }; 567*88174d5dSLuca Weiss 568*88174d5dSLuca Weiss static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = { 569*88174d5dSLuca Weiss .cmd_rcgr = 0x90054, 570*88174d5dSLuca Weiss .mnd_width = 0, 571*88174d5dSLuca Weiss .hid_width = 5, 572*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 573*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src, 574*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 575*88174d5dSLuca Weiss .name = "gcc_pcie_1_phy_rchng_clk_src", 576*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 577*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 578*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 579*88174d5dSLuca Weiss }, 580*88174d5dSLuca Weiss }; 581*88174d5dSLuca Weiss 582*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = { 583*88174d5dSLuca Weiss F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0), 584*88174d5dSLuca Weiss { } 585*88174d5dSLuca Weiss }; 586*88174d5dSLuca Weiss 587*88174d5dSLuca Weiss static struct clk_rcg2 gcc_pdm2_clk_src = { 588*88174d5dSLuca Weiss .cmd_rcgr = 0x33010, 589*88174d5dSLuca Weiss .mnd_width = 0, 590*88174d5dSLuca Weiss .hid_width = 5, 591*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 592*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_pdm2_clk_src, 593*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 594*88174d5dSLuca Weiss .name = "gcc_pdm2_clk_src", 595*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 596*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 597*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 598*88174d5dSLuca Weiss }, 599*88174d5dSLuca Weiss }; 600*88174d5dSLuca Weiss 601*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_qupv3_wrap0_qspi_ref_clk_src[] = { 602*88174d5dSLuca Weiss F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625), 603*88174d5dSLuca Weiss F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625), 604*88174d5dSLuca Weiss F(19200000, P_BI_TCXO, 1, 0, 0), 605*88174d5dSLuca Weiss F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625), 606*88174d5dSLuca Weiss F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75), 607*88174d5dSLuca Weiss F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25), 608*88174d5dSLuca Weiss F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375), 609*88174d5dSLuca Weiss F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75), 610*88174d5dSLuca Weiss F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 611*88174d5dSLuca Weiss F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15), 612*88174d5dSLuca Weiss F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25), 613*88174d5dSLuca Weiss F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 614*88174d5dSLuca Weiss F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375), 615*88174d5dSLuca Weiss F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75), 616*88174d5dSLuca Weiss F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625), 617*88174d5dSLuca Weiss F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0), 618*88174d5dSLuca Weiss F(150000000, P_GCC_GPLL0_OUT_EVEN, 2, 0, 0), 619*88174d5dSLuca Weiss F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0), 620*88174d5dSLuca Weiss { } 621*88174d5dSLuca Weiss }; 622*88174d5dSLuca Weiss 623*88174d5dSLuca Weiss static struct clk_init_data gcc_qupv3_wrap0_qspi_ref_clk_src_init = { 624*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_qspi_ref_clk_src", 625*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 626*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 627*88174d5dSLuca Weiss .ops = &clk_rcg2_ops, 628*88174d5dSLuca Weiss }; 629*88174d5dSLuca Weiss 630*88174d5dSLuca Weiss static struct clk_rcg2 gcc_qupv3_wrap0_qspi_ref_clk_src = { 631*88174d5dSLuca Weiss .cmd_rcgr = 0x18768, 632*88174d5dSLuca Weiss .mnd_width = 16, 633*88174d5dSLuca Weiss .hid_width = 5, 634*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 635*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_qupv3_wrap0_qspi_ref_clk_src, 636*88174d5dSLuca Weiss .clkr.hw.init = &gcc_qupv3_wrap0_qspi_ref_clk_src_init, 637*88174d5dSLuca Weiss }; 638*88174d5dSLuca Weiss 639*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = { 640*88174d5dSLuca Weiss F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625), 641*88174d5dSLuca Weiss F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625), 642*88174d5dSLuca Weiss F(19200000, P_BI_TCXO, 1, 0, 0), 643*88174d5dSLuca Weiss F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625), 644*88174d5dSLuca Weiss F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75), 645*88174d5dSLuca Weiss F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25), 646*88174d5dSLuca Weiss F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375), 647*88174d5dSLuca Weiss F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75), 648*88174d5dSLuca Weiss F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 649*88174d5dSLuca Weiss F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15), 650*88174d5dSLuca Weiss F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25), 651*88174d5dSLuca Weiss F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 652*88174d5dSLuca Weiss F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375), 653*88174d5dSLuca Weiss F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75), 654*88174d5dSLuca Weiss F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625), 655*88174d5dSLuca Weiss F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0), 656*88174d5dSLuca Weiss { } 657*88174d5dSLuca Weiss }; 658*88174d5dSLuca Weiss 659*88174d5dSLuca Weiss static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = { 660*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_s0_clk_src", 661*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 662*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 663*88174d5dSLuca Weiss .ops = &clk_rcg2_ops, 664*88174d5dSLuca Weiss }; 665*88174d5dSLuca Weiss 666*88174d5dSLuca Weiss static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = { 667*88174d5dSLuca Weiss .cmd_rcgr = 0x18010, 668*88174d5dSLuca Weiss .mnd_width = 16, 669*88174d5dSLuca Weiss .hid_width = 5, 670*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 671*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 672*88174d5dSLuca Weiss .clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init, 673*88174d5dSLuca Weiss }; 674*88174d5dSLuca Weiss 675*88174d5dSLuca Weiss static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = { 676*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_s1_clk_src", 677*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 678*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 679*88174d5dSLuca Weiss .ops = &clk_rcg2_ops, 680*88174d5dSLuca Weiss }; 681*88174d5dSLuca Weiss 682*88174d5dSLuca Weiss static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = { 683*88174d5dSLuca Weiss .cmd_rcgr = 0x18148, 684*88174d5dSLuca Weiss .mnd_width = 16, 685*88174d5dSLuca Weiss .hid_width = 5, 686*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 687*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 688*88174d5dSLuca Weiss .clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init, 689*88174d5dSLuca Weiss }; 690*88174d5dSLuca Weiss 691*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s3_clk_src[] = { 692*88174d5dSLuca Weiss F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625), 693*88174d5dSLuca Weiss F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625), 694*88174d5dSLuca Weiss F(19200000, P_BI_TCXO, 1, 0, 0), 695*88174d5dSLuca Weiss F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625), 696*88174d5dSLuca Weiss F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75), 697*88174d5dSLuca Weiss F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25), 698*88174d5dSLuca Weiss F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375), 699*88174d5dSLuca Weiss F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75), 700*88174d5dSLuca Weiss F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 701*88174d5dSLuca Weiss F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15), 702*88174d5dSLuca Weiss F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25), 703*88174d5dSLuca Weiss F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0), 704*88174d5dSLuca Weiss { } 705*88174d5dSLuca Weiss }; 706*88174d5dSLuca Weiss 707*88174d5dSLuca Weiss static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = { 708*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_s3_clk_src", 709*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 710*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 711*88174d5dSLuca Weiss .ops = &clk_rcg2_ops, 712*88174d5dSLuca Weiss }; 713*88174d5dSLuca Weiss 714*88174d5dSLuca Weiss static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = { 715*88174d5dSLuca Weiss .cmd_rcgr = 0x18290, 716*88174d5dSLuca Weiss .mnd_width = 16, 717*88174d5dSLuca Weiss .hid_width = 5, 718*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 719*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_qupv3_wrap0_s3_clk_src, 720*88174d5dSLuca Weiss .clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init, 721*88174d5dSLuca Weiss }; 722*88174d5dSLuca Weiss 723*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s4_clk_src[] = { 724*88174d5dSLuca Weiss F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625), 725*88174d5dSLuca Weiss F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625), 726*88174d5dSLuca Weiss F(19200000, P_BI_TCXO, 1, 0, 0), 727*88174d5dSLuca Weiss F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625), 728*88174d5dSLuca Weiss F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75), 729*88174d5dSLuca Weiss F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25), 730*88174d5dSLuca Weiss F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375), 731*88174d5dSLuca Weiss F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75), 732*88174d5dSLuca Weiss F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15), 733*88174d5dSLuca Weiss F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25), 734*88174d5dSLuca Weiss F(128000000, P_GCC_GPLL6_OUT_MAIN, 3, 0, 0), 735*88174d5dSLuca Weiss { } 736*88174d5dSLuca Weiss }; 737*88174d5dSLuca Weiss 738*88174d5dSLuca Weiss static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = { 739*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_s4_clk_src", 740*88174d5dSLuca Weiss .parent_data = gcc_parent_data_4, 741*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_4), 742*88174d5dSLuca Weiss .ops = &clk_rcg2_ops, 743*88174d5dSLuca Weiss }; 744*88174d5dSLuca Weiss 745*88174d5dSLuca Weiss static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = { 746*88174d5dSLuca Weiss .cmd_rcgr = 0x183c8, 747*88174d5dSLuca Weiss .mnd_width = 16, 748*88174d5dSLuca Weiss .hid_width = 5, 749*88174d5dSLuca Weiss .parent_map = gcc_parent_map_4, 750*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_qupv3_wrap0_s4_clk_src, 751*88174d5dSLuca Weiss .clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init, 752*88174d5dSLuca Weiss }; 753*88174d5dSLuca Weiss 754*88174d5dSLuca Weiss static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = { 755*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_s5_clk_src", 756*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 757*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 758*88174d5dSLuca Weiss .ops = &clk_rcg2_ops, 759*88174d5dSLuca Weiss }; 760*88174d5dSLuca Weiss 761*88174d5dSLuca Weiss static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = { 762*88174d5dSLuca Weiss .cmd_rcgr = 0x18500, 763*88174d5dSLuca Weiss .mnd_width = 16, 764*88174d5dSLuca Weiss .hid_width = 5, 765*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 766*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_qupv3_wrap0_s3_clk_src, 767*88174d5dSLuca Weiss .clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init, 768*88174d5dSLuca Weiss }; 769*88174d5dSLuca Weiss 770*88174d5dSLuca Weiss static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = { 771*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_s6_clk_src", 772*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 773*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 774*88174d5dSLuca Weiss .ops = &clk_rcg2_ops, 775*88174d5dSLuca Weiss }; 776*88174d5dSLuca Weiss 777*88174d5dSLuca Weiss static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = { 778*88174d5dSLuca Weiss .cmd_rcgr = 0x18638, 779*88174d5dSLuca Weiss .mnd_width = 16, 780*88174d5dSLuca Weiss .hid_width = 5, 781*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 782*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_qupv3_wrap0_s3_clk_src, 783*88174d5dSLuca Weiss .clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init, 784*88174d5dSLuca Weiss }; 785*88174d5dSLuca Weiss 786*88174d5dSLuca Weiss static struct clk_init_data gcc_qupv3_wrap1_qspi_ref_clk_src_init = { 787*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_qspi_ref_clk_src", 788*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 789*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 790*88174d5dSLuca Weiss .ops = &clk_rcg2_ops, 791*88174d5dSLuca Weiss }; 792*88174d5dSLuca Weiss 793*88174d5dSLuca Weiss static struct clk_rcg2 gcc_qupv3_wrap1_qspi_ref_clk_src = { 794*88174d5dSLuca Weiss .cmd_rcgr = 0x1e768, 795*88174d5dSLuca Weiss .mnd_width = 16, 796*88174d5dSLuca Weiss .hid_width = 5, 797*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 798*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_qupv3_wrap0_qspi_ref_clk_src, 799*88174d5dSLuca Weiss .clkr.hw.init = &gcc_qupv3_wrap1_qspi_ref_clk_src_init, 800*88174d5dSLuca Weiss }; 801*88174d5dSLuca Weiss 802*88174d5dSLuca Weiss static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = { 803*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_s0_clk_src", 804*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 805*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 806*88174d5dSLuca Weiss .ops = &clk_rcg2_ops, 807*88174d5dSLuca Weiss }; 808*88174d5dSLuca Weiss 809*88174d5dSLuca Weiss static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = { 810*88174d5dSLuca Weiss .cmd_rcgr = 0x1e010, 811*88174d5dSLuca Weiss .mnd_width = 16, 812*88174d5dSLuca Weiss .hid_width = 5, 813*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 814*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 815*88174d5dSLuca Weiss .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init, 816*88174d5dSLuca Weiss }; 817*88174d5dSLuca Weiss 818*88174d5dSLuca Weiss static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = { 819*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_s1_clk_src", 820*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 821*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 822*88174d5dSLuca Weiss .ops = &clk_rcg2_ops, 823*88174d5dSLuca Weiss }; 824*88174d5dSLuca Weiss 825*88174d5dSLuca Weiss static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = { 826*88174d5dSLuca Weiss .cmd_rcgr = 0x1e148, 827*88174d5dSLuca Weiss .mnd_width = 16, 828*88174d5dSLuca Weiss .hid_width = 5, 829*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 830*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 831*88174d5dSLuca Weiss .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init, 832*88174d5dSLuca Weiss }; 833*88174d5dSLuca Weiss 834*88174d5dSLuca Weiss static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = { 835*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_s3_clk_src", 836*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 837*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 838*88174d5dSLuca Weiss .ops = &clk_rcg2_ops, 839*88174d5dSLuca Weiss }; 840*88174d5dSLuca Weiss 841*88174d5dSLuca Weiss static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = { 842*88174d5dSLuca Weiss .cmd_rcgr = 0x1e290, 843*88174d5dSLuca Weiss .mnd_width = 16, 844*88174d5dSLuca Weiss .hid_width = 5, 845*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 846*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_qupv3_wrap0_s3_clk_src, 847*88174d5dSLuca Weiss .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init, 848*88174d5dSLuca Weiss }; 849*88174d5dSLuca Weiss 850*88174d5dSLuca Weiss static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = { 851*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_s4_clk_src", 852*88174d5dSLuca Weiss .parent_data = gcc_parent_data_4, 853*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_4), 854*88174d5dSLuca Weiss .ops = &clk_rcg2_ops, 855*88174d5dSLuca Weiss }; 856*88174d5dSLuca Weiss 857*88174d5dSLuca Weiss static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = { 858*88174d5dSLuca Weiss .cmd_rcgr = 0x1e3c8, 859*88174d5dSLuca Weiss .mnd_width = 16, 860*88174d5dSLuca Weiss .hid_width = 5, 861*88174d5dSLuca Weiss .parent_map = gcc_parent_map_4, 862*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_qupv3_wrap0_s4_clk_src, 863*88174d5dSLuca Weiss .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init, 864*88174d5dSLuca Weiss }; 865*88174d5dSLuca Weiss 866*88174d5dSLuca Weiss static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = { 867*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_s5_clk_src", 868*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 869*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 870*88174d5dSLuca Weiss .ops = &clk_rcg2_ops, 871*88174d5dSLuca Weiss }; 872*88174d5dSLuca Weiss 873*88174d5dSLuca Weiss static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = { 874*88174d5dSLuca Weiss .cmd_rcgr = 0x1e500, 875*88174d5dSLuca Weiss .mnd_width = 16, 876*88174d5dSLuca Weiss .hid_width = 5, 877*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 878*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_qupv3_wrap0_s3_clk_src, 879*88174d5dSLuca Weiss .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init, 880*88174d5dSLuca Weiss }; 881*88174d5dSLuca Weiss 882*88174d5dSLuca Weiss static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = { 883*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_s6_clk_src", 884*88174d5dSLuca Weiss .parent_data = gcc_parent_data_8, 885*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_8), 886*88174d5dSLuca Weiss .ops = &clk_rcg2_ops, 887*88174d5dSLuca Weiss }; 888*88174d5dSLuca Weiss 889*88174d5dSLuca Weiss static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = { 890*88174d5dSLuca Weiss .cmd_rcgr = 0x1e638, 891*88174d5dSLuca Weiss .mnd_width = 16, 892*88174d5dSLuca Weiss .hid_width = 5, 893*88174d5dSLuca Weiss .parent_map = gcc_parent_map_8, 894*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_qupv3_wrap0_s3_clk_src, 895*88174d5dSLuca Weiss .clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init, 896*88174d5dSLuca Weiss }; 897*88174d5dSLuca Weiss 898*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = { 899*88174d5dSLuca Weiss F(144000, P_BI_TCXO, 16, 3, 25), 900*88174d5dSLuca Weiss F(400000, P_BI_TCXO, 12, 1, 4), 901*88174d5dSLuca Weiss F(20000000, P_GCC_GPLL0_OUT_EVEN, 5, 1, 3), 902*88174d5dSLuca Weiss F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), 903*88174d5dSLuca Weiss F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0), 904*88174d5dSLuca Weiss F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 905*88174d5dSLuca Weiss F(192000000, P_GCC_GPLL6_OUT_MAIN, 2, 0, 0), 906*88174d5dSLuca Weiss F(384000000, P_GCC_GPLL6_OUT_MAIN, 1, 0, 0), 907*88174d5dSLuca Weiss { } 908*88174d5dSLuca Weiss }; 909*88174d5dSLuca Weiss 910*88174d5dSLuca Weiss static struct clk_rcg2 gcc_sdcc1_apps_clk_src = { 911*88174d5dSLuca Weiss .cmd_rcgr = 0xa3014, 912*88174d5dSLuca Weiss .mnd_width = 8, 913*88174d5dSLuca Weiss .hid_width = 5, 914*88174d5dSLuca Weiss .parent_map = gcc_parent_map_9, 915*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_sdcc1_apps_clk_src, 916*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 917*88174d5dSLuca Weiss .name = "gcc_sdcc1_apps_clk_src", 918*88174d5dSLuca Weiss .parent_data = gcc_parent_data_9, 919*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_9), 920*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 921*88174d5dSLuca Weiss }, 922*88174d5dSLuca Weiss }; 923*88174d5dSLuca Weiss 924*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = { 925*88174d5dSLuca Weiss F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 926*88174d5dSLuca Weiss F(150000000, P_GCC_GPLL0_OUT_EVEN, 2, 0, 0), 927*88174d5dSLuca Weiss F(300000000, P_GCC_GPLL0_OUT_EVEN, 1, 0, 0), 928*88174d5dSLuca Weiss { } 929*88174d5dSLuca Weiss }; 930*88174d5dSLuca Weiss 931*88174d5dSLuca Weiss static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = { 932*88174d5dSLuca Weiss .cmd_rcgr = 0xa3038, 933*88174d5dSLuca Weiss .mnd_width = 0, 934*88174d5dSLuca Weiss .hid_width = 5, 935*88174d5dSLuca Weiss .parent_map = gcc_parent_map_10, 936*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src, 937*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 938*88174d5dSLuca Weiss .name = "gcc_sdcc1_ice_core_clk_src", 939*88174d5dSLuca Weiss .parent_data = gcc_parent_data_10, 940*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_10), 941*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 942*88174d5dSLuca Weiss }, 943*88174d5dSLuca Weiss }; 944*88174d5dSLuca Weiss 945*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = { 946*88174d5dSLuca Weiss F(400000, P_BI_TCXO, 12, 1, 4), 947*88174d5dSLuca Weiss F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), 948*88174d5dSLuca Weiss F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0), 949*88174d5dSLuca Weiss F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0), 950*88174d5dSLuca Weiss F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 951*88174d5dSLuca Weiss F(202000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0), 952*88174d5dSLuca Weiss { } 953*88174d5dSLuca Weiss }; 954*88174d5dSLuca Weiss 955*88174d5dSLuca Weiss static struct clk_rcg2 gcc_sdcc2_apps_clk_src = { 956*88174d5dSLuca Weiss .cmd_rcgr = 0x14018, 957*88174d5dSLuca Weiss .mnd_width = 8, 958*88174d5dSLuca Weiss .hid_width = 5, 959*88174d5dSLuca Weiss .parent_map = gcc_parent_map_11, 960*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src, 961*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 962*88174d5dSLuca Weiss .name = "gcc_sdcc2_apps_clk_src", 963*88174d5dSLuca Weiss .parent_data = gcc_parent_data_11, 964*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_11), 965*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 966*88174d5dSLuca Weiss }, 967*88174d5dSLuca Weiss }; 968*88174d5dSLuca Weiss 969*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = { 970*88174d5dSLuca Weiss F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0), 971*88174d5dSLuca Weiss F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 972*88174d5dSLuca Weiss F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 973*88174d5dSLuca Weiss F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0), 974*88174d5dSLuca Weiss F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0), 975*88174d5dSLuca Weiss { } 976*88174d5dSLuca Weiss }; 977*88174d5dSLuca Weiss 978*88174d5dSLuca Weiss static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = { 979*88174d5dSLuca Weiss .cmd_rcgr = 0x77030, 980*88174d5dSLuca Weiss .mnd_width = 8, 981*88174d5dSLuca Weiss .hid_width = 5, 982*88174d5dSLuca Weiss .parent_map = gcc_parent_map_2, 983*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src, 984*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 985*88174d5dSLuca Weiss .name = "gcc_ufs_phy_axi_clk_src", 986*88174d5dSLuca Weiss .parent_data = gcc_parent_data_2, 987*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_2), 988*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 989*88174d5dSLuca Weiss }, 990*88174d5dSLuca Weiss }; 991*88174d5dSLuca Weiss 992*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = { 993*88174d5dSLuca Weiss F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0), 994*88174d5dSLuca Weiss F(201500000, P_GCC_GPLL4_OUT_MAIN, 4, 0, 0), 995*88174d5dSLuca Weiss F(403000000, P_GCC_GPLL4_OUT_MAIN, 2, 0, 0), 996*88174d5dSLuca Weiss { } 997*88174d5dSLuca Weiss }; 998*88174d5dSLuca Weiss 999*88174d5dSLuca Weiss static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = { 1000*88174d5dSLuca Weiss .cmd_rcgr = 0x77080, 1001*88174d5dSLuca Weiss .mnd_width = 0, 1002*88174d5dSLuca Weiss .hid_width = 5, 1003*88174d5dSLuca Weiss .parent_map = gcc_parent_map_2, 1004*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src, 1005*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 1006*88174d5dSLuca Weiss .name = "gcc_ufs_phy_ice_core_clk_src", 1007*88174d5dSLuca Weiss .parent_data = gcc_parent_data_2, 1008*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_2), 1009*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 1010*88174d5dSLuca Weiss }, 1011*88174d5dSLuca Weiss }; 1012*88174d5dSLuca Weiss 1013*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = { 1014*88174d5dSLuca Weiss F(9600000, P_BI_TCXO, 2, 0, 0), 1015*88174d5dSLuca Weiss F(19200000, P_BI_TCXO, 1, 0, 0), 1016*88174d5dSLuca Weiss { } 1017*88174d5dSLuca Weiss }; 1018*88174d5dSLuca Weiss 1019*88174d5dSLuca Weiss static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = { 1020*88174d5dSLuca Weiss .cmd_rcgr = 0x770b4, 1021*88174d5dSLuca Weiss .mnd_width = 0, 1022*88174d5dSLuca Weiss .hid_width = 5, 1023*88174d5dSLuca Weiss .parent_map = gcc_parent_map_5, 1024*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src, 1025*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 1026*88174d5dSLuca Weiss .name = "gcc_ufs_phy_phy_aux_clk_src", 1027*88174d5dSLuca Weiss .parent_data = gcc_parent_data_5, 1028*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_5), 1029*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 1030*88174d5dSLuca Weiss }, 1031*88174d5dSLuca Weiss }; 1032*88174d5dSLuca Weiss 1033*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src[] = { 1034*88174d5dSLuca Weiss F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0), 1035*88174d5dSLuca Weiss F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0), 1036*88174d5dSLuca Weiss F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0), 1037*88174d5dSLuca Weiss { } 1038*88174d5dSLuca Weiss }; 1039*88174d5dSLuca Weiss 1040*88174d5dSLuca Weiss static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = { 1041*88174d5dSLuca Weiss .cmd_rcgr = 0x77098, 1042*88174d5dSLuca Weiss .mnd_width = 0, 1043*88174d5dSLuca Weiss .hid_width = 5, 1044*88174d5dSLuca Weiss .parent_map = gcc_parent_map_2, 1045*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_ufs_phy_unipro_core_clk_src, 1046*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 1047*88174d5dSLuca Weiss .name = "gcc_ufs_phy_unipro_core_clk_src", 1048*88174d5dSLuca Weiss .parent_data = gcc_parent_data_2, 1049*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_2), 1050*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 1051*88174d5dSLuca Weiss }, 1052*88174d5dSLuca Weiss }; 1053*88174d5dSLuca Weiss 1054*88174d5dSLuca Weiss static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = { 1055*88174d5dSLuca Weiss F(66666667, P_GCC_GPLL0_OUT_EVEN, 4.5, 0, 0), 1056*88174d5dSLuca Weiss F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0), 1057*88174d5dSLuca Weiss F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0), 1058*88174d5dSLuca Weiss F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0), 1059*88174d5dSLuca Weiss { } 1060*88174d5dSLuca Weiss }; 1061*88174d5dSLuca Weiss 1062*88174d5dSLuca Weiss static struct clk_rcg2 gcc_usb30_prim_master_clk_src = { 1063*88174d5dSLuca Weiss .cmd_rcgr = 0x3902c, 1064*88174d5dSLuca Weiss .mnd_width = 8, 1065*88174d5dSLuca Weiss .hid_width = 5, 1066*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 1067*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src, 1068*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 1069*88174d5dSLuca Weiss .name = "gcc_usb30_prim_master_clk_src", 1070*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 1071*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1072*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 1073*88174d5dSLuca Weiss }, 1074*88174d5dSLuca Weiss }; 1075*88174d5dSLuca Weiss 1076*88174d5dSLuca Weiss static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = { 1077*88174d5dSLuca Weiss .cmd_rcgr = 0x39044, 1078*88174d5dSLuca Weiss .mnd_width = 0, 1079*88174d5dSLuca Weiss .hid_width = 5, 1080*88174d5dSLuca Weiss .parent_map = gcc_parent_map_0, 1081*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 1082*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 1083*88174d5dSLuca Weiss .name = "gcc_usb30_prim_mock_utmi_clk_src", 1084*88174d5dSLuca Weiss .parent_data = gcc_parent_data_0, 1085*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_0), 1086*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 1087*88174d5dSLuca Weiss }, 1088*88174d5dSLuca Weiss }; 1089*88174d5dSLuca Weiss 1090*88174d5dSLuca Weiss static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = { 1091*88174d5dSLuca Weiss .cmd_rcgr = 0x39070, 1092*88174d5dSLuca Weiss .mnd_width = 0, 1093*88174d5dSLuca Weiss .hid_width = 5, 1094*88174d5dSLuca Weiss .parent_map = gcc_parent_map_3, 1095*88174d5dSLuca Weiss .freq_tbl = ftbl_gcc_pcie_0_aux_clk_src, 1096*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 1097*88174d5dSLuca Weiss .name = "gcc_usb3_prim_phy_aux_clk_src", 1098*88174d5dSLuca Weiss .parent_data = gcc_parent_data_3, 1099*88174d5dSLuca Weiss .num_parents = ARRAY_SIZE(gcc_parent_data_3), 1100*88174d5dSLuca Weiss .ops = &clk_rcg2_shared_ops, 1101*88174d5dSLuca Weiss }, 1102*88174d5dSLuca Weiss }; 1103*88174d5dSLuca Weiss 1104*88174d5dSLuca Weiss static struct clk_regmap_div gcc_pcie_0_pipe_div2_clk_src = { 1105*88174d5dSLuca Weiss .reg = 0x6b094, 1106*88174d5dSLuca Weiss .shift = 0, 1107*88174d5dSLuca Weiss .width = 4, 1108*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 1109*88174d5dSLuca Weiss .name = "gcc_pcie_0_pipe_div2_clk_src", 1110*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1111*88174d5dSLuca Weiss &gcc_pcie_0_pipe_clk_src.clkr.hw, 1112*88174d5dSLuca Weiss }, 1113*88174d5dSLuca Weiss .num_parents = 1, 1114*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1115*88174d5dSLuca Weiss .ops = &clk_regmap_div_ro_ops, 1116*88174d5dSLuca Weiss }, 1117*88174d5dSLuca Weiss }; 1118*88174d5dSLuca Weiss 1119*88174d5dSLuca Weiss static struct clk_regmap_div gcc_pcie_1_pipe_div2_clk_src = { 1120*88174d5dSLuca Weiss .reg = 0x90090, 1121*88174d5dSLuca Weiss .shift = 0, 1122*88174d5dSLuca Weiss .width = 4, 1123*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 1124*88174d5dSLuca Weiss .name = "gcc_pcie_1_pipe_div2_clk_src", 1125*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1126*88174d5dSLuca Weiss &gcc_pcie_1_pipe_clk_src.clkr.hw, 1127*88174d5dSLuca Weiss }, 1128*88174d5dSLuca Weiss .num_parents = 1, 1129*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1130*88174d5dSLuca Weiss .ops = &clk_regmap_div_ro_ops, 1131*88174d5dSLuca Weiss }, 1132*88174d5dSLuca Weiss }; 1133*88174d5dSLuca Weiss 1134*88174d5dSLuca Weiss static struct clk_regmap_div gcc_qupv3_wrap0_s2_clk_src = { 1135*88174d5dSLuca Weiss .reg = 0x18280, 1136*88174d5dSLuca Weiss .shift = 0, 1137*88174d5dSLuca Weiss .width = 4, 1138*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 1139*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_s2_clk_src", 1140*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1141*88174d5dSLuca Weiss &gcc_qupv3_wrap0_qspi_ref_clk_src.clkr.hw, 1142*88174d5dSLuca Weiss }, 1143*88174d5dSLuca Weiss .num_parents = 1, 1144*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1145*88174d5dSLuca Weiss .ops = &clk_regmap_div_ro_ops, 1146*88174d5dSLuca Weiss }, 1147*88174d5dSLuca Weiss }; 1148*88174d5dSLuca Weiss 1149*88174d5dSLuca Weiss static struct clk_regmap_div gcc_qupv3_wrap1_s2_clk_src = { 1150*88174d5dSLuca Weiss .reg = 0x1e280, 1151*88174d5dSLuca Weiss .shift = 0, 1152*88174d5dSLuca Weiss .width = 4, 1153*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 1154*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_s2_clk_src", 1155*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1156*88174d5dSLuca Weiss &gcc_qupv3_wrap1_qspi_ref_clk_src.clkr.hw, 1157*88174d5dSLuca Weiss }, 1158*88174d5dSLuca Weiss .num_parents = 1, 1159*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1160*88174d5dSLuca Weiss .ops = &clk_regmap_div_ro_ops, 1161*88174d5dSLuca Weiss }, 1162*88174d5dSLuca Weiss }; 1163*88174d5dSLuca Weiss 1164*88174d5dSLuca Weiss static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = { 1165*88174d5dSLuca Weiss .reg = 0x3905c, 1166*88174d5dSLuca Weiss .shift = 0, 1167*88174d5dSLuca Weiss .width = 4, 1168*88174d5dSLuca Weiss .clkr.hw.init = &(const struct clk_init_data) { 1169*88174d5dSLuca Weiss .name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src", 1170*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1171*88174d5dSLuca Weiss &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw, 1172*88174d5dSLuca Weiss }, 1173*88174d5dSLuca Weiss .num_parents = 1, 1174*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1175*88174d5dSLuca Weiss .ops = &clk_regmap_div_ro_ops, 1176*88174d5dSLuca Weiss }, 1177*88174d5dSLuca Weiss }; 1178*88174d5dSLuca Weiss 1179*88174d5dSLuca Weiss static struct clk_branch gcc_aggre_noc_pcie_axi_clk = { 1180*88174d5dSLuca Weiss .halt_reg = 0x1005c, 1181*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_SKIP, 1182*88174d5dSLuca Weiss .hwcg_reg = 0x1005c, 1183*88174d5dSLuca Weiss .hwcg_bit = 1, 1184*88174d5dSLuca Weiss .clkr = { 1185*88174d5dSLuca Weiss .enable_reg = 0x52000, 1186*88174d5dSLuca Weiss .enable_mask = BIT(12), 1187*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1188*88174d5dSLuca Weiss .name = "gcc_aggre_noc_pcie_axi_clk", 1189*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1190*88174d5dSLuca Weiss }, 1191*88174d5dSLuca Weiss }, 1192*88174d5dSLuca Weiss }; 1193*88174d5dSLuca Weiss 1194*88174d5dSLuca Weiss static struct clk_branch gcc_aggre_ufs_phy_axi_clk = { 1195*88174d5dSLuca Weiss .halt_reg = 0x770e4, 1196*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1197*88174d5dSLuca Weiss .hwcg_reg = 0x770e4, 1198*88174d5dSLuca Weiss .hwcg_bit = 1, 1199*88174d5dSLuca Weiss .clkr = { 1200*88174d5dSLuca Weiss .enable_reg = 0x770e4, 1201*88174d5dSLuca Weiss .enable_mask = BIT(0), 1202*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1203*88174d5dSLuca Weiss .name = "gcc_aggre_ufs_phy_axi_clk", 1204*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1205*88174d5dSLuca Weiss &gcc_ufs_phy_axi_clk_src.clkr.hw, 1206*88174d5dSLuca Weiss }, 1207*88174d5dSLuca Weiss .num_parents = 1, 1208*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1209*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1210*88174d5dSLuca Weiss }, 1211*88174d5dSLuca Weiss }, 1212*88174d5dSLuca Weiss }; 1213*88174d5dSLuca Weiss 1214*88174d5dSLuca Weiss static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk = { 1215*88174d5dSLuca Weiss .halt_reg = 0x770e4, 1216*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1217*88174d5dSLuca Weiss .hwcg_reg = 0x770e4, 1218*88174d5dSLuca Weiss .hwcg_bit = 1, 1219*88174d5dSLuca Weiss .clkr = { 1220*88174d5dSLuca Weiss .enable_reg = 0x770e4, 1221*88174d5dSLuca Weiss .enable_mask = BIT(1), 1222*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1223*88174d5dSLuca Weiss .name = "gcc_aggre_ufs_phy_axi_hw_ctl_clk", 1224*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1225*88174d5dSLuca Weiss &gcc_ufs_phy_axi_clk_src.clkr.hw, 1226*88174d5dSLuca Weiss }, 1227*88174d5dSLuca Weiss .num_parents = 1, 1228*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1229*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1230*88174d5dSLuca Weiss }, 1231*88174d5dSLuca Weiss }, 1232*88174d5dSLuca Weiss }; 1233*88174d5dSLuca Weiss 1234*88174d5dSLuca Weiss static struct clk_branch gcc_aggre_usb3_prim_axi_clk = { 1235*88174d5dSLuca Weiss .halt_reg = 0x39090, 1236*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1237*88174d5dSLuca Weiss .hwcg_reg = 0x39090, 1238*88174d5dSLuca Weiss .hwcg_bit = 1, 1239*88174d5dSLuca Weiss .clkr = { 1240*88174d5dSLuca Weiss .enable_reg = 0x39090, 1241*88174d5dSLuca Weiss .enable_mask = BIT(0), 1242*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1243*88174d5dSLuca Weiss .name = "gcc_aggre_usb3_prim_axi_clk", 1244*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1245*88174d5dSLuca Weiss &gcc_usb30_prim_master_clk_src.clkr.hw, 1246*88174d5dSLuca Weiss }, 1247*88174d5dSLuca Weiss .num_parents = 1, 1248*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1249*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1250*88174d5dSLuca Weiss }, 1251*88174d5dSLuca Weiss }, 1252*88174d5dSLuca Weiss }; 1253*88174d5dSLuca Weiss 1254*88174d5dSLuca Weiss static struct clk_branch gcc_boot_rom_ahb_clk = { 1255*88174d5dSLuca Weiss .halt_reg = 0x38004, 1256*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1257*88174d5dSLuca Weiss .hwcg_reg = 0x38004, 1258*88174d5dSLuca Weiss .hwcg_bit = 1, 1259*88174d5dSLuca Weiss .clkr = { 1260*88174d5dSLuca Weiss .enable_reg = 0x52000, 1261*88174d5dSLuca Weiss .enable_mask = BIT(10), 1262*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1263*88174d5dSLuca Weiss .name = "gcc_boot_rom_ahb_clk", 1264*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1265*88174d5dSLuca Weiss }, 1266*88174d5dSLuca Weiss }, 1267*88174d5dSLuca Weiss }; 1268*88174d5dSLuca Weiss 1269*88174d5dSLuca Weiss static struct clk_branch gcc_camera_hf_axi_clk = { 1270*88174d5dSLuca Weiss .halt_reg = 0x26010, 1271*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_SKIP, 1272*88174d5dSLuca Weiss .hwcg_reg = 0x26010, 1273*88174d5dSLuca Weiss .hwcg_bit = 1, 1274*88174d5dSLuca Weiss .clkr = { 1275*88174d5dSLuca Weiss .enable_reg = 0x26010, 1276*88174d5dSLuca Weiss .enable_mask = BIT(0), 1277*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1278*88174d5dSLuca Weiss .name = "gcc_camera_hf_axi_clk", 1279*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1280*88174d5dSLuca Weiss }, 1281*88174d5dSLuca Weiss }, 1282*88174d5dSLuca Weiss }; 1283*88174d5dSLuca Weiss 1284*88174d5dSLuca Weiss static struct clk_branch gcc_camera_sf_axi_clk = { 1285*88174d5dSLuca Weiss .halt_reg = 0x26014, 1286*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_SKIP, 1287*88174d5dSLuca Weiss .hwcg_reg = 0x26014, 1288*88174d5dSLuca Weiss .hwcg_bit = 1, 1289*88174d5dSLuca Weiss .clkr = { 1290*88174d5dSLuca Weiss .enable_reg = 0x26014, 1291*88174d5dSLuca Weiss .enable_mask = BIT(0), 1292*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1293*88174d5dSLuca Weiss .name = "gcc_camera_sf_axi_clk", 1294*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1295*88174d5dSLuca Weiss }, 1296*88174d5dSLuca Weiss }, 1297*88174d5dSLuca Weiss }; 1298*88174d5dSLuca Weiss 1299*88174d5dSLuca Weiss static struct clk_branch gcc_cfg_noc_pcie_anoc_ahb_clk = { 1300*88174d5dSLuca Weiss .halt_reg = 0x10050, 1301*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_SKIP, 1302*88174d5dSLuca Weiss .hwcg_reg = 0x10050, 1303*88174d5dSLuca Weiss .hwcg_bit = 1, 1304*88174d5dSLuca Weiss .clkr = { 1305*88174d5dSLuca Weiss .enable_reg = 0x52000, 1306*88174d5dSLuca Weiss .enable_mask = BIT(20), 1307*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1308*88174d5dSLuca Weiss .name = "gcc_cfg_noc_pcie_anoc_ahb_clk", 1309*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1310*88174d5dSLuca Weiss }, 1311*88174d5dSLuca Weiss }, 1312*88174d5dSLuca Weiss }; 1313*88174d5dSLuca Weiss 1314*88174d5dSLuca Weiss static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = { 1315*88174d5dSLuca Weiss .halt_reg = 0x3908c, 1316*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1317*88174d5dSLuca Weiss .clkr = { 1318*88174d5dSLuca Weiss .enable_reg = 0x3908c, 1319*88174d5dSLuca Weiss .enable_mask = BIT(0), 1320*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1321*88174d5dSLuca Weiss .name = "gcc_cfg_noc_usb3_prim_axi_clk", 1322*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1323*88174d5dSLuca Weiss &gcc_usb30_prim_master_clk_src.clkr.hw, 1324*88174d5dSLuca Weiss }, 1325*88174d5dSLuca Weiss .num_parents = 1, 1326*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1327*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1328*88174d5dSLuca Weiss }, 1329*88174d5dSLuca Weiss }, 1330*88174d5dSLuca Weiss }; 1331*88174d5dSLuca Weiss 1332*88174d5dSLuca Weiss static struct clk_branch gcc_cnoc_pcie_sf_axi_clk = { 1333*88174d5dSLuca Weiss .halt_reg = 0x10058, 1334*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1335*88174d5dSLuca Weiss .hwcg_reg = 0x10058, 1336*88174d5dSLuca Weiss .hwcg_bit = 1, 1337*88174d5dSLuca Weiss .clkr = { 1338*88174d5dSLuca Weiss .enable_reg = 0x52008, 1339*88174d5dSLuca Weiss .enable_mask = BIT(6), 1340*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1341*88174d5dSLuca Weiss .name = "gcc_cnoc_pcie_sf_axi_clk", 1342*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1343*88174d5dSLuca Weiss }, 1344*88174d5dSLuca Weiss }, 1345*88174d5dSLuca Weiss }; 1346*88174d5dSLuca Weiss 1347*88174d5dSLuca Weiss static struct clk_branch gcc_ddrss_gpu_axi_clk = { 1348*88174d5dSLuca Weiss .halt_reg = 0x7115c, 1349*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_SKIP, 1350*88174d5dSLuca Weiss .hwcg_reg = 0x7115c, 1351*88174d5dSLuca Weiss .hwcg_bit = 1, 1352*88174d5dSLuca Weiss .clkr = { 1353*88174d5dSLuca Weiss .enable_reg = 0x7115c, 1354*88174d5dSLuca Weiss .enable_mask = BIT(0), 1355*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1356*88174d5dSLuca Weiss .name = "gcc_ddrss_gpu_axi_clk", 1357*88174d5dSLuca Weiss .ops = &clk_branch2_aon_ops, 1358*88174d5dSLuca Weiss }, 1359*88174d5dSLuca Weiss }, 1360*88174d5dSLuca Weiss }; 1361*88174d5dSLuca Weiss 1362*88174d5dSLuca Weiss static struct clk_branch gcc_ddrss_pcie_sf_qtb_clk = { 1363*88174d5dSLuca Weiss .halt_reg = 0x1006c, 1364*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_SKIP, 1365*88174d5dSLuca Weiss .hwcg_reg = 0x1006c, 1366*88174d5dSLuca Weiss .hwcg_bit = 1, 1367*88174d5dSLuca Weiss .clkr = { 1368*88174d5dSLuca Weiss .enable_reg = 0x52000, 1369*88174d5dSLuca Weiss .enable_mask = BIT(19), 1370*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1371*88174d5dSLuca Weiss .name = "gcc_ddrss_pcie_sf_qtb_clk", 1372*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1373*88174d5dSLuca Weiss }, 1374*88174d5dSLuca Weiss }, 1375*88174d5dSLuca Weiss }; 1376*88174d5dSLuca Weiss 1377*88174d5dSLuca Weiss static struct clk_branch gcc_disp_gpll0_div_clk_src = { 1378*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_DELAY, 1379*88174d5dSLuca Weiss .clkr = { 1380*88174d5dSLuca Weiss .enable_reg = 0x52000, 1381*88174d5dSLuca Weiss .enable_mask = BIT(23), 1382*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1383*88174d5dSLuca Weiss .name = "gcc_disp_gpll0_div_clk_src", 1384*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1385*88174d5dSLuca Weiss &gcc_gpll0_out_even.clkr.hw, 1386*88174d5dSLuca Weiss }, 1387*88174d5dSLuca Weiss .num_parents = 1, 1388*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1389*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1390*88174d5dSLuca Weiss }, 1391*88174d5dSLuca Weiss }, 1392*88174d5dSLuca Weiss }; 1393*88174d5dSLuca Weiss 1394*88174d5dSLuca Weiss static struct clk_branch gcc_disp_hf_axi_clk = { 1395*88174d5dSLuca Weiss .halt_reg = 0x2700c, 1396*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_SKIP, 1397*88174d5dSLuca Weiss .hwcg_reg = 0x2700c, 1398*88174d5dSLuca Weiss .hwcg_bit = 1, 1399*88174d5dSLuca Weiss .clkr = { 1400*88174d5dSLuca Weiss .enable_reg = 0x2700c, 1401*88174d5dSLuca Weiss .enable_mask = BIT(0), 1402*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1403*88174d5dSLuca Weiss .name = "gcc_disp_hf_axi_clk", 1404*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1405*88174d5dSLuca Weiss }, 1406*88174d5dSLuca Weiss }, 1407*88174d5dSLuca Weiss }; 1408*88174d5dSLuca Weiss 1409*88174d5dSLuca Weiss static struct clk_branch gcc_gp1_clk = { 1410*88174d5dSLuca Weiss .halt_reg = 0x64000, 1411*88174d5dSLuca Weiss .halt_check = BRANCH_HALT, 1412*88174d5dSLuca Weiss .clkr = { 1413*88174d5dSLuca Weiss .enable_reg = 0x64000, 1414*88174d5dSLuca Weiss .enable_mask = BIT(0), 1415*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1416*88174d5dSLuca Weiss .name = "gcc_gp1_clk", 1417*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1418*88174d5dSLuca Weiss &gcc_gp1_clk_src.clkr.hw, 1419*88174d5dSLuca Weiss }, 1420*88174d5dSLuca Weiss .num_parents = 1, 1421*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1422*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1423*88174d5dSLuca Weiss }, 1424*88174d5dSLuca Weiss }, 1425*88174d5dSLuca Weiss }; 1426*88174d5dSLuca Weiss 1427*88174d5dSLuca Weiss static struct clk_branch gcc_gp2_clk = { 1428*88174d5dSLuca Weiss .halt_reg = 0x65000, 1429*88174d5dSLuca Weiss .halt_check = BRANCH_HALT, 1430*88174d5dSLuca Weiss .clkr = { 1431*88174d5dSLuca Weiss .enable_reg = 0x65000, 1432*88174d5dSLuca Weiss .enable_mask = BIT(0), 1433*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1434*88174d5dSLuca Weiss .name = "gcc_gp2_clk", 1435*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1436*88174d5dSLuca Weiss &gcc_gp2_clk_src.clkr.hw, 1437*88174d5dSLuca Weiss }, 1438*88174d5dSLuca Weiss .num_parents = 1, 1439*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1440*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1441*88174d5dSLuca Weiss }, 1442*88174d5dSLuca Weiss }, 1443*88174d5dSLuca Weiss }; 1444*88174d5dSLuca Weiss 1445*88174d5dSLuca Weiss static struct clk_branch gcc_gp3_clk = { 1446*88174d5dSLuca Weiss .halt_reg = 0x66000, 1447*88174d5dSLuca Weiss .halt_check = BRANCH_HALT, 1448*88174d5dSLuca Weiss .clkr = { 1449*88174d5dSLuca Weiss .enable_reg = 0x66000, 1450*88174d5dSLuca Weiss .enable_mask = BIT(0), 1451*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1452*88174d5dSLuca Weiss .name = "gcc_gp3_clk", 1453*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1454*88174d5dSLuca Weiss &gcc_gp3_clk_src.clkr.hw, 1455*88174d5dSLuca Weiss }, 1456*88174d5dSLuca Weiss .num_parents = 1, 1457*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1458*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1459*88174d5dSLuca Weiss }, 1460*88174d5dSLuca Weiss }, 1461*88174d5dSLuca Weiss }; 1462*88174d5dSLuca Weiss 1463*88174d5dSLuca Weiss static struct clk_branch gcc_gpu_gpll0_clk_src = { 1464*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_DELAY, 1465*88174d5dSLuca Weiss .clkr = { 1466*88174d5dSLuca Weiss .enable_reg = 0x52000, 1467*88174d5dSLuca Weiss .enable_mask = BIT(15), 1468*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1469*88174d5dSLuca Weiss .name = "gcc_gpu_gpll0_clk_src", 1470*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1471*88174d5dSLuca Weiss &gcc_gpll0.clkr.hw, 1472*88174d5dSLuca Weiss }, 1473*88174d5dSLuca Weiss .num_parents = 1, 1474*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1475*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1476*88174d5dSLuca Weiss }, 1477*88174d5dSLuca Weiss }, 1478*88174d5dSLuca Weiss }; 1479*88174d5dSLuca Weiss 1480*88174d5dSLuca Weiss static struct clk_branch gcc_gpu_gpll0_div_clk_src = { 1481*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_DELAY, 1482*88174d5dSLuca Weiss .clkr = { 1483*88174d5dSLuca Weiss .enable_reg = 0x52000, 1484*88174d5dSLuca Weiss .enable_mask = BIT(16), 1485*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1486*88174d5dSLuca Weiss .name = "gcc_gpu_gpll0_div_clk_src", 1487*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1488*88174d5dSLuca Weiss &gcc_gpll0_out_even.clkr.hw, 1489*88174d5dSLuca Weiss }, 1490*88174d5dSLuca Weiss .num_parents = 1, 1491*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1492*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1493*88174d5dSLuca Weiss }, 1494*88174d5dSLuca Weiss }, 1495*88174d5dSLuca Weiss }; 1496*88174d5dSLuca Weiss 1497*88174d5dSLuca Weiss static struct clk_branch gcc_gpu_memnoc_gfx_clk = { 1498*88174d5dSLuca Weiss .halt_reg = 0x71010, 1499*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1500*88174d5dSLuca Weiss .hwcg_reg = 0x71010, 1501*88174d5dSLuca Weiss .hwcg_bit = 1, 1502*88174d5dSLuca Weiss .clkr = { 1503*88174d5dSLuca Weiss .enable_reg = 0x71010, 1504*88174d5dSLuca Weiss .enable_mask = BIT(0), 1505*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1506*88174d5dSLuca Weiss .name = "gcc_gpu_memnoc_gfx_clk", 1507*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1508*88174d5dSLuca Weiss }, 1509*88174d5dSLuca Weiss }, 1510*88174d5dSLuca Weiss }; 1511*88174d5dSLuca Weiss 1512*88174d5dSLuca Weiss static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = { 1513*88174d5dSLuca Weiss .halt_reg = 0x71018, 1514*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_DELAY, 1515*88174d5dSLuca Weiss .clkr = { 1516*88174d5dSLuca Weiss .enable_reg = 0x71018, 1517*88174d5dSLuca Weiss .enable_mask = BIT(0), 1518*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1519*88174d5dSLuca Weiss .name = "gcc_gpu_snoc_dvm_gfx_clk", 1520*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1521*88174d5dSLuca Weiss }, 1522*88174d5dSLuca Weiss }, 1523*88174d5dSLuca Weiss }; 1524*88174d5dSLuca Weiss 1525*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_0_aux_clk = { 1526*88174d5dSLuca Weiss .halt_reg = 0x6b03c, 1527*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1528*88174d5dSLuca Weiss .clkr = { 1529*88174d5dSLuca Weiss .enable_reg = 0x52008, 1530*88174d5dSLuca Weiss .enable_mask = BIT(3), 1531*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1532*88174d5dSLuca Weiss .name = "gcc_pcie_0_aux_clk", 1533*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1534*88174d5dSLuca Weiss &gcc_pcie_0_aux_clk_src.clkr.hw, 1535*88174d5dSLuca Weiss }, 1536*88174d5dSLuca Weiss .num_parents = 1, 1537*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1538*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1539*88174d5dSLuca Weiss }, 1540*88174d5dSLuca Weiss }, 1541*88174d5dSLuca Weiss }; 1542*88174d5dSLuca Weiss 1543*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_0_cfg_ahb_clk = { 1544*88174d5dSLuca Weiss .halt_reg = 0x6b038, 1545*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1546*88174d5dSLuca Weiss .hwcg_reg = 0x6b038, 1547*88174d5dSLuca Weiss .hwcg_bit = 1, 1548*88174d5dSLuca Weiss .clkr = { 1549*88174d5dSLuca Weiss .enable_reg = 0x52008, 1550*88174d5dSLuca Weiss .enable_mask = BIT(2), 1551*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1552*88174d5dSLuca Weiss .name = "gcc_pcie_0_cfg_ahb_clk", 1553*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1554*88174d5dSLuca Weiss }, 1555*88174d5dSLuca Weiss }, 1556*88174d5dSLuca Weiss }; 1557*88174d5dSLuca Weiss 1558*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_0_mstr_axi_clk = { 1559*88174d5dSLuca Weiss .halt_reg = 0x6b02c, 1560*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_SKIP, 1561*88174d5dSLuca Weiss .hwcg_reg = 0x6b02c, 1562*88174d5dSLuca Weiss .hwcg_bit = 1, 1563*88174d5dSLuca Weiss .clkr = { 1564*88174d5dSLuca Weiss .enable_reg = 0x52008, 1565*88174d5dSLuca Weiss .enable_mask = BIT(1), 1566*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1567*88174d5dSLuca Weiss .name = "gcc_pcie_0_mstr_axi_clk", 1568*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1569*88174d5dSLuca Weiss }, 1570*88174d5dSLuca Weiss }, 1571*88174d5dSLuca Weiss }; 1572*88174d5dSLuca Weiss 1573*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_0_phy_rchng_clk = { 1574*88174d5dSLuca Weiss .halt_reg = 0x6b054, 1575*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1576*88174d5dSLuca Weiss .clkr = { 1577*88174d5dSLuca Weiss .enable_reg = 0x52000, 1578*88174d5dSLuca Weiss .enable_mask = BIT(22), 1579*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1580*88174d5dSLuca Weiss .name = "gcc_pcie_0_phy_rchng_clk", 1581*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1582*88174d5dSLuca Weiss &gcc_pcie_0_phy_rchng_clk_src.clkr.hw, 1583*88174d5dSLuca Weiss }, 1584*88174d5dSLuca Weiss .num_parents = 1, 1585*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1586*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1587*88174d5dSLuca Weiss }, 1588*88174d5dSLuca Weiss }, 1589*88174d5dSLuca Weiss }; 1590*88174d5dSLuca Weiss 1591*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_0_pipe_clk = { 1592*88174d5dSLuca Weiss .halt_reg = 0x6b048, 1593*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_SKIP, 1594*88174d5dSLuca Weiss .clkr = { 1595*88174d5dSLuca Weiss .enable_reg = 0x52008, 1596*88174d5dSLuca Weiss .enable_mask = BIT(4), 1597*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1598*88174d5dSLuca Weiss .name = "gcc_pcie_0_pipe_clk", 1599*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1600*88174d5dSLuca Weiss &gcc_pcie_0_pipe_clk_src.clkr.hw, 1601*88174d5dSLuca Weiss }, 1602*88174d5dSLuca Weiss .num_parents = 1, 1603*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1604*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1605*88174d5dSLuca Weiss }, 1606*88174d5dSLuca Weiss }, 1607*88174d5dSLuca Weiss }; 1608*88174d5dSLuca Weiss 1609*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_0_pipe_div2_clk = { 1610*88174d5dSLuca Weiss .halt_reg = 0x6b098, 1611*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_SKIP, 1612*88174d5dSLuca Weiss .clkr = { 1613*88174d5dSLuca Weiss .enable_reg = 0x52018, 1614*88174d5dSLuca Weiss .enable_mask = BIT(13), 1615*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1616*88174d5dSLuca Weiss .name = "gcc_pcie_0_pipe_div2_clk", 1617*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1618*88174d5dSLuca Weiss &gcc_pcie_0_pipe_div2_clk_src.clkr.hw, 1619*88174d5dSLuca Weiss }, 1620*88174d5dSLuca Weiss .num_parents = 1, 1621*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1622*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1623*88174d5dSLuca Weiss }, 1624*88174d5dSLuca Weiss }, 1625*88174d5dSLuca Weiss }; 1626*88174d5dSLuca Weiss 1627*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_0_slv_axi_clk = { 1628*88174d5dSLuca Weiss .halt_reg = 0x6b020, 1629*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1630*88174d5dSLuca Weiss .hwcg_reg = 0x6b020, 1631*88174d5dSLuca Weiss .hwcg_bit = 1, 1632*88174d5dSLuca Weiss .clkr = { 1633*88174d5dSLuca Weiss .enable_reg = 0x52008, 1634*88174d5dSLuca Weiss .enable_mask = BIT(0), 1635*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1636*88174d5dSLuca Weiss .name = "gcc_pcie_0_slv_axi_clk", 1637*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1638*88174d5dSLuca Weiss }, 1639*88174d5dSLuca Weiss }, 1640*88174d5dSLuca Weiss }; 1641*88174d5dSLuca Weiss 1642*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = { 1643*88174d5dSLuca Weiss .halt_reg = 0x6b01c, 1644*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1645*88174d5dSLuca Weiss .clkr = { 1646*88174d5dSLuca Weiss .enable_reg = 0x52008, 1647*88174d5dSLuca Weiss .enable_mask = BIT(5), 1648*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1649*88174d5dSLuca Weiss .name = "gcc_pcie_0_slv_q2a_axi_clk", 1650*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1651*88174d5dSLuca Weiss }, 1652*88174d5dSLuca Weiss }, 1653*88174d5dSLuca Weiss }; 1654*88174d5dSLuca Weiss 1655*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_1_aux_clk = { 1656*88174d5dSLuca Weiss .halt_reg = 0x90038, 1657*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1658*88174d5dSLuca Weiss .clkr = { 1659*88174d5dSLuca Weiss .enable_reg = 0x52000, 1660*88174d5dSLuca Weiss .enable_mask = BIT(29), 1661*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1662*88174d5dSLuca Weiss .name = "gcc_pcie_1_aux_clk", 1663*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1664*88174d5dSLuca Weiss &gcc_pcie_1_aux_clk_src.clkr.hw, 1665*88174d5dSLuca Weiss }, 1666*88174d5dSLuca Weiss .num_parents = 1, 1667*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1668*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1669*88174d5dSLuca Weiss }, 1670*88174d5dSLuca Weiss }, 1671*88174d5dSLuca Weiss }; 1672*88174d5dSLuca Weiss 1673*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_1_cfg_ahb_clk = { 1674*88174d5dSLuca Weiss .halt_reg = 0x90034, 1675*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1676*88174d5dSLuca Weiss .hwcg_reg = 0x90034, 1677*88174d5dSLuca Weiss .hwcg_bit = 1, 1678*88174d5dSLuca Weiss .clkr = { 1679*88174d5dSLuca Weiss .enable_reg = 0x52000, 1680*88174d5dSLuca Weiss .enable_mask = BIT(28), 1681*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1682*88174d5dSLuca Weiss .name = "gcc_pcie_1_cfg_ahb_clk", 1683*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1684*88174d5dSLuca Weiss }, 1685*88174d5dSLuca Weiss }, 1686*88174d5dSLuca Weiss }; 1687*88174d5dSLuca Weiss 1688*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_1_mstr_axi_clk = { 1689*88174d5dSLuca Weiss .halt_reg = 0x90028, 1690*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_SKIP, 1691*88174d5dSLuca Weiss .hwcg_reg = 0x90028, 1692*88174d5dSLuca Weiss .hwcg_bit = 1, 1693*88174d5dSLuca Weiss .clkr = { 1694*88174d5dSLuca Weiss .enable_reg = 0x52000, 1695*88174d5dSLuca Weiss .enable_mask = BIT(27), 1696*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1697*88174d5dSLuca Weiss .name = "gcc_pcie_1_mstr_axi_clk", 1698*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1699*88174d5dSLuca Weiss }, 1700*88174d5dSLuca Weiss }, 1701*88174d5dSLuca Weiss }; 1702*88174d5dSLuca Weiss 1703*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_1_phy_rchng_clk = { 1704*88174d5dSLuca Weiss .halt_reg = 0x90050, 1705*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1706*88174d5dSLuca Weiss .clkr = { 1707*88174d5dSLuca Weiss .enable_reg = 0x52008, 1708*88174d5dSLuca Weiss .enable_mask = BIT(8), 1709*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1710*88174d5dSLuca Weiss .name = "gcc_pcie_1_phy_rchng_clk", 1711*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1712*88174d5dSLuca Weiss &gcc_pcie_1_phy_rchng_clk_src.clkr.hw, 1713*88174d5dSLuca Weiss }, 1714*88174d5dSLuca Weiss .num_parents = 1, 1715*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1716*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1717*88174d5dSLuca Weiss }, 1718*88174d5dSLuca Weiss }, 1719*88174d5dSLuca Weiss }; 1720*88174d5dSLuca Weiss 1721*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_1_pipe_clk = { 1722*88174d5dSLuca Weiss .halt_reg = 0x90044, 1723*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_SKIP, 1724*88174d5dSLuca Weiss .clkr = { 1725*88174d5dSLuca Weiss .enable_reg = 0x52008, 1726*88174d5dSLuca Weiss .enable_mask = BIT(7), 1727*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1728*88174d5dSLuca Weiss .name = "gcc_pcie_1_pipe_clk", 1729*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1730*88174d5dSLuca Weiss &gcc_pcie_1_pipe_clk_src.clkr.hw, 1731*88174d5dSLuca Weiss }, 1732*88174d5dSLuca Weiss .num_parents = 1, 1733*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1734*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1735*88174d5dSLuca Weiss }, 1736*88174d5dSLuca Weiss }, 1737*88174d5dSLuca Weiss }; 1738*88174d5dSLuca Weiss 1739*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_1_pipe_div2_clk = { 1740*88174d5dSLuca Weiss .halt_reg = 0x90094, 1741*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_SKIP, 1742*88174d5dSLuca Weiss .clkr = { 1743*88174d5dSLuca Weiss .enable_reg = 0x52018, 1744*88174d5dSLuca Weiss .enable_mask = BIT(15), 1745*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1746*88174d5dSLuca Weiss .name = "gcc_pcie_1_pipe_div2_clk", 1747*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1748*88174d5dSLuca Weiss &gcc_pcie_1_pipe_div2_clk_src.clkr.hw, 1749*88174d5dSLuca Weiss }, 1750*88174d5dSLuca Weiss .num_parents = 1, 1751*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1752*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1753*88174d5dSLuca Weiss }, 1754*88174d5dSLuca Weiss }, 1755*88174d5dSLuca Weiss }; 1756*88174d5dSLuca Weiss 1757*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_1_slv_axi_clk = { 1758*88174d5dSLuca Weiss .halt_reg = 0x9001c, 1759*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1760*88174d5dSLuca Weiss .hwcg_reg = 0x9001c, 1761*88174d5dSLuca Weiss .hwcg_bit = 1, 1762*88174d5dSLuca Weiss .clkr = { 1763*88174d5dSLuca Weiss .enable_reg = 0x52000, 1764*88174d5dSLuca Weiss .enable_mask = BIT(26), 1765*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1766*88174d5dSLuca Weiss .name = "gcc_pcie_1_slv_axi_clk", 1767*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1768*88174d5dSLuca Weiss }, 1769*88174d5dSLuca Weiss }, 1770*88174d5dSLuca Weiss }; 1771*88174d5dSLuca Weiss 1772*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = { 1773*88174d5dSLuca Weiss .halt_reg = 0x90018, 1774*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1775*88174d5dSLuca Weiss .clkr = { 1776*88174d5dSLuca Weiss .enable_reg = 0x52000, 1777*88174d5dSLuca Weiss .enable_mask = BIT(25), 1778*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1779*88174d5dSLuca Weiss .name = "gcc_pcie_1_slv_q2a_axi_clk", 1780*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1781*88174d5dSLuca Weiss }, 1782*88174d5dSLuca Weiss }, 1783*88174d5dSLuca Weiss }; 1784*88174d5dSLuca Weiss 1785*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_rscc_cfg_ahb_clk = { 1786*88174d5dSLuca Weiss .halt_reg = 0x11004, 1787*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1788*88174d5dSLuca Weiss .hwcg_reg = 0x11004, 1789*88174d5dSLuca Weiss .hwcg_bit = 1, 1790*88174d5dSLuca Weiss .clkr = { 1791*88174d5dSLuca Weiss .enable_reg = 0x52010, 1792*88174d5dSLuca Weiss .enable_mask = BIT(20), 1793*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1794*88174d5dSLuca Weiss .name = "gcc_pcie_rscc_cfg_ahb_clk", 1795*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1796*88174d5dSLuca Weiss }, 1797*88174d5dSLuca Weiss }, 1798*88174d5dSLuca Weiss }; 1799*88174d5dSLuca Weiss 1800*88174d5dSLuca Weiss static struct clk_branch gcc_pcie_rscc_xo_clk = { 1801*88174d5dSLuca Weiss .halt_reg = 0x11008, 1802*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1803*88174d5dSLuca Weiss .clkr = { 1804*88174d5dSLuca Weiss .enable_reg = 0x52010, 1805*88174d5dSLuca Weiss .enable_mask = BIT(21), 1806*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1807*88174d5dSLuca Weiss .name = "gcc_pcie_rscc_xo_clk", 1808*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1809*88174d5dSLuca Weiss }, 1810*88174d5dSLuca Weiss }, 1811*88174d5dSLuca Weiss }; 1812*88174d5dSLuca Weiss 1813*88174d5dSLuca Weiss static struct clk_branch gcc_pdm2_clk = { 1814*88174d5dSLuca Weiss .halt_reg = 0x3300c, 1815*88174d5dSLuca Weiss .halt_check = BRANCH_HALT, 1816*88174d5dSLuca Weiss .clkr = { 1817*88174d5dSLuca Weiss .enable_reg = 0x3300c, 1818*88174d5dSLuca Weiss .enable_mask = BIT(0), 1819*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1820*88174d5dSLuca Weiss .name = "gcc_pdm2_clk", 1821*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 1822*88174d5dSLuca Weiss &gcc_pdm2_clk_src.clkr.hw, 1823*88174d5dSLuca Weiss }, 1824*88174d5dSLuca Weiss .num_parents = 1, 1825*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 1826*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1827*88174d5dSLuca Weiss }, 1828*88174d5dSLuca Weiss }, 1829*88174d5dSLuca Weiss }; 1830*88174d5dSLuca Weiss 1831*88174d5dSLuca Weiss static struct clk_branch gcc_pdm_ahb_clk = { 1832*88174d5dSLuca Weiss .halt_reg = 0x33004, 1833*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1834*88174d5dSLuca Weiss .hwcg_reg = 0x33004, 1835*88174d5dSLuca Weiss .hwcg_bit = 1, 1836*88174d5dSLuca Weiss .clkr = { 1837*88174d5dSLuca Weiss .enable_reg = 0x33004, 1838*88174d5dSLuca Weiss .enable_mask = BIT(0), 1839*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1840*88174d5dSLuca Weiss .name = "gcc_pdm_ahb_clk", 1841*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1842*88174d5dSLuca Weiss }, 1843*88174d5dSLuca Weiss }, 1844*88174d5dSLuca Weiss }; 1845*88174d5dSLuca Weiss 1846*88174d5dSLuca Weiss static struct clk_branch gcc_pdm_xo4_clk = { 1847*88174d5dSLuca Weiss .halt_reg = 0x33008, 1848*88174d5dSLuca Weiss .halt_check = BRANCH_HALT, 1849*88174d5dSLuca Weiss .clkr = { 1850*88174d5dSLuca Weiss .enable_reg = 0x33008, 1851*88174d5dSLuca Weiss .enable_mask = BIT(0), 1852*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1853*88174d5dSLuca Weiss .name = "gcc_pdm_xo4_clk", 1854*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1855*88174d5dSLuca Weiss }, 1856*88174d5dSLuca Weiss }, 1857*88174d5dSLuca Weiss }; 1858*88174d5dSLuca Weiss 1859*88174d5dSLuca Weiss static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = { 1860*88174d5dSLuca Weiss .halt_reg = 0x26008, 1861*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1862*88174d5dSLuca Weiss .hwcg_reg = 0x26008, 1863*88174d5dSLuca Weiss .hwcg_bit = 1, 1864*88174d5dSLuca Weiss .clkr = { 1865*88174d5dSLuca Weiss .enable_reg = 0x26008, 1866*88174d5dSLuca Weiss .enable_mask = BIT(0), 1867*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1868*88174d5dSLuca Weiss .name = "gcc_qmip_camera_nrt_ahb_clk", 1869*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1870*88174d5dSLuca Weiss }, 1871*88174d5dSLuca Weiss }, 1872*88174d5dSLuca Weiss }; 1873*88174d5dSLuca Weiss 1874*88174d5dSLuca Weiss static struct clk_branch gcc_qmip_camera_rt_ahb_clk = { 1875*88174d5dSLuca Weiss .halt_reg = 0x2600c, 1876*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1877*88174d5dSLuca Weiss .hwcg_reg = 0x2600c, 1878*88174d5dSLuca Weiss .hwcg_bit = 1, 1879*88174d5dSLuca Weiss .clkr = { 1880*88174d5dSLuca Weiss .enable_reg = 0x2600c, 1881*88174d5dSLuca Weiss .enable_mask = BIT(0), 1882*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1883*88174d5dSLuca Weiss .name = "gcc_qmip_camera_rt_ahb_clk", 1884*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1885*88174d5dSLuca Weiss }, 1886*88174d5dSLuca Weiss }, 1887*88174d5dSLuca Weiss }; 1888*88174d5dSLuca Weiss 1889*88174d5dSLuca Weiss static struct clk_branch gcc_qmip_disp_ahb_clk = { 1890*88174d5dSLuca Weiss .halt_reg = 0x27008, 1891*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1892*88174d5dSLuca Weiss .hwcg_reg = 0x27008, 1893*88174d5dSLuca Weiss .hwcg_bit = 1, 1894*88174d5dSLuca Weiss .clkr = { 1895*88174d5dSLuca Weiss .enable_reg = 0x27008, 1896*88174d5dSLuca Weiss .enable_mask = BIT(0), 1897*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1898*88174d5dSLuca Weiss .name = "gcc_qmip_disp_ahb_clk", 1899*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1900*88174d5dSLuca Weiss }, 1901*88174d5dSLuca Weiss }, 1902*88174d5dSLuca Weiss }; 1903*88174d5dSLuca Weiss 1904*88174d5dSLuca Weiss static struct clk_branch gcc_qmip_gpu_ahb_clk = { 1905*88174d5dSLuca Weiss .halt_reg = 0x71008, 1906*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1907*88174d5dSLuca Weiss .hwcg_reg = 0x71008, 1908*88174d5dSLuca Weiss .hwcg_bit = 1, 1909*88174d5dSLuca Weiss .clkr = { 1910*88174d5dSLuca Weiss .enable_reg = 0x71008, 1911*88174d5dSLuca Weiss .enable_mask = BIT(0), 1912*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1913*88174d5dSLuca Weiss .name = "gcc_qmip_gpu_ahb_clk", 1914*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1915*88174d5dSLuca Weiss }, 1916*88174d5dSLuca Weiss }, 1917*88174d5dSLuca Weiss }; 1918*88174d5dSLuca Weiss 1919*88174d5dSLuca Weiss static struct clk_branch gcc_qmip_pcie_ahb_clk = { 1920*88174d5dSLuca Weiss .halt_reg = 0x6b018, 1921*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1922*88174d5dSLuca Weiss .hwcg_reg = 0x6b018, 1923*88174d5dSLuca Weiss .hwcg_bit = 1, 1924*88174d5dSLuca Weiss .clkr = { 1925*88174d5dSLuca Weiss .enable_reg = 0x52000, 1926*88174d5dSLuca Weiss .enable_mask = BIT(11), 1927*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1928*88174d5dSLuca Weiss .name = "gcc_qmip_pcie_ahb_clk", 1929*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1930*88174d5dSLuca Weiss }, 1931*88174d5dSLuca Weiss }, 1932*88174d5dSLuca Weiss }; 1933*88174d5dSLuca Weiss 1934*88174d5dSLuca Weiss static struct clk_branch gcc_qmip_video_cv_cpu_ahb_clk = { 1935*88174d5dSLuca Weiss .halt_reg = 0x32014, 1936*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1937*88174d5dSLuca Weiss .hwcg_reg = 0x32014, 1938*88174d5dSLuca Weiss .hwcg_bit = 1, 1939*88174d5dSLuca Weiss .clkr = { 1940*88174d5dSLuca Weiss .enable_reg = 0x32014, 1941*88174d5dSLuca Weiss .enable_mask = BIT(0), 1942*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1943*88174d5dSLuca Weiss .name = "gcc_qmip_video_cv_cpu_ahb_clk", 1944*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1945*88174d5dSLuca Weiss }, 1946*88174d5dSLuca Weiss }, 1947*88174d5dSLuca Weiss }; 1948*88174d5dSLuca Weiss 1949*88174d5dSLuca Weiss static struct clk_branch gcc_qmip_video_cvp_ahb_clk = { 1950*88174d5dSLuca Weiss .halt_reg = 0x32008, 1951*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1952*88174d5dSLuca Weiss .hwcg_reg = 0x32008, 1953*88174d5dSLuca Weiss .hwcg_bit = 1, 1954*88174d5dSLuca Weiss .clkr = { 1955*88174d5dSLuca Weiss .enable_reg = 0x32008, 1956*88174d5dSLuca Weiss .enable_mask = BIT(0), 1957*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1958*88174d5dSLuca Weiss .name = "gcc_qmip_video_cvp_ahb_clk", 1959*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1960*88174d5dSLuca Weiss }, 1961*88174d5dSLuca Weiss }, 1962*88174d5dSLuca Weiss }; 1963*88174d5dSLuca Weiss 1964*88174d5dSLuca Weiss static struct clk_branch gcc_qmip_video_v_cpu_ahb_clk = { 1965*88174d5dSLuca Weiss .halt_reg = 0x32010, 1966*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1967*88174d5dSLuca Weiss .hwcg_reg = 0x32010, 1968*88174d5dSLuca Weiss .hwcg_bit = 1, 1969*88174d5dSLuca Weiss .clkr = { 1970*88174d5dSLuca Weiss .enable_reg = 0x32010, 1971*88174d5dSLuca Weiss .enable_mask = BIT(0), 1972*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1973*88174d5dSLuca Weiss .name = "gcc_qmip_video_v_cpu_ahb_clk", 1974*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1975*88174d5dSLuca Weiss }, 1976*88174d5dSLuca Weiss }, 1977*88174d5dSLuca Weiss }; 1978*88174d5dSLuca Weiss 1979*88174d5dSLuca Weiss static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = { 1980*88174d5dSLuca Weiss .halt_reg = 0x3200c, 1981*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1982*88174d5dSLuca Weiss .hwcg_reg = 0x3200c, 1983*88174d5dSLuca Weiss .hwcg_bit = 1, 1984*88174d5dSLuca Weiss .clkr = { 1985*88174d5dSLuca Weiss .enable_reg = 0x3200c, 1986*88174d5dSLuca Weiss .enable_mask = BIT(0), 1987*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 1988*88174d5dSLuca Weiss .name = "gcc_qmip_video_vcodec_ahb_clk", 1989*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 1990*88174d5dSLuca Weiss }, 1991*88174d5dSLuca Weiss }, 1992*88174d5dSLuca Weiss }; 1993*88174d5dSLuca Weiss 1994*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = { 1995*88174d5dSLuca Weiss .halt_reg = 0x23018, 1996*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 1997*88174d5dSLuca Weiss .clkr = { 1998*88174d5dSLuca Weiss .enable_reg = 0x52008, 1999*88174d5dSLuca Weiss .enable_mask = BIT(18), 2000*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2001*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_core_2x_clk", 2002*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2003*88174d5dSLuca Weiss }, 2004*88174d5dSLuca Weiss }, 2005*88174d5dSLuca Weiss }; 2006*88174d5dSLuca Weiss 2007*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap0_core_clk = { 2008*88174d5dSLuca Weiss .halt_reg = 0x23008, 2009*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2010*88174d5dSLuca Weiss .clkr = { 2011*88174d5dSLuca Weiss .enable_reg = 0x52008, 2012*88174d5dSLuca Weiss .enable_mask = BIT(19), 2013*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2014*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_core_clk", 2015*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2016*88174d5dSLuca Weiss }, 2017*88174d5dSLuca Weiss }, 2018*88174d5dSLuca Weiss }; 2019*88174d5dSLuca Weiss 2020*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap0_qspi_ref_clk = { 2021*88174d5dSLuca Weiss .halt_reg = 0x18764, 2022*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2023*88174d5dSLuca Weiss .clkr = { 2024*88174d5dSLuca Weiss .enable_reg = 0x52010, 2025*88174d5dSLuca Weiss .enable_mask = BIT(29), 2026*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2027*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_qspi_ref_clk", 2028*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2029*88174d5dSLuca Weiss &gcc_qupv3_wrap0_qspi_ref_clk_src.clkr.hw, 2030*88174d5dSLuca Weiss }, 2031*88174d5dSLuca Weiss .num_parents = 1, 2032*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2033*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2034*88174d5dSLuca Weiss }, 2035*88174d5dSLuca Weiss }, 2036*88174d5dSLuca Weiss }; 2037*88174d5dSLuca Weiss 2038*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap0_s0_clk = { 2039*88174d5dSLuca Weiss .halt_reg = 0x18004, 2040*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2041*88174d5dSLuca Weiss .clkr = { 2042*88174d5dSLuca Weiss .enable_reg = 0x52008, 2043*88174d5dSLuca Weiss .enable_mask = BIT(22), 2044*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2045*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_s0_clk", 2046*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2047*88174d5dSLuca Weiss &gcc_qupv3_wrap0_s0_clk_src.clkr.hw, 2048*88174d5dSLuca Weiss }, 2049*88174d5dSLuca Weiss .num_parents = 1, 2050*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2051*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2052*88174d5dSLuca Weiss }, 2053*88174d5dSLuca Weiss }, 2054*88174d5dSLuca Weiss }; 2055*88174d5dSLuca Weiss 2056*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap0_s1_clk = { 2057*88174d5dSLuca Weiss .halt_reg = 0x1813c, 2058*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2059*88174d5dSLuca Weiss .clkr = { 2060*88174d5dSLuca Weiss .enable_reg = 0x52008, 2061*88174d5dSLuca Weiss .enable_mask = BIT(23), 2062*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2063*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_s1_clk", 2064*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2065*88174d5dSLuca Weiss &gcc_qupv3_wrap0_s1_clk_src.clkr.hw, 2066*88174d5dSLuca Weiss }, 2067*88174d5dSLuca Weiss .num_parents = 1, 2068*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2069*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2070*88174d5dSLuca Weiss }, 2071*88174d5dSLuca Weiss }, 2072*88174d5dSLuca Weiss }; 2073*88174d5dSLuca Weiss 2074*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap0_s2_clk = { 2075*88174d5dSLuca Weiss .halt_reg = 0x18274, 2076*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2077*88174d5dSLuca Weiss .clkr = { 2078*88174d5dSLuca Weiss .enable_reg = 0x52008, 2079*88174d5dSLuca Weiss .enable_mask = BIT(24), 2080*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2081*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_s2_clk", 2082*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2083*88174d5dSLuca Weiss &gcc_qupv3_wrap0_s2_clk_src.clkr.hw, 2084*88174d5dSLuca Weiss }, 2085*88174d5dSLuca Weiss .num_parents = 1, 2086*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2087*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2088*88174d5dSLuca Weiss }, 2089*88174d5dSLuca Weiss }, 2090*88174d5dSLuca Weiss }; 2091*88174d5dSLuca Weiss 2092*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap0_s3_clk = { 2093*88174d5dSLuca Weiss .halt_reg = 0x18284, 2094*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2095*88174d5dSLuca Weiss .clkr = { 2096*88174d5dSLuca Weiss .enable_reg = 0x52008, 2097*88174d5dSLuca Weiss .enable_mask = BIT(25), 2098*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2099*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_s3_clk", 2100*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2101*88174d5dSLuca Weiss &gcc_qupv3_wrap0_s3_clk_src.clkr.hw, 2102*88174d5dSLuca Weiss }, 2103*88174d5dSLuca Weiss .num_parents = 1, 2104*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2105*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2106*88174d5dSLuca Weiss }, 2107*88174d5dSLuca Weiss }, 2108*88174d5dSLuca Weiss }; 2109*88174d5dSLuca Weiss 2110*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap0_s4_clk = { 2111*88174d5dSLuca Weiss .halt_reg = 0x183bc, 2112*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2113*88174d5dSLuca Weiss .clkr = { 2114*88174d5dSLuca Weiss .enable_reg = 0x52008, 2115*88174d5dSLuca Weiss .enable_mask = BIT(26), 2116*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2117*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_s4_clk", 2118*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2119*88174d5dSLuca Weiss &gcc_qupv3_wrap0_s4_clk_src.clkr.hw, 2120*88174d5dSLuca Weiss }, 2121*88174d5dSLuca Weiss .num_parents = 1, 2122*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2123*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2124*88174d5dSLuca Weiss }, 2125*88174d5dSLuca Weiss }, 2126*88174d5dSLuca Weiss }; 2127*88174d5dSLuca Weiss 2128*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap0_s5_clk = { 2129*88174d5dSLuca Weiss .halt_reg = 0x184f4, 2130*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2131*88174d5dSLuca Weiss .clkr = { 2132*88174d5dSLuca Weiss .enable_reg = 0x52008, 2133*88174d5dSLuca Weiss .enable_mask = BIT(27), 2134*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2135*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_s5_clk", 2136*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2137*88174d5dSLuca Weiss &gcc_qupv3_wrap0_s5_clk_src.clkr.hw, 2138*88174d5dSLuca Weiss }, 2139*88174d5dSLuca Weiss .num_parents = 1, 2140*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2141*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2142*88174d5dSLuca Weiss }, 2143*88174d5dSLuca Weiss }, 2144*88174d5dSLuca Weiss }; 2145*88174d5dSLuca Weiss 2146*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap0_s6_clk = { 2147*88174d5dSLuca Weiss .halt_reg = 0x1862c, 2148*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2149*88174d5dSLuca Weiss .clkr = { 2150*88174d5dSLuca Weiss .enable_reg = 0x52008, 2151*88174d5dSLuca Weiss .enable_mask = BIT(28), 2152*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2153*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap0_s6_clk", 2154*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2155*88174d5dSLuca Weiss &gcc_qupv3_wrap0_s6_clk_src.clkr.hw, 2156*88174d5dSLuca Weiss }, 2157*88174d5dSLuca Weiss .num_parents = 1, 2158*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2159*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2160*88174d5dSLuca Weiss }, 2161*88174d5dSLuca Weiss }, 2162*88174d5dSLuca Weiss }; 2163*88174d5dSLuca Weiss 2164*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = { 2165*88174d5dSLuca Weiss .halt_reg = 0x23168, 2166*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2167*88174d5dSLuca Weiss .clkr = { 2168*88174d5dSLuca Weiss .enable_reg = 0x52010, 2169*88174d5dSLuca Weiss .enable_mask = BIT(3), 2170*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2171*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_core_2x_clk", 2172*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2173*88174d5dSLuca Weiss }, 2174*88174d5dSLuca Weiss }, 2175*88174d5dSLuca Weiss }; 2176*88174d5dSLuca Weiss 2177*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap1_core_clk = { 2178*88174d5dSLuca Weiss .halt_reg = 0x23158, 2179*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2180*88174d5dSLuca Weiss .clkr = { 2181*88174d5dSLuca Weiss .enable_reg = 0x52010, 2182*88174d5dSLuca Weiss .enable_mask = BIT(0), 2183*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2184*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_core_clk", 2185*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2186*88174d5dSLuca Weiss }, 2187*88174d5dSLuca Weiss }, 2188*88174d5dSLuca Weiss }; 2189*88174d5dSLuca Weiss 2190*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap1_qspi_ref_clk = { 2191*88174d5dSLuca Weiss .halt_reg = 0x1e764, 2192*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2193*88174d5dSLuca Weiss .clkr = { 2194*88174d5dSLuca Weiss .enable_reg = 0x52010, 2195*88174d5dSLuca Weiss .enable_mask = BIT(30), 2196*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2197*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_qspi_ref_clk", 2198*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2199*88174d5dSLuca Weiss &gcc_qupv3_wrap1_qspi_ref_clk_src.clkr.hw, 2200*88174d5dSLuca Weiss }, 2201*88174d5dSLuca Weiss .num_parents = 1, 2202*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2203*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2204*88174d5dSLuca Weiss }, 2205*88174d5dSLuca Weiss }, 2206*88174d5dSLuca Weiss }; 2207*88174d5dSLuca Weiss 2208*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap1_s0_clk = { 2209*88174d5dSLuca Weiss .halt_reg = 0x1e004, 2210*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2211*88174d5dSLuca Weiss .clkr = { 2212*88174d5dSLuca Weiss .enable_reg = 0x52010, 2213*88174d5dSLuca Weiss .enable_mask = BIT(4), 2214*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2215*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_s0_clk", 2216*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2217*88174d5dSLuca Weiss &gcc_qupv3_wrap1_s0_clk_src.clkr.hw, 2218*88174d5dSLuca Weiss }, 2219*88174d5dSLuca Weiss .num_parents = 1, 2220*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2221*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2222*88174d5dSLuca Weiss }, 2223*88174d5dSLuca Weiss }, 2224*88174d5dSLuca Weiss }; 2225*88174d5dSLuca Weiss 2226*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap1_s1_clk = { 2227*88174d5dSLuca Weiss .halt_reg = 0x1e13c, 2228*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2229*88174d5dSLuca Weiss .clkr = { 2230*88174d5dSLuca Weiss .enable_reg = 0x52010, 2231*88174d5dSLuca Weiss .enable_mask = BIT(5), 2232*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2233*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_s1_clk", 2234*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2235*88174d5dSLuca Weiss &gcc_qupv3_wrap1_s1_clk_src.clkr.hw, 2236*88174d5dSLuca Weiss }, 2237*88174d5dSLuca Weiss .num_parents = 1, 2238*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2239*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2240*88174d5dSLuca Weiss }, 2241*88174d5dSLuca Weiss }, 2242*88174d5dSLuca Weiss }; 2243*88174d5dSLuca Weiss 2244*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap1_s2_clk = { 2245*88174d5dSLuca Weiss .halt_reg = 0x1e274, 2246*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2247*88174d5dSLuca Weiss .clkr = { 2248*88174d5dSLuca Weiss .enable_reg = 0x52010, 2249*88174d5dSLuca Weiss .enable_mask = BIT(6), 2250*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2251*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_s2_clk", 2252*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2253*88174d5dSLuca Weiss &gcc_qupv3_wrap1_s2_clk_src.clkr.hw, 2254*88174d5dSLuca Weiss }, 2255*88174d5dSLuca Weiss .num_parents = 1, 2256*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2257*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2258*88174d5dSLuca Weiss }, 2259*88174d5dSLuca Weiss }, 2260*88174d5dSLuca Weiss }; 2261*88174d5dSLuca Weiss 2262*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap1_s3_clk = { 2263*88174d5dSLuca Weiss .halt_reg = 0x1e284, 2264*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2265*88174d5dSLuca Weiss .clkr = { 2266*88174d5dSLuca Weiss .enable_reg = 0x52010, 2267*88174d5dSLuca Weiss .enable_mask = BIT(7), 2268*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2269*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_s3_clk", 2270*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2271*88174d5dSLuca Weiss &gcc_qupv3_wrap1_s3_clk_src.clkr.hw, 2272*88174d5dSLuca Weiss }, 2273*88174d5dSLuca Weiss .num_parents = 1, 2274*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2275*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2276*88174d5dSLuca Weiss }, 2277*88174d5dSLuca Weiss }, 2278*88174d5dSLuca Weiss }; 2279*88174d5dSLuca Weiss 2280*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap1_s4_clk = { 2281*88174d5dSLuca Weiss .halt_reg = 0x1e3bc, 2282*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2283*88174d5dSLuca Weiss .clkr = { 2284*88174d5dSLuca Weiss .enable_reg = 0x52010, 2285*88174d5dSLuca Weiss .enable_mask = BIT(8), 2286*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2287*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_s4_clk", 2288*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2289*88174d5dSLuca Weiss &gcc_qupv3_wrap1_s4_clk_src.clkr.hw, 2290*88174d5dSLuca Weiss }, 2291*88174d5dSLuca Weiss .num_parents = 1, 2292*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2293*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2294*88174d5dSLuca Weiss }, 2295*88174d5dSLuca Weiss }, 2296*88174d5dSLuca Weiss }; 2297*88174d5dSLuca Weiss 2298*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap1_s5_clk = { 2299*88174d5dSLuca Weiss .halt_reg = 0x1e4f4, 2300*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2301*88174d5dSLuca Weiss .clkr = { 2302*88174d5dSLuca Weiss .enable_reg = 0x52010, 2303*88174d5dSLuca Weiss .enable_mask = BIT(9), 2304*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2305*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_s5_clk", 2306*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2307*88174d5dSLuca Weiss &gcc_qupv3_wrap1_s5_clk_src.clkr.hw, 2308*88174d5dSLuca Weiss }, 2309*88174d5dSLuca Weiss .num_parents = 1, 2310*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2311*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2312*88174d5dSLuca Weiss }, 2313*88174d5dSLuca Weiss }, 2314*88174d5dSLuca Weiss }; 2315*88174d5dSLuca Weiss 2316*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap1_s6_clk = { 2317*88174d5dSLuca Weiss .halt_reg = 0x1e62c, 2318*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2319*88174d5dSLuca Weiss .clkr = { 2320*88174d5dSLuca Weiss .enable_reg = 0x52010, 2321*88174d5dSLuca Weiss .enable_mask = BIT(10), 2322*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2323*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap1_s6_clk", 2324*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2325*88174d5dSLuca Weiss &gcc_qupv3_wrap1_s6_clk_src.clkr.hw, 2326*88174d5dSLuca Weiss }, 2327*88174d5dSLuca Weiss .num_parents = 1, 2328*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2329*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2330*88174d5dSLuca Weiss }, 2331*88174d5dSLuca Weiss }, 2332*88174d5dSLuca Weiss }; 2333*88174d5dSLuca Weiss 2334*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = { 2335*88174d5dSLuca Weiss .halt_reg = 0x23000, 2336*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2337*88174d5dSLuca Weiss .clkr = { 2338*88174d5dSLuca Weiss .enable_reg = 0x52008, 2339*88174d5dSLuca Weiss .enable_mask = BIT(20), 2340*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2341*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap_0_m_ahb_clk", 2342*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2343*88174d5dSLuca Weiss }, 2344*88174d5dSLuca Weiss }, 2345*88174d5dSLuca Weiss }; 2346*88174d5dSLuca Weiss 2347*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = { 2348*88174d5dSLuca Weiss .halt_reg = 0x23004, 2349*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2350*88174d5dSLuca Weiss .hwcg_reg = 0x23004, 2351*88174d5dSLuca Weiss .hwcg_bit = 1, 2352*88174d5dSLuca Weiss .clkr = { 2353*88174d5dSLuca Weiss .enable_reg = 0x52008, 2354*88174d5dSLuca Weiss .enable_mask = BIT(21), 2355*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2356*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap_0_s_ahb_clk", 2357*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2358*88174d5dSLuca Weiss }, 2359*88174d5dSLuca Weiss }, 2360*88174d5dSLuca Weiss }; 2361*88174d5dSLuca Weiss 2362*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = { 2363*88174d5dSLuca Weiss .halt_reg = 0x23150, 2364*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2365*88174d5dSLuca Weiss .clkr = { 2366*88174d5dSLuca Weiss .enable_reg = 0x52010, 2367*88174d5dSLuca Weiss .enable_mask = BIT(2), 2368*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2369*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap_1_m_ahb_clk", 2370*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2371*88174d5dSLuca Weiss }, 2372*88174d5dSLuca Weiss }, 2373*88174d5dSLuca Weiss }; 2374*88174d5dSLuca Weiss 2375*88174d5dSLuca Weiss static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = { 2376*88174d5dSLuca Weiss .halt_reg = 0x23154, 2377*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2378*88174d5dSLuca Weiss .hwcg_reg = 0x23154, 2379*88174d5dSLuca Weiss .hwcg_bit = 1, 2380*88174d5dSLuca Weiss .clkr = { 2381*88174d5dSLuca Weiss .enable_reg = 0x52010, 2382*88174d5dSLuca Weiss .enable_mask = BIT(1), 2383*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2384*88174d5dSLuca Weiss .name = "gcc_qupv3_wrap_1_s_ahb_clk", 2385*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2386*88174d5dSLuca Weiss }, 2387*88174d5dSLuca Weiss }, 2388*88174d5dSLuca Weiss }; 2389*88174d5dSLuca Weiss 2390*88174d5dSLuca Weiss static struct clk_branch gcc_sdcc1_ahb_clk = { 2391*88174d5dSLuca Weiss .halt_reg = 0xa3004, 2392*88174d5dSLuca Weiss .halt_check = BRANCH_HALT, 2393*88174d5dSLuca Weiss .clkr = { 2394*88174d5dSLuca Weiss .enable_reg = 0xa3004, 2395*88174d5dSLuca Weiss .enable_mask = BIT(0), 2396*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2397*88174d5dSLuca Weiss .name = "gcc_sdcc1_ahb_clk", 2398*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2399*88174d5dSLuca Weiss }, 2400*88174d5dSLuca Weiss }, 2401*88174d5dSLuca Weiss }; 2402*88174d5dSLuca Weiss 2403*88174d5dSLuca Weiss static struct clk_branch gcc_sdcc1_apps_clk = { 2404*88174d5dSLuca Weiss .halt_reg = 0xa3008, 2405*88174d5dSLuca Weiss .halt_check = BRANCH_HALT, 2406*88174d5dSLuca Weiss .clkr = { 2407*88174d5dSLuca Weiss .enable_reg = 0xa3008, 2408*88174d5dSLuca Weiss .enable_mask = BIT(0), 2409*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2410*88174d5dSLuca Weiss .name = "gcc_sdcc1_apps_clk", 2411*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2412*88174d5dSLuca Weiss &gcc_sdcc1_apps_clk_src.clkr.hw, 2413*88174d5dSLuca Weiss }, 2414*88174d5dSLuca Weiss .num_parents = 1, 2415*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2416*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2417*88174d5dSLuca Weiss }, 2418*88174d5dSLuca Weiss }, 2419*88174d5dSLuca Weiss }; 2420*88174d5dSLuca Weiss 2421*88174d5dSLuca Weiss static struct clk_branch gcc_sdcc1_ice_core_clk = { 2422*88174d5dSLuca Weiss .halt_reg = 0xa302c, 2423*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2424*88174d5dSLuca Weiss .hwcg_reg = 0xa302c, 2425*88174d5dSLuca Weiss .hwcg_bit = 1, 2426*88174d5dSLuca Weiss .clkr = { 2427*88174d5dSLuca Weiss .enable_reg = 0xa302c, 2428*88174d5dSLuca Weiss .enable_mask = BIT(0), 2429*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2430*88174d5dSLuca Weiss .name = "gcc_sdcc1_ice_core_clk", 2431*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2432*88174d5dSLuca Weiss &gcc_sdcc1_ice_core_clk_src.clkr.hw, 2433*88174d5dSLuca Weiss }, 2434*88174d5dSLuca Weiss .num_parents = 1, 2435*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2436*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2437*88174d5dSLuca Weiss }, 2438*88174d5dSLuca Weiss }, 2439*88174d5dSLuca Weiss }; 2440*88174d5dSLuca Weiss 2441*88174d5dSLuca Weiss static struct clk_branch gcc_sdcc2_ahb_clk = { 2442*88174d5dSLuca Weiss .halt_reg = 0x14010, 2443*88174d5dSLuca Weiss .halt_check = BRANCH_HALT, 2444*88174d5dSLuca Weiss .clkr = { 2445*88174d5dSLuca Weiss .enable_reg = 0x14010, 2446*88174d5dSLuca Weiss .enable_mask = BIT(0), 2447*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2448*88174d5dSLuca Weiss .name = "gcc_sdcc2_ahb_clk", 2449*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2450*88174d5dSLuca Weiss }, 2451*88174d5dSLuca Weiss }, 2452*88174d5dSLuca Weiss }; 2453*88174d5dSLuca Weiss 2454*88174d5dSLuca Weiss static struct clk_branch gcc_sdcc2_apps_clk = { 2455*88174d5dSLuca Weiss .halt_reg = 0x14004, 2456*88174d5dSLuca Weiss .halt_check = BRANCH_HALT, 2457*88174d5dSLuca Weiss .clkr = { 2458*88174d5dSLuca Weiss .enable_reg = 0x14004, 2459*88174d5dSLuca Weiss .enable_mask = BIT(0), 2460*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2461*88174d5dSLuca Weiss .name = "gcc_sdcc2_apps_clk", 2462*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2463*88174d5dSLuca Weiss &gcc_sdcc2_apps_clk_src.clkr.hw, 2464*88174d5dSLuca Weiss }, 2465*88174d5dSLuca Weiss .num_parents = 1, 2466*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2467*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2468*88174d5dSLuca Weiss }, 2469*88174d5dSLuca Weiss }, 2470*88174d5dSLuca Weiss }; 2471*88174d5dSLuca Weiss 2472*88174d5dSLuca Weiss static struct clk_branch gcc_ufs_phy_ahb_clk = { 2473*88174d5dSLuca Weiss .halt_reg = 0x77024, 2474*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2475*88174d5dSLuca Weiss .hwcg_reg = 0x77024, 2476*88174d5dSLuca Weiss .hwcg_bit = 1, 2477*88174d5dSLuca Weiss .clkr = { 2478*88174d5dSLuca Weiss .enable_reg = 0x77024, 2479*88174d5dSLuca Weiss .enable_mask = BIT(0), 2480*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2481*88174d5dSLuca Weiss .name = "gcc_ufs_phy_ahb_clk", 2482*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2483*88174d5dSLuca Weiss }, 2484*88174d5dSLuca Weiss }, 2485*88174d5dSLuca Weiss }; 2486*88174d5dSLuca Weiss 2487*88174d5dSLuca Weiss static struct clk_branch gcc_ufs_phy_axi_clk = { 2488*88174d5dSLuca Weiss .halt_reg = 0x77018, 2489*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2490*88174d5dSLuca Weiss .hwcg_reg = 0x77018, 2491*88174d5dSLuca Weiss .hwcg_bit = 1, 2492*88174d5dSLuca Weiss .clkr = { 2493*88174d5dSLuca Weiss .enable_reg = 0x77018, 2494*88174d5dSLuca Weiss .enable_mask = BIT(0), 2495*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2496*88174d5dSLuca Weiss .name = "gcc_ufs_phy_axi_clk", 2497*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2498*88174d5dSLuca Weiss &gcc_ufs_phy_axi_clk_src.clkr.hw, 2499*88174d5dSLuca Weiss }, 2500*88174d5dSLuca Weiss .num_parents = 1, 2501*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2502*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2503*88174d5dSLuca Weiss }, 2504*88174d5dSLuca Weiss }, 2505*88174d5dSLuca Weiss }; 2506*88174d5dSLuca Weiss 2507*88174d5dSLuca Weiss static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk = { 2508*88174d5dSLuca Weiss .halt_reg = 0x77018, 2509*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2510*88174d5dSLuca Weiss .hwcg_reg = 0x77018, 2511*88174d5dSLuca Weiss .hwcg_bit = 1, 2512*88174d5dSLuca Weiss .clkr = { 2513*88174d5dSLuca Weiss .enable_reg = 0x77018, 2514*88174d5dSLuca Weiss .enable_mask = BIT(1), 2515*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2516*88174d5dSLuca Weiss .name = "gcc_ufs_phy_axi_hw_ctl_clk", 2517*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2518*88174d5dSLuca Weiss &gcc_ufs_phy_axi_clk_src.clkr.hw, 2519*88174d5dSLuca Weiss }, 2520*88174d5dSLuca Weiss .num_parents = 1, 2521*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2522*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2523*88174d5dSLuca Weiss }, 2524*88174d5dSLuca Weiss }, 2525*88174d5dSLuca Weiss }; 2526*88174d5dSLuca Weiss 2527*88174d5dSLuca Weiss static struct clk_branch gcc_ufs_phy_ice_core_clk = { 2528*88174d5dSLuca Weiss .halt_reg = 0x77074, 2529*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2530*88174d5dSLuca Weiss .hwcg_reg = 0x77074, 2531*88174d5dSLuca Weiss .hwcg_bit = 1, 2532*88174d5dSLuca Weiss .clkr = { 2533*88174d5dSLuca Weiss .enable_reg = 0x77074, 2534*88174d5dSLuca Weiss .enable_mask = BIT(0), 2535*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2536*88174d5dSLuca Weiss .name = "gcc_ufs_phy_ice_core_clk", 2537*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2538*88174d5dSLuca Weiss &gcc_ufs_phy_ice_core_clk_src.clkr.hw, 2539*88174d5dSLuca Weiss }, 2540*88174d5dSLuca Weiss .num_parents = 1, 2541*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2542*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2543*88174d5dSLuca Weiss }, 2544*88174d5dSLuca Weiss }, 2545*88174d5dSLuca Weiss }; 2546*88174d5dSLuca Weiss 2547*88174d5dSLuca Weiss static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk = { 2548*88174d5dSLuca Weiss .halt_reg = 0x77074, 2549*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2550*88174d5dSLuca Weiss .hwcg_reg = 0x77074, 2551*88174d5dSLuca Weiss .hwcg_bit = 1, 2552*88174d5dSLuca Weiss .clkr = { 2553*88174d5dSLuca Weiss .enable_reg = 0x77074, 2554*88174d5dSLuca Weiss .enable_mask = BIT(1), 2555*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2556*88174d5dSLuca Weiss .name = "gcc_ufs_phy_ice_core_hw_ctl_clk", 2557*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2558*88174d5dSLuca Weiss &gcc_ufs_phy_ice_core_clk_src.clkr.hw, 2559*88174d5dSLuca Weiss }, 2560*88174d5dSLuca Weiss .num_parents = 1, 2561*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2562*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2563*88174d5dSLuca Weiss }, 2564*88174d5dSLuca Weiss }, 2565*88174d5dSLuca Weiss }; 2566*88174d5dSLuca Weiss 2567*88174d5dSLuca Weiss static struct clk_branch gcc_ufs_phy_phy_aux_clk = { 2568*88174d5dSLuca Weiss .halt_reg = 0x770b0, 2569*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2570*88174d5dSLuca Weiss .hwcg_reg = 0x770b0, 2571*88174d5dSLuca Weiss .hwcg_bit = 1, 2572*88174d5dSLuca Weiss .clkr = { 2573*88174d5dSLuca Weiss .enable_reg = 0x770b0, 2574*88174d5dSLuca Weiss .enable_mask = BIT(0), 2575*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2576*88174d5dSLuca Weiss .name = "gcc_ufs_phy_phy_aux_clk", 2577*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2578*88174d5dSLuca Weiss &gcc_ufs_phy_phy_aux_clk_src.clkr.hw, 2579*88174d5dSLuca Weiss }, 2580*88174d5dSLuca Weiss .num_parents = 1, 2581*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2582*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2583*88174d5dSLuca Weiss }, 2584*88174d5dSLuca Weiss }, 2585*88174d5dSLuca Weiss }; 2586*88174d5dSLuca Weiss 2587*88174d5dSLuca Weiss static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk = { 2588*88174d5dSLuca Weiss .halt_reg = 0x770b0, 2589*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2590*88174d5dSLuca Weiss .hwcg_reg = 0x770b0, 2591*88174d5dSLuca Weiss .hwcg_bit = 1, 2592*88174d5dSLuca Weiss .clkr = { 2593*88174d5dSLuca Weiss .enable_reg = 0x770b0, 2594*88174d5dSLuca Weiss .enable_mask = BIT(1), 2595*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2596*88174d5dSLuca Weiss .name = "gcc_ufs_phy_phy_aux_hw_ctl_clk", 2597*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2598*88174d5dSLuca Weiss &gcc_ufs_phy_phy_aux_clk_src.clkr.hw, 2599*88174d5dSLuca Weiss }, 2600*88174d5dSLuca Weiss .num_parents = 1, 2601*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2602*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2603*88174d5dSLuca Weiss }, 2604*88174d5dSLuca Weiss }, 2605*88174d5dSLuca Weiss }; 2606*88174d5dSLuca Weiss 2607*88174d5dSLuca Weiss static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = { 2608*88174d5dSLuca Weiss .halt_reg = 0x7702c, 2609*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_DELAY, 2610*88174d5dSLuca Weiss .clkr = { 2611*88174d5dSLuca Weiss .enable_reg = 0x7702c, 2612*88174d5dSLuca Weiss .enable_mask = BIT(0), 2613*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2614*88174d5dSLuca Weiss .name = "gcc_ufs_phy_rx_symbol_0_clk", 2615*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2616*88174d5dSLuca Weiss &gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw, 2617*88174d5dSLuca Weiss }, 2618*88174d5dSLuca Weiss .num_parents = 1, 2619*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2620*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2621*88174d5dSLuca Weiss }, 2622*88174d5dSLuca Weiss }, 2623*88174d5dSLuca Weiss }; 2624*88174d5dSLuca Weiss 2625*88174d5dSLuca Weiss static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = { 2626*88174d5dSLuca Weiss .halt_reg = 0x770cc, 2627*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_DELAY, 2628*88174d5dSLuca Weiss .clkr = { 2629*88174d5dSLuca Weiss .enable_reg = 0x770cc, 2630*88174d5dSLuca Weiss .enable_mask = BIT(0), 2631*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2632*88174d5dSLuca Weiss .name = "gcc_ufs_phy_rx_symbol_1_clk", 2633*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2634*88174d5dSLuca Weiss &gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw, 2635*88174d5dSLuca Weiss }, 2636*88174d5dSLuca Weiss .num_parents = 1, 2637*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2638*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2639*88174d5dSLuca Weiss }, 2640*88174d5dSLuca Weiss }, 2641*88174d5dSLuca Weiss }; 2642*88174d5dSLuca Weiss 2643*88174d5dSLuca Weiss static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = { 2644*88174d5dSLuca Weiss .halt_reg = 0x77028, 2645*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_DELAY, 2646*88174d5dSLuca Weiss .clkr = { 2647*88174d5dSLuca Weiss .enable_reg = 0x77028, 2648*88174d5dSLuca Weiss .enable_mask = BIT(0), 2649*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2650*88174d5dSLuca Weiss .name = "gcc_ufs_phy_tx_symbol_0_clk", 2651*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2652*88174d5dSLuca Weiss &gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw, 2653*88174d5dSLuca Weiss }, 2654*88174d5dSLuca Weiss .num_parents = 1, 2655*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2656*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2657*88174d5dSLuca Weiss }, 2658*88174d5dSLuca Weiss }, 2659*88174d5dSLuca Weiss }; 2660*88174d5dSLuca Weiss 2661*88174d5dSLuca Weiss static struct clk_branch gcc_ufs_phy_unipro_core_clk = { 2662*88174d5dSLuca Weiss .halt_reg = 0x77068, 2663*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2664*88174d5dSLuca Weiss .hwcg_reg = 0x77068, 2665*88174d5dSLuca Weiss .hwcg_bit = 1, 2666*88174d5dSLuca Weiss .clkr = { 2667*88174d5dSLuca Weiss .enable_reg = 0x77068, 2668*88174d5dSLuca Weiss .enable_mask = BIT(0), 2669*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2670*88174d5dSLuca Weiss .name = "gcc_ufs_phy_unipro_core_clk", 2671*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2672*88174d5dSLuca Weiss &gcc_ufs_phy_unipro_core_clk_src.clkr.hw, 2673*88174d5dSLuca Weiss }, 2674*88174d5dSLuca Weiss .num_parents = 1, 2675*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2676*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2677*88174d5dSLuca Weiss }, 2678*88174d5dSLuca Weiss }, 2679*88174d5dSLuca Weiss }; 2680*88174d5dSLuca Weiss 2681*88174d5dSLuca Weiss static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk = { 2682*88174d5dSLuca Weiss .halt_reg = 0x77068, 2683*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2684*88174d5dSLuca Weiss .hwcg_reg = 0x77068, 2685*88174d5dSLuca Weiss .hwcg_bit = 1, 2686*88174d5dSLuca Weiss .clkr = { 2687*88174d5dSLuca Weiss .enable_reg = 0x77068, 2688*88174d5dSLuca Weiss .enable_mask = BIT(1), 2689*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2690*88174d5dSLuca Weiss .name = "gcc_ufs_phy_unipro_core_hw_ctl_clk", 2691*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2692*88174d5dSLuca Weiss &gcc_ufs_phy_unipro_core_clk_src.clkr.hw, 2693*88174d5dSLuca Weiss }, 2694*88174d5dSLuca Weiss .num_parents = 1, 2695*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2696*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2697*88174d5dSLuca Weiss }, 2698*88174d5dSLuca Weiss }, 2699*88174d5dSLuca Weiss }; 2700*88174d5dSLuca Weiss 2701*88174d5dSLuca Weiss static struct clk_branch gcc_usb30_prim_atb_clk = { 2702*88174d5dSLuca Weiss .halt_reg = 0x39088, 2703*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_VOTED, 2704*88174d5dSLuca Weiss .clkr = { 2705*88174d5dSLuca Weiss .enable_reg = 0x39088, 2706*88174d5dSLuca Weiss .enable_mask = BIT(0), 2707*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2708*88174d5dSLuca Weiss .name = "gcc_usb30_prim_atb_clk", 2709*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2710*88174d5dSLuca Weiss &gcc_usb30_prim_master_clk_src.clkr.hw, 2711*88174d5dSLuca Weiss }, 2712*88174d5dSLuca Weiss .num_parents = 1, 2713*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2714*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2715*88174d5dSLuca Weiss }, 2716*88174d5dSLuca Weiss }, 2717*88174d5dSLuca Weiss }; 2718*88174d5dSLuca Weiss 2719*88174d5dSLuca Weiss static struct clk_branch gcc_usb30_prim_master_clk = { 2720*88174d5dSLuca Weiss .halt_reg = 0x39018, 2721*88174d5dSLuca Weiss .halt_check = BRANCH_HALT, 2722*88174d5dSLuca Weiss .clkr = { 2723*88174d5dSLuca Weiss .enable_reg = 0x39018, 2724*88174d5dSLuca Weiss .enable_mask = BIT(0), 2725*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2726*88174d5dSLuca Weiss .name = "gcc_usb30_prim_master_clk", 2727*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2728*88174d5dSLuca Weiss &gcc_usb30_prim_master_clk_src.clkr.hw, 2729*88174d5dSLuca Weiss }, 2730*88174d5dSLuca Weiss .num_parents = 1, 2731*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2732*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2733*88174d5dSLuca Weiss }, 2734*88174d5dSLuca Weiss }, 2735*88174d5dSLuca Weiss }; 2736*88174d5dSLuca Weiss 2737*88174d5dSLuca Weiss static struct clk_branch gcc_usb30_prim_mock_utmi_clk = { 2738*88174d5dSLuca Weiss .halt_reg = 0x39028, 2739*88174d5dSLuca Weiss .halt_check = BRANCH_HALT, 2740*88174d5dSLuca Weiss .clkr = { 2741*88174d5dSLuca Weiss .enable_reg = 0x39028, 2742*88174d5dSLuca Weiss .enable_mask = BIT(0), 2743*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2744*88174d5dSLuca Weiss .name = "gcc_usb30_prim_mock_utmi_clk", 2745*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2746*88174d5dSLuca Weiss &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw, 2747*88174d5dSLuca Weiss }, 2748*88174d5dSLuca Weiss .num_parents = 1, 2749*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2750*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2751*88174d5dSLuca Weiss }, 2752*88174d5dSLuca Weiss }, 2753*88174d5dSLuca Weiss }; 2754*88174d5dSLuca Weiss 2755*88174d5dSLuca Weiss static struct clk_branch gcc_usb30_prim_sleep_clk = { 2756*88174d5dSLuca Weiss .halt_reg = 0x39024, 2757*88174d5dSLuca Weiss .halt_check = BRANCH_HALT, 2758*88174d5dSLuca Weiss .clkr = { 2759*88174d5dSLuca Weiss .enable_reg = 0x39024, 2760*88174d5dSLuca Weiss .enable_mask = BIT(0), 2761*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2762*88174d5dSLuca Weiss .name = "gcc_usb30_prim_sleep_clk", 2763*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2764*88174d5dSLuca Weiss }, 2765*88174d5dSLuca Weiss }, 2766*88174d5dSLuca Weiss }; 2767*88174d5dSLuca Weiss 2768*88174d5dSLuca Weiss static struct clk_branch gcc_usb3_prim_phy_aux_clk = { 2769*88174d5dSLuca Weiss .halt_reg = 0x39060, 2770*88174d5dSLuca Weiss .halt_check = BRANCH_HALT, 2771*88174d5dSLuca Weiss .clkr = { 2772*88174d5dSLuca Weiss .enable_reg = 0x39060, 2773*88174d5dSLuca Weiss .enable_mask = BIT(0), 2774*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2775*88174d5dSLuca Weiss .name = "gcc_usb3_prim_phy_aux_clk", 2776*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2777*88174d5dSLuca Weiss &gcc_usb3_prim_phy_aux_clk_src.clkr.hw, 2778*88174d5dSLuca Weiss }, 2779*88174d5dSLuca Weiss .num_parents = 1, 2780*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2781*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2782*88174d5dSLuca Weiss }, 2783*88174d5dSLuca Weiss }, 2784*88174d5dSLuca Weiss }; 2785*88174d5dSLuca Weiss 2786*88174d5dSLuca Weiss static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = { 2787*88174d5dSLuca Weiss .halt_reg = 0x39064, 2788*88174d5dSLuca Weiss .halt_check = BRANCH_HALT, 2789*88174d5dSLuca Weiss .clkr = { 2790*88174d5dSLuca Weiss .enable_reg = 0x39064, 2791*88174d5dSLuca Weiss .enable_mask = BIT(0), 2792*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2793*88174d5dSLuca Weiss .name = "gcc_usb3_prim_phy_com_aux_clk", 2794*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2795*88174d5dSLuca Weiss &gcc_usb3_prim_phy_aux_clk_src.clkr.hw, 2796*88174d5dSLuca Weiss }, 2797*88174d5dSLuca Weiss .num_parents = 1, 2798*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2799*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2800*88174d5dSLuca Weiss }, 2801*88174d5dSLuca Weiss }, 2802*88174d5dSLuca Weiss }; 2803*88174d5dSLuca Weiss 2804*88174d5dSLuca Weiss static struct clk_branch gcc_usb3_prim_phy_pipe_clk = { 2805*88174d5dSLuca Weiss .halt_reg = 0x39068, 2806*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_DELAY, 2807*88174d5dSLuca Weiss .hwcg_reg = 0x39068, 2808*88174d5dSLuca Weiss .hwcg_bit = 1, 2809*88174d5dSLuca Weiss .clkr = { 2810*88174d5dSLuca Weiss .enable_reg = 0x39068, 2811*88174d5dSLuca Weiss .enable_mask = BIT(0), 2812*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2813*88174d5dSLuca Weiss .name = "gcc_usb3_prim_phy_pipe_clk", 2814*88174d5dSLuca Weiss .parent_hws = (const struct clk_hw*[]) { 2815*88174d5dSLuca Weiss &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw, 2816*88174d5dSLuca Weiss }, 2817*88174d5dSLuca Weiss .num_parents = 1, 2818*88174d5dSLuca Weiss .flags = CLK_SET_RATE_PARENT, 2819*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2820*88174d5dSLuca Weiss }, 2821*88174d5dSLuca Weiss }, 2822*88174d5dSLuca Weiss }; 2823*88174d5dSLuca Weiss 2824*88174d5dSLuca Weiss static struct clk_branch gcc_video_axi0_clk = { 2825*88174d5dSLuca Weiss .halt_reg = 0x32018, 2826*88174d5dSLuca Weiss .halt_check = BRANCH_HALT_SKIP, 2827*88174d5dSLuca Weiss .hwcg_reg = 0x32018, 2828*88174d5dSLuca Weiss .hwcg_bit = 1, 2829*88174d5dSLuca Weiss .clkr = { 2830*88174d5dSLuca Weiss .enable_reg = 0x32018, 2831*88174d5dSLuca Weiss .enable_mask = BIT(0), 2832*88174d5dSLuca Weiss .hw.init = &(const struct clk_init_data) { 2833*88174d5dSLuca Weiss .name = "gcc_video_axi0_clk", 2834*88174d5dSLuca Weiss .ops = &clk_branch2_ops, 2835*88174d5dSLuca Weiss }, 2836*88174d5dSLuca Weiss }, 2837*88174d5dSLuca Weiss }; 2838*88174d5dSLuca Weiss 2839*88174d5dSLuca Weiss static struct gdsc pcie_0_gdsc = { 2840*88174d5dSLuca Weiss .gdscr = 0x6b004, 2841*88174d5dSLuca Weiss .collapse_ctrl = 0x5214c, 2842*88174d5dSLuca Weiss .collapse_mask = BIT(0), 2843*88174d5dSLuca Weiss .en_rest_wait_val = 0x2, 2844*88174d5dSLuca Weiss .en_few_wait_val = 0x2, 2845*88174d5dSLuca Weiss .clk_dis_wait_val = 0xf, 2846*88174d5dSLuca Weiss .pd = { 2847*88174d5dSLuca Weiss .name = "pcie_0_gdsc", 2848*88174d5dSLuca Weiss }, 2849*88174d5dSLuca Weiss .pwrsts = PWRSTS_OFF_ON, 2850*88174d5dSLuca Weiss .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2851*88174d5dSLuca Weiss }; 2852*88174d5dSLuca Weiss 2853*88174d5dSLuca Weiss static struct gdsc pcie_0_phy_gdsc = { 2854*88174d5dSLuca Weiss .gdscr = 0x6c000, 2855*88174d5dSLuca Weiss .collapse_ctrl = 0x5214c, 2856*88174d5dSLuca Weiss .collapse_mask = BIT(1), 2857*88174d5dSLuca Weiss .en_rest_wait_val = 0x2, 2858*88174d5dSLuca Weiss .en_few_wait_val = 0x2, 2859*88174d5dSLuca Weiss .clk_dis_wait_val = 0x2, 2860*88174d5dSLuca Weiss .pd = { 2861*88174d5dSLuca Weiss .name = "pcie_0_phy_gdsc", 2862*88174d5dSLuca Weiss }, 2863*88174d5dSLuca Weiss .pwrsts = PWRSTS_OFF_ON, 2864*88174d5dSLuca Weiss .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2865*88174d5dSLuca Weiss }; 2866*88174d5dSLuca Weiss 2867*88174d5dSLuca Weiss static struct gdsc pcie_1_gdsc = { 2868*88174d5dSLuca Weiss .gdscr = 0x90004, 2869*88174d5dSLuca Weiss .collapse_ctrl = 0x5214c, 2870*88174d5dSLuca Weiss .collapse_mask = BIT(3), 2871*88174d5dSLuca Weiss .en_rest_wait_val = 0x2, 2872*88174d5dSLuca Weiss .en_few_wait_val = 0x2, 2873*88174d5dSLuca Weiss .clk_dis_wait_val = 0xf, 2874*88174d5dSLuca Weiss .pd = { 2875*88174d5dSLuca Weiss .name = "pcie_1_gdsc", 2876*88174d5dSLuca Weiss }, 2877*88174d5dSLuca Weiss .pwrsts = PWRSTS_OFF_ON, 2878*88174d5dSLuca Weiss .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2879*88174d5dSLuca Weiss }; 2880*88174d5dSLuca Weiss 2881*88174d5dSLuca Weiss static struct gdsc pcie_1_phy_gdsc = { 2882*88174d5dSLuca Weiss .gdscr = 0xa2000, 2883*88174d5dSLuca Weiss .collapse_ctrl = 0x5214c, 2884*88174d5dSLuca Weiss .collapse_mask = BIT(4), 2885*88174d5dSLuca Weiss .en_rest_wait_val = 0x2, 2886*88174d5dSLuca Weiss .en_few_wait_val = 0x2, 2887*88174d5dSLuca Weiss .clk_dis_wait_val = 0x2, 2888*88174d5dSLuca Weiss .pd = { 2889*88174d5dSLuca Weiss .name = "pcie_1_phy_gdsc", 2890*88174d5dSLuca Weiss }, 2891*88174d5dSLuca Weiss .pwrsts = PWRSTS_OFF_ON, 2892*88174d5dSLuca Weiss .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2893*88174d5dSLuca Weiss }; 2894*88174d5dSLuca Weiss 2895*88174d5dSLuca Weiss static struct gdsc ufs_phy_gdsc = { 2896*88174d5dSLuca Weiss .gdscr = 0x77004, 2897*88174d5dSLuca Weiss .en_rest_wait_val = 0x2, 2898*88174d5dSLuca Weiss .en_few_wait_val = 0x2, 2899*88174d5dSLuca Weiss .clk_dis_wait_val = 0xf, 2900*88174d5dSLuca Weiss .pd = { 2901*88174d5dSLuca Weiss .name = "ufs_phy_gdsc", 2902*88174d5dSLuca Weiss }, 2903*88174d5dSLuca Weiss .pwrsts = PWRSTS_OFF_ON, 2904*88174d5dSLuca Weiss .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2905*88174d5dSLuca Weiss }; 2906*88174d5dSLuca Weiss 2907*88174d5dSLuca Weiss static struct gdsc ufs_mem_phy_gdsc = { 2908*88174d5dSLuca Weiss .gdscr = 0x9e000, 2909*88174d5dSLuca Weiss .en_rest_wait_val = 0x2, 2910*88174d5dSLuca Weiss .en_few_wait_val = 0x2, 2911*88174d5dSLuca Weiss .clk_dis_wait_val = 0x2, 2912*88174d5dSLuca Weiss .pd = { 2913*88174d5dSLuca Weiss .name = "ufs_mem_phy_gdsc", 2914*88174d5dSLuca Weiss }, 2915*88174d5dSLuca Weiss .pwrsts = PWRSTS_OFF_ON, 2916*88174d5dSLuca Weiss .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2917*88174d5dSLuca Weiss }; 2918*88174d5dSLuca Weiss 2919*88174d5dSLuca Weiss static struct gdsc usb30_prim_gdsc = { 2920*88174d5dSLuca Weiss .gdscr = 0x39004, 2921*88174d5dSLuca Weiss .en_rest_wait_val = 0x2, 2922*88174d5dSLuca Weiss .en_few_wait_val = 0x2, 2923*88174d5dSLuca Weiss .clk_dis_wait_val = 0xf, 2924*88174d5dSLuca Weiss .pd = { 2925*88174d5dSLuca Weiss .name = "usb30_prim_gdsc", 2926*88174d5dSLuca Weiss }, 2927*88174d5dSLuca Weiss .pwrsts = PWRSTS_RET_ON, 2928*88174d5dSLuca Weiss .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2929*88174d5dSLuca Weiss }; 2930*88174d5dSLuca Weiss 2931*88174d5dSLuca Weiss static struct gdsc usb3_phy_gdsc = { 2932*88174d5dSLuca Weiss .gdscr = 0x5000c, 2933*88174d5dSLuca Weiss .en_rest_wait_val = 0x2, 2934*88174d5dSLuca Weiss .en_few_wait_val = 0x2, 2935*88174d5dSLuca Weiss .clk_dis_wait_val = 0x2, 2936*88174d5dSLuca Weiss .pd = { 2937*88174d5dSLuca Weiss .name = "usb3_phy_gdsc", 2938*88174d5dSLuca Weiss }, 2939*88174d5dSLuca Weiss .pwrsts = PWRSTS_RET_ON, 2940*88174d5dSLuca Weiss .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2941*88174d5dSLuca Weiss }; 2942*88174d5dSLuca Weiss 2943*88174d5dSLuca Weiss static struct clk_regmap *gcc_milos_clocks[] = { 2944*88174d5dSLuca Weiss [GCC_AGGRE_NOC_PCIE_AXI_CLK] = &gcc_aggre_noc_pcie_axi_clk.clkr, 2945*88174d5dSLuca Weiss [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr, 2946*88174d5dSLuca Weiss [GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_phy_axi_hw_ctl_clk.clkr, 2947*88174d5dSLuca Weiss [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr, 2948*88174d5dSLuca Weiss [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 2949*88174d5dSLuca Weiss [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr, 2950*88174d5dSLuca Weiss [GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr, 2951*88174d5dSLuca Weiss [GCC_CFG_NOC_PCIE_ANOC_AHB_CLK] = &gcc_cfg_noc_pcie_anoc_ahb_clk.clkr, 2952*88174d5dSLuca Weiss [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr, 2953*88174d5dSLuca Weiss [GCC_CNOC_PCIE_SF_AXI_CLK] = &gcc_cnoc_pcie_sf_axi_clk.clkr, 2954*88174d5dSLuca Weiss [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr, 2955*88174d5dSLuca Weiss [GCC_DDRSS_PCIE_SF_QTB_CLK] = &gcc_ddrss_pcie_sf_qtb_clk.clkr, 2956*88174d5dSLuca Weiss [GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr, 2957*88174d5dSLuca Weiss [GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr, 2958*88174d5dSLuca Weiss [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 2959*88174d5dSLuca Weiss [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr, 2960*88174d5dSLuca Weiss [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 2961*88174d5dSLuca Weiss [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr, 2962*88174d5dSLuca Weiss [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 2963*88174d5dSLuca Weiss [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr, 2964*88174d5dSLuca Weiss [GCC_GPLL0] = &gcc_gpll0.clkr, 2965*88174d5dSLuca Weiss [GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr, 2966*88174d5dSLuca Weiss [GCC_GPLL2] = &gcc_gpll2.clkr, 2967*88174d5dSLuca Weiss [GCC_GPLL4] = &gcc_gpll4.clkr, 2968*88174d5dSLuca Weiss [GCC_GPLL6] = &gcc_gpll6.clkr, 2969*88174d5dSLuca Weiss [GCC_GPLL7] = &gcc_gpll7.clkr, 2970*88174d5dSLuca Weiss [GCC_GPLL9] = &gcc_gpll9.clkr, 2971*88174d5dSLuca Weiss [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr, 2972*88174d5dSLuca Weiss [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr, 2973*88174d5dSLuca Weiss [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr, 2974*88174d5dSLuca Weiss [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr, 2975*88174d5dSLuca Weiss [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr, 2976*88174d5dSLuca Weiss [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr, 2977*88174d5dSLuca Weiss [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr, 2978*88174d5dSLuca Weiss [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr, 2979*88174d5dSLuca Weiss [GCC_PCIE_0_PHY_RCHNG_CLK] = &gcc_pcie_0_phy_rchng_clk.clkr, 2980*88174d5dSLuca Weiss [GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr, 2981*88174d5dSLuca Weiss [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr, 2982*88174d5dSLuca Weiss [GCC_PCIE_0_PIPE_CLK_SRC] = &gcc_pcie_0_pipe_clk_src.clkr, 2983*88174d5dSLuca Weiss [GCC_PCIE_0_PIPE_DIV2_CLK] = &gcc_pcie_0_pipe_div2_clk.clkr, 2984*88174d5dSLuca Weiss [GCC_PCIE_0_PIPE_DIV2_CLK_SRC] = &gcc_pcie_0_pipe_div2_clk_src.clkr, 2985*88174d5dSLuca Weiss [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr, 2986*88174d5dSLuca Weiss [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr, 2987*88174d5dSLuca Weiss [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr, 2988*88174d5dSLuca Weiss [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr, 2989*88174d5dSLuca Weiss [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr, 2990*88174d5dSLuca Weiss [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr, 2991*88174d5dSLuca Weiss [GCC_PCIE_1_PHY_RCHNG_CLK] = &gcc_pcie_1_phy_rchng_clk.clkr, 2992*88174d5dSLuca Weiss [GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr, 2993*88174d5dSLuca Weiss [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr, 2994*88174d5dSLuca Weiss [GCC_PCIE_1_PIPE_CLK_SRC] = &gcc_pcie_1_pipe_clk_src.clkr, 2995*88174d5dSLuca Weiss [GCC_PCIE_1_PIPE_DIV2_CLK] = &gcc_pcie_1_pipe_div2_clk.clkr, 2996*88174d5dSLuca Weiss [GCC_PCIE_1_PIPE_DIV2_CLK_SRC] = &gcc_pcie_1_pipe_div2_clk_src.clkr, 2997*88174d5dSLuca Weiss [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr, 2998*88174d5dSLuca Weiss [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr, 2999*88174d5dSLuca Weiss [GCC_PCIE_RSCC_CFG_AHB_CLK] = &gcc_pcie_rscc_cfg_ahb_clk.clkr, 3000*88174d5dSLuca Weiss [GCC_PCIE_RSCC_XO_CLK] = &gcc_pcie_rscc_xo_clk.clkr, 3001*88174d5dSLuca Weiss [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 3002*88174d5dSLuca Weiss [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr, 3003*88174d5dSLuca Weiss [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 3004*88174d5dSLuca Weiss [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr, 3005*88174d5dSLuca Weiss [GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr, 3006*88174d5dSLuca Weiss [GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr, 3007*88174d5dSLuca Weiss [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr, 3008*88174d5dSLuca Weiss [GCC_QMIP_GPU_AHB_CLK] = &gcc_qmip_gpu_ahb_clk.clkr, 3009*88174d5dSLuca Weiss [GCC_QMIP_PCIE_AHB_CLK] = &gcc_qmip_pcie_ahb_clk.clkr, 3010*88174d5dSLuca Weiss [GCC_QMIP_VIDEO_CV_CPU_AHB_CLK] = &gcc_qmip_video_cv_cpu_ahb_clk.clkr, 3011*88174d5dSLuca Weiss [GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr, 3012*88174d5dSLuca Weiss [GCC_QMIP_VIDEO_V_CPU_AHB_CLK] = &gcc_qmip_video_v_cpu_ahb_clk.clkr, 3013*88174d5dSLuca Weiss [GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr, 3014*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr, 3015*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr, 3016*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_QSPI_REF_CLK] = &gcc_qupv3_wrap0_qspi_ref_clk.clkr, 3017*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_QSPI_REF_CLK_SRC] = &gcc_qupv3_wrap0_qspi_ref_clk_src.clkr, 3018*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr, 3019*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr, 3020*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr, 3021*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr, 3022*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr, 3023*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr, 3024*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr, 3025*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr, 3026*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr, 3027*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr, 3028*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr, 3029*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr, 3030*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr, 3031*88174d5dSLuca Weiss [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr, 3032*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr, 3033*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr, 3034*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_QSPI_REF_CLK] = &gcc_qupv3_wrap1_qspi_ref_clk.clkr, 3035*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_QSPI_REF_CLK_SRC] = &gcc_qupv3_wrap1_qspi_ref_clk_src.clkr, 3036*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr, 3037*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr, 3038*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr, 3039*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr, 3040*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr, 3041*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr, 3042*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr, 3043*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr, 3044*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr, 3045*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr, 3046*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr, 3047*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr, 3048*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr, 3049*88174d5dSLuca Weiss [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr, 3050*88174d5dSLuca Weiss [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr, 3051*88174d5dSLuca Weiss [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr, 3052*88174d5dSLuca Weiss [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr, 3053*88174d5dSLuca Weiss [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr, 3054*88174d5dSLuca Weiss [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 3055*88174d5dSLuca Weiss [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 3056*88174d5dSLuca Weiss [GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr, 3057*88174d5dSLuca Weiss [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr, 3058*88174d5dSLuca Weiss [GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr, 3059*88174d5dSLuca Weiss [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 3060*88174d5dSLuca Weiss [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 3061*88174d5dSLuca Weiss [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr, 3062*88174d5dSLuca Weiss [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr, 3063*88174d5dSLuca Weiss [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr, 3064*88174d5dSLuca Weiss [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr, 3065*88174d5dSLuca Weiss [GCC_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_ufs_phy_axi_hw_ctl_clk.clkr, 3066*88174d5dSLuca Weiss [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr, 3067*88174d5dSLuca Weiss [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr, 3068*88174d5dSLuca Weiss [GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_phy_ice_core_hw_ctl_clk.clkr, 3069*88174d5dSLuca Weiss [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr, 3070*88174d5dSLuca Weiss [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr, 3071*88174d5dSLuca Weiss [GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_phy_phy_aux_hw_ctl_clk.clkr, 3072*88174d5dSLuca Weiss [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr, 3073*88174d5dSLuca Weiss [GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr, 3074*88174d5dSLuca Weiss [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr, 3075*88174d5dSLuca Weiss [GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr, 3076*88174d5dSLuca Weiss [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr, 3077*88174d5dSLuca Weiss [GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr, 3078*88174d5dSLuca Weiss [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr, 3079*88174d5dSLuca Weiss [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr, 3080*88174d5dSLuca Weiss [GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_phy_unipro_core_hw_ctl_clk.clkr, 3081*88174d5dSLuca Weiss [GCC_USB30_PRIM_ATB_CLK] = &gcc_usb30_prim_atb_clk.clkr, 3082*88174d5dSLuca Weiss [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr, 3083*88174d5dSLuca Weiss [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr, 3084*88174d5dSLuca Weiss [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr, 3085*88174d5dSLuca Weiss [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr, 3086*88174d5dSLuca Weiss [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr, 3087*88174d5dSLuca Weiss [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr, 3088*88174d5dSLuca Weiss [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr, 3089*88174d5dSLuca Weiss [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr, 3090*88174d5dSLuca Weiss [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr, 3091*88174d5dSLuca Weiss [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr, 3092*88174d5dSLuca Weiss [GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr, 3093*88174d5dSLuca Weiss [GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr, 3094*88174d5dSLuca Weiss }; 3095*88174d5dSLuca Weiss 3096*88174d5dSLuca Weiss static const struct qcom_reset_map gcc_milos_resets[] = { 3097*88174d5dSLuca Weiss [GCC_CAMERA_BCR] = { 0x26000 }, 3098*88174d5dSLuca Weiss [GCC_DISPLAY_BCR] = { 0x27000 }, 3099*88174d5dSLuca Weiss [GCC_GPU_BCR] = { 0x71000 }, 3100*88174d5dSLuca Weiss [GCC_PCIE_0_BCR] = { 0x6b000 }, 3101*88174d5dSLuca Weiss [GCC_PCIE_0_LINK_DOWN_BCR] = { 0x6c014 }, 3102*88174d5dSLuca Weiss [GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x6c020 }, 3103*88174d5dSLuca Weiss [GCC_PCIE_0_PHY_BCR] = { 0x6c01c }, 3104*88174d5dSLuca Weiss [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x6c028 }, 3105*88174d5dSLuca Weiss [GCC_PCIE_1_BCR] = { 0x90000 }, 3106*88174d5dSLuca Weiss [GCC_PCIE_1_LINK_DOWN_BCR] = { 0x8e014 }, 3107*88174d5dSLuca Weiss [GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x8e020 }, 3108*88174d5dSLuca Weiss [GCC_PCIE_1_PHY_BCR] = { 0x8e01c }, 3109*88174d5dSLuca Weiss [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x8e024 }, 3110*88174d5dSLuca Weiss [GCC_PCIE_RSCC_BCR] = { 0x11000 }, 3111*88174d5dSLuca Weiss [GCC_PDM_BCR] = { 0x33000 }, 3112*88174d5dSLuca Weiss [GCC_QUPV3_WRAPPER_0_BCR] = { 0x18000 }, 3113*88174d5dSLuca Weiss [GCC_QUPV3_WRAPPER_1_BCR] = { 0x1e000 }, 3114*88174d5dSLuca Weiss [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 }, 3115*88174d5dSLuca Weiss [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 }, 3116*88174d5dSLuca Weiss [GCC_SDCC1_BCR] = { 0xa3000 }, 3117*88174d5dSLuca Weiss [GCC_SDCC2_BCR] = { 0x14000 }, 3118*88174d5dSLuca Weiss [GCC_UFS_PHY_BCR] = { 0x77000 }, 3119*88174d5dSLuca Weiss [GCC_USB30_PRIM_BCR] = { 0x39000 }, 3120*88174d5dSLuca Weiss [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 }, 3121*88174d5dSLuca Weiss [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 }, 3122*88174d5dSLuca Weiss [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 }, 3123*88174d5dSLuca Weiss [GCC_VIDEO_AXI0_CLK_ARES] = { 0x32018, 2 }, 3124*88174d5dSLuca Weiss [GCC_VIDEO_BCR] = { 0x32000 }, 3125*88174d5dSLuca Weiss }; 3126*88174d5dSLuca Weiss 3127*88174d5dSLuca Weiss static const struct clk_rcg_dfs_data gcc_milos_dfs_clocks[] = { 3128*88174d5dSLuca Weiss DEFINE_RCG_DFS(gcc_qupv3_wrap0_qspi_ref_clk_src), 3129*88174d5dSLuca Weiss DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src), 3130*88174d5dSLuca Weiss DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src), 3131*88174d5dSLuca Weiss DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src), 3132*88174d5dSLuca Weiss DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src), 3133*88174d5dSLuca Weiss DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src), 3134*88174d5dSLuca Weiss DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src), 3135*88174d5dSLuca Weiss DEFINE_RCG_DFS(gcc_qupv3_wrap1_qspi_ref_clk_src), 3136*88174d5dSLuca Weiss DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src), 3137*88174d5dSLuca Weiss DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src), 3138*88174d5dSLuca Weiss DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src), 3139*88174d5dSLuca Weiss DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src), 3140*88174d5dSLuca Weiss DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src), 3141*88174d5dSLuca Weiss DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src), 3142*88174d5dSLuca Weiss }; 3143*88174d5dSLuca Weiss 3144*88174d5dSLuca Weiss static struct gdsc *gcc_milos_gdscs[] = { 3145*88174d5dSLuca Weiss [PCIE_0_GDSC] = &pcie_0_gdsc, 3146*88174d5dSLuca Weiss [PCIE_0_PHY_GDSC] = &pcie_0_phy_gdsc, 3147*88174d5dSLuca Weiss [PCIE_1_GDSC] = &pcie_1_gdsc, 3148*88174d5dSLuca Weiss [PCIE_1_PHY_GDSC] = &pcie_1_phy_gdsc, 3149*88174d5dSLuca Weiss [UFS_PHY_GDSC] = &ufs_phy_gdsc, 3150*88174d5dSLuca Weiss [UFS_MEM_PHY_GDSC] = &ufs_mem_phy_gdsc, 3151*88174d5dSLuca Weiss [USB30_PRIM_GDSC] = &usb30_prim_gdsc, 3152*88174d5dSLuca Weiss [USB3_PHY_GDSC] = &usb3_phy_gdsc, 3153*88174d5dSLuca Weiss }; 3154*88174d5dSLuca Weiss 3155*88174d5dSLuca Weiss static u32 gcc_milos_critical_cbcrs[] = { 3156*88174d5dSLuca Weiss 0x26004, /* GCC_CAMERA_AHB_CLK */ 3157*88174d5dSLuca Weiss 0x26018, /* GCC_CAMERA_HF_XO_CLK */ 3158*88174d5dSLuca Weiss 0x2601c, /* GCC_CAMERA_SF_XO_CLK */ 3159*88174d5dSLuca Weiss 0x27004, /* GCC_DISP_AHB_CLK */ 3160*88174d5dSLuca Weiss 0x27018, /* GCC_DISP_XO_CLK */ 3161*88174d5dSLuca Weiss 0x71004, /* GCC_GPU_CFG_AHB_CLK */ 3162*88174d5dSLuca Weiss 0x32004, /* GCC_VIDEO_AHB_CLK */ 3163*88174d5dSLuca Weiss 0x32024, /* GCC_VIDEO_XO_CLK */ 3164*88174d5dSLuca Weiss }; 3165*88174d5dSLuca Weiss 3166*88174d5dSLuca Weiss static const struct regmap_config gcc_milos_regmap_config = { 3167*88174d5dSLuca Weiss .reg_bits = 32, 3168*88174d5dSLuca Weiss .reg_stride = 4, 3169*88174d5dSLuca Weiss .val_bits = 32, 3170*88174d5dSLuca Weiss .max_register = 0x1f41f0, 3171*88174d5dSLuca Weiss .fast_io = true, 3172*88174d5dSLuca Weiss }; 3173*88174d5dSLuca Weiss 3174*88174d5dSLuca Weiss static struct qcom_cc_driver_data gcc_milos_driver_data = { 3175*88174d5dSLuca Weiss .clk_cbcrs = gcc_milos_critical_cbcrs, 3176*88174d5dSLuca Weiss .num_clk_cbcrs = ARRAY_SIZE(gcc_milos_critical_cbcrs), 3177*88174d5dSLuca Weiss .dfs_rcgs = gcc_milos_dfs_clocks, 3178*88174d5dSLuca Weiss .num_dfs_rcgs = ARRAY_SIZE(gcc_milos_dfs_clocks), 3179*88174d5dSLuca Weiss }; 3180*88174d5dSLuca Weiss 3181*88174d5dSLuca Weiss static const struct qcom_cc_desc gcc_milos_desc = { 3182*88174d5dSLuca Weiss .config = &gcc_milos_regmap_config, 3183*88174d5dSLuca Weiss .clks = gcc_milos_clocks, 3184*88174d5dSLuca Weiss .num_clks = ARRAY_SIZE(gcc_milos_clocks), 3185*88174d5dSLuca Weiss .resets = gcc_milos_resets, 3186*88174d5dSLuca Weiss .num_resets = ARRAY_SIZE(gcc_milos_resets), 3187*88174d5dSLuca Weiss .gdscs = gcc_milos_gdscs, 3188*88174d5dSLuca Weiss .num_gdscs = ARRAY_SIZE(gcc_milos_gdscs), 3189*88174d5dSLuca Weiss .use_rpm = true, 3190*88174d5dSLuca Weiss .driver_data = &gcc_milos_driver_data, 3191*88174d5dSLuca Weiss }; 3192*88174d5dSLuca Weiss 3193*88174d5dSLuca Weiss static const struct of_device_id gcc_milos_match_table[] = { 3194*88174d5dSLuca Weiss { .compatible = "qcom,milos-gcc" }, 3195*88174d5dSLuca Weiss { } 3196*88174d5dSLuca Weiss }; 3197*88174d5dSLuca Weiss MODULE_DEVICE_TABLE(of, gcc_milos_match_table); 3198*88174d5dSLuca Weiss 3199*88174d5dSLuca Weiss static int gcc_milos_probe(struct platform_device *pdev) 3200*88174d5dSLuca Weiss { 3201*88174d5dSLuca Weiss return qcom_cc_probe(pdev, &gcc_milos_desc); 3202*88174d5dSLuca Weiss } 3203*88174d5dSLuca Weiss 3204*88174d5dSLuca Weiss static struct platform_driver gcc_milos_driver = { 3205*88174d5dSLuca Weiss .probe = gcc_milos_probe, 3206*88174d5dSLuca Weiss .driver = { 3207*88174d5dSLuca Weiss .name = "gcc-milos", 3208*88174d5dSLuca Weiss .of_match_table = gcc_milos_match_table, 3209*88174d5dSLuca Weiss }, 3210*88174d5dSLuca Weiss }; 3211*88174d5dSLuca Weiss 3212*88174d5dSLuca Weiss static int __init gcc_milos_init(void) 3213*88174d5dSLuca Weiss { 3214*88174d5dSLuca Weiss return platform_driver_register(&gcc_milos_driver); 3215*88174d5dSLuca Weiss } 3216*88174d5dSLuca Weiss subsys_initcall(gcc_milos_init); 3217*88174d5dSLuca Weiss 3218*88174d5dSLuca Weiss static void __exit gcc_milos_exit(void) 3219*88174d5dSLuca Weiss { 3220*88174d5dSLuca Weiss platform_driver_unregister(&gcc_milos_driver); 3221*88174d5dSLuca Weiss } 3222*88174d5dSLuca Weiss module_exit(gcc_milos_exit); 3223*88174d5dSLuca Weiss 3224*88174d5dSLuca Weiss MODULE_DESCRIPTION("QTI GCC Milos Driver"); 3225*88174d5dSLuca Weiss MODULE_LICENSE("GPL"); 3226