1 /***********************license start***************
2  * Author: Cavium Networks
3  *
4  * Contact: support@caviumnetworks.com
5  * This file is part of the OCTEON SDK
6  *
7  * Copyright (c) 2003-2008 Cavium Networks
8  *
9  * This file is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License, Version 2, as
11  * published by the Free Software Foundation.
12  *
13  * This file is distributed in the hope that it will be useful, but
14  * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
15  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
16  * NONINFRINGEMENT.  See the GNU General Public License for more
17  * details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this file; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22  * or visit http://www.gnu.org/licenses/.
23  *
24  * This file may also be available under a different license from Cavium.
25  * Contact Cavium Networks for more information
26  ***********************license end**************************************/
27 
28 #ifndef __CVMX_POW_DEFS_H__
29 #define __CVMX_POW_DEFS_H__
30 
31 #define CVMX_POW_BIST_STAT \
32 	 CVMX_ADD_IO_SEG(0x00016700000003F8ull)
33 #define CVMX_POW_DS_PC \
34 	 CVMX_ADD_IO_SEG(0x0001670000000398ull)
35 #define CVMX_POW_ECC_ERR \
36 	 CVMX_ADD_IO_SEG(0x0001670000000218ull)
37 #define CVMX_POW_INT_CTL \
38 	 CVMX_ADD_IO_SEG(0x0001670000000220ull)
39 #define CVMX_POW_IQ_CNTX(offset) \
40 	 CVMX_ADD_IO_SEG(0x0001670000000340ull + (((offset) & 7) * 8))
41 #define CVMX_POW_IQ_COM_CNT \
42 	 CVMX_ADD_IO_SEG(0x0001670000000388ull)
43 #define CVMX_POW_IQ_INT \
44 	 CVMX_ADD_IO_SEG(0x0001670000000238ull)
45 #define CVMX_POW_IQ_INT_EN \
46 	 CVMX_ADD_IO_SEG(0x0001670000000240ull)
47 #define CVMX_POW_IQ_THRX(offset) \
48 	 CVMX_ADD_IO_SEG(0x00016700000003A0ull + (((offset) & 7) * 8))
49 #define CVMX_POW_NOS_CNT \
50 	 CVMX_ADD_IO_SEG(0x0001670000000228ull)
51 #define CVMX_POW_NW_TIM \
52 	 CVMX_ADD_IO_SEG(0x0001670000000210ull)
53 #define CVMX_POW_PF_RST_MSK \
54 	 CVMX_ADD_IO_SEG(0x0001670000000230ull)
55 #define CVMX_POW_PP_GRP_MSKX(offset) \
56 	 CVMX_ADD_IO_SEG(0x0001670000000000ull + (((offset) & 15) * 8))
57 #define CVMX_POW_QOS_RNDX(offset) \
58 	 CVMX_ADD_IO_SEG(0x00016700000001C0ull + (((offset) & 7) * 8))
59 #define CVMX_POW_QOS_THRX(offset) \
60 	 CVMX_ADD_IO_SEG(0x0001670000000180ull + (((offset) & 7) * 8))
61 #define CVMX_POW_TS_PC \
62 	 CVMX_ADD_IO_SEG(0x0001670000000390ull)
63 #define CVMX_POW_WA_COM_PC \
64 	 CVMX_ADD_IO_SEG(0x0001670000000380ull)
65 #define CVMX_POW_WA_PCX(offset) \
66 	 CVMX_ADD_IO_SEG(0x0001670000000300ull + (((offset) & 7) * 8))
67 #define CVMX_POW_WQ_INT \
68 	 CVMX_ADD_IO_SEG(0x0001670000000200ull)
69 #define CVMX_POW_WQ_INT_CNTX(offset) \
70 	 CVMX_ADD_IO_SEG(0x0001670000000100ull + (((offset) & 15) * 8))
71 #define CVMX_POW_WQ_INT_PC \
72 	 CVMX_ADD_IO_SEG(0x0001670000000208ull)
73 #define CVMX_POW_WQ_INT_THRX(offset) \
74 	 CVMX_ADD_IO_SEG(0x0001670000000080ull + (((offset) & 15) * 8))
75 #define CVMX_POW_WS_PCX(offset) \
76 	 CVMX_ADD_IO_SEG(0x0001670000000280ull + (((offset) & 15) * 8))
77 
78 union cvmx_pow_bist_stat {
79 	uint64_t u64;
80 	struct cvmx_pow_bist_stat_s {
81 		uint64_t reserved_32_63:32;
82 		uint64_t pp:16;
83 		uint64_t reserved_0_15:16;
84 	} s;
85 	struct cvmx_pow_bist_stat_cn30xx {
86 		uint64_t reserved_17_63:47;
87 		uint64_t pp:1;
88 		uint64_t reserved_9_15:7;
89 		uint64_t cam:1;
90 		uint64_t nbt1:1;
91 		uint64_t nbt0:1;
92 		uint64_t index:1;
93 		uint64_t fidx:1;
94 		uint64_t nbr1:1;
95 		uint64_t nbr0:1;
96 		uint64_t pend:1;
97 		uint64_t adr:1;
98 	} cn30xx;
99 	struct cvmx_pow_bist_stat_cn31xx {
100 		uint64_t reserved_18_63:46;
101 		uint64_t pp:2;
102 		uint64_t reserved_9_15:7;
103 		uint64_t cam:1;
104 		uint64_t nbt1:1;
105 		uint64_t nbt0:1;
106 		uint64_t index:1;
107 		uint64_t fidx:1;
108 		uint64_t nbr1:1;
109 		uint64_t nbr0:1;
110 		uint64_t pend:1;
111 		uint64_t adr:1;
112 	} cn31xx;
113 	struct cvmx_pow_bist_stat_cn38xx {
114 		uint64_t reserved_32_63:32;
115 		uint64_t pp:16;
116 		uint64_t reserved_10_15:6;
117 		uint64_t cam:1;
118 		uint64_t nbt:1;
119 		uint64_t index:1;
120 		uint64_t fidx:1;
121 		uint64_t nbr1:1;
122 		uint64_t nbr0:1;
123 		uint64_t pend1:1;
124 		uint64_t pend0:1;
125 		uint64_t adr1:1;
126 		uint64_t adr0:1;
127 	} cn38xx;
128 	struct cvmx_pow_bist_stat_cn38xx cn38xxp2;
129 	struct cvmx_pow_bist_stat_cn31xx cn50xx;
130 	struct cvmx_pow_bist_stat_cn52xx {
131 		uint64_t reserved_20_63:44;
132 		uint64_t pp:4;
133 		uint64_t reserved_9_15:7;
134 		uint64_t cam:1;
135 		uint64_t nbt1:1;
136 		uint64_t nbt0:1;
137 		uint64_t index:1;
138 		uint64_t fidx:1;
139 		uint64_t nbr1:1;
140 		uint64_t nbr0:1;
141 		uint64_t pend:1;
142 		uint64_t adr:1;
143 	} cn52xx;
144 	struct cvmx_pow_bist_stat_cn52xx cn52xxp1;
145 	struct cvmx_pow_bist_stat_cn56xx {
146 		uint64_t reserved_28_63:36;
147 		uint64_t pp:12;
148 		uint64_t reserved_10_15:6;
149 		uint64_t cam:1;
150 		uint64_t nbt:1;
151 		uint64_t index:1;
152 		uint64_t fidx:1;
153 		uint64_t nbr1:1;
154 		uint64_t nbr0:1;
155 		uint64_t pend1:1;
156 		uint64_t pend0:1;
157 		uint64_t adr1:1;
158 		uint64_t adr0:1;
159 	} cn56xx;
160 	struct cvmx_pow_bist_stat_cn56xx cn56xxp1;
161 	struct cvmx_pow_bist_stat_cn38xx cn58xx;
162 	struct cvmx_pow_bist_stat_cn38xx cn58xxp1;
163 };
164 
165 union cvmx_pow_ds_pc {
166 	uint64_t u64;
167 	struct cvmx_pow_ds_pc_s {
168 		uint64_t reserved_32_63:32;
169 		uint64_t ds_pc:32;
170 	} s;
171 	struct cvmx_pow_ds_pc_s cn30xx;
172 	struct cvmx_pow_ds_pc_s cn31xx;
173 	struct cvmx_pow_ds_pc_s cn38xx;
174 	struct cvmx_pow_ds_pc_s cn38xxp2;
175 	struct cvmx_pow_ds_pc_s cn50xx;
176 	struct cvmx_pow_ds_pc_s cn52xx;
177 	struct cvmx_pow_ds_pc_s cn52xxp1;
178 	struct cvmx_pow_ds_pc_s cn56xx;
179 	struct cvmx_pow_ds_pc_s cn56xxp1;
180 	struct cvmx_pow_ds_pc_s cn58xx;
181 	struct cvmx_pow_ds_pc_s cn58xxp1;
182 };
183 
184 union cvmx_pow_ecc_err {
185 	uint64_t u64;
186 	struct cvmx_pow_ecc_err_s {
187 		uint64_t reserved_45_63:19;
188 		uint64_t iop_ie:13;
189 		uint64_t reserved_29_31:3;
190 		uint64_t iop:13;
191 		uint64_t reserved_14_15:2;
192 		uint64_t rpe_ie:1;
193 		uint64_t rpe:1;
194 		uint64_t reserved_9_11:3;
195 		uint64_t syn:5;
196 		uint64_t dbe_ie:1;
197 		uint64_t sbe_ie:1;
198 		uint64_t dbe:1;
199 		uint64_t sbe:1;
200 	} s;
201 	struct cvmx_pow_ecc_err_s cn30xx;
202 	struct cvmx_pow_ecc_err_cn31xx {
203 		uint64_t reserved_14_63:50;
204 		uint64_t rpe_ie:1;
205 		uint64_t rpe:1;
206 		uint64_t reserved_9_11:3;
207 		uint64_t syn:5;
208 		uint64_t dbe_ie:1;
209 		uint64_t sbe_ie:1;
210 		uint64_t dbe:1;
211 		uint64_t sbe:1;
212 	} cn31xx;
213 	struct cvmx_pow_ecc_err_s cn38xx;
214 	struct cvmx_pow_ecc_err_cn31xx cn38xxp2;
215 	struct cvmx_pow_ecc_err_s cn50xx;
216 	struct cvmx_pow_ecc_err_s cn52xx;
217 	struct cvmx_pow_ecc_err_s cn52xxp1;
218 	struct cvmx_pow_ecc_err_s cn56xx;
219 	struct cvmx_pow_ecc_err_s cn56xxp1;
220 	struct cvmx_pow_ecc_err_s cn58xx;
221 	struct cvmx_pow_ecc_err_s cn58xxp1;
222 };
223 
224 union cvmx_pow_int_ctl {
225 	uint64_t u64;
226 	struct cvmx_pow_int_ctl_s {
227 		uint64_t reserved_6_63:58;
228 		uint64_t pfr_dis:1;
229 		uint64_t nbr_thr:5;
230 	} s;
231 	struct cvmx_pow_int_ctl_s cn30xx;
232 	struct cvmx_pow_int_ctl_s cn31xx;
233 	struct cvmx_pow_int_ctl_s cn38xx;
234 	struct cvmx_pow_int_ctl_s cn38xxp2;
235 	struct cvmx_pow_int_ctl_s cn50xx;
236 	struct cvmx_pow_int_ctl_s cn52xx;
237 	struct cvmx_pow_int_ctl_s cn52xxp1;
238 	struct cvmx_pow_int_ctl_s cn56xx;
239 	struct cvmx_pow_int_ctl_s cn56xxp1;
240 	struct cvmx_pow_int_ctl_s cn58xx;
241 	struct cvmx_pow_int_ctl_s cn58xxp1;
242 };
243 
244 union cvmx_pow_iq_cntx {
245 	uint64_t u64;
246 	struct cvmx_pow_iq_cntx_s {
247 		uint64_t reserved_32_63:32;
248 		uint64_t iq_cnt:32;
249 	} s;
250 	struct cvmx_pow_iq_cntx_s cn30xx;
251 	struct cvmx_pow_iq_cntx_s cn31xx;
252 	struct cvmx_pow_iq_cntx_s cn38xx;
253 	struct cvmx_pow_iq_cntx_s cn38xxp2;
254 	struct cvmx_pow_iq_cntx_s cn50xx;
255 	struct cvmx_pow_iq_cntx_s cn52xx;
256 	struct cvmx_pow_iq_cntx_s cn52xxp1;
257 	struct cvmx_pow_iq_cntx_s cn56xx;
258 	struct cvmx_pow_iq_cntx_s cn56xxp1;
259 	struct cvmx_pow_iq_cntx_s cn58xx;
260 	struct cvmx_pow_iq_cntx_s cn58xxp1;
261 };
262 
263 union cvmx_pow_iq_com_cnt {
264 	uint64_t u64;
265 	struct cvmx_pow_iq_com_cnt_s {
266 		uint64_t reserved_32_63:32;
267 		uint64_t iq_cnt:32;
268 	} s;
269 	struct cvmx_pow_iq_com_cnt_s cn30xx;
270 	struct cvmx_pow_iq_com_cnt_s cn31xx;
271 	struct cvmx_pow_iq_com_cnt_s cn38xx;
272 	struct cvmx_pow_iq_com_cnt_s cn38xxp2;
273 	struct cvmx_pow_iq_com_cnt_s cn50xx;
274 	struct cvmx_pow_iq_com_cnt_s cn52xx;
275 	struct cvmx_pow_iq_com_cnt_s cn52xxp1;
276 	struct cvmx_pow_iq_com_cnt_s cn56xx;
277 	struct cvmx_pow_iq_com_cnt_s cn56xxp1;
278 	struct cvmx_pow_iq_com_cnt_s cn58xx;
279 	struct cvmx_pow_iq_com_cnt_s cn58xxp1;
280 };
281 
282 union cvmx_pow_iq_int {
283 	uint64_t u64;
284 	struct cvmx_pow_iq_int_s {
285 		uint64_t reserved_8_63:56;
286 		uint64_t iq_int:8;
287 	} s;
288 	struct cvmx_pow_iq_int_s cn52xx;
289 	struct cvmx_pow_iq_int_s cn52xxp1;
290 	struct cvmx_pow_iq_int_s cn56xx;
291 	struct cvmx_pow_iq_int_s cn56xxp1;
292 };
293 
294 union cvmx_pow_iq_int_en {
295 	uint64_t u64;
296 	struct cvmx_pow_iq_int_en_s {
297 		uint64_t reserved_8_63:56;
298 		uint64_t int_en:8;
299 	} s;
300 	struct cvmx_pow_iq_int_en_s cn52xx;
301 	struct cvmx_pow_iq_int_en_s cn52xxp1;
302 	struct cvmx_pow_iq_int_en_s cn56xx;
303 	struct cvmx_pow_iq_int_en_s cn56xxp1;
304 };
305 
306 union cvmx_pow_iq_thrx {
307 	uint64_t u64;
308 	struct cvmx_pow_iq_thrx_s {
309 		uint64_t reserved_32_63:32;
310 		uint64_t iq_thr:32;
311 	} s;
312 	struct cvmx_pow_iq_thrx_s cn52xx;
313 	struct cvmx_pow_iq_thrx_s cn52xxp1;
314 	struct cvmx_pow_iq_thrx_s cn56xx;
315 	struct cvmx_pow_iq_thrx_s cn56xxp1;
316 };
317 
318 union cvmx_pow_nos_cnt {
319 	uint64_t u64;
320 	struct cvmx_pow_nos_cnt_s {
321 		uint64_t reserved_12_63:52;
322 		uint64_t nos_cnt:12;
323 	} s;
324 	struct cvmx_pow_nos_cnt_cn30xx {
325 		uint64_t reserved_7_63:57;
326 		uint64_t nos_cnt:7;
327 	} cn30xx;
328 	struct cvmx_pow_nos_cnt_cn31xx {
329 		uint64_t reserved_9_63:55;
330 		uint64_t nos_cnt:9;
331 	} cn31xx;
332 	struct cvmx_pow_nos_cnt_s cn38xx;
333 	struct cvmx_pow_nos_cnt_s cn38xxp2;
334 	struct cvmx_pow_nos_cnt_cn31xx cn50xx;
335 	struct cvmx_pow_nos_cnt_cn52xx {
336 		uint64_t reserved_10_63:54;
337 		uint64_t nos_cnt:10;
338 	} cn52xx;
339 	struct cvmx_pow_nos_cnt_cn52xx cn52xxp1;
340 	struct cvmx_pow_nos_cnt_s cn56xx;
341 	struct cvmx_pow_nos_cnt_s cn56xxp1;
342 	struct cvmx_pow_nos_cnt_s cn58xx;
343 	struct cvmx_pow_nos_cnt_s cn58xxp1;
344 };
345 
346 union cvmx_pow_nw_tim {
347 	uint64_t u64;
348 	struct cvmx_pow_nw_tim_s {
349 		uint64_t reserved_10_63:54;
350 		uint64_t nw_tim:10;
351 	} s;
352 	struct cvmx_pow_nw_tim_s cn30xx;
353 	struct cvmx_pow_nw_tim_s cn31xx;
354 	struct cvmx_pow_nw_tim_s cn38xx;
355 	struct cvmx_pow_nw_tim_s cn38xxp2;
356 	struct cvmx_pow_nw_tim_s cn50xx;
357 	struct cvmx_pow_nw_tim_s cn52xx;
358 	struct cvmx_pow_nw_tim_s cn52xxp1;
359 	struct cvmx_pow_nw_tim_s cn56xx;
360 	struct cvmx_pow_nw_tim_s cn56xxp1;
361 	struct cvmx_pow_nw_tim_s cn58xx;
362 	struct cvmx_pow_nw_tim_s cn58xxp1;
363 };
364 
365 union cvmx_pow_pf_rst_msk {
366 	uint64_t u64;
367 	struct cvmx_pow_pf_rst_msk_s {
368 		uint64_t reserved_8_63:56;
369 		uint64_t rst_msk:8;
370 	} s;
371 	struct cvmx_pow_pf_rst_msk_s cn50xx;
372 	struct cvmx_pow_pf_rst_msk_s cn52xx;
373 	struct cvmx_pow_pf_rst_msk_s cn52xxp1;
374 	struct cvmx_pow_pf_rst_msk_s cn56xx;
375 	struct cvmx_pow_pf_rst_msk_s cn56xxp1;
376 	struct cvmx_pow_pf_rst_msk_s cn58xx;
377 	struct cvmx_pow_pf_rst_msk_s cn58xxp1;
378 };
379 
380 union cvmx_pow_pp_grp_mskx {
381 	uint64_t u64;
382 	struct cvmx_pow_pp_grp_mskx_s {
383 		uint64_t reserved_48_63:16;
384 		uint64_t qos7_pri:4;
385 		uint64_t qos6_pri:4;
386 		uint64_t qos5_pri:4;
387 		uint64_t qos4_pri:4;
388 		uint64_t qos3_pri:4;
389 		uint64_t qos2_pri:4;
390 		uint64_t qos1_pri:4;
391 		uint64_t qos0_pri:4;
392 		uint64_t grp_msk:16;
393 	} s;
394 	struct cvmx_pow_pp_grp_mskx_cn30xx {
395 		uint64_t reserved_16_63:48;
396 		uint64_t grp_msk:16;
397 	} cn30xx;
398 	struct cvmx_pow_pp_grp_mskx_cn30xx cn31xx;
399 	struct cvmx_pow_pp_grp_mskx_cn30xx cn38xx;
400 	struct cvmx_pow_pp_grp_mskx_cn30xx cn38xxp2;
401 	struct cvmx_pow_pp_grp_mskx_s cn50xx;
402 	struct cvmx_pow_pp_grp_mskx_s cn52xx;
403 	struct cvmx_pow_pp_grp_mskx_s cn52xxp1;
404 	struct cvmx_pow_pp_grp_mskx_s cn56xx;
405 	struct cvmx_pow_pp_grp_mskx_s cn56xxp1;
406 	struct cvmx_pow_pp_grp_mskx_s cn58xx;
407 	struct cvmx_pow_pp_grp_mskx_s cn58xxp1;
408 };
409 
410 union cvmx_pow_qos_rndx {
411 	uint64_t u64;
412 	struct cvmx_pow_qos_rndx_s {
413 		uint64_t reserved_32_63:32;
414 		uint64_t rnd_p3:8;
415 		uint64_t rnd_p2:8;
416 		uint64_t rnd_p1:8;
417 		uint64_t rnd:8;
418 	} s;
419 	struct cvmx_pow_qos_rndx_s cn30xx;
420 	struct cvmx_pow_qos_rndx_s cn31xx;
421 	struct cvmx_pow_qos_rndx_s cn38xx;
422 	struct cvmx_pow_qos_rndx_s cn38xxp2;
423 	struct cvmx_pow_qos_rndx_s cn50xx;
424 	struct cvmx_pow_qos_rndx_s cn52xx;
425 	struct cvmx_pow_qos_rndx_s cn52xxp1;
426 	struct cvmx_pow_qos_rndx_s cn56xx;
427 	struct cvmx_pow_qos_rndx_s cn56xxp1;
428 	struct cvmx_pow_qos_rndx_s cn58xx;
429 	struct cvmx_pow_qos_rndx_s cn58xxp1;
430 };
431 
432 union cvmx_pow_qos_thrx {
433 	uint64_t u64;
434 	struct cvmx_pow_qos_thrx_s {
435 		uint64_t reserved_60_63:4;
436 		uint64_t des_cnt:12;
437 		uint64_t buf_cnt:12;
438 		uint64_t free_cnt:12;
439 		uint64_t reserved_23_23:1;
440 		uint64_t max_thr:11;
441 		uint64_t reserved_11_11:1;
442 		uint64_t min_thr:11;
443 	} s;
444 	struct cvmx_pow_qos_thrx_cn30xx {
445 		uint64_t reserved_55_63:9;
446 		uint64_t des_cnt:7;
447 		uint64_t reserved_43_47:5;
448 		uint64_t buf_cnt:7;
449 		uint64_t reserved_31_35:5;
450 		uint64_t free_cnt:7;
451 		uint64_t reserved_18_23:6;
452 		uint64_t max_thr:6;
453 		uint64_t reserved_6_11:6;
454 		uint64_t min_thr:6;
455 	} cn30xx;
456 	struct cvmx_pow_qos_thrx_cn31xx {
457 		uint64_t reserved_57_63:7;
458 		uint64_t des_cnt:9;
459 		uint64_t reserved_45_47:3;
460 		uint64_t buf_cnt:9;
461 		uint64_t reserved_33_35:3;
462 		uint64_t free_cnt:9;
463 		uint64_t reserved_20_23:4;
464 		uint64_t max_thr:8;
465 		uint64_t reserved_8_11:4;
466 		uint64_t min_thr:8;
467 	} cn31xx;
468 	struct cvmx_pow_qos_thrx_s cn38xx;
469 	struct cvmx_pow_qos_thrx_s cn38xxp2;
470 	struct cvmx_pow_qos_thrx_cn31xx cn50xx;
471 	struct cvmx_pow_qos_thrx_cn52xx {
472 		uint64_t reserved_58_63:6;
473 		uint64_t des_cnt:10;
474 		uint64_t reserved_46_47:2;
475 		uint64_t buf_cnt:10;
476 		uint64_t reserved_34_35:2;
477 		uint64_t free_cnt:10;
478 		uint64_t reserved_21_23:3;
479 		uint64_t max_thr:9;
480 		uint64_t reserved_9_11:3;
481 		uint64_t min_thr:9;
482 	} cn52xx;
483 	struct cvmx_pow_qos_thrx_cn52xx cn52xxp1;
484 	struct cvmx_pow_qos_thrx_s cn56xx;
485 	struct cvmx_pow_qos_thrx_s cn56xxp1;
486 	struct cvmx_pow_qos_thrx_s cn58xx;
487 	struct cvmx_pow_qos_thrx_s cn58xxp1;
488 };
489 
490 union cvmx_pow_ts_pc {
491 	uint64_t u64;
492 	struct cvmx_pow_ts_pc_s {
493 		uint64_t reserved_32_63:32;
494 		uint64_t ts_pc:32;
495 	} s;
496 	struct cvmx_pow_ts_pc_s cn30xx;
497 	struct cvmx_pow_ts_pc_s cn31xx;
498 	struct cvmx_pow_ts_pc_s cn38xx;
499 	struct cvmx_pow_ts_pc_s cn38xxp2;
500 	struct cvmx_pow_ts_pc_s cn50xx;
501 	struct cvmx_pow_ts_pc_s cn52xx;
502 	struct cvmx_pow_ts_pc_s cn52xxp1;
503 	struct cvmx_pow_ts_pc_s cn56xx;
504 	struct cvmx_pow_ts_pc_s cn56xxp1;
505 	struct cvmx_pow_ts_pc_s cn58xx;
506 	struct cvmx_pow_ts_pc_s cn58xxp1;
507 };
508 
509 union cvmx_pow_wa_com_pc {
510 	uint64_t u64;
511 	struct cvmx_pow_wa_com_pc_s {
512 		uint64_t reserved_32_63:32;
513 		uint64_t wa_pc:32;
514 	} s;
515 	struct cvmx_pow_wa_com_pc_s cn30xx;
516 	struct cvmx_pow_wa_com_pc_s cn31xx;
517 	struct cvmx_pow_wa_com_pc_s cn38xx;
518 	struct cvmx_pow_wa_com_pc_s cn38xxp2;
519 	struct cvmx_pow_wa_com_pc_s cn50xx;
520 	struct cvmx_pow_wa_com_pc_s cn52xx;
521 	struct cvmx_pow_wa_com_pc_s cn52xxp1;
522 	struct cvmx_pow_wa_com_pc_s cn56xx;
523 	struct cvmx_pow_wa_com_pc_s cn56xxp1;
524 	struct cvmx_pow_wa_com_pc_s cn58xx;
525 	struct cvmx_pow_wa_com_pc_s cn58xxp1;
526 };
527 
528 union cvmx_pow_wa_pcx {
529 	uint64_t u64;
530 	struct cvmx_pow_wa_pcx_s {
531 		uint64_t reserved_32_63:32;
532 		uint64_t wa_pc:32;
533 	} s;
534 	struct cvmx_pow_wa_pcx_s cn30xx;
535 	struct cvmx_pow_wa_pcx_s cn31xx;
536 	struct cvmx_pow_wa_pcx_s cn38xx;
537 	struct cvmx_pow_wa_pcx_s cn38xxp2;
538 	struct cvmx_pow_wa_pcx_s cn50xx;
539 	struct cvmx_pow_wa_pcx_s cn52xx;
540 	struct cvmx_pow_wa_pcx_s cn52xxp1;
541 	struct cvmx_pow_wa_pcx_s cn56xx;
542 	struct cvmx_pow_wa_pcx_s cn56xxp1;
543 	struct cvmx_pow_wa_pcx_s cn58xx;
544 	struct cvmx_pow_wa_pcx_s cn58xxp1;
545 };
546 
547 union cvmx_pow_wq_int {
548 	uint64_t u64;
549 	struct cvmx_pow_wq_int_s {
550 		uint64_t reserved_32_63:32;
551 		uint64_t iq_dis:16;
552 		uint64_t wq_int:16;
553 	} s;
554 	struct cvmx_pow_wq_int_s cn30xx;
555 	struct cvmx_pow_wq_int_s cn31xx;
556 	struct cvmx_pow_wq_int_s cn38xx;
557 	struct cvmx_pow_wq_int_s cn38xxp2;
558 	struct cvmx_pow_wq_int_s cn50xx;
559 	struct cvmx_pow_wq_int_s cn52xx;
560 	struct cvmx_pow_wq_int_s cn52xxp1;
561 	struct cvmx_pow_wq_int_s cn56xx;
562 	struct cvmx_pow_wq_int_s cn56xxp1;
563 	struct cvmx_pow_wq_int_s cn58xx;
564 	struct cvmx_pow_wq_int_s cn58xxp1;
565 };
566 
567 union cvmx_pow_wq_int_cntx {
568 	uint64_t u64;
569 	struct cvmx_pow_wq_int_cntx_s {
570 		uint64_t reserved_28_63:36;
571 		uint64_t tc_cnt:4;
572 		uint64_t ds_cnt:12;
573 		uint64_t iq_cnt:12;
574 	} s;
575 	struct cvmx_pow_wq_int_cntx_cn30xx {
576 		uint64_t reserved_28_63:36;
577 		uint64_t tc_cnt:4;
578 		uint64_t reserved_19_23:5;
579 		uint64_t ds_cnt:7;
580 		uint64_t reserved_7_11:5;
581 		uint64_t iq_cnt:7;
582 	} cn30xx;
583 	struct cvmx_pow_wq_int_cntx_cn31xx {
584 		uint64_t reserved_28_63:36;
585 		uint64_t tc_cnt:4;
586 		uint64_t reserved_21_23:3;
587 		uint64_t ds_cnt:9;
588 		uint64_t reserved_9_11:3;
589 		uint64_t iq_cnt:9;
590 	} cn31xx;
591 	struct cvmx_pow_wq_int_cntx_s cn38xx;
592 	struct cvmx_pow_wq_int_cntx_s cn38xxp2;
593 	struct cvmx_pow_wq_int_cntx_cn31xx cn50xx;
594 	struct cvmx_pow_wq_int_cntx_cn52xx {
595 		uint64_t reserved_28_63:36;
596 		uint64_t tc_cnt:4;
597 		uint64_t reserved_22_23:2;
598 		uint64_t ds_cnt:10;
599 		uint64_t reserved_10_11:2;
600 		uint64_t iq_cnt:10;
601 	} cn52xx;
602 	struct cvmx_pow_wq_int_cntx_cn52xx cn52xxp1;
603 	struct cvmx_pow_wq_int_cntx_s cn56xx;
604 	struct cvmx_pow_wq_int_cntx_s cn56xxp1;
605 	struct cvmx_pow_wq_int_cntx_s cn58xx;
606 	struct cvmx_pow_wq_int_cntx_s cn58xxp1;
607 };
608 
609 union cvmx_pow_wq_int_pc {
610 	uint64_t u64;
611 	struct cvmx_pow_wq_int_pc_s {
612 		uint64_t reserved_60_63:4;
613 		uint64_t pc:28;
614 		uint64_t reserved_28_31:4;
615 		uint64_t pc_thr:20;
616 		uint64_t reserved_0_7:8;
617 	} s;
618 	struct cvmx_pow_wq_int_pc_s cn30xx;
619 	struct cvmx_pow_wq_int_pc_s cn31xx;
620 	struct cvmx_pow_wq_int_pc_s cn38xx;
621 	struct cvmx_pow_wq_int_pc_s cn38xxp2;
622 	struct cvmx_pow_wq_int_pc_s cn50xx;
623 	struct cvmx_pow_wq_int_pc_s cn52xx;
624 	struct cvmx_pow_wq_int_pc_s cn52xxp1;
625 	struct cvmx_pow_wq_int_pc_s cn56xx;
626 	struct cvmx_pow_wq_int_pc_s cn56xxp1;
627 	struct cvmx_pow_wq_int_pc_s cn58xx;
628 	struct cvmx_pow_wq_int_pc_s cn58xxp1;
629 };
630 
631 union cvmx_pow_wq_int_thrx {
632 	uint64_t u64;
633 	struct cvmx_pow_wq_int_thrx_s {
634 		uint64_t reserved_29_63:35;
635 		uint64_t tc_en:1;
636 		uint64_t tc_thr:4;
637 		uint64_t reserved_23_23:1;
638 		uint64_t ds_thr:11;
639 		uint64_t reserved_11_11:1;
640 		uint64_t iq_thr:11;
641 	} s;
642 	struct cvmx_pow_wq_int_thrx_cn30xx {
643 		uint64_t reserved_29_63:35;
644 		uint64_t tc_en:1;
645 		uint64_t tc_thr:4;
646 		uint64_t reserved_18_23:6;
647 		uint64_t ds_thr:6;
648 		uint64_t reserved_6_11:6;
649 		uint64_t iq_thr:6;
650 	} cn30xx;
651 	struct cvmx_pow_wq_int_thrx_cn31xx {
652 		uint64_t reserved_29_63:35;
653 		uint64_t tc_en:1;
654 		uint64_t tc_thr:4;
655 		uint64_t reserved_20_23:4;
656 		uint64_t ds_thr:8;
657 		uint64_t reserved_8_11:4;
658 		uint64_t iq_thr:8;
659 	} cn31xx;
660 	struct cvmx_pow_wq_int_thrx_s cn38xx;
661 	struct cvmx_pow_wq_int_thrx_s cn38xxp2;
662 	struct cvmx_pow_wq_int_thrx_cn31xx cn50xx;
663 	struct cvmx_pow_wq_int_thrx_cn52xx {
664 		uint64_t reserved_29_63:35;
665 		uint64_t tc_en:1;
666 		uint64_t tc_thr:4;
667 		uint64_t reserved_21_23:3;
668 		uint64_t ds_thr:9;
669 		uint64_t reserved_9_11:3;
670 		uint64_t iq_thr:9;
671 	} cn52xx;
672 	struct cvmx_pow_wq_int_thrx_cn52xx cn52xxp1;
673 	struct cvmx_pow_wq_int_thrx_s cn56xx;
674 	struct cvmx_pow_wq_int_thrx_s cn56xxp1;
675 	struct cvmx_pow_wq_int_thrx_s cn58xx;
676 	struct cvmx_pow_wq_int_thrx_s cn58xxp1;
677 };
678 
679 union cvmx_pow_ws_pcx {
680 	uint64_t u64;
681 	struct cvmx_pow_ws_pcx_s {
682 		uint64_t reserved_32_63:32;
683 		uint64_t ws_pc:32;
684 	} s;
685 	struct cvmx_pow_ws_pcx_s cn30xx;
686 	struct cvmx_pow_ws_pcx_s cn31xx;
687 	struct cvmx_pow_ws_pcx_s cn38xx;
688 	struct cvmx_pow_ws_pcx_s cn38xxp2;
689 	struct cvmx_pow_ws_pcx_s cn50xx;
690 	struct cvmx_pow_ws_pcx_s cn52xx;
691 	struct cvmx_pow_ws_pcx_s cn52xxp1;
692 	struct cvmx_pow_ws_pcx_s cn56xx;
693 	struct cvmx_pow_ws_pcx_s cn56xxp1;
694 	struct cvmx_pow_ws_pcx_s cn58xx;
695 	struct cvmx_pow_ws_pcx_s cn58xxp1;
696 };
697 
698 #endif
699