|
|
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 by Apple Computer, Inc., All rights reserved.
24: *
25: * Interface definition for the BigMac Ethernet controller.
26: *
27: * HISTORY
28: *
29: */
30:
31: #ifndef _BMACENETREGISTERS_H
32: #define _BMACENETREGISTERS_H
33:
34: // ---------------------------------------------------------------------------------------------
35: // Heathrow (F)eature (C)ontrol (R)egister Addresses
36: // ---------------------------------------------------------------------------------------------
37: #define kHeathrowFCR 0x0038 // FCR offset from Heathrow Base Address
38: #define kEnetEnabledBits 0x60000000 // mask to enable Enet Xcvr/Controller
39: #define kResetEnetCell 0x80000000 // mask used to reset Enet cell
40: #define kClearResetEnetCell 0x7fffffff // mask used to clear reset Enet cell
41: #define kDisableEnet 0x1fffffff // mask to disable Enet Xcvr/Controller
42:
43:
44: // ---------------------------------------------------------------------------------------------
45: // BMAC & Heathrow I/O Addresses
46: // ---------------------------------------------------------------------------------------------
47: #define kTxDMABaseOffset 0x08200 // offset from Heathrow Base address
48: #define kRxDMABaseOffset 0x08300
49: #define kControllerBaseOffset 0x11000
50:
51:
52: // ---------------------------------------------------------------------------------------------
53: // BigMac Register Numbers & Bit Assignments
54: // ---------------------------------------------------------------------------------------------
55: #define kXIFC 0x0000
56: #define kTxOutputEnable 0x0001
57: #define kMIILoopbackBits 0x0006
58: #define kMIIBufferEnable 0x0008
59: #define kSQETestEnable 0x0010
60: #define kSTAT 0x0200
61: #define kINTDISABLE 0x0210
62: #define kIntFrameReceived 0x0001
63: #define kIntRxFrameCntExp 0x0002
64: #define kIntRxAlignCntExp 0x0004
65: #define kIntRxCRCCntExp 0x0008
66: #define kIntRxLenCntExp 0x0010
67: #define kIntRxOverFlow 0x0020
68: #define kIntRxCodeViolation 0x0040
69: #define kIntSQETestError 0x0080
70: #define kIntFrameSent 0x0100
71: #define kIntTxUnderrun 0x0200
72: #define kIntTxMaxSizeError 0x0400
73: #define kIntTxNormalCollExp 0x0800
74: #define kIntTxExcessCollExp 0x1000
75: #define kIntTxLateCollExp 0x2000
76: #define kIntTxNetworkCollExp 0x4000
77: #define kIntTxDeferTimerExp 0x8000
78: #define kNormalIntEvents ~(0xFFFF & ( kIntFrameSent | kIntTxUnderrun) )
79: #if EXTRA_INTERRUPTS
80: #define kXtraInterrupts ~(0xFFFF & (kIntFrameReceived | kIntRxFrameCntExp \
81: | kIntFrameSent | kIntTxUnderrun | kIntFrameSent) )
82: #endif
83: #define kNoEventsMask 0xFFFF
84: #define kTXRST 0x0420
85: #define kTxResetBit 0x0001
86: #define kTXCFG 0x0430
87: #define kTxMACEnable 0x0001
88: #define kTxThreshold 0x0004
89: #define kTxSlowDown 0x0020
90: #define kTxIgnoreCollision 0x0040
91: #define kTxDisableFCS 0x0080
92: #define kTxNoBackoff 0x0100
93: #define kTxFullDuplex 0x0200
94: #define kTxNeverGiveUp 0x0400
95: #define kIPG1 0x0440
96: #define kIPG2 0x0450
97: #define kALIMIT 0x0460
98: #define kSLOT 0x0470
99: #define kPALEN 0x0480
100: #define kPAPAT 0x0490
101: #define kTXSFD 0x04A0
102: #define kJAM 0x04B0
103: #define kTXMAX 0x04C0
104: #define kTXMIN 0x04D0
105: #define kPAREG 0x04E0
106: #define kDCNT 0x04F0
107: #define kNCCNT 0x0500
108: #define kNTCNT 0x0510
109: #define kEXCNT 0x0520
110: #define kLTCNT 0x0530
111: #define kRSEED 0x0540
112: #define kTXSM 0x0550
113: #define kRXRST 0x0620
114: #define kRxResetValue 0x0000
115: #define kRXCFG 0x0630
116: #define kRxMACEnable 0x0001
117: #define kReservedValue 0x0004
118: #define kRxPromiscEnable 0x0040
119: #define kRxCRCEnable 0x0100
120: #define kRxRejectOwnPackets 0x0200
121: #define kRxHashFilterEnable 0x0800
122: #define kRxAddrFilterEnable 0x1000
123: #define kRXMAX 0x0640
124: #define kRXMIN 0x0650
125: #define kMADD2 0x0660
126: #define kMADD1 0x0670
127: #define kMADD0 0x0680
128: #define kFRCNT 0x0690
129: #define kLECNT 0x06A0
130: #define kAECNT 0x06B0
131: #define kFECNT 0x06C0
132: #define kRXSM 0x06D0
133: #define kRXCV 0x06E0
134: #define kHASH3 0x0700
135: #define kHASH2 0x0710
136: #define kHASH1 0x0720
137: #define kHASH0 0x0730
138: #define kAFR2 0x0740
139: #define kAFR1 0x0750
140: #define kAFR0 0x0760
141: #define kAFCR 0x0770
142: #define kEnableAllCompares 0x0fff
143: #define kTXFIFOCSR 0x0100
144: #define kTxFIFOEnable 0x0001
145: #define kTxFIFO128 0x0000
146: #define kTxFIFO2048 0x001e
147: #define kTXTH 0x0110
148: #define kRXFIFOCSR 0x0120
149: #define kRxFIFOEnable kTxFIFOEnable
150: #define kRxFIFO128 kTxFIFO128
151: #define kRxFIFO2048 kTxFIFO2048
152: #define kMEMADD 0x0130
153: #define kMEMDATAHI 0x0140
154: #define kMEMDATALO 0x0150
155: #define kXCVRIF 0x0160
156: #define kCOLActiveLow 0x0002
157: #define kSerialMode 0x0004
158: #define kClkBit 0x0008
159: #define kLinkStatus 0x0100
160: #define kCHIPID 0x0170
161: #define kCHIPID_Heathrow 0xB0
162: #define kCHIPID_Paddington 0xC0
163: #define kCHIPID_PaddingtonXmitStreaming 0xC4
164:
165: #define kMIFCSR 0x0180
166: #define kMIFCSR_Clock 0x0001
167: #define kMIFCSR_DataOut 0x0002
168: #define kMIFCSR_DataOutEnable 0x0004
169: #define kMIFCSR_DataIn 0x0008
170: #define kSROMCSR 0x0190
171: #define kTXPNTR 0x01A0
172: #define kRXPNTR 0x01B0
173:
174: // ---------------------------------------------------------------------------------------------
175: // Misc. Bit definitions for BMac Status word
176: // ---------------------------------------------------------------------------------------------
177: #define kRxAbortBit 0x8000 // status bit in BMac status for rx packets
178: #define kRxLengthMask 0x3FFF // bits that determine length of rx packets
179:
180:
181: #define TX_RING_LENGTH 33
182: #define RX_RING_LENGTH 33
183:
184: #define TX_PKTS_PER_INT 10
185:
186: #define NETWORK_BUFSIZE (ETHERMAXPACKET + ETHERCRC + 2)
187: #define TRANSMIT_QUEUE_SIZE 1024
188:
189: #define WATCHDOG_TIMER_MS 500
190: #define TX_KDB_TIMEOUT 1000
191:
192: #define TRANSMIT_QUIESCE_uS 200
193: #define RECEIVE_QUIESCE_uS 1500
194:
195:
196: enum
197: {
198: kIRQEnetDev = 0,
199: kIRQEnetTxDMA = 1,
200: kIRQEnetRxDMA = 2
201: };
202:
203: enum
204: {
205: MEMORY_MAP_ENET_INDEX = 0,
206: MEMORY_MAP_TXDMA_INDEX = 1,
207: MEMORY_MAP_RXDMA_INDEX = 2,
208: MEMORY_MAP_HEATHROW_INDEX = 3,
209: MEMORY_MAP_COUNT = 4
210: };
211:
212: #endif /* !_BMACENETREGISTERS_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.