wereg.h revision 1.1 1 1.1 jdolecek /* $NetBSD: wereg.h,v 1.1 2001/03/23 17:34:41 jdolecek Exp $ */
2 1.1 jdolecek
3 1.1 jdolecek /*
4 1.1 jdolecek * National Semiconductor DS8390 NIC register definitions.
5 1.1 jdolecek *
6 1.1 jdolecek * Copyright (C) 1993, David Greenman. This software may be used, modified,
7 1.1 jdolecek * copied, distributed, and sold, in both source and binary form provided that
8 1.1 jdolecek * the above copyright and these terms are retained. Under no circumstances is
9 1.1 jdolecek * the author responsible for the proper functioning of this software, nor does
10 1.1 jdolecek * the author assume any responsibility for damages incurred with its use.
11 1.1 jdolecek */
12 1.1 jdolecek
13 1.1 jdolecek /*
14 1.1 jdolecek * Compile-time config flags
15 1.1 jdolecek */
16 1.1 jdolecek /*
17 1.1 jdolecek * This sets the default for enabling/disablng the tranceiver.
18 1.1 jdolecek */
19 1.1 jdolecek #define WE_FLAGS_DISABLE_TRANCEIVER 0x0001
20 1.1 jdolecek
21 1.1 jdolecek /*
22 1.1 jdolecek * This forces the board to be used in 8/16-bit mode even if it autoconfigs
23 1.1 jdolecek * differently.
24 1.1 jdolecek */
25 1.1 jdolecek #define WE_FLAGS_FORCE_8BIT_MODE 0x0002
26 1.1 jdolecek #define WE_FLAGS_FORCE_16BIT_MODE 0x0004
27 1.1 jdolecek
28 1.1 jdolecek /*
29 1.1 jdolecek * This disables the use of double transmit buffers.
30 1.1 jdolecek */
31 1.1 jdolecek #define WE_FLAGS_NO_MULTI_BUFFERING 0x0008
32 1.1 jdolecek
33 1.1 jdolecek /*
34 1.1 jdolecek * Definitions for Western digital/SMC WD80x3 series ASIC
35 1.1 jdolecek */
36 1.1 jdolecek
37 1.1 jdolecek /*
38 1.1 jdolecek * Memory Select Register (MSR)
39 1.1 jdolecek */
40 1.1 jdolecek #define WE_MSR 0
41 1.1 jdolecek
42 1.1 jdolecek /* next three definitions for Toshiba */
43 1.1 jdolecek #define WE_MSR_POW 0x02 /* 0 = power save, 1 = normal (R/W) */
44 1.1 jdolecek #define WE_MSR_BSY 0x04 /* gate array busy (R) */
45 1.1 jdolecek #define WE_MSR_LEN 0x20 /* 0 = 16-bit, 1 = 8-bit (R/W) */
46 1.1 jdolecek
47 1.1 jdolecek #define WE_MSR_ADDR 0x3f /* Memory decode bits 18-13 */
48 1.1 jdolecek #define WE_MSR_MENB 0x40 /* Memory enable */
49 1.1 jdolecek #define WE_MSR_RST 0x80 /* Reset board */
50 1.1 jdolecek
51 1.1 jdolecek /*
52 1.1 jdolecek * Interface Configuration Register (ICR)
53 1.1 jdolecek */
54 1.1 jdolecek #define WE_ICR 1
55 1.1 jdolecek
56 1.1 jdolecek #define WE_ICR_16BIT 0x01 /* 16-bit interface */
57 1.1 jdolecek #define WE_ICR_OAR 0x02 /* select register (0=BIO 1=EAR) */
58 1.1 jdolecek #define WE_ICR_IR2 0x04 /* high order bit of encoded IRQ */
59 1.1 jdolecek #define WE_ICR_MSZ 0x08 /* memory size (0=8k 1=32k) */
60 1.1 jdolecek #define WE_ICR_RLA 0x10 /* recall LAN address */
61 1.1 jdolecek #define WE_ICR_RX7 0x20 /* recall all but i/o and LAN address */
62 1.1 jdolecek #define WE_ICR_RIO 0x40 /* recall i/o address */
63 1.1 jdolecek #define WE_ICR_STO 0x80 /* store to non-volatile memory */
64 1.1 jdolecek #ifdef TOSH_ETHER
65 1.1 jdolecek #define WE_ICR_MEM 0xe0 /* shared mem address A15-A13 (R/W) */
66 1.1 jdolecek #define WE_ICR_MSZ1 0x0f /* memory size, 0x08 = 64K, 0x04 = 32K,
67 1.1 jdolecek 0x02 = 16K, 0x01 = 8K */
68 1.1 jdolecek /* 64K can only be used if mem address
69 1.1 jdolecek above 1MB */
70 1.1 jdolecek /* IAR holds address A23-A16 (R/W) */
71 1.1 jdolecek #endif
72 1.1 jdolecek
73 1.1 jdolecek /*
74 1.1 jdolecek * IO Address Register (IAR)
75 1.1 jdolecek */
76 1.1 jdolecek #define WE_IAR 2
77 1.1 jdolecek
78 1.1 jdolecek /*
79 1.1 jdolecek * EEROM Address Register
80 1.1 jdolecek */
81 1.1 jdolecek #define WE_EAR 3
82 1.1 jdolecek
83 1.1 jdolecek /*
84 1.1 jdolecek * Interrupt Request Register (IRR)
85 1.1 jdolecek */
86 1.1 jdolecek #define WE_IRR 4
87 1.1 jdolecek
88 1.1 jdolecek #define WE_IRR_0WS 0x01 /* use 0 wait-states on 8 bit bus */
89 1.1 jdolecek #define WE_IRR_OUT1 0x02 /* WD83C584 pin 1 output */
90 1.1 jdolecek #define WE_IRR_OUT2 0x04 /* WD83C584 pin 2 output */
91 1.1 jdolecek #define WE_IRR_OUT3 0x08 /* WD83C584 pin 3 output */
92 1.1 jdolecek #define WE_IRR_FLASH 0x10 /* Flash RAM is in the ROM socket */
93 1.1 jdolecek
94 1.1 jdolecek /*
95 1.1 jdolecek * The three bits of the encoded IRQ are decoded as follows:
96 1.1 jdolecek *
97 1.1 jdolecek * IR2 IR1 IR0 IRQ
98 1.1 jdolecek * 0 0 0 2/9
99 1.1 jdolecek * 0 0 1 3
100 1.1 jdolecek * 0 1 0 5
101 1.1 jdolecek * 0 1 1 7
102 1.1 jdolecek * 1 0 0 10
103 1.1 jdolecek * 1 0 1 11
104 1.1 jdolecek * 1 1 0 15
105 1.1 jdolecek * 1 1 1 4
106 1.1 jdolecek */
107 1.1 jdolecek #define WE_IRR_IR0 0x20 /* bit 0 of encoded IRQ */
108 1.1 jdolecek #define WE_IRR_IR1 0x40 /* bit 1 of encoded IRQ */
109 1.1 jdolecek #define WE_IRR_IEN 0x80 /* Interrupt enable */
110 1.1 jdolecek
111 1.1 jdolecek /*
112 1.1 jdolecek * LA Address Register (LAAR)
113 1.1 jdolecek */
114 1.1 jdolecek #define WE_LAAR 5
115 1.1 jdolecek
116 1.1 jdolecek #define WE_LAAR_ADDRHI 0x1f /* bits 23-19 of RAM address */
117 1.1 jdolecek #define WE_LAAR_0WS16 0x20 /* enable 0 wait-states on 16 bit bus */
118 1.1 jdolecek #define WE_LAAR_L16EN 0x40 /* enable 16-bit operation */
119 1.1 jdolecek #define WE_LAAR_M16EN 0x80 /* enable 16-bit memory access */
120 1.1 jdolecek
121 1.1 jdolecek /* i/o base offset to station address/card-ID PROM */
122 1.1 jdolecek #define WE_PROM 8
123 1.1 jdolecek
124 1.1 jdolecek /*
125 1.1 jdolecek * 83C790 specific registers
126 1.1 jdolecek */
127 1.1 jdolecek /*
128 1.1 jdolecek * Hardware Support Register (HWR) ('790)
129 1.1 jdolecek */
130 1.1 jdolecek #define WE790_HWR 4
131 1.1 jdolecek
132 1.1 jdolecek #define WE790_HWR_RST 0x10 /* hardware reset */
133 1.1 jdolecek #define WE790_HWR_LPRM 0x40 /* LAN PROM select */
134 1.1 jdolecek #define WE790_HWR_SWH 0x80 /* switch register set */
135 1.1 jdolecek
136 1.1 jdolecek /*
137 1.1 jdolecek * ICR790 Interrupt Control Register for the 83C790
138 1.1 jdolecek */
139 1.1 jdolecek #define WE790_ICR 6
140 1.1 jdolecek
141 1.1 jdolecek #define WE790_ICR_EIL 0x01 /* enable interrupts */
142 1.1 jdolecek
143 1.1 jdolecek /*
144 1.1 jdolecek * REV/IOPA Revision / I/O Pipe register for the 83C79X
145 1.1 jdolecek */
146 1.1 jdolecek #define WE790_REV 7
147 1.1 jdolecek
148 1.1 jdolecek #define WE790_REV_790 0x20
149 1.1 jdolecek #define WE790_REV_795 0x40
150 1.1 jdolecek
151 1.1 jdolecek /*
152 1.1 jdolecek * 79X RAM Address Register (RAR)
153 1.1 jdolecek * Enabled with SWH bit=1 in HWR register
154 1.1 jdolecek */
155 1.1 jdolecek
156 1.1 jdolecek #define WE790_RAR 0x0b
157 1.1 jdolecek
158 1.1 jdolecek #define WE790_RAR_SZ8 0x00 /* 8k memory buffer */
159 1.1 jdolecek #define WE790_RAR_SZ16 0x10 /* 16k memory buffer */
160 1.1 jdolecek #define WE790_RAR_SZ32 0x20 /* 32k memory buffer */
161 1.1 jdolecek #define WE790_RAR_SZ64 0x30 /* 64k memory buffer */
162 1.1 jdolecek
163 1.1 jdolecek /*
164 1.1 jdolecek * General Control Register (GCR)
165 1.1 jdolecek * Enabled with SWH bit == 1 in HWR register
166 1.1 jdolecek */
167 1.1 jdolecek #define WE790_GCR 0x0d
168 1.1 jdolecek
169 1.1 jdolecek #define WE790_GCR_LIT 0x01 /* on for UTP */
170 1.1 jdolecek #define WE790_GCR_GPOUT 0x02 /* if BNC is enabled */
171 1.1 jdolecek #define WE790_GCR_IR0 0x04 /* bit 0 of encoded IRQ */
172 1.1 jdolecek #define WE790_GCR_IR1 0x08 /* bit 1 of encoded IRQ */
173 1.1 jdolecek #define WE790_GCR_ZWSEN 0x20 /* zero wait state enable */
174 1.1 jdolecek #define WE790_GCR_IR2 0x40 /* bit 2 of encoded IRQ */
175 1.1 jdolecek /*
176 1.1 jdolecek * The three bits of the encoded IRQ are decoded as follows:
177 1.1 jdolecek *
178 1.1 jdolecek * IR2 IR1 IR0 IRQ
179 1.1 jdolecek * 0 0 0 none
180 1.1 jdolecek * 0 0 1 9
181 1.1 jdolecek * 0 1 0 3
182 1.1 jdolecek * 0 1 1 5
183 1.1 jdolecek * 1 0 0 7
184 1.1 jdolecek * 1 0 1 10
185 1.1 jdolecek * 1 1 0 11
186 1.1 jdolecek * 1 1 1 15
187 1.1 jdolecek */
188 1.1 jdolecek
189 1.1 jdolecek /* i/o base offset to CARD ID */
190 1.1 jdolecek #define WE_CARD_ID WE_PROM+6
191 1.1 jdolecek
192 1.1 jdolecek /* Board type codes in card ID */
193 1.1 jdolecek #define WE_TYPE_WD8003S 0x02
194 1.1 jdolecek #define WE_TYPE_WD8003E 0x03
195 1.1 jdolecek #define WE_TYPE_WD8013EBT 0x05
196 1.1 jdolecek #define WE_TYPE_TOSHIBA1 0x11 /* named PCETA1 */
197 1.1 jdolecek #define WE_TYPE_TOSHIBA2 0x12 /* named PCETA2 */
198 1.1 jdolecek #define WE_TYPE_TOSHIBA3 0x13 /* named PCETB */
199 1.1 jdolecek #define WE_TYPE_TOSHIBA4 0x14 /* named PCETC */
200 1.1 jdolecek #define WE_TYPE_WD8003W 0x24
201 1.1 jdolecek #define WE_TYPE_WD8003EB 0x25
202 1.1 jdolecek #define WE_TYPE_WD8013W 0x26
203 1.1 jdolecek #define WE_TYPE_WD8013EP 0x27
204 1.1 jdolecek #define WE_TYPE_WD8013WC 0x28
205 1.1 jdolecek #define WE_TYPE_WD8013EPC 0x29
206 1.1 jdolecek #define WE_TYPE_SMC8216T 0x2a
207 1.1 jdolecek #define WE_TYPE_SMC8216C 0x2b
208 1.1 jdolecek #define WE_TYPE_WD8013EBP 0x2c
209 1.1 jdolecek
210 1.1 jdolecek /* Bit definitions in card ID */
211 1.1 jdolecek #define WE_REV_MASK 0x1f /* Revision mask */
212 1.1 jdolecek #define WE_SOFTCONFIG 0x20 /* Soft config */
213 1.1 jdolecek #define WE_LARGERAM 0x40 /* Large RAM */
214 1.1 jdolecek #define WE_MICROCHANEL 0x80 /* Microchannel bus (vs. isa) */
215 1.1 jdolecek
216 1.1 jdolecek /*
217 1.1 jdolecek * Checksum total. All 8 bytes in station address PROM will add up to this.
218 1.1 jdolecek */
219 1.1 jdolecek #ifdef TOSH_ETHER
220 1.1 jdolecek #define WE_ROM_CHECKSUM_TOTAL 0xA5
221 1.1 jdolecek #else
222 1.1 jdolecek #define WE_ROM_CHECKSUM_TOTAL 0xFF
223 1.1 jdolecek #endif
224 1.1 jdolecek
225 1.1 jdolecek #define WE_NIC_OFFSET 0x10 /* I/O base offset to NIC */
226 1.1 jdolecek #define WE_ASIC_OFFSET 0 /* I/O base offset to ASIC */
227 1.1 jdolecek #define WE_NIC_NPORTS 16
228 1.1 jdolecek #define WE_ASIC_NPORTS 16
229 1.1 jdolecek #define WE_NPORTS (WE_NIC_NPORTS + WE_ASIC_NPORTS)
230 1.1 jdolecek
231 1.1 jdolecek #define WE_PAGE_OFFSET 0 /* page offset for NIC access to mem */
232