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