blob: 13ce7d8c96be4099c05cd236030c6cc6b7ce0eb8 [file] [log] [blame]
Aaron Williamseb535a62020-12-11 17:05:32 +01001/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2020 Marvell International Ltd.
4 *
5 * Configuration and status register (CSR) type definitions for
6 * Octeon fpa.
7 */
8
9#ifndef __CVMX_FPA_DEFS_H__
10#define __CVMX_FPA_DEFS_H__
11
12#define CVMX_FPA_ADDR_RANGE_ERROR CVMX_FPA_ADDR_RANGE_ERROR_FUNC()
13static inline u64 CVMX_FPA_ADDR_RANGE_ERROR_FUNC(void)
14{
15 switch (cvmx_get_octeon_family()) {
16 case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
17 case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
18 case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
19 case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
20 case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
21 return 0x0001180028000458ull;
22 case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
23 case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
24 if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
25 return 0x0001280000000458ull;
26 if (OCTEON_IS_MODEL(OCTEON_CN78XX))
27 return 0x0001280000000458ull;
28 case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
29 return 0x0001280000000458ull;
30 }
31 return 0x0001280000000458ull;
32}
33
34#define CVMX_FPA_AURAX_CFG(offset) (0x0001280020100000ull + ((offset) & 1023) * 8)
35#define CVMX_FPA_AURAX_CNT(offset) (0x0001280020200000ull + ((offset) & 1023) * 8)
36#define CVMX_FPA_AURAX_CNT_ADD(offset) (0x0001280020300000ull + ((offset) & 1023) * 8)
37#define CVMX_FPA_AURAX_CNT_LEVELS(offset) (0x0001280020800000ull + ((offset) & 1023) * 8)
38#define CVMX_FPA_AURAX_CNT_LIMIT(offset) (0x0001280020400000ull + ((offset) & 1023) * 8)
39#define CVMX_FPA_AURAX_CNT_THRESHOLD(offset) (0x0001280020500000ull + ((offset) & 1023) * 8)
40#define CVMX_FPA_AURAX_INT(offset) (0x0001280020600000ull + ((offset) & 1023) * 8)
41#define CVMX_FPA_AURAX_POOL(offset) (0x0001280020000000ull + ((offset) & 1023) * 8)
42#define CVMX_FPA_AURAX_POOL_LEVELS(offset) (0x0001280020700000ull + ((offset) & 1023) * 8)
43#define CVMX_FPA_BIST_STATUS CVMX_FPA_BIST_STATUS_FUNC()
44static inline u64 CVMX_FPA_BIST_STATUS_FUNC(void)
45{
46 switch (cvmx_get_octeon_family()) {
47 case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
48 case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
49 case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
50 case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
51 case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
52 case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
53 return 0x00011800280000E8ull;
54 case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
55 if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
56 return 0x00012800000000E8ull;
57 if (OCTEON_IS_MODEL(OCTEON_CN78XX))
58 return 0x00012800000000E8ull;
59 case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
60 case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
61 return 0x00012800000000E8ull;
62 }
63 return 0x00012800000000E8ull;
64}
65
66#ifndef CVMX_FPA_CLK_COUNT // test-only (also in octeon_ddr.h)
67#define CVMX_FPA_CLK_COUNT (0x00012800000000F0ull)
68#endif
69#define CVMX_FPA_CTL_STATUS (0x0001180028000050ull)
70#define CVMX_FPA_ECC_CTL (0x0001280000000058ull)
71#define CVMX_FPA_ECC_INT (0x0001280000000068ull)
72#define CVMX_FPA_ERR_INT (0x0001280000000040ull)
73#define CVMX_FPA_FPF0_MARKS (0x0001180028000000ull)
74#define CVMX_FPA_FPF0_SIZE (0x0001180028000058ull)
75#define CVMX_FPA_FPF1_MARKS CVMX_FPA_FPFX_MARKS(1)
76#define CVMX_FPA_FPF2_MARKS CVMX_FPA_FPFX_MARKS(2)
77#define CVMX_FPA_FPF3_MARKS CVMX_FPA_FPFX_MARKS(3)
78#define CVMX_FPA_FPF4_MARKS CVMX_FPA_FPFX_MARKS(4)
79#define CVMX_FPA_FPF5_MARKS CVMX_FPA_FPFX_MARKS(5)
80#define CVMX_FPA_FPF6_MARKS CVMX_FPA_FPFX_MARKS(6)
81#define CVMX_FPA_FPF7_MARKS CVMX_FPA_FPFX_MARKS(7)
82#define CVMX_FPA_FPF8_MARKS (0x0001180028000240ull)
83#define CVMX_FPA_FPF8_SIZE (0x0001180028000248ull)
84#define CVMX_FPA_FPFX_MARKS(offset) (0x0001180028000008ull + ((offset) & 7) * 8 - 8 * 1)
85#define CVMX_FPA_FPFX_SIZE(offset) (0x0001180028000060ull + ((offset) & 7) * 8 - 8 * 1)
86#define CVMX_FPA_GEN_CFG (0x0001280000000050ull)
87#define CVMX_FPA_INT_ENB (0x0001180028000048ull)
88#define CVMX_FPA_INT_SUM (0x0001180028000040ull)
89#define CVMX_FPA_PACKET_THRESHOLD (0x0001180028000460ull)
90#define CVMX_FPA_POOLX_AVAILABLE(offset) (0x0001280010300000ull + ((offset) & 63) * 8)
91#define CVMX_FPA_POOLX_CFG(offset) (0x0001280010000000ull + ((offset) & 63) * 8)
92static inline u64 CVMX_FPA_POOLX_END_ADDR(unsigned long offset)
93{
94 switch (cvmx_get_octeon_family()) {
95 case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
96 case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
97 case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
98 case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
99 return 0x0001180028000358ull + (offset) * 8;
100 case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
101 return 0x0001180028000358ull + (offset) * 8;
102 case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
103 case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
104 return 0x0001280010600000ull + (offset) * 8;
105 case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
106 if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
107 return 0x0001280010600000ull + (offset) * 8;
108 if (OCTEON_IS_MODEL(OCTEON_CN78XX))
109 return 0x0001280010600000ull + (offset) * 8;
110 }
111 return 0x0001280010600000ull + (offset) * 8;
112}
113
114#define CVMX_FPA_POOLX_FPF_MARKS(offset) (0x0001280010100000ull + ((offset) & 63) * 8)
115#define CVMX_FPA_POOLX_INT(offset) (0x0001280010A00000ull + ((offset) & 63) * 8)
116#define CVMX_FPA_POOLX_OP_PC(offset) (0x0001280010F00000ull + ((offset) & 63) * 8)
117#define CVMX_FPA_POOLX_STACK_ADDR(offset) (0x0001280010900000ull + ((offset) & 63) * 8)
118#define CVMX_FPA_POOLX_STACK_BASE(offset) (0x0001280010700000ull + ((offset) & 63) * 8)
119#define CVMX_FPA_POOLX_STACK_END(offset) (0x0001280010800000ull + ((offset) & 63) * 8)
120static inline u64 CVMX_FPA_POOLX_START_ADDR(unsigned long offset)
121{
122 switch (cvmx_get_octeon_family()) {
123 case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
124 case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
125 case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
126 case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
127 return 0x0001180028000258ull + (offset) * 8;
128 case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
129 return 0x0001180028000258ull + (offset) * 8;
130 case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
131 case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
132 return 0x0001280010500000ull + (offset) * 8;
133 case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
134 if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
135 return 0x0001280010500000ull + (offset) * 8;
136 if (OCTEON_IS_MODEL(OCTEON_CN78XX))
137 return 0x0001280010500000ull + (offset) * 8;
138 }
139 return 0x0001280010500000ull + (offset) * 8;
140}
141
142static inline u64 CVMX_FPA_POOLX_THRESHOLD(unsigned long offset)
143{
144 switch (cvmx_get_octeon_family()) {
145 case OCTEON_CN70XX & OCTEON_FAMILY_MASK:
146 case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
147 case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
148 case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
149 case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
150 return 0x0001180028000140ull + (offset) * 8;
151 case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
152 return 0x0001180028000140ull + (offset) * 8;
153 case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
154 case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
155 return 0x0001280010400000ull + (offset) * 8;
156 case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
157 if (OCTEON_IS_MODEL(OCTEON_CN78XX_PASS1_X))
158 return 0x0001280010400000ull + (offset) * 8;
159 if (OCTEON_IS_MODEL(OCTEON_CN78XX))
160 return 0x0001280010400000ull + (offset) * 8;
161 }
162 return 0x0001280010400000ull + (offset) * 8;
163}
164
165#define CVMX_FPA_QUE0_PAGE_INDEX CVMX_FPA_QUEX_PAGE_INDEX(0)
166#define CVMX_FPA_QUE1_PAGE_INDEX CVMX_FPA_QUEX_PAGE_INDEX(1)
167#define CVMX_FPA_QUE2_PAGE_INDEX CVMX_FPA_QUEX_PAGE_INDEX(2)
168#define CVMX_FPA_QUE3_PAGE_INDEX CVMX_FPA_QUEX_PAGE_INDEX(3)
169#define CVMX_FPA_QUE4_PAGE_INDEX CVMX_FPA_QUEX_PAGE_INDEX(4)
170#define CVMX_FPA_QUE5_PAGE_INDEX CVMX_FPA_QUEX_PAGE_INDEX(5)
171#define CVMX_FPA_QUE6_PAGE_INDEX CVMX_FPA_QUEX_PAGE_INDEX(6)
172#define CVMX_FPA_QUE7_PAGE_INDEX CVMX_FPA_QUEX_PAGE_INDEX(7)
173#define CVMX_FPA_QUE8_PAGE_INDEX (0x0001180028000250ull)
174#define CVMX_FPA_QUEX_AVAILABLE(offset) (0x0001180028000098ull + ((offset) & 15) * 8)
175#define CVMX_FPA_QUEX_PAGE_INDEX(offset) (0x00011800280000F0ull + ((offset) & 7) * 8)
176#define CVMX_FPA_QUE_ACT (0x0001180028000138ull)
177#define CVMX_FPA_QUE_EXP (0x0001180028000130ull)
178#define CVMX_FPA_RD_LATENCY_PC (0x0001280000000610ull)
179#define CVMX_FPA_RD_REQ_PC (0x0001280000000600ull)
180#define CVMX_FPA_RED_DELAY (0x0001280000000100ull)
181#define CVMX_FPA_SFT_RST (0x0001280000000000ull)
182#define CVMX_FPA_WART_CTL (0x00011800280000D8ull)
183#define CVMX_FPA_WART_STATUS (0x00011800280000E0ull)
184#define CVMX_FPA_WQE_THRESHOLD (0x0001180028000468ull)
185
186/**
187 * cvmx_fpa_addr_range_error
188 *
189 * When any FPA_POOL()_INT[RANGE] error occurs, this register is latched with additional
190 * error information.
191 */
192union cvmx_fpa_addr_range_error {
193 u64 u64;
194 struct cvmx_fpa_addr_range_error_s {
195 u64 reserved_0_63 : 64;
196 } s;
197 struct cvmx_fpa_addr_range_error_cn61xx {
198 u64 reserved_38_63 : 26;
199 u64 pool : 5;
200 u64 addr : 33;
201 } cn61xx;
202 struct cvmx_fpa_addr_range_error_cn61xx cn66xx;
203 struct cvmx_fpa_addr_range_error_cn61xx cn68xx;
204 struct cvmx_fpa_addr_range_error_cn61xx cn68xxp1;
205 struct cvmx_fpa_addr_range_error_cn61xx cn70xx;
206 struct cvmx_fpa_addr_range_error_cn61xx cn70xxp1;
207 struct cvmx_fpa_addr_range_error_cn73xx {
208 u64 reserved_54_63 : 10;
209 u64 pool : 6;
210 u64 reserved_42_47 : 6;
211 u64 addr : 42;
212 } cn73xx;
213 struct cvmx_fpa_addr_range_error_cn73xx cn78xx;
214 struct cvmx_fpa_addr_range_error_cn73xx cn78xxp1;
215 struct cvmx_fpa_addr_range_error_cn61xx cnf71xx;
216 struct cvmx_fpa_addr_range_error_cn73xx cnf75xx;
217};
218
219typedef union cvmx_fpa_addr_range_error cvmx_fpa_addr_range_error_t;
220
221/**
222 * cvmx_fpa_aura#_cfg
223 *
224 * This register configures aura backpressure, etc.
225 *
226 */
227union cvmx_fpa_aurax_cfg {
228 u64 u64;
229 struct cvmx_fpa_aurax_cfg_s {
230 u64 reserved_10_63 : 54;
231 u64 ptr_dis : 1;
232 u64 avg_con : 9;
233 } s;
234 struct cvmx_fpa_aurax_cfg_s cn73xx;
235 struct cvmx_fpa_aurax_cfg_s cn78xx;
236 struct cvmx_fpa_aurax_cfg_s cn78xxp1;
237 struct cvmx_fpa_aurax_cfg_s cnf75xx;
238};
239
240typedef union cvmx_fpa_aurax_cfg cvmx_fpa_aurax_cfg_t;
241
242/**
243 * cvmx_fpa_aura#_cnt
244 */
245union cvmx_fpa_aurax_cnt {
246 u64 u64;
247 struct cvmx_fpa_aurax_cnt_s {
248 u64 reserved_40_63 : 24;
249 u64 cnt : 40;
250 } s;
251 struct cvmx_fpa_aurax_cnt_s cn73xx;
252 struct cvmx_fpa_aurax_cnt_s cn78xx;
253 struct cvmx_fpa_aurax_cnt_s cn78xxp1;
254 struct cvmx_fpa_aurax_cnt_s cnf75xx;
255};
256
257typedef union cvmx_fpa_aurax_cnt cvmx_fpa_aurax_cnt_t;
258
259/**
260 * cvmx_fpa_aura#_cnt_add
261 */
262union cvmx_fpa_aurax_cnt_add {
263 u64 u64;
264 struct cvmx_fpa_aurax_cnt_add_s {
265 u64 reserved_40_63 : 24;
266 u64 cnt : 40;
267 } s;
268 struct cvmx_fpa_aurax_cnt_add_s cn73xx;
269 struct cvmx_fpa_aurax_cnt_add_s cn78xx;
270 struct cvmx_fpa_aurax_cnt_add_s cn78xxp1;
271 struct cvmx_fpa_aurax_cnt_add_s cnf75xx;
272};
273
274typedef union cvmx_fpa_aurax_cnt_add cvmx_fpa_aurax_cnt_add_t;
275
276/**
277 * cvmx_fpa_aura#_cnt_levels
278 */
279union cvmx_fpa_aurax_cnt_levels {
280 u64 u64;
281 struct cvmx_fpa_aurax_cnt_levels_s {
282 u64 reserved_41_63 : 23;
283 u64 drop_dis : 1;
284 u64 bp_ena : 1;
285 u64 red_ena : 1;
286 u64 shift : 6;
287 u64 bp : 8;
288 u64 drop : 8;
289 u64 pass : 8;
290 u64 level : 8;
291 } s;
292 struct cvmx_fpa_aurax_cnt_levels_s cn73xx;
293 struct cvmx_fpa_aurax_cnt_levels_s cn78xx;
294 struct cvmx_fpa_aurax_cnt_levels_s cn78xxp1;
295 struct cvmx_fpa_aurax_cnt_levels_s cnf75xx;
296};
297
298typedef union cvmx_fpa_aurax_cnt_levels cvmx_fpa_aurax_cnt_levels_t;
299
300/**
301 * cvmx_fpa_aura#_cnt_limit
302 */
303union cvmx_fpa_aurax_cnt_limit {
304 u64 u64;
305 struct cvmx_fpa_aurax_cnt_limit_s {
306 u64 reserved_40_63 : 24;
307 u64 limit : 40;
308 } s;
309 struct cvmx_fpa_aurax_cnt_limit_s cn73xx;
310 struct cvmx_fpa_aurax_cnt_limit_s cn78xx;
311 struct cvmx_fpa_aurax_cnt_limit_s cn78xxp1;
312 struct cvmx_fpa_aurax_cnt_limit_s cnf75xx;
313};
314
315typedef union cvmx_fpa_aurax_cnt_limit cvmx_fpa_aurax_cnt_limit_t;
316
317/**
318 * cvmx_fpa_aura#_cnt_threshold
319 */
320union cvmx_fpa_aurax_cnt_threshold {
321 u64 u64;
322 struct cvmx_fpa_aurax_cnt_threshold_s {
323 u64 reserved_40_63 : 24;
324 u64 thresh : 40;
325 } s;
326 struct cvmx_fpa_aurax_cnt_threshold_s cn73xx;
327 struct cvmx_fpa_aurax_cnt_threshold_s cn78xx;
328 struct cvmx_fpa_aurax_cnt_threshold_s cn78xxp1;
329 struct cvmx_fpa_aurax_cnt_threshold_s cnf75xx;
330};
331
332typedef union cvmx_fpa_aurax_cnt_threshold cvmx_fpa_aurax_cnt_threshold_t;
333
334/**
335 * cvmx_fpa_aura#_int
336 */
337union cvmx_fpa_aurax_int {
338 u64 u64;
339 struct cvmx_fpa_aurax_int_s {
340 u64 reserved_1_63 : 63;
341 u64 thresh : 1;
342 } s;
343 struct cvmx_fpa_aurax_int_s cn73xx;
344 struct cvmx_fpa_aurax_int_s cn78xx;
345 struct cvmx_fpa_aurax_int_s cn78xxp1;
346 struct cvmx_fpa_aurax_int_s cnf75xx;
347};
348
349typedef union cvmx_fpa_aurax_int cvmx_fpa_aurax_int_t;
350
351/**
352 * cvmx_fpa_aura#_pool
353 *
354 * Provides the mapping from each aura to the pool number.
355 *
356 */
357union cvmx_fpa_aurax_pool {
358 u64 u64;
359 struct cvmx_fpa_aurax_pool_s {
360 u64 reserved_6_63 : 58;
361 u64 pool : 6;
362 } s;
363 struct cvmx_fpa_aurax_pool_s cn73xx;
364 struct cvmx_fpa_aurax_pool_s cn78xx;
365 struct cvmx_fpa_aurax_pool_s cn78xxp1;
366 struct cvmx_fpa_aurax_pool_s cnf75xx;
367};
368
369typedef union cvmx_fpa_aurax_pool cvmx_fpa_aurax_pool_t;
370
371/**
372 * cvmx_fpa_aura#_pool_levels
373 */
374union cvmx_fpa_aurax_pool_levels {
375 u64 u64;
376 struct cvmx_fpa_aurax_pool_levels_s {
377 u64 reserved_41_63 : 23;
378 u64 drop_dis : 1;
379 u64 bp_ena : 1;
380 u64 red_ena : 1;
381 u64 shift : 6;
382 u64 bp : 8;
383 u64 drop : 8;
384 u64 pass : 8;
385 u64 level : 8;
386 } s;
387 struct cvmx_fpa_aurax_pool_levels_s cn73xx;
388 struct cvmx_fpa_aurax_pool_levels_s cn78xx;
389 struct cvmx_fpa_aurax_pool_levels_s cn78xxp1;
390 struct cvmx_fpa_aurax_pool_levels_s cnf75xx;
391};
392
393typedef union cvmx_fpa_aurax_pool_levels cvmx_fpa_aurax_pool_levels_t;
394
395/**
396 * cvmx_fpa_bist_status
397 *
398 * This register provides the result of the BIST run on the FPA memories.
399 *
400 */
401union cvmx_fpa_bist_status {
402 u64 u64;
403 struct cvmx_fpa_bist_status_s {
404 u64 reserved_0_63 : 64;
405 } s;
406 struct cvmx_fpa_bist_status_cn30xx {
407 u64 reserved_5_63 : 59;
408 u64 frd : 1;
409 u64 fpf0 : 1;
410 u64 fpf1 : 1;
411 u64 ffr : 1;
412 u64 fdr : 1;
413 } cn30xx;
414 struct cvmx_fpa_bist_status_cn30xx cn31xx;
415 struct cvmx_fpa_bist_status_cn30xx cn38xx;
416 struct cvmx_fpa_bist_status_cn30xx cn38xxp2;
417 struct cvmx_fpa_bist_status_cn30xx cn50xx;
418 struct cvmx_fpa_bist_status_cn30xx cn52xx;
419 struct cvmx_fpa_bist_status_cn30xx cn52xxp1;
420 struct cvmx_fpa_bist_status_cn30xx cn56xx;
421 struct cvmx_fpa_bist_status_cn30xx cn56xxp1;
422 struct cvmx_fpa_bist_status_cn30xx cn58xx;
423 struct cvmx_fpa_bist_status_cn30xx cn58xxp1;
424 struct cvmx_fpa_bist_status_cn30xx cn61xx;
425 struct cvmx_fpa_bist_status_cn30xx cn63xx;
426 struct cvmx_fpa_bist_status_cn30xx cn63xxp1;
427 struct cvmx_fpa_bist_status_cn30xx cn66xx;
428 struct cvmx_fpa_bist_status_cn30xx cn68xx;
429 struct cvmx_fpa_bist_status_cn30xx cn68xxp1;
430 struct cvmx_fpa_bist_status_cn30xx cn70xx;
431 struct cvmx_fpa_bist_status_cn30xx cn70xxp1;
432 struct cvmx_fpa_bist_status_cn73xx {
433 u64 reserved_38_63 : 26;
434 u64 status : 38;
435 } cn73xx;
436 struct cvmx_fpa_bist_status_cn73xx cn78xx;
437 struct cvmx_fpa_bist_status_cn73xx cn78xxp1;
438 struct cvmx_fpa_bist_status_cn30xx cnf71xx;
439 struct cvmx_fpa_bist_status_cn73xx cnf75xx;
440};
441
442typedef union cvmx_fpa_bist_status cvmx_fpa_bist_status_t;
443
444/**
445 * cvmx_fpa_clk_count
446 *
447 * This register counts the number of coprocessor-clock cycles since the deassertion of reset.
448 *
449 */
450union cvmx_fpa_clk_count {
451 u64 u64;
452 struct cvmx_fpa_clk_count_s {
453 u64 clk_cnt : 64;
454 } s;
455 struct cvmx_fpa_clk_count_s cn73xx;
456 struct cvmx_fpa_clk_count_s cn78xx;
457 struct cvmx_fpa_clk_count_s cn78xxp1;
458 struct cvmx_fpa_clk_count_s cnf75xx;
459};
460
461typedef union cvmx_fpa_clk_count cvmx_fpa_clk_count_t;
462
463/**
464 * cvmx_fpa_ctl_status
465 *
466 * The FPA's interrupt enable register.
467 *
468 */
469union cvmx_fpa_ctl_status {
470 u64 u64;
471 struct cvmx_fpa_ctl_status_s {
472 u64 reserved_21_63 : 43;
473 u64 free_en : 1;
474 u64 ret_off : 1;
475 u64 req_off : 1;
476 u64 reset : 1;
477 u64 use_ldt : 1;
478 u64 use_stt : 1;
479 u64 enb : 1;
480 u64 mem1_err : 7;
481 u64 mem0_err : 7;
482 } s;
483 struct cvmx_fpa_ctl_status_cn30xx {
484 u64 reserved_18_63 : 46;
485 u64 reset : 1;
486 u64 use_ldt : 1;
487 u64 use_stt : 1;
488 u64 enb : 1;
489 u64 mem1_err : 7;
490 u64 mem0_err : 7;
491 } cn30xx;
492 struct cvmx_fpa_ctl_status_cn30xx cn31xx;
493 struct cvmx_fpa_ctl_status_cn30xx cn38xx;
494 struct cvmx_fpa_ctl_status_cn30xx cn38xxp2;
495 struct cvmx_fpa_ctl_status_cn30xx cn50xx;
496 struct cvmx_fpa_ctl_status_cn30xx cn52xx;
497 struct cvmx_fpa_ctl_status_cn30xx cn52xxp1;
498 struct cvmx_fpa_ctl_status_cn30xx cn56xx;
499 struct cvmx_fpa_ctl_status_cn30xx cn56xxp1;
500 struct cvmx_fpa_ctl_status_cn30xx cn58xx;
501 struct cvmx_fpa_ctl_status_cn30xx cn58xxp1;
502 struct cvmx_fpa_ctl_status_s cn61xx;
503 struct cvmx_fpa_ctl_status_s cn63xx;
504 struct cvmx_fpa_ctl_status_cn30xx cn63xxp1;
505 struct cvmx_fpa_ctl_status_s cn66xx;
506 struct cvmx_fpa_ctl_status_s cn68xx;
507 struct cvmx_fpa_ctl_status_s cn68xxp1;
508 struct cvmx_fpa_ctl_status_s cn70xx;
509 struct cvmx_fpa_ctl_status_s cn70xxp1;
510 struct cvmx_fpa_ctl_status_s cnf71xx;
511};
512
513typedef union cvmx_fpa_ctl_status cvmx_fpa_ctl_status_t;
514
515/**
516 * cvmx_fpa_ecc_ctl
517 *
518 * This register allows inserting ECC errors for testing.
519 *
520 */
521union cvmx_fpa_ecc_ctl {
522 u64 u64;
523 struct cvmx_fpa_ecc_ctl_s {
524 u64 reserved_62_63 : 2;
525 u64 ram_flip1 : 20;
526 u64 reserved_41_41 : 1;
527 u64 ram_flip0 : 20;
528 u64 reserved_20_20 : 1;
529 u64 ram_cdis : 20;
530 } s;
531 struct cvmx_fpa_ecc_ctl_s cn73xx;
532 struct cvmx_fpa_ecc_ctl_s cn78xx;
533 struct cvmx_fpa_ecc_ctl_s cn78xxp1;
534 struct cvmx_fpa_ecc_ctl_s cnf75xx;
535};
536
537typedef union cvmx_fpa_ecc_ctl cvmx_fpa_ecc_ctl_t;
538
539/**
540 * cvmx_fpa_ecc_int
541 *
542 * This register contains ECC error interrupt summary bits.
543 *
544 */
545union cvmx_fpa_ecc_int {
546 u64 u64;
547 struct cvmx_fpa_ecc_int_s {
548 u64 reserved_52_63 : 12;
549 u64 ram_dbe : 20;
550 u64 reserved_20_31 : 12;
551 u64 ram_sbe : 20;
552 } s;
553 struct cvmx_fpa_ecc_int_s cn73xx;
554 struct cvmx_fpa_ecc_int_s cn78xx;
555 struct cvmx_fpa_ecc_int_s cn78xxp1;
556 struct cvmx_fpa_ecc_int_s cnf75xx;
557};
558
559typedef union cvmx_fpa_ecc_int cvmx_fpa_ecc_int_t;
560
561/**
562 * cvmx_fpa_err_int
563 *
564 * This register contains the global (non-pool) error interrupt summary bits of the FPA.
565 *
566 */
567union cvmx_fpa_err_int {
568 u64 u64;
569 struct cvmx_fpa_err_int_s {
570 u64 reserved_4_63 : 60;
571 u64 hw_sub : 1;
572 u64 hw_add : 1;
573 u64 cnt_sub : 1;
574 u64 cnt_add : 1;
575 } s;
576 struct cvmx_fpa_err_int_s cn73xx;
577 struct cvmx_fpa_err_int_s cn78xx;
578 struct cvmx_fpa_err_int_s cn78xxp1;
579 struct cvmx_fpa_err_int_s cnf75xx;
580};
581
582typedef union cvmx_fpa_err_int cvmx_fpa_err_int_t;
583
584/**
585 * cvmx_fpa_fpf#_marks
586 *
587 * "The high and low watermark register that determines when we write and read free pages from
588 * L2C
589 * for Queue 1. The value of FPF_RD and FPF_WR should have at least a 33 difference. Recommend
590 * value
591 * is FPF_RD == (FPA_FPF#_SIZE[FPF_SIZ] * .25) and FPF_WR == (FPA_FPF#_SIZE[FPF_SIZ] * .75)"
592 */
593union cvmx_fpa_fpfx_marks {
594 u64 u64;
595 struct cvmx_fpa_fpfx_marks_s {
596 u64 reserved_22_63 : 42;
597 u64 fpf_wr : 11;
598 u64 fpf_rd : 11;
599 } s;
600 struct cvmx_fpa_fpfx_marks_s cn38xx;
601 struct cvmx_fpa_fpfx_marks_s cn38xxp2;
602 struct cvmx_fpa_fpfx_marks_s cn56xx;
603 struct cvmx_fpa_fpfx_marks_s cn56xxp1;
604 struct cvmx_fpa_fpfx_marks_s cn58xx;
605 struct cvmx_fpa_fpfx_marks_s cn58xxp1;
606 struct cvmx_fpa_fpfx_marks_s cn61xx;
607 struct cvmx_fpa_fpfx_marks_s cn63xx;
608 struct cvmx_fpa_fpfx_marks_s cn63xxp1;
609 struct cvmx_fpa_fpfx_marks_s cn66xx;
610 struct cvmx_fpa_fpfx_marks_s cn68xx;
611 struct cvmx_fpa_fpfx_marks_s cn68xxp1;
612 struct cvmx_fpa_fpfx_marks_s cn70xx;
613 struct cvmx_fpa_fpfx_marks_s cn70xxp1;
614 struct cvmx_fpa_fpfx_marks_s cnf71xx;
615};
616
617typedef union cvmx_fpa_fpfx_marks cvmx_fpa_fpfx_marks_t;
618
619/**
620 * cvmx_fpa_fpf#_size
621 *
622 * "FPA_FPFX_SIZE = FPA's Queue 1-7 Free Page FIFO Size
623 * The number of page pointers that will be kept local to the FPA for this Queue. FPA Queues are
624 * assigned in order from Queue 0 to Queue 7, though only Queue 0 through Queue x can be used.
625 * The sum of the 8 (0-7) FPA_FPF#_SIZE registers must be limited to 2048."
626 */
627union cvmx_fpa_fpfx_size {
628 u64 u64;
629 struct cvmx_fpa_fpfx_size_s {
630 u64 reserved_11_63 : 53;
631 u64 fpf_siz : 11;
632 } s;
633 struct cvmx_fpa_fpfx_size_s cn38xx;
634 struct cvmx_fpa_fpfx_size_s cn38xxp2;
635 struct cvmx_fpa_fpfx_size_s cn56xx;
636 struct cvmx_fpa_fpfx_size_s cn56xxp1;
637 struct cvmx_fpa_fpfx_size_s cn58xx;
638 struct cvmx_fpa_fpfx_size_s cn58xxp1;
639 struct cvmx_fpa_fpfx_size_s cn61xx;
640 struct cvmx_fpa_fpfx_size_s cn63xx;
641 struct cvmx_fpa_fpfx_size_s cn63xxp1;
642 struct cvmx_fpa_fpfx_size_s cn66xx;
643 struct cvmx_fpa_fpfx_size_s cn68xx;
644 struct cvmx_fpa_fpfx_size_s cn68xxp1;
645 struct cvmx_fpa_fpfx_size_s cn70xx;
646 struct cvmx_fpa_fpfx_size_s cn70xxp1;
647 struct cvmx_fpa_fpfx_size_s cnf71xx;
648};
649
650typedef union cvmx_fpa_fpfx_size cvmx_fpa_fpfx_size_t;
651
652/**
653 * cvmx_fpa_fpf0_marks
654 *
655 * "The high and low watermark register that determines when we write and read free pages from
656 * L2C
657 * for Queue 0. The value of FPF_RD and FPF_WR should have at least a 33 difference. Recommend
658 * value
659 * is FPF_RD == (FPA_FPF#_SIZE[FPF_SIZ] * .25) and FPF_WR == (FPA_FPF#_SIZE[FPF_SIZ] * .75)"
660 */
661union cvmx_fpa_fpf0_marks {
662 u64 u64;
663 struct cvmx_fpa_fpf0_marks_s {
664 u64 reserved_24_63 : 40;
665 u64 fpf_wr : 12;
666 u64 fpf_rd : 12;
667 } s;
668 struct cvmx_fpa_fpf0_marks_s cn38xx;
669 struct cvmx_fpa_fpf0_marks_s cn38xxp2;
670 struct cvmx_fpa_fpf0_marks_s cn56xx;
671 struct cvmx_fpa_fpf0_marks_s cn56xxp1;
672 struct cvmx_fpa_fpf0_marks_s cn58xx;
673 struct cvmx_fpa_fpf0_marks_s cn58xxp1;
674 struct cvmx_fpa_fpf0_marks_s cn61xx;
675 struct cvmx_fpa_fpf0_marks_s cn63xx;
676 struct cvmx_fpa_fpf0_marks_s cn63xxp1;
677 struct cvmx_fpa_fpf0_marks_s cn66xx;
678 struct cvmx_fpa_fpf0_marks_s cn68xx;
679 struct cvmx_fpa_fpf0_marks_s cn68xxp1;
680 struct cvmx_fpa_fpf0_marks_s cn70xx;
681 struct cvmx_fpa_fpf0_marks_s cn70xxp1;
682 struct cvmx_fpa_fpf0_marks_s cnf71xx;
683};
684
685typedef union cvmx_fpa_fpf0_marks cvmx_fpa_fpf0_marks_t;
686
687/**
688 * cvmx_fpa_fpf0_size
689 *
690 * "The number of page pointers that will be kept local to the FPA for this Queue. FPA Queues are
691 * assigned in order from Queue 0 to Queue 7, though only Queue 0 through Queue x can be used.
692 * The sum of the 8 (0-7) FPA_FPF#_SIZE registers must be limited to 2048."
693 */
694union cvmx_fpa_fpf0_size {
695 u64 u64;
696 struct cvmx_fpa_fpf0_size_s {
697 u64 reserved_12_63 : 52;
698 u64 fpf_siz : 12;
699 } s;
700 struct cvmx_fpa_fpf0_size_s cn38xx;
701 struct cvmx_fpa_fpf0_size_s cn38xxp2;
702 struct cvmx_fpa_fpf0_size_s cn56xx;
703 struct cvmx_fpa_fpf0_size_s cn56xxp1;
704 struct cvmx_fpa_fpf0_size_s cn58xx;
705 struct cvmx_fpa_fpf0_size_s cn58xxp1;
706 struct cvmx_fpa_fpf0_size_s cn61xx;
707 struct cvmx_fpa_fpf0_size_s cn63xx;
708 struct cvmx_fpa_fpf0_size_s cn63xxp1;
709 struct cvmx_fpa_fpf0_size_s cn66xx;
710 struct cvmx_fpa_fpf0_size_s cn68xx;
711 struct cvmx_fpa_fpf0_size_s cn68xxp1;
712 struct cvmx_fpa_fpf0_size_s cn70xx;
713 struct cvmx_fpa_fpf0_size_s cn70xxp1;
714 struct cvmx_fpa_fpf0_size_s cnf71xx;
715};
716
717typedef union cvmx_fpa_fpf0_size cvmx_fpa_fpf0_size_t;
718
719/**
720 * cvmx_fpa_fpf8_marks
721 *
722 * Reserved through 0x238 for additional thresholds
723 *
724 * FPA_FPF8_MARKS = FPA's Queue 8 Free Page FIFO Read Write Marks
725 *
726 * The high and low watermark register that determines when we write and read free pages from L2C
727 * for Queue 8. The value of FPF_RD and FPF_WR should have at least a 33 difference. Recommend value
728 * is FPF_RD == (FPA_FPF#_SIZE[FPF_SIZ] * .25) and FPF_WR == (FPA_FPF#_SIZE[FPF_SIZ] * .75)
729 */
730union cvmx_fpa_fpf8_marks {
731 u64 u64;
732 struct cvmx_fpa_fpf8_marks_s {
733 u64 reserved_22_63 : 42;
734 u64 fpf_wr : 11;
735 u64 fpf_rd : 11;
736 } s;
737 struct cvmx_fpa_fpf8_marks_s cn68xx;
738 struct cvmx_fpa_fpf8_marks_s cn68xxp1;
739};
740
741typedef union cvmx_fpa_fpf8_marks cvmx_fpa_fpf8_marks_t;
742
743/**
744 * cvmx_fpa_fpf8_size
745 *
746 * FPA_FPF8_SIZE = FPA's Queue 8 Free Page FIFO Size
747 *
748 * The number of page pointers that will be kept local to the FPA for this Queue. FPA Queues are
749 * assigned in order from Queue 0 to Queue 7, though only Queue 0 through Queue x can be used.
750 * The sum of the 9 (0-8) FPA_FPF#_SIZE registers must be limited to 2048.
751 */
752union cvmx_fpa_fpf8_size {
753 u64 u64;
754 struct cvmx_fpa_fpf8_size_s {
755 u64 reserved_12_63 : 52;
756 u64 fpf_siz : 12;
757 } s;
758 struct cvmx_fpa_fpf8_size_s cn68xx;
759 struct cvmx_fpa_fpf8_size_s cn68xxp1;
760};
761
762typedef union cvmx_fpa_fpf8_size cvmx_fpa_fpf8_size_t;
763
764/**
765 * cvmx_fpa_gen_cfg
766 *
767 * This register provides FPA control and status information.
768 *
769 */
770union cvmx_fpa_gen_cfg {
771 u64 u64;
772 struct cvmx_fpa_gen_cfg_s {
773 u64 reserved_12_63 : 52;
774 u64 halfrate : 1;
775 u64 ocla_bp : 1;
776 u64 lvl_dly : 6;
777 u64 pools : 2;
778 u64 avg_en : 1;
779 u64 clk_override : 1;
780 } s;
781 struct cvmx_fpa_gen_cfg_s cn73xx;
782 struct cvmx_fpa_gen_cfg_s cn78xx;
783 struct cvmx_fpa_gen_cfg_s cn78xxp1;
784 struct cvmx_fpa_gen_cfg_s cnf75xx;
785};
786
787typedef union cvmx_fpa_gen_cfg cvmx_fpa_gen_cfg_t;
788
789/**
790 * cvmx_fpa_int_enb
791 *
792 * The FPA's interrupt enable register.
793 *
794 */
795union cvmx_fpa_int_enb {
796 u64 u64;
797 struct cvmx_fpa_int_enb_s {
798 u64 reserved_50_63 : 14;
799 u64 paddr_e : 1;
800 u64 reserved_44_48 : 5;
801 u64 free7 : 1;
802 u64 free6 : 1;
803 u64 free5 : 1;
804 u64 free4 : 1;
805 u64 free3 : 1;
806 u64 free2 : 1;
807 u64 free1 : 1;
808 u64 free0 : 1;
809 u64 pool7th : 1;
810 u64 pool6th : 1;
811 u64 pool5th : 1;
812 u64 pool4th : 1;
813 u64 pool3th : 1;
814 u64 pool2th : 1;
815 u64 pool1th : 1;
816 u64 pool0th : 1;
817 u64 q7_perr : 1;
818 u64 q7_coff : 1;
819 u64 q7_und : 1;
820 u64 q6_perr : 1;
821 u64 q6_coff : 1;
822 u64 q6_und : 1;
823 u64 q5_perr : 1;
824 u64 q5_coff : 1;
825 u64 q5_und : 1;
826 u64 q4_perr : 1;
827 u64 q4_coff : 1;
828 u64 q4_und : 1;
829 u64 q3_perr : 1;
830 u64 q3_coff : 1;
831 u64 q3_und : 1;
832 u64 q2_perr : 1;
833 u64 q2_coff : 1;
834 u64 q2_und : 1;
835 u64 q1_perr : 1;
836 u64 q1_coff : 1;
837 u64 q1_und : 1;
838 u64 q0_perr : 1;
839 u64 q0_coff : 1;
840 u64 q0_und : 1;
841 u64 fed1_dbe : 1;
842 u64 fed1_sbe : 1;
843 u64 fed0_dbe : 1;
844 u64 fed0_sbe : 1;
845 } s;
846 struct cvmx_fpa_int_enb_cn30xx {
847 u64 reserved_28_63 : 36;
848 u64 q7_perr : 1;
849 u64 q7_coff : 1;
850 u64 q7_und : 1;
851 u64 q6_perr : 1;
852 u64 q6_coff : 1;
853 u64 q6_und : 1;
854 u64 q5_perr : 1;
855 u64 q5_coff : 1;
856 u64 q5_und : 1;
857 u64 q4_perr : 1;
858 u64 q4_coff : 1;
859 u64 q4_und : 1;
860 u64 q3_perr : 1;
861 u64 q3_coff : 1;
862 u64 q3_und : 1;
863 u64 q2_perr : 1;
864 u64 q2_coff : 1;
865 u64 q2_und : 1;
866 u64 q1_perr : 1;
867 u64 q1_coff : 1;
868 u64 q1_und : 1;
869 u64 q0_perr : 1;
870 u64 q0_coff : 1;
871 u64 q0_und : 1;
872 u64 fed1_dbe : 1;
873 u64 fed1_sbe : 1;
874 u64 fed0_dbe : 1;
875 u64 fed0_sbe : 1;
876 } cn30xx;
877 struct cvmx_fpa_int_enb_cn30xx cn31xx;
878 struct cvmx_fpa_int_enb_cn30xx cn38xx;
879 struct cvmx_fpa_int_enb_cn30xx cn38xxp2;
880 struct cvmx_fpa_int_enb_cn30xx cn50xx;
881 struct cvmx_fpa_int_enb_cn30xx cn52xx;
882 struct cvmx_fpa_int_enb_cn30xx cn52xxp1;
883 struct cvmx_fpa_int_enb_cn30xx cn56xx;
884 struct cvmx_fpa_int_enb_cn30xx cn56xxp1;
885 struct cvmx_fpa_int_enb_cn30xx cn58xx;
886 struct cvmx_fpa_int_enb_cn30xx cn58xxp1;
887 struct cvmx_fpa_int_enb_cn61xx {
888 u64 reserved_50_63 : 14;
889 u64 paddr_e : 1;
890 u64 res_44 : 5;
891 u64 free7 : 1;
892 u64 free6 : 1;
893 u64 free5 : 1;
894 u64 free4 : 1;
895 u64 free3 : 1;
896 u64 free2 : 1;
897 u64 free1 : 1;
898 u64 free0 : 1;
899 u64 pool7th : 1;
900 u64 pool6th : 1;
901 u64 pool5th : 1;
902 u64 pool4th : 1;
903 u64 pool3th : 1;
904 u64 pool2th : 1;
905 u64 pool1th : 1;
906 u64 pool0th : 1;
907 u64 q7_perr : 1;
908 u64 q7_coff : 1;
909 u64 q7_und : 1;
910 u64 q6_perr : 1;
911 u64 q6_coff : 1;
912 u64 q6_und : 1;
913 u64 q5_perr : 1;
914 u64 q5_coff : 1;
915 u64 q5_und : 1;
916 u64 q4_perr : 1;
917 u64 q4_coff : 1;
918 u64 q4_und : 1;
919 u64 q3_perr : 1;
920 u64 q3_coff : 1;
921 u64 q3_und : 1;
922 u64 q2_perr : 1;
923 u64 q2_coff : 1;
924 u64 q2_und : 1;
925 u64 q1_perr : 1;
926 u64 q1_coff : 1;
927 u64 q1_und : 1;
928 u64 q0_perr : 1;
929 u64 q0_coff : 1;
930 u64 q0_und : 1;
931 u64 fed1_dbe : 1;
932 u64 fed1_sbe : 1;
933 u64 fed0_dbe : 1;
934 u64 fed0_sbe : 1;
935 } cn61xx;
936 struct cvmx_fpa_int_enb_cn63xx {
937 u64 reserved_44_63 : 20;
938 u64 free7 : 1;
939 u64 free6 : 1;
940 u64 free5 : 1;
941 u64 free4 : 1;
942 u64 free3 : 1;
943 u64 free2 : 1;
944 u64 free1 : 1;
945 u64 free0 : 1;
946 u64 pool7th : 1;
947 u64 pool6th : 1;
948 u64 pool5th : 1;
949 u64 pool4th : 1;
950 u64 pool3th : 1;
951 u64 pool2th : 1;
952 u64 pool1th : 1;
953 u64 pool0th : 1;
954 u64 q7_perr : 1;
955 u64 q7_coff : 1;
956 u64 q7_und : 1;
957 u64 q6_perr : 1;
958 u64 q6_coff : 1;
959 u64 q6_und : 1;
960 u64 q5_perr : 1;
961 u64 q5_coff : 1;
962 u64 q5_und : 1;
963 u64 q4_perr : 1;
964 u64 q4_coff : 1;
965 u64 q4_und : 1;
966 u64 q3_perr : 1;
967 u64 q3_coff : 1;
968 u64 q3_und : 1;
969 u64 q2_perr : 1;
970 u64 q2_coff : 1;
971 u64 q2_und : 1;
972 u64 q1_perr : 1;
973 u64 q1_coff : 1;
974 u64 q1_und : 1;
975 u64 q0_perr : 1;
976 u64 q0_coff : 1;
977 u64 q0_und : 1;
978 u64 fed1_dbe : 1;
979 u64 fed1_sbe : 1;
980 u64 fed0_dbe : 1;
981 u64 fed0_sbe : 1;
982 } cn63xx;
983 struct cvmx_fpa_int_enb_cn30xx cn63xxp1;
984 struct cvmx_fpa_int_enb_cn61xx cn66xx;
985 struct cvmx_fpa_int_enb_cn68xx {
986 u64 reserved_50_63 : 14;
987 u64 paddr_e : 1;
988 u64 pool8th : 1;
989 u64 q8_perr : 1;
990 u64 q8_coff : 1;
991 u64 q8_und : 1;
992 u64 free8 : 1;
993 u64 free7 : 1;
994 u64 free6 : 1;
995 u64 free5 : 1;
996 u64 free4 : 1;
997 u64 free3 : 1;
998 u64 free2 : 1;
999 u64 free1 : 1;
1000 u64 free0 : 1;
1001 u64 pool7th : 1;
1002 u64 pool6th : 1;
1003 u64 pool5th : 1;
1004 u64 pool4th : 1;
1005 u64 pool3th : 1;
1006 u64 pool2th : 1;
1007 u64 pool1th : 1;
1008 u64 pool0th : 1;
1009 u64 q7_perr : 1;
1010 u64 q7_coff : 1;
1011 u64 q7_und : 1;
1012 u64 q6_perr : 1;
1013 u64 q6_coff : 1;
1014 u64 q6_und : 1;
1015 u64 q5_perr : 1;
1016 u64 q5_coff : 1;
1017 u64 q5_und : 1;
1018 u64 q4_perr : 1;
1019 u64 q4_coff : 1;
1020 u64 q4_und : 1;
1021 u64 q3_perr : 1;
1022 u64 q3_coff : 1;
1023 u64 q3_und : 1;
1024 u64 q2_perr : 1;
1025 u64 q2_coff : 1;
1026 u64 q2_und : 1;
1027 u64 q1_perr : 1;
1028 u64 q1_coff : 1;
1029 u64 q1_und : 1;
1030 u64 q0_perr : 1;
1031 u64 q0_coff : 1;
1032 u64 q0_und : 1;
1033 u64 fed1_dbe : 1;
1034 u64 fed1_sbe : 1;
1035 u64 fed0_dbe : 1;
1036 u64 fed0_sbe : 1;
1037 } cn68xx;
1038 struct cvmx_fpa_int_enb_cn68xx cn68xxp1;
1039 struct cvmx_fpa_int_enb_cn61xx cn70xx;
1040 struct cvmx_fpa_int_enb_cn61xx cn70xxp1;
1041 struct cvmx_fpa_int_enb_cn61xx cnf71xx;
1042};
1043
1044typedef union cvmx_fpa_int_enb cvmx_fpa_int_enb_t;
1045
1046/**
1047 * cvmx_fpa_int_sum
1048 *
1049 * Contains the different interrupt summary bits of the FPA.
1050 *
1051 */
1052union cvmx_fpa_int_sum {
1053 u64 u64;
1054 struct cvmx_fpa_int_sum_s {
1055 u64 reserved_50_63 : 14;
1056 u64 paddr_e : 1;
1057 u64 pool8th : 1;
1058 u64 q8_perr : 1;
1059 u64 q8_coff : 1;
1060 u64 q8_und : 1;
1061 u64 free8 : 1;
1062 u64 free7 : 1;
1063 u64 free6 : 1;
1064 u64 free5 : 1;
1065 u64 free4 : 1;
1066 u64 free3 : 1;
1067 u64 free2 : 1;
1068 u64 free1 : 1;
1069 u64 free0 : 1;
1070 u64 pool7th : 1;
1071 u64 pool6th : 1;
1072 u64 pool5th : 1;
1073 u64 pool4th : 1;
1074 u64 pool3th : 1;
1075 u64 pool2th : 1;
1076 u64 pool1th : 1;
1077 u64 pool0th : 1;
1078 u64 q7_perr : 1;
1079 u64 q7_coff : 1;
1080 u64 q7_und : 1;
1081 u64 q6_perr : 1;
1082 u64 q6_coff : 1;
1083 u64 q6_und : 1;
1084 u64 q5_perr : 1;
1085 u64 q5_coff : 1;
1086 u64 q5_und : 1;
1087 u64 q4_perr : 1;
1088 u64 q4_coff : 1;
1089 u64 q4_und : 1;
1090 u64 q3_perr : 1;
1091 u64 q3_coff : 1;
1092 u64 q3_und : 1;
1093 u64 q2_perr : 1;
1094 u64 q2_coff : 1;
1095 u64 q2_und : 1;
1096 u64 q1_perr : 1;
1097 u64 q1_coff : 1;
1098 u64 q1_und : 1;
1099 u64 q0_perr : 1;
1100 u64 q0_coff : 1;
1101 u64 q0_und : 1;
1102 u64 fed1_dbe : 1;
1103 u64 fed1_sbe : 1;
1104 u64 fed0_dbe : 1;
1105 u64 fed0_sbe : 1;
1106 } s;
1107 struct cvmx_fpa_int_sum_cn30xx {
1108 u64 reserved_28_63 : 36;
1109 u64 q7_perr : 1;
1110 u64 q7_coff : 1;
1111 u64 q7_und : 1;
1112 u64 q6_perr : 1;
1113 u64 q6_coff : 1;
1114 u64 q6_und : 1;
1115 u64 q5_perr : 1;
1116 u64 q5_coff : 1;
1117 u64 q5_und : 1;
1118 u64 q4_perr : 1;
1119 u64 q4_coff : 1;
1120 u64 q4_und : 1;
1121 u64 q3_perr : 1;
1122 u64 q3_coff : 1;
1123 u64 q3_und : 1;
1124 u64 q2_perr : 1;
1125 u64 q2_coff : 1;
1126 u64 q2_und : 1;
1127 u64 q1_perr : 1;
1128 u64 q1_coff : 1;
1129 u64 q1_und : 1;
1130 u64 q0_perr : 1;
1131 u64 q0_coff : 1;
1132 u64 q0_und : 1;
1133 u64 fed1_dbe : 1;
1134 u64 fed1_sbe : 1;
1135 u64 fed0_dbe : 1;
1136 u64 fed0_sbe : 1;
1137 } cn30xx;
1138 struct cvmx_fpa_int_sum_cn30xx cn31xx;
1139 struct cvmx_fpa_int_sum_cn30xx cn38xx;
1140 struct cvmx_fpa_int_sum_cn30xx cn38xxp2;
1141 struct cvmx_fpa_int_sum_cn30xx cn50xx;
1142 struct cvmx_fpa_int_sum_cn30xx cn52xx;
1143 struct cvmx_fpa_int_sum_cn30xx cn52xxp1;
1144 struct cvmx_fpa_int_sum_cn30xx cn56xx;
1145 struct cvmx_fpa_int_sum_cn30xx cn56xxp1;
1146 struct cvmx_fpa_int_sum_cn30xx cn58xx;
1147 struct cvmx_fpa_int_sum_cn30xx cn58xxp1;
1148 struct cvmx_fpa_int_sum_cn61xx {
1149 u64 reserved_50_63 : 14;
1150 u64 paddr_e : 1;
1151 u64 reserved_44_48 : 5;
1152 u64 free7 : 1;
1153 u64 free6 : 1;
1154 u64 free5 : 1;
1155 u64 free4 : 1;
1156 u64 free3 : 1;
1157 u64 free2 : 1;
1158 u64 free1 : 1;
1159 u64 free0 : 1;
1160 u64 pool7th : 1;
1161 u64 pool6th : 1;
1162 u64 pool5th : 1;
1163 u64 pool4th : 1;
1164 u64 pool3th : 1;
1165 u64 pool2th : 1;
1166 u64 pool1th : 1;
1167 u64 pool0th : 1;
1168 u64 q7_perr : 1;
1169 u64 q7_coff : 1;
1170 u64 q7_und : 1;
1171 u64 q6_perr : 1;
1172 u64 q6_coff : 1;
1173 u64 q6_und : 1;
1174 u64 q5_perr : 1;
1175 u64 q5_coff : 1;
1176 u64 q5_und : 1;
1177 u64 q4_perr : 1;
1178 u64 q4_coff : 1;
1179 u64 q4_und : 1;
1180 u64 q3_perr : 1;
1181 u64 q3_coff : 1;
1182 u64 q3_und : 1;
1183 u64 q2_perr : 1;
1184 u64 q2_coff : 1;
1185 u64 q2_und : 1;
1186 u64 q1_perr : 1;
1187 u64 q1_coff : 1;
1188 u64 q1_und : 1;
1189 u64 q0_perr : 1;
1190 u64 q0_coff : 1;
1191 u64 q0_und : 1;
1192 u64 fed1_dbe : 1;
1193 u64 fed1_sbe : 1;
1194 u64 fed0_dbe : 1;
1195 u64 fed0_sbe : 1;
1196 } cn61xx;
1197 struct cvmx_fpa_int_sum_cn63xx {
1198 u64 reserved_44_63 : 20;
1199 u64 free7 : 1;
1200 u64 free6 : 1;
1201 u64 free5 : 1;
1202 u64 free4 : 1;
1203 u64 free3 : 1;
1204 u64 free2 : 1;
1205 u64 free1 : 1;
1206 u64 free0 : 1;
1207 u64 pool7th : 1;
1208 u64 pool6th : 1;
1209 u64 pool5th : 1;
1210 u64 pool4th : 1;
1211 u64 pool3th : 1;
1212 u64 pool2th : 1;
1213 u64 pool1th : 1;
1214 u64 pool0th : 1;
1215 u64 q7_perr : 1;
1216 u64 q7_coff : 1;
1217 u64 q7_und : 1;
1218 u64 q6_perr : 1;
1219 u64 q6_coff : 1;
1220 u64 q6_und : 1;
1221 u64 q5_perr : 1;
1222 u64 q5_coff : 1;
1223 u64 q5_und : 1;
1224 u64 q4_perr : 1;
1225 u64 q4_coff : 1;
1226 u64 q4_und : 1;
1227 u64 q3_perr : 1;
1228 u64 q3_coff : 1;
1229 u64 q3_und : 1;
1230 u64 q2_perr : 1;
1231 u64 q2_coff : 1;
1232 u64 q2_und : 1;
1233 u64 q1_perr : 1;
1234 u64 q1_coff : 1;
1235 u64 q1_und : 1;
1236 u64 q0_perr : 1;
1237 u64 q0_coff : 1;
1238 u64 q0_und : 1;
1239 u64 fed1_dbe : 1;
1240 u64 fed1_sbe : 1;
1241 u64 fed0_dbe : 1;
1242 u64 fed0_sbe : 1;
1243 } cn63xx;
1244 struct cvmx_fpa_int_sum_cn30xx cn63xxp1;
1245 struct cvmx_fpa_int_sum_cn61xx cn66xx;
1246 struct cvmx_fpa_int_sum_s cn68xx;
1247 struct cvmx_fpa_int_sum_s cn68xxp1;
1248 struct cvmx_fpa_int_sum_cn61xx cn70xx;
1249 struct cvmx_fpa_int_sum_cn61xx cn70xxp1;
1250 struct cvmx_fpa_int_sum_cn61xx cnf71xx;
1251};
1252
1253typedef union cvmx_fpa_int_sum cvmx_fpa_int_sum_t;
1254
1255/**
1256 * cvmx_fpa_packet_threshold
1257 *
1258 * When the value of FPA_QUE0_AVAILABLE[QUE_SIZ] is Less than the value of this register a low
1259 * pool count signal is sent to the
1260 * PCIe packet instruction engine (to make it stop reading instructions) and to the Packet-
1261 * Arbiter informing it to not give grants
1262 * to packets MAC with the exception of the PCIe MAC.
1263 */
1264union cvmx_fpa_packet_threshold {
1265 u64 u64;
1266 struct cvmx_fpa_packet_threshold_s {
1267 u64 reserved_32_63 : 32;
1268 u64 thresh : 32;
1269 } s;
1270 struct cvmx_fpa_packet_threshold_s cn61xx;
1271 struct cvmx_fpa_packet_threshold_s cn63xx;
1272 struct cvmx_fpa_packet_threshold_s cn66xx;
1273 struct cvmx_fpa_packet_threshold_s cn68xx;
1274 struct cvmx_fpa_packet_threshold_s cn68xxp1;
1275 struct cvmx_fpa_packet_threshold_s cn70xx;
1276 struct cvmx_fpa_packet_threshold_s cn70xxp1;
1277 struct cvmx_fpa_packet_threshold_s cnf71xx;
1278};
1279
1280typedef union cvmx_fpa_packet_threshold cvmx_fpa_packet_threshold_t;
1281
1282/**
1283 * cvmx_fpa_pool#_available
1284 */
1285union cvmx_fpa_poolx_available {
1286 u64 u64;
1287 struct cvmx_fpa_poolx_available_s {
1288 u64 reserved_36_63 : 28;
1289 u64 count : 36;
1290 } s;
1291 struct cvmx_fpa_poolx_available_s cn73xx;
1292 struct cvmx_fpa_poolx_available_s cn78xx;
1293 struct cvmx_fpa_poolx_available_s cn78xxp1;
1294 struct cvmx_fpa_poolx_available_s cnf75xx;
1295};
1296
1297typedef union cvmx_fpa_poolx_available cvmx_fpa_poolx_available_t;
1298
1299/**
1300 * cvmx_fpa_pool#_cfg
1301 */
1302union cvmx_fpa_poolx_cfg {
1303 u64 u64;
1304 struct cvmx_fpa_poolx_cfg_s {
1305 u64 reserved_43_63 : 21;
1306 u64 buf_size : 11;
1307 u64 reserved_31_31 : 1;
1308 u64 buf_offset : 15;
1309 u64 reserved_5_15 : 11;
1310 u64 l_type : 2;
1311 u64 s_type : 1;
1312 u64 nat_align : 1;
1313 u64 ena : 1;
1314 } s;
1315 struct cvmx_fpa_poolx_cfg_s cn73xx;
1316 struct cvmx_fpa_poolx_cfg_s cn78xx;
1317 struct cvmx_fpa_poolx_cfg_s cn78xxp1;
1318 struct cvmx_fpa_poolx_cfg_s cnf75xx;
1319};
1320
1321typedef union cvmx_fpa_poolx_cfg cvmx_fpa_poolx_cfg_t;
1322
1323/**
1324 * cvmx_fpa_pool#_end_addr
1325 *
1326 * Pointers sent to this pool after alignment must be equal to or less than this address.
1327 *
1328 */
1329union cvmx_fpa_poolx_end_addr {
1330 u64 u64;
1331 struct cvmx_fpa_poolx_end_addr_s {
1332 u64 reserved_0_63 : 64;
1333 } s;
1334 struct cvmx_fpa_poolx_end_addr_cn61xx {
1335 u64 reserved_33_63 : 31;
1336 u64 addr : 33;
1337 } cn61xx;
1338 struct cvmx_fpa_poolx_end_addr_cn61xx cn66xx;
1339 struct cvmx_fpa_poolx_end_addr_cn61xx cn68xx;
1340 struct cvmx_fpa_poolx_end_addr_cn61xx cn68xxp1;
1341 struct cvmx_fpa_poolx_end_addr_cn61xx cn70xx;
1342 struct cvmx_fpa_poolx_end_addr_cn61xx cn70xxp1;
1343 struct cvmx_fpa_poolx_end_addr_cn73xx {
1344 u64 reserved_42_63 : 22;
1345 u64 addr : 35;
1346 u64 reserved_0_6 : 7;
1347 } cn73xx;
1348 struct cvmx_fpa_poolx_end_addr_cn73xx cn78xx;
1349 struct cvmx_fpa_poolx_end_addr_cn73xx cn78xxp1;
1350 struct cvmx_fpa_poolx_end_addr_cn61xx cnf71xx;
1351 struct cvmx_fpa_poolx_end_addr_cn73xx cnf75xx;
1352};
1353
1354typedef union cvmx_fpa_poolx_end_addr cvmx_fpa_poolx_end_addr_t;
1355
1356/**
1357 * cvmx_fpa_pool#_fpf_marks
1358 *
1359 * The low watermark register that determines when we read free pages from L2C.
1360 *
1361 */
1362union cvmx_fpa_poolx_fpf_marks {
1363 u64 u64;
1364 struct cvmx_fpa_poolx_fpf_marks_s {
1365 u64 reserved_27_63 : 37;
1366 u64 fpf_rd : 11;
1367 u64 reserved_11_15 : 5;
1368 u64 fpf_level : 11;
1369 } s;
1370 struct cvmx_fpa_poolx_fpf_marks_s cn73xx;
1371 struct cvmx_fpa_poolx_fpf_marks_s cn78xx;
1372 struct cvmx_fpa_poolx_fpf_marks_s cn78xxp1;
1373 struct cvmx_fpa_poolx_fpf_marks_s cnf75xx;
1374};
1375
1376typedef union cvmx_fpa_poolx_fpf_marks cvmx_fpa_poolx_fpf_marks_t;
1377
1378/**
1379 * cvmx_fpa_pool#_int
1380 *
1381 * This register indicates pool interrupts.
1382 *
1383 */
1384union cvmx_fpa_poolx_int {
1385 u64 u64;
1386 struct cvmx_fpa_poolx_int_s {
1387 u64 reserved_4_63 : 60;
1388 u64 thresh : 1;
1389 u64 range : 1;
1390 u64 crcerr : 1;
1391 u64 ovfls : 1;
1392 } s;
1393 struct cvmx_fpa_poolx_int_s cn73xx;
1394 struct cvmx_fpa_poolx_int_s cn78xx;
1395 struct cvmx_fpa_poolx_int_s cn78xxp1;
1396 struct cvmx_fpa_poolx_int_s cnf75xx;
1397};
1398
1399typedef union cvmx_fpa_poolx_int cvmx_fpa_poolx_int_t;
1400
1401/**
1402 * cvmx_fpa_pool#_op_pc
1403 */
1404union cvmx_fpa_poolx_op_pc {
1405 u64 u64;
1406 struct cvmx_fpa_poolx_op_pc_s {
1407 u64 count : 64;
1408 } s;
1409 struct cvmx_fpa_poolx_op_pc_s cn73xx;
1410 struct cvmx_fpa_poolx_op_pc_s cn78xx;
1411 struct cvmx_fpa_poolx_op_pc_s cn78xxp1;
1412 struct cvmx_fpa_poolx_op_pc_s cnf75xx;
1413};
1414
1415typedef union cvmx_fpa_poolx_op_pc cvmx_fpa_poolx_op_pc_t;
1416
1417/**
1418 * cvmx_fpa_pool#_stack_addr
1419 */
1420union cvmx_fpa_poolx_stack_addr {
1421 u64 u64;
1422 struct cvmx_fpa_poolx_stack_addr_s {
1423 u64 reserved_42_63 : 22;
1424 u64 addr : 35;
1425 u64 reserved_0_6 : 7;
1426 } s;
1427 struct cvmx_fpa_poolx_stack_addr_s cn73xx;
1428 struct cvmx_fpa_poolx_stack_addr_s cn78xx;
1429 struct cvmx_fpa_poolx_stack_addr_s cn78xxp1;
1430 struct cvmx_fpa_poolx_stack_addr_s cnf75xx;
1431};
1432
1433typedef union cvmx_fpa_poolx_stack_addr cvmx_fpa_poolx_stack_addr_t;
1434
1435/**
1436 * cvmx_fpa_pool#_stack_base
1437 */
1438union cvmx_fpa_poolx_stack_base {
1439 u64 u64;
1440 struct cvmx_fpa_poolx_stack_base_s {
1441 u64 reserved_42_63 : 22;
1442 u64 addr : 35;
1443 u64 reserved_0_6 : 7;
1444 } s;
1445 struct cvmx_fpa_poolx_stack_base_s cn73xx;
1446 struct cvmx_fpa_poolx_stack_base_s cn78xx;
1447 struct cvmx_fpa_poolx_stack_base_s cn78xxp1;
1448 struct cvmx_fpa_poolx_stack_base_s cnf75xx;
1449};
1450
1451typedef union cvmx_fpa_poolx_stack_base cvmx_fpa_poolx_stack_base_t;
1452
1453/**
1454 * cvmx_fpa_pool#_stack_end
1455 */
1456union cvmx_fpa_poolx_stack_end {
1457 u64 u64;
1458 struct cvmx_fpa_poolx_stack_end_s {
1459 u64 reserved_42_63 : 22;
1460 u64 addr : 35;
1461 u64 reserved_0_6 : 7;
1462 } s;
1463 struct cvmx_fpa_poolx_stack_end_s cn73xx;
1464 struct cvmx_fpa_poolx_stack_end_s cn78xx;
1465 struct cvmx_fpa_poolx_stack_end_s cn78xxp1;
1466 struct cvmx_fpa_poolx_stack_end_s cnf75xx;
1467};
1468
1469typedef union cvmx_fpa_poolx_stack_end cvmx_fpa_poolx_stack_end_t;
1470
1471/**
1472 * cvmx_fpa_pool#_start_addr
1473 *
1474 * Pointers sent to this pool after alignment must be equal to or greater than this address.
1475 *
1476 */
1477union cvmx_fpa_poolx_start_addr {
1478 u64 u64;
1479 struct cvmx_fpa_poolx_start_addr_s {
1480 u64 reserved_0_63 : 64;
1481 } s;
1482 struct cvmx_fpa_poolx_start_addr_cn61xx {
1483 u64 reserved_33_63 : 31;
1484 u64 addr : 33;
1485 } cn61xx;
1486 struct cvmx_fpa_poolx_start_addr_cn61xx cn66xx;
1487 struct cvmx_fpa_poolx_start_addr_cn61xx cn68xx;
1488 struct cvmx_fpa_poolx_start_addr_cn61xx cn68xxp1;
1489 struct cvmx_fpa_poolx_start_addr_cn61xx cn70xx;
1490 struct cvmx_fpa_poolx_start_addr_cn61xx cn70xxp1;
1491 struct cvmx_fpa_poolx_start_addr_cn73xx {
1492 u64 reserved_42_63 : 22;
1493 u64 addr : 35;
1494 u64 reserved_0_6 : 7;
1495 } cn73xx;
1496 struct cvmx_fpa_poolx_start_addr_cn73xx cn78xx;
1497 struct cvmx_fpa_poolx_start_addr_cn73xx cn78xxp1;
1498 struct cvmx_fpa_poolx_start_addr_cn61xx cnf71xx;
1499 struct cvmx_fpa_poolx_start_addr_cn73xx cnf75xx;
1500};
1501
1502typedef union cvmx_fpa_poolx_start_addr cvmx_fpa_poolx_start_addr_t;
1503
1504/**
1505 * cvmx_fpa_pool#_threshold
1506 *
1507 * FPA_POOLX_THRESHOLD = FPA's Pool 0-7 Threshold
1508 * When the value of FPA_QUEX_AVAILABLE is equal to FPA_POOLX_THRESHOLD[THRESH] when a pointer is
1509 * allocated
1510 * or deallocated, set interrupt FPA_INT_SUM[POOLXTH].
1511 */
1512union cvmx_fpa_poolx_threshold {
1513 u64 u64;
1514 struct cvmx_fpa_poolx_threshold_s {
1515 u64 reserved_36_63 : 28;
1516 u64 thresh : 36;
1517 } s;
1518 struct cvmx_fpa_poolx_threshold_cn61xx {
1519 u64 reserved_29_63 : 35;
1520 u64 thresh : 29;
1521 } cn61xx;
1522 struct cvmx_fpa_poolx_threshold_cn61xx cn63xx;
1523 struct cvmx_fpa_poolx_threshold_cn61xx cn66xx;
1524 struct cvmx_fpa_poolx_threshold_cn68xx {
1525 u64 reserved_32_63 : 32;
1526 u64 thresh : 32;
1527 } cn68xx;
1528 struct cvmx_fpa_poolx_threshold_cn68xx cn68xxp1;
1529 struct cvmx_fpa_poolx_threshold_cn61xx cn70xx;
1530 struct cvmx_fpa_poolx_threshold_cn61xx cn70xxp1;
1531 struct cvmx_fpa_poolx_threshold_s cn73xx;
1532 struct cvmx_fpa_poolx_threshold_s cn78xx;
1533 struct cvmx_fpa_poolx_threshold_s cn78xxp1;
1534 struct cvmx_fpa_poolx_threshold_cn61xx cnf71xx;
1535 struct cvmx_fpa_poolx_threshold_s cnf75xx;
1536};
1537
1538typedef union cvmx_fpa_poolx_threshold cvmx_fpa_poolx_threshold_t;
1539
1540/**
1541 * cvmx_fpa_que#_available
1542 *
1543 * FPA_QUEX_PAGES_AVAILABLE = FPA's Queue 0-7 Free Page Available Register
1544 * The number of page pointers that are available in the FPA and local DRAM.
1545 */
1546union cvmx_fpa_quex_available {
1547 u64 u64;
1548 struct cvmx_fpa_quex_available_s {
1549 u64 reserved_32_63 : 32;
1550 u64 que_siz : 32;
1551 } s;
1552 struct cvmx_fpa_quex_available_cn30xx {
1553 u64 reserved_29_63 : 35;
1554 u64 que_siz : 29;
1555 } cn30xx;
1556 struct cvmx_fpa_quex_available_cn30xx cn31xx;
1557 struct cvmx_fpa_quex_available_cn30xx cn38xx;
1558 struct cvmx_fpa_quex_available_cn30xx cn38xxp2;
1559 struct cvmx_fpa_quex_available_cn30xx cn50xx;
1560 struct cvmx_fpa_quex_available_cn30xx cn52xx;
1561 struct cvmx_fpa_quex_available_cn30xx cn52xxp1;
1562 struct cvmx_fpa_quex_available_cn30xx cn56xx;
1563 struct cvmx_fpa_quex_available_cn30xx cn56xxp1;
1564 struct cvmx_fpa_quex_available_cn30xx cn58xx;
1565 struct cvmx_fpa_quex_available_cn30xx cn58xxp1;
1566 struct cvmx_fpa_quex_available_cn30xx cn61xx;
1567 struct cvmx_fpa_quex_available_cn30xx cn63xx;
1568 struct cvmx_fpa_quex_available_cn30xx cn63xxp1;
1569 struct cvmx_fpa_quex_available_cn30xx cn66xx;
1570 struct cvmx_fpa_quex_available_s cn68xx;
1571 struct cvmx_fpa_quex_available_s cn68xxp1;
1572 struct cvmx_fpa_quex_available_cn30xx cn70xx;
1573 struct cvmx_fpa_quex_available_cn30xx cn70xxp1;
1574 struct cvmx_fpa_quex_available_cn30xx cnf71xx;
1575};
1576
1577typedef union cvmx_fpa_quex_available cvmx_fpa_quex_available_t;
1578
1579/**
1580 * cvmx_fpa_que#_page_index
1581 *
1582 * The present index page for queue 0 of the FPA.
1583 * This number reflects the number of pages of pointers that have been written to memory
1584 * for this queue.
1585 */
1586union cvmx_fpa_quex_page_index {
1587 u64 u64;
1588 struct cvmx_fpa_quex_page_index_s {
1589 u64 reserved_25_63 : 39;
1590 u64 pg_num : 25;
1591 } s;
1592 struct cvmx_fpa_quex_page_index_s cn30xx;
1593 struct cvmx_fpa_quex_page_index_s cn31xx;
1594 struct cvmx_fpa_quex_page_index_s cn38xx;
1595 struct cvmx_fpa_quex_page_index_s cn38xxp2;
1596 struct cvmx_fpa_quex_page_index_s cn50xx;
1597 struct cvmx_fpa_quex_page_index_s cn52xx;
1598 struct cvmx_fpa_quex_page_index_s cn52xxp1;
1599 struct cvmx_fpa_quex_page_index_s cn56xx;
1600 struct cvmx_fpa_quex_page_index_s cn56xxp1;
1601 struct cvmx_fpa_quex_page_index_s cn58xx;
1602 struct cvmx_fpa_quex_page_index_s cn58xxp1;
1603 struct cvmx_fpa_quex_page_index_s cn61xx;
1604 struct cvmx_fpa_quex_page_index_s cn63xx;
1605 struct cvmx_fpa_quex_page_index_s cn63xxp1;
1606 struct cvmx_fpa_quex_page_index_s cn66xx;
1607 struct cvmx_fpa_quex_page_index_s cn68xx;
1608 struct cvmx_fpa_quex_page_index_s cn68xxp1;
1609 struct cvmx_fpa_quex_page_index_s cn70xx;
1610 struct cvmx_fpa_quex_page_index_s cn70xxp1;
1611 struct cvmx_fpa_quex_page_index_s cnf71xx;
1612};
1613
1614typedef union cvmx_fpa_quex_page_index cvmx_fpa_quex_page_index_t;
1615
1616/**
1617 * cvmx_fpa_que8_page_index
1618 *
1619 * FPA_QUE8_PAGE_INDEX = FPA's Queue7 Page Index
1620 *
1621 * The present index page for queue 7 of the FPA.
1622 * This number reflects the number of pages of pointers that have been written to memory
1623 * for this queue.
1624 * Because the address space is 38-bits the number of 128 byte pages could cause this register value to wrap.
1625 */
1626union cvmx_fpa_que8_page_index {
1627 u64 u64;
1628 struct cvmx_fpa_que8_page_index_s {
1629 u64 reserved_25_63 : 39;
1630 u64 pg_num : 25;
1631 } s;
1632 struct cvmx_fpa_que8_page_index_s cn68xx;
1633 struct cvmx_fpa_que8_page_index_s cn68xxp1;
1634};
1635
1636typedef union cvmx_fpa_que8_page_index cvmx_fpa_que8_page_index_t;
1637
1638/**
1639 * cvmx_fpa_que_act
1640 *
1641 * "When a INT_SUM[PERR#] occurs this will be latched with the value read from L2C.
1642 * This is latched on the first error and will not latch again unitl all errors are cleared."
1643 */
1644union cvmx_fpa_que_act {
1645 u64 u64;
1646 struct cvmx_fpa_que_act_s {
1647 u64 reserved_29_63 : 35;
1648 u64 act_que : 3;
1649 u64 act_indx : 26;
1650 } s;
1651 struct cvmx_fpa_que_act_s cn30xx;
1652 struct cvmx_fpa_que_act_s cn31xx;
1653 struct cvmx_fpa_que_act_s cn38xx;
1654 struct cvmx_fpa_que_act_s cn38xxp2;
1655 struct cvmx_fpa_que_act_s cn50xx;
1656 struct cvmx_fpa_que_act_s cn52xx;
1657 struct cvmx_fpa_que_act_s cn52xxp1;
1658 struct cvmx_fpa_que_act_s cn56xx;
1659 struct cvmx_fpa_que_act_s cn56xxp1;
1660 struct cvmx_fpa_que_act_s cn58xx;
1661 struct cvmx_fpa_que_act_s cn58xxp1;
1662 struct cvmx_fpa_que_act_s cn61xx;
1663 struct cvmx_fpa_que_act_s cn63xx;
1664 struct cvmx_fpa_que_act_s cn63xxp1;
1665 struct cvmx_fpa_que_act_s cn66xx;
1666 struct cvmx_fpa_que_act_s cn68xx;
1667 struct cvmx_fpa_que_act_s cn68xxp1;
1668 struct cvmx_fpa_que_act_s cn70xx;
1669 struct cvmx_fpa_que_act_s cn70xxp1;
1670 struct cvmx_fpa_que_act_s cnf71xx;
1671};
1672
1673typedef union cvmx_fpa_que_act cvmx_fpa_que_act_t;
1674
1675/**
1676 * cvmx_fpa_que_exp
1677 *
1678 * "When a INT_SUM[PERR#] occurs this will be latched with the expected value.
1679 * This is latched on the first error and will not latch again unitl all errors are cleared."
1680 */
1681union cvmx_fpa_que_exp {
1682 u64 u64;
1683 struct cvmx_fpa_que_exp_s {
1684 u64 reserved_29_63 : 35;
1685 u64 exp_que : 3;
1686 u64 exp_indx : 26;
1687 } s;
1688 struct cvmx_fpa_que_exp_s cn30xx;
1689 struct cvmx_fpa_que_exp_s cn31xx;
1690 struct cvmx_fpa_que_exp_s cn38xx;
1691 struct cvmx_fpa_que_exp_s cn38xxp2;
1692 struct cvmx_fpa_que_exp_s cn50xx;
1693 struct cvmx_fpa_que_exp_s cn52xx;
1694 struct cvmx_fpa_que_exp_s cn52xxp1;
1695 struct cvmx_fpa_que_exp_s cn56xx;
1696 struct cvmx_fpa_que_exp_s cn56xxp1;
1697 struct cvmx_fpa_que_exp_s cn58xx;
1698 struct cvmx_fpa_que_exp_s cn58xxp1;
1699 struct cvmx_fpa_que_exp_s cn61xx;
1700 struct cvmx_fpa_que_exp_s cn63xx;
1701 struct cvmx_fpa_que_exp_s cn63xxp1;
1702 struct cvmx_fpa_que_exp_s cn66xx;
1703 struct cvmx_fpa_que_exp_s cn68xx;
1704 struct cvmx_fpa_que_exp_s cn68xxp1;
1705 struct cvmx_fpa_que_exp_s cn70xx;
1706 struct cvmx_fpa_que_exp_s cn70xxp1;
1707 struct cvmx_fpa_que_exp_s cnf71xx;
1708};
1709
1710typedef union cvmx_fpa_que_exp cvmx_fpa_que_exp_t;
1711
1712/**
1713 * cvmx_fpa_rd_latency_pc
1714 */
1715union cvmx_fpa_rd_latency_pc {
1716 u64 u64;
1717 struct cvmx_fpa_rd_latency_pc_s {
1718 u64 count : 64;
1719 } s;
1720 struct cvmx_fpa_rd_latency_pc_s cn73xx;
1721 struct cvmx_fpa_rd_latency_pc_s cn78xx;
1722 struct cvmx_fpa_rd_latency_pc_s cn78xxp1;
1723 struct cvmx_fpa_rd_latency_pc_s cnf75xx;
1724};
1725
1726typedef union cvmx_fpa_rd_latency_pc cvmx_fpa_rd_latency_pc_t;
1727
1728/**
1729 * cvmx_fpa_rd_req_pc
1730 */
1731union cvmx_fpa_rd_req_pc {
1732 u64 u64;
1733 struct cvmx_fpa_rd_req_pc_s {
1734 u64 count : 64;
1735 } s;
1736 struct cvmx_fpa_rd_req_pc_s cn73xx;
1737 struct cvmx_fpa_rd_req_pc_s cn78xx;
1738 struct cvmx_fpa_rd_req_pc_s cn78xxp1;
1739 struct cvmx_fpa_rd_req_pc_s cnf75xx;
1740};
1741
1742typedef union cvmx_fpa_rd_req_pc cvmx_fpa_rd_req_pc_t;
1743
1744/**
1745 * cvmx_fpa_red_delay
1746 */
1747union cvmx_fpa_red_delay {
1748 u64 u64;
1749 struct cvmx_fpa_red_delay_s {
1750 u64 reserved_14_63 : 50;
1751 u64 avg_dly : 14;
1752 } s;
1753 struct cvmx_fpa_red_delay_s cn73xx;
1754 struct cvmx_fpa_red_delay_s cn78xx;
1755 struct cvmx_fpa_red_delay_s cn78xxp1;
1756 struct cvmx_fpa_red_delay_s cnf75xx;
1757};
1758
1759typedef union cvmx_fpa_red_delay cvmx_fpa_red_delay_t;
1760
1761/**
1762 * cvmx_fpa_sft_rst
1763 *
1764 * Allows soft reset.
1765 *
1766 */
1767union cvmx_fpa_sft_rst {
1768 u64 u64;
1769 struct cvmx_fpa_sft_rst_s {
1770 u64 busy : 1;
1771 u64 reserved_1_62 : 62;
1772 u64 rst : 1;
1773 } s;
1774 struct cvmx_fpa_sft_rst_s cn73xx;
1775 struct cvmx_fpa_sft_rst_s cn78xx;
1776 struct cvmx_fpa_sft_rst_s cn78xxp1;
1777 struct cvmx_fpa_sft_rst_s cnf75xx;
1778};
1779
1780typedef union cvmx_fpa_sft_rst cvmx_fpa_sft_rst_t;
1781
1782/**
1783 * cvmx_fpa_wart_ctl
1784 *
1785 * FPA_WART_CTL = FPA's WART Control
1786 *
1787 * Control and status for the WART block.
1788 */
1789union cvmx_fpa_wart_ctl {
1790 u64 u64;
1791 struct cvmx_fpa_wart_ctl_s {
1792 u64 reserved_16_63 : 48;
1793 u64 ctl : 16;
1794 } s;
1795 struct cvmx_fpa_wart_ctl_s cn30xx;
1796 struct cvmx_fpa_wart_ctl_s cn31xx;
1797 struct cvmx_fpa_wart_ctl_s cn38xx;
1798 struct cvmx_fpa_wart_ctl_s cn38xxp2;
1799 struct cvmx_fpa_wart_ctl_s cn50xx;
1800 struct cvmx_fpa_wart_ctl_s cn52xx;
1801 struct cvmx_fpa_wart_ctl_s cn52xxp1;
1802 struct cvmx_fpa_wart_ctl_s cn56xx;
1803 struct cvmx_fpa_wart_ctl_s cn56xxp1;
1804 struct cvmx_fpa_wart_ctl_s cn58xx;
1805 struct cvmx_fpa_wart_ctl_s cn58xxp1;
1806};
1807
1808typedef union cvmx_fpa_wart_ctl cvmx_fpa_wart_ctl_t;
1809
1810/**
1811 * cvmx_fpa_wart_status
1812 *
1813 * FPA_WART_STATUS = FPA's WART Status
1814 *
1815 * Control and status for the WART block.
1816 */
1817union cvmx_fpa_wart_status {
1818 u64 u64;
1819 struct cvmx_fpa_wart_status_s {
1820 u64 reserved_32_63 : 32;
1821 u64 status : 32;
1822 } s;
1823 struct cvmx_fpa_wart_status_s cn30xx;
1824 struct cvmx_fpa_wart_status_s cn31xx;
1825 struct cvmx_fpa_wart_status_s cn38xx;
1826 struct cvmx_fpa_wart_status_s cn38xxp2;
1827 struct cvmx_fpa_wart_status_s cn50xx;
1828 struct cvmx_fpa_wart_status_s cn52xx;
1829 struct cvmx_fpa_wart_status_s cn52xxp1;
1830 struct cvmx_fpa_wart_status_s cn56xx;
1831 struct cvmx_fpa_wart_status_s cn56xxp1;
1832 struct cvmx_fpa_wart_status_s cn58xx;
1833 struct cvmx_fpa_wart_status_s cn58xxp1;
1834};
1835
1836typedef union cvmx_fpa_wart_status cvmx_fpa_wart_status_t;
1837
1838/**
1839 * cvmx_fpa_wqe_threshold
1840 *
1841 * "When the value of FPA_QUE#_AVAILABLE[QUE_SIZ] (\# is determined by the value of
1842 * IPD_WQE_FPA_QUEUE) is Less than the value of this
1843 * register a low pool count signal is sent to the PCIe packet instruction engine (to make it
1844 * stop reading instructions) and to the
1845 * Packet-Arbiter informing it to not give grants to packets MAC with the exception of the PCIe
1846 * MAC."
1847 */
1848union cvmx_fpa_wqe_threshold {
1849 u64 u64;
1850 struct cvmx_fpa_wqe_threshold_s {
1851 u64 reserved_32_63 : 32;
1852 u64 thresh : 32;
1853 } s;
1854 struct cvmx_fpa_wqe_threshold_s cn61xx;
1855 struct cvmx_fpa_wqe_threshold_s cn63xx;
1856 struct cvmx_fpa_wqe_threshold_s cn66xx;
1857 struct cvmx_fpa_wqe_threshold_s cn68xx;
1858 struct cvmx_fpa_wqe_threshold_s cn68xxp1;
1859 struct cvmx_fpa_wqe_threshold_s cn70xx;
1860 struct cvmx_fpa_wqe_threshold_s cn70xxp1;
1861 struct cvmx_fpa_wqe_threshold_s cnf71xx;
1862};
1863
1864typedef union cvmx_fpa_wqe_threshold cvmx_fpa_wqe_threshold_t;
1865
1866#endif