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