1 From 86db870d9e00b71fb3bd2c8a1a72cda971d9a77d Mon Sep 17 00:00:00 2001
2 From: Devi Priya <quic_devipriy@quicinc.com>
3 Date: Fri, 25 Oct 2024 09:25:18 +0530
4 Subject: [PATCH 5/7] clk: qcom: Add NSS clock Controller driver for IPQ9574
6 Add Networking Sub System Clock Controller(NSSCC) driver for ipq9574 based
9 Reported-by: kernel test robot <lkp@intel.com>
10 Closes: https://lore.kernel.org/oe-kbuild-all/202410101431.tjpSRNTY-lkp@intel.com/
11 Signed-off-by: Devi Priya <quic_devipriy@quicinc.com>
12 Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
14 drivers/clk/qcom/Kconfig | 7 +
15 drivers/clk/qcom/Makefile | 1 +
16 drivers/clk/qcom/nsscc-ipq9574.c | 3080 ++++++++++++++++++++++++++++++
17 3 files changed, 3088 insertions(+)
18 create mode 100644 drivers/clk/qcom/nsscc-ipq9574.c
20 diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig
21 index a3e2a09e2105..b9a5cc9fd8c8 100644
22 --- a/drivers/clk/qcom/Kconfig
23 +++ b/drivers/clk/qcom/Kconfig
24 @@ -255,6 +255,13 @@ config IPQ_GCC_9574
25 i2c, USB, SD/eMMC, etc. Select this for the root clock
28 +config IPQ_NSSCC_9574
29 + tristate "IPQ9574 NSS Clock Controller"
30 + depends on ARM64 || COMPILE_TEST
31 + depends on IPQ_GCC_9574
33 + Support for NSS clock controller on ipq9574 devices.
35 config IPQ_NSSCC_QCA8K
36 tristate "QCA8K(QCA8386 or QCA8084) NSS Clock Controller"
38 diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile
39 index 2b378667a63f..65b825a54c45 100644
40 --- a/drivers/clk/qcom/Makefile
41 +++ b/drivers/clk/qcom/Makefile
42 @@ -36,6 +36,7 @@ obj-$(CONFIG_IPQ_GCC_6018) += gcc-ipq6018.o
43 obj-$(CONFIG_IPQ_GCC_806X) += gcc-ipq806x.o
44 obj-$(CONFIG_IPQ_GCC_8074) += gcc-ipq8074.o
45 obj-$(CONFIG_IPQ_GCC_9574) += gcc-ipq9574.o
46 +obj-$(CONFIG_IPQ_NSSCC_9574) += nsscc-ipq9574.o
47 obj-$(CONFIG_IPQ_LCC_806X) += lcc-ipq806x.o
48 obj-$(CONFIG_IPQ_NSSCC_QCA8K) += nsscc-qca8k.o
49 obj-$(CONFIG_MDM_GCC_9607) += gcc-mdm9607.o
50 diff --git a/drivers/clk/qcom/nsscc-ipq9574.c b/drivers/clk/qcom/nsscc-ipq9574.c
52 index 000000000000..d3e9aa391236
54 +++ b/drivers/clk/qcom/nsscc-ipq9574.c
56 +// SPDX-License-Identifier: GPL-2.0-only
58 + * Copyright (c) 2021, The Linux Foundation. All rights reserved.
59 + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
62 +#include <linux/clk.h>
63 +#include <linux/clk-provider.h>
64 +#include <linux/err.h>
65 +#include <linux/interconnect-provider.h>
66 +#include <linux/kernel.h>
67 +#include <linux/module.h>
68 +#include <linux/of.h>
69 +#include <linux/of_device.h>
70 +#include <linux/regmap.h>
71 +#include <linux/platform_device.h>
73 +#include <dt-bindings/clock/qcom,ipq9574-nsscc.h>
74 +#include <dt-bindings/interconnect/qcom,ipq9574.h>
75 +#include <dt-bindings/reset/qcom,ipq9574-nsscc.h>
77 +#include "clk-alpha-pll.h"
78 +#include "clk-branch.h"
81 +#include "clk-regmap.h"
82 +#include "clk-regmap-divider.h"
83 +#include "clk-regmap-mux.h"
87 +/* Need to match the order of clocks in DT binding */
91 + DT_BIAS_PLL_UBI_NC_CLK,
92 + DT_GCC_GPLL0_OUT_AUX,
93 + DT_UNIPHY0_NSS_RX_CLK,
94 + DT_UNIPHY0_NSS_TX_CLK,
95 + DT_UNIPHY1_NSS_RX_CLK,
96 + DT_UNIPHY1_NSS_TX_CLK,
97 + DT_UNIPHY2_NSS_RX_CLK,
98 + DT_UNIPHY2_NSS_TX_CLK,
104 + P_BIAS_PLL_UBI_NC_CLK,
105 + P_GCC_GPLL0_OUT_AUX,
106 + P_UBI32_PLL_OUT_MAIN,
107 + P_UNIPHY0_NSS_RX_CLK,
108 + P_UNIPHY0_NSS_TX_CLK,
109 + P_UNIPHY1_NSS_RX_CLK,
110 + P_UNIPHY1_NSS_TX_CLK,
111 + P_UNIPHY2_NSS_RX_CLK,
112 + P_UNIPHY2_NSS_TX_CLK,
115 +static const struct alpha_pll_config ubi32_pll_config = {
118 + .config_ctl_val = 0x200d4aa8,
119 + .config_ctl_hi_val = 0x3c,
120 + .main_output_mask = BIT(0),
121 + .aux_output_mask = BIT(1),
122 + .pre_div_val = 0x0,
123 + .pre_div_mask = BIT(12),
124 + .post_div_val = 0x0,
125 + .post_div_mask = GENMASK(9, 8),
126 + .alpha_en_mask = BIT(24),
127 + .test_ctl_val = 0x1c0000c0,
128 + .test_ctl_hi_val = 0x4000,
131 +static struct clk_alpha_pll ubi32_pll_main = {
133 + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_NSS_HUAYRA],
134 + .flags = SUPPORTS_DYNAMIC_UPDATE,
136 + .hw.init = &(const struct clk_init_data) {
137 + .name = "ubi32_pll_main",
138 + .parent_data = &(const struct clk_parent_data) {
142 + .ops = &clk_alpha_pll_huayra_ops,
147 +static struct clk_alpha_pll_postdiv ubi32_pll = {
149 + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_NSS_HUAYRA],
151 + .clkr.hw.init = &(const struct clk_init_data) {
152 + .name = "ubi32_pll",
153 + .parent_hws = (const struct clk_hw *[]) {
154 + &ubi32_pll_main.clkr.hw
157 + .ops = &clk_alpha_pll_postdiv_ro_ops,
158 + .flags = CLK_SET_RATE_PARENT,
162 +static const struct parent_map nss_cc_parent_map_0[] = {
164 + { P_BIAS_PLL_CC_CLK, 1 },
165 + { P_UNIPHY0_NSS_RX_CLK, 2 },
166 + { P_UNIPHY0_NSS_TX_CLK, 3 },
167 + { P_UNIPHY1_NSS_RX_CLK, 4 },
168 + { P_UNIPHY1_NSS_TX_CLK, 5 },
171 +static const struct clk_parent_data nss_cc_parent_data_0[] = {
172 + { .index = DT_XO },
173 + { .index = DT_BIAS_PLL_CC_CLK },
174 + { .index = DT_UNIPHY0_NSS_RX_CLK },
175 + { .index = DT_UNIPHY0_NSS_TX_CLK },
176 + { .index = DT_UNIPHY1_NSS_RX_CLK },
177 + { .index = DT_UNIPHY1_NSS_TX_CLK },
180 +static const struct parent_map nss_cc_parent_map_1[] = {
182 + { P_BIAS_PLL_UBI_NC_CLK, 1 },
183 + { P_GCC_GPLL0_OUT_AUX, 2 },
184 + { P_BIAS_PLL_CC_CLK, 6 },
187 +static const struct clk_parent_data nss_cc_parent_data_1[] = {
188 + { .index = DT_XO },
189 + { .index = DT_BIAS_PLL_UBI_NC_CLK },
190 + { .index = DT_GCC_GPLL0_OUT_AUX },
191 + { .index = DT_BIAS_PLL_CC_CLK },
194 +static const struct parent_map nss_cc_parent_map_2[] = {
196 + { P_UBI32_PLL_OUT_MAIN, 1 },
197 + { P_GCC_GPLL0_OUT_AUX, 2 },
200 +static const struct clk_parent_data nss_cc_parent_data_2[] = {
201 + { .index = DT_XO },
202 + { .hw = &ubi32_pll.clkr.hw },
203 + { .index = DT_GCC_GPLL0_OUT_AUX },
206 +static const struct parent_map nss_cc_parent_map_3[] = {
208 + { P_BIAS_PLL_CC_CLK, 1 },
209 + { P_GCC_GPLL0_OUT_AUX, 2 },
212 +static const struct clk_parent_data nss_cc_parent_data_3[] = {
213 + { .index = DT_XO },
214 + { .index = DT_BIAS_PLL_CC_CLK },
215 + { .index = DT_GCC_GPLL0_OUT_AUX },
218 +static const struct parent_map nss_cc_parent_map_4[] = {
220 + { P_BIAS_PLL_CC_CLK, 1 },
221 + { P_UNIPHY0_NSS_RX_CLK, 2 },
222 + { P_UNIPHY0_NSS_TX_CLK, 3 },
225 +static const struct clk_parent_data nss_cc_parent_data_4[] = {
226 + { .index = DT_XO },
227 + { .index = DT_BIAS_PLL_CC_CLK },
228 + { .index = DT_UNIPHY0_NSS_RX_CLK },
229 + { .index = DT_UNIPHY0_NSS_TX_CLK },
232 +static const struct parent_map nss_cc_parent_map_5[] = {
234 + { P_BIAS_PLL_CC_CLK, 1 },
235 + { P_UNIPHY2_NSS_RX_CLK, 2 },
236 + { P_UNIPHY2_NSS_TX_CLK, 3 },
239 +static const struct clk_parent_data nss_cc_parent_data_5[] = {
240 + { .index = DT_XO },
241 + { .index = DT_BIAS_PLL_CC_CLK },
242 + { .index = DT_UNIPHY2_NSS_RX_CLK },
243 + { .index = DT_UNIPHY2_NSS_TX_CLK },
246 +static const struct parent_map nss_cc_parent_map_6[] = {
248 + { P_GCC_GPLL0_OUT_AUX, 2 },
249 + { P_BIAS_PLL_CC_CLK, 6 },
252 +static const struct clk_parent_data nss_cc_parent_data_6[] = {
253 + { .index = DT_XO },
254 + { .index = DT_GCC_GPLL0_OUT_AUX },
255 + { .index = DT_BIAS_PLL_CC_CLK },
258 +static const struct parent_map nss_cc_parent_map_7[] = {
260 + { P_UBI32_PLL_OUT_MAIN, 1 },
261 + { P_GCC_GPLL0_OUT_AUX, 2 },
262 + { P_BIAS_PLL_CC_CLK, 6 },
265 +static const struct clk_parent_data nss_cc_parent_data_7[] = {
266 + { .index = DT_XO },
267 + { .hw = &ubi32_pll.clkr.hw },
268 + { .index = DT_GCC_GPLL0_OUT_AUX },
269 + { .index = DT_BIAS_PLL_CC_CLK },
272 +static const struct freq_tbl ftbl_nss_cc_ce_clk_src[] = {
273 + F(24000000, P_XO, 1, 0, 0),
274 + F(353000000, P_BIAS_PLL_UBI_NC_CLK, 1, 0, 0),
278 +static struct clk_rcg2 nss_cc_ce_clk_src = {
279 + .cmd_rcgr = 0x28404,
282 + .parent_map = nss_cc_parent_map_1,
283 + .freq_tbl = ftbl_nss_cc_ce_clk_src,
284 + .clkr.hw.init = &(const struct clk_init_data) {
285 + .name = "nss_cc_ce_clk_src",
286 + .parent_data = nss_cc_parent_data_1,
287 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
288 + .ops = &clk_rcg2_ops,
292 +static const struct freq_tbl ftbl_nss_cc_cfg_clk_src[] = {
293 + F(100000000, P_GCC_GPLL0_OUT_AUX, 8, 0, 0),
297 +static struct clk_rcg2 nss_cc_cfg_clk_src = {
298 + .cmd_rcgr = 0x28104,
301 + .parent_map = nss_cc_parent_map_3,
302 + .freq_tbl = ftbl_nss_cc_cfg_clk_src,
303 + .clkr.hw.init = &(const struct clk_init_data) {
304 + .name = "nss_cc_cfg_clk_src",
305 + .parent_data = nss_cc_parent_data_3,
306 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_3),
307 + .ops = &clk_rcg2_ops,
311 +static const struct freq_tbl ftbl_nss_cc_clc_clk_src[] = {
312 + F(533333333, P_GCC_GPLL0_OUT_AUX, 1.5, 0, 0),
316 +static struct clk_rcg2 nss_cc_clc_clk_src = {
317 + .cmd_rcgr = 0x28604,
320 + .parent_map = nss_cc_parent_map_6,
321 + .freq_tbl = ftbl_nss_cc_clc_clk_src,
322 + .clkr.hw.init = &(const struct clk_init_data) {
323 + .name = "nss_cc_clc_clk_src",
324 + .parent_data = nss_cc_parent_data_6,
325 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_6),
326 + .ops = &clk_rcg2_ops,
330 +static const struct freq_tbl ftbl_nss_cc_crypto_clk_src[] = {
331 + F(24000000, P_XO, 1, 0, 0),
332 + F(300000000, P_BIAS_PLL_CC_CLK, 4, 0, 0),
333 + F(600000000, P_BIAS_PLL_CC_CLK, 2, 0, 0),
337 +static struct clk_rcg2 nss_cc_crypto_clk_src = {
338 + .cmd_rcgr = 0x16008,
341 + .parent_map = nss_cc_parent_map_3,
342 + .freq_tbl = ftbl_nss_cc_crypto_clk_src,
343 + .clkr.hw.init = &(const struct clk_init_data) {
344 + .name = "nss_cc_crypto_clk_src",
345 + .parent_data = nss_cc_parent_data_3,
346 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_3),
347 + .flags = CLK_SET_RATE_PARENT,
348 + .ops = &clk_rcg2_ops,
352 +static struct clk_rcg2 nss_cc_haq_clk_src = {
353 + .cmd_rcgr = 0x28304,
356 + .parent_map = nss_cc_parent_map_1,
357 + .freq_tbl = ftbl_nss_cc_ce_clk_src,
358 + .clkr.hw.init = &(const struct clk_init_data) {
359 + .name = "nss_cc_haq_clk_src",
360 + .parent_data = nss_cc_parent_data_1,
361 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
362 + .ops = &clk_rcg2_ops,
366 +static struct clk_rcg2 nss_cc_imem_clk_src = {
367 + .cmd_rcgr = 0xe008,
370 + .parent_map = nss_cc_parent_map_1,
371 + .freq_tbl = ftbl_nss_cc_ce_clk_src,
372 + .clkr.hw.init = &(const struct clk_init_data) {
373 + .name = "nss_cc_imem_clk_src",
374 + .parent_data = nss_cc_parent_data_1,
375 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
376 + .ops = &clk_rcg2_ops,
380 +static const struct freq_tbl ftbl_nss_cc_int_cfg_clk_src[] = {
381 + F(200000000, P_GCC_GPLL0_OUT_AUX, 4, 0, 0),
385 +static struct clk_rcg2 nss_cc_int_cfg_clk_src = {
386 + .cmd_rcgr = 0x287b4,
389 + .parent_map = nss_cc_parent_map_3,
390 + .freq_tbl = ftbl_nss_cc_int_cfg_clk_src,
391 + .clkr.hw.init = &(const struct clk_init_data) {
392 + .name = "nss_cc_int_cfg_clk_src",
393 + .parent_data = nss_cc_parent_data_3,
394 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_3),
395 + .ops = &clk_rcg2_ops,
399 +static const struct freq_conf ftbl_nss_cc_port1_rx_clk_src_25[] = {
400 + C(P_UNIPHY0_NSS_RX_CLK, 12.5, 0, 0),
401 + C(P_UNIPHY0_NSS_RX_CLK, 5, 0, 0),
404 +static const struct freq_conf ftbl_nss_cc_port1_rx_clk_src_125[] = {
405 + C(P_UNIPHY0_NSS_RX_CLK, 2.5, 0, 0),
406 + C(P_UNIPHY0_NSS_RX_CLK, 1, 0, 0),
409 +static const struct freq_multi_tbl ftbl_nss_cc_port1_rx_clk_src[] = {
410 + FMS(24000000, P_XO, 1, 0, 0),
411 + FM(25000000, ftbl_nss_cc_port1_rx_clk_src_25),
412 + FMS(78125000, P_UNIPHY0_NSS_RX_CLK, 4, 0, 0),
413 + FM(125000000, ftbl_nss_cc_port1_rx_clk_src_125),
414 + FMS(312500000, P_UNIPHY0_NSS_RX_CLK, 1, 0, 0),
418 +static const struct freq_conf ftbl_nss_cc_port1_tx_clk_src_25[] = {
419 + C(P_UNIPHY0_NSS_TX_CLK, 12.5, 0, 0),
420 + C(P_UNIPHY0_NSS_TX_CLK, 5, 0, 0),
423 +static const struct freq_conf ftbl_nss_cc_port1_tx_clk_src_125[] = {
424 + C(P_UNIPHY0_NSS_TX_CLK, 2.5, 0, 0),
425 + C(P_UNIPHY0_NSS_TX_CLK, 1, 0, 0),
428 +static const struct freq_multi_tbl ftbl_nss_cc_port1_tx_clk_src[] = {
429 + FMS(24000000, P_XO, 1, 0, 0),
430 + FM(25000000, ftbl_nss_cc_port1_tx_clk_src_25),
431 + FMS(78125000, P_UNIPHY0_NSS_TX_CLK, 4, 0, 0),
432 + FM(125000000, ftbl_nss_cc_port1_tx_clk_src_125),
433 + FMS(312500000, P_UNIPHY0_NSS_TX_CLK, 1, 0, 0),
437 +static const struct freq_conf ftbl_nss_cc_port5_rx_clk_src_25[] = {
438 + C(P_UNIPHY1_NSS_RX_CLK, 12.5, 0, 0),
439 + C(P_UNIPHY0_NSS_RX_CLK, 5, 0, 0),
442 +static const struct freq_conf ftbl_nss_cc_port5_rx_clk_src_125[] = {
443 + C(P_UNIPHY1_NSS_RX_CLK, 2.5, 0, 0),
444 + C(P_UNIPHY0_NSS_RX_CLK, 1, 0, 0),
447 +static const struct freq_conf ftbl_nss_cc_port5_rx_clk_src_312p5[] = {
448 + C(P_UNIPHY1_NSS_RX_CLK, 1, 0, 0),
449 + C(P_UNIPHY0_NSS_RX_CLK, 1, 0, 0),
452 +static const struct freq_multi_tbl ftbl_nss_cc_port5_rx_clk_src[] = {
453 + FMS(24000000, P_XO, 1, 0, 0),
454 + FM(25000000, ftbl_nss_cc_port5_rx_clk_src_25),
455 + FMS(78125000, P_UNIPHY1_NSS_RX_CLK, 4, 0, 0),
456 + FM(125000000, ftbl_nss_cc_port5_rx_clk_src_125),
457 + FMS(156250000, P_UNIPHY1_NSS_RX_CLK, 2, 0, 0),
458 + FM(312500000, ftbl_nss_cc_port5_rx_clk_src_312p5),
462 +static const struct freq_conf ftbl_nss_cc_port5_tx_clk_src_25[] = {
463 + C(P_UNIPHY1_NSS_TX_CLK, 12.5, 0, 0),
464 + C(P_UNIPHY0_NSS_TX_CLK, 5, 0, 0),
467 +static const struct freq_conf ftbl_nss_cc_port5_tx_clk_src_125[] = {
468 + C(P_UNIPHY1_NSS_TX_CLK, 2.5, 0, 0),
469 + C(P_UNIPHY0_NSS_TX_CLK, 1, 0, 0),
472 +static const struct freq_conf ftbl_nss_cc_port5_tx_clk_src_312p5[] = {
473 + C(P_UNIPHY1_NSS_TX_CLK, 1, 0, 0),
474 + C(P_UNIPHY0_NSS_TX_CLK, 1, 0, 0),
477 +static const struct freq_multi_tbl ftbl_nss_cc_port5_tx_clk_src[] = {
478 + FMS(24000000, P_XO, 1, 0, 0),
479 + FM(25000000, ftbl_nss_cc_port5_tx_clk_src_25),
480 + FMS(78125000, P_UNIPHY1_NSS_TX_CLK, 4, 0, 0),
481 + FM(125000000, ftbl_nss_cc_port5_tx_clk_src_125),
482 + FMS(156250000, P_UNIPHY1_NSS_TX_CLK, 2, 0, 0),
483 + FM(312500000, ftbl_nss_cc_port5_tx_clk_src_312p5),
487 +static const struct freq_conf ftbl_nss_cc_port6_rx_clk_src_25[] = {
488 + C(P_UNIPHY2_NSS_RX_CLK, 12.5, 0, 0),
489 + C(P_UNIPHY2_NSS_RX_CLK, 5, 0, 0),
492 +static const struct freq_conf ftbl_nss_cc_port6_rx_clk_src_125[] = {
493 + C(P_UNIPHY2_NSS_RX_CLK, 2.5, 0, 0),
494 + C(P_UNIPHY2_NSS_RX_CLK, 1, 0, 0),
497 +static const struct freq_multi_tbl ftbl_nss_cc_port6_rx_clk_src[] = {
498 + FMS(24000000, P_XO, 1, 0, 0),
499 + FM(25000000, ftbl_nss_cc_port6_rx_clk_src_25),
500 + FMS(78125000, P_UNIPHY2_NSS_RX_CLK, 4, 0, 0),
501 + FM(125000000, ftbl_nss_cc_port6_rx_clk_src_125),
502 + FMS(156250000, P_UNIPHY2_NSS_RX_CLK, 2, 0, 0),
503 + FMS(312500000, P_UNIPHY2_NSS_RX_CLK, 1, 0, 0),
507 +static const struct freq_conf ftbl_nss_cc_port6_tx_clk_src_25[] = {
508 + C(P_UNIPHY2_NSS_TX_CLK, 12.5, 0, 0),
509 + C(P_UNIPHY2_NSS_TX_CLK, 5, 0, 0),
512 +static const struct freq_conf ftbl_nss_cc_port6_tx_clk_src_125[] = {
513 + C(P_UNIPHY2_NSS_TX_CLK, 2.5, 0, 0),
514 + C(P_UNIPHY2_NSS_TX_CLK, 1, 0, 0),
517 +static const struct freq_multi_tbl ftbl_nss_cc_port6_tx_clk_src[] = {
518 + FMS(24000000, P_XO, 1, 0, 0),
519 + FM(25000000, ftbl_nss_cc_port6_tx_clk_src_25),
520 + FMS(78125000, P_UNIPHY2_NSS_TX_CLK, 4, 0, 0),
521 + FM(125000000, ftbl_nss_cc_port6_tx_clk_src_125),
522 + FMS(156250000, P_UNIPHY2_NSS_TX_CLK, 2, 0, 0),
523 + FMS(312500000, P_UNIPHY2_NSS_TX_CLK, 1, 0, 0),
527 +static struct clk_rcg2 nss_cc_port1_rx_clk_src = {
528 + .cmd_rcgr = 0x28110,
531 + .parent_map = nss_cc_parent_map_4,
532 + .freq_multi_tbl = ftbl_nss_cc_port1_rx_clk_src,
533 + .clkr.hw.init = &(const struct clk_init_data) {
534 + .name = "nss_cc_port1_rx_clk_src",
535 + .parent_data = nss_cc_parent_data_4,
536 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
537 + .ops = &clk_rcg2_fm_ops,
541 +static struct clk_rcg2 nss_cc_port1_tx_clk_src = {
542 + .cmd_rcgr = 0x2811c,
545 + .parent_map = nss_cc_parent_map_4,
546 + .freq_multi_tbl = ftbl_nss_cc_port1_tx_clk_src,
547 + .clkr.hw.init = &(const struct clk_init_data) {
548 + .name = "nss_cc_port1_tx_clk_src",
549 + .parent_data = nss_cc_parent_data_4,
550 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
551 + .ops = &clk_rcg2_fm_ops,
555 +static struct clk_rcg2 nss_cc_port2_rx_clk_src = {
556 + .cmd_rcgr = 0x28128,
559 + .parent_map = nss_cc_parent_map_4,
560 + .freq_multi_tbl = ftbl_nss_cc_port1_rx_clk_src,
561 + .clkr.hw.init = &(const struct clk_init_data) {
562 + .name = "nss_cc_port2_rx_clk_src",
563 + .parent_data = nss_cc_parent_data_4,
564 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
565 + .ops = &clk_rcg2_fm_ops,
569 +static struct clk_rcg2 nss_cc_port2_tx_clk_src = {
570 + .cmd_rcgr = 0x28134,
573 + .parent_map = nss_cc_parent_map_4,
574 + .freq_multi_tbl = ftbl_nss_cc_port1_tx_clk_src,
575 + .clkr.hw.init = &(const struct clk_init_data) {
576 + .name = "nss_cc_port2_tx_clk_src",
577 + .parent_data = nss_cc_parent_data_4,
578 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
579 + .ops = &clk_rcg2_fm_ops,
583 +static struct clk_rcg2 nss_cc_port3_rx_clk_src = {
584 + .cmd_rcgr = 0x28140,
587 + .parent_map = nss_cc_parent_map_4,
588 + .freq_multi_tbl = ftbl_nss_cc_port1_rx_clk_src,
589 + .clkr.hw.init = &(const struct clk_init_data) {
590 + .name = "nss_cc_port3_rx_clk_src",
591 + .parent_data = nss_cc_parent_data_4,
592 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
593 + .ops = &clk_rcg2_fm_ops,
597 +static struct clk_rcg2 nss_cc_port3_tx_clk_src = {
598 + .cmd_rcgr = 0x2814c,
601 + .parent_map = nss_cc_parent_map_4,
602 + .freq_multi_tbl = ftbl_nss_cc_port1_tx_clk_src,
603 + .clkr.hw.init = &(const struct clk_init_data) {
604 + .name = "nss_cc_port3_tx_clk_src",
605 + .parent_data = nss_cc_parent_data_4,
606 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
607 + .ops = &clk_rcg2_fm_ops,
611 +static struct clk_rcg2 nss_cc_port4_rx_clk_src = {
612 + .cmd_rcgr = 0x28158,
615 + .parent_map = nss_cc_parent_map_4,
616 + .freq_multi_tbl = ftbl_nss_cc_port1_rx_clk_src,
617 + .clkr.hw.init = &(const struct clk_init_data) {
618 + .name = "nss_cc_port4_rx_clk_src",
619 + .parent_data = nss_cc_parent_data_4,
620 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
621 + .ops = &clk_rcg2_fm_ops,
625 +static struct clk_rcg2 nss_cc_port4_tx_clk_src = {
626 + .cmd_rcgr = 0x28164,
629 + .parent_map = nss_cc_parent_map_4,
630 + .freq_multi_tbl = ftbl_nss_cc_port1_tx_clk_src,
631 + .clkr.hw.init = &(const struct clk_init_data) {
632 + .name = "nss_cc_port4_tx_clk_src",
633 + .parent_data = nss_cc_parent_data_4,
634 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
635 + .ops = &clk_rcg2_fm_ops,
639 +static struct clk_rcg2 nss_cc_port5_rx_clk_src = {
640 + .cmd_rcgr = 0x28170,
643 + .parent_map = nss_cc_parent_map_0,
644 + .freq_multi_tbl = ftbl_nss_cc_port5_rx_clk_src,
645 + .clkr.hw.init = &(const struct clk_init_data) {
646 + .name = "nss_cc_port5_rx_clk_src",
647 + .parent_data = nss_cc_parent_data_0,
648 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_0),
649 + .ops = &clk_rcg2_fm_ops,
653 +static struct clk_rcg2 nss_cc_port5_tx_clk_src = {
654 + .cmd_rcgr = 0x2817c,
657 + .parent_map = nss_cc_parent_map_0,
658 + .freq_multi_tbl = ftbl_nss_cc_port5_tx_clk_src,
659 + .clkr.hw.init = &(const struct clk_init_data) {
660 + .name = "nss_cc_port5_tx_clk_src",
661 + .parent_data = nss_cc_parent_data_0,
662 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_0),
663 + .ops = &clk_rcg2_fm_ops,
667 +static struct clk_rcg2 nss_cc_port6_rx_clk_src = {
668 + .cmd_rcgr = 0x28188,
671 + .parent_map = nss_cc_parent_map_5,
672 + .freq_multi_tbl = ftbl_nss_cc_port6_rx_clk_src,
673 + .clkr.hw.init = &(const struct clk_init_data) {
674 + .name = "nss_cc_port6_rx_clk_src",
675 + .parent_data = nss_cc_parent_data_5,
676 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_5),
677 + .ops = &clk_rcg2_fm_ops,
681 +static struct clk_rcg2 nss_cc_port6_tx_clk_src = {
682 + .cmd_rcgr = 0x28194,
685 + .parent_map = nss_cc_parent_map_5,
686 + .freq_multi_tbl = ftbl_nss_cc_port6_tx_clk_src,
687 + .clkr.hw.init = &(const struct clk_init_data) {
688 + .name = "nss_cc_port6_tx_clk_src",
689 + .parent_data = nss_cc_parent_data_5,
690 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_5),
691 + .ops = &clk_rcg2_fm_ops,
695 +static struct clk_rcg2 nss_cc_ppe_clk_src = {
696 + .cmd_rcgr = 0x28204,
699 + .parent_map = nss_cc_parent_map_1,
700 + .freq_tbl = ftbl_nss_cc_ce_clk_src,
701 + .clkr.hw.init = &(const struct clk_init_data) {
702 + .name = "nss_cc_ppe_clk_src",
703 + .parent_data = nss_cc_parent_data_1,
704 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
705 + .flags = CLK_SET_RATE_PARENT,
706 + .ops = &clk_rcg2_ops,
710 +static const struct freq_tbl ftbl_nss_cc_ubi0_clk_src[] = {
711 + F(24000000, P_XO, 1, 0, 0),
712 + F(187200000, P_UBI32_PLL_OUT_MAIN, 8, 0, 0),
713 + F(748800000, P_UBI32_PLL_OUT_MAIN, 2, 0, 0),
714 + F(1497600000, P_UBI32_PLL_OUT_MAIN, 1, 0, 0),
715 + F(1689600000, P_UBI32_PLL_OUT_MAIN, 1, 0, 0),
719 +static struct clk_rcg2 nss_cc_ubi0_clk_src = {
720 + .cmd_rcgr = 0x28704,
723 + .parent_map = nss_cc_parent_map_2,
724 + .freq_tbl = ftbl_nss_cc_ubi0_clk_src,
725 + .clkr.hw.init = &(const struct clk_init_data) {
726 + .name = "nss_cc_ubi0_clk_src",
727 + .parent_data = nss_cc_parent_data_2,
728 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_2),
729 + .flags = CLK_SET_RATE_PARENT,
730 + .ops = &clk_rcg2_ops,
734 +static struct clk_rcg2 nss_cc_ubi1_clk_src = {
735 + .cmd_rcgr = 0x2870c,
738 + .parent_map = nss_cc_parent_map_2,
739 + .freq_tbl = ftbl_nss_cc_ubi0_clk_src,
740 + .clkr.hw.init = &(const struct clk_init_data) {
741 + .name = "nss_cc_ubi1_clk_src",
742 + .parent_data = nss_cc_parent_data_2,
743 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_2),
744 + .flags = CLK_SET_RATE_PARENT,
745 + .ops = &clk_rcg2_ops,
749 +static struct clk_rcg2 nss_cc_ubi2_clk_src = {
750 + .cmd_rcgr = 0x28714,
753 + .parent_map = nss_cc_parent_map_2,
754 + .freq_tbl = ftbl_nss_cc_ubi0_clk_src,
755 + .clkr.hw.init = &(const struct clk_init_data) {
756 + .name = "nss_cc_ubi2_clk_src",
757 + .parent_data = nss_cc_parent_data_2,
758 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_2),
759 + .flags = CLK_SET_RATE_PARENT,
760 + .ops = &clk_rcg2_ops,
764 +static struct clk_rcg2 nss_cc_ubi3_clk_src = {
765 + .cmd_rcgr = 0x2871c,
768 + .parent_map = nss_cc_parent_map_2,
769 + .freq_tbl = ftbl_nss_cc_ubi0_clk_src,
770 + .clkr.hw.init = &(const struct clk_init_data) {
771 + .name = "nss_cc_ubi3_clk_src",
772 + .parent_data = nss_cc_parent_data_2,
773 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_2),
774 + .flags = CLK_SET_RATE_PARENT,
775 + .ops = &clk_rcg2_ops,
779 +static struct clk_rcg2 nss_cc_ubi_axi_clk_src = {
780 + .cmd_rcgr = 0x28724,
783 + .parent_map = nss_cc_parent_map_7,
784 + .freq_tbl = ftbl_nss_cc_clc_clk_src,
785 + .clkr.hw.init = &(const struct clk_init_data) {
786 + .name = "nss_cc_ubi_axi_clk_src",
787 + .parent_data = nss_cc_parent_data_7,
788 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_7),
789 + .ops = &clk_rcg2_ops,
793 +static struct clk_rcg2 nss_cc_ubi_nc_axi_bfdcd_clk_src = {
794 + .cmd_rcgr = 0x2872c,
797 + .parent_map = nss_cc_parent_map_1,
798 + .freq_tbl = ftbl_nss_cc_ce_clk_src,
799 + .clkr.hw.init = &(const struct clk_init_data) {
800 + .name = "nss_cc_ubi_nc_axi_bfdcd_clk_src",
801 + .parent_data = nss_cc_parent_data_1,
802 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
803 + .flags = CLK_SET_RATE_PARENT,
804 + .ops = &clk_rcg2_ops,
808 +static struct clk_regmap_div nss_cc_port1_rx_div_clk_src = {
812 + .clkr.hw.init = &(const struct clk_init_data) {
813 + .name = "nss_cc_port1_rx_div_clk_src",
814 + .parent_data = &(const struct clk_parent_data) {
815 + .hw = &nss_cc_port1_rx_clk_src.clkr.hw,
818 + .flags = CLK_SET_RATE_PARENT,
819 + .ops = &clk_regmap_div_ops,
823 +static struct clk_regmap_div nss_cc_port1_tx_div_clk_src = {
827 + .clkr.hw.init = &(const struct clk_init_data) {
828 + .name = "nss_cc_port1_tx_div_clk_src",
829 + .parent_data = &(const struct clk_parent_data) {
830 + .hw = &nss_cc_port1_tx_clk_src.clkr.hw,
833 + .flags = CLK_SET_RATE_PARENT,
834 + .ops = &clk_regmap_div_ops,
838 +static struct clk_regmap_div nss_cc_port2_rx_div_clk_src = {
842 + .clkr.hw.init = &(const struct clk_init_data) {
843 + .name = "nss_cc_port2_rx_div_clk_src",
844 + .parent_data = &(const struct clk_parent_data) {
845 + .hw = &nss_cc_port2_rx_clk_src.clkr.hw,
848 + .flags = CLK_SET_RATE_PARENT,
849 + .ops = &clk_regmap_div_ops,
853 +static struct clk_regmap_div nss_cc_port2_tx_div_clk_src = {
857 + .clkr.hw.init = &(const struct clk_init_data) {
858 + .name = "nss_cc_port2_tx_div_clk_src",
859 + .parent_data = &(const struct clk_parent_data) {
860 + .hw = &nss_cc_port2_tx_clk_src.clkr.hw,
863 + .flags = CLK_SET_RATE_PARENT,
864 + .ops = &clk_regmap_div_ops,
868 +static struct clk_regmap_div nss_cc_port3_rx_div_clk_src = {
872 + .clkr.hw.init = &(const struct clk_init_data) {
873 + .name = "nss_cc_port3_rx_div_clk_src",
874 + .parent_data = &(const struct clk_parent_data) {
875 + .hw = &nss_cc_port3_rx_clk_src.clkr.hw,
878 + .flags = CLK_SET_RATE_PARENT,
879 + .ops = &clk_regmap_div_ops,
883 +static struct clk_regmap_div nss_cc_port3_tx_div_clk_src = {
887 + .clkr.hw.init = &(const struct clk_init_data) {
888 + .name = "nss_cc_port3_tx_div_clk_src",
889 + .parent_data = &(const struct clk_parent_data) {
890 + .hw = &nss_cc_port3_tx_clk_src.clkr.hw,
893 + .flags = CLK_SET_RATE_PARENT,
894 + .ops = &clk_regmap_div_ops,
898 +static struct clk_regmap_div nss_cc_port4_rx_div_clk_src = {
902 + .clkr.hw.init = &(const struct clk_init_data) {
903 + .name = "nss_cc_port4_rx_div_clk_src",
904 + .parent_data = &(const struct clk_parent_data) {
905 + .hw = &nss_cc_port4_rx_clk_src.clkr.hw,
908 + .flags = CLK_SET_RATE_PARENT,
909 + .ops = &clk_regmap_div_ops,
913 +static struct clk_regmap_div nss_cc_port4_tx_div_clk_src = {
917 + .clkr.hw.init = &(const struct clk_init_data) {
918 + .name = "nss_cc_port4_tx_div_clk_src",
919 + .parent_data = &(const struct clk_parent_data) {
920 + .hw = &nss_cc_port4_tx_clk_src.clkr.hw,
923 + .flags = CLK_SET_RATE_PARENT,
924 + .ops = &clk_regmap_div_ops,
928 +static struct clk_regmap_div nss_cc_port5_rx_div_clk_src = {
932 + .clkr.hw.init = &(const struct clk_init_data) {
933 + .name = "nss_cc_port5_rx_div_clk_src",
934 + .parent_data = &(const struct clk_parent_data) {
935 + .hw = &nss_cc_port5_rx_clk_src.clkr.hw,
938 + .flags = CLK_SET_RATE_PARENT,
939 + .ops = &clk_regmap_div_ops,
943 +static struct clk_regmap_div nss_cc_port5_tx_div_clk_src = {
947 + .clkr.hw.init = &(const struct clk_init_data) {
948 + .name = "nss_cc_port5_tx_div_clk_src",
949 + .parent_data = &(const struct clk_parent_data) {
950 + .hw = &nss_cc_port5_tx_clk_src.clkr.hw,
953 + .flags = CLK_SET_RATE_PARENT,
954 + .ops = &clk_regmap_div_ops,
958 +static struct clk_regmap_div nss_cc_port6_rx_div_clk_src = {
962 + .clkr.hw.init = &(const struct clk_init_data) {
963 + .name = "nss_cc_port6_rx_div_clk_src",
964 + .parent_data = &(const struct clk_parent_data) {
965 + .hw = &nss_cc_port6_rx_clk_src.clkr.hw,
968 + .flags = CLK_SET_RATE_PARENT,
969 + .ops = &clk_regmap_div_ops,
973 +static struct clk_regmap_div nss_cc_port6_tx_div_clk_src = {
977 + .clkr.hw.init = &(const struct clk_init_data) {
978 + .name = "nss_cc_port6_tx_div_clk_src",
979 + .parent_data = &(const struct clk_parent_data) {
980 + .hw = &nss_cc_port6_tx_clk_src.clkr.hw,
983 + .flags = CLK_SET_RATE_PARENT,
984 + .ops = &clk_regmap_div_ops,
988 +static struct clk_regmap_div nss_cc_ubi0_div_clk_src = {
992 + .clkr.hw.init = &(const struct clk_init_data) {
993 + .name = "nss_cc_ubi0_div_clk_src",
994 + .parent_data = &(const struct clk_parent_data) {
995 + .hw = &nss_cc_ubi0_clk_src.clkr.hw,
998 + .flags = CLK_SET_RATE_PARENT,
999 + .ops = &clk_regmap_div_ro_ops,
1003 +static struct clk_regmap_div nss_cc_ubi1_div_clk_src = {
1007 + .clkr.hw.init = &(const struct clk_init_data) {
1008 + .name = "nss_cc_ubi1_div_clk_src",
1009 + .parent_data = &(const struct clk_parent_data) {
1010 + .hw = &nss_cc_ubi1_clk_src.clkr.hw,
1013 + .flags = CLK_SET_RATE_PARENT,
1014 + .ops = &clk_regmap_div_ro_ops,
1018 +static struct clk_regmap_div nss_cc_ubi2_div_clk_src = {
1022 + .clkr.hw.init = &(const struct clk_init_data) {
1023 + .name = "nss_cc_ubi2_div_clk_src",
1024 + .parent_data = &(const struct clk_parent_data) {
1025 + .hw = &nss_cc_ubi2_clk_src.clkr.hw,
1028 + .flags = CLK_SET_RATE_PARENT,
1029 + .ops = &clk_regmap_div_ro_ops,
1033 +static struct clk_regmap_div nss_cc_ubi3_div_clk_src = {
1037 + .clkr.hw.init = &(const struct clk_init_data) {
1038 + .name = "nss_cc_ubi3_div_clk_src",
1039 + .parent_data = &(const struct clk_parent_data) {
1040 + .hw = &nss_cc_ubi3_clk_src.clkr.hw,
1043 + .flags = CLK_SET_RATE_PARENT,
1044 + .ops = &clk_regmap_div_ro_ops,
1048 +static struct clk_regmap_div nss_cc_xgmac0_ptp_ref_div_clk_src = {
1052 + .clkr.hw.init = &(const struct clk_init_data) {
1053 + .name = "nss_cc_xgmac0_ptp_ref_div_clk_src",
1054 + .parent_data = &(const struct clk_parent_data) {
1055 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1058 + .flags = CLK_SET_RATE_PARENT,
1059 + .ops = &clk_regmap_div_ro_ops,
1063 +static struct clk_regmap_div nss_cc_xgmac1_ptp_ref_div_clk_src = {
1067 + .clkr.hw.init = &(const struct clk_init_data) {
1068 + .name = "nss_cc_xgmac1_ptp_ref_div_clk_src",
1069 + .parent_data = &(const struct clk_parent_data) {
1070 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1073 + .flags = CLK_SET_RATE_PARENT,
1074 + .ops = &clk_regmap_div_ro_ops,
1078 +static struct clk_regmap_div nss_cc_xgmac2_ptp_ref_div_clk_src = {
1082 + .clkr.hw.init = &(const struct clk_init_data) {
1083 + .name = "nss_cc_xgmac2_ptp_ref_div_clk_src",
1084 + .parent_data = &(const struct clk_parent_data) {
1085 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1088 + .flags = CLK_SET_RATE_PARENT,
1089 + .ops = &clk_regmap_div_ro_ops,
1093 +static struct clk_regmap_div nss_cc_xgmac3_ptp_ref_div_clk_src = {
1097 + .clkr.hw.init = &(const struct clk_init_data) {
1098 + .name = "nss_cc_xgmac3_ptp_ref_div_clk_src",
1099 + .parent_data = &(const struct clk_parent_data) {
1100 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1103 + .flags = CLK_SET_RATE_PARENT,
1104 + .ops = &clk_regmap_div_ro_ops,
1108 +static struct clk_regmap_div nss_cc_xgmac4_ptp_ref_div_clk_src = {
1112 + .clkr.hw.init = &(const struct clk_init_data) {
1113 + .name = "nss_cc_xgmac4_ptp_ref_div_clk_src",
1114 + .parent_data = &(const struct clk_parent_data) {
1115 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1118 + .flags = CLK_SET_RATE_PARENT,
1119 + .ops = &clk_regmap_div_ro_ops,
1123 +static struct clk_regmap_div nss_cc_xgmac5_ptp_ref_div_clk_src = {
1127 + .clkr.hw.init = &(const struct clk_init_data) {
1128 + .name = "nss_cc_xgmac5_ptp_ref_div_clk_src",
1129 + .parent_data = &(const struct clk_parent_data) {
1130 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1133 + .flags = CLK_SET_RATE_PARENT,
1134 + .ops = &clk_regmap_div_ro_ops,
1138 +static struct clk_branch nss_cc_ce_apb_clk = {
1139 + .halt_reg = 0x2840c,
1141 + .enable_reg = 0x2840c,
1142 + .enable_mask = BIT(0),
1143 + .hw.init = &(const struct clk_init_data) {
1144 + .name = "nss_cc_ce_apb_clk",
1145 + .parent_data = &(const struct clk_parent_data) {
1146 + .hw = &nss_cc_ce_clk_src.clkr.hw,
1149 + .flags = CLK_SET_RATE_PARENT,
1150 + .ops = &clk_branch2_ops,
1155 +static struct clk_branch nss_cc_ce_axi_clk = {
1156 + .halt_reg = 0x28410,
1157 + .halt_check = BRANCH_HALT,
1159 + .enable_reg = 0x28410,
1160 + .enable_mask = BIT(0),
1161 + .hw.init = &(const struct clk_init_data) {
1162 + .name = "nss_cc_ce_axi_clk",
1163 + .parent_data = &(const struct clk_parent_data) {
1164 + .hw = &nss_cc_ce_clk_src.clkr.hw,
1167 + .flags = CLK_SET_RATE_PARENT,
1168 + .ops = &clk_branch2_ops,
1173 +static struct clk_branch nss_cc_clc_axi_clk = {
1174 + .halt_reg = 0x2860c,
1175 + .halt_check = BRANCH_HALT,
1177 + .enable_reg = 0x2860c,
1178 + .enable_mask = BIT(0),
1179 + .hw.init = &(const struct clk_init_data) {
1180 + .name = "nss_cc_clc_axi_clk",
1181 + .parent_data = &(const struct clk_parent_data) {
1182 + .hw = &nss_cc_clc_clk_src.clkr.hw,
1185 + .flags = CLK_SET_RATE_PARENT,
1186 + .ops = &clk_branch2_ops,
1191 +static struct clk_branch nss_cc_crypto_clk = {
1192 + .halt_reg = 0x1601c,
1193 + .halt_check = BRANCH_HALT,
1195 + .enable_reg = 0x1601c,
1196 + .enable_mask = BIT(0),
1197 + .hw.init = &(const struct clk_init_data) {
1198 + .name = "nss_cc_crypto_clk",
1199 + .parent_data = &(const struct clk_parent_data) {
1200 + .hw = &nss_cc_crypto_clk_src.clkr.hw,
1203 + .flags = CLK_SET_RATE_PARENT,
1204 + .ops = &clk_branch2_ops,
1209 +static struct clk_branch nss_cc_crypto_ppe_clk = {
1210 + .halt_reg = 0x28240,
1211 + .halt_check = BRANCH_HALT,
1213 + .enable_reg = 0x28240,
1214 + .enable_mask = BIT(0),
1215 + .hw.init = &(const struct clk_init_data) {
1216 + .name = "nss_cc_crypto_ppe_clk",
1217 + .parent_data = &(const struct clk_parent_data) {
1218 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1221 + .flags = CLK_SET_RATE_PARENT,
1222 + .ops = &clk_branch2_ops,
1227 +static struct clk_branch nss_cc_haq_ahb_clk = {
1228 + .halt_reg = 0x2830c,
1229 + .halt_check = BRANCH_HALT,
1231 + .enable_reg = 0x2830c,
1232 + .enable_mask = BIT(0),
1233 + .hw.init = &(const struct clk_init_data) {
1234 + .name = "nss_cc_haq_ahb_clk",
1235 + .parent_data = &(const struct clk_parent_data) {
1236 + .hw = &nss_cc_haq_clk_src.clkr.hw,
1239 + .flags = CLK_SET_RATE_PARENT,
1240 + .ops = &clk_branch2_ops,
1245 +static struct clk_branch nss_cc_haq_axi_clk = {
1246 + .halt_reg = 0x28310,
1247 + .halt_check = BRANCH_HALT,
1249 + .enable_reg = 0x28310,
1250 + .enable_mask = BIT(0),
1251 + .hw.init = &(const struct clk_init_data) {
1252 + .name = "nss_cc_haq_axi_clk",
1253 + .parent_data = &(const struct clk_parent_data) {
1254 + .hw = &nss_cc_haq_clk_src.clkr.hw,
1257 + .flags = CLK_SET_RATE_PARENT,
1258 + .ops = &clk_branch2_ops,
1263 +static struct clk_branch nss_cc_imem_ahb_clk = {
1264 + .halt_reg = 0xe018,
1265 + .halt_check = BRANCH_HALT,
1267 + .enable_reg = 0xe018,
1268 + .enable_mask = BIT(0),
1269 + .hw.init = &(const struct clk_init_data) {
1270 + .name = "nss_cc_imem_ahb_clk",
1271 + .parent_data = &(const struct clk_parent_data) {
1272 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
1275 + .flags = CLK_SET_RATE_PARENT,
1276 + .ops = &clk_branch2_ops,
1281 +static struct clk_branch nss_cc_imem_qsb_clk = {
1282 + .halt_reg = 0xe010,
1283 + .halt_check = BRANCH_HALT,
1285 + .enable_reg = 0xe010,
1286 + .enable_mask = BIT(0),
1287 + .hw.init = &(const struct clk_init_data) {
1288 + .name = "nss_cc_imem_qsb_clk",
1289 + .parent_data = &(const struct clk_parent_data) {
1290 + .hw = &nss_cc_imem_clk_src.clkr.hw,
1293 + .flags = CLK_SET_RATE_PARENT,
1294 + .ops = &clk_branch2_ops,
1299 +static struct clk_branch nss_cc_nss_csr_clk = {
1300 + .halt_reg = 0x281d0,
1301 + .halt_check = BRANCH_HALT,
1303 + .enable_reg = 0x281d0,
1304 + .enable_mask = BIT(0),
1305 + .hw.init = &(const struct clk_init_data) {
1306 + .name = "nss_cc_nss_csr_clk",
1307 + .parent_data = &(const struct clk_parent_data) {
1308 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
1311 + .flags = CLK_SET_RATE_PARENT,
1312 + .ops = &clk_branch2_ops,
1317 +static struct clk_branch nss_cc_nssnoc_ce_apb_clk = {
1318 + .halt_reg = 0x28414,
1319 + .halt_check = BRANCH_HALT,
1321 + .enable_reg = 0x28414,
1322 + .enable_mask = BIT(0),
1323 + .hw.init = &(const struct clk_init_data) {
1324 + .name = "nss_cc_nssnoc_ce_apb_clk",
1325 + .parent_data = &(const struct clk_parent_data) {
1326 + .hw = &nss_cc_ce_clk_src.clkr.hw,
1329 + .flags = CLK_SET_RATE_PARENT,
1330 + .ops = &clk_branch2_ops,
1335 +static struct clk_branch nss_cc_nssnoc_ce_axi_clk = {
1336 + .halt_reg = 0x28418,
1337 + .halt_check = BRANCH_HALT,
1339 + .enable_reg = 0x28418,
1340 + .enable_mask = BIT(0),
1341 + .hw.init = &(const struct clk_init_data) {
1342 + .name = "nss_cc_nssnoc_ce_axi_clk",
1343 + .parent_data = &(const struct clk_parent_data) {
1344 + .hw = &nss_cc_ce_clk_src.clkr.hw,
1347 + .flags = CLK_SET_RATE_PARENT,
1348 + .ops = &clk_branch2_ops,
1353 +static struct clk_branch nss_cc_nssnoc_clc_axi_clk = {
1354 + .halt_reg = 0x28610,
1355 + .halt_check = BRANCH_HALT,
1357 + .enable_reg = 0x28610,
1358 + .enable_mask = BIT(0),
1359 + .hw.init = &(const struct clk_init_data) {
1360 + .name = "nss_cc_nssnoc_clc_axi_clk",
1361 + .parent_data = &(const struct clk_parent_data) {
1362 + .hw = &nss_cc_clc_clk_src.clkr.hw,
1365 + .flags = CLK_SET_RATE_PARENT,
1366 + .ops = &clk_branch2_ops,
1371 +static struct clk_branch nss_cc_nssnoc_crypto_clk = {
1372 + .halt_reg = 0x16020,
1373 + .halt_check = BRANCH_HALT,
1375 + .enable_reg = 0x16020,
1376 + .enable_mask = BIT(0),
1377 + .hw.init = &(const struct clk_init_data) {
1378 + .name = "nss_cc_nssnoc_crypto_clk",
1379 + .parent_data = &(const struct clk_parent_data) {
1380 + .hw = &nss_cc_crypto_clk_src.clkr.hw,
1383 + .flags = CLK_SET_RATE_PARENT,
1384 + .ops = &clk_branch2_ops,
1389 +static struct clk_branch nss_cc_nssnoc_haq_ahb_clk = {
1390 + .halt_reg = 0x28314,
1391 + .halt_check = BRANCH_HALT,
1393 + .enable_reg = 0x28314,
1394 + .enable_mask = BIT(0),
1395 + .hw.init = &(const struct clk_init_data) {
1396 + .name = "nss_cc_nssnoc_haq_ahb_clk",
1397 + .parent_data = &(const struct clk_parent_data) {
1398 + .hw = &nss_cc_haq_clk_src.clkr.hw,
1401 + .flags = CLK_SET_RATE_PARENT,
1402 + .ops = &clk_branch2_ops,
1407 +static struct clk_branch nss_cc_nssnoc_haq_axi_clk = {
1408 + .halt_reg = 0x28318,
1409 + .halt_check = BRANCH_HALT,
1411 + .enable_reg = 0x28318,
1412 + .enable_mask = BIT(0),
1413 + .hw.init = &(const struct clk_init_data) {
1414 + .name = "nss_cc_nssnoc_haq_axi_clk",
1415 + .parent_data = &(const struct clk_parent_data) {
1416 + .hw = &nss_cc_haq_clk_src.clkr.hw,
1419 + .flags = CLK_SET_RATE_PARENT,
1420 + .ops = &clk_branch2_ops,
1425 +static struct clk_branch nss_cc_nssnoc_imem_ahb_clk = {
1426 + .halt_reg = 0xe01c,
1427 + .halt_check = BRANCH_HALT,
1429 + .enable_reg = 0xe01c,
1430 + .enable_mask = BIT(0),
1431 + .hw.init = &(const struct clk_init_data) {
1432 + .name = "nss_cc_nssnoc_imem_ahb_clk",
1433 + .parent_data = &(const struct clk_parent_data) {
1434 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
1437 + .flags = CLK_SET_RATE_PARENT,
1438 + .ops = &clk_branch2_ops,
1443 +static struct clk_branch nss_cc_nssnoc_imem_qsb_clk = {
1444 + .halt_reg = 0xe014,
1445 + .halt_check = BRANCH_HALT,
1447 + .enable_reg = 0xe014,
1448 + .enable_mask = BIT(0),
1449 + .hw.init = &(const struct clk_init_data) {
1450 + .name = "nss_cc_nssnoc_imem_qsb_clk",
1451 + .parent_data = &(const struct clk_parent_data) {
1452 + .hw = &nss_cc_imem_clk_src.clkr.hw,
1455 + .flags = CLK_SET_RATE_PARENT,
1456 + .ops = &clk_branch2_ops,
1461 +static struct clk_branch nss_cc_nssnoc_nss_csr_clk = {
1462 + .halt_reg = 0x281d4,
1463 + .halt_check = BRANCH_HALT,
1465 + .enable_reg = 0x281d4,
1466 + .enable_mask = BIT(0),
1467 + .hw.init = &(const struct clk_init_data) {
1468 + .name = "nss_cc_nssnoc_nss_csr_clk",
1469 + .parent_data = &(const struct clk_parent_data) {
1470 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
1473 + .flags = CLK_SET_RATE_PARENT,
1474 + .ops = &clk_branch2_ops,
1479 +static struct clk_branch nss_cc_nssnoc_ppe_cfg_clk = {
1480 + .halt_reg = 0x28248,
1481 + .halt_check = BRANCH_HALT,
1483 + .enable_reg = 0x28248,
1484 + .enable_mask = BIT(0),
1485 + .hw.init = &(const struct clk_init_data) {
1486 + .name = "nss_cc_nssnoc_ppe_cfg_clk",
1487 + .parent_data = &(const struct clk_parent_data) {
1488 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1491 + .flags = CLK_SET_RATE_PARENT,
1492 + .ops = &clk_branch2_ops,
1497 +static struct clk_branch nss_cc_nssnoc_ppe_clk = {
1498 + .halt_reg = 0x28244,
1499 + .halt_check = BRANCH_HALT,
1501 + .enable_reg = 0x28244,
1502 + .enable_mask = BIT(0),
1503 + .hw.init = &(const struct clk_init_data) {
1504 + .name = "nss_cc_nssnoc_ppe_clk",
1505 + .parent_data = &(const struct clk_parent_data) {
1506 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1509 + .flags = CLK_SET_RATE_PARENT,
1510 + .ops = &clk_branch2_ops,
1515 +static struct clk_branch nss_cc_nssnoc_ubi32_ahb0_clk = {
1516 + .halt_reg = 0x28788,
1517 + .halt_check = BRANCH_HALT,
1519 + .enable_reg = 0x28788,
1520 + .enable_mask = BIT(0),
1521 + .hw.init = &(const struct clk_init_data) {
1522 + .name = "nss_cc_nssnoc_ubi32_ahb0_clk",
1523 + .parent_data = &(const struct clk_parent_data) {
1524 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
1527 + .flags = CLK_SET_RATE_PARENT,
1528 + .ops = &clk_branch2_ops,
1533 +static struct clk_branch nss_cc_nssnoc_ubi32_axi0_clk = {
1534 + .halt_reg = 0x287a0,
1535 + .halt_check = BRANCH_HALT,
1537 + .enable_reg = 0x287a0,
1538 + .enable_mask = BIT(0),
1539 + .hw.init = &(const struct clk_init_data) {
1540 + .name = "nss_cc_nssnoc_ubi32_axi0_clk",
1541 + .parent_data = &(const struct clk_parent_data) {
1542 + .hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
1545 + .flags = CLK_SET_RATE_PARENT,
1546 + .ops = &clk_branch2_ops,
1551 +static struct clk_branch nss_cc_nssnoc_ubi32_int0_ahb_clk = {
1552 + .halt_reg = 0x2878c,
1553 + .halt_check = BRANCH_HALT,
1555 + .enable_reg = 0x2878c,
1556 + .enable_mask = BIT(0),
1557 + .hw.init = &(const struct clk_init_data) {
1558 + .name = "nss_cc_nssnoc_ubi32_int0_ahb_clk",
1559 + .parent_data = &(const struct clk_parent_data) {
1560 + .hw = &nss_cc_int_cfg_clk_src.clkr.hw,
1563 + .flags = CLK_SET_RATE_PARENT,
1564 + .ops = &clk_branch2_ops,
1569 +static struct clk_branch nss_cc_nssnoc_ubi32_nc_axi0_1_clk = {
1570 + .halt_reg = 0x287bc,
1571 + .halt_check = BRANCH_HALT,
1573 + .enable_reg = 0x287bc,
1574 + .enable_mask = BIT(0),
1575 + .hw.init = &(const struct clk_init_data) {
1576 + .name = "nss_cc_nssnoc_ubi32_nc_axi0_1_clk",
1577 + .parent_data = &(const struct clk_parent_data) {
1578 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
1581 + .flags = CLK_SET_RATE_PARENT,
1582 + .ops = &clk_branch2_ops,
1587 +static struct clk_branch nss_cc_nssnoc_ubi32_nc_axi0_clk = {
1588 + .halt_reg = 0x28764,
1589 + .halt_check = BRANCH_HALT,
1591 + .enable_reg = 0x28764,
1592 + .enable_mask = BIT(0),
1593 + .hw.init = &(const struct clk_init_data) {
1594 + .name = "nss_cc_nssnoc_ubi32_nc_axi0_clk",
1595 + .parent_data = &(const struct clk_parent_data) {
1596 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
1599 + .flags = CLK_SET_RATE_PARENT,
1600 + .ops = &clk_branch2_ops,
1605 +static struct clk_branch nss_cc_port1_mac_clk = {
1606 + .halt_reg = 0x2824c,
1607 + .halt_check = BRANCH_HALT,
1609 + .enable_reg = 0x2824c,
1610 + .enable_mask = BIT(0),
1611 + .hw.init = &(const struct clk_init_data) {
1612 + .name = "nss_cc_port1_mac_clk",
1613 + .parent_data = &(const struct clk_parent_data) {
1614 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1617 + .flags = CLK_SET_RATE_PARENT,
1618 + .ops = &clk_branch2_ops,
1623 +static struct clk_branch nss_cc_port1_rx_clk = {
1624 + .halt_reg = 0x281a0,
1625 + .halt_check = BRANCH_HALT,
1627 + .enable_reg = 0x281a0,
1628 + .enable_mask = BIT(0),
1629 + .hw.init = &(const struct clk_init_data) {
1630 + .name = "nss_cc_port1_rx_clk",
1631 + .parent_data = &(const struct clk_parent_data) {
1632 + .hw = &nss_cc_port1_rx_div_clk_src.clkr.hw,
1635 + .flags = CLK_SET_RATE_PARENT,
1636 + .ops = &clk_branch2_ops,
1641 +static struct clk_branch nss_cc_port1_tx_clk = {
1642 + .halt_reg = 0x281a4,
1643 + .halt_check = BRANCH_HALT,
1645 + .enable_reg = 0x281a4,
1646 + .enable_mask = BIT(0),
1647 + .hw.init = &(const struct clk_init_data) {
1648 + .name = "nss_cc_port1_tx_clk",
1649 + .parent_data = &(const struct clk_parent_data) {
1650 + .hw = &nss_cc_port1_tx_div_clk_src.clkr.hw,
1653 + .flags = CLK_SET_RATE_PARENT,
1654 + .ops = &clk_branch2_ops,
1659 +static struct clk_branch nss_cc_port2_mac_clk = {
1660 + .halt_reg = 0x28250,
1661 + .halt_check = BRANCH_HALT,
1663 + .enable_reg = 0x28250,
1664 + .enable_mask = BIT(0),
1665 + .hw.init = &(const struct clk_init_data) {
1666 + .name = "nss_cc_port2_mac_clk",
1667 + .parent_data = &(const struct clk_parent_data) {
1668 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1671 + .flags = CLK_SET_RATE_PARENT,
1672 + .ops = &clk_branch2_ops,
1677 +static struct clk_branch nss_cc_port2_rx_clk = {
1678 + .halt_reg = 0x281a8,
1679 + .halt_check = BRANCH_HALT,
1681 + .enable_reg = 0x281a8,
1682 + .enable_mask = BIT(0),
1683 + .hw.init = &(const struct clk_init_data) {
1684 + .name = "nss_cc_port2_rx_clk",
1685 + .parent_data = &(const struct clk_parent_data) {
1686 + .hw = &nss_cc_port2_rx_div_clk_src.clkr.hw,
1689 + .flags = CLK_SET_RATE_PARENT,
1690 + .ops = &clk_branch2_ops,
1695 +static struct clk_branch nss_cc_port2_tx_clk = {
1696 + .halt_reg = 0x281ac,
1697 + .halt_check = BRANCH_HALT,
1699 + .enable_reg = 0x281ac,
1700 + .enable_mask = BIT(0),
1701 + .hw.init = &(const struct clk_init_data) {
1702 + .name = "nss_cc_port2_tx_clk",
1703 + .parent_data = &(const struct clk_parent_data) {
1704 + .hw = &nss_cc_port2_tx_div_clk_src.clkr.hw,
1707 + .flags = CLK_SET_RATE_PARENT,
1708 + .ops = &clk_branch2_ops,
1713 +static struct clk_branch nss_cc_port3_mac_clk = {
1714 + .halt_reg = 0x28254,
1715 + .halt_check = BRANCH_HALT,
1717 + .enable_reg = 0x28254,
1718 + .enable_mask = BIT(0),
1719 + .hw.init = &(const struct clk_init_data) {
1720 + .name = "nss_cc_port3_mac_clk",
1721 + .parent_data = &(const struct clk_parent_data) {
1722 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1725 + .flags = CLK_SET_RATE_PARENT,
1726 + .ops = &clk_branch2_ops,
1731 +static struct clk_branch nss_cc_port3_rx_clk = {
1732 + .halt_reg = 0x281b0,
1733 + .halt_check = BRANCH_HALT,
1735 + .enable_reg = 0x281b0,
1736 + .enable_mask = BIT(0),
1737 + .hw.init = &(const struct clk_init_data) {
1738 + .name = "nss_cc_port3_rx_clk",
1739 + .parent_data = &(const struct clk_parent_data) {
1740 + .hw = &nss_cc_port3_rx_div_clk_src.clkr.hw,
1743 + .flags = CLK_SET_RATE_PARENT,
1744 + .ops = &clk_branch2_ops,
1749 +static struct clk_branch nss_cc_port3_tx_clk = {
1750 + .halt_reg = 0x281b4,
1751 + .halt_check = BRANCH_HALT,
1753 + .enable_reg = 0x281b4,
1754 + .enable_mask = BIT(0),
1755 + .hw.init = &(const struct clk_init_data) {
1756 + .name = "nss_cc_port3_tx_clk",
1757 + .parent_data = &(const struct clk_parent_data) {
1758 + .hw = &nss_cc_port3_tx_div_clk_src.clkr.hw,
1761 + .flags = CLK_SET_RATE_PARENT,
1762 + .ops = &clk_branch2_ops,
1767 +static struct clk_branch nss_cc_port4_mac_clk = {
1768 + .halt_reg = 0x28258,
1769 + .halt_check = BRANCH_HALT,
1771 + .enable_reg = 0x28258,
1772 + .enable_mask = BIT(0),
1773 + .hw.init = &(const struct clk_init_data) {
1774 + .name = "nss_cc_port4_mac_clk",
1775 + .parent_data = &(const struct clk_parent_data) {
1776 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1779 + .flags = CLK_SET_RATE_PARENT,
1780 + .ops = &clk_branch2_ops,
1785 +static struct clk_branch nss_cc_port4_rx_clk = {
1786 + .halt_reg = 0x281b8,
1787 + .halt_check = BRANCH_HALT,
1789 + .enable_reg = 0x281b8,
1790 + .enable_mask = BIT(0),
1791 + .hw.init = &(const struct clk_init_data) {
1792 + .name = "nss_cc_port4_rx_clk",
1793 + .parent_data = &(const struct clk_parent_data) {
1794 + .hw = &nss_cc_port4_rx_div_clk_src.clkr.hw,
1797 + .flags = CLK_SET_RATE_PARENT,
1798 + .ops = &clk_branch2_ops,
1803 +static struct clk_branch nss_cc_port4_tx_clk = {
1804 + .halt_reg = 0x281bc,
1805 + .halt_check = BRANCH_HALT,
1807 + .enable_reg = 0x281bc,
1808 + .enable_mask = BIT(0),
1809 + .hw.init = &(const struct clk_init_data) {
1810 + .name = "nss_cc_port4_tx_clk",
1811 + .parent_data = &(const struct clk_parent_data) {
1812 + .hw = &nss_cc_port4_tx_div_clk_src.clkr.hw,
1815 + .flags = CLK_SET_RATE_PARENT,
1816 + .ops = &clk_branch2_ops,
1821 +static struct clk_branch nss_cc_port5_mac_clk = {
1822 + .halt_reg = 0x2825c,
1823 + .halt_check = BRANCH_HALT,
1825 + .enable_reg = 0x2825c,
1826 + .enable_mask = BIT(0),
1827 + .hw.init = &(const struct clk_init_data) {
1828 + .name = "nss_cc_port5_mac_clk",
1829 + .parent_data = &(const struct clk_parent_data) {
1830 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1833 + .flags = CLK_SET_RATE_PARENT,
1834 + .ops = &clk_branch2_ops,
1839 +static struct clk_branch nss_cc_port5_rx_clk = {
1840 + .halt_reg = 0x281c0,
1841 + .halt_check = BRANCH_HALT,
1843 + .enable_reg = 0x281c0,
1844 + .enable_mask = BIT(0),
1845 + .hw.init = &(const struct clk_init_data) {
1846 + .name = "nss_cc_port5_rx_clk",
1847 + .parent_data = &(const struct clk_parent_data) {
1848 + .hw = &nss_cc_port5_rx_div_clk_src.clkr.hw,
1851 + .flags = CLK_SET_RATE_PARENT,
1852 + .ops = &clk_branch2_ops,
1857 +static struct clk_branch nss_cc_port5_tx_clk = {
1858 + .halt_reg = 0x281c4,
1859 + .halt_check = BRANCH_HALT,
1861 + .enable_reg = 0x281c4,
1862 + .enable_mask = BIT(0),
1863 + .hw.init = &(const struct clk_init_data) {
1864 + .name = "nss_cc_port5_tx_clk",
1865 + .parent_data = &(const struct clk_parent_data) {
1866 + .hw = &nss_cc_port5_tx_div_clk_src.clkr.hw,
1869 + .flags = CLK_SET_RATE_PARENT,
1870 + .ops = &clk_branch2_ops,
1875 +static struct clk_branch nss_cc_port6_mac_clk = {
1876 + .halt_reg = 0x28260,
1877 + .halt_check = BRANCH_HALT,
1879 + .enable_reg = 0x28260,
1880 + .enable_mask = BIT(0),
1881 + .hw.init = &(const struct clk_init_data) {
1882 + .name = "nss_cc_port6_mac_clk",
1883 + .parent_data = &(const struct clk_parent_data) {
1884 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1887 + .flags = CLK_SET_RATE_PARENT,
1888 + .ops = &clk_branch2_ops,
1893 +static struct clk_branch nss_cc_port6_rx_clk = {
1894 + .halt_reg = 0x281c8,
1895 + .halt_check = BRANCH_HALT,
1897 + .enable_reg = 0x281c8,
1898 + .enable_mask = BIT(0),
1899 + .hw.init = &(const struct clk_init_data) {
1900 + .name = "nss_cc_port6_rx_clk",
1901 + .parent_data = &(const struct clk_parent_data) {
1902 + .hw = &nss_cc_port6_rx_div_clk_src.clkr.hw,
1905 + .flags = CLK_SET_RATE_PARENT,
1906 + .ops = &clk_branch2_ops,
1911 +static struct clk_branch nss_cc_port6_tx_clk = {
1912 + .halt_reg = 0x281cc,
1913 + .halt_check = BRANCH_HALT,
1915 + .enable_reg = 0x281cc,
1916 + .enable_mask = BIT(0),
1917 + .hw.init = &(const struct clk_init_data) {
1918 + .name = "nss_cc_port6_tx_clk",
1919 + .parent_data = &(const struct clk_parent_data) {
1920 + .hw = &nss_cc_port6_tx_div_clk_src.clkr.hw,
1923 + .flags = CLK_SET_RATE_PARENT,
1924 + .ops = &clk_branch2_ops,
1929 +static struct clk_branch nss_cc_ppe_edma_cfg_clk = {
1930 + .halt_reg = 0x2823c,
1931 + .halt_check = BRANCH_HALT,
1933 + .enable_reg = 0x2823c,
1934 + .enable_mask = BIT(0),
1935 + .hw.init = &(const struct clk_init_data) {
1936 + .name = "nss_cc_ppe_edma_cfg_clk",
1937 + .parent_data = &(const struct clk_parent_data) {
1938 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1941 + .flags = CLK_SET_RATE_PARENT,
1942 + .ops = &clk_branch2_ops,
1947 +static struct clk_branch nss_cc_ppe_edma_clk = {
1948 + .halt_reg = 0x28238,
1949 + .halt_check = BRANCH_HALT,
1951 + .enable_reg = 0x28238,
1952 + .enable_mask = BIT(0),
1953 + .hw.init = &(const struct clk_init_data) {
1954 + .name = "nss_cc_ppe_edma_clk",
1955 + .parent_data = &(const struct clk_parent_data) {
1956 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1959 + .flags = CLK_SET_RATE_PARENT,
1960 + .ops = &clk_branch2_ops,
1965 +static struct clk_branch nss_cc_ppe_switch_btq_clk = {
1966 + .halt_reg = 0x2827c,
1967 + .halt_check = BRANCH_HALT,
1969 + .enable_reg = 0x2827c,
1970 + .enable_mask = BIT(0),
1971 + .hw.init = &(const struct clk_init_data) {
1972 + .name = "nss_cc_ppe_switch_btq_clk",
1973 + .parent_data = &(const struct clk_parent_data) {
1974 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1977 + .flags = CLK_SET_RATE_PARENT,
1978 + .ops = &clk_branch2_ops,
1983 +static struct clk_branch nss_cc_ppe_switch_cfg_clk = {
1984 + .halt_reg = 0x28234,
1985 + .halt_check = BRANCH_HALT,
1987 + .enable_reg = 0x28234,
1988 + .enable_mask = BIT(0),
1989 + .hw.init = &(const struct clk_init_data) {
1990 + .name = "nss_cc_ppe_switch_cfg_clk",
1991 + .parent_data = &(const struct clk_parent_data) {
1992 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1995 + .flags = CLK_SET_RATE_PARENT,
1996 + .ops = &clk_branch2_ops,
2001 +static struct clk_branch nss_cc_ppe_switch_clk = {
2002 + .halt_reg = 0x28230,
2003 + .halt_check = BRANCH_HALT,
2005 + .enable_reg = 0x28230,
2006 + .enable_mask = BIT(0),
2007 + .hw.init = &(const struct clk_init_data) {
2008 + .name = "nss_cc_ppe_switch_clk",
2009 + .parent_data = &(const struct clk_parent_data) {
2010 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
2013 + .flags = CLK_SET_RATE_PARENT,
2014 + .ops = &clk_branch2_ops,
2019 +static struct clk_branch nss_cc_ppe_switch_ipe_clk = {
2020 + .halt_reg = 0x2822c,
2021 + .halt_check = BRANCH_HALT,
2023 + .enable_reg = 0x2822c,
2024 + .enable_mask = BIT(0),
2025 + .hw.init = &(const struct clk_init_data) {
2026 + .name = "nss_cc_ppe_switch_ipe_clk",
2027 + .parent_data = &(const struct clk_parent_data) {
2028 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
2031 + .flags = CLK_SET_RATE_PARENT,
2032 + .ops = &clk_branch2_ops,
2037 +static struct clk_branch nss_cc_ubi32_ahb0_clk = {
2038 + .halt_reg = 0x28768,
2039 + .halt_check = BRANCH_HALT,
2041 + .enable_reg = 0x28768,
2042 + .enable_mask = BIT(0),
2043 + .hw.init = &(const struct clk_init_data) {
2044 + .name = "nss_cc_ubi32_ahb0_clk",
2045 + .parent_data = &(const struct clk_parent_data) {
2046 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
2049 + .flags = CLK_SET_RATE_PARENT,
2050 + .ops = &clk_branch2_ops,
2055 +static struct clk_branch nss_cc_ubi32_ahb1_clk = {
2056 + .halt_reg = 0x28770,
2057 + .halt_check = BRANCH_HALT,
2059 + .enable_reg = 0x28770,
2060 + .enable_mask = BIT(0),
2061 + .hw.init = &(const struct clk_init_data) {
2062 + .name = "nss_cc_ubi32_ahb1_clk",
2063 + .parent_data = &(const struct clk_parent_data) {
2064 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
2067 + .flags = CLK_SET_RATE_PARENT,
2068 + .ops = &clk_branch2_ops,
2073 +static struct clk_branch nss_cc_ubi32_ahb2_clk = {
2074 + .halt_reg = 0x28778,
2075 + .halt_check = BRANCH_HALT,
2077 + .enable_reg = 0x28778,
2078 + .enable_mask = BIT(0),
2079 + .hw.init = &(const struct clk_init_data) {
2080 + .name = "nss_cc_ubi32_ahb2_clk",
2081 + .parent_data = &(const struct clk_parent_data) {
2082 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
2085 + .flags = CLK_SET_RATE_PARENT,
2086 + .ops = &clk_branch2_ops,
2091 +static struct clk_branch nss_cc_ubi32_ahb3_clk = {
2092 + .halt_reg = 0x28780,
2093 + .halt_check = BRANCH_HALT,
2095 + .enable_reg = 0x28780,
2096 + .enable_mask = BIT(0),
2097 + .hw.init = &(const struct clk_init_data) {
2098 + .name = "nss_cc_ubi32_ahb3_clk",
2099 + .parent_data = &(const struct clk_parent_data) {
2100 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
2103 + .flags = CLK_SET_RATE_PARENT,
2104 + .ops = &clk_branch2_ops,
2109 +static struct clk_branch nss_cc_ubi32_axi0_clk = {
2110 + .halt_reg = 0x28790,
2111 + .halt_check = BRANCH_HALT,
2113 + .enable_reg = 0x28790,
2114 + .enable_mask = BIT(0),
2115 + .hw.init = &(const struct clk_init_data) {
2116 + .name = "nss_cc_ubi32_axi0_clk",
2117 + .parent_data = &(const struct clk_parent_data) {
2118 + .hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
2121 + .flags = CLK_SET_RATE_PARENT,
2122 + .ops = &clk_branch2_ops,
2127 +static struct clk_branch nss_cc_ubi32_axi1_clk = {
2128 + .halt_reg = 0x28794,
2129 + .halt_check = BRANCH_HALT,
2131 + .enable_reg = 0x28794,
2132 + .enable_mask = BIT(0),
2133 + .hw.init = &(const struct clk_init_data) {
2134 + .name = "nss_cc_ubi32_axi1_clk",
2135 + .parent_data = &(const struct clk_parent_data) {
2136 + .hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
2139 + .flags = CLK_SET_RATE_PARENT,
2140 + .ops = &clk_branch2_ops,
2145 +static struct clk_branch nss_cc_ubi32_axi2_clk = {
2146 + .halt_reg = 0x28798,
2147 + .halt_check = BRANCH_HALT,
2149 + .enable_reg = 0x28798,
2150 + .enable_mask = BIT(0),
2151 + .hw.init = &(const struct clk_init_data) {
2152 + .name = "nss_cc_ubi32_axi2_clk",
2153 + .parent_data = &(const struct clk_parent_data) {
2154 + .hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
2157 + .flags = CLK_SET_RATE_PARENT,
2158 + .ops = &clk_branch2_ops,
2163 +static struct clk_branch nss_cc_ubi32_axi3_clk = {
2164 + .halt_reg = 0x2879c,
2165 + .halt_check = BRANCH_HALT,
2167 + .enable_reg = 0x2879c,
2168 + .enable_mask = BIT(0),
2169 + .hw.init = &(const struct clk_init_data) {
2170 + .name = "nss_cc_ubi32_axi3_clk",
2171 + .parent_data = &(const struct clk_parent_data) {
2172 + .hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
2175 + .flags = CLK_SET_RATE_PARENT,
2176 + .ops = &clk_branch2_ops,
2181 +static struct clk_branch nss_cc_ubi32_core0_clk = {
2182 + .halt_reg = 0x28734,
2183 + .halt_check = BRANCH_HALT,
2185 + .enable_reg = 0x28734,
2186 + .enable_mask = BIT(0),
2187 + .hw.init = &(const struct clk_init_data) {
2188 + .name = "nss_cc_ubi32_core0_clk",
2189 + .parent_data = &(const struct clk_parent_data) {
2190 + .hw = &nss_cc_ubi0_div_clk_src.clkr.hw,
2193 + .flags = CLK_SET_RATE_PARENT,
2194 + .ops = &clk_branch2_ops,
2199 +static struct clk_branch nss_cc_ubi32_core1_clk = {
2200 + .halt_reg = 0x28738,
2201 + .halt_check = BRANCH_HALT,
2203 + .enable_reg = 0x28738,
2204 + .enable_mask = BIT(0),
2205 + .hw.init = &(const struct clk_init_data) {
2206 + .name = "nss_cc_ubi32_core1_clk",
2207 + .parent_data = &(const struct clk_parent_data) {
2208 + .hw = &nss_cc_ubi1_div_clk_src.clkr.hw,
2211 + .flags = CLK_SET_RATE_PARENT,
2212 + .ops = &clk_branch2_ops,
2217 +static struct clk_branch nss_cc_ubi32_core2_clk = {
2218 + .halt_reg = 0x2873c,
2219 + .halt_check = BRANCH_HALT,
2221 + .enable_reg = 0x2873c,
2222 + .enable_mask = BIT(0),
2223 + .hw.init = &(const struct clk_init_data) {
2224 + .name = "nss_cc_ubi32_core2_clk",
2225 + .parent_data = &(const struct clk_parent_data) {
2226 + .hw = &nss_cc_ubi2_div_clk_src.clkr.hw,
2229 + .flags = CLK_SET_RATE_PARENT,
2230 + .ops = &clk_branch2_ops,
2235 +static struct clk_branch nss_cc_ubi32_core3_clk = {
2236 + .halt_reg = 0x28740,
2237 + .halt_check = BRANCH_HALT,
2239 + .enable_reg = 0x28740,
2240 + .enable_mask = BIT(0),
2241 + .hw.init = &(const struct clk_init_data) {
2242 + .name = "nss_cc_ubi32_core3_clk",
2243 + .parent_data = &(const struct clk_parent_data) {
2244 + .hw = &nss_cc_ubi3_div_clk_src.clkr.hw,
2247 + .flags = CLK_SET_RATE_PARENT,
2248 + .ops = &clk_branch2_ops,
2253 +static struct clk_branch nss_cc_ubi32_intr0_ahb_clk = {
2254 + .halt_reg = 0x2876c,
2255 + .halt_check = BRANCH_HALT,
2257 + .enable_reg = 0x2876c,
2258 + .enable_mask = BIT(0),
2259 + .hw.init = &(const struct clk_init_data) {
2260 + .name = "nss_cc_ubi32_intr0_ahb_clk",
2261 + .parent_data = &(const struct clk_parent_data) {
2262 + .hw = &nss_cc_int_cfg_clk_src.clkr.hw,
2265 + .flags = CLK_SET_RATE_PARENT,
2266 + .ops = &clk_branch2_ops,
2271 +static struct clk_branch nss_cc_ubi32_intr1_ahb_clk = {
2272 + .halt_reg = 0x28774,
2273 + .halt_check = BRANCH_HALT,
2275 + .enable_reg = 0x28774,
2276 + .enable_mask = BIT(0),
2277 + .hw.init = &(const struct clk_init_data) {
2278 + .name = "nss_cc_ubi32_intr1_ahb_clk",
2279 + .parent_data = &(const struct clk_parent_data) {
2280 + .hw = &nss_cc_int_cfg_clk_src.clkr.hw,
2283 + .flags = CLK_SET_RATE_PARENT,
2284 + .ops = &clk_branch2_ops,
2289 +static struct clk_branch nss_cc_ubi32_intr2_ahb_clk = {
2290 + .halt_reg = 0x2877c,
2291 + .halt_check = BRANCH_HALT,
2293 + .enable_reg = 0x2877c,
2294 + .enable_mask = BIT(0),
2295 + .hw.init = &(const struct clk_init_data) {
2296 + .name = "nss_cc_ubi32_intr2_ahb_clk",
2297 + .parent_data = &(const struct clk_parent_data) {
2298 + .hw = &nss_cc_int_cfg_clk_src.clkr.hw,
2301 + .flags = CLK_SET_RATE_PARENT,
2302 + .ops = &clk_branch2_ops,
2307 +static struct clk_branch nss_cc_ubi32_intr3_ahb_clk = {
2308 + .halt_reg = 0x28784,
2309 + .halt_check = BRANCH_HALT,
2311 + .enable_reg = 0x28784,
2312 + .enable_mask = BIT(0),
2313 + .hw.init = &(const struct clk_init_data) {
2314 + .name = "nss_cc_ubi32_intr3_ahb_clk",
2315 + .parent_data = &(const struct clk_parent_data) {
2316 + .hw = &nss_cc_int_cfg_clk_src.clkr.hw,
2319 + .flags = CLK_SET_RATE_PARENT,
2320 + .ops = &clk_branch2_ops,
2325 +static struct clk_branch nss_cc_ubi32_nc_axi0_clk = {
2326 + .halt_reg = 0x28744,
2327 + .halt_check = BRANCH_HALT,
2329 + .enable_reg = 0x28744,
2330 + .enable_mask = BIT(0),
2331 + .hw.init = &(const struct clk_init_data) {
2332 + .name = "nss_cc_ubi32_nc_axi0_clk",
2333 + .parent_data = &(const struct clk_parent_data) {
2334 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2337 + .flags = CLK_SET_RATE_PARENT,
2338 + .ops = &clk_branch2_ops,
2343 +static struct clk_branch nss_cc_ubi32_nc_axi1_clk = {
2344 + .halt_reg = 0x2874c,
2345 + .halt_check = BRANCH_HALT,
2347 + .enable_reg = 0x2874c,
2348 + .enable_mask = BIT(0),
2349 + .hw.init = &(const struct clk_init_data) {
2350 + .name = "nss_cc_ubi32_nc_axi1_clk",
2351 + .parent_data = &(const struct clk_parent_data) {
2352 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2355 + .flags = CLK_SET_RATE_PARENT,
2356 + .ops = &clk_branch2_ops,
2361 +static struct clk_branch nss_cc_ubi32_nc_axi2_clk = {
2362 + .halt_reg = 0x28754,
2363 + .halt_check = BRANCH_HALT,
2365 + .enable_reg = 0x28754,
2366 + .enable_mask = BIT(0),
2367 + .hw.init = &(const struct clk_init_data) {
2368 + .name = "nss_cc_ubi32_nc_axi2_clk",
2369 + .parent_data = &(const struct clk_parent_data) {
2370 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2373 + .flags = CLK_SET_RATE_PARENT,
2374 + .ops = &clk_branch2_ops,
2379 +static struct clk_branch nss_cc_ubi32_nc_axi3_clk = {
2380 + .halt_reg = 0x2875c,
2381 + .halt_check = BRANCH_HALT,
2383 + .enable_reg = 0x2875c,
2384 + .enable_mask = BIT(0),
2385 + .hw.init = &(const struct clk_init_data) {
2386 + .name = "nss_cc_ubi32_nc_axi3_clk",
2387 + .parent_data = &(const struct clk_parent_data) {
2388 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2391 + .flags = CLK_SET_RATE_PARENT,
2392 + .ops = &clk_branch2_ops,
2397 +static struct clk_branch nss_cc_ubi32_utcm0_clk = {
2398 + .halt_reg = 0x28748,
2399 + .halt_check = BRANCH_HALT,
2401 + .enable_reg = 0x28748,
2402 + .enable_mask = BIT(0),
2403 + .hw.init = &(const struct clk_init_data) {
2404 + .name = "nss_cc_ubi32_utcm0_clk",
2405 + .parent_data = &(const struct clk_parent_data) {
2406 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2409 + .flags = CLK_SET_RATE_PARENT,
2410 + .ops = &clk_branch2_ops,
2415 +static struct clk_branch nss_cc_ubi32_utcm1_clk = {
2416 + .halt_reg = 0x28750,
2417 + .halt_check = BRANCH_HALT,
2419 + .enable_reg = 0x28750,
2420 + .enable_mask = BIT(0),
2421 + .hw.init = &(const struct clk_init_data) {
2422 + .name = "nss_cc_ubi32_utcm1_clk",
2423 + .parent_data = &(const struct clk_parent_data) {
2424 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2427 + .flags = CLK_SET_RATE_PARENT,
2428 + .ops = &clk_branch2_ops,
2433 +static struct clk_branch nss_cc_ubi32_utcm2_clk = {
2434 + .halt_reg = 0x28758,
2435 + .halt_check = BRANCH_HALT,
2437 + .enable_reg = 0x28758,
2438 + .enable_mask = BIT(0),
2439 + .hw.init = &(const struct clk_init_data) {
2440 + .name = "nss_cc_ubi32_utcm2_clk",
2441 + .parent_data = &(const struct clk_parent_data) {
2442 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2445 + .flags = CLK_SET_RATE_PARENT,
2446 + .ops = &clk_branch2_ops,
2451 +static struct clk_branch nss_cc_ubi32_utcm3_clk = {
2452 + .halt_reg = 0x28760,
2453 + .halt_check = BRANCH_HALT,
2455 + .enable_reg = 0x28760,
2456 + .enable_mask = BIT(0),
2457 + .hw.init = &(const struct clk_init_data) {
2458 + .name = "nss_cc_ubi32_utcm3_clk",
2459 + .parent_data = &(const struct clk_parent_data) {
2460 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2463 + .flags = CLK_SET_RATE_PARENT,
2464 + .ops = &clk_branch2_ops,
2469 +static struct clk_branch nss_cc_uniphy_port1_rx_clk = {
2470 + .halt_reg = 0x28904,
2471 + .halt_check = BRANCH_HALT,
2473 + .enable_reg = 0x28904,
2474 + .enable_mask = BIT(0),
2475 + .hw.init = &(const struct clk_init_data) {
2476 + .name = "nss_cc_uniphy_port1_rx_clk",
2477 + .parent_data = &(const struct clk_parent_data) {
2478 + .hw = &nss_cc_port1_rx_div_clk_src.clkr.hw,
2481 + .flags = CLK_SET_RATE_PARENT,
2482 + .ops = &clk_branch2_ops,
2487 +static struct clk_branch nss_cc_uniphy_port1_tx_clk = {
2488 + .halt_reg = 0x28908,
2489 + .halt_check = BRANCH_HALT,
2491 + .enable_reg = 0x28908,
2492 + .enable_mask = BIT(0),
2493 + .hw.init = &(const struct clk_init_data) {
2494 + .name = "nss_cc_uniphy_port1_tx_clk",
2495 + .parent_data = &(const struct clk_parent_data) {
2496 + .hw = &nss_cc_port1_tx_div_clk_src.clkr.hw,
2499 + .flags = CLK_SET_RATE_PARENT,
2500 + .ops = &clk_branch2_ops,
2505 +static struct clk_branch nss_cc_uniphy_port2_rx_clk = {
2506 + .halt_reg = 0x2890c,
2507 + .halt_check = BRANCH_HALT,
2509 + .enable_reg = 0x2890c,
2510 + .enable_mask = BIT(0),
2511 + .hw.init = &(const struct clk_init_data) {
2512 + .name = "nss_cc_uniphy_port2_rx_clk",
2513 + .parent_data = &(const struct clk_parent_data) {
2514 + .hw = &nss_cc_port2_rx_div_clk_src.clkr.hw,
2517 + .flags = CLK_SET_RATE_PARENT,
2518 + .ops = &clk_branch2_ops,
2523 +static struct clk_branch nss_cc_uniphy_port2_tx_clk = {
2524 + .halt_reg = 0x28910,
2525 + .halt_check = BRANCH_HALT,
2527 + .enable_reg = 0x28910,
2528 + .enable_mask = BIT(0),
2529 + .hw.init = &(const struct clk_init_data) {
2530 + .name = "nss_cc_uniphy_port2_tx_clk",
2531 + .parent_data = &(const struct clk_parent_data) {
2532 + .hw = &nss_cc_port2_tx_div_clk_src.clkr.hw,
2535 + .flags = CLK_SET_RATE_PARENT,
2536 + .ops = &clk_branch2_ops,
2541 +static struct clk_branch nss_cc_uniphy_port3_rx_clk = {
2542 + .halt_reg = 0x28914,
2543 + .halt_check = BRANCH_HALT,
2545 + .enable_reg = 0x28914,
2546 + .enable_mask = BIT(0),
2547 + .hw.init = &(const struct clk_init_data) {
2548 + .name = "nss_cc_uniphy_port3_rx_clk",
2549 + .parent_data = &(const struct clk_parent_data) {
2550 + .hw = &nss_cc_port3_rx_div_clk_src.clkr.hw,
2553 + .flags = CLK_SET_RATE_PARENT,
2554 + .ops = &clk_branch2_ops,
2559 +static struct clk_branch nss_cc_uniphy_port3_tx_clk = {
2560 + .halt_reg = 0x28918,
2561 + .halt_check = BRANCH_HALT,
2563 + .enable_reg = 0x28918,
2564 + .enable_mask = BIT(0),
2565 + .hw.init = &(const struct clk_init_data) {
2566 + .name = "nss_cc_uniphy_port3_tx_clk",
2567 + .parent_data = &(const struct clk_parent_data) {
2568 + .hw = &nss_cc_port3_tx_div_clk_src.clkr.hw,
2571 + .flags = CLK_SET_RATE_PARENT,
2572 + .ops = &clk_branch2_ops,
2577 +static struct clk_branch nss_cc_uniphy_port4_rx_clk = {
2578 + .halt_reg = 0x2891c,
2579 + .halt_check = BRANCH_HALT,
2581 + .enable_reg = 0x2891c,
2582 + .enable_mask = BIT(0),
2583 + .hw.init = &(const struct clk_init_data) {
2584 + .name = "nss_cc_uniphy_port4_rx_clk",
2585 + .parent_data = &(const struct clk_parent_data) {
2586 + .hw = &nss_cc_port4_rx_div_clk_src.clkr.hw,
2589 + .flags = CLK_SET_RATE_PARENT,
2590 + .ops = &clk_branch2_ops,
2595 +static struct clk_branch nss_cc_uniphy_port4_tx_clk = {
2596 + .halt_reg = 0x28920,
2597 + .halt_check = BRANCH_HALT,
2599 + .enable_reg = 0x28920,
2600 + .enable_mask = BIT(0),
2601 + .hw.init = &(const struct clk_init_data) {
2602 + .name = "nss_cc_uniphy_port4_tx_clk",
2603 + .parent_data = &(const struct clk_parent_data) {
2604 + .hw = &nss_cc_port4_tx_div_clk_src.clkr.hw,
2607 + .flags = CLK_SET_RATE_PARENT,
2608 + .ops = &clk_branch2_ops,
2613 +static struct clk_branch nss_cc_uniphy_port5_rx_clk = {
2614 + .halt_reg = 0x28924,
2615 + .halt_check = BRANCH_HALT,
2617 + .enable_reg = 0x28924,
2618 + .enable_mask = BIT(0),
2619 + .hw.init = &(const struct clk_init_data) {
2620 + .name = "nss_cc_uniphy_port5_rx_clk",
2621 + .parent_data = &(const struct clk_parent_data) {
2622 + .hw = &nss_cc_port5_rx_div_clk_src.clkr.hw,
2625 + .flags = CLK_SET_RATE_PARENT,
2626 + .ops = &clk_branch2_ops,
2631 +static struct clk_branch nss_cc_uniphy_port5_tx_clk = {
2632 + .halt_reg = 0x28928,
2633 + .halt_check = BRANCH_HALT,
2635 + .enable_reg = 0x28928,
2636 + .enable_mask = BIT(0),
2637 + .hw.init = &(const struct clk_init_data) {
2638 + .name = "nss_cc_uniphy_port5_tx_clk",
2639 + .parent_data = &(const struct clk_parent_data) {
2640 + .hw = &nss_cc_port5_tx_div_clk_src.clkr.hw,
2643 + .flags = CLK_SET_RATE_PARENT,
2644 + .ops = &clk_branch2_ops,
2649 +static struct clk_branch nss_cc_uniphy_port6_rx_clk = {
2650 + .halt_reg = 0x2892c,
2651 + .halt_check = BRANCH_HALT,
2653 + .enable_reg = 0x2892c,
2654 + .enable_mask = BIT(0),
2655 + .hw.init = &(const struct clk_init_data) {
2656 + .name = "nss_cc_uniphy_port6_rx_clk",
2657 + .parent_data = &(const struct clk_parent_data) {
2658 + .hw = &nss_cc_port6_rx_div_clk_src.clkr.hw,
2661 + .flags = CLK_SET_RATE_PARENT,
2662 + .ops = &clk_branch2_ops,
2667 +static struct clk_branch nss_cc_uniphy_port6_tx_clk = {
2668 + .halt_reg = 0x28930,
2669 + .halt_check = BRANCH_HALT,
2671 + .enable_reg = 0x28930,
2672 + .enable_mask = BIT(0),
2673 + .hw.init = &(const struct clk_init_data) {
2674 + .name = "nss_cc_uniphy_port6_tx_clk",
2675 + .parent_data = &(const struct clk_parent_data) {
2676 + .hw = &nss_cc_port6_tx_div_clk_src.clkr.hw,
2679 + .flags = CLK_SET_RATE_PARENT,
2680 + .ops = &clk_branch2_ops,
2685 +static struct clk_branch nss_cc_xgmac0_ptp_ref_clk = {
2686 + .halt_reg = 0x28264,
2687 + .halt_check = BRANCH_HALT,
2689 + .enable_reg = 0x28264,
2690 + .enable_mask = BIT(0),
2691 + .hw.init = &(const struct clk_init_data) {
2692 + .name = "nss_cc_xgmac0_ptp_ref_clk",
2693 + .parent_data = &(const struct clk_parent_data) {
2694 + .hw = &nss_cc_xgmac0_ptp_ref_div_clk_src.clkr.hw,
2697 + .flags = CLK_SET_RATE_PARENT,
2698 + .ops = &clk_branch2_ops,
2703 +static struct clk_branch nss_cc_xgmac1_ptp_ref_clk = {
2704 + .halt_reg = 0x28268,
2705 + .halt_check = BRANCH_HALT,
2707 + .enable_reg = 0x28268,
2708 + .enable_mask = BIT(0),
2709 + .hw.init = &(const struct clk_init_data) {
2710 + .name = "nss_cc_xgmac1_ptp_ref_clk",
2711 + .parent_data = &(const struct clk_parent_data) {
2712 + .hw = &nss_cc_xgmac1_ptp_ref_div_clk_src.clkr.hw,
2715 + .flags = CLK_SET_RATE_PARENT,
2716 + .ops = &clk_branch2_ops,
2721 +static struct clk_branch nss_cc_xgmac2_ptp_ref_clk = {
2722 + .halt_reg = 0x2826c,
2723 + .halt_check = BRANCH_HALT,
2725 + .enable_reg = 0x2826c,
2726 + .enable_mask = BIT(0),
2727 + .hw.init = &(const struct clk_init_data) {
2728 + .name = "nss_cc_xgmac2_ptp_ref_clk",
2729 + .parent_data = &(const struct clk_parent_data) {
2730 + .hw = &nss_cc_xgmac2_ptp_ref_div_clk_src.clkr.hw,
2733 + .flags = CLK_SET_RATE_PARENT,
2734 + .ops = &clk_branch2_ops,
2739 +static struct clk_branch nss_cc_xgmac3_ptp_ref_clk = {
2740 + .halt_reg = 0x28270,
2741 + .halt_check = BRANCH_HALT,
2743 + .enable_reg = 0x28270,
2744 + .enable_mask = BIT(0),
2745 + .hw.init = &(const struct clk_init_data) {
2746 + .name = "nss_cc_xgmac3_ptp_ref_clk",
2747 + .parent_data = &(const struct clk_parent_data) {
2748 + .hw = &nss_cc_xgmac3_ptp_ref_div_clk_src.clkr.hw,
2751 + .flags = CLK_SET_RATE_PARENT,
2752 + .ops = &clk_branch2_ops,
2757 +static struct clk_branch nss_cc_xgmac4_ptp_ref_clk = {
2758 + .halt_reg = 0x28274,
2759 + .halt_check = BRANCH_HALT,
2761 + .enable_reg = 0x28274,
2762 + .enable_mask = BIT(0),
2763 + .hw.init = &(const struct clk_init_data) {
2764 + .name = "nss_cc_xgmac4_ptp_ref_clk",
2765 + .parent_data = &(const struct clk_parent_data) {
2766 + .hw = &nss_cc_xgmac4_ptp_ref_div_clk_src.clkr.hw,
2769 + .flags = CLK_SET_RATE_PARENT,
2770 + .ops = &clk_branch2_ops,
2775 +static struct clk_branch nss_cc_xgmac5_ptp_ref_clk = {
2776 + .halt_reg = 0x28278,
2777 + .halt_check = BRANCH_HALT,
2779 + .enable_reg = 0x28278,
2780 + .enable_mask = BIT(0),
2781 + .hw.init = &(const struct clk_init_data) {
2782 + .name = "nss_cc_xgmac5_ptp_ref_clk",
2783 + .parent_data = &(const struct clk_parent_data) {
2784 + .hw = &nss_cc_xgmac5_ptp_ref_div_clk_src.clkr.hw,
2787 + .flags = CLK_SET_RATE_PARENT,
2788 + .ops = &clk_branch2_ops,
2793 +static struct clk_regmap *nss_cc_ipq9574_clocks[] = {
2794 + [NSS_CC_CE_APB_CLK] = &nss_cc_ce_apb_clk.clkr,
2795 + [NSS_CC_CE_AXI_CLK] = &nss_cc_ce_axi_clk.clkr,
2796 + [NSS_CC_CE_CLK_SRC] = &nss_cc_ce_clk_src.clkr,
2797 + [NSS_CC_CFG_CLK_SRC] = &nss_cc_cfg_clk_src.clkr,
2798 + [NSS_CC_CLC_AXI_CLK] = &nss_cc_clc_axi_clk.clkr,
2799 + [NSS_CC_CLC_CLK_SRC] = &nss_cc_clc_clk_src.clkr,
2800 + [NSS_CC_CRYPTO_CLK] = &nss_cc_crypto_clk.clkr,
2801 + [NSS_CC_CRYPTO_CLK_SRC] = &nss_cc_crypto_clk_src.clkr,
2802 + [NSS_CC_CRYPTO_PPE_CLK] = &nss_cc_crypto_ppe_clk.clkr,
2803 + [NSS_CC_HAQ_AHB_CLK] = &nss_cc_haq_ahb_clk.clkr,
2804 + [NSS_CC_HAQ_AXI_CLK] = &nss_cc_haq_axi_clk.clkr,
2805 + [NSS_CC_HAQ_CLK_SRC] = &nss_cc_haq_clk_src.clkr,
2806 + [NSS_CC_IMEM_AHB_CLK] = &nss_cc_imem_ahb_clk.clkr,
2807 + [NSS_CC_IMEM_CLK_SRC] = &nss_cc_imem_clk_src.clkr,
2808 + [NSS_CC_IMEM_QSB_CLK] = &nss_cc_imem_qsb_clk.clkr,
2809 + [NSS_CC_INT_CFG_CLK_SRC] = &nss_cc_int_cfg_clk_src.clkr,
2810 + [NSS_CC_NSS_CSR_CLK] = &nss_cc_nss_csr_clk.clkr,
2811 + [NSS_CC_NSSNOC_CE_APB_CLK] = &nss_cc_nssnoc_ce_apb_clk.clkr,
2812 + [NSS_CC_NSSNOC_CE_AXI_CLK] = &nss_cc_nssnoc_ce_axi_clk.clkr,
2813 + [NSS_CC_NSSNOC_CLC_AXI_CLK] = &nss_cc_nssnoc_clc_axi_clk.clkr,
2814 + [NSS_CC_NSSNOC_CRYPTO_CLK] = &nss_cc_nssnoc_crypto_clk.clkr,
2815 + [NSS_CC_NSSNOC_HAQ_AHB_CLK] = &nss_cc_nssnoc_haq_ahb_clk.clkr,
2816 + [NSS_CC_NSSNOC_HAQ_AXI_CLK] = &nss_cc_nssnoc_haq_axi_clk.clkr,
2817 + [NSS_CC_NSSNOC_IMEM_AHB_CLK] = &nss_cc_nssnoc_imem_ahb_clk.clkr,
2818 + [NSS_CC_NSSNOC_IMEM_QSB_CLK] = &nss_cc_nssnoc_imem_qsb_clk.clkr,
2819 + [NSS_CC_NSSNOC_NSS_CSR_CLK] = &nss_cc_nssnoc_nss_csr_clk.clkr,
2820 + [NSS_CC_NSSNOC_PPE_CFG_CLK] = &nss_cc_nssnoc_ppe_cfg_clk.clkr,
2821 + [NSS_CC_NSSNOC_PPE_CLK] = &nss_cc_nssnoc_ppe_clk.clkr,
2822 + [NSS_CC_NSSNOC_UBI32_AHB0_CLK] = &nss_cc_nssnoc_ubi32_ahb0_clk.clkr,
2823 + [NSS_CC_NSSNOC_UBI32_AXI0_CLK] = &nss_cc_nssnoc_ubi32_axi0_clk.clkr,
2824 + [NSS_CC_NSSNOC_UBI32_INT0_AHB_CLK] =
2825 + &nss_cc_nssnoc_ubi32_int0_ahb_clk.clkr,
2826 + [NSS_CC_NSSNOC_UBI32_NC_AXI0_1_CLK] =
2827 + &nss_cc_nssnoc_ubi32_nc_axi0_1_clk.clkr,
2828 + [NSS_CC_NSSNOC_UBI32_NC_AXI0_CLK] =
2829 + &nss_cc_nssnoc_ubi32_nc_axi0_clk.clkr,
2830 + [NSS_CC_PORT1_MAC_CLK] = &nss_cc_port1_mac_clk.clkr,
2831 + [NSS_CC_PORT1_RX_CLK] = &nss_cc_port1_rx_clk.clkr,
2832 + [NSS_CC_PORT1_RX_CLK_SRC] = &nss_cc_port1_rx_clk_src.clkr,
2833 + [NSS_CC_PORT1_RX_DIV_CLK_SRC] = &nss_cc_port1_rx_div_clk_src.clkr,
2834 + [NSS_CC_PORT1_TX_CLK] = &nss_cc_port1_tx_clk.clkr,
2835 + [NSS_CC_PORT1_TX_CLK_SRC] = &nss_cc_port1_tx_clk_src.clkr,
2836 + [NSS_CC_PORT1_TX_DIV_CLK_SRC] = &nss_cc_port1_tx_div_clk_src.clkr,
2837 + [NSS_CC_PORT2_MAC_CLK] = &nss_cc_port2_mac_clk.clkr,
2838 + [NSS_CC_PORT2_RX_CLK] = &nss_cc_port2_rx_clk.clkr,
2839 + [NSS_CC_PORT2_RX_CLK_SRC] = &nss_cc_port2_rx_clk_src.clkr,
2840 + [NSS_CC_PORT2_RX_DIV_CLK_SRC] = &nss_cc_port2_rx_div_clk_src.clkr,
2841 + [NSS_CC_PORT2_TX_CLK] = &nss_cc_port2_tx_clk.clkr,
2842 + [NSS_CC_PORT2_TX_CLK_SRC] = &nss_cc_port2_tx_clk_src.clkr,
2843 + [NSS_CC_PORT2_TX_DIV_CLK_SRC] = &nss_cc_port2_tx_div_clk_src.clkr,
2844 + [NSS_CC_PORT3_MAC_CLK] = &nss_cc_port3_mac_clk.clkr,
2845 + [NSS_CC_PORT3_RX_CLK] = &nss_cc_port3_rx_clk.clkr,
2846 + [NSS_CC_PORT3_RX_CLK_SRC] = &nss_cc_port3_rx_clk_src.clkr,
2847 + [NSS_CC_PORT3_RX_DIV_CLK_SRC] = &nss_cc_port3_rx_div_clk_src.clkr,
2848 + [NSS_CC_PORT3_TX_CLK] = &nss_cc_port3_tx_clk.clkr,
2849 + [NSS_CC_PORT3_TX_CLK_SRC] = &nss_cc_port3_tx_clk_src.clkr,
2850 + [NSS_CC_PORT3_TX_DIV_CLK_SRC] = &nss_cc_port3_tx_div_clk_src.clkr,
2851 + [NSS_CC_PORT4_MAC_CLK] = &nss_cc_port4_mac_clk.clkr,
2852 + [NSS_CC_PORT4_RX_CLK] = &nss_cc_port4_rx_clk.clkr,
2853 + [NSS_CC_PORT4_RX_CLK_SRC] = &nss_cc_port4_rx_clk_src.clkr,
2854 + [NSS_CC_PORT4_RX_DIV_CLK_SRC] = &nss_cc_port4_rx_div_clk_src.clkr,
2855 + [NSS_CC_PORT4_TX_CLK] = &nss_cc_port4_tx_clk.clkr,
2856 + [NSS_CC_PORT4_TX_CLK_SRC] = &nss_cc_port4_tx_clk_src.clkr,
2857 + [NSS_CC_PORT4_TX_DIV_CLK_SRC] = &nss_cc_port4_tx_div_clk_src.clkr,
2858 + [NSS_CC_PORT5_MAC_CLK] = &nss_cc_port5_mac_clk.clkr,
2859 + [NSS_CC_PORT5_RX_CLK] = &nss_cc_port5_rx_clk.clkr,
2860 + [NSS_CC_PORT5_RX_CLK_SRC] = &nss_cc_port5_rx_clk_src.clkr,
2861 + [NSS_CC_PORT5_RX_DIV_CLK_SRC] = &nss_cc_port5_rx_div_clk_src.clkr,
2862 + [NSS_CC_PORT5_TX_CLK] = &nss_cc_port5_tx_clk.clkr,
2863 + [NSS_CC_PORT5_TX_CLK_SRC] = &nss_cc_port5_tx_clk_src.clkr,
2864 + [NSS_CC_PORT5_TX_DIV_CLK_SRC] = &nss_cc_port5_tx_div_clk_src.clkr,
2865 + [NSS_CC_PORT6_MAC_CLK] = &nss_cc_port6_mac_clk.clkr,
2866 + [NSS_CC_PORT6_RX_CLK] = &nss_cc_port6_rx_clk.clkr,
2867 + [NSS_CC_PORT6_RX_CLK_SRC] = &nss_cc_port6_rx_clk_src.clkr,
2868 + [NSS_CC_PORT6_RX_DIV_CLK_SRC] = &nss_cc_port6_rx_div_clk_src.clkr,
2869 + [NSS_CC_PORT6_TX_CLK] = &nss_cc_port6_tx_clk.clkr,
2870 + [NSS_CC_PORT6_TX_CLK_SRC] = &nss_cc_port6_tx_clk_src.clkr,
2871 + [NSS_CC_PORT6_TX_DIV_CLK_SRC] = &nss_cc_port6_tx_div_clk_src.clkr,
2872 + [NSS_CC_PPE_CLK_SRC] = &nss_cc_ppe_clk_src.clkr,
2873 + [NSS_CC_PPE_EDMA_CFG_CLK] = &nss_cc_ppe_edma_cfg_clk.clkr,
2874 + [NSS_CC_PPE_EDMA_CLK] = &nss_cc_ppe_edma_clk.clkr,
2875 + [NSS_CC_PPE_SWITCH_BTQ_CLK] = &nss_cc_ppe_switch_btq_clk.clkr,
2876 + [NSS_CC_PPE_SWITCH_CFG_CLK] = &nss_cc_ppe_switch_cfg_clk.clkr,
2877 + [NSS_CC_PPE_SWITCH_CLK] = &nss_cc_ppe_switch_clk.clkr,
2878 + [NSS_CC_PPE_SWITCH_IPE_CLK] = &nss_cc_ppe_switch_ipe_clk.clkr,
2879 + [NSS_CC_UBI0_CLK_SRC] = &nss_cc_ubi0_clk_src.clkr,
2880 + [NSS_CC_UBI0_DIV_CLK_SRC] = &nss_cc_ubi0_div_clk_src.clkr,
2881 + [NSS_CC_UBI1_CLK_SRC] = &nss_cc_ubi1_clk_src.clkr,
2882 + [NSS_CC_UBI1_DIV_CLK_SRC] = &nss_cc_ubi1_div_clk_src.clkr,
2883 + [NSS_CC_UBI2_CLK_SRC] = &nss_cc_ubi2_clk_src.clkr,
2884 + [NSS_CC_UBI2_DIV_CLK_SRC] = &nss_cc_ubi2_div_clk_src.clkr,
2885 + [NSS_CC_UBI32_AHB0_CLK] = &nss_cc_ubi32_ahb0_clk.clkr,
2886 + [NSS_CC_UBI32_AHB1_CLK] = &nss_cc_ubi32_ahb1_clk.clkr,
2887 + [NSS_CC_UBI32_AHB2_CLK] = &nss_cc_ubi32_ahb2_clk.clkr,
2888 + [NSS_CC_UBI32_AHB3_CLK] = &nss_cc_ubi32_ahb3_clk.clkr,
2889 + [NSS_CC_UBI32_AXI0_CLK] = &nss_cc_ubi32_axi0_clk.clkr,
2890 + [NSS_CC_UBI32_AXI1_CLK] = &nss_cc_ubi32_axi1_clk.clkr,
2891 + [NSS_CC_UBI32_AXI2_CLK] = &nss_cc_ubi32_axi2_clk.clkr,
2892 + [NSS_CC_UBI32_AXI3_CLK] = &nss_cc_ubi32_axi3_clk.clkr,
2893 + [NSS_CC_UBI32_CORE0_CLK] = &nss_cc_ubi32_core0_clk.clkr,
2894 + [NSS_CC_UBI32_CORE1_CLK] = &nss_cc_ubi32_core1_clk.clkr,
2895 + [NSS_CC_UBI32_CORE2_CLK] = &nss_cc_ubi32_core2_clk.clkr,
2896 + [NSS_CC_UBI32_CORE3_CLK] = &nss_cc_ubi32_core3_clk.clkr,
2897 + [NSS_CC_UBI32_INTR0_AHB_CLK] = &nss_cc_ubi32_intr0_ahb_clk.clkr,
2898 + [NSS_CC_UBI32_INTR1_AHB_CLK] = &nss_cc_ubi32_intr1_ahb_clk.clkr,
2899 + [NSS_CC_UBI32_INTR2_AHB_CLK] = &nss_cc_ubi32_intr2_ahb_clk.clkr,
2900 + [NSS_CC_UBI32_INTR3_AHB_CLK] = &nss_cc_ubi32_intr3_ahb_clk.clkr,
2901 + [NSS_CC_UBI32_NC_AXI0_CLK] = &nss_cc_ubi32_nc_axi0_clk.clkr,
2902 + [NSS_CC_UBI32_NC_AXI1_CLK] = &nss_cc_ubi32_nc_axi1_clk.clkr,
2903 + [NSS_CC_UBI32_NC_AXI2_CLK] = &nss_cc_ubi32_nc_axi2_clk.clkr,
2904 + [NSS_CC_UBI32_NC_AXI3_CLK] = &nss_cc_ubi32_nc_axi3_clk.clkr,
2905 + [NSS_CC_UBI32_UTCM0_CLK] = &nss_cc_ubi32_utcm0_clk.clkr,
2906 + [NSS_CC_UBI32_UTCM1_CLK] = &nss_cc_ubi32_utcm1_clk.clkr,
2907 + [NSS_CC_UBI32_UTCM2_CLK] = &nss_cc_ubi32_utcm2_clk.clkr,
2908 + [NSS_CC_UBI32_UTCM3_CLK] = &nss_cc_ubi32_utcm3_clk.clkr,
2909 + [NSS_CC_UBI3_CLK_SRC] = &nss_cc_ubi3_clk_src.clkr,
2910 + [NSS_CC_UBI3_DIV_CLK_SRC] = &nss_cc_ubi3_div_clk_src.clkr,
2911 + [NSS_CC_UBI_AXI_CLK_SRC] = &nss_cc_ubi_axi_clk_src.clkr,
2912 + [NSS_CC_UBI_NC_AXI_BFDCD_CLK_SRC] =
2913 + &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr,
2914 + [NSS_CC_UNIPHY_PORT1_RX_CLK] = &nss_cc_uniphy_port1_rx_clk.clkr,
2915 + [NSS_CC_UNIPHY_PORT1_TX_CLK] = &nss_cc_uniphy_port1_tx_clk.clkr,
2916 + [NSS_CC_UNIPHY_PORT2_RX_CLK] = &nss_cc_uniphy_port2_rx_clk.clkr,
2917 + [NSS_CC_UNIPHY_PORT2_TX_CLK] = &nss_cc_uniphy_port2_tx_clk.clkr,
2918 + [NSS_CC_UNIPHY_PORT3_RX_CLK] = &nss_cc_uniphy_port3_rx_clk.clkr,
2919 + [NSS_CC_UNIPHY_PORT3_TX_CLK] = &nss_cc_uniphy_port3_tx_clk.clkr,
2920 + [NSS_CC_UNIPHY_PORT4_RX_CLK] = &nss_cc_uniphy_port4_rx_clk.clkr,
2921 + [NSS_CC_UNIPHY_PORT4_TX_CLK] = &nss_cc_uniphy_port4_tx_clk.clkr,
2922 + [NSS_CC_UNIPHY_PORT5_RX_CLK] = &nss_cc_uniphy_port5_rx_clk.clkr,
2923 + [NSS_CC_UNIPHY_PORT5_TX_CLK] = &nss_cc_uniphy_port5_tx_clk.clkr,
2924 + [NSS_CC_UNIPHY_PORT6_RX_CLK] = &nss_cc_uniphy_port6_rx_clk.clkr,
2925 + [NSS_CC_UNIPHY_PORT6_TX_CLK] = &nss_cc_uniphy_port6_tx_clk.clkr,
2926 + [NSS_CC_XGMAC0_PTP_REF_CLK] = &nss_cc_xgmac0_ptp_ref_clk.clkr,
2927 + [NSS_CC_XGMAC0_PTP_REF_DIV_CLK_SRC] =
2928 + &nss_cc_xgmac0_ptp_ref_div_clk_src.clkr,
2929 + [NSS_CC_XGMAC1_PTP_REF_CLK] = &nss_cc_xgmac1_ptp_ref_clk.clkr,
2930 + [NSS_CC_XGMAC1_PTP_REF_DIV_CLK_SRC] =
2931 + &nss_cc_xgmac1_ptp_ref_div_clk_src.clkr,
2932 + [NSS_CC_XGMAC2_PTP_REF_CLK] = &nss_cc_xgmac2_ptp_ref_clk.clkr,
2933 + [NSS_CC_XGMAC2_PTP_REF_DIV_CLK_SRC] =
2934 + &nss_cc_xgmac2_ptp_ref_div_clk_src.clkr,
2935 + [NSS_CC_XGMAC3_PTP_REF_CLK] = &nss_cc_xgmac3_ptp_ref_clk.clkr,
2936 + [NSS_CC_XGMAC3_PTP_REF_DIV_CLK_SRC] =
2937 + &nss_cc_xgmac3_ptp_ref_div_clk_src.clkr,
2938 + [NSS_CC_XGMAC4_PTP_REF_CLK] = &nss_cc_xgmac4_ptp_ref_clk.clkr,
2939 + [NSS_CC_XGMAC4_PTP_REF_DIV_CLK_SRC] =
2940 + &nss_cc_xgmac4_ptp_ref_div_clk_src.clkr,
2941 + [NSS_CC_XGMAC5_PTP_REF_CLK] = &nss_cc_xgmac5_ptp_ref_clk.clkr,
2942 + [NSS_CC_XGMAC5_PTP_REF_DIV_CLK_SRC] =
2943 + &nss_cc_xgmac5_ptp_ref_div_clk_src.clkr,
2944 + [UBI32_PLL] = &ubi32_pll.clkr,
2945 + [UBI32_PLL_MAIN] = &ubi32_pll_main.clkr,
2948 +static const struct qcom_reset_map nss_cc_ipq9574_resets[] = {
2949 + [NSS_CC_CE_BCR] = { 0x28400, 0 },
2950 + [NSS_CC_CLC_BCR] = { 0x28600, 0 },
2951 + [NSS_CC_EIP197_BCR] = { 0x16004, 0 },
2952 + [NSS_CC_HAQ_BCR] = { 0x28300, 0 },
2953 + [NSS_CC_IMEM_BCR] = { 0xe004, 0 },
2954 + [NSS_CC_MAC_BCR] = { 0x28100, 0 },
2955 + [NSS_CC_PPE_BCR] = { 0x28200, 0 },
2956 + [NSS_CC_UBI_BCR] = { 0x28700, 0 },
2957 + [NSS_CC_UNIPHY_BCR] = { 0x28900, 0 },
2958 + [UBI3_CLKRST_CLAMP_ENABLE] = { 0x28a04, 9 },
2959 + [UBI3_CORE_CLAMP_ENABLE] = { 0x28a04, 8 },
2960 + [UBI2_CLKRST_CLAMP_ENABLE] = { 0x28a04, 7 },
2961 + [UBI2_CORE_CLAMP_ENABLE] = { 0x28a04, 6 },
2962 + [UBI1_CLKRST_CLAMP_ENABLE] = { 0x28a04, 5 },
2963 + [UBI1_CORE_CLAMP_ENABLE] = { 0x28a04, 4 },
2964 + [UBI0_CLKRST_CLAMP_ENABLE] = { 0x28a04, 3 },
2965 + [UBI0_CORE_CLAMP_ENABLE] = { 0x28a04, 2 },
2966 + [NSSNOC_NSS_CSR_ARES] = { 0x28a04, 1 },
2967 + [NSS_CSR_ARES] = { 0x28a04, 0 },
2968 + [PPE_BTQ_ARES] = { 0x28a08, 20 },
2969 + [PPE_IPE_ARES] = { 0x28a08, 19 },
2970 + [PPE_ARES] = { 0x28a08, 18 },
2971 + [PPE_CFG_ARES] = { 0x28a08, 17 },
2972 + [PPE_EDMA_ARES] = { 0x28a08, 16 },
2973 + [PPE_EDMA_CFG_ARES] = { 0x28a08, 15 },
2974 + [CRY_PPE_ARES] = { 0x28a08, 14 },
2975 + [NSSNOC_PPE_ARES] = { 0x28a08, 13 },
2976 + [NSSNOC_PPE_CFG_ARES] = { 0x28a08, 12 },
2977 + [PORT1_MAC_ARES] = { 0x28a08, 11 },
2978 + [PORT2_MAC_ARES] = { 0x28a08, 10 },
2979 + [PORT3_MAC_ARES] = { 0x28a08, 9 },
2980 + [PORT4_MAC_ARES] = { 0x28a08, 8 },
2981 + [PORT5_MAC_ARES] = { 0x28a08, 7 },
2982 + [PORT6_MAC_ARES] = { 0x28a08, 6 },
2983 + [XGMAC0_PTP_REF_ARES] = { 0x28a08, 5 },
2984 + [XGMAC1_PTP_REF_ARES] = { 0x28a08, 4 },
2985 + [XGMAC2_PTP_REF_ARES] = { 0x28a08, 3 },
2986 + [XGMAC3_PTP_REF_ARES] = { 0x28a08, 2 },
2987 + [XGMAC4_PTP_REF_ARES] = { 0x28a08, 1 },
2988 + [XGMAC5_PTP_REF_ARES] = { 0x28a08, 0 },
2989 + [HAQ_AHB_ARES] = { 0x28a0c, 3 },
2990 + [HAQ_AXI_ARES] = { 0x28a0c, 2 },
2991 + [NSSNOC_HAQ_AHB_ARES] = { 0x28a0c, 1 },
2992 + [NSSNOC_HAQ_AXI_ARES] = { 0x28a0c, 0 },
2993 + [CE_APB_ARES] = { 0x28a10, 3 },
2994 + [CE_AXI_ARES] = { 0x28a10, 2 },
2995 + [NSSNOC_CE_APB_ARES] = { 0x28a10, 1 },
2996 + [NSSNOC_CE_AXI_ARES] = { 0x28a10, 0 },
2997 + [CRYPTO_ARES] = { 0x28a14, 1 },
2998 + [NSSNOC_CRYPTO_ARES] = { 0x28a14, 0 },
2999 + [NSSNOC_NC_AXI0_1_ARES] = { 0x28a1c, 28 },
3000 + [UBI0_CORE_ARES] = { 0x28a1c, 27 },
3001 + [UBI1_CORE_ARES] = { 0x28a1c, 26 },
3002 + [UBI2_CORE_ARES] = { 0x28a1c, 25 },
3003 + [UBI3_CORE_ARES] = { 0x28a1c, 24 },
3004 + [NC_AXI0_ARES] = { 0x28a1c, 23 },
3005 + [UTCM0_ARES] = { 0x28a1c, 22 },
3006 + [NC_AXI1_ARES] = { 0x28a1c, 21 },
3007 + [UTCM1_ARES] = { 0x28a1c, 20 },
3008 + [NC_AXI2_ARES] = { 0x28a1c, 19 },
3009 + [UTCM2_ARES] = { 0x28a1c, 18 },
3010 + [NC_AXI3_ARES] = { 0x28a1c, 17 },
3011 + [UTCM3_ARES] = { 0x28a1c, 16 },
3012 + [NSSNOC_NC_AXI0_ARES] = { 0x28a1c, 15 },
3013 + [AHB0_ARES] = { 0x28a1c, 14 },
3014 + [INTR0_AHB_ARES] = { 0x28a1c, 13 },
3015 + [AHB1_ARES] = { 0x28a1c, 12 },
3016 + [INTR1_AHB_ARES] = { 0x28a1c, 11 },
3017 + [AHB2_ARES] = { 0x28a1c, 10 },
3018 + [INTR2_AHB_ARES] = { 0x28a1c, 9 },
3019 + [AHB3_ARES] = { 0x28a1c, 8 },
3020 + [INTR3_AHB_ARES] = { 0x28a1c, 7 },
3021 + [NSSNOC_AHB0_ARES] = { 0x28a1c, 6 },
3022 + [NSSNOC_INT0_AHB_ARES] = { 0x28a1c, 5 },
3023 + [AXI0_ARES] = { 0x28a1c, 4 },
3024 + [AXI1_ARES] = { 0x28a1c, 3 },
3025 + [AXI2_ARES] = { 0x28a1c, 2 },
3026 + [AXI3_ARES] = { 0x28a1c, 1 },
3027 + [NSSNOC_AXI0_ARES] = { 0x28a1c, 0 },
3028 + [IMEM_QSB_ARES] = { 0x28a20, 3 },
3029 + [NSSNOC_IMEM_QSB_ARES] = { 0x28a20, 2 },
3030 + [IMEM_AHB_ARES] = { 0x28a20, 1 },
3031 + [NSSNOC_IMEM_AHB_ARES] = { 0x28a20, 0 },
3032 + [UNIPHY_PORT1_RX_ARES] = { 0x28a24, 23 },
3033 + [UNIPHY_PORT1_TX_ARES] = { 0x28a24, 22 },
3034 + [UNIPHY_PORT2_RX_ARES] = { 0x28a24, 21 },
3035 + [UNIPHY_PORT2_TX_ARES] = { 0x28a24, 20 },
3036 + [UNIPHY_PORT3_RX_ARES] = { 0x28a24, 19 },
3037 + [UNIPHY_PORT3_TX_ARES] = { 0x28a24, 18 },
3038 + [UNIPHY_PORT4_RX_ARES] = { 0x28a24, 17 },
3039 + [UNIPHY_PORT4_TX_ARES] = { 0x28a24, 16 },
3040 + [UNIPHY_PORT5_RX_ARES] = { 0x28a24, 15 },
3041 + [UNIPHY_PORT5_TX_ARES] = { 0x28a24, 14 },
3042 + [UNIPHY_PORT6_RX_ARES] = { 0x28a24, 13 },
3043 + [UNIPHY_PORT6_TX_ARES] = { 0x28a24, 12 },
3044 + [PORT1_RX_ARES] = { 0x28a24, 11 },
3045 + [PORT1_TX_ARES] = { 0x28a24, 10 },
3046 + [PORT2_RX_ARES] = { 0x28a24, 9 },
3047 + [PORT2_TX_ARES] = { 0x28a24, 8 },
3048 + [PORT3_RX_ARES] = { 0x28a24, 7 },
3049 + [PORT3_TX_ARES] = { 0x28a24, 6 },
3050 + [PORT4_RX_ARES] = { 0x28a24, 5 },
3051 + [PORT4_TX_ARES] = { 0x28a24, 4 },
3052 + [PORT5_RX_ARES] = { 0x28a24, 3 },
3053 + [PORT5_TX_ARES] = { 0x28a24, 2 },
3054 + [PORT6_RX_ARES] = { 0x28a24, 1 },
3055 + [PORT6_TX_ARES] = { 0x28a24, 0 },
3056 + [PPE_FULL_RESET] = { .reg = 0x28a08, .bitmask = GENMASK(20, 17) },
3057 + [UNIPHY0_SOFT_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(23, 14) },
3058 + [UNIPHY1_SOFT_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(15, 14) },
3059 + [UNIPHY2_SOFT_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(13, 12) },
3060 + [UNIPHY_PORT1_ARES] = { .reg = 0x28a24, .bitmask = GENMASK(23, 22) },
3061 + [UNIPHY_PORT2_ARES] = { .reg = 0x28a24, .bitmask = GENMASK(21, 20) },
3062 + [UNIPHY_PORT3_ARES] = { .reg = 0x28a24, .bitmask = GENMASK(19, 18) },
3063 + [UNIPHY_PORT4_ARES] = { .reg = 0x28a24, .bitmask = GENMASK(17, 16) },
3064 + [UNIPHY_PORT5_ARES] = { .reg = 0x28a24, .bitmask = GENMASK(15, 14) },
3065 + [UNIPHY_PORT6_ARES] = { .reg = 0x28a24, .bitmask = GENMASK(13, 12) },
3066 + [NSSPORT1_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(11, 10) },
3067 + [NSSPORT2_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(9, 8) },
3068 + [NSSPORT3_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(7, 6) },
3069 + [NSSPORT4_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(5, 4) },
3070 + [NSSPORT5_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(3, 2) },
3071 + [NSSPORT6_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(1, 0) },
3072 + [EDMA_HW_RESET] = { .reg = 0x28a08, .bitmask = GENMASK(16, 15) },
3075 +static const struct regmap_config nss_cc_ipq9574_regmap_config = {
3079 + .max_register = 0x28a34,
3083 +static struct qcom_icc_hws_data icc_ipq9574_nss_hws[] = {
3084 + { MASTER_NSSNOC_PPE, SLAVE_NSSNOC_PPE, NSS_CC_NSSNOC_PPE_CLK },
3085 + { MASTER_NSSNOC_PPE_CFG, SLAVE_NSSNOC_PPE_CFG, NSS_CC_NSSNOC_PPE_CFG_CLK },
3086 + { MASTER_NSSNOC_NSS_CSR, SLAVE_NSSNOC_NSS_CSR, NSS_CC_NSSNOC_NSS_CSR_CLK },
3087 + { MASTER_NSSNOC_IMEM_QSB, SLAVE_NSSNOC_IMEM_QSB, NSS_CC_NSSNOC_IMEM_QSB_CLK },
3088 + { MASTER_NSSNOC_IMEM_AHB, SLAVE_NSSNOC_IMEM_AHB, NSS_CC_NSSNOC_IMEM_AHB_CLK },
3091 +#define IPQ_NSSCC_ID (9574 * 2) /* some unique value */
3093 +static const struct qcom_cc_desc nss_cc_ipq9574_desc = {
3094 + .config = &nss_cc_ipq9574_regmap_config,
3095 + .clks = nss_cc_ipq9574_clocks,
3096 + .num_clks = ARRAY_SIZE(nss_cc_ipq9574_clocks),
3097 + .resets = nss_cc_ipq9574_resets,
3098 + .num_resets = ARRAY_SIZE(nss_cc_ipq9574_resets),
3099 + .icc_hws = icc_ipq9574_nss_hws,
3100 + .num_icc_hws = ARRAY_SIZE(icc_ipq9574_nss_hws),
3101 + .icc_first_node_id = IPQ_NSSCC_ID,
3104 +static const struct of_device_id nss_cc_ipq9574_match_table[] = {
3105 + { .compatible = "qcom,ipq9574-nsscc" },
3108 +MODULE_DEVICE_TABLE(of, nss_cc_ipq9574_match_table);
3110 +static int nss_cc_ipq9574_probe(struct platform_device *pdev)
3112 + struct regmap *regmap;
3114 + regmap = qcom_cc_map(pdev, &nss_cc_ipq9574_desc);
3115 + if (IS_ERR(regmap))
3116 + return PTR_ERR(regmap);
3118 + clk_alpha_pll_configure(&ubi32_pll_main, regmap, &ubi32_pll_config);
3120 + return qcom_cc_really_probe(&pdev->dev, &nss_cc_ipq9574_desc, regmap);
3123 +static struct platform_driver nss_cc_ipq9574_driver = {
3124 + .probe = nss_cc_ipq9574_probe,
3126 + .name = "qcom,nsscc-ipq9574",
3127 + .of_match_table = nss_cc_ipq9574_match_table,
3128 + .sync_state = icc_sync_state, /* TODO seems to cause hang */
3132 +module_platform_driver(nss_cc_ipq9574_driver);
3134 +MODULE_DESCRIPTION("QTI NSS_CC IPQ9574 Driver");
3135 +MODULE_LICENSE("GPL");