summaryrefslogtreecommitdiff
path: root/i386/i386at/conf.c
diff options
context:
space:
mode:
authorThomas Bushnell <thomas@gnu.org>1997-02-25 21:28:37 +0000
committerThomas Bushnell <thomas@gnu.org>1997-02-25 21:28:37 +0000
commitf07a4c844da9f0ecae5bbee1ab94be56505f26f7 (patch)
tree12b07c7e578fc1a5f53dbfde2632408491ff2a70 /i386/i386at/conf.c
Initial source
Diffstat (limited to 'i386/i386at/conf.c')
-rw-r--r--i386/i386at/conf.c399
1 files changed, 399 insertions, 0 deletions
diff --git a/i386/i386at/conf.c b/i386/i386at/conf.c
new file mode 100644
index 0000000..2bd2d2a
--- /dev/null
+++ b/i386/i386at/conf.c
@@ -0,0 +1,399 @@
+/*
+ * Mach Operating System
+ * Copyright (c) 1993-1989 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ * Device switch for i386 AT bus.
+ */
+
+#include <mach/machine/vm_types.h>
+#include <device/conf.h>
+
+extern vm_offset_t block_io_mmap();
+
+extern int timeopen(), timeclose();
+extern vm_offset_t timemmap();
+#define timename "time"
+
+#include <hd.h>
+#if NHD > 0
+extern int hdopen(), hdclose(), hdread(), hdwrite();
+extern int hdgetstat(), hdsetstat(), hddevinfo();
+#define hdname "hd"
+
+#if 0
+extern int pchdopen(),pchdread(),pchdwrite(),pchdgetstat(),pchdsetstat();
+#define pchdname "pchd"
+#endif
+
+#endif NHD > 0
+
+#include <aha.h>
+#if NAHA > 0
+int rz_open(), rz_close(), rz_read(), rz_write();
+int rz_get_status(), rz_set_status(), rz_devinfo();
+int cd_open(), cd_close(), cd_read(), cd_write();
+#define rzname "sd"
+#define tzname "st"
+#define scname "sc" /* processors */
+#define cdname "cd_audio" /* CD-ROM DA */
+
+#endif /*NAHA > 0*/
+
+#include <fd.h>
+#if NFD > 0
+extern int fdopen(), fdclose(), fdread(), fdwrite();
+extern int fdgetstat(), fdsetstat(), fddevinfo();
+#define fdname "fd"
+#endif NFD > 0
+
+#include <wt.h>
+#if NWT > 0
+extern int wtopen(), wtread(), wtwrite(), wtclose();
+#define wtname "wt"
+#endif NWT > 0
+
+#include <pc586.h>
+#if NPC586 > 0
+extern int pc586open(), pc586output(), pc586getstat(), pc586setstat(),
+ pc586setinput();
+#define pc586name "pc"
+#endif NPC586 > 0
+
+#include <ne.h>
+#if NNE > 0
+extern int neopen(), neoutput(), negetstat(), nesetstat(), nesetinput();
+#ifdef FIPC
+extern int nefoutput();
+#endif /* FIPC */
+#define nename "ne"
+#endif NNE > 0
+
+#include <ns8390.h>
+#if NNS8390 > 0
+extern int wd8003open(), eliiopen();
+extern int ns8390output(), ns8390getstat(), ns8390setstat(),
+ ns8390setinput();
+#define ns8390wdname "wd"
+#define ns8390elname "el"
+#endif NNS8390 > 0
+
+#include <at3c501.h>
+#if NAT3C501 > 0
+extern int at3c501open(), at3c501output(),
+ at3c501getstat(), at3c501setstat(),
+ at3c501setinput();
+#define at3c501name "et"
+#endif NAT3C501 > 0
+
+#include <ul.h>
+#if NUL > 0
+extern int ulopen(), uloutput(), ulgetstat(), ulsetstat(),
+ ulsetinput();
+#define ulname "ul"
+#endif NUL > 0
+
+#include <wd.h>
+#if NWD > 0
+extern int wdopen(), wdoutput(), wdgetstat(), wdsetstat(),
+ wdsetinput();
+#define wdname "wd"
+#endif NWD > 0
+
+#include <hpp.h>
+#if NHPP > 0
+extern int hppopen(), hppoutput(), hppgetstat(), hppsetstat(),
+ hppsetinput();
+#define hppname "hpp"
+#endif /* NHPP > 0 */
+
+#include <par.h>
+#if NPAR > 0
+extern int paropen(), paroutput(), pargetstat(), parsetstat(),
+ parsetinput();
+#define parname "par"
+#endif NPAR > 0
+
+#include <de6c.h>
+#if NDE6C > 0
+extern int de6copen(), de6coutput(), de6cgetstat(), de6csetstat(),
+ de6csetinput();
+#define de6cname "de"
+#endif NDE6C > 0
+
+extern int kdopen(), kdclose(), kdread(), kdwrite();
+extern int kdgetstat(), kdsetstat(), kdportdeath();
+extern vm_offset_t kdmmap();
+#define kdname "kd"
+
+#include <com.h>
+#if NCOM > 0
+extern int comopen(), comclose(), comread(), comwrite();
+extern int comgetstat(), comsetstat(), comportdeath();
+#define comname "com"
+#endif NCOM > 0
+
+#include <lpr.h>
+#if NLPR > 0
+extern int lpropen(), lprclose(), lprread(), lprwrite();
+extern int lprgetstat(), lprsetstat(), lprportdeath();
+#define lprname "lpr"
+#endif NLPR > 0
+
+#include <blit.h>
+#if NBLIT > 0
+extern int blitopen(), blitclose(), blit_get_stat();
+extern vm_offset_t blitmmap();
+#define blitname "blit"
+
+extern int mouseinit(), mouseopen(), mouseclose();
+extern int mouseioctl(), mouseselect(), mouseread();
+#endif
+
+extern int kbdopen(), kbdclose(), kbdread();
+extern int kbdgetstat(), kbdsetstat();
+#define kbdname "kbd"
+
+extern int mouseopen(), mouseclose(), mouseread();
+#define mousename "mouse"
+
+extern int ioplopen(), ioplclose();
+extern vm_offset_t ioplmmap();
+#define ioplname "iopl"
+
+/*
+ * List of devices - console must be at slot 0
+ */
+struct dev_ops dev_name_list[] =
+{
+ /*name, open, close, read,
+ write, getstat, setstat, mmap,
+ async_in, reset, port_death, subdev,
+ dev_info */
+
+ /* We don't assign a console here, when we find one via
+ cninit() we stick something appropriate here through the
+ indirect list */
+ { "cn", nulldev, nulldev, nulldev,
+ nulldev, nulldev, nulldev, nulldev,
+ nodev, nulldev, nulldev, 0,
+ nodev },
+
+ { kdname, kdopen, kdclose, kdread,
+ kdwrite, kdgetstat, kdsetstat, kdmmap,
+ nodev, nulldev, kdportdeath, 0,
+ nodev },
+
+ { timename, timeopen, timeclose, nulldev,
+ nulldev, nulldev, nulldev, timemmap,
+ nodev, nulldev, nulldev, 0,
+ nodev },
+
+#ifndef LINUX_DEV
+#if NHD > 0
+ { hdname, hdopen, hdclose, hdread,
+ hdwrite, hdgetstat, hdsetstat, nomap,
+ nodev, nulldev, nulldev, 1024,
+ hddevinfo },
+#endif NHD > 0
+
+#if NAHA > 0
+ { rzname, rz_open, rz_close, rz_read,
+ rz_write, rz_get_status, rz_set_status, nomap,
+ nodev, nulldev, nulldev, 1024, /* 8 */
+ rz_devinfo },
+
+ { tzname, rz_open, rz_close, rz_read,
+ rz_write, rz_get_status, rz_set_status, nomap,
+ nodev, nulldev, nulldev, 8,
+ nodev },
+
+ { cdname, cd_open, cd_close, cd_read,
+ cd_write, nodev, nodev, nomap,
+ nodev, nulldev, nulldev, 8,
+ nodev },
+
+ { scname, rz_open, rz_close, rz_read,
+ rz_write, rz_get_status, rz_set_status, nomap,
+ nodev, nulldev, nulldev, 8,
+ nodev },
+
+#endif /*NAHA > 0*/
+
+#if NFD > 0
+ { fdname, fdopen, fdclose, fdread,
+ fdwrite, fdgetstat, fdsetstat, nomap,
+ nodev, nulldev, nulldev, 64,
+ fddevinfo },
+#endif NFD > 0
+
+#if NWT > 0
+ { wtname, wtopen, wtclose, wtread,
+ wtwrite, nulldev, nulldev, nomap,
+ nodev, nulldev, nulldev, 0,
+ nodev },
+#endif NWT > 0
+
+#if NPC586 > 0
+ { pc586name, pc586open, nulldev, nulldev,
+ pc586output, pc586getstat, pc586setstat, nomap,
+ pc586setinput,nulldev, nulldev, 0,
+ nodev },
+#endif
+
+#if NNE > 0
+ { nename, neopen, nulldev, nulldev,
+ neoutput, negetstat, nesetstat, nulldev,
+#ifdef FIPC
+ nesetinput, nulldev, nefoutput, 0,
+#else
+ nesetinput, nulldev, nulldev, 0,
+#endif /* FIPC */
+ nodev },
+#endif
+
+#if NAT3C501 > 0
+ { at3c501name, at3c501open, nulldev, nulldev,
+ at3c501output,at3c501getstat, at3c501setstat, nomap,
+ at3c501setinput, nulldev, nulldev, 0,
+ nodev },
+#endif
+
+#if NNS8390 > 0
+ { ns8390wdname, wd8003open, nulldev, nulldev,
+ ns8390output, ns8390getstat, ns8390setstat, nomap,
+ ns8390setinput, nulldev, nulldev, 0,
+ nodev },
+
+ { ns8390elname, eliiopen, nulldev, nulldev,
+ ns8390output, ns8390getstat, ns8390setstat, nomap,
+ ns8390setinput, nulldev, nulldev, 0,
+ nodev },
+#endif
+
+#if NUL > 0
+ { ulname, ulopen, nulldev, nulldev,
+ uloutput, ulgetstat, ulsetstat, nulldev,
+ ulsetinput, nulldev, nulldev, 0,
+ nodev },
+#endif
+
+#if NWD > 0
+ { wdname, wdopen, nulldev, nulldev,
+ wdoutput, wdgetstat, wdsetstat, nulldev,
+ wdsetinput, nulldev, nulldev, 0,
+ nodev },
+#endif
+
+#if NHPP > 0
+ { hppname, hppopen, nulldev, nulldev,
+ hppoutput, hppgetstat, hppsetstat, nulldev,
+ hppsetinput, nulldev, nulldev, 0,
+ nodev },
+#endif
+
+#if NPAR > 0
+ { parname, paropen, nulldev, nulldev,
+ paroutput, pargetstat, parsetstat, nomap,
+ parsetinput, nulldev, nulldev, 0,
+ nodev },
+#endif
+
+#if NDE6C > 0
+ { de6cname, de6copen, nulldev, nulldev,
+ de6coutput, de6cgetstat, de6csetstat, nomap,
+ de6csetinput, nulldev, nulldev, 0,
+ nodev },
+#endif
+#endif /* ! LINUX_DEV */
+
+#if NCOM > 0
+ { comname, comopen, comclose, comread,
+ comwrite, comgetstat, comsetstat, nomap,
+ nodev, nulldev, comportdeath, 0,
+ nodev },
+#endif
+
+#ifndef LINUX_DEV
+#if NLPR > 0
+ { lprname, lpropen, lprclose, lprread,
+ lprwrite, lprgetstat, lprsetstat, nomap,
+ nodev, nulldev, lprportdeath, 0,
+ nodev },
+#endif
+#endif /* ! LINUX_DEV */
+
+#if NBLIT > 0
+ { blitname, blitopen, blitclose, nodev,
+ nodev, blit_get_stat, nodev, blitmmap,
+ nodev, nodev, nodev, 0,
+ nodev },
+#endif
+
+ { mousename, mouseopen, mouseclose, mouseread,
+ nodev, nulldev, nulldev, nomap,
+ nodev, nulldev, nulldev, 0,
+ nodev },
+
+ { kbdname, kbdopen, kbdclose, kbdread,
+ nodev, kbdgetstat, kbdsetstat, nomap,
+ nodev, nulldev, nulldev, 0,
+ nodev },
+
+ { ioplname, ioplopen, ioplclose, nodev,
+ nodev, nodev, nodev, ioplmmap,
+ nodev, nulldev, nulldev, 0,
+ nodev },
+
+#if 0
+#if NHD > 0
+ { pchdname, pchdopen, hdclose, pchdread,
+ pchdwrite, pchdgetstat, pchdsetstat, nomap,
+ nodev, nulldev, nulldev, 16,
+ hddevinfo },
+#endif NHD > 0
+#endif
+
+#if 0
+#if NHD > 0
+ { hdname, hdopen, hdclose, hdread,
+ hdwrite, hdgetstat, hdsetstat, nomap,
+ nodev, nulldev, nulldev, 16,
+ hddevinfo },
+#endif NHD > 0
+#endif 0 /* Kevin doesn't know why this was here. */
+
+};
+int dev_name_count = sizeof(dev_name_list)/sizeof(dev_name_list[0]);
+
+/*
+ * Indirect list.
+ */
+struct dev_indirect dev_indirect_list[] = {
+
+ /* console */
+ { "console", &dev_name_list[0], 0 }
+};
+int dev_indirect_count = sizeof(dev_indirect_list)
+ / sizeof(dev_indirect_list[0]);