|
|
1.1 root 1: /*
2: * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: * Copyright (c) 1998-1999 Apple Computer
24: *
25: * Interface definition for the Sun GEM (UniN) Ethernet controller.
26: *
27: *
28: */
29:
30: /*
31: * Miscellaneous defines...
32: */
33: #define CACHE_LINE_SIZE 32 /* Bytes */
34:
35: #define RX_RING_LENGTH 128 /* Packet descriptors */
36:
37: #define TX_RING_LENGTH 128 /* Packet descriptors */
38: #define TX_MAX_MBUFS (TX_RING_LENGTH / 2)
39:
40: #define NETWORK_BUFSIZE (((ETHERMAXPACKET + ETHERCRC) + 7) & ~7)
41:
42: #define TRANSMIT_QUEUE_SIZE 256
43:
44: #define WATCHDOG_TIMER_MS 300
45: #define TX_KDB_TIMEOUT 1000
46:
47: #define PCI_PERIOD_33MHz 30
48: #define PCI_PERIOD_66MHz 15
49: #define RX_INT_LATENCY_uS 250
50:
51: /*
52: * Register lengths
53: */
54: #define kGEMLength_1 0x00010000
55: #define kGEMLength_2 0x00020000
56: #define kGEMLength_4 0x00040000
57:
58:
59: /*
60: * Receive/Transmit descriptor
61: *
62: */
63: typedef struct _GEMRxDescriptor
64: {
65: u_int16_t tcpPseudoChecksum;
66: u_int16_t frameDataSize;
67: u_int32_t flags;
68: u_int32_t bufferAddrLo;
69: u_int32_t bufferAddrHi;
70: } GEMRxDescriptor;
71:
72: /*
73: * Note: Own is in the high bit of frameDataSize field
74: */
75: #define kGEMRxDescFrameSize_Mask 0x7FFF
76: #define kGEMRxDescFrameSize_Own 0x8000
77:
78: /*
79: * Rx flags field
80: */
81: #define kGEMRxDescFlags_HashValueBit 0x00001000
82: #define kGEMRxDescFlags_HashValueMask 0x0FFFF000
83: #define kGEMRxDescFlags_HashPass 0x10000000
84: #define kGEMRxDescFlags_AlternateAddr 0x20000000
85: #define kGEMRxDescFlags_BadCRC 0x40000000
86:
87:
88: typedef struct _GEMTxDescriptor
89: {
90: u_int32_t flags0;
91: u_int32_t flags1;
92: u_int32_t bufferAddrLo;
93: u_int32_t bufferAddrHi;
94: } GEMTxDescriptor;
95:
96: /*
97: *
98: */
99: #define kGEMTxDescFlags0_BufferSizeMask 0x00007FFF
100: #define kGEMTxDescFlags0_BufferSizeBit 0x00000001
101: #define kGEMTxDescFlags0_ChecksumStartMask 0x00FF8000
102: #define kGEMTxDescFlags0_ChecksumStartBit 0x00008000
103: #define kGEMTxDescFlags0_ChecksumStuffMask 0x1F000000
104: #define kGEMTxDescFlags0_ChecksupStuffBit 0x01000000
105: #define kGEMTxDescFlags0_ChecksumEnable 0x20000000
106: #define kGEMTxDescFlags0_EndOfFrame 0x40000000
107: #define kGEMTxDescFlags0_StartOfFrame 0x80000000
108:
109: #define kGEMTxDescFlags1_Int 0x00000001
110: #define kGEMTxDescFlags1_NoCRC 0x00000002
111:
112: /*
113: * Global Resources
114: */
115: #define kGEMSEBState (0x0000 | kGEMLength_1)
116: #define kGEMSEBState_ArbStateMask 0x03
117: #define kGEMSEBState_RxWon 0x04
118:
119:
120: #define kGEMConfig (0x0004 | kGEMLength_2)
121: #define kGEMConfig_InfiniteBurst 0x0001
122: #define kGEMConfig_TxDMALimitMask 0x003E
123: #define kGEMConfig_TxDMALimitBit 0x0002
124: #define kGEMConfig_RxDMALimitMask 0x07C0
125: #define kGEMConfig_RxDMALimitBit 0x0040
126:
127: #define kGEMBurstSize (CACHE_LINE_SIZE / 8)
128:
129: #define kGEMInterruptStatus (0x000C | kGEMLength_4)
130: #define kGEMInterruptStatus_TxInt 0x00000001
131: #define kGEMInterruptStatus_TxAll 0x00000002
132: #define kGEMInterruptStatus_TxDone 0x00000004
133: #define kGEMInterruptStatus_RxDone 0x00000010
134: #define kGEMInterruptStatus_RxEmpty 0x00000020
135: #define kGEMInterruptStatus_RxTagError 0x00000040
136: #define kGEMInterruptStatus_PCSInt 0x00002000
137: #define kGEMInterruptStatus_TxMacInt 0x00004000
138: #define kGEMInterruptStatus_RxMacInt 0x00008000
139: #define kGEMInterruptStatus_MacControlInt 0x00010000
140: #define kGEMInterruptStatus_MIFInt 0x00020000
141: #define kGEMInterruptStatus_PCIErrorInt 0x00040000
142: #define kGEMInterruptStatus_Mask 0x0007FFFF
143:
144: #define kGEMInterruptMask (0x0010 | kGEMLength_4)
145: #define kGEMInterruptMask_TxInt 0x00000001
146: #define kGEMInterruptMask_TxAll 0x00000002
147: #define kGEMInterruptMask_TxDone 0x00000004
148: #define kGEMInterruptMask_RxDone 0x00000010
149: #define kGEMInterruptMask_RxEmpty 0x00000020
150: #define kGEMInterruptMask_RxTagError 0x00000040
151: #define kGEMInterruptMask_PCSInt 0x00002000
152: #define kGEMInterruptMask_TxMacInt 0x00004000
153: #define kGEMInterruptMask_RxMacInt 0x00008000
154: #define kGEMInterruptMask_MacControlInt 0x00010000
155: #define kGEMInterruptMask_MIFInt 0x00020000
156: #define kGEMInterruptMask_PCIErrorInt 0x00040000
157:
158: #define kGEMInterruptAck (0x0014 | kGEMLength_4)
159: #define kGEMInterruptAck_TxInt 0x00000001
160: #define kGEMInterruptAck_TxAll 0x00000002
161: #define kGEMInterruptAck_TxDone 0x00000004
162: #define kGEMInterruptAck_RxDone 0x00000010
163: #define kGEMInterruptAck_RxEmpty 0x00000020
164: #define kGEMInterrupAck_RxTagError 0x00000040
165:
166: #define kGEMInterruptAltStatus (0x001C | kGEMLength_4)
167: #define kGEMInterruptAltStatus_TxInt 0x00000001
168: #define kGEMInterruptAltStatus_TxAll 0x00000002
169: #define kGEMInterruptAltStatus_TxDone 0x00000004
170: #define kGEMInterruptAltStatus_RxDone 0x00000010
171: #define kGEMInterruptAltStatus_RxEmpty 0x00000020
172: #define kGEMInterruptAltStatus_RxTagError 0x00000040
173: #define kGEMInterruptAltStatus_PCSInt 0x00002000
174: #define kGEMInterruptAltStatus_TxMacInt 0x00004000
175: #define kGEMInterruptAltStatus_RxMacInt 0x00008000
176: #define kGEMInterruptAltStatus_MacControlInt 0x00010000
177: #define kGEMInterruptAltStatus_MIFInt 0x00020000
178: #define kGEMInterruptAltStatus_PCIErrorInt 0x00040000
179:
180: #define kGEMPCIErrorStatus (0x1000 | kGEMLength_1)
181: #define kGEMPCIErrorStatus_BadAck64 0x01
182: #define kGEMPCIErrorStatus_TransactTimeout 0x02
183: #define kGEMPCIErrorStatus_Other 0x04
184:
185: #define kGEMPCIErrorMask (0x1004 | kGEMLength_1)
186: #define kGEMPCIErrorMask_BadAck64 0x01
187: #define kGEMPCIErrorMask_TransactTimeout 0x02
188: #define kGEMPCIErrorMask_Other 0x04
189:
190: #define kGEMBIFConfig (0x1008 | kGEMLength_1)
191: #define kGEMBIFConfig_SlowClk 0x01
192: #define kGEMBIFConfig_64BitDisable 0x04
193: #define kGEMBIFConfig_66Mhz 0x08
194:
195: #define kGEMBIFDiagnostic (0x100C | kGEMLength_4)
196: #define kGEMBIFDiagnostic_PCIBurstStateMask 0x007F0000
197: #define kGEMBIFDiagnostic_PCIBurstStateBit 0x00010000
198: #define kGEMBIFDiagnostic_BIFStateMachineMask 0xFF000000
199: #define kGEMBIFDiagnostic_BIFStateMachineBit 0x01000000
200:
201: #define kGEMSoftwareReset (0x1010 | kGEMLength_1)
202: #define kGEMSoftwareReset_TxReset 0x01
203: #define kGEMSoftwareReset_RxReset 0x02
204: #define kGEMSoftwareReset_PhyReset 0x04
205:
206: /*
207: * Transmit DMA Registers
208: */
209: #define kGEMTxKick (0x2000 | kGEMLength_2)
210:
211: #define kGEMTxConfig (0x2004 | kGEMLength_4)
212: #define kGEMTxConfig_TxDMAEnable 0x00000001
213: #define kGEMTxConfig_TxDescRingSizeMask 0x0000001E
214: #define kGEMTxConfig_TxDescRingSizeBit 0x00000002
215: #define kGEMTxConfig_TxRingSizeMin 32
216: #define kGEMTxConfig_TxFIFOPioSel 0x00000020
217: #define kGEMTxConfig_TxFIFOThresholdMask 0x000FFC00
218: #define kGEMTxConfig_TxFIFOThresholdBit 0x00000400
219: #define kGEMTxConfig_PacedMode 0x00100000
220:
221: #define kGEMTxConfig_TxFIFOThresholdDefault 0x7FF
222:
223: #define kGEMTxDescBaseLo (0x2008 | kGEMLength_4)
224: #define kGEMTxDescBaseHi (0x200C | kGEMLength_4)
225:
226: #define kGEMTxFIFOWritePtr (0x2014 | kGEMLength_2)
227: #define kGEMTxFIFOShadowWritePtr (0x2018 | kGEMLength_2)
228:
229: #define kGEMTxFIFOReadPtr (0x201C | kGEMLength_2)
230: #define kGEMTxFIFOShadowReadPtr (0x2020 | kGEMLength_2)
231:
232: #define kGEMTxFIFOPktCounter (0x2024 | kGEMLength_2)
233:
234: #define kGEMTxStateMachine (0x2028 | kGEMLength_4)
235: #define kGEMTxStateMachine_ChainStateMask 0x000003FF
236: #define kGEMTxStateMachine_ChainStateBit 0x00000001
237: #define kGEMTxStateMachine_ChecksumStateMask 0x00000C00
238: #define kGEMTxStateMachine_ChecksumStateBit 0x00000400
239: #define kGEMTxStateMachine_FIFOLoadStateMask 0x0001F000
240: #define kGEMTxStateMachine_FIFOLoadStateBit 0x00001000
241: #define kGEMTxStateMachine_FIFOUnloadStateMask 0x003C0000
242: #define kGEMTxStateMachine_FIFOUnloadStateBit 0x00040000
243:
244: #define kGEMTxDataPtrLo (0x2030 | kGEMLength_4)
245: #define kGEMTxDataPtrHi (0x2034 | kGEMLength_4)
246:
247: #define kGEMTxCompletion (0x2100 | kGEMLength_2)
248:
249: #define kGEMTxFIFOAddr (0x2104 | kGEMLength_2)
250: #define kGEMTxFIFOTag (0x2108 | kGEMLength_1)
251: #define kGEMTxFIFODataLo (0x210C | kGEMLength_4)
252: #define kGEMTxFIFODataHiTag1 (0x2110 | kGEMLength_4)
253: #define kGEMTxFIFODataHiTag0 (0x2114 | kGEMLength_4)
254:
255: #define kGEMTxFIFOSize (0x2118 | kGEMLength_2)
256: #define kGEMTxFIFOSize_Units 64
257:
258: /*
259: * Receive DMA Registers
260: */
261: #define kGEMRxConfig (0x4000 | kGEMLength_4)
262: #define kGEMRxConfig_RxDMAEnable 0x00000001
263: #define kGEMRxConfig_RxDescRingSizeMask 0x0000001E
264: #define kGEMRxConfig_RxDescRingSizeBit 0x00000002
265: #define kGEMRxConfig_RxRingSizeMin 32
266: #define kGEMRxConfig_BatchDisable 0x00000020
267: #define kGEMRxConfig_FirstByteOffsetMask 0x00001C00
268: #define kGEMRxConfig_FirstByteOffsetBit 0x00000400
269: #define kGEMRxConfig_ChecksumStartOffsetMask 0x000FE000
270: #define kGEMRxConfig_ChecksumStartOffsetBit 0x00002000
271: #define kGEMRxConfig_RxDMAThresholdMask 0x07000000
272: #define kGEMRxConfig_RxDMAThresholdBit 0x01000000
273: #define kGEMRxConfig_RxDMAThresholdMin 64
274:
275: #define kGEMRxConfig_RxDMAThresholdDefault 1 /* (128) Log2(RxDMAThresh) - 6 */
276:
277: #define kGEMRxDescBaseLo (0x4004 | kGEMLength_4)
278: #define kGEMRxDescBaseHi (0x4008 | kGEMLength_4)
279:
280: #define kGEMRxFIFOWritePtr (0x400C | kGEMLength_2)
281: #define kGEMRxFIFOShadowWritePtr (0x4010 | kGEMLength_2)
282: #define kGEMRxFIFOReadPtr (0x4014 | kGEMLength_2)
283: #define kGEMRxFIFOPktCounter (0x4018 | kGEMLength_2)
284:
285: #define kGEMRxStateMachine (0x401C | kGEMLength_4)
286: #define kGEMRxStateMachine_UnloadDataStateMask 0x0000000F
287: #define kGEMRxStateMachine_UnloadDataStateBit 0x00000001
288: #define kGEMRxStateMachine_UnloadDescStateMask 0x000000F0
289: #define kGEMRxStateMachine_UnloadDescStateBit 0x00000010
290: #define kGEMRxStateMachine_FlowControlStateMask 0x00000F00
291: #define kGEMRxStateMachine_FlowControlStateBit 0x00000100
292: #define kGEMRxStateMachine_PackStateMask 0x00003C00
293: #define kGEMRxStateMachine_PackStateBit 0x00000400
294: #define kGEMRxStateMachine_LoadStateMask 0x0003C000
295: #define kGEMRxStateMachine_LoadStateBit 0x00004000
296:
297:
298: #define kGEMRxPauseThresholds (0x4020 | kGEMLength_4)
299: #define kGEMRxPauseThresholds_OffMask 0x000001FF
300: #define kGEMRxPauseThresholds_OffBit 0x00000001
301: #define kGEMRxPauseThresholds_OnMask 0x001FF000
302: #define kGEMRxPauseThresholds_OnBit 0x00001000
303:
304: #define kGEMRxPauseThresholds_Units 64
305:
306: #define kGEMRxDataPtrLo (0x4024 | kGEMLength_4)
307: #define kGEMRxDataPtrHi (0x4028 | kGEMLength_4)
308:
309: #define kGEMRxKick (0x4100 | kGEMLength_2)
310:
311: #define kGEMRxCompletion (0x4104 | kGEMLength_2)
312:
313: #define kGEMRxIntBlanking (0x4108 | kGEMLength_4)
314: #define kGEMRxIntBlanking_NumPktMask 0x000001FF
315: #define kGEMRxIntBlanking_NumPktBit 0x00000001
316: #define kGEMRxIntBlanking_TimeMask 0x000FF000
317: #define kGEMRxIntBlanking_TimeBit 0x00001000
318: #define kGEMRxIntBlanking_Units 2048
319:
320: #define kGEMRxFIFOAddr (0x410C | kGEMLength_2)
321: #define kGEMRxFIFOTag (0x4110 | kGEMLength_1)
322: #define kGEMRxDataLo (0x4114 | kGEMLength_4)
323: #define kGEMRxDataHiTag0 (0x4118 | kGEMLength_4)
324: #define kGEMRxDataHiTag1 (0x411C | kGEMLength_4)
325:
326: #define kGEMRxFIFOSize (0x4120 | kGEMLength_2)
327: #define kGEMRxFIFOSize_Units 64
328:
329:
330: /*
331: * MAC Registers
332: */
333: #define kGEMMacTxResetCmd (0x6000 | kGEMLength_1)
334: #define kGEMMacTxResetCmd_Reset 0x01
335:
336: #define kGEMMacRxResetCmd (0x6004 | kGEMLength_1)
337: #define kGEMMacRxResetCmd_Reset 0x01
338:
339: #define kGEMMacSendPauseCmd (0x6008 | kGEMLength_4)
340: #define kGEMMacSendPauseCmd_TimeMask 0x0000FFFF
341: #define kGEMMacSendPauseCmd_Bit 0x00000001
342: #define kGEMMacSendPauseCmd_SendPause 0x00010000
343: #define kGEMMacSendPauseCmd_Default 0x1BF0
344:
345: #define kGEMMacTxStatus (0x6010 | kGEMLength_2)
346: #define kGEMMacTxStatus_FrameSent 0x0001
347: #define kGEMMacTxStatus_TxUnderrun 0x0002
348: #define kGEMMacTxStatus_MaxPktError 0x0004
349: #define kGEMMacTxStatus_NormalCollsnOverflow 0x0008
350: #define kGEMMacTxStatus_ExcessCollsnOverflow 0x0010
351: #define kGEMMacTxStatus_LateCollsnOverflow 0x0020
352: #define kGEMMacTxStatus_FirstCollsnOverflow 0x0040
353: #define kGEMMacTxStatus_DeferTimerOverflow 0x0080
354: #define kGEMMacTxStatus_PeakAttemptsOverflow 0x0100
355:
356: #define kGEMMacRxStatus (0x6014 | kGEMLength_2)
357: #define kGEMMacRxStatus_FrameReceived 0x0001
358: #define kGEMMacRxStatus_RxFIFOOverflow 0x0002
359: #define kGEMMacRxStatus_FrameCounterOverflow 0x0004
360: #define kGEMMacRxStatus_AlignErrorOverflow 0x0008
361: #define kGEMMacRxStatus_CRCErrorOverflow 0x0010
362: #define kGEMMacRxStatus_LengthErrorOverflow 0x0020
363: #define kGEMMacRxStatus_CodeErrorOverflow 0x0040
364:
365: #define kGEMMacControlStatus (0x6018 | kGEMLength_4)
366: #define kGEMMacControlStatus_PauseReceived 0x00000001
367: #define kGEMMacControlStatus_PauseState 0x00000002
368: #define kGEMMacControlStatus_NotPausedState 0x00000004
369: #define kGEMMacControlStatus_PauseTimeMask 0xFFFF0000
370: #define kGEMMacControlStatus_PauseTimeBit 0x00010000
371:
372: #define kGEMMacTxMask (0x6020 | kGEMLength_2)
373: #define kGEMMacTxMask_FrameSent 0x0001
374: #define kGEMMacTxMask_TxUnderrun 0x0002
375: #define kGEMMacTxMask_MaxPktError 0x0004
376: #define kGEMMacTxMask_NormalCollsnOverflow 0x0008
377: #define kGEMMacTxMask_ExcessCollsnOverflow 0x0010
378: #define kGEMMacTxMask_LateCollsnOverflow 0x0020
379: #define kGEMMacTxMask_FirstCollsnOverflow 0x0040
380: #define kGEMMacTxMask_DeferTimerOverflow 0x0080
381: #define kGEMMacTxMask_PeakAttemptsOverflow 0x0100
382:
383: #define kGEMMacTxMaskDefault 0xFFFF
384:
385: #define kGEMMacRxMask (0x6024 | kGEMLength_2)
386: #define kGEMMacRxMask_FrameReceived 0x0001
387: #define kGEMMacRxMask_RxFIFOOverflow 0x0002
388: #define kGEMMacRxMask_FrameCounterOverflow 0x0004
389: #define kGEMMacRxMask_AlignErrorOverflow 0x0008
390: #define kGEMMacRxMask_CRCErrorOverflow 0x0010
391: #define kGEMMacRxMask_LengthErrorOverflow 0x0020
392: #define kGEMMacRxMask_CodeErrorOverflow 0x0040
393:
394: #define kGEMMacRxMaskDefault 0xFFFF
395:
396: #define kGEMMacControlMask (0x6028 | kGEMLength_1)
397: #define kGEMMacControlMask_PauseReceived 0x01
398: #define kGEMMacControlMask_PauseState 0x02
399: #define kGEMMacControlMask_NotPausedState 0x04
400:
401: #define kGEMMacControlMaskDefault 0xFF
402:
403:
404: #define kGEMMacTxMacConfig (0x6030 | kGEMLength_2)
405: #define kGEMMacTxMacConfig_TxMacEnable 0x0001
406: #define kGEMMacTxMacConfig_IgnoreCarrierSense 0x0002
407: #define kGEMMacTxMacConfig_IgnoreCollsn 0x0004
408: #define kGEMMacTxMacConfig_EnableIPG0 0x0008
409: #define kGEMMacTxMacConfig_NeverGiveUp 0x0010
410: #define kGEMMacTxMacConfig_NeverGiveUpNoLimit 0x0020
411: #define kGEMMacTxMacConfig_NoBackoff 0x0040
412: #define kGEMMacTxMacConfig_SlowDown 0x0080
413: #define kGEMMacTxMacConfig_NoFCS 0x0100
414: #define kGEMMacTxMacConfig_TxCarrierExt 0x0200
415:
416:
417: #define kGEMMacRxMacConfig (0x6034 | kGEMLength_2)
418: #define kGEMMacRxMacConfig_RxMacEnable 0x0001
419: #define kGEMMacRxMacConfig_StripPad 0x0002
420: #define kGEMMacRxMacConfig_StripFCS 0x0004
421: #define kGEMMacRxMacConfig_ReceiveAll 0x0008
422: #define kGEMMacRxMacConfig_ReceiveAllMulticast 0x0010
423: #define kGEMMacRxMacConfig_HashFilterEnable 0x0020
424: #define kGEMMacRxMacConfig_AddrFilterEnable 0x0040
425: #define kGEMMacRxMacConfig_PassErrorFrames 0x0080
426: #define kGEMMacRxMacConfig_RxCarrierExt 0x0100
427:
428:
429: #define kGEMMacControlConfig (0x6038 | kGEMLength_1)
430: #define kGEMMacControlConfig_SendPauseEnable 0x01
431: #define kGEMMacControlConfig_ReceivePauseEnable 0x02
432: #define kGEMMacControlConfig_PassControlFrames 0x04
433:
434: #define kGEMMacXIFConfig (0x603C | kGEMLength_1)
435: #define kGEMMacXIFConfig_TxMIIOutputEnable 0x01
436: #define kGEMMacXIFConfig_MIIIntLoopback 0x02
437: #define kGEMMacXIFConfig_DisableEcho 0x04
438: #define kGEMMacXIFConfig_GMIIMode 0x08
439: #define kGEMMacXIFConfig_MIIBufferEnable 0x10
440: #define kGEMMacXIFConfig_LinkLed 0x20
441: #define kGEMMacXIFConfig_FullDuplexLed 0x40
442:
443: #define kGEMMacInterPktGap0 (0x6040 | kGEMLength_1)
444: #define kGEMMacInterPktGap0_Default 0x00
445:
446: #define kGEMMacInterPktGap1 (0x6044 | kGEMLength_1)
447: #define kGEMMacInterPktGap1_Default 0x08
448:
449: #define kGEMMacInterPktGap2 (0x6048 | kGEMLength_1)
450: #define kGEMMacInterPktGap2_Default 0x04
451:
452: #define kGEMMacSlotTime (0x604C | kGEMLength_2)
453: #define kGEMMacSlotTime_Default 0x0040
454:
455: #define kGEMMacMinFrameSize (0x6050 | kGEMLength_2)
456: #define kGEMMacMinFrameSize_Default 0x0040
457:
458: #define kGEMMacMaxFrameSize (0x6054 | kGEMLength_2)
459: #define kGEMMacMaxFrameSize_Default 0x05EE
460: #define kGEMMacMaxFrameSize_Aligned ((kGEMMacMaxFrameSize_Default + 7) & ~7)
461:
462: #define kGEMMacPASize (0x6058 | kGEMLength_2)
463: #define kGEMMacPASize_Default 0x07
464:
465: #define kGEMMacJamSize (0x605C | kGEMLength_1)
466: #define kGEMMacJamSize_Default 0x04
467:
468: #define kGEMMacAttemptLimit (0x6060 | kGEMLength_1)
469: #define kGEMMacAttemptLimit_Default 0x10
470:
471: #define kGEMMacTypeControl (0x6064 | kGEMLength_2)
472: #define kGEMMacTypeControl_Default 0x8808
473:
474: #define kGEMMacAddr (0x6080 | kGEMLength_2)
475: #define kGEMMacAddr6_Default 0x0001
476: #define kGEMMacAddr7_Default 0xC200
477: #define kGEMMacAddr8_Default 0x0180
478:
479: #define kGEMMacAddrFilter (0x60A4 | kGEMLength_2)
480:
481: #define kGEMMacAddrFilterMask1 (0x60B0 | kGEMLength_1)
482:
483: #define kGEMMacAddrFilterMask0 (0x60B4 | kGEMLength_2)
484:
485: #define kGEMMacHashTable (0x60C0 | kGEMLength_2)
486:
487: #define kGEMMacCollisions (0x6100 | kGEMLength_2)
488: #define kGEMMacSingleCollision (0x6104 | kGEMLength_2)
489: #define kGEMMacExcessCollisions (0x6108 | kGEMLength_2)
490: #define kGEMMacLateCollisions (0x610C | kGEMLength_2)
491:
492: #define kGEMMacDeferTimer (0x6110 | kGEMLength_2)
493:
494: #define kGEMMacPeakAttempts (0x6114 | kGEMLength_2)
495:
496: #define kGEMMacRxFrameCounter (0x6118 | kGEMLength_2)
497:
498: #define kGEMMacRxLengthErrors (0x611C | kGEMLength_2)
499:
500: #define kGEMMacRxAlignErrors (0x6120 | kGEMLength_2)
501:
502: #define kGEMMacRxFCSErrors (0x6124 | kGEMLength_2)
503:
504: #define kGEMMacRxCodeErrors (0x6128 | kGEMLength_2)
505:
506: #define kGEMMacRandomSeed (0x6130 | kGEMLength_2)
507:
508: #define kGEMMacStateMachine (0x6134 | kGEMLength_1)
509:
510:
511: /*
512: * MIF Registers
513: */
514: #define kGEMMIFCLock (0x6200 | kGEMLength_1)
515: #define kGEMMIFClock_One 0x01
516:
517: #define kGEMMIFData (0x6204 | kGEMLength_1)
518: #define kGEMMIFData_One 0x01
519:
520: #define kGEMMIFOutputEnable (0x6208 | kGEMLength_1)
521: #define kGEMMIFOutputEnable_Enable 0x01
522:
523: #define kGEMMIFFrame (0x620C | kGEMLength_4)
524: #define kGEMMIFFrame_StartFrameMask 0xC0000000
525: #define kGEMMIFFrame_StartFrameBit 0x40000000
526: #define kGEMMIFFrame_OpcodeMask 0x30000000
527: #define kGEMMIFFrame_OpcodeBit 0x10000000
528: #define kGEMMIFFrame_PhyAddrMask 0x0F800000
529: #define kGEMMIFFrame_PhyAddrBit 0x00800000
530: #define kGEMMIFFrame_RegAddrMask 0x007C0000
531: #define kGEMMIFFrame_RegAddrBit 0x00040000
532: #define kGEMMIFFrame_TurnAroundMSB 0x00020000
533: #define kGEMMIFFrame_TurnAroundLSB 0x00010000
534: #define kGEMMIFFrame_DataMask 0x0000FFFF
535: #define kGEMMIFFrame_DataBit 0x00000001
536:
537: #define kGEMMIFConfig (0x6210 | kGEMLength_2)
538: #define kGEMMIFConfig_PhySelect 0x0001
539: #define kGEMMIFConfig_PollEnable 0x0002
540: #define kGEMMIFConfig_BitShiftMode 0x0004
541: #define kGEMMIFConfig_PollRegAddrMask 0x00F8
542: #define kGEMMIFConfig_PollRegAddrBit 0x0008
543: #define kGEMMIFConfig_ReadMDI_0 0x0100
544: #define kGEMMIFConfig_ReadMDI_1 0x0200
545: #define kGEMMIFConfig_PollPhyAddrMask 0x7C00
546: #define kGEMMIFConfig_PollPhyAddrBit 0x0400
547:
548: #define kGEMMIFMask (0x6214 | kGEMLength_2)
549:
550: #define kGEMMIFStatus (0x6218 | kGEMLength_4)
551: #define kGEMMIFStatus_PollDataMask 0xFFFF0000
552: #define kGEMMIFStatus_PollDataBit 0x00010000
553: #define kGEMMIFStatus_PollStatusMask 0x0000FFFF
554: #define kGEMMIFStatus_PollStatusBit 0x00000001
555:
556: #define kGEMMIFStateMachine (0x621C | kGEMLength_1)
557: #define kGEMMIFStateMachine_ControlStateMask 0x07
558: #define kGEMMIFStateMachine_ControlStateBit 0x01
559: #define kGEMMIFStateMachine_ExecuteStateMask 0x60
560: #define kGEMMIFStateMachine_ExecuteStateBit 0x20
561:
562: /*
563: * PCS/Serdes
564: */
565: #define kGEMPCSControl (0x9000 | kGEMLength_2)
566: #define kGEMPCSControl_1000Mbs 0x0040
567: #define kGEMPCSControl_CollsnTest 0x0080
568: #define kGEMPCSControl_DuplexMode 0x0100
569: #define kGEMPCSControl_RestartAutoNegot 0x0200
570: #define kGEMPCSControl_Isolate 0x0400
571: #define kGEMPCSControl_PowerDown 0x0800
572: #define kGEMPCSControl_EnableAutoNegot 0x1000
573: #define kGEMPCSControl_100Mbs 0x2000
574: #define kGEMPCSControl_Reset 0x8000
575:
576: #define kGEMPCSStatus (0x9004 | kGEMLength_2)
577: #define kGEMPCSStatus_ExtendedCap 0x0001
578: #define kGEMPCSStatus_JabberDetect 0x0002
579: #define kGEMPCSStatus_LinkStatusUp 0x0004
580: #define kGEMPCSStatus_AutoNegotCap 0x0008
581: #define kGEMPCSStatus_RemoteFault 0x0010
582: #define kGEMPCSStatus_AutoNegotComplete 0x0020
583: #define kGEMPCSStatus_ExtStatus 0x0100
584:
585: #define kGEMPCSAdvert (0x9008 | kGEMLength_2)
586: #define kGEMPCSAdvert_FullDuplexCap 0x0020
587: #define kGEMPCSAdvert_HalfDuplexCap 0x0040
588: #define kGEMPCSAdvert_SymPauseCap 0x0080
589: #define kGEMPCSAdvert_AsymPauseCap 0x0100
590: #define kGEMPCSAdvert_RemoteFaultMask 0x3000
591: #define kGEMPCSAdvert_RemoteFaultBit 0x1000
592: #define kGEMPCSAdvert_Ack 0x4000
593: #define kGEMPCSAdvert_NextPage 0x8000
594:
595: #define kGEMPCSLPAbility (0x900C | kGEMLength_2)
596: #define kGEMPCSLPAbility_FullDuplexCap 0x0020
597: #define kGEMPCSLPAbility_HalfDuplexCap 0x0040
598: #define kGEMPCSLPAbility_SymPauseCap 0x0080
599: #define kGEMPCSLPAbility_AsymPauseCap 0x0100
600: #define kGEMPCSLPAbility_RemoteFaultMask 0x3000
601: #define kGEMPCSLPAbility_RemoteFaultBit 0x1000
602: #define kGEMPCSLPAbility_Ack 0x4000
603: #define kGEMPCSLPAbility_NextPage 0x8000
604:
605: #define kGEMPCSConfig (0x9010 | kGEMLength_1)
606: #define kGEMPCSConfig_Enable 0x01
607: #define kGEMPCSConfig_SignalDetOverride 0x02
608: #define kGEMPCSConfig_SignalDetInvert 0x04
609: #define kGEMPCSConfig_JitterStudyMask 0x18
610: #define kGEMPCSConfig_JitterStudyBit 0x08
611:
612: #define kGEMPCSStateMachine (0x9014 | kGEMLength_4)
613: #define kGEMPCSStateMachine_TxControlStateMask 0x0000000F
614: #define kGEMPCSStateMachine_TxControlStateBit 0x00000001
615: #define kGEMPCSStateMachine_RxControlStateMask 0x000000F0
616: #define kGEMPCSStateMachine_RxControlStateBit 0x00000010
617: #define kGEMPCSStateMachine_WordSyncStateMask 0x00000700
618: #define kGEMPCSStateMachine_WordSyncStateBit 0x00000100
619: #define kGEMPCSStateMachine_SeqDetectStateMask 0x00001800
620: #define kGEMPCSStateMachine_SeqDetectStateBit 0x00000800
621: #define kGEMPCSStateMachine_LinkConfigStateMask 0x0001E000
622: #define kGEMPCSStateMachine_LinkConfigStateBit 0x00002000
623: #define kGEMPCSStateMachine_LinkLostCCodes 0x10000000
624: #define kGEMPCSStateMachine_LinkLostSync 0x20000000
625: #define kGEMPCSStateMachine_LinkLostSignalDet 0x40000000
626:
627: #define kGEMPCSInterruptStatus (0x9018 | kGEMLength_1)
628: #define kGEMPCSInterruptStatus_LinkStatusChg 0x04
629:
630: #define kGEMPCSDatapathMode (0x9050 | kGEMLength_1)
631: #define kGEMPCSDatapathMode_XMode 0x01
632: #define kGEMPCSDatapathMode_ExtSERDESMode 0x02
633: #define kGEMPCSDatapathMode_GMIIMode 0x04
634: #define kGEMPCSDatapathMode_GMIIOutputEnable 0x08
635:
636: #define kGEMPCSSerdesControl (0x9054 | kGEMLength_1)
637: #define kGEMPCSSerdesControl_DisableLoopback 0x01
638: #define kGEMPCSSerdesControl_EnableSyncDet 0x02
639: #define kGEMPCSSerdesControl_LockRefClk 0x04
640:
641: #define kGEMPCSSerdesOutputSelect (0x9058 | kGEMLength_1)
642: #define kGEMPCSSerdesOutputSelect_PROMAddrMask 0x03
643: #define kGEMPCSSerdesOutputSelect_PROMAddrBit 0x01
644:
645: #define kGEMPCSSerdesState (0x905C | kGEMLength_1)
646: #define kGEMPCSSerdesState_StateMask 0x03
647: #define kGEMPCSSerdesState_Bit 0x01
648:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.