Annotation of XNU/iokit/Drivers/network/drvPPCUniN/UniNEnetRegisters.h, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.