1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Copyright (C) 2020 Marvell International Ltd.
5 * Configuration and status register (CSR) type definitions for
9 #ifndef __CVMX_FPA_DEFS_H__
10 #define __CVMX_FPA_DEFS_H__
12 #define CVMX_FPA_ADDR_RANGE_ERROR CVMX_FPA_ADDR_RANGE_ERROR_FUNC()
13 static inline u64 CVMX_FPA_ADDR_RANGE_ERROR_FUNC(void)
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;
31 return 0x0001280000000458ull;
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()
44 static inline u64 CVMX_FPA_BIST_STATUS_FUNC(void)
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;
63 return 0x00012800000000E8ull;
66 #ifndef CVMX_FPA_CLK_COUNT // test-only (also in octeon_ddr.h)
67 #define CVMX_FPA_CLK_COUNT (0x00012800000000F0ull)
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)
92 static inline u64 CVMX_FPA_POOLX_END_ADDR(unsigned long offset)
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;
111 return 0x0001280010600000ull + (offset) * 8;
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)
120 static inline u64 CVMX_FPA_POOLX_START_ADDR(unsigned long offset)
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;
139 return 0x0001280010500000ull + (offset) * 8;
142 static inline u64 CVMX_FPA_POOLX_THRESHOLD(unsigned long offset)
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;
162 return 0x0001280010400000ull + (offset) * 8;
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)
187 * cvmx_fpa_addr_range_error
189 * When any FPA_POOL()_INT[RANGE] error occurs, this register is latched with additional
192 union cvmx_fpa_addr_range_error {
194 struct cvmx_fpa_addr_range_error_s {
195 u64 reserved_0_63 : 64;
197 struct cvmx_fpa_addr_range_error_cn61xx {
198 u64 reserved_38_63 : 26;
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;
210 u64 reserved_42_47 : 6;
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;
219 typedef union cvmx_fpa_addr_range_error cvmx_fpa_addr_range_error_t;
224 * This register configures aura backpressure, etc.
227 union cvmx_fpa_aurax_cfg {
229 struct cvmx_fpa_aurax_cfg_s {
230 u64 reserved_10_63 : 54;
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;
240 typedef union cvmx_fpa_aurax_cfg cvmx_fpa_aurax_cfg_t;
245 union cvmx_fpa_aurax_cnt {
247 struct cvmx_fpa_aurax_cnt_s {
248 u64 reserved_40_63 : 24;
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;
257 typedef union cvmx_fpa_aurax_cnt cvmx_fpa_aurax_cnt_t;
260 * cvmx_fpa_aura#_cnt_add
262 union cvmx_fpa_aurax_cnt_add {
264 struct cvmx_fpa_aurax_cnt_add_s {
265 u64 reserved_40_63 : 24;
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;
274 typedef union cvmx_fpa_aurax_cnt_add cvmx_fpa_aurax_cnt_add_t;
277 * cvmx_fpa_aura#_cnt_levels
279 union cvmx_fpa_aurax_cnt_levels {
281 struct cvmx_fpa_aurax_cnt_levels_s {
282 u64 reserved_41_63 : 23;
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;
298 typedef union cvmx_fpa_aurax_cnt_levels cvmx_fpa_aurax_cnt_levels_t;
301 * cvmx_fpa_aura#_cnt_limit
303 union cvmx_fpa_aurax_cnt_limit {
305 struct cvmx_fpa_aurax_cnt_limit_s {
306 u64 reserved_40_63 : 24;
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;
315 typedef union cvmx_fpa_aurax_cnt_limit cvmx_fpa_aurax_cnt_limit_t;
318 * cvmx_fpa_aura#_cnt_threshold
320 union cvmx_fpa_aurax_cnt_threshold {
322 struct cvmx_fpa_aurax_cnt_threshold_s {
323 u64 reserved_40_63 : 24;
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;
332 typedef union cvmx_fpa_aurax_cnt_threshold cvmx_fpa_aurax_cnt_threshold_t;
337 union cvmx_fpa_aurax_int {
339 struct cvmx_fpa_aurax_int_s {
340 u64 reserved_1_63 : 63;
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;
349 typedef union cvmx_fpa_aurax_int cvmx_fpa_aurax_int_t;
352 * cvmx_fpa_aura#_pool
354 * Provides the mapping from each aura to the pool number.
357 union cvmx_fpa_aurax_pool {
359 struct cvmx_fpa_aurax_pool_s {
360 u64 reserved_6_63 : 58;
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;
369 typedef union cvmx_fpa_aurax_pool cvmx_fpa_aurax_pool_t;
372 * cvmx_fpa_aura#_pool_levels
374 union cvmx_fpa_aurax_pool_levels {
376 struct cvmx_fpa_aurax_pool_levels_s {
377 u64 reserved_41_63 : 23;
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;
393 typedef union cvmx_fpa_aurax_pool_levels cvmx_fpa_aurax_pool_levels_t;
396 * cvmx_fpa_bist_status
398 * This register provides the result of the BIST run on the FPA memories.
401 union cvmx_fpa_bist_status {
403 struct cvmx_fpa_bist_status_s {
404 u64 reserved_0_63 : 64;
406 struct cvmx_fpa_bist_status_cn30xx {
407 u64 reserved_5_63 : 59;
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;
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;
442 typedef union cvmx_fpa_bist_status cvmx_fpa_bist_status_t;
447 * This register counts the number of coprocessor-clock cycles since the deassertion of reset.
450 union cvmx_fpa_clk_count {
452 struct cvmx_fpa_clk_count_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;
461 typedef union cvmx_fpa_clk_count cvmx_fpa_clk_count_t;
464 * cvmx_fpa_ctl_status
466 * The FPA's interrupt enable register.
469 union cvmx_fpa_ctl_status {
471 struct cvmx_fpa_ctl_status_s {
472 u64 reserved_21_63 : 43;
483 struct cvmx_fpa_ctl_status_cn30xx {
484 u64 reserved_18_63 : 46;
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;
513 typedef union cvmx_fpa_ctl_status cvmx_fpa_ctl_status_t;
518 * This register allows inserting ECC errors for testing.
521 union cvmx_fpa_ecc_ctl {
523 struct cvmx_fpa_ecc_ctl_s {
524 u64 reserved_62_63 : 2;
526 u64 reserved_41_41 : 1;
528 u64 reserved_20_20 : 1;
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;
537 typedef union cvmx_fpa_ecc_ctl cvmx_fpa_ecc_ctl_t;
542 * This register contains ECC error interrupt summary bits.
545 union cvmx_fpa_ecc_int {
547 struct cvmx_fpa_ecc_int_s {
548 u64 reserved_52_63 : 12;
550 u64 reserved_20_31 : 12;
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;
559 typedef union cvmx_fpa_ecc_int cvmx_fpa_ecc_int_t;
564 * This register contains the global (non-pool) error interrupt summary bits of the FPA.
567 union cvmx_fpa_err_int {
569 struct cvmx_fpa_err_int_s {
570 u64 reserved_4_63 : 60;
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;
582 typedef union cvmx_fpa_err_int cvmx_fpa_err_int_t;
585 * cvmx_fpa_fpf#_marks
587 * "The high and low watermark register that determines when we write and read free pages from
589 * for Queue 1. The value of FPF_RD and FPF_WR should have at least a 33 difference. Recommend
591 * is FPF_RD == (FPA_FPF#_SIZE[FPF_SIZ] * .25) and FPF_WR == (FPA_FPF#_SIZE[FPF_SIZ] * .75)"
593 union cvmx_fpa_fpfx_marks {
595 struct cvmx_fpa_fpfx_marks_s {
596 u64 reserved_22_63 : 42;
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;
617 typedef union cvmx_fpa_fpfx_marks cvmx_fpa_fpfx_marks_t;
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."
627 union cvmx_fpa_fpfx_size {
629 struct cvmx_fpa_fpfx_size_s {
630 u64 reserved_11_63 : 53;
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;
650 typedef union cvmx_fpa_fpfx_size cvmx_fpa_fpfx_size_t;
653 * cvmx_fpa_fpf0_marks
655 * "The high and low watermark register that determines when we write and read free pages from
657 * for Queue 0. The value of FPF_RD and FPF_WR should have at least a 33 difference. Recommend
659 * is FPF_RD == (FPA_FPF#_SIZE[FPF_SIZ] * .25) and FPF_WR == (FPA_FPF#_SIZE[FPF_SIZ] * .75)"
661 union cvmx_fpa_fpf0_marks {
663 struct cvmx_fpa_fpf0_marks_s {
664 u64 reserved_24_63 : 40;
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;
685 typedef union cvmx_fpa_fpf0_marks cvmx_fpa_fpf0_marks_t;
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."
694 union cvmx_fpa_fpf0_size {
696 struct cvmx_fpa_fpf0_size_s {
697 u64 reserved_12_63 : 52;
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;
717 typedef union cvmx_fpa_fpf0_size cvmx_fpa_fpf0_size_t;
720 * cvmx_fpa_fpf8_marks
722 * Reserved through 0x238 for additional thresholds
724 * FPA_FPF8_MARKS = FPA's Queue 8 Free Page FIFO Read Write Marks
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)
730 union cvmx_fpa_fpf8_marks {
732 struct cvmx_fpa_fpf8_marks_s {
733 u64 reserved_22_63 : 42;
737 struct cvmx_fpa_fpf8_marks_s cn68xx;
738 struct cvmx_fpa_fpf8_marks_s cn68xxp1;
741 typedef union cvmx_fpa_fpf8_marks cvmx_fpa_fpf8_marks_t;
746 * FPA_FPF8_SIZE = FPA's Queue 8 Free Page FIFO Size
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.
752 union cvmx_fpa_fpf8_size {
754 struct cvmx_fpa_fpf8_size_s {
755 u64 reserved_12_63 : 52;
758 struct cvmx_fpa_fpf8_size_s cn68xx;
759 struct cvmx_fpa_fpf8_size_s cn68xxp1;
762 typedef union cvmx_fpa_fpf8_size cvmx_fpa_fpf8_size_t;
767 * This register provides FPA control and status information.
770 union cvmx_fpa_gen_cfg {
772 struct cvmx_fpa_gen_cfg_s {
773 u64 reserved_12_63 : 52;
779 u64 clk_override : 1;
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;
787 typedef union cvmx_fpa_gen_cfg cvmx_fpa_gen_cfg_t;
792 * The FPA's interrupt enable register.
795 union cvmx_fpa_int_enb {
797 struct cvmx_fpa_int_enb_s {
798 u64 reserved_50_63 : 14;
800 u64 reserved_44_48 : 5;
846 struct cvmx_fpa_int_enb_cn30xx {
847 u64 reserved_28_63 : 36;
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;
936 struct cvmx_fpa_int_enb_cn63xx {
937 u64 reserved_44_63 : 20;
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;
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;
1044 typedef union cvmx_fpa_int_enb cvmx_fpa_int_enb_t;
1049 * Contains the different interrupt summary bits of the FPA.
1052 union cvmx_fpa_int_sum {
1054 struct cvmx_fpa_int_sum_s {
1055 u64 reserved_50_63 : 14;
1107 struct cvmx_fpa_int_sum_cn30xx {
1108 u64 reserved_28_63 : 36;
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;
1151 u64 reserved_44_48 : 5;
1197 struct cvmx_fpa_int_sum_cn63xx {
1198 u64 reserved_44_63 : 20;
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;
1253 typedef union cvmx_fpa_int_sum cvmx_fpa_int_sum_t;
1256 * cvmx_fpa_packet_threshold
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.
1264 union cvmx_fpa_packet_threshold {
1266 struct cvmx_fpa_packet_threshold_s {
1267 u64 reserved_32_63 : 32;
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;
1280 typedef union cvmx_fpa_packet_threshold cvmx_fpa_packet_threshold_t;
1283 * cvmx_fpa_pool#_available
1285 union cvmx_fpa_poolx_available {
1287 struct cvmx_fpa_poolx_available_s {
1288 u64 reserved_36_63 : 28;
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;
1297 typedef union cvmx_fpa_poolx_available cvmx_fpa_poolx_available_t;
1300 * cvmx_fpa_pool#_cfg
1302 union cvmx_fpa_poolx_cfg {
1304 struct cvmx_fpa_poolx_cfg_s {
1305 u64 reserved_43_63 : 21;
1307 u64 reserved_31_31 : 1;
1308 u64 buf_offset : 15;
1309 u64 reserved_5_15 : 11;
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;
1321 typedef union cvmx_fpa_poolx_cfg cvmx_fpa_poolx_cfg_t;
1324 * cvmx_fpa_pool#_end_addr
1326 * Pointers sent to this pool after alignment must be equal to or less than this address.
1329 union cvmx_fpa_poolx_end_addr {
1331 struct cvmx_fpa_poolx_end_addr_s {
1332 u64 reserved_0_63 : 64;
1334 struct cvmx_fpa_poolx_end_addr_cn61xx {
1335 u64 reserved_33_63 : 31;
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;
1346 u64 reserved_0_6 : 7;
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;
1354 typedef union cvmx_fpa_poolx_end_addr cvmx_fpa_poolx_end_addr_t;
1357 * cvmx_fpa_pool#_fpf_marks
1359 * The low watermark register that determines when we read free pages from L2C.
1362 union cvmx_fpa_poolx_fpf_marks {
1364 struct cvmx_fpa_poolx_fpf_marks_s {
1365 u64 reserved_27_63 : 37;
1367 u64 reserved_11_15 : 5;
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;
1376 typedef union cvmx_fpa_poolx_fpf_marks cvmx_fpa_poolx_fpf_marks_t;
1379 * cvmx_fpa_pool#_int
1381 * This register indicates pool interrupts.
1384 union cvmx_fpa_poolx_int {
1386 struct cvmx_fpa_poolx_int_s {
1387 u64 reserved_4_63 : 60;
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;
1399 typedef union cvmx_fpa_poolx_int cvmx_fpa_poolx_int_t;
1402 * cvmx_fpa_pool#_op_pc
1404 union cvmx_fpa_poolx_op_pc {
1406 struct cvmx_fpa_poolx_op_pc_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;
1415 typedef union cvmx_fpa_poolx_op_pc cvmx_fpa_poolx_op_pc_t;
1418 * cvmx_fpa_pool#_stack_addr
1420 union cvmx_fpa_poolx_stack_addr {
1422 struct cvmx_fpa_poolx_stack_addr_s {
1423 u64 reserved_42_63 : 22;
1425 u64 reserved_0_6 : 7;
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;
1433 typedef union cvmx_fpa_poolx_stack_addr cvmx_fpa_poolx_stack_addr_t;
1436 * cvmx_fpa_pool#_stack_base
1438 union cvmx_fpa_poolx_stack_base {
1440 struct cvmx_fpa_poolx_stack_base_s {
1441 u64 reserved_42_63 : 22;
1443 u64 reserved_0_6 : 7;
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;
1451 typedef union cvmx_fpa_poolx_stack_base cvmx_fpa_poolx_stack_base_t;
1454 * cvmx_fpa_pool#_stack_end
1456 union cvmx_fpa_poolx_stack_end {
1458 struct cvmx_fpa_poolx_stack_end_s {
1459 u64 reserved_42_63 : 22;
1461 u64 reserved_0_6 : 7;
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;
1469 typedef union cvmx_fpa_poolx_stack_end cvmx_fpa_poolx_stack_end_t;
1472 * cvmx_fpa_pool#_start_addr
1474 * Pointers sent to this pool after alignment must be equal to or greater than this address.
1477 union cvmx_fpa_poolx_start_addr {
1479 struct cvmx_fpa_poolx_start_addr_s {
1480 u64 reserved_0_63 : 64;
1482 struct cvmx_fpa_poolx_start_addr_cn61xx {
1483 u64 reserved_33_63 : 31;
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;
1494 u64 reserved_0_6 : 7;
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;
1502 typedef union cvmx_fpa_poolx_start_addr cvmx_fpa_poolx_start_addr_t;
1505 * cvmx_fpa_pool#_threshold
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
1510 * or deallocated, set interrupt FPA_INT_SUM[POOLXTH].
1512 union cvmx_fpa_poolx_threshold {
1514 struct cvmx_fpa_poolx_threshold_s {
1515 u64 reserved_36_63 : 28;
1518 struct cvmx_fpa_poolx_threshold_cn61xx {
1519 u64 reserved_29_63 : 35;
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;
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;
1538 typedef union cvmx_fpa_poolx_threshold cvmx_fpa_poolx_threshold_t;
1541 * cvmx_fpa_que#_available
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.
1546 union cvmx_fpa_quex_available {
1548 struct cvmx_fpa_quex_available_s {
1549 u64 reserved_32_63 : 32;
1552 struct cvmx_fpa_quex_available_cn30xx {
1553 u64 reserved_29_63 : 35;
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;
1577 typedef union cvmx_fpa_quex_available cvmx_fpa_quex_available_t;
1580 * cvmx_fpa_que#_page_index
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
1586 union cvmx_fpa_quex_page_index {
1588 struct cvmx_fpa_quex_page_index_s {
1589 u64 reserved_25_63 : 39;
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;
1614 typedef union cvmx_fpa_quex_page_index cvmx_fpa_quex_page_index_t;
1617 * cvmx_fpa_que8_page_index
1619 * FPA_QUE8_PAGE_INDEX = FPA's Queue7 Page Index
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
1624 * Because the address space is 38-bits the number of 128 byte pages could cause this register value to wrap.
1626 union cvmx_fpa_que8_page_index {
1628 struct cvmx_fpa_que8_page_index_s {
1629 u64 reserved_25_63 : 39;
1632 struct cvmx_fpa_que8_page_index_s cn68xx;
1633 struct cvmx_fpa_que8_page_index_s cn68xxp1;
1636 typedef union cvmx_fpa_que8_page_index cvmx_fpa_que8_page_index_t;
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."
1644 union cvmx_fpa_que_act {
1646 struct cvmx_fpa_que_act_s {
1647 u64 reserved_29_63 : 35;
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;
1673 typedef union cvmx_fpa_que_act cvmx_fpa_que_act_t;
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."
1681 union cvmx_fpa_que_exp {
1683 struct cvmx_fpa_que_exp_s {
1684 u64 reserved_29_63 : 35;
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;
1710 typedef union cvmx_fpa_que_exp cvmx_fpa_que_exp_t;
1713 * cvmx_fpa_rd_latency_pc
1715 union cvmx_fpa_rd_latency_pc {
1717 struct cvmx_fpa_rd_latency_pc_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;
1726 typedef union cvmx_fpa_rd_latency_pc cvmx_fpa_rd_latency_pc_t;
1729 * cvmx_fpa_rd_req_pc
1731 union cvmx_fpa_rd_req_pc {
1733 struct cvmx_fpa_rd_req_pc_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;
1742 typedef union cvmx_fpa_rd_req_pc cvmx_fpa_rd_req_pc_t;
1745 * cvmx_fpa_red_delay
1747 union cvmx_fpa_red_delay {
1749 struct cvmx_fpa_red_delay_s {
1750 u64 reserved_14_63 : 50;
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;
1759 typedef union cvmx_fpa_red_delay cvmx_fpa_red_delay_t;
1764 * Allows soft reset.
1767 union cvmx_fpa_sft_rst {
1769 struct cvmx_fpa_sft_rst_s {
1771 u64 reserved_1_62 : 62;
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;
1780 typedef union cvmx_fpa_sft_rst cvmx_fpa_sft_rst_t;
1785 * FPA_WART_CTL = FPA's WART Control
1787 * Control and status for the WART block.
1789 union cvmx_fpa_wart_ctl {
1791 struct cvmx_fpa_wart_ctl_s {
1792 u64 reserved_16_63 : 48;
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;
1808 typedef union cvmx_fpa_wart_ctl cvmx_fpa_wart_ctl_t;
1811 * cvmx_fpa_wart_status
1813 * FPA_WART_STATUS = FPA's WART Status
1815 * Control and status for the WART block.
1817 union cvmx_fpa_wart_status {
1819 struct cvmx_fpa_wart_status_s {
1820 u64 reserved_32_63 : 32;
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;
1836 typedef union cvmx_fpa_wart_status cvmx_fpa_wart_status_t;
1839 * cvmx_fpa_wqe_threshold
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
1848 union cvmx_fpa_wqe_threshold {
1850 struct cvmx_fpa_wqe_threshold_s {
1851 u64 reserved_32_63 : 32;
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;
1864 typedef union cvmx_fpa_wqe_threshold cvmx_fpa_wqe_threshold_t;