|
|
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.