gem5  v20.0.0.2
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ns_gige_reg.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2004-2005 The Regents of The University of Michigan
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met: redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer;
9  * redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution;
12  * neither the name of the copyright holders nor the names of its
13  * contributors may be used to endorse or promote products derived from
14  * this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
34 #ifndef __DEV_NS_GIGE_REG_H__
35 #define __DEV_NS_GIGE_REG_H__
36 
37 /* Device Register Address Map */
39  CR = 0x00,
40  CFGR = 0x04,
41  MEAR = 0x08,
42  PTSCR = 0x0c,
43  ISR = 0x10,
44  IMR = 0x14,
45  IER = 0x18,
46  IHR = 0x1c,
47  TXDP = 0x20,
48  TXDP_HI = 0x24,
49  TX_CFG = 0x28,
50  GPIOR = 0x2c,
51  RXDP = 0x30,
52  RXDP_HI = 0x34,
53  RX_CFG = 0x38,
54  PQCR = 0x3c,
55  WCSR = 0x40,
56  PCR = 0x44,
57  RFCR = 0x48,
58  RFDR = 0x4c,
59  BRAR = 0x50,
60  BRDR = 0x54,
61  SRR = 0x58,
62  MIBC = 0x5c,
63  MIB_START = 0x60,
64  MIB_END = 0x88,
65  VRCR = 0xbc,
66  VTCR = 0xc0,
67  VDR = 0xc4,
68  CCSR = 0xcc,
69  TBICR = 0xe0,
70  TBISR = 0xe4,
71  TANAR = 0xe8,
72  TANLPAR = 0xec,
73  TANER = 0xf0,
74  TESR = 0xf4,
75  M5REG = 0xf8,
76  LAST = 0xf8,
77  RESERVED = 0xfc
78 };
79 
80 /* Chip Command Register */
82  CR_TXE = 0x00000001,
83  CR_TXD = 0x00000002,
84  CR_RXE = 0x00000004,
85  CR_RXD = 0x00000008,
86  CR_TXR = 0x00000010,
87  CR_RXR = 0x00000020,
88  CR_SWI = 0x00000080,
89  CR_RST = 0x00000100
90 };
91 
92 /* configuration register */
94  CFGR_ZERO = 0x00000000,
95  CFGR_LNKSTS = 0x80000000,
96  CFGR_SPDSTS = 0x60000000,
97  CFGR_SPDSTS1 = 0x40000000,
98  CFGR_SPDSTS0 = 0x20000000,
99  CFGR_DUPSTS = 0x10000000,
100  CFGR_TBI_EN = 0x01000000,
101  CFGR_RESERVED = 0x0e000000,
102  CFGR_MODE_1000 = 0x00400000,
103  CFGR_AUTO_1000 = 0x00200000,
104  CFGR_PINT_CTL = 0x001c0000,
105  CFGR_PINT_DUPSTS = 0x00100000,
106  CFGR_PINT_LNKSTS = 0x00080000,
107  CFGR_PINT_SPDSTS = 0x00040000,
108  CFGR_TMRTEST = 0x00020000,
109  CFGR_MRM_DIS = 0x00010000,
110  CFGR_MWI_DIS = 0x00008000,
111  CFGR_T64ADDR = 0x00004000,
112  CFGR_PCI64_DET = 0x00002000,
113  CFGR_DATA64_EN = 0x00001000,
114  CFGR_M64ADDR = 0x00000800,
115  CFGR_PHY_RST = 0x00000400,
116  CFGR_PHY_DIS = 0x00000200,
117  CFGR_EXTSTS_EN = 0x00000100,
118  CFGR_REQALG = 0x00000080,
119  CFGR_SB = 0x00000040,
120  CFGR_POW = 0x00000020,
121  CFGR_EXD = 0x00000010,
122  CFGR_PESEL = 0x00000008,
123  CFGR_BROM_DIS = 0x00000004,
124  CFGR_EXT_125 = 0x00000002,
125  CFGR_BEM = 0x00000001
126 };
127 
128 /* EEPROM access register */
130  MEAR_EEDI = 0x00000001,
131  MEAR_EEDO = 0x00000002,
132  MEAR_EECLK = 0x00000004,
133  MEAR_EESEL = 0x00000008,
134  MEAR_MDIO = 0x00000010,
135  MEAR_MDDIR = 0x00000020,
136  MEAR_MDC = 0x00000040,
137 };
138 
139 /* PCI test control register */
141  PTSCR_EEBIST_FAIL = 0x00000001,
142  PTSCR_EEBIST_EN = 0x00000002,
143  PTSCR_EELOAD_EN = 0x00000004,
144  PTSCR_RBIST_FAIL = 0x000001b8,
145  PTSCR_RBIST_DONE = 0x00000200,
146  PTSCR_RBIST_EN = 0x00000400,
147  PTSCR_RBIST_RST = 0x00002000,
148  PTSCR_RBIST_RDONLY = 0x000003f9
149 };
150 
151 /* interrupt status register */
153  ISR_RESERVE = 0x80000000,
154  ISR_TXDESC3 = 0x40000000,
155  ISR_TXDESC2 = 0x20000000,
156  ISR_TXDESC1 = 0x10000000,
157  ISR_TXDESC0 = 0x08000000,
158  ISR_RXDESC3 = 0x04000000,
159  ISR_RXDESC2 = 0x02000000,
160  ISR_RXDESC1 = 0x01000000,
161  ISR_RXDESC0 = 0x00800000,
162  ISR_TXRCMP = 0x00400000,
163  ISR_RXRCMP = 0x00200000,
164  ISR_DPERR = 0x00100000,
165  ISR_SSERR = 0x00080000,
166  ISR_RMABT = 0x00040000,
167  ISR_RTAB = 0x00020000,
168  ISR_RXSOVR = 0x00010000,
169  ISR_HIBINT = 0x00008000,
170  ISR_PHY = 0x00004000,
171  ISR_PME = 0x00002000,
172  ISR_SWI = 0x00001000,
173  ISR_MIB = 0x00000800,
174  ISR_TXURN = 0x00000400,
175  ISR_TXIDLE = 0x00000200,
176  ISR_TXERR = 0x00000100,
177  ISR_TXDESC = 0x00000080,
178  ISR_TXOK = 0x00000040,
179  ISR_RXORN = 0x00000020,
180  ISR_RXIDLE = 0x00000010,
181  ISR_RXEARLY = 0x00000008,
182  ISR_RXERR = 0x00000004,
183  ISR_RXDESC = 0x00000002,
184  ISR_RXOK = 0x00000001,
185  ISR_ALL = 0x7FFFFFFF,
192 };
193 
194 /* transmit configuration register */
196  TX_CFG_CSI = 0x80000000,
197  TX_CFG_HBI = 0x40000000,
198  TX_CFG_MLB = 0x20000000,
199  TX_CFG_ATP = 0x10000000,
200  TX_CFG_ECRETRY = 0x00800000,
201  TX_CFG_BRST_DIS = 0x00080000,
202  TX_CFG_MXDMA1024 = 0x00000000,
203  TX_CFG_MXDMA512 = 0x00700000,
204  TX_CFG_MXDMA256 = 0x00600000,
205  TX_CFG_MXDMA128 = 0x00500000,
206  TX_CFG_MXDMA64 = 0x00400000,
207  TX_CFG_MXDMA32 = 0x00300000,
208  TX_CFG_MXDMA16 = 0x00200000,
209  TX_CFG_MXDMA8 = 0x00100000,
210  TX_CFG_MXDMA = 0x00700000,
211 
212  TX_CFG_FLTH_MASK = 0x0000ff00,
213  TX_CFG_DRTH_MASK = 0x000000ff
214 };
215 
216 /*general purpose I/O control register */
218  GPIOR_UNUSED = 0xffff8000,
219  GPIOR_GP5_IN = 0x00004000,
220  GPIOR_GP4_IN = 0x00002000,
221  GPIOR_GP3_IN = 0x00001000,
222  GPIOR_GP2_IN = 0x00000800,
223  GPIOR_GP1_IN = 0x00000400,
224  GPIOR_GP5_OE = 0x00000200,
225  GPIOR_GP4_OE = 0x00000100,
226  GPIOR_GP3_OE = 0x00000080,
227  GPIOR_GP2_OE = 0x00000040,
228  GPIOR_GP1_OE = 0x00000020,
229  GPIOR_GP5_OUT = 0x00000010,
230  GPIOR_GP4_OUT = 0x00000008,
231  GPIOR_GP3_OUT = 0x00000004,
232  GPIOR_GP2_OUT = 0x00000002,
233  GPIOR_GP1_OUT = 0x00000001
234 };
235 
236 /* receive configuration register */
238  RX_CFG_AEP = 0x80000000,
239  RX_CFG_ARP = 0x40000000,
240  RX_CFG_STRIPCRC = 0x20000000,
241  RX_CFG_RX_FD = 0x10000000,
242  RX_CFG_ALP = 0x08000000,
243  RX_CFG_AIRL = 0x04000000,
244  RX_CFG_MXDMA512 = 0x00700000,
245  RX_CFG_MXDMA = 0x00700000,
246  RX_CFG_DRTH = 0x0000003e,
247  RX_CFG_DRTH0 = 0x00000002
248 };
249 
250 /* pause control status register */
252  PCR_PSEN = (1 << 31),
253  PCR_PS_MCAST = (1 << 30),
254  PCR_PS_DA = (1 << 29),
255  PCR_STHI_8 = (3 << 23),
256  PCR_STLO_4 = (1 << 23),
257  PCR_FFHI_8K = (3 << 21),
258  PCR_FFLO_4K = (1 << 21),
259  PCR_PAUSE_CNT = 0xFFFE
260 };
261 
262 /*receive filter/match control register */
264  RFCR_RFEN = 0x80000000,
265  RFCR_AAB = 0x40000000,
266  RFCR_AAM = 0x20000000,
267  RFCR_AAU = 0x10000000,
268  RFCR_APM = 0x08000000,
269  RFCR_APAT = 0x07800000,
270  RFCR_APAT3 = 0x04000000,
271  RFCR_APAT2 = 0x02000000,
272  RFCR_APAT1 = 0x01000000,
273  RFCR_APAT0 = 0x00800000,
274  RFCR_AARP = 0x00400000,
275  RFCR_MHEN = 0x00200000,
276  RFCR_UHEN = 0x00100000,
277  RFCR_ULM = 0x00080000,
278  RFCR_RFADDR = 0x000003ff
279 };
280 
281 /* receive filter/match data register */
283  RFDR_BMASK = 0x00030000,
284  RFDR_RFDATA0 = 0x000000ff,
285  RFDR_RFDATA1 = 0x0000ff00
286 };
287 
288 /* management information base control register */
290  MIBC_MIBS = 0x00000008,
291  MIBC_ACLR = 0x00000004,
292  MIBC_FRZ = 0x00000002,
293  MIBC_WRN = 0x00000001
294 };
295 
296 /* VLAN/IP receive control register */
298  VRCR_RUDPE = 0x00000080,
299  VRCR_RTCPE = 0x00000040,
300  VRCR_RIPE = 0x00000020,
301  VRCR_IPEN = 0x00000010,
302  VRCR_DUTF = 0x00000008,
303  VRCR_DVTF = 0x00000004,
304  VRCR_VTREN = 0x00000002,
305  VRCR_VTDEN = 0x00000001
306 };
307 
308 /* VLAN/IP transmit control register */
310  VTCR_PPCHK = 0x00000008,
311  VTCR_GCHK = 0x00000004,
312  VTCR_VPPTI = 0x00000002,
313  VTCR_VGTI = 0x00000001
314 };
315 
316 /* Clockrun Control/Status Register */
318  CCSR_CLKRUN_EN = 0x00000001
319 };
320 
321 /* TBI control register */
323  TBICR_MR_LOOPBACK = 0x00004000,
324  TBICR_MR_AN_ENABLE = 0x00001000,
325  TBICR_MR_RESTART_AN = 0x00000200
326 };
327 
328 /* TBI status register */
330  TBISR_MR_LINK_STATUS = 0x00000020,
331  TBISR_MR_AN_COMPLETE = 0x00000004
332 };
333 
334 /* TBI auto-negotiation advertisement register */
336  TANAR_NP = 0x00008000,
337  TANAR_RF2 = 0x00002000,
338  TANAR_RF1 = 0x00001000,
339  TANAR_PS2 = 0x00000100,
340  TANAR_PS1 = 0x00000080,
341  TANAR_HALF_DUP = 0x00000040,
342  TANAR_FULL_DUP = 0x00000020,
343  TANAR_UNUSED = 0x00000E1F
344 };
345 
346 /* M5 control register */
348  M5REG_RESERVED = 0xfffffffc,
349  M5REG_RSS = 0x00000004,
350  M5REG_RX_THREAD = 0x00000002,
351  M5REG_TX_THREAD = 0x00000001
352 };
353 
354 struct ns_desc32 {
355  uint32_t link; /* link field to next descriptor in linked list */
356  uint32_t bufptr; /* pointer to the first fragment or buffer */
357  uint32_t cmdsts; /* command/status field */
358  uint32_t extsts; /* extended status field for VLAN and IP info */
359 };
360 
361 struct ns_desc64 {
362  uint64_t link; /* link field to next descriptor in linked list */
363  uint64_t bufptr; /* pointer to the first fragment or buffer */
364  uint32_t cmdsts; /* command/status field */
365  uint32_t extsts; /* extended status field for VLAN and IP info */
366 };
367 
368 /* cmdsts flags for descriptors */
370  CMDSTS_OWN = 0x80000000,
371  CMDSTS_MORE = 0x40000000,
372  CMDSTS_INTR = 0x20000000,
373  CMDSTS_ERR = 0x10000000,
374  CMDSTS_OK = 0x08000000,
375  CMDSTS_LEN_MASK = 0x0000ffff,
376 
377  CMDSTS_DEST_MASK = 0x01800000,
378  CMDSTS_DEST_SELF = 0x00800000,
379  CMDSTS_DEST_MULTI = 0x01000000
380 };
381 
382 /* extended flags for descriptors */
384  EXTSTS_UDPERR = 0x00400000,
385  EXTSTS_UDPPKT = 0x00200000,
386  EXTSTS_TCPERR = 0x00100000,
387  EXTSTS_TCPPKT = 0x00080000,
388  EXTSTS_IPERR = 0x00040000,
389  EXTSTS_IPPKT = 0x00020000
390 };
391 
392 /* speed status */
393 static inline int
394 SPDSTS_POLARITY(int lnksts)
395 {
397  (lnksts ? CFGR_LNKSTS : CFGR_ZERO));
398 }
399 
400 #endif /* __DEV_NS_GIGE_REG_H__ */
uint32_t cmdsts
Definition: ns_gige_reg.h:364
ClockrunControlStatusRegister
Definition: ns_gige_reg.h:317
TBIAutoNegotiationAdvertisementRegister
Definition: ns_gige_reg.h:335
GeneralPurposeIOControlRegister
Definition: ns_gige_reg.h:217
VLANIPReceiveControlRegister
Definition: ns_gige_reg.h:297
static int SPDSTS_POLARITY(int lnksts)
Definition: ns_gige_reg.h:394
uint32_t extsts
Definition: ns_gige_reg.h:358
uint64_t link
Definition: ns_gige_reg.h:362
uint32_t cmdsts
Definition: ns_gige_reg.h:357
PCITestControlRegister
Definition: ns_gige_reg.h:140
VLANIPTransmitControlRegister
Definition: ns_gige_reg.h:309
uint32_t bufptr
Definition: ns_gige_reg.h:356
uint32_t extsts
Definition: ns_gige_reg.h:365
TBIControlRegister
Definition: ns_gige_reg.h:322
TBIStatusRegister
Definition: ns_gige_reg.h:329
EEPROMAccessRegister
Definition: ns_gige_reg.h:129
ChipCommandRegister
Definition: ns_gige_reg.h:81
ManagementInformationBaseControlRegister
Definition: ns_gige_reg.h:289
ExtendedFlagsForDescriptors
Definition: ns_gige_reg.h:383
TransmitConfigurationRegister
Definition: ns_gige_reg.h:195
M5ControlRegister
Definition: ns_gige_reg.h:347
uint64_t bufptr
Definition: ns_gige_reg.h:363
Definition: ns_gige_reg.h:39
CMDSTSFlatsForDescriptors
Definition: ns_gige_reg.h:369
uint32_t link
Definition: ns_gige_reg.h:355
ConfigurationRegisters
Definition: ns_gige_reg.h:93
ReceiveConfigurationRegister
Definition: ns_gige_reg.h:237
ReceiveFilterMatchDataRegister
Definition: ns_gige_reg.h:282
DeviceRegisterAddress
Definition: ns_gige_reg.h:38
ReceiveFilterMatchControlRegister
Definition: ns_gige_reg.h:263
InterruptStatusRegister
Definition: ns_gige_reg.h:152
PauseControlStatusRegister
Definition: ns_gige_reg.h:251

Generated on Mon Jun 8 2020 15:45:10 for gem5 by doxygen 1.8.13