|
|
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) 1995-1996 NeXT Software, Inc. ! 24: * ! 25: * Interface definition for the Mace Ethernet controller. ! 26: * ! 27: * HISTORY ! 28: * ! 29: * 04-Nov-97 ! 30: * Created. ! 31: */ ! 32: ! 33: #ifndef _MACEENETREGISTERS_H ! 34: #define _MACEENETREGISTERS_H ! 35: ! 36: // --------------------------------------------------------------------------------------------- ! 37: // Mace and GC I/O Addresses ! 38: // --------------------------------------------------------------------------------------------- ! 39: #define kTxDMABaseOffset 0x08200 // offset from I/O Space Base address ! 40: #define kRxDMABaseOffset 0x08300 ! 41: #define kControllerBaseOffset 0x11000 ! 42: #define kControllerROMOffset 0x19000 ! 43: ! 44: ! 45: // --------------------------------------------------------------------------------------------- ! 46: // Mace Register Numbers & Bit Assignments ! 47: // --------------------------------------------------------------------------------------------- ! 48: /* ! 49: * Chip Revisions.. ! 50: */ ! 51: ! 52: #define kMaceRevisionB0 0x0940 ! 53: #define kMaceRevisionA2 0x0941 ! 54: ! 55: /* xmtfc */ ! 56: #define kXmtFC 0x0020 /* Transmit Frame Control */ ! 57: #define kXmtFCDRtry 0X80 /* - Disable Retry */ ! 58: #define kXmtFCDXmtFCS 0x08 /* - Disable Transmit FCS */ ! 59: #define kXmtFCAPadXmt 0x01 /* - Auto PAD Transmit */ ! 60: ! 61: /* xmtfs */ ! 62: #define kXmtFS 0x0030 /* Transmit Frame Status */ ! 63: #define kXmtFSXmtSV 0x80 /* - Transmit Status Valid */ ! 64: #define kXmtFSUFlo 0x40 /* - Transmit Underflow */ ! 65: #define kXmtFSLCol 0x20 /* - Transmit late collision */ ! 66: #define kXmtFSMore 0x10 /* - Transmit < 1 retry */ ! 67: #define kXmtFSOne 0x08 /* - Transmit single retry */ ! 68: #define kXmtFSDefer 0x04 /* - Transmit deferred */ ! 69: #define kXmtFSLCar 0x02 /* - Transmit lost carrier */ ! 70: #define kXmtFSRtry 0x01 /* - Transmit Unsuccessful */ ! 71: ! 72: /* xmtrc */ ! 73: #define kXmtRC 0x0040 /* Transmit Retry Count */ ! 74: #define kXmtRCExDef 0x80 /* - ? */ ! 75: #define kXmtRCXmrRC 0x0F /* - Transmit retry count */ ! 76: ! 77: /* rcvfc */ ! 78: #define kRcvFC 0x0050 /* Receive Frame Control */ ! 79: #define kRcvFCLLRcv 0x08 /* - ? */ ! 80: #define kRcvFCMR 0x04 /* - Match/Reject (not implemented) */ ! 81: #define kRcvFCAStrpRcv 0x01 /* - Auto Strip Receive Enable */ ! 82: ! 83: /* rcvfs */ ! 84: #define kRcvFS0 0x0060 /* Receive Frame Status - Byte 0 */ ! 85: #define kRcvFS0RcvCnt 0xFF /* - Receive Msg Byte Count (7:0) */ ! 86: ! 87: #define kRcvFS1 0x0060 /* Receive Frame Status - Byte 1 */ ! 88: #define kRcvFS1OFlo 0x80 /* - Receive Overflow */ ! 89: #define kRcvFS1Clsn 0x40 /* - Receive Collision */ ! 90: #define kRcvFS1Fram 0x20 /* - Receive Framming Error */ ! 91: #define kRcvFS1FCS 0x10 /* - Receive Frame Check Error */ ! 92: #define kRcvFS1RcvCnt 0x0f /* - Receive Msg Byte Count (11:8) */ ! 93: ! 94: ! 95: #define kRcvFS2 0x0060 /* Receive Frame Status - Byte 2 */ ! 96: #define kRcvFS2RntPC 0xFF /* - Runt Packet Count */ ! 97: ! 98: #define kRcvFS3 0x0060 /* Receive Frame Status - Byte 3 */ ! 99: #define kRcvFS3RcvCC 0xFF /* Receive Collision Count */ ! 100: ! 101: /* fifofc */ ! 102: #define kFifoFC 0x0070 /* FIFO Frame Count */ ! 103: #define kFifoFCXFW 0xc0 /* - ? */ ! 104: #define kFifoFCXFW8 0x00 /* - ? */ ! 105: #define kFifoFCXFW16 0x40 /* - ? */ ! 106: #define kFifoFCXFW32 0x80 /* - ? */ ! 107: ! 108: #define kFifoFCRFW 0x30 /* - ? */ ! 109: #define kFifoFCRFW16 0x00 /* - ? */ ! 110: #define kFifoFCRFW32 0x10 /* - ? */ ! 111: #define kFifoFCRFW64 0x20 /* - ? */ ! 112: #define kFifoFCXFWU 0x08 /* - ? */ ! 113: #define kFifoFCRFWU 0x04 /* - ? */ ! 114: #define kFifoFCXBRst 0x02 /* - ? */ ! 115: #define kFifoFCRBRst 0x01 /* - ? */ ! 116: ! 117: ! 118: /* ir */ ! 119: #define kIntReg 0x0080 /* Interrupt Register */ ! 120: #define kIntRegJab 0x80 /* - Jabber Error */ ! 121: #define kIntRegBabl 0x40 /* - Babble Error */ ! 122: #define kIntRegCErr 0x20 /* - Collision Error */ ! 123: #define kIntRegRcvCCO 0x10 /* - Receive Collision Count Overflow */ ! 124: #define kIntRegRntPCO 0x08 /* - Runt Packet Count Overflow */ ! 125: #define kIntRegMPCO 0x04 /* - Missed Packet Count Overflow */ ! 126: #define kIntRegRcvInt 0x02 /* - Receive Interrupt */ ! 127: #define kIntRegXmtInt 0x01 /* - Transmit Interrupt */ ! 128: ! 129: /* imr */ ! 130: #define kIntMask 0x0090 /* Interrupt Mask Register */ ! 131: #define kIntMaskJab 0x80 /* - Mask Jabber Error Int */ ! 132: #define kIntMaskBabl 0x40 /* - Mask Babble Error Int */ ! 133: #define kIntMaskCErr 0x20 /* - Mask Collision Error Int */ ! 134: #define kIntMaskRcvCCO 0x10 /* - Mask Rcv Coll Ctr Overflow Int */ ! 135: #define kIntMaskRntPCO 0x08 /* - Mask Runt Packet Ctr Overflow Int */ ! 136: #define kIntMaskMPCO 0x04 /* - Mask Missed Pkt Ctr Overflow Int */ ! 137: #define kIntMaskRcvInt 0x02 /* - Mask Receive Int */ ! 138: #define kIntMaskXmtInt 0x01 /* - Mask Transmit Int */ ! 139: ! 140: /* pr */ ! 141: #define kPollReg 0x00A0 /* Poll Register */ ! 142: #define kPollRegXmtSV 0x80 /* - Transmit Status Valid */ ! 143: #define kPollRegTDTReq 0x40 /* - Transmit Data Transfer Request */ ! 144: #define kPollRegRDTReq 0x20 /* - Receive Data Transfer Request */ ! 145: ! 146: /* biucc */ ! 147: #define kBIUCC 0x00B0 /* BUI Configuration Control */ ! 148: #define kBIUCCBSwp 0x40 /* - Byte Swap Enable */ ! 149: #define kBIUCCXmtSP 0x30 /* - Transmit Start Point: */ ! 150: #define kBIUCCXmtSP04 0x00 /* - 00b = 4 Bytes */ ! 151: #define kBIUCCXmtSP16 0x10 /* - 01b = 16 Bytes */ ! 152: #define kBIUCCXmtSP64 0x20 /* - 10b = 64 Bytes */ ! 153: #define kBIUCCXmtSP112 0x30 /* - 11b = 112 Bytes */ ! 154: #define kBIUCCSWRst 0x01 /* Software Reset */ ! 155: ! 156: /* fifocc */ ! 157: #define kFifoCC 0x00C0 /* FIFO Configuration Control */ ! 158: #define kFifoCCXmtFW 0xC0 /* - Transmit FIFO Watermark: */ ! 159: #define kFifoCCXmtFW08 0x00 /* - 00b = 8 Write Cycles */ ! 160: #define kFifoCCXmtFW16 0x40 /* - 01b = 16 Write Cycles */ ! 161: #define kFifoCCXmtFW32 0x80 /* - 10b = 32 Write Cycles */ ! 162: ! 163: #define kFifoCCRcvFW 0x30 /* - Receive FIFO Watermark: */ ! 164: #define kFifoCCRcvFW16 0x00 /* - 00b = 16 Bytes */ ! 165: #define kFifoCCRcvFW32 0x10 /* - 01b = 32 Bytes */ ! 166: #define kFifoCCRcvFW64 0x20 /* - 10b = 64 Bytes */ ! 167: ! 168: #define kFifoCCXmtFWRst 0x08 /* - Transmit FIFO Watermark Reset */ ! 169: #define kFifoCCRcvFWRst 0x04 /* - Receive FIFO Watermark Reset */ ! 170: #define kFifoCCXmtBRst 0x02 /* - Transmit Burst Enable */ ! 171: #define kFifoCCRcvBRst 0x01 /* - Receive Burst Enable */ ! 172: ! 173: /* maccc */ ! 174: #define kMacCC 0x00D0 /* MAC Configuration Control */ ! 175: #define kMacCCProm 0x80 /* - Promiscuous Mode Enable */ ! 176: #define kMacCCDXmt2PD 0x40 /* - Disable Transmit Two Part Deferral */ ! 177: #define kMacCCEMBA 0x20 /* - Enable Modified Backoff Algorithm */ ! 178: #define kMacCCDRcvPA 0x08 /* - ? */ ! 179: #define kMacCCDRcvBC 0x04 /* - ? */ ! 180: #define kMacCCEnXmt 0x02 /* - Transmit Enable */ ! 181: #define kMacCCEnRcv 0x01 /* - Receive Enable */ ! 182: ! 183: /* plscc */ ! 184: #define kPLSCC 0x00E0 /* PLS Configuration Control */ ! 185: #define kPLSCCXmtSel 0x08 /* - Transmit Mode Select */ ! 186: #define kPLSCCPortSel 0x06 /* - Port Select: */ ! 187: #define kPLSCCPortSelAUI 0x00 /* - 00b = AUI */ ! 188: #define kPLSCCPortSelTenBase 0x02 /* - 01b = 10BaseT */ ! 189: #define kPLSCCPortSelDAI 0x04 /* - 10b = DAI */ ! 190: #define kPLSCCPortSelGPSI 0x06 /* - 11b = GPSI */ ! 191: #define kPLSCCEnSts 0x01 /* - Enable Status */ ! 192: ! 193: /* phycc */ ! 194: #define kPHYCC 0x00F0 /* PHY Configuration Control */ ! 195: #define kPHYCCLnkFL 0x80 /* - ? */ ! 196: #define kPHYCCDLnkTst 0x40 /* - ? */ ! 197: #define kPHYCCRcvPol 0x20 /* - ? */ ! 198: #define kPHYCCDAPC 0x10 /* - ? */ ! 199: #define kPHYCCLRT 0x08 /* - ? */ ! 200: #define kPHYCCASel 0x04 /* - ? */ ! 201: #define kPHYCCRWake 0x02 /* - ? */ ! 202: #define kPHYCCAWake 0x01 /* - ? */ ! 203: ! 204: #define kMaceChipId0 0x0100 /* MACE Chip ID Register (7:0) */ ! 205: #define kMaceChipId1 0x0110 /* MACE Chip ID Register (15:8) */ ! 206: ! 207: /* iac */ ! 208: #define kIAC 0x0120 /* Internal Address Configuration */ ! 209: #define kIACAddrChg 0x80 /* - ? */ ! 210: #define kIACPhyAddr 0x04 /* - Physical Address Reset */ ! 211: #define kIACLogAddr 0x02 /* - Logical Address Reset */ ! 212: ! 213: ! 214: /* ladrf */ ! 215: #define kLADRF 0x0140 /* Logical Address Filter - 8 Bytes */ ! 216: ! 217: /* padr */ ! 218: #define kPADR 0x0150 /* Physical Address Filter - 6 Bytes */ ! 219: ! 220: /* kMPC */ ! 221: #define kMPC 0x0180 /* Missed Packet Count */ ! 222: ! 223: /* utr */ ! 224: #define kUTR 0x01D0 /* User Test Register */ ! 225: #define kUTRRTRE 0x80 /* - Reserved Test Register Enable */ ! 226: #define kUTRRTRD 0x40 /* - Reserved Test Register Disable */ ! 227: #define kUTRRPA 0x20 /* - Runt Packet Accept */ ! 228: #define kUTRFColl 0x10 /* - Force Collision */ ! 229: #define kUTRRcvFCS 0x08 /* - Receive FCS Enable */ ! 230: ! 231: #define kUTRLoop 0x06 /* - Loopback Control: */ ! 232: #define kUTRLoopNone 0x00 /* - 00b = None */ ! 233: #define kUTRLoopExt 0x02 /* - 01b = External */ ! 234: #define kUTRLoopInt 0x04 /* - 10b = Internal (excludes MENDEC) */ ! 235: #define kUTRLoopIntM 0x06 /* - 11b = Internal (includes MENDEC) */ ! 236: ! 237: ! 238: #define TX_RING_LENGTH (32+1) ! 239: #define RX_RING_LENGTH (32+1) ! 240: ! 241: #define NETWORK_BUFSIZE (ETHERMAXPACKET + ETHERCRC + 8) ! 242: #define TRANSMIT_QUEUE_SIZE 128 ! 243: ! 244: #define WATCHDOG_TIMER_MS 500 ! 245: #define TX_KDB_TIMEOUT 1000 ! 246: ! 247: #define TRANSMIT_QUIESCE_uS 200 ! 248: #define RECEIVE_QUIESCE_uS 1500 ! 249: ! 250: enum ! 251: { ! 252: kIRQEnetDev = 0, ! 253: kIRQEnetTxDMA = 1, ! 254: kIRQEnetRxDMA = 2 ! 255: }; ! 256: ! 257: enum ! 258: { ! 259: MEMORY_MAP_ENET_INDEX = 0, ! 260: MEMORY_MAP_TXDMA_INDEX = 1, ! 261: MEMORY_MAP_RXDMA_INDEX = 2, ! 262: MEMORY_MAP_COUNT = 3 ! 263: }; ! 264: ! 265: #endif /* !_MACEENETREGISTERS_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.