1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved.
6 #include <linux/clk-provider.h>
7 #include <linux/mod_devicetable.h>
8 #include <linux/module.h>
9 #include <linux/platform_device.h>
10 #include <linux/regmap.h>
12 #include <dt-bindings/clock/qcom,qdu1000-ecpricc.h>
14 #include "clk-alpha-pll.h"
15 #include "clk-branch.h"
17 #include "clk-regmap.h"
18 #include "clk-regmap-divider.h"
19 #include "clk-regmap-mux.h"
25 DT_GCC_ECPRI_CC_GPLL0_OUT_MAIN
,
26 DT_GCC_ECPRI_CC_GPLL1_OUT_EVEN
,
27 DT_GCC_ECPRI_CC_GPLL2_OUT_MAIN
,
28 DT_GCC_ECPRI_CC_GPLL3_OUT_MAIN
,
29 DT_GCC_ECPRI_CC_GPLL4_OUT_MAIN
,
30 DT_GCC_ECPRI_CC_GPLL5_OUT_EVEN
,
35 P_ECPRI_CC_PLL0_OUT_MAIN
,
36 P_ECPRI_CC_PLL1_OUT_MAIN
,
37 P_GCC_ECPRI_CC_GPLL0_OUT_MAIN
,
38 P_GCC_ECPRI_CC_GPLL1_OUT_EVEN
,
39 P_GCC_ECPRI_CC_GPLL2_OUT_MAIN
,
40 P_GCC_ECPRI_CC_GPLL3_OUT_MAIN
,
41 P_GCC_ECPRI_CC_GPLL4_OUT_MAIN
,
42 P_GCC_ECPRI_CC_GPLL5_OUT_EVEN
,
45 static const struct pll_vco lucid_evo_vco
[] = {
46 { 249600000, 2020000000, 0 },
49 /* 700 MHz configuration */
50 static const struct alpha_pll_config ecpri_cc_pll0_config
= {
53 .config_ctl_val
= 0x20485699,
54 .config_ctl_hi_val
= 0x00182261,
55 .config_ctl_hi1_val
= 0x32aa299c,
56 .user_ctl_val
= 0x00000000,
57 .user_ctl_hi_val
= 0x00000805,
60 static struct clk_alpha_pll ecpri_cc_pll0
= {
62 .vco_table
= lucid_evo_vco
,
63 .num_vco
= ARRAY_SIZE(lucid_evo_vco
),
64 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_EVO
],
67 .enable_mask
= BIT(0),
68 .hw
.init
= &(const struct clk_init_data
) {
69 .name
= "ecpri_cc_pll0",
70 .parent_data
= &(const struct clk_parent_data
) {
74 .ops
= &clk_alpha_pll_fixed_lucid_evo_ops
,
79 /* 806 MHz configuration */
80 static const struct alpha_pll_config ecpri_cc_pll1_config
= {
83 .config_ctl_val
= 0x20485699,
84 .config_ctl_hi_val
= 0x00182261,
85 .config_ctl_hi1_val
= 0x32aa299c,
86 .user_ctl_val
= 0x00000000,
87 .user_ctl_hi_val
= 0x00000805,
90 static struct clk_alpha_pll ecpri_cc_pll1
= {
92 .vco_table
= lucid_evo_vco
,
93 .num_vco
= ARRAY_SIZE(lucid_evo_vco
),
94 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_EVO
],
97 .enable_mask
= BIT(1),
98 .hw
.init
= &(const struct clk_init_data
) {
99 .name
= "ecpri_cc_pll1",
100 .parent_data
= &(const struct clk_parent_data
) {
104 .ops
= &clk_alpha_pll_fixed_lucid_evo_ops
,
109 static const struct parent_map ecpri_cc_parent_map_0
[] = {
111 { P_GCC_ECPRI_CC_GPLL0_OUT_MAIN
, 1 },
112 { P_GCC_ECPRI_CC_GPLL2_OUT_MAIN
, 2 },
113 { P_GCC_ECPRI_CC_GPLL5_OUT_EVEN
, 3 },
114 { P_ECPRI_CC_PLL1_OUT_MAIN
, 4 },
115 { P_GCC_ECPRI_CC_GPLL4_OUT_MAIN
, 5 },
116 { P_ECPRI_CC_PLL0_OUT_MAIN
, 6 },
119 static const struct clk_parent_data ecpri_cc_parent_data_0
[] = {
120 { .index
= DT_BI_TCXO
},
121 { .index
= DT_GCC_ECPRI_CC_GPLL0_OUT_MAIN
},
122 { .index
= DT_GCC_ECPRI_CC_GPLL2_OUT_MAIN
},
123 { .index
= DT_GCC_ECPRI_CC_GPLL5_OUT_EVEN
},
124 { .hw
= &ecpri_cc_pll1
.clkr
.hw
},
125 { .index
= DT_GCC_ECPRI_CC_GPLL4_OUT_MAIN
},
126 { .hw
= &ecpri_cc_pll0
.clkr
.hw
},
129 static const struct parent_map ecpri_cc_parent_map_1
[] = {
131 { P_GCC_ECPRI_CC_GPLL0_OUT_MAIN
, 1 },
132 { P_GCC_ECPRI_CC_GPLL1_OUT_EVEN
, 2 },
133 { P_GCC_ECPRI_CC_GPLL3_OUT_MAIN
, 3 },
134 { P_ECPRI_CC_PLL1_OUT_MAIN
, 4 },
135 { P_GCC_ECPRI_CC_GPLL4_OUT_MAIN
, 5 },
136 { P_ECPRI_CC_PLL0_OUT_MAIN
, 6 },
139 static const struct clk_parent_data ecpri_cc_parent_data_1
[] = {
140 { .index
= DT_BI_TCXO
},
141 { .index
= DT_GCC_ECPRI_CC_GPLL0_OUT_MAIN
},
142 { .index
= DT_GCC_ECPRI_CC_GPLL1_OUT_EVEN
},
143 { .index
= DT_GCC_ECPRI_CC_GPLL3_OUT_MAIN
},
144 { .hw
= &ecpri_cc_pll1
.clkr
.hw
},
145 { .index
= DT_GCC_ECPRI_CC_GPLL4_OUT_MAIN
},
146 { .hw
= &ecpri_cc_pll0
.clkr
.hw
},
149 static const struct parent_map ecpri_cc_parent_map_2
[] = {
151 { P_GCC_ECPRI_CC_GPLL0_OUT_MAIN
, 1 },
152 { P_GCC_ECPRI_CC_GPLL5_OUT_EVEN
, 3 },
153 { P_ECPRI_CC_PLL1_OUT_MAIN
, 4 },
154 { P_GCC_ECPRI_CC_GPLL4_OUT_MAIN
, 5 },
155 { P_ECPRI_CC_PLL0_OUT_MAIN
, 6 },
158 static const struct clk_parent_data ecpri_cc_parent_data_2
[] = {
159 { .index
= DT_BI_TCXO
},
160 { .index
= DT_GCC_ECPRI_CC_GPLL0_OUT_MAIN
},
161 { .index
= DT_GCC_ECPRI_CC_GPLL5_OUT_EVEN
},
162 { .hw
= &ecpri_cc_pll1
.clkr
.hw
},
163 { .index
= DT_GCC_ECPRI_CC_GPLL4_OUT_MAIN
},
164 { .hw
= &ecpri_cc_pll0
.clkr
.hw
},
167 static const struct freq_tbl ftbl_ecpri_cc_ecpri_clk_src
[] = {
168 F(466500000, P_GCC_ECPRI_CC_GPLL5_OUT_EVEN
, 1, 0, 0),
172 static struct clk_rcg2 ecpri_cc_ecpri_clk_src
= {
176 .parent_map
= ecpri_cc_parent_map_2
,
177 .freq_tbl
= ftbl_ecpri_cc_ecpri_clk_src
,
178 .clkr
.hw
.init
= &(const struct clk_init_data
) {
179 .name
= "ecpri_cc_ecpri_clk_src",
180 .parent_data
= ecpri_cc_parent_data_2
,
181 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_2
),
182 .ops
= &clk_rcg2_shared_ops
,
186 static const struct freq_tbl ftbl_ecpri_cc_ecpri_dma_clk_src
[] = {
187 F(466500000, P_GCC_ECPRI_CC_GPLL5_OUT_EVEN
, 1, 0, 0),
188 F(500000000, P_GCC_ECPRI_CC_GPLL2_OUT_MAIN
, 1, 0, 0),
192 static struct clk_rcg2 ecpri_cc_ecpri_dma_clk_src
= {
196 .parent_map
= ecpri_cc_parent_map_0
,
197 .freq_tbl
= ftbl_ecpri_cc_ecpri_dma_clk_src
,
198 .clkr
.hw
.init
= &(const struct clk_init_data
) {
199 .name
= "ecpri_cc_ecpri_dma_clk_src",
200 .parent_data
= ecpri_cc_parent_data_0
,
201 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_0
),
202 .ops
= &clk_rcg2_shared_ops
,
206 static const struct freq_tbl ftbl_ecpri_cc_ecpri_fast_clk_src
[] = {
207 F(500000000, P_GCC_ECPRI_CC_GPLL2_OUT_MAIN
, 1, 0, 0),
208 F(600000000, P_GCC_ECPRI_CC_GPLL0_OUT_MAIN
, 1, 0, 0),
212 static struct clk_rcg2 ecpri_cc_ecpri_fast_clk_src
= {
216 .parent_map
= ecpri_cc_parent_map_0
,
217 .freq_tbl
= ftbl_ecpri_cc_ecpri_fast_clk_src
,
218 .clkr
.hw
.init
= &(const struct clk_init_data
) {
219 .name
= "ecpri_cc_ecpri_fast_clk_src",
220 .parent_data
= ecpri_cc_parent_data_0
,
221 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_0
),
222 .ops
= &clk_rcg2_shared_ops
,
226 static const struct freq_tbl ftbl_ecpri_cc_ecpri_oran_clk_src
[] = {
227 F(500000000, P_GCC_ECPRI_CC_GPLL2_OUT_MAIN
, 1, 0, 0),
231 static struct clk_rcg2 ecpri_cc_ecpri_oran_clk_src
= {
235 .parent_map
= ecpri_cc_parent_map_0
,
236 .freq_tbl
= ftbl_ecpri_cc_ecpri_oran_clk_src
,
237 .clkr
.hw
.init
= &(const struct clk_init_data
) {
238 .name
= "ecpri_cc_ecpri_oran_clk_src",
239 .parent_data
= ecpri_cc_parent_data_0
,
240 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_0
),
241 .ops
= &clk_rcg2_shared_ops
,
245 static const struct freq_tbl ftbl_ecpri_cc_eth_100g_c2c0_hm_ff_clk_src
[] = {
246 F(201500000, P_ECPRI_CC_PLL1_OUT_MAIN
, 4, 0, 0),
247 F(403000000, P_ECPRI_CC_PLL1_OUT_MAIN
, 2, 0, 0),
248 F(466500000, P_GCC_ECPRI_CC_GPLL5_OUT_EVEN
, 1, 0, 0),
252 static struct clk_rcg2 ecpri_cc_eth_100g_c2c0_hm_ff_clk_src
= {
256 .parent_map
= ecpri_cc_parent_map_0
,
257 .freq_tbl
= ftbl_ecpri_cc_eth_100g_c2c0_hm_ff_clk_src
,
258 .clkr
.hw
.init
= &(const struct clk_init_data
) {
259 .name
= "ecpri_cc_eth_100g_c2c0_hm_ff_clk_src",
260 .parent_data
= ecpri_cc_parent_data_0
,
261 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_0
),
262 .ops
= &clk_rcg2_shared_ops
,
266 static const struct freq_tbl ftbl_ecpri_cc_eth_100g_c2c_hm_macsec_clk_src
[] = {
267 F(100000000, P_GCC_ECPRI_CC_GPLL0_OUT_MAIN
, 6, 0, 0),
268 F(200000000, P_GCC_ECPRI_CC_GPLL0_OUT_MAIN
, 3, 0, 0),
272 static struct clk_rcg2 ecpri_cc_eth_100g_c2c_hm_macsec_clk_src
= {
276 .parent_map
= ecpri_cc_parent_map_0
,
277 .freq_tbl
= ftbl_ecpri_cc_eth_100g_c2c_hm_macsec_clk_src
,
278 .clkr
.hw
.init
= &(const struct clk_init_data
) {
279 .name
= "ecpri_cc_eth_100g_c2c_hm_macsec_clk_src",
280 .parent_data
= ecpri_cc_parent_data_0
,
281 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_0
),
282 .ops
= &clk_rcg2_shared_ops
,
286 static struct clk_rcg2 ecpri_cc_eth_100g_dbg_c2c_hm_ff_clk_src
= {
290 .parent_map
= ecpri_cc_parent_map_0
,
291 .freq_tbl
= ftbl_ecpri_cc_eth_100g_c2c0_hm_ff_clk_src
,
292 .clkr
.hw
.init
= &(const struct clk_init_data
) {
293 .name
= "ecpri_cc_eth_100g_dbg_c2c_hm_ff_clk_src",
294 .parent_data
= ecpri_cc_parent_data_0
,
295 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_0
),
296 .ops
= &clk_rcg2_shared_ops
,
300 static struct clk_rcg2 ecpri_cc_eth_100g_fh0_hm_ff_clk_src
= {
304 .parent_map
= ecpri_cc_parent_map_0
,
305 .freq_tbl
= ftbl_ecpri_cc_eth_100g_c2c0_hm_ff_clk_src
,
306 .clkr
.hw
.init
= &(const struct clk_init_data
) {
307 .name
= "ecpri_cc_eth_100g_fh0_hm_ff_clk_src",
308 .parent_data
= ecpri_cc_parent_data_0
,
309 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_0
),
310 .ops
= &clk_rcg2_shared_ops
,
314 static struct clk_rcg2 ecpri_cc_eth_100g_fh0_macsec_clk_src
= {
318 .parent_map
= ecpri_cc_parent_map_0
,
319 .freq_tbl
= ftbl_ecpri_cc_eth_100g_c2c_hm_macsec_clk_src
,
320 .clkr
.hw
.init
= &(const struct clk_init_data
) {
321 .name
= "ecpri_cc_eth_100g_fh0_macsec_clk_src",
322 .parent_data
= ecpri_cc_parent_data_0
,
323 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_0
),
324 .ops
= &clk_rcg2_shared_ops
,
328 static struct clk_rcg2 ecpri_cc_eth_100g_fh1_hm_ff_clk_src
= {
332 .parent_map
= ecpri_cc_parent_map_0
,
333 .freq_tbl
= ftbl_ecpri_cc_ecpri_clk_src
,
334 .clkr
.hw
.init
= &(const struct clk_init_data
) {
335 .name
= "ecpri_cc_eth_100g_fh1_hm_ff_clk_src",
336 .parent_data
= ecpri_cc_parent_data_0
,
337 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_0
),
338 .ops
= &clk_rcg2_shared_ops
,
342 static const struct freq_tbl ftbl_ecpri_cc_eth_100g_fh1_macsec_clk_src
[] = {
343 F(200000000, P_GCC_ECPRI_CC_GPLL0_OUT_MAIN
, 3, 0, 0),
347 static struct clk_rcg2 ecpri_cc_eth_100g_fh1_macsec_clk_src
= {
351 .parent_map
= ecpri_cc_parent_map_0
,
352 .freq_tbl
= ftbl_ecpri_cc_eth_100g_fh1_macsec_clk_src
,
353 .clkr
.hw
.init
= &(const struct clk_init_data
) {
354 .name
= "ecpri_cc_eth_100g_fh1_macsec_clk_src",
355 .parent_data
= ecpri_cc_parent_data_0
,
356 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_0
),
357 .ops
= &clk_rcg2_shared_ops
,
361 static struct clk_rcg2 ecpri_cc_eth_100g_fh2_hm_ff_clk_src
= {
365 .parent_map
= ecpri_cc_parent_map_0
,
366 .freq_tbl
= ftbl_ecpri_cc_eth_100g_c2c0_hm_ff_clk_src
,
367 .clkr
.hw
.init
= &(const struct clk_init_data
) {
368 .name
= "ecpri_cc_eth_100g_fh2_hm_ff_clk_src",
369 .parent_data
= ecpri_cc_parent_data_0
,
370 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_0
),
371 .ops
= &clk_rcg2_shared_ops
,
375 static struct clk_rcg2 ecpri_cc_eth_100g_fh2_macsec_clk_src
= {
379 .parent_map
= ecpri_cc_parent_map_0
,
380 .freq_tbl
= ftbl_ecpri_cc_eth_100g_fh1_macsec_clk_src
,
381 .clkr
.hw
.init
= &(const struct clk_init_data
) {
382 .name
= "ecpri_cc_eth_100g_fh2_macsec_clk_src",
383 .parent_data
= ecpri_cc_parent_data_0
,
384 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_0
),
385 .ops
= &clk_rcg2_shared_ops
,
389 static const struct freq_tbl ftbl_ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src
[] = {
390 F(533000000, P_GCC_ECPRI_CC_GPLL1_OUT_EVEN
, 1, 0, 0),
391 F(700000000, P_GCC_ECPRI_CC_GPLL3_OUT_MAIN
, 1, 0, 0),
392 F(806000000, P_GCC_ECPRI_CC_GPLL4_OUT_MAIN
, 1, 0, 0),
396 static struct clk_rcg2 ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src
= {
400 .parent_map
= ecpri_cc_parent_map_1
,
401 .freq_tbl
= ftbl_ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src
,
402 .clkr
.hw
.init
= &(const struct clk_init_data
) {
403 .name
= "ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src",
404 .parent_data
= ecpri_cc_parent_data_1
,
405 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_1
),
406 .ops
= &clk_rcg2_shared_ops
,
410 static struct clk_rcg2 ecpri_cc_eth_100g_mac_dbg_c2c_hm_ref_clk_src
= {
414 .parent_map
= ecpri_cc_parent_map_1
,
415 .freq_tbl
= ftbl_ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src
,
416 .clkr
.hw
.init
= &(const struct clk_init_data
) {
417 .name
= "ecpri_cc_eth_100g_mac_dbg_c2c_hm_ref_clk_src",
418 .parent_data
= ecpri_cc_parent_data_1
,
419 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_1
),
420 .ops
= &clk_rcg2_shared_ops
,
424 static struct clk_rcg2 ecpri_cc_eth_100g_mac_fh0_hm_ref_clk_src
= {
428 .parent_map
= ecpri_cc_parent_map_1
,
429 .freq_tbl
= ftbl_ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src
,
430 .clkr
.hw
.init
= &(const struct clk_init_data
) {
431 .name
= "ecpri_cc_eth_100g_mac_fh0_hm_ref_clk_src",
432 .parent_data
= ecpri_cc_parent_data_1
,
433 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_1
),
434 .ops
= &clk_rcg2_shared_ops
,
438 static struct clk_rcg2 ecpri_cc_eth_100g_mac_fh1_hm_ref_clk_src
= {
442 .parent_map
= ecpri_cc_parent_map_1
,
443 .freq_tbl
= ftbl_ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src
,
444 .clkr
.hw
.init
= &(const struct clk_init_data
) {
445 .name
= "ecpri_cc_eth_100g_mac_fh1_hm_ref_clk_src",
446 .parent_data
= ecpri_cc_parent_data_1
,
447 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_1
),
448 .ops
= &clk_rcg2_shared_ops
,
452 static struct clk_rcg2 ecpri_cc_eth_100g_mac_fh2_hm_ref_clk_src
= {
456 .parent_map
= ecpri_cc_parent_map_1
,
457 .freq_tbl
= ftbl_ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src
,
458 .clkr
.hw
.init
= &(const struct clk_init_data
) {
459 .name
= "ecpri_cc_eth_100g_mac_fh2_hm_ref_clk_src",
460 .parent_data
= ecpri_cc_parent_data_1
,
461 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_1
),
462 .ops
= &clk_rcg2_shared_ops
,
466 static const struct freq_tbl ftbl_ecpri_cc_mss_emac_clk_src
[] = {
467 F(403000000, P_GCC_ECPRI_CC_GPLL4_OUT_MAIN
, 2, 0, 0),
471 static struct clk_rcg2 ecpri_cc_mss_emac_clk_src
= {
475 .parent_map
= ecpri_cc_parent_map_2
,
476 .freq_tbl
= ftbl_ecpri_cc_mss_emac_clk_src
,
477 .clkr
.hw
.init
= &(const struct clk_init_data
) {
478 .name
= "ecpri_cc_mss_emac_clk_src",
479 .parent_data
= ecpri_cc_parent_data_2
,
480 .num_parents
= ARRAY_SIZE(ecpri_cc_parent_data_2
),
481 .ops
= &clk_rcg2_shared_ops
,
485 static struct clk_regmap_div ecpri_cc_ecpri_fast_div2_clk_src
= {
489 .clkr
.hw
.init
= &(const struct clk_init_data
) {
490 .name
= "ecpri_cc_ecpri_fast_div2_clk_src",
491 .parent_hws
= (const struct clk_hw
*[]) {
492 &ecpri_cc_ecpri_fast_clk_src
.clkr
.hw
,
495 .flags
= CLK_SET_RATE_PARENT
,
496 .ops
= &clk_regmap_div_ro_ops
,
500 static struct clk_regmap_div ecpri_cc_eth_100g_c2c_hm_ff_0_div_clk_src
= {
504 .clkr
.hw
.init
= &(const struct clk_init_data
) {
505 .name
= "ecpri_cc_eth_100g_c2c_hm_ff_0_div_clk_src",
506 .parent_hws
= (const struct clk_hw
*[]) {
507 &ecpri_cc_eth_100g_c2c0_hm_ff_clk_src
.clkr
.hw
,
510 .flags
= CLK_SET_RATE_PARENT
,
511 .ops
= &clk_regmap_div_ro_ops
,
515 static struct clk_regmap_div ecpri_cc_eth_100g_c2c_hm_ff_1_div_clk_src
= {
519 .clkr
.hw
.init
= &(const struct clk_init_data
) {
520 .name
= "ecpri_cc_eth_100g_c2c_hm_ff_1_div_clk_src",
521 .parent_hws
= (const struct clk_hw
*[]) {
522 &ecpri_cc_eth_100g_c2c0_hm_ff_clk_src
.clkr
.hw
,
525 .flags
= CLK_SET_RATE_PARENT
,
526 .ops
= &clk_regmap_div_ro_ops
,
530 static struct clk_regmap_div ecpri_cc_eth_100g_dbg_c2c_hm_ff_0_div_clk_src
= {
534 .clkr
.hw
.init
= &(const struct clk_init_data
) {
535 .name
= "ecpri_cc_eth_100g_dbg_c2c_hm_ff_0_div_clk_src",
536 .parent_hws
= (const struct clk_hw
*[]) {
537 &ecpri_cc_eth_100g_dbg_c2c_hm_ff_clk_src
.clkr
.hw
,
540 .flags
= CLK_SET_RATE_PARENT
,
541 .ops
= &clk_regmap_div_ro_ops
,
545 static struct clk_regmap_div ecpri_cc_eth_100g_dbg_c2c_hm_ff_1_div_clk_src
= {
549 .clkr
.hw
.init
= &(const struct clk_init_data
) {
550 .name
= "ecpri_cc_eth_100g_dbg_c2c_hm_ff_1_div_clk_src",
551 .parent_hws
= (const struct clk_hw
*[]) {
552 &ecpri_cc_eth_100g_dbg_c2c_hm_ff_clk_src
.clkr
.hw
,
555 .flags
= CLK_SET_RATE_PARENT
,
556 .ops
= &clk_regmap_div_ro_ops
,
560 static struct clk_regmap_div ecpri_cc_eth_100g_fh_0_hm_ff_0_div_clk_src
= {
564 .clkr
.hw
.init
= &(const struct clk_init_data
) {
565 .name
= "ecpri_cc_eth_100g_fh_0_hm_ff_0_div_clk_src",
566 .parent_hws
= (const struct clk_hw
*[]) {
567 &ecpri_cc_eth_100g_fh0_hm_ff_clk_src
.clkr
.hw
,
570 .flags
= CLK_SET_RATE_PARENT
,
571 .ops
= &clk_regmap_div_ro_ops
,
575 static struct clk_regmap_div ecpri_cc_eth_100g_fh_0_hm_ff_1_div_clk_src
= {
579 .clkr
.hw
.init
= &(const struct clk_init_data
) {
580 .name
= "ecpri_cc_eth_100g_fh_0_hm_ff_1_div_clk_src",
581 .parent_hws
= (const struct clk_hw
*[]) {
582 &ecpri_cc_eth_100g_fh0_hm_ff_clk_src
.clkr
.hw
,
585 .flags
= CLK_SET_RATE_PARENT
,
586 .ops
= &clk_regmap_div_ro_ops
,
590 static struct clk_regmap_div ecpri_cc_eth_100g_fh_0_hm_ff_2_div_clk_src
= {
594 .clkr
.hw
.init
= &(const struct clk_init_data
) {
595 .name
= "ecpri_cc_eth_100g_fh_0_hm_ff_2_div_clk_src",
596 .parent_hws
= (const struct clk_hw
*[]) {
597 &ecpri_cc_eth_100g_fh0_hm_ff_clk_src
.clkr
.hw
,
600 .flags
= CLK_SET_RATE_PARENT
,
601 .ops
= &clk_regmap_div_ro_ops
,
605 static struct clk_regmap_div ecpri_cc_eth_100g_fh_0_hm_ff_3_div_clk_src
= {
609 .clkr
.hw
.init
= &(const struct clk_init_data
) {
610 .name
= "ecpri_cc_eth_100g_fh_0_hm_ff_3_div_clk_src",
611 .parent_hws
= (const struct clk_hw
*[]) {
612 &ecpri_cc_eth_100g_fh0_hm_ff_clk_src
.clkr
.hw
,
615 .flags
= CLK_SET_RATE_PARENT
,
616 .ops
= &clk_regmap_div_ro_ops
,
620 static struct clk_regmap_div ecpri_cc_eth_100g_fh_1_hm_ff_0_div_clk_src
= {
624 .clkr
.hw
.init
= &(const struct clk_init_data
) {
625 .name
= "ecpri_cc_eth_100g_fh_1_hm_ff_0_div_clk_src",
626 .parent_hws
= (const struct clk_hw
*[]) {
627 &ecpri_cc_eth_100g_fh1_hm_ff_clk_src
.clkr
.hw
,
630 .flags
= CLK_SET_RATE_PARENT
,
631 .ops
= &clk_regmap_div_ro_ops
,
635 static struct clk_regmap_div ecpri_cc_eth_100g_fh_1_hm_ff_1_div_clk_src
= {
639 .clkr
.hw
.init
= &(const struct clk_init_data
) {
640 .name
= "ecpri_cc_eth_100g_fh_1_hm_ff_1_div_clk_src",
641 .parent_hws
= (const struct clk_hw
*[]) {
642 &ecpri_cc_eth_100g_fh1_hm_ff_clk_src
.clkr
.hw
,
645 .flags
= CLK_SET_RATE_PARENT
,
646 .ops
= &clk_regmap_div_ro_ops
,
650 static struct clk_regmap_div ecpri_cc_eth_100g_fh_1_hm_ff_2_div_clk_src
= {
654 .clkr
.hw
.init
= &(const struct clk_init_data
) {
655 .name
= "ecpri_cc_eth_100g_fh_1_hm_ff_2_div_clk_src",
656 .parent_hws
= (const struct clk_hw
*[]) {
657 &ecpri_cc_eth_100g_fh1_hm_ff_clk_src
.clkr
.hw
,
660 .flags
= CLK_SET_RATE_PARENT
,
661 .ops
= &clk_regmap_div_ro_ops
,
665 static struct clk_regmap_div ecpri_cc_eth_100g_fh_1_hm_ff_3_div_clk_src
= {
669 .clkr
.hw
.init
= &(const struct clk_init_data
) {
670 .name
= "ecpri_cc_eth_100g_fh_1_hm_ff_3_div_clk_src",
671 .parent_hws
= (const struct clk_hw
*[]) {
672 &ecpri_cc_eth_100g_fh1_hm_ff_clk_src
.clkr
.hw
,
675 .flags
= CLK_SET_RATE_PARENT
,
676 .ops
= &clk_regmap_div_ro_ops
,
680 static struct clk_regmap_div ecpri_cc_eth_100g_fh_2_hm_ff_0_div_clk_src
= {
684 .clkr
.hw
.init
= &(const struct clk_init_data
) {
685 .name
= "ecpri_cc_eth_100g_fh_2_hm_ff_0_div_clk_src",
686 .parent_hws
= (const struct clk_hw
*[]) {
687 &ecpri_cc_eth_100g_fh2_hm_ff_clk_src
.clkr
.hw
,
690 .flags
= CLK_SET_RATE_PARENT
,
691 .ops
= &clk_regmap_div_ro_ops
,
695 static struct clk_regmap_div ecpri_cc_eth_100g_fh_2_hm_ff_1_div_clk_src
= {
699 .clkr
.hw
.init
= &(const struct clk_init_data
) {
700 .name
= "ecpri_cc_eth_100g_fh_2_hm_ff_1_div_clk_src",
701 .parent_hws
= (const struct clk_hw
*[]) {
702 &ecpri_cc_eth_100g_fh2_hm_ff_clk_src
.clkr
.hw
,
705 .flags
= CLK_SET_RATE_PARENT
,
706 .ops
= &clk_regmap_div_ro_ops
,
710 static struct clk_regmap_div ecpri_cc_eth_100g_fh_2_hm_ff_2_div_clk_src
= {
714 .clkr
.hw
.init
= &(const struct clk_init_data
) {
715 .name
= "ecpri_cc_eth_100g_fh_2_hm_ff_2_div_clk_src",
716 .parent_hws
= (const struct clk_hw
*[]) {
717 &ecpri_cc_eth_100g_fh2_hm_ff_clk_src
.clkr
.hw
,
720 .flags
= CLK_SET_RATE_PARENT
,
721 .ops
= &clk_regmap_div_ro_ops
,
725 static struct clk_regmap_div ecpri_cc_eth_100g_fh_2_hm_ff_3_div_clk_src
= {
729 .clkr
.hw
.init
= &(const struct clk_init_data
) {
730 .name
= "ecpri_cc_eth_100g_fh_2_hm_ff_3_div_clk_src",
731 .parent_hws
= (const struct clk_hw
*[]) {
732 &ecpri_cc_eth_100g_fh2_hm_ff_clk_src
.clkr
.hw
,
735 .flags
= CLK_SET_RATE_PARENT
,
736 .ops
= &clk_regmap_div_ro_ops
,
740 static struct clk_branch ecpri_cc_ecpri_cg_clk
= {
742 .halt_check
= BRANCH_HALT
,
744 .enable_reg
= 0x900c,
745 .enable_mask
= BIT(0),
746 .hw
.init
= &(const struct clk_init_data
) {
747 .name
= "ecpri_cc_ecpri_cg_clk",
748 .parent_hws
= (const struct clk_hw
*[]) {
749 &ecpri_cc_ecpri_clk_src
.clkr
.hw
,
752 .flags
= CLK_SET_RATE_PARENT
,
753 .ops
= &clk_branch2_ops
,
758 static struct clk_branch ecpri_cc_ecpri_dma_clk
= {
760 .halt_check
= BRANCH_HALT
,
762 .enable_reg
= 0x902c,
763 .enable_mask
= BIT(0),
764 .hw
.init
= &(const struct clk_init_data
) {
765 .name
= "ecpri_cc_ecpri_dma_clk",
766 .parent_hws
= (const struct clk_hw
*[]) {
767 &ecpri_cc_ecpri_dma_clk_src
.clkr
.hw
,
770 .flags
= CLK_SET_RATE_PARENT
,
771 .ops
= &clk_branch2_ops
,
776 static struct clk_branch ecpri_cc_ecpri_dma_noc_clk
= {
778 .halt_check
= BRANCH_HALT
,
780 .enable_reg
= 0xf004,
781 .enable_mask
= BIT(0),
782 .hw
.init
= &(const struct clk_init_data
) {
783 .name
= "ecpri_cc_ecpri_dma_noc_clk",
784 .parent_hws
= (const struct clk_hw
*[]) {
785 &ecpri_cc_ecpri_dma_clk_src
.clkr
.hw
,
788 .flags
= CLK_SET_RATE_PARENT
,
789 .ops
= &clk_branch2_ops
,
794 static struct clk_branch ecpri_cc_ecpri_fast_clk
= {
796 .halt_check
= BRANCH_HALT
,
798 .enable_reg
= 0x9014,
799 .enable_mask
= BIT(0),
800 .hw
.init
= &(const struct clk_init_data
) {
801 .name
= "ecpri_cc_ecpri_fast_clk",
802 .parent_hws
= (const struct clk_hw
*[]) {
803 &ecpri_cc_ecpri_fast_clk_src
.clkr
.hw
,
806 .flags
= CLK_SET_RATE_PARENT
,
807 .ops
= &clk_branch2_ops
,
812 static struct clk_branch ecpri_cc_ecpri_fast_div2_clk
= {
814 .halt_check
= BRANCH_HALT
,
816 .enable_reg
= 0x901c,
817 .enable_mask
= BIT(0),
818 .hw
.init
= &(const struct clk_init_data
) {
819 .name
= "ecpri_cc_ecpri_fast_div2_clk",
820 .parent_hws
= (const struct clk_hw
*[]) {
821 &ecpri_cc_ecpri_fast_div2_clk_src
.clkr
.hw
,
824 .flags
= CLK_SET_RATE_PARENT
,
825 .ops
= &clk_branch2_ops
,
830 static struct clk_branch ecpri_cc_ecpri_fast_div2_noc_clk
= {
832 .halt_check
= BRANCH_HALT
,
834 .enable_reg
= 0xf008,
835 .enable_mask
= BIT(0),
836 .hw
.init
= &(const struct clk_init_data
) {
837 .name
= "ecpri_cc_ecpri_fast_div2_noc_clk",
838 .parent_hws
= (const struct clk_hw
*[]) {
839 &ecpri_cc_ecpri_fast_div2_clk_src
.clkr
.hw
,
842 .flags
= CLK_SET_RATE_PARENT
,
843 .ops
= &clk_branch2_ops
,
848 static struct clk_branch ecpri_cc_ecpri_fr_clk
= {
850 .halt_check
= BRANCH_HALT
,
852 .enable_reg
= 0x9004,
853 .enable_mask
= BIT(0),
854 .hw
.init
= &(const struct clk_init_data
) {
855 .name
= "ecpri_cc_ecpri_fr_clk",
856 .parent_hws
= (const struct clk_hw
*[]) {
857 &ecpri_cc_ecpri_clk_src
.clkr
.hw
,
860 .flags
= CLK_SET_RATE_PARENT
,
861 .ops
= &clk_branch2_ops
,
866 static struct clk_branch ecpri_cc_ecpri_oran_div2_clk
= {
868 .halt_check
= BRANCH_HALT
,
870 .enable_reg
= 0x9024,
871 .enable_mask
= BIT(0),
872 .hw
.init
= &(const struct clk_init_data
) {
873 .name
= "ecpri_cc_ecpri_oran_div2_clk",
874 .parent_hws
= (const struct clk_hw
*[]) {
875 &ecpri_cc_ecpri_oran_clk_src
.clkr
.hw
,
878 .flags
= CLK_SET_RATE_PARENT
,
879 .ops
= &clk_branch2_ops
,
884 static struct clk_branch ecpri_cc_eth_100g_c2c0_udp_fifo_clk
= {
886 .halt_check
= BRANCH_HALT
,
888 .enable_reg
= 0x80cc,
889 .enable_mask
= BIT(0),
890 .hw
.init
= &(const struct clk_init_data
) {
891 .name
= "ecpri_cc_eth_100g_c2c0_udp_fifo_clk",
892 .parent_hws
= (const struct clk_hw
*[]) {
893 &ecpri_cc_ecpri_clk_src
.clkr
.hw
,
896 .flags
= CLK_SET_RATE_PARENT
,
897 .ops
= &clk_branch2_ops
,
902 static struct clk_branch ecpri_cc_eth_100g_c2c1_udp_fifo_clk
= {
904 .halt_check
= BRANCH_HALT
,
906 .enable_reg
= 0x80d0,
907 .enable_mask
= BIT(0),
908 .hw
.init
= &(const struct clk_init_data
) {
909 .name
= "ecpri_cc_eth_100g_c2c1_udp_fifo_clk",
910 .parent_hws
= (const struct clk_hw
*[]) {
911 &ecpri_cc_ecpri_clk_src
.clkr
.hw
,
914 .flags
= CLK_SET_RATE_PARENT
,
915 .ops
= &clk_branch2_ops
,
920 static struct clk_mem_branch ecpri_cc_eth_100g_c2c_0_hm_ff_0_clk
= {
921 .mem_enable_reg
= 0x8410,
922 .mem_ack_reg
= 0x8424,
923 .mem_enable_ack_mask
= BIT(0),
926 .halt_check
= BRANCH_HALT
,
928 .enable_reg
= 0x80b4,
929 .enable_mask
= BIT(0),
930 .hw
.init
= &(const struct clk_init_data
) {
931 .name
= "ecpri_cc_eth_100g_c2c_0_hm_ff_0_clk",
932 .parent_hws
= (const struct clk_hw
*[]) {
933 &ecpri_cc_eth_100g_c2c_hm_ff_0_div_clk_src
.clkr
.hw
,
936 .flags
= CLK_SET_RATE_PARENT
,
937 .ops
= &clk_branch2_mem_ops
,
943 static struct clk_mem_branch ecpri_cc_eth_100g_c2c_0_hm_ff_1_clk
= {
944 .mem_enable_reg
= 0x8410,
945 .mem_ack_reg
= 0x8424,
946 .mem_enable_ack_mask
= BIT(1),
949 .halt_check
= BRANCH_HALT
,
951 .enable_reg
= 0x80bc,
952 .enable_mask
= BIT(0),
953 .hw
.init
= &(const struct clk_init_data
) {
954 .name
= "ecpri_cc_eth_100g_c2c_0_hm_ff_1_clk",
955 .parent_hws
= (const struct clk_hw
*[]) {
956 &ecpri_cc_eth_100g_c2c_hm_ff_1_div_clk_src
.clkr
.hw
,
959 .flags
= CLK_SET_RATE_PARENT
,
960 .ops
= &clk_branch2_mem_ops
,
966 static struct clk_mem_branch ecpri_cc_eth_100g_c2c_hm_macsec_clk
= {
967 .mem_enable_reg
= 0x8410,
968 .mem_ack_reg
= 0x8424,
969 .mem_enable_ack_mask
= BIT(4),
972 .halt_check
= BRANCH_HALT
,
974 .enable_reg
= 0x80ac,
975 .enable_mask
= BIT(0),
976 .hw
.init
= &(const struct clk_init_data
) {
977 .name
= "ecpri_cc_eth_100g_c2c_hm_macsec_clk",
978 .parent_hws
= (const struct clk_hw
*[]) {
979 &ecpri_cc_eth_100g_c2c_hm_macsec_clk_src
.clkr
.hw
,
982 .flags
= CLK_SET_RATE_PARENT
,
983 .ops
= &clk_branch2_mem_ops
,
989 static struct clk_mem_branch ecpri_cc_eth_100g_dbg_c2c_hm_ff_0_clk
= {
990 .mem_enable_reg
= 0x8414,
991 .mem_ack_reg
= 0x8428,
992 .mem_enable_ack_mask
= BIT(0),
995 .halt_check
= BRANCH_HALT
,
997 .enable_reg
= 0x80d8,
998 .enable_mask
= BIT(0),
999 .hw
.init
= &(const struct clk_init_data
) {
1000 .name
= "ecpri_cc_eth_100g_dbg_c2c_hm_ff_0_clk",
1001 .parent_hws
= (const struct clk_hw
*[]) {
1002 &ecpri_cc_eth_100g_dbg_c2c_hm_ff_0_div_clk_src
.clkr
.hw
,
1005 .flags
= CLK_SET_RATE_PARENT
,
1006 .ops
= &clk_branch2_mem_ops
,
1012 static struct clk_mem_branch ecpri_cc_eth_100g_dbg_c2c_hm_ff_1_clk
= {
1013 .mem_enable_reg
= 0x8414,
1014 .mem_ack_reg
= 0x8428,
1015 .mem_enable_ack_mask
= BIT(1),
1018 .halt_check
= BRANCH_HALT
,
1020 .enable_reg
= 0x80e0,
1021 .enable_mask
= BIT(0),
1022 .hw
.init
= &(const struct clk_init_data
) {
1023 .name
= "ecpri_cc_eth_100g_dbg_c2c_hm_ff_1_clk",
1024 .parent_hws
= (const struct clk_hw
*[]) {
1025 &ecpri_cc_eth_100g_dbg_c2c_hm_ff_1_div_clk_src
.clkr
.hw
,
1028 .flags
= CLK_SET_RATE_PARENT
,
1029 .ops
= &clk_branch2_mem_ops
,
1035 static struct clk_branch ecpri_cc_eth_100g_dbg_c2c_udp_fifo_clk
= {
1037 .halt_check
= BRANCH_HALT
,
1039 .enable_reg
= 0x80f0,
1040 .enable_mask
= BIT(0),
1041 .hw
.init
= &(const struct clk_init_data
) {
1042 .name
= "ecpri_cc_eth_100g_dbg_c2c_udp_fifo_clk",
1043 .parent_hws
= (const struct clk_hw
*[]) {
1044 &ecpri_cc_ecpri_clk_src
.clkr
.hw
,
1047 .flags
= CLK_SET_RATE_PARENT
,
1048 .ops
= &clk_branch2_ops
,
1053 static struct clk_mem_branch ecpri_cc_eth_100g_fh_0_hm_ff_0_clk
= {
1054 .mem_enable_reg
= 0x8404,
1055 .mem_ack_reg
= 0x8418,
1056 .mem_enable_ack_mask
= BIT(0),
1059 .halt_check
= BRANCH_HALT
,
1061 .enable_reg
= 0x800c,
1062 .enable_mask
= BIT(0),
1063 .hw
.init
= &(const struct clk_init_data
) {
1064 .name
= "ecpri_cc_eth_100g_fh_0_hm_ff_0_clk",
1065 .parent_hws
= (const struct clk_hw
*[]) {
1066 &ecpri_cc_eth_100g_fh_0_hm_ff_0_div_clk_src
.clkr
.hw
,
1069 .flags
= CLK_SET_RATE_PARENT
,
1070 .ops
= &clk_branch2_mem_ops
,
1076 static struct clk_mem_branch ecpri_cc_eth_100g_fh_0_hm_ff_1_clk
= {
1077 .mem_enable_reg
= 0x8404,
1078 .mem_ack_reg
= 0x8418,
1079 .mem_enable_ack_mask
= BIT(1),
1082 .halt_check
= BRANCH_HALT
,
1084 .enable_reg
= 0x8014,
1085 .enable_mask
= BIT(0),
1086 .hw
.init
= &(const struct clk_init_data
) {
1087 .name
= "ecpri_cc_eth_100g_fh_0_hm_ff_1_clk",
1088 .parent_hws
= (const struct clk_hw
*[]) {
1089 &ecpri_cc_eth_100g_fh_0_hm_ff_1_div_clk_src
.clkr
.hw
,
1092 .flags
= CLK_SET_RATE_PARENT
,
1093 .ops
= &clk_branch2_mem_ops
,
1099 static struct clk_mem_branch ecpri_cc_eth_100g_fh_0_hm_ff_2_clk
= {
1100 .mem_enable_reg
= 0x8404,
1101 .mem_ack_reg
= 0x8418,
1102 .mem_enable_ack_mask
= BIT(2),
1105 .halt_check
= BRANCH_HALT
,
1107 .enable_reg
= 0x801c,
1108 .enable_mask
= BIT(0),
1109 .hw
.init
= &(const struct clk_init_data
) {
1110 .name
= "ecpri_cc_eth_100g_fh_0_hm_ff_2_clk",
1111 .parent_hws
= (const struct clk_hw
*[]) {
1112 &ecpri_cc_eth_100g_fh_0_hm_ff_2_div_clk_src
.clkr
.hw
,
1115 .flags
= CLK_SET_RATE_PARENT
,
1116 .ops
= &clk_branch2_mem_ops
,
1122 static struct clk_mem_branch ecpri_cc_eth_100g_fh_0_hm_ff_3_clk
= {
1123 .mem_enable_reg
= 0x8404,
1124 .mem_ack_reg
= 0x8418,
1125 .mem_enable_ack_mask
= BIT(3),
1128 .halt_check
= BRANCH_HALT
,
1130 .enable_reg
= 0x8024,
1131 .enable_mask
= BIT(0),
1132 .hw
.init
= &(const struct clk_init_data
) {
1133 .name
= "ecpri_cc_eth_100g_fh_0_hm_ff_3_clk",
1134 .parent_hws
= (const struct clk_hw
*[]) {
1135 &ecpri_cc_eth_100g_fh_0_hm_ff_3_div_clk_src
.clkr
.hw
,
1138 .flags
= CLK_SET_RATE_PARENT
,
1139 .ops
= &clk_branch2_mem_ops
,
1145 static struct clk_branch ecpri_cc_eth_100g_fh_0_udp_fifo_clk
= {
1147 .halt_check
= BRANCH_HALT
,
1149 .enable_reg
= 0x8034,
1150 .enable_mask
= BIT(0),
1151 .hw
.init
= &(const struct clk_init_data
) {
1152 .name
= "ecpri_cc_eth_100g_fh_0_udp_fifo_clk",
1153 .parent_hws
= (const struct clk_hw
*[]) {
1154 &ecpri_cc_ecpri_clk_src
.clkr
.hw
,
1157 .flags
= CLK_SET_RATE_PARENT
,
1158 .ops
= &clk_branch2_ops
,
1163 static struct clk_mem_branch ecpri_cc_eth_100g_fh_1_hm_ff_0_clk
= {
1164 .mem_enable_reg
= 0x8408,
1165 .mem_ack_reg
= 0x841c,
1166 .mem_enable_ack_mask
= BIT(0),
1169 .halt_check
= BRANCH_HALT
,
1171 .enable_reg
= 0x8044,
1172 .enable_mask
= BIT(0),
1173 .hw
.init
= &(const struct clk_init_data
) {
1174 .name
= "ecpri_cc_eth_100g_fh_1_hm_ff_0_clk",
1175 .parent_hws
= (const struct clk_hw
*[]) {
1176 &ecpri_cc_eth_100g_fh_1_hm_ff_0_div_clk_src
.clkr
.hw
,
1179 .flags
= CLK_SET_RATE_PARENT
,
1180 .ops
= &clk_branch2_mem_ops
,
1186 static struct clk_mem_branch ecpri_cc_eth_100g_fh_1_hm_ff_1_clk
= {
1187 .mem_enable_reg
= 0x8408,
1188 .mem_ack_reg
= 0x841c,
1189 .mem_enable_ack_mask
= BIT(1),
1192 .halt_check
= BRANCH_HALT
,
1194 .enable_reg
= 0x804c,
1195 .enable_mask
= BIT(0),
1196 .hw
.init
= &(const struct clk_init_data
) {
1197 .name
= "ecpri_cc_eth_100g_fh_1_hm_ff_1_clk",
1198 .parent_hws
= (const struct clk_hw
*[]) {
1199 &ecpri_cc_eth_100g_fh_1_hm_ff_1_div_clk_src
.clkr
.hw
,
1202 .flags
= CLK_SET_RATE_PARENT
,
1203 .ops
= &clk_branch2_mem_ops
,
1209 static struct clk_mem_branch ecpri_cc_eth_100g_fh_1_hm_ff_2_clk
= {
1210 .mem_enable_reg
= 0x8408,
1211 .mem_ack_reg
= 0x841c,
1212 .mem_enable_ack_mask
= BIT(2),
1215 .halt_check
= BRANCH_HALT
,
1217 .enable_reg
= 0x8054,
1218 .enable_mask
= BIT(0),
1219 .hw
.init
= &(const struct clk_init_data
) {
1220 .name
= "ecpri_cc_eth_100g_fh_1_hm_ff_2_clk",
1221 .parent_hws
= (const struct clk_hw
*[]) {
1222 &ecpri_cc_eth_100g_fh_1_hm_ff_2_div_clk_src
.clkr
.hw
,
1225 .flags
= CLK_SET_RATE_PARENT
,
1226 .ops
= &clk_branch2_mem_ops
,
1232 static struct clk_mem_branch ecpri_cc_eth_100g_fh_1_hm_ff_3_clk
= {
1233 .mem_enable_reg
= 0x8408,
1234 .mem_ack_reg
= 0x841c,
1235 .mem_enable_ack_mask
= BIT(3),
1238 .halt_check
= BRANCH_HALT
,
1240 .enable_reg
= 0x805c,
1241 .enable_mask
= BIT(0),
1242 .hw
.init
= &(const struct clk_init_data
) {
1243 .name
= "ecpri_cc_eth_100g_fh_1_hm_ff_3_clk",
1244 .parent_hws
= (const struct clk_hw
*[]) {
1245 &ecpri_cc_eth_100g_fh_1_hm_ff_3_div_clk_src
.clkr
.hw
,
1248 .flags
= CLK_SET_RATE_PARENT
,
1249 .ops
= &clk_branch2_mem_ops
,
1255 static struct clk_branch ecpri_cc_eth_100g_fh_1_udp_fifo_clk
= {
1257 .halt_check
= BRANCH_HALT
,
1259 .enable_reg
= 0x806c,
1260 .enable_mask
= BIT(0),
1261 .hw
.init
= &(const struct clk_init_data
) {
1262 .name
= "ecpri_cc_eth_100g_fh_1_udp_fifo_clk",
1263 .parent_hws
= (const struct clk_hw
*[]) {
1264 &ecpri_cc_ecpri_clk_src
.clkr
.hw
,
1267 .flags
= CLK_SET_RATE_PARENT
,
1268 .ops
= &clk_branch2_ops
,
1273 static struct clk_mem_branch ecpri_cc_eth_100g_fh_2_hm_ff_0_clk
= {
1274 .mem_enable_reg
= 0x840c,
1275 .mem_ack_reg
= 0x8420,
1276 .mem_enable_ack_mask
= BIT(0),
1279 .halt_check
= BRANCH_HALT
,
1281 .enable_reg
= 0x807c,
1282 .enable_mask
= BIT(0),
1283 .hw
.init
= &(const struct clk_init_data
) {
1284 .name
= "ecpri_cc_eth_100g_fh_2_hm_ff_0_clk",
1285 .parent_hws
= (const struct clk_hw
*[]) {
1286 &ecpri_cc_eth_100g_fh_2_hm_ff_0_div_clk_src
.clkr
.hw
,
1289 .flags
= CLK_SET_RATE_PARENT
,
1290 .ops
= &clk_branch2_mem_ops
,
1296 static struct clk_mem_branch ecpri_cc_eth_100g_fh_2_hm_ff_1_clk
= {
1297 .mem_enable_reg
= 0x840c,
1298 .mem_ack_reg
= 0x8420,
1299 .mem_enable_ack_mask
= BIT(1),
1302 .halt_check
= BRANCH_HALT
,
1304 .enable_reg
= 0x8084,
1305 .enable_mask
= BIT(0),
1306 .hw
.init
= &(const struct clk_init_data
) {
1307 .name
= "ecpri_cc_eth_100g_fh_2_hm_ff_1_clk",
1308 .parent_hws
= (const struct clk_hw
*[]) {
1309 &ecpri_cc_eth_100g_fh_2_hm_ff_1_div_clk_src
.clkr
.hw
,
1312 .flags
= CLK_SET_RATE_PARENT
,
1313 .ops
= &clk_branch2_mem_ops
,
1319 static struct clk_mem_branch ecpri_cc_eth_100g_fh_2_hm_ff_2_clk
= {
1320 .mem_enable_reg
= 0x840c,
1321 .mem_ack_reg
= 0x8420,
1322 .mem_enable_ack_mask
= BIT(2),
1325 .halt_check
= BRANCH_HALT
,
1327 .enable_reg
= 0x808c,
1328 .enable_mask
= BIT(0),
1329 .hw
.init
= &(const struct clk_init_data
) {
1330 .name
= "ecpri_cc_eth_100g_fh_2_hm_ff_2_clk",
1331 .parent_hws
= (const struct clk_hw
*[]) {
1332 &ecpri_cc_eth_100g_fh_2_hm_ff_2_div_clk_src
.clkr
.hw
,
1335 .flags
= CLK_SET_RATE_PARENT
,
1336 .ops
= &clk_branch2_mem_ops
,
1342 static struct clk_mem_branch ecpri_cc_eth_100g_fh_2_hm_ff_3_clk
= {
1343 .mem_enable_reg
= 0x840c,
1344 .mem_ack_reg
= 0x8420,
1345 .mem_enable_ack_mask
= BIT(3),
1348 .halt_check
= BRANCH_HALT
,
1350 .enable_reg
= 0x8094,
1351 .enable_mask
= BIT(0),
1352 .hw
.init
= &(const struct clk_init_data
) {
1353 .name
= "ecpri_cc_eth_100g_fh_2_hm_ff_3_clk",
1354 .parent_hws
= (const struct clk_hw
*[]) {
1355 &ecpri_cc_eth_100g_fh_2_hm_ff_3_div_clk_src
.clkr
.hw
,
1358 .flags
= CLK_SET_RATE_PARENT
,
1359 .ops
= &clk_branch2_mem_ops
,
1365 static struct clk_branch ecpri_cc_eth_100g_fh_2_udp_fifo_clk
= {
1367 .halt_check
= BRANCH_HALT
,
1369 .enable_reg
= 0x80a4,
1370 .enable_mask
= BIT(0),
1371 .hw
.init
= &(const struct clk_init_data
) {
1372 .name
= "ecpri_cc_eth_100g_fh_2_udp_fifo_clk",
1373 .parent_hws
= (const struct clk_hw
*[]) {
1374 &ecpri_cc_ecpri_clk_src
.clkr
.hw
,
1377 .flags
= CLK_SET_RATE_PARENT
,
1378 .ops
= &clk_branch2_ops
,
1383 static struct clk_mem_branch ecpri_cc_eth_100g_fh_macsec_0_clk
= {
1384 .mem_enable_reg
= 0x8404,
1385 .mem_ack_reg
= 0x8418,
1386 .mem_enable_ack_mask
= BIT(4),
1389 .halt_check
= BRANCH_HALT
,
1391 .enable_reg
= 0x8004,
1392 .enable_mask
= BIT(0),
1393 .hw
.init
= &(const struct clk_init_data
) {
1394 .name
= "ecpri_cc_eth_100g_fh_macsec_0_clk",
1395 .parent_hws
= (const struct clk_hw
*[]) {
1396 &ecpri_cc_eth_100g_fh0_macsec_clk_src
.clkr
.hw
,
1399 .flags
= CLK_SET_RATE_PARENT
,
1400 .ops
= &clk_branch2_mem_ops
,
1406 static struct clk_mem_branch ecpri_cc_eth_100g_fh_macsec_1_clk
= {
1407 .mem_enable_reg
= 0x8408,
1408 .mem_ack_reg
= 0x841c,
1409 .mem_enable_ack_mask
= BIT(4),
1412 .halt_check
= BRANCH_HALT
,
1414 .enable_reg
= 0x803c,
1415 .enable_mask
= BIT(0),
1416 .hw
.init
= &(const struct clk_init_data
) {
1417 .name
= "ecpri_cc_eth_100g_fh_macsec_1_clk",
1418 .parent_hws
= (const struct clk_hw
*[]) {
1419 &ecpri_cc_eth_100g_fh1_macsec_clk_src
.clkr
.hw
,
1422 .flags
= CLK_SET_RATE_PARENT
,
1423 .ops
= &clk_branch2_mem_ops
,
1429 static struct clk_mem_branch ecpri_cc_eth_100g_fh_macsec_2_clk
= {
1430 .mem_enable_reg
= 0x840c,
1431 .mem_ack_reg
= 0x8420,
1432 .mem_enable_ack_mask
= BIT(4),
1435 .halt_check
= BRANCH_HALT
,
1437 .enable_reg
= 0x8074,
1438 .enable_mask
= BIT(0),
1439 .hw
.init
= &(const struct clk_init_data
) {
1440 .name
= "ecpri_cc_eth_100g_fh_macsec_2_clk",
1441 .parent_hws
= (const struct clk_hw
*[]) {
1442 &ecpri_cc_eth_100g_fh2_macsec_clk_src
.clkr
.hw
,
1445 .flags
= CLK_SET_RATE_PARENT
,
1446 .ops
= &clk_branch2_mem_ops
,
1452 static struct clk_mem_branch ecpri_cc_eth_100g_mac_c2c_hm_ref_clk
= {
1453 .mem_enable_reg
= 0x8410,
1454 .mem_ack_reg
= 0x8424,
1455 .mem_enable_ack_mask
= BIT(5),
1458 .halt_check
= BRANCH_HALT
,
1460 .enable_reg
= 0x80c4,
1461 .enable_mask
= BIT(0),
1462 .hw
.init
= &(const struct clk_init_data
) {
1463 .name
= "ecpri_cc_eth_100g_mac_c2c_hm_ref_clk",
1464 .parent_hws
= (const struct clk_hw
*[]) {
1465 &ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src
.clkr
.hw
,
1468 .flags
= CLK_SET_RATE_PARENT
,
1469 .ops
= &clk_branch2_mem_ops
,
1475 static struct clk_mem_branch ecpri_cc_eth_100g_mac_dbg_c2c_hm_ref_clk
= {
1476 .mem_enable_reg
= 0x8414,
1477 .mem_ack_reg
= 0x8428,
1478 .mem_enable_ack_mask
= BIT(5),
1481 .halt_check
= BRANCH_HALT
,
1483 .enable_reg
= 0x80e8,
1484 .enable_mask
= BIT(0),
1485 .hw
.init
= &(const struct clk_init_data
) {
1486 .name
= "ecpri_cc_eth_100g_mac_dbg_c2c_hm_ref_clk",
1487 .parent_hws
= (const struct clk_hw
*[]) {
1488 &ecpri_cc_eth_100g_mac_dbg_c2c_hm_ref_clk_src
.clkr
.hw
,
1491 .flags
= CLK_SET_RATE_PARENT
,
1492 .ops
= &clk_branch2_mem_ops
,
1498 static struct clk_mem_branch ecpri_cc_eth_100g_mac_fh0_hm_ref_clk
= {
1499 .mem_enable_reg
= 0x8404,
1500 .mem_ack_reg
= 0x8418,
1501 .mem_enable_ack_mask
= BIT(5),
1504 .halt_check
= BRANCH_HALT
,
1506 .enable_reg
= 0x802c,
1507 .enable_mask
= BIT(0),
1508 .hw
.init
= &(const struct clk_init_data
) {
1509 .name
= "ecpri_cc_eth_100g_mac_fh0_hm_ref_clk",
1510 .parent_hws
= (const struct clk_hw
*[]) {
1511 &ecpri_cc_eth_100g_mac_fh0_hm_ref_clk_src
.clkr
.hw
,
1514 .flags
= CLK_SET_RATE_PARENT
,
1515 .ops
= &clk_branch2_mem_ops
,
1521 static struct clk_mem_branch ecpri_cc_eth_100g_mac_fh1_hm_ref_clk
= {
1522 .mem_enable_reg
= 0x8408,
1523 .mem_ack_reg
= 0x841c,
1524 .mem_enable_ack_mask
= BIT(5),
1527 .halt_check
= BRANCH_HALT
,
1529 .enable_reg
= 0x8064,
1530 .enable_mask
= BIT(0),
1531 .hw
.init
= &(const struct clk_init_data
) {
1532 .name
= "ecpri_cc_eth_100g_mac_fh1_hm_ref_clk",
1533 .parent_hws
= (const struct clk_hw
*[]) {
1534 &ecpri_cc_eth_100g_mac_fh1_hm_ref_clk_src
.clkr
.hw
,
1537 .flags
= CLK_SET_RATE_PARENT
,
1538 .ops
= &clk_branch2_mem_ops
,
1544 static struct clk_mem_branch ecpri_cc_eth_100g_mac_fh2_hm_ref_clk
= {
1545 .mem_enable_reg
= 0x840c,
1546 .mem_ack_reg
= 0x8420,
1547 .mem_enable_ack_mask
= BIT(5),
1550 .halt_check
= BRANCH_HALT
,
1552 .enable_reg
= 0x809c,
1553 .enable_mask
= BIT(0),
1554 .hw
.init
= &(const struct clk_init_data
) {
1555 .name
= "ecpri_cc_eth_100g_mac_fh2_hm_ref_clk",
1556 .parent_hws
= (const struct clk_hw
*[]) {
1557 &ecpri_cc_eth_100g_mac_fh2_hm_ref_clk_src
.clkr
.hw
,
1560 .flags
= CLK_SET_RATE_PARENT
,
1561 .ops
= &clk_branch2_mem_ops
,
1567 static struct clk_branch ecpri_cc_eth_dbg_nfapi_axi_clk
= {
1569 .halt_check
= BRANCH_HALT
,
1571 .enable_reg
= 0x80f4,
1572 .enable_mask
= BIT(0),
1573 .hw
.init
= &(const struct clk_init_data
) {
1574 .name
= "ecpri_cc_eth_dbg_nfapi_axi_clk",
1575 .parent_hws
= (const struct clk_hw
*[]) {
1576 &ecpri_cc_ecpri_dma_clk_src
.clkr
.hw
,
1579 .flags
= CLK_SET_RATE_PARENT
,
1580 .ops
= &clk_branch2_ops
,
1585 static struct clk_branch ecpri_cc_eth_dbg_noc_axi_clk
= {
1587 .halt_check
= BRANCH_HALT
,
1589 .enable_reg
= 0x80fc,
1590 .enable_mask
= BIT(0),
1591 .hw
.init
= &(const struct clk_init_data
) {
1592 .name
= "ecpri_cc_eth_dbg_noc_axi_clk",
1593 .parent_hws
= (const struct clk_hw
*[]) {
1594 &ecpri_cc_mss_emac_clk_src
.clkr
.hw
,
1597 .flags
= CLK_SET_RATE_PARENT
,
1598 .ops
= &clk_branch2_ops
,
1603 static struct clk_mem_branch ecpri_cc_eth_phy_0_ock_sram_clk
= {
1604 .mem_enable_reg
= 0x8404,
1605 .mem_ack_reg
= 0x8418,
1606 .mem_enable_ack_mask
= BIT(6),
1609 .halt_check
= BRANCH_HALT
,
1611 .enable_reg
= 0xd140,
1612 .enable_mask
= BIT(0),
1613 .hw
.init
= &(const struct clk_init_data
) {
1614 .name
= "ecpri_cc_eth_phy_0_ock_sram_clk",
1615 .ops
= &clk_branch2_mem_ops
,
1621 static struct clk_mem_branch ecpri_cc_eth_phy_1_ock_sram_clk
= {
1622 .mem_enable_reg
= 0x8408,
1623 .mem_ack_reg
= 0x841C,
1624 .mem_enable_ack_mask
= BIT(6),
1627 .halt_check
= BRANCH_HALT
,
1629 .enable_reg
= 0xd148,
1630 .enable_mask
= BIT(0),
1631 .hw
.init
= &(const struct clk_init_data
) {
1632 .name
= "ecpri_cc_eth_phy_1_ock_sram_clk",
1633 .ops
= &clk_branch2_mem_ops
,
1639 static struct clk_mem_branch ecpri_cc_eth_phy_2_ock_sram_clk
= {
1640 .mem_enable_reg
= 0x840c,
1641 .mem_ack_reg
= 0x8420,
1642 .mem_enable_ack_mask
= BIT(6),
1645 .halt_check
= BRANCH_HALT
,
1647 .enable_reg
= 0xd150,
1648 .enable_mask
= BIT(0),
1649 .hw
.init
= &(const struct clk_init_data
) {
1650 .name
= "ecpri_cc_eth_phy_2_ock_sram_clk",
1651 .ops
= &clk_branch2_mem_ops
,
1657 static struct clk_mem_branch ecpri_cc_eth_phy_3_ock_sram_clk
= {
1658 .mem_enable_reg
= 0x8410,
1659 .mem_ack_reg
= 0x8424,
1660 .mem_enable_ack_mask
= BIT(6),
1663 .halt_check
= BRANCH_HALT
,
1665 .enable_reg
= 0xd158,
1666 .enable_mask
= BIT(0),
1667 .hw
.init
= &(const struct clk_init_data
) {
1668 .name
= "ecpri_cc_eth_phy_3_ock_sram_clk",
1669 .ops
= &clk_branch2_mem_ops
,
1675 static struct clk_mem_branch ecpri_cc_eth_phy_4_ock_sram_clk
= {
1676 .mem_enable_reg
= 0x8414,
1677 .mem_ack_reg
= 0x8428,
1678 .mem_enable_ack_mask
= BIT(6),
1681 .halt_check
= BRANCH_HALT
,
1683 .enable_reg
= 0xd160,
1684 .enable_mask
= BIT(0),
1685 .hw
.init
= &(const struct clk_init_data
) {
1686 .name
= "ecpri_cc_eth_phy_4_ock_sram_clk",
1687 .ops
= &clk_branch2_mem_ops
,
1693 static struct clk_branch ecpri_cc_mss_emac_clk
= {
1695 .halt_check
= BRANCH_HALT
,
1697 .enable_reg
= 0xe008,
1698 .enable_mask
= BIT(0),
1699 .hw
.init
= &(const struct clk_init_data
) {
1700 .name
= "ecpri_cc_mss_emac_clk",
1701 .parent_hws
= (const struct clk_hw
*[]) {
1702 &ecpri_cc_mss_emac_clk_src
.clkr
.hw
,
1705 .flags
= CLK_SET_RATE_PARENT
,
1706 .ops
= &clk_branch2_ops
,
1711 static struct clk_branch ecpri_cc_mss_oran_clk
= {
1713 .halt_check
= BRANCH_HALT
,
1715 .enable_reg
= 0xe004,
1716 .enable_mask
= BIT(0),
1717 .hw
.init
= &(const struct clk_init_data
) {
1718 .name
= "ecpri_cc_mss_oran_clk",
1719 .parent_hws
= (const struct clk_hw
*[]) {
1720 &ecpri_cc_ecpri_oran_clk_src
.clkr
.hw
,
1723 .flags
= CLK_SET_RATE_PARENT
,
1724 .ops
= &clk_branch2_ops
,
1729 static struct clk_branch ecpri_cc_phy0_lane0_rx_clk
= {
1731 .halt_check
= BRANCH_HALT
,
1733 .enable_reg
= 0xd000,
1734 .enable_mask
= BIT(0),
1735 .hw
.init
= &(const struct clk_init_data
) {
1736 .name
= "ecpri_cc_phy0_lane0_rx_clk",
1737 .ops
= &clk_branch2_ops
,
1742 static struct clk_branch ecpri_cc_phy0_lane0_tx_clk
= {
1744 .halt_check
= BRANCH_HALT
,
1746 .enable_reg
= 0xd050,
1747 .enable_mask
= BIT(0),
1748 .hw
.init
= &(const struct clk_init_data
) {
1749 .name
= "ecpri_cc_phy0_lane0_tx_clk",
1750 .ops
= &clk_branch2_ops
,
1755 static struct clk_branch ecpri_cc_phy0_lane1_rx_clk
= {
1757 .halt_check
= BRANCH_HALT
,
1759 .enable_reg
= 0xd004,
1760 .enable_mask
= BIT(0),
1761 .hw
.init
= &(const struct clk_init_data
) {
1762 .name
= "ecpri_cc_phy0_lane1_rx_clk",
1763 .ops
= &clk_branch2_ops
,
1768 static struct clk_branch ecpri_cc_phy0_lane1_tx_clk
= {
1770 .halt_check
= BRANCH_HALT
,
1772 .enable_reg
= 0xd054,
1773 .enable_mask
= BIT(0),
1774 .hw
.init
= &(const struct clk_init_data
) {
1775 .name
= "ecpri_cc_phy0_lane1_tx_clk",
1776 .ops
= &clk_branch2_ops
,
1781 static struct clk_branch ecpri_cc_phy0_lane2_rx_clk
= {
1783 .halt_check
= BRANCH_HALT
,
1785 .enable_reg
= 0xd008,
1786 .enable_mask
= BIT(0),
1787 .hw
.init
= &(const struct clk_init_data
) {
1788 .name
= "ecpri_cc_phy0_lane2_rx_clk",
1789 .ops
= &clk_branch2_ops
,
1794 static struct clk_branch ecpri_cc_phy0_lane2_tx_clk
= {
1796 .halt_check
= BRANCH_HALT
,
1798 .enable_reg
= 0xd058,
1799 .enable_mask
= BIT(0),
1800 .hw
.init
= &(const struct clk_init_data
) {
1801 .name
= "ecpri_cc_phy0_lane2_tx_clk",
1802 .ops
= &clk_branch2_ops
,
1807 static struct clk_branch ecpri_cc_phy0_lane3_rx_clk
= {
1809 .halt_check
= BRANCH_HALT
,
1811 .enable_reg
= 0xd00c,
1812 .enable_mask
= BIT(0),
1813 .hw
.init
= &(const struct clk_init_data
) {
1814 .name
= "ecpri_cc_phy0_lane3_rx_clk",
1815 .ops
= &clk_branch2_ops
,
1820 static struct clk_branch ecpri_cc_phy0_lane3_tx_clk
= {
1822 .halt_check
= BRANCH_HALT
,
1824 .enable_reg
= 0xd05c,
1825 .enable_mask
= BIT(0),
1826 .hw
.init
= &(const struct clk_init_data
) {
1827 .name
= "ecpri_cc_phy0_lane3_tx_clk",
1828 .ops
= &clk_branch2_ops
,
1833 static struct clk_branch ecpri_cc_phy1_lane0_rx_clk
= {
1835 .halt_check
= BRANCH_HALT
,
1837 .enable_reg
= 0xd010,
1838 .enable_mask
= BIT(0),
1839 .hw
.init
= &(const struct clk_init_data
) {
1840 .name
= "ecpri_cc_phy1_lane0_rx_clk",
1841 .ops
= &clk_branch2_ops
,
1846 static struct clk_branch ecpri_cc_phy1_lane0_tx_clk
= {
1848 .halt_check
= BRANCH_HALT
,
1850 .enable_reg
= 0xd060,
1851 .enable_mask
= BIT(0),
1852 .hw
.init
= &(const struct clk_init_data
) {
1853 .name
= "ecpri_cc_phy1_lane0_tx_clk",
1854 .ops
= &clk_branch2_ops
,
1859 static struct clk_branch ecpri_cc_phy1_lane1_rx_clk
= {
1861 .halt_check
= BRANCH_HALT
,
1863 .enable_reg
= 0xd014,
1864 .enable_mask
= BIT(0),
1865 .hw
.init
= &(const struct clk_init_data
) {
1866 .name
= "ecpri_cc_phy1_lane1_rx_clk",
1867 .ops
= &clk_branch2_ops
,
1872 static struct clk_branch ecpri_cc_phy1_lane1_tx_clk
= {
1874 .halt_check
= BRANCH_HALT
,
1876 .enable_reg
= 0xd064,
1877 .enable_mask
= BIT(0),
1878 .hw
.init
= &(const struct clk_init_data
) {
1879 .name
= "ecpri_cc_phy1_lane1_tx_clk",
1880 .ops
= &clk_branch2_ops
,
1885 static struct clk_branch ecpri_cc_phy1_lane2_rx_clk
= {
1887 .halt_check
= BRANCH_HALT
,
1889 .enable_reg
= 0xd018,
1890 .enable_mask
= BIT(0),
1891 .hw
.init
= &(const struct clk_init_data
) {
1892 .name
= "ecpri_cc_phy1_lane2_rx_clk",
1893 .ops
= &clk_branch2_ops
,
1898 static struct clk_branch ecpri_cc_phy1_lane2_tx_clk
= {
1900 .halt_check
= BRANCH_HALT
,
1902 .enable_reg
= 0xd068,
1903 .enable_mask
= BIT(0),
1904 .hw
.init
= &(const struct clk_init_data
) {
1905 .name
= "ecpri_cc_phy1_lane2_tx_clk",
1906 .ops
= &clk_branch2_ops
,
1911 static struct clk_branch ecpri_cc_phy1_lane3_rx_clk
= {
1913 .halt_check
= BRANCH_HALT
,
1915 .enable_reg
= 0xd01c,
1916 .enable_mask
= BIT(0),
1917 .hw
.init
= &(const struct clk_init_data
) {
1918 .name
= "ecpri_cc_phy1_lane3_rx_clk",
1919 .ops
= &clk_branch2_ops
,
1924 static struct clk_branch ecpri_cc_phy1_lane3_tx_clk
= {
1926 .halt_check
= BRANCH_HALT
,
1928 .enable_reg
= 0xd06c,
1929 .enable_mask
= BIT(0),
1930 .hw
.init
= &(const struct clk_init_data
) {
1931 .name
= "ecpri_cc_phy1_lane3_tx_clk",
1932 .ops
= &clk_branch2_ops
,
1937 static struct clk_branch ecpri_cc_phy2_lane0_rx_clk
= {
1939 .halt_check
= BRANCH_HALT
,
1941 .enable_reg
= 0xd020,
1942 .enable_mask
= BIT(0),
1943 .hw
.init
= &(const struct clk_init_data
) {
1944 .name
= "ecpri_cc_phy2_lane0_rx_clk",
1945 .ops
= &clk_branch2_ops
,
1950 static struct clk_branch ecpri_cc_phy2_lane0_tx_clk
= {
1952 .halt_check
= BRANCH_HALT
,
1954 .enable_reg
= 0xd070,
1955 .enable_mask
= BIT(0),
1956 .hw
.init
= &(const struct clk_init_data
) {
1957 .name
= "ecpri_cc_phy2_lane0_tx_clk",
1958 .ops
= &clk_branch2_ops
,
1963 static struct clk_branch ecpri_cc_phy2_lane1_rx_clk
= {
1965 .halt_check
= BRANCH_HALT
,
1967 .enable_reg
= 0xd024,
1968 .enable_mask
= BIT(0),
1969 .hw
.init
= &(const struct clk_init_data
) {
1970 .name
= "ecpri_cc_phy2_lane1_rx_clk",
1971 .ops
= &clk_branch2_ops
,
1976 static struct clk_branch ecpri_cc_phy2_lane1_tx_clk
= {
1978 .halt_check
= BRANCH_HALT
,
1980 .enable_reg
= 0xd074,
1981 .enable_mask
= BIT(0),
1982 .hw
.init
= &(const struct clk_init_data
) {
1983 .name
= "ecpri_cc_phy2_lane1_tx_clk",
1984 .ops
= &clk_branch2_ops
,
1989 static struct clk_branch ecpri_cc_phy2_lane2_rx_clk
= {
1991 .halt_check
= BRANCH_HALT
,
1993 .enable_reg
= 0xd028,
1994 .enable_mask
= BIT(0),
1995 .hw
.init
= &(const struct clk_init_data
) {
1996 .name
= "ecpri_cc_phy2_lane2_rx_clk",
1997 .ops
= &clk_branch2_ops
,
2002 static struct clk_branch ecpri_cc_phy2_lane2_tx_clk
= {
2004 .halt_check
= BRANCH_HALT
,
2006 .enable_reg
= 0xd078,
2007 .enable_mask
= BIT(0),
2008 .hw
.init
= &(const struct clk_init_data
) {
2009 .name
= "ecpri_cc_phy2_lane2_tx_clk",
2010 .ops
= &clk_branch2_ops
,
2015 static struct clk_branch ecpri_cc_phy2_lane3_rx_clk
= {
2017 .halt_check
= BRANCH_HALT
,
2019 .enable_reg
= 0xd02c,
2020 .enable_mask
= BIT(0),
2021 .hw
.init
= &(const struct clk_init_data
) {
2022 .name
= "ecpri_cc_phy2_lane3_rx_clk",
2023 .ops
= &clk_branch2_ops
,
2028 static struct clk_branch ecpri_cc_phy2_lane3_tx_clk
= {
2030 .halt_check
= BRANCH_HALT
,
2032 .enable_reg
= 0xd07c,
2033 .enable_mask
= BIT(0),
2034 .hw
.init
= &(const struct clk_init_data
) {
2035 .name
= "ecpri_cc_phy2_lane3_tx_clk",
2036 .ops
= &clk_branch2_ops
,
2041 static struct clk_branch ecpri_cc_phy3_lane0_rx_clk
= {
2043 .halt_check
= BRANCH_HALT
,
2045 .enable_reg
= 0xd030,
2046 .enable_mask
= BIT(0),
2047 .hw
.init
= &(const struct clk_init_data
) {
2048 .name
= "ecpri_cc_phy3_lane0_rx_clk",
2049 .ops
= &clk_branch2_ops
,
2054 static struct clk_branch ecpri_cc_phy3_lane0_tx_clk
= {
2056 .halt_check
= BRANCH_HALT
,
2058 .enable_reg
= 0xd080,
2059 .enable_mask
= BIT(0),
2060 .hw
.init
= &(const struct clk_init_data
) {
2061 .name
= "ecpri_cc_phy3_lane0_tx_clk",
2062 .ops
= &clk_branch2_ops
,
2067 static struct clk_branch ecpri_cc_phy3_lane1_rx_clk
= {
2069 .halt_check
= BRANCH_HALT
,
2071 .enable_reg
= 0xd034,
2072 .enable_mask
= BIT(0),
2073 .hw
.init
= &(const struct clk_init_data
) {
2074 .name
= "ecpri_cc_phy3_lane1_rx_clk",
2075 .ops
= &clk_branch2_ops
,
2080 static struct clk_branch ecpri_cc_phy3_lane1_tx_clk
= {
2082 .halt_check
= BRANCH_HALT
,
2084 .enable_reg
= 0xd084,
2085 .enable_mask
= BIT(0),
2086 .hw
.init
= &(const struct clk_init_data
) {
2087 .name
= "ecpri_cc_phy3_lane1_tx_clk",
2088 .ops
= &clk_branch2_ops
,
2093 static struct clk_branch ecpri_cc_phy3_lane2_rx_clk
= {
2095 .halt_check
= BRANCH_HALT
,
2097 .enable_reg
= 0xd038,
2098 .enable_mask
= BIT(0),
2099 .hw
.init
= &(const struct clk_init_data
) {
2100 .name
= "ecpri_cc_phy3_lane2_rx_clk",
2101 .ops
= &clk_branch2_ops
,
2106 static struct clk_branch ecpri_cc_phy3_lane2_tx_clk
= {
2108 .halt_check
= BRANCH_HALT
,
2110 .enable_reg
= 0xd088,
2111 .enable_mask
= BIT(0),
2112 .hw
.init
= &(const struct clk_init_data
) {
2113 .name
= "ecpri_cc_phy3_lane2_tx_clk",
2114 .ops
= &clk_branch2_ops
,
2119 static struct clk_branch ecpri_cc_phy3_lane3_rx_clk
= {
2121 .halt_check
= BRANCH_HALT
,
2123 .enable_reg
= 0xd03c,
2124 .enable_mask
= BIT(0),
2125 .hw
.init
= &(const struct clk_init_data
) {
2126 .name
= "ecpri_cc_phy3_lane3_rx_clk",
2127 .ops
= &clk_branch2_ops
,
2132 static struct clk_branch ecpri_cc_phy3_lane3_tx_clk
= {
2134 .halt_check
= BRANCH_HALT
,
2136 .enable_reg
= 0xd08c,
2137 .enable_mask
= BIT(0),
2138 .hw
.init
= &(const struct clk_init_data
) {
2139 .name
= "ecpri_cc_phy3_lane3_tx_clk",
2140 .ops
= &clk_branch2_ops
,
2145 static struct clk_branch ecpri_cc_phy4_lane0_rx_clk
= {
2147 .halt_check
= BRANCH_HALT
,
2149 .enable_reg
= 0xd040,
2150 .enable_mask
= BIT(0),
2151 .hw
.init
= &(const struct clk_init_data
) {
2152 .name
= "ecpri_cc_phy4_lane0_rx_clk",
2153 .ops
= &clk_branch2_ops
,
2158 static struct clk_branch ecpri_cc_phy4_lane0_tx_clk
= {
2160 .halt_check
= BRANCH_HALT
,
2162 .enable_reg
= 0xd090,
2163 .enable_mask
= BIT(0),
2164 .hw
.init
= &(const struct clk_init_data
) {
2165 .name
= "ecpri_cc_phy4_lane0_tx_clk",
2166 .ops
= &clk_branch2_ops
,
2171 static struct clk_branch ecpri_cc_phy4_lane1_rx_clk
= {
2173 .halt_check
= BRANCH_HALT
,
2175 .enable_reg
= 0xd044,
2176 .enable_mask
= BIT(0),
2177 .hw
.init
= &(const struct clk_init_data
) {
2178 .name
= "ecpri_cc_phy4_lane1_rx_clk",
2179 .ops
= &clk_branch2_ops
,
2184 static struct clk_branch ecpri_cc_phy4_lane1_tx_clk
= {
2186 .halt_check
= BRANCH_HALT
,
2188 .enable_reg
= 0xd094,
2189 .enable_mask
= BIT(0),
2190 .hw
.init
= &(const struct clk_init_data
) {
2191 .name
= "ecpri_cc_phy4_lane1_tx_clk",
2192 .ops
= &clk_branch2_ops
,
2197 static struct clk_branch ecpri_cc_phy4_lane2_rx_clk
= {
2199 .halt_check
= BRANCH_HALT
,
2201 .enable_reg
= 0xd048,
2202 .enable_mask
= BIT(0),
2203 .hw
.init
= &(const struct clk_init_data
) {
2204 .name
= "ecpri_cc_phy4_lane2_rx_clk",
2205 .ops
= &clk_branch2_ops
,
2210 static struct clk_branch ecpri_cc_phy4_lane2_tx_clk
= {
2212 .halt_check
= BRANCH_HALT
,
2214 .enable_reg
= 0xd098,
2215 .enable_mask
= BIT(0),
2216 .hw
.init
= &(const struct clk_init_data
) {
2217 .name
= "ecpri_cc_phy4_lane2_tx_clk",
2218 .ops
= &clk_branch2_ops
,
2223 static struct clk_branch ecpri_cc_phy4_lane3_rx_clk
= {
2225 .halt_check
= BRANCH_HALT
,
2227 .enable_reg
= 0xd04c,
2228 .enable_mask
= BIT(0),
2229 .hw
.init
= &(const struct clk_init_data
) {
2230 .name
= "ecpri_cc_phy4_lane3_rx_clk",
2231 .ops
= &clk_branch2_ops
,
2236 static struct clk_branch ecpri_cc_phy4_lane3_tx_clk
= {
2238 .halt_check
= BRANCH_HALT
,
2240 .enable_reg
= 0xd09c,
2241 .enable_mask
= BIT(0),
2242 .hw
.init
= &(const struct clk_init_data
) {
2243 .name
= "ecpri_cc_phy4_lane3_tx_clk",
2244 .ops
= &clk_branch2_ops
,
2249 static struct clk_regmap
*ecpri_cc_qdu1000_clocks
[] = {
2250 [ECPRI_CC_ECPRI_CG_CLK
] = &ecpri_cc_ecpri_cg_clk
.clkr
,
2251 [ECPRI_CC_ECPRI_CLK_SRC
] = &ecpri_cc_ecpri_clk_src
.clkr
,
2252 [ECPRI_CC_ECPRI_DMA_CLK
] = &ecpri_cc_ecpri_dma_clk
.clkr
,
2253 [ECPRI_CC_ECPRI_DMA_CLK_SRC
] = &ecpri_cc_ecpri_dma_clk_src
.clkr
,
2254 [ECPRI_CC_ECPRI_DMA_NOC_CLK
] = &ecpri_cc_ecpri_dma_noc_clk
.clkr
,
2255 [ECPRI_CC_ECPRI_FAST_CLK
] = &ecpri_cc_ecpri_fast_clk
.clkr
,
2256 [ECPRI_CC_ECPRI_FAST_CLK_SRC
] = &ecpri_cc_ecpri_fast_clk_src
.clkr
,
2257 [ECPRI_CC_ECPRI_FAST_DIV2_CLK
] = &ecpri_cc_ecpri_fast_div2_clk
.clkr
,
2258 [ECPRI_CC_ECPRI_FAST_DIV2_CLK_SRC
] = &ecpri_cc_ecpri_fast_div2_clk_src
.clkr
,
2259 [ECPRI_CC_ECPRI_FAST_DIV2_NOC_CLK
] = &ecpri_cc_ecpri_fast_div2_noc_clk
.clkr
,
2260 [ECPRI_CC_ECPRI_FR_CLK
] = &ecpri_cc_ecpri_fr_clk
.clkr
,
2261 [ECPRI_CC_ECPRI_ORAN_CLK_SRC
] = &ecpri_cc_ecpri_oran_clk_src
.clkr
,
2262 [ECPRI_CC_ECPRI_ORAN_DIV2_CLK
] = &ecpri_cc_ecpri_oran_div2_clk
.clkr
,
2263 [ECPRI_CC_ETH_100G_C2C0_HM_FF_CLK_SRC
] = &ecpri_cc_eth_100g_c2c0_hm_ff_clk_src
.clkr
,
2264 [ECPRI_CC_ETH_100G_C2C0_UDP_FIFO_CLK
] = &ecpri_cc_eth_100g_c2c0_udp_fifo_clk
.clkr
,
2265 [ECPRI_CC_ETH_100G_C2C1_UDP_FIFO_CLK
] = &ecpri_cc_eth_100g_c2c1_udp_fifo_clk
.clkr
,
2266 [ECPRI_CC_ETH_100G_C2C_0_HM_FF_0_CLK
] = &ecpri_cc_eth_100g_c2c_0_hm_ff_0_clk
.branch
.clkr
,
2267 [ECPRI_CC_ETH_100G_C2C_0_HM_FF_1_CLK
] = &ecpri_cc_eth_100g_c2c_0_hm_ff_1_clk
.branch
.clkr
,
2268 [ECPRI_CC_ETH_100G_C2C_HM_FF_0_DIV_CLK_SRC
] =
2269 &ecpri_cc_eth_100g_c2c_hm_ff_0_div_clk_src
.clkr
,
2270 [ECPRI_CC_ETH_100G_C2C_HM_FF_1_DIV_CLK_SRC
] =
2271 &ecpri_cc_eth_100g_c2c_hm_ff_1_div_clk_src
.clkr
,
2272 [ECPRI_CC_ETH_100G_C2C_HM_MACSEC_CLK
] = &ecpri_cc_eth_100g_c2c_hm_macsec_clk
.branch
.clkr
,
2273 [ECPRI_CC_ETH_100G_C2C_HM_MACSEC_CLK_SRC
] = &ecpri_cc_eth_100g_c2c_hm_macsec_clk_src
.clkr
,
2274 [ECPRI_CC_ETH_100G_DBG_C2C_HM_FF_0_CLK
] =
2275 &ecpri_cc_eth_100g_dbg_c2c_hm_ff_0_clk
.branch
.clkr
,
2276 [ECPRI_CC_ETH_100G_DBG_C2C_HM_FF_0_DIV_CLK_SRC
] =
2277 &ecpri_cc_eth_100g_dbg_c2c_hm_ff_0_div_clk_src
.clkr
,
2278 [ECPRI_CC_ETH_100G_DBG_C2C_HM_FF_1_CLK
] =
2279 &ecpri_cc_eth_100g_dbg_c2c_hm_ff_1_clk
.branch
.clkr
,
2280 [ECPRI_CC_ETH_100G_DBG_C2C_HM_FF_1_DIV_CLK_SRC
] =
2281 &ecpri_cc_eth_100g_dbg_c2c_hm_ff_1_div_clk_src
.clkr
,
2282 [ECPRI_CC_ETH_100G_DBG_C2C_HM_FF_CLK_SRC
] = &ecpri_cc_eth_100g_dbg_c2c_hm_ff_clk_src
.clkr
,
2283 [ECPRI_CC_ETH_100G_DBG_C2C_UDP_FIFO_CLK
] = &ecpri_cc_eth_100g_dbg_c2c_udp_fifo_clk
.clkr
,
2284 [ECPRI_CC_ETH_100G_FH0_HM_FF_CLK_SRC
] = &ecpri_cc_eth_100g_fh0_hm_ff_clk_src
.clkr
,
2285 [ECPRI_CC_ETH_100G_FH0_MACSEC_CLK_SRC
] = &ecpri_cc_eth_100g_fh0_macsec_clk_src
.clkr
,
2286 [ECPRI_CC_ETH_100G_FH1_HM_FF_CLK_SRC
] = &ecpri_cc_eth_100g_fh1_hm_ff_clk_src
.clkr
,
2287 [ECPRI_CC_ETH_100G_FH1_MACSEC_CLK_SRC
] = &ecpri_cc_eth_100g_fh1_macsec_clk_src
.clkr
,
2288 [ECPRI_CC_ETH_100G_FH2_HM_FF_CLK_SRC
] = &ecpri_cc_eth_100g_fh2_hm_ff_clk_src
.clkr
,
2289 [ECPRI_CC_ETH_100G_FH2_MACSEC_CLK_SRC
] = &ecpri_cc_eth_100g_fh2_macsec_clk_src
.clkr
,
2290 [ECPRI_CC_ETH_100G_FH_0_HM_FF_0_CLK
] = &ecpri_cc_eth_100g_fh_0_hm_ff_0_clk
.branch
.clkr
,
2291 [ECPRI_CC_ETH_100G_FH_0_HM_FF_0_DIV_CLK_SRC
] =
2292 &ecpri_cc_eth_100g_fh_0_hm_ff_0_div_clk_src
.clkr
,
2293 [ECPRI_CC_ETH_100G_FH_0_HM_FF_1_CLK
] = &ecpri_cc_eth_100g_fh_0_hm_ff_1_clk
.branch
.clkr
,
2294 [ECPRI_CC_ETH_100G_FH_0_HM_FF_1_DIV_CLK_SRC
] =
2295 &ecpri_cc_eth_100g_fh_0_hm_ff_1_div_clk_src
.clkr
,
2296 [ECPRI_CC_ETH_100G_FH_0_HM_FF_2_CLK
] = &ecpri_cc_eth_100g_fh_0_hm_ff_2_clk
.branch
.clkr
,
2297 [ECPRI_CC_ETH_100G_FH_0_HM_FF_2_DIV_CLK_SRC
] =
2298 &ecpri_cc_eth_100g_fh_0_hm_ff_2_div_clk_src
.clkr
,
2299 [ECPRI_CC_ETH_100G_FH_0_HM_FF_3_CLK
] = &ecpri_cc_eth_100g_fh_0_hm_ff_3_clk
.branch
.clkr
,
2300 [ECPRI_CC_ETH_100G_FH_0_HM_FF_3_DIV_CLK_SRC
] =
2301 &ecpri_cc_eth_100g_fh_0_hm_ff_3_div_clk_src
.clkr
,
2302 [ECPRI_CC_ETH_100G_FH_0_UDP_FIFO_CLK
] = &ecpri_cc_eth_100g_fh_0_udp_fifo_clk
.clkr
,
2303 [ECPRI_CC_ETH_100G_FH_1_HM_FF_0_CLK
] = &ecpri_cc_eth_100g_fh_1_hm_ff_0_clk
.branch
.clkr
,
2304 [ECPRI_CC_ETH_100G_FH_1_HM_FF_0_DIV_CLK_SRC
] =
2305 &ecpri_cc_eth_100g_fh_1_hm_ff_0_div_clk_src
.clkr
,
2306 [ECPRI_CC_ETH_100G_FH_1_HM_FF_1_CLK
] = &ecpri_cc_eth_100g_fh_1_hm_ff_1_clk
.branch
.clkr
,
2307 [ECPRI_CC_ETH_100G_FH_1_HM_FF_1_DIV_CLK_SRC
] =
2308 &ecpri_cc_eth_100g_fh_1_hm_ff_1_div_clk_src
.clkr
,
2309 [ECPRI_CC_ETH_100G_FH_1_HM_FF_2_CLK
] = &ecpri_cc_eth_100g_fh_1_hm_ff_2_clk
.branch
.clkr
,
2310 [ECPRI_CC_ETH_100G_FH_1_HM_FF_2_DIV_CLK_SRC
] =
2311 &ecpri_cc_eth_100g_fh_1_hm_ff_2_div_clk_src
.clkr
,
2312 [ECPRI_CC_ETH_100G_FH_1_HM_FF_3_CLK
] = &ecpri_cc_eth_100g_fh_1_hm_ff_3_clk
.branch
.clkr
,
2313 [ECPRI_CC_ETH_100G_FH_1_HM_FF_3_DIV_CLK_SRC
] =
2314 &ecpri_cc_eth_100g_fh_1_hm_ff_3_div_clk_src
.clkr
,
2315 [ECPRI_CC_ETH_100G_FH_1_UDP_FIFO_CLK
] = &ecpri_cc_eth_100g_fh_1_udp_fifo_clk
.clkr
,
2316 [ECPRI_CC_ETH_100G_FH_2_HM_FF_0_CLK
] = &ecpri_cc_eth_100g_fh_2_hm_ff_0_clk
.branch
.clkr
,
2317 [ECPRI_CC_ETH_100G_FH_2_HM_FF_0_DIV_CLK_SRC
] =
2318 &ecpri_cc_eth_100g_fh_2_hm_ff_0_div_clk_src
.clkr
,
2319 [ECPRI_CC_ETH_100G_FH_2_HM_FF_1_CLK
] = &ecpri_cc_eth_100g_fh_2_hm_ff_1_clk
.branch
.clkr
,
2320 [ECPRI_CC_ETH_100G_FH_2_HM_FF_1_DIV_CLK_SRC
] =
2321 &ecpri_cc_eth_100g_fh_2_hm_ff_1_div_clk_src
.clkr
,
2322 [ECPRI_CC_ETH_100G_FH_2_HM_FF_2_CLK
] = &ecpri_cc_eth_100g_fh_2_hm_ff_2_clk
.branch
.clkr
,
2323 [ECPRI_CC_ETH_100G_FH_2_HM_FF_2_DIV_CLK_SRC
] =
2324 &ecpri_cc_eth_100g_fh_2_hm_ff_2_div_clk_src
.clkr
,
2325 [ECPRI_CC_ETH_100G_FH_2_HM_FF_3_CLK
] = &ecpri_cc_eth_100g_fh_2_hm_ff_3_clk
.branch
.clkr
,
2326 [ECPRI_CC_ETH_100G_FH_2_HM_FF_3_DIV_CLK_SRC
] =
2327 &ecpri_cc_eth_100g_fh_2_hm_ff_3_div_clk_src
.clkr
,
2328 [ECPRI_CC_ETH_100G_FH_2_UDP_FIFO_CLK
] = &ecpri_cc_eth_100g_fh_2_udp_fifo_clk
.clkr
,
2329 [ECPRI_CC_ETH_100G_FH_MACSEC_0_CLK
] = &ecpri_cc_eth_100g_fh_macsec_0_clk
.branch
.clkr
,
2330 [ECPRI_CC_ETH_100G_FH_MACSEC_1_CLK
] = &ecpri_cc_eth_100g_fh_macsec_1_clk
.branch
.clkr
,
2331 [ECPRI_CC_ETH_100G_FH_MACSEC_2_CLK
] = &ecpri_cc_eth_100g_fh_macsec_2_clk
.branch
.clkr
,
2332 [ECPRI_CC_ETH_100G_MAC_C2C_HM_REF_CLK
] = &ecpri_cc_eth_100g_mac_c2c_hm_ref_clk
.branch
.clkr
,
2333 [ECPRI_CC_ETH_100G_MAC_C2C_HM_REF_CLK_SRC
] = &ecpri_cc_eth_100g_mac_c2c_hm_ref_clk_src
.clkr
,
2334 [ECPRI_CC_ETH_100G_MAC_DBG_C2C_HM_REF_CLK
] =
2335 &ecpri_cc_eth_100g_mac_dbg_c2c_hm_ref_clk
.branch
.clkr
,
2336 [ECPRI_CC_ETH_100G_MAC_DBG_C2C_HM_REF_CLK_SRC
] =
2337 &ecpri_cc_eth_100g_mac_dbg_c2c_hm_ref_clk_src
.clkr
,
2338 [ECPRI_CC_ETH_100G_MAC_FH0_HM_REF_CLK
] = &ecpri_cc_eth_100g_mac_fh0_hm_ref_clk
.branch
.clkr
,
2339 [ECPRI_CC_ETH_100G_MAC_FH0_HM_REF_CLK_SRC
] = &ecpri_cc_eth_100g_mac_fh0_hm_ref_clk_src
.clkr
,
2340 [ECPRI_CC_ETH_100G_MAC_FH1_HM_REF_CLK
] = &ecpri_cc_eth_100g_mac_fh1_hm_ref_clk
.branch
.clkr
,
2341 [ECPRI_CC_ETH_100G_MAC_FH1_HM_REF_CLK_SRC
] = &ecpri_cc_eth_100g_mac_fh1_hm_ref_clk_src
.clkr
,
2342 [ECPRI_CC_ETH_100G_MAC_FH2_HM_REF_CLK
] = &ecpri_cc_eth_100g_mac_fh2_hm_ref_clk
.branch
.clkr
,
2343 [ECPRI_CC_ETH_100G_MAC_FH2_HM_REF_CLK_SRC
] = &ecpri_cc_eth_100g_mac_fh2_hm_ref_clk_src
.clkr
,
2344 [ECPRI_CC_ETH_DBG_NFAPI_AXI_CLK
] = &ecpri_cc_eth_dbg_nfapi_axi_clk
.clkr
,
2345 [ECPRI_CC_ETH_DBG_NOC_AXI_CLK
] = &ecpri_cc_eth_dbg_noc_axi_clk
.clkr
,
2346 [ECPRI_CC_ETH_PHY_0_OCK_SRAM_CLK
] = &ecpri_cc_eth_phy_0_ock_sram_clk
.branch
.clkr
,
2347 [ECPRI_CC_ETH_PHY_1_OCK_SRAM_CLK
] = &ecpri_cc_eth_phy_1_ock_sram_clk
.branch
.clkr
,
2348 [ECPRI_CC_ETH_PHY_2_OCK_SRAM_CLK
] = &ecpri_cc_eth_phy_2_ock_sram_clk
.branch
.clkr
,
2349 [ECPRI_CC_ETH_PHY_3_OCK_SRAM_CLK
] = &ecpri_cc_eth_phy_3_ock_sram_clk
.branch
.clkr
,
2350 [ECPRI_CC_ETH_PHY_4_OCK_SRAM_CLK
] = &ecpri_cc_eth_phy_4_ock_sram_clk
.branch
.clkr
,
2351 [ECPRI_CC_MSS_EMAC_CLK
] = &ecpri_cc_mss_emac_clk
.clkr
,
2352 [ECPRI_CC_MSS_EMAC_CLK_SRC
] = &ecpri_cc_mss_emac_clk_src
.clkr
,
2353 [ECPRI_CC_MSS_ORAN_CLK
] = &ecpri_cc_mss_oran_clk
.clkr
,
2354 [ECPRI_CC_PHY0_LANE0_RX_CLK
] = &ecpri_cc_phy0_lane0_rx_clk
.clkr
,
2355 [ECPRI_CC_PHY0_LANE0_TX_CLK
] = &ecpri_cc_phy0_lane0_tx_clk
.clkr
,
2356 [ECPRI_CC_PHY0_LANE1_RX_CLK
] = &ecpri_cc_phy0_lane1_rx_clk
.clkr
,
2357 [ECPRI_CC_PHY0_LANE1_TX_CLK
] = &ecpri_cc_phy0_lane1_tx_clk
.clkr
,
2358 [ECPRI_CC_PHY0_LANE2_RX_CLK
] = &ecpri_cc_phy0_lane2_rx_clk
.clkr
,
2359 [ECPRI_CC_PHY0_LANE2_TX_CLK
] = &ecpri_cc_phy0_lane2_tx_clk
.clkr
,
2360 [ECPRI_CC_PHY0_LANE3_RX_CLK
] = &ecpri_cc_phy0_lane3_rx_clk
.clkr
,
2361 [ECPRI_CC_PHY0_LANE3_TX_CLK
] = &ecpri_cc_phy0_lane3_tx_clk
.clkr
,
2362 [ECPRI_CC_PHY1_LANE0_RX_CLK
] = &ecpri_cc_phy1_lane0_rx_clk
.clkr
,
2363 [ECPRI_CC_PHY1_LANE0_TX_CLK
] = &ecpri_cc_phy1_lane0_tx_clk
.clkr
,
2364 [ECPRI_CC_PHY1_LANE1_RX_CLK
] = &ecpri_cc_phy1_lane1_rx_clk
.clkr
,
2365 [ECPRI_CC_PHY1_LANE1_TX_CLK
] = &ecpri_cc_phy1_lane1_tx_clk
.clkr
,
2366 [ECPRI_CC_PHY1_LANE2_RX_CLK
] = &ecpri_cc_phy1_lane2_rx_clk
.clkr
,
2367 [ECPRI_CC_PHY1_LANE2_TX_CLK
] = &ecpri_cc_phy1_lane2_tx_clk
.clkr
,
2368 [ECPRI_CC_PHY1_LANE3_RX_CLK
] = &ecpri_cc_phy1_lane3_rx_clk
.clkr
,
2369 [ECPRI_CC_PHY1_LANE3_TX_CLK
] = &ecpri_cc_phy1_lane3_tx_clk
.clkr
,
2370 [ECPRI_CC_PHY2_LANE0_RX_CLK
] = &ecpri_cc_phy2_lane0_rx_clk
.clkr
,
2371 [ECPRI_CC_PHY2_LANE0_TX_CLK
] = &ecpri_cc_phy2_lane0_tx_clk
.clkr
,
2372 [ECPRI_CC_PHY2_LANE1_RX_CLK
] = &ecpri_cc_phy2_lane1_rx_clk
.clkr
,
2373 [ECPRI_CC_PHY2_LANE1_TX_CLK
] = &ecpri_cc_phy2_lane1_tx_clk
.clkr
,
2374 [ECPRI_CC_PHY2_LANE2_RX_CLK
] = &ecpri_cc_phy2_lane2_rx_clk
.clkr
,
2375 [ECPRI_CC_PHY2_LANE2_TX_CLK
] = &ecpri_cc_phy2_lane2_tx_clk
.clkr
,
2376 [ECPRI_CC_PHY2_LANE3_RX_CLK
] = &ecpri_cc_phy2_lane3_rx_clk
.clkr
,
2377 [ECPRI_CC_PHY2_LANE3_TX_CLK
] = &ecpri_cc_phy2_lane3_tx_clk
.clkr
,
2378 [ECPRI_CC_PHY3_LANE0_RX_CLK
] = &ecpri_cc_phy3_lane0_rx_clk
.clkr
,
2379 [ECPRI_CC_PHY3_LANE0_TX_CLK
] = &ecpri_cc_phy3_lane0_tx_clk
.clkr
,
2380 [ECPRI_CC_PHY3_LANE1_RX_CLK
] = &ecpri_cc_phy3_lane1_rx_clk
.clkr
,
2381 [ECPRI_CC_PHY3_LANE1_TX_CLK
] = &ecpri_cc_phy3_lane1_tx_clk
.clkr
,
2382 [ECPRI_CC_PHY3_LANE2_RX_CLK
] = &ecpri_cc_phy3_lane2_rx_clk
.clkr
,
2383 [ECPRI_CC_PHY3_LANE2_TX_CLK
] = &ecpri_cc_phy3_lane2_tx_clk
.clkr
,
2384 [ECPRI_CC_PHY3_LANE3_RX_CLK
] = &ecpri_cc_phy3_lane3_rx_clk
.clkr
,
2385 [ECPRI_CC_PHY3_LANE3_TX_CLK
] = &ecpri_cc_phy3_lane3_tx_clk
.clkr
,
2386 [ECPRI_CC_PHY4_LANE0_RX_CLK
] = &ecpri_cc_phy4_lane0_rx_clk
.clkr
,
2387 [ECPRI_CC_PHY4_LANE0_TX_CLK
] = &ecpri_cc_phy4_lane0_tx_clk
.clkr
,
2388 [ECPRI_CC_PHY4_LANE1_RX_CLK
] = &ecpri_cc_phy4_lane1_rx_clk
.clkr
,
2389 [ECPRI_CC_PHY4_LANE1_TX_CLK
] = &ecpri_cc_phy4_lane1_tx_clk
.clkr
,
2390 [ECPRI_CC_PHY4_LANE2_RX_CLK
] = &ecpri_cc_phy4_lane2_rx_clk
.clkr
,
2391 [ECPRI_CC_PHY4_LANE2_TX_CLK
] = &ecpri_cc_phy4_lane2_tx_clk
.clkr
,
2392 [ECPRI_CC_PHY4_LANE3_RX_CLK
] = &ecpri_cc_phy4_lane3_rx_clk
.clkr
,
2393 [ECPRI_CC_PHY4_LANE3_TX_CLK
] = &ecpri_cc_phy4_lane3_tx_clk
.clkr
,
2394 [ECPRI_CC_PLL0
] = &ecpri_cc_pll0
.clkr
,
2395 [ECPRI_CC_PLL1
] = &ecpri_cc_pll1
.clkr
,
2398 static const struct qcom_reset_map ecpri_cc_qdu1000_resets
[] = {
2399 [ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_ECPRI_SS_BCR
] = { 0x9000 },
2400 [ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_ETH_C2C_BCR
] = { 0x80a8 },
2401 [ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_ETH_FH0_BCR
] = { 0x8000 },
2402 [ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_ETH_FH1_BCR
] = { 0x8038 },
2403 [ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_ETH_FH2_BCR
] = { 0x8070 },
2404 [ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_ETH_WRAPPER_TOP_BCR
] = { 0x8104 },
2405 [ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_MODEM_BCR
] = { 0xe000 },
2406 [ECPRI_CC_CLK_CTL_TOP_ECPRI_CC_NOC_BCR
] = { 0xf000 },
2409 static const struct regmap_config ecpri_cc_qdu1000_regmap_config
= {
2413 .max_register
= 0x31bf0,
2417 static const struct qcom_cc_desc ecpri_cc_qdu1000_desc
= {
2418 .config
= &ecpri_cc_qdu1000_regmap_config
,
2419 .clks
= ecpri_cc_qdu1000_clocks
,
2420 .num_clks
= ARRAY_SIZE(ecpri_cc_qdu1000_clocks
),
2421 .resets
= ecpri_cc_qdu1000_resets
,
2422 .num_resets
= ARRAY_SIZE(ecpri_cc_qdu1000_resets
),
2425 static const struct of_device_id ecpri_cc_qdu1000_match_table
[] = {
2426 { .compatible
= "qcom,qdu1000-ecpricc" },
2429 MODULE_DEVICE_TABLE(of
, ecpri_cc_qdu1000_match_table
);
2431 static int ecpri_cc_qdu1000_probe(struct platform_device
*pdev
)
2433 struct regmap
*regmap
;
2435 regmap
= qcom_cc_map(pdev
, &ecpri_cc_qdu1000_desc
);
2437 return PTR_ERR(regmap
);
2439 clk_lucid_evo_pll_configure(&ecpri_cc_pll0
, regmap
, &ecpri_cc_pll0_config
);
2440 clk_lucid_evo_pll_configure(&ecpri_cc_pll1
, regmap
, &ecpri_cc_pll1_config
);
2442 return qcom_cc_really_probe(&pdev
->dev
, &ecpri_cc_qdu1000_desc
, regmap
);
2445 static struct platform_driver ecpri_cc_qdu1000_driver
= {
2446 .probe
= ecpri_cc_qdu1000_probe
,
2448 .name
= "ecpri_cc-qdu1000",
2449 .of_match_table
= ecpri_cc_qdu1000_match_table
,
2453 module_platform_driver(ecpri_cc_qdu1000_driver
);
2455 MODULE_DESCRIPTION("QTI ECPRICC QDU1000 Driver");
2456 MODULE_LICENSE("GPL");