1*d9db07f0SSricharan R // SPDX-License-Identifier: GPL-2.0 2*d9db07f0SSricharan R /* 3*d9db07f0SSricharan R * Copyright (c) 2018, The Linux Foundation. All rights reserved. 4*d9db07f0SSricharan R */ 5*d9db07f0SSricharan R 6*d9db07f0SSricharan R #include <linux/kernel.h> 7*d9db07f0SSricharan R #include <linux/err.h> 8*d9db07f0SSricharan R #include <linux/platform_device.h> 9*d9db07f0SSricharan R #include <linux/module.h> 10*d9db07f0SSricharan R #include <linux/of.h> 11*d9db07f0SSricharan R #include <linux/of_device.h> 12*d9db07f0SSricharan R #include <linux/clk-provider.h> 13*d9db07f0SSricharan R #include <linux/regmap.h> 14*d9db07f0SSricharan R 15*d9db07f0SSricharan R #include <linux/reset-controller.h> 16*d9db07f0SSricharan R #include <dt-bindings/clock/qcom,gcc-ipq6018.h> 17*d9db07f0SSricharan R #include <dt-bindings/reset/qcom,gcc-ipq6018.h> 18*d9db07f0SSricharan R 19*d9db07f0SSricharan R #include "common.h" 20*d9db07f0SSricharan R #include "clk-regmap.h" 21*d9db07f0SSricharan R #include "clk-pll.h" 22*d9db07f0SSricharan R #include "clk-rcg.h" 23*d9db07f0SSricharan R #include "clk-branch.h" 24*d9db07f0SSricharan R #include "clk-alpha-pll.h" 25*d9db07f0SSricharan R #include "clk-regmap-divider.h" 26*d9db07f0SSricharan R #include "clk-regmap-mux.h" 27*d9db07f0SSricharan R #include "reset.h" 28*d9db07f0SSricharan R 29*d9db07f0SSricharan R #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) } 30*d9db07f0SSricharan R 31*d9db07f0SSricharan R enum { 32*d9db07f0SSricharan R P_XO, 33*d9db07f0SSricharan R P_BIAS_PLL, 34*d9db07f0SSricharan R P_UNIPHY0_RX, 35*d9db07f0SSricharan R P_UNIPHY0_TX, 36*d9db07f0SSricharan R P_UNIPHY1_RX, 37*d9db07f0SSricharan R P_BIAS_PLL_NSS_NOC, 38*d9db07f0SSricharan R P_UNIPHY1_TX, 39*d9db07f0SSricharan R P_PCIE20_PHY0_PIPE, 40*d9db07f0SSricharan R P_USB3PHY_0_PIPE, 41*d9db07f0SSricharan R P_GPLL0, 42*d9db07f0SSricharan R P_GPLL0_DIV2, 43*d9db07f0SSricharan R P_GPLL2, 44*d9db07f0SSricharan R P_GPLL4, 45*d9db07f0SSricharan R P_GPLL6, 46*d9db07f0SSricharan R P_SLEEP_CLK, 47*d9db07f0SSricharan R P_UBI32_PLL, 48*d9db07f0SSricharan R P_NSS_CRYPTO_PLL, 49*d9db07f0SSricharan R P_PI_SLEEP, 50*d9db07f0SSricharan R }; 51*d9db07f0SSricharan R 52*d9db07f0SSricharan R static struct clk_alpha_pll gpll0_main = { 53*d9db07f0SSricharan R .offset = 0x21000, 54*d9db07f0SSricharan R .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 55*d9db07f0SSricharan R .clkr = { 56*d9db07f0SSricharan R .enable_reg = 0x0b000, 57*d9db07f0SSricharan R .enable_mask = BIT(0), 58*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 59*d9db07f0SSricharan R .name = "gpll0_main", 60*d9db07f0SSricharan R .parent_data = &(const struct clk_parent_data){ 61*d9db07f0SSricharan R .fw_name = "xo", 62*d9db07f0SSricharan R }, 63*d9db07f0SSricharan R .num_parents = 1, 64*d9db07f0SSricharan R .ops = &clk_alpha_pll_ops, 65*d9db07f0SSricharan R }, 66*d9db07f0SSricharan R }, 67*d9db07f0SSricharan R }; 68*d9db07f0SSricharan R 69*d9db07f0SSricharan R static struct clk_fixed_factor gpll0_out_main_div2 = { 70*d9db07f0SSricharan R .mult = 1, 71*d9db07f0SSricharan R .div = 2, 72*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 73*d9db07f0SSricharan R .name = "gpll0_out_main_div2", 74*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 75*d9db07f0SSricharan R &gpll0_main.clkr.hw }, 76*d9db07f0SSricharan R .num_parents = 1, 77*d9db07f0SSricharan R .ops = &clk_fixed_factor_ops, 78*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 79*d9db07f0SSricharan R }, 80*d9db07f0SSricharan R }; 81*d9db07f0SSricharan R 82*d9db07f0SSricharan R static struct clk_alpha_pll_postdiv gpll0 = { 83*d9db07f0SSricharan R .offset = 0x21000, 84*d9db07f0SSricharan R .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 85*d9db07f0SSricharan R .width = 4, 86*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 87*d9db07f0SSricharan R .name = "gpll0", 88*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 89*d9db07f0SSricharan R &gpll0_main.clkr.hw }, 90*d9db07f0SSricharan R .num_parents = 1, 91*d9db07f0SSricharan R .ops = &clk_alpha_pll_postdiv_ro_ops, 92*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 93*d9db07f0SSricharan R }, 94*d9db07f0SSricharan R }; 95*d9db07f0SSricharan R 96*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll0_out_main_div2[] = { 97*d9db07f0SSricharan R { .fw_name = "xo" }, 98*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw}, 99*d9db07f0SSricharan R { .hw = &gpll0_out_main_div2.hw}, 100*d9db07f0SSricharan R }; 101*d9db07f0SSricharan R 102*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = { 103*d9db07f0SSricharan R { P_XO, 0 }, 104*d9db07f0SSricharan R { P_GPLL0, 1 }, 105*d9db07f0SSricharan R { P_GPLL0_DIV2, 4 }, 106*d9db07f0SSricharan R }; 107*d9db07f0SSricharan R 108*d9db07f0SSricharan R static struct clk_alpha_pll ubi32_pll_main = { 109*d9db07f0SSricharan R .offset = 0x25000, 110*d9db07f0SSricharan R .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA], 111*d9db07f0SSricharan R .flags = SUPPORTS_DYNAMIC_UPDATE, 112*d9db07f0SSricharan R .clkr = { 113*d9db07f0SSricharan R .enable_reg = 0x0b000, 114*d9db07f0SSricharan R .enable_mask = BIT(6), 115*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 116*d9db07f0SSricharan R .name = "ubi32_pll_main", 117*d9db07f0SSricharan R .parent_data = &(const struct clk_parent_data){ 118*d9db07f0SSricharan R .fw_name = "xo", 119*d9db07f0SSricharan R }, 120*d9db07f0SSricharan R .num_parents = 1, 121*d9db07f0SSricharan R .ops = &clk_alpha_pll_huayra_ops, 122*d9db07f0SSricharan R }, 123*d9db07f0SSricharan R }, 124*d9db07f0SSricharan R }; 125*d9db07f0SSricharan R 126*d9db07f0SSricharan R static struct clk_alpha_pll_postdiv ubi32_pll = { 127*d9db07f0SSricharan R .offset = 0x25000, 128*d9db07f0SSricharan R .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA], 129*d9db07f0SSricharan R .width = 2, 130*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 131*d9db07f0SSricharan R .name = "ubi32_pll", 132*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 133*d9db07f0SSricharan R &ubi32_pll_main.clkr.hw }, 134*d9db07f0SSricharan R .num_parents = 1, 135*d9db07f0SSricharan R .ops = &clk_alpha_pll_postdiv_ro_ops, 136*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 137*d9db07f0SSricharan R }, 138*d9db07f0SSricharan R }; 139*d9db07f0SSricharan R 140*d9db07f0SSricharan R static struct clk_alpha_pll gpll6_main = { 141*d9db07f0SSricharan R .offset = 0x37000, 142*d9db07f0SSricharan R .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO], 143*d9db07f0SSricharan R .clkr = { 144*d9db07f0SSricharan R .enable_reg = 0x0b000, 145*d9db07f0SSricharan R .enable_mask = BIT(7), 146*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 147*d9db07f0SSricharan R .name = "gpll6_main", 148*d9db07f0SSricharan R .parent_data = &(const struct clk_parent_data){ 149*d9db07f0SSricharan R .fw_name = "xo", 150*d9db07f0SSricharan R }, 151*d9db07f0SSricharan R .num_parents = 1, 152*d9db07f0SSricharan R .ops = &clk_alpha_pll_ops, 153*d9db07f0SSricharan R }, 154*d9db07f0SSricharan R }, 155*d9db07f0SSricharan R }; 156*d9db07f0SSricharan R 157*d9db07f0SSricharan R static struct clk_alpha_pll_postdiv gpll6 = { 158*d9db07f0SSricharan R .offset = 0x37000, 159*d9db07f0SSricharan R .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO], 160*d9db07f0SSricharan R .width = 2, 161*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 162*d9db07f0SSricharan R .name = "gpll6", 163*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 164*d9db07f0SSricharan R &gpll6_main.clkr.hw }, 165*d9db07f0SSricharan R .num_parents = 1, 166*d9db07f0SSricharan R .ops = &clk_alpha_pll_postdiv_ro_ops, 167*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 168*d9db07f0SSricharan R }, 169*d9db07f0SSricharan R }; 170*d9db07f0SSricharan R 171*d9db07f0SSricharan R static struct clk_alpha_pll gpll4_main = { 172*d9db07f0SSricharan R .offset = 0x24000, 173*d9db07f0SSricharan R .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 174*d9db07f0SSricharan R .clkr = { 175*d9db07f0SSricharan R .enable_reg = 0x0b000, 176*d9db07f0SSricharan R .enable_mask = BIT(5), 177*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 178*d9db07f0SSricharan R .name = "gpll4_main", 179*d9db07f0SSricharan R .parent_data = &(const struct clk_parent_data){ 180*d9db07f0SSricharan R .fw_name = "xo", 181*d9db07f0SSricharan R }, 182*d9db07f0SSricharan R .num_parents = 1, 183*d9db07f0SSricharan R .ops = &clk_alpha_pll_ops, 184*d9db07f0SSricharan R }, 185*d9db07f0SSricharan R }, 186*d9db07f0SSricharan R }; 187*d9db07f0SSricharan R 188*d9db07f0SSricharan R static struct clk_alpha_pll_postdiv gpll4 = { 189*d9db07f0SSricharan R .offset = 0x24000, 190*d9db07f0SSricharan R .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 191*d9db07f0SSricharan R .width = 4, 192*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 193*d9db07f0SSricharan R .name = "gpll4", 194*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 195*d9db07f0SSricharan R &gpll4_main.clkr.hw }, 196*d9db07f0SSricharan R .num_parents = 1, 197*d9db07f0SSricharan R .ops = &clk_alpha_pll_postdiv_ro_ops, 198*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 199*d9db07f0SSricharan R }, 200*d9db07f0SSricharan R }; 201*d9db07f0SSricharan R 202*d9db07f0SSricharan R static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src[] = { 203*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 204*d9db07f0SSricharan R F(50000000, P_GPLL0, 16, 0, 0), 205*d9db07f0SSricharan R F(100000000, P_GPLL0, 8, 0, 0), 206*d9db07f0SSricharan R { } 207*d9db07f0SSricharan R }; 208*d9db07f0SSricharan R 209*d9db07f0SSricharan R static struct clk_rcg2 pcnoc_bfdcd_clk_src = { 210*d9db07f0SSricharan R .cmd_rcgr = 0x27000, 211*d9db07f0SSricharan R .freq_tbl = ftbl_pcnoc_bfdcd_clk_src, 212*d9db07f0SSricharan R .hid_width = 5, 213*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 214*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 215*d9db07f0SSricharan R .name = "pcnoc_bfdcd_clk_src", 216*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 217*d9db07f0SSricharan R .num_parents = 3, 218*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 219*d9db07f0SSricharan R }, 220*d9db07f0SSricharan R }; 221*d9db07f0SSricharan R 222*d9db07f0SSricharan R static struct clk_alpha_pll gpll2_main = { 223*d9db07f0SSricharan R .offset = 0x4a000, 224*d9db07f0SSricharan R .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 225*d9db07f0SSricharan R .clkr = { 226*d9db07f0SSricharan R .enable_reg = 0x0b000, 227*d9db07f0SSricharan R .enable_mask = BIT(2), 228*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 229*d9db07f0SSricharan R .name = "gpll2_main", 230*d9db07f0SSricharan R .parent_data = &(const struct clk_parent_data){ 231*d9db07f0SSricharan R .fw_name = "xo", 232*d9db07f0SSricharan R }, 233*d9db07f0SSricharan R .num_parents = 1, 234*d9db07f0SSricharan R .ops = &clk_alpha_pll_ops, 235*d9db07f0SSricharan R }, 236*d9db07f0SSricharan R }, 237*d9db07f0SSricharan R }; 238*d9db07f0SSricharan R 239*d9db07f0SSricharan R static struct clk_alpha_pll_postdiv gpll2 = { 240*d9db07f0SSricharan R .offset = 0x4a000, 241*d9db07f0SSricharan R .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 242*d9db07f0SSricharan R .width = 4, 243*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 244*d9db07f0SSricharan R .name = "gpll2", 245*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 246*d9db07f0SSricharan R &gpll2_main.clkr.hw }, 247*d9db07f0SSricharan R .num_parents = 1, 248*d9db07f0SSricharan R .ops = &clk_alpha_pll_postdiv_ro_ops, 249*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 250*d9db07f0SSricharan R }, 251*d9db07f0SSricharan R }; 252*d9db07f0SSricharan R 253*d9db07f0SSricharan R static struct clk_alpha_pll nss_crypto_pll_main = { 254*d9db07f0SSricharan R .offset = 0x22000, 255*d9db07f0SSricharan R .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 256*d9db07f0SSricharan R .clkr = { 257*d9db07f0SSricharan R .enable_reg = 0x0b000, 258*d9db07f0SSricharan R .enable_mask = BIT(4), 259*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 260*d9db07f0SSricharan R .name = "nss_crypto_pll_main", 261*d9db07f0SSricharan R .parent_data = &(const struct clk_parent_data){ 262*d9db07f0SSricharan R .fw_name = "xo", 263*d9db07f0SSricharan R }, 264*d9db07f0SSricharan R .num_parents = 1, 265*d9db07f0SSricharan R .ops = &clk_alpha_pll_ops, 266*d9db07f0SSricharan R }, 267*d9db07f0SSricharan R }, 268*d9db07f0SSricharan R }; 269*d9db07f0SSricharan R 270*d9db07f0SSricharan R static struct clk_alpha_pll_postdiv nss_crypto_pll = { 271*d9db07f0SSricharan R .offset = 0x22000, 272*d9db07f0SSricharan R .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 273*d9db07f0SSricharan R .width = 4, 274*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 275*d9db07f0SSricharan R .name = "nss_crypto_pll", 276*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 277*d9db07f0SSricharan R &nss_crypto_pll_main.clkr.hw }, 278*d9db07f0SSricharan R .num_parents = 1, 279*d9db07f0SSricharan R .ops = &clk_alpha_pll_postdiv_ro_ops, 280*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 281*d9db07f0SSricharan R }, 282*d9db07f0SSricharan R }; 283*d9db07f0SSricharan R 284*d9db07f0SSricharan R static const struct freq_tbl ftbl_qdss_tsctr_clk_src[] = { 285*d9db07f0SSricharan R F(160000000, P_GPLL0_DIV2, 2.5, 0, 0), 286*d9db07f0SSricharan R F(320000000, P_GPLL0, 2.5, 0, 0), 287*d9db07f0SSricharan R F(600000000, P_GPLL4, 2, 0, 0), 288*d9db07f0SSricharan R { } 289*d9db07f0SSricharan R }; 290*d9db07f0SSricharan R 291*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll6_gpll0_div2[] = { 292*d9db07f0SSricharan R { .fw_name = "xo" }, 293*d9db07f0SSricharan R { .hw = &gpll4.clkr.hw }, 294*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 295*d9db07f0SSricharan R { .hw = &gpll6.clkr.hw }, 296*d9db07f0SSricharan R { .hw = &gpll0_out_main_div2.hw }, 297*d9db07f0SSricharan R }; 298*d9db07f0SSricharan R 299*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map[] = { 300*d9db07f0SSricharan R { P_XO, 0 }, 301*d9db07f0SSricharan R { P_GPLL4, 1 }, 302*d9db07f0SSricharan R { P_GPLL0, 2 }, 303*d9db07f0SSricharan R { P_GPLL6, 3 }, 304*d9db07f0SSricharan R { P_GPLL0_DIV2, 4 }, 305*d9db07f0SSricharan R }; 306*d9db07f0SSricharan R 307*d9db07f0SSricharan R static struct clk_rcg2 qdss_tsctr_clk_src = { 308*d9db07f0SSricharan R .cmd_rcgr = 0x29064, 309*d9db07f0SSricharan R .freq_tbl = ftbl_qdss_tsctr_clk_src, 310*d9db07f0SSricharan R .hid_width = 5, 311*d9db07f0SSricharan R .parent_map = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map, 312*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 313*d9db07f0SSricharan R .name = "qdss_tsctr_clk_src", 314*d9db07f0SSricharan R .parent_data = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2, 315*d9db07f0SSricharan R .num_parents = 5, 316*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 317*d9db07f0SSricharan R }, 318*d9db07f0SSricharan R }; 319*d9db07f0SSricharan R 320*d9db07f0SSricharan R static struct clk_fixed_factor qdss_dap_sync_clk_src = { 321*d9db07f0SSricharan R .mult = 1, 322*d9db07f0SSricharan R .div = 4, 323*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 324*d9db07f0SSricharan R .name = "qdss_dap_sync_clk_src", 325*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 326*d9db07f0SSricharan R &qdss_tsctr_clk_src.clkr.hw }, 327*d9db07f0SSricharan R .num_parents = 1, 328*d9db07f0SSricharan R .ops = &clk_fixed_factor_ops, 329*d9db07f0SSricharan R }, 330*d9db07f0SSricharan R }; 331*d9db07f0SSricharan R 332*d9db07f0SSricharan R static const struct freq_tbl ftbl_qdss_at_clk_src[] = { 333*d9db07f0SSricharan R F(66670000, P_GPLL0_DIV2, 6, 0, 0), 334*d9db07f0SSricharan R F(240000000, P_GPLL4, 5, 0, 0), 335*d9db07f0SSricharan R { } 336*d9db07f0SSricharan R }; 337*d9db07f0SSricharan R 338*d9db07f0SSricharan R static struct clk_rcg2 qdss_at_clk_src = { 339*d9db07f0SSricharan R .cmd_rcgr = 0x2900c, 340*d9db07f0SSricharan R .freq_tbl = ftbl_qdss_at_clk_src, 341*d9db07f0SSricharan R .hid_width = 5, 342*d9db07f0SSricharan R .parent_map = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map, 343*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 344*d9db07f0SSricharan R .name = "qdss_at_clk_src", 345*d9db07f0SSricharan R .parent_data = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2, 346*d9db07f0SSricharan R .num_parents = 5, 347*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 348*d9db07f0SSricharan R }, 349*d9db07f0SSricharan R }; 350*d9db07f0SSricharan R 351*d9db07f0SSricharan R static struct clk_fixed_factor qdss_tsctr_div2_clk_src = { 352*d9db07f0SSricharan R .mult = 1, 353*d9db07f0SSricharan R .div = 2, 354*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 355*d9db07f0SSricharan R .name = "qdss_tsctr_div2_clk_src", 356*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 357*d9db07f0SSricharan R &qdss_tsctr_clk_src.clkr.hw }, 358*d9db07f0SSricharan R .num_parents = 1, 359*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 360*d9db07f0SSricharan R .ops = &clk_fixed_factor_ops, 361*d9db07f0SSricharan R }, 362*d9db07f0SSricharan R }; 363*d9db07f0SSricharan R 364*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_ppe_clk_src[] = { 365*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 366*d9db07f0SSricharan R F(300000000, P_BIAS_PLL, 1, 0, 0), 367*d9db07f0SSricharan R { } 368*d9db07f0SSricharan R }; 369*d9db07f0SSricharan R 370*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = { 371*d9db07f0SSricharan R { .fw_name = "xo" }, 372*d9db07f0SSricharan R { .fw_name = "bias_pll_cc_clk" }, 373*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 374*d9db07f0SSricharan R { .hw = &gpll4.clkr.hw }, 375*d9db07f0SSricharan R { .hw = &nss_crypto_pll.clkr.hw }, 376*d9db07f0SSricharan R { .hw = &ubi32_pll.clkr.hw }, 377*d9db07f0SSricharan R }; 378*d9db07f0SSricharan R 379*d9db07f0SSricharan R static const struct parent_map gcc_xo_bias_gpll0_gpll4_nss_ubi32_map[] = { 380*d9db07f0SSricharan R { P_XO, 0 }, 381*d9db07f0SSricharan R { P_BIAS_PLL, 1 }, 382*d9db07f0SSricharan R { P_GPLL0, 2 }, 383*d9db07f0SSricharan R { P_GPLL4, 3 }, 384*d9db07f0SSricharan R { P_NSS_CRYPTO_PLL, 4 }, 385*d9db07f0SSricharan R { P_UBI32_PLL, 5 }, 386*d9db07f0SSricharan R }; 387*d9db07f0SSricharan R 388*d9db07f0SSricharan R static struct clk_rcg2 nss_ppe_clk_src = { 389*d9db07f0SSricharan R .cmd_rcgr = 0x68080, 390*d9db07f0SSricharan R .freq_tbl = ftbl_nss_ppe_clk_src, 391*d9db07f0SSricharan R .hid_width = 5, 392*d9db07f0SSricharan R .parent_map = gcc_xo_bias_gpll0_gpll4_nss_ubi32_map, 393*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 394*d9db07f0SSricharan R .name = "nss_ppe_clk_src", 395*d9db07f0SSricharan R .parent_data = gcc_xo_bias_gpll0_gpll4_nss_ubi32, 396*d9db07f0SSricharan R .num_parents = 6, 397*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 398*d9db07f0SSricharan R }, 399*d9db07f0SSricharan R }; 400*d9db07f0SSricharan R 401*d9db07f0SSricharan R static struct clk_branch gcc_xo_clk_src = { 402*d9db07f0SSricharan R .halt_reg = 0x30018, 403*d9db07f0SSricharan R .clkr = { 404*d9db07f0SSricharan R .enable_reg = 0x30018, 405*d9db07f0SSricharan R .enable_mask = BIT(1), 406*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 407*d9db07f0SSricharan R .name = "gcc_xo_clk_src", 408*d9db07f0SSricharan R .parent_data = &(const struct clk_parent_data){ 409*d9db07f0SSricharan R .fw_name = "xo", 410*d9db07f0SSricharan R }, 411*d9db07f0SSricharan R .num_parents = 1, 412*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 413*d9db07f0SSricharan R .ops = &clk_branch2_ops, 414*d9db07f0SSricharan R }, 415*d9db07f0SSricharan R }, 416*d9db07f0SSricharan R }; 417*d9db07f0SSricharan R 418*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_ce_clk_src[] = { 419*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 420*d9db07f0SSricharan R F(200000000, P_GPLL0, 4, 0, 0), 421*d9db07f0SSricharan R { } 422*d9db07f0SSricharan R }; 423*d9db07f0SSricharan R 424*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0[] = { 425*d9db07f0SSricharan R { .fw_name = "xo" }, 426*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 427*d9db07f0SSricharan R }; 428*d9db07f0SSricharan R 429*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_map[] = { 430*d9db07f0SSricharan R { P_XO, 0 }, 431*d9db07f0SSricharan R { P_GPLL0, 1 }, 432*d9db07f0SSricharan R }; 433*d9db07f0SSricharan R 434*d9db07f0SSricharan R static struct clk_rcg2 nss_ce_clk_src = { 435*d9db07f0SSricharan R .cmd_rcgr = 0x68098, 436*d9db07f0SSricharan R .freq_tbl = ftbl_nss_ce_clk_src, 437*d9db07f0SSricharan R .hid_width = 5, 438*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_map, 439*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 440*d9db07f0SSricharan R .name = "nss_ce_clk_src", 441*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0, 442*d9db07f0SSricharan R .num_parents = 2, 443*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 444*d9db07f0SSricharan R }, 445*d9db07f0SSricharan R }; 446*d9db07f0SSricharan R 447*d9db07f0SSricharan R static struct clk_branch gcc_sleep_clk_src = { 448*d9db07f0SSricharan R .halt_reg = 0x30000, 449*d9db07f0SSricharan R .clkr = { 450*d9db07f0SSricharan R .enable_reg = 0x30000, 451*d9db07f0SSricharan R .enable_mask = BIT(1), 452*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 453*d9db07f0SSricharan R .name = "gcc_sleep_clk_src", 454*d9db07f0SSricharan R .parent_data = &(const struct clk_parent_data){ 455*d9db07f0SSricharan R .fw_name = "sleep_clk", 456*d9db07f0SSricharan R }, 457*d9db07f0SSricharan R .num_parents = 1, 458*d9db07f0SSricharan R .ops = &clk_branch2_ops, 459*d9db07f0SSricharan R }, 460*d9db07f0SSricharan R }, 461*d9db07f0SSricharan R }; 462*d9db07f0SSricharan R 463*d9db07f0SSricharan R static const struct freq_tbl ftbl_snoc_nssnoc_bfdcd_clk_src[] = { 464*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 465*d9db07f0SSricharan R F(50000000, P_GPLL0_DIV2, 8, 0, 0), 466*d9db07f0SSricharan R F(100000000, P_GPLL0, 8, 0, 0), 467*d9db07f0SSricharan R F(133333333, P_GPLL0, 6, 0, 0), 468*d9db07f0SSricharan R F(160000000, P_GPLL0, 5, 0, 0), 469*d9db07f0SSricharan R F(200000000, P_GPLL0, 4, 0, 0), 470*d9db07f0SSricharan R F(266666667, P_GPLL0, 3, 0, 0), 471*d9db07f0SSricharan R { } 472*d9db07f0SSricharan R }; 473*d9db07f0SSricharan R 474*d9db07f0SSricharan R static const struct clk_parent_data 475*d9db07f0SSricharan R gcc_xo_gpll0_gpll6_gpll0_out_main_div2[] = { 476*d9db07f0SSricharan R { .fw_name = "xo" }, 477*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 478*d9db07f0SSricharan R { .hw = &gpll6.clkr.hw }, 479*d9db07f0SSricharan R { .hw = &gpll0_out_main_div2.hw }, 480*d9db07f0SSricharan R }; 481*d9db07f0SSricharan R 482*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map[] = { 483*d9db07f0SSricharan R { P_XO, 0 }, 484*d9db07f0SSricharan R { P_GPLL0, 1 }, 485*d9db07f0SSricharan R { P_GPLL6, 2 }, 486*d9db07f0SSricharan R { P_GPLL0_DIV2, 3 }, 487*d9db07f0SSricharan R }; 488*d9db07f0SSricharan R 489*d9db07f0SSricharan R static struct clk_rcg2 snoc_nssnoc_bfdcd_clk_src = { 490*d9db07f0SSricharan R .cmd_rcgr = 0x76054, 491*d9db07f0SSricharan R .freq_tbl = ftbl_snoc_nssnoc_bfdcd_clk_src, 492*d9db07f0SSricharan R .hid_width = 5, 493*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map, 494*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 495*d9db07f0SSricharan R .name = "snoc_nssnoc_bfdcd_clk_src", 496*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2, 497*d9db07f0SSricharan R .num_parents = 4, 498*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 499*d9db07f0SSricharan R }, 500*d9db07f0SSricharan R }; 501*d9db07f0SSricharan R 502*d9db07f0SSricharan R static const struct freq_tbl ftbl_apss_ahb_clk_src[] = { 503*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 504*d9db07f0SSricharan R F(25000000, P_GPLL0_DIV2, 16, 0, 0), 505*d9db07f0SSricharan R F(50000000, P_GPLL0, 16, 0, 0), 506*d9db07f0SSricharan R F(100000000, P_GPLL0, 8, 0, 0), 507*d9db07f0SSricharan R { } 508*d9db07f0SSricharan R }; 509*d9db07f0SSricharan R 510*d9db07f0SSricharan R static struct clk_rcg2 apss_ahb_clk_src = { 511*d9db07f0SSricharan R .cmd_rcgr = 0x46000, 512*d9db07f0SSricharan R .freq_tbl = ftbl_apss_ahb_clk_src, 513*d9db07f0SSricharan R .hid_width = 5, 514*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 515*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 516*d9db07f0SSricharan R .name = "apss_ahb_clk_src", 517*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 518*d9db07f0SSricharan R .num_parents = 3, 519*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 520*d9db07f0SSricharan R }, 521*d9db07f0SSricharan R }; 522*d9db07f0SSricharan R 523*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_port5_rx_clk_src[] = { 524*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 525*d9db07f0SSricharan R F(25000000, P_UNIPHY1_RX, 12.5, 0, 0), 526*d9db07f0SSricharan R F(25000000, P_UNIPHY0_RX, 5, 0, 0), 527*d9db07f0SSricharan R F(78125000, P_UNIPHY1_RX, 4, 0, 0), 528*d9db07f0SSricharan R F(125000000, P_UNIPHY1_RX, 2.5, 0, 0), 529*d9db07f0SSricharan R F(125000000, P_UNIPHY0_RX, 1, 0, 0), 530*d9db07f0SSricharan R F(156250000, P_UNIPHY1_RX, 2, 0, 0), 531*d9db07f0SSricharan R F(312500000, P_UNIPHY1_RX, 1, 0, 0), 532*d9db07f0SSricharan R { } 533*d9db07f0SSricharan R }; 534*d9db07f0SSricharan R 535*d9db07f0SSricharan R static const struct clk_parent_data 536*d9db07f0SSricharan R gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = { 537*d9db07f0SSricharan R { .fw_name = "xo" }, 538*d9db07f0SSricharan R { .fw_name = "uniphy0_gcc_rx_clk" }, 539*d9db07f0SSricharan R { .fw_name = "uniphy0_gcc_tx_clk" }, 540*d9db07f0SSricharan R { .fw_name = "uniphy1_gcc_rx_clk" }, 541*d9db07f0SSricharan R { .fw_name = "uniphy1_gcc_tx_clk" }, 542*d9db07f0SSricharan R { .hw = &ubi32_pll.clkr.hw }, 543*d9db07f0SSricharan R { .fw_name = "bias_pll_cc_clk" }, 544*d9db07f0SSricharan R }; 545*d9db07f0SSricharan R 546*d9db07f0SSricharan R static const struct parent_map 547*d9db07f0SSricharan R gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map[] = { 548*d9db07f0SSricharan R { P_XO, 0 }, 549*d9db07f0SSricharan R { P_UNIPHY0_RX, 1 }, 550*d9db07f0SSricharan R { P_UNIPHY0_TX, 2 }, 551*d9db07f0SSricharan R { P_UNIPHY1_RX, 3 }, 552*d9db07f0SSricharan R { P_UNIPHY1_TX, 4 }, 553*d9db07f0SSricharan R { P_UBI32_PLL, 5 }, 554*d9db07f0SSricharan R { P_BIAS_PLL, 6 }, 555*d9db07f0SSricharan R }; 556*d9db07f0SSricharan R 557*d9db07f0SSricharan R static struct clk_rcg2 nss_port5_rx_clk_src = { 558*d9db07f0SSricharan R .cmd_rcgr = 0x68060, 559*d9db07f0SSricharan R .freq_tbl = ftbl_nss_port5_rx_clk_src, 560*d9db07f0SSricharan R .hid_width = 5, 561*d9db07f0SSricharan R .parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map, 562*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 563*d9db07f0SSricharan R .name = "nss_port5_rx_clk_src", 564*d9db07f0SSricharan R .parent_data = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias, 565*d9db07f0SSricharan R .num_parents = 7, 566*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 567*d9db07f0SSricharan R }, 568*d9db07f0SSricharan R }; 569*d9db07f0SSricharan R 570*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_port5_tx_clk_src[] = { 571*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 572*d9db07f0SSricharan R F(25000000, P_UNIPHY1_TX, 12.5, 0, 0), 573*d9db07f0SSricharan R F(25000000, P_UNIPHY0_TX, 5, 0, 0), 574*d9db07f0SSricharan R F(78125000, P_UNIPHY1_TX, 4, 0, 0), 575*d9db07f0SSricharan R F(125000000, P_UNIPHY1_TX, 2.5, 0, 0), 576*d9db07f0SSricharan R F(125000000, P_UNIPHY0_TX, 1, 0, 0), 577*d9db07f0SSricharan R F(156250000, P_UNIPHY1_TX, 2, 0, 0), 578*d9db07f0SSricharan R F(312500000, P_UNIPHY1_TX, 1, 0, 0), 579*d9db07f0SSricharan R { } 580*d9db07f0SSricharan R }; 581*d9db07f0SSricharan R 582*d9db07f0SSricharan R static const struct clk_parent_data 583*d9db07f0SSricharan R gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = { 584*d9db07f0SSricharan R { .fw_name = "xo" }, 585*d9db07f0SSricharan R { .fw_name = "uniphy0_gcc_tx_clk" }, 586*d9db07f0SSricharan R { .fw_name = "uniphy0_gcc_rx_clk" }, 587*d9db07f0SSricharan R { .fw_name = "uniphy1_gcc_tx_clk" }, 588*d9db07f0SSricharan R { .fw_name = "uniphy1_gcc_rx_clk" }, 589*d9db07f0SSricharan R { .hw = &ubi32_pll.clkr.hw }, 590*d9db07f0SSricharan R { .fw_name = "bias_pll_cc_clk" }, 591*d9db07f0SSricharan R }; 592*d9db07f0SSricharan R 593*d9db07f0SSricharan R static const struct parent_map 594*d9db07f0SSricharan R gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map[] = { 595*d9db07f0SSricharan R { P_XO, 0 }, 596*d9db07f0SSricharan R { P_UNIPHY0_TX, 1 }, 597*d9db07f0SSricharan R { P_UNIPHY0_RX, 2 }, 598*d9db07f0SSricharan R { P_UNIPHY1_TX, 3 }, 599*d9db07f0SSricharan R { P_UNIPHY1_RX, 4 }, 600*d9db07f0SSricharan R { P_UBI32_PLL, 5 }, 601*d9db07f0SSricharan R { P_BIAS_PLL, 6 }, 602*d9db07f0SSricharan R }; 603*d9db07f0SSricharan R 604*d9db07f0SSricharan R static struct clk_rcg2 nss_port5_tx_clk_src = { 605*d9db07f0SSricharan R .cmd_rcgr = 0x68068, 606*d9db07f0SSricharan R .freq_tbl = ftbl_nss_port5_tx_clk_src, 607*d9db07f0SSricharan R .hid_width = 5, 608*d9db07f0SSricharan R .parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map, 609*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 610*d9db07f0SSricharan R .name = "nss_port5_tx_clk_src", 611*d9db07f0SSricharan R .parent_data = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias, 612*d9db07f0SSricharan R .num_parents = 7, 613*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 614*d9db07f0SSricharan R }, 615*d9db07f0SSricharan R }; 616*d9db07f0SSricharan R 617*d9db07f0SSricharan R static const struct freq_tbl ftbl_pcie_axi_clk_src[] = { 618*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 619*d9db07f0SSricharan R F(200000000, P_GPLL0, 4, 0, 0), 620*d9db07f0SSricharan R F(240000000, P_GPLL4, 5, 0, 0), 621*d9db07f0SSricharan R { } 622*d9db07f0SSricharan R }; 623*d9db07f0SSricharan R 624*d9db07f0SSricharan R static const struct freq_tbl ftbl_pcie_rchng_clk_src[] = { 625*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 626*d9db07f0SSricharan R F(100000000, P_GPLL0, 8, 0, 0), 627*d9db07f0SSricharan R { } 628*d9db07f0SSricharan R }; 629*d9db07f0SSricharan R 630*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = { 631*d9db07f0SSricharan R { .fw_name = "xo" }, 632*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 633*d9db07f0SSricharan R { .hw = &gpll4.clkr.hw }, 634*d9db07f0SSricharan R }; 635*d9db07f0SSricharan R 636*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll4_map[] = { 637*d9db07f0SSricharan R { P_XO, 0 }, 638*d9db07f0SSricharan R { P_GPLL0, 1 }, 639*d9db07f0SSricharan R { P_GPLL4, 2 }, 640*d9db07f0SSricharan R }; 641*d9db07f0SSricharan R 642*d9db07f0SSricharan R static struct clk_rcg2 pcie0_axi_clk_src = { 643*d9db07f0SSricharan R .cmd_rcgr = 0x75054, 644*d9db07f0SSricharan R .freq_tbl = ftbl_pcie_axi_clk_src, 645*d9db07f0SSricharan R .hid_width = 5, 646*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll4_map, 647*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 648*d9db07f0SSricharan R .name = "pcie0_axi_clk_src", 649*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll4, 650*d9db07f0SSricharan R .num_parents = 3, 651*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 652*d9db07f0SSricharan R }, 653*d9db07f0SSricharan R }; 654*d9db07f0SSricharan R 655*d9db07f0SSricharan R static const struct freq_tbl ftbl_usb0_master_clk_src[] = { 656*d9db07f0SSricharan R F(80000000, P_GPLL0_DIV2, 5, 0, 0), 657*d9db07f0SSricharan R F(100000000, P_GPLL0, 8, 0, 0), 658*d9db07f0SSricharan R F(133330000, P_GPLL0, 6, 0, 0), 659*d9db07f0SSricharan R F(200000000, P_GPLL0, 4, 0, 0), 660*d9db07f0SSricharan R { } 661*d9db07f0SSricharan R }; 662*d9db07f0SSricharan R 663*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_out_main_div2_gpll0[] = { 664*d9db07f0SSricharan R { .fw_name = "xo" }, 665*d9db07f0SSricharan R { .hw = &gpll0_out_main_div2.hw }, 666*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 667*d9db07f0SSricharan R }; 668*d9db07f0SSricharan R 669*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = { 670*d9db07f0SSricharan R { P_XO, 0 }, 671*d9db07f0SSricharan R { P_GPLL0_DIV2, 2 }, 672*d9db07f0SSricharan R { P_GPLL0, 1 }, 673*d9db07f0SSricharan R }; 674*d9db07f0SSricharan R 675*d9db07f0SSricharan R static struct clk_rcg2 usb0_master_clk_src = { 676*d9db07f0SSricharan R .cmd_rcgr = 0x3e00c, 677*d9db07f0SSricharan R .freq_tbl = ftbl_usb0_master_clk_src, 678*d9db07f0SSricharan R .mnd_width = 8, 679*d9db07f0SSricharan R .hid_width = 5, 680*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map, 681*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 682*d9db07f0SSricharan R .name = "usb0_master_clk_src", 683*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_out_main_div2_gpll0, 684*d9db07f0SSricharan R .num_parents = 3, 685*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 686*d9db07f0SSricharan R }, 687*d9db07f0SSricharan R }; 688*d9db07f0SSricharan R 689*d9db07f0SSricharan R static struct clk_regmap_div apss_ahb_postdiv_clk_src = { 690*d9db07f0SSricharan R .reg = 0x46018, 691*d9db07f0SSricharan R .shift = 4, 692*d9db07f0SSricharan R .width = 4, 693*d9db07f0SSricharan R .clkr = { 694*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 695*d9db07f0SSricharan R .name = "apss_ahb_postdiv_clk_src", 696*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 697*d9db07f0SSricharan R &apss_ahb_clk_src.clkr.hw }, 698*d9db07f0SSricharan R .num_parents = 1, 699*d9db07f0SSricharan R .ops = &clk_regmap_div_ops, 700*d9db07f0SSricharan R }, 701*d9db07f0SSricharan R }, 702*d9db07f0SSricharan R }; 703*d9db07f0SSricharan R 704*d9db07f0SSricharan R static struct clk_fixed_factor gcc_xo_div4_clk_src = { 705*d9db07f0SSricharan R .mult = 1, 706*d9db07f0SSricharan R .div = 4, 707*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 708*d9db07f0SSricharan R .name = "gcc_xo_div4_clk_src", 709*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 710*d9db07f0SSricharan R &gcc_xo_clk_src.clkr.hw }, 711*d9db07f0SSricharan R .num_parents = 1, 712*d9db07f0SSricharan R .ops = &clk_fixed_factor_ops, 713*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 714*d9db07f0SSricharan R }, 715*d9db07f0SSricharan R }; 716*d9db07f0SSricharan R 717*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_port1_rx_clk_src[] = { 718*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 719*d9db07f0SSricharan R F(25000000, P_UNIPHY0_RX, 5, 0, 0), 720*d9db07f0SSricharan R F(125000000, P_UNIPHY0_RX, 1, 0, 0), 721*d9db07f0SSricharan R { } 722*d9db07f0SSricharan R }; 723*d9db07f0SSricharan R 724*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_ubi32_bias[] = { 725*d9db07f0SSricharan R { .fw_name = "xo" }, 726*d9db07f0SSricharan R { .fw_name = "uniphy0_gcc_rx_clk" }, 727*d9db07f0SSricharan R { .fw_name = "uniphy0_gcc_tx_clk" }, 728*d9db07f0SSricharan R { .hw = &ubi32_pll.clkr.hw }, 729*d9db07f0SSricharan R { .fw_name = "bias_pll_cc_clk" }, 730*d9db07f0SSricharan R }; 731*d9db07f0SSricharan R 732*d9db07f0SSricharan R static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = { 733*d9db07f0SSricharan R { P_XO, 0 }, 734*d9db07f0SSricharan R { P_UNIPHY0_RX, 1 }, 735*d9db07f0SSricharan R { P_UNIPHY0_TX, 2 }, 736*d9db07f0SSricharan R { P_UBI32_PLL, 5 }, 737*d9db07f0SSricharan R { P_BIAS_PLL, 6 }, 738*d9db07f0SSricharan R }; 739*d9db07f0SSricharan R 740*d9db07f0SSricharan R static struct clk_rcg2 nss_port1_rx_clk_src = { 741*d9db07f0SSricharan R .cmd_rcgr = 0x68020, 742*d9db07f0SSricharan R .freq_tbl = ftbl_nss_port1_rx_clk_src, 743*d9db07f0SSricharan R .hid_width = 5, 744*d9db07f0SSricharan R .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map, 745*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 746*d9db07f0SSricharan R .name = "nss_port1_rx_clk_src", 747*d9db07f0SSricharan R .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias, 748*d9db07f0SSricharan R .num_parents = 5, 749*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 750*d9db07f0SSricharan R }, 751*d9db07f0SSricharan R }; 752*d9db07f0SSricharan R 753*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_port1_tx_clk_src[] = { 754*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 755*d9db07f0SSricharan R F(25000000, P_UNIPHY0_TX, 5, 0, 0), 756*d9db07f0SSricharan R F(125000000, P_UNIPHY0_TX, 1, 0, 0), 757*d9db07f0SSricharan R { } 758*d9db07f0SSricharan R }; 759*d9db07f0SSricharan R 760*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_ubi32_bias[] = { 761*d9db07f0SSricharan R { .fw_name = "xo" }, 762*d9db07f0SSricharan R { .fw_name = "uniphy0_gcc_tx_clk" }, 763*d9db07f0SSricharan R { .fw_name = "uniphy0_gcc_rx_clk" }, 764*d9db07f0SSricharan R { .hw = &ubi32_pll.clkr.hw }, 765*d9db07f0SSricharan R { .fw_name = "bias_pll_cc_clk" }, 766*d9db07f0SSricharan R }; 767*d9db07f0SSricharan R 768*d9db07f0SSricharan R static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = { 769*d9db07f0SSricharan R { P_XO, 0 }, 770*d9db07f0SSricharan R { P_UNIPHY0_TX, 1 }, 771*d9db07f0SSricharan R { P_UNIPHY0_RX, 2 }, 772*d9db07f0SSricharan R { P_UBI32_PLL, 5 }, 773*d9db07f0SSricharan R { P_BIAS_PLL, 6 }, 774*d9db07f0SSricharan R }; 775*d9db07f0SSricharan R 776*d9db07f0SSricharan R static struct clk_rcg2 nss_port1_tx_clk_src = { 777*d9db07f0SSricharan R .cmd_rcgr = 0x68028, 778*d9db07f0SSricharan R .freq_tbl = ftbl_nss_port1_tx_clk_src, 779*d9db07f0SSricharan R .hid_width = 5, 780*d9db07f0SSricharan R .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map, 781*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 782*d9db07f0SSricharan R .name = "nss_port1_tx_clk_src", 783*d9db07f0SSricharan R .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias, 784*d9db07f0SSricharan R .num_parents = 5, 785*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 786*d9db07f0SSricharan R }, 787*d9db07f0SSricharan R }; 788*d9db07f0SSricharan R 789*d9db07f0SSricharan R static struct clk_rcg2 nss_port2_rx_clk_src = { 790*d9db07f0SSricharan R .cmd_rcgr = 0x68030, 791*d9db07f0SSricharan R .freq_tbl = ftbl_nss_port1_rx_clk_src, 792*d9db07f0SSricharan R .hid_width = 5, 793*d9db07f0SSricharan R .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map, 794*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 795*d9db07f0SSricharan R .name = "nss_port2_rx_clk_src", 796*d9db07f0SSricharan R .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias, 797*d9db07f0SSricharan R .num_parents = 5, 798*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 799*d9db07f0SSricharan R }, 800*d9db07f0SSricharan R }; 801*d9db07f0SSricharan R 802*d9db07f0SSricharan R static struct clk_rcg2 nss_port2_tx_clk_src = { 803*d9db07f0SSricharan R .cmd_rcgr = 0x68038, 804*d9db07f0SSricharan R .freq_tbl = ftbl_nss_port1_tx_clk_src, 805*d9db07f0SSricharan R .hid_width = 5, 806*d9db07f0SSricharan R .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map, 807*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 808*d9db07f0SSricharan R .name = "nss_port2_tx_clk_src", 809*d9db07f0SSricharan R .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias, 810*d9db07f0SSricharan R .num_parents = 5, 811*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 812*d9db07f0SSricharan R }, 813*d9db07f0SSricharan R }; 814*d9db07f0SSricharan R 815*d9db07f0SSricharan R static struct clk_rcg2 nss_port3_rx_clk_src = { 816*d9db07f0SSricharan R .cmd_rcgr = 0x68040, 817*d9db07f0SSricharan R .freq_tbl = ftbl_nss_port1_rx_clk_src, 818*d9db07f0SSricharan R .hid_width = 5, 819*d9db07f0SSricharan R .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map, 820*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 821*d9db07f0SSricharan R .name = "nss_port3_rx_clk_src", 822*d9db07f0SSricharan R .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias, 823*d9db07f0SSricharan R .num_parents = 5, 824*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 825*d9db07f0SSricharan R }, 826*d9db07f0SSricharan R }; 827*d9db07f0SSricharan R 828*d9db07f0SSricharan R static struct clk_rcg2 nss_port3_tx_clk_src = { 829*d9db07f0SSricharan R .cmd_rcgr = 0x68048, 830*d9db07f0SSricharan R .freq_tbl = ftbl_nss_port1_tx_clk_src, 831*d9db07f0SSricharan R .hid_width = 5, 832*d9db07f0SSricharan R .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map, 833*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 834*d9db07f0SSricharan R .name = "nss_port3_tx_clk_src", 835*d9db07f0SSricharan R .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias, 836*d9db07f0SSricharan R .num_parents = 5, 837*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 838*d9db07f0SSricharan R }, 839*d9db07f0SSricharan R }; 840*d9db07f0SSricharan R 841*d9db07f0SSricharan R static struct clk_rcg2 nss_port4_rx_clk_src = { 842*d9db07f0SSricharan R .cmd_rcgr = 0x68050, 843*d9db07f0SSricharan R .freq_tbl = ftbl_nss_port1_rx_clk_src, 844*d9db07f0SSricharan R .hid_width = 5, 845*d9db07f0SSricharan R .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map, 846*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 847*d9db07f0SSricharan R .name = "nss_port4_rx_clk_src", 848*d9db07f0SSricharan R .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias, 849*d9db07f0SSricharan R .num_parents = 5, 850*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 851*d9db07f0SSricharan R }, 852*d9db07f0SSricharan R }; 853*d9db07f0SSricharan R 854*d9db07f0SSricharan R static struct clk_rcg2 nss_port4_tx_clk_src = { 855*d9db07f0SSricharan R .cmd_rcgr = 0x68058, 856*d9db07f0SSricharan R .freq_tbl = ftbl_nss_port1_tx_clk_src, 857*d9db07f0SSricharan R .hid_width = 5, 858*d9db07f0SSricharan R .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map, 859*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 860*d9db07f0SSricharan R .name = "nss_port4_tx_clk_src", 861*d9db07f0SSricharan R .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias, 862*d9db07f0SSricharan R .num_parents = 5, 863*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 864*d9db07f0SSricharan R }, 865*d9db07f0SSricharan R }; 866*d9db07f0SSricharan R 867*d9db07f0SSricharan R static struct clk_regmap_div nss_port5_rx_div_clk_src = { 868*d9db07f0SSricharan R .reg = 0x68440, 869*d9db07f0SSricharan R .shift = 0, 870*d9db07f0SSricharan R .width = 4, 871*d9db07f0SSricharan R .clkr = { 872*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 873*d9db07f0SSricharan R .name = "nss_port5_rx_div_clk_src", 874*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 875*d9db07f0SSricharan R &nss_port5_rx_clk_src.clkr.hw }, 876*d9db07f0SSricharan R .num_parents = 1, 877*d9db07f0SSricharan R .ops = &clk_regmap_div_ops, 878*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 879*d9db07f0SSricharan R }, 880*d9db07f0SSricharan R }, 881*d9db07f0SSricharan R }; 882*d9db07f0SSricharan R 883*d9db07f0SSricharan R static struct clk_regmap_div nss_port5_tx_div_clk_src = { 884*d9db07f0SSricharan R .reg = 0x68444, 885*d9db07f0SSricharan R .shift = 0, 886*d9db07f0SSricharan R .width = 4, 887*d9db07f0SSricharan R .clkr = { 888*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 889*d9db07f0SSricharan R .name = "nss_port5_tx_div_clk_src", 890*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 891*d9db07f0SSricharan R &nss_port5_tx_clk_src.clkr.hw }, 892*d9db07f0SSricharan R .num_parents = 1, 893*d9db07f0SSricharan R .ops = &clk_regmap_div_ops, 894*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 895*d9db07f0SSricharan R }, 896*d9db07f0SSricharan R }, 897*d9db07f0SSricharan R }; 898*d9db07f0SSricharan R 899*d9db07f0SSricharan R static const struct freq_tbl ftbl_apss_axi_clk_src[] = { 900*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 901*d9db07f0SSricharan R F(100000000, P_GPLL0_DIV2, 4, 0, 0), 902*d9db07f0SSricharan R F(200000000, P_GPLL0, 4, 0, 0), 903*d9db07f0SSricharan R F(308570000, P_GPLL6, 3.5, 0, 0), 904*d9db07f0SSricharan R F(400000000, P_GPLL0, 2, 0, 0), 905*d9db07f0SSricharan R F(533000000, P_GPLL0, 1.5, 0, 0), 906*d9db07f0SSricharan R { } 907*d9db07f0SSricharan R }; 908*d9db07f0SSricharan R 909*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll6_ubi32_gpll0_div2[] = { 910*d9db07f0SSricharan R { .fw_name = "xo" }, 911*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 912*d9db07f0SSricharan R { .hw = &gpll6.clkr.hw }, 913*d9db07f0SSricharan R { .hw = &ubi32_pll.clkr.hw }, 914*d9db07f0SSricharan R { .hw = &gpll0_out_main_div2.hw }, 915*d9db07f0SSricharan R }; 916*d9db07f0SSricharan R 917*d9db07f0SSricharan R static const struct parent_map 918*d9db07f0SSricharan R gcc_xo_gpll0_gpll6_ubi32_gpll0_div2_map[] = { 919*d9db07f0SSricharan R { P_XO, 0 }, 920*d9db07f0SSricharan R { P_GPLL0, 1 }, 921*d9db07f0SSricharan R { P_GPLL6, 2 }, 922*d9db07f0SSricharan R { P_UBI32_PLL, 3 }, 923*d9db07f0SSricharan R { P_GPLL0_DIV2, 6 }, 924*d9db07f0SSricharan R }; 925*d9db07f0SSricharan R 926*d9db07f0SSricharan R static struct clk_rcg2 apss_axi_clk_src = { 927*d9db07f0SSricharan R .cmd_rcgr = 0x38048, 928*d9db07f0SSricharan R .freq_tbl = ftbl_apss_axi_clk_src, 929*d9db07f0SSricharan R .hid_width = 5, 930*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll6_ubi32_gpll0_div2_map, 931*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 932*d9db07f0SSricharan R .name = "apss_axi_clk_src", 933*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll6_ubi32_gpll0_div2, 934*d9db07f0SSricharan R .num_parents = 5, 935*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 936*d9db07f0SSricharan R }, 937*d9db07f0SSricharan R }; 938*d9db07f0SSricharan R 939*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_crypto_clk_src[] = { 940*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 941*d9db07f0SSricharan R F(300000000, P_NSS_CRYPTO_PLL, 2, 0, 0), 942*d9db07f0SSricharan R { } 943*d9db07f0SSricharan R }; 944*d9db07f0SSricharan R 945*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_nss_crypto_pll_gpll0[] = { 946*d9db07f0SSricharan R { .fw_name = "xo" }, 947*d9db07f0SSricharan R { .hw = &nss_crypto_pll.clkr.hw }, 948*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 949*d9db07f0SSricharan R }; 950*d9db07f0SSricharan R 951*d9db07f0SSricharan R static const struct parent_map gcc_xo_nss_crypto_pll_gpll0_map[] = { 952*d9db07f0SSricharan R { P_XO, 0 }, 953*d9db07f0SSricharan R { P_NSS_CRYPTO_PLL, 1 }, 954*d9db07f0SSricharan R { P_GPLL0, 2 }, 955*d9db07f0SSricharan R }; 956*d9db07f0SSricharan R 957*d9db07f0SSricharan R static struct clk_rcg2 nss_crypto_clk_src = { 958*d9db07f0SSricharan R .cmd_rcgr = 0x68144, 959*d9db07f0SSricharan R .freq_tbl = ftbl_nss_crypto_clk_src, 960*d9db07f0SSricharan R .mnd_width = 16, 961*d9db07f0SSricharan R .hid_width = 5, 962*d9db07f0SSricharan R .parent_map = gcc_xo_nss_crypto_pll_gpll0_map, 963*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 964*d9db07f0SSricharan R .name = "nss_crypto_clk_src", 965*d9db07f0SSricharan R .parent_data = gcc_xo_nss_crypto_pll_gpll0, 966*d9db07f0SSricharan R .num_parents = 3, 967*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 968*d9db07f0SSricharan R }, 969*d9db07f0SSricharan R }; 970*d9db07f0SSricharan R 971*d9db07f0SSricharan R static struct clk_regmap_div nss_port1_rx_div_clk_src = { 972*d9db07f0SSricharan R .reg = 0x68400, 973*d9db07f0SSricharan R .shift = 0, 974*d9db07f0SSricharan R .width = 4, 975*d9db07f0SSricharan R .clkr = { 976*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 977*d9db07f0SSricharan R .name = "nss_port1_rx_div_clk_src", 978*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 979*d9db07f0SSricharan R &nss_port1_rx_clk_src.clkr.hw }, 980*d9db07f0SSricharan R .num_parents = 1, 981*d9db07f0SSricharan R .ops = &clk_regmap_div_ops, 982*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 983*d9db07f0SSricharan R }, 984*d9db07f0SSricharan R }, 985*d9db07f0SSricharan R }; 986*d9db07f0SSricharan R 987*d9db07f0SSricharan R static struct clk_regmap_div nss_port1_tx_div_clk_src = { 988*d9db07f0SSricharan R .reg = 0x68404, 989*d9db07f0SSricharan R .shift = 0, 990*d9db07f0SSricharan R .width = 4, 991*d9db07f0SSricharan R .clkr = { 992*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 993*d9db07f0SSricharan R .name = "nss_port1_tx_div_clk_src", 994*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 995*d9db07f0SSricharan R &nss_port1_tx_clk_src.clkr.hw }, 996*d9db07f0SSricharan R .num_parents = 1, 997*d9db07f0SSricharan R .ops = &clk_regmap_div_ops, 998*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 999*d9db07f0SSricharan R }, 1000*d9db07f0SSricharan R }, 1001*d9db07f0SSricharan R }; 1002*d9db07f0SSricharan R 1003*d9db07f0SSricharan R static struct clk_regmap_div nss_port2_rx_div_clk_src = { 1004*d9db07f0SSricharan R .reg = 0x68410, 1005*d9db07f0SSricharan R .shift = 0, 1006*d9db07f0SSricharan R .width = 4, 1007*d9db07f0SSricharan R .clkr = { 1008*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1009*d9db07f0SSricharan R .name = "nss_port2_rx_div_clk_src", 1010*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 1011*d9db07f0SSricharan R &nss_port2_rx_clk_src.clkr.hw }, 1012*d9db07f0SSricharan R .num_parents = 1, 1013*d9db07f0SSricharan R .ops = &clk_regmap_div_ops, 1014*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1015*d9db07f0SSricharan R }, 1016*d9db07f0SSricharan R }, 1017*d9db07f0SSricharan R }; 1018*d9db07f0SSricharan R 1019*d9db07f0SSricharan R static struct clk_regmap_div nss_port2_tx_div_clk_src = { 1020*d9db07f0SSricharan R .reg = 0x68414, 1021*d9db07f0SSricharan R .shift = 0, 1022*d9db07f0SSricharan R .width = 4, 1023*d9db07f0SSricharan R .clkr = { 1024*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1025*d9db07f0SSricharan R .name = "nss_port2_tx_div_clk_src", 1026*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 1027*d9db07f0SSricharan R &nss_port2_tx_clk_src.clkr.hw }, 1028*d9db07f0SSricharan R .num_parents = 1, 1029*d9db07f0SSricharan R .ops = &clk_regmap_div_ops, 1030*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1031*d9db07f0SSricharan R }, 1032*d9db07f0SSricharan R }, 1033*d9db07f0SSricharan R }; 1034*d9db07f0SSricharan R 1035*d9db07f0SSricharan R static struct clk_regmap_div nss_port3_rx_div_clk_src = { 1036*d9db07f0SSricharan R .reg = 0x68420, 1037*d9db07f0SSricharan R .shift = 0, 1038*d9db07f0SSricharan R .width = 4, 1039*d9db07f0SSricharan R .clkr = { 1040*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1041*d9db07f0SSricharan R .name = "nss_port3_rx_div_clk_src", 1042*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 1043*d9db07f0SSricharan R &nss_port3_rx_clk_src.clkr.hw }, 1044*d9db07f0SSricharan R .num_parents = 1, 1045*d9db07f0SSricharan R .ops = &clk_regmap_div_ops, 1046*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1047*d9db07f0SSricharan R }, 1048*d9db07f0SSricharan R }, 1049*d9db07f0SSricharan R }; 1050*d9db07f0SSricharan R 1051*d9db07f0SSricharan R static struct clk_regmap_div nss_port3_tx_div_clk_src = { 1052*d9db07f0SSricharan R .reg = 0x68424, 1053*d9db07f0SSricharan R .shift = 0, 1054*d9db07f0SSricharan R .width = 4, 1055*d9db07f0SSricharan R .clkr = { 1056*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1057*d9db07f0SSricharan R .name = "nss_port3_tx_div_clk_src", 1058*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 1059*d9db07f0SSricharan R &nss_port3_tx_clk_src.clkr.hw }, 1060*d9db07f0SSricharan R .num_parents = 1, 1061*d9db07f0SSricharan R .ops = &clk_regmap_div_ops, 1062*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1063*d9db07f0SSricharan R }, 1064*d9db07f0SSricharan R }, 1065*d9db07f0SSricharan R }; 1066*d9db07f0SSricharan R 1067*d9db07f0SSricharan R static struct clk_regmap_div nss_port4_rx_div_clk_src = { 1068*d9db07f0SSricharan R .reg = 0x68430, 1069*d9db07f0SSricharan R .shift = 0, 1070*d9db07f0SSricharan R .width = 4, 1071*d9db07f0SSricharan R .clkr = { 1072*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1073*d9db07f0SSricharan R .name = "nss_port4_rx_div_clk_src", 1074*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 1075*d9db07f0SSricharan R &nss_port4_rx_clk_src.clkr.hw }, 1076*d9db07f0SSricharan R .num_parents = 1, 1077*d9db07f0SSricharan R .ops = &clk_regmap_div_ops, 1078*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1079*d9db07f0SSricharan R }, 1080*d9db07f0SSricharan R }, 1081*d9db07f0SSricharan R }; 1082*d9db07f0SSricharan R 1083*d9db07f0SSricharan R static struct clk_regmap_div nss_port4_tx_div_clk_src = { 1084*d9db07f0SSricharan R .reg = 0x68434, 1085*d9db07f0SSricharan R .shift = 0, 1086*d9db07f0SSricharan R .width = 4, 1087*d9db07f0SSricharan R .clkr = { 1088*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1089*d9db07f0SSricharan R .name = "nss_port4_tx_div_clk_src", 1090*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 1091*d9db07f0SSricharan R &nss_port4_tx_clk_src.clkr.hw }, 1092*d9db07f0SSricharan R .num_parents = 1, 1093*d9db07f0SSricharan R .ops = &clk_regmap_div_ops, 1094*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1095*d9db07f0SSricharan R }, 1096*d9db07f0SSricharan R }, 1097*d9db07f0SSricharan R }; 1098*d9db07f0SSricharan R 1099*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_ubi_clk_src[] = { 1100*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 1101*d9db07f0SSricharan R F(149760000, P_UBI32_PLL, 10, 0, 0), 1102*d9db07f0SSricharan R F(187200000, P_UBI32_PLL, 8, 0, 0), 1103*d9db07f0SSricharan R F(249600000, P_UBI32_PLL, 6, 0, 0), 1104*d9db07f0SSricharan R F(374400000, P_UBI32_PLL, 4, 0, 0), 1105*d9db07f0SSricharan R F(748800000, P_UBI32_PLL, 2, 0, 0), 1106*d9db07f0SSricharan R F(1497600000, P_UBI32_PLL, 1, 0, 0), 1107*d9db07f0SSricharan R { } 1108*d9db07f0SSricharan R }; 1109*d9db07f0SSricharan R 1110*d9db07f0SSricharan R static const struct clk_parent_data 1111*d9db07f0SSricharan R gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6[] = { 1112*d9db07f0SSricharan R { .fw_name = "xo" }, 1113*d9db07f0SSricharan R { .hw = &ubi32_pll.clkr.hw }, 1114*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 1115*d9db07f0SSricharan R { .hw = &gpll2.clkr.hw }, 1116*d9db07f0SSricharan R { .hw = &gpll4.clkr.hw }, 1117*d9db07f0SSricharan R { .hw = &gpll6.clkr.hw }, 1118*d9db07f0SSricharan R }; 1119*d9db07f0SSricharan R 1120*d9db07f0SSricharan R static const struct parent_map gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map[] = { 1121*d9db07f0SSricharan R { P_XO, 0 }, 1122*d9db07f0SSricharan R { P_UBI32_PLL, 1 }, 1123*d9db07f0SSricharan R { P_GPLL0, 2 }, 1124*d9db07f0SSricharan R { P_GPLL2, 3 }, 1125*d9db07f0SSricharan R { P_GPLL4, 4 }, 1126*d9db07f0SSricharan R { P_GPLL6, 5 }, 1127*d9db07f0SSricharan R }; 1128*d9db07f0SSricharan R 1129*d9db07f0SSricharan R static struct clk_rcg2 nss_ubi0_clk_src = { 1130*d9db07f0SSricharan R .cmd_rcgr = 0x68104, 1131*d9db07f0SSricharan R .freq_tbl = ftbl_nss_ubi_clk_src, 1132*d9db07f0SSricharan R .hid_width = 5, 1133*d9db07f0SSricharan R .parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map, 1134*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1135*d9db07f0SSricharan R .name = "nss_ubi0_clk_src", 1136*d9db07f0SSricharan R .parent_data = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6, 1137*d9db07f0SSricharan R .num_parents = 6, 1138*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1139*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1140*d9db07f0SSricharan R }, 1141*d9db07f0SSricharan R }; 1142*d9db07f0SSricharan R 1143*d9db07f0SSricharan R static const struct freq_tbl ftbl_adss_pwm_clk_src[] = { 1144*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 1145*d9db07f0SSricharan R F(100000000, P_GPLL0, 8, 0, 0), 1146*d9db07f0SSricharan R { } 1147*d9db07f0SSricharan R }; 1148*d9db07f0SSricharan R 1149*d9db07f0SSricharan R static struct clk_rcg2 adss_pwm_clk_src = { 1150*d9db07f0SSricharan R .cmd_rcgr = 0x1c008, 1151*d9db07f0SSricharan R .freq_tbl = ftbl_adss_pwm_clk_src, 1152*d9db07f0SSricharan R .hid_width = 5, 1153*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_map, 1154*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1155*d9db07f0SSricharan R .name = "adss_pwm_clk_src", 1156*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0, 1157*d9db07f0SSricharan R .num_parents = 2, 1158*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1159*d9db07f0SSricharan R }, 1160*d9db07f0SSricharan R }; 1161*d9db07f0SSricharan R 1162*d9db07f0SSricharan R static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src[] = { 1163*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 1164*d9db07f0SSricharan R F(25000000, P_GPLL0_DIV2, 16, 0, 0), 1165*d9db07f0SSricharan R F(50000000, P_GPLL0, 16, 0, 0), 1166*d9db07f0SSricharan R { } 1167*d9db07f0SSricharan R }; 1168*d9db07f0SSricharan R 1169*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = { 1170*d9db07f0SSricharan R .cmd_rcgr = 0x0200c, 1171*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src, 1172*d9db07f0SSricharan R .hid_width = 5, 1173*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1174*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1175*d9db07f0SSricharan R .name = "blsp1_qup1_i2c_apps_clk_src", 1176*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1177*d9db07f0SSricharan R .num_parents = 3, 1178*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1179*d9db07f0SSricharan R }, 1180*d9db07f0SSricharan R }; 1181*d9db07f0SSricharan R 1182*d9db07f0SSricharan R static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src[] = { 1183*d9db07f0SSricharan R F(960000, P_XO, 10, 2, 5), 1184*d9db07f0SSricharan R F(4800000, P_XO, 5, 0, 0), 1185*d9db07f0SSricharan R F(9600000, P_XO, 2, 4, 5), 1186*d9db07f0SSricharan R F(12500000, P_GPLL0_DIV2, 16, 1, 2), 1187*d9db07f0SSricharan R F(16000000, P_GPLL0, 10, 1, 5), 1188*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 1189*d9db07f0SSricharan R F(25000000, P_GPLL0, 16, 1, 2), 1190*d9db07f0SSricharan R F(50000000, P_GPLL0, 16, 0, 0), 1191*d9db07f0SSricharan R { } 1192*d9db07f0SSricharan R }; 1193*d9db07f0SSricharan R 1194*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = { 1195*d9db07f0SSricharan R .cmd_rcgr = 0x02024, 1196*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src, 1197*d9db07f0SSricharan R .mnd_width = 8, 1198*d9db07f0SSricharan R .hid_width = 5, 1199*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1200*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1201*d9db07f0SSricharan R .name = "blsp1_qup1_spi_apps_clk_src", 1202*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1203*d9db07f0SSricharan R .num_parents = 3, 1204*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1205*d9db07f0SSricharan R }, 1206*d9db07f0SSricharan R }; 1207*d9db07f0SSricharan R 1208*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = { 1209*d9db07f0SSricharan R .cmd_rcgr = 0x03000, 1210*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src, 1211*d9db07f0SSricharan R .hid_width = 5, 1212*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1213*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1214*d9db07f0SSricharan R .name = "blsp1_qup2_i2c_apps_clk_src", 1215*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1216*d9db07f0SSricharan R .num_parents = 3, 1217*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1218*d9db07f0SSricharan R }, 1219*d9db07f0SSricharan R }; 1220*d9db07f0SSricharan R 1221*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = { 1222*d9db07f0SSricharan R .cmd_rcgr = 0x03014, 1223*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src, 1224*d9db07f0SSricharan R .mnd_width = 8, 1225*d9db07f0SSricharan R .hid_width = 5, 1226*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1227*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1228*d9db07f0SSricharan R .name = "blsp1_qup2_spi_apps_clk_src", 1229*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1230*d9db07f0SSricharan R .num_parents = 3, 1231*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1232*d9db07f0SSricharan R }, 1233*d9db07f0SSricharan R }; 1234*d9db07f0SSricharan R 1235*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = { 1236*d9db07f0SSricharan R .cmd_rcgr = 0x04000, 1237*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src, 1238*d9db07f0SSricharan R .hid_width = 5, 1239*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1240*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1241*d9db07f0SSricharan R .name = "blsp1_qup3_i2c_apps_clk_src", 1242*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1243*d9db07f0SSricharan R .num_parents = 3, 1244*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1245*d9db07f0SSricharan R }, 1246*d9db07f0SSricharan R }; 1247*d9db07f0SSricharan R 1248*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = { 1249*d9db07f0SSricharan R .cmd_rcgr = 0x04014, 1250*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src, 1251*d9db07f0SSricharan R .mnd_width = 8, 1252*d9db07f0SSricharan R .hid_width = 5, 1253*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1254*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1255*d9db07f0SSricharan R .name = "blsp1_qup3_spi_apps_clk_src", 1256*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1257*d9db07f0SSricharan R .num_parents = 3, 1258*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1259*d9db07f0SSricharan R }, 1260*d9db07f0SSricharan R }; 1261*d9db07f0SSricharan R 1262*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = { 1263*d9db07f0SSricharan R .cmd_rcgr = 0x05000, 1264*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src, 1265*d9db07f0SSricharan R .hid_width = 5, 1266*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1267*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1268*d9db07f0SSricharan R .name = "blsp1_qup4_i2c_apps_clk_src", 1269*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1270*d9db07f0SSricharan R .num_parents = 3, 1271*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1272*d9db07f0SSricharan R }, 1273*d9db07f0SSricharan R }; 1274*d9db07f0SSricharan R 1275*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = { 1276*d9db07f0SSricharan R .cmd_rcgr = 0x05014, 1277*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src, 1278*d9db07f0SSricharan R .mnd_width = 8, 1279*d9db07f0SSricharan R .hid_width = 5, 1280*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1281*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1282*d9db07f0SSricharan R .name = "blsp1_qup4_spi_apps_clk_src", 1283*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1284*d9db07f0SSricharan R .num_parents = 3, 1285*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1286*d9db07f0SSricharan R }, 1287*d9db07f0SSricharan R }; 1288*d9db07f0SSricharan R 1289*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = { 1290*d9db07f0SSricharan R .cmd_rcgr = 0x06000, 1291*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src, 1292*d9db07f0SSricharan R .hid_width = 5, 1293*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1294*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1295*d9db07f0SSricharan R .name = "blsp1_qup5_i2c_apps_clk_src", 1296*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1297*d9db07f0SSricharan R .num_parents = 3, 1298*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1299*d9db07f0SSricharan R }, 1300*d9db07f0SSricharan R }; 1301*d9db07f0SSricharan R 1302*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = { 1303*d9db07f0SSricharan R .cmd_rcgr = 0x06014, 1304*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src, 1305*d9db07f0SSricharan R .mnd_width = 8, 1306*d9db07f0SSricharan R .hid_width = 5, 1307*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1308*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1309*d9db07f0SSricharan R .name = "blsp1_qup5_spi_apps_clk_src", 1310*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1311*d9db07f0SSricharan R .num_parents = 3, 1312*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1313*d9db07f0SSricharan R }, 1314*d9db07f0SSricharan R }; 1315*d9db07f0SSricharan R 1316*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = { 1317*d9db07f0SSricharan R .cmd_rcgr = 0x07000, 1318*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src, 1319*d9db07f0SSricharan R .hid_width = 5, 1320*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1321*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1322*d9db07f0SSricharan R .name = "blsp1_qup6_i2c_apps_clk_src", 1323*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1324*d9db07f0SSricharan R .num_parents = 3, 1325*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1326*d9db07f0SSricharan R }, 1327*d9db07f0SSricharan R }; 1328*d9db07f0SSricharan R 1329*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = { 1330*d9db07f0SSricharan R .cmd_rcgr = 0x07014, 1331*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src, 1332*d9db07f0SSricharan R .mnd_width = 8, 1333*d9db07f0SSricharan R .hid_width = 5, 1334*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1335*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1336*d9db07f0SSricharan R .name = "blsp1_qup6_spi_apps_clk_src", 1337*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1338*d9db07f0SSricharan R .num_parents = 3, 1339*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1340*d9db07f0SSricharan R }, 1341*d9db07f0SSricharan R }; 1342*d9db07f0SSricharan R 1343*d9db07f0SSricharan R static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src[] = { 1344*d9db07f0SSricharan R F(3686400, P_GPLL0_DIV2, 1, 144, 15625), 1345*d9db07f0SSricharan R F(7372800, P_GPLL0_DIV2, 1, 288, 15625), 1346*d9db07f0SSricharan R F(14745600, P_GPLL0_DIV2, 1, 576, 15625), 1347*d9db07f0SSricharan R F(16000000, P_GPLL0_DIV2, 5, 1, 5), 1348*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 1349*d9db07f0SSricharan R F(24000000, P_GPLL0, 1, 3, 100), 1350*d9db07f0SSricharan R F(25000000, P_GPLL0, 16, 1, 2), 1351*d9db07f0SSricharan R F(32000000, P_GPLL0, 1, 1, 25), 1352*d9db07f0SSricharan R F(40000000, P_GPLL0, 1, 1, 20), 1353*d9db07f0SSricharan R F(46400000, P_GPLL0, 1, 29, 500), 1354*d9db07f0SSricharan R F(48000000, P_GPLL0, 1, 3, 50), 1355*d9db07f0SSricharan R F(51200000, P_GPLL0, 1, 8, 125), 1356*d9db07f0SSricharan R F(56000000, P_GPLL0, 1, 7, 100), 1357*d9db07f0SSricharan R F(58982400, P_GPLL0, 1, 1152, 15625), 1358*d9db07f0SSricharan R F(60000000, P_GPLL0, 1, 3, 40), 1359*d9db07f0SSricharan R F(64000000, P_GPLL0, 12.5, 1, 1), 1360*d9db07f0SSricharan R { } 1361*d9db07f0SSricharan R }; 1362*d9db07f0SSricharan R 1363*d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart1_apps_clk_src = { 1364*d9db07f0SSricharan R .cmd_rcgr = 0x02044, 1365*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_uart_apps_clk_src, 1366*d9db07f0SSricharan R .mnd_width = 16, 1367*d9db07f0SSricharan R .hid_width = 5, 1368*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1369*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1370*d9db07f0SSricharan R .name = "blsp1_uart1_apps_clk_src", 1371*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1372*d9db07f0SSricharan R .num_parents = 3, 1373*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1374*d9db07f0SSricharan R }, 1375*d9db07f0SSricharan R }; 1376*d9db07f0SSricharan R 1377*d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart2_apps_clk_src = { 1378*d9db07f0SSricharan R .cmd_rcgr = 0x03034, 1379*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_uart_apps_clk_src, 1380*d9db07f0SSricharan R .mnd_width = 16, 1381*d9db07f0SSricharan R .hid_width = 5, 1382*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1383*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1384*d9db07f0SSricharan R .name = "blsp1_uart2_apps_clk_src", 1385*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1386*d9db07f0SSricharan R .num_parents = 3, 1387*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1388*d9db07f0SSricharan R }, 1389*d9db07f0SSricharan R }; 1390*d9db07f0SSricharan R 1391*d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart3_apps_clk_src = { 1392*d9db07f0SSricharan R .cmd_rcgr = 0x04034, 1393*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_uart_apps_clk_src, 1394*d9db07f0SSricharan R .mnd_width = 16, 1395*d9db07f0SSricharan R .hid_width = 5, 1396*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1397*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1398*d9db07f0SSricharan R .name = "blsp1_uart3_apps_clk_src", 1399*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1400*d9db07f0SSricharan R .num_parents = 3, 1401*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1402*d9db07f0SSricharan R }, 1403*d9db07f0SSricharan R }; 1404*d9db07f0SSricharan R 1405*d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart4_apps_clk_src = { 1406*d9db07f0SSricharan R .cmd_rcgr = 0x05034, 1407*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_uart_apps_clk_src, 1408*d9db07f0SSricharan R .mnd_width = 16, 1409*d9db07f0SSricharan R .hid_width = 5, 1410*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1411*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1412*d9db07f0SSricharan R .name = "blsp1_uart4_apps_clk_src", 1413*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1414*d9db07f0SSricharan R .num_parents = 3, 1415*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1416*d9db07f0SSricharan R }, 1417*d9db07f0SSricharan R }; 1418*d9db07f0SSricharan R 1419*d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart5_apps_clk_src = { 1420*d9db07f0SSricharan R .cmd_rcgr = 0x06034, 1421*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_uart_apps_clk_src, 1422*d9db07f0SSricharan R .mnd_width = 16, 1423*d9db07f0SSricharan R .hid_width = 5, 1424*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1425*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1426*d9db07f0SSricharan R .name = "blsp1_uart5_apps_clk_src", 1427*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1428*d9db07f0SSricharan R .num_parents = 3, 1429*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1430*d9db07f0SSricharan R }, 1431*d9db07f0SSricharan R }; 1432*d9db07f0SSricharan R 1433*d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart6_apps_clk_src = { 1434*d9db07f0SSricharan R .cmd_rcgr = 0x07034, 1435*d9db07f0SSricharan R .freq_tbl = ftbl_blsp1_uart_apps_clk_src, 1436*d9db07f0SSricharan R .mnd_width = 16, 1437*d9db07f0SSricharan R .hid_width = 5, 1438*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1439*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1440*d9db07f0SSricharan R .name = "blsp1_uart6_apps_clk_src", 1441*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1442*d9db07f0SSricharan R .num_parents = 3, 1443*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1444*d9db07f0SSricharan R }, 1445*d9db07f0SSricharan R }; 1446*d9db07f0SSricharan R 1447*d9db07f0SSricharan R static const struct freq_tbl ftbl_crypto_clk_src[] = { 1448*d9db07f0SSricharan R F(40000000, P_GPLL0_DIV2, 10, 0, 0), 1449*d9db07f0SSricharan R F(80000000, P_GPLL0, 10, 0, 0), 1450*d9db07f0SSricharan R F(100000000, P_GPLL0, 8, 0, 0), 1451*d9db07f0SSricharan R F(160000000, P_GPLL0, 5, 0, 0), 1452*d9db07f0SSricharan R { } 1453*d9db07f0SSricharan R }; 1454*d9db07f0SSricharan R 1455*d9db07f0SSricharan R static struct clk_rcg2 crypto_clk_src = { 1456*d9db07f0SSricharan R .cmd_rcgr = 0x16004, 1457*d9db07f0SSricharan R .freq_tbl = ftbl_crypto_clk_src, 1458*d9db07f0SSricharan R .hid_width = 5, 1459*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1460*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1461*d9db07f0SSricharan R .name = "crypto_clk_src", 1462*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1463*d9db07f0SSricharan R .num_parents = 3, 1464*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1465*d9db07f0SSricharan R }, 1466*d9db07f0SSricharan R }; 1467*d9db07f0SSricharan R 1468*d9db07f0SSricharan R static const struct freq_tbl ftbl_gp_clk_src[] = { 1469*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 1470*d9db07f0SSricharan R F(50000000, P_GPLL0_DIV2, 8, 0, 0), 1471*d9db07f0SSricharan R F(100000000, P_GPLL0, 8, 0, 0), 1472*d9db07f0SSricharan R F(200000000, P_GPLL0, 4, 0, 0), 1473*d9db07f0SSricharan R F(266666666, P_GPLL0, 3, 0, 0), 1474*d9db07f0SSricharan R { } 1475*d9db07f0SSricharan R }; 1476*d9db07f0SSricharan R 1477*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_sleep_clk[] = { 1478*d9db07f0SSricharan R { .fw_name = "xo" }, 1479*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 1480*d9db07f0SSricharan R { .hw = &gpll6.clkr.hw }, 1481*d9db07f0SSricharan R { .hw = &gpll0_out_main_div2.hw }, 1482*d9db07f0SSricharan R { .fw_name = "sleep_clk" }, 1483*d9db07f0SSricharan R }; 1484*d9db07f0SSricharan R 1485*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map[] = { 1486*d9db07f0SSricharan R { P_XO, 0 }, 1487*d9db07f0SSricharan R { P_GPLL0, 1 }, 1488*d9db07f0SSricharan R { P_GPLL6, 2 }, 1489*d9db07f0SSricharan R { P_GPLL0_DIV2, 4 }, 1490*d9db07f0SSricharan R { P_SLEEP_CLK, 6 }, 1491*d9db07f0SSricharan R }; 1492*d9db07f0SSricharan R 1493*d9db07f0SSricharan R static struct clk_rcg2 gp1_clk_src = { 1494*d9db07f0SSricharan R .cmd_rcgr = 0x08004, 1495*d9db07f0SSricharan R .freq_tbl = ftbl_gp_clk_src, 1496*d9db07f0SSricharan R .mnd_width = 8, 1497*d9db07f0SSricharan R .hid_width = 5, 1498*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map, 1499*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1500*d9db07f0SSricharan R .name = "gp1_clk_src", 1501*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk, 1502*d9db07f0SSricharan R .num_parents = 5, 1503*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1504*d9db07f0SSricharan R }, 1505*d9db07f0SSricharan R }; 1506*d9db07f0SSricharan R 1507*d9db07f0SSricharan R static struct clk_rcg2 gp2_clk_src = { 1508*d9db07f0SSricharan R .cmd_rcgr = 0x09004, 1509*d9db07f0SSricharan R .freq_tbl = ftbl_gp_clk_src, 1510*d9db07f0SSricharan R .mnd_width = 8, 1511*d9db07f0SSricharan R .hid_width = 5, 1512*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map, 1513*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1514*d9db07f0SSricharan R .name = "gp2_clk_src", 1515*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk, 1516*d9db07f0SSricharan R .num_parents = 5, 1517*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1518*d9db07f0SSricharan R }, 1519*d9db07f0SSricharan R }; 1520*d9db07f0SSricharan R 1521*d9db07f0SSricharan R static struct clk_rcg2 gp3_clk_src = { 1522*d9db07f0SSricharan R .cmd_rcgr = 0x0a004, 1523*d9db07f0SSricharan R .freq_tbl = ftbl_gp_clk_src, 1524*d9db07f0SSricharan R .mnd_width = 8, 1525*d9db07f0SSricharan R .hid_width = 5, 1526*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map, 1527*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1528*d9db07f0SSricharan R .name = "gp3_clk_src", 1529*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk, 1530*d9db07f0SSricharan R .num_parents = 5, 1531*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1532*d9db07f0SSricharan R }, 1533*d9db07f0SSricharan R }; 1534*d9db07f0SSricharan R 1535*d9db07f0SSricharan R static struct clk_fixed_factor nss_ppe_cdiv_clk_src = { 1536*d9db07f0SSricharan R .mult = 1, 1537*d9db07f0SSricharan R .div = 4, 1538*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1539*d9db07f0SSricharan R .name = "nss_ppe_cdiv_clk_src", 1540*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 1541*d9db07f0SSricharan R &nss_ppe_clk_src.clkr.hw }, 1542*d9db07f0SSricharan R .num_parents = 1, 1543*d9db07f0SSricharan R .ops = &clk_fixed_factor_ops, 1544*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1545*d9db07f0SSricharan R }, 1546*d9db07f0SSricharan R }; 1547*d9db07f0SSricharan R 1548*d9db07f0SSricharan R static struct clk_regmap_div nss_ubi0_div_clk_src = { 1549*d9db07f0SSricharan R .reg = 0x68118, 1550*d9db07f0SSricharan R .shift = 0, 1551*d9db07f0SSricharan R .width = 4, 1552*d9db07f0SSricharan R .clkr = { 1553*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1554*d9db07f0SSricharan R .name = "nss_ubi0_div_clk_src", 1555*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 1556*d9db07f0SSricharan R &nss_ubi0_clk_src.clkr.hw }, 1557*d9db07f0SSricharan R .num_parents = 1, 1558*d9db07f0SSricharan R .ops = &clk_regmap_div_ro_ops, 1559*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1560*d9db07f0SSricharan R }, 1561*d9db07f0SSricharan R }, 1562*d9db07f0SSricharan R }; 1563*d9db07f0SSricharan R 1564*d9db07f0SSricharan R static const struct freq_tbl ftbl_pcie_aux_clk_src[] = { 1565*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 1566*d9db07f0SSricharan R }; 1567*d9db07f0SSricharan R 1568*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_core_pi_sleep_clk[] = { 1569*d9db07f0SSricharan R { .fw_name = "xo" }, 1570*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 1571*d9db07f0SSricharan R { .fw_name = "sleep_clk" }, 1572*d9db07f0SSricharan R }; 1573*d9db07f0SSricharan R 1574*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_core_pi_sleep_clk_map[] = { 1575*d9db07f0SSricharan R { P_XO, 0 }, 1576*d9db07f0SSricharan R { P_GPLL0, 2 }, 1577*d9db07f0SSricharan R { P_PI_SLEEP, 6 }, 1578*d9db07f0SSricharan R }; 1579*d9db07f0SSricharan R 1580*d9db07f0SSricharan R static struct clk_rcg2 pcie0_aux_clk_src = { 1581*d9db07f0SSricharan R .cmd_rcgr = 0x75024, 1582*d9db07f0SSricharan R .freq_tbl = ftbl_pcie_aux_clk_src, 1583*d9db07f0SSricharan R .mnd_width = 16, 1584*d9db07f0SSricharan R .hid_width = 5, 1585*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map, 1586*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1587*d9db07f0SSricharan R .name = "pcie0_aux_clk_src", 1588*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_core_pi_sleep_clk, 1589*d9db07f0SSricharan R .num_parents = 3, 1590*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1591*d9db07f0SSricharan R }, 1592*d9db07f0SSricharan R }; 1593*d9db07f0SSricharan R 1594*d9db07f0SSricharan R static const struct clk_parent_data gcc_pcie20_phy0_pipe_clk_xo[] = { 1595*d9db07f0SSricharan R { .fw_name = "pcie20_phy0_pipe_clk" }, 1596*d9db07f0SSricharan R { .fw_name = "xo" }, 1597*d9db07f0SSricharan R }; 1598*d9db07f0SSricharan R 1599*d9db07f0SSricharan R static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = { 1600*d9db07f0SSricharan R { P_PCIE20_PHY0_PIPE, 0 }, 1601*d9db07f0SSricharan R { P_XO, 2 }, 1602*d9db07f0SSricharan R }; 1603*d9db07f0SSricharan R 1604*d9db07f0SSricharan R static struct clk_regmap_mux pcie0_pipe_clk_src = { 1605*d9db07f0SSricharan R .reg = 0x7501c, 1606*d9db07f0SSricharan R .shift = 8, 1607*d9db07f0SSricharan R .width = 2, 1608*d9db07f0SSricharan R .parent_map = gcc_pcie20_phy0_pipe_clk_xo_map, 1609*d9db07f0SSricharan R .clkr = { 1610*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1611*d9db07f0SSricharan R .name = "pcie0_pipe_clk_src", 1612*d9db07f0SSricharan R .parent_data = gcc_pcie20_phy0_pipe_clk_xo, 1613*d9db07f0SSricharan R .num_parents = 2, 1614*d9db07f0SSricharan R .ops = &clk_regmap_mux_closest_ops, 1615*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1616*d9db07f0SSricharan R }, 1617*d9db07f0SSricharan R }, 1618*d9db07f0SSricharan R }; 1619*d9db07f0SSricharan R 1620*d9db07f0SSricharan R static const struct freq_tbl ftbl_sdcc_apps_clk_src[] = { 1621*d9db07f0SSricharan R F(144000, P_XO, 16, 12, 125), 1622*d9db07f0SSricharan R F(400000, P_XO, 12, 1, 5), 1623*d9db07f0SSricharan R F(24000000, P_GPLL2, 12, 1, 4), 1624*d9db07f0SSricharan R F(48000000, P_GPLL2, 12, 1, 2), 1625*d9db07f0SSricharan R F(96000000, P_GPLL2, 12, 0, 0), 1626*d9db07f0SSricharan R F(177777778, P_GPLL0, 4.5, 0, 0), 1627*d9db07f0SSricharan R F(192000000, P_GPLL2, 6, 0, 0), 1628*d9db07f0SSricharan R F(384000000, P_GPLL2, 3, 0, 0), 1629*d9db07f0SSricharan R { } 1630*d9db07f0SSricharan R }; 1631*d9db07f0SSricharan R 1632*d9db07f0SSricharan R static const struct clk_parent_data 1633*d9db07f0SSricharan R gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = { 1634*d9db07f0SSricharan R { .fw_name = "xo" }, 1635*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 1636*d9db07f0SSricharan R { .hw = &gpll2.clkr.hw }, 1637*d9db07f0SSricharan R { .hw = &gpll0_out_main_div2.hw }, 1638*d9db07f0SSricharan R }; 1639*d9db07f0SSricharan R 1640*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = { 1641*d9db07f0SSricharan R { P_XO, 0 }, 1642*d9db07f0SSricharan R { P_GPLL0, 1 }, 1643*d9db07f0SSricharan R { P_GPLL2, 2 }, 1644*d9db07f0SSricharan R { P_GPLL0_DIV2, 4 }, 1645*d9db07f0SSricharan R }; 1646*d9db07f0SSricharan R 1647*d9db07f0SSricharan R static struct clk_rcg2 sdcc1_apps_clk_src = { 1648*d9db07f0SSricharan R .cmd_rcgr = 0x42004, 1649*d9db07f0SSricharan R .freq_tbl = ftbl_sdcc_apps_clk_src, 1650*d9db07f0SSricharan R .mnd_width = 8, 1651*d9db07f0SSricharan R .hid_width = 5, 1652*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map, 1653*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1654*d9db07f0SSricharan R .name = "sdcc1_apps_clk_src", 1655*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll2_gpll0_out_main_div2, 1656*d9db07f0SSricharan R .num_parents = 4, 1657*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1658*d9db07f0SSricharan R }, 1659*d9db07f0SSricharan R }; 1660*d9db07f0SSricharan R 1661*d9db07f0SSricharan R static const struct freq_tbl ftbl_usb_aux_clk_src[] = { 1662*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 1663*d9db07f0SSricharan R { } 1664*d9db07f0SSricharan R }; 1665*d9db07f0SSricharan R 1666*d9db07f0SSricharan R static struct clk_rcg2 usb0_aux_clk_src = { 1667*d9db07f0SSricharan R .cmd_rcgr = 0x3e05c, 1668*d9db07f0SSricharan R .freq_tbl = ftbl_usb_aux_clk_src, 1669*d9db07f0SSricharan R .mnd_width = 16, 1670*d9db07f0SSricharan R .hid_width = 5, 1671*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map, 1672*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1673*d9db07f0SSricharan R .name = "usb0_aux_clk_src", 1674*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_core_pi_sleep_clk, 1675*d9db07f0SSricharan R .num_parents = 3, 1676*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1677*d9db07f0SSricharan R }, 1678*d9db07f0SSricharan R }; 1679*d9db07f0SSricharan R 1680*d9db07f0SSricharan R static const struct freq_tbl ftbl_usb_mock_utmi_clk_src[] = { 1681*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 1682*d9db07f0SSricharan R F(60000000, P_GPLL6, 6, 1, 3), 1683*d9db07f0SSricharan R { } 1684*d9db07f0SSricharan R }; 1685*d9db07f0SSricharan R 1686*d9db07f0SSricharan R static const struct clk_parent_data 1687*d9db07f0SSricharan R gcc_xo_gpll6_gpll0_gpll0_out_main_div2[] = { 1688*d9db07f0SSricharan R { .fw_name = "xo" }, 1689*d9db07f0SSricharan R { .hw = &gpll6.clkr.hw }, 1690*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 1691*d9db07f0SSricharan R { .hw = &gpll0_out_main_div2.hw }, 1692*d9db07f0SSricharan R }; 1693*d9db07f0SSricharan R 1694*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map[] = { 1695*d9db07f0SSricharan R { P_XO, 0 }, 1696*d9db07f0SSricharan R { P_GPLL6, 1 }, 1697*d9db07f0SSricharan R { P_GPLL0, 3 }, 1698*d9db07f0SSricharan R { P_GPLL0_DIV2, 4 }, 1699*d9db07f0SSricharan R }; 1700*d9db07f0SSricharan R 1701*d9db07f0SSricharan R static struct clk_rcg2 usb0_mock_utmi_clk_src = { 1702*d9db07f0SSricharan R .cmd_rcgr = 0x3e020, 1703*d9db07f0SSricharan R .freq_tbl = ftbl_usb_mock_utmi_clk_src, 1704*d9db07f0SSricharan R .mnd_width = 8, 1705*d9db07f0SSricharan R .hid_width = 5, 1706*d9db07f0SSricharan R .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map, 1707*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1708*d9db07f0SSricharan R .name = "usb0_mock_utmi_clk_src", 1709*d9db07f0SSricharan R .parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2, 1710*d9db07f0SSricharan R .num_parents = 4, 1711*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1712*d9db07f0SSricharan R }, 1713*d9db07f0SSricharan R }; 1714*d9db07f0SSricharan R 1715*d9db07f0SSricharan R static const struct clk_parent_data gcc_usb3phy_0_cc_pipe_clk_xo[] = { 1716*d9db07f0SSricharan R { .fw_name = "usb3phy_0_cc_pipe_clk" }, 1717*d9db07f0SSricharan R { .fw_name = "xo" }, 1718*d9db07f0SSricharan R }; 1719*d9db07f0SSricharan R 1720*d9db07f0SSricharan R static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = { 1721*d9db07f0SSricharan R { P_USB3PHY_0_PIPE, 0 }, 1722*d9db07f0SSricharan R { P_XO, 2 }, 1723*d9db07f0SSricharan R }; 1724*d9db07f0SSricharan R 1725*d9db07f0SSricharan R static struct clk_regmap_mux usb0_pipe_clk_src = { 1726*d9db07f0SSricharan R .reg = 0x3e048, 1727*d9db07f0SSricharan R .shift = 8, 1728*d9db07f0SSricharan R .width = 2, 1729*d9db07f0SSricharan R .parent_map = gcc_usb3phy_0_cc_pipe_clk_xo_map, 1730*d9db07f0SSricharan R .clkr = { 1731*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1732*d9db07f0SSricharan R .name = "usb0_pipe_clk_src", 1733*d9db07f0SSricharan R .parent_data = gcc_usb3phy_0_cc_pipe_clk_xo, 1734*d9db07f0SSricharan R .num_parents = 2, 1735*d9db07f0SSricharan R .ops = &clk_regmap_mux_closest_ops, 1736*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1737*d9db07f0SSricharan R }, 1738*d9db07f0SSricharan R }, 1739*d9db07f0SSricharan R }; 1740*d9db07f0SSricharan R 1741*d9db07f0SSricharan R static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = { 1742*d9db07f0SSricharan R F(80000000, P_GPLL0_DIV2, 5, 0, 0), 1743*d9db07f0SSricharan R F(160000000, P_GPLL0, 5, 0, 0), 1744*d9db07f0SSricharan R F(216000000, P_GPLL6, 5, 0, 0), 1745*d9db07f0SSricharan R F(308570000, P_GPLL6, 3.5, 0, 0), 1746*d9db07f0SSricharan R }; 1747*d9db07f0SSricharan R 1748*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_div2[] = { 1749*d9db07f0SSricharan R { .fw_name = "xo"}, 1750*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 1751*d9db07f0SSricharan R { .hw = &gpll6.clkr.hw }, 1752*d9db07f0SSricharan R { .hw = &gpll0_out_main_div2.hw }, 1753*d9db07f0SSricharan R }; 1754*d9db07f0SSricharan R 1755*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_div2_map[] = { 1756*d9db07f0SSricharan R { P_XO, 0 }, 1757*d9db07f0SSricharan R { P_GPLL0, 1 }, 1758*d9db07f0SSricharan R { P_GPLL6, 2 }, 1759*d9db07f0SSricharan R { P_GPLL0_DIV2, 4 }, 1760*d9db07f0SSricharan R }; 1761*d9db07f0SSricharan R 1762*d9db07f0SSricharan R static struct clk_rcg2 sdcc1_ice_core_clk_src = { 1763*d9db07f0SSricharan R .cmd_rcgr = 0x5d000, 1764*d9db07f0SSricharan R .freq_tbl = ftbl_sdcc_ice_core_clk_src, 1765*d9db07f0SSricharan R .mnd_width = 8, 1766*d9db07f0SSricharan R .hid_width = 5, 1767*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll6_gpll0_div2_map, 1768*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1769*d9db07f0SSricharan R .name = "sdcc1_ice_core_clk_src", 1770*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll6_gpll0_div2, 1771*d9db07f0SSricharan R .num_parents = 4, 1772*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1773*d9db07f0SSricharan R }, 1774*d9db07f0SSricharan R }; 1775*d9db07f0SSricharan R 1776*d9db07f0SSricharan R static const struct freq_tbl ftbl_qdss_stm_clk_src[] = { 1777*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 1778*d9db07f0SSricharan R F(50000000, P_GPLL0_DIV2, 8, 0, 0), 1779*d9db07f0SSricharan R F(100000000, P_GPLL0, 8, 0, 0), 1780*d9db07f0SSricharan R F(200000000, P_GPLL0, 4, 0, 0), 1781*d9db07f0SSricharan R { } 1782*d9db07f0SSricharan R }; 1783*d9db07f0SSricharan R 1784*d9db07f0SSricharan R static struct clk_rcg2 qdss_stm_clk_src = { 1785*d9db07f0SSricharan R .cmd_rcgr = 0x2902C, 1786*d9db07f0SSricharan R .freq_tbl = ftbl_qdss_stm_clk_src, 1787*d9db07f0SSricharan R .hid_width = 5, 1788*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map, 1789*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1790*d9db07f0SSricharan R .name = "qdss_stm_clk_src", 1791*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll0_out_main_div2, 1792*d9db07f0SSricharan R .num_parents = 3, 1793*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1794*d9db07f0SSricharan R }, 1795*d9db07f0SSricharan R }; 1796*d9db07f0SSricharan R 1797*d9db07f0SSricharan R static const struct freq_tbl ftbl_qdss_traceclkin_clk_src[] = { 1798*d9db07f0SSricharan R F(80000000, P_GPLL0_DIV2, 5, 0, 0), 1799*d9db07f0SSricharan R F(160000000, P_GPLL0, 5, 0, 0), 1800*d9db07f0SSricharan R F(300000000, P_GPLL4, 4, 0, 0), 1801*d9db07f0SSricharan R { } 1802*d9db07f0SSricharan R }; 1803*d9db07f0SSricharan R 1804*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll0_div2[] = { 1805*d9db07f0SSricharan R { .fw_name = "xo" }, 1806*d9db07f0SSricharan R { .hw = &gpll4.clkr.hw }, 1807*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 1808*d9db07f0SSricharan R { .hw = &gpll0_out_main_div2.hw }, 1809*d9db07f0SSricharan R }; 1810*d9db07f0SSricharan R 1811*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll4_gpll0_gpll0_div2_map[] = { 1812*d9db07f0SSricharan R { P_XO, 0 }, 1813*d9db07f0SSricharan R { P_GPLL4, 1 }, 1814*d9db07f0SSricharan R { P_GPLL0, 2 }, 1815*d9db07f0SSricharan R { P_GPLL0_DIV2, 4 }, 1816*d9db07f0SSricharan R }; 1817*d9db07f0SSricharan R 1818*d9db07f0SSricharan R static struct clk_rcg2 qdss_traceclkin_clk_src = { 1819*d9db07f0SSricharan R .cmd_rcgr = 0x29048, 1820*d9db07f0SSricharan R .freq_tbl = ftbl_qdss_traceclkin_clk_src, 1821*d9db07f0SSricharan R .hid_width = 5, 1822*d9db07f0SSricharan R .parent_map = gcc_xo_gpll4_gpll0_gpll0_div2_map, 1823*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1824*d9db07f0SSricharan R .name = "qdss_traceclkin_clk_src", 1825*d9db07f0SSricharan R .parent_data = gcc_xo_gpll4_gpll0_gpll0_div2, 1826*d9db07f0SSricharan R .num_parents = 4, 1827*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1828*d9db07f0SSricharan R }, 1829*d9db07f0SSricharan R }; 1830*d9db07f0SSricharan R 1831*d9db07f0SSricharan R static struct clk_rcg2 usb1_mock_utmi_clk_src = { 1832*d9db07f0SSricharan R .cmd_rcgr = 0x3f020, 1833*d9db07f0SSricharan R .freq_tbl = ftbl_usb_mock_utmi_clk_src, 1834*d9db07f0SSricharan R .mnd_width = 8, 1835*d9db07f0SSricharan R .hid_width = 5, 1836*d9db07f0SSricharan R .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map, 1837*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1838*d9db07f0SSricharan R .name = "usb1_mock_utmi_clk_src", 1839*d9db07f0SSricharan R .parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2, 1840*d9db07f0SSricharan R .num_parents = 4, 1841*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1842*d9db07f0SSricharan R }, 1843*d9db07f0SSricharan R }; 1844*d9db07f0SSricharan R 1845*d9db07f0SSricharan R static struct clk_branch gcc_adss_pwm_clk = { 1846*d9db07f0SSricharan R .halt_reg = 0x1c020, 1847*d9db07f0SSricharan R .clkr = { 1848*d9db07f0SSricharan R .enable_reg = 0x1c020, 1849*d9db07f0SSricharan R .enable_mask = BIT(0), 1850*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1851*d9db07f0SSricharan R .name = "gcc_adss_pwm_clk", 1852*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 1853*d9db07f0SSricharan R &adss_pwm_clk_src.clkr.hw }, 1854*d9db07f0SSricharan R .num_parents = 1, 1855*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1856*d9db07f0SSricharan R .ops = &clk_branch2_ops, 1857*d9db07f0SSricharan R }, 1858*d9db07f0SSricharan R }, 1859*d9db07f0SSricharan R }; 1860*d9db07f0SSricharan R 1861*d9db07f0SSricharan R static struct clk_branch gcc_apss_ahb_clk = { 1862*d9db07f0SSricharan R .halt_reg = 0x4601c, 1863*d9db07f0SSricharan R .halt_check = BRANCH_HALT_VOTED, 1864*d9db07f0SSricharan R .clkr = { 1865*d9db07f0SSricharan R .enable_reg = 0x0b004, 1866*d9db07f0SSricharan R .enable_mask = BIT(14), 1867*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1868*d9db07f0SSricharan R .name = "gcc_apss_ahb_clk", 1869*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 1870*d9db07f0SSricharan R &apss_ahb_postdiv_clk_src.clkr.hw }, 1871*d9db07f0SSricharan R .num_parents = 1, 1872*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1873*d9db07f0SSricharan R .ops = &clk_branch2_ops, 1874*d9db07f0SSricharan R }, 1875*d9db07f0SSricharan R }, 1876*d9db07f0SSricharan R }; 1877*d9db07f0SSricharan R 1878*d9db07f0SSricharan R static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src[] = { 1879*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 1880*d9db07f0SSricharan R F(50000000, P_GPLL0_DIV2, 8, 0, 0), 1881*d9db07f0SSricharan R F(100000000, P_GPLL0, 8, 0, 0), 1882*d9db07f0SSricharan R F(133333333, P_GPLL0, 6, 0, 0), 1883*d9db07f0SSricharan R F(160000000, P_GPLL0, 5, 0, 0), 1884*d9db07f0SSricharan R F(200000000, P_GPLL0, 4, 0, 0), 1885*d9db07f0SSricharan R F(266666667, P_GPLL0, 3, 0, 0), 1886*d9db07f0SSricharan R { } 1887*d9db07f0SSricharan R }; 1888*d9db07f0SSricharan R 1889*d9db07f0SSricharan R static struct clk_rcg2 system_noc_bfdcd_clk_src = { 1890*d9db07f0SSricharan R .cmd_rcgr = 0x26004, 1891*d9db07f0SSricharan R .freq_tbl = ftbl_system_noc_bfdcd_clk_src, 1892*d9db07f0SSricharan R .hid_width = 5, 1893*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map, 1894*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1895*d9db07f0SSricharan R .name = "system_noc_bfdcd_clk_src", 1896*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2, 1897*d9db07f0SSricharan R .num_parents = 4, 1898*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1899*d9db07f0SSricharan R }, 1900*d9db07f0SSricharan R }; 1901*d9db07f0SSricharan R 1902*d9db07f0SSricharan R static const struct freq_tbl ftbl_ubi32_mem_noc_bfdcd_clk_src[] = { 1903*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 1904*d9db07f0SSricharan R F(307670000, P_BIAS_PLL_NSS_NOC, 1.5, 0, 0), 1905*d9db07f0SSricharan R F(533333333, P_GPLL0, 1.5, 0, 0), 1906*d9db07f0SSricharan R { } 1907*d9db07f0SSricharan R }; 1908*d9db07f0SSricharan R 1909*d9db07f0SSricharan R static const struct clk_parent_data 1910*d9db07f0SSricharan R gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk[] = { 1911*d9db07f0SSricharan R { .fw_name = "xo" }, 1912*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 1913*d9db07f0SSricharan R { .hw = &gpll2.clkr.hw }, 1914*d9db07f0SSricharan R { .fw_name = "bias_pll_nss_noc_clk" }, 1915*d9db07f0SSricharan R }; 1916*d9db07f0SSricharan R 1917*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk_map[] = { 1918*d9db07f0SSricharan R { P_XO, 0 }, 1919*d9db07f0SSricharan R { P_GPLL0, 1 }, 1920*d9db07f0SSricharan R { P_GPLL2, 3 }, 1921*d9db07f0SSricharan R { P_BIAS_PLL_NSS_NOC, 4 }, 1922*d9db07f0SSricharan R }; 1923*d9db07f0SSricharan R 1924*d9db07f0SSricharan R static struct clk_rcg2 ubi32_mem_noc_bfdcd_clk_src = { 1925*d9db07f0SSricharan R .cmd_rcgr = 0x68088, 1926*d9db07f0SSricharan R .freq_tbl = ftbl_ubi32_mem_noc_bfdcd_clk_src, 1927*d9db07f0SSricharan R .hid_width = 5, 1928*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk_map, 1929*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 1930*d9db07f0SSricharan R .name = "ubi32_mem_noc_bfdcd_clk_src", 1931*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk, 1932*d9db07f0SSricharan R .num_parents = 4, 1933*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 1934*d9db07f0SSricharan R }, 1935*d9db07f0SSricharan R }; 1936*d9db07f0SSricharan R 1937*d9db07f0SSricharan R static struct clk_branch gcc_apss_axi_clk = { 1938*d9db07f0SSricharan R .halt_reg = 0x46020, 1939*d9db07f0SSricharan R .halt_check = BRANCH_HALT_VOTED, 1940*d9db07f0SSricharan R .clkr = { 1941*d9db07f0SSricharan R .enable_reg = 0x0b004, 1942*d9db07f0SSricharan R .enable_mask = BIT(13), 1943*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1944*d9db07f0SSricharan R .name = "gcc_apss_axi_clk", 1945*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 1946*d9db07f0SSricharan R &apss_axi_clk_src.clkr.hw }, 1947*d9db07f0SSricharan R .num_parents = 1, 1948*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1949*d9db07f0SSricharan R .ops = &clk_branch2_ops, 1950*d9db07f0SSricharan R }, 1951*d9db07f0SSricharan R }, 1952*d9db07f0SSricharan R }; 1953*d9db07f0SSricharan R 1954*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_ahb_clk = { 1955*d9db07f0SSricharan R .halt_reg = 0x01008, 1956*d9db07f0SSricharan R .halt_check = BRANCH_HALT_VOTED, 1957*d9db07f0SSricharan R .clkr = { 1958*d9db07f0SSricharan R .enable_reg = 0x0b004, 1959*d9db07f0SSricharan R .enable_mask = BIT(10), 1960*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1961*d9db07f0SSricharan R .name = "gcc_blsp1_ahb_clk", 1962*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 1963*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 1964*d9db07f0SSricharan R .num_parents = 1, 1965*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1966*d9db07f0SSricharan R .ops = &clk_branch2_ops, 1967*d9db07f0SSricharan R }, 1968*d9db07f0SSricharan R }, 1969*d9db07f0SSricharan R }; 1970*d9db07f0SSricharan R 1971*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = { 1972*d9db07f0SSricharan R .halt_reg = 0x02008, 1973*d9db07f0SSricharan R .clkr = { 1974*d9db07f0SSricharan R .enable_reg = 0x02008, 1975*d9db07f0SSricharan R .enable_mask = BIT(0), 1976*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1977*d9db07f0SSricharan R .name = "gcc_blsp1_qup1_i2c_apps_clk", 1978*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 1979*d9db07f0SSricharan R &blsp1_qup1_i2c_apps_clk_src.clkr.hw }, 1980*d9db07f0SSricharan R .num_parents = 1, 1981*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1982*d9db07f0SSricharan R .ops = &clk_branch2_ops, 1983*d9db07f0SSricharan R }, 1984*d9db07f0SSricharan R }, 1985*d9db07f0SSricharan R }; 1986*d9db07f0SSricharan R 1987*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = { 1988*d9db07f0SSricharan R .halt_reg = 0x02004, 1989*d9db07f0SSricharan R .clkr = { 1990*d9db07f0SSricharan R .enable_reg = 0x02004, 1991*d9db07f0SSricharan R .enable_mask = BIT(0), 1992*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 1993*d9db07f0SSricharan R .name = "gcc_blsp1_qup1_spi_apps_clk", 1994*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 1995*d9db07f0SSricharan R &blsp1_qup1_spi_apps_clk_src.clkr.hw }, 1996*d9db07f0SSricharan R .num_parents = 1, 1997*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 1998*d9db07f0SSricharan R .ops = &clk_branch2_ops, 1999*d9db07f0SSricharan R }, 2000*d9db07f0SSricharan R }, 2001*d9db07f0SSricharan R }; 2002*d9db07f0SSricharan R 2003*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = { 2004*d9db07f0SSricharan R .halt_reg = 0x03010, 2005*d9db07f0SSricharan R .clkr = { 2006*d9db07f0SSricharan R .enable_reg = 0x03010, 2007*d9db07f0SSricharan R .enable_mask = BIT(0), 2008*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2009*d9db07f0SSricharan R .name = "gcc_blsp1_qup2_i2c_apps_clk", 2010*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2011*d9db07f0SSricharan R &blsp1_qup2_i2c_apps_clk_src.clkr.hw }, 2012*d9db07f0SSricharan R .num_parents = 1, 2013*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2014*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2015*d9db07f0SSricharan R }, 2016*d9db07f0SSricharan R }, 2017*d9db07f0SSricharan R }; 2018*d9db07f0SSricharan R 2019*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = { 2020*d9db07f0SSricharan R .halt_reg = 0x0300c, 2021*d9db07f0SSricharan R .clkr = { 2022*d9db07f0SSricharan R .enable_reg = 0x0300c, 2023*d9db07f0SSricharan R .enable_mask = BIT(0), 2024*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2025*d9db07f0SSricharan R .name = "gcc_blsp1_qup2_spi_apps_clk", 2026*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2027*d9db07f0SSricharan R &blsp1_qup2_spi_apps_clk_src.clkr.hw }, 2028*d9db07f0SSricharan R .num_parents = 1, 2029*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2030*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2031*d9db07f0SSricharan R }, 2032*d9db07f0SSricharan R }, 2033*d9db07f0SSricharan R }; 2034*d9db07f0SSricharan R 2035*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = { 2036*d9db07f0SSricharan R .halt_reg = 0x04010, 2037*d9db07f0SSricharan R .clkr = { 2038*d9db07f0SSricharan R .enable_reg = 0x04010, 2039*d9db07f0SSricharan R .enable_mask = BIT(0), 2040*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2041*d9db07f0SSricharan R .name = "gcc_blsp1_qup3_i2c_apps_clk", 2042*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2043*d9db07f0SSricharan R &blsp1_qup3_i2c_apps_clk_src.clkr.hw }, 2044*d9db07f0SSricharan R .num_parents = 1, 2045*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2046*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2047*d9db07f0SSricharan R }, 2048*d9db07f0SSricharan R }, 2049*d9db07f0SSricharan R }; 2050*d9db07f0SSricharan R 2051*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = { 2052*d9db07f0SSricharan R .halt_reg = 0x0400c, 2053*d9db07f0SSricharan R .clkr = { 2054*d9db07f0SSricharan R .enable_reg = 0x0400c, 2055*d9db07f0SSricharan R .enable_mask = BIT(0), 2056*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2057*d9db07f0SSricharan R .name = "gcc_blsp1_qup3_spi_apps_clk", 2058*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2059*d9db07f0SSricharan R &blsp1_qup3_spi_apps_clk_src.clkr.hw }, 2060*d9db07f0SSricharan R .num_parents = 1, 2061*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2062*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2063*d9db07f0SSricharan R }, 2064*d9db07f0SSricharan R }, 2065*d9db07f0SSricharan R }; 2066*d9db07f0SSricharan R 2067*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = { 2068*d9db07f0SSricharan R .halt_reg = 0x05010, 2069*d9db07f0SSricharan R .clkr = { 2070*d9db07f0SSricharan R .enable_reg = 0x05010, 2071*d9db07f0SSricharan R .enable_mask = BIT(0), 2072*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2073*d9db07f0SSricharan R .name = "gcc_blsp1_qup4_i2c_apps_clk", 2074*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2075*d9db07f0SSricharan R &blsp1_qup4_i2c_apps_clk_src.clkr.hw }, 2076*d9db07f0SSricharan R .num_parents = 1, 2077*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2078*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2079*d9db07f0SSricharan R }, 2080*d9db07f0SSricharan R }, 2081*d9db07f0SSricharan R }; 2082*d9db07f0SSricharan R 2083*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = { 2084*d9db07f0SSricharan R .halt_reg = 0x0500c, 2085*d9db07f0SSricharan R .clkr = { 2086*d9db07f0SSricharan R .enable_reg = 0x0500c, 2087*d9db07f0SSricharan R .enable_mask = BIT(0), 2088*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2089*d9db07f0SSricharan R .name = "gcc_blsp1_qup4_spi_apps_clk", 2090*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2091*d9db07f0SSricharan R &blsp1_qup4_spi_apps_clk_src.clkr.hw }, 2092*d9db07f0SSricharan R .num_parents = 1, 2093*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2094*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2095*d9db07f0SSricharan R }, 2096*d9db07f0SSricharan R }, 2097*d9db07f0SSricharan R }; 2098*d9db07f0SSricharan R 2099*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = { 2100*d9db07f0SSricharan R .halt_reg = 0x06010, 2101*d9db07f0SSricharan R .clkr = { 2102*d9db07f0SSricharan R .enable_reg = 0x06010, 2103*d9db07f0SSricharan R .enable_mask = BIT(0), 2104*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2105*d9db07f0SSricharan R .name = "gcc_blsp1_qup5_i2c_apps_clk", 2106*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2107*d9db07f0SSricharan R &blsp1_qup5_i2c_apps_clk_src.clkr.hw }, 2108*d9db07f0SSricharan R .num_parents = 1, 2109*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2110*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2111*d9db07f0SSricharan R }, 2112*d9db07f0SSricharan R }, 2113*d9db07f0SSricharan R }; 2114*d9db07f0SSricharan R 2115*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = { 2116*d9db07f0SSricharan R .halt_reg = 0x0600c, 2117*d9db07f0SSricharan R .clkr = { 2118*d9db07f0SSricharan R .enable_reg = 0x0600c, 2119*d9db07f0SSricharan R .enable_mask = BIT(0), 2120*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2121*d9db07f0SSricharan R .name = "gcc_blsp1_qup5_spi_apps_clk", 2122*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2123*d9db07f0SSricharan R &blsp1_qup5_spi_apps_clk_src.clkr.hw }, 2124*d9db07f0SSricharan R .num_parents = 1, 2125*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2126*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2127*d9db07f0SSricharan R }, 2128*d9db07f0SSricharan R }, 2129*d9db07f0SSricharan R }; 2130*d9db07f0SSricharan R 2131*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = { 2132*d9db07f0SSricharan R .halt_reg = 0x0700c, 2133*d9db07f0SSricharan R .clkr = { 2134*d9db07f0SSricharan R .enable_reg = 0x0700c, 2135*d9db07f0SSricharan R .enable_mask = BIT(0), 2136*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2137*d9db07f0SSricharan R .name = "gcc_blsp1_qup6_spi_apps_clk", 2138*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2139*d9db07f0SSricharan R &blsp1_qup6_spi_apps_clk_src.clkr.hw }, 2140*d9db07f0SSricharan R .num_parents = 1, 2141*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2142*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2143*d9db07f0SSricharan R }, 2144*d9db07f0SSricharan R }, 2145*d9db07f0SSricharan R }; 2146*d9db07f0SSricharan R 2147*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart1_apps_clk = { 2148*d9db07f0SSricharan R .halt_reg = 0x0203c, 2149*d9db07f0SSricharan R .clkr = { 2150*d9db07f0SSricharan R .enable_reg = 0x0203c, 2151*d9db07f0SSricharan R .enable_mask = BIT(0), 2152*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2153*d9db07f0SSricharan R .name = "gcc_blsp1_uart1_apps_clk", 2154*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2155*d9db07f0SSricharan R &blsp1_uart1_apps_clk_src.clkr.hw }, 2156*d9db07f0SSricharan R .num_parents = 1, 2157*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2158*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2159*d9db07f0SSricharan R }, 2160*d9db07f0SSricharan R }, 2161*d9db07f0SSricharan R }; 2162*d9db07f0SSricharan R 2163*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart2_apps_clk = { 2164*d9db07f0SSricharan R .halt_reg = 0x0302c, 2165*d9db07f0SSricharan R .clkr = { 2166*d9db07f0SSricharan R .enable_reg = 0x0302c, 2167*d9db07f0SSricharan R .enable_mask = BIT(0), 2168*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2169*d9db07f0SSricharan R .name = "gcc_blsp1_uart2_apps_clk", 2170*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2171*d9db07f0SSricharan R &blsp1_uart2_apps_clk_src.clkr.hw }, 2172*d9db07f0SSricharan R .num_parents = 1, 2173*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2174*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2175*d9db07f0SSricharan R }, 2176*d9db07f0SSricharan R }, 2177*d9db07f0SSricharan R }; 2178*d9db07f0SSricharan R 2179*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart3_apps_clk = { 2180*d9db07f0SSricharan R .halt_reg = 0x0402c, 2181*d9db07f0SSricharan R .clkr = { 2182*d9db07f0SSricharan R .enable_reg = 0x0402c, 2183*d9db07f0SSricharan R .enable_mask = BIT(0), 2184*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2185*d9db07f0SSricharan R .name = "gcc_blsp1_uart3_apps_clk", 2186*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2187*d9db07f0SSricharan R &blsp1_uart3_apps_clk_src.clkr.hw }, 2188*d9db07f0SSricharan R .num_parents = 1, 2189*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2190*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2191*d9db07f0SSricharan R }, 2192*d9db07f0SSricharan R }, 2193*d9db07f0SSricharan R }; 2194*d9db07f0SSricharan R 2195*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart4_apps_clk = { 2196*d9db07f0SSricharan R .halt_reg = 0x0502c, 2197*d9db07f0SSricharan R .clkr = { 2198*d9db07f0SSricharan R .enable_reg = 0x0502c, 2199*d9db07f0SSricharan R .enable_mask = BIT(0), 2200*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2201*d9db07f0SSricharan R .name = "gcc_blsp1_uart4_apps_clk", 2202*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2203*d9db07f0SSricharan R &blsp1_uart4_apps_clk_src.clkr.hw }, 2204*d9db07f0SSricharan R .num_parents = 1, 2205*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2206*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2207*d9db07f0SSricharan R }, 2208*d9db07f0SSricharan R }, 2209*d9db07f0SSricharan R }; 2210*d9db07f0SSricharan R 2211*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart5_apps_clk = { 2212*d9db07f0SSricharan R .halt_reg = 0x0602c, 2213*d9db07f0SSricharan R .clkr = { 2214*d9db07f0SSricharan R .enable_reg = 0x0602c, 2215*d9db07f0SSricharan R .enable_mask = BIT(0), 2216*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2217*d9db07f0SSricharan R .name = "gcc_blsp1_uart5_apps_clk", 2218*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2219*d9db07f0SSricharan R &blsp1_uart5_apps_clk_src.clkr.hw }, 2220*d9db07f0SSricharan R .num_parents = 1, 2221*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2222*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2223*d9db07f0SSricharan R }, 2224*d9db07f0SSricharan R }, 2225*d9db07f0SSricharan R }; 2226*d9db07f0SSricharan R 2227*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart6_apps_clk = { 2228*d9db07f0SSricharan R .halt_reg = 0x0702c, 2229*d9db07f0SSricharan R .clkr = { 2230*d9db07f0SSricharan R .enable_reg = 0x0702c, 2231*d9db07f0SSricharan R .enable_mask = BIT(0), 2232*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2233*d9db07f0SSricharan R .name = "gcc_blsp1_uart6_apps_clk", 2234*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2235*d9db07f0SSricharan R &blsp1_uart6_apps_clk_src.clkr.hw }, 2236*d9db07f0SSricharan R .num_parents = 1, 2237*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2238*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2239*d9db07f0SSricharan R }, 2240*d9db07f0SSricharan R }, 2241*d9db07f0SSricharan R }; 2242*d9db07f0SSricharan R 2243*d9db07f0SSricharan R static struct clk_branch gcc_crypto_ahb_clk = { 2244*d9db07f0SSricharan R .halt_reg = 0x16024, 2245*d9db07f0SSricharan R .halt_check = BRANCH_HALT_VOTED, 2246*d9db07f0SSricharan R .clkr = { 2247*d9db07f0SSricharan R .enable_reg = 0x0b004, 2248*d9db07f0SSricharan R .enable_mask = BIT(0), 2249*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2250*d9db07f0SSricharan R .name = "gcc_crypto_ahb_clk", 2251*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2252*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 2253*d9db07f0SSricharan R .num_parents = 1, 2254*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2255*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2256*d9db07f0SSricharan R }, 2257*d9db07f0SSricharan R }, 2258*d9db07f0SSricharan R }; 2259*d9db07f0SSricharan R 2260*d9db07f0SSricharan R static struct clk_branch gcc_crypto_axi_clk = { 2261*d9db07f0SSricharan R .halt_reg = 0x16020, 2262*d9db07f0SSricharan R .halt_check = BRANCH_HALT_VOTED, 2263*d9db07f0SSricharan R .clkr = { 2264*d9db07f0SSricharan R .enable_reg = 0x0b004, 2265*d9db07f0SSricharan R .enable_mask = BIT(1), 2266*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2267*d9db07f0SSricharan R .name = "gcc_crypto_axi_clk", 2268*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2269*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 2270*d9db07f0SSricharan R .num_parents = 1, 2271*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2272*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2273*d9db07f0SSricharan R }, 2274*d9db07f0SSricharan R }, 2275*d9db07f0SSricharan R }; 2276*d9db07f0SSricharan R 2277*d9db07f0SSricharan R static struct clk_branch gcc_crypto_clk = { 2278*d9db07f0SSricharan R .halt_reg = 0x1601c, 2279*d9db07f0SSricharan R .halt_check = BRANCH_HALT_VOTED, 2280*d9db07f0SSricharan R .clkr = { 2281*d9db07f0SSricharan R .enable_reg = 0x0b004, 2282*d9db07f0SSricharan R .enable_mask = BIT(2), 2283*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2284*d9db07f0SSricharan R .name = "gcc_crypto_clk", 2285*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2286*d9db07f0SSricharan R &crypto_clk_src.clkr.hw }, 2287*d9db07f0SSricharan R .num_parents = 1, 2288*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2289*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2290*d9db07f0SSricharan R }, 2291*d9db07f0SSricharan R }, 2292*d9db07f0SSricharan R }; 2293*d9db07f0SSricharan R 2294*d9db07f0SSricharan R static struct clk_fixed_factor gpll6_out_main_div2 = { 2295*d9db07f0SSricharan R .mult = 1, 2296*d9db07f0SSricharan R .div = 2, 2297*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2298*d9db07f0SSricharan R .name = "gpll6_out_main_div2", 2299*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2300*d9db07f0SSricharan R &gpll6_main.clkr.hw }, 2301*d9db07f0SSricharan R .num_parents = 1, 2302*d9db07f0SSricharan R .ops = &clk_fixed_factor_ops, 2303*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2304*d9db07f0SSricharan R }, 2305*d9db07f0SSricharan R }; 2306*d9db07f0SSricharan R 2307*d9db07f0SSricharan R static struct clk_branch gcc_xo_clk = { 2308*d9db07f0SSricharan R .halt_reg = 0x30030, 2309*d9db07f0SSricharan R .clkr = { 2310*d9db07f0SSricharan R .enable_reg = 0x30030, 2311*d9db07f0SSricharan R .enable_mask = BIT(0), 2312*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2313*d9db07f0SSricharan R .name = "gcc_xo_clk", 2314*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2315*d9db07f0SSricharan R &gcc_xo_clk_src.clkr.hw }, 2316*d9db07f0SSricharan R .num_parents = 1, 2317*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2318*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2319*d9db07f0SSricharan R }, 2320*d9db07f0SSricharan R }, 2321*d9db07f0SSricharan R }; 2322*d9db07f0SSricharan R 2323*d9db07f0SSricharan R static struct clk_branch gcc_gp1_clk = { 2324*d9db07f0SSricharan R .halt_reg = 0x08000, 2325*d9db07f0SSricharan R .clkr = { 2326*d9db07f0SSricharan R .enable_reg = 0x08000, 2327*d9db07f0SSricharan R .enable_mask = BIT(0), 2328*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2329*d9db07f0SSricharan R .name = "gcc_gp1_clk", 2330*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2331*d9db07f0SSricharan R &gp1_clk_src.clkr.hw }, 2332*d9db07f0SSricharan R .num_parents = 1, 2333*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2334*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2335*d9db07f0SSricharan R }, 2336*d9db07f0SSricharan R }, 2337*d9db07f0SSricharan R }; 2338*d9db07f0SSricharan R 2339*d9db07f0SSricharan R static struct clk_branch gcc_gp2_clk = { 2340*d9db07f0SSricharan R .halt_reg = 0x09000, 2341*d9db07f0SSricharan R .clkr = { 2342*d9db07f0SSricharan R .enable_reg = 0x09000, 2343*d9db07f0SSricharan R .enable_mask = BIT(0), 2344*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2345*d9db07f0SSricharan R .name = "gcc_gp2_clk", 2346*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2347*d9db07f0SSricharan R &gp2_clk_src.clkr.hw }, 2348*d9db07f0SSricharan R .num_parents = 1, 2349*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2350*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2351*d9db07f0SSricharan R }, 2352*d9db07f0SSricharan R }, 2353*d9db07f0SSricharan R }; 2354*d9db07f0SSricharan R 2355*d9db07f0SSricharan R static struct clk_branch gcc_gp3_clk = { 2356*d9db07f0SSricharan R .halt_reg = 0x0a000, 2357*d9db07f0SSricharan R .clkr = { 2358*d9db07f0SSricharan R .enable_reg = 0x0a000, 2359*d9db07f0SSricharan R .enable_mask = BIT(0), 2360*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2361*d9db07f0SSricharan R .name = "gcc_gp3_clk", 2362*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2363*d9db07f0SSricharan R &gp3_clk_src.clkr.hw }, 2364*d9db07f0SSricharan R .num_parents = 1, 2365*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2366*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2367*d9db07f0SSricharan R }, 2368*d9db07f0SSricharan R }, 2369*d9db07f0SSricharan R }; 2370*d9db07f0SSricharan R 2371*d9db07f0SSricharan R static struct clk_branch gcc_mdio_ahb_clk = { 2372*d9db07f0SSricharan R .halt_reg = 0x58004, 2373*d9db07f0SSricharan R .clkr = { 2374*d9db07f0SSricharan R .enable_reg = 0x58004, 2375*d9db07f0SSricharan R .enable_mask = BIT(0), 2376*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2377*d9db07f0SSricharan R .name = "gcc_mdio_ahb_clk", 2378*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2379*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 2380*d9db07f0SSricharan R .num_parents = 1, 2381*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2382*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2383*d9db07f0SSricharan R }, 2384*d9db07f0SSricharan R }, 2385*d9db07f0SSricharan R }; 2386*d9db07f0SSricharan R 2387*d9db07f0SSricharan R static struct clk_branch gcc_crypto_ppe_clk = { 2388*d9db07f0SSricharan R .halt_reg = 0x68310, 2389*d9db07f0SSricharan R .clkr = { 2390*d9db07f0SSricharan R .enable_reg = 0x68310, 2391*d9db07f0SSricharan R .enable_mask = BIT(0), 2392*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2393*d9db07f0SSricharan R .name = "gcc_crypto_ppe_clk", 2394*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2395*d9db07f0SSricharan R &nss_ppe_clk_src.clkr.hw }, 2396*d9db07f0SSricharan R .num_parents = 1, 2397*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2398*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2399*d9db07f0SSricharan R }, 2400*d9db07f0SSricharan R }, 2401*d9db07f0SSricharan R }; 2402*d9db07f0SSricharan R 2403*d9db07f0SSricharan R static struct clk_branch gcc_nss_ce_apb_clk = { 2404*d9db07f0SSricharan R .halt_reg = 0x68174, 2405*d9db07f0SSricharan R .clkr = { 2406*d9db07f0SSricharan R .enable_reg = 0x68174, 2407*d9db07f0SSricharan R .enable_mask = BIT(0), 2408*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2409*d9db07f0SSricharan R .name = "gcc_nss_ce_apb_clk", 2410*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2411*d9db07f0SSricharan R &nss_ce_clk_src.clkr.hw }, 2412*d9db07f0SSricharan R .num_parents = 1, 2413*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2414*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2415*d9db07f0SSricharan R }, 2416*d9db07f0SSricharan R }, 2417*d9db07f0SSricharan R }; 2418*d9db07f0SSricharan R 2419*d9db07f0SSricharan R static struct clk_branch gcc_nss_ce_axi_clk = { 2420*d9db07f0SSricharan R .halt_reg = 0x68170, 2421*d9db07f0SSricharan R .clkr = { 2422*d9db07f0SSricharan R .enable_reg = 0x68170, 2423*d9db07f0SSricharan R .enable_mask = BIT(0), 2424*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2425*d9db07f0SSricharan R .name = "gcc_nss_ce_axi_clk", 2426*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2427*d9db07f0SSricharan R &nss_ce_clk_src.clkr.hw }, 2428*d9db07f0SSricharan R .num_parents = 1, 2429*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2430*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2431*d9db07f0SSricharan R }, 2432*d9db07f0SSricharan R }, 2433*d9db07f0SSricharan R }; 2434*d9db07f0SSricharan R 2435*d9db07f0SSricharan R static struct clk_branch gcc_nss_cfg_clk = { 2436*d9db07f0SSricharan R .halt_reg = 0x68160, 2437*d9db07f0SSricharan R .clkr = { 2438*d9db07f0SSricharan R .enable_reg = 0x68160, 2439*d9db07f0SSricharan R .enable_mask = BIT(0), 2440*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2441*d9db07f0SSricharan R .name = "gcc_nss_cfg_clk", 2442*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2443*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 2444*d9db07f0SSricharan R .num_parents = 1, 2445*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2446*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2447*d9db07f0SSricharan R }, 2448*d9db07f0SSricharan R }, 2449*d9db07f0SSricharan R }; 2450*d9db07f0SSricharan R 2451*d9db07f0SSricharan R static struct clk_branch gcc_nss_crypto_clk = { 2452*d9db07f0SSricharan R .halt_reg = 0x68164, 2453*d9db07f0SSricharan R .clkr = { 2454*d9db07f0SSricharan R .enable_reg = 0x68164, 2455*d9db07f0SSricharan R .enable_mask = BIT(0), 2456*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2457*d9db07f0SSricharan R .name = "gcc_nss_crypto_clk", 2458*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2459*d9db07f0SSricharan R &nss_crypto_clk_src.clkr.hw }, 2460*d9db07f0SSricharan R .num_parents = 1, 2461*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2462*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2463*d9db07f0SSricharan R }, 2464*d9db07f0SSricharan R }, 2465*d9db07f0SSricharan R }; 2466*d9db07f0SSricharan R 2467*d9db07f0SSricharan R static struct clk_branch gcc_nss_csr_clk = { 2468*d9db07f0SSricharan R .halt_reg = 0x68318, 2469*d9db07f0SSricharan R .clkr = { 2470*d9db07f0SSricharan R .enable_reg = 0x68318, 2471*d9db07f0SSricharan R .enable_mask = BIT(0), 2472*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2473*d9db07f0SSricharan R .name = "gcc_nss_csr_clk", 2474*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2475*d9db07f0SSricharan R &nss_ce_clk_src.clkr.hw }, 2476*d9db07f0SSricharan R .num_parents = 1, 2477*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2478*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2479*d9db07f0SSricharan R }, 2480*d9db07f0SSricharan R }, 2481*d9db07f0SSricharan R }; 2482*d9db07f0SSricharan R 2483*d9db07f0SSricharan R static struct clk_branch gcc_nss_edma_cfg_clk = { 2484*d9db07f0SSricharan R .halt_reg = 0x6819C, 2485*d9db07f0SSricharan R .clkr = { 2486*d9db07f0SSricharan R .enable_reg = 0x6819C, 2487*d9db07f0SSricharan R .enable_mask = BIT(0), 2488*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2489*d9db07f0SSricharan R .name = "gcc_nss_edma_cfg_clk", 2490*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2491*d9db07f0SSricharan R &nss_ppe_clk_src.clkr.hw }, 2492*d9db07f0SSricharan R .num_parents = 1, 2493*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2494*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2495*d9db07f0SSricharan R }, 2496*d9db07f0SSricharan R }, 2497*d9db07f0SSricharan R }; 2498*d9db07f0SSricharan R 2499*d9db07f0SSricharan R static struct clk_branch gcc_nss_edma_clk = { 2500*d9db07f0SSricharan R .halt_reg = 0x68198, 2501*d9db07f0SSricharan R .clkr = { 2502*d9db07f0SSricharan R .enable_reg = 0x68198, 2503*d9db07f0SSricharan R .enable_mask = BIT(0), 2504*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2505*d9db07f0SSricharan R .name = "gcc_nss_edma_clk", 2506*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2507*d9db07f0SSricharan R &nss_ppe_clk_src.clkr.hw }, 2508*d9db07f0SSricharan R .num_parents = 1, 2509*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2510*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2511*d9db07f0SSricharan R }, 2512*d9db07f0SSricharan R }, 2513*d9db07f0SSricharan R }; 2514*d9db07f0SSricharan R 2515*d9db07f0SSricharan R static struct clk_branch gcc_nss_noc_clk = { 2516*d9db07f0SSricharan R .halt_reg = 0x68168, 2517*d9db07f0SSricharan R .clkr = { 2518*d9db07f0SSricharan R .enable_reg = 0x68168, 2519*d9db07f0SSricharan R .enable_mask = BIT(0), 2520*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2521*d9db07f0SSricharan R .name = "gcc_nss_noc_clk", 2522*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2523*d9db07f0SSricharan R &snoc_nssnoc_bfdcd_clk_src.clkr.hw }, 2524*d9db07f0SSricharan R .num_parents = 1, 2525*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2526*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2527*d9db07f0SSricharan R }, 2528*d9db07f0SSricharan R }, 2529*d9db07f0SSricharan R }; 2530*d9db07f0SSricharan R 2531*d9db07f0SSricharan R static struct clk_branch gcc_ubi0_utcm_clk = { 2532*d9db07f0SSricharan R .halt_reg = 0x2606c, 2533*d9db07f0SSricharan R .clkr = { 2534*d9db07f0SSricharan R .enable_reg = 0x2606c, 2535*d9db07f0SSricharan R .enable_mask = BIT(0), 2536*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2537*d9db07f0SSricharan R .name = "gcc_ubi0_utcm_clk", 2538*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2539*d9db07f0SSricharan R &snoc_nssnoc_bfdcd_clk_src.clkr.hw }, 2540*d9db07f0SSricharan R .num_parents = 1, 2541*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2542*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2543*d9db07f0SSricharan R }, 2544*d9db07f0SSricharan R }, 2545*d9db07f0SSricharan R }; 2546*d9db07f0SSricharan R 2547*d9db07f0SSricharan R static struct clk_branch gcc_snoc_nssnoc_clk = { 2548*d9db07f0SSricharan R .halt_reg = 0x26070, 2549*d9db07f0SSricharan R .clkr = { 2550*d9db07f0SSricharan R .enable_reg = 0x26070, 2551*d9db07f0SSricharan R .enable_mask = BIT(0), 2552*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2553*d9db07f0SSricharan R .name = "gcc_snoc_nssnoc_clk", 2554*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2555*d9db07f0SSricharan R &snoc_nssnoc_bfdcd_clk_src.clkr.hw }, 2556*d9db07f0SSricharan R .num_parents = 1, 2557*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2558*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2559*d9db07f0SSricharan R }, 2560*d9db07f0SSricharan R }, 2561*d9db07f0SSricharan R }; 2562*d9db07f0SSricharan R 2563*d9db07f0SSricharan R static const struct freq_tbl ftbl_wcss_ahb_clk_src[] = { 2564*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 2565*d9db07f0SSricharan R F(133333333, P_GPLL0, 6, 0, 0), 2566*d9db07f0SSricharan R { } 2567*d9db07f0SSricharan R }; 2568*d9db07f0SSricharan R 2569*d9db07f0SSricharan R static const struct freq_tbl ftbl_q6_axi_clk_src[] = { 2570*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 2571*d9db07f0SSricharan R F(400000000, P_GPLL0, 2, 0, 0), 2572*d9db07f0SSricharan R { } 2573*d9db07f0SSricharan R }; 2574*d9db07f0SSricharan R 2575*d9db07f0SSricharan R static struct clk_rcg2 wcss_ahb_clk_src = { 2576*d9db07f0SSricharan R .cmd_rcgr = 0x59020, 2577*d9db07f0SSricharan R .freq_tbl = ftbl_wcss_ahb_clk_src, 2578*d9db07f0SSricharan R .hid_width = 5, 2579*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_map, 2580*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 2581*d9db07f0SSricharan R .name = "wcss_ahb_clk_src", 2582*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0, 2583*d9db07f0SSricharan R .num_parents = 2, 2584*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 2585*d9db07f0SSricharan R }, 2586*d9db07f0SSricharan R }; 2587*d9db07f0SSricharan R 2588*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll4_gpll6[] = { 2589*d9db07f0SSricharan R { .fw_name = "xo" }, 2590*d9db07f0SSricharan R { .hw = &gpll0.clkr.hw }, 2591*d9db07f0SSricharan R { .hw = &gpll2.clkr.hw }, 2592*d9db07f0SSricharan R { .hw = &gpll4.clkr.hw }, 2593*d9db07f0SSricharan R { .hw = &gpll6.clkr.hw }, 2594*d9db07f0SSricharan R }; 2595*d9db07f0SSricharan R 2596*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll2_gpll4_gpll6_map[] = { 2597*d9db07f0SSricharan R { P_XO, 0 }, 2598*d9db07f0SSricharan R { P_GPLL0, 1 }, 2599*d9db07f0SSricharan R { P_GPLL2, 2 }, 2600*d9db07f0SSricharan R { P_GPLL4, 3 }, 2601*d9db07f0SSricharan R { P_GPLL6, 4 }, 2602*d9db07f0SSricharan R }; 2603*d9db07f0SSricharan R 2604*d9db07f0SSricharan R static struct clk_rcg2 q6_axi_clk_src = { 2605*d9db07f0SSricharan R .cmd_rcgr = 0x59120, 2606*d9db07f0SSricharan R .freq_tbl = ftbl_q6_axi_clk_src, 2607*d9db07f0SSricharan R .hid_width = 5, 2608*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_gpll2_gpll4_gpll6_map, 2609*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 2610*d9db07f0SSricharan R .name = "q6_axi_clk_src", 2611*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_gpll2_gpll4_gpll6, 2612*d9db07f0SSricharan R .num_parents = 5, 2613*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 2614*d9db07f0SSricharan R }, 2615*d9db07f0SSricharan R }; 2616*d9db07f0SSricharan R 2617*d9db07f0SSricharan R static const struct freq_tbl ftbl_lpass_core_axim_clk_src[] = { 2618*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 2619*d9db07f0SSricharan R F(100000000, P_GPLL0, 8, 0, 0), 2620*d9db07f0SSricharan R { } 2621*d9db07f0SSricharan R }; 2622*d9db07f0SSricharan R 2623*d9db07f0SSricharan R static struct clk_rcg2 lpass_core_axim_clk_src = { 2624*d9db07f0SSricharan R .cmd_rcgr = 0x1F020, 2625*d9db07f0SSricharan R .freq_tbl = ftbl_lpass_core_axim_clk_src, 2626*d9db07f0SSricharan R .hid_width = 5, 2627*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_map, 2628*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 2629*d9db07f0SSricharan R .name = "lpass_core_axim_clk_src", 2630*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0, 2631*d9db07f0SSricharan R .num_parents = 2, 2632*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 2633*d9db07f0SSricharan R }, 2634*d9db07f0SSricharan R }; 2635*d9db07f0SSricharan R 2636*d9db07f0SSricharan R static const struct freq_tbl ftbl_lpass_snoc_cfg_clk_src[] = { 2637*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 2638*d9db07f0SSricharan R F(266666667, P_GPLL0, 3, 0, 0), 2639*d9db07f0SSricharan R { } 2640*d9db07f0SSricharan R }; 2641*d9db07f0SSricharan R 2642*d9db07f0SSricharan R static struct clk_rcg2 lpass_snoc_cfg_clk_src = { 2643*d9db07f0SSricharan R .cmd_rcgr = 0x1F040, 2644*d9db07f0SSricharan R .freq_tbl = ftbl_lpass_snoc_cfg_clk_src, 2645*d9db07f0SSricharan R .hid_width = 5, 2646*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_map, 2647*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 2648*d9db07f0SSricharan R .name = "lpass_snoc_cfg_clk_src", 2649*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0, 2650*d9db07f0SSricharan R .num_parents = 2, 2651*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 2652*d9db07f0SSricharan R }, 2653*d9db07f0SSricharan R }; 2654*d9db07f0SSricharan R 2655*d9db07f0SSricharan R static const struct freq_tbl ftbl_lpass_q6_axim_clk_src[] = { 2656*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 2657*d9db07f0SSricharan R F(400000000, P_GPLL0, 2, 0, 0), 2658*d9db07f0SSricharan R { } 2659*d9db07f0SSricharan R }; 2660*d9db07f0SSricharan R 2661*d9db07f0SSricharan R static struct clk_rcg2 lpass_q6_axim_clk_src = { 2662*d9db07f0SSricharan R .cmd_rcgr = 0x1F008, 2663*d9db07f0SSricharan R .freq_tbl = ftbl_lpass_q6_axim_clk_src, 2664*d9db07f0SSricharan R .hid_width = 5, 2665*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_map, 2666*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 2667*d9db07f0SSricharan R .name = "lpass_q6_axim_clk_src", 2668*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0, 2669*d9db07f0SSricharan R .num_parents = 2, 2670*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 2671*d9db07f0SSricharan R }, 2672*d9db07f0SSricharan R }; 2673*d9db07f0SSricharan R 2674*d9db07f0SSricharan R static struct freq_tbl ftbl_rbcpr_wcss_clk_src[] = { 2675*d9db07f0SSricharan R F(24000000, P_XO, 1, 0, 0), 2676*d9db07f0SSricharan R F(50000000, P_GPLL0, 16, 0, 0), 2677*d9db07f0SSricharan R { } 2678*d9db07f0SSricharan R }; 2679*d9db07f0SSricharan R 2680*d9db07f0SSricharan R static struct clk_rcg2 rbcpr_wcss_clk_src = { 2681*d9db07f0SSricharan R .cmd_rcgr = 0x3a00c, 2682*d9db07f0SSricharan R .freq_tbl = ftbl_rbcpr_wcss_clk_src, 2683*d9db07f0SSricharan R .hid_width = 5, 2684*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map, 2685*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 2686*d9db07f0SSricharan R .name = "rbcpr_wcss_clk_src", 2687*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0_out_main_div2_gpll0, 2688*d9db07f0SSricharan R .num_parents = 3, 2689*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 2690*d9db07f0SSricharan R }, 2691*d9db07f0SSricharan R }; 2692*d9db07f0SSricharan R 2693*d9db07f0SSricharan R static struct clk_branch gcc_lpass_core_axim_clk = { 2694*d9db07f0SSricharan R .halt_reg = 0x1F028, 2695*d9db07f0SSricharan R .clkr = { 2696*d9db07f0SSricharan R .enable_reg = 0x1F028, 2697*d9db07f0SSricharan R .enable_mask = BIT(0), 2698*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2699*d9db07f0SSricharan R .name = "gcc_lpass_core_axim_clk", 2700*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2701*d9db07f0SSricharan R &lpass_core_axim_clk_src.clkr.hw }, 2702*d9db07f0SSricharan R .num_parents = 1, 2703*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2704*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2705*d9db07f0SSricharan R }, 2706*d9db07f0SSricharan R }, 2707*d9db07f0SSricharan R }; 2708*d9db07f0SSricharan R 2709*d9db07f0SSricharan R static struct clk_branch gcc_lpass_snoc_cfg_clk = { 2710*d9db07f0SSricharan R .halt_reg = 0x1F048, 2711*d9db07f0SSricharan R .clkr = { 2712*d9db07f0SSricharan R .enable_reg = 0x1F048, 2713*d9db07f0SSricharan R .enable_mask = BIT(0), 2714*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2715*d9db07f0SSricharan R .name = "gcc_lpass_snoc_cfg_clk", 2716*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2717*d9db07f0SSricharan R &lpass_snoc_cfg_clk_src.clkr.hw }, 2718*d9db07f0SSricharan R .num_parents = 1, 2719*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2720*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2721*d9db07f0SSricharan R }, 2722*d9db07f0SSricharan R }, 2723*d9db07f0SSricharan R }; 2724*d9db07f0SSricharan R 2725*d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6_axim_clk = { 2726*d9db07f0SSricharan R .halt_reg = 0x1F010, 2727*d9db07f0SSricharan R .clkr = { 2728*d9db07f0SSricharan R .enable_reg = 0x1F010, 2729*d9db07f0SSricharan R .enable_mask = BIT(0), 2730*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2731*d9db07f0SSricharan R .name = "gcc_lpass_q6_axim_clk", 2732*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2733*d9db07f0SSricharan R &lpass_q6_axim_clk_src.clkr.hw }, 2734*d9db07f0SSricharan R .num_parents = 1, 2735*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2736*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2737*d9db07f0SSricharan R }, 2738*d9db07f0SSricharan R }, 2739*d9db07f0SSricharan R }; 2740*d9db07f0SSricharan R 2741*d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6_atbm_at_clk = { 2742*d9db07f0SSricharan R .halt_reg = 0x1F018, 2743*d9db07f0SSricharan R .clkr = { 2744*d9db07f0SSricharan R .enable_reg = 0x1F018, 2745*d9db07f0SSricharan R .enable_mask = BIT(0), 2746*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2747*d9db07f0SSricharan R .name = "gcc_lpass_q6_atbm_at_clk", 2748*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2749*d9db07f0SSricharan R &qdss_at_clk_src.clkr.hw }, 2750*d9db07f0SSricharan R .num_parents = 1, 2751*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2752*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2753*d9db07f0SSricharan R }, 2754*d9db07f0SSricharan R }, 2755*d9db07f0SSricharan R }; 2756*d9db07f0SSricharan R 2757*d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6_pclkdbg_clk = { 2758*d9db07f0SSricharan R .halt_reg = 0x1F01C, 2759*d9db07f0SSricharan R .clkr = { 2760*d9db07f0SSricharan R .enable_reg = 0x1F01C, 2761*d9db07f0SSricharan R .enable_mask = BIT(0), 2762*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2763*d9db07f0SSricharan R .name = "gcc_lpass_q6_pclkdbg_clk", 2764*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2765*d9db07f0SSricharan R &qdss_dap_sync_clk_src.hw }, 2766*d9db07f0SSricharan R .num_parents = 1, 2767*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2768*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2769*d9db07f0SSricharan R }, 2770*d9db07f0SSricharan R }, 2771*d9db07f0SSricharan R }; 2772*d9db07f0SSricharan R 2773*d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6ss_tsctr_1to2_clk = { 2774*d9db07f0SSricharan R .halt_reg = 0x1F014, 2775*d9db07f0SSricharan R .clkr = { 2776*d9db07f0SSricharan R .enable_reg = 0x1F014, 2777*d9db07f0SSricharan R .enable_mask = BIT(0), 2778*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2779*d9db07f0SSricharan R .name = "gcc_lpass_q6ss_tsctr_1to2_clk", 2780*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2781*d9db07f0SSricharan R &qdss_tsctr_div2_clk_src.hw }, 2782*d9db07f0SSricharan R .num_parents = 1, 2783*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2784*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2785*d9db07f0SSricharan R }, 2786*d9db07f0SSricharan R }, 2787*d9db07f0SSricharan R }; 2788*d9db07f0SSricharan R 2789*d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6ss_trig_clk = { 2790*d9db07f0SSricharan R .halt_reg = 0x1F038, 2791*d9db07f0SSricharan R .clkr = { 2792*d9db07f0SSricharan R .enable_reg = 0x1F038, 2793*d9db07f0SSricharan R .enable_mask = BIT(0), 2794*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2795*d9db07f0SSricharan R .name = "gcc_lpass_q6ss_trig_clk", 2796*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2797*d9db07f0SSricharan R &qdss_dap_sync_clk_src.hw }, 2798*d9db07f0SSricharan R .num_parents = 1, 2799*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2800*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2801*d9db07f0SSricharan R }, 2802*d9db07f0SSricharan R }, 2803*d9db07f0SSricharan R }; 2804*d9db07f0SSricharan R 2805*d9db07f0SSricharan R static struct clk_branch gcc_lpass_tbu_clk = { 2806*d9db07f0SSricharan R .halt_reg = 0x12094, 2807*d9db07f0SSricharan R .clkr = { 2808*d9db07f0SSricharan R .enable_reg = 0xb00c, 2809*d9db07f0SSricharan R .enable_mask = BIT(10), 2810*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2811*d9db07f0SSricharan R .name = "gcc_lpass_tbu_clk", 2812*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2813*d9db07f0SSricharan R &lpass_q6_axim_clk_src.clkr.hw }, 2814*d9db07f0SSricharan R .num_parents = 1, 2815*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2816*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2817*d9db07f0SSricharan R }, 2818*d9db07f0SSricharan R }, 2819*d9db07f0SSricharan R }; 2820*d9db07f0SSricharan R 2821*d9db07f0SSricharan R static struct clk_branch gcc_pcnoc_lpass_clk = { 2822*d9db07f0SSricharan R .halt_reg = 0x27020, 2823*d9db07f0SSricharan R .clkr = { 2824*d9db07f0SSricharan R .enable_reg = 0x27020, 2825*d9db07f0SSricharan R .enable_mask = BIT(0), 2826*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2827*d9db07f0SSricharan R .name = "gcc_pcnoc_lpass_clk", 2828*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2829*d9db07f0SSricharan R &lpass_core_axim_clk_src.clkr.hw }, 2830*d9db07f0SSricharan R .num_parents = 1, 2831*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2832*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2833*d9db07f0SSricharan R }, 2834*d9db07f0SSricharan R }, 2835*d9db07f0SSricharan R }; 2836*d9db07f0SSricharan R 2837*d9db07f0SSricharan R static struct clk_branch gcc_mem_noc_lpass_clk = { 2838*d9db07f0SSricharan R .halt_reg = 0x1D044, 2839*d9db07f0SSricharan R .clkr = { 2840*d9db07f0SSricharan R .enable_reg = 0x1D044, 2841*d9db07f0SSricharan R .enable_mask = BIT(0), 2842*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2843*d9db07f0SSricharan R .name = "gcc_mem_noc_lpass_clk", 2844*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2845*d9db07f0SSricharan R &lpass_q6_axim_clk_src.clkr.hw }, 2846*d9db07f0SSricharan R .num_parents = 1, 2847*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2848*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2849*d9db07f0SSricharan R }, 2850*d9db07f0SSricharan R }, 2851*d9db07f0SSricharan R }; 2852*d9db07f0SSricharan R 2853*d9db07f0SSricharan R static struct clk_branch gcc_snoc_lpass_cfg_clk = { 2854*d9db07f0SSricharan R .halt_reg = 0x26074, 2855*d9db07f0SSricharan R .clkr = { 2856*d9db07f0SSricharan R .enable_reg = 0x26074, 2857*d9db07f0SSricharan R .enable_mask = BIT(0), 2858*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2859*d9db07f0SSricharan R .name = "gcc_snoc_lpass_cfg_clk", 2860*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2861*d9db07f0SSricharan R &lpass_snoc_cfg_clk_src.clkr.hw }, 2862*d9db07f0SSricharan R .num_parents = 1, 2863*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2864*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2865*d9db07f0SSricharan R }, 2866*d9db07f0SSricharan R }, 2867*d9db07f0SSricharan R }; 2868*d9db07f0SSricharan R 2869*d9db07f0SSricharan R static struct clk_branch gcc_mem_noc_ubi32_clk = { 2870*d9db07f0SSricharan R .halt_reg = 0x1D03C, 2871*d9db07f0SSricharan R .clkr = { 2872*d9db07f0SSricharan R .enable_reg = 0x1D03C, 2873*d9db07f0SSricharan R .enable_mask = BIT(0), 2874*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2875*d9db07f0SSricharan R .name = "gcc_mem_noc_ubi32_clk", 2876*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2877*d9db07f0SSricharan R &ubi32_mem_noc_bfdcd_clk_src.clkr.hw }, 2878*d9db07f0SSricharan R .num_parents = 1, 2879*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2880*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2881*d9db07f0SSricharan R }, 2882*d9db07f0SSricharan R }, 2883*d9db07f0SSricharan R }; 2884*d9db07f0SSricharan R 2885*d9db07f0SSricharan R static struct clk_branch gcc_nss_port1_rx_clk = { 2886*d9db07f0SSricharan R .halt_reg = 0x68240, 2887*d9db07f0SSricharan R .clkr = { 2888*d9db07f0SSricharan R .enable_reg = 0x68240, 2889*d9db07f0SSricharan R .enable_mask = BIT(0), 2890*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2891*d9db07f0SSricharan R .name = "gcc_nss_port1_rx_clk", 2892*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2893*d9db07f0SSricharan R &nss_port1_rx_div_clk_src.clkr.hw }, 2894*d9db07f0SSricharan R .num_parents = 1, 2895*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2896*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2897*d9db07f0SSricharan R }, 2898*d9db07f0SSricharan R }, 2899*d9db07f0SSricharan R }; 2900*d9db07f0SSricharan R 2901*d9db07f0SSricharan R static struct clk_branch gcc_nss_port1_tx_clk = { 2902*d9db07f0SSricharan R .halt_reg = 0x68244, 2903*d9db07f0SSricharan R .clkr = { 2904*d9db07f0SSricharan R .enable_reg = 0x68244, 2905*d9db07f0SSricharan R .enable_mask = BIT(0), 2906*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2907*d9db07f0SSricharan R .name = "gcc_nss_port1_tx_clk", 2908*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2909*d9db07f0SSricharan R &nss_port1_tx_div_clk_src.clkr.hw }, 2910*d9db07f0SSricharan R .num_parents = 1, 2911*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2912*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2913*d9db07f0SSricharan R }, 2914*d9db07f0SSricharan R }, 2915*d9db07f0SSricharan R }; 2916*d9db07f0SSricharan R 2917*d9db07f0SSricharan R static struct clk_branch gcc_nss_port2_rx_clk = { 2918*d9db07f0SSricharan R .halt_reg = 0x68248, 2919*d9db07f0SSricharan R .clkr = { 2920*d9db07f0SSricharan R .enable_reg = 0x68248, 2921*d9db07f0SSricharan R .enable_mask = BIT(0), 2922*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2923*d9db07f0SSricharan R .name = "gcc_nss_port2_rx_clk", 2924*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2925*d9db07f0SSricharan R &nss_port2_rx_div_clk_src.clkr.hw }, 2926*d9db07f0SSricharan R .num_parents = 1, 2927*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2928*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2929*d9db07f0SSricharan R }, 2930*d9db07f0SSricharan R }, 2931*d9db07f0SSricharan R }; 2932*d9db07f0SSricharan R 2933*d9db07f0SSricharan R static struct clk_branch gcc_nss_port2_tx_clk = { 2934*d9db07f0SSricharan R .halt_reg = 0x6824c, 2935*d9db07f0SSricharan R .clkr = { 2936*d9db07f0SSricharan R .enable_reg = 0x6824c, 2937*d9db07f0SSricharan R .enable_mask = BIT(0), 2938*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2939*d9db07f0SSricharan R .name = "gcc_nss_port2_tx_clk", 2940*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2941*d9db07f0SSricharan R &nss_port2_tx_div_clk_src.clkr.hw }, 2942*d9db07f0SSricharan R .num_parents = 1, 2943*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2944*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2945*d9db07f0SSricharan R }, 2946*d9db07f0SSricharan R }, 2947*d9db07f0SSricharan R }; 2948*d9db07f0SSricharan R 2949*d9db07f0SSricharan R static struct clk_branch gcc_nss_port3_rx_clk = { 2950*d9db07f0SSricharan R .halt_reg = 0x68250, 2951*d9db07f0SSricharan R .clkr = { 2952*d9db07f0SSricharan R .enable_reg = 0x68250, 2953*d9db07f0SSricharan R .enable_mask = BIT(0), 2954*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2955*d9db07f0SSricharan R .name = "gcc_nss_port3_rx_clk", 2956*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2957*d9db07f0SSricharan R &nss_port3_rx_div_clk_src.clkr.hw }, 2958*d9db07f0SSricharan R .num_parents = 1, 2959*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2960*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2961*d9db07f0SSricharan R }, 2962*d9db07f0SSricharan R }, 2963*d9db07f0SSricharan R }; 2964*d9db07f0SSricharan R 2965*d9db07f0SSricharan R static struct clk_branch gcc_nss_port3_tx_clk = { 2966*d9db07f0SSricharan R .halt_reg = 0x68254, 2967*d9db07f0SSricharan R .clkr = { 2968*d9db07f0SSricharan R .enable_reg = 0x68254, 2969*d9db07f0SSricharan R .enable_mask = BIT(0), 2970*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2971*d9db07f0SSricharan R .name = "gcc_nss_port3_tx_clk", 2972*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2973*d9db07f0SSricharan R &nss_port3_tx_div_clk_src.clkr.hw }, 2974*d9db07f0SSricharan R .num_parents = 1, 2975*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2976*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2977*d9db07f0SSricharan R }, 2978*d9db07f0SSricharan R }, 2979*d9db07f0SSricharan R }; 2980*d9db07f0SSricharan R 2981*d9db07f0SSricharan R static struct clk_branch gcc_nss_port4_rx_clk = { 2982*d9db07f0SSricharan R .halt_reg = 0x68258, 2983*d9db07f0SSricharan R .clkr = { 2984*d9db07f0SSricharan R .enable_reg = 0x68258, 2985*d9db07f0SSricharan R .enable_mask = BIT(0), 2986*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 2987*d9db07f0SSricharan R .name = "gcc_nss_port4_rx_clk", 2988*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 2989*d9db07f0SSricharan R &nss_port4_rx_div_clk_src.clkr.hw }, 2990*d9db07f0SSricharan R .num_parents = 1, 2991*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 2992*d9db07f0SSricharan R .ops = &clk_branch2_ops, 2993*d9db07f0SSricharan R }, 2994*d9db07f0SSricharan R }, 2995*d9db07f0SSricharan R }; 2996*d9db07f0SSricharan R 2997*d9db07f0SSricharan R static struct clk_branch gcc_nss_port4_tx_clk = { 2998*d9db07f0SSricharan R .halt_reg = 0x6825c, 2999*d9db07f0SSricharan R .clkr = { 3000*d9db07f0SSricharan R .enable_reg = 0x6825c, 3001*d9db07f0SSricharan R .enable_mask = BIT(0), 3002*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3003*d9db07f0SSricharan R .name = "gcc_nss_port4_tx_clk", 3004*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3005*d9db07f0SSricharan R &nss_port4_tx_div_clk_src.clkr.hw }, 3006*d9db07f0SSricharan R .num_parents = 1, 3007*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3008*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3009*d9db07f0SSricharan R }, 3010*d9db07f0SSricharan R }, 3011*d9db07f0SSricharan R }; 3012*d9db07f0SSricharan R 3013*d9db07f0SSricharan R static struct clk_branch gcc_nss_port5_rx_clk = { 3014*d9db07f0SSricharan R .halt_reg = 0x68260, 3015*d9db07f0SSricharan R .clkr = { 3016*d9db07f0SSricharan R .enable_reg = 0x68260, 3017*d9db07f0SSricharan R .enable_mask = BIT(0), 3018*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3019*d9db07f0SSricharan R .name = "gcc_nss_port5_rx_clk", 3020*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3021*d9db07f0SSricharan R &nss_port5_rx_div_clk_src.clkr.hw }, 3022*d9db07f0SSricharan R .num_parents = 1, 3023*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3024*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3025*d9db07f0SSricharan R }, 3026*d9db07f0SSricharan R }, 3027*d9db07f0SSricharan R }; 3028*d9db07f0SSricharan R 3029*d9db07f0SSricharan R static struct clk_branch gcc_nss_port5_tx_clk = { 3030*d9db07f0SSricharan R .halt_reg = 0x68264, 3031*d9db07f0SSricharan R .clkr = { 3032*d9db07f0SSricharan R .enable_reg = 0x68264, 3033*d9db07f0SSricharan R .enable_mask = BIT(0), 3034*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3035*d9db07f0SSricharan R .name = "gcc_nss_port5_tx_clk", 3036*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3037*d9db07f0SSricharan R &nss_port5_tx_div_clk_src.clkr.hw }, 3038*d9db07f0SSricharan R .num_parents = 1, 3039*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3040*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3041*d9db07f0SSricharan R }, 3042*d9db07f0SSricharan R }, 3043*d9db07f0SSricharan R }; 3044*d9db07f0SSricharan R 3045*d9db07f0SSricharan R static struct clk_branch gcc_nss_ppe_cfg_clk = { 3046*d9db07f0SSricharan R .halt_reg = 0x68194, 3047*d9db07f0SSricharan R .clkr = { 3048*d9db07f0SSricharan R .enable_reg = 0x68194, 3049*d9db07f0SSricharan R .enable_mask = BIT(0), 3050*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3051*d9db07f0SSricharan R .name = "gcc_nss_ppe_cfg_clk", 3052*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3053*d9db07f0SSricharan R &nss_ppe_clk_src.clkr.hw }, 3054*d9db07f0SSricharan R .num_parents = 1, 3055*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3056*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3057*d9db07f0SSricharan R }, 3058*d9db07f0SSricharan R }, 3059*d9db07f0SSricharan R }; 3060*d9db07f0SSricharan R 3061*d9db07f0SSricharan R static struct clk_branch gcc_nss_ppe_clk = { 3062*d9db07f0SSricharan R .halt_reg = 0x68190, 3063*d9db07f0SSricharan R .clkr = { 3064*d9db07f0SSricharan R .enable_reg = 0x68190, 3065*d9db07f0SSricharan R .enable_mask = BIT(0), 3066*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3067*d9db07f0SSricharan R .name = "gcc_nss_ppe_clk", 3068*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3069*d9db07f0SSricharan R &nss_ppe_clk_src.clkr.hw }, 3070*d9db07f0SSricharan R .num_parents = 1, 3071*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3072*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3073*d9db07f0SSricharan R }, 3074*d9db07f0SSricharan R }, 3075*d9db07f0SSricharan R }; 3076*d9db07f0SSricharan R 3077*d9db07f0SSricharan R static struct clk_branch gcc_nss_ppe_ipe_clk = { 3078*d9db07f0SSricharan R .halt_reg = 0x68338, 3079*d9db07f0SSricharan R .clkr = { 3080*d9db07f0SSricharan R .enable_reg = 0x68338, 3081*d9db07f0SSricharan R .enable_mask = BIT(0), 3082*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3083*d9db07f0SSricharan R .name = "gcc_nss_ppe_ipe_clk", 3084*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3085*d9db07f0SSricharan R &nss_ppe_clk_src.clkr.hw }, 3086*d9db07f0SSricharan R .num_parents = 1, 3087*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3088*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3089*d9db07f0SSricharan R }, 3090*d9db07f0SSricharan R }, 3091*d9db07f0SSricharan R }; 3092*d9db07f0SSricharan R 3093*d9db07f0SSricharan R static struct clk_branch gcc_nss_ptp_ref_clk = { 3094*d9db07f0SSricharan R .halt_reg = 0x6816C, 3095*d9db07f0SSricharan R .clkr = { 3096*d9db07f0SSricharan R .enable_reg = 0x6816C, 3097*d9db07f0SSricharan R .enable_mask = BIT(0), 3098*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3099*d9db07f0SSricharan R .name = "gcc_nss_ptp_ref_clk", 3100*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3101*d9db07f0SSricharan R &nss_ppe_cdiv_clk_src.hw }, 3102*d9db07f0SSricharan R .num_parents = 1, 3103*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3104*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3105*d9db07f0SSricharan R }, 3106*d9db07f0SSricharan R }, 3107*d9db07f0SSricharan R }; 3108*d9db07f0SSricharan R 3109*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ce_apb_clk = { 3110*d9db07f0SSricharan R .halt_reg = 0x6830C, 3111*d9db07f0SSricharan R .clkr = { 3112*d9db07f0SSricharan R .enable_reg = 0x6830C, 3113*d9db07f0SSricharan R .enable_mask = BIT(0), 3114*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3115*d9db07f0SSricharan R .name = "gcc_nssnoc_ce_apb_clk", 3116*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3117*d9db07f0SSricharan R &nss_ce_clk_src.clkr.hw }, 3118*d9db07f0SSricharan R .num_parents = 1, 3119*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3120*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3121*d9db07f0SSricharan R }, 3122*d9db07f0SSricharan R }, 3123*d9db07f0SSricharan R }; 3124*d9db07f0SSricharan R 3125*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ce_axi_clk = { 3126*d9db07f0SSricharan R .halt_reg = 0x68308, 3127*d9db07f0SSricharan R .clkr = { 3128*d9db07f0SSricharan R .enable_reg = 0x68308, 3129*d9db07f0SSricharan R .enable_mask = BIT(0), 3130*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3131*d9db07f0SSricharan R .name = "gcc_nssnoc_ce_axi_clk", 3132*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3133*d9db07f0SSricharan R &nss_ce_clk_src.clkr.hw }, 3134*d9db07f0SSricharan R .num_parents = 1, 3135*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3136*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3137*d9db07f0SSricharan R }, 3138*d9db07f0SSricharan R }, 3139*d9db07f0SSricharan R }; 3140*d9db07f0SSricharan R 3141*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_crypto_clk = { 3142*d9db07f0SSricharan R .halt_reg = 0x68314, 3143*d9db07f0SSricharan R .clkr = { 3144*d9db07f0SSricharan R .enable_reg = 0x68314, 3145*d9db07f0SSricharan R .enable_mask = BIT(0), 3146*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3147*d9db07f0SSricharan R .name = "gcc_nssnoc_crypto_clk", 3148*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3149*d9db07f0SSricharan R &nss_crypto_clk_src.clkr.hw }, 3150*d9db07f0SSricharan R .num_parents = 1, 3151*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3152*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3153*d9db07f0SSricharan R }, 3154*d9db07f0SSricharan R }, 3155*d9db07f0SSricharan R }; 3156*d9db07f0SSricharan R 3157*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ppe_cfg_clk = { 3158*d9db07f0SSricharan R .halt_reg = 0x68304, 3159*d9db07f0SSricharan R .clkr = { 3160*d9db07f0SSricharan R .enable_reg = 0x68304, 3161*d9db07f0SSricharan R .enable_mask = BIT(0), 3162*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3163*d9db07f0SSricharan R .name = "gcc_nssnoc_ppe_cfg_clk", 3164*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3165*d9db07f0SSricharan R &nss_ppe_clk_src.clkr.hw }, 3166*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3167*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3168*d9db07f0SSricharan R }, 3169*d9db07f0SSricharan R }, 3170*d9db07f0SSricharan R }; 3171*d9db07f0SSricharan R 3172*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ppe_clk = { 3173*d9db07f0SSricharan R .halt_reg = 0x68300, 3174*d9db07f0SSricharan R .clkr = { 3175*d9db07f0SSricharan R .enable_reg = 0x68300, 3176*d9db07f0SSricharan R .enable_mask = BIT(0), 3177*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3178*d9db07f0SSricharan R .name = "gcc_nssnoc_ppe_clk", 3179*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3180*d9db07f0SSricharan R &nss_ppe_clk_src.clkr.hw }, 3181*d9db07f0SSricharan R .num_parents = 1, 3182*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3183*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3184*d9db07f0SSricharan R }, 3185*d9db07f0SSricharan R }, 3186*d9db07f0SSricharan R }; 3187*d9db07f0SSricharan R 3188*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_qosgen_ref_clk = { 3189*d9db07f0SSricharan R .halt_reg = 0x68180, 3190*d9db07f0SSricharan R .clkr = { 3191*d9db07f0SSricharan R .enable_reg = 0x68180, 3192*d9db07f0SSricharan R .enable_mask = BIT(0), 3193*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3194*d9db07f0SSricharan R .name = "gcc_nssnoc_qosgen_ref_clk", 3195*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3196*d9db07f0SSricharan R &gcc_xo_clk_src.clkr.hw }, 3197*d9db07f0SSricharan R .num_parents = 1, 3198*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3199*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3200*d9db07f0SSricharan R }, 3201*d9db07f0SSricharan R }, 3202*d9db07f0SSricharan R }; 3203*d9db07f0SSricharan R 3204*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_snoc_clk = { 3205*d9db07f0SSricharan R .halt_reg = 0x68188, 3206*d9db07f0SSricharan R .clkr = { 3207*d9db07f0SSricharan R .enable_reg = 0x68188, 3208*d9db07f0SSricharan R .enable_mask = BIT(0), 3209*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3210*d9db07f0SSricharan R .name = "gcc_nssnoc_snoc_clk", 3211*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3212*d9db07f0SSricharan R &system_noc_bfdcd_clk_src.clkr.hw }, 3213*d9db07f0SSricharan R .num_parents = 1, 3214*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3215*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3216*d9db07f0SSricharan R }, 3217*d9db07f0SSricharan R }, 3218*d9db07f0SSricharan R }; 3219*d9db07f0SSricharan R 3220*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_timeout_ref_clk = { 3221*d9db07f0SSricharan R .halt_reg = 0x68184, 3222*d9db07f0SSricharan R .clkr = { 3223*d9db07f0SSricharan R .enable_reg = 0x68184, 3224*d9db07f0SSricharan R .enable_mask = BIT(0), 3225*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3226*d9db07f0SSricharan R .name = "gcc_nssnoc_timeout_ref_clk", 3227*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3228*d9db07f0SSricharan R &gcc_xo_div4_clk_src.hw }, 3229*d9db07f0SSricharan R .num_parents = 1, 3230*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3231*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3232*d9db07f0SSricharan R }, 3233*d9db07f0SSricharan R }, 3234*d9db07f0SSricharan R }; 3235*d9db07f0SSricharan R 3236*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ubi0_ahb_clk = { 3237*d9db07f0SSricharan R .halt_reg = 0x68270, 3238*d9db07f0SSricharan R .clkr = { 3239*d9db07f0SSricharan R .enable_reg = 0x68270, 3240*d9db07f0SSricharan R .enable_mask = BIT(0), 3241*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3242*d9db07f0SSricharan R .name = "gcc_nssnoc_ubi0_ahb_clk", 3243*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3244*d9db07f0SSricharan R &nss_ce_clk_src.clkr.hw }, 3245*d9db07f0SSricharan R .num_parents = 1, 3246*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3247*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3248*d9db07f0SSricharan R }, 3249*d9db07f0SSricharan R }, 3250*d9db07f0SSricharan R }; 3251*d9db07f0SSricharan R 3252*d9db07f0SSricharan R static struct clk_branch gcc_port1_mac_clk = { 3253*d9db07f0SSricharan R .halt_reg = 0x68320, 3254*d9db07f0SSricharan R .clkr = { 3255*d9db07f0SSricharan R .enable_reg = 0x68320, 3256*d9db07f0SSricharan R .enable_mask = BIT(0), 3257*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3258*d9db07f0SSricharan R .name = "gcc_port1_mac_clk", 3259*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3260*d9db07f0SSricharan R &nss_ppe_clk_src.clkr.hw }, 3261*d9db07f0SSricharan R .num_parents = 1, 3262*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3263*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3264*d9db07f0SSricharan R }, 3265*d9db07f0SSricharan R }, 3266*d9db07f0SSricharan R }; 3267*d9db07f0SSricharan R 3268*d9db07f0SSricharan R static struct clk_branch gcc_port2_mac_clk = { 3269*d9db07f0SSricharan R .halt_reg = 0x68324, 3270*d9db07f0SSricharan R .clkr = { 3271*d9db07f0SSricharan R .enable_reg = 0x68324, 3272*d9db07f0SSricharan R .enable_mask = BIT(0), 3273*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3274*d9db07f0SSricharan R .name = "gcc_port2_mac_clk", 3275*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3276*d9db07f0SSricharan R &nss_ppe_clk_src.clkr.hw }, 3277*d9db07f0SSricharan R .num_parents = 1, 3278*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3279*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3280*d9db07f0SSricharan R }, 3281*d9db07f0SSricharan R }, 3282*d9db07f0SSricharan R }; 3283*d9db07f0SSricharan R 3284*d9db07f0SSricharan R static struct clk_branch gcc_port3_mac_clk = { 3285*d9db07f0SSricharan R .halt_reg = 0x68328, 3286*d9db07f0SSricharan R .clkr = { 3287*d9db07f0SSricharan R .enable_reg = 0x68328, 3288*d9db07f0SSricharan R .enable_mask = BIT(0), 3289*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3290*d9db07f0SSricharan R .name = "gcc_port3_mac_clk", 3291*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3292*d9db07f0SSricharan R &nss_ppe_clk_src.clkr.hw }, 3293*d9db07f0SSricharan R .num_parents = 1, 3294*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3295*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3296*d9db07f0SSricharan R }, 3297*d9db07f0SSricharan R }, 3298*d9db07f0SSricharan R }; 3299*d9db07f0SSricharan R 3300*d9db07f0SSricharan R static struct clk_branch gcc_port4_mac_clk = { 3301*d9db07f0SSricharan R .halt_reg = 0x6832c, 3302*d9db07f0SSricharan R .clkr = { 3303*d9db07f0SSricharan R .enable_reg = 0x6832c, 3304*d9db07f0SSricharan R .enable_mask = BIT(0), 3305*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3306*d9db07f0SSricharan R .name = "gcc_port4_mac_clk", 3307*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3308*d9db07f0SSricharan R &nss_ppe_clk_src.clkr.hw }, 3309*d9db07f0SSricharan R .num_parents = 1, 3310*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3311*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3312*d9db07f0SSricharan R }, 3313*d9db07f0SSricharan R }, 3314*d9db07f0SSricharan R }; 3315*d9db07f0SSricharan R 3316*d9db07f0SSricharan R static struct clk_branch gcc_port5_mac_clk = { 3317*d9db07f0SSricharan R .halt_reg = 0x68330, 3318*d9db07f0SSricharan R .clkr = { 3319*d9db07f0SSricharan R .enable_reg = 0x68330, 3320*d9db07f0SSricharan R .enable_mask = BIT(0), 3321*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3322*d9db07f0SSricharan R .name = "gcc_port5_mac_clk", 3323*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3324*d9db07f0SSricharan R &nss_ppe_clk_src.clkr.hw }, 3325*d9db07f0SSricharan R .num_parents = 1, 3326*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3327*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3328*d9db07f0SSricharan R }, 3329*d9db07f0SSricharan R }, 3330*d9db07f0SSricharan R }; 3331*d9db07f0SSricharan R 3332*d9db07f0SSricharan R static struct clk_branch gcc_ubi0_ahb_clk = { 3333*d9db07f0SSricharan R .halt_reg = 0x6820C, 3334*d9db07f0SSricharan R .halt_check = BRANCH_HALT_DELAY, 3335*d9db07f0SSricharan R .clkr = { 3336*d9db07f0SSricharan R .enable_reg = 0x6820C, 3337*d9db07f0SSricharan R .enable_mask = BIT(0), 3338*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3339*d9db07f0SSricharan R .name = "gcc_ubi0_ahb_clk", 3340*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3341*d9db07f0SSricharan R &nss_ce_clk_src.clkr.hw }, 3342*d9db07f0SSricharan R .num_parents = 1, 3343*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3344*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3345*d9db07f0SSricharan R }, 3346*d9db07f0SSricharan R }, 3347*d9db07f0SSricharan R }; 3348*d9db07f0SSricharan R 3349*d9db07f0SSricharan R static struct clk_branch gcc_ubi0_axi_clk = { 3350*d9db07f0SSricharan R .halt_reg = 0x68200, 3351*d9db07f0SSricharan R .halt_check = BRANCH_HALT_DELAY, 3352*d9db07f0SSricharan R .clkr = { 3353*d9db07f0SSricharan R .enable_reg = 0x68200, 3354*d9db07f0SSricharan R .enable_mask = BIT(0), 3355*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3356*d9db07f0SSricharan R .name = "gcc_ubi0_axi_clk", 3357*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3358*d9db07f0SSricharan R &ubi32_mem_noc_bfdcd_clk_src.clkr.hw }, 3359*d9db07f0SSricharan R .num_parents = 1, 3360*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3361*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3362*d9db07f0SSricharan R }, 3363*d9db07f0SSricharan R }, 3364*d9db07f0SSricharan R }; 3365*d9db07f0SSricharan R 3366*d9db07f0SSricharan R static struct clk_branch gcc_ubi0_nc_axi_clk = { 3367*d9db07f0SSricharan R .halt_reg = 0x68204, 3368*d9db07f0SSricharan R .halt_check = BRANCH_HALT_DELAY, 3369*d9db07f0SSricharan R .clkr = { 3370*d9db07f0SSricharan R .enable_reg = 0x68204, 3371*d9db07f0SSricharan R .enable_mask = BIT(0), 3372*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3373*d9db07f0SSricharan R .name = "gcc_ubi0_nc_axi_clk", 3374*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3375*d9db07f0SSricharan R &snoc_nssnoc_bfdcd_clk_src.clkr.hw }, 3376*d9db07f0SSricharan R .num_parents = 1, 3377*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3378*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3379*d9db07f0SSricharan R }, 3380*d9db07f0SSricharan R }, 3381*d9db07f0SSricharan R }; 3382*d9db07f0SSricharan R 3383*d9db07f0SSricharan R static struct clk_branch gcc_ubi0_core_clk = { 3384*d9db07f0SSricharan R .halt_reg = 0x68210, 3385*d9db07f0SSricharan R .halt_check = BRANCH_HALT_DELAY, 3386*d9db07f0SSricharan R .clkr = { 3387*d9db07f0SSricharan R .enable_reg = 0x68210, 3388*d9db07f0SSricharan R .enable_mask = BIT(0), 3389*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3390*d9db07f0SSricharan R .name = "gcc_ubi0_core_clk", 3391*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3392*d9db07f0SSricharan R &nss_ubi0_div_clk_src.clkr.hw }, 3393*d9db07f0SSricharan R .num_parents = 1, 3394*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3395*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3396*d9db07f0SSricharan R }, 3397*d9db07f0SSricharan R }, 3398*d9db07f0SSricharan R }; 3399*d9db07f0SSricharan R 3400*d9db07f0SSricharan R static struct clk_branch gcc_pcie0_ahb_clk = { 3401*d9db07f0SSricharan R .halt_reg = 0x75010, 3402*d9db07f0SSricharan R .clkr = { 3403*d9db07f0SSricharan R .enable_reg = 0x75010, 3404*d9db07f0SSricharan R .enable_mask = BIT(0), 3405*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3406*d9db07f0SSricharan R .name = "gcc_pcie0_ahb_clk", 3407*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3408*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 3409*d9db07f0SSricharan R .num_parents = 1, 3410*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3411*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3412*d9db07f0SSricharan R }, 3413*d9db07f0SSricharan R }, 3414*d9db07f0SSricharan R }; 3415*d9db07f0SSricharan R 3416*d9db07f0SSricharan R static struct clk_branch gcc_pcie0_aux_clk = { 3417*d9db07f0SSricharan R .halt_reg = 0x75014, 3418*d9db07f0SSricharan R .clkr = { 3419*d9db07f0SSricharan R .enable_reg = 0x75014, 3420*d9db07f0SSricharan R .enable_mask = BIT(0), 3421*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3422*d9db07f0SSricharan R .name = "gcc_pcie0_aux_clk", 3423*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3424*d9db07f0SSricharan R &pcie0_aux_clk_src.clkr.hw }, 3425*d9db07f0SSricharan R .num_parents = 1, 3426*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3427*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3428*d9db07f0SSricharan R }, 3429*d9db07f0SSricharan R }, 3430*d9db07f0SSricharan R }; 3431*d9db07f0SSricharan R 3432*d9db07f0SSricharan R static struct clk_branch gcc_pcie0_axi_m_clk = { 3433*d9db07f0SSricharan R .halt_reg = 0x75008, 3434*d9db07f0SSricharan R .clkr = { 3435*d9db07f0SSricharan R .enable_reg = 0x75008, 3436*d9db07f0SSricharan R .enable_mask = BIT(0), 3437*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3438*d9db07f0SSricharan R .name = "gcc_pcie0_axi_m_clk", 3439*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3440*d9db07f0SSricharan R &pcie0_axi_clk_src.clkr.hw }, 3441*d9db07f0SSricharan R .num_parents = 1, 3442*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3443*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3444*d9db07f0SSricharan R }, 3445*d9db07f0SSricharan R }, 3446*d9db07f0SSricharan R }; 3447*d9db07f0SSricharan R 3448*d9db07f0SSricharan R static struct clk_branch gcc_pcie0_axi_s_clk = { 3449*d9db07f0SSricharan R .halt_reg = 0x7500c, 3450*d9db07f0SSricharan R .clkr = { 3451*d9db07f0SSricharan R .enable_reg = 0x7500c, 3452*d9db07f0SSricharan R .enable_mask = BIT(0), 3453*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3454*d9db07f0SSricharan R .name = "gcc_pcie0_axi_s_clk", 3455*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3456*d9db07f0SSricharan R &pcie0_axi_clk_src.clkr.hw }, 3457*d9db07f0SSricharan R .num_parents = 1, 3458*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3459*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3460*d9db07f0SSricharan R }, 3461*d9db07f0SSricharan R }, 3462*d9db07f0SSricharan R }; 3463*d9db07f0SSricharan R 3464*d9db07f0SSricharan R static struct clk_branch gcc_sys_noc_pcie0_axi_clk = { 3465*d9db07f0SSricharan R .halt_reg = 0x26048, 3466*d9db07f0SSricharan R .clkr = { 3467*d9db07f0SSricharan R .enable_reg = 0x26048, 3468*d9db07f0SSricharan R .enable_mask = BIT(0), 3469*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3470*d9db07f0SSricharan R .name = "gcc_sys_noc_pcie0_axi_clk", 3471*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3472*d9db07f0SSricharan R &pcie0_axi_clk_src.clkr.hw }, 3473*d9db07f0SSricharan R .num_parents = 1, 3474*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3475*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3476*d9db07f0SSricharan R }, 3477*d9db07f0SSricharan R }, 3478*d9db07f0SSricharan R }; 3479*d9db07f0SSricharan R 3480*d9db07f0SSricharan R static struct clk_branch gcc_pcie0_pipe_clk = { 3481*d9db07f0SSricharan R .halt_reg = 0x75018, 3482*d9db07f0SSricharan R .halt_check = BRANCH_HALT_DELAY, 3483*d9db07f0SSricharan R .clkr = { 3484*d9db07f0SSricharan R .enable_reg = 0x75018, 3485*d9db07f0SSricharan R .enable_mask = BIT(0), 3486*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3487*d9db07f0SSricharan R .name = "gcc_pcie0_pipe_clk", 3488*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3489*d9db07f0SSricharan R &pcie0_pipe_clk_src.clkr.hw }, 3490*d9db07f0SSricharan R .num_parents = 1, 3491*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3492*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3493*d9db07f0SSricharan R }, 3494*d9db07f0SSricharan R }, 3495*d9db07f0SSricharan R }; 3496*d9db07f0SSricharan R 3497*d9db07f0SSricharan R static struct clk_branch gcc_prng_ahb_clk = { 3498*d9db07f0SSricharan R .halt_reg = 0x13004, 3499*d9db07f0SSricharan R .halt_check = BRANCH_HALT_VOTED, 3500*d9db07f0SSricharan R .clkr = { 3501*d9db07f0SSricharan R .enable_reg = 0x0b004, 3502*d9db07f0SSricharan R .enable_mask = BIT(8), 3503*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3504*d9db07f0SSricharan R .name = "gcc_prng_ahb_clk", 3505*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3506*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 3507*d9db07f0SSricharan R .num_parents = 1, 3508*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3509*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3510*d9db07f0SSricharan R }, 3511*d9db07f0SSricharan R }, 3512*d9db07f0SSricharan R }; 3513*d9db07f0SSricharan R 3514*d9db07f0SSricharan R static struct clk_branch gcc_qdss_dap_clk = { 3515*d9db07f0SSricharan R .halt_reg = 0x29084, 3516*d9db07f0SSricharan R .clkr = { 3517*d9db07f0SSricharan R .enable_reg = 0x29084, 3518*d9db07f0SSricharan R .enable_mask = BIT(0), 3519*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3520*d9db07f0SSricharan R .name = "gcc_qdss_dap_clk", 3521*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3522*d9db07f0SSricharan R &qdss_dap_sync_clk_src.hw }, 3523*d9db07f0SSricharan R .num_parents = 1, 3524*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3525*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3526*d9db07f0SSricharan R }, 3527*d9db07f0SSricharan R }, 3528*d9db07f0SSricharan R }; 3529*d9db07f0SSricharan R 3530*d9db07f0SSricharan R static struct clk_branch gcc_qpic_ahb_clk = { 3531*d9db07f0SSricharan R .halt_reg = 0x57024, 3532*d9db07f0SSricharan R .clkr = { 3533*d9db07f0SSricharan R .enable_reg = 0x57024, 3534*d9db07f0SSricharan R .enable_mask = BIT(0), 3535*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3536*d9db07f0SSricharan R .name = "gcc_qpic_ahb_clk", 3537*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3538*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 3539*d9db07f0SSricharan R .num_parents = 1, 3540*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3541*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3542*d9db07f0SSricharan R }, 3543*d9db07f0SSricharan R }, 3544*d9db07f0SSricharan R }; 3545*d9db07f0SSricharan R 3546*d9db07f0SSricharan R static struct clk_branch gcc_qpic_clk = { 3547*d9db07f0SSricharan R .halt_reg = 0x57020, 3548*d9db07f0SSricharan R .clkr = { 3549*d9db07f0SSricharan R .enable_reg = 0x57020, 3550*d9db07f0SSricharan R .enable_mask = BIT(0), 3551*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3552*d9db07f0SSricharan R .name = "gcc_qpic_clk", 3553*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3554*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 3555*d9db07f0SSricharan R .num_parents = 1, 3556*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3557*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3558*d9db07f0SSricharan R }, 3559*d9db07f0SSricharan R }, 3560*d9db07f0SSricharan R }; 3561*d9db07f0SSricharan R 3562*d9db07f0SSricharan R static struct clk_branch gcc_sdcc1_ahb_clk = { 3563*d9db07f0SSricharan R .halt_reg = 0x4201c, 3564*d9db07f0SSricharan R .clkr = { 3565*d9db07f0SSricharan R .enable_reg = 0x4201c, 3566*d9db07f0SSricharan R .enable_mask = BIT(0), 3567*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3568*d9db07f0SSricharan R .name = "gcc_sdcc1_ahb_clk", 3569*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3570*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 3571*d9db07f0SSricharan R .num_parents = 1, 3572*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3573*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3574*d9db07f0SSricharan R }, 3575*d9db07f0SSricharan R }, 3576*d9db07f0SSricharan R }; 3577*d9db07f0SSricharan R 3578*d9db07f0SSricharan R static struct clk_branch gcc_sdcc1_apps_clk = { 3579*d9db07f0SSricharan R .halt_reg = 0x42018, 3580*d9db07f0SSricharan R .clkr = { 3581*d9db07f0SSricharan R .enable_reg = 0x42018, 3582*d9db07f0SSricharan R .enable_mask = BIT(0), 3583*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3584*d9db07f0SSricharan R .name = "gcc_sdcc1_apps_clk", 3585*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3586*d9db07f0SSricharan R &sdcc1_apps_clk_src.clkr.hw }, 3587*d9db07f0SSricharan R .num_parents = 1, 3588*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3589*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3590*d9db07f0SSricharan R }, 3591*d9db07f0SSricharan R }, 3592*d9db07f0SSricharan R }; 3593*d9db07f0SSricharan R 3594*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_ahb_clk = { 3595*d9db07f0SSricharan R .halt_reg = 0x56008, 3596*d9db07f0SSricharan R .clkr = { 3597*d9db07f0SSricharan R .enable_reg = 0x56008, 3598*d9db07f0SSricharan R .enable_mask = BIT(0), 3599*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3600*d9db07f0SSricharan R .name = "gcc_uniphy0_ahb_clk", 3601*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3602*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 3603*d9db07f0SSricharan R .num_parents = 1, 3604*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3605*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3606*d9db07f0SSricharan R }, 3607*d9db07f0SSricharan R }, 3608*d9db07f0SSricharan R }; 3609*d9db07f0SSricharan R 3610*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port1_rx_clk = { 3611*d9db07f0SSricharan R .halt_reg = 0x56010, 3612*d9db07f0SSricharan R .clkr = { 3613*d9db07f0SSricharan R .enable_reg = 0x56010, 3614*d9db07f0SSricharan R .enable_mask = BIT(0), 3615*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3616*d9db07f0SSricharan R .name = "gcc_uniphy0_port1_rx_clk", 3617*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3618*d9db07f0SSricharan R &nss_port1_rx_div_clk_src.clkr.hw }, 3619*d9db07f0SSricharan R .num_parents = 1, 3620*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3621*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3622*d9db07f0SSricharan R }, 3623*d9db07f0SSricharan R }, 3624*d9db07f0SSricharan R }; 3625*d9db07f0SSricharan R 3626*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port1_tx_clk = { 3627*d9db07f0SSricharan R .halt_reg = 0x56014, 3628*d9db07f0SSricharan R .clkr = { 3629*d9db07f0SSricharan R .enable_reg = 0x56014, 3630*d9db07f0SSricharan R .enable_mask = BIT(0), 3631*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3632*d9db07f0SSricharan R .name = "gcc_uniphy0_port1_tx_clk", 3633*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3634*d9db07f0SSricharan R &nss_port1_tx_div_clk_src.clkr.hw }, 3635*d9db07f0SSricharan R .num_parents = 1, 3636*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3637*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3638*d9db07f0SSricharan R }, 3639*d9db07f0SSricharan R }, 3640*d9db07f0SSricharan R }; 3641*d9db07f0SSricharan R 3642*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port2_rx_clk = { 3643*d9db07f0SSricharan R .halt_reg = 0x56018, 3644*d9db07f0SSricharan R .clkr = { 3645*d9db07f0SSricharan R .enable_reg = 0x56018, 3646*d9db07f0SSricharan R .enable_mask = BIT(0), 3647*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3648*d9db07f0SSricharan R .name = "gcc_uniphy0_port2_rx_clk", 3649*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3650*d9db07f0SSricharan R &nss_port2_rx_div_clk_src.clkr.hw }, 3651*d9db07f0SSricharan R .num_parents = 1, 3652*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3653*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3654*d9db07f0SSricharan R }, 3655*d9db07f0SSricharan R }, 3656*d9db07f0SSricharan R }; 3657*d9db07f0SSricharan R 3658*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port2_tx_clk = { 3659*d9db07f0SSricharan R .halt_reg = 0x5601c, 3660*d9db07f0SSricharan R .clkr = { 3661*d9db07f0SSricharan R .enable_reg = 0x5601c, 3662*d9db07f0SSricharan R .enable_mask = BIT(0), 3663*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3664*d9db07f0SSricharan R .name = "gcc_uniphy0_port2_tx_clk", 3665*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3666*d9db07f0SSricharan R &nss_port2_tx_div_clk_src.clkr.hw }, 3667*d9db07f0SSricharan R .num_parents = 1, 3668*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3669*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3670*d9db07f0SSricharan R }, 3671*d9db07f0SSricharan R }, 3672*d9db07f0SSricharan R }; 3673*d9db07f0SSricharan R 3674*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port3_rx_clk = { 3675*d9db07f0SSricharan R .halt_reg = 0x56020, 3676*d9db07f0SSricharan R .clkr = { 3677*d9db07f0SSricharan R .enable_reg = 0x56020, 3678*d9db07f0SSricharan R .enable_mask = BIT(0), 3679*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3680*d9db07f0SSricharan R .name = "gcc_uniphy0_port3_rx_clk", 3681*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3682*d9db07f0SSricharan R &nss_port3_rx_div_clk_src.clkr.hw }, 3683*d9db07f0SSricharan R .num_parents = 1, 3684*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3685*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3686*d9db07f0SSricharan R }, 3687*d9db07f0SSricharan R }, 3688*d9db07f0SSricharan R }; 3689*d9db07f0SSricharan R 3690*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port3_tx_clk = { 3691*d9db07f0SSricharan R .halt_reg = 0x56024, 3692*d9db07f0SSricharan R .clkr = { 3693*d9db07f0SSricharan R .enable_reg = 0x56024, 3694*d9db07f0SSricharan R .enable_mask = BIT(0), 3695*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3696*d9db07f0SSricharan R .name = "gcc_uniphy0_port3_tx_clk", 3697*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3698*d9db07f0SSricharan R &nss_port3_tx_div_clk_src.clkr.hw }, 3699*d9db07f0SSricharan R .num_parents = 1, 3700*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3701*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3702*d9db07f0SSricharan R }, 3703*d9db07f0SSricharan R }, 3704*d9db07f0SSricharan R }; 3705*d9db07f0SSricharan R 3706*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port4_rx_clk = { 3707*d9db07f0SSricharan R .halt_reg = 0x56028, 3708*d9db07f0SSricharan R .clkr = { 3709*d9db07f0SSricharan R .enable_reg = 0x56028, 3710*d9db07f0SSricharan R .enable_mask = BIT(0), 3711*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3712*d9db07f0SSricharan R .name = "gcc_uniphy0_port4_rx_clk", 3713*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3714*d9db07f0SSricharan R &nss_port4_rx_div_clk_src.clkr.hw }, 3715*d9db07f0SSricharan R .num_parents = 1, 3716*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3717*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3718*d9db07f0SSricharan R }, 3719*d9db07f0SSricharan R }, 3720*d9db07f0SSricharan R }; 3721*d9db07f0SSricharan R 3722*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port4_tx_clk = { 3723*d9db07f0SSricharan R .halt_reg = 0x5602c, 3724*d9db07f0SSricharan R .clkr = { 3725*d9db07f0SSricharan R .enable_reg = 0x5602c, 3726*d9db07f0SSricharan R .enable_mask = BIT(0), 3727*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3728*d9db07f0SSricharan R .name = "gcc_uniphy0_port4_tx_clk", 3729*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3730*d9db07f0SSricharan R &nss_port4_tx_div_clk_src.clkr.hw }, 3731*d9db07f0SSricharan R .num_parents = 1, 3732*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3733*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3734*d9db07f0SSricharan R }, 3735*d9db07f0SSricharan R }, 3736*d9db07f0SSricharan R }; 3737*d9db07f0SSricharan R 3738*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port5_rx_clk = { 3739*d9db07f0SSricharan R .halt_reg = 0x56030, 3740*d9db07f0SSricharan R .clkr = { 3741*d9db07f0SSricharan R .enable_reg = 0x56030, 3742*d9db07f0SSricharan R .enable_mask = BIT(0), 3743*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3744*d9db07f0SSricharan R .name = "gcc_uniphy0_port5_rx_clk", 3745*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3746*d9db07f0SSricharan R &nss_port5_rx_div_clk_src.clkr.hw }, 3747*d9db07f0SSricharan R .num_parents = 1, 3748*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3749*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3750*d9db07f0SSricharan R }, 3751*d9db07f0SSricharan R }, 3752*d9db07f0SSricharan R }; 3753*d9db07f0SSricharan R 3754*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port5_tx_clk = { 3755*d9db07f0SSricharan R .halt_reg = 0x56034, 3756*d9db07f0SSricharan R .clkr = { 3757*d9db07f0SSricharan R .enable_reg = 0x56034, 3758*d9db07f0SSricharan R .enable_mask = BIT(0), 3759*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3760*d9db07f0SSricharan R .name = "gcc_uniphy0_port5_tx_clk", 3761*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3762*d9db07f0SSricharan R &nss_port5_tx_div_clk_src.clkr.hw }, 3763*d9db07f0SSricharan R .num_parents = 1, 3764*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3765*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3766*d9db07f0SSricharan R }, 3767*d9db07f0SSricharan R }, 3768*d9db07f0SSricharan R }; 3769*d9db07f0SSricharan R 3770*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_sys_clk = { 3771*d9db07f0SSricharan R .halt_reg = 0x5600C, 3772*d9db07f0SSricharan R .clkr = { 3773*d9db07f0SSricharan R .enable_reg = 0x5600C, 3774*d9db07f0SSricharan R .enable_mask = BIT(0), 3775*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3776*d9db07f0SSricharan R .name = "gcc_uniphy0_sys_clk", 3777*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3778*d9db07f0SSricharan R &gcc_xo_clk_src.clkr.hw }, 3779*d9db07f0SSricharan R .num_parents = 1, 3780*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3781*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3782*d9db07f0SSricharan R }, 3783*d9db07f0SSricharan R }, 3784*d9db07f0SSricharan R }; 3785*d9db07f0SSricharan R 3786*d9db07f0SSricharan R static struct clk_branch gcc_uniphy1_ahb_clk = { 3787*d9db07f0SSricharan R .halt_reg = 0x56108, 3788*d9db07f0SSricharan R .clkr = { 3789*d9db07f0SSricharan R .enable_reg = 0x56108, 3790*d9db07f0SSricharan R .enable_mask = BIT(0), 3791*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3792*d9db07f0SSricharan R .name = "gcc_uniphy1_ahb_clk", 3793*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3794*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 3795*d9db07f0SSricharan R .num_parents = 1, 3796*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3797*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3798*d9db07f0SSricharan R }, 3799*d9db07f0SSricharan R }, 3800*d9db07f0SSricharan R }; 3801*d9db07f0SSricharan R 3802*d9db07f0SSricharan R static struct clk_branch gcc_uniphy1_port5_rx_clk = { 3803*d9db07f0SSricharan R .halt_reg = 0x56110, 3804*d9db07f0SSricharan R .clkr = { 3805*d9db07f0SSricharan R .enable_reg = 0x56110, 3806*d9db07f0SSricharan R .enable_mask = BIT(0), 3807*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3808*d9db07f0SSricharan R .name = "gcc_uniphy1_port5_rx_clk", 3809*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3810*d9db07f0SSricharan R &nss_port5_rx_div_clk_src.clkr.hw }, 3811*d9db07f0SSricharan R .num_parents = 1, 3812*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3813*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3814*d9db07f0SSricharan R }, 3815*d9db07f0SSricharan R }, 3816*d9db07f0SSricharan R }; 3817*d9db07f0SSricharan R 3818*d9db07f0SSricharan R static struct clk_branch gcc_uniphy1_port5_tx_clk = { 3819*d9db07f0SSricharan R .halt_reg = 0x56114, 3820*d9db07f0SSricharan R .clkr = { 3821*d9db07f0SSricharan R .enable_reg = 0x56114, 3822*d9db07f0SSricharan R .enable_mask = BIT(0), 3823*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3824*d9db07f0SSricharan R .name = "gcc_uniphy1_port5_tx_clk", 3825*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3826*d9db07f0SSricharan R &nss_port5_tx_div_clk_src.clkr.hw }, 3827*d9db07f0SSricharan R .num_parents = 1, 3828*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3829*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3830*d9db07f0SSricharan R }, 3831*d9db07f0SSricharan R }, 3832*d9db07f0SSricharan R }; 3833*d9db07f0SSricharan R 3834*d9db07f0SSricharan R static struct clk_branch gcc_uniphy1_sys_clk = { 3835*d9db07f0SSricharan R .halt_reg = 0x5610C, 3836*d9db07f0SSricharan R .clkr = { 3837*d9db07f0SSricharan R .enable_reg = 0x5610C, 3838*d9db07f0SSricharan R .enable_mask = BIT(0), 3839*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3840*d9db07f0SSricharan R .name = "gcc_uniphy1_sys_clk", 3841*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3842*d9db07f0SSricharan R &gcc_xo_clk_src.clkr.hw }, 3843*d9db07f0SSricharan R .num_parents = 1, 3844*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3845*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3846*d9db07f0SSricharan R }, 3847*d9db07f0SSricharan R }, 3848*d9db07f0SSricharan R }; 3849*d9db07f0SSricharan R 3850*d9db07f0SSricharan R static struct clk_branch gcc_usb0_aux_clk = { 3851*d9db07f0SSricharan R .halt_reg = 0x3e044, 3852*d9db07f0SSricharan R .clkr = { 3853*d9db07f0SSricharan R .enable_reg = 0x3e044, 3854*d9db07f0SSricharan R .enable_mask = BIT(0), 3855*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3856*d9db07f0SSricharan R .name = "gcc_usb0_aux_clk", 3857*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3858*d9db07f0SSricharan R &usb0_aux_clk_src.clkr.hw }, 3859*d9db07f0SSricharan R .num_parents = 1, 3860*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3861*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3862*d9db07f0SSricharan R }, 3863*d9db07f0SSricharan R }, 3864*d9db07f0SSricharan R }; 3865*d9db07f0SSricharan R 3866*d9db07f0SSricharan R static struct clk_branch gcc_usb0_master_clk = { 3867*d9db07f0SSricharan R .halt_reg = 0x3e000, 3868*d9db07f0SSricharan R .clkr = { 3869*d9db07f0SSricharan R .enable_reg = 0x3e000, 3870*d9db07f0SSricharan R .enable_mask = BIT(0), 3871*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3872*d9db07f0SSricharan R .name = "gcc_usb0_master_clk", 3873*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3874*d9db07f0SSricharan R &usb0_master_clk_src.clkr.hw }, 3875*d9db07f0SSricharan R .num_parents = 1, 3876*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3877*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3878*d9db07f0SSricharan R }, 3879*d9db07f0SSricharan R }, 3880*d9db07f0SSricharan R }; 3881*d9db07f0SSricharan R 3882*d9db07f0SSricharan R static struct clk_branch gcc_snoc_bus_timeout2_ahb_clk = { 3883*d9db07f0SSricharan R .halt_reg = 0x47014, 3884*d9db07f0SSricharan R .clkr = { 3885*d9db07f0SSricharan R .enable_reg = 0x47014, 3886*d9db07f0SSricharan R .enable_mask = BIT(0), 3887*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3888*d9db07f0SSricharan R .name = "gcc_snoc_bus_timeout2_ahb_clk", 3889*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3890*d9db07f0SSricharan R &usb0_master_clk_src.clkr.hw }, 3891*d9db07f0SSricharan R .num_parents = 1, 3892*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3893*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3894*d9db07f0SSricharan R }, 3895*d9db07f0SSricharan R }, 3896*d9db07f0SSricharan R }; 3897*d9db07f0SSricharan R 3898*d9db07f0SSricharan R static struct clk_rcg2 pcie0_rchng_clk_src = { 3899*d9db07f0SSricharan R .cmd_rcgr = 0x75070, 3900*d9db07f0SSricharan R .freq_tbl = ftbl_pcie_rchng_clk_src, 3901*d9db07f0SSricharan R .hid_width = 5, 3902*d9db07f0SSricharan R .parent_map = gcc_xo_gpll0_map, 3903*d9db07f0SSricharan R .clkr.hw.init = &(struct clk_init_data){ 3904*d9db07f0SSricharan R .name = "pcie0_rchng_clk_src", 3905*d9db07f0SSricharan R .parent_data = gcc_xo_gpll0, 3906*d9db07f0SSricharan R .num_parents = 2, 3907*d9db07f0SSricharan R .ops = &clk_rcg2_ops, 3908*d9db07f0SSricharan R }, 3909*d9db07f0SSricharan R }; 3910*d9db07f0SSricharan R 3911*d9db07f0SSricharan R static struct clk_branch gcc_pcie0_rchng_clk = { 3912*d9db07f0SSricharan R .halt_reg = 0x75070, 3913*d9db07f0SSricharan R .clkr = { 3914*d9db07f0SSricharan R .enable_reg = 0x75070, 3915*d9db07f0SSricharan R .enable_mask = BIT(1), 3916*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3917*d9db07f0SSricharan R .name = "gcc_pcie0_rchng_clk", 3918*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3919*d9db07f0SSricharan R &pcie0_rchng_clk_src.clkr.hw }, 3920*d9db07f0SSricharan R .num_parents = 1, 3921*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3922*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3923*d9db07f0SSricharan R }, 3924*d9db07f0SSricharan R }, 3925*d9db07f0SSricharan R }; 3926*d9db07f0SSricharan R 3927*d9db07f0SSricharan R static struct clk_branch gcc_pcie0_axi_s_bridge_clk = { 3928*d9db07f0SSricharan R .halt_reg = 0x75048, 3929*d9db07f0SSricharan R .clkr = { 3930*d9db07f0SSricharan R .enable_reg = 0x75048, 3931*d9db07f0SSricharan R .enable_mask = BIT(0), 3932*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3933*d9db07f0SSricharan R .name = "gcc_pcie0_axi_s_bridge_clk", 3934*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3935*d9db07f0SSricharan R &pcie0_axi_clk_src.clkr.hw }, 3936*d9db07f0SSricharan R .num_parents = 1, 3937*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3938*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3939*d9db07f0SSricharan R }, 3940*d9db07f0SSricharan R }, 3941*d9db07f0SSricharan R }; 3942*d9db07f0SSricharan R 3943*d9db07f0SSricharan R static struct clk_branch gcc_sys_noc_usb0_axi_clk = { 3944*d9db07f0SSricharan R .halt_reg = 0x26040, 3945*d9db07f0SSricharan R .clkr = { 3946*d9db07f0SSricharan R .enable_reg = 0x26040, 3947*d9db07f0SSricharan R .enable_mask = BIT(0), 3948*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3949*d9db07f0SSricharan R .name = "gcc_sys_noc_usb0_axi_clk", 3950*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3951*d9db07f0SSricharan R &usb0_master_clk_src.clkr.hw }, 3952*d9db07f0SSricharan R .num_parents = 1, 3953*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3954*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3955*d9db07f0SSricharan R }, 3956*d9db07f0SSricharan R }, 3957*d9db07f0SSricharan R }; 3958*d9db07f0SSricharan R 3959*d9db07f0SSricharan R static struct clk_branch gcc_usb0_mock_utmi_clk = { 3960*d9db07f0SSricharan R .halt_reg = 0x3e008, 3961*d9db07f0SSricharan R .clkr = { 3962*d9db07f0SSricharan R .enable_reg = 0x3e008, 3963*d9db07f0SSricharan R .enable_mask = BIT(0), 3964*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3965*d9db07f0SSricharan R .name = "gcc_usb0_mock_utmi_clk", 3966*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3967*d9db07f0SSricharan R &usb0_mock_utmi_clk_src.clkr.hw }, 3968*d9db07f0SSricharan R .num_parents = 1, 3969*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3970*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3971*d9db07f0SSricharan R }, 3972*d9db07f0SSricharan R }, 3973*d9db07f0SSricharan R }; 3974*d9db07f0SSricharan R 3975*d9db07f0SSricharan R static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = { 3976*d9db07f0SSricharan R .halt_reg = 0x3e080, 3977*d9db07f0SSricharan R .clkr = { 3978*d9db07f0SSricharan R .enable_reg = 0x3e080, 3979*d9db07f0SSricharan R .enable_mask = BIT(0), 3980*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3981*d9db07f0SSricharan R .name = "gcc_usb0_phy_cfg_ahb_clk", 3982*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 3983*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 3984*d9db07f0SSricharan R .num_parents = 1, 3985*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 3986*d9db07f0SSricharan R .ops = &clk_branch2_ops, 3987*d9db07f0SSricharan R }, 3988*d9db07f0SSricharan R }, 3989*d9db07f0SSricharan R }; 3990*d9db07f0SSricharan R 3991*d9db07f0SSricharan R static struct clk_branch gcc_usb0_pipe_clk = { 3992*d9db07f0SSricharan R .halt_reg = 0x3e040, 3993*d9db07f0SSricharan R .halt_check = BRANCH_HALT_DELAY, 3994*d9db07f0SSricharan R .clkr = { 3995*d9db07f0SSricharan R .enable_reg = 0x3e040, 3996*d9db07f0SSricharan R .enable_mask = BIT(0), 3997*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 3998*d9db07f0SSricharan R .name = "gcc_usb0_pipe_clk", 3999*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 4000*d9db07f0SSricharan R &usb0_pipe_clk_src.clkr.hw }, 4001*d9db07f0SSricharan R .num_parents = 1, 4002*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 4003*d9db07f0SSricharan R .ops = &clk_branch2_ops, 4004*d9db07f0SSricharan R }, 4005*d9db07f0SSricharan R }, 4006*d9db07f0SSricharan R }; 4007*d9db07f0SSricharan R 4008*d9db07f0SSricharan R static struct clk_branch gcc_usb0_sleep_clk = { 4009*d9db07f0SSricharan R .halt_reg = 0x3e004, 4010*d9db07f0SSricharan R .clkr = { 4011*d9db07f0SSricharan R .enable_reg = 0x3e004, 4012*d9db07f0SSricharan R .enable_mask = BIT(0), 4013*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 4014*d9db07f0SSricharan R .name = "gcc_usb0_sleep_clk", 4015*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 4016*d9db07f0SSricharan R &gcc_sleep_clk_src.clkr.hw }, 4017*d9db07f0SSricharan R .num_parents = 1, 4018*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 4019*d9db07f0SSricharan R .ops = &clk_branch2_ops, 4020*d9db07f0SSricharan R }, 4021*d9db07f0SSricharan R }, 4022*d9db07f0SSricharan R }; 4023*d9db07f0SSricharan R 4024*d9db07f0SSricharan R static struct clk_branch gcc_usb1_master_clk = { 4025*d9db07f0SSricharan R .halt_reg = 0x3f000, 4026*d9db07f0SSricharan R .clkr = { 4027*d9db07f0SSricharan R .enable_reg = 0x3f000, 4028*d9db07f0SSricharan R .enable_mask = BIT(0), 4029*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 4030*d9db07f0SSricharan R .name = "gcc_usb1_master_clk", 4031*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 4032*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 4033*d9db07f0SSricharan R .num_parents = 1, 4034*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 4035*d9db07f0SSricharan R .ops = &clk_branch2_ops, 4036*d9db07f0SSricharan R }, 4037*d9db07f0SSricharan R }, 4038*d9db07f0SSricharan R }; 4039*d9db07f0SSricharan R 4040*d9db07f0SSricharan R static struct clk_branch gcc_usb1_mock_utmi_clk = { 4041*d9db07f0SSricharan R .halt_reg = 0x3f008, 4042*d9db07f0SSricharan R .clkr = { 4043*d9db07f0SSricharan R .enable_reg = 0x3f008, 4044*d9db07f0SSricharan R .enable_mask = BIT(0), 4045*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 4046*d9db07f0SSricharan R .name = "gcc_usb1_mock_utmi_clk", 4047*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 4048*d9db07f0SSricharan R &usb1_mock_utmi_clk_src.clkr.hw }, 4049*d9db07f0SSricharan R .num_parents = 1, 4050*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 4051*d9db07f0SSricharan R .ops = &clk_branch2_ops, 4052*d9db07f0SSricharan R }, 4053*d9db07f0SSricharan R }, 4054*d9db07f0SSricharan R }; 4055*d9db07f0SSricharan R 4056*d9db07f0SSricharan R static struct clk_branch gcc_usb1_phy_cfg_ahb_clk = { 4057*d9db07f0SSricharan R .halt_reg = 0x3f080, 4058*d9db07f0SSricharan R .clkr = { 4059*d9db07f0SSricharan R .enable_reg = 0x3f080, 4060*d9db07f0SSricharan R .enable_mask = BIT(0), 4061*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 4062*d9db07f0SSricharan R .name = "gcc_usb1_phy_cfg_ahb_clk", 4063*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 4064*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 4065*d9db07f0SSricharan R .num_parents = 1, 4066*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 4067*d9db07f0SSricharan R .ops = &clk_branch2_ops, 4068*d9db07f0SSricharan R }, 4069*d9db07f0SSricharan R }, 4070*d9db07f0SSricharan R }; 4071*d9db07f0SSricharan R 4072*d9db07f0SSricharan R static struct clk_branch gcc_usb1_sleep_clk = { 4073*d9db07f0SSricharan R .halt_reg = 0x3f004, 4074*d9db07f0SSricharan R .clkr = { 4075*d9db07f0SSricharan R .enable_reg = 0x3f004, 4076*d9db07f0SSricharan R .enable_mask = BIT(0), 4077*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 4078*d9db07f0SSricharan R .name = "gcc_usb1_sleep_clk", 4079*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 4080*d9db07f0SSricharan R &gcc_sleep_clk_src.clkr.hw }, 4081*d9db07f0SSricharan R .num_parents = 1, 4082*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 4083*d9db07f0SSricharan R .ops = &clk_branch2_ops, 4084*d9db07f0SSricharan R }, 4085*d9db07f0SSricharan R }, 4086*d9db07f0SSricharan R }; 4087*d9db07f0SSricharan R 4088*d9db07f0SSricharan R static struct clk_branch gcc_cmn_12gpll_ahb_clk = { 4089*d9db07f0SSricharan R .halt_reg = 0x56308, 4090*d9db07f0SSricharan R .clkr = { 4091*d9db07f0SSricharan R .enable_reg = 0x56308, 4092*d9db07f0SSricharan R .enable_mask = BIT(0), 4093*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 4094*d9db07f0SSricharan R .name = "gcc_cmn_12gpll_ahb_clk", 4095*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 4096*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 4097*d9db07f0SSricharan R .num_parents = 1, 4098*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 4099*d9db07f0SSricharan R .ops = &clk_branch2_ops, 4100*d9db07f0SSricharan R }, 4101*d9db07f0SSricharan R }, 4102*d9db07f0SSricharan R }; 4103*d9db07f0SSricharan R 4104*d9db07f0SSricharan R static struct clk_branch gcc_cmn_12gpll_sys_clk = { 4105*d9db07f0SSricharan R .halt_reg = 0x5630c, 4106*d9db07f0SSricharan R .clkr = { 4107*d9db07f0SSricharan R .enable_reg = 0x5630c, 4108*d9db07f0SSricharan R .enable_mask = BIT(0), 4109*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 4110*d9db07f0SSricharan R .name = "gcc_cmn_12gpll_sys_clk", 4111*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 4112*d9db07f0SSricharan R &gcc_xo_clk_src.clkr.hw }, 4113*d9db07f0SSricharan R .num_parents = 1, 4114*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 4115*d9db07f0SSricharan R .ops = &clk_branch2_ops, 4116*d9db07f0SSricharan R }, 4117*d9db07f0SSricharan R }, 4118*d9db07f0SSricharan R }; 4119*d9db07f0SSricharan R 4120*d9db07f0SSricharan R static struct clk_branch gcc_sdcc1_ice_core_clk = { 4121*d9db07f0SSricharan R .halt_reg = 0x5d014, 4122*d9db07f0SSricharan R .clkr = { 4123*d9db07f0SSricharan R .enable_reg = 0x5d014, 4124*d9db07f0SSricharan R .enable_mask = BIT(0), 4125*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 4126*d9db07f0SSricharan R .name = "gcc_sdcc1_ice_core_clk", 4127*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 4128*d9db07f0SSricharan R &sdcc1_ice_core_clk_src.clkr.hw }, 4129*d9db07f0SSricharan R .num_parents = 1, 4130*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 4131*d9db07f0SSricharan R .ops = &clk_branch2_ops, 4132*d9db07f0SSricharan R }, 4133*d9db07f0SSricharan R }, 4134*d9db07f0SSricharan R }; 4135*d9db07f0SSricharan R 4136*d9db07f0SSricharan R static struct clk_branch gcc_dcc_clk = { 4137*d9db07f0SSricharan R .halt_reg = 0x77004, 4138*d9db07f0SSricharan R .clkr = { 4139*d9db07f0SSricharan R .enable_reg = 0x77004, 4140*d9db07f0SSricharan R .enable_mask = BIT(0), 4141*d9db07f0SSricharan R .hw.init = &(struct clk_init_data){ 4142*d9db07f0SSricharan R .name = "gcc_dcc_clk", 4143*d9db07f0SSricharan R .parent_hws = (const struct clk_hw *[]){ 4144*d9db07f0SSricharan R &pcnoc_bfdcd_clk_src.clkr.hw }, 4145*d9db07f0SSricharan R .num_parents = 1, 4146*d9db07f0SSricharan R .flags = CLK_SET_RATE_PARENT, 4147*d9db07f0SSricharan R .ops = &clk_branch2_ops, 4148*d9db07f0SSricharan R }, 4149*d9db07f0SSricharan R }, 4150*d9db07f0SSricharan R }; 4151*d9db07f0SSricharan R 4152*d9db07f0SSricharan R static const struct alpha_pll_config ubi32_pll_config = { 4153*d9db07f0SSricharan R .l = 0x3e, 4154*d9db07f0SSricharan R .alpha = 0x57, 4155*d9db07f0SSricharan R .config_ctl_val = 0x240d6aa8, 4156*d9db07f0SSricharan R .config_ctl_hi_val = 0x3c2, 4157*d9db07f0SSricharan R .main_output_mask = BIT(0), 4158*d9db07f0SSricharan R .aux_output_mask = BIT(1), 4159*d9db07f0SSricharan R .pre_div_val = 0x0, 4160*d9db07f0SSricharan R .pre_div_mask = BIT(12), 4161*d9db07f0SSricharan R .post_div_val = 0x0, 4162*d9db07f0SSricharan R .post_div_mask = GENMASK(9, 8), 4163*d9db07f0SSricharan R }; 4164*d9db07f0SSricharan R 4165*d9db07f0SSricharan R static const struct alpha_pll_config nss_crypto_pll_config = { 4166*d9db07f0SSricharan R .l = 0x32, 4167*d9db07f0SSricharan R .alpha = 0x0, 4168*d9db07f0SSricharan R .alpha_hi = 0x0, 4169*d9db07f0SSricharan R .config_ctl_val = 0x4001055b, 4170*d9db07f0SSricharan R .main_output_mask = BIT(0), 4171*d9db07f0SSricharan R .pre_div_val = 0x0, 4172*d9db07f0SSricharan R .pre_div_mask = GENMASK(14, 12), 4173*d9db07f0SSricharan R .post_div_val = 0x1 << 8, 4174*d9db07f0SSricharan R .post_div_mask = GENMASK(11, 8), 4175*d9db07f0SSricharan R .vco_mask = GENMASK(21, 20), 4176*d9db07f0SSricharan R .vco_val = 0x0, 4177*d9db07f0SSricharan R .alpha_en_mask = BIT(24), 4178*d9db07f0SSricharan R }; 4179*d9db07f0SSricharan R 4180*d9db07f0SSricharan R static struct clk_hw *gcc_ipq6018_hws[] = { 4181*d9db07f0SSricharan R &gpll0_out_main_div2.hw, 4182*d9db07f0SSricharan R &gcc_xo_div4_clk_src.hw, 4183*d9db07f0SSricharan R &nss_ppe_cdiv_clk_src.hw, 4184*d9db07f0SSricharan R &gpll6_out_main_div2.hw, 4185*d9db07f0SSricharan R &qdss_dap_sync_clk_src.hw, 4186*d9db07f0SSricharan R &qdss_tsctr_div2_clk_src.hw, 4187*d9db07f0SSricharan R }; 4188*d9db07f0SSricharan R 4189*d9db07f0SSricharan R static struct clk_regmap *gcc_ipq6018_clks[] = { 4190*d9db07f0SSricharan R [GPLL0_MAIN] = &gpll0_main.clkr, 4191*d9db07f0SSricharan R [GPLL0] = &gpll0.clkr, 4192*d9db07f0SSricharan R [UBI32_PLL_MAIN] = &ubi32_pll_main.clkr, 4193*d9db07f0SSricharan R [UBI32_PLL] = &ubi32_pll.clkr, 4194*d9db07f0SSricharan R [GPLL6_MAIN] = &gpll6_main.clkr, 4195*d9db07f0SSricharan R [GPLL6] = &gpll6.clkr, 4196*d9db07f0SSricharan R [GPLL4_MAIN] = &gpll4_main.clkr, 4197*d9db07f0SSricharan R [GPLL4] = &gpll4.clkr, 4198*d9db07f0SSricharan R [PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr, 4199*d9db07f0SSricharan R [GPLL2_MAIN] = &gpll2_main.clkr, 4200*d9db07f0SSricharan R [GPLL2] = &gpll2.clkr, 4201*d9db07f0SSricharan R [NSS_CRYPTO_PLL_MAIN] = &nss_crypto_pll_main.clkr, 4202*d9db07f0SSricharan R [NSS_CRYPTO_PLL] = &nss_crypto_pll.clkr, 4203*d9db07f0SSricharan R [QDSS_TSCTR_CLK_SRC] = &qdss_tsctr_clk_src.clkr, 4204*d9db07f0SSricharan R [QDSS_AT_CLK_SRC] = &qdss_at_clk_src.clkr, 4205*d9db07f0SSricharan R [NSS_PPE_CLK_SRC] = &nss_ppe_clk_src.clkr, 4206*d9db07f0SSricharan R [GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr, 4207*d9db07f0SSricharan R [SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr, 4208*d9db07f0SSricharan R [SNOC_NSSNOC_BFDCD_CLK_SRC] = &snoc_nssnoc_bfdcd_clk_src.clkr, 4209*d9db07f0SSricharan R [NSS_CE_CLK_SRC] = &nss_ce_clk_src.clkr, 4210*d9db07f0SSricharan R [GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr, 4211*d9db07f0SSricharan R [APSS_AHB_CLK_SRC] = &apss_ahb_clk_src.clkr, 4212*d9db07f0SSricharan R [NSS_PORT5_RX_CLK_SRC] = &nss_port5_rx_clk_src.clkr, 4213*d9db07f0SSricharan R [NSS_PORT5_TX_CLK_SRC] = &nss_port5_tx_clk_src.clkr, 4214*d9db07f0SSricharan R [UBI32_MEM_NOC_BFDCD_CLK_SRC] = &ubi32_mem_noc_bfdcd_clk_src.clkr, 4215*d9db07f0SSricharan R [PCIE0_AXI_CLK_SRC] = &pcie0_axi_clk_src.clkr, 4216*d9db07f0SSricharan R [USB0_MASTER_CLK_SRC] = &usb0_master_clk_src.clkr, 4217*d9db07f0SSricharan R [APSS_AHB_POSTDIV_CLK_SRC] = &apss_ahb_postdiv_clk_src.clkr, 4218*d9db07f0SSricharan R [NSS_PORT1_RX_CLK_SRC] = &nss_port1_rx_clk_src.clkr, 4219*d9db07f0SSricharan R [NSS_PORT1_TX_CLK_SRC] = &nss_port1_tx_clk_src.clkr, 4220*d9db07f0SSricharan R [NSS_PORT2_RX_CLK_SRC] = &nss_port2_rx_clk_src.clkr, 4221*d9db07f0SSricharan R [NSS_PORT2_TX_CLK_SRC] = &nss_port2_tx_clk_src.clkr, 4222*d9db07f0SSricharan R [NSS_PORT3_RX_CLK_SRC] = &nss_port3_rx_clk_src.clkr, 4223*d9db07f0SSricharan R [NSS_PORT3_TX_CLK_SRC] = &nss_port3_tx_clk_src.clkr, 4224*d9db07f0SSricharan R [NSS_PORT4_RX_CLK_SRC] = &nss_port4_rx_clk_src.clkr, 4225*d9db07f0SSricharan R [NSS_PORT4_TX_CLK_SRC] = &nss_port4_tx_clk_src.clkr, 4226*d9db07f0SSricharan R [NSS_PORT5_RX_DIV_CLK_SRC] = &nss_port5_rx_div_clk_src.clkr, 4227*d9db07f0SSricharan R [NSS_PORT5_TX_DIV_CLK_SRC] = &nss_port5_tx_div_clk_src.clkr, 4228*d9db07f0SSricharan R [APSS_AXI_CLK_SRC] = &apss_axi_clk_src.clkr, 4229*d9db07f0SSricharan R [NSS_CRYPTO_CLK_SRC] = &nss_crypto_clk_src.clkr, 4230*d9db07f0SSricharan R [NSS_PORT1_RX_DIV_CLK_SRC] = &nss_port1_rx_div_clk_src.clkr, 4231*d9db07f0SSricharan R [NSS_PORT1_TX_DIV_CLK_SRC] = &nss_port1_tx_div_clk_src.clkr, 4232*d9db07f0SSricharan R [NSS_PORT2_RX_DIV_CLK_SRC] = &nss_port2_rx_div_clk_src.clkr, 4233*d9db07f0SSricharan R [NSS_PORT2_TX_DIV_CLK_SRC] = &nss_port2_tx_div_clk_src.clkr, 4234*d9db07f0SSricharan R [NSS_PORT3_RX_DIV_CLK_SRC] = &nss_port3_rx_div_clk_src.clkr, 4235*d9db07f0SSricharan R [NSS_PORT3_TX_DIV_CLK_SRC] = &nss_port3_tx_div_clk_src.clkr, 4236*d9db07f0SSricharan R [NSS_PORT4_RX_DIV_CLK_SRC] = &nss_port4_rx_div_clk_src.clkr, 4237*d9db07f0SSricharan R [NSS_PORT4_TX_DIV_CLK_SRC] = &nss_port4_tx_div_clk_src.clkr, 4238*d9db07f0SSricharan R [NSS_UBI0_CLK_SRC] = &nss_ubi0_clk_src.clkr, 4239*d9db07f0SSricharan R [ADSS_PWM_CLK_SRC] = &adss_pwm_clk_src.clkr, 4240*d9db07f0SSricharan R [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr, 4241*d9db07f0SSricharan R [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr, 4242*d9db07f0SSricharan R [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr, 4243*d9db07f0SSricharan R [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr, 4244*d9db07f0SSricharan R [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr, 4245*d9db07f0SSricharan R [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr, 4246*d9db07f0SSricharan R [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr, 4247*d9db07f0SSricharan R [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr, 4248*d9db07f0SSricharan R [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr, 4249*d9db07f0SSricharan R [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr, 4250*d9db07f0SSricharan R [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr, 4251*d9db07f0SSricharan R [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr, 4252*d9db07f0SSricharan R [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr, 4253*d9db07f0SSricharan R [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr, 4254*d9db07f0SSricharan R [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr, 4255*d9db07f0SSricharan R [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr, 4256*d9db07f0SSricharan R [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr, 4257*d9db07f0SSricharan R [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr, 4258*d9db07f0SSricharan R [CRYPTO_CLK_SRC] = &crypto_clk_src.clkr, 4259*d9db07f0SSricharan R [GP1_CLK_SRC] = &gp1_clk_src.clkr, 4260*d9db07f0SSricharan R [GP2_CLK_SRC] = &gp2_clk_src.clkr, 4261*d9db07f0SSricharan R [GP3_CLK_SRC] = &gp3_clk_src.clkr, 4262*d9db07f0SSricharan R [NSS_UBI0_DIV_CLK_SRC] = &nss_ubi0_div_clk_src.clkr, 4263*d9db07f0SSricharan R [PCIE0_AUX_CLK_SRC] = &pcie0_aux_clk_src.clkr, 4264*d9db07f0SSricharan R [PCIE0_PIPE_CLK_SRC] = &pcie0_pipe_clk_src.clkr, 4265*d9db07f0SSricharan R [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr, 4266*d9db07f0SSricharan R [USB0_AUX_CLK_SRC] = &usb0_aux_clk_src.clkr, 4267*d9db07f0SSricharan R [USB0_MOCK_UTMI_CLK_SRC] = &usb0_mock_utmi_clk_src.clkr, 4268*d9db07f0SSricharan R [USB0_PIPE_CLK_SRC] = &usb0_pipe_clk_src.clkr, 4269*d9db07f0SSricharan R [USB1_MOCK_UTMI_CLK_SRC] = &usb1_mock_utmi_clk_src.clkr, 4270*d9db07f0SSricharan R [GCC_ADSS_PWM_CLK] = &gcc_adss_pwm_clk.clkr, 4271*d9db07f0SSricharan R [GCC_APSS_AHB_CLK] = &gcc_apss_ahb_clk.clkr, 4272*d9db07f0SSricharan R [GCC_APSS_AXI_CLK] = &gcc_apss_axi_clk.clkr, 4273*d9db07f0SSricharan R [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr, 4274*d9db07f0SSricharan R [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr, 4275*d9db07f0SSricharan R [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr, 4276*d9db07f0SSricharan R [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr, 4277*d9db07f0SSricharan R [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr, 4278*d9db07f0SSricharan R [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr, 4279*d9db07f0SSricharan R [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr, 4280*d9db07f0SSricharan R [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr, 4281*d9db07f0SSricharan R [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr, 4282*d9db07f0SSricharan R [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr, 4283*d9db07f0SSricharan R [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr, 4284*d9db07f0SSricharan R [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr, 4285*d9db07f0SSricharan R [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr, 4286*d9db07f0SSricharan R [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr, 4287*d9db07f0SSricharan R [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr, 4288*d9db07f0SSricharan R [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr, 4289*d9db07f0SSricharan R [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr, 4290*d9db07f0SSricharan R [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr, 4291*d9db07f0SSricharan R [GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr, 4292*d9db07f0SSricharan R [GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr, 4293*d9db07f0SSricharan R [GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr, 4294*d9db07f0SSricharan R [GCC_XO_CLK] = &gcc_xo_clk.clkr, 4295*d9db07f0SSricharan R [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 4296*d9db07f0SSricharan R [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 4297*d9db07f0SSricharan R [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 4298*d9db07f0SSricharan R [GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr, 4299*d9db07f0SSricharan R [GCC_CRYPTO_PPE_CLK] = &gcc_crypto_ppe_clk.clkr, 4300*d9db07f0SSricharan R [GCC_NSS_CE_APB_CLK] = &gcc_nss_ce_apb_clk.clkr, 4301*d9db07f0SSricharan R [GCC_NSS_CE_AXI_CLK] = &gcc_nss_ce_axi_clk.clkr, 4302*d9db07f0SSricharan R [GCC_NSS_CFG_CLK] = &gcc_nss_cfg_clk.clkr, 4303*d9db07f0SSricharan R [GCC_NSS_CRYPTO_CLK] = &gcc_nss_crypto_clk.clkr, 4304*d9db07f0SSricharan R [GCC_NSS_CSR_CLK] = &gcc_nss_csr_clk.clkr, 4305*d9db07f0SSricharan R [GCC_NSS_EDMA_CFG_CLK] = &gcc_nss_edma_cfg_clk.clkr, 4306*d9db07f0SSricharan R [GCC_NSS_EDMA_CLK] = &gcc_nss_edma_clk.clkr, 4307*d9db07f0SSricharan R [GCC_NSS_NOC_CLK] = &gcc_nss_noc_clk.clkr, 4308*d9db07f0SSricharan R [GCC_UBI0_UTCM_CLK] = &gcc_ubi0_utcm_clk.clkr, 4309*d9db07f0SSricharan R [GCC_SNOC_NSSNOC_CLK] = &gcc_snoc_nssnoc_clk.clkr, 4310*d9db07f0SSricharan R [GCC_NSS_PORT1_RX_CLK] = &gcc_nss_port1_rx_clk.clkr, 4311*d9db07f0SSricharan R [GCC_NSS_PORT1_TX_CLK] = &gcc_nss_port1_tx_clk.clkr, 4312*d9db07f0SSricharan R [GCC_NSS_PORT2_RX_CLK] = &gcc_nss_port2_rx_clk.clkr, 4313*d9db07f0SSricharan R [GCC_NSS_PORT2_TX_CLK] = &gcc_nss_port2_tx_clk.clkr, 4314*d9db07f0SSricharan R [GCC_NSS_PORT3_RX_CLK] = &gcc_nss_port3_rx_clk.clkr, 4315*d9db07f0SSricharan R [GCC_NSS_PORT3_TX_CLK] = &gcc_nss_port3_tx_clk.clkr, 4316*d9db07f0SSricharan R [GCC_NSS_PORT4_RX_CLK] = &gcc_nss_port4_rx_clk.clkr, 4317*d9db07f0SSricharan R [GCC_NSS_PORT4_TX_CLK] = &gcc_nss_port4_tx_clk.clkr, 4318*d9db07f0SSricharan R [GCC_NSS_PORT5_RX_CLK] = &gcc_nss_port5_rx_clk.clkr, 4319*d9db07f0SSricharan R [GCC_NSS_PORT5_TX_CLK] = &gcc_nss_port5_tx_clk.clkr, 4320*d9db07f0SSricharan R [GCC_NSS_PPE_CFG_CLK] = &gcc_nss_ppe_cfg_clk.clkr, 4321*d9db07f0SSricharan R [GCC_NSS_PPE_CLK] = &gcc_nss_ppe_clk.clkr, 4322*d9db07f0SSricharan R [GCC_NSS_PPE_IPE_CLK] = &gcc_nss_ppe_ipe_clk.clkr, 4323*d9db07f0SSricharan R [GCC_NSS_PTP_REF_CLK] = &gcc_nss_ptp_ref_clk.clkr, 4324*d9db07f0SSricharan R [GCC_NSSNOC_CE_APB_CLK] = &gcc_nssnoc_ce_apb_clk.clkr, 4325*d9db07f0SSricharan R [GCC_NSSNOC_CE_AXI_CLK] = &gcc_nssnoc_ce_axi_clk.clkr, 4326*d9db07f0SSricharan R [GCC_NSSNOC_CRYPTO_CLK] = &gcc_nssnoc_crypto_clk.clkr, 4327*d9db07f0SSricharan R [GCC_NSSNOC_PPE_CFG_CLK] = &gcc_nssnoc_ppe_cfg_clk.clkr, 4328*d9db07f0SSricharan R [GCC_NSSNOC_PPE_CLK] = &gcc_nssnoc_ppe_clk.clkr, 4329*d9db07f0SSricharan R [GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr, 4330*d9db07f0SSricharan R [GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr, 4331*d9db07f0SSricharan R [GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr, 4332*d9db07f0SSricharan R [GCC_NSSNOC_UBI0_AHB_CLK] = &gcc_nssnoc_ubi0_ahb_clk.clkr, 4333*d9db07f0SSricharan R [GCC_PORT1_MAC_CLK] = &gcc_port1_mac_clk.clkr, 4334*d9db07f0SSricharan R [GCC_PORT2_MAC_CLK] = &gcc_port2_mac_clk.clkr, 4335*d9db07f0SSricharan R [GCC_PORT3_MAC_CLK] = &gcc_port3_mac_clk.clkr, 4336*d9db07f0SSricharan R [GCC_PORT4_MAC_CLK] = &gcc_port4_mac_clk.clkr, 4337*d9db07f0SSricharan R [GCC_PORT5_MAC_CLK] = &gcc_port5_mac_clk.clkr, 4338*d9db07f0SSricharan R [GCC_UBI0_AHB_CLK] = &gcc_ubi0_ahb_clk.clkr, 4339*d9db07f0SSricharan R [GCC_UBI0_AXI_CLK] = &gcc_ubi0_axi_clk.clkr, 4340*d9db07f0SSricharan R [GCC_UBI0_NC_AXI_CLK] = &gcc_ubi0_nc_axi_clk.clkr, 4341*d9db07f0SSricharan R [GCC_UBI0_CORE_CLK] = &gcc_ubi0_core_clk.clkr, 4342*d9db07f0SSricharan R [GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr, 4343*d9db07f0SSricharan R [GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr, 4344*d9db07f0SSricharan R [GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr, 4345*d9db07f0SSricharan R [GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr, 4346*d9db07f0SSricharan R [GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr, 4347*d9db07f0SSricharan R [GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr, 4348*d9db07f0SSricharan R [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr, 4349*d9db07f0SSricharan R [GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr, 4350*d9db07f0SSricharan R [GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr, 4351*d9db07f0SSricharan R [GCC_QPIC_CLK] = &gcc_qpic_clk.clkr, 4352*d9db07f0SSricharan R [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 4353*d9db07f0SSricharan R [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 4354*d9db07f0SSricharan R [GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr, 4355*d9db07f0SSricharan R [GCC_UNIPHY0_PORT1_RX_CLK] = &gcc_uniphy0_port1_rx_clk.clkr, 4356*d9db07f0SSricharan R [GCC_UNIPHY0_PORT1_TX_CLK] = &gcc_uniphy0_port1_tx_clk.clkr, 4357*d9db07f0SSricharan R [GCC_UNIPHY0_PORT2_RX_CLK] = &gcc_uniphy0_port2_rx_clk.clkr, 4358*d9db07f0SSricharan R [GCC_UNIPHY0_PORT2_TX_CLK] = &gcc_uniphy0_port2_tx_clk.clkr, 4359*d9db07f0SSricharan R [GCC_UNIPHY0_PORT3_RX_CLK] = &gcc_uniphy0_port3_rx_clk.clkr, 4360*d9db07f0SSricharan R [GCC_UNIPHY0_PORT3_TX_CLK] = &gcc_uniphy0_port3_tx_clk.clkr, 4361*d9db07f0SSricharan R [GCC_UNIPHY0_PORT4_RX_CLK] = &gcc_uniphy0_port4_rx_clk.clkr, 4362*d9db07f0SSricharan R [GCC_UNIPHY0_PORT4_TX_CLK] = &gcc_uniphy0_port4_tx_clk.clkr, 4363*d9db07f0SSricharan R [GCC_UNIPHY0_PORT5_RX_CLK] = &gcc_uniphy0_port5_rx_clk.clkr, 4364*d9db07f0SSricharan R [GCC_UNIPHY0_PORT5_TX_CLK] = &gcc_uniphy0_port5_tx_clk.clkr, 4365*d9db07f0SSricharan R [GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr, 4366*d9db07f0SSricharan R [GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr, 4367*d9db07f0SSricharan R [GCC_UNIPHY1_PORT5_RX_CLK] = &gcc_uniphy1_port5_rx_clk.clkr, 4368*d9db07f0SSricharan R [GCC_UNIPHY1_PORT5_TX_CLK] = &gcc_uniphy1_port5_tx_clk.clkr, 4369*d9db07f0SSricharan R [GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr, 4370*d9db07f0SSricharan R [GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr, 4371*d9db07f0SSricharan R [GCC_SYS_NOC_USB0_AXI_CLK] = &gcc_sys_noc_usb0_axi_clk.clkr, 4372*d9db07f0SSricharan R [GCC_SNOC_BUS_TIMEOUT2_AHB_CLK] = &gcc_snoc_bus_timeout2_ahb_clk.clkr, 4373*d9db07f0SSricharan R [GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr, 4374*d9db07f0SSricharan R [GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr, 4375*d9db07f0SSricharan R [GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr, 4376*d9db07f0SSricharan R [GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr, 4377*d9db07f0SSricharan R [GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr, 4378*d9db07f0SSricharan R [GCC_USB1_MASTER_CLK] = &gcc_usb1_master_clk.clkr, 4379*d9db07f0SSricharan R [GCC_USB1_MOCK_UTMI_CLK] = &gcc_usb1_mock_utmi_clk.clkr, 4380*d9db07f0SSricharan R [GCC_USB1_PHY_CFG_AHB_CLK] = &gcc_usb1_phy_cfg_ahb_clk.clkr, 4381*d9db07f0SSricharan R [GCC_USB1_SLEEP_CLK] = &gcc_usb1_sleep_clk.clkr, 4382*d9db07f0SSricharan R [GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr, 4383*d9db07f0SSricharan R [GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr, 4384*d9db07f0SSricharan R [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr, 4385*d9db07f0SSricharan R [SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr, 4386*d9db07f0SSricharan R [GCC_DCC_CLK] = &gcc_dcc_clk.clkr, 4387*d9db07f0SSricharan R [PCIE0_RCHNG_CLK_SRC] = &pcie0_rchng_clk_src.clkr, 4388*d9db07f0SSricharan R [GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr, 4389*d9db07f0SSricharan R [PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr, 4390*d9db07f0SSricharan R [WCSS_AHB_CLK_SRC] = &wcss_ahb_clk_src.clkr, 4391*d9db07f0SSricharan R [Q6_AXI_CLK_SRC] = &q6_axi_clk_src.clkr, 4392*d9db07f0SSricharan R [RBCPR_WCSS_CLK_SRC] = &rbcpr_wcss_clk_src.clkr, 4393*d9db07f0SSricharan R [GCC_LPASS_CORE_AXIM_CLK] = &gcc_lpass_core_axim_clk.clkr, 4394*d9db07f0SSricharan R [LPASS_CORE_AXIM_CLK_SRC] = &lpass_core_axim_clk_src.clkr, 4395*d9db07f0SSricharan R [GCC_LPASS_SNOC_CFG_CLK] = &gcc_lpass_snoc_cfg_clk.clkr, 4396*d9db07f0SSricharan R [LPASS_SNOC_CFG_CLK_SRC] = &lpass_snoc_cfg_clk_src.clkr, 4397*d9db07f0SSricharan R [GCC_LPASS_Q6_AXIM_CLK] = &gcc_lpass_q6_axim_clk.clkr, 4398*d9db07f0SSricharan R [LPASS_Q6_AXIM_CLK_SRC] = &lpass_q6_axim_clk_src.clkr, 4399*d9db07f0SSricharan R [GCC_LPASS_Q6_ATBM_AT_CLK] = &gcc_lpass_q6_atbm_at_clk.clkr, 4400*d9db07f0SSricharan R [GCC_LPASS_Q6_PCLKDBG_CLK] = &gcc_lpass_q6_pclkdbg_clk.clkr, 4401*d9db07f0SSricharan R [GCC_LPASS_Q6SS_TSCTR_1TO2_CLK] = &gcc_lpass_q6ss_tsctr_1to2_clk.clkr, 4402*d9db07f0SSricharan R [GCC_LPASS_Q6SS_TRIG_CLK] = &gcc_lpass_q6ss_trig_clk.clkr, 4403*d9db07f0SSricharan R [GCC_LPASS_TBU_CLK] = &gcc_lpass_tbu_clk.clkr, 4404*d9db07f0SSricharan R [GCC_PCNOC_LPASS_CLK] = &gcc_pcnoc_lpass_clk.clkr, 4405*d9db07f0SSricharan R [GCC_MEM_NOC_UBI32_CLK] = &gcc_mem_noc_ubi32_clk.clkr, 4406*d9db07f0SSricharan R [GCC_MEM_NOC_LPASS_CLK] = &gcc_mem_noc_lpass_clk.clkr, 4407*d9db07f0SSricharan R [GCC_SNOC_LPASS_CFG_CLK] = &gcc_snoc_lpass_cfg_clk.clkr, 4408*d9db07f0SSricharan R [QDSS_STM_CLK_SRC] = &qdss_stm_clk_src.clkr, 4409*d9db07f0SSricharan R [QDSS_TRACECLKIN_CLK_SRC] = &qdss_traceclkin_clk_src.clkr, 4410*d9db07f0SSricharan R }; 4411*d9db07f0SSricharan R 4412*d9db07f0SSricharan R static const struct qcom_reset_map gcc_ipq6018_resets[] = { 4413*d9db07f0SSricharan R [GCC_BLSP1_BCR] = { 0x01000, 0 }, 4414*d9db07f0SSricharan R [GCC_BLSP1_QUP1_BCR] = { 0x02000, 0 }, 4415*d9db07f0SSricharan R [GCC_BLSP1_UART1_BCR] = { 0x02038, 0 }, 4416*d9db07f0SSricharan R [GCC_BLSP1_QUP2_BCR] = { 0x03008, 0 }, 4417*d9db07f0SSricharan R [GCC_BLSP1_UART2_BCR] = { 0x03028, 0 }, 4418*d9db07f0SSricharan R [GCC_BLSP1_QUP3_BCR] = { 0x04008, 0 }, 4419*d9db07f0SSricharan R [GCC_BLSP1_UART3_BCR] = { 0x04028, 0 }, 4420*d9db07f0SSricharan R [GCC_BLSP1_QUP4_BCR] = { 0x05008, 0 }, 4421*d9db07f0SSricharan R [GCC_BLSP1_UART4_BCR] = { 0x05028, 0 }, 4422*d9db07f0SSricharan R [GCC_BLSP1_QUP5_BCR] = { 0x06008, 0 }, 4423*d9db07f0SSricharan R [GCC_BLSP1_UART5_BCR] = { 0x06028, 0 }, 4424*d9db07f0SSricharan R [GCC_BLSP1_QUP6_BCR] = { 0x07008, 0 }, 4425*d9db07f0SSricharan R [GCC_BLSP1_UART6_BCR] = { 0x07028, 0 }, 4426*d9db07f0SSricharan R [GCC_IMEM_BCR] = { 0x0e000, 0 }, 4427*d9db07f0SSricharan R [GCC_SMMU_BCR] = { 0x12000, 0 }, 4428*d9db07f0SSricharan R [GCC_APSS_TCU_BCR] = { 0x12050, 0 }, 4429*d9db07f0SSricharan R [GCC_SMMU_XPU_BCR] = { 0x12054, 0 }, 4430*d9db07f0SSricharan R [GCC_PCNOC_TBU_BCR] = { 0x12058, 0 }, 4431*d9db07f0SSricharan R [GCC_SMMU_CFG_BCR] = { 0x1208c, 0 }, 4432*d9db07f0SSricharan R [GCC_PRNG_BCR] = { 0x13000, 0 }, 4433*d9db07f0SSricharan R [GCC_BOOT_ROM_BCR] = { 0x13008, 0 }, 4434*d9db07f0SSricharan R [GCC_CRYPTO_BCR] = { 0x16000, 0 }, 4435*d9db07f0SSricharan R [GCC_WCSS_BCR] = { 0x18000, 0 }, 4436*d9db07f0SSricharan R [GCC_WCSS_Q6_BCR] = { 0x18100, 0 }, 4437*d9db07f0SSricharan R [GCC_NSS_BCR] = { 0x19000, 0 }, 4438*d9db07f0SSricharan R [GCC_SEC_CTRL_BCR] = { 0x1a000, 0 }, 4439*d9db07f0SSricharan R [GCC_ADSS_BCR] = { 0x1c000, 0 }, 4440*d9db07f0SSricharan R [GCC_DDRSS_BCR] = { 0x1e000, 0 }, 4441*d9db07f0SSricharan R [GCC_SYSTEM_NOC_BCR] = { 0x26000, 0 }, 4442*d9db07f0SSricharan R [GCC_PCNOC_BCR] = { 0x27018, 0 }, 4443*d9db07f0SSricharan R [GCC_TCSR_BCR] = { 0x28000, 0 }, 4444*d9db07f0SSricharan R [GCC_QDSS_BCR] = { 0x29000, 0 }, 4445*d9db07f0SSricharan R [GCC_DCD_BCR] = { 0x2a000, 0 }, 4446*d9db07f0SSricharan R [GCC_MSG_RAM_BCR] = { 0x2b000, 0 }, 4447*d9db07f0SSricharan R [GCC_MPM_BCR] = { 0x2c000, 0 }, 4448*d9db07f0SSricharan R [GCC_SPDM_BCR] = { 0x2f000, 0 }, 4449*d9db07f0SSricharan R [GCC_RBCPR_BCR] = { 0x33000, 0 }, 4450*d9db07f0SSricharan R [GCC_RBCPR_MX_BCR] = { 0x33014, 0 }, 4451*d9db07f0SSricharan R [GCC_TLMM_BCR] = { 0x34000, 0 }, 4452*d9db07f0SSricharan R [GCC_RBCPR_WCSS_BCR] = { 0x3a000, 0 }, 4453*d9db07f0SSricharan R [GCC_USB0_PHY_BCR] = { 0x3e034, 0 }, 4454*d9db07f0SSricharan R [GCC_USB3PHY_0_PHY_BCR] = { 0x3e03c, 0 }, 4455*d9db07f0SSricharan R [GCC_USB0_BCR] = { 0x3e070, 0 }, 4456*d9db07f0SSricharan R [GCC_USB1_BCR] = { 0x3f070, 0 }, 4457*d9db07f0SSricharan R [GCC_QUSB2_0_PHY_BCR] = { 0x4103c, 0 }, 4458*d9db07f0SSricharan R [GCC_QUSB2_1_PHY_BCR] = { 0x41040, 0 }, 4459*d9db07f0SSricharan R [GCC_SDCC1_BCR] = { 0x42000, 0 }, 4460*d9db07f0SSricharan R [GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x47000, 0 }, 4461*d9db07f0SSricharan R [GCC_SNOC_BUS_TIMEOUT1_BCR] = { 0x47008, 0 }, 4462*d9db07f0SSricharan R [GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x47010, 0 }, 4463*d9db07f0SSricharan R [GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x48000, 0 }, 4464*d9db07f0SSricharan R [GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x48008, 0 }, 4465*d9db07f0SSricharan R [GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x48010, 0 }, 4466*d9db07f0SSricharan R [GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x48018, 0 }, 4467*d9db07f0SSricharan R [GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x48020, 0 }, 4468*d9db07f0SSricharan R [GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x48028, 0 }, 4469*d9db07f0SSricharan R [GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x48030, 0 }, 4470*d9db07f0SSricharan R [GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x48038, 0 }, 4471*d9db07f0SSricharan R [GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x48040, 0 }, 4472*d9db07f0SSricharan R [GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x48048, 0 }, 4473*d9db07f0SSricharan R [GCC_UNIPHY0_BCR] = { 0x56000, 0 }, 4474*d9db07f0SSricharan R [GCC_UNIPHY1_BCR] = { 0x56100, 0 }, 4475*d9db07f0SSricharan R [GCC_CMN_12GPLL_BCR] = { 0x56300, 0 }, 4476*d9db07f0SSricharan R [GCC_QPIC_BCR] = { 0x57018, 0 }, 4477*d9db07f0SSricharan R [GCC_MDIO_BCR] = { 0x58000, 0 }, 4478*d9db07f0SSricharan R [GCC_WCSS_CORE_TBU_BCR] = { 0x66000, 0 }, 4479*d9db07f0SSricharan R [GCC_WCSS_Q6_TBU_BCR] = { 0x67000, 0 }, 4480*d9db07f0SSricharan R [GCC_USB0_TBU_BCR] = { 0x6a000, 0 }, 4481*d9db07f0SSricharan R [GCC_PCIE0_TBU_BCR] = { 0x6b000, 0 }, 4482*d9db07f0SSricharan R [GCC_NSS_NOC_TBU_BCR] = { 0x6e000, 0 }, 4483*d9db07f0SSricharan R [GCC_PCIE0_BCR] = { 0x75004, 0 }, 4484*d9db07f0SSricharan R [GCC_PCIE0_PHY_BCR] = { 0x75038, 0 }, 4485*d9db07f0SSricharan R [GCC_PCIE0PHY_PHY_BCR] = { 0x7503c, 0 }, 4486*d9db07f0SSricharan R [GCC_PCIE0_LINK_DOWN_BCR] = { 0x75044, 0 }, 4487*d9db07f0SSricharan R [GCC_DCC_BCR] = { 0x77000, 0 }, 4488*d9db07f0SSricharan R [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x78000, 0 }, 4489*d9db07f0SSricharan R [GCC_SMMU_CATS_BCR] = { 0x7c000, 0 }, 4490*d9db07f0SSricharan R [GCC_UBI0_AXI_ARES] = { 0x68010, 0 }, 4491*d9db07f0SSricharan R [GCC_UBI0_AHB_ARES] = { 0x68010, 1 }, 4492*d9db07f0SSricharan R [GCC_UBI0_NC_AXI_ARES] = { 0x68010, 2 }, 4493*d9db07f0SSricharan R [GCC_UBI0_DBG_ARES] = { 0x68010, 3 }, 4494*d9db07f0SSricharan R [GCC_UBI0_CORE_CLAMP_ENABLE] = { 0x68010, 4 }, 4495*d9db07f0SSricharan R [GCC_UBI0_CLKRST_CLAMP_ENABLE] = { 0x68010, 5 }, 4496*d9db07f0SSricharan R [GCC_UBI0_UTCM_ARES] = { 0x68010, 6 }, 4497*d9db07f0SSricharan R [GCC_UBI0_CORE_ARES] = { 0x68010, 7 }, 4498*d9db07f0SSricharan R [GCC_NSS_CFG_ARES] = { 0x68010, 16 }, 4499*d9db07f0SSricharan R [GCC_NSS_NOC_ARES] = { 0x68010, 18 }, 4500*d9db07f0SSricharan R [GCC_NSS_CRYPTO_ARES] = { 0x68010, 19 }, 4501*d9db07f0SSricharan R [GCC_NSS_CSR_ARES] = { 0x68010, 20 }, 4502*d9db07f0SSricharan R [GCC_NSS_CE_APB_ARES] = { 0x68010, 21 }, 4503*d9db07f0SSricharan R [GCC_NSS_CE_AXI_ARES] = { 0x68010, 22 }, 4504*d9db07f0SSricharan R [GCC_NSSNOC_CE_APB_ARES] = { 0x68010, 23 }, 4505*d9db07f0SSricharan R [GCC_NSSNOC_CE_AXI_ARES] = { 0x68010, 24 }, 4506*d9db07f0SSricharan R [GCC_NSSNOC_UBI0_AHB_ARES] = { 0x68010, 25 }, 4507*d9db07f0SSricharan R [GCC_NSSNOC_SNOC_ARES] = { 0x68010, 27 }, 4508*d9db07f0SSricharan R [GCC_NSSNOC_CRYPTO_ARES] = { 0x68010, 28 }, 4509*d9db07f0SSricharan R [GCC_NSSNOC_ATB_ARES] = { 0x68010, 29 }, 4510*d9db07f0SSricharan R [GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x68010, 30 }, 4511*d9db07f0SSricharan R [GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x68010, 31 }, 4512*d9db07f0SSricharan R [GCC_PCIE0_PIPE_ARES] = { 0x75040, 0 }, 4513*d9db07f0SSricharan R [GCC_PCIE0_SLEEP_ARES] = { 0x75040, 1 }, 4514*d9db07f0SSricharan R [GCC_PCIE0_CORE_STICKY_ARES] = { 0x75040, 2 }, 4515*d9db07f0SSricharan R [GCC_PCIE0_AXI_MASTER_ARES] = { 0x75040, 3 }, 4516*d9db07f0SSricharan R [GCC_PCIE0_AXI_SLAVE_ARES] = { 0x75040, 4 }, 4517*d9db07f0SSricharan R [GCC_PCIE0_AHB_ARES] = { 0x75040, 5 }, 4518*d9db07f0SSricharan R [GCC_PCIE0_AXI_MASTER_STICKY_ARES] = { 0x75040, 6 }, 4519*d9db07f0SSricharan R [GCC_PCIE0_AXI_SLAVE_STICKY_ARES] = { 0x75040, 7 }, 4520*d9db07f0SSricharan R [GCC_PPE_FULL_RESET] = { 0x68014, 0 }, 4521*d9db07f0SSricharan R [GCC_UNIPHY0_SOFT_RESET] = { 0x56004, 0 }, 4522*d9db07f0SSricharan R [GCC_UNIPHY0_XPCS_RESET] = { 0x56004, 2 }, 4523*d9db07f0SSricharan R [GCC_UNIPHY1_SOFT_RESET] = { 0x56104, 0 }, 4524*d9db07f0SSricharan R [GCC_UNIPHY1_XPCS_RESET] = { 0x56104, 2 }, 4525*d9db07f0SSricharan R [GCC_EDMA_HW_RESET] = { 0x68014, 0 }, 4526*d9db07f0SSricharan R [GCC_NSSPORT1_RESET] = { 0x68014, 0 }, 4527*d9db07f0SSricharan R [GCC_NSSPORT2_RESET] = { 0x68014, 0 }, 4528*d9db07f0SSricharan R [GCC_NSSPORT3_RESET] = { 0x68014, 0 }, 4529*d9db07f0SSricharan R [GCC_NSSPORT4_RESET] = { 0x68014, 0 }, 4530*d9db07f0SSricharan R [GCC_NSSPORT5_RESET] = { 0x68014, 0 }, 4531*d9db07f0SSricharan R [GCC_UNIPHY0_PORT1_ARES] = { 0x56004, 0 }, 4532*d9db07f0SSricharan R [GCC_UNIPHY0_PORT2_ARES] = { 0x56004, 0 }, 4533*d9db07f0SSricharan R [GCC_UNIPHY0_PORT3_ARES] = { 0x56004, 0 }, 4534*d9db07f0SSricharan R [GCC_UNIPHY0_PORT4_ARES] = { 0x56004, 0 }, 4535*d9db07f0SSricharan R [GCC_UNIPHY0_PORT5_ARES] = { 0x56004, 0 }, 4536*d9db07f0SSricharan R [GCC_UNIPHY0_PORT_4_5_RESET] = { 0x56004, 0 }, 4537*d9db07f0SSricharan R [GCC_UNIPHY0_PORT_4_RESET] = { 0x56004, 0 }, 4538*d9db07f0SSricharan R [GCC_LPASS_BCR] = {0x1F000, 0}, 4539*d9db07f0SSricharan R [GCC_UBI32_TBU_BCR] = {0x65000, 0}, 4540*d9db07f0SSricharan R [GCC_LPASS_TBU_BCR] = {0x6C000, 0}, 4541*d9db07f0SSricharan R [GCC_WCSSAON_RESET] = {0x59010, 0}, 4542*d9db07f0SSricharan R [GCC_LPASS_Q6_AXIM_ARES] = {0x1F004, 0}, 4543*d9db07f0SSricharan R [GCC_LPASS_Q6SS_TSCTR_1TO2_ARES] = {0x1F004, 1}, 4544*d9db07f0SSricharan R [GCC_LPASS_Q6SS_TRIG_ARES] = {0x1F004, 2}, 4545*d9db07f0SSricharan R [GCC_LPASS_Q6_ATBM_AT_ARES] = {0x1F004, 3}, 4546*d9db07f0SSricharan R [GCC_LPASS_Q6_PCLKDBG_ARES] = {0x1F004, 4}, 4547*d9db07f0SSricharan R [GCC_LPASS_CORE_AXIM_ARES] = {0x1F004, 5}, 4548*d9db07f0SSricharan R [GCC_LPASS_SNOC_CFG_ARES] = {0x1F004, 6}, 4549*d9db07f0SSricharan R [GCC_WCSS_DBG_ARES] = {0x59008, 0}, 4550*d9db07f0SSricharan R [GCC_WCSS_ECAHB_ARES] = {0x59008, 1}, 4551*d9db07f0SSricharan R [GCC_WCSS_ACMT_ARES] = {0x59008, 2}, 4552*d9db07f0SSricharan R [GCC_WCSS_DBG_BDG_ARES] = {0x59008, 3}, 4553*d9db07f0SSricharan R [GCC_WCSS_AHB_S_ARES] = {0x59008, 4}, 4554*d9db07f0SSricharan R [GCC_WCSS_AXI_M_ARES] = {0x59008, 5}, 4555*d9db07f0SSricharan R [GCC_Q6SS_DBG_ARES] = {0x59110, 0}, 4556*d9db07f0SSricharan R [GCC_Q6_AHB_S_ARES] = {0x59110, 1}, 4557*d9db07f0SSricharan R [GCC_Q6_AHB_ARES] = {0x59110, 2}, 4558*d9db07f0SSricharan R [GCC_Q6_AXIM2_ARES] = {0x59110, 3}, 4559*d9db07f0SSricharan R [GCC_Q6_AXIM_ARES] = {0x59110, 4}, 4560*d9db07f0SSricharan R }; 4561*d9db07f0SSricharan R 4562*d9db07f0SSricharan R static const struct of_device_id gcc_ipq6018_match_table[] = { 4563*d9db07f0SSricharan R { .compatible = "qcom,gcc-ipq6018" }, 4564*d9db07f0SSricharan R { } 4565*d9db07f0SSricharan R }; 4566*d9db07f0SSricharan R MODULE_DEVICE_TABLE(of, gcc_ipq6018_match_table); 4567*d9db07f0SSricharan R 4568*d9db07f0SSricharan R static const struct regmap_config gcc_ipq6018_regmap_config = { 4569*d9db07f0SSricharan R .reg_bits = 32, 4570*d9db07f0SSricharan R .reg_stride = 4, 4571*d9db07f0SSricharan R .val_bits = 32, 4572*d9db07f0SSricharan R .max_register = 0x7fffc, 4573*d9db07f0SSricharan R .fast_io = true, 4574*d9db07f0SSricharan R }; 4575*d9db07f0SSricharan R 4576*d9db07f0SSricharan R static const struct qcom_cc_desc gcc_ipq6018_desc = { 4577*d9db07f0SSricharan R .config = &gcc_ipq6018_regmap_config, 4578*d9db07f0SSricharan R .clks = gcc_ipq6018_clks, 4579*d9db07f0SSricharan R .num_clks = ARRAY_SIZE(gcc_ipq6018_clks), 4580*d9db07f0SSricharan R .resets = gcc_ipq6018_resets, 4581*d9db07f0SSricharan R .num_resets = ARRAY_SIZE(gcc_ipq6018_resets), 4582*d9db07f0SSricharan R .clk_hws = gcc_ipq6018_hws, 4583*d9db07f0SSricharan R .num_clk_hws = ARRAY_SIZE(gcc_ipq6018_hws), 4584*d9db07f0SSricharan R }; 4585*d9db07f0SSricharan R 4586*d9db07f0SSricharan R static int gcc_ipq6018_probe(struct platform_device *pdev) 4587*d9db07f0SSricharan R { 4588*d9db07f0SSricharan R struct regmap *regmap; 4589*d9db07f0SSricharan R 4590*d9db07f0SSricharan R regmap = qcom_cc_map(pdev, &gcc_ipq6018_desc); 4591*d9db07f0SSricharan R if (IS_ERR(regmap)) 4592*d9db07f0SSricharan R return PTR_ERR(regmap); 4593*d9db07f0SSricharan R 4594*d9db07f0SSricharan R /* Disable SW_COLLAPSE for USB0 GDSCR */ 4595*d9db07f0SSricharan R regmap_update_bits(regmap, 0x3e078, BIT(0), 0x0); 4596*d9db07f0SSricharan R /* Enable SW_OVERRIDE for USB0 GDSCR */ 4597*d9db07f0SSricharan R regmap_update_bits(regmap, 0x3e078, BIT(2), BIT(2)); 4598*d9db07f0SSricharan R /* Disable SW_COLLAPSE for USB1 GDSCR */ 4599*d9db07f0SSricharan R regmap_update_bits(regmap, 0x3f078, BIT(0), 0x0); 4600*d9db07f0SSricharan R /* Enable SW_OVERRIDE for USB1 GDSCR */ 4601*d9db07f0SSricharan R regmap_update_bits(regmap, 0x3f078, BIT(2), BIT(2)); 4602*d9db07f0SSricharan R 4603*d9db07f0SSricharan R /* SW Workaround for UBI Huyara PLL */ 4604*d9db07f0SSricharan R regmap_update_bits(regmap, 0x2501c, BIT(26), BIT(26)); 4605*d9db07f0SSricharan R 4606*d9db07f0SSricharan R clk_alpha_pll_configure(&ubi32_pll_main, regmap, &ubi32_pll_config); 4607*d9db07f0SSricharan R 4608*d9db07f0SSricharan R clk_alpha_pll_configure(&nss_crypto_pll_main, regmap, 4609*d9db07f0SSricharan R &nss_crypto_pll_config); 4610*d9db07f0SSricharan R 4611*d9db07f0SSricharan R return qcom_cc_really_probe(pdev, &gcc_ipq6018_desc, regmap); 4612*d9db07f0SSricharan R } 4613*d9db07f0SSricharan R 4614*d9db07f0SSricharan R static struct platform_driver gcc_ipq6018_driver = { 4615*d9db07f0SSricharan R .probe = gcc_ipq6018_probe, 4616*d9db07f0SSricharan R .driver = { 4617*d9db07f0SSricharan R .name = "qcom,gcc-ipq6018", 4618*d9db07f0SSricharan R .of_match_table = gcc_ipq6018_match_table, 4619*d9db07f0SSricharan R }, 4620*d9db07f0SSricharan R }; 4621*d9db07f0SSricharan R 4622*d9db07f0SSricharan R static int __init gcc_ipq6018_init(void) 4623*d9db07f0SSricharan R { 4624*d9db07f0SSricharan R return platform_driver_register(&gcc_ipq6018_driver); 4625*d9db07f0SSricharan R } 4626*d9db07f0SSricharan R core_initcall(gcc_ipq6018_init); 4627*d9db07f0SSricharan R 4628*d9db07f0SSricharan R static void __exit gcc_ipq6018_exit(void) 4629*d9db07f0SSricharan R { 4630*d9db07f0SSricharan R platform_driver_unregister(&gcc_ipq6018_driver); 4631*d9db07f0SSricharan R } 4632*d9db07f0SSricharan R module_exit(gcc_ipq6018_exit); 4633*d9db07f0SSricharan R 4634*d9db07f0SSricharan R MODULE_DESCRIPTION("Qualcomm Technologies, Inc. GCC IPQ6018 Driver"); 4635*d9db07f0SSricharan R MODULE_LICENSE("GPL v2"); 4636