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

Generated on Fri Jun 9 2017 13:03:46 for gem5 by doxygen 1.8.6