FreeBSD/Linux Kernel Cross Reference
sys/i386at/conf.c
1 /*
2 * Mach Operating System
3 * Copyright (c) 1993-1989 Carnegie Mellon University
4 * All Rights Reserved.
5 *
6 * Permission to use, copy, modify and distribute this software and its
7 * documentation is hereby granted, provided that both the copyright
8 * notice and this permission notice appear in all copies of the
9 * software, derivative works or modified versions, and any portions
10 * thereof, and that both notices appear in supporting documentation.
11 *
12 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
13 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
14 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
15 *
16 * Carnegie Mellon requests users of this software to return to
17 *
18 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
19 * School of Computer Science
20 * Carnegie Mellon University
21 * Pittsburgh PA 15213-3890
22 *
23 * any improvements or extensions that they make and grant Carnegie Mellon
24 * the rights to redistribute these changes.
25 */
26 /*
27 * HISTORY
28 * $Log: conf.c,v $
29 * Revision 2.16 93/05/17 15:04:47 rvb
30 * Type casts, etc to quiet gcc 2.3.3 warnings
31 * [93/05/17 rvb]
32 *
33 * Revision 2.15 93/03/09 10:54:33 danner
34 * Added SCSI CD-ROM Audio. Added back SCSI processor links.
35 * [93/03/06 af]
36 *
37 * Revision 2.14 93/02/05 08:18:31 danner
38 * Added include.
39 * [93/02/04 danner]
40 *
41 * Revision 2.13 93/01/24 13:15:14 danner
42 * Add d-link "600" ethernet device "de"
43 * [92/08/13 rvb]
44 *
45 * Revision 2.12 92/02/19 16:29:40 elf
46 * Add lpr and par devices. (taken from 2.5)
47 * [92/02/13 rvb]
48 *
49 * Revision 2.11 92/01/03 20:39:53 dbg
50 * Added devinfo routine to scsi to accomodate MI change
51 * that screwed up extra large writes.
52 * [91/12/26 11:06:54 af]
53 *
54 * Revision 2.10 91/08/28 11:11:37 jsb
55 * Fixed field-describing comment in dev_name_list definition.
56 * [91/08/27 17:52:06 jsb]
57 *
58 * Convert bsize entries to devinfo entries. Add nodev entries for
59 * devices that don't support devinfo.
60 * [91/08/15 18:43:13 jsb]
61 *
62 * Add block size entries for hd and fd.
63 * [91/08/12 17:32:55 dlb]
64 *
65 * Revision 2.9 91/08/24 11:57:26 af
66 * Added SCSI disks, tapes, and cpus.
67 * [91/08/02 02:56:08 af]
68 *
69 * Revision 2.8 91/05/14 16:22:01 mrt
70 * Correcting copyright
71 *
72 * Revision 2.7 91/02/14 14:42:13 mrt
73 * Allow com driver and distinguish EtherLinkII from wd8003
74 * [91/01/28 15:27:02 rvb]
75 *
76 * Revision 2.6 91/02/05 17:16:44 mrt
77 * Changed to new Mach copyright
78 * [91/02/01 17:42:38 mrt]
79 *
80 * Revision 2.5 91/01/08 17:32:42 rpd
81 * Support for get/set status on hd and fd.
82 * Also fd has 64 minor devices per unit.
83 * Switch wd8003 -> ns8390
84 * [91/01/04 12:17:15 rvb]
85 *
86 * Revision 2.4 90/10/01 14:23:02 jeffreyh
87 * added wd8003 ethernet driver
88 * [90/09/27 18:23:53 jeffreyh]
89 *
90 * Revision 2.3 90/05/21 13:26:53 dbg
91 * Add mouse, keyboard, IOPL devices.
92 * [90/05/17 dbg]
93 *
94 * Revision 2.2 90/05/03 15:41:34 dbg
95 * Add 3c501 under name 'et'.
96 * [90/04/27 dbg]
97 *
98 * Created.
99 * [90/02/20 dbg]
100 *
101 */
102
103 /*
104 * Device switch for i386 AT bus.
105 */
106
107 #include <mach/machine/vm_types.h>
108 #include <device/conf.h>
109
110 extern vm_offset_t block_io_mmap();
111
112 extern int timeopen(), timeclose();
113 extern vm_offset_t timemmap();
114 #define timename "time"
115
116 #include <hd.h>
117 #if NHD > 0
118 extern int hdopen(), hdclose(), hdread(), hdwrite();
119 extern int hdgetstat(), hdsetstat(), hddevinfo();
120 #define hdname "hd"
121 #endif NHD > 0
122
123 #include <aha.h>
124 #if NAHA > 0
125 int rz_open(), rz_close(), rz_read(), rz_write();
126 int rz_get_status(), rz_set_status(), rz_devinfo();
127 int cd_open(), cd_close(), cd_read(), cd_write();
128 #define rzname "sd"
129 #define tzname "st"
130 #define scname "sc" /* processors */
131 #define cdname "cd_audio" /* CD-ROM DA */
132
133 #endif /*NAHA > 0*/
134
135 #include <fd.h>
136 #if NFD > 0
137 extern int fdopen(), fdclose(), fdread(), fdwrite();
138 extern int fdgetstat(), fdsetstat(), fddevinfo();
139 #define fdname "fd"
140 #endif NFD > 0
141
142 #include <wt.h>
143 #if NWT > 0
144 extern int wtopen(), wtread(), wtwrite(), wtclose();
145 #define wtname "wt"
146 #endif NWT > 0
147
148 #include <pc586.h>
149 #if NPC586 > 0
150 extern int pc586open(), pc586output(), pc586getstat(), pc586setstat(),
151 pc586setinput();
152 #define pc586name "pc"
153 #endif NPC586 > 0
154
155 #include <ns8390.h>
156 #if NNS8390 > 0
157 extern int wd8003open(), eliiopen();
158 extern int ns8390output(), ns8390getstat(), ns8390setstat(),
159 ns8390setinput();
160 #define ns8390wdname "wd"
161 #define ns8390elname "el"
162 #endif NNS8390 > 0
163
164 #include <at3c501.h>
165 #if NAT3C501 > 0
166 extern int at3c501open(), at3c501output(),
167 at3c501getstat(), at3c501setstat(),
168 at3c501setinput();
169 #define at3c501name "et"
170 #endif NAT3C501 > 0
171
172 #include <par.h>
173 #if NPAR > 0
174 extern int paropen(), paroutput(), pargetstat(), parsetstat(),
175 parsetinput();
176 #define parname "par"
177 #endif NPAR > 0
178
179 #include <de6c.h>
180 #if NDE6C > 0
181 extern int de6copen(), de6coutput(), de6cgetstat(), de6csetstat(),
182 de6csetinput();
183 #define de6cname "de"
184 #endif NDE6C > 0
185
186 extern int kdopen(), kdclose(), kdread(), kdwrite();
187 extern int kdgetstat(), kdsetstat(), kdportdeath();
188 extern vm_offset_t kdmmap();
189 #define kdname "kd"
190
191 #include <com.h>
192 #if NCOM > 0
193 extern int comopen(), comclose(), comread(), comwrite();
194 extern int comgetstat(), comsetstat(), comportdeath();
195 #define comname "com"
196 #endif NCOM > 0
197
198 #include <lpr.h>
199 #if NLPR > 0
200 extern int lpropen(), lprclose(), lprread(), lprwrite();
201 extern int lprgetstat(), lprsetstat(), lprportdeath();
202 #define lprname "lpr"
203 #endif NLPR > 0
204
205 #include <blit.h>
206 #if NBLIT > 0
207 extern int blitopen(), blitclose(), blit_get_stat();
208 extern vm_offset_t blitmmap();
209 #define blitname "blit"
210
211 extern int mouseinit(), mouseopen(), mouseclose();
212 extern int mouseioctl(), mouseselect(), mouseread();
213 #endif
214
215 extern int kbdopen(), kbdclose(), kbdread();
216 extern int kbdgetstat(), kbdsetstat();
217 #define kbdname "kbd"
218
219 extern int mouseopen(), mouseclose(), mouseread();
220 #define mousename "mouse"
221
222 extern int ioplopen(), ioplclose();
223 extern vm_offset_t ioplmmap();
224 #define ioplname "iopl"
225
226
227 /*
228 * List of devices - console must be at slot 0
229 */
230 struct dev_ops dev_name_list[] =
231 {
232 /*name, open, close, read,
233 write, getstat, setstat, mmap,
234 async_in, reset, port_death, subdev,
235 dev_info */
236
237 { kdname, kdopen, kdclose, kdread,
238 kdwrite, kdgetstat, kdsetstat, kdmmap,
239 nodev, nulldev, kdportdeath, 0,
240 nodev },
241
242 { timename, timeopen, timeclose, nulldev,
243 nulldev, nulldev, nulldev, timemmap,
244 nodev, nulldev, nulldev, 0,
245 nodev },
246
247 #if NHD > 0
248 { hdname, hdopen, hdclose, hdread,
249 hdwrite, hdgetstat, hdsetstat, nomap,
250 nodev, nulldev, nulldev, 16,
251 hddevinfo },
252 #endif NHD > 0
253
254 #if NAHA > 0
255 { rzname, rz_open, rz_close, rz_read,
256 rz_write, rz_get_status, rz_set_status, nomap,
257 nodev, nulldev, nulldev, 8,
258 rz_devinfo },
259
260 { tzname, rz_open, rz_close, rz_read,
261 rz_write, rz_get_status, rz_set_status, nomap,
262 nodev, nulldev, nulldev, 8,
263 nodev },
264
265 { cdname, cd_open, cd_close, cd_read,
266 cd_write, nodev, nodev, nomap,
267 nodev, nulldev, nulldev, 8,
268 nodev },
269
270 { scname, rz_open, rz_close, rz_read,
271 rz_write, rz_get_status, rz_set_status, nomap,
272 nodev, nulldev, nulldev, 8,
273 nodev },
274
275 #endif /*NAHA > 0*/
276
277 #if NFD > 0
278 { fdname, fdopen, fdclose, fdread,
279 fdwrite, fdgetstat, fdsetstat, nomap,
280 nodev, nulldev, nulldev, 64,
281 fddevinfo },
282 #endif NFD > 0
283
284 #if NWT > 0
285 { wtname, wtopen, wtclose, wtread,
286 wtwrite, nulldev, nulldev, nomap,
287 nodev, nulldev, nulldev, 0,
288 nodev },
289 #endif NWT > 0
290
291 #if NPC586 > 0
292 { pc586name, pc586open, nulldev, nulldev,
293 pc586output, pc586getstat, pc586setstat, nomap,
294 pc586setinput,nulldev, nulldev, 0,
295 nodev },
296 #endif
297
298 #if NAT3C501 > 0
299 { at3c501name, at3c501open, nulldev, nulldev,
300 at3c501output,at3c501getstat, at3c501setstat, nomap,
301 at3c501setinput, nulldev, nulldev, 0,
302 nodev },
303 #endif
304
305 #if NNS8390 > 0
306 { ns8390wdname, wd8003open, nulldev, nulldev,
307 ns8390output, ns8390getstat, ns8390setstat, nomap,
308 ns8390setinput, nulldev, nulldev, 0,
309 nodev },
310
311 { ns8390elname, eliiopen, nulldev, nulldev,
312 ns8390output, ns8390getstat, ns8390setstat, nomap,
313 ns8390setinput, nulldev, nulldev, 0,
314 nodev },
315 #endif
316
317 #if NPAR > 0
318 { parname, paropen, nulldev, nulldev,
319 paroutput, pargetstat, parsetstat, nomap,
320 parsetinput, nulldev, nulldev, 0,
321 nodev },
322 #endif
323
324 #if NDE6C > 0
325 { de6cname, de6copen, nulldev, nulldev,
326 de6coutput, de6cgetstat, de6csetstat, nomap,
327 de6csetinput, nulldev, nulldev, 0,
328 nodev },
329 #endif
330
331 #if NCOM > 0
332 { comname, comopen, comclose, comread,
333 comwrite, comgetstat, comsetstat, nomap,
334 nodev, nulldev, comportdeath, 0,
335 nodev },
336 #endif
337
338 #if NLPR > 0
339 { lprname, lpropen, lprclose, lprread,
340 lprwrite, lprgetstat, lprsetstat, nomap,
341 nodev, nulldev, lprportdeath, 0,
342 nodev },
343 #endif
344
345 #if NBLIT > 0
346 { blitname, blitopen, blitclose, nodev,
347 nodev, blit_get_stat, nodev, blitmmap,
348 nodev, nodev, nodev, 0,
349 nodev },
350 #endif
351
352 { mousename, mouseopen, mouseclose, mouseread,
353 nodev, nulldev, nulldev, nomap,
354 nodev, nulldev, nulldev, 0,
355 nodev },
356
357 { kbdname, kbdopen, kbdclose, kbdread,
358 nodev, kbdgetstat, kbdsetstat, nomap,
359 nodev, nulldev, nulldev, 0,
360 nodev },
361
362 { ioplname, ioplopen, ioplclose, nodev,
363 nodev, nodev, nodev, ioplmmap,
364 nodev, nulldev, nulldev, 0,
365 nodev },
366 };
367 int dev_name_count = sizeof(dev_name_list)/sizeof(dev_name_list[0]);
368
369 /*
370 * Indirect list.
371 */
372 struct dev_indirect dev_indirect_list[] = {
373
374 /* console */
375 { "console", &dev_name_list[0], 0 }
376 };
377 int dev_indirect_count = sizeof(dev_indirect_list)
378 / sizeof(dev_indirect_list[0]);
Cache object: bf04be6fd649cf7189f085dcd3b37848
|