|
|
1.1 root 1: /*
2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7: * Reserved. This file contains Original Code and/or Modifications of
8: * Original Code as defined in and that are subject to the Apple Public
9: * Source License Version 1.1 (the "License"). You may not use this file
10: * except in compliance with the License. Please obtain a copy of the
11: * License at http://www.apple.com/publicsource and read it before using
12: * this file.
13: *
14: * The Original Code and all software distributed under the License are
15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
19: * License for the specific language governing rights and limitations
20: * under the License.
21: *
22: * @APPLE_LICENSE_HEADER_END@
23: */
24:
25: /*
26: * Copyright (c) 1998-1999 by Apple Computer, Inc., All rights reserved.
27: *
28: * Interface definition for the BigMac Ethernet controller.
29: *
30: * HISTORY
31: *
32: */
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: #define kMIFCSR 0x0180
165: #define kMIFCSR_Clock 0x0001
166: #define kMIFCSR_DataOut 0x0002
167: #define kMIFCSR_DataOutEnable 0x0004
168: #define kMIFCSR_DataIn 0x0008
169: #define kSROMCSR 0x0190
170: #define kTXPNTR 0x01A0
171: #define kRXPNTR 0x01B0
172:
173: // ---------------------------------------------------------------------------------------------
174: // Misc. Bit definitions for BMac Status word
175: // ---------------------------------------------------------------------------------------------
176: #define kRxAbortBit 0x8000 // status bit in BMac status for rx packets
177: #define kRxLengthMask 0x3FFF // bits that determine length of rx packets
178:
179:
180: #define TX_RING_LENGTH 33
181: #define RX_RING_LENGTH 33
182:
183: #define TX_PKTS_PER_INT 10
184:
185: #define NETWORK_BUFSIZE (ETHERMAXPACKET + ETHERCRC + 2)
186: #define TRANSMIT_QUEUE_SIZE 1024
187:
188: #define WATCHDOG_TIMER_MS 300
189: #define TX_KDB_TIMEOUT 1000
190:
191: #define TRANSMIT_QUIESCE_uS 200
192: #define RECEIVE_QUIESCE_uS 1500
193:
194:
195: enum
196: {
197: kIRQEnetDev = 0,
198: kIRQEnetTxDMA = 1,
199: kIRQEnetRxDMA = 2
200: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.