1*17269568STaniya Das // SPDX-License-Identifier: GPL-2.0-only 2*17269568STaniya Das /* 3*17269568STaniya Das * Copyright (c) 2019, The Linux Foundation. All rights reserved. 4*17269568STaniya Das */ 5*17269568STaniya Das 6*17269568STaniya Das #include <linux/clk-provider.h> 7*17269568STaniya Das #include <linux/err.h> 8*17269568STaniya Das #include <linux/kernel.h> 9*17269568STaniya Das #include <linux/module.h> 10*17269568STaniya Das #include <linux/of.h> 11*17269568STaniya Das #include <linux/of_device.h> 12*17269568STaniya Das #include <linux/regmap.h> 13*17269568STaniya Das 14*17269568STaniya Das #include <dt-bindings/clock/qcom,gcc-sc7180.h> 15*17269568STaniya Das 16*17269568STaniya Das #include "clk-alpha-pll.h" 17*17269568STaniya Das #include "clk-branch.h" 18*17269568STaniya Das #include "clk-rcg.h" 19*17269568STaniya Das #include "clk-regmap.h" 20*17269568STaniya Das #include "common.h" 21*17269568STaniya Das #include "gdsc.h" 22*17269568STaniya Das #include "reset.h" 23*17269568STaniya Das 24*17269568STaniya Das enum { 25*17269568STaniya Das P_BI_TCXO, 26*17269568STaniya Das P_CORE_BI_PLL_TEST_SE, 27*17269568STaniya Das P_GPLL0_OUT_EVEN, 28*17269568STaniya Das P_GPLL0_OUT_MAIN, 29*17269568STaniya Das P_GPLL1_OUT_MAIN, 30*17269568STaniya Das P_GPLL4_OUT_MAIN, 31*17269568STaniya Das P_GPLL6_OUT_MAIN, 32*17269568STaniya Das P_GPLL7_OUT_MAIN, 33*17269568STaniya Das P_SLEEP_CLK, 34*17269568STaniya Das }; 35*17269568STaniya Das 36*17269568STaniya Das static struct clk_alpha_pll gpll0 = { 37*17269568STaniya Das .offset = 0x0, 38*17269568STaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 39*17269568STaniya Das .clkr = { 40*17269568STaniya Das .enable_reg = 0x52010, 41*17269568STaniya Das .enable_mask = BIT(0), 42*17269568STaniya Das .hw.init = &(struct clk_init_data){ 43*17269568STaniya Das .name = "gpll0", 44*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 45*17269568STaniya Das .fw_name = "bi_tcxo", 46*17269568STaniya Das .name = "bi_tcxo", 47*17269568STaniya Das }, 48*17269568STaniya Das .num_parents = 1, 49*17269568STaniya Das .ops = &clk_alpha_pll_fixed_fabia_ops, 50*17269568STaniya Das }, 51*17269568STaniya Das }, 52*17269568STaniya Das }; 53*17269568STaniya Das 54*17269568STaniya Das static const struct clk_div_table post_div_table_gpll0_out_even[] = { 55*17269568STaniya Das { 0x1, 2 }, 56*17269568STaniya Das { } 57*17269568STaniya Das }; 58*17269568STaniya Das 59*17269568STaniya Das static struct clk_alpha_pll_postdiv gpll0_out_even = { 60*17269568STaniya Das .offset = 0x0, 61*17269568STaniya Das .post_div_shift = 8, 62*17269568STaniya Das .post_div_table = post_div_table_gpll0_out_even, 63*17269568STaniya Das .num_post_div = ARRAY_SIZE(post_div_table_gpll0_out_even), 64*17269568STaniya Das .width = 4, 65*17269568STaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 66*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 67*17269568STaniya Das .name = "gpll0_out_even", 68*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 69*17269568STaniya Das .hw = &gpll0.clkr.hw, 70*17269568STaniya Das }, 71*17269568STaniya Das .num_parents = 1, 72*17269568STaniya Das .ops = &clk_alpha_pll_postdiv_fabia_ops, 73*17269568STaniya Das }, 74*17269568STaniya Das }; 75*17269568STaniya Das 76*17269568STaniya Das static struct clk_fixed_factor gcc_pll0_main_div_cdiv = { 77*17269568STaniya Das .mult = 1, 78*17269568STaniya Das .div = 2, 79*17269568STaniya Das .hw.init = &(struct clk_init_data){ 80*17269568STaniya Das .name = "gcc_pll0_main_div_cdiv", 81*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 82*17269568STaniya Das .hw = &gpll0.clkr.hw, 83*17269568STaniya Das }, 84*17269568STaniya Das .num_parents = 1, 85*17269568STaniya Das .ops = &clk_fixed_factor_ops, 86*17269568STaniya Das }, 87*17269568STaniya Das }; 88*17269568STaniya Das 89*17269568STaniya Das static struct clk_alpha_pll gpll1 = { 90*17269568STaniya Das .offset = 0x01000, 91*17269568STaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 92*17269568STaniya Das .clkr = { 93*17269568STaniya Das .enable_reg = 0x52010, 94*17269568STaniya Das .enable_mask = BIT(1), 95*17269568STaniya Das .hw.init = &(struct clk_init_data){ 96*17269568STaniya Das .name = "gpll1", 97*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 98*17269568STaniya Das .fw_name = "bi_tcxo", 99*17269568STaniya Das .name = "bi_tcxo", 100*17269568STaniya Das }, 101*17269568STaniya Das .num_parents = 1, 102*17269568STaniya Das .ops = &clk_alpha_pll_fixed_fabia_ops, 103*17269568STaniya Das }, 104*17269568STaniya Das }, 105*17269568STaniya Das }; 106*17269568STaniya Das 107*17269568STaniya Das static struct clk_alpha_pll gpll4 = { 108*17269568STaniya Das .offset = 0x76000, 109*17269568STaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 110*17269568STaniya Das .clkr = { 111*17269568STaniya Das .enable_reg = 0x52010, 112*17269568STaniya Das .enable_mask = BIT(4), 113*17269568STaniya Das .hw.init = &(struct clk_init_data){ 114*17269568STaniya Das .name = "gpll4", 115*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 116*17269568STaniya Das .fw_name = "bi_tcxo", 117*17269568STaniya Das .name = "bi_tcxo", 118*17269568STaniya Das }, 119*17269568STaniya Das .num_parents = 1, 120*17269568STaniya Das .ops = &clk_alpha_pll_fixed_fabia_ops, 121*17269568STaniya Das }, 122*17269568STaniya Das }, 123*17269568STaniya Das }; 124*17269568STaniya Das 125*17269568STaniya Das static struct clk_alpha_pll gpll6 = { 126*17269568STaniya Das .offset = 0x13000, 127*17269568STaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 128*17269568STaniya Das .clkr = { 129*17269568STaniya Das .enable_reg = 0x52010, 130*17269568STaniya Das .enable_mask = BIT(6), 131*17269568STaniya Das .hw.init = &(struct clk_init_data){ 132*17269568STaniya Das .name = "gpll6", 133*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 134*17269568STaniya Das .fw_name = "bi_tcxo", 135*17269568STaniya Das .name = "bi_tcxo", 136*17269568STaniya Das }, 137*17269568STaniya Das .num_parents = 1, 138*17269568STaniya Das .ops = &clk_alpha_pll_fixed_fabia_ops, 139*17269568STaniya Das }, 140*17269568STaniya Das }, 141*17269568STaniya Das }; 142*17269568STaniya Das 143*17269568STaniya Das static struct clk_alpha_pll gpll7 = { 144*17269568STaniya Das .offset = 0x27000, 145*17269568STaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 146*17269568STaniya Das .clkr = { 147*17269568STaniya Das .enable_reg = 0x52010, 148*17269568STaniya Das .enable_mask = BIT(7), 149*17269568STaniya Das .hw.init = &(struct clk_init_data){ 150*17269568STaniya Das .name = "gpll7", 151*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 152*17269568STaniya Das .fw_name = "bi_tcxo", 153*17269568STaniya Das .name = "bi_tcxo", 154*17269568STaniya Das }, 155*17269568STaniya Das .num_parents = 1, 156*17269568STaniya Das .ops = &clk_alpha_pll_fixed_fabia_ops, 157*17269568STaniya Das }, 158*17269568STaniya Das }, 159*17269568STaniya Das }; 160*17269568STaniya Das 161*17269568STaniya Das static const struct parent_map gcc_parent_map_0[] = { 162*17269568STaniya Das { P_BI_TCXO, 0 }, 163*17269568STaniya Das { P_GPLL0_OUT_MAIN, 1 }, 164*17269568STaniya Das { P_GPLL0_OUT_EVEN, 6 }, 165*17269568STaniya Das { P_CORE_BI_PLL_TEST_SE, 7 }, 166*17269568STaniya Das }; 167*17269568STaniya Das 168*17269568STaniya Das static const struct clk_parent_data gcc_parent_data_0[] = { 169*17269568STaniya Das { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 170*17269568STaniya Das { .hw = &gpll0.clkr.hw }, 171*17269568STaniya Das { .hw = &gpll0_out_even.clkr.hw }, 172*17269568STaniya Das { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 173*17269568STaniya Das }; 174*17269568STaniya Das 175*17269568STaniya Das static const struct clk_parent_data gcc_parent_data_0_ao[] = { 176*17269568STaniya Das { .fw_name = "bi_tcxo_ao", .name = "bi_tcxo_ao" }, 177*17269568STaniya Das { .hw = &gpll0.clkr.hw }, 178*17269568STaniya Das { .hw = &gpll0_out_even.clkr.hw }, 179*17269568STaniya Das { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 180*17269568STaniya Das }; 181*17269568STaniya Das 182*17269568STaniya Das static const struct parent_map gcc_parent_map_1[] = { 183*17269568STaniya Das { P_BI_TCXO, 0 }, 184*17269568STaniya Das { P_GPLL0_OUT_MAIN, 1 }, 185*17269568STaniya Das { P_GPLL6_OUT_MAIN, 2 }, 186*17269568STaniya Das { P_GPLL0_OUT_EVEN, 6 }, 187*17269568STaniya Das { P_CORE_BI_PLL_TEST_SE, 7 }, 188*17269568STaniya Das }; 189*17269568STaniya Das 190*17269568STaniya Das static const struct clk_parent_data gcc_parent_data_1[] = { 191*17269568STaniya Das { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 192*17269568STaniya Das { .hw = &gpll0.clkr.hw }, 193*17269568STaniya Das { .hw = &gpll6.clkr.hw }, 194*17269568STaniya Das { .hw = &gpll0_out_even.clkr.hw }, 195*17269568STaniya Das { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 196*17269568STaniya Das }; 197*17269568STaniya Das 198*17269568STaniya Das static const struct parent_map gcc_parent_map_2[] = { 199*17269568STaniya Das { P_BI_TCXO, 0 }, 200*17269568STaniya Das { P_GPLL0_OUT_MAIN, 1 }, 201*17269568STaniya Das { P_GPLL1_OUT_MAIN, 4 }, 202*17269568STaniya Das { P_GPLL4_OUT_MAIN, 5 }, 203*17269568STaniya Das { P_GPLL0_OUT_EVEN, 6 }, 204*17269568STaniya Das { P_CORE_BI_PLL_TEST_SE, 7 }, 205*17269568STaniya Das }; 206*17269568STaniya Das 207*17269568STaniya Das static const struct clk_parent_data gcc_parent_data_2[] = { 208*17269568STaniya Das { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 209*17269568STaniya Das { .hw = &gpll0.clkr.hw }, 210*17269568STaniya Das { .hw = &gpll1.clkr.hw }, 211*17269568STaniya Das { .hw = &gpll4.clkr.hw }, 212*17269568STaniya Das { .hw = &gpll0_out_even.clkr.hw }, 213*17269568STaniya Das { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 214*17269568STaniya Das }; 215*17269568STaniya Das 216*17269568STaniya Das static const struct parent_map gcc_parent_map_3[] = { 217*17269568STaniya Das { P_BI_TCXO, 0 }, 218*17269568STaniya Das { P_GPLL0_OUT_MAIN, 1 }, 219*17269568STaniya Das { P_CORE_BI_PLL_TEST_SE, 7 }, 220*17269568STaniya Das }; 221*17269568STaniya Das 222*17269568STaniya Das static const struct clk_parent_data gcc_parent_data_3[] = { 223*17269568STaniya Das { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 224*17269568STaniya Das { .hw = &gpll0.clkr.hw }, 225*17269568STaniya Das { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 226*17269568STaniya Das }; 227*17269568STaniya Das 228*17269568STaniya Das static const struct parent_map gcc_parent_map_4[] = { 229*17269568STaniya Das { P_BI_TCXO, 0 }, 230*17269568STaniya Das { P_GPLL0_OUT_MAIN, 1 }, 231*17269568STaniya Das { P_SLEEP_CLK, 5 }, 232*17269568STaniya Das { P_GPLL0_OUT_EVEN, 6 }, 233*17269568STaniya Das { P_CORE_BI_PLL_TEST_SE, 7 }, 234*17269568STaniya Das }; 235*17269568STaniya Das 236*17269568STaniya Das static const struct clk_parent_data gcc_parent_data_4[] = { 237*17269568STaniya Das { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 238*17269568STaniya Das { .hw = &gpll0.clkr.hw }, 239*17269568STaniya Das { .fw_name = "sleep_clk", .name = "sleep_clk" }, 240*17269568STaniya Das { .hw = &gpll0_out_even.clkr.hw }, 241*17269568STaniya Das { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 242*17269568STaniya Das }; 243*17269568STaniya Das 244*17269568STaniya Das static const struct parent_map gcc_parent_map_5[] = { 245*17269568STaniya Das { P_BI_TCXO, 0 }, 246*17269568STaniya Das { P_GPLL0_OUT_MAIN, 1 }, 247*17269568STaniya Das { P_GPLL7_OUT_MAIN, 3 }, 248*17269568STaniya Das { P_GPLL0_OUT_EVEN, 6 }, 249*17269568STaniya Das { P_CORE_BI_PLL_TEST_SE, 7 }, 250*17269568STaniya Das }; 251*17269568STaniya Das 252*17269568STaniya Das static const struct clk_parent_data gcc_parent_data_5[] = { 253*17269568STaniya Das { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 254*17269568STaniya Das { .hw = &gpll0.clkr.hw }, 255*17269568STaniya Das { .hw = &gpll7.clkr.hw }, 256*17269568STaniya Das { .hw = &gpll0_out_even.clkr.hw }, 257*17269568STaniya Das { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 258*17269568STaniya Das }; 259*17269568STaniya Das 260*17269568STaniya Das static const struct parent_map gcc_parent_map_6[] = { 261*17269568STaniya Das { P_BI_TCXO, 0 }, 262*17269568STaniya Das { P_GPLL0_OUT_MAIN, 1 }, 263*17269568STaniya Das { P_SLEEP_CLK, 5 }, 264*17269568STaniya Das { P_CORE_BI_PLL_TEST_SE, 7 }, 265*17269568STaniya Das }; 266*17269568STaniya Das 267*17269568STaniya Das static const struct clk_parent_data gcc_parent_data_6[] = { 268*17269568STaniya Das { .fw_name = "bi_tcxo", .name = "bi_tcxo" }, 269*17269568STaniya Das { .hw = &gpll0.clkr.hw }, 270*17269568STaniya Das { .fw_name = "sleep_clk", .name = "sleep_clk" }, 271*17269568STaniya Das { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 272*17269568STaniya Das }; 273*17269568STaniya Das 274*17269568STaniya Das static const struct freq_tbl ftbl_gcc_cpuss_ahb_clk_src[] = { 275*17269568STaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 276*17269568STaniya Das { } 277*17269568STaniya Das }; 278*17269568STaniya Das 279*17269568STaniya Das static struct clk_rcg2 gcc_cpuss_ahb_clk_src = { 280*17269568STaniya Das .cmd_rcgr = 0x48014, 281*17269568STaniya Das .mnd_width = 0, 282*17269568STaniya Das .hid_width = 5, 283*17269568STaniya Das .parent_map = gcc_parent_map_0, 284*17269568STaniya Das .freq_tbl = ftbl_gcc_cpuss_ahb_clk_src, 285*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 286*17269568STaniya Das .name = "gcc_cpuss_ahb_clk_src", 287*17269568STaniya Das .parent_data = gcc_parent_data_0_ao, 288*17269568STaniya Das .num_parents = 4, 289*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 290*17269568STaniya Das .ops = &clk_rcg2_ops, 291*17269568STaniya Das }, 292*17269568STaniya Das }; 293*17269568STaniya Das 294*17269568STaniya Das static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = { 295*17269568STaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 296*17269568STaniya Das F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0), 297*17269568STaniya Das F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0), 298*17269568STaniya Das F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0), 299*17269568STaniya Das F(200000000, P_GPLL0_OUT_EVEN, 1.5, 0, 0), 300*17269568STaniya Das { } 301*17269568STaniya Das }; 302*17269568STaniya Das 303*17269568STaniya Das static struct clk_rcg2 gcc_gp1_clk_src = { 304*17269568STaniya Das .cmd_rcgr = 0x64004, 305*17269568STaniya Das .mnd_width = 8, 306*17269568STaniya Das .hid_width = 5, 307*17269568STaniya Das .parent_map = gcc_parent_map_4, 308*17269568STaniya Das .freq_tbl = ftbl_gcc_gp1_clk_src, 309*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 310*17269568STaniya Das .name = "gcc_gp1_clk_src", 311*17269568STaniya Das .parent_data = gcc_parent_data_4, 312*17269568STaniya Das .num_parents = 5, 313*17269568STaniya Das .ops = &clk_rcg2_ops, 314*17269568STaniya Das }, 315*17269568STaniya Das }; 316*17269568STaniya Das 317*17269568STaniya Das static struct clk_rcg2 gcc_gp2_clk_src = { 318*17269568STaniya Das .cmd_rcgr = 0x65004, 319*17269568STaniya Das .mnd_width = 8, 320*17269568STaniya Das .hid_width = 5, 321*17269568STaniya Das .parent_map = gcc_parent_map_4, 322*17269568STaniya Das .freq_tbl = ftbl_gcc_gp1_clk_src, 323*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 324*17269568STaniya Das .name = "gcc_gp2_clk_src", 325*17269568STaniya Das .parent_data = gcc_parent_data_4, 326*17269568STaniya Das .num_parents = 5, 327*17269568STaniya Das .ops = &clk_rcg2_ops, 328*17269568STaniya Das }, 329*17269568STaniya Das }; 330*17269568STaniya Das 331*17269568STaniya Das static struct clk_rcg2 gcc_gp3_clk_src = { 332*17269568STaniya Das .cmd_rcgr = 0x66004, 333*17269568STaniya Das .mnd_width = 8, 334*17269568STaniya Das .hid_width = 5, 335*17269568STaniya Das .parent_map = gcc_parent_map_4, 336*17269568STaniya Das .freq_tbl = ftbl_gcc_gp1_clk_src, 337*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 338*17269568STaniya Das .name = "gcc_gp3_clk_src", 339*17269568STaniya Das .parent_data = gcc_parent_data_4, 340*17269568STaniya Das .num_parents = 5, 341*17269568STaniya Das .ops = &clk_rcg2_ops, 342*17269568STaniya Das }, 343*17269568STaniya Das }; 344*17269568STaniya Das 345*17269568STaniya Das static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = { 346*17269568STaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 347*17269568STaniya Das F(60000000, P_GPLL0_OUT_EVEN, 5, 0, 0), 348*17269568STaniya Das { } 349*17269568STaniya Das }; 350*17269568STaniya Das 351*17269568STaniya Das static struct clk_rcg2 gcc_pdm2_clk_src = { 352*17269568STaniya Das .cmd_rcgr = 0x33010, 353*17269568STaniya Das .mnd_width = 0, 354*17269568STaniya Das .hid_width = 5, 355*17269568STaniya Das .parent_map = gcc_parent_map_0, 356*17269568STaniya Das .freq_tbl = ftbl_gcc_pdm2_clk_src, 357*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 358*17269568STaniya Das .name = "gcc_pdm2_clk_src", 359*17269568STaniya Das .parent_data = gcc_parent_data_0, 360*17269568STaniya Das .num_parents = 4, 361*17269568STaniya Das .ops = &clk_rcg2_ops, 362*17269568STaniya Das }, 363*17269568STaniya Das }; 364*17269568STaniya Das 365*17269568STaniya Das static const struct freq_tbl ftbl_gcc_qspi_core_clk_src[] = { 366*17269568STaniya Das F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0), 367*17269568STaniya Das F(150000000, P_GPLL0_OUT_EVEN, 2, 0, 0), 368*17269568STaniya Das F(300000000, P_GPLL0_OUT_EVEN, 1, 0, 0), 369*17269568STaniya Das { } 370*17269568STaniya Das }; 371*17269568STaniya Das 372*17269568STaniya Das static struct clk_rcg2 gcc_qspi_core_clk_src = { 373*17269568STaniya Das .cmd_rcgr = 0x4b00c, 374*17269568STaniya Das .mnd_width = 0, 375*17269568STaniya Das .hid_width = 5, 376*17269568STaniya Das .parent_map = gcc_parent_map_2, 377*17269568STaniya Das .freq_tbl = ftbl_gcc_qspi_core_clk_src, 378*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 379*17269568STaniya Das .name = "gcc_qspi_core_clk_src", 380*17269568STaniya Das .parent_data = gcc_parent_data_2, 381*17269568STaniya Das .num_parents = 6, 382*17269568STaniya Das .ops = &clk_rcg2_ops, 383*17269568STaniya Das }, 384*17269568STaniya Das }; 385*17269568STaniya Das 386*17269568STaniya Das static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = { 387*17269568STaniya Das F(7372800, P_GPLL0_OUT_EVEN, 1, 384, 15625), 388*17269568STaniya Das F(14745600, P_GPLL0_OUT_EVEN, 1, 768, 15625), 389*17269568STaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 390*17269568STaniya Das F(29491200, P_GPLL0_OUT_EVEN, 1, 1536, 15625), 391*17269568STaniya Das F(32000000, P_GPLL0_OUT_EVEN, 1, 8, 75), 392*17269568STaniya Das F(48000000, P_GPLL0_OUT_EVEN, 1, 4, 25), 393*17269568STaniya Das F(64000000, P_GPLL0_OUT_EVEN, 1, 16, 75), 394*17269568STaniya Das F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0), 395*17269568STaniya Das F(80000000, P_GPLL0_OUT_EVEN, 1, 4, 15), 396*17269568STaniya Das F(96000000, P_GPLL0_OUT_EVEN, 1, 8, 25), 397*17269568STaniya Das F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0), 398*17269568STaniya Das F(102400000, P_GPLL0_OUT_EVEN, 1, 128, 375), 399*17269568STaniya Das F(112000000, P_GPLL0_OUT_EVEN, 1, 28, 75), 400*17269568STaniya Das F(117964800, P_GPLL0_OUT_EVEN, 1, 6144, 15625), 401*17269568STaniya Das F(120000000, P_GPLL0_OUT_EVEN, 2.5, 0, 0), 402*17269568STaniya Das F(128000000, P_GPLL6_OUT_MAIN, 3, 0, 0), 403*17269568STaniya Das { } 404*17269568STaniya Das }; 405*17269568STaniya Das 406*17269568STaniya Das static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = { 407*17269568STaniya Das .name = "gcc_qupv3_wrap0_s0_clk_src", 408*17269568STaniya Das .parent_data = gcc_parent_data_0, 409*17269568STaniya Das .num_parents = 4, 410*17269568STaniya Das .ops = &clk_rcg2_ops, 411*17269568STaniya Das }; 412*17269568STaniya Das 413*17269568STaniya Das static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = { 414*17269568STaniya Das .cmd_rcgr = 0x17034, 415*17269568STaniya Das .mnd_width = 16, 416*17269568STaniya Das .hid_width = 5, 417*17269568STaniya Das .parent_map = gcc_parent_map_0, 418*17269568STaniya Das .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 419*17269568STaniya Das .clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init, 420*17269568STaniya Das }; 421*17269568STaniya Das 422*17269568STaniya Das static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = { 423*17269568STaniya Das .name = "gcc_qupv3_wrap0_s1_clk_src", 424*17269568STaniya Das .parent_data = gcc_parent_data_0, 425*17269568STaniya Das .num_parents = 4, 426*17269568STaniya Das .ops = &clk_rcg2_ops, 427*17269568STaniya Das }; 428*17269568STaniya Das 429*17269568STaniya Das static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = { 430*17269568STaniya Das .cmd_rcgr = 0x17164, 431*17269568STaniya Das .mnd_width = 16, 432*17269568STaniya Das .hid_width = 5, 433*17269568STaniya Das .parent_map = gcc_parent_map_0, 434*17269568STaniya Das .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 435*17269568STaniya Das .clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init, 436*17269568STaniya Das }; 437*17269568STaniya Das 438*17269568STaniya Das static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = { 439*17269568STaniya Das .name = "gcc_qupv3_wrap0_s2_clk_src", 440*17269568STaniya Das .parent_data = gcc_parent_data_0, 441*17269568STaniya Das .num_parents = 4, 442*17269568STaniya Das .ops = &clk_rcg2_ops, 443*17269568STaniya Das }; 444*17269568STaniya Das 445*17269568STaniya Das static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = { 446*17269568STaniya Das .cmd_rcgr = 0x17294, 447*17269568STaniya Das .mnd_width = 16, 448*17269568STaniya Das .hid_width = 5, 449*17269568STaniya Das .parent_map = gcc_parent_map_0, 450*17269568STaniya Das .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 451*17269568STaniya Das .clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init, 452*17269568STaniya Das }; 453*17269568STaniya Das 454*17269568STaniya Das static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = { 455*17269568STaniya Das .name = "gcc_qupv3_wrap0_s3_clk_src", 456*17269568STaniya Das .parent_data = gcc_parent_data_0, 457*17269568STaniya Das .num_parents = 4, 458*17269568STaniya Das .ops = &clk_rcg2_ops, 459*17269568STaniya Das }; 460*17269568STaniya Das 461*17269568STaniya Das static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = { 462*17269568STaniya Das .cmd_rcgr = 0x173c4, 463*17269568STaniya Das .mnd_width = 16, 464*17269568STaniya Das .hid_width = 5, 465*17269568STaniya Das .parent_map = gcc_parent_map_0, 466*17269568STaniya Das .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 467*17269568STaniya Das .clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init, 468*17269568STaniya Das }; 469*17269568STaniya Das 470*17269568STaniya Das static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = { 471*17269568STaniya Das .name = "gcc_qupv3_wrap0_s4_clk_src", 472*17269568STaniya Das .parent_data = gcc_parent_data_0, 473*17269568STaniya Das .num_parents = 4, 474*17269568STaniya Das .ops = &clk_rcg2_ops, 475*17269568STaniya Das }; 476*17269568STaniya Das 477*17269568STaniya Das static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = { 478*17269568STaniya Das .cmd_rcgr = 0x174f4, 479*17269568STaniya Das .mnd_width = 16, 480*17269568STaniya Das .hid_width = 5, 481*17269568STaniya Das .parent_map = gcc_parent_map_0, 482*17269568STaniya Das .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 483*17269568STaniya Das .clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init, 484*17269568STaniya Das }; 485*17269568STaniya Das 486*17269568STaniya Das static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = { 487*17269568STaniya Das .name = "gcc_qupv3_wrap0_s5_clk_src", 488*17269568STaniya Das .parent_data = gcc_parent_data_0, 489*17269568STaniya Das .num_parents = 4, 490*17269568STaniya Das .ops = &clk_rcg2_ops, 491*17269568STaniya Das }; 492*17269568STaniya Das 493*17269568STaniya Das static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = { 494*17269568STaniya Das .cmd_rcgr = 0x17624, 495*17269568STaniya Das .mnd_width = 16, 496*17269568STaniya Das .hid_width = 5, 497*17269568STaniya Das .parent_map = gcc_parent_map_0, 498*17269568STaniya Das .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 499*17269568STaniya Das .clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init, 500*17269568STaniya Das }; 501*17269568STaniya Das 502*17269568STaniya Das static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = { 503*17269568STaniya Das .name = "gcc_qupv3_wrap1_s0_clk_src", 504*17269568STaniya Das .parent_data = gcc_parent_data_0, 505*17269568STaniya Das .num_parents = 4, 506*17269568STaniya Das .ops = &clk_rcg2_ops, 507*17269568STaniya Das }; 508*17269568STaniya Das 509*17269568STaniya Das static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = { 510*17269568STaniya Das .cmd_rcgr = 0x18018, 511*17269568STaniya Das .mnd_width = 16, 512*17269568STaniya Das .hid_width = 5, 513*17269568STaniya Das .parent_map = gcc_parent_map_0, 514*17269568STaniya Das .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 515*17269568STaniya Das .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init, 516*17269568STaniya Das }; 517*17269568STaniya Das 518*17269568STaniya Das static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = { 519*17269568STaniya Das .name = "gcc_qupv3_wrap1_s1_clk_src", 520*17269568STaniya Das .parent_data = gcc_parent_data_0, 521*17269568STaniya Das .num_parents = 4, 522*17269568STaniya Das .ops = &clk_rcg2_ops, 523*17269568STaniya Das }; 524*17269568STaniya Das 525*17269568STaniya Das static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = { 526*17269568STaniya Das .cmd_rcgr = 0x18148, 527*17269568STaniya Das .mnd_width = 16, 528*17269568STaniya Das .hid_width = 5, 529*17269568STaniya Das .parent_map = gcc_parent_map_0, 530*17269568STaniya Das .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 531*17269568STaniya Das .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init, 532*17269568STaniya Das }; 533*17269568STaniya Das 534*17269568STaniya Das static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = { 535*17269568STaniya Das .name = "gcc_qupv3_wrap1_s2_clk_src", 536*17269568STaniya Das .parent_data = gcc_parent_data_0, 537*17269568STaniya Das .num_parents = 4, 538*17269568STaniya Das .ops = &clk_rcg2_ops, 539*17269568STaniya Das }; 540*17269568STaniya Das 541*17269568STaniya Das static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = { 542*17269568STaniya Das .cmd_rcgr = 0x18278, 543*17269568STaniya Das .mnd_width = 16, 544*17269568STaniya Das .hid_width = 5, 545*17269568STaniya Das .parent_map = gcc_parent_map_0, 546*17269568STaniya Das .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 547*17269568STaniya Das .clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init, 548*17269568STaniya Das }; 549*17269568STaniya Das 550*17269568STaniya Das static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = { 551*17269568STaniya Das .name = "gcc_qupv3_wrap1_s3_clk_src", 552*17269568STaniya Das .parent_data = gcc_parent_data_0, 553*17269568STaniya Das .num_parents = 4, 554*17269568STaniya Das .ops = &clk_rcg2_ops, 555*17269568STaniya Das }; 556*17269568STaniya Das 557*17269568STaniya Das static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = { 558*17269568STaniya Das .cmd_rcgr = 0x183a8, 559*17269568STaniya Das .mnd_width = 16, 560*17269568STaniya Das .hid_width = 5, 561*17269568STaniya Das .parent_map = gcc_parent_map_0, 562*17269568STaniya Das .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 563*17269568STaniya Das .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init, 564*17269568STaniya Das }; 565*17269568STaniya Das 566*17269568STaniya Das static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = { 567*17269568STaniya Das .name = "gcc_qupv3_wrap1_s4_clk_src", 568*17269568STaniya Das .parent_data = gcc_parent_data_0, 569*17269568STaniya Das .num_parents = 4, 570*17269568STaniya Das .ops = &clk_rcg2_ops, 571*17269568STaniya Das }; 572*17269568STaniya Das 573*17269568STaniya Das static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = { 574*17269568STaniya Das .cmd_rcgr = 0x184d8, 575*17269568STaniya Das .mnd_width = 16, 576*17269568STaniya Das .hid_width = 5, 577*17269568STaniya Das .parent_map = gcc_parent_map_0, 578*17269568STaniya Das .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 579*17269568STaniya Das .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init, 580*17269568STaniya Das }; 581*17269568STaniya Das 582*17269568STaniya Das static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = { 583*17269568STaniya Das .name = "gcc_qupv3_wrap1_s5_clk_src", 584*17269568STaniya Das .parent_data = gcc_parent_data_0, 585*17269568STaniya Das .num_parents = 4, 586*17269568STaniya Das .ops = &clk_rcg2_ops, 587*17269568STaniya Das }; 588*17269568STaniya Das 589*17269568STaniya Das static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = { 590*17269568STaniya Das .cmd_rcgr = 0x18608, 591*17269568STaniya Das .mnd_width = 16, 592*17269568STaniya Das .hid_width = 5, 593*17269568STaniya Das .parent_map = gcc_parent_map_0, 594*17269568STaniya Das .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src, 595*17269568STaniya Das .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init, 596*17269568STaniya Das }; 597*17269568STaniya Das 598*17269568STaniya Das 599*17269568STaniya Das static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = { 600*17269568STaniya Das F(144000, P_BI_TCXO, 16, 3, 25), 601*17269568STaniya Das F(400000, P_BI_TCXO, 12, 1, 4), 602*17269568STaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 603*17269568STaniya Das F(20000000, P_GPLL0_OUT_EVEN, 5, 1, 3), 604*17269568STaniya Das F(25000000, P_GPLL0_OUT_EVEN, 6, 1, 2), 605*17269568STaniya Das F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0), 606*17269568STaniya Das F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0), 607*17269568STaniya Das F(192000000, P_GPLL6_OUT_MAIN, 2, 0, 0), 608*17269568STaniya Das F(384000000, P_GPLL6_OUT_MAIN, 1, 0, 0), 609*17269568STaniya Das { } 610*17269568STaniya Das }; 611*17269568STaniya Das 612*17269568STaniya Das static struct clk_rcg2 gcc_sdcc1_apps_clk_src = { 613*17269568STaniya Das .cmd_rcgr = 0x12028, 614*17269568STaniya Das .mnd_width = 8, 615*17269568STaniya Das .hid_width = 5, 616*17269568STaniya Das .parent_map = gcc_parent_map_1, 617*17269568STaniya Das .freq_tbl = ftbl_gcc_sdcc1_apps_clk_src, 618*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 619*17269568STaniya Das .name = "gcc_sdcc1_apps_clk_src", 620*17269568STaniya Das .parent_data = gcc_parent_data_1, 621*17269568STaniya Das .num_parents = 5, 622*17269568STaniya Das .ops = &clk_rcg2_ops, 623*17269568STaniya Das }, 624*17269568STaniya Das }; 625*17269568STaniya Das 626*17269568STaniya Das static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = { 627*17269568STaniya Das F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0), 628*17269568STaniya Das F(150000000, P_GPLL0_OUT_EVEN, 2, 0, 0), 629*17269568STaniya Das F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0), 630*17269568STaniya Das F(300000000, P_GPLL0_OUT_EVEN, 1, 0, 0), 631*17269568STaniya Das { } 632*17269568STaniya Das }; 633*17269568STaniya Das 634*17269568STaniya Das static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = { 635*17269568STaniya Das .cmd_rcgr = 0x12010, 636*17269568STaniya Das .mnd_width = 0, 637*17269568STaniya Das .hid_width = 5, 638*17269568STaniya Das .parent_map = gcc_parent_map_0, 639*17269568STaniya Das .freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src, 640*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 641*17269568STaniya Das .name = "gcc_sdcc1_ice_core_clk_src", 642*17269568STaniya Das .parent_data = gcc_parent_data_0, 643*17269568STaniya Das .num_parents = 4, 644*17269568STaniya Das .ops = &clk_rcg2_ops, 645*17269568STaniya Das }, 646*17269568STaniya Das }; 647*17269568STaniya Das 648*17269568STaniya Das static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = { 649*17269568STaniya Das F(400000, P_BI_TCXO, 12, 1, 4), 650*17269568STaniya Das F(9600000, P_BI_TCXO, 2, 0, 0), 651*17269568STaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 652*17269568STaniya Das F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0), 653*17269568STaniya Das F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0), 654*17269568STaniya Das F(202000000, P_GPLL7_OUT_MAIN, 4, 0, 0), 655*17269568STaniya Das { } 656*17269568STaniya Das }; 657*17269568STaniya Das 658*17269568STaniya Das static struct clk_rcg2 gcc_sdcc2_apps_clk_src = { 659*17269568STaniya Das .cmd_rcgr = 0x1400c, 660*17269568STaniya Das .mnd_width = 8, 661*17269568STaniya Das .hid_width = 5, 662*17269568STaniya Das .parent_map = gcc_parent_map_5, 663*17269568STaniya Das .freq_tbl = ftbl_gcc_sdcc2_apps_clk_src, 664*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 665*17269568STaniya Das .name = "gcc_sdcc2_apps_clk_src", 666*17269568STaniya Das .parent_data = gcc_parent_data_5, 667*17269568STaniya Das .num_parents = 5, 668*17269568STaniya Das .ops = &clk_rcg2_ops, 669*17269568STaniya Das }, 670*17269568STaniya Das }; 671*17269568STaniya Das 672*17269568STaniya Das static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = { 673*17269568STaniya Das F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0), 674*17269568STaniya Das F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0), 675*17269568STaniya Das F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0), 676*17269568STaniya Das F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0), 677*17269568STaniya Das F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0), 678*17269568STaniya Das { } 679*17269568STaniya Das }; 680*17269568STaniya Das 681*17269568STaniya Das static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = { 682*17269568STaniya Das .cmd_rcgr = 0x77020, 683*17269568STaniya Das .mnd_width = 8, 684*17269568STaniya Das .hid_width = 5, 685*17269568STaniya Das .parent_map = gcc_parent_map_0, 686*17269568STaniya Das .freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src, 687*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 688*17269568STaniya Das .name = "gcc_ufs_phy_axi_clk_src", 689*17269568STaniya Das .parent_data = gcc_parent_data_0, 690*17269568STaniya Das .num_parents = 4, 691*17269568STaniya Das .ops = &clk_rcg2_ops, 692*17269568STaniya Das }, 693*17269568STaniya Das }; 694*17269568STaniya Das 695*17269568STaniya Das static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = { 696*17269568STaniya Das F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0), 697*17269568STaniya Das F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0), 698*17269568STaniya Das F(150000000, P_GPLL0_OUT_EVEN, 2, 0, 0), 699*17269568STaniya Das F(300000000, P_GPLL0_OUT_EVEN, 1, 0, 0), 700*17269568STaniya Das { } 701*17269568STaniya Das }; 702*17269568STaniya Das 703*17269568STaniya Das static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = { 704*17269568STaniya Das .cmd_rcgr = 0x77048, 705*17269568STaniya Das .mnd_width = 0, 706*17269568STaniya Das .hid_width = 5, 707*17269568STaniya Das .parent_map = gcc_parent_map_0, 708*17269568STaniya Das .freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src, 709*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 710*17269568STaniya Das .name = "gcc_ufs_phy_ice_core_clk_src", 711*17269568STaniya Das .parent_data = gcc_parent_data_0, 712*17269568STaniya Das .num_parents = 4, 713*17269568STaniya Das .ops = &clk_rcg2_ops, 714*17269568STaniya Das }, 715*17269568STaniya Das }; 716*17269568STaniya Das 717*17269568STaniya Das static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = { 718*17269568STaniya Das F(9600000, P_BI_TCXO, 2, 0, 0), 719*17269568STaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 720*17269568STaniya Das { } 721*17269568STaniya Das }; 722*17269568STaniya Das 723*17269568STaniya Das static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = { 724*17269568STaniya Das .cmd_rcgr = 0x77098, 725*17269568STaniya Das .mnd_width = 0, 726*17269568STaniya Das .hid_width = 5, 727*17269568STaniya Das .parent_map = gcc_parent_map_3, 728*17269568STaniya Das .freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src, 729*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 730*17269568STaniya Das .name = "gcc_ufs_phy_phy_aux_clk_src", 731*17269568STaniya Das .parent_data = gcc_parent_data_3, 732*17269568STaniya Das .num_parents = 3, 733*17269568STaniya Das .ops = &clk_rcg2_ops, 734*17269568STaniya Das }, 735*17269568STaniya Das }; 736*17269568STaniya Das 737*17269568STaniya Das static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src[] = { 738*17269568STaniya Das F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0), 739*17269568STaniya Das F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0), 740*17269568STaniya Das F(150000000, P_GPLL0_OUT_EVEN, 2, 0, 0), 741*17269568STaniya Das { } 742*17269568STaniya Das }; 743*17269568STaniya Das 744*17269568STaniya Das static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = { 745*17269568STaniya Das .cmd_rcgr = 0x77060, 746*17269568STaniya Das .mnd_width = 0, 747*17269568STaniya Das .hid_width = 5, 748*17269568STaniya Das .parent_map = gcc_parent_map_0, 749*17269568STaniya Das .freq_tbl = ftbl_gcc_ufs_phy_unipro_core_clk_src, 750*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 751*17269568STaniya Das .name = "gcc_ufs_phy_unipro_core_clk_src", 752*17269568STaniya Das .parent_data = gcc_parent_data_0, 753*17269568STaniya Das .num_parents = 4, 754*17269568STaniya Das .ops = &clk_rcg2_ops, 755*17269568STaniya Das }, 756*17269568STaniya Das }; 757*17269568STaniya Das 758*17269568STaniya Das static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = { 759*17269568STaniya Das F(66666667, P_GPLL0_OUT_EVEN, 4.5, 0, 0), 760*17269568STaniya Das F(133333333, P_GPLL0_OUT_MAIN, 4.5, 0, 0), 761*17269568STaniya Das F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0), 762*17269568STaniya Das F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0), 763*17269568STaniya Das { } 764*17269568STaniya Das }; 765*17269568STaniya Das 766*17269568STaniya Das static struct clk_rcg2 gcc_usb30_prim_master_clk_src = { 767*17269568STaniya Das .cmd_rcgr = 0xf01c, 768*17269568STaniya Das .mnd_width = 8, 769*17269568STaniya Das .hid_width = 5, 770*17269568STaniya Das .parent_map = gcc_parent_map_0, 771*17269568STaniya Das .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src, 772*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 773*17269568STaniya Das .name = "gcc_usb30_prim_master_clk_src", 774*17269568STaniya Das .parent_data = gcc_parent_data_0, 775*17269568STaniya Das .num_parents = 4, 776*17269568STaniya Das .ops = &clk_rcg2_ops, 777*17269568STaniya Das }, 778*17269568STaniya Das }; 779*17269568STaniya Das 780*17269568STaniya Das static const struct freq_tbl ftbl_gcc_usb30_prim_mock_utmi_clk_src[] = { 781*17269568STaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 782*17269568STaniya Das F(20000000, P_GPLL0_OUT_EVEN, 15, 0, 0), 783*17269568STaniya Das { } 784*17269568STaniya Das }; 785*17269568STaniya Das 786*17269568STaniya Das static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = { 787*17269568STaniya Das .cmd_rcgr = 0xf034, 788*17269568STaniya Das .mnd_width = 0, 789*17269568STaniya Das .hid_width = 5, 790*17269568STaniya Das .parent_map = gcc_parent_map_0, 791*17269568STaniya Das .freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src, 792*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 793*17269568STaniya Das .name = "gcc_usb30_prim_mock_utmi_clk_src", 794*17269568STaniya Das .parent_data = gcc_parent_data_0, 795*17269568STaniya Das .num_parents = 4, 796*17269568STaniya Das .ops = &clk_rcg2_ops, 797*17269568STaniya Das }, 798*17269568STaniya Das }; 799*17269568STaniya Das 800*17269568STaniya Das static const struct freq_tbl ftbl_gcc_usb3_prim_phy_aux_clk_src[] = { 801*17269568STaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 802*17269568STaniya Das { } 803*17269568STaniya Das }; 804*17269568STaniya Das 805*17269568STaniya Das static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = { 806*17269568STaniya Das .cmd_rcgr = 0xf060, 807*17269568STaniya Das .mnd_width = 0, 808*17269568STaniya Das .hid_width = 5, 809*17269568STaniya Das .parent_map = gcc_parent_map_6, 810*17269568STaniya Das .freq_tbl = ftbl_gcc_usb3_prim_phy_aux_clk_src, 811*17269568STaniya Das .clkr.hw.init = &(struct clk_init_data){ 812*17269568STaniya Das .name = "gcc_usb3_prim_phy_aux_clk_src", 813*17269568STaniya Das .parent_data = gcc_parent_data_6, 814*17269568STaniya Das .num_parents = 4, 815*17269568STaniya Das .ops = &clk_rcg2_ops, 816*17269568STaniya Das }, 817*17269568STaniya Das }; 818*17269568STaniya Das 819*17269568STaniya Das static struct clk_branch gcc_aggre_ufs_phy_axi_clk = { 820*17269568STaniya Das .halt_reg = 0x82024, 821*17269568STaniya Das .halt_check = BRANCH_HALT_DELAY, 822*17269568STaniya Das .hwcg_reg = 0x82024, 823*17269568STaniya Das .hwcg_bit = 1, 824*17269568STaniya Das .clkr = { 825*17269568STaniya Das .enable_reg = 0x82024, 826*17269568STaniya Das .enable_mask = BIT(0), 827*17269568STaniya Das .hw.init = &(struct clk_init_data){ 828*17269568STaniya Das .name = "gcc_aggre_ufs_phy_axi_clk", 829*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 830*17269568STaniya Das .hw = &gcc_ufs_phy_axi_clk_src.clkr.hw, 831*17269568STaniya Das }, 832*17269568STaniya Das .num_parents = 1, 833*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 834*17269568STaniya Das .ops = &clk_branch2_ops, 835*17269568STaniya Das }, 836*17269568STaniya Das }, 837*17269568STaniya Das }; 838*17269568STaniya Das 839*17269568STaniya Das static struct clk_branch gcc_aggre_usb3_prim_axi_clk = { 840*17269568STaniya Das .halt_reg = 0x8201c, 841*17269568STaniya Das .halt_check = BRANCH_HALT, 842*17269568STaniya Das .clkr = { 843*17269568STaniya Das .enable_reg = 0x8201c, 844*17269568STaniya Das .enable_mask = BIT(0), 845*17269568STaniya Das .hw.init = &(struct clk_init_data){ 846*17269568STaniya Das .name = "gcc_aggre_usb3_prim_axi_clk", 847*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 848*17269568STaniya Das .hw = &gcc_usb30_prim_master_clk_src.clkr.hw, 849*17269568STaniya Das }, 850*17269568STaniya Das .num_parents = 1, 851*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 852*17269568STaniya Das .ops = &clk_branch2_ops, 853*17269568STaniya Das }, 854*17269568STaniya Das }, 855*17269568STaniya Das }; 856*17269568STaniya Das 857*17269568STaniya Das static struct clk_branch gcc_boot_rom_ahb_clk = { 858*17269568STaniya Das .halt_reg = 0x38004, 859*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 860*17269568STaniya Das .hwcg_reg = 0x38004, 861*17269568STaniya Das .hwcg_bit = 1, 862*17269568STaniya Das .clkr = { 863*17269568STaniya Das .enable_reg = 0x52000, 864*17269568STaniya Das .enable_mask = BIT(10), 865*17269568STaniya Das .hw.init = &(struct clk_init_data){ 866*17269568STaniya Das .name = "gcc_boot_rom_ahb_clk", 867*17269568STaniya Das .ops = &clk_branch2_ops, 868*17269568STaniya Das }, 869*17269568STaniya Das }, 870*17269568STaniya Das }; 871*17269568STaniya Das 872*17269568STaniya Das static struct clk_branch gcc_camera_ahb_clk = { 873*17269568STaniya Das .halt_reg = 0xb008, 874*17269568STaniya Das .halt_check = BRANCH_HALT, 875*17269568STaniya Das .hwcg_reg = 0xb008, 876*17269568STaniya Das .hwcg_bit = 1, 877*17269568STaniya Das .clkr = { 878*17269568STaniya Das .enable_reg = 0xb008, 879*17269568STaniya Das .enable_mask = BIT(0), 880*17269568STaniya Das .hw.init = &(struct clk_init_data){ 881*17269568STaniya Das .name = "gcc_camera_ahb_clk", 882*17269568STaniya Das .ops = &clk_branch2_ops, 883*17269568STaniya Das }, 884*17269568STaniya Das }, 885*17269568STaniya Das }; 886*17269568STaniya Das 887*17269568STaniya Das static struct clk_branch gcc_camera_hf_axi_clk = { 888*17269568STaniya Das .halt_reg = 0xb020, 889*17269568STaniya Das .halt_check = BRANCH_HALT, 890*17269568STaniya Das .clkr = { 891*17269568STaniya Das .enable_reg = 0xb020, 892*17269568STaniya Das .enable_mask = BIT(0), 893*17269568STaniya Das .hw.init = &(struct clk_init_data){ 894*17269568STaniya Das .name = "gcc_camera_hf_axi_clk", 895*17269568STaniya Das .ops = &clk_branch2_ops, 896*17269568STaniya Das }, 897*17269568STaniya Das }, 898*17269568STaniya Das }; 899*17269568STaniya Das 900*17269568STaniya Das static struct clk_branch gcc_camera_throttle_hf_axi_clk = { 901*17269568STaniya Das .halt_reg = 0xb080, 902*17269568STaniya Das .halt_check = BRANCH_HALT, 903*17269568STaniya Das .hwcg_reg = 0xb080, 904*17269568STaniya Das .hwcg_bit = 1, 905*17269568STaniya Das .clkr = { 906*17269568STaniya Das .enable_reg = 0xb080, 907*17269568STaniya Das .enable_mask = BIT(0), 908*17269568STaniya Das .hw.init = &(struct clk_init_data){ 909*17269568STaniya Das .name = "gcc_camera_throttle_hf_axi_clk", 910*17269568STaniya Das .ops = &clk_branch2_ops, 911*17269568STaniya Das }, 912*17269568STaniya Das }, 913*17269568STaniya Das }; 914*17269568STaniya Das 915*17269568STaniya Das static struct clk_branch gcc_camera_xo_clk = { 916*17269568STaniya Das .halt_reg = 0xb02c, 917*17269568STaniya Das .halt_check = BRANCH_HALT, 918*17269568STaniya Das .clkr = { 919*17269568STaniya Das .enable_reg = 0xb02c, 920*17269568STaniya Das .enable_mask = BIT(0), 921*17269568STaniya Das .hw.init = &(struct clk_init_data){ 922*17269568STaniya Das .name = "gcc_camera_xo_clk", 923*17269568STaniya Das .ops = &clk_branch2_ops, 924*17269568STaniya Das }, 925*17269568STaniya Das }, 926*17269568STaniya Das }; 927*17269568STaniya Das 928*17269568STaniya Das static struct clk_branch gcc_ce1_ahb_clk = { 929*17269568STaniya Das .halt_reg = 0x4100c, 930*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 931*17269568STaniya Das .hwcg_reg = 0x4100c, 932*17269568STaniya Das .hwcg_bit = 1, 933*17269568STaniya Das .clkr = { 934*17269568STaniya Das .enable_reg = 0x52000, 935*17269568STaniya Das .enable_mask = BIT(3), 936*17269568STaniya Das .hw.init = &(struct clk_init_data){ 937*17269568STaniya Das .name = "gcc_ce1_ahb_clk", 938*17269568STaniya Das .ops = &clk_branch2_ops, 939*17269568STaniya Das }, 940*17269568STaniya Das }, 941*17269568STaniya Das }; 942*17269568STaniya Das 943*17269568STaniya Das static struct clk_branch gcc_ce1_axi_clk = { 944*17269568STaniya Das .halt_reg = 0x41008, 945*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 946*17269568STaniya Das .clkr = { 947*17269568STaniya Das .enable_reg = 0x52000, 948*17269568STaniya Das .enable_mask = BIT(4), 949*17269568STaniya Das .hw.init = &(struct clk_init_data){ 950*17269568STaniya Das .name = "gcc_ce1_axi_clk", 951*17269568STaniya Das .ops = &clk_branch2_ops, 952*17269568STaniya Das }, 953*17269568STaniya Das }, 954*17269568STaniya Das }; 955*17269568STaniya Das 956*17269568STaniya Das static struct clk_branch gcc_ce1_clk = { 957*17269568STaniya Das .halt_reg = 0x41004, 958*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 959*17269568STaniya Das .clkr = { 960*17269568STaniya Das .enable_reg = 0x52000, 961*17269568STaniya Das .enable_mask = BIT(5), 962*17269568STaniya Das .hw.init = &(struct clk_init_data){ 963*17269568STaniya Das .name = "gcc_ce1_clk", 964*17269568STaniya Das .ops = &clk_branch2_ops, 965*17269568STaniya Das }, 966*17269568STaniya Das }, 967*17269568STaniya Das }; 968*17269568STaniya Das 969*17269568STaniya Das static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = { 970*17269568STaniya Das .halt_reg = 0x502c, 971*17269568STaniya Das .halt_check = BRANCH_HALT, 972*17269568STaniya Das .clkr = { 973*17269568STaniya Das .enable_reg = 0x502c, 974*17269568STaniya Das .enable_mask = BIT(0), 975*17269568STaniya Das .hw.init = &(struct clk_init_data){ 976*17269568STaniya Das .name = "gcc_cfg_noc_usb3_prim_axi_clk", 977*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 978*17269568STaniya Das .hw = &gcc_usb30_prim_master_clk_src.clkr.hw, 979*17269568STaniya Das }, 980*17269568STaniya Das .num_parents = 1, 981*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 982*17269568STaniya Das .ops = &clk_branch2_ops, 983*17269568STaniya Das }, 984*17269568STaniya Das }, 985*17269568STaniya Das }; 986*17269568STaniya Das 987*17269568STaniya Das /* For CPUSS functionality the AHB clock needs to be left enabled */ 988*17269568STaniya Das static struct clk_branch gcc_cpuss_ahb_clk = { 989*17269568STaniya Das .halt_reg = 0x48000, 990*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 991*17269568STaniya Das .clkr = { 992*17269568STaniya Das .enable_reg = 0x52000, 993*17269568STaniya Das .enable_mask = BIT(21), 994*17269568STaniya Das .hw.init = &(struct clk_init_data){ 995*17269568STaniya Das .name = "gcc_cpuss_ahb_clk", 996*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 997*17269568STaniya Das .hw = &gcc_cpuss_ahb_clk_src.clkr.hw, 998*17269568STaniya Das }, 999*17269568STaniya Das .num_parents = 1, 1000*17269568STaniya Das .flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 1001*17269568STaniya Das .ops = &clk_branch2_ops, 1002*17269568STaniya Das }, 1003*17269568STaniya Das }, 1004*17269568STaniya Das }; 1005*17269568STaniya Das 1006*17269568STaniya Das static struct clk_branch gcc_cpuss_rbcpr_clk = { 1007*17269568STaniya Das .halt_reg = 0x48008, 1008*17269568STaniya Das .halt_check = BRANCH_HALT, 1009*17269568STaniya Das .clkr = { 1010*17269568STaniya Das .enable_reg = 0x48008, 1011*17269568STaniya Das .enable_mask = BIT(0), 1012*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1013*17269568STaniya Das .name = "gcc_cpuss_rbcpr_clk", 1014*17269568STaniya Das .ops = &clk_branch2_ops, 1015*17269568STaniya Das }, 1016*17269568STaniya Das }, 1017*17269568STaniya Das }; 1018*17269568STaniya Das 1019*17269568STaniya Das static struct clk_branch gcc_ddrss_gpu_axi_clk = { 1020*17269568STaniya Das .halt_reg = 0x4452c, 1021*17269568STaniya Das .halt_check = BRANCH_VOTED, 1022*17269568STaniya Das .clkr = { 1023*17269568STaniya Das .enable_reg = 0x4452c, 1024*17269568STaniya Das .enable_mask = BIT(0), 1025*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1026*17269568STaniya Das .name = "gcc_ddrss_gpu_axi_clk", 1027*17269568STaniya Das .ops = &clk_branch2_ops, 1028*17269568STaniya Das }, 1029*17269568STaniya Das }, 1030*17269568STaniya Das }; 1031*17269568STaniya Das 1032*17269568STaniya Das static struct clk_branch gcc_disp_gpll0_clk_src = { 1033*17269568STaniya Das .halt_check = BRANCH_HALT_DELAY, 1034*17269568STaniya Das .clkr = { 1035*17269568STaniya Das .enable_reg = 0x52000, 1036*17269568STaniya Das .enable_mask = BIT(18), 1037*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1038*17269568STaniya Das .name = "gcc_disp_gpll0_clk_src", 1039*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1040*17269568STaniya Das .hw = &gpll0.clkr.hw, 1041*17269568STaniya Das }, 1042*17269568STaniya Das .num_parents = 1, 1043*17269568STaniya Das .ops = &clk_branch2_ops, 1044*17269568STaniya Das }, 1045*17269568STaniya Das }, 1046*17269568STaniya Das }; 1047*17269568STaniya Das 1048*17269568STaniya Das static struct clk_branch gcc_disp_gpll0_div_clk_src = { 1049*17269568STaniya Das .halt_check = BRANCH_HALT_DELAY, 1050*17269568STaniya Das .clkr = { 1051*17269568STaniya Das .enable_reg = 0x52000, 1052*17269568STaniya Das .enable_mask = BIT(19), 1053*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1054*17269568STaniya Das .name = "gcc_disp_gpll0_div_clk_src", 1055*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1056*17269568STaniya Das .hw = &gcc_pll0_main_div_cdiv.hw, 1057*17269568STaniya Das }, 1058*17269568STaniya Das .num_parents = 1, 1059*17269568STaniya Das .ops = &clk_branch2_ops, 1060*17269568STaniya Das }, 1061*17269568STaniya Das }, 1062*17269568STaniya Das }; 1063*17269568STaniya Das 1064*17269568STaniya Das static struct clk_branch gcc_disp_hf_axi_clk = { 1065*17269568STaniya Das .halt_reg = 0xb024, 1066*17269568STaniya Das .halt_check = BRANCH_HALT, 1067*17269568STaniya Das .clkr = { 1068*17269568STaniya Das .enable_reg = 0xb024, 1069*17269568STaniya Das .enable_mask = BIT(0), 1070*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1071*17269568STaniya Das .name = "gcc_disp_hf_axi_clk", 1072*17269568STaniya Das .ops = &clk_branch2_ops, 1073*17269568STaniya Das }, 1074*17269568STaniya Das }, 1075*17269568STaniya Das }; 1076*17269568STaniya Das 1077*17269568STaniya Das static struct clk_branch gcc_disp_throttle_hf_axi_clk = { 1078*17269568STaniya Das .halt_reg = 0xb084, 1079*17269568STaniya Das .halt_check = BRANCH_HALT, 1080*17269568STaniya Das .hwcg_reg = 0xb084, 1081*17269568STaniya Das .hwcg_bit = 1, 1082*17269568STaniya Das .clkr = { 1083*17269568STaniya Das .enable_reg = 0xb084, 1084*17269568STaniya Das .enable_mask = BIT(0), 1085*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1086*17269568STaniya Das .name = "gcc_disp_throttle_hf_axi_clk", 1087*17269568STaniya Das .ops = &clk_branch2_ops, 1088*17269568STaniya Das }, 1089*17269568STaniya Das }, 1090*17269568STaniya Das }; 1091*17269568STaniya Das 1092*17269568STaniya Das static struct clk_branch gcc_disp_xo_clk = { 1093*17269568STaniya Das .halt_reg = 0xb030, 1094*17269568STaniya Das .halt_check = BRANCH_HALT, 1095*17269568STaniya Das .clkr = { 1096*17269568STaniya Das .enable_reg = 0xb030, 1097*17269568STaniya Das .enable_mask = BIT(0), 1098*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1099*17269568STaniya Das .name = "gcc_disp_xo_clk", 1100*17269568STaniya Das .ops = &clk_branch2_ops, 1101*17269568STaniya Das }, 1102*17269568STaniya Das }, 1103*17269568STaniya Das }; 1104*17269568STaniya Das 1105*17269568STaniya Das static struct clk_branch gcc_gp1_clk = { 1106*17269568STaniya Das .halt_reg = 0x64000, 1107*17269568STaniya Das .halt_check = BRANCH_HALT, 1108*17269568STaniya Das .clkr = { 1109*17269568STaniya Das .enable_reg = 0x64000, 1110*17269568STaniya Das .enable_mask = BIT(0), 1111*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1112*17269568STaniya Das .name = "gcc_gp1_clk", 1113*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1114*17269568STaniya Das .hw = &gcc_gp1_clk_src.clkr.hw, 1115*17269568STaniya Das }, 1116*17269568STaniya Das .num_parents = 1, 1117*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1118*17269568STaniya Das .ops = &clk_branch2_ops, 1119*17269568STaniya Das }, 1120*17269568STaniya Das }, 1121*17269568STaniya Das }; 1122*17269568STaniya Das 1123*17269568STaniya Das static struct clk_branch gcc_gp2_clk = { 1124*17269568STaniya Das .halt_reg = 0x65000, 1125*17269568STaniya Das .halt_check = BRANCH_HALT, 1126*17269568STaniya Das .clkr = { 1127*17269568STaniya Das .enable_reg = 0x65000, 1128*17269568STaniya Das .enable_mask = BIT(0), 1129*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1130*17269568STaniya Das .name = "gcc_gp2_clk", 1131*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1132*17269568STaniya Das .hw = &gcc_gp2_clk_src.clkr.hw, 1133*17269568STaniya Das }, 1134*17269568STaniya Das .num_parents = 1, 1135*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1136*17269568STaniya Das .ops = &clk_branch2_ops, 1137*17269568STaniya Das }, 1138*17269568STaniya Das }, 1139*17269568STaniya Das }; 1140*17269568STaniya Das 1141*17269568STaniya Das static struct clk_branch gcc_gp3_clk = { 1142*17269568STaniya Das .halt_reg = 0x66000, 1143*17269568STaniya Das .halt_check = BRANCH_HALT, 1144*17269568STaniya Das .clkr = { 1145*17269568STaniya Das .enable_reg = 0x66000, 1146*17269568STaniya Das .enable_mask = BIT(0), 1147*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1148*17269568STaniya Das .name = "gcc_gp3_clk", 1149*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1150*17269568STaniya Das .hw = &gcc_gp3_clk_src.clkr.hw, 1151*17269568STaniya Das }, 1152*17269568STaniya Das .num_parents = 1, 1153*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1154*17269568STaniya Das .ops = &clk_branch2_ops, 1155*17269568STaniya Das }, 1156*17269568STaniya Das }, 1157*17269568STaniya Das }; 1158*17269568STaniya Das 1159*17269568STaniya Das static struct clk_branch gcc_gpu_gpll0_clk_src = { 1160*17269568STaniya Das .halt_check = BRANCH_HALT_DELAY, 1161*17269568STaniya Das .clkr = { 1162*17269568STaniya Das .enable_reg = 0x52000, 1163*17269568STaniya Das .enable_mask = BIT(15), 1164*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1165*17269568STaniya Das .name = "gcc_gpu_gpll0_clk_src", 1166*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1167*17269568STaniya Das .hw = &gpll0.clkr.hw, 1168*17269568STaniya Das }, 1169*17269568STaniya Das .num_parents = 1, 1170*17269568STaniya Das .ops = &clk_branch2_ops, 1171*17269568STaniya Das }, 1172*17269568STaniya Das }, 1173*17269568STaniya Das }; 1174*17269568STaniya Das 1175*17269568STaniya Das static struct clk_branch gcc_gpu_gpll0_div_clk_src = { 1176*17269568STaniya Das .halt_check = BRANCH_HALT_DELAY, 1177*17269568STaniya Das .clkr = { 1178*17269568STaniya Das .enable_reg = 0x52000, 1179*17269568STaniya Das .enable_mask = BIT(16), 1180*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1181*17269568STaniya Das .name = "gcc_gpu_gpll0_div_clk_src", 1182*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1183*17269568STaniya Das .hw = &gcc_pll0_main_div_cdiv.hw, 1184*17269568STaniya Das }, 1185*17269568STaniya Das .num_parents = 1, 1186*17269568STaniya Das .ops = &clk_branch2_ops, 1187*17269568STaniya Das }, 1188*17269568STaniya Das }, 1189*17269568STaniya Das }; 1190*17269568STaniya Das 1191*17269568STaniya Das static struct clk_branch gcc_gpu_memnoc_gfx_clk = { 1192*17269568STaniya Das .halt_reg = 0x7100c, 1193*17269568STaniya Das .halt_check = BRANCH_VOTED, 1194*17269568STaniya Das .clkr = { 1195*17269568STaniya Das .enable_reg = 0x7100c, 1196*17269568STaniya Das .enable_mask = BIT(0), 1197*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1198*17269568STaniya Das .name = "gcc_gpu_memnoc_gfx_clk", 1199*17269568STaniya Das .ops = &clk_branch2_ops, 1200*17269568STaniya Das }, 1201*17269568STaniya Das }, 1202*17269568STaniya Das }; 1203*17269568STaniya Das 1204*17269568STaniya Das static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = { 1205*17269568STaniya Das .halt_reg = 0x71018, 1206*17269568STaniya Das .halt_check = BRANCH_HALT, 1207*17269568STaniya Das .clkr = { 1208*17269568STaniya Das .enable_reg = 0x71018, 1209*17269568STaniya Das .enable_mask = BIT(0), 1210*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1211*17269568STaniya Das .name = "gcc_gpu_snoc_dvm_gfx_clk", 1212*17269568STaniya Das .ops = &clk_branch2_ops, 1213*17269568STaniya Das }, 1214*17269568STaniya Das }, 1215*17269568STaniya Das }; 1216*17269568STaniya Das 1217*17269568STaniya Das static struct clk_branch gcc_npu_axi_clk = { 1218*17269568STaniya Das .halt_reg = 0x4d008, 1219*17269568STaniya Das .halt_check = BRANCH_HALT, 1220*17269568STaniya Das .clkr = { 1221*17269568STaniya Das .enable_reg = 0x4d008, 1222*17269568STaniya Das .enable_mask = BIT(0), 1223*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1224*17269568STaniya Das .name = "gcc_npu_axi_clk", 1225*17269568STaniya Das .ops = &clk_branch2_ops, 1226*17269568STaniya Das }, 1227*17269568STaniya Das }, 1228*17269568STaniya Das }; 1229*17269568STaniya Das 1230*17269568STaniya Das static struct clk_branch gcc_npu_bwmon_axi_clk = { 1231*17269568STaniya Das .halt_reg = 0x73008, 1232*17269568STaniya Das .halt_check = BRANCH_HALT, 1233*17269568STaniya Das .clkr = { 1234*17269568STaniya Das .enable_reg = 0x73008, 1235*17269568STaniya Das .enable_mask = BIT(0), 1236*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1237*17269568STaniya Das .name = "gcc_npu_bwmon_axi_clk", 1238*17269568STaniya Das .ops = &clk_branch2_ops, 1239*17269568STaniya Das }, 1240*17269568STaniya Das }, 1241*17269568STaniya Das }; 1242*17269568STaniya Das 1243*17269568STaniya Das static struct clk_branch gcc_npu_bwmon_dma_cfg_ahb_clk = { 1244*17269568STaniya Das .halt_reg = 0x73018, 1245*17269568STaniya Das .halt_check = BRANCH_HALT, 1246*17269568STaniya Das .clkr = { 1247*17269568STaniya Das .enable_reg = 0x73018, 1248*17269568STaniya Das .enable_mask = BIT(0), 1249*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1250*17269568STaniya Das .name = "gcc_npu_bwmon_dma_cfg_ahb_clk", 1251*17269568STaniya Das .ops = &clk_branch2_ops, 1252*17269568STaniya Das }, 1253*17269568STaniya Das }, 1254*17269568STaniya Das }; 1255*17269568STaniya Das 1256*17269568STaniya Das static struct clk_branch gcc_npu_bwmon_dsp_cfg_ahb_clk = { 1257*17269568STaniya Das .halt_reg = 0x7301c, 1258*17269568STaniya Das .halt_check = BRANCH_HALT, 1259*17269568STaniya Das .clkr = { 1260*17269568STaniya Das .enable_reg = 0x7301c, 1261*17269568STaniya Das .enable_mask = BIT(0), 1262*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1263*17269568STaniya Das .name = "gcc_npu_bwmon_dsp_cfg_ahb_clk", 1264*17269568STaniya Das .ops = &clk_branch2_ops, 1265*17269568STaniya Das }, 1266*17269568STaniya Das }, 1267*17269568STaniya Das }; 1268*17269568STaniya Das 1269*17269568STaniya Das static struct clk_branch gcc_npu_cfg_ahb_clk = { 1270*17269568STaniya Das .halt_reg = 0x4d004, 1271*17269568STaniya Das .halt_check = BRANCH_HALT, 1272*17269568STaniya Das .hwcg_reg = 0x4d004, 1273*17269568STaniya Das .hwcg_bit = 1, 1274*17269568STaniya Das .clkr = { 1275*17269568STaniya Das .enable_reg = 0x4d004, 1276*17269568STaniya Das .enable_mask = BIT(0), 1277*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1278*17269568STaniya Das .name = "gcc_npu_cfg_ahb_clk", 1279*17269568STaniya Das .ops = &clk_branch2_ops, 1280*17269568STaniya Das }, 1281*17269568STaniya Das }, 1282*17269568STaniya Das }; 1283*17269568STaniya Das 1284*17269568STaniya Das static struct clk_branch gcc_npu_dma_clk = { 1285*17269568STaniya Das .halt_reg = 0x4d1a0, 1286*17269568STaniya Das .halt_check = BRANCH_HALT, 1287*17269568STaniya Das .hwcg_reg = 0x4d1a0, 1288*17269568STaniya Das .hwcg_bit = 1, 1289*17269568STaniya Das .clkr = { 1290*17269568STaniya Das .enable_reg = 0x4d1a0, 1291*17269568STaniya Das .enable_mask = BIT(0), 1292*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1293*17269568STaniya Das .name = "gcc_npu_dma_clk", 1294*17269568STaniya Das .ops = &clk_branch2_ops, 1295*17269568STaniya Das }, 1296*17269568STaniya Das }, 1297*17269568STaniya Das }; 1298*17269568STaniya Das 1299*17269568STaniya Das static struct clk_branch gcc_npu_gpll0_clk_src = { 1300*17269568STaniya Das .halt_check = BRANCH_HALT_DELAY, 1301*17269568STaniya Das .clkr = { 1302*17269568STaniya Das .enable_reg = 0x52000, 1303*17269568STaniya Das .enable_mask = BIT(25), 1304*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1305*17269568STaniya Das .name = "gcc_npu_gpll0_clk_src", 1306*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1307*17269568STaniya Das .hw = &gpll0.clkr.hw, 1308*17269568STaniya Das }, 1309*17269568STaniya Das .num_parents = 1, 1310*17269568STaniya Das .ops = &clk_branch2_ops, 1311*17269568STaniya Das }, 1312*17269568STaniya Das }, 1313*17269568STaniya Das }; 1314*17269568STaniya Das 1315*17269568STaniya Das static struct clk_branch gcc_npu_gpll0_div_clk_src = { 1316*17269568STaniya Das .halt_check = BRANCH_HALT_DELAY, 1317*17269568STaniya Das .clkr = { 1318*17269568STaniya Das .enable_reg = 0x52000, 1319*17269568STaniya Das .enable_mask = BIT(26), 1320*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1321*17269568STaniya Das .name = "gcc_npu_gpll0_div_clk_src", 1322*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1323*17269568STaniya Das .hw = &gcc_pll0_main_div_cdiv.hw, 1324*17269568STaniya Das }, 1325*17269568STaniya Das .num_parents = 1, 1326*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1327*17269568STaniya Das .ops = &clk_branch2_ops, 1328*17269568STaniya Das }, 1329*17269568STaniya Das }, 1330*17269568STaniya Das }; 1331*17269568STaniya Das 1332*17269568STaniya Das static struct clk_branch gcc_pdm2_clk = { 1333*17269568STaniya Das .halt_reg = 0x3300c, 1334*17269568STaniya Das .halt_check = BRANCH_HALT, 1335*17269568STaniya Das .clkr = { 1336*17269568STaniya Das .enable_reg = 0x3300c, 1337*17269568STaniya Das .enable_mask = BIT(0), 1338*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1339*17269568STaniya Das .name = "gcc_pdm2_clk", 1340*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1341*17269568STaniya Das .hw = &gcc_pdm2_clk_src.clkr.hw, 1342*17269568STaniya Das }, 1343*17269568STaniya Das .num_parents = 1, 1344*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1345*17269568STaniya Das .ops = &clk_branch2_ops, 1346*17269568STaniya Das }, 1347*17269568STaniya Das }, 1348*17269568STaniya Das }; 1349*17269568STaniya Das 1350*17269568STaniya Das static struct clk_branch gcc_pdm_ahb_clk = { 1351*17269568STaniya Das .halt_reg = 0x33004, 1352*17269568STaniya Das .halt_check = BRANCH_HALT, 1353*17269568STaniya Das .hwcg_reg = 0x33004, 1354*17269568STaniya Das .hwcg_bit = 1, 1355*17269568STaniya Das .clkr = { 1356*17269568STaniya Das .enable_reg = 0x33004, 1357*17269568STaniya Das .enable_mask = BIT(0), 1358*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1359*17269568STaniya Das .name = "gcc_pdm_ahb_clk", 1360*17269568STaniya Das .ops = &clk_branch2_ops, 1361*17269568STaniya Das }, 1362*17269568STaniya Das }, 1363*17269568STaniya Das }; 1364*17269568STaniya Das 1365*17269568STaniya Das static struct clk_branch gcc_pdm_xo4_clk = { 1366*17269568STaniya Das .halt_reg = 0x33008, 1367*17269568STaniya Das .halt_check = BRANCH_HALT, 1368*17269568STaniya Das .clkr = { 1369*17269568STaniya Das .enable_reg = 0x33008, 1370*17269568STaniya Das .enable_mask = BIT(0), 1371*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1372*17269568STaniya Das .name = "gcc_pdm_xo4_clk", 1373*17269568STaniya Das .ops = &clk_branch2_ops, 1374*17269568STaniya Das }, 1375*17269568STaniya Das }, 1376*17269568STaniya Das }; 1377*17269568STaniya Das 1378*17269568STaniya Das static struct clk_branch gcc_prng_ahb_clk = { 1379*17269568STaniya Das .halt_reg = 0x34004, 1380*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1381*17269568STaniya Das .hwcg_reg = 0x34004, 1382*17269568STaniya Das .hwcg_bit = 1, 1383*17269568STaniya Das .clkr = { 1384*17269568STaniya Das .enable_reg = 0x52000, 1385*17269568STaniya Das .enable_mask = BIT(13), 1386*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1387*17269568STaniya Das .name = "gcc_prng_ahb_clk", 1388*17269568STaniya Das .ops = &clk_branch2_ops, 1389*17269568STaniya Das }, 1390*17269568STaniya Das }, 1391*17269568STaniya Das }; 1392*17269568STaniya Das 1393*17269568STaniya Das static struct clk_branch gcc_qspi_cnoc_periph_ahb_clk = { 1394*17269568STaniya Das .halt_reg = 0x4b004, 1395*17269568STaniya Das .halt_check = BRANCH_HALT, 1396*17269568STaniya Das .hwcg_reg = 0x4b004, 1397*17269568STaniya Das .hwcg_bit = 1, 1398*17269568STaniya Das .clkr = { 1399*17269568STaniya Das .enable_reg = 0x4b004, 1400*17269568STaniya Das .enable_mask = BIT(0), 1401*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1402*17269568STaniya Das .name = "gcc_qspi_cnoc_periph_ahb_clk", 1403*17269568STaniya Das .ops = &clk_branch2_ops, 1404*17269568STaniya Das }, 1405*17269568STaniya Das }, 1406*17269568STaniya Das }; 1407*17269568STaniya Das 1408*17269568STaniya Das static struct clk_branch gcc_qspi_core_clk = { 1409*17269568STaniya Das .halt_reg = 0x4b008, 1410*17269568STaniya Das .halt_check = BRANCH_HALT, 1411*17269568STaniya Das .clkr = { 1412*17269568STaniya Das .enable_reg = 0x4b008, 1413*17269568STaniya Das .enable_mask = BIT(0), 1414*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1415*17269568STaniya Das .name = "gcc_qspi_core_clk", 1416*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1417*17269568STaniya Das .hw = &gcc_qspi_core_clk_src.clkr.hw, 1418*17269568STaniya Das }, 1419*17269568STaniya Das .num_parents = 1, 1420*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1421*17269568STaniya Das .ops = &clk_branch2_ops, 1422*17269568STaniya Das }, 1423*17269568STaniya Das }, 1424*17269568STaniya Das }; 1425*17269568STaniya Das 1426*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = { 1427*17269568STaniya Das .halt_reg = 0x17014, 1428*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1429*17269568STaniya Das .clkr = { 1430*17269568STaniya Das .enable_reg = 0x52008, 1431*17269568STaniya Das .enable_mask = BIT(9), 1432*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1433*17269568STaniya Das .name = "gcc_qupv3_wrap0_core_2x_clk", 1434*17269568STaniya Das .ops = &clk_branch2_ops, 1435*17269568STaniya Das }, 1436*17269568STaniya Das }, 1437*17269568STaniya Das }; 1438*17269568STaniya Das 1439*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap0_core_clk = { 1440*17269568STaniya Das .halt_reg = 0x1700c, 1441*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1442*17269568STaniya Das .clkr = { 1443*17269568STaniya Das .enable_reg = 0x52008, 1444*17269568STaniya Das .enable_mask = BIT(8), 1445*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1446*17269568STaniya Das .name = "gcc_qupv3_wrap0_core_clk", 1447*17269568STaniya Das .ops = &clk_branch2_ops, 1448*17269568STaniya Das }, 1449*17269568STaniya Das }, 1450*17269568STaniya Das }; 1451*17269568STaniya Das 1452*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap0_s0_clk = { 1453*17269568STaniya Das .halt_reg = 0x17030, 1454*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1455*17269568STaniya Das .clkr = { 1456*17269568STaniya Das .enable_reg = 0x52008, 1457*17269568STaniya Das .enable_mask = BIT(10), 1458*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1459*17269568STaniya Das .name = "gcc_qupv3_wrap0_s0_clk", 1460*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1461*17269568STaniya Das .hw = &gcc_qupv3_wrap0_s0_clk_src.clkr.hw, 1462*17269568STaniya Das }, 1463*17269568STaniya Das .num_parents = 1, 1464*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1465*17269568STaniya Das .ops = &clk_branch2_ops, 1466*17269568STaniya Das }, 1467*17269568STaniya Das }, 1468*17269568STaniya Das }; 1469*17269568STaniya Das 1470*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap0_s1_clk = { 1471*17269568STaniya Das .halt_reg = 0x17160, 1472*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1473*17269568STaniya Das .clkr = { 1474*17269568STaniya Das .enable_reg = 0x52008, 1475*17269568STaniya Das .enable_mask = BIT(11), 1476*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1477*17269568STaniya Das .name = "gcc_qupv3_wrap0_s1_clk", 1478*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1479*17269568STaniya Das .hw = &gcc_qupv3_wrap0_s1_clk_src.clkr.hw, 1480*17269568STaniya Das }, 1481*17269568STaniya Das .num_parents = 1, 1482*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1483*17269568STaniya Das .ops = &clk_branch2_ops, 1484*17269568STaniya Das }, 1485*17269568STaniya Das }, 1486*17269568STaniya Das }; 1487*17269568STaniya Das 1488*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap0_s2_clk = { 1489*17269568STaniya Das .halt_reg = 0x17290, 1490*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1491*17269568STaniya Das .clkr = { 1492*17269568STaniya Das .enable_reg = 0x52008, 1493*17269568STaniya Das .enable_mask = BIT(12), 1494*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1495*17269568STaniya Das .name = "gcc_qupv3_wrap0_s2_clk", 1496*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1497*17269568STaniya Das .hw = &gcc_qupv3_wrap0_s2_clk_src.clkr.hw, 1498*17269568STaniya Das }, 1499*17269568STaniya Das .num_parents = 1, 1500*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1501*17269568STaniya Das .ops = &clk_branch2_ops, 1502*17269568STaniya Das }, 1503*17269568STaniya Das }, 1504*17269568STaniya Das }; 1505*17269568STaniya Das 1506*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap0_s3_clk = { 1507*17269568STaniya Das .halt_reg = 0x173c0, 1508*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1509*17269568STaniya Das .clkr = { 1510*17269568STaniya Das .enable_reg = 0x52008, 1511*17269568STaniya Das .enable_mask = BIT(13), 1512*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1513*17269568STaniya Das .name = "gcc_qupv3_wrap0_s3_clk", 1514*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1515*17269568STaniya Das .hw = &gcc_qupv3_wrap0_s3_clk_src.clkr.hw, 1516*17269568STaniya Das }, 1517*17269568STaniya Das .num_parents = 1, 1518*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1519*17269568STaniya Das .ops = &clk_branch2_ops, 1520*17269568STaniya Das }, 1521*17269568STaniya Das }, 1522*17269568STaniya Das }; 1523*17269568STaniya Das 1524*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap0_s4_clk = { 1525*17269568STaniya Das .halt_reg = 0x174f0, 1526*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1527*17269568STaniya Das .clkr = { 1528*17269568STaniya Das .enable_reg = 0x52008, 1529*17269568STaniya Das .enable_mask = BIT(14), 1530*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1531*17269568STaniya Das .name = "gcc_qupv3_wrap0_s4_clk", 1532*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1533*17269568STaniya Das .hw = &gcc_qupv3_wrap0_s4_clk_src.clkr.hw, 1534*17269568STaniya Das }, 1535*17269568STaniya Das .num_parents = 1, 1536*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1537*17269568STaniya Das .ops = &clk_branch2_ops, 1538*17269568STaniya Das }, 1539*17269568STaniya Das }, 1540*17269568STaniya Das }; 1541*17269568STaniya Das 1542*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap0_s5_clk = { 1543*17269568STaniya Das .halt_reg = 0x17620, 1544*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1545*17269568STaniya Das .clkr = { 1546*17269568STaniya Das .enable_reg = 0x52008, 1547*17269568STaniya Das .enable_mask = BIT(15), 1548*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1549*17269568STaniya Das .name = "gcc_qupv3_wrap0_s5_clk", 1550*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1551*17269568STaniya Das .hw = &gcc_qupv3_wrap0_s5_clk_src.clkr.hw, 1552*17269568STaniya Das }, 1553*17269568STaniya Das .num_parents = 1, 1554*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1555*17269568STaniya Das .ops = &clk_branch2_ops, 1556*17269568STaniya Das }, 1557*17269568STaniya Das }, 1558*17269568STaniya Das }; 1559*17269568STaniya Das 1560*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = { 1561*17269568STaniya Das .halt_reg = 0x18004, 1562*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1563*17269568STaniya Das .clkr = { 1564*17269568STaniya Das .enable_reg = 0x52008, 1565*17269568STaniya Das .enable_mask = BIT(18), 1566*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1567*17269568STaniya Das .name = "gcc_qupv3_wrap1_core_2x_clk", 1568*17269568STaniya Das .ops = &clk_branch2_ops, 1569*17269568STaniya Das }, 1570*17269568STaniya Das }, 1571*17269568STaniya Das }; 1572*17269568STaniya Das 1573*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap1_core_clk = { 1574*17269568STaniya Das .halt_reg = 0x18008, 1575*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1576*17269568STaniya Das .clkr = { 1577*17269568STaniya Das .enable_reg = 0x52008, 1578*17269568STaniya Das .enable_mask = BIT(19), 1579*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1580*17269568STaniya Das .name = "gcc_qupv3_wrap1_core_clk", 1581*17269568STaniya Das .ops = &clk_branch2_ops, 1582*17269568STaniya Das }, 1583*17269568STaniya Das }, 1584*17269568STaniya Das }; 1585*17269568STaniya Das 1586*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap1_s0_clk = { 1587*17269568STaniya Das .halt_reg = 0x18014, 1588*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1589*17269568STaniya Das .clkr = { 1590*17269568STaniya Das .enable_reg = 0x52008, 1591*17269568STaniya Das .enable_mask = BIT(22), 1592*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1593*17269568STaniya Das .name = "gcc_qupv3_wrap1_s0_clk", 1594*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1595*17269568STaniya Das .hw = &gcc_qupv3_wrap1_s0_clk_src.clkr.hw, 1596*17269568STaniya Das }, 1597*17269568STaniya Das .num_parents = 1, 1598*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1599*17269568STaniya Das .ops = &clk_branch2_ops, 1600*17269568STaniya Das }, 1601*17269568STaniya Das }, 1602*17269568STaniya Das }; 1603*17269568STaniya Das 1604*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap1_s1_clk = { 1605*17269568STaniya Das .halt_reg = 0x18144, 1606*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1607*17269568STaniya Das .clkr = { 1608*17269568STaniya Das .enable_reg = 0x52008, 1609*17269568STaniya Das .enable_mask = BIT(23), 1610*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1611*17269568STaniya Das .name = "gcc_qupv3_wrap1_s1_clk", 1612*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1613*17269568STaniya Das .hw = &gcc_qupv3_wrap1_s1_clk_src.clkr.hw, 1614*17269568STaniya Das }, 1615*17269568STaniya Das .num_parents = 1, 1616*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1617*17269568STaniya Das .ops = &clk_branch2_ops, 1618*17269568STaniya Das }, 1619*17269568STaniya Das }, 1620*17269568STaniya Das }; 1621*17269568STaniya Das 1622*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap1_s2_clk = { 1623*17269568STaniya Das .halt_reg = 0x18274, 1624*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1625*17269568STaniya Das .clkr = { 1626*17269568STaniya Das .enable_reg = 0x52008, 1627*17269568STaniya Das .enable_mask = BIT(24), 1628*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1629*17269568STaniya Das .name = "gcc_qupv3_wrap1_s2_clk", 1630*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1631*17269568STaniya Das .hw = &gcc_qupv3_wrap1_s2_clk_src.clkr.hw, 1632*17269568STaniya Das }, 1633*17269568STaniya Das .num_parents = 1, 1634*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1635*17269568STaniya Das .ops = &clk_branch2_ops, 1636*17269568STaniya Das }, 1637*17269568STaniya Das }, 1638*17269568STaniya Das }; 1639*17269568STaniya Das 1640*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap1_s3_clk = { 1641*17269568STaniya Das .halt_reg = 0x183a4, 1642*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1643*17269568STaniya Das .clkr = { 1644*17269568STaniya Das .enable_reg = 0x52008, 1645*17269568STaniya Das .enable_mask = BIT(25), 1646*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1647*17269568STaniya Das .name = "gcc_qupv3_wrap1_s3_clk", 1648*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1649*17269568STaniya Das .hw = &gcc_qupv3_wrap1_s3_clk_src.clkr.hw, 1650*17269568STaniya Das }, 1651*17269568STaniya Das .num_parents = 1, 1652*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1653*17269568STaniya Das .ops = &clk_branch2_ops, 1654*17269568STaniya Das }, 1655*17269568STaniya Das }, 1656*17269568STaniya Das }; 1657*17269568STaniya Das 1658*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap1_s4_clk = { 1659*17269568STaniya Das .halt_reg = 0x184d4, 1660*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1661*17269568STaniya Das .clkr = { 1662*17269568STaniya Das .enable_reg = 0x52008, 1663*17269568STaniya Das .enable_mask = BIT(26), 1664*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1665*17269568STaniya Das .name = "gcc_qupv3_wrap1_s4_clk", 1666*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1667*17269568STaniya Das .hw = &gcc_qupv3_wrap1_s4_clk_src.clkr.hw, 1668*17269568STaniya Das }, 1669*17269568STaniya Das .num_parents = 1, 1670*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1671*17269568STaniya Das .ops = &clk_branch2_ops, 1672*17269568STaniya Das }, 1673*17269568STaniya Das }, 1674*17269568STaniya Das }; 1675*17269568STaniya Das 1676*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap1_s5_clk = { 1677*17269568STaniya Das .halt_reg = 0x18604, 1678*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1679*17269568STaniya Das .clkr = { 1680*17269568STaniya Das .enable_reg = 0x52008, 1681*17269568STaniya Das .enable_mask = BIT(27), 1682*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1683*17269568STaniya Das .name = "gcc_qupv3_wrap1_s5_clk", 1684*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1685*17269568STaniya Das .hw = &gcc_qupv3_wrap1_s5_clk_src.clkr.hw, 1686*17269568STaniya Das }, 1687*17269568STaniya Das .num_parents = 1, 1688*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1689*17269568STaniya Das .ops = &clk_branch2_ops, 1690*17269568STaniya Das }, 1691*17269568STaniya Das }, 1692*17269568STaniya Das }; 1693*17269568STaniya Das 1694*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = { 1695*17269568STaniya Das .halt_reg = 0x17004, 1696*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1697*17269568STaniya Das .clkr = { 1698*17269568STaniya Das .enable_reg = 0x52008, 1699*17269568STaniya Das .enable_mask = BIT(6), 1700*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1701*17269568STaniya Das .name = "gcc_qupv3_wrap_0_m_ahb_clk", 1702*17269568STaniya Das .ops = &clk_branch2_ops, 1703*17269568STaniya Das }, 1704*17269568STaniya Das }, 1705*17269568STaniya Das }; 1706*17269568STaniya Das 1707*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = { 1708*17269568STaniya Das .halt_reg = 0x17008, 1709*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1710*17269568STaniya Das .hwcg_reg = 0x17008, 1711*17269568STaniya Das .hwcg_bit = 1, 1712*17269568STaniya Das .clkr = { 1713*17269568STaniya Das .enable_reg = 0x52008, 1714*17269568STaniya Das .enable_mask = BIT(7), 1715*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1716*17269568STaniya Das .name = "gcc_qupv3_wrap_0_s_ahb_clk", 1717*17269568STaniya Das .ops = &clk_branch2_ops, 1718*17269568STaniya Das }, 1719*17269568STaniya Das }, 1720*17269568STaniya Das }; 1721*17269568STaniya Das 1722*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = { 1723*17269568STaniya Das .halt_reg = 0x1800c, 1724*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1725*17269568STaniya Das .clkr = { 1726*17269568STaniya Das .enable_reg = 0x52008, 1727*17269568STaniya Das .enable_mask = BIT(20), 1728*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1729*17269568STaniya Das .name = "gcc_qupv3_wrap_1_m_ahb_clk", 1730*17269568STaniya Das .ops = &clk_branch2_ops, 1731*17269568STaniya Das }, 1732*17269568STaniya Das }, 1733*17269568STaniya Das }; 1734*17269568STaniya Das 1735*17269568STaniya Das static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = { 1736*17269568STaniya Das .halt_reg = 0x18010, 1737*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1738*17269568STaniya Das .hwcg_reg = 0x18010, 1739*17269568STaniya Das .hwcg_bit = 1, 1740*17269568STaniya Das .clkr = { 1741*17269568STaniya Das .enable_reg = 0x52008, 1742*17269568STaniya Das .enable_mask = BIT(21), 1743*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1744*17269568STaniya Das .name = "gcc_qupv3_wrap_1_s_ahb_clk", 1745*17269568STaniya Das .ops = &clk_branch2_ops, 1746*17269568STaniya Das }, 1747*17269568STaniya Das }, 1748*17269568STaniya Das }; 1749*17269568STaniya Das 1750*17269568STaniya Das static struct clk_branch gcc_sdcc1_ahb_clk = { 1751*17269568STaniya Das .halt_reg = 0x12008, 1752*17269568STaniya Das .halt_check = BRANCH_HALT, 1753*17269568STaniya Das .clkr = { 1754*17269568STaniya Das .enable_reg = 0x12008, 1755*17269568STaniya Das .enable_mask = BIT(0), 1756*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1757*17269568STaniya Das .name = "gcc_sdcc1_ahb_clk", 1758*17269568STaniya Das .ops = &clk_branch2_ops, 1759*17269568STaniya Das }, 1760*17269568STaniya Das }, 1761*17269568STaniya Das }; 1762*17269568STaniya Das 1763*17269568STaniya Das static struct clk_branch gcc_sdcc1_apps_clk = { 1764*17269568STaniya Das .halt_reg = 0x1200c, 1765*17269568STaniya Das .halt_check = BRANCH_HALT, 1766*17269568STaniya Das .clkr = { 1767*17269568STaniya Das .enable_reg = 0x1200c, 1768*17269568STaniya Das .enable_mask = BIT(0), 1769*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1770*17269568STaniya Das .name = "gcc_sdcc1_apps_clk", 1771*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1772*17269568STaniya Das .hw = &gcc_sdcc1_apps_clk_src.clkr.hw, 1773*17269568STaniya Das }, 1774*17269568STaniya Das .num_parents = 1, 1775*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1776*17269568STaniya Das .ops = &clk_branch2_ops, 1777*17269568STaniya Das }, 1778*17269568STaniya Das }, 1779*17269568STaniya Das }; 1780*17269568STaniya Das 1781*17269568STaniya Das static struct clk_branch gcc_sdcc1_ice_core_clk = { 1782*17269568STaniya Das .halt_reg = 0x12040, 1783*17269568STaniya Das .halt_check = BRANCH_HALT, 1784*17269568STaniya Das .clkr = { 1785*17269568STaniya Das .enable_reg = 0x12040, 1786*17269568STaniya Das .enable_mask = BIT(0), 1787*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1788*17269568STaniya Das .name = "gcc_sdcc1_ice_core_clk", 1789*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1790*17269568STaniya Das .hw = &gcc_sdcc1_ice_core_clk_src.clkr.hw, 1791*17269568STaniya Das }, 1792*17269568STaniya Das .num_parents = 1, 1793*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1794*17269568STaniya Das .ops = &clk_branch2_ops, 1795*17269568STaniya Das }, 1796*17269568STaniya Das }, 1797*17269568STaniya Das }; 1798*17269568STaniya Das 1799*17269568STaniya Das static struct clk_branch gcc_sdcc2_ahb_clk = { 1800*17269568STaniya Das .halt_reg = 0x14008, 1801*17269568STaniya Das .halt_check = BRANCH_HALT, 1802*17269568STaniya Das .clkr = { 1803*17269568STaniya Das .enable_reg = 0x14008, 1804*17269568STaniya Das .enable_mask = BIT(0), 1805*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1806*17269568STaniya Das .name = "gcc_sdcc2_ahb_clk", 1807*17269568STaniya Das .ops = &clk_branch2_ops, 1808*17269568STaniya Das }, 1809*17269568STaniya Das }, 1810*17269568STaniya Das }; 1811*17269568STaniya Das 1812*17269568STaniya Das static struct clk_branch gcc_sdcc2_apps_clk = { 1813*17269568STaniya Das .halt_reg = 0x14004, 1814*17269568STaniya Das .halt_check = BRANCH_HALT, 1815*17269568STaniya Das .clkr = { 1816*17269568STaniya Das .enable_reg = 0x14004, 1817*17269568STaniya Das .enable_mask = BIT(0), 1818*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1819*17269568STaniya Das .name = "gcc_sdcc2_apps_clk", 1820*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1821*17269568STaniya Das .hw = &gcc_sdcc2_apps_clk_src.clkr.hw, 1822*17269568STaniya Das }, 1823*17269568STaniya Das .num_parents = 1, 1824*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1825*17269568STaniya Das .ops = &clk_branch2_ops, 1826*17269568STaniya Das }, 1827*17269568STaniya Das }, 1828*17269568STaniya Das }; 1829*17269568STaniya Das 1830*17269568STaniya Das /* For CPUSS functionality the SYS NOC clock needs to be left enabled */ 1831*17269568STaniya Das static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = { 1832*17269568STaniya Das .halt_reg = 0x4144, 1833*17269568STaniya Das .halt_check = BRANCH_HALT_VOTED, 1834*17269568STaniya Das .clkr = { 1835*17269568STaniya Das .enable_reg = 0x52000, 1836*17269568STaniya Das .enable_mask = BIT(0), 1837*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1838*17269568STaniya Das .name = "gcc_sys_noc_cpuss_ahb_clk", 1839*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1840*17269568STaniya Das .hw = &gcc_cpuss_ahb_clk_src.clkr.hw, 1841*17269568STaniya Das }, 1842*17269568STaniya Das .num_parents = 1, 1843*17269568STaniya Das .flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 1844*17269568STaniya Das .ops = &clk_branch2_ops, 1845*17269568STaniya Das }, 1846*17269568STaniya Das }, 1847*17269568STaniya Das }; 1848*17269568STaniya Das 1849*17269568STaniya Das static struct clk_branch gcc_ufs_mem_clkref_clk = { 1850*17269568STaniya Das .halt_reg = 0x8c000, 1851*17269568STaniya Das .halt_check = BRANCH_HALT, 1852*17269568STaniya Das .clkr = { 1853*17269568STaniya Das .enable_reg = 0x8c000, 1854*17269568STaniya Das .enable_mask = BIT(0), 1855*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1856*17269568STaniya Das .name = "gcc_ufs_mem_clkref_clk", 1857*17269568STaniya Das .ops = &clk_branch2_ops, 1858*17269568STaniya Das }, 1859*17269568STaniya Das }, 1860*17269568STaniya Das }; 1861*17269568STaniya Das 1862*17269568STaniya Das static struct clk_branch gcc_ufs_phy_ahb_clk = { 1863*17269568STaniya Das .halt_reg = 0x77014, 1864*17269568STaniya Das .halt_check = BRANCH_HALT, 1865*17269568STaniya Das .hwcg_reg = 0x77014, 1866*17269568STaniya Das .hwcg_bit = 1, 1867*17269568STaniya Das .clkr = { 1868*17269568STaniya Das .enable_reg = 0x77014, 1869*17269568STaniya Das .enable_mask = BIT(0), 1870*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1871*17269568STaniya Das .name = "gcc_ufs_phy_ahb_clk", 1872*17269568STaniya Das .ops = &clk_branch2_ops, 1873*17269568STaniya Das }, 1874*17269568STaniya Das }, 1875*17269568STaniya Das }; 1876*17269568STaniya Das 1877*17269568STaniya Das static struct clk_branch gcc_ufs_phy_axi_clk = { 1878*17269568STaniya Das .halt_reg = 0x77038, 1879*17269568STaniya Das .halt_check = BRANCH_HALT, 1880*17269568STaniya Das .hwcg_reg = 0x77038, 1881*17269568STaniya Das .hwcg_bit = 1, 1882*17269568STaniya Das .clkr = { 1883*17269568STaniya Das .enable_reg = 0x77038, 1884*17269568STaniya Das .enable_mask = BIT(0), 1885*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1886*17269568STaniya Das .name = "gcc_ufs_phy_axi_clk", 1887*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1888*17269568STaniya Das .hw = &gcc_ufs_phy_axi_clk_src.clkr.hw, 1889*17269568STaniya Das }, 1890*17269568STaniya Das .num_parents = 1, 1891*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1892*17269568STaniya Das .ops = &clk_branch2_ops, 1893*17269568STaniya Das }, 1894*17269568STaniya Das }, 1895*17269568STaniya Das }; 1896*17269568STaniya Das 1897*17269568STaniya Das static struct clk_branch gcc_ufs_phy_ice_core_clk = { 1898*17269568STaniya Das .halt_reg = 0x77090, 1899*17269568STaniya Das .halt_check = BRANCH_HALT, 1900*17269568STaniya Das .hwcg_reg = 0x77090, 1901*17269568STaniya Das .hwcg_bit = 1, 1902*17269568STaniya Das .clkr = { 1903*17269568STaniya Das .enable_reg = 0x77090, 1904*17269568STaniya Das .enable_mask = BIT(0), 1905*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1906*17269568STaniya Das .name = "gcc_ufs_phy_ice_core_clk", 1907*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1908*17269568STaniya Das .hw = &gcc_ufs_phy_ice_core_clk_src.clkr.hw, 1909*17269568STaniya Das }, 1910*17269568STaniya Das .num_parents = 1, 1911*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1912*17269568STaniya Das .ops = &clk_branch2_ops, 1913*17269568STaniya Das }, 1914*17269568STaniya Das }, 1915*17269568STaniya Das }; 1916*17269568STaniya Das 1917*17269568STaniya Das static struct clk_branch gcc_ufs_phy_phy_aux_clk = { 1918*17269568STaniya Das .halt_reg = 0x77094, 1919*17269568STaniya Das .halt_check = BRANCH_HALT, 1920*17269568STaniya Das .hwcg_reg = 0x77094, 1921*17269568STaniya Das .hwcg_bit = 1, 1922*17269568STaniya Das .clkr = { 1923*17269568STaniya Das .enable_reg = 0x77094, 1924*17269568STaniya Das .enable_mask = BIT(0), 1925*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1926*17269568STaniya Das .name = "gcc_ufs_phy_phy_aux_clk", 1927*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1928*17269568STaniya Das .hw = &gcc_ufs_phy_phy_aux_clk_src.clkr.hw, 1929*17269568STaniya Das }, 1930*17269568STaniya Das .num_parents = 1, 1931*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1932*17269568STaniya Das .ops = &clk_branch2_ops, 1933*17269568STaniya Das }, 1934*17269568STaniya Das }, 1935*17269568STaniya Das }; 1936*17269568STaniya Das 1937*17269568STaniya Das static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = { 1938*17269568STaniya Das .halt_reg = 0x7701c, 1939*17269568STaniya Das .halt_check = BRANCH_HALT_SKIP, 1940*17269568STaniya Das .clkr = { 1941*17269568STaniya Das .enable_reg = 0x7701c, 1942*17269568STaniya Das .enable_mask = BIT(0), 1943*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1944*17269568STaniya Das .name = "gcc_ufs_phy_rx_symbol_0_clk", 1945*17269568STaniya Das .ops = &clk_branch2_ops, 1946*17269568STaniya Das }, 1947*17269568STaniya Das }, 1948*17269568STaniya Das }; 1949*17269568STaniya Das 1950*17269568STaniya Das static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = { 1951*17269568STaniya Das .halt_reg = 0x77018, 1952*17269568STaniya Das .halt_check = BRANCH_HALT_SKIP, 1953*17269568STaniya Das .clkr = { 1954*17269568STaniya Das .enable_reg = 0x77018, 1955*17269568STaniya Das .enable_mask = BIT(0), 1956*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1957*17269568STaniya Das .name = "gcc_ufs_phy_tx_symbol_0_clk", 1958*17269568STaniya Das .ops = &clk_branch2_ops, 1959*17269568STaniya Das }, 1960*17269568STaniya Das }, 1961*17269568STaniya Das }; 1962*17269568STaniya Das 1963*17269568STaniya Das static struct clk_branch gcc_ufs_phy_unipro_core_clk = { 1964*17269568STaniya Das .halt_reg = 0x7708c, 1965*17269568STaniya Das .halt_check = BRANCH_HALT, 1966*17269568STaniya Das .hwcg_reg = 0x7708c, 1967*17269568STaniya Das .hwcg_bit = 1, 1968*17269568STaniya Das .clkr = { 1969*17269568STaniya Das .enable_reg = 0x7708c, 1970*17269568STaniya Das .enable_mask = BIT(0), 1971*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1972*17269568STaniya Das .name = "gcc_ufs_phy_unipro_core_clk", 1973*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1974*17269568STaniya Das .hw = &gcc_ufs_phy_unipro_core_clk_src.clkr.hw, 1975*17269568STaniya Das }, 1976*17269568STaniya Das .num_parents = 1, 1977*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1978*17269568STaniya Das .ops = &clk_branch2_ops, 1979*17269568STaniya Das }, 1980*17269568STaniya Das }, 1981*17269568STaniya Das }; 1982*17269568STaniya Das 1983*17269568STaniya Das static struct clk_branch gcc_usb30_prim_master_clk = { 1984*17269568STaniya Das .halt_reg = 0xf010, 1985*17269568STaniya Das .halt_check = BRANCH_HALT, 1986*17269568STaniya Das .clkr = { 1987*17269568STaniya Das .enable_reg = 0xf010, 1988*17269568STaniya Das .enable_mask = BIT(0), 1989*17269568STaniya Das .hw.init = &(struct clk_init_data){ 1990*17269568STaniya Das .name = "gcc_usb30_prim_master_clk", 1991*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 1992*17269568STaniya Das .hw = &gcc_usb30_prim_master_clk_src.clkr.hw, 1993*17269568STaniya Das }, 1994*17269568STaniya Das .num_parents = 1, 1995*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 1996*17269568STaniya Das .ops = &clk_branch2_ops, 1997*17269568STaniya Das }, 1998*17269568STaniya Das }, 1999*17269568STaniya Das }; 2000*17269568STaniya Das 2001*17269568STaniya Das static struct clk_branch gcc_usb30_prim_mock_utmi_clk = { 2002*17269568STaniya Das .halt_reg = 0xf018, 2003*17269568STaniya Das .halt_check = BRANCH_HALT, 2004*17269568STaniya Das .clkr = { 2005*17269568STaniya Das .enable_reg = 0xf018, 2006*17269568STaniya Das .enable_mask = BIT(0), 2007*17269568STaniya Das .hw.init = &(struct clk_init_data){ 2008*17269568STaniya Das .name = "gcc_usb30_prim_mock_utmi_clk", 2009*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 2010*17269568STaniya Das .hw = 2011*17269568STaniya Das &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw, 2012*17269568STaniya Das }, 2013*17269568STaniya Das .num_parents = 1, 2014*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 2015*17269568STaniya Das .ops = &clk_branch2_ops, 2016*17269568STaniya Das }, 2017*17269568STaniya Das }, 2018*17269568STaniya Das }; 2019*17269568STaniya Das 2020*17269568STaniya Das static struct clk_branch gcc_usb30_prim_sleep_clk = { 2021*17269568STaniya Das .halt_reg = 0xf014, 2022*17269568STaniya Das .halt_check = BRANCH_HALT, 2023*17269568STaniya Das .clkr = { 2024*17269568STaniya Das .enable_reg = 0xf014, 2025*17269568STaniya Das .enable_mask = BIT(0), 2026*17269568STaniya Das .hw.init = &(struct clk_init_data){ 2027*17269568STaniya Das .name = "gcc_usb30_prim_sleep_clk", 2028*17269568STaniya Das .ops = &clk_branch2_ops, 2029*17269568STaniya Das }, 2030*17269568STaniya Das }, 2031*17269568STaniya Das }; 2032*17269568STaniya Das 2033*17269568STaniya Das static struct clk_branch gcc_usb3_prim_clkref_clk = { 2034*17269568STaniya Das .halt_reg = 0x8c010, 2035*17269568STaniya Das .halt_check = BRANCH_HALT, 2036*17269568STaniya Das .clkr = { 2037*17269568STaniya Das .enable_reg = 0x8c010, 2038*17269568STaniya Das .enable_mask = BIT(0), 2039*17269568STaniya Das .hw.init = &(struct clk_init_data){ 2040*17269568STaniya Das .name = "gcc_usb3_prim_clkref_clk", 2041*17269568STaniya Das .ops = &clk_branch2_ops, 2042*17269568STaniya Das }, 2043*17269568STaniya Das }, 2044*17269568STaniya Das }; 2045*17269568STaniya Das 2046*17269568STaniya Das static struct clk_branch gcc_usb3_prim_phy_aux_clk = { 2047*17269568STaniya Das .halt_reg = 0xf050, 2048*17269568STaniya Das .halt_check = BRANCH_HALT, 2049*17269568STaniya Das .clkr = { 2050*17269568STaniya Das .enable_reg = 0xf050, 2051*17269568STaniya Das .enable_mask = BIT(0), 2052*17269568STaniya Das .hw.init = &(struct clk_init_data){ 2053*17269568STaniya Das .name = "gcc_usb3_prim_phy_aux_clk", 2054*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 2055*17269568STaniya Das .hw = &gcc_usb3_prim_phy_aux_clk_src.clkr.hw, 2056*17269568STaniya Das }, 2057*17269568STaniya Das .num_parents = 1, 2058*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 2059*17269568STaniya Das .ops = &clk_branch2_ops, 2060*17269568STaniya Das }, 2061*17269568STaniya Das }, 2062*17269568STaniya Das }; 2063*17269568STaniya Das 2064*17269568STaniya Das static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = { 2065*17269568STaniya Das .halt_reg = 0xf054, 2066*17269568STaniya Das .halt_check = BRANCH_HALT, 2067*17269568STaniya Das .clkr = { 2068*17269568STaniya Das .enable_reg = 0xf054, 2069*17269568STaniya Das .enable_mask = BIT(0), 2070*17269568STaniya Das .hw.init = &(struct clk_init_data){ 2071*17269568STaniya Das .name = "gcc_usb3_prim_phy_com_aux_clk", 2072*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 2073*17269568STaniya Das .hw = &gcc_usb3_prim_phy_aux_clk_src.clkr.hw, 2074*17269568STaniya Das }, 2075*17269568STaniya Das .num_parents = 1, 2076*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 2077*17269568STaniya Das .ops = &clk_branch2_ops, 2078*17269568STaniya Das }, 2079*17269568STaniya Das }, 2080*17269568STaniya Das }; 2081*17269568STaniya Das 2082*17269568STaniya Das static struct clk_branch gcc_usb3_prim_phy_pipe_clk = { 2083*17269568STaniya Das .halt_reg = 0xf058, 2084*17269568STaniya Das .halt_check = BRANCH_HALT_SKIP, 2085*17269568STaniya Das .clkr = { 2086*17269568STaniya Das .enable_reg = 0xf058, 2087*17269568STaniya Das .enable_mask = BIT(0), 2088*17269568STaniya Das .hw.init = &(struct clk_init_data){ 2089*17269568STaniya Das .name = "gcc_usb3_prim_phy_pipe_clk", 2090*17269568STaniya Das .ops = &clk_branch2_ops, 2091*17269568STaniya Das }, 2092*17269568STaniya Das }, 2093*17269568STaniya Das }; 2094*17269568STaniya Das 2095*17269568STaniya Das static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = { 2096*17269568STaniya Das .halt_reg = 0x6a004, 2097*17269568STaniya Das .halt_check = BRANCH_HALT, 2098*17269568STaniya Das .hwcg_reg = 0x6a004, 2099*17269568STaniya Das .hwcg_bit = 1, 2100*17269568STaniya Das .clkr = { 2101*17269568STaniya Das .enable_reg = 0x6a004, 2102*17269568STaniya Das .enable_mask = BIT(0), 2103*17269568STaniya Das .hw.init = &(struct clk_init_data){ 2104*17269568STaniya Das .name = "gcc_usb_phy_cfg_ahb2phy_clk", 2105*17269568STaniya Das .ops = &clk_branch2_ops, 2106*17269568STaniya Das }, 2107*17269568STaniya Das }, 2108*17269568STaniya Das }; 2109*17269568STaniya Das 2110*17269568STaniya Das static struct clk_branch gcc_video_axi_clk = { 2111*17269568STaniya Das .halt_reg = 0xb01c, 2112*17269568STaniya Das .halt_check = BRANCH_HALT, 2113*17269568STaniya Das .clkr = { 2114*17269568STaniya Das .enable_reg = 0xb01c, 2115*17269568STaniya Das .enable_mask = BIT(0), 2116*17269568STaniya Das .hw.init = &(struct clk_init_data){ 2117*17269568STaniya Das .name = "gcc_video_axi_clk", 2118*17269568STaniya Das .ops = &clk_branch2_ops, 2119*17269568STaniya Das }, 2120*17269568STaniya Das }, 2121*17269568STaniya Das }; 2122*17269568STaniya Das 2123*17269568STaniya Das static struct clk_branch gcc_video_gpll0_div_clk_src = { 2124*17269568STaniya Das .halt_check = BRANCH_HALT_DELAY, 2125*17269568STaniya Das .clkr = { 2126*17269568STaniya Das .enable_reg = 0x52000, 2127*17269568STaniya Das .enable_mask = BIT(20), 2128*17269568STaniya Das .hw.init = &(struct clk_init_data){ 2129*17269568STaniya Das .name = "gcc_video_gpll0_div_clk_src", 2130*17269568STaniya Das .parent_data = &(const struct clk_parent_data){ 2131*17269568STaniya Das .hw = &gcc_pll0_main_div_cdiv.hw, 2132*17269568STaniya Das }, 2133*17269568STaniya Das .num_parents = 1, 2134*17269568STaniya Das .flags = CLK_SET_RATE_PARENT, 2135*17269568STaniya Das .ops = &clk_branch2_ops, 2136*17269568STaniya Das }, 2137*17269568STaniya Das }, 2138*17269568STaniya Das }; 2139*17269568STaniya Das 2140*17269568STaniya Das static struct clk_branch gcc_video_throttle_axi_clk = { 2141*17269568STaniya Das .halt_reg = 0xb07c, 2142*17269568STaniya Das .halt_check = BRANCH_HALT, 2143*17269568STaniya Das .hwcg_reg = 0xb07c, 2144*17269568STaniya Das .hwcg_bit = 1, 2145*17269568STaniya Das .clkr = { 2146*17269568STaniya Das .enable_reg = 0xb07c, 2147*17269568STaniya Das .enable_mask = BIT(0), 2148*17269568STaniya Das .hw.init = &(struct clk_init_data){ 2149*17269568STaniya Das .name = "gcc_video_throttle_axi_clk", 2150*17269568STaniya Das .ops = &clk_branch2_ops, 2151*17269568STaniya Das }, 2152*17269568STaniya Das }, 2153*17269568STaniya Das }; 2154*17269568STaniya Das 2155*17269568STaniya Das static struct clk_branch gcc_video_xo_clk = { 2156*17269568STaniya Das .halt_reg = 0xb028, 2157*17269568STaniya Das .halt_check = BRANCH_HALT, 2158*17269568STaniya Das .clkr = { 2159*17269568STaniya Das .enable_reg = 0xb028, 2160*17269568STaniya Das .enable_mask = BIT(0), 2161*17269568STaniya Das .hw.init = &(struct clk_init_data){ 2162*17269568STaniya Das .name = "gcc_video_xo_clk", 2163*17269568STaniya Das .ops = &clk_branch2_ops, 2164*17269568STaniya Das }, 2165*17269568STaniya Das }, 2166*17269568STaniya Das }; 2167*17269568STaniya Das 2168*17269568STaniya Das static struct gdsc ufs_phy_gdsc = { 2169*17269568STaniya Das .gdscr = 0x77004, 2170*17269568STaniya Das .pd = { 2171*17269568STaniya Das .name = "ufs_phy_gdsc", 2172*17269568STaniya Das }, 2173*17269568STaniya Das .pwrsts = PWRSTS_OFF_ON, 2174*17269568STaniya Das }; 2175*17269568STaniya Das 2176*17269568STaniya Das static struct gdsc usb30_prim_gdsc = { 2177*17269568STaniya Das .gdscr = 0x0f004, 2178*17269568STaniya Das .pd = { 2179*17269568STaniya Das .name = "usb30_prim_gdsc", 2180*17269568STaniya Das }, 2181*17269568STaniya Das .pwrsts = PWRSTS_OFF_ON, 2182*17269568STaniya Das }; 2183*17269568STaniya Das 2184*17269568STaniya Das static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = { 2185*17269568STaniya Das .gdscr = 0x7d040, 2186*17269568STaniya Das .pd = { 2187*17269568STaniya Das .name = "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc", 2188*17269568STaniya Das }, 2189*17269568STaniya Das .pwrsts = PWRSTS_OFF_ON | VOTABLE, 2190*17269568STaniya Das }; 2191*17269568STaniya Das 2192*17269568STaniya Das static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf_gdsc = { 2193*17269568STaniya Das .gdscr = 0x7d044, 2194*17269568STaniya Das .pd = { 2195*17269568STaniya Das .name = "hlos1_vote_mmnoc_mmu_tbu_sf_gdsc", 2196*17269568STaniya Das }, 2197*17269568STaniya Das .pwrsts = PWRSTS_OFF_ON | VOTABLE, 2198*17269568STaniya Das }; 2199*17269568STaniya Das 2200*17269568STaniya Das static struct gdsc *gcc_sc7180_gdscs[] = { 2201*17269568STaniya Das [UFS_PHY_GDSC] = &ufs_phy_gdsc, 2202*17269568STaniya Das [USB30_PRIM_GDSC] = &usb30_prim_gdsc, 2203*17269568STaniya Das [HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC] = 2204*17269568STaniya Das &hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc, 2205*17269568STaniya Das [HLOS1_VOTE_MMNOC_MMU_TBU_SF_GDSC] = 2206*17269568STaniya Das &hlos1_vote_mmnoc_mmu_tbu_sf_gdsc, 2207*17269568STaniya Das }; 2208*17269568STaniya Das 2209*17269568STaniya Das 2210*17269568STaniya Das static struct clk_hw *gcc_sc7180_hws[] = { 2211*17269568STaniya Das [GCC_GPLL0_MAIN_DIV_CDIV] = &gcc_pll0_main_div_cdiv.hw, 2212*17269568STaniya Das }; 2213*17269568STaniya Das 2214*17269568STaniya Das static struct clk_regmap *gcc_sc7180_clocks[] = { 2215*17269568STaniya Das [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr, 2216*17269568STaniya Das [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr, 2217*17269568STaniya Das [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 2218*17269568STaniya Das [GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr, 2219*17269568STaniya Das [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr, 2220*17269568STaniya Das [GCC_CAMERA_THROTTLE_HF_AXI_CLK] = &gcc_camera_throttle_hf_axi_clk.clkr, 2221*17269568STaniya Das [GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr, 2222*17269568STaniya Das [GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr, 2223*17269568STaniya Das [GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr, 2224*17269568STaniya Das [GCC_CE1_CLK] = &gcc_ce1_clk.clkr, 2225*17269568STaniya Das [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr, 2226*17269568STaniya Das [GCC_CPUSS_AHB_CLK] = &gcc_cpuss_ahb_clk.clkr, 2227*17269568STaniya Das [GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr, 2228*17269568STaniya Das [GCC_CPUSS_RBCPR_CLK] = &gcc_cpuss_rbcpr_clk.clkr, 2229*17269568STaniya Das [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr, 2230*17269568STaniya Das [GCC_DISP_GPLL0_CLK_SRC] = &gcc_disp_gpll0_clk_src.clkr, 2231*17269568STaniya Das [GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr, 2232*17269568STaniya Das [GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr, 2233*17269568STaniya Das [GCC_DISP_THROTTLE_HF_AXI_CLK] = &gcc_disp_throttle_hf_axi_clk.clkr, 2234*17269568STaniya Das [GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr, 2235*17269568STaniya Das [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 2236*17269568STaniya Das [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr, 2237*17269568STaniya Das [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 2238*17269568STaniya Das [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr, 2239*17269568STaniya Das [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 2240*17269568STaniya Das [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr, 2241*17269568STaniya Das [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr, 2242*17269568STaniya Das [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr, 2243*17269568STaniya Das [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr, 2244*17269568STaniya Das [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr, 2245*17269568STaniya Das [GCC_NPU_AXI_CLK] = &gcc_npu_axi_clk.clkr, 2246*17269568STaniya Das [GCC_NPU_BWMON_AXI_CLK] = &gcc_npu_bwmon_axi_clk.clkr, 2247*17269568STaniya Das [GCC_NPU_BWMON_DMA_CFG_AHB_CLK] = &gcc_npu_bwmon_dma_cfg_ahb_clk.clkr, 2248*17269568STaniya Das [GCC_NPU_BWMON_DSP_CFG_AHB_CLK] = &gcc_npu_bwmon_dsp_cfg_ahb_clk.clkr, 2249*17269568STaniya Das [GCC_NPU_CFG_AHB_CLK] = &gcc_npu_cfg_ahb_clk.clkr, 2250*17269568STaniya Das [GCC_NPU_DMA_CLK] = &gcc_npu_dma_clk.clkr, 2251*17269568STaniya Das [GCC_NPU_GPLL0_CLK_SRC] = &gcc_npu_gpll0_clk_src.clkr, 2252*17269568STaniya Das [GCC_NPU_GPLL0_DIV_CLK_SRC] = &gcc_npu_gpll0_div_clk_src.clkr, 2253*17269568STaniya Das [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 2254*17269568STaniya Das [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr, 2255*17269568STaniya Das [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 2256*17269568STaniya Das [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr, 2257*17269568STaniya Das [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr, 2258*17269568STaniya Das [GCC_QSPI_CNOC_PERIPH_AHB_CLK] = &gcc_qspi_cnoc_periph_ahb_clk.clkr, 2259*17269568STaniya Das [GCC_QSPI_CORE_CLK] = &gcc_qspi_core_clk.clkr, 2260*17269568STaniya Das [GCC_QSPI_CORE_CLK_SRC] = &gcc_qspi_core_clk_src.clkr, 2261*17269568STaniya Das [GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr, 2262*17269568STaniya Das [GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr, 2263*17269568STaniya Das [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr, 2264*17269568STaniya Das [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr, 2265*17269568STaniya Das [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr, 2266*17269568STaniya Das [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr, 2267*17269568STaniya Das [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr, 2268*17269568STaniya Das [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr, 2269*17269568STaniya Das [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr, 2270*17269568STaniya Das [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr, 2271*17269568STaniya Das [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr, 2272*17269568STaniya Das [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr, 2273*17269568STaniya Das [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr, 2274*17269568STaniya Das [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr, 2275*17269568STaniya Das [GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr, 2276*17269568STaniya Das [GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr, 2277*17269568STaniya Das [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr, 2278*17269568STaniya Das [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr, 2279*17269568STaniya Das [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr, 2280*17269568STaniya Das [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr, 2281*17269568STaniya Das [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr, 2282*17269568STaniya Das [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr, 2283*17269568STaniya Das [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr, 2284*17269568STaniya Das [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr, 2285*17269568STaniya Das [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr, 2286*17269568STaniya Das [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr, 2287*17269568STaniya Das [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr, 2288*17269568STaniya Das [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr, 2289*17269568STaniya Das [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr, 2290*17269568STaniya Das [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr, 2291*17269568STaniya Das [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr, 2292*17269568STaniya Das [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr, 2293*17269568STaniya Das [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 2294*17269568STaniya Das [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 2295*17269568STaniya Das [GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr, 2296*17269568STaniya Das [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr, 2297*17269568STaniya Das [GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr, 2298*17269568STaniya Das [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 2299*17269568STaniya Das [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 2300*17269568STaniya Das [GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr, 2301*17269568STaniya Das [GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr, 2302*17269568STaniya Das [GCC_UFS_MEM_CLKREF_CLK] = &gcc_ufs_mem_clkref_clk.clkr, 2303*17269568STaniya Das [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr, 2304*17269568STaniya Das [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr, 2305*17269568STaniya Das [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr, 2306*17269568STaniya Das [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr, 2307*17269568STaniya Das [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr, 2308*17269568STaniya Das [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr, 2309*17269568STaniya Das [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr, 2310*17269568STaniya Das [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr, 2311*17269568STaniya Das [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr, 2312*17269568STaniya Das [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr, 2313*17269568STaniya Das [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = 2314*17269568STaniya Das &gcc_ufs_phy_unipro_core_clk_src.clkr, 2315*17269568STaniya Das [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr, 2316*17269568STaniya Das [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr, 2317*17269568STaniya Das [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr, 2318*17269568STaniya Das [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = 2319*17269568STaniya Das &gcc_usb30_prim_mock_utmi_clk_src.clkr, 2320*17269568STaniya Das [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr, 2321*17269568STaniya Das [GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr, 2322*17269568STaniya Das [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr, 2323*17269568STaniya Das [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr, 2324*17269568STaniya Das [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr, 2325*17269568STaniya Das [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr, 2326*17269568STaniya Das [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr, 2327*17269568STaniya Das [GCC_VIDEO_AXI_CLK] = &gcc_video_axi_clk.clkr, 2328*17269568STaniya Das [GCC_VIDEO_GPLL0_DIV_CLK_SRC] = &gcc_video_gpll0_div_clk_src.clkr, 2329*17269568STaniya Das [GCC_VIDEO_THROTTLE_AXI_CLK] = &gcc_video_throttle_axi_clk.clkr, 2330*17269568STaniya Das [GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr, 2331*17269568STaniya Das [GPLL0] = &gpll0.clkr, 2332*17269568STaniya Das [GPLL0_OUT_EVEN] = &gpll0_out_even.clkr, 2333*17269568STaniya Das [GPLL6] = &gpll6.clkr, 2334*17269568STaniya Das [GPLL7] = &gpll7.clkr, 2335*17269568STaniya Das [GPLL4] = &gpll4.clkr, 2336*17269568STaniya Das [GPLL1] = &gpll1.clkr, 2337*17269568STaniya Das }; 2338*17269568STaniya Das 2339*17269568STaniya Das static const struct qcom_reset_map gcc_sc7180_resets[] = { 2340*17269568STaniya Das [GCC_QUSB2PHY_PRIM_BCR] = { 0x26000 }, 2341*17269568STaniya Das [GCC_QUSB2PHY_SEC_BCR] = { 0x26004 }, 2342*17269568STaniya Das [GCC_UFS_PHY_BCR] = { 0x77000 }, 2343*17269568STaniya Das [GCC_USB30_PRIM_BCR] = { 0xf000 }, 2344*17269568STaniya Das [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 }, 2345*17269568STaniya Das [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 }, 2346*17269568STaniya Das [GCC_USB3_PHY_SEC_BCR] = { 0x5000c }, 2347*17269568STaniya Das [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 }, 2348*17269568STaniya Das [GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 }, 2349*17269568STaniya Das [GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 }, 2350*17269568STaniya Das [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 }, 2351*17269568STaniya Das }; 2352*17269568STaniya Das 2353*17269568STaniya Das static struct clk_rcg_dfs_data gcc_dfs_clocks[] = { 2354*17269568STaniya Das DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src), 2355*17269568STaniya Das DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src), 2356*17269568STaniya Das DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src), 2357*17269568STaniya Das DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src), 2358*17269568STaniya Das DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src), 2359*17269568STaniya Das DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src), 2360*17269568STaniya Das DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src), 2361*17269568STaniya Das DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src), 2362*17269568STaniya Das DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src), 2363*17269568STaniya Das DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src), 2364*17269568STaniya Das DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src), 2365*17269568STaniya Das DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src), 2366*17269568STaniya Das }; 2367*17269568STaniya Das 2368*17269568STaniya Das static const struct regmap_config gcc_sc7180_regmap_config = { 2369*17269568STaniya Das .reg_bits = 32, 2370*17269568STaniya Das .reg_stride = 4, 2371*17269568STaniya Das .val_bits = 32, 2372*17269568STaniya Das .max_register = 0x18208c, 2373*17269568STaniya Das .fast_io = true, 2374*17269568STaniya Das }; 2375*17269568STaniya Das 2376*17269568STaniya Das static const struct qcom_cc_desc gcc_sc7180_desc = { 2377*17269568STaniya Das .config = &gcc_sc7180_regmap_config, 2378*17269568STaniya Das .clk_hws = gcc_sc7180_hws, 2379*17269568STaniya Das .num_clk_hws = ARRAY_SIZE(gcc_sc7180_hws), 2380*17269568STaniya Das .clks = gcc_sc7180_clocks, 2381*17269568STaniya Das .num_clks = ARRAY_SIZE(gcc_sc7180_clocks), 2382*17269568STaniya Das .resets = gcc_sc7180_resets, 2383*17269568STaniya Das .num_resets = ARRAY_SIZE(gcc_sc7180_resets), 2384*17269568STaniya Das .gdscs = gcc_sc7180_gdscs, 2385*17269568STaniya Das .num_gdscs = ARRAY_SIZE(gcc_sc7180_gdscs), 2386*17269568STaniya Das }; 2387*17269568STaniya Das 2388*17269568STaniya Das static const struct of_device_id gcc_sc7180_match_table[] = { 2389*17269568STaniya Das { .compatible = "qcom,gcc-sc7180" }, 2390*17269568STaniya Das { } 2391*17269568STaniya Das }; 2392*17269568STaniya Das MODULE_DEVICE_TABLE(of, gcc_sc7180_match_table); 2393*17269568STaniya Das 2394*17269568STaniya Das static int gcc_sc7180_probe(struct platform_device *pdev) 2395*17269568STaniya Das { 2396*17269568STaniya Das struct regmap *regmap; 2397*17269568STaniya Das int ret; 2398*17269568STaniya Das 2399*17269568STaniya Das regmap = qcom_cc_map(pdev, &gcc_sc7180_desc); 2400*17269568STaniya Das if (IS_ERR(regmap)) 2401*17269568STaniya Das return PTR_ERR(regmap); 2402*17269568STaniya Das 2403*17269568STaniya Das /* 2404*17269568STaniya Das * Disable the GPLL0 active input to MM blocks, NPU 2405*17269568STaniya Das * and GPU via MISC registers. 2406*17269568STaniya Das */ 2407*17269568STaniya Das regmap_update_bits(regmap, 0x09ffc, 0x3, 0x3); 2408*17269568STaniya Das regmap_update_bits(regmap, 0x4d110, 0x3, 0x3); 2409*17269568STaniya Das regmap_update_bits(regmap, 0x71028, 0x3, 0x3); 2410*17269568STaniya Das 2411*17269568STaniya Das /* 2412*17269568STaniya Das * Keep the clocks always-ON 2413*17269568STaniya Das * GCC_CPUSS_GNOC_CLK, GCC_VIDEO_AHB_CLK, GCC_DISP_AHB_CLK 2414*17269568STaniya Das * GCC_GPU_CFG_AHB_CLK 2415*17269568STaniya Das */ 2416*17269568STaniya Das regmap_update_bits(regmap, 0x48004, BIT(0), BIT(0)); 2417*17269568STaniya Das regmap_update_bits(regmap, 0x0b004, BIT(0), BIT(0)); 2418*17269568STaniya Das regmap_update_bits(regmap, 0x0b00c, BIT(0), BIT(0)); 2419*17269568STaniya Das regmap_update_bits(regmap, 0x71004, BIT(0), BIT(0)); 2420*17269568STaniya Das 2421*17269568STaniya Das ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks, 2422*17269568STaniya Das ARRAY_SIZE(gcc_dfs_clocks)); 2423*17269568STaniya Das if (ret) 2424*17269568STaniya Das return ret; 2425*17269568STaniya Das 2426*17269568STaniya Das return qcom_cc_really_probe(pdev, &gcc_sc7180_desc, regmap); 2427*17269568STaniya Das } 2428*17269568STaniya Das 2429*17269568STaniya Das static struct platform_driver gcc_sc7180_driver = { 2430*17269568STaniya Das .probe = gcc_sc7180_probe, 2431*17269568STaniya Das .driver = { 2432*17269568STaniya Das .name = "gcc-sc7180", 2433*17269568STaniya Das .of_match_table = gcc_sc7180_match_table, 2434*17269568STaniya Das }, 2435*17269568STaniya Das }; 2436*17269568STaniya Das 2437*17269568STaniya Das static int __init gcc_sc7180_init(void) 2438*17269568STaniya Das { 2439*17269568STaniya Das return platform_driver_register(&gcc_sc7180_driver); 2440*17269568STaniya Das } 2441*17269568STaniya Das core_initcall(gcc_sc7180_init); 2442*17269568STaniya Das 2443*17269568STaniya Das static void __exit gcc_sc7180_exit(void) 2444*17269568STaniya Das { 2445*17269568STaniya Das platform_driver_unregister(&gcc_sc7180_driver); 2446*17269568STaniya Das } 2447*17269568STaniya Das module_exit(gcc_sc7180_exit); 2448*17269568STaniya Das 2449*17269568STaniya Das MODULE_DESCRIPTION("QTI GCC SC7180 Driver"); 2450*17269568STaniya Das MODULE_LICENSE("GPL v2"); 2451