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