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 --- a/drivers/clk/qcom/Kconfig
21 +++ b/drivers/clk/qcom/Kconfig
22 @@ -215,6 +215,13 @@ config IPQ_GCC_9574
23 i2c, USB, SD/eMMC, etc. Select this for the root clock
26 +config IPQ_NSSCC_9574
27 + tristate "IPQ9574 NSS Clock Controller"
28 + depends on ARM64 || COMPILE_TEST
29 + depends on IPQ_GCC_9574
31 + Support for NSS clock controller on ipq9574 devices.
33 config IPQ_NSSCC_QCA8K
34 tristate "QCA8K(QCA8386 or QCA8084) NSS Clock Controller"
35 depends on MDIO_BUS || COMPILE_TEST
36 --- a/drivers/clk/qcom/Makefile
37 +++ b/drivers/clk/qcom/Makefile
38 @@ -31,6 +31,7 @@ obj-$(CONFIG_IPQ_GCC_6018) += gcc-ipq601
39 obj-$(CONFIG_IPQ_GCC_806X) += gcc-ipq806x.o
40 obj-$(CONFIG_IPQ_GCC_8074) += gcc-ipq8074.o
41 obj-$(CONFIG_IPQ_GCC_9574) += gcc-ipq9574.o
42 +obj-$(CONFIG_IPQ_NSSCC_9574) += nsscc-ipq9574.o
43 obj-$(CONFIG_IPQ_LCC_806X) += lcc-ipq806x.o
44 obj-$(CONFIG_IPQ_NSSCC_QCA8K) += nsscc-qca8k.o
45 obj-$(CONFIG_MDM_GCC_9607) += gcc-mdm9607.o
47 +++ b/drivers/clk/qcom/nsscc-ipq9574.c
49 +// SPDX-License-Identifier: GPL-2.0-only
51 + * Copyright (c) 2021, The Linux Foundation. All rights reserved.
52 + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
55 +#include <linux/clk.h>
56 +#include <linux/clk-provider.h>
57 +#include <linux/err.h>
58 +#include <linux/interconnect-provider.h>
59 +#include <linux/kernel.h>
60 +#include <linux/module.h>
61 +#include <linux/of.h>
62 +#include <linux/of_device.h>
63 +#include <linux/regmap.h>
64 +#include <linux/platform_device.h>
66 +#include <dt-bindings/clock/qcom,ipq9574-nsscc.h>
67 +#include <dt-bindings/interconnect/qcom,ipq9574.h>
68 +#include <dt-bindings/reset/qcom,ipq9574-nsscc.h>
70 +#include "clk-alpha-pll.h"
71 +#include "clk-branch.h"
74 +#include "clk-regmap.h"
75 +#include "clk-regmap-divider.h"
76 +#include "clk-regmap-mux.h"
80 +/* Need to match the order of clocks in DT binding */
84 + DT_BIAS_PLL_UBI_NC_CLK,
85 + DT_GCC_GPLL0_OUT_AUX,
86 + DT_UNIPHY0_NSS_RX_CLK,
87 + DT_UNIPHY0_NSS_TX_CLK,
88 + DT_UNIPHY1_NSS_RX_CLK,
89 + DT_UNIPHY1_NSS_TX_CLK,
90 + DT_UNIPHY2_NSS_RX_CLK,
91 + DT_UNIPHY2_NSS_TX_CLK,
97 + P_BIAS_PLL_UBI_NC_CLK,
98 + P_GCC_GPLL0_OUT_AUX,
99 + P_UBI32_PLL_OUT_MAIN,
100 + P_UNIPHY0_NSS_RX_CLK,
101 + P_UNIPHY0_NSS_TX_CLK,
102 + P_UNIPHY1_NSS_RX_CLK,
103 + P_UNIPHY1_NSS_TX_CLK,
104 + P_UNIPHY2_NSS_RX_CLK,
105 + P_UNIPHY2_NSS_TX_CLK,
108 +static const struct alpha_pll_config ubi32_pll_config = {
111 + .config_ctl_val = 0x200d4aa8,
112 + .config_ctl_hi_val = 0x3c,
113 + .main_output_mask = BIT(0),
114 + .aux_output_mask = BIT(1),
115 + .pre_div_val = 0x0,
116 + .pre_div_mask = BIT(12),
117 + .post_div_val = 0x0,
118 + .post_div_mask = GENMASK(9, 8),
119 + .alpha_en_mask = BIT(24),
120 + .test_ctl_val = 0x1c0000c0,
121 + .test_ctl_hi_val = 0x4000,
124 +static struct clk_alpha_pll ubi32_pll_main = {
126 + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_NSS_HUAYRA],
127 + .flags = SUPPORTS_DYNAMIC_UPDATE,
129 + .hw.init = &(const struct clk_init_data) {
130 + .name = "ubi32_pll_main",
131 + .parent_data = &(const struct clk_parent_data) {
135 + .ops = &clk_alpha_pll_huayra_ops,
140 +static struct clk_alpha_pll_postdiv ubi32_pll = {
142 + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_NSS_HUAYRA],
144 + .clkr.hw.init = &(const struct clk_init_data) {
145 + .name = "ubi32_pll",
146 + .parent_hws = (const struct clk_hw *[]) {
147 + &ubi32_pll_main.clkr.hw
150 + .ops = &clk_alpha_pll_postdiv_ro_ops,
151 + .flags = CLK_SET_RATE_PARENT,
155 +static const struct parent_map nss_cc_parent_map_0[] = {
157 + { P_BIAS_PLL_CC_CLK, 1 },
158 + { P_UNIPHY0_NSS_RX_CLK, 2 },
159 + { P_UNIPHY0_NSS_TX_CLK, 3 },
160 + { P_UNIPHY1_NSS_RX_CLK, 4 },
161 + { P_UNIPHY1_NSS_TX_CLK, 5 },
164 +static const struct clk_parent_data nss_cc_parent_data_0[] = {
165 + { .index = DT_XO },
166 + { .index = DT_BIAS_PLL_CC_CLK },
167 + { .index = DT_UNIPHY0_NSS_RX_CLK },
168 + { .index = DT_UNIPHY0_NSS_TX_CLK },
169 + { .index = DT_UNIPHY1_NSS_RX_CLK },
170 + { .index = DT_UNIPHY1_NSS_TX_CLK },
173 +static const struct parent_map nss_cc_parent_map_1[] = {
175 + { P_BIAS_PLL_UBI_NC_CLK, 1 },
176 + { P_GCC_GPLL0_OUT_AUX, 2 },
177 + { P_BIAS_PLL_CC_CLK, 6 },
180 +static const struct clk_parent_data nss_cc_parent_data_1[] = {
181 + { .index = DT_XO },
182 + { .index = DT_BIAS_PLL_UBI_NC_CLK },
183 + { .index = DT_GCC_GPLL0_OUT_AUX },
184 + { .index = DT_BIAS_PLL_CC_CLK },
187 +static const struct parent_map nss_cc_parent_map_2[] = {
189 + { P_UBI32_PLL_OUT_MAIN, 1 },
190 + { P_GCC_GPLL0_OUT_AUX, 2 },
193 +static const struct clk_parent_data nss_cc_parent_data_2[] = {
194 + { .index = DT_XO },
195 + { .hw = &ubi32_pll.clkr.hw },
196 + { .index = DT_GCC_GPLL0_OUT_AUX },
199 +static const struct parent_map nss_cc_parent_map_3[] = {
201 + { P_BIAS_PLL_CC_CLK, 1 },
202 + { P_GCC_GPLL0_OUT_AUX, 2 },
205 +static const struct clk_parent_data nss_cc_parent_data_3[] = {
206 + { .index = DT_XO },
207 + { .index = DT_BIAS_PLL_CC_CLK },
208 + { .index = DT_GCC_GPLL0_OUT_AUX },
211 +static const struct parent_map nss_cc_parent_map_4[] = {
213 + { P_BIAS_PLL_CC_CLK, 1 },
214 + { P_UNIPHY0_NSS_RX_CLK, 2 },
215 + { P_UNIPHY0_NSS_TX_CLK, 3 },
218 +static const struct clk_parent_data nss_cc_parent_data_4[] = {
219 + { .index = DT_XO },
220 + { .index = DT_BIAS_PLL_CC_CLK },
221 + { .index = DT_UNIPHY0_NSS_RX_CLK },
222 + { .index = DT_UNIPHY0_NSS_TX_CLK },
225 +static const struct parent_map nss_cc_parent_map_5[] = {
227 + { P_BIAS_PLL_CC_CLK, 1 },
228 + { P_UNIPHY2_NSS_RX_CLK, 2 },
229 + { P_UNIPHY2_NSS_TX_CLK, 3 },
232 +static const struct clk_parent_data nss_cc_parent_data_5[] = {
233 + { .index = DT_XO },
234 + { .index = DT_BIAS_PLL_CC_CLK },
235 + { .index = DT_UNIPHY2_NSS_RX_CLK },
236 + { .index = DT_UNIPHY2_NSS_TX_CLK },
239 +static const struct parent_map nss_cc_parent_map_6[] = {
241 + { P_GCC_GPLL0_OUT_AUX, 2 },
242 + { P_BIAS_PLL_CC_CLK, 6 },
245 +static const struct clk_parent_data nss_cc_parent_data_6[] = {
246 + { .index = DT_XO },
247 + { .index = DT_GCC_GPLL0_OUT_AUX },
248 + { .index = DT_BIAS_PLL_CC_CLK },
251 +static const struct parent_map nss_cc_parent_map_7[] = {
253 + { P_UBI32_PLL_OUT_MAIN, 1 },
254 + { P_GCC_GPLL0_OUT_AUX, 2 },
255 + { P_BIAS_PLL_CC_CLK, 6 },
258 +static const struct clk_parent_data nss_cc_parent_data_7[] = {
259 + { .index = DT_XO },
260 + { .hw = &ubi32_pll.clkr.hw },
261 + { .index = DT_GCC_GPLL0_OUT_AUX },
262 + { .index = DT_BIAS_PLL_CC_CLK },
265 +static const struct freq_tbl ftbl_nss_cc_ce_clk_src[] = {
266 + F(24000000, P_XO, 1, 0, 0),
267 + F(353000000, P_BIAS_PLL_UBI_NC_CLK, 1, 0, 0),
271 +static struct clk_rcg2 nss_cc_ce_clk_src = {
272 + .cmd_rcgr = 0x28404,
275 + .parent_map = nss_cc_parent_map_1,
276 + .freq_tbl = ftbl_nss_cc_ce_clk_src,
277 + .clkr.hw.init = &(const struct clk_init_data) {
278 + .name = "nss_cc_ce_clk_src",
279 + .parent_data = nss_cc_parent_data_1,
280 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
281 + .ops = &clk_rcg2_ops,
285 +static const struct freq_tbl ftbl_nss_cc_cfg_clk_src[] = {
286 + F(100000000, P_GCC_GPLL0_OUT_AUX, 8, 0, 0),
290 +static struct clk_rcg2 nss_cc_cfg_clk_src = {
291 + .cmd_rcgr = 0x28104,
294 + .parent_map = nss_cc_parent_map_3,
295 + .freq_tbl = ftbl_nss_cc_cfg_clk_src,
296 + .clkr.hw.init = &(const struct clk_init_data) {
297 + .name = "nss_cc_cfg_clk_src",
298 + .parent_data = nss_cc_parent_data_3,
299 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_3),
300 + .ops = &clk_rcg2_ops,
304 +static const struct freq_tbl ftbl_nss_cc_clc_clk_src[] = {
305 + F(533333333, P_GCC_GPLL0_OUT_AUX, 1.5, 0, 0),
309 +static struct clk_rcg2 nss_cc_clc_clk_src = {
310 + .cmd_rcgr = 0x28604,
313 + .parent_map = nss_cc_parent_map_6,
314 + .freq_tbl = ftbl_nss_cc_clc_clk_src,
315 + .clkr.hw.init = &(const struct clk_init_data) {
316 + .name = "nss_cc_clc_clk_src",
317 + .parent_data = nss_cc_parent_data_6,
318 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_6),
319 + .ops = &clk_rcg2_ops,
323 +static const struct freq_tbl ftbl_nss_cc_crypto_clk_src[] = {
324 + F(24000000, P_XO, 1, 0, 0),
325 + F(300000000, P_BIAS_PLL_CC_CLK, 4, 0, 0),
326 + F(600000000, P_BIAS_PLL_CC_CLK, 2, 0, 0),
330 +static struct clk_rcg2 nss_cc_crypto_clk_src = {
331 + .cmd_rcgr = 0x16008,
334 + .parent_map = nss_cc_parent_map_3,
335 + .freq_tbl = ftbl_nss_cc_crypto_clk_src,
336 + .clkr.hw.init = &(const struct clk_init_data) {
337 + .name = "nss_cc_crypto_clk_src",
338 + .parent_data = nss_cc_parent_data_3,
339 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_3),
340 + .flags = CLK_SET_RATE_PARENT,
341 + .ops = &clk_rcg2_ops,
345 +static struct clk_rcg2 nss_cc_haq_clk_src = {
346 + .cmd_rcgr = 0x28304,
349 + .parent_map = nss_cc_parent_map_1,
350 + .freq_tbl = ftbl_nss_cc_ce_clk_src,
351 + .clkr.hw.init = &(const struct clk_init_data) {
352 + .name = "nss_cc_haq_clk_src",
353 + .parent_data = nss_cc_parent_data_1,
354 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
355 + .ops = &clk_rcg2_ops,
359 +static struct clk_rcg2 nss_cc_imem_clk_src = {
360 + .cmd_rcgr = 0xe008,
363 + .parent_map = nss_cc_parent_map_1,
364 + .freq_tbl = ftbl_nss_cc_ce_clk_src,
365 + .clkr.hw.init = &(const struct clk_init_data) {
366 + .name = "nss_cc_imem_clk_src",
367 + .parent_data = nss_cc_parent_data_1,
368 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
369 + .ops = &clk_rcg2_ops,
373 +static const struct freq_tbl ftbl_nss_cc_int_cfg_clk_src[] = {
374 + F(200000000, P_GCC_GPLL0_OUT_AUX, 4, 0, 0),
378 +static struct clk_rcg2 nss_cc_int_cfg_clk_src = {
379 + .cmd_rcgr = 0x287b4,
382 + .parent_map = nss_cc_parent_map_3,
383 + .freq_tbl = ftbl_nss_cc_int_cfg_clk_src,
384 + .clkr.hw.init = &(const struct clk_init_data) {
385 + .name = "nss_cc_int_cfg_clk_src",
386 + .parent_data = nss_cc_parent_data_3,
387 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_3),
388 + .ops = &clk_rcg2_ops,
392 +static const struct freq_conf ftbl_nss_cc_port1_rx_clk_src_25[] = {
393 + C(P_UNIPHY0_NSS_RX_CLK, 12.5, 0, 0),
394 + C(P_UNIPHY0_NSS_RX_CLK, 5, 0, 0),
397 +static const struct freq_conf ftbl_nss_cc_port1_rx_clk_src_125[] = {
398 + C(P_UNIPHY0_NSS_RX_CLK, 2.5, 0, 0),
399 + C(P_UNIPHY0_NSS_RX_CLK, 1, 0, 0),
402 +static const struct freq_multi_tbl ftbl_nss_cc_port1_rx_clk_src[] = {
403 + FMS(24000000, P_XO, 1, 0, 0),
404 + FM(25000000, ftbl_nss_cc_port1_rx_clk_src_25),
405 + FMS(78125000, P_UNIPHY0_NSS_RX_CLK, 4, 0, 0),
406 + FM(125000000, ftbl_nss_cc_port1_rx_clk_src_125),
407 + FMS(312500000, P_UNIPHY0_NSS_RX_CLK, 1, 0, 0),
411 +static const struct freq_conf ftbl_nss_cc_port1_tx_clk_src_25[] = {
412 + C(P_UNIPHY0_NSS_TX_CLK, 12.5, 0, 0),
413 + C(P_UNIPHY0_NSS_TX_CLK, 5, 0, 0),
416 +static const struct freq_conf ftbl_nss_cc_port1_tx_clk_src_125[] = {
417 + C(P_UNIPHY0_NSS_TX_CLK, 2.5, 0, 0),
418 + C(P_UNIPHY0_NSS_TX_CLK, 1, 0, 0),
421 +static const struct freq_multi_tbl ftbl_nss_cc_port1_tx_clk_src[] = {
422 + FMS(24000000, P_XO, 1, 0, 0),
423 + FM(25000000, ftbl_nss_cc_port1_tx_clk_src_25),
424 + FMS(78125000, P_UNIPHY0_NSS_TX_CLK, 4, 0, 0),
425 + FM(125000000, ftbl_nss_cc_port1_tx_clk_src_125),
426 + FMS(312500000, P_UNIPHY0_NSS_TX_CLK, 1, 0, 0),
430 +static const struct freq_conf ftbl_nss_cc_port5_rx_clk_src_25[] = {
431 + C(P_UNIPHY1_NSS_RX_CLK, 12.5, 0, 0),
432 + C(P_UNIPHY0_NSS_RX_CLK, 5, 0, 0),
435 +static const struct freq_conf ftbl_nss_cc_port5_rx_clk_src_125[] = {
436 + C(P_UNIPHY1_NSS_RX_CLK, 2.5, 0, 0),
437 + C(P_UNIPHY0_NSS_RX_CLK, 1, 0, 0),
440 +static const struct freq_conf ftbl_nss_cc_port5_rx_clk_src_312p5[] = {
441 + C(P_UNIPHY1_NSS_RX_CLK, 1, 0, 0),
442 + C(P_UNIPHY0_NSS_RX_CLK, 1, 0, 0),
445 +static const struct freq_multi_tbl ftbl_nss_cc_port5_rx_clk_src[] = {
446 + FMS(24000000, P_XO, 1, 0, 0),
447 + FM(25000000, ftbl_nss_cc_port5_rx_clk_src_25),
448 + FMS(78125000, P_UNIPHY1_NSS_RX_CLK, 4, 0, 0),
449 + FM(125000000, ftbl_nss_cc_port5_rx_clk_src_125),
450 + FMS(156250000, P_UNIPHY1_NSS_RX_CLK, 2, 0, 0),
451 + FM(312500000, ftbl_nss_cc_port5_rx_clk_src_312p5),
455 +static const struct freq_conf ftbl_nss_cc_port5_tx_clk_src_25[] = {
456 + C(P_UNIPHY1_NSS_TX_CLK, 12.5, 0, 0),
457 + C(P_UNIPHY0_NSS_TX_CLK, 5, 0, 0),
460 +static const struct freq_conf ftbl_nss_cc_port5_tx_clk_src_125[] = {
461 + C(P_UNIPHY1_NSS_TX_CLK, 2.5, 0, 0),
462 + C(P_UNIPHY0_NSS_TX_CLK, 1, 0, 0),
465 +static const struct freq_conf ftbl_nss_cc_port5_tx_clk_src_312p5[] = {
466 + C(P_UNIPHY1_NSS_TX_CLK, 1, 0, 0),
467 + C(P_UNIPHY0_NSS_TX_CLK, 1, 0, 0),
470 +static const struct freq_multi_tbl ftbl_nss_cc_port5_tx_clk_src[] = {
471 + FMS(24000000, P_XO, 1, 0, 0),
472 + FM(25000000, ftbl_nss_cc_port5_tx_clk_src_25),
473 + FMS(78125000, P_UNIPHY1_NSS_TX_CLK, 4, 0, 0),
474 + FM(125000000, ftbl_nss_cc_port5_tx_clk_src_125),
475 + FMS(156250000, P_UNIPHY1_NSS_TX_CLK, 2, 0, 0),
476 + FM(312500000, ftbl_nss_cc_port5_tx_clk_src_312p5),
480 +static const struct freq_conf ftbl_nss_cc_port6_rx_clk_src_25[] = {
481 + C(P_UNIPHY2_NSS_RX_CLK, 12.5, 0, 0),
482 + C(P_UNIPHY2_NSS_RX_CLK, 5, 0, 0),
485 +static const struct freq_conf ftbl_nss_cc_port6_rx_clk_src_125[] = {
486 + C(P_UNIPHY2_NSS_RX_CLK, 2.5, 0, 0),
487 + C(P_UNIPHY2_NSS_RX_CLK, 1, 0, 0),
490 +static const struct freq_multi_tbl ftbl_nss_cc_port6_rx_clk_src[] = {
491 + FMS(24000000, P_XO, 1, 0, 0),
492 + FM(25000000, ftbl_nss_cc_port6_rx_clk_src_25),
493 + FMS(78125000, P_UNIPHY2_NSS_RX_CLK, 4, 0, 0),
494 + FM(125000000, ftbl_nss_cc_port6_rx_clk_src_125),
495 + FMS(156250000, P_UNIPHY2_NSS_RX_CLK, 2, 0, 0),
496 + FMS(312500000, P_UNIPHY2_NSS_RX_CLK, 1, 0, 0),
500 +static const struct freq_conf ftbl_nss_cc_port6_tx_clk_src_25[] = {
501 + C(P_UNIPHY2_NSS_TX_CLK, 12.5, 0, 0),
502 + C(P_UNIPHY2_NSS_TX_CLK, 5, 0, 0),
505 +static const struct freq_conf ftbl_nss_cc_port6_tx_clk_src_125[] = {
506 + C(P_UNIPHY2_NSS_TX_CLK, 2.5, 0, 0),
507 + C(P_UNIPHY2_NSS_TX_CLK, 1, 0, 0),
510 +static const struct freq_multi_tbl ftbl_nss_cc_port6_tx_clk_src[] = {
511 + FMS(24000000, P_XO, 1, 0, 0),
512 + FM(25000000, ftbl_nss_cc_port6_tx_clk_src_25),
513 + FMS(78125000, P_UNIPHY2_NSS_TX_CLK, 4, 0, 0),
514 + FM(125000000, ftbl_nss_cc_port6_tx_clk_src_125),
515 + FMS(156250000, P_UNIPHY2_NSS_TX_CLK, 2, 0, 0),
516 + FMS(312500000, P_UNIPHY2_NSS_TX_CLK, 1, 0, 0),
520 +static struct clk_rcg2 nss_cc_port1_rx_clk_src = {
521 + .cmd_rcgr = 0x28110,
524 + .parent_map = nss_cc_parent_map_4,
525 + .freq_multi_tbl = ftbl_nss_cc_port1_rx_clk_src,
526 + .clkr.hw.init = &(const struct clk_init_data) {
527 + .name = "nss_cc_port1_rx_clk_src",
528 + .parent_data = nss_cc_parent_data_4,
529 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
530 + .ops = &clk_rcg2_fm_ops,
534 +static struct clk_rcg2 nss_cc_port1_tx_clk_src = {
535 + .cmd_rcgr = 0x2811c,
538 + .parent_map = nss_cc_parent_map_4,
539 + .freq_multi_tbl = ftbl_nss_cc_port1_tx_clk_src,
540 + .clkr.hw.init = &(const struct clk_init_data) {
541 + .name = "nss_cc_port1_tx_clk_src",
542 + .parent_data = nss_cc_parent_data_4,
543 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
544 + .ops = &clk_rcg2_fm_ops,
548 +static struct clk_rcg2 nss_cc_port2_rx_clk_src = {
549 + .cmd_rcgr = 0x28128,
552 + .parent_map = nss_cc_parent_map_4,
553 + .freq_multi_tbl = ftbl_nss_cc_port1_rx_clk_src,
554 + .clkr.hw.init = &(const struct clk_init_data) {
555 + .name = "nss_cc_port2_rx_clk_src",
556 + .parent_data = nss_cc_parent_data_4,
557 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
558 + .ops = &clk_rcg2_fm_ops,
562 +static struct clk_rcg2 nss_cc_port2_tx_clk_src = {
563 + .cmd_rcgr = 0x28134,
566 + .parent_map = nss_cc_parent_map_4,
567 + .freq_multi_tbl = ftbl_nss_cc_port1_tx_clk_src,
568 + .clkr.hw.init = &(const struct clk_init_data) {
569 + .name = "nss_cc_port2_tx_clk_src",
570 + .parent_data = nss_cc_parent_data_4,
571 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
572 + .ops = &clk_rcg2_fm_ops,
576 +static struct clk_rcg2 nss_cc_port3_rx_clk_src = {
577 + .cmd_rcgr = 0x28140,
580 + .parent_map = nss_cc_parent_map_4,
581 + .freq_multi_tbl = ftbl_nss_cc_port1_rx_clk_src,
582 + .clkr.hw.init = &(const struct clk_init_data) {
583 + .name = "nss_cc_port3_rx_clk_src",
584 + .parent_data = nss_cc_parent_data_4,
585 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
586 + .ops = &clk_rcg2_fm_ops,
590 +static struct clk_rcg2 nss_cc_port3_tx_clk_src = {
591 + .cmd_rcgr = 0x2814c,
594 + .parent_map = nss_cc_parent_map_4,
595 + .freq_multi_tbl = ftbl_nss_cc_port1_tx_clk_src,
596 + .clkr.hw.init = &(const struct clk_init_data) {
597 + .name = "nss_cc_port3_tx_clk_src",
598 + .parent_data = nss_cc_parent_data_4,
599 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
600 + .ops = &clk_rcg2_fm_ops,
604 +static struct clk_rcg2 nss_cc_port4_rx_clk_src = {
605 + .cmd_rcgr = 0x28158,
608 + .parent_map = nss_cc_parent_map_4,
609 + .freq_multi_tbl = ftbl_nss_cc_port1_rx_clk_src,
610 + .clkr.hw.init = &(const struct clk_init_data) {
611 + .name = "nss_cc_port4_rx_clk_src",
612 + .parent_data = nss_cc_parent_data_4,
613 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
614 + .ops = &clk_rcg2_fm_ops,
618 +static struct clk_rcg2 nss_cc_port4_tx_clk_src = {
619 + .cmd_rcgr = 0x28164,
622 + .parent_map = nss_cc_parent_map_4,
623 + .freq_multi_tbl = ftbl_nss_cc_port1_tx_clk_src,
624 + .clkr.hw.init = &(const struct clk_init_data) {
625 + .name = "nss_cc_port4_tx_clk_src",
626 + .parent_data = nss_cc_parent_data_4,
627 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
628 + .ops = &clk_rcg2_fm_ops,
632 +static struct clk_rcg2 nss_cc_port5_rx_clk_src = {
633 + .cmd_rcgr = 0x28170,
636 + .parent_map = nss_cc_parent_map_0,
637 + .freq_multi_tbl = ftbl_nss_cc_port5_rx_clk_src,
638 + .clkr.hw.init = &(const struct clk_init_data) {
639 + .name = "nss_cc_port5_rx_clk_src",
640 + .parent_data = nss_cc_parent_data_0,
641 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_0),
642 + .ops = &clk_rcg2_fm_ops,
646 +static struct clk_rcg2 nss_cc_port5_tx_clk_src = {
647 + .cmd_rcgr = 0x2817c,
650 + .parent_map = nss_cc_parent_map_0,
651 + .freq_multi_tbl = ftbl_nss_cc_port5_tx_clk_src,
652 + .clkr.hw.init = &(const struct clk_init_data) {
653 + .name = "nss_cc_port5_tx_clk_src",
654 + .parent_data = nss_cc_parent_data_0,
655 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_0),
656 + .ops = &clk_rcg2_fm_ops,
660 +static struct clk_rcg2 nss_cc_port6_rx_clk_src = {
661 + .cmd_rcgr = 0x28188,
664 + .parent_map = nss_cc_parent_map_5,
665 + .freq_multi_tbl = ftbl_nss_cc_port6_rx_clk_src,
666 + .clkr.hw.init = &(const struct clk_init_data) {
667 + .name = "nss_cc_port6_rx_clk_src",
668 + .parent_data = nss_cc_parent_data_5,
669 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_5),
670 + .ops = &clk_rcg2_fm_ops,
674 +static struct clk_rcg2 nss_cc_port6_tx_clk_src = {
675 + .cmd_rcgr = 0x28194,
678 + .parent_map = nss_cc_parent_map_5,
679 + .freq_multi_tbl = ftbl_nss_cc_port6_tx_clk_src,
680 + .clkr.hw.init = &(const struct clk_init_data) {
681 + .name = "nss_cc_port6_tx_clk_src",
682 + .parent_data = nss_cc_parent_data_5,
683 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_5),
684 + .ops = &clk_rcg2_fm_ops,
688 +static struct clk_rcg2 nss_cc_ppe_clk_src = {
689 + .cmd_rcgr = 0x28204,
692 + .parent_map = nss_cc_parent_map_1,
693 + .freq_tbl = ftbl_nss_cc_ce_clk_src,
694 + .clkr.hw.init = &(const struct clk_init_data) {
695 + .name = "nss_cc_ppe_clk_src",
696 + .parent_data = nss_cc_parent_data_1,
697 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
698 + .flags = CLK_SET_RATE_PARENT,
699 + .ops = &clk_rcg2_ops,
703 +static const struct freq_tbl ftbl_nss_cc_ubi0_clk_src[] = {
704 + F(24000000, P_XO, 1, 0, 0),
705 + F(187200000, P_UBI32_PLL_OUT_MAIN, 8, 0, 0),
706 + F(748800000, P_UBI32_PLL_OUT_MAIN, 2, 0, 0),
707 + F(1497600000, P_UBI32_PLL_OUT_MAIN, 1, 0, 0),
708 + F(1689600000, P_UBI32_PLL_OUT_MAIN, 1, 0, 0),
712 +static struct clk_rcg2 nss_cc_ubi0_clk_src = {
713 + .cmd_rcgr = 0x28704,
716 + .parent_map = nss_cc_parent_map_2,
717 + .freq_tbl = ftbl_nss_cc_ubi0_clk_src,
718 + .clkr.hw.init = &(const struct clk_init_data) {
719 + .name = "nss_cc_ubi0_clk_src",
720 + .parent_data = nss_cc_parent_data_2,
721 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_2),
722 + .flags = CLK_SET_RATE_PARENT,
723 + .ops = &clk_rcg2_ops,
727 +static struct clk_rcg2 nss_cc_ubi1_clk_src = {
728 + .cmd_rcgr = 0x2870c,
731 + .parent_map = nss_cc_parent_map_2,
732 + .freq_tbl = ftbl_nss_cc_ubi0_clk_src,
733 + .clkr.hw.init = &(const struct clk_init_data) {
734 + .name = "nss_cc_ubi1_clk_src",
735 + .parent_data = nss_cc_parent_data_2,
736 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_2),
737 + .flags = CLK_SET_RATE_PARENT,
738 + .ops = &clk_rcg2_ops,
742 +static struct clk_rcg2 nss_cc_ubi2_clk_src = {
743 + .cmd_rcgr = 0x28714,
746 + .parent_map = nss_cc_parent_map_2,
747 + .freq_tbl = ftbl_nss_cc_ubi0_clk_src,
748 + .clkr.hw.init = &(const struct clk_init_data) {
749 + .name = "nss_cc_ubi2_clk_src",
750 + .parent_data = nss_cc_parent_data_2,
751 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_2),
752 + .flags = CLK_SET_RATE_PARENT,
753 + .ops = &clk_rcg2_ops,
757 +static struct clk_rcg2 nss_cc_ubi3_clk_src = {
758 + .cmd_rcgr = 0x2871c,
761 + .parent_map = nss_cc_parent_map_2,
762 + .freq_tbl = ftbl_nss_cc_ubi0_clk_src,
763 + .clkr.hw.init = &(const struct clk_init_data) {
764 + .name = "nss_cc_ubi3_clk_src",
765 + .parent_data = nss_cc_parent_data_2,
766 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_2),
767 + .flags = CLK_SET_RATE_PARENT,
768 + .ops = &clk_rcg2_ops,
772 +static struct clk_rcg2 nss_cc_ubi_axi_clk_src = {
773 + .cmd_rcgr = 0x28724,
776 + .parent_map = nss_cc_parent_map_7,
777 + .freq_tbl = ftbl_nss_cc_clc_clk_src,
778 + .clkr.hw.init = &(const struct clk_init_data) {
779 + .name = "nss_cc_ubi_axi_clk_src",
780 + .parent_data = nss_cc_parent_data_7,
781 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_7),
782 + .ops = &clk_rcg2_ops,
786 +static struct clk_rcg2 nss_cc_ubi_nc_axi_bfdcd_clk_src = {
787 + .cmd_rcgr = 0x2872c,
790 + .parent_map = nss_cc_parent_map_1,
791 + .freq_tbl = ftbl_nss_cc_ce_clk_src,
792 + .clkr.hw.init = &(const struct clk_init_data) {
793 + .name = "nss_cc_ubi_nc_axi_bfdcd_clk_src",
794 + .parent_data = nss_cc_parent_data_1,
795 + .num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
796 + .flags = CLK_SET_RATE_PARENT,
797 + .ops = &clk_rcg2_ops,
801 +static struct clk_regmap_div nss_cc_port1_rx_div_clk_src = {
805 + .clkr.hw.init = &(const struct clk_init_data) {
806 + .name = "nss_cc_port1_rx_div_clk_src",
807 + .parent_data = &(const struct clk_parent_data) {
808 + .hw = &nss_cc_port1_rx_clk_src.clkr.hw,
811 + .flags = CLK_SET_RATE_PARENT,
812 + .ops = &clk_regmap_div_ops,
816 +static struct clk_regmap_div nss_cc_port1_tx_div_clk_src = {
820 + .clkr.hw.init = &(const struct clk_init_data) {
821 + .name = "nss_cc_port1_tx_div_clk_src",
822 + .parent_data = &(const struct clk_parent_data) {
823 + .hw = &nss_cc_port1_tx_clk_src.clkr.hw,
826 + .flags = CLK_SET_RATE_PARENT,
827 + .ops = &clk_regmap_div_ops,
831 +static struct clk_regmap_div nss_cc_port2_rx_div_clk_src = {
835 + .clkr.hw.init = &(const struct clk_init_data) {
836 + .name = "nss_cc_port2_rx_div_clk_src",
837 + .parent_data = &(const struct clk_parent_data) {
838 + .hw = &nss_cc_port2_rx_clk_src.clkr.hw,
841 + .flags = CLK_SET_RATE_PARENT,
842 + .ops = &clk_regmap_div_ops,
846 +static struct clk_regmap_div nss_cc_port2_tx_div_clk_src = {
850 + .clkr.hw.init = &(const struct clk_init_data) {
851 + .name = "nss_cc_port2_tx_div_clk_src",
852 + .parent_data = &(const struct clk_parent_data) {
853 + .hw = &nss_cc_port2_tx_clk_src.clkr.hw,
856 + .flags = CLK_SET_RATE_PARENT,
857 + .ops = &clk_regmap_div_ops,
861 +static struct clk_regmap_div nss_cc_port3_rx_div_clk_src = {
865 + .clkr.hw.init = &(const struct clk_init_data) {
866 + .name = "nss_cc_port3_rx_div_clk_src",
867 + .parent_data = &(const struct clk_parent_data) {
868 + .hw = &nss_cc_port3_rx_clk_src.clkr.hw,
871 + .flags = CLK_SET_RATE_PARENT,
872 + .ops = &clk_regmap_div_ops,
876 +static struct clk_regmap_div nss_cc_port3_tx_div_clk_src = {
880 + .clkr.hw.init = &(const struct clk_init_data) {
881 + .name = "nss_cc_port3_tx_div_clk_src",
882 + .parent_data = &(const struct clk_parent_data) {
883 + .hw = &nss_cc_port3_tx_clk_src.clkr.hw,
886 + .flags = CLK_SET_RATE_PARENT,
887 + .ops = &clk_regmap_div_ops,
891 +static struct clk_regmap_div nss_cc_port4_rx_div_clk_src = {
895 + .clkr.hw.init = &(const struct clk_init_data) {
896 + .name = "nss_cc_port4_rx_div_clk_src",
897 + .parent_data = &(const struct clk_parent_data) {
898 + .hw = &nss_cc_port4_rx_clk_src.clkr.hw,
901 + .flags = CLK_SET_RATE_PARENT,
902 + .ops = &clk_regmap_div_ops,
906 +static struct clk_regmap_div nss_cc_port4_tx_div_clk_src = {
910 + .clkr.hw.init = &(const struct clk_init_data) {
911 + .name = "nss_cc_port4_tx_div_clk_src",
912 + .parent_data = &(const struct clk_parent_data) {
913 + .hw = &nss_cc_port4_tx_clk_src.clkr.hw,
916 + .flags = CLK_SET_RATE_PARENT,
917 + .ops = &clk_regmap_div_ops,
921 +static struct clk_regmap_div nss_cc_port5_rx_div_clk_src = {
925 + .clkr.hw.init = &(const struct clk_init_data) {
926 + .name = "nss_cc_port5_rx_div_clk_src",
927 + .parent_data = &(const struct clk_parent_data) {
928 + .hw = &nss_cc_port5_rx_clk_src.clkr.hw,
931 + .flags = CLK_SET_RATE_PARENT,
932 + .ops = &clk_regmap_div_ops,
936 +static struct clk_regmap_div nss_cc_port5_tx_div_clk_src = {
940 + .clkr.hw.init = &(const struct clk_init_data) {
941 + .name = "nss_cc_port5_tx_div_clk_src",
942 + .parent_data = &(const struct clk_parent_data) {
943 + .hw = &nss_cc_port5_tx_clk_src.clkr.hw,
946 + .flags = CLK_SET_RATE_PARENT,
947 + .ops = &clk_regmap_div_ops,
951 +static struct clk_regmap_div nss_cc_port6_rx_div_clk_src = {
955 + .clkr.hw.init = &(const struct clk_init_data) {
956 + .name = "nss_cc_port6_rx_div_clk_src",
957 + .parent_data = &(const struct clk_parent_data) {
958 + .hw = &nss_cc_port6_rx_clk_src.clkr.hw,
961 + .flags = CLK_SET_RATE_PARENT,
962 + .ops = &clk_regmap_div_ops,
966 +static struct clk_regmap_div nss_cc_port6_tx_div_clk_src = {
970 + .clkr.hw.init = &(const struct clk_init_data) {
971 + .name = "nss_cc_port6_tx_div_clk_src",
972 + .parent_data = &(const struct clk_parent_data) {
973 + .hw = &nss_cc_port6_tx_clk_src.clkr.hw,
976 + .flags = CLK_SET_RATE_PARENT,
977 + .ops = &clk_regmap_div_ops,
981 +static struct clk_regmap_div nss_cc_ubi0_div_clk_src = {
985 + .clkr.hw.init = &(const struct clk_init_data) {
986 + .name = "nss_cc_ubi0_div_clk_src",
987 + .parent_data = &(const struct clk_parent_data) {
988 + .hw = &nss_cc_ubi0_clk_src.clkr.hw,
991 + .flags = CLK_SET_RATE_PARENT,
992 + .ops = &clk_regmap_div_ro_ops,
996 +static struct clk_regmap_div nss_cc_ubi1_div_clk_src = {
1000 + .clkr.hw.init = &(const struct clk_init_data) {
1001 + .name = "nss_cc_ubi1_div_clk_src",
1002 + .parent_data = &(const struct clk_parent_data) {
1003 + .hw = &nss_cc_ubi1_clk_src.clkr.hw,
1006 + .flags = CLK_SET_RATE_PARENT,
1007 + .ops = &clk_regmap_div_ro_ops,
1011 +static struct clk_regmap_div nss_cc_ubi2_div_clk_src = {
1015 + .clkr.hw.init = &(const struct clk_init_data) {
1016 + .name = "nss_cc_ubi2_div_clk_src",
1017 + .parent_data = &(const struct clk_parent_data) {
1018 + .hw = &nss_cc_ubi2_clk_src.clkr.hw,
1021 + .flags = CLK_SET_RATE_PARENT,
1022 + .ops = &clk_regmap_div_ro_ops,
1026 +static struct clk_regmap_div nss_cc_ubi3_div_clk_src = {
1030 + .clkr.hw.init = &(const struct clk_init_data) {
1031 + .name = "nss_cc_ubi3_div_clk_src",
1032 + .parent_data = &(const struct clk_parent_data) {
1033 + .hw = &nss_cc_ubi3_clk_src.clkr.hw,
1036 + .flags = CLK_SET_RATE_PARENT,
1037 + .ops = &clk_regmap_div_ro_ops,
1041 +static struct clk_regmap_div nss_cc_xgmac0_ptp_ref_div_clk_src = {
1045 + .clkr.hw.init = &(const struct clk_init_data) {
1046 + .name = "nss_cc_xgmac0_ptp_ref_div_clk_src",
1047 + .parent_data = &(const struct clk_parent_data) {
1048 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1051 + .flags = CLK_SET_RATE_PARENT,
1052 + .ops = &clk_regmap_div_ro_ops,
1056 +static struct clk_regmap_div nss_cc_xgmac1_ptp_ref_div_clk_src = {
1060 + .clkr.hw.init = &(const struct clk_init_data) {
1061 + .name = "nss_cc_xgmac1_ptp_ref_div_clk_src",
1062 + .parent_data = &(const struct clk_parent_data) {
1063 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1066 + .flags = CLK_SET_RATE_PARENT,
1067 + .ops = &clk_regmap_div_ro_ops,
1071 +static struct clk_regmap_div nss_cc_xgmac2_ptp_ref_div_clk_src = {
1075 + .clkr.hw.init = &(const struct clk_init_data) {
1076 + .name = "nss_cc_xgmac2_ptp_ref_div_clk_src",
1077 + .parent_data = &(const struct clk_parent_data) {
1078 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1081 + .flags = CLK_SET_RATE_PARENT,
1082 + .ops = &clk_regmap_div_ro_ops,
1086 +static struct clk_regmap_div nss_cc_xgmac3_ptp_ref_div_clk_src = {
1090 + .clkr.hw.init = &(const struct clk_init_data) {
1091 + .name = "nss_cc_xgmac3_ptp_ref_div_clk_src",
1092 + .parent_data = &(const struct clk_parent_data) {
1093 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1096 + .flags = CLK_SET_RATE_PARENT,
1097 + .ops = &clk_regmap_div_ro_ops,
1101 +static struct clk_regmap_div nss_cc_xgmac4_ptp_ref_div_clk_src = {
1105 + .clkr.hw.init = &(const struct clk_init_data) {
1106 + .name = "nss_cc_xgmac4_ptp_ref_div_clk_src",
1107 + .parent_data = &(const struct clk_parent_data) {
1108 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1111 + .flags = CLK_SET_RATE_PARENT,
1112 + .ops = &clk_regmap_div_ro_ops,
1116 +static struct clk_regmap_div nss_cc_xgmac5_ptp_ref_div_clk_src = {
1120 + .clkr.hw.init = &(const struct clk_init_data) {
1121 + .name = "nss_cc_xgmac5_ptp_ref_div_clk_src",
1122 + .parent_data = &(const struct clk_parent_data) {
1123 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1126 + .flags = CLK_SET_RATE_PARENT,
1127 + .ops = &clk_regmap_div_ro_ops,
1131 +static struct clk_branch nss_cc_ce_apb_clk = {
1132 + .halt_reg = 0x2840c,
1134 + .enable_reg = 0x2840c,
1135 + .enable_mask = BIT(0),
1136 + .hw.init = &(const struct clk_init_data) {
1137 + .name = "nss_cc_ce_apb_clk",
1138 + .parent_data = &(const struct clk_parent_data) {
1139 + .hw = &nss_cc_ce_clk_src.clkr.hw,
1142 + .flags = CLK_SET_RATE_PARENT,
1143 + .ops = &clk_branch2_ops,
1148 +static struct clk_branch nss_cc_ce_axi_clk = {
1149 + .halt_reg = 0x28410,
1150 + .halt_check = BRANCH_HALT,
1152 + .enable_reg = 0x28410,
1153 + .enable_mask = BIT(0),
1154 + .hw.init = &(const struct clk_init_data) {
1155 + .name = "nss_cc_ce_axi_clk",
1156 + .parent_data = &(const struct clk_parent_data) {
1157 + .hw = &nss_cc_ce_clk_src.clkr.hw,
1160 + .flags = CLK_SET_RATE_PARENT,
1161 + .ops = &clk_branch2_ops,
1166 +static struct clk_branch nss_cc_clc_axi_clk = {
1167 + .halt_reg = 0x2860c,
1168 + .halt_check = BRANCH_HALT,
1170 + .enable_reg = 0x2860c,
1171 + .enable_mask = BIT(0),
1172 + .hw.init = &(const struct clk_init_data) {
1173 + .name = "nss_cc_clc_axi_clk",
1174 + .parent_data = &(const struct clk_parent_data) {
1175 + .hw = &nss_cc_clc_clk_src.clkr.hw,
1178 + .flags = CLK_SET_RATE_PARENT,
1179 + .ops = &clk_branch2_ops,
1184 +static struct clk_branch nss_cc_crypto_clk = {
1185 + .halt_reg = 0x1601c,
1186 + .halt_check = BRANCH_HALT,
1188 + .enable_reg = 0x1601c,
1189 + .enable_mask = BIT(0),
1190 + .hw.init = &(const struct clk_init_data) {
1191 + .name = "nss_cc_crypto_clk",
1192 + .parent_data = &(const struct clk_parent_data) {
1193 + .hw = &nss_cc_crypto_clk_src.clkr.hw,
1196 + .flags = CLK_SET_RATE_PARENT,
1197 + .ops = &clk_branch2_ops,
1202 +static struct clk_branch nss_cc_crypto_ppe_clk = {
1203 + .halt_reg = 0x28240,
1204 + .halt_check = BRANCH_HALT,
1206 + .enable_reg = 0x28240,
1207 + .enable_mask = BIT(0),
1208 + .hw.init = &(const struct clk_init_data) {
1209 + .name = "nss_cc_crypto_ppe_clk",
1210 + .parent_data = &(const struct clk_parent_data) {
1211 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1214 + .flags = CLK_SET_RATE_PARENT,
1215 + .ops = &clk_branch2_ops,
1220 +static struct clk_branch nss_cc_haq_ahb_clk = {
1221 + .halt_reg = 0x2830c,
1222 + .halt_check = BRANCH_HALT,
1224 + .enable_reg = 0x2830c,
1225 + .enable_mask = BIT(0),
1226 + .hw.init = &(const struct clk_init_data) {
1227 + .name = "nss_cc_haq_ahb_clk",
1228 + .parent_data = &(const struct clk_parent_data) {
1229 + .hw = &nss_cc_haq_clk_src.clkr.hw,
1232 + .flags = CLK_SET_RATE_PARENT,
1233 + .ops = &clk_branch2_ops,
1238 +static struct clk_branch nss_cc_haq_axi_clk = {
1239 + .halt_reg = 0x28310,
1240 + .halt_check = BRANCH_HALT,
1242 + .enable_reg = 0x28310,
1243 + .enable_mask = BIT(0),
1244 + .hw.init = &(const struct clk_init_data) {
1245 + .name = "nss_cc_haq_axi_clk",
1246 + .parent_data = &(const struct clk_parent_data) {
1247 + .hw = &nss_cc_haq_clk_src.clkr.hw,
1250 + .flags = CLK_SET_RATE_PARENT,
1251 + .ops = &clk_branch2_ops,
1256 +static struct clk_branch nss_cc_imem_ahb_clk = {
1257 + .halt_reg = 0xe018,
1258 + .halt_check = BRANCH_HALT,
1260 + .enable_reg = 0xe018,
1261 + .enable_mask = BIT(0),
1262 + .hw.init = &(const struct clk_init_data) {
1263 + .name = "nss_cc_imem_ahb_clk",
1264 + .parent_data = &(const struct clk_parent_data) {
1265 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
1268 + .flags = CLK_SET_RATE_PARENT,
1269 + .ops = &clk_branch2_ops,
1274 +static struct clk_branch nss_cc_imem_qsb_clk = {
1275 + .halt_reg = 0xe010,
1276 + .halt_check = BRANCH_HALT,
1278 + .enable_reg = 0xe010,
1279 + .enable_mask = BIT(0),
1280 + .hw.init = &(const struct clk_init_data) {
1281 + .name = "nss_cc_imem_qsb_clk",
1282 + .parent_data = &(const struct clk_parent_data) {
1283 + .hw = &nss_cc_imem_clk_src.clkr.hw,
1286 + .flags = CLK_SET_RATE_PARENT,
1287 + .ops = &clk_branch2_ops,
1292 +static struct clk_branch nss_cc_nss_csr_clk = {
1293 + .halt_reg = 0x281d0,
1294 + .halt_check = BRANCH_HALT,
1296 + .enable_reg = 0x281d0,
1297 + .enable_mask = BIT(0),
1298 + .hw.init = &(const struct clk_init_data) {
1299 + .name = "nss_cc_nss_csr_clk",
1300 + .parent_data = &(const struct clk_parent_data) {
1301 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
1304 + .flags = CLK_SET_RATE_PARENT,
1305 + .ops = &clk_branch2_ops,
1310 +static struct clk_branch nss_cc_nssnoc_ce_apb_clk = {
1311 + .halt_reg = 0x28414,
1312 + .halt_check = BRANCH_HALT,
1314 + .enable_reg = 0x28414,
1315 + .enable_mask = BIT(0),
1316 + .hw.init = &(const struct clk_init_data) {
1317 + .name = "nss_cc_nssnoc_ce_apb_clk",
1318 + .parent_data = &(const struct clk_parent_data) {
1319 + .hw = &nss_cc_ce_clk_src.clkr.hw,
1322 + .flags = CLK_SET_RATE_PARENT,
1323 + .ops = &clk_branch2_ops,
1328 +static struct clk_branch nss_cc_nssnoc_ce_axi_clk = {
1329 + .halt_reg = 0x28418,
1330 + .halt_check = BRANCH_HALT,
1332 + .enable_reg = 0x28418,
1333 + .enable_mask = BIT(0),
1334 + .hw.init = &(const struct clk_init_data) {
1335 + .name = "nss_cc_nssnoc_ce_axi_clk",
1336 + .parent_data = &(const struct clk_parent_data) {
1337 + .hw = &nss_cc_ce_clk_src.clkr.hw,
1340 + .flags = CLK_SET_RATE_PARENT,
1341 + .ops = &clk_branch2_ops,
1346 +static struct clk_branch nss_cc_nssnoc_clc_axi_clk = {
1347 + .halt_reg = 0x28610,
1348 + .halt_check = BRANCH_HALT,
1350 + .enable_reg = 0x28610,
1351 + .enable_mask = BIT(0),
1352 + .hw.init = &(const struct clk_init_data) {
1353 + .name = "nss_cc_nssnoc_clc_axi_clk",
1354 + .parent_data = &(const struct clk_parent_data) {
1355 + .hw = &nss_cc_clc_clk_src.clkr.hw,
1358 + .flags = CLK_SET_RATE_PARENT,
1359 + .ops = &clk_branch2_ops,
1364 +static struct clk_branch nss_cc_nssnoc_crypto_clk = {
1365 + .halt_reg = 0x16020,
1366 + .halt_check = BRANCH_HALT,
1368 + .enable_reg = 0x16020,
1369 + .enable_mask = BIT(0),
1370 + .hw.init = &(const struct clk_init_data) {
1371 + .name = "nss_cc_nssnoc_crypto_clk",
1372 + .parent_data = &(const struct clk_parent_data) {
1373 + .hw = &nss_cc_crypto_clk_src.clkr.hw,
1376 + .flags = CLK_SET_RATE_PARENT,
1377 + .ops = &clk_branch2_ops,
1382 +static struct clk_branch nss_cc_nssnoc_haq_ahb_clk = {
1383 + .halt_reg = 0x28314,
1384 + .halt_check = BRANCH_HALT,
1386 + .enable_reg = 0x28314,
1387 + .enable_mask = BIT(0),
1388 + .hw.init = &(const struct clk_init_data) {
1389 + .name = "nss_cc_nssnoc_haq_ahb_clk",
1390 + .parent_data = &(const struct clk_parent_data) {
1391 + .hw = &nss_cc_haq_clk_src.clkr.hw,
1394 + .flags = CLK_SET_RATE_PARENT,
1395 + .ops = &clk_branch2_ops,
1400 +static struct clk_branch nss_cc_nssnoc_haq_axi_clk = {
1401 + .halt_reg = 0x28318,
1402 + .halt_check = BRANCH_HALT,
1404 + .enable_reg = 0x28318,
1405 + .enable_mask = BIT(0),
1406 + .hw.init = &(const struct clk_init_data) {
1407 + .name = "nss_cc_nssnoc_haq_axi_clk",
1408 + .parent_data = &(const struct clk_parent_data) {
1409 + .hw = &nss_cc_haq_clk_src.clkr.hw,
1412 + .flags = CLK_SET_RATE_PARENT,
1413 + .ops = &clk_branch2_ops,
1418 +static struct clk_branch nss_cc_nssnoc_imem_ahb_clk = {
1419 + .halt_reg = 0xe01c,
1420 + .halt_check = BRANCH_HALT,
1422 + .enable_reg = 0xe01c,
1423 + .enable_mask = BIT(0),
1424 + .hw.init = &(const struct clk_init_data) {
1425 + .name = "nss_cc_nssnoc_imem_ahb_clk",
1426 + .parent_data = &(const struct clk_parent_data) {
1427 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
1430 + .flags = CLK_SET_RATE_PARENT,
1431 + .ops = &clk_branch2_ops,
1436 +static struct clk_branch nss_cc_nssnoc_imem_qsb_clk = {
1437 + .halt_reg = 0xe014,
1438 + .halt_check = BRANCH_HALT,
1440 + .enable_reg = 0xe014,
1441 + .enable_mask = BIT(0),
1442 + .hw.init = &(const struct clk_init_data) {
1443 + .name = "nss_cc_nssnoc_imem_qsb_clk",
1444 + .parent_data = &(const struct clk_parent_data) {
1445 + .hw = &nss_cc_imem_clk_src.clkr.hw,
1448 + .flags = CLK_SET_RATE_PARENT,
1449 + .ops = &clk_branch2_ops,
1454 +static struct clk_branch nss_cc_nssnoc_nss_csr_clk = {
1455 + .halt_reg = 0x281d4,
1456 + .halt_check = BRANCH_HALT,
1458 + .enable_reg = 0x281d4,
1459 + .enable_mask = BIT(0),
1460 + .hw.init = &(const struct clk_init_data) {
1461 + .name = "nss_cc_nssnoc_nss_csr_clk",
1462 + .parent_data = &(const struct clk_parent_data) {
1463 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
1466 + .flags = CLK_SET_RATE_PARENT,
1467 + .ops = &clk_branch2_ops,
1472 +static struct clk_branch nss_cc_nssnoc_ppe_cfg_clk = {
1473 + .halt_reg = 0x28248,
1474 + .halt_check = BRANCH_HALT,
1476 + .enable_reg = 0x28248,
1477 + .enable_mask = BIT(0),
1478 + .hw.init = &(const struct clk_init_data) {
1479 + .name = "nss_cc_nssnoc_ppe_cfg_clk",
1480 + .parent_data = &(const struct clk_parent_data) {
1481 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1484 + .flags = CLK_SET_RATE_PARENT,
1485 + .ops = &clk_branch2_ops,
1490 +static struct clk_branch nss_cc_nssnoc_ppe_clk = {
1491 + .halt_reg = 0x28244,
1492 + .halt_check = BRANCH_HALT,
1494 + .enable_reg = 0x28244,
1495 + .enable_mask = BIT(0),
1496 + .hw.init = &(const struct clk_init_data) {
1497 + .name = "nss_cc_nssnoc_ppe_clk",
1498 + .parent_data = &(const struct clk_parent_data) {
1499 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1502 + .flags = CLK_SET_RATE_PARENT,
1503 + .ops = &clk_branch2_ops,
1508 +static struct clk_branch nss_cc_nssnoc_ubi32_ahb0_clk = {
1509 + .halt_reg = 0x28788,
1510 + .halt_check = BRANCH_HALT,
1512 + .enable_reg = 0x28788,
1513 + .enable_mask = BIT(0),
1514 + .hw.init = &(const struct clk_init_data) {
1515 + .name = "nss_cc_nssnoc_ubi32_ahb0_clk",
1516 + .parent_data = &(const struct clk_parent_data) {
1517 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
1520 + .flags = CLK_SET_RATE_PARENT,
1521 + .ops = &clk_branch2_ops,
1526 +static struct clk_branch nss_cc_nssnoc_ubi32_axi0_clk = {
1527 + .halt_reg = 0x287a0,
1528 + .halt_check = BRANCH_HALT,
1530 + .enable_reg = 0x287a0,
1531 + .enable_mask = BIT(0),
1532 + .hw.init = &(const struct clk_init_data) {
1533 + .name = "nss_cc_nssnoc_ubi32_axi0_clk",
1534 + .parent_data = &(const struct clk_parent_data) {
1535 + .hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
1538 + .flags = CLK_SET_RATE_PARENT,
1539 + .ops = &clk_branch2_ops,
1544 +static struct clk_branch nss_cc_nssnoc_ubi32_int0_ahb_clk = {
1545 + .halt_reg = 0x2878c,
1546 + .halt_check = BRANCH_HALT,
1548 + .enable_reg = 0x2878c,
1549 + .enable_mask = BIT(0),
1550 + .hw.init = &(const struct clk_init_data) {
1551 + .name = "nss_cc_nssnoc_ubi32_int0_ahb_clk",
1552 + .parent_data = &(const struct clk_parent_data) {
1553 + .hw = &nss_cc_int_cfg_clk_src.clkr.hw,
1556 + .flags = CLK_SET_RATE_PARENT,
1557 + .ops = &clk_branch2_ops,
1562 +static struct clk_branch nss_cc_nssnoc_ubi32_nc_axi0_1_clk = {
1563 + .halt_reg = 0x287bc,
1564 + .halt_check = BRANCH_HALT,
1566 + .enable_reg = 0x287bc,
1567 + .enable_mask = BIT(0),
1568 + .hw.init = &(const struct clk_init_data) {
1569 + .name = "nss_cc_nssnoc_ubi32_nc_axi0_1_clk",
1570 + .parent_data = &(const struct clk_parent_data) {
1571 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
1574 + .flags = CLK_SET_RATE_PARENT,
1575 + .ops = &clk_branch2_ops,
1580 +static struct clk_branch nss_cc_nssnoc_ubi32_nc_axi0_clk = {
1581 + .halt_reg = 0x28764,
1582 + .halt_check = BRANCH_HALT,
1584 + .enable_reg = 0x28764,
1585 + .enable_mask = BIT(0),
1586 + .hw.init = &(const struct clk_init_data) {
1587 + .name = "nss_cc_nssnoc_ubi32_nc_axi0_clk",
1588 + .parent_data = &(const struct clk_parent_data) {
1589 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
1592 + .flags = CLK_SET_RATE_PARENT,
1593 + .ops = &clk_branch2_ops,
1598 +static struct clk_branch nss_cc_port1_mac_clk = {
1599 + .halt_reg = 0x2824c,
1600 + .halt_check = BRANCH_HALT,
1602 + .enable_reg = 0x2824c,
1603 + .enable_mask = BIT(0),
1604 + .hw.init = &(const struct clk_init_data) {
1605 + .name = "nss_cc_port1_mac_clk",
1606 + .parent_data = &(const struct clk_parent_data) {
1607 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1610 + .flags = CLK_SET_RATE_PARENT,
1611 + .ops = &clk_branch2_ops,
1616 +static struct clk_branch nss_cc_port1_rx_clk = {
1617 + .halt_reg = 0x281a0,
1618 + .halt_check = BRANCH_HALT,
1620 + .enable_reg = 0x281a0,
1621 + .enable_mask = BIT(0),
1622 + .hw.init = &(const struct clk_init_data) {
1623 + .name = "nss_cc_port1_rx_clk",
1624 + .parent_data = &(const struct clk_parent_data) {
1625 + .hw = &nss_cc_port1_rx_div_clk_src.clkr.hw,
1628 + .flags = CLK_SET_RATE_PARENT,
1629 + .ops = &clk_branch2_ops,
1634 +static struct clk_branch nss_cc_port1_tx_clk = {
1635 + .halt_reg = 0x281a4,
1636 + .halt_check = BRANCH_HALT,
1638 + .enable_reg = 0x281a4,
1639 + .enable_mask = BIT(0),
1640 + .hw.init = &(const struct clk_init_data) {
1641 + .name = "nss_cc_port1_tx_clk",
1642 + .parent_data = &(const struct clk_parent_data) {
1643 + .hw = &nss_cc_port1_tx_div_clk_src.clkr.hw,
1646 + .flags = CLK_SET_RATE_PARENT,
1647 + .ops = &clk_branch2_ops,
1652 +static struct clk_branch nss_cc_port2_mac_clk = {
1653 + .halt_reg = 0x28250,
1654 + .halt_check = BRANCH_HALT,
1656 + .enable_reg = 0x28250,
1657 + .enable_mask = BIT(0),
1658 + .hw.init = &(const struct clk_init_data) {
1659 + .name = "nss_cc_port2_mac_clk",
1660 + .parent_data = &(const struct clk_parent_data) {
1661 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1664 + .flags = CLK_SET_RATE_PARENT,
1665 + .ops = &clk_branch2_ops,
1670 +static struct clk_branch nss_cc_port2_rx_clk = {
1671 + .halt_reg = 0x281a8,
1672 + .halt_check = BRANCH_HALT,
1674 + .enable_reg = 0x281a8,
1675 + .enable_mask = BIT(0),
1676 + .hw.init = &(const struct clk_init_data) {
1677 + .name = "nss_cc_port2_rx_clk",
1678 + .parent_data = &(const struct clk_parent_data) {
1679 + .hw = &nss_cc_port2_rx_div_clk_src.clkr.hw,
1682 + .flags = CLK_SET_RATE_PARENT,
1683 + .ops = &clk_branch2_ops,
1688 +static struct clk_branch nss_cc_port2_tx_clk = {
1689 + .halt_reg = 0x281ac,
1690 + .halt_check = BRANCH_HALT,
1692 + .enable_reg = 0x281ac,
1693 + .enable_mask = BIT(0),
1694 + .hw.init = &(const struct clk_init_data) {
1695 + .name = "nss_cc_port2_tx_clk",
1696 + .parent_data = &(const struct clk_parent_data) {
1697 + .hw = &nss_cc_port2_tx_div_clk_src.clkr.hw,
1700 + .flags = CLK_SET_RATE_PARENT,
1701 + .ops = &clk_branch2_ops,
1706 +static struct clk_branch nss_cc_port3_mac_clk = {
1707 + .halt_reg = 0x28254,
1708 + .halt_check = BRANCH_HALT,
1710 + .enable_reg = 0x28254,
1711 + .enable_mask = BIT(0),
1712 + .hw.init = &(const struct clk_init_data) {
1713 + .name = "nss_cc_port3_mac_clk",
1714 + .parent_data = &(const struct clk_parent_data) {
1715 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1718 + .flags = CLK_SET_RATE_PARENT,
1719 + .ops = &clk_branch2_ops,
1724 +static struct clk_branch nss_cc_port3_rx_clk = {
1725 + .halt_reg = 0x281b0,
1726 + .halt_check = BRANCH_HALT,
1728 + .enable_reg = 0x281b0,
1729 + .enable_mask = BIT(0),
1730 + .hw.init = &(const struct clk_init_data) {
1731 + .name = "nss_cc_port3_rx_clk",
1732 + .parent_data = &(const struct clk_parent_data) {
1733 + .hw = &nss_cc_port3_rx_div_clk_src.clkr.hw,
1736 + .flags = CLK_SET_RATE_PARENT,
1737 + .ops = &clk_branch2_ops,
1742 +static struct clk_branch nss_cc_port3_tx_clk = {
1743 + .halt_reg = 0x281b4,
1744 + .halt_check = BRANCH_HALT,
1746 + .enable_reg = 0x281b4,
1747 + .enable_mask = BIT(0),
1748 + .hw.init = &(const struct clk_init_data) {
1749 + .name = "nss_cc_port3_tx_clk",
1750 + .parent_data = &(const struct clk_parent_data) {
1751 + .hw = &nss_cc_port3_tx_div_clk_src.clkr.hw,
1754 + .flags = CLK_SET_RATE_PARENT,
1755 + .ops = &clk_branch2_ops,
1760 +static struct clk_branch nss_cc_port4_mac_clk = {
1761 + .halt_reg = 0x28258,
1762 + .halt_check = BRANCH_HALT,
1764 + .enable_reg = 0x28258,
1765 + .enable_mask = BIT(0),
1766 + .hw.init = &(const struct clk_init_data) {
1767 + .name = "nss_cc_port4_mac_clk",
1768 + .parent_data = &(const struct clk_parent_data) {
1769 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1772 + .flags = CLK_SET_RATE_PARENT,
1773 + .ops = &clk_branch2_ops,
1778 +static struct clk_branch nss_cc_port4_rx_clk = {
1779 + .halt_reg = 0x281b8,
1780 + .halt_check = BRANCH_HALT,
1782 + .enable_reg = 0x281b8,
1783 + .enable_mask = BIT(0),
1784 + .hw.init = &(const struct clk_init_data) {
1785 + .name = "nss_cc_port4_rx_clk",
1786 + .parent_data = &(const struct clk_parent_data) {
1787 + .hw = &nss_cc_port4_rx_div_clk_src.clkr.hw,
1790 + .flags = CLK_SET_RATE_PARENT,
1791 + .ops = &clk_branch2_ops,
1796 +static struct clk_branch nss_cc_port4_tx_clk = {
1797 + .halt_reg = 0x281bc,
1798 + .halt_check = BRANCH_HALT,
1800 + .enable_reg = 0x281bc,
1801 + .enable_mask = BIT(0),
1802 + .hw.init = &(const struct clk_init_data) {
1803 + .name = "nss_cc_port4_tx_clk",
1804 + .parent_data = &(const struct clk_parent_data) {
1805 + .hw = &nss_cc_port4_tx_div_clk_src.clkr.hw,
1808 + .flags = CLK_SET_RATE_PARENT,
1809 + .ops = &clk_branch2_ops,
1814 +static struct clk_branch nss_cc_port5_mac_clk = {
1815 + .halt_reg = 0x2825c,
1816 + .halt_check = BRANCH_HALT,
1818 + .enable_reg = 0x2825c,
1819 + .enable_mask = BIT(0),
1820 + .hw.init = &(const struct clk_init_data) {
1821 + .name = "nss_cc_port5_mac_clk",
1822 + .parent_data = &(const struct clk_parent_data) {
1823 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1826 + .flags = CLK_SET_RATE_PARENT,
1827 + .ops = &clk_branch2_ops,
1832 +static struct clk_branch nss_cc_port5_rx_clk = {
1833 + .halt_reg = 0x281c0,
1834 + .halt_check = BRANCH_HALT,
1836 + .enable_reg = 0x281c0,
1837 + .enable_mask = BIT(0),
1838 + .hw.init = &(const struct clk_init_data) {
1839 + .name = "nss_cc_port5_rx_clk",
1840 + .parent_data = &(const struct clk_parent_data) {
1841 + .hw = &nss_cc_port5_rx_div_clk_src.clkr.hw,
1844 + .flags = CLK_SET_RATE_PARENT,
1845 + .ops = &clk_branch2_ops,
1850 +static struct clk_branch nss_cc_port5_tx_clk = {
1851 + .halt_reg = 0x281c4,
1852 + .halt_check = BRANCH_HALT,
1854 + .enable_reg = 0x281c4,
1855 + .enable_mask = BIT(0),
1856 + .hw.init = &(const struct clk_init_data) {
1857 + .name = "nss_cc_port5_tx_clk",
1858 + .parent_data = &(const struct clk_parent_data) {
1859 + .hw = &nss_cc_port5_tx_div_clk_src.clkr.hw,
1862 + .flags = CLK_SET_RATE_PARENT,
1863 + .ops = &clk_branch2_ops,
1868 +static struct clk_branch nss_cc_port6_mac_clk = {
1869 + .halt_reg = 0x28260,
1870 + .halt_check = BRANCH_HALT,
1872 + .enable_reg = 0x28260,
1873 + .enable_mask = BIT(0),
1874 + .hw.init = &(const struct clk_init_data) {
1875 + .name = "nss_cc_port6_mac_clk",
1876 + .parent_data = &(const struct clk_parent_data) {
1877 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1880 + .flags = CLK_SET_RATE_PARENT,
1881 + .ops = &clk_branch2_ops,
1886 +static struct clk_branch nss_cc_port6_rx_clk = {
1887 + .halt_reg = 0x281c8,
1888 + .halt_check = BRANCH_HALT,
1890 + .enable_reg = 0x281c8,
1891 + .enable_mask = BIT(0),
1892 + .hw.init = &(const struct clk_init_data) {
1893 + .name = "nss_cc_port6_rx_clk",
1894 + .parent_data = &(const struct clk_parent_data) {
1895 + .hw = &nss_cc_port6_rx_div_clk_src.clkr.hw,
1898 + .flags = CLK_SET_RATE_PARENT,
1899 + .ops = &clk_branch2_ops,
1904 +static struct clk_branch nss_cc_port6_tx_clk = {
1905 + .halt_reg = 0x281cc,
1906 + .halt_check = BRANCH_HALT,
1908 + .enable_reg = 0x281cc,
1909 + .enable_mask = BIT(0),
1910 + .hw.init = &(const struct clk_init_data) {
1911 + .name = "nss_cc_port6_tx_clk",
1912 + .parent_data = &(const struct clk_parent_data) {
1913 + .hw = &nss_cc_port6_tx_div_clk_src.clkr.hw,
1916 + .flags = CLK_SET_RATE_PARENT,
1917 + .ops = &clk_branch2_ops,
1922 +static struct clk_branch nss_cc_ppe_edma_cfg_clk = {
1923 + .halt_reg = 0x2823c,
1924 + .halt_check = BRANCH_HALT,
1926 + .enable_reg = 0x2823c,
1927 + .enable_mask = BIT(0),
1928 + .hw.init = &(const struct clk_init_data) {
1929 + .name = "nss_cc_ppe_edma_cfg_clk",
1930 + .parent_data = &(const struct clk_parent_data) {
1931 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1934 + .flags = CLK_SET_RATE_PARENT,
1935 + .ops = &clk_branch2_ops,
1940 +static struct clk_branch nss_cc_ppe_edma_clk = {
1941 + .halt_reg = 0x28238,
1942 + .halt_check = BRANCH_HALT,
1944 + .enable_reg = 0x28238,
1945 + .enable_mask = BIT(0),
1946 + .hw.init = &(const struct clk_init_data) {
1947 + .name = "nss_cc_ppe_edma_clk",
1948 + .parent_data = &(const struct clk_parent_data) {
1949 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1952 + .flags = CLK_SET_RATE_PARENT,
1953 + .ops = &clk_branch2_ops,
1958 +static struct clk_branch nss_cc_ppe_switch_btq_clk = {
1959 + .halt_reg = 0x2827c,
1960 + .halt_check = BRANCH_HALT,
1962 + .enable_reg = 0x2827c,
1963 + .enable_mask = BIT(0),
1964 + .hw.init = &(const struct clk_init_data) {
1965 + .name = "nss_cc_ppe_switch_btq_clk",
1966 + .parent_data = &(const struct clk_parent_data) {
1967 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1970 + .flags = CLK_SET_RATE_PARENT,
1971 + .ops = &clk_branch2_ops,
1976 +static struct clk_branch nss_cc_ppe_switch_cfg_clk = {
1977 + .halt_reg = 0x28234,
1978 + .halt_check = BRANCH_HALT,
1980 + .enable_reg = 0x28234,
1981 + .enable_mask = BIT(0),
1982 + .hw.init = &(const struct clk_init_data) {
1983 + .name = "nss_cc_ppe_switch_cfg_clk",
1984 + .parent_data = &(const struct clk_parent_data) {
1985 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
1988 + .flags = CLK_SET_RATE_PARENT,
1989 + .ops = &clk_branch2_ops,
1994 +static struct clk_branch nss_cc_ppe_switch_clk = {
1995 + .halt_reg = 0x28230,
1996 + .halt_check = BRANCH_HALT,
1998 + .enable_reg = 0x28230,
1999 + .enable_mask = BIT(0),
2000 + .hw.init = &(const struct clk_init_data) {
2001 + .name = "nss_cc_ppe_switch_clk",
2002 + .parent_data = &(const struct clk_parent_data) {
2003 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
2006 + .flags = CLK_SET_RATE_PARENT,
2007 + .ops = &clk_branch2_ops,
2012 +static struct clk_branch nss_cc_ppe_switch_ipe_clk = {
2013 + .halt_reg = 0x2822c,
2014 + .halt_check = BRANCH_HALT,
2016 + .enable_reg = 0x2822c,
2017 + .enable_mask = BIT(0),
2018 + .hw.init = &(const struct clk_init_data) {
2019 + .name = "nss_cc_ppe_switch_ipe_clk",
2020 + .parent_data = &(const struct clk_parent_data) {
2021 + .hw = &nss_cc_ppe_clk_src.clkr.hw,
2024 + .flags = CLK_SET_RATE_PARENT,
2025 + .ops = &clk_branch2_ops,
2030 +static struct clk_branch nss_cc_ubi32_ahb0_clk = {
2031 + .halt_reg = 0x28768,
2032 + .halt_check = BRANCH_HALT,
2034 + .enable_reg = 0x28768,
2035 + .enable_mask = BIT(0),
2036 + .hw.init = &(const struct clk_init_data) {
2037 + .name = "nss_cc_ubi32_ahb0_clk",
2038 + .parent_data = &(const struct clk_parent_data) {
2039 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
2042 + .flags = CLK_SET_RATE_PARENT,
2043 + .ops = &clk_branch2_ops,
2048 +static struct clk_branch nss_cc_ubi32_ahb1_clk = {
2049 + .halt_reg = 0x28770,
2050 + .halt_check = BRANCH_HALT,
2052 + .enable_reg = 0x28770,
2053 + .enable_mask = BIT(0),
2054 + .hw.init = &(const struct clk_init_data) {
2055 + .name = "nss_cc_ubi32_ahb1_clk",
2056 + .parent_data = &(const struct clk_parent_data) {
2057 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
2060 + .flags = CLK_SET_RATE_PARENT,
2061 + .ops = &clk_branch2_ops,
2066 +static struct clk_branch nss_cc_ubi32_ahb2_clk = {
2067 + .halt_reg = 0x28778,
2068 + .halt_check = BRANCH_HALT,
2070 + .enable_reg = 0x28778,
2071 + .enable_mask = BIT(0),
2072 + .hw.init = &(const struct clk_init_data) {
2073 + .name = "nss_cc_ubi32_ahb2_clk",
2074 + .parent_data = &(const struct clk_parent_data) {
2075 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
2078 + .flags = CLK_SET_RATE_PARENT,
2079 + .ops = &clk_branch2_ops,
2084 +static struct clk_branch nss_cc_ubi32_ahb3_clk = {
2085 + .halt_reg = 0x28780,
2086 + .halt_check = BRANCH_HALT,
2088 + .enable_reg = 0x28780,
2089 + .enable_mask = BIT(0),
2090 + .hw.init = &(const struct clk_init_data) {
2091 + .name = "nss_cc_ubi32_ahb3_clk",
2092 + .parent_data = &(const struct clk_parent_data) {
2093 + .hw = &nss_cc_cfg_clk_src.clkr.hw,
2096 + .flags = CLK_SET_RATE_PARENT,
2097 + .ops = &clk_branch2_ops,
2102 +static struct clk_branch nss_cc_ubi32_axi0_clk = {
2103 + .halt_reg = 0x28790,
2104 + .halt_check = BRANCH_HALT,
2106 + .enable_reg = 0x28790,
2107 + .enable_mask = BIT(0),
2108 + .hw.init = &(const struct clk_init_data) {
2109 + .name = "nss_cc_ubi32_axi0_clk",
2110 + .parent_data = &(const struct clk_parent_data) {
2111 + .hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
2114 + .flags = CLK_SET_RATE_PARENT,
2115 + .ops = &clk_branch2_ops,
2120 +static struct clk_branch nss_cc_ubi32_axi1_clk = {
2121 + .halt_reg = 0x28794,
2122 + .halt_check = BRANCH_HALT,
2124 + .enable_reg = 0x28794,
2125 + .enable_mask = BIT(0),
2126 + .hw.init = &(const struct clk_init_data) {
2127 + .name = "nss_cc_ubi32_axi1_clk",
2128 + .parent_data = &(const struct clk_parent_data) {
2129 + .hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
2132 + .flags = CLK_SET_RATE_PARENT,
2133 + .ops = &clk_branch2_ops,
2138 +static struct clk_branch nss_cc_ubi32_axi2_clk = {
2139 + .halt_reg = 0x28798,
2140 + .halt_check = BRANCH_HALT,
2142 + .enable_reg = 0x28798,
2143 + .enable_mask = BIT(0),
2144 + .hw.init = &(const struct clk_init_data) {
2145 + .name = "nss_cc_ubi32_axi2_clk",
2146 + .parent_data = &(const struct clk_parent_data) {
2147 + .hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
2150 + .flags = CLK_SET_RATE_PARENT,
2151 + .ops = &clk_branch2_ops,
2156 +static struct clk_branch nss_cc_ubi32_axi3_clk = {
2157 + .halt_reg = 0x2879c,
2158 + .halt_check = BRANCH_HALT,
2160 + .enable_reg = 0x2879c,
2161 + .enable_mask = BIT(0),
2162 + .hw.init = &(const struct clk_init_data) {
2163 + .name = "nss_cc_ubi32_axi3_clk",
2164 + .parent_data = &(const struct clk_parent_data) {
2165 + .hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
2168 + .flags = CLK_SET_RATE_PARENT,
2169 + .ops = &clk_branch2_ops,
2174 +static struct clk_branch nss_cc_ubi32_core0_clk = {
2175 + .halt_reg = 0x28734,
2176 + .halt_check = BRANCH_HALT,
2178 + .enable_reg = 0x28734,
2179 + .enable_mask = BIT(0),
2180 + .hw.init = &(const struct clk_init_data) {
2181 + .name = "nss_cc_ubi32_core0_clk",
2182 + .parent_data = &(const struct clk_parent_data) {
2183 + .hw = &nss_cc_ubi0_div_clk_src.clkr.hw,
2186 + .flags = CLK_SET_RATE_PARENT,
2187 + .ops = &clk_branch2_ops,
2192 +static struct clk_branch nss_cc_ubi32_core1_clk = {
2193 + .halt_reg = 0x28738,
2194 + .halt_check = BRANCH_HALT,
2196 + .enable_reg = 0x28738,
2197 + .enable_mask = BIT(0),
2198 + .hw.init = &(const struct clk_init_data) {
2199 + .name = "nss_cc_ubi32_core1_clk",
2200 + .parent_data = &(const struct clk_parent_data) {
2201 + .hw = &nss_cc_ubi1_div_clk_src.clkr.hw,
2204 + .flags = CLK_SET_RATE_PARENT,
2205 + .ops = &clk_branch2_ops,
2210 +static struct clk_branch nss_cc_ubi32_core2_clk = {
2211 + .halt_reg = 0x2873c,
2212 + .halt_check = BRANCH_HALT,
2214 + .enable_reg = 0x2873c,
2215 + .enable_mask = BIT(0),
2216 + .hw.init = &(const struct clk_init_data) {
2217 + .name = "nss_cc_ubi32_core2_clk",
2218 + .parent_data = &(const struct clk_parent_data) {
2219 + .hw = &nss_cc_ubi2_div_clk_src.clkr.hw,
2222 + .flags = CLK_SET_RATE_PARENT,
2223 + .ops = &clk_branch2_ops,
2228 +static struct clk_branch nss_cc_ubi32_core3_clk = {
2229 + .halt_reg = 0x28740,
2230 + .halt_check = BRANCH_HALT,
2232 + .enable_reg = 0x28740,
2233 + .enable_mask = BIT(0),
2234 + .hw.init = &(const struct clk_init_data) {
2235 + .name = "nss_cc_ubi32_core3_clk",
2236 + .parent_data = &(const struct clk_parent_data) {
2237 + .hw = &nss_cc_ubi3_div_clk_src.clkr.hw,
2240 + .flags = CLK_SET_RATE_PARENT,
2241 + .ops = &clk_branch2_ops,
2246 +static struct clk_branch nss_cc_ubi32_intr0_ahb_clk = {
2247 + .halt_reg = 0x2876c,
2248 + .halt_check = BRANCH_HALT,
2250 + .enable_reg = 0x2876c,
2251 + .enable_mask = BIT(0),
2252 + .hw.init = &(const struct clk_init_data) {
2253 + .name = "nss_cc_ubi32_intr0_ahb_clk",
2254 + .parent_data = &(const struct clk_parent_data) {
2255 + .hw = &nss_cc_int_cfg_clk_src.clkr.hw,
2258 + .flags = CLK_SET_RATE_PARENT,
2259 + .ops = &clk_branch2_ops,
2264 +static struct clk_branch nss_cc_ubi32_intr1_ahb_clk = {
2265 + .halt_reg = 0x28774,
2266 + .halt_check = BRANCH_HALT,
2268 + .enable_reg = 0x28774,
2269 + .enable_mask = BIT(0),
2270 + .hw.init = &(const struct clk_init_data) {
2271 + .name = "nss_cc_ubi32_intr1_ahb_clk",
2272 + .parent_data = &(const struct clk_parent_data) {
2273 + .hw = &nss_cc_int_cfg_clk_src.clkr.hw,
2276 + .flags = CLK_SET_RATE_PARENT,
2277 + .ops = &clk_branch2_ops,
2282 +static struct clk_branch nss_cc_ubi32_intr2_ahb_clk = {
2283 + .halt_reg = 0x2877c,
2284 + .halt_check = BRANCH_HALT,
2286 + .enable_reg = 0x2877c,
2287 + .enable_mask = BIT(0),
2288 + .hw.init = &(const struct clk_init_data) {
2289 + .name = "nss_cc_ubi32_intr2_ahb_clk",
2290 + .parent_data = &(const struct clk_parent_data) {
2291 + .hw = &nss_cc_int_cfg_clk_src.clkr.hw,
2294 + .flags = CLK_SET_RATE_PARENT,
2295 + .ops = &clk_branch2_ops,
2300 +static struct clk_branch nss_cc_ubi32_intr3_ahb_clk = {
2301 + .halt_reg = 0x28784,
2302 + .halt_check = BRANCH_HALT,
2304 + .enable_reg = 0x28784,
2305 + .enable_mask = BIT(0),
2306 + .hw.init = &(const struct clk_init_data) {
2307 + .name = "nss_cc_ubi32_intr3_ahb_clk",
2308 + .parent_data = &(const struct clk_parent_data) {
2309 + .hw = &nss_cc_int_cfg_clk_src.clkr.hw,
2312 + .flags = CLK_SET_RATE_PARENT,
2313 + .ops = &clk_branch2_ops,
2318 +static struct clk_branch nss_cc_ubi32_nc_axi0_clk = {
2319 + .halt_reg = 0x28744,
2320 + .halt_check = BRANCH_HALT,
2322 + .enable_reg = 0x28744,
2323 + .enable_mask = BIT(0),
2324 + .hw.init = &(const struct clk_init_data) {
2325 + .name = "nss_cc_ubi32_nc_axi0_clk",
2326 + .parent_data = &(const struct clk_parent_data) {
2327 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2330 + .flags = CLK_SET_RATE_PARENT,
2331 + .ops = &clk_branch2_ops,
2336 +static struct clk_branch nss_cc_ubi32_nc_axi1_clk = {
2337 + .halt_reg = 0x2874c,
2338 + .halt_check = BRANCH_HALT,
2340 + .enable_reg = 0x2874c,
2341 + .enable_mask = BIT(0),
2342 + .hw.init = &(const struct clk_init_data) {
2343 + .name = "nss_cc_ubi32_nc_axi1_clk",
2344 + .parent_data = &(const struct clk_parent_data) {
2345 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2348 + .flags = CLK_SET_RATE_PARENT,
2349 + .ops = &clk_branch2_ops,
2354 +static struct clk_branch nss_cc_ubi32_nc_axi2_clk = {
2355 + .halt_reg = 0x28754,
2356 + .halt_check = BRANCH_HALT,
2358 + .enable_reg = 0x28754,
2359 + .enable_mask = BIT(0),
2360 + .hw.init = &(const struct clk_init_data) {
2361 + .name = "nss_cc_ubi32_nc_axi2_clk",
2362 + .parent_data = &(const struct clk_parent_data) {
2363 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2366 + .flags = CLK_SET_RATE_PARENT,
2367 + .ops = &clk_branch2_ops,
2372 +static struct clk_branch nss_cc_ubi32_nc_axi3_clk = {
2373 + .halt_reg = 0x2875c,
2374 + .halt_check = BRANCH_HALT,
2376 + .enable_reg = 0x2875c,
2377 + .enable_mask = BIT(0),
2378 + .hw.init = &(const struct clk_init_data) {
2379 + .name = "nss_cc_ubi32_nc_axi3_clk",
2380 + .parent_data = &(const struct clk_parent_data) {
2381 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2384 + .flags = CLK_SET_RATE_PARENT,
2385 + .ops = &clk_branch2_ops,
2390 +static struct clk_branch nss_cc_ubi32_utcm0_clk = {
2391 + .halt_reg = 0x28748,
2392 + .halt_check = BRANCH_HALT,
2394 + .enable_reg = 0x28748,
2395 + .enable_mask = BIT(0),
2396 + .hw.init = &(const struct clk_init_data) {
2397 + .name = "nss_cc_ubi32_utcm0_clk",
2398 + .parent_data = &(const struct clk_parent_data) {
2399 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2402 + .flags = CLK_SET_RATE_PARENT,
2403 + .ops = &clk_branch2_ops,
2408 +static struct clk_branch nss_cc_ubi32_utcm1_clk = {
2409 + .halt_reg = 0x28750,
2410 + .halt_check = BRANCH_HALT,
2412 + .enable_reg = 0x28750,
2413 + .enable_mask = BIT(0),
2414 + .hw.init = &(const struct clk_init_data) {
2415 + .name = "nss_cc_ubi32_utcm1_clk",
2416 + .parent_data = &(const struct clk_parent_data) {
2417 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2420 + .flags = CLK_SET_RATE_PARENT,
2421 + .ops = &clk_branch2_ops,
2426 +static struct clk_branch nss_cc_ubi32_utcm2_clk = {
2427 + .halt_reg = 0x28758,
2428 + .halt_check = BRANCH_HALT,
2430 + .enable_reg = 0x28758,
2431 + .enable_mask = BIT(0),
2432 + .hw.init = &(const struct clk_init_data) {
2433 + .name = "nss_cc_ubi32_utcm2_clk",
2434 + .parent_data = &(const struct clk_parent_data) {
2435 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2438 + .flags = CLK_SET_RATE_PARENT,
2439 + .ops = &clk_branch2_ops,
2444 +static struct clk_branch nss_cc_ubi32_utcm3_clk = {
2445 + .halt_reg = 0x28760,
2446 + .halt_check = BRANCH_HALT,
2448 + .enable_reg = 0x28760,
2449 + .enable_mask = BIT(0),
2450 + .hw.init = &(const struct clk_init_data) {
2451 + .name = "nss_cc_ubi32_utcm3_clk",
2452 + .parent_data = &(const struct clk_parent_data) {
2453 + .hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
2456 + .flags = CLK_SET_RATE_PARENT,
2457 + .ops = &clk_branch2_ops,
2462 +static struct clk_branch nss_cc_uniphy_port1_rx_clk = {
2463 + .halt_reg = 0x28904,
2464 + .halt_check = BRANCH_HALT,
2466 + .enable_reg = 0x28904,
2467 + .enable_mask = BIT(0),
2468 + .hw.init = &(const struct clk_init_data) {
2469 + .name = "nss_cc_uniphy_port1_rx_clk",
2470 + .parent_data = &(const struct clk_parent_data) {
2471 + .hw = &nss_cc_port1_rx_div_clk_src.clkr.hw,
2474 + .flags = CLK_SET_RATE_PARENT,
2475 + .ops = &clk_branch2_ops,
2480 +static struct clk_branch nss_cc_uniphy_port1_tx_clk = {
2481 + .halt_reg = 0x28908,
2482 + .halt_check = BRANCH_HALT,
2484 + .enable_reg = 0x28908,
2485 + .enable_mask = BIT(0),
2486 + .hw.init = &(const struct clk_init_data) {
2487 + .name = "nss_cc_uniphy_port1_tx_clk",
2488 + .parent_data = &(const struct clk_parent_data) {
2489 + .hw = &nss_cc_port1_tx_div_clk_src.clkr.hw,
2492 + .flags = CLK_SET_RATE_PARENT,
2493 + .ops = &clk_branch2_ops,
2498 +static struct clk_branch nss_cc_uniphy_port2_rx_clk = {
2499 + .halt_reg = 0x2890c,
2500 + .halt_check = BRANCH_HALT,
2502 + .enable_reg = 0x2890c,
2503 + .enable_mask = BIT(0),
2504 + .hw.init = &(const struct clk_init_data) {
2505 + .name = "nss_cc_uniphy_port2_rx_clk",
2506 + .parent_data = &(const struct clk_parent_data) {
2507 + .hw = &nss_cc_port2_rx_div_clk_src.clkr.hw,
2510 + .flags = CLK_SET_RATE_PARENT,
2511 + .ops = &clk_branch2_ops,
2516 +static struct clk_branch nss_cc_uniphy_port2_tx_clk = {
2517 + .halt_reg = 0x28910,
2518 + .halt_check = BRANCH_HALT,
2520 + .enable_reg = 0x28910,
2521 + .enable_mask = BIT(0),
2522 + .hw.init = &(const struct clk_init_data) {
2523 + .name = "nss_cc_uniphy_port2_tx_clk",
2524 + .parent_data = &(const struct clk_parent_data) {
2525 + .hw = &nss_cc_port2_tx_div_clk_src.clkr.hw,
2528 + .flags = CLK_SET_RATE_PARENT,
2529 + .ops = &clk_branch2_ops,
2534 +static struct clk_branch nss_cc_uniphy_port3_rx_clk = {
2535 + .halt_reg = 0x28914,
2536 + .halt_check = BRANCH_HALT,
2538 + .enable_reg = 0x28914,
2539 + .enable_mask = BIT(0),
2540 + .hw.init = &(const struct clk_init_data) {
2541 + .name = "nss_cc_uniphy_port3_rx_clk",
2542 + .parent_data = &(const struct clk_parent_data) {
2543 + .hw = &nss_cc_port3_rx_div_clk_src.clkr.hw,
2546 + .flags = CLK_SET_RATE_PARENT,
2547 + .ops = &clk_branch2_ops,
2552 +static struct clk_branch nss_cc_uniphy_port3_tx_clk = {
2553 + .halt_reg = 0x28918,
2554 + .halt_check = BRANCH_HALT,
2556 + .enable_reg = 0x28918,
2557 + .enable_mask = BIT(0),
2558 + .hw.init = &(const struct clk_init_data) {
2559 + .name = "nss_cc_uniphy_port3_tx_clk",
2560 + .parent_data = &(const struct clk_parent_data) {
2561 + .hw = &nss_cc_port3_tx_div_clk_src.clkr.hw,
2564 + .flags = CLK_SET_RATE_PARENT,
2565 + .ops = &clk_branch2_ops,
2570 +static struct clk_branch nss_cc_uniphy_port4_rx_clk = {
2571 + .halt_reg = 0x2891c,
2572 + .halt_check = BRANCH_HALT,
2574 + .enable_reg = 0x2891c,
2575 + .enable_mask = BIT(0),
2576 + .hw.init = &(const struct clk_init_data) {
2577 + .name = "nss_cc_uniphy_port4_rx_clk",
2578 + .parent_data = &(const struct clk_parent_data) {
2579 + .hw = &nss_cc_port4_rx_div_clk_src.clkr.hw,
2582 + .flags = CLK_SET_RATE_PARENT,
2583 + .ops = &clk_branch2_ops,
2588 +static struct clk_branch nss_cc_uniphy_port4_tx_clk = {
2589 + .halt_reg = 0x28920,
2590 + .halt_check = BRANCH_HALT,
2592 + .enable_reg = 0x28920,
2593 + .enable_mask = BIT(0),
2594 + .hw.init = &(const struct clk_init_data) {
2595 + .name = "nss_cc_uniphy_port4_tx_clk",
2596 + .parent_data = &(const struct clk_parent_data) {
2597 + .hw = &nss_cc_port4_tx_div_clk_src.clkr.hw,
2600 + .flags = CLK_SET_RATE_PARENT,
2601 + .ops = &clk_branch2_ops,
2606 +static struct clk_branch nss_cc_uniphy_port5_rx_clk = {
2607 + .halt_reg = 0x28924,
2608 + .halt_check = BRANCH_HALT,
2610 + .enable_reg = 0x28924,
2611 + .enable_mask = BIT(0),
2612 + .hw.init = &(const struct clk_init_data) {
2613 + .name = "nss_cc_uniphy_port5_rx_clk",
2614 + .parent_data = &(const struct clk_parent_data) {
2615 + .hw = &nss_cc_port5_rx_div_clk_src.clkr.hw,
2618 + .flags = CLK_SET_RATE_PARENT,
2619 + .ops = &clk_branch2_ops,
2624 +static struct clk_branch nss_cc_uniphy_port5_tx_clk = {
2625 + .halt_reg = 0x28928,
2626 + .halt_check = BRANCH_HALT,
2628 + .enable_reg = 0x28928,
2629 + .enable_mask = BIT(0),
2630 + .hw.init = &(const struct clk_init_data) {
2631 + .name = "nss_cc_uniphy_port5_tx_clk",
2632 + .parent_data = &(const struct clk_parent_data) {
2633 + .hw = &nss_cc_port5_tx_div_clk_src.clkr.hw,
2636 + .flags = CLK_SET_RATE_PARENT,
2637 + .ops = &clk_branch2_ops,
2642 +static struct clk_branch nss_cc_uniphy_port6_rx_clk = {
2643 + .halt_reg = 0x2892c,
2644 + .halt_check = BRANCH_HALT,
2646 + .enable_reg = 0x2892c,
2647 + .enable_mask = BIT(0),
2648 + .hw.init = &(const struct clk_init_data) {
2649 + .name = "nss_cc_uniphy_port6_rx_clk",
2650 + .parent_data = &(const struct clk_parent_data) {
2651 + .hw = &nss_cc_port6_rx_div_clk_src.clkr.hw,
2654 + .flags = CLK_SET_RATE_PARENT,
2655 + .ops = &clk_branch2_ops,
2660 +static struct clk_branch nss_cc_uniphy_port6_tx_clk = {
2661 + .halt_reg = 0x28930,
2662 + .halt_check = BRANCH_HALT,
2664 + .enable_reg = 0x28930,
2665 + .enable_mask = BIT(0),
2666 + .hw.init = &(const struct clk_init_data) {
2667 + .name = "nss_cc_uniphy_port6_tx_clk",
2668 + .parent_data = &(const struct clk_parent_data) {
2669 + .hw = &nss_cc_port6_tx_div_clk_src.clkr.hw,
2672 + .flags = CLK_SET_RATE_PARENT,
2673 + .ops = &clk_branch2_ops,
2678 +static struct clk_branch nss_cc_xgmac0_ptp_ref_clk = {
2679 + .halt_reg = 0x28264,
2680 + .halt_check = BRANCH_HALT,
2682 + .enable_reg = 0x28264,
2683 + .enable_mask = BIT(0),
2684 + .hw.init = &(const struct clk_init_data) {
2685 + .name = "nss_cc_xgmac0_ptp_ref_clk",
2686 + .parent_data = &(const struct clk_parent_data) {
2687 + .hw = &nss_cc_xgmac0_ptp_ref_div_clk_src.clkr.hw,
2690 + .flags = CLK_SET_RATE_PARENT,
2691 + .ops = &clk_branch2_ops,
2696 +static struct clk_branch nss_cc_xgmac1_ptp_ref_clk = {
2697 + .halt_reg = 0x28268,
2698 + .halt_check = BRANCH_HALT,
2700 + .enable_reg = 0x28268,
2701 + .enable_mask = BIT(0),
2702 + .hw.init = &(const struct clk_init_data) {
2703 + .name = "nss_cc_xgmac1_ptp_ref_clk",
2704 + .parent_data = &(const struct clk_parent_data) {
2705 + .hw = &nss_cc_xgmac1_ptp_ref_div_clk_src.clkr.hw,
2708 + .flags = CLK_SET_RATE_PARENT,
2709 + .ops = &clk_branch2_ops,
2714 +static struct clk_branch nss_cc_xgmac2_ptp_ref_clk = {
2715 + .halt_reg = 0x2826c,
2716 + .halt_check = BRANCH_HALT,
2718 + .enable_reg = 0x2826c,
2719 + .enable_mask = BIT(0),
2720 + .hw.init = &(const struct clk_init_data) {
2721 + .name = "nss_cc_xgmac2_ptp_ref_clk",
2722 + .parent_data = &(const struct clk_parent_data) {
2723 + .hw = &nss_cc_xgmac2_ptp_ref_div_clk_src.clkr.hw,
2726 + .flags = CLK_SET_RATE_PARENT,
2727 + .ops = &clk_branch2_ops,
2732 +static struct clk_branch nss_cc_xgmac3_ptp_ref_clk = {
2733 + .halt_reg = 0x28270,
2734 + .halt_check = BRANCH_HALT,
2736 + .enable_reg = 0x28270,
2737 + .enable_mask = BIT(0),
2738 + .hw.init = &(const struct clk_init_data) {
2739 + .name = "nss_cc_xgmac3_ptp_ref_clk",
2740 + .parent_data = &(const struct clk_parent_data) {
2741 + .hw = &nss_cc_xgmac3_ptp_ref_div_clk_src.clkr.hw,
2744 + .flags = CLK_SET_RATE_PARENT,
2745 + .ops = &clk_branch2_ops,
2750 +static struct clk_branch nss_cc_xgmac4_ptp_ref_clk = {
2751 + .halt_reg = 0x28274,
2752 + .halt_check = BRANCH_HALT,
2754 + .enable_reg = 0x28274,
2755 + .enable_mask = BIT(0),
2756 + .hw.init = &(const struct clk_init_data) {
2757 + .name = "nss_cc_xgmac4_ptp_ref_clk",
2758 + .parent_data = &(const struct clk_parent_data) {
2759 + .hw = &nss_cc_xgmac4_ptp_ref_div_clk_src.clkr.hw,
2762 + .flags = CLK_SET_RATE_PARENT,
2763 + .ops = &clk_branch2_ops,
2768 +static struct clk_branch nss_cc_xgmac5_ptp_ref_clk = {
2769 + .halt_reg = 0x28278,
2770 + .halt_check = BRANCH_HALT,
2772 + .enable_reg = 0x28278,
2773 + .enable_mask = BIT(0),
2774 + .hw.init = &(const struct clk_init_data) {
2775 + .name = "nss_cc_xgmac5_ptp_ref_clk",
2776 + .parent_data = &(const struct clk_parent_data) {
2777 + .hw = &nss_cc_xgmac5_ptp_ref_div_clk_src.clkr.hw,
2780 + .flags = CLK_SET_RATE_PARENT,
2781 + .ops = &clk_branch2_ops,
2786 +static struct clk_regmap *nss_cc_ipq9574_clocks[] = {
2787 + [NSS_CC_CE_APB_CLK] = &nss_cc_ce_apb_clk.clkr,
2788 + [NSS_CC_CE_AXI_CLK] = &nss_cc_ce_axi_clk.clkr,
2789 + [NSS_CC_CE_CLK_SRC] = &nss_cc_ce_clk_src.clkr,
2790 + [NSS_CC_CFG_CLK_SRC] = &nss_cc_cfg_clk_src.clkr,
2791 + [NSS_CC_CLC_AXI_CLK] = &nss_cc_clc_axi_clk.clkr,
2792 + [NSS_CC_CLC_CLK_SRC] = &nss_cc_clc_clk_src.clkr,
2793 + [NSS_CC_CRYPTO_CLK] = &nss_cc_crypto_clk.clkr,
2794 + [NSS_CC_CRYPTO_CLK_SRC] = &nss_cc_crypto_clk_src.clkr,
2795 + [NSS_CC_CRYPTO_PPE_CLK] = &nss_cc_crypto_ppe_clk.clkr,
2796 + [NSS_CC_HAQ_AHB_CLK] = &nss_cc_haq_ahb_clk.clkr,
2797 + [NSS_CC_HAQ_AXI_CLK] = &nss_cc_haq_axi_clk.clkr,
2798 + [NSS_CC_HAQ_CLK_SRC] = &nss_cc_haq_clk_src.clkr,
2799 + [NSS_CC_IMEM_AHB_CLK] = &nss_cc_imem_ahb_clk.clkr,
2800 + [NSS_CC_IMEM_CLK_SRC] = &nss_cc_imem_clk_src.clkr,
2801 + [NSS_CC_IMEM_QSB_CLK] = &nss_cc_imem_qsb_clk.clkr,
2802 + [NSS_CC_INT_CFG_CLK_SRC] = &nss_cc_int_cfg_clk_src.clkr,
2803 + [NSS_CC_NSS_CSR_CLK] = &nss_cc_nss_csr_clk.clkr,
2804 + [NSS_CC_NSSNOC_CE_APB_CLK] = &nss_cc_nssnoc_ce_apb_clk.clkr,
2805 + [NSS_CC_NSSNOC_CE_AXI_CLK] = &nss_cc_nssnoc_ce_axi_clk.clkr,
2806 + [NSS_CC_NSSNOC_CLC_AXI_CLK] = &nss_cc_nssnoc_clc_axi_clk.clkr,
2807 + [NSS_CC_NSSNOC_CRYPTO_CLK] = &nss_cc_nssnoc_crypto_clk.clkr,
2808 + [NSS_CC_NSSNOC_HAQ_AHB_CLK] = &nss_cc_nssnoc_haq_ahb_clk.clkr,
2809 + [NSS_CC_NSSNOC_HAQ_AXI_CLK] = &nss_cc_nssnoc_haq_axi_clk.clkr,
2810 + [NSS_CC_NSSNOC_IMEM_AHB_CLK] = &nss_cc_nssnoc_imem_ahb_clk.clkr,
2811 + [NSS_CC_NSSNOC_IMEM_QSB_CLK] = &nss_cc_nssnoc_imem_qsb_clk.clkr,
2812 + [NSS_CC_NSSNOC_NSS_CSR_CLK] = &nss_cc_nssnoc_nss_csr_clk.clkr,
2813 + [NSS_CC_NSSNOC_PPE_CFG_CLK] = &nss_cc_nssnoc_ppe_cfg_clk.clkr,
2814 + [NSS_CC_NSSNOC_PPE_CLK] = &nss_cc_nssnoc_ppe_clk.clkr,
2815 + [NSS_CC_NSSNOC_UBI32_AHB0_CLK] = &nss_cc_nssnoc_ubi32_ahb0_clk.clkr,
2816 + [NSS_CC_NSSNOC_UBI32_AXI0_CLK] = &nss_cc_nssnoc_ubi32_axi0_clk.clkr,
2817 + [NSS_CC_NSSNOC_UBI32_INT0_AHB_CLK] =
2818 + &nss_cc_nssnoc_ubi32_int0_ahb_clk.clkr,
2819 + [NSS_CC_NSSNOC_UBI32_NC_AXI0_1_CLK] =
2820 + &nss_cc_nssnoc_ubi32_nc_axi0_1_clk.clkr,
2821 + [NSS_CC_NSSNOC_UBI32_NC_AXI0_CLK] =
2822 + &nss_cc_nssnoc_ubi32_nc_axi0_clk.clkr,
2823 + [NSS_CC_PORT1_MAC_CLK] = &nss_cc_port1_mac_clk.clkr,
2824 + [NSS_CC_PORT1_RX_CLK] = &nss_cc_port1_rx_clk.clkr,
2825 + [NSS_CC_PORT1_RX_CLK_SRC] = &nss_cc_port1_rx_clk_src.clkr,
2826 + [NSS_CC_PORT1_RX_DIV_CLK_SRC] = &nss_cc_port1_rx_div_clk_src.clkr,
2827 + [NSS_CC_PORT1_TX_CLK] = &nss_cc_port1_tx_clk.clkr,
2828 + [NSS_CC_PORT1_TX_CLK_SRC] = &nss_cc_port1_tx_clk_src.clkr,
2829 + [NSS_CC_PORT1_TX_DIV_CLK_SRC] = &nss_cc_port1_tx_div_clk_src.clkr,
2830 + [NSS_CC_PORT2_MAC_CLK] = &nss_cc_port2_mac_clk.clkr,
2831 + [NSS_CC_PORT2_RX_CLK] = &nss_cc_port2_rx_clk.clkr,
2832 + [NSS_CC_PORT2_RX_CLK_SRC] = &nss_cc_port2_rx_clk_src.clkr,
2833 + [NSS_CC_PORT2_RX_DIV_CLK_SRC] = &nss_cc_port2_rx_div_clk_src.clkr,
2834 + [NSS_CC_PORT2_TX_CLK] = &nss_cc_port2_tx_clk.clkr,
2835 + [NSS_CC_PORT2_TX_CLK_SRC] = &nss_cc_port2_tx_clk_src.clkr,
2836 + [NSS_CC_PORT2_TX_DIV_CLK_SRC] = &nss_cc_port2_tx_div_clk_src.clkr,
2837 + [NSS_CC_PORT3_MAC_CLK] = &nss_cc_port3_mac_clk.clkr,
2838 + [NSS_CC_PORT3_RX_CLK] = &nss_cc_port3_rx_clk.clkr,
2839 + [NSS_CC_PORT3_RX_CLK_SRC] = &nss_cc_port3_rx_clk_src.clkr,
2840 + [NSS_CC_PORT3_RX_DIV_CLK_SRC] = &nss_cc_port3_rx_div_clk_src.clkr,
2841 + [NSS_CC_PORT3_TX_CLK] = &nss_cc_port3_tx_clk.clkr,
2842 + [NSS_CC_PORT3_TX_CLK_SRC] = &nss_cc_port3_tx_clk_src.clkr,
2843 + [NSS_CC_PORT3_TX_DIV_CLK_SRC] = &nss_cc_port3_tx_div_clk_src.clkr,
2844 + [NSS_CC_PORT4_MAC_CLK] = &nss_cc_port4_mac_clk.clkr,
2845 + [NSS_CC_PORT4_RX_CLK] = &nss_cc_port4_rx_clk.clkr,
2846 + [NSS_CC_PORT4_RX_CLK_SRC] = &nss_cc_port4_rx_clk_src.clkr,
2847 + [NSS_CC_PORT4_RX_DIV_CLK_SRC] = &nss_cc_port4_rx_div_clk_src.clkr,
2848 + [NSS_CC_PORT4_TX_CLK] = &nss_cc_port4_tx_clk.clkr,
2849 + [NSS_CC_PORT4_TX_CLK_SRC] = &nss_cc_port4_tx_clk_src.clkr,
2850 + [NSS_CC_PORT4_TX_DIV_CLK_SRC] = &nss_cc_port4_tx_div_clk_src.clkr,
2851 + [NSS_CC_PORT5_MAC_CLK] = &nss_cc_port5_mac_clk.clkr,
2852 + [NSS_CC_PORT5_RX_CLK] = &nss_cc_port5_rx_clk.clkr,
2853 + [NSS_CC_PORT5_RX_CLK_SRC] = &nss_cc_port5_rx_clk_src.clkr,
2854 + [NSS_CC_PORT5_RX_DIV_CLK_SRC] = &nss_cc_port5_rx_div_clk_src.clkr,
2855 + [NSS_CC_PORT5_TX_CLK] = &nss_cc_port5_tx_clk.clkr,
2856 + [NSS_CC_PORT5_TX_CLK_SRC] = &nss_cc_port5_tx_clk_src.clkr,
2857 + [NSS_CC_PORT5_TX_DIV_CLK_SRC] = &nss_cc_port5_tx_div_clk_src.clkr,
2858 + [NSS_CC_PORT6_MAC_CLK] = &nss_cc_port6_mac_clk.clkr,
2859 + [NSS_CC_PORT6_RX_CLK] = &nss_cc_port6_rx_clk.clkr,
2860 + [NSS_CC_PORT6_RX_CLK_SRC] = &nss_cc_port6_rx_clk_src.clkr,
2861 + [NSS_CC_PORT6_RX_DIV_CLK_SRC] = &nss_cc_port6_rx_div_clk_src.clkr,
2862 + [NSS_CC_PORT6_TX_CLK] = &nss_cc_port6_tx_clk.clkr,
2863 + [NSS_CC_PORT6_TX_CLK_SRC] = &nss_cc_port6_tx_clk_src.clkr,
2864 + [NSS_CC_PORT6_TX_DIV_CLK_SRC] = &nss_cc_port6_tx_div_clk_src.clkr,
2865 + [NSS_CC_PPE_CLK_SRC] = &nss_cc_ppe_clk_src.clkr,
2866 + [NSS_CC_PPE_EDMA_CFG_CLK] = &nss_cc_ppe_edma_cfg_clk.clkr,
2867 + [NSS_CC_PPE_EDMA_CLK] = &nss_cc_ppe_edma_clk.clkr,
2868 + [NSS_CC_PPE_SWITCH_BTQ_CLK] = &nss_cc_ppe_switch_btq_clk.clkr,
2869 + [NSS_CC_PPE_SWITCH_CFG_CLK] = &nss_cc_ppe_switch_cfg_clk.clkr,
2870 + [NSS_CC_PPE_SWITCH_CLK] = &nss_cc_ppe_switch_clk.clkr,
2871 + [NSS_CC_PPE_SWITCH_IPE_CLK] = &nss_cc_ppe_switch_ipe_clk.clkr,
2872 + [NSS_CC_UBI0_CLK_SRC] = &nss_cc_ubi0_clk_src.clkr,
2873 + [NSS_CC_UBI0_DIV_CLK_SRC] = &nss_cc_ubi0_div_clk_src.clkr,
2874 + [NSS_CC_UBI1_CLK_SRC] = &nss_cc_ubi1_clk_src.clkr,
2875 + [NSS_CC_UBI1_DIV_CLK_SRC] = &nss_cc_ubi1_div_clk_src.clkr,
2876 + [NSS_CC_UBI2_CLK_SRC] = &nss_cc_ubi2_clk_src.clkr,
2877 + [NSS_CC_UBI2_DIV_CLK_SRC] = &nss_cc_ubi2_div_clk_src.clkr,
2878 + [NSS_CC_UBI32_AHB0_CLK] = &nss_cc_ubi32_ahb0_clk.clkr,
2879 + [NSS_CC_UBI32_AHB1_CLK] = &nss_cc_ubi32_ahb1_clk.clkr,
2880 + [NSS_CC_UBI32_AHB2_CLK] = &nss_cc_ubi32_ahb2_clk.clkr,
2881 + [NSS_CC_UBI32_AHB3_CLK] = &nss_cc_ubi32_ahb3_clk.clkr,
2882 + [NSS_CC_UBI32_AXI0_CLK] = &nss_cc_ubi32_axi0_clk.clkr,
2883 + [NSS_CC_UBI32_AXI1_CLK] = &nss_cc_ubi32_axi1_clk.clkr,
2884 + [NSS_CC_UBI32_AXI2_CLK] = &nss_cc_ubi32_axi2_clk.clkr,
2885 + [NSS_CC_UBI32_AXI3_CLK] = &nss_cc_ubi32_axi3_clk.clkr,
2886 + [NSS_CC_UBI32_CORE0_CLK] = &nss_cc_ubi32_core0_clk.clkr,
2887 + [NSS_CC_UBI32_CORE1_CLK] = &nss_cc_ubi32_core1_clk.clkr,
2888 + [NSS_CC_UBI32_CORE2_CLK] = &nss_cc_ubi32_core2_clk.clkr,
2889 + [NSS_CC_UBI32_CORE3_CLK] = &nss_cc_ubi32_core3_clk.clkr,
2890 + [NSS_CC_UBI32_INTR0_AHB_CLK] = &nss_cc_ubi32_intr0_ahb_clk.clkr,
2891 + [NSS_CC_UBI32_INTR1_AHB_CLK] = &nss_cc_ubi32_intr1_ahb_clk.clkr,
2892 + [NSS_CC_UBI32_INTR2_AHB_CLK] = &nss_cc_ubi32_intr2_ahb_clk.clkr,
2893 + [NSS_CC_UBI32_INTR3_AHB_CLK] = &nss_cc_ubi32_intr3_ahb_clk.clkr,
2894 + [NSS_CC_UBI32_NC_AXI0_CLK] = &nss_cc_ubi32_nc_axi0_clk.clkr,
2895 + [NSS_CC_UBI32_NC_AXI1_CLK] = &nss_cc_ubi32_nc_axi1_clk.clkr,
2896 + [NSS_CC_UBI32_NC_AXI2_CLK] = &nss_cc_ubi32_nc_axi2_clk.clkr,
2897 + [NSS_CC_UBI32_NC_AXI3_CLK] = &nss_cc_ubi32_nc_axi3_clk.clkr,
2898 + [NSS_CC_UBI32_UTCM0_CLK] = &nss_cc_ubi32_utcm0_clk.clkr,
2899 + [NSS_CC_UBI32_UTCM1_CLK] = &nss_cc_ubi32_utcm1_clk.clkr,
2900 + [NSS_CC_UBI32_UTCM2_CLK] = &nss_cc_ubi32_utcm2_clk.clkr,
2901 + [NSS_CC_UBI32_UTCM3_CLK] = &nss_cc_ubi32_utcm3_clk.clkr,
2902 + [NSS_CC_UBI3_CLK_SRC] = &nss_cc_ubi3_clk_src.clkr,
2903 + [NSS_CC_UBI3_DIV_CLK_SRC] = &nss_cc_ubi3_div_clk_src.clkr,
2904 + [NSS_CC_UBI_AXI_CLK_SRC] = &nss_cc_ubi_axi_clk_src.clkr,
2905 + [NSS_CC_UBI_NC_AXI_BFDCD_CLK_SRC] =
2906 + &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr,
2907 + [NSS_CC_UNIPHY_PORT1_RX_CLK] = &nss_cc_uniphy_port1_rx_clk.clkr,
2908 + [NSS_CC_UNIPHY_PORT1_TX_CLK] = &nss_cc_uniphy_port1_tx_clk.clkr,
2909 + [NSS_CC_UNIPHY_PORT2_RX_CLK] = &nss_cc_uniphy_port2_rx_clk.clkr,
2910 + [NSS_CC_UNIPHY_PORT2_TX_CLK] = &nss_cc_uniphy_port2_tx_clk.clkr,
2911 + [NSS_CC_UNIPHY_PORT3_RX_CLK] = &nss_cc_uniphy_port3_rx_clk.clkr,
2912 + [NSS_CC_UNIPHY_PORT3_TX_CLK] = &nss_cc_uniphy_port3_tx_clk.clkr,
2913 + [NSS_CC_UNIPHY_PORT4_RX_CLK] = &nss_cc_uniphy_port4_rx_clk.clkr,
2914 + [NSS_CC_UNIPHY_PORT4_TX_CLK] = &nss_cc_uniphy_port4_tx_clk.clkr,
2915 + [NSS_CC_UNIPHY_PORT5_RX_CLK] = &nss_cc_uniphy_port5_rx_clk.clkr,
2916 + [NSS_CC_UNIPHY_PORT5_TX_CLK] = &nss_cc_uniphy_port5_tx_clk.clkr,
2917 + [NSS_CC_UNIPHY_PORT6_RX_CLK] = &nss_cc_uniphy_port6_rx_clk.clkr,
2918 + [NSS_CC_UNIPHY_PORT6_TX_CLK] = &nss_cc_uniphy_port6_tx_clk.clkr,
2919 + [NSS_CC_XGMAC0_PTP_REF_CLK] = &nss_cc_xgmac0_ptp_ref_clk.clkr,
2920 + [NSS_CC_XGMAC0_PTP_REF_DIV_CLK_SRC] =
2921 + &nss_cc_xgmac0_ptp_ref_div_clk_src.clkr,
2922 + [NSS_CC_XGMAC1_PTP_REF_CLK] = &nss_cc_xgmac1_ptp_ref_clk.clkr,
2923 + [NSS_CC_XGMAC1_PTP_REF_DIV_CLK_SRC] =
2924 + &nss_cc_xgmac1_ptp_ref_div_clk_src.clkr,
2925 + [NSS_CC_XGMAC2_PTP_REF_CLK] = &nss_cc_xgmac2_ptp_ref_clk.clkr,
2926 + [NSS_CC_XGMAC2_PTP_REF_DIV_CLK_SRC] =
2927 + &nss_cc_xgmac2_ptp_ref_div_clk_src.clkr,
2928 + [NSS_CC_XGMAC3_PTP_REF_CLK] = &nss_cc_xgmac3_ptp_ref_clk.clkr,
2929 + [NSS_CC_XGMAC3_PTP_REF_DIV_CLK_SRC] =
2930 + &nss_cc_xgmac3_ptp_ref_div_clk_src.clkr,
2931 + [NSS_CC_XGMAC4_PTP_REF_CLK] = &nss_cc_xgmac4_ptp_ref_clk.clkr,
2932 + [NSS_CC_XGMAC4_PTP_REF_DIV_CLK_SRC] =
2933 + &nss_cc_xgmac4_ptp_ref_div_clk_src.clkr,
2934 + [NSS_CC_XGMAC5_PTP_REF_CLK] = &nss_cc_xgmac5_ptp_ref_clk.clkr,
2935 + [NSS_CC_XGMAC5_PTP_REF_DIV_CLK_SRC] =
2936 + &nss_cc_xgmac5_ptp_ref_div_clk_src.clkr,
2937 + [UBI32_PLL] = &ubi32_pll.clkr,
2938 + [UBI32_PLL_MAIN] = &ubi32_pll_main.clkr,
2941 +static const struct qcom_reset_map nss_cc_ipq9574_resets[] = {
2942 + [NSS_CC_CE_BCR] = { 0x28400, 0 },
2943 + [NSS_CC_CLC_BCR] = { 0x28600, 0 },
2944 + [NSS_CC_EIP197_BCR] = { 0x16004, 0 },
2945 + [NSS_CC_HAQ_BCR] = { 0x28300, 0 },
2946 + [NSS_CC_IMEM_BCR] = { 0xe004, 0 },
2947 + [NSS_CC_MAC_BCR] = { 0x28100, 0 },
2948 + [NSS_CC_PPE_BCR] = { 0x28200, 0 },
2949 + [NSS_CC_UBI_BCR] = { 0x28700, 0 },
2950 + [NSS_CC_UNIPHY_BCR] = { 0x28900, 0 },
2951 + [UBI3_CLKRST_CLAMP_ENABLE] = { 0x28a04, 9 },
2952 + [UBI3_CORE_CLAMP_ENABLE] = { 0x28a04, 8 },
2953 + [UBI2_CLKRST_CLAMP_ENABLE] = { 0x28a04, 7 },
2954 + [UBI2_CORE_CLAMP_ENABLE] = { 0x28a04, 6 },
2955 + [UBI1_CLKRST_CLAMP_ENABLE] = { 0x28a04, 5 },
2956 + [UBI1_CORE_CLAMP_ENABLE] = { 0x28a04, 4 },
2957 + [UBI0_CLKRST_CLAMP_ENABLE] = { 0x28a04, 3 },
2958 + [UBI0_CORE_CLAMP_ENABLE] = { 0x28a04, 2 },
2959 + [NSSNOC_NSS_CSR_ARES] = { 0x28a04, 1 },
2960 + [NSS_CSR_ARES] = { 0x28a04, 0 },
2961 + [PPE_BTQ_ARES] = { 0x28a08, 20 },
2962 + [PPE_IPE_ARES] = { 0x28a08, 19 },
2963 + [PPE_ARES] = { 0x28a08, 18 },
2964 + [PPE_CFG_ARES] = { 0x28a08, 17 },
2965 + [PPE_EDMA_ARES] = { 0x28a08, 16 },
2966 + [PPE_EDMA_CFG_ARES] = { 0x28a08, 15 },
2967 + [CRY_PPE_ARES] = { 0x28a08, 14 },
2968 + [NSSNOC_PPE_ARES] = { 0x28a08, 13 },
2969 + [NSSNOC_PPE_CFG_ARES] = { 0x28a08, 12 },
2970 + [PORT1_MAC_ARES] = { 0x28a08, 11 },
2971 + [PORT2_MAC_ARES] = { 0x28a08, 10 },
2972 + [PORT3_MAC_ARES] = { 0x28a08, 9 },
2973 + [PORT4_MAC_ARES] = { 0x28a08, 8 },
2974 + [PORT5_MAC_ARES] = { 0x28a08, 7 },
2975 + [PORT6_MAC_ARES] = { 0x28a08, 6 },
2976 + [XGMAC0_PTP_REF_ARES] = { 0x28a08, 5 },
2977 + [XGMAC1_PTP_REF_ARES] = { 0x28a08, 4 },
2978 + [XGMAC2_PTP_REF_ARES] = { 0x28a08, 3 },
2979 + [XGMAC3_PTP_REF_ARES] = { 0x28a08, 2 },
2980 + [XGMAC4_PTP_REF_ARES] = { 0x28a08, 1 },
2981 + [XGMAC5_PTP_REF_ARES] = { 0x28a08, 0 },
2982 + [HAQ_AHB_ARES] = { 0x28a0c, 3 },
2983 + [HAQ_AXI_ARES] = { 0x28a0c, 2 },
2984 + [NSSNOC_HAQ_AHB_ARES] = { 0x28a0c, 1 },
2985 + [NSSNOC_HAQ_AXI_ARES] = { 0x28a0c, 0 },
2986 + [CE_APB_ARES] = { 0x28a10, 3 },
2987 + [CE_AXI_ARES] = { 0x28a10, 2 },
2988 + [NSSNOC_CE_APB_ARES] = { 0x28a10, 1 },
2989 + [NSSNOC_CE_AXI_ARES] = { 0x28a10, 0 },
2990 + [CRYPTO_ARES] = { 0x28a14, 1 },
2991 + [NSSNOC_CRYPTO_ARES] = { 0x28a14, 0 },
2992 + [NSSNOC_NC_AXI0_1_ARES] = { 0x28a1c, 28 },
2993 + [UBI0_CORE_ARES] = { 0x28a1c, 27 },
2994 + [UBI1_CORE_ARES] = { 0x28a1c, 26 },
2995 + [UBI2_CORE_ARES] = { 0x28a1c, 25 },
2996 + [UBI3_CORE_ARES] = { 0x28a1c, 24 },
2997 + [NC_AXI0_ARES] = { 0x28a1c, 23 },
2998 + [UTCM0_ARES] = { 0x28a1c, 22 },
2999 + [NC_AXI1_ARES] = { 0x28a1c, 21 },
3000 + [UTCM1_ARES] = { 0x28a1c, 20 },
3001 + [NC_AXI2_ARES] = { 0x28a1c, 19 },
3002 + [UTCM2_ARES] = { 0x28a1c, 18 },
3003 + [NC_AXI3_ARES] = { 0x28a1c, 17 },
3004 + [UTCM3_ARES] = { 0x28a1c, 16 },
3005 + [NSSNOC_NC_AXI0_ARES] = { 0x28a1c, 15 },
3006 + [AHB0_ARES] = { 0x28a1c, 14 },
3007 + [INTR0_AHB_ARES] = { 0x28a1c, 13 },
3008 + [AHB1_ARES] = { 0x28a1c, 12 },
3009 + [INTR1_AHB_ARES] = { 0x28a1c, 11 },
3010 + [AHB2_ARES] = { 0x28a1c, 10 },
3011 + [INTR2_AHB_ARES] = { 0x28a1c, 9 },
3012 + [AHB3_ARES] = { 0x28a1c, 8 },
3013 + [INTR3_AHB_ARES] = { 0x28a1c, 7 },
3014 + [NSSNOC_AHB0_ARES] = { 0x28a1c, 6 },
3015 + [NSSNOC_INT0_AHB_ARES] = { 0x28a1c, 5 },
3016 + [AXI0_ARES] = { 0x28a1c, 4 },
3017 + [AXI1_ARES] = { 0x28a1c, 3 },
3018 + [AXI2_ARES] = { 0x28a1c, 2 },
3019 + [AXI3_ARES] = { 0x28a1c, 1 },
3020 + [NSSNOC_AXI0_ARES] = { 0x28a1c, 0 },
3021 + [IMEM_QSB_ARES] = { 0x28a20, 3 },
3022 + [NSSNOC_IMEM_QSB_ARES] = { 0x28a20, 2 },
3023 + [IMEM_AHB_ARES] = { 0x28a20, 1 },
3024 + [NSSNOC_IMEM_AHB_ARES] = { 0x28a20, 0 },
3025 + [UNIPHY_PORT1_RX_ARES] = { 0x28a24, 23 },
3026 + [UNIPHY_PORT1_TX_ARES] = { 0x28a24, 22 },
3027 + [UNIPHY_PORT2_RX_ARES] = { 0x28a24, 21 },
3028 + [UNIPHY_PORT2_TX_ARES] = { 0x28a24, 20 },
3029 + [UNIPHY_PORT3_RX_ARES] = { 0x28a24, 19 },
3030 + [UNIPHY_PORT3_TX_ARES] = { 0x28a24, 18 },
3031 + [UNIPHY_PORT4_RX_ARES] = { 0x28a24, 17 },
3032 + [UNIPHY_PORT4_TX_ARES] = { 0x28a24, 16 },
3033 + [UNIPHY_PORT5_RX_ARES] = { 0x28a24, 15 },
3034 + [UNIPHY_PORT5_TX_ARES] = { 0x28a24, 14 },
3035 + [UNIPHY_PORT6_RX_ARES] = { 0x28a24, 13 },
3036 + [UNIPHY_PORT6_TX_ARES] = { 0x28a24, 12 },
3037 + [PORT1_RX_ARES] = { 0x28a24, 11 },
3038 + [PORT1_TX_ARES] = { 0x28a24, 10 },
3039 + [PORT2_RX_ARES] = { 0x28a24, 9 },
3040 + [PORT2_TX_ARES] = { 0x28a24, 8 },
3041 + [PORT3_RX_ARES] = { 0x28a24, 7 },
3042 + [PORT3_TX_ARES] = { 0x28a24, 6 },
3043 + [PORT4_RX_ARES] = { 0x28a24, 5 },
3044 + [PORT4_TX_ARES] = { 0x28a24, 4 },
3045 + [PORT5_RX_ARES] = { 0x28a24, 3 },
3046 + [PORT5_TX_ARES] = { 0x28a24, 2 },
3047 + [PORT6_RX_ARES] = { 0x28a24, 1 },
3048 + [PORT6_TX_ARES] = { 0x28a24, 0 },
3049 + [PPE_FULL_RESET] = { .reg = 0x28a08, .bitmask = GENMASK(20, 17) },
3050 + [UNIPHY0_SOFT_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(23, 14) },
3051 + [UNIPHY1_SOFT_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(15, 14) },
3052 + [UNIPHY2_SOFT_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(13, 12) },
3053 + [UNIPHY_PORT1_ARES] = { .reg = 0x28a24, .bitmask = GENMASK(23, 22) },
3054 + [UNIPHY_PORT2_ARES] = { .reg = 0x28a24, .bitmask = GENMASK(21, 20) },
3055 + [UNIPHY_PORT3_ARES] = { .reg = 0x28a24, .bitmask = GENMASK(19, 18) },
3056 + [UNIPHY_PORT4_ARES] = { .reg = 0x28a24, .bitmask = GENMASK(17, 16) },
3057 + [UNIPHY_PORT5_ARES] = { .reg = 0x28a24, .bitmask = GENMASK(15, 14) },
3058 + [UNIPHY_PORT6_ARES] = { .reg = 0x28a24, .bitmask = GENMASK(13, 12) },
3059 + [NSSPORT1_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(11, 10) },
3060 + [NSSPORT2_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(9, 8) },
3061 + [NSSPORT3_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(7, 6) },
3062 + [NSSPORT4_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(5, 4) },
3063 + [NSSPORT5_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(3, 2) },
3064 + [NSSPORT6_RESET] = { .reg = 0x28a24, .bitmask = GENMASK(1, 0) },
3065 + [EDMA_HW_RESET] = { .reg = 0x28a08, .bitmask = GENMASK(16, 15) },
3068 +static const struct regmap_config nss_cc_ipq9574_regmap_config = {
3072 + .max_register = 0x28a34,
3076 +static struct qcom_icc_hws_data icc_ipq9574_nss_hws[] = {
3077 + { MASTER_NSSNOC_PPE, SLAVE_NSSNOC_PPE, NSS_CC_NSSNOC_PPE_CLK },
3078 + { MASTER_NSSNOC_PPE_CFG, SLAVE_NSSNOC_PPE_CFG, NSS_CC_NSSNOC_PPE_CFG_CLK },
3079 + { MASTER_NSSNOC_NSS_CSR, SLAVE_NSSNOC_NSS_CSR, NSS_CC_NSSNOC_NSS_CSR_CLK },
3080 + { MASTER_NSSNOC_IMEM_QSB, SLAVE_NSSNOC_IMEM_QSB, NSS_CC_NSSNOC_IMEM_QSB_CLK },
3081 + { MASTER_NSSNOC_IMEM_AHB, SLAVE_NSSNOC_IMEM_AHB, NSS_CC_NSSNOC_IMEM_AHB_CLK },
3084 +#define IPQ_NSSCC_ID (9574 * 2) /* some unique value */
3086 +static const struct qcom_cc_desc nss_cc_ipq9574_desc = {
3087 + .config = &nss_cc_ipq9574_regmap_config,
3088 + .clks = nss_cc_ipq9574_clocks,
3089 + .num_clks = ARRAY_SIZE(nss_cc_ipq9574_clocks),
3090 + .resets = nss_cc_ipq9574_resets,
3091 + .num_resets = ARRAY_SIZE(nss_cc_ipq9574_resets),
3092 + .icc_hws = icc_ipq9574_nss_hws,
3093 + .num_icc_hws = ARRAY_SIZE(icc_ipq9574_nss_hws),
3094 + .icc_first_node_id = IPQ_NSSCC_ID,
3097 +static const struct of_device_id nss_cc_ipq9574_match_table[] = {
3098 + { .compatible = "qcom,ipq9574-nsscc" },
3101 +MODULE_DEVICE_TABLE(of, nss_cc_ipq9574_match_table);
3103 +static int nss_cc_ipq9574_probe(struct platform_device *pdev)
3105 + struct regmap *regmap;
3107 + regmap = qcom_cc_map(pdev, &nss_cc_ipq9574_desc);
3108 + if (IS_ERR(regmap))
3109 + return PTR_ERR(regmap);
3111 + clk_alpha_pll_configure(&ubi32_pll_main, regmap, &ubi32_pll_config);
3113 + return qcom_cc_really_probe(&pdev->dev, &nss_cc_ipq9574_desc, regmap);
3116 +static struct platform_driver nss_cc_ipq9574_driver = {
3117 + .probe = nss_cc_ipq9574_probe,
3119 + .name = "qcom,nsscc-ipq9574",
3120 + .of_match_table = nss_cc_ipq9574_match_table,
3121 + .sync_state = icc_sync_state,
3125 +module_platform_driver(nss_cc_ipq9574_driver);
3127 +MODULE_DESCRIPTION("QTI NSS_CC IPQ9574 Driver");
3128 +MODULE_LICENSE("GPL");