blob: f23ed78ee46b4a8f966d39309e5b5dc66e2298dd [file] [log] [blame]
Aaron Williamsa237f7b2020-12-11 17:05:38 +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 npi.
7 */
8
9#ifndef __CVMX_NPI_DEFS_H__
10#define __CVMX_NPI_DEFS_H__
11
12#define CVMX_NPI_BASE_ADDR_INPUT0 CVMX_NPI_BASE_ADDR_INPUTX(0)
13#define CVMX_NPI_BASE_ADDR_INPUT1 CVMX_NPI_BASE_ADDR_INPUTX(1)
14#define CVMX_NPI_BASE_ADDR_INPUT2 CVMX_NPI_BASE_ADDR_INPUTX(2)
15#define CVMX_NPI_BASE_ADDR_INPUT3 CVMX_NPI_BASE_ADDR_INPUTX(3)
16#define CVMX_NPI_BASE_ADDR_INPUTX(offset) (0x00011F0000000070ull + ((offset) & 3) * 16)
17#define CVMX_NPI_BASE_ADDR_OUTPUT0 CVMX_NPI_BASE_ADDR_OUTPUTX(0)
18#define CVMX_NPI_BASE_ADDR_OUTPUT1 CVMX_NPI_BASE_ADDR_OUTPUTX(1)
19#define CVMX_NPI_BASE_ADDR_OUTPUT2 CVMX_NPI_BASE_ADDR_OUTPUTX(2)
20#define CVMX_NPI_BASE_ADDR_OUTPUT3 CVMX_NPI_BASE_ADDR_OUTPUTX(3)
21#define CVMX_NPI_BASE_ADDR_OUTPUTX(offset) (0x00011F00000000B8ull + ((offset) & 3) * 8)
22#define CVMX_NPI_BIST_STATUS (0x00011F00000003F8ull)
23#define CVMX_NPI_BUFF_SIZE_OUTPUT0 CVMX_NPI_BUFF_SIZE_OUTPUTX(0)
24#define CVMX_NPI_BUFF_SIZE_OUTPUT1 CVMX_NPI_BUFF_SIZE_OUTPUTX(1)
25#define CVMX_NPI_BUFF_SIZE_OUTPUT2 CVMX_NPI_BUFF_SIZE_OUTPUTX(2)
26#define CVMX_NPI_BUFF_SIZE_OUTPUT3 CVMX_NPI_BUFF_SIZE_OUTPUTX(3)
27#define CVMX_NPI_BUFF_SIZE_OUTPUTX(offset) (0x00011F00000000E0ull + ((offset) & 3) * 8)
28#define CVMX_NPI_COMP_CTL (0x00011F0000000218ull)
29#define CVMX_NPI_CTL_STATUS (0x00011F0000000010ull)
30#define CVMX_NPI_DBG_SELECT (0x00011F0000000008ull)
31#define CVMX_NPI_DMA_CONTROL (0x00011F0000000128ull)
32#define CVMX_NPI_DMA_HIGHP_COUNTS (0x00011F0000000148ull)
33#define CVMX_NPI_DMA_HIGHP_NADDR (0x00011F0000000158ull)
34#define CVMX_NPI_DMA_LOWP_COUNTS (0x00011F0000000140ull)
35#define CVMX_NPI_DMA_LOWP_NADDR (0x00011F0000000150ull)
36#define CVMX_NPI_HIGHP_DBELL (0x00011F0000000120ull)
37#define CVMX_NPI_HIGHP_IBUFF_SADDR (0x00011F0000000110ull)
38#define CVMX_NPI_INPUT_CONTROL (0x00011F0000000138ull)
39#define CVMX_NPI_INT_ENB (0x00011F0000000020ull)
40#define CVMX_NPI_INT_SUM (0x00011F0000000018ull)
41#define CVMX_NPI_LOWP_DBELL (0x00011F0000000118ull)
42#define CVMX_NPI_LOWP_IBUFF_SADDR (0x00011F0000000108ull)
43#define CVMX_NPI_MEM_ACCESS_SUBID3 CVMX_NPI_MEM_ACCESS_SUBIDX(3)
44#define CVMX_NPI_MEM_ACCESS_SUBID4 CVMX_NPI_MEM_ACCESS_SUBIDX(4)
45#define CVMX_NPI_MEM_ACCESS_SUBID5 CVMX_NPI_MEM_ACCESS_SUBIDX(5)
46#define CVMX_NPI_MEM_ACCESS_SUBID6 CVMX_NPI_MEM_ACCESS_SUBIDX(6)
47#define CVMX_NPI_MEM_ACCESS_SUBIDX(offset) (0x00011F0000000028ull + ((offset) & 7) * 8 - 8 * 3)
48#define CVMX_NPI_MSI_RCV (0x0000000000000190ull)
49#define CVMX_NPI_NPI_MSI_RCV (0x00011F0000001190ull)
50#define CVMX_NPI_NUM_DESC_OUTPUT0 CVMX_NPI_NUM_DESC_OUTPUTX(0)
51#define CVMX_NPI_NUM_DESC_OUTPUT1 CVMX_NPI_NUM_DESC_OUTPUTX(1)
52#define CVMX_NPI_NUM_DESC_OUTPUT2 CVMX_NPI_NUM_DESC_OUTPUTX(2)
53#define CVMX_NPI_NUM_DESC_OUTPUT3 CVMX_NPI_NUM_DESC_OUTPUTX(3)
54#define CVMX_NPI_NUM_DESC_OUTPUTX(offset) (0x00011F0000000050ull + ((offset) & 3) * 8)
55#define CVMX_NPI_OUTPUT_CONTROL (0x00011F0000000100ull)
56#define CVMX_NPI_P0_DBPAIR_ADDR CVMX_NPI_PX_DBPAIR_ADDR(0)
57#define CVMX_NPI_P0_INSTR_ADDR CVMX_NPI_PX_INSTR_ADDR(0)
58#define CVMX_NPI_P0_INSTR_CNTS CVMX_NPI_PX_INSTR_CNTS(0)
59#define CVMX_NPI_P0_PAIR_CNTS CVMX_NPI_PX_PAIR_CNTS(0)
60#define CVMX_NPI_P1_DBPAIR_ADDR CVMX_NPI_PX_DBPAIR_ADDR(1)
61#define CVMX_NPI_P1_INSTR_ADDR CVMX_NPI_PX_INSTR_ADDR(1)
62#define CVMX_NPI_P1_INSTR_CNTS CVMX_NPI_PX_INSTR_CNTS(1)
63#define CVMX_NPI_P1_PAIR_CNTS CVMX_NPI_PX_PAIR_CNTS(1)
64#define CVMX_NPI_P2_DBPAIR_ADDR CVMX_NPI_PX_DBPAIR_ADDR(2)
65#define CVMX_NPI_P2_INSTR_ADDR CVMX_NPI_PX_INSTR_ADDR(2)
66#define CVMX_NPI_P2_INSTR_CNTS CVMX_NPI_PX_INSTR_CNTS(2)
67#define CVMX_NPI_P2_PAIR_CNTS CVMX_NPI_PX_PAIR_CNTS(2)
68#define CVMX_NPI_P3_DBPAIR_ADDR CVMX_NPI_PX_DBPAIR_ADDR(3)
69#define CVMX_NPI_P3_INSTR_ADDR CVMX_NPI_PX_INSTR_ADDR(3)
70#define CVMX_NPI_P3_INSTR_CNTS CVMX_NPI_PX_INSTR_CNTS(3)
71#define CVMX_NPI_P3_PAIR_CNTS CVMX_NPI_PX_PAIR_CNTS(3)
72#define CVMX_NPI_PCI_BAR1_INDEXX(offset) (0x00011F0000001100ull + ((offset) & 31) * 4)
73#define CVMX_NPI_PCI_BIST_REG (0x00011F00000011C0ull)
74#define CVMX_NPI_PCI_BURST_SIZE (0x00011F00000000D8ull)
75#define CVMX_NPI_PCI_CFG00 (0x00011F0000001800ull)
76#define CVMX_NPI_PCI_CFG01 (0x00011F0000001804ull)
77#define CVMX_NPI_PCI_CFG02 (0x00011F0000001808ull)
78#define CVMX_NPI_PCI_CFG03 (0x00011F000000180Cull)
79#define CVMX_NPI_PCI_CFG04 (0x00011F0000001810ull)
80#define CVMX_NPI_PCI_CFG05 (0x00011F0000001814ull)
81#define CVMX_NPI_PCI_CFG06 (0x00011F0000001818ull)
82#define CVMX_NPI_PCI_CFG07 (0x00011F000000181Cull)
83#define CVMX_NPI_PCI_CFG08 (0x00011F0000001820ull)
84#define CVMX_NPI_PCI_CFG09 (0x00011F0000001824ull)
85#define CVMX_NPI_PCI_CFG10 (0x00011F0000001828ull)
86#define CVMX_NPI_PCI_CFG11 (0x00011F000000182Cull)
87#define CVMX_NPI_PCI_CFG12 (0x00011F0000001830ull)
88#define CVMX_NPI_PCI_CFG13 (0x00011F0000001834ull)
89#define CVMX_NPI_PCI_CFG15 (0x00011F000000183Cull)
90#define CVMX_NPI_PCI_CFG16 (0x00011F0000001840ull)
91#define CVMX_NPI_PCI_CFG17 (0x00011F0000001844ull)
92#define CVMX_NPI_PCI_CFG18 (0x00011F0000001848ull)
93#define CVMX_NPI_PCI_CFG19 (0x00011F000000184Cull)
94#define CVMX_NPI_PCI_CFG20 (0x00011F0000001850ull)
95#define CVMX_NPI_PCI_CFG21 (0x00011F0000001854ull)
96#define CVMX_NPI_PCI_CFG22 (0x00011F0000001858ull)
97#define CVMX_NPI_PCI_CFG56 (0x00011F00000018E0ull)
98#define CVMX_NPI_PCI_CFG57 (0x00011F00000018E4ull)
99#define CVMX_NPI_PCI_CFG58 (0x00011F00000018E8ull)
100#define CVMX_NPI_PCI_CFG59 (0x00011F00000018ECull)
101#define CVMX_NPI_PCI_CFG60 (0x00011F00000018F0ull)
102#define CVMX_NPI_PCI_CFG61 (0x00011F00000018F4ull)
103#define CVMX_NPI_PCI_CFG62 (0x00011F00000018F8ull)
104#define CVMX_NPI_PCI_CFG63 (0x00011F00000018FCull)
105#define CVMX_NPI_PCI_CNT_REG (0x00011F00000011B8ull)
106#define CVMX_NPI_PCI_CTL_STATUS_2 (0x00011F000000118Cull)
107#define CVMX_NPI_PCI_INT_ARB_CFG (0x00011F0000000130ull)
108#define CVMX_NPI_PCI_INT_ENB2 (0x00011F00000011A0ull)
109#define CVMX_NPI_PCI_INT_SUM2 (0x00011F0000001198ull)
110#define CVMX_NPI_PCI_READ_CMD (0x00011F0000000048ull)
111#define CVMX_NPI_PCI_READ_CMD_6 (0x00011F0000001180ull)
112#define CVMX_NPI_PCI_READ_CMD_C (0x00011F0000001184ull)
113#define CVMX_NPI_PCI_READ_CMD_E (0x00011F0000001188ull)
114#define CVMX_NPI_PCI_SCM_REG (0x00011F00000011A8ull)
115#define CVMX_NPI_PCI_TSR_REG (0x00011F00000011B0ull)
116#define CVMX_NPI_PORT32_INSTR_HDR (0x00011F00000001F8ull)
117#define CVMX_NPI_PORT33_INSTR_HDR (0x00011F0000000200ull)
118#define CVMX_NPI_PORT34_INSTR_HDR (0x00011F0000000208ull)
119#define CVMX_NPI_PORT35_INSTR_HDR (0x00011F0000000210ull)
120#define CVMX_NPI_PORT_BP_CONTROL (0x00011F00000001F0ull)
121#define CVMX_NPI_PX_DBPAIR_ADDR(offset) (0x00011F0000000180ull + ((offset) & 3) * 8)
122#define CVMX_NPI_PX_INSTR_ADDR(offset) (0x00011F00000001C0ull + ((offset) & 3) * 8)
123#define CVMX_NPI_PX_INSTR_CNTS(offset) (0x00011F00000001A0ull + ((offset) & 3) * 8)
124#define CVMX_NPI_PX_PAIR_CNTS(offset) (0x00011F0000000160ull + ((offset) & 3) * 8)
125#define CVMX_NPI_RSL_INT_BLOCKS (0x00011F0000000000ull)
126#define CVMX_NPI_SIZE_INPUT0 CVMX_NPI_SIZE_INPUTX(0)
127#define CVMX_NPI_SIZE_INPUT1 CVMX_NPI_SIZE_INPUTX(1)
128#define CVMX_NPI_SIZE_INPUT2 CVMX_NPI_SIZE_INPUTX(2)
129#define CVMX_NPI_SIZE_INPUT3 CVMX_NPI_SIZE_INPUTX(3)
130#define CVMX_NPI_SIZE_INPUTX(offset) (0x00011F0000000078ull + ((offset) & 3) * 16)
131#define CVMX_NPI_WIN_READ_TO (0x00011F00000001E0ull)
132
133/**
134 * cvmx_npi_base_addr_input#
135 *
136 * NPI_BASE_ADDR_INPUT0 = NPI's Base Address Input 0 Register
137 *
138 * The address to start reading Instructions from for Input-0.
139 */
140union cvmx_npi_base_addr_inputx {
141 u64 u64;
142 struct cvmx_npi_base_addr_inputx_s {
143 u64 baddr : 61;
144 u64 reserved_0_2 : 3;
145 } s;
146 struct cvmx_npi_base_addr_inputx_s cn30xx;
147 struct cvmx_npi_base_addr_inputx_s cn31xx;
148 struct cvmx_npi_base_addr_inputx_s cn38xx;
149 struct cvmx_npi_base_addr_inputx_s cn38xxp2;
150 struct cvmx_npi_base_addr_inputx_s cn50xx;
151 struct cvmx_npi_base_addr_inputx_s cn58xx;
152 struct cvmx_npi_base_addr_inputx_s cn58xxp1;
153};
154
155typedef union cvmx_npi_base_addr_inputx cvmx_npi_base_addr_inputx_t;
156
157/**
158 * cvmx_npi_base_addr_output#
159 *
160 * NPI_BASE_ADDR_OUTPUT0 = NPI's Base Address Output 0 Register
161 *
162 * The address to start reading Instructions from for Output-0.
163 */
164union cvmx_npi_base_addr_outputx {
165 u64 u64;
166 struct cvmx_npi_base_addr_outputx_s {
167 u64 baddr : 61;
168 u64 reserved_0_2 : 3;
169 } s;
170 struct cvmx_npi_base_addr_outputx_s cn30xx;
171 struct cvmx_npi_base_addr_outputx_s cn31xx;
172 struct cvmx_npi_base_addr_outputx_s cn38xx;
173 struct cvmx_npi_base_addr_outputx_s cn38xxp2;
174 struct cvmx_npi_base_addr_outputx_s cn50xx;
175 struct cvmx_npi_base_addr_outputx_s cn58xx;
176 struct cvmx_npi_base_addr_outputx_s cn58xxp1;
177};
178
179typedef union cvmx_npi_base_addr_outputx cvmx_npi_base_addr_outputx_t;
180
181/**
182 * cvmx_npi_bist_status
183 *
184 * NPI_BIST_STATUS = NPI's BIST Status Register
185 *
186 * Results from BIST runs of NPI's memories.
187 */
188union cvmx_npi_bist_status {
189 u64 u64;
190 struct cvmx_npi_bist_status_s {
191 u64 reserved_20_63 : 44;
192 u64 csr_bs : 1;
193 u64 dif_bs : 1;
194 u64 rdp_bs : 1;
195 u64 pcnc_bs : 1;
196 u64 pcn_bs : 1;
197 u64 rdn_bs : 1;
198 u64 pcac_bs : 1;
199 u64 pcad_bs : 1;
200 u64 rdnl_bs : 1;
201 u64 pgf_bs : 1;
202 u64 pig_bs : 1;
203 u64 pof0_bs : 1;
204 u64 pof1_bs : 1;
205 u64 pof2_bs : 1;
206 u64 pof3_bs : 1;
207 u64 pos_bs : 1;
208 u64 nus_bs : 1;
209 u64 dob_bs : 1;
210 u64 pdf_bs : 1;
211 u64 dpi_bs : 1;
212 } s;
213 struct cvmx_npi_bist_status_cn30xx {
214 u64 reserved_20_63 : 44;
215 u64 csr_bs : 1;
216 u64 dif_bs : 1;
217 u64 rdp_bs : 1;
218 u64 pcnc_bs : 1;
219 u64 pcn_bs : 1;
220 u64 rdn_bs : 1;
221 u64 pcac_bs : 1;
222 u64 pcad_bs : 1;
223 u64 rdnl_bs : 1;
224 u64 pgf_bs : 1;
225 u64 pig_bs : 1;
226 u64 pof0_bs : 1;
227 u64 reserved_5_7 : 3;
228 u64 pos_bs : 1;
229 u64 nus_bs : 1;
230 u64 dob_bs : 1;
231 u64 pdf_bs : 1;
232 u64 dpi_bs : 1;
233 } cn30xx;
234 struct cvmx_npi_bist_status_s cn31xx;
235 struct cvmx_npi_bist_status_s cn38xx;
236 struct cvmx_npi_bist_status_s cn38xxp2;
237 struct cvmx_npi_bist_status_cn50xx {
238 u64 reserved_20_63 : 44;
239 u64 csr_bs : 1;
240 u64 dif_bs : 1;
241 u64 rdp_bs : 1;
242 u64 pcnc_bs : 1;
243 u64 pcn_bs : 1;
244 u64 rdn_bs : 1;
245 u64 pcac_bs : 1;
246 u64 pcad_bs : 1;
247 u64 rdnl_bs : 1;
248 u64 pgf_bs : 1;
249 u64 pig_bs : 1;
250 u64 pof0_bs : 1;
251 u64 pof1_bs : 1;
252 u64 reserved_5_6 : 2;
253 u64 pos_bs : 1;
254 u64 nus_bs : 1;
255 u64 dob_bs : 1;
256 u64 pdf_bs : 1;
257 u64 dpi_bs : 1;
258 } cn50xx;
259 struct cvmx_npi_bist_status_s cn58xx;
260 struct cvmx_npi_bist_status_s cn58xxp1;
261};
262
263typedef union cvmx_npi_bist_status cvmx_npi_bist_status_t;
264
265/**
266 * cvmx_npi_buff_size_output#
267 *
268 * NPI_BUFF_SIZE_OUTPUT0 = NPI's D/I Buffer Sizes For Output 0
269 *
270 * The size in bytes of the Data Bufffer and Information Buffer for output 0.
271 */
272union cvmx_npi_buff_size_outputx {
273 u64 u64;
274 struct cvmx_npi_buff_size_outputx_s {
275 u64 reserved_23_63 : 41;
276 u64 isize : 7;
277 u64 bsize : 16;
278 } s;
279 struct cvmx_npi_buff_size_outputx_s cn30xx;
280 struct cvmx_npi_buff_size_outputx_s cn31xx;
281 struct cvmx_npi_buff_size_outputx_s cn38xx;
282 struct cvmx_npi_buff_size_outputx_s cn38xxp2;
283 struct cvmx_npi_buff_size_outputx_s cn50xx;
284 struct cvmx_npi_buff_size_outputx_s cn58xx;
285 struct cvmx_npi_buff_size_outputx_s cn58xxp1;
286};
287
288typedef union cvmx_npi_buff_size_outputx cvmx_npi_buff_size_outputx_t;
289
290/**
291 * cvmx_npi_comp_ctl
292 *
293 * NPI_COMP_CTL = PCI Compensation Control
294 *
295 * PCI Compensation Control
296 */
297union cvmx_npi_comp_ctl {
298 u64 u64;
299 struct cvmx_npi_comp_ctl_s {
300 u64 reserved_10_63 : 54;
301 u64 pctl : 5;
302 u64 nctl : 5;
303 } s;
304 struct cvmx_npi_comp_ctl_s cn50xx;
305 struct cvmx_npi_comp_ctl_s cn58xx;
306 struct cvmx_npi_comp_ctl_s cn58xxp1;
307};
308
309typedef union cvmx_npi_comp_ctl cvmx_npi_comp_ctl_t;
310
311/**
312 * cvmx_npi_ctl_status
313 *
314 * NPI_CTL_STATUS = NPI's Control Status Register
315 *
316 * Contains control ans status for NPI.
317 * Writes to this register are not ordered with writes/reads to the PCI Memory space.
318 * To ensure that a write has completed the user must read the register before
319 * making an access(i.e. PCI memory space) that requires the value of this register to be updated.
320 */
321union cvmx_npi_ctl_status {
322 u64 u64;
323 struct cvmx_npi_ctl_status_s {
324 u64 reserved_63_63 : 1;
325 u64 chip_rev : 8;
326 u64 dis_pniw : 1;
327 u64 out3_enb : 1;
328 u64 out2_enb : 1;
329 u64 out1_enb : 1;
330 u64 out0_enb : 1;
331 u64 ins3_enb : 1;
332 u64 ins2_enb : 1;
333 u64 ins1_enb : 1;
334 u64 ins0_enb : 1;
335 u64 ins3_64b : 1;
336 u64 ins2_64b : 1;
337 u64 ins1_64b : 1;
338 u64 ins0_64b : 1;
339 u64 pci_wdis : 1;
340 u64 wait_com : 1;
341 u64 reserved_37_39 : 3;
342 u64 max_word : 5;
343 u64 reserved_10_31 : 22;
344 u64 timer : 10;
345 } s;
346 struct cvmx_npi_ctl_status_cn30xx {
347 u64 reserved_63_63 : 1;
348 u64 chip_rev : 8;
349 u64 dis_pniw : 1;
350 u64 reserved_51_53 : 3;
351 u64 out0_enb : 1;
352 u64 reserved_47_49 : 3;
353 u64 ins0_enb : 1;
354 u64 reserved_43_45 : 3;
355 u64 ins0_64b : 1;
356 u64 pci_wdis : 1;
357 u64 wait_com : 1;
358 u64 reserved_37_39 : 3;
359 u64 max_word : 5;
360 u64 reserved_10_31 : 22;
361 u64 timer : 10;
362 } cn30xx;
363 struct cvmx_npi_ctl_status_cn31xx {
364 u64 reserved_63_63 : 1;
365 u64 chip_rev : 8;
366 u64 dis_pniw : 1;
367 u64 reserved_52_53 : 2;
368 u64 out1_enb : 1;
369 u64 out0_enb : 1;
370 u64 reserved_48_49 : 2;
371 u64 ins1_enb : 1;
372 u64 ins0_enb : 1;
373 u64 reserved_44_45 : 2;
374 u64 ins1_64b : 1;
375 u64 ins0_64b : 1;
376 u64 pci_wdis : 1;
377 u64 wait_com : 1;
378 u64 reserved_37_39 : 3;
379 u64 max_word : 5;
380 u64 reserved_10_31 : 22;
381 u64 timer : 10;
382 } cn31xx;
383 struct cvmx_npi_ctl_status_s cn38xx;
384 struct cvmx_npi_ctl_status_s cn38xxp2;
385 struct cvmx_npi_ctl_status_cn31xx cn50xx;
386 struct cvmx_npi_ctl_status_s cn58xx;
387 struct cvmx_npi_ctl_status_s cn58xxp1;
388};
389
390typedef union cvmx_npi_ctl_status cvmx_npi_ctl_status_t;
391
392/**
393 * cvmx_npi_dbg_select
394 *
395 * NPI_DBG_SELECT = Debug Select Register
396 *
397 * Contains the debug select value in last written to the RSLs.
398 */
399union cvmx_npi_dbg_select {
400 u64 u64;
401 struct cvmx_npi_dbg_select_s {
402 u64 reserved_16_63 : 48;
403 u64 dbg_sel : 16;
404 } s;
405 struct cvmx_npi_dbg_select_s cn30xx;
406 struct cvmx_npi_dbg_select_s cn31xx;
407 struct cvmx_npi_dbg_select_s cn38xx;
408 struct cvmx_npi_dbg_select_s cn38xxp2;
409 struct cvmx_npi_dbg_select_s cn50xx;
410 struct cvmx_npi_dbg_select_s cn58xx;
411 struct cvmx_npi_dbg_select_s cn58xxp1;
412};
413
414typedef union cvmx_npi_dbg_select cvmx_npi_dbg_select_t;
415
416/**
417 * cvmx_npi_dma_control
418 *
419 * NPI_DMA_CONTROL = DMA Control Register
420 *
421 * Controls operation of the DMA IN/OUT of the NPI.
422 */
423union cvmx_npi_dma_control {
424 u64 u64;
425 struct cvmx_npi_dma_control_s {
426 u64 reserved_36_63 : 28;
427 u64 b0_lend : 1;
428 u64 dwb_denb : 1;
429 u64 dwb_ichk : 9;
430 u64 fpa_que : 3;
431 u64 o_add1 : 1;
432 u64 o_ro : 1;
433 u64 o_ns : 1;
434 u64 o_es : 2;
435 u64 o_mode : 1;
436 u64 hp_enb : 1;
437 u64 lp_enb : 1;
438 u64 csize : 14;
439 } s;
440 struct cvmx_npi_dma_control_s cn30xx;
441 struct cvmx_npi_dma_control_s cn31xx;
442 struct cvmx_npi_dma_control_s cn38xx;
443 struct cvmx_npi_dma_control_s cn38xxp2;
444 struct cvmx_npi_dma_control_s cn50xx;
445 struct cvmx_npi_dma_control_s cn58xx;
446 struct cvmx_npi_dma_control_s cn58xxp1;
447};
448
449typedef union cvmx_npi_dma_control cvmx_npi_dma_control_t;
450
451/**
452 * cvmx_npi_dma_highp_counts
453 *
454 * NPI_DMA_HIGHP_COUNTS = NPI's High Priority DMA Counts
455 *
456 * Values for determing the number of instructions for High Priority DMA in the NPI.
457 */
458union cvmx_npi_dma_highp_counts {
459 u64 u64;
460 struct cvmx_npi_dma_highp_counts_s {
461 u64 reserved_39_63 : 25;
462 u64 fcnt : 7;
463 u64 dbell : 32;
464 } s;
465 struct cvmx_npi_dma_highp_counts_s cn30xx;
466 struct cvmx_npi_dma_highp_counts_s cn31xx;
467 struct cvmx_npi_dma_highp_counts_s cn38xx;
468 struct cvmx_npi_dma_highp_counts_s cn38xxp2;
469 struct cvmx_npi_dma_highp_counts_s cn50xx;
470 struct cvmx_npi_dma_highp_counts_s cn58xx;
471 struct cvmx_npi_dma_highp_counts_s cn58xxp1;
472};
473
474typedef union cvmx_npi_dma_highp_counts cvmx_npi_dma_highp_counts_t;
475
476/**
477 * cvmx_npi_dma_highp_naddr
478 *
479 * NPI_DMA_HIGHP_NADDR = NPI's High Priority DMA Next Ichunk Address
480 *
481 * Place NPI will read the next Ichunk data from. This is valid when state is 0
482 */
483union cvmx_npi_dma_highp_naddr {
484 u64 u64;
485 struct cvmx_npi_dma_highp_naddr_s {
486 u64 reserved_40_63 : 24;
487 u64 state : 4;
488 u64 addr : 36;
489 } s;
490 struct cvmx_npi_dma_highp_naddr_s cn30xx;
491 struct cvmx_npi_dma_highp_naddr_s cn31xx;
492 struct cvmx_npi_dma_highp_naddr_s cn38xx;
493 struct cvmx_npi_dma_highp_naddr_s cn38xxp2;
494 struct cvmx_npi_dma_highp_naddr_s cn50xx;
495 struct cvmx_npi_dma_highp_naddr_s cn58xx;
496 struct cvmx_npi_dma_highp_naddr_s cn58xxp1;
497};
498
499typedef union cvmx_npi_dma_highp_naddr cvmx_npi_dma_highp_naddr_t;
500
501/**
502 * cvmx_npi_dma_lowp_counts
503 *
504 * NPI_DMA_LOWP_COUNTS = NPI's Low Priority DMA Counts
505 *
506 * Values for determing the number of instructions for Low Priority DMA in the NPI.
507 */
508union cvmx_npi_dma_lowp_counts {
509 u64 u64;
510 struct cvmx_npi_dma_lowp_counts_s {
511 u64 reserved_39_63 : 25;
512 u64 fcnt : 7;
513 u64 dbell : 32;
514 } s;
515 struct cvmx_npi_dma_lowp_counts_s cn30xx;
516 struct cvmx_npi_dma_lowp_counts_s cn31xx;
517 struct cvmx_npi_dma_lowp_counts_s cn38xx;
518 struct cvmx_npi_dma_lowp_counts_s cn38xxp2;
519 struct cvmx_npi_dma_lowp_counts_s cn50xx;
520 struct cvmx_npi_dma_lowp_counts_s cn58xx;
521 struct cvmx_npi_dma_lowp_counts_s cn58xxp1;
522};
523
524typedef union cvmx_npi_dma_lowp_counts cvmx_npi_dma_lowp_counts_t;
525
526/**
527 * cvmx_npi_dma_lowp_naddr
528 *
529 * NPI_DMA_LOWP_NADDR = NPI's Low Priority DMA Next Ichunk Address
530 *
531 * Place NPI will read the next Ichunk data from. This is valid when state is 0
532 */
533union cvmx_npi_dma_lowp_naddr {
534 u64 u64;
535 struct cvmx_npi_dma_lowp_naddr_s {
536 u64 reserved_40_63 : 24;
537 u64 state : 4;
538 u64 addr : 36;
539 } s;
540 struct cvmx_npi_dma_lowp_naddr_s cn30xx;
541 struct cvmx_npi_dma_lowp_naddr_s cn31xx;
542 struct cvmx_npi_dma_lowp_naddr_s cn38xx;
543 struct cvmx_npi_dma_lowp_naddr_s cn38xxp2;
544 struct cvmx_npi_dma_lowp_naddr_s cn50xx;
545 struct cvmx_npi_dma_lowp_naddr_s cn58xx;
546 struct cvmx_npi_dma_lowp_naddr_s cn58xxp1;
547};
548
549typedef union cvmx_npi_dma_lowp_naddr cvmx_npi_dma_lowp_naddr_t;
550
551/**
552 * cvmx_npi_highp_dbell
553 *
554 * NPI_HIGHP_DBELL = High Priority Door Bell
555 *
556 * The door bell register for the high priority DMA queue.
557 */
558union cvmx_npi_highp_dbell {
559 u64 u64;
560 struct cvmx_npi_highp_dbell_s {
561 u64 reserved_16_63 : 48;
562 u64 dbell : 16;
563 } s;
564 struct cvmx_npi_highp_dbell_s cn30xx;
565 struct cvmx_npi_highp_dbell_s cn31xx;
566 struct cvmx_npi_highp_dbell_s cn38xx;
567 struct cvmx_npi_highp_dbell_s cn38xxp2;
568 struct cvmx_npi_highp_dbell_s cn50xx;
569 struct cvmx_npi_highp_dbell_s cn58xx;
570 struct cvmx_npi_highp_dbell_s cn58xxp1;
571};
572
573typedef union cvmx_npi_highp_dbell cvmx_npi_highp_dbell_t;
574
575/**
576 * cvmx_npi_highp_ibuff_saddr
577 *
578 * NPI_HIGHP_IBUFF_SADDR = DMA High Priority Instruction Buffer Starting Address
579 *
580 * The address to start reading Instructions from for HIGHP.
581 */
582union cvmx_npi_highp_ibuff_saddr {
583 u64 u64;
584 struct cvmx_npi_highp_ibuff_saddr_s {
585 u64 reserved_36_63 : 28;
586 u64 saddr : 36;
587 } s;
588 struct cvmx_npi_highp_ibuff_saddr_s cn30xx;
589 struct cvmx_npi_highp_ibuff_saddr_s cn31xx;
590 struct cvmx_npi_highp_ibuff_saddr_s cn38xx;
591 struct cvmx_npi_highp_ibuff_saddr_s cn38xxp2;
592 struct cvmx_npi_highp_ibuff_saddr_s cn50xx;
593 struct cvmx_npi_highp_ibuff_saddr_s cn58xx;
594 struct cvmx_npi_highp_ibuff_saddr_s cn58xxp1;
595};
596
597typedef union cvmx_npi_highp_ibuff_saddr cvmx_npi_highp_ibuff_saddr_t;
598
599/**
600 * cvmx_npi_input_control
601 *
602 * NPI_INPUT_CONTROL = NPI's Input Control Register
603 *
604 * Control for reads for gather list and instructions.
605 */
606union cvmx_npi_input_control {
607 u64 u64;
608 struct cvmx_npi_input_control_s {
609 u64 reserved_23_63 : 41;
610 u64 pkt_rr : 1;
611 u64 pbp_dhi : 13;
612 u64 d_nsr : 1;
613 u64 d_esr : 2;
614 u64 d_ror : 1;
615 u64 use_csr : 1;
616 u64 nsr : 1;
617 u64 esr : 2;
618 u64 ror : 1;
619 } s;
620 struct cvmx_npi_input_control_cn30xx {
621 u64 reserved_22_63 : 42;
622 u64 pbp_dhi : 13;
623 u64 d_nsr : 1;
624 u64 d_esr : 2;
625 u64 d_ror : 1;
626 u64 use_csr : 1;
627 u64 nsr : 1;
628 u64 esr : 2;
629 u64 ror : 1;
630 } cn30xx;
631 struct cvmx_npi_input_control_cn30xx cn31xx;
632 struct cvmx_npi_input_control_s cn38xx;
633 struct cvmx_npi_input_control_cn30xx cn38xxp2;
634 struct cvmx_npi_input_control_s cn50xx;
635 struct cvmx_npi_input_control_s cn58xx;
636 struct cvmx_npi_input_control_s cn58xxp1;
637};
638
639typedef union cvmx_npi_input_control cvmx_npi_input_control_t;
640
641/**
642 * cvmx_npi_int_enb
643 *
644 * NPI_INTERRUPT_ENB = NPI's Interrupt Enable Register
645 *
646 * Used to enable the various interrupting conditions of NPI
647 */
648union cvmx_npi_int_enb {
649 u64 u64;
650 struct cvmx_npi_int_enb_s {
651 u64 reserved_62_63 : 2;
652 u64 q1_a_f : 1;
653 u64 q1_s_e : 1;
654 u64 pdf_p_f : 1;
655 u64 pdf_p_e : 1;
656 u64 pcf_p_f : 1;
657 u64 pcf_p_e : 1;
658 u64 rdx_s_e : 1;
659 u64 rwx_s_e : 1;
660 u64 pnc_a_f : 1;
661 u64 pnc_s_e : 1;
662 u64 com_a_f : 1;
663 u64 com_s_e : 1;
664 u64 q3_a_f : 1;
665 u64 q3_s_e : 1;
666 u64 q2_a_f : 1;
667 u64 q2_s_e : 1;
668 u64 pcr_a_f : 1;
669 u64 pcr_s_e : 1;
670 u64 fcr_a_f : 1;
671 u64 fcr_s_e : 1;
672 u64 iobdma : 1;
673 u64 p_dperr : 1;
674 u64 win_rto : 1;
675 u64 i3_pperr : 1;
676 u64 i2_pperr : 1;
677 u64 i1_pperr : 1;
678 u64 i0_pperr : 1;
679 u64 p3_ptout : 1;
680 u64 p2_ptout : 1;
681 u64 p1_ptout : 1;
682 u64 p0_ptout : 1;
683 u64 p3_pperr : 1;
684 u64 p2_pperr : 1;
685 u64 p1_pperr : 1;
686 u64 p0_pperr : 1;
687 u64 g3_rtout : 1;
688 u64 g2_rtout : 1;
689 u64 g1_rtout : 1;
690 u64 g0_rtout : 1;
691 u64 p3_perr : 1;
692 u64 p2_perr : 1;
693 u64 p1_perr : 1;
694 u64 p0_perr : 1;
695 u64 p3_rtout : 1;
696 u64 p2_rtout : 1;
697 u64 p1_rtout : 1;
698 u64 p0_rtout : 1;
699 u64 i3_overf : 1;
700 u64 i2_overf : 1;
701 u64 i1_overf : 1;
702 u64 i0_overf : 1;
703 u64 i3_rtout : 1;
704 u64 i2_rtout : 1;
705 u64 i1_rtout : 1;
706 u64 i0_rtout : 1;
707 u64 po3_2sml : 1;
708 u64 po2_2sml : 1;
709 u64 po1_2sml : 1;
710 u64 po0_2sml : 1;
711 u64 pci_rsl : 1;
712 u64 rml_wto : 1;
713 u64 rml_rto : 1;
714 } s;
715 struct cvmx_npi_int_enb_cn30xx {
716 u64 reserved_62_63 : 2;
717 u64 q1_a_f : 1;
718 u64 q1_s_e : 1;
719 u64 pdf_p_f : 1;
720 u64 pdf_p_e : 1;
721 u64 pcf_p_f : 1;
722 u64 pcf_p_e : 1;
723 u64 rdx_s_e : 1;
724 u64 rwx_s_e : 1;
725 u64 pnc_a_f : 1;
726 u64 pnc_s_e : 1;
727 u64 com_a_f : 1;
728 u64 com_s_e : 1;
729 u64 q3_a_f : 1;
730 u64 q3_s_e : 1;
731 u64 q2_a_f : 1;
732 u64 q2_s_e : 1;
733 u64 pcr_a_f : 1;
734 u64 pcr_s_e : 1;
735 u64 fcr_a_f : 1;
736 u64 fcr_s_e : 1;
737 u64 iobdma : 1;
738 u64 p_dperr : 1;
739 u64 win_rto : 1;
740 u64 reserved_36_38 : 3;
741 u64 i0_pperr : 1;
742 u64 reserved_32_34 : 3;
743 u64 p0_ptout : 1;
744 u64 reserved_28_30 : 3;
745 u64 p0_pperr : 1;
746 u64 reserved_24_26 : 3;
747 u64 g0_rtout : 1;
748 u64 reserved_20_22 : 3;
749 u64 p0_perr : 1;
750 u64 reserved_16_18 : 3;
751 u64 p0_rtout : 1;
752 u64 reserved_12_14 : 3;
753 u64 i0_overf : 1;
754 u64 reserved_8_10 : 3;
755 u64 i0_rtout : 1;
756 u64 reserved_4_6 : 3;
757 u64 po0_2sml : 1;
758 u64 pci_rsl : 1;
759 u64 rml_wto : 1;
760 u64 rml_rto : 1;
761 } cn30xx;
762 struct cvmx_npi_int_enb_cn31xx {
763 u64 reserved_62_63 : 2;
764 u64 q1_a_f : 1;
765 u64 q1_s_e : 1;
766 u64 pdf_p_f : 1;
767 u64 pdf_p_e : 1;
768 u64 pcf_p_f : 1;
769 u64 pcf_p_e : 1;
770 u64 rdx_s_e : 1;
771 u64 rwx_s_e : 1;
772 u64 pnc_a_f : 1;
773 u64 pnc_s_e : 1;
774 u64 com_a_f : 1;
775 u64 com_s_e : 1;
776 u64 q3_a_f : 1;
777 u64 q3_s_e : 1;
778 u64 q2_a_f : 1;
779 u64 q2_s_e : 1;
780 u64 pcr_a_f : 1;
781 u64 pcr_s_e : 1;
782 u64 fcr_a_f : 1;
783 u64 fcr_s_e : 1;
784 u64 iobdma : 1;
785 u64 p_dperr : 1;
786 u64 win_rto : 1;
787 u64 reserved_37_38 : 2;
788 u64 i1_pperr : 1;
789 u64 i0_pperr : 1;
790 u64 reserved_33_34 : 2;
791 u64 p1_ptout : 1;
792 u64 p0_ptout : 1;
793 u64 reserved_29_30 : 2;
794 u64 p1_pperr : 1;
795 u64 p0_pperr : 1;
796 u64 reserved_25_26 : 2;
797 u64 g1_rtout : 1;
798 u64 g0_rtout : 1;
799 u64 reserved_21_22 : 2;
800 u64 p1_perr : 1;
801 u64 p0_perr : 1;
802 u64 reserved_17_18 : 2;
803 u64 p1_rtout : 1;
804 u64 p0_rtout : 1;
805 u64 reserved_13_14 : 2;
806 u64 i1_overf : 1;
807 u64 i0_overf : 1;
808 u64 reserved_9_10 : 2;
809 u64 i1_rtout : 1;
810 u64 i0_rtout : 1;
811 u64 reserved_5_6 : 2;
812 u64 po1_2sml : 1;
813 u64 po0_2sml : 1;
814 u64 pci_rsl : 1;
815 u64 rml_wto : 1;
816 u64 rml_rto : 1;
817 } cn31xx;
818 struct cvmx_npi_int_enb_s cn38xx;
819 struct cvmx_npi_int_enb_cn38xxp2 {
820 u64 reserved_42_63 : 22;
821 u64 iobdma : 1;
822 u64 p_dperr : 1;
823 u64 win_rto : 1;
824 u64 i3_pperr : 1;
825 u64 i2_pperr : 1;
826 u64 i1_pperr : 1;
827 u64 i0_pperr : 1;
828 u64 p3_ptout : 1;
829 u64 p2_ptout : 1;
830 u64 p1_ptout : 1;
831 u64 p0_ptout : 1;
832 u64 p3_pperr : 1;
833 u64 p2_pperr : 1;
834 u64 p1_pperr : 1;
835 u64 p0_pperr : 1;
836 u64 g3_rtout : 1;
837 u64 g2_rtout : 1;
838 u64 g1_rtout : 1;
839 u64 g0_rtout : 1;
840 u64 p3_perr : 1;
841 u64 p2_perr : 1;
842 u64 p1_perr : 1;
843 u64 p0_perr : 1;
844 u64 p3_rtout : 1;
845 u64 p2_rtout : 1;
846 u64 p1_rtout : 1;
847 u64 p0_rtout : 1;
848 u64 i3_overf : 1;
849 u64 i2_overf : 1;
850 u64 i1_overf : 1;
851 u64 i0_overf : 1;
852 u64 i3_rtout : 1;
853 u64 i2_rtout : 1;
854 u64 i1_rtout : 1;
855 u64 i0_rtout : 1;
856 u64 po3_2sml : 1;
857 u64 po2_2sml : 1;
858 u64 po1_2sml : 1;
859 u64 po0_2sml : 1;
860 u64 pci_rsl : 1;
861 u64 rml_wto : 1;
862 u64 rml_rto : 1;
863 } cn38xxp2;
864 struct cvmx_npi_int_enb_cn31xx cn50xx;
865 struct cvmx_npi_int_enb_s cn58xx;
866 struct cvmx_npi_int_enb_s cn58xxp1;
867};
868
869typedef union cvmx_npi_int_enb cvmx_npi_int_enb_t;
870
871/**
872 * cvmx_npi_int_sum
873 *
874 * NPI_INTERRUPT_SUM = NPI Interrupt Summary Register
875 *
876 * Set when an interrupt condition occurs, write '1' to clear.
877 */
878union cvmx_npi_int_sum {
879 u64 u64;
880 struct cvmx_npi_int_sum_s {
881 u64 reserved_62_63 : 2;
882 u64 q1_a_f : 1;
883 u64 q1_s_e : 1;
884 u64 pdf_p_f : 1;
885 u64 pdf_p_e : 1;
886 u64 pcf_p_f : 1;
887 u64 pcf_p_e : 1;
888 u64 rdx_s_e : 1;
889 u64 rwx_s_e : 1;
890 u64 pnc_a_f : 1;
891 u64 pnc_s_e : 1;
892 u64 com_a_f : 1;
893 u64 com_s_e : 1;
894 u64 q3_a_f : 1;
895 u64 q3_s_e : 1;
896 u64 q2_a_f : 1;
897 u64 q2_s_e : 1;
898 u64 pcr_a_f : 1;
899 u64 pcr_s_e : 1;
900 u64 fcr_a_f : 1;
901 u64 fcr_s_e : 1;
902 u64 iobdma : 1;
903 u64 p_dperr : 1;
904 u64 win_rto : 1;
905 u64 i3_pperr : 1;
906 u64 i2_pperr : 1;
907 u64 i1_pperr : 1;
908 u64 i0_pperr : 1;
909 u64 p3_ptout : 1;
910 u64 p2_ptout : 1;
911 u64 p1_ptout : 1;
912 u64 p0_ptout : 1;
913 u64 p3_pperr : 1;
914 u64 p2_pperr : 1;
915 u64 p1_pperr : 1;
916 u64 p0_pperr : 1;
917 u64 g3_rtout : 1;
918 u64 g2_rtout : 1;
919 u64 g1_rtout : 1;
920 u64 g0_rtout : 1;
921 u64 p3_perr : 1;
922 u64 p2_perr : 1;
923 u64 p1_perr : 1;
924 u64 p0_perr : 1;
925 u64 p3_rtout : 1;
926 u64 p2_rtout : 1;
927 u64 p1_rtout : 1;
928 u64 p0_rtout : 1;
929 u64 i3_overf : 1;
930 u64 i2_overf : 1;
931 u64 i1_overf : 1;
932 u64 i0_overf : 1;
933 u64 i3_rtout : 1;
934 u64 i2_rtout : 1;
935 u64 i1_rtout : 1;
936 u64 i0_rtout : 1;
937 u64 po3_2sml : 1;
938 u64 po2_2sml : 1;
939 u64 po1_2sml : 1;
940 u64 po0_2sml : 1;
941 u64 pci_rsl : 1;
942 u64 rml_wto : 1;
943 u64 rml_rto : 1;
944 } s;
945 struct cvmx_npi_int_sum_cn30xx {
946 u64 reserved_62_63 : 2;
947 u64 q1_a_f : 1;
948 u64 q1_s_e : 1;
949 u64 pdf_p_f : 1;
950 u64 pdf_p_e : 1;
951 u64 pcf_p_f : 1;
952 u64 pcf_p_e : 1;
953 u64 rdx_s_e : 1;
954 u64 rwx_s_e : 1;
955 u64 pnc_a_f : 1;
956 u64 pnc_s_e : 1;
957 u64 com_a_f : 1;
958 u64 com_s_e : 1;
959 u64 q3_a_f : 1;
960 u64 q3_s_e : 1;
961 u64 q2_a_f : 1;
962 u64 q2_s_e : 1;
963 u64 pcr_a_f : 1;
964 u64 pcr_s_e : 1;
965 u64 fcr_a_f : 1;
966 u64 fcr_s_e : 1;
967 u64 iobdma : 1;
968 u64 p_dperr : 1;
969 u64 win_rto : 1;
970 u64 reserved_36_38 : 3;
971 u64 i0_pperr : 1;
972 u64 reserved_32_34 : 3;
973 u64 p0_ptout : 1;
974 u64 reserved_28_30 : 3;
975 u64 p0_pperr : 1;
976 u64 reserved_24_26 : 3;
977 u64 g0_rtout : 1;
978 u64 reserved_20_22 : 3;
979 u64 p0_perr : 1;
980 u64 reserved_16_18 : 3;
981 u64 p0_rtout : 1;
982 u64 reserved_12_14 : 3;
983 u64 i0_overf : 1;
984 u64 reserved_8_10 : 3;
985 u64 i0_rtout : 1;
986 u64 reserved_4_6 : 3;
987 u64 po0_2sml : 1;
988 u64 pci_rsl : 1;
989 u64 rml_wto : 1;
990 u64 rml_rto : 1;
991 } cn30xx;
992 struct cvmx_npi_int_sum_cn31xx {
993 u64 reserved_62_63 : 2;
994 u64 q1_a_f : 1;
995 u64 q1_s_e : 1;
996 u64 pdf_p_f : 1;
997 u64 pdf_p_e : 1;
998 u64 pcf_p_f : 1;
999 u64 pcf_p_e : 1;
1000 u64 rdx_s_e : 1;
1001 u64 rwx_s_e : 1;
1002 u64 pnc_a_f : 1;
1003 u64 pnc_s_e : 1;
1004 u64 com_a_f : 1;
1005 u64 com_s_e : 1;
1006 u64 q3_a_f : 1;
1007 u64 q3_s_e : 1;
1008 u64 q2_a_f : 1;
1009 u64 q2_s_e : 1;
1010 u64 pcr_a_f : 1;
1011 u64 pcr_s_e : 1;
1012 u64 fcr_a_f : 1;
1013 u64 fcr_s_e : 1;
1014 u64 iobdma : 1;
1015 u64 p_dperr : 1;
1016 u64 win_rto : 1;
1017 u64 reserved_37_38 : 2;
1018 u64 i1_pperr : 1;
1019 u64 i0_pperr : 1;
1020 u64 reserved_33_34 : 2;
1021 u64 p1_ptout : 1;
1022 u64 p0_ptout : 1;
1023 u64 reserved_29_30 : 2;
1024 u64 p1_pperr : 1;
1025 u64 p0_pperr : 1;
1026 u64 reserved_25_26 : 2;
1027 u64 g1_rtout : 1;
1028 u64 g0_rtout : 1;
1029 u64 reserved_21_22 : 2;
1030 u64 p1_perr : 1;
1031 u64 p0_perr : 1;
1032 u64 reserved_17_18 : 2;
1033 u64 p1_rtout : 1;
1034 u64 p0_rtout : 1;
1035 u64 reserved_13_14 : 2;
1036 u64 i1_overf : 1;
1037 u64 i0_overf : 1;
1038 u64 reserved_9_10 : 2;
1039 u64 i1_rtout : 1;
1040 u64 i0_rtout : 1;
1041 u64 reserved_5_6 : 2;
1042 u64 po1_2sml : 1;
1043 u64 po0_2sml : 1;
1044 u64 pci_rsl : 1;
1045 u64 rml_wto : 1;
1046 u64 rml_rto : 1;
1047 } cn31xx;
1048 struct cvmx_npi_int_sum_s cn38xx;
1049 struct cvmx_npi_int_sum_cn38xxp2 {
1050 u64 reserved_42_63 : 22;
1051 u64 iobdma : 1;
1052 u64 p_dperr : 1;
1053 u64 win_rto : 1;
1054 u64 i3_pperr : 1;
1055 u64 i2_pperr : 1;
1056 u64 i1_pperr : 1;
1057 u64 i0_pperr : 1;
1058 u64 p3_ptout : 1;
1059 u64 p2_ptout : 1;
1060 u64 p1_ptout : 1;
1061 u64 p0_ptout : 1;
1062 u64 p3_pperr : 1;
1063 u64 p2_pperr : 1;
1064 u64 p1_pperr : 1;
1065 u64 p0_pperr : 1;
1066 u64 g3_rtout : 1;
1067 u64 g2_rtout : 1;
1068 u64 g1_rtout : 1;
1069 u64 g0_rtout : 1;
1070 u64 p3_perr : 1;
1071 u64 p2_perr : 1;
1072 u64 p1_perr : 1;
1073 u64 p0_perr : 1;
1074 u64 p3_rtout : 1;
1075 u64 p2_rtout : 1;
1076 u64 p1_rtout : 1;
1077 u64 p0_rtout : 1;
1078 u64 i3_overf : 1;
1079 u64 i2_overf : 1;
1080 u64 i1_overf : 1;
1081 u64 i0_overf : 1;
1082 u64 i3_rtout : 1;
1083 u64 i2_rtout : 1;
1084 u64 i1_rtout : 1;
1085 u64 i0_rtout : 1;
1086 u64 po3_2sml : 1;
1087 u64 po2_2sml : 1;
1088 u64 po1_2sml : 1;
1089 u64 po0_2sml : 1;
1090 u64 pci_rsl : 1;
1091 u64 rml_wto : 1;
1092 u64 rml_rto : 1;
1093 } cn38xxp2;
1094 struct cvmx_npi_int_sum_cn31xx cn50xx;
1095 struct cvmx_npi_int_sum_s cn58xx;
1096 struct cvmx_npi_int_sum_s cn58xxp1;
1097};
1098
1099typedef union cvmx_npi_int_sum cvmx_npi_int_sum_t;
1100
1101/**
1102 * cvmx_npi_lowp_dbell
1103 *
1104 * NPI_LOWP_DBELL = Low Priority Door Bell
1105 *
1106 * The door bell register for the low priority DMA queue.
1107 */
1108union cvmx_npi_lowp_dbell {
1109 u64 u64;
1110 struct cvmx_npi_lowp_dbell_s {
1111 u64 reserved_16_63 : 48;
1112 u64 dbell : 16;
1113 } s;
1114 struct cvmx_npi_lowp_dbell_s cn30xx;
1115 struct cvmx_npi_lowp_dbell_s cn31xx;
1116 struct cvmx_npi_lowp_dbell_s cn38xx;
1117 struct cvmx_npi_lowp_dbell_s cn38xxp2;
1118 struct cvmx_npi_lowp_dbell_s cn50xx;
1119 struct cvmx_npi_lowp_dbell_s cn58xx;
1120 struct cvmx_npi_lowp_dbell_s cn58xxp1;
1121};
1122
1123typedef union cvmx_npi_lowp_dbell cvmx_npi_lowp_dbell_t;
1124
1125/**
1126 * cvmx_npi_lowp_ibuff_saddr
1127 *
1128 * NPI_LOWP_IBUFF_SADDR = DMA Low Priority's Instruction Buffer Starting Address
1129 *
1130 * The address to start reading Instructions from for LOWP.
1131 */
1132union cvmx_npi_lowp_ibuff_saddr {
1133 u64 u64;
1134 struct cvmx_npi_lowp_ibuff_saddr_s {
1135 u64 reserved_36_63 : 28;
1136 u64 saddr : 36;
1137 } s;
1138 struct cvmx_npi_lowp_ibuff_saddr_s cn30xx;
1139 struct cvmx_npi_lowp_ibuff_saddr_s cn31xx;
1140 struct cvmx_npi_lowp_ibuff_saddr_s cn38xx;
1141 struct cvmx_npi_lowp_ibuff_saddr_s cn38xxp2;
1142 struct cvmx_npi_lowp_ibuff_saddr_s cn50xx;
1143 struct cvmx_npi_lowp_ibuff_saddr_s cn58xx;
1144 struct cvmx_npi_lowp_ibuff_saddr_s cn58xxp1;
1145};
1146
1147typedef union cvmx_npi_lowp_ibuff_saddr cvmx_npi_lowp_ibuff_saddr_t;
1148
1149/**
1150 * cvmx_npi_mem_access_subid#
1151 *
1152 * NPI_MEM_ACCESS_SUBID3 = Memory Access SubId 3Register
1153 *
1154 * Carries Read/Write parameters for PP access to PCI memory that use NPI SubId3.
1155 * Writes to this register are not ordered with writes/reads to the PCI Memory space.
1156 * To ensure that a write has completed the user must read the register before
1157 * making an access(i.e. PCI memory space) that requires the value of this register to be updated.
1158 */
1159union cvmx_npi_mem_access_subidx {
1160 u64 u64;
1161 struct cvmx_npi_mem_access_subidx_s {
1162 u64 reserved_38_63 : 26;
1163 u64 shortl : 1;
1164 u64 nmerge : 1;
1165 u64 esr : 2;
1166 u64 esw : 2;
1167 u64 nsr : 1;
1168 u64 nsw : 1;
1169 u64 ror : 1;
1170 u64 row : 1;
1171 u64 ba : 28;
1172 } s;
1173 struct cvmx_npi_mem_access_subidx_s cn30xx;
1174 struct cvmx_npi_mem_access_subidx_cn31xx {
1175 u64 reserved_36_63 : 28;
1176 u64 esr : 2;
1177 u64 esw : 2;
1178 u64 nsr : 1;
1179 u64 nsw : 1;
1180 u64 ror : 1;
1181 u64 row : 1;
1182 u64 ba : 28;
1183 } cn31xx;
1184 struct cvmx_npi_mem_access_subidx_s cn38xx;
1185 struct cvmx_npi_mem_access_subidx_cn31xx cn38xxp2;
1186 struct cvmx_npi_mem_access_subidx_s cn50xx;
1187 struct cvmx_npi_mem_access_subidx_s cn58xx;
1188 struct cvmx_npi_mem_access_subidx_s cn58xxp1;
1189};
1190
1191typedef union cvmx_npi_mem_access_subidx cvmx_npi_mem_access_subidx_t;
1192
1193/**
1194 * cvmx_npi_msi_rcv
1195 *
1196 * NPI_MSI_RCV = NPI MSI Receive Vector Register
1197 *
1198 * A bit is set in this register relative to the vector received during a MSI. And cleared by a W1 to the register.
1199 */
1200union cvmx_npi_msi_rcv {
1201 u64 u64;
1202 struct cvmx_npi_msi_rcv_s {
1203 u64 int_vec : 64;
1204 } s;
1205 struct cvmx_npi_msi_rcv_s cn30xx;
1206 struct cvmx_npi_msi_rcv_s cn31xx;
1207 struct cvmx_npi_msi_rcv_s cn38xx;
1208 struct cvmx_npi_msi_rcv_s cn38xxp2;
1209 struct cvmx_npi_msi_rcv_s cn50xx;
1210 struct cvmx_npi_msi_rcv_s cn58xx;
1211 struct cvmx_npi_msi_rcv_s cn58xxp1;
1212};
1213
1214typedef union cvmx_npi_msi_rcv cvmx_npi_msi_rcv_t;
1215
1216/**
1217 * cvmx_npi_num_desc_output#
1218 *
1219 * NUM_DESC_OUTPUT0 = Number Of Descriptors Available For Output 0
1220 *
1221 * The size of the Buffer/Info Pointer Pair ring for Output-0.
1222 */
1223union cvmx_npi_num_desc_outputx {
1224 u64 u64;
1225 struct cvmx_npi_num_desc_outputx_s {
1226 u64 reserved_32_63 : 32;
1227 u64 size : 32;
1228 } s;
1229 struct cvmx_npi_num_desc_outputx_s cn30xx;
1230 struct cvmx_npi_num_desc_outputx_s cn31xx;
1231 struct cvmx_npi_num_desc_outputx_s cn38xx;
1232 struct cvmx_npi_num_desc_outputx_s cn38xxp2;
1233 struct cvmx_npi_num_desc_outputx_s cn50xx;
1234 struct cvmx_npi_num_desc_outputx_s cn58xx;
1235 struct cvmx_npi_num_desc_outputx_s cn58xxp1;
1236};
1237
1238typedef union cvmx_npi_num_desc_outputx cvmx_npi_num_desc_outputx_t;
1239
1240/**
1241 * cvmx_npi_output_control
1242 *
1243 * NPI_OUTPUT_CONTROL = NPI's Output Control Register
1244 *
1245 * The address to start reading Instructions from for Output-3.
1246 */
1247union cvmx_npi_output_control {
1248 u64 u64;
1249 struct cvmx_npi_output_control_s {
1250 u64 reserved_49_63 : 15;
1251 u64 pkt_rr : 1;
1252 u64 p3_bmode : 1;
1253 u64 p2_bmode : 1;
1254 u64 p1_bmode : 1;
1255 u64 p0_bmode : 1;
1256 u64 o3_es : 2;
1257 u64 o3_ns : 1;
1258 u64 o3_ro : 1;
1259 u64 o2_es : 2;
1260 u64 o2_ns : 1;
1261 u64 o2_ro : 1;
1262 u64 o1_es : 2;
1263 u64 o1_ns : 1;
1264 u64 o1_ro : 1;
1265 u64 o0_es : 2;
1266 u64 o0_ns : 1;
1267 u64 o0_ro : 1;
1268 u64 o3_csrm : 1;
1269 u64 o2_csrm : 1;
1270 u64 o1_csrm : 1;
1271 u64 o0_csrm : 1;
1272 u64 reserved_20_23 : 4;
1273 u64 iptr_o3 : 1;
1274 u64 iptr_o2 : 1;
1275 u64 iptr_o1 : 1;
1276 u64 iptr_o0 : 1;
1277 u64 esr_sl3 : 2;
1278 u64 nsr_sl3 : 1;
1279 u64 ror_sl3 : 1;
1280 u64 esr_sl2 : 2;
1281 u64 nsr_sl2 : 1;
1282 u64 ror_sl2 : 1;
1283 u64 esr_sl1 : 2;
1284 u64 nsr_sl1 : 1;
1285 u64 ror_sl1 : 1;
1286 u64 esr_sl0 : 2;
1287 u64 nsr_sl0 : 1;
1288 u64 ror_sl0 : 1;
1289 } s;
1290 struct cvmx_npi_output_control_cn30xx {
1291 u64 reserved_45_63 : 19;
1292 u64 p0_bmode : 1;
1293 u64 reserved_32_43 : 12;
1294 u64 o0_es : 2;
1295 u64 o0_ns : 1;
1296 u64 o0_ro : 1;
1297 u64 reserved_25_27 : 3;
1298 u64 o0_csrm : 1;
1299 u64 reserved_17_23 : 7;
1300 u64 iptr_o0 : 1;
1301 u64 reserved_4_15 : 12;
1302 u64 esr_sl0 : 2;
1303 u64 nsr_sl0 : 1;
1304 u64 ror_sl0 : 1;
1305 } cn30xx;
1306 struct cvmx_npi_output_control_cn31xx {
1307 u64 reserved_46_63 : 18;
1308 u64 p1_bmode : 1;
1309 u64 p0_bmode : 1;
1310 u64 reserved_36_43 : 8;
1311 u64 o1_es : 2;
1312 u64 o1_ns : 1;
1313 u64 o1_ro : 1;
1314 u64 o0_es : 2;
1315 u64 o0_ns : 1;
1316 u64 o0_ro : 1;
1317 u64 reserved_26_27 : 2;
1318 u64 o1_csrm : 1;
1319 u64 o0_csrm : 1;
1320 u64 reserved_18_23 : 6;
1321 u64 iptr_o1 : 1;
1322 u64 iptr_o0 : 1;
1323 u64 reserved_8_15 : 8;
1324 u64 esr_sl1 : 2;
1325 u64 nsr_sl1 : 1;
1326 u64 ror_sl1 : 1;
1327 u64 esr_sl0 : 2;
1328 u64 nsr_sl0 : 1;
1329 u64 ror_sl0 : 1;
1330 } cn31xx;
1331 struct cvmx_npi_output_control_s cn38xx;
1332 struct cvmx_npi_output_control_cn38xxp2 {
1333 u64 reserved_48_63 : 16;
1334 u64 p3_bmode : 1;
1335 u64 p2_bmode : 1;
1336 u64 p1_bmode : 1;
1337 u64 p0_bmode : 1;
1338 u64 o3_es : 2;
1339 u64 o3_ns : 1;
1340 u64 o3_ro : 1;
1341 u64 o2_es : 2;
1342 u64 o2_ns : 1;
1343 u64 o2_ro : 1;
1344 u64 o1_es : 2;
1345 u64 o1_ns : 1;
1346 u64 o1_ro : 1;
1347 u64 o0_es : 2;
1348 u64 o0_ns : 1;
1349 u64 o0_ro : 1;
1350 u64 o3_csrm : 1;
1351 u64 o2_csrm : 1;
1352 u64 o1_csrm : 1;
1353 u64 o0_csrm : 1;
1354 u64 reserved_20_23 : 4;
1355 u64 iptr_o3 : 1;
1356 u64 iptr_o2 : 1;
1357 u64 iptr_o1 : 1;
1358 u64 iptr_o0 : 1;
1359 u64 esr_sl3 : 2;
1360 u64 nsr_sl3 : 1;
1361 u64 ror_sl3 : 1;
1362 u64 esr_sl2 : 2;
1363 u64 nsr_sl2 : 1;
1364 u64 ror_sl2 : 1;
1365 u64 esr_sl1 : 2;
1366 u64 nsr_sl1 : 1;
1367 u64 ror_sl1 : 1;
1368 u64 esr_sl0 : 2;
1369 u64 nsr_sl0 : 1;
1370 u64 ror_sl0 : 1;
1371 } cn38xxp2;
1372 struct cvmx_npi_output_control_cn50xx {
1373 u64 reserved_49_63 : 15;
1374 u64 pkt_rr : 1;
1375 u64 reserved_46_47 : 2;
1376 u64 p1_bmode : 1;
1377 u64 p0_bmode : 1;
1378 u64 reserved_36_43 : 8;
1379 u64 o1_es : 2;
1380 u64 o1_ns : 1;
1381 u64 o1_ro : 1;
1382 u64 o0_es : 2;
1383 u64 o0_ns : 1;
1384 u64 o0_ro : 1;
1385 u64 reserved_26_27 : 2;
1386 u64 o1_csrm : 1;
1387 u64 o0_csrm : 1;
1388 u64 reserved_18_23 : 6;
1389 u64 iptr_o1 : 1;
1390 u64 iptr_o0 : 1;
1391 u64 reserved_8_15 : 8;
1392 u64 esr_sl1 : 2;
1393 u64 nsr_sl1 : 1;
1394 u64 ror_sl1 : 1;
1395 u64 esr_sl0 : 2;
1396 u64 nsr_sl0 : 1;
1397 u64 ror_sl0 : 1;
1398 } cn50xx;
1399 struct cvmx_npi_output_control_s cn58xx;
1400 struct cvmx_npi_output_control_s cn58xxp1;
1401};
1402
1403typedef union cvmx_npi_output_control cvmx_npi_output_control_t;
1404
1405/**
1406 * cvmx_npi_p#_dbpair_addr
1407 *
1408 * NPI_P0_DBPAIR_ADDR = NPI's Port-0 DATA-BUFFER Pair Next Read Address.
1409 *
1410 * Contains the next address to read for Port's-0 Data/Buffer Pair.
1411 */
1412union cvmx_npi_px_dbpair_addr {
1413 u64 u64;
1414 struct cvmx_npi_px_dbpair_addr_s {
1415 u64 reserved_63_63 : 1;
1416 u64 state : 2;
1417 u64 naddr : 61;
1418 } s;
1419 struct cvmx_npi_px_dbpair_addr_s cn30xx;
1420 struct cvmx_npi_px_dbpair_addr_s cn31xx;
1421 struct cvmx_npi_px_dbpair_addr_s cn38xx;
1422 struct cvmx_npi_px_dbpair_addr_s cn38xxp2;
1423 struct cvmx_npi_px_dbpair_addr_s cn50xx;
1424 struct cvmx_npi_px_dbpair_addr_s cn58xx;
1425 struct cvmx_npi_px_dbpair_addr_s cn58xxp1;
1426};
1427
1428typedef union cvmx_npi_px_dbpair_addr cvmx_npi_px_dbpair_addr_t;
1429
1430/**
1431 * cvmx_npi_p#_instr_addr
1432 *
1433 * NPI_P0_INSTR_ADDR = NPI's Port-0 Instruction Next Read Address.
1434 *
1435 * Contains the next address to read for Port's-0 Instructions.
1436 */
1437union cvmx_npi_px_instr_addr {
1438 u64 u64;
1439 struct cvmx_npi_px_instr_addr_s {
1440 u64 state : 3;
1441 u64 naddr : 61;
1442 } s;
1443 struct cvmx_npi_px_instr_addr_s cn30xx;
1444 struct cvmx_npi_px_instr_addr_s cn31xx;
1445 struct cvmx_npi_px_instr_addr_s cn38xx;
1446 struct cvmx_npi_px_instr_addr_s cn38xxp2;
1447 struct cvmx_npi_px_instr_addr_s cn50xx;
1448 struct cvmx_npi_px_instr_addr_s cn58xx;
1449 struct cvmx_npi_px_instr_addr_s cn58xxp1;
1450};
1451
1452typedef union cvmx_npi_px_instr_addr cvmx_npi_px_instr_addr_t;
1453
1454/**
1455 * cvmx_npi_p#_instr_cnts
1456 *
1457 * NPI_P0_INSTR_CNTS = NPI's Port-0 Instruction Counts For Packets In.
1458 *
1459 * Used to determine the number of instruction in the NPI and to be fetched for Input-Packets.
1460 */
1461union cvmx_npi_px_instr_cnts {
1462 u64 u64;
1463 struct cvmx_npi_px_instr_cnts_s {
1464 u64 reserved_38_63 : 26;
1465 u64 fcnt : 6;
1466 u64 avail : 32;
1467 } s;
1468 struct cvmx_npi_px_instr_cnts_s cn30xx;
1469 struct cvmx_npi_px_instr_cnts_s cn31xx;
1470 struct cvmx_npi_px_instr_cnts_s cn38xx;
1471 struct cvmx_npi_px_instr_cnts_s cn38xxp2;
1472 struct cvmx_npi_px_instr_cnts_s cn50xx;
1473 struct cvmx_npi_px_instr_cnts_s cn58xx;
1474 struct cvmx_npi_px_instr_cnts_s cn58xxp1;
1475};
1476
1477typedef union cvmx_npi_px_instr_cnts cvmx_npi_px_instr_cnts_t;
1478
1479/**
1480 * cvmx_npi_p#_pair_cnts
1481 *
1482 * NPI_P0_PAIR_CNTS = NPI's Port-0 Instruction Counts For Packets Out.
1483 *
1484 * Used to determine the number of instruction in the NPI and to be fetched for Output-Packets.
1485 */
1486union cvmx_npi_px_pair_cnts {
1487 u64 u64;
1488 struct cvmx_npi_px_pair_cnts_s {
1489 u64 reserved_37_63 : 27;
1490 u64 fcnt : 5;
1491 u64 avail : 32;
1492 } s;
1493 struct cvmx_npi_px_pair_cnts_s cn30xx;
1494 struct cvmx_npi_px_pair_cnts_s cn31xx;
1495 struct cvmx_npi_px_pair_cnts_s cn38xx;
1496 struct cvmx_npi_px_pair_cnts_s cn38xxp2;
1497 struct cvmx_npi_px_pair_cnts_s cn50xx;
1498 struct cvmx_npi_px_pair_cnts_s cn58xx;
1499 struct cvmx_npi_px_pair_cnts_s cn58xxp1;
1500};
1501
1502typedef union cvmx_npi_px_pair_cnts cvmx_npi_px_pair_cnts_t;
1503
1504/**
1505 * cvmx_npi_pci_burst_size
1506 *
1507 * NPI_PCI_BURST_SIZE = NPI PCI Burst Size Register
1508 *
1509 * Control the number of words the NPI will attempt to read / write to/from the PCI.
1510 */
1511union cvmx_npi_pci_burst_size {
1512 u64 u64;
1513 struct cvmx_npi_pci_burst_size_s {
1514 u64 reserved_14_63 : 50;
1515 u64 wr_brst : 7;
1516 u64 rd_brst : 7;
1517 } s;
1518 struct cvmx_npi_pci_burst_size_s cn30xx;
1519 struct cvmx_npi_pci_burst_size_s cn31xx;
1520 struct cvmx_npi_pci_burst_size_s cn38xx;
1521 struct cvmx_npi_pci_burst_size_s cn38xxp2;
1522 struct cvmx_npi_pci_burst_size_s cn50xx;
1523 struct cvmx_npi_pci_burst_size_s cn58xx;
1524 struct cvmx_npi_pci_burst_size_s cn58xxp1;
1525};
1526
1527typedef union cvmx_npi_pci_burst_size cvmx_npi_pci_burst_size_t;
1528
1529/**
1530 * cvmx_npi_pci_int_arb_cfg
1531 *
1532 * NPI_PCI_INT_ARB_CFG = Configuration For PCI Arbiter
1533 *
1534 * Controls operation of the Internal PCI Arbiter. This register should
1535 * only be written when PRST# is asserted. NPI_PCI_INT_ARB_CFG[EN] should
1536 * only be set when Octane is a host.
1537 */
1538union cvmx_npi_pci_int_arb_cfg {
1539 u64 u64;
1540 struct cvmx_npi_pci_int_arb_cfg_s {
1541 u64 reserved_13_63 : 51;
1542 u64 hostmode : 1;
1543 u64 pci_ovr : 4;
1544 u64 reserved_5_7 : 3;
1545 u64 en : 1;
1546 u64 park_mod : 1;
1547 u64 park_dev : 3;
1548 } s;
1549 struct cvmx_npi_pci_int_arb_cfg_cn30xx {
1550 u64 reserved_5_63 : 59;
1551 u64 en : 1;
1552 u64 park_mod : 1;
1553 u64 park_dev : 3;
1554 } cn30xx;
1555 struct cvmx_npi_pci_int_arb_cfg_cn30xx cn31xx;
1556 struct cvmx_npi_pci_int_arb_cfg_cn30xx cn38xx;
1557 struct cvmx_npi_pci_int_arb_cfg_cn30xx cn38xxp2;
1558 struct cvmx_npi_pci_int_arb_cfg_s cn50xx;
1559 struct cvmx_npi_pci_int_arb_cfg_s cn58xx;
1560 struct cvmx_npi_pci_int_arb_cfg_s cn58xxp1;
1561};
1562
1563typedef union cvmx_npi_pci_int_arb_cfg cvmx_npi_pci_int_arb_cfg_t;
1564
1565/**
1566 * cvmx_npi_pci_read_cmd
1567 *
1568 * NPI_PCI_READ_CMD = NPI PCI Read Command Register
1569 *
1570 * Controls the type of read command sent.
1571 * Writes to this register are not ordered with writes/reads to the PCI Memory space.
1572 * To ensure that a write has completed the user must read the register before
1573 * making an access(i.e. PCI memory space) that requires the value of this register to be updated.
1574 * Also any previously issued reads/writes to PCI memory space, still stored in the outbound
1575 * FIFO will use the value of this register after it has been updated.
1576 */
1577union cvmx_npi_pci_read_cmd {
1578 u64 u64;
1579 struct cvmx_npi_pci_read_cmd_s {
1580 u64 reserved_11_63 : 53;
1581 u64 cmd_size : 11;
1582 } s;
1583 struct cvmx_npi_pci_read_cmd_s cn30xx;
1584 struct cvmx_npi_pci_read_cmd_s cn31xx;
1585 struct cvmx_npi_pci_read_cmd_s cn38xx;
1586 struct cvmx_npi_pci_read_cmd_s cn38xxp2;
1587 struct cvmx_npi_pci_read_cmd_s cn50xx;
1588 struct cvmx_npi_pci_read_cmd_s cn58xx;
1589 struct cvmx_npi_pci_read_cmd_s cn58xxp1;
1590};
1591
1592typedef union cvmx_npi_pci_read_cmd cvmx_npi_pci_read_cmd_t;
1593
1594/**
1595 * cvmx_npi_port32_instr_hdr
1596 *
1597 * NPI_PORT32_INSTR_HDR = NPI Port 32 Instruction Header
1598 *
1599 * Contains bits [62:42] of the Instruction Header for port 32.
1600 */
1601union cvmx_npi_port32_instr_hdr {
1602 u64 u64;
1603 struct cvmx_npi_port32_instr_hdr_s {
1604 u64 reserved_44_63 : 20;
1605 u64 pbp : 1;
1606 u64 rsv_f : 5;
1607 u64 rparmode : 2;
1608 u64 rsv_e : 1;
1609 u64 rskp_len : 7;
1610 u64 rsv_d : 6;
1611 u64 use_ihdr : 1;
1612 u64 rsv_c : 5;
1613 u64 par_mode : 2;
1614 u64 rsv_b : 1;
1615 u64 skp_len : 7;
1616 u64 rsv_a : 6;
1617 } s;
1618 struct cvmx_npi_port32_instr_hdr_s cn30xx;
1619 struct cvmx_npi_port32_instr_hdr_s cn31xx;
1620 struct cvmx_npi_port32_instr_hdr_s cn38xx;
1621 struct cvmx_npi_port32_instr_hdr_s cn38xxp2;
1622 struct cvmx_npi_port32_instr_hdr_s cn50xx;
1623 struct cvmx_npi_port32_instr_hdr_s cn58xx;
1624 struct cvmx_npi_port32_instr_hdr_s cn58xxp1;
1625};
1626
1627typedef union cvmx_npi_port32_instr_hdr cvmx_npi_port32_instr_hdr_t;
1628
1629/**
1630 * cvmx_npi_port33_instr_hdr
1631 *
1632 * NPI_PORT33_INSTR_HDR = NPI Port 33 Instruction Header
1633 *
1634 * Contains bits [62:42] of the Instruction Header for port 33.
1635 */
1636union cvmx_npi_port33_instr_hdr {
1637 u64 u64;
1638 struct cvmx_npi_port33_instr_hdr_s {
1639 u64 reserved_44_63 : 20;
1640 u64 pbp : 1;
1641 u64 rsv_f : 5;
1642 u64 rparmode : 2;
1643 u64 rsv_e : 1;
1644 u64 rskp_len : 7;
1645 u64 rsv_d : 6;
1646 u64 use_ihdr : 1;
1647 u64 rsv_c : 5;
1648 u64 par_mode : 2;
1649 u64 rsv_b : 1;
1650 u64 skp_len : 7;
1651 u64 rsv_a : 6;
1652 } s;
1653 struct cvmx_npi_port33_instr_hdr_s cn31xx;
1654 struct cvmx_npi_port33_instr_hdr_s cn38xx;
1655 struct cvmx_npi_port33_instr_hdr_s cn38xxp2;
1656 struct cvmx_npi_port33_instr_hdr_s cn50xx;
1657 struct cvmx_npi_port33_instr_hdr_s cn58xx;
1658 struct cvmx_npi_port33_instr_hdr_s cn58xxp1;
1659};
1660
1661typedef union cvmx_npi_port33_instr_hdr cvmx_npi_port33_instr_hdr_t;
1662
1663/**
1664 * cvmx_npi_port34_instr_hdr
1665 *
1666 * NPI_PORT34_INSTR_HDR = NPI Port 34 Instruction Header
1667 *
1668 * Contains bits [62:42] of the Instruction Header for port 34. Added for PASS-2.
1669 */
1670union cvmx_npi_port34_instr_hdr {
1671 u64 u64;
1672 struct cvmx_npi_port34_instr_hdr_s {
1673 u64 reserved_44_63 : 20;
1674 u64 pbp : 1;
1675 u64 rsv_f : 5;
1676 u64 rparmode : 2;
1677 u64 rsv_e : 1;
1678 u64 rskp_len : 7;
1679 u64 rsv_d : 6;
1680 u64 use_ihdr : 1;
1681 u64 rsv_c : 5;
1682 u64 par_mode : 2;
1683 u64 rsv_b : 1;
1684 u64 skp_len : 7;
1685 u64 rsv_a : 6;
1686 } s;
1687 struct cvmx_npi_port34_instr_hdr_s cn38xx;
1688 struct cvmx_npi_port34_instr_hdr_s cn38xxp2;
1689 struct cvmx_npi_port34_instr_hdr_s cn58xx;
1690 struct cvmx_npi_port34_instr_hdr_s cn58xxp1;
1691};
1692
1693typedef union cvmx_npi_port34_instr_hdr cvmx_npi_port34_instr_hdr_t;
1694
1695/**
1696 * cvmx_npi_port35_instr_hdr
1697 *
1698 * NPI_PORT35_INSTR_HDR = NPI Port 35 Instruction Header
1699 *
1700 * Contains bits [62:42] of the Instruction Header for port 35. Added for PASS-2.
1701 */
1702union cvmx_npi_port35_instr_hdr {
1703 u64 u64;
1704 struct cvmx_npi_port35_instr_hdr_s {
1705 u64 reserved_44_63 : 20;
1706 u64 pbp : 1;
1707 u64 rsv_f : 5;
1708 u64 rparmode : 2;
1709 u64 rsv_e : 1;
1710 u64 rskp_len : 7;
1711 u64 rsv_d : 6;
1712 u64 use_ihdr : 1;
1713 u64 rsv_c : 5;
1714 u64 par_mode : 2;
1715 u64 rsv_b : 1;
1716 u64 skp_len : 7;
1717 u64 rsv_a : 6;
1718 } s;
1719 struct cvmx_npi_port35_instr_hdr_s cn38xx;
1720 struct cvmx_npi_port35_instr_hdr_s cn38xxp2;
1721 struct cvmx_npi_port35_instr_hdr_s cn58xx;
1722 struct cvmx_npi_port35_instr_hdr_s cn58xxp1;
1723};
1724
1725typedef union cvmx_npi_port35_instr_hdr cvmx_npi_port35_instr_hdr_t;
1726
1727/**
1728 * cvmx_npi_port_bp_control
1729 *
1730 * NPI_PORT_BP_CONTROL = Port Backpressure Control
1731 *
1732 * Enables Port Level Backpressure
1733 */
1734union cvmx_npi_port_bp_control {
1735 u64 u64;
1736 struct cvmx_npi_port_bp_control_s {
1737 u64 reserved_8_63 : 56;
1738 u64 bp_on : 4;
1739 u64 enb : 4;
1740 } s;
1741 struct cvmx_npi_port_bp_control_s cn30xx;
1742 struct cvmx_npi_port_bp_control_s cn31xx;
1743 struct cvmx_npi_port_bp_control_s cn38xx;
1744 struct cvmx_npi_port_bp_control_s cn38xxp2;
1745 struct cvmx_npi_port_bp_control_s cn50xx;
1746 struct cvmx_npi_port_bp_control_s cn58xx;
1747 struct cvmx_npi_port_bp_control_s cn58xxp1;
1748};
1749
1750typedef union cvmx_npi_port_bp_control cvmx_npi_port_bp_control_t;
1751
1752/**
1753 * cvmx_npi_rsl_int_blocks
1754 *
1755 * RSL_INT_BLOCKS = RSL Interrupt Blocks Register
1756 *
1757 * Reading this register will return a vector with a bit set '1' for a corresponding RSL block
1758 * that presently has an interrupt pending. The Field Description below supplies the name of the
1759 * register that software should read to find out why that intterupt bit is set.
1760 */
1761union cvmx_npi_rsl_int_blocks {
1762 u64 u64;
1763 struct cvmx_npi_rsl_int_blocks_s {
1764 u64 reserved_32_63 : 32;
1765 u64 rint_31 : 1;
1766 u64 iob : 1;
1767 u64 reserved_28_29 : 2;
1768 u64 rint_27 : 1;
1769 u64 rint_26 : 1;
1770 u64 rint_25 : 1;
1771 u64 rint_24 : 1;
1772 u64 asx1 : 1;
1773 u64 asx0 : 1;
1774 u64 rint_21 : 1;
1775 u64 pip : 1;
1776 u64 spx1 : 1;
1777 u64 spx0 : 1;
1778 u64 lmc : 1;
1779 u64 l2c : 1;
1780 u64 rint_15 : 1;
1781 u64 reserved_13_14 : 2;
1782 u64 pow : 1;
1783 u64 tim : 1;
1784 u64 pko : 1;
1785 u64 ipd : 1;
1786 u64 rint_8 : 1;
1787 u64 zip : 1;
1788 u64 dfa : 1;
1789 u64 fpa : 1;
1790 u64 key : 1;
1791 u64 npi : 1;
1792 u64 gmx1 : 1;
1793 u64 gmx0 : 1;
1794 u64 mio : 1;
1795 } s;
1796 struct cvmx_npi_rsl_int_blocks_cn30xx {
1797 u64 reserved_32_63 : 32;
1798 u64 rint_31 : 1;
1799 u64 iob : 1;
1800 u64 rint_29 : 1;
1801 u64 rint_28 : 1;
1802 u64 rint_27 : 1;
1803 u64 rint_26 : 1;
1804 u64 rint_25 : 1;
1805 u64 rint_24 : 1;
1806 u64 asx1 : 1;
1807 u64 asx0 : 1;
1808 u64 rint_21 : 1;
1809 u64 pip : 1;
1810 u64 spx1 : 1;
1811 u64 spx0 : 1;
1812 u64 lmc : 1;
1813 u64 l2c : 1;
1814 u64 rint_15 : 1;
1815 u64 rint_14 : 1;
1816 u64 usb : 1;
1817 u64 pow : 1;
1818 u64 tim : 1;
1819 u64 pko : 1;
1820 u64 ipd : 1;
1821 u64 rint_8 : 1;
1822 u64 zip : 1;
1823 u64 dfa : 1;
1824 u64 fpa : 1;
1825 u64 key : 1;
1826 u64 npi : 1;
1827 u64 gmx1 : 1;
1828 u64 gmx0 : 1;
1829 u64 mio : 1;
1830 } cn30xx;
1831 struct cvmx_npi_rsl_int_blocks_cn30xx cn31xx;
1832 struct cvmx_npi_rsl_int_blocks_cn38xx {
1833 u64 reserved_32_63 : 32;
1834 u64 rint_31 : 1;
1835 u64 iob : 1;
1836 u64 rint_29 : 1;
1837 u64 rint_28 : 1;
1838 u64 rint_27 : 1;
1839 u64 rint_26 : 1;
1840 u64 rint_25 : 1;
1841 u64 rint_24 : 1;
1842 u64 asx1 : 1;
1843 u64 asx0 : 1;
1844 u64 rint_21 : 1;
1845 u64 pip : 1;
1846 u64 spx1 : 1;
1847 u64 spx0 : 1;
1848 u64 lmc : 1;
1849 u64 l2c : 1;
1850 u64 rint_15 : 1;
1851 u64 rint_14 : 1;
1852 u64 rint_13 : 1;
1853 u64 pow : 1;
1854 u64 tim : 1;
1855 u64 pko : 1;
1856 u64 ipd : 1;
1857 u64 rint_8 : 1;
1858 u64 zip : 1;
1859 u64 dfa : 1;
1860 u64 fpa : 1;
1861 u64 key : 1;
1862 u64 npi : 1;
1863 u64 gmx1 : 1;
1864 u64 gmx0 : 1;
1865 u64 mio : 1;
1866 } cn38xx;
1867 struct cvmx_npi_rsl_int_blocks_cn38xx cn38xxp2;
1868 struct cvmx_npi_rsl_int_blocks_cn50xx {
1869 u64 reserved_31_63 : 33;
1870 u64 iob : 1;
1871 u64 lmc1 : 1;
1872 u64 agl : 1;
1873 u64 reserved_24_27 : 4;
1874 u64 asx1 : 1;
1875 u64 asx0 : 1;
1876 u64 reserved_21_21 : 1;
1877 u64 pip : 1;
1878 u64 spx1 : 1;
1879 u64 spx0 : 1;
1880 u64 lmc : 1;
1881 u64 l2c : 1;
1882 u64 reserved_15_15 : 1;
1883 u64 rad : 1;
1884 u64 usb : 1;
1885 u64 pow : 1;
1886 u64 tim : 1;
1887 u64 pko : 1;
1888 u64 ipd : 1;
1889 u64 reserved_8_8 : 1;
1890 u64 zip : 1;
1891 u64 dfa : 1;
1892 u64 fpa : 1;
1893 u64 key : 1;
1894 u64 npi : 1;
1895 u64 gmx1 : 1;
1896 u64 gmx0 : 1;
1897 u64 mio : 1;
1898 } cn50xx;
1899 struct cvmx_npi_rsl_int_blocks_cn38xx cn58xx;
1900 struct cvmx_npi_rsl_int_blocks_cn38xx cn58xxp1;
1901};
1902
1903typedef union cvmx_npi_rsl_int_blocks cvmx_npi_rsl_int_blocks_t;
1904
1905/**
1906 * cvmx_npi_size_input#
1907 *
1908 * NPI_SIZE_INPUT0 = NPI's Size for Input 0 Register
1909 *
1910 * The size (in instructions) of Instruction Queue-0.
1911 */
1912union cvmx_npi_size_inputx {
1913 u64 u64;
1914 struct cvmx_npi_size_inputx_s {
1915 u64 reserved_32_63 : 32;
1916 u64 size : 32;
1917 } s;
1918 struct cvmx_npi_size_inputx_s cn30xx;
1919 struct cvmx_npi_size_inputx_s cn31xx;
1920 struct cvmx_npi_size_inputx_s cn38xx;
1921 struct cvmx_npi_size_inputx_s cn38xxp2;
1922 struct cvmx_npi_size_inputx_s cn50xx;
1923 struct cvmx_npi_size_inputx_s cn58xx;
1924 struct cvmx_npi_size_inputx_s cn58xxp1;
1925};
1926
1927typedef union cvmx_npi_size_inputx cvmx_npi_size_inputx_t;
1928
1929/**
1930 * cvmx_npi_win_read_to
1931 *
1932 * NPI_WIN_READ_TO = NPI WINDOW READ Timeout Register
1933 *
1934 * Number of core clocks to wait before timing out on a WINDOW-READ to the NCB.
1935 */
1936union cvmx_npi_win_read_to {
1937 u64 u64;
1938 struct cvmx_npi_win_read_to_s {
1939 u64 reserved_32_63 : 32;
1940 u64 time : 32;
1941 } s;
1942 struct cvmx_npi_win_read_to_s cn30xx;
1943 struct cvmx_npi_win_read_to_s cn31xx;
1944 struct cvmx_npi_win_read_to_s cn38xx;
1945 struct cvmx_npi_win_read_to_s cn38xxp2;
1946 struct cvmx_npi_win_read_to_s cn50xx;
1947 struct cvmx_npi_win_read_to_s cn58xx;
1948 struct cvmx_npi_win_read_to_s cn58xxp1;
1949};
1950
1951typedef union cvmx_npi_win_read_to cvmx_npi_win_read_to_t;
1952
1953#endif