|
|
1.1 ! root 1: /* ! 2: * Mach Operating System ! 3: * Copyright (c) 1993,1992,1991,1990,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 [email protected] ! 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: #ifdef MACH_KERNEL ! 28: #include <mach_ttd.h> ! 29: #include <mach/std_types.h> ! 30: #else /* MACH_KERNEL */ ! 31: #include <cpus.h> ! 32: #include <platforms.h> ! 33: #include <generic.h> ! 34: #include <sys/param.h> ! 35: #include <mach/machine.h> ! 36: #include <machine/cpu.h> ! 37: #endif /* MACH_KERNEL */ ! 38: #ifdef LINUX_DEV ! 39: #include <i386/pic.h> ! 40: #endif ! 41: #include <i386/ipl.h> ! 42: #include <chips/busses.h> ! 43: ! 44: /* initialization typecasts */ ! 45: #define SPL_FIVE (vm_offset_t)SPL5 ! 46: #define SPL_SIX (vm_offset_t)SPL6 ! 47: #define SPL_TTY (vm_offset_t)SPLTTY ! 48: ! 49: ! 50: #include <hd.h> ! 51: #if NHD > 0 ! 52: extern struct bus_driver hddriver; ! 53: extern int hdintr(); ! 54: #endif /* NHD */ ! 55: ! 56: #include <fd.h> ! 57: #if NFD > 0 ! 58: extern struct bus_driver fddriver; ! 59: extern int fdintr(); ! 60: #endif /* NFD */ ! 61: ! 62: #include <aha.h> ! 63: #if NAHA > 0 ! 64: extern struct bus_driver aha_driver; ! 65: extern int aha_intr(); ! 66: #endif /* NAHA */ ! 67: ! 68: #include <eaha.h> ! 69: #if NEAHA > 0 ! 70: extern struct bus_driver eaha_driver; ! 71: extern int eaha_intr(); ! 72: #endif /* NEAHA */ ! 73: ! 74: #include <pc586.h> ! 75: #if NPC586 > 0 ! 76: extern struct bus_driver pcdriver; ! 77: extern int pc586intr(); ! 78: #endif /* NPC586 */ ! 79: ! 80: #include <ne.h> ! 81: #if NNE > 0 ! 82: extern struct bus_driver nedriver; ! 83: extern int neintr(); ! 84: #endif NNE ! 85: ! 86: #include <ns8390.h> ! 87: #if NNS8390 > 0 ! 88: extern struct bus_driver ns8390driver; ! 89: extern int ns8390intr(); ! 90: #endif /* NNS8390 */ ! 91: ! 92: #include <at3c501.h> ! 93: #if NAT3C501 > 0 ! 94: extern struct bus_driver at3c501driver; ! 95: extern int at3c501intr(); ! 96: #endif /* NAT3C501 */ ! 97: ! 98: #include <ul.h> ! 99: #if NUL > 0 ! 100: extern struct bus_driver uldriver; ! 101: extern int ulintr(); ! 102: #endif ! 103: ! 104: #include <wd.h> ! 105: #if NWD > 0 ! 106: extern struct bus_driver wddriver; ! 107: extern int wdintr(); ! 108: #endif ! 109: ! 110: #include <hpp.h> ! 111: #if NHPP > 0 ! 112: extern struct bus_driver hppdriver; ! 113: extern int hppintr(); ! 114: #endif ! 115: ! 116: #include <com.h> ! 117: #if NCOM > 0 ! 118: extern struct bus_driver comdriver; ! 119: extern int comintr(); ! 120: #endif /* NCOM */ ! 121: ! 122: #include <lpr.h> ! 123: #if NLPR > 0 ! 124: extern struct bus_driver lprdriver; ! 125: extern int lprintr(); ! 126: #endif /* NLPR */ ! 127: ! 128: #include <wt.h> ! 129: #if NWT > 0 ! 130: extern struct bus_driver wtdriver; ! 131: extern int wtintr(); ! 132: #endif /* NWT */ ! 133: ! 134: struct bus_ctlr bus_master_init[] = { ! 135: ! 136: /* driver name unit intr address len phys_address ! 137: adaptor alive flags spl pic */ ! 138: ! 139: #ifndef LINUX_DEV ! 140: #if NHD > 0 ! 141: {&hddriver, "hdc", 0, hdintr, 0x1f0, 8, 0x1f0, ! 142: '?', 0, 0, SPL_FIVE, 14}, ! 143: ! 144: {&hddriver, "hdc", 1, hdintr, 0x170, 8, 0x170, ! 145: '?', 0, 0, SPL_FIVE, 15}, ! 146: #endif /* NHD > 0 */ ! 147: ! 148: #if NAHA > 0 ! 149: {&aha_driver, "ahac", 0, aha_intr, 0x330, 4, 0x330, ! 150: '?', 0, 0, SPL_FIVE, 11}, ! 151: ! 152: #if NAHA > 1 ! 153: ! 154: {&aha_driver, "ahac", 1, aha_intr, 0x234, 4, 0x234, ! 155: '?', 0, 0, SPL_FIVE, 12}, ! 156: {&aha_driver, "ahac", 1, aha_intr, 0x230, 4, 0x230, ! 157: '?', 0, 0, SPL_FIVE, 12}, ! 158: {&aha_driver, "ahac", 1, aha_intr, 0x134, 4, 0x134, ! 159: '?', 0, 0, SPL_FIVE, 12}, ! 160: {&aha_driver, "ahac", 1, aha_intr, 0x130, 4, 0x130, ! 161: '?', 0, 0, SPL_FIVE, 12}, ! 162: ! 163: #else ! 164: ! 165: {&aha_driver, "ahac", 0, aha_intr, 0x334, 4, 0x334, ! 166: '?', 0, 0, SPL_FIVE, 11}, ! 167: {&aha_driver, "ahac", 0, aha_intr, 0x234, 4, 0x234, ! 168: '?', 0, 0, SPL_FIVE, 11}, ! 169: {&aha_driver, "ahac", 0, aha_intr, 0x230, 4, 0x230, ! 170: '?', 0, 0, SPL_FIVE, 11}, ! 171: {&aha_driver, "ahac", 0, aha_intr, 0x134, 4, 0x134, ! 172: '?', 0, 0, SPL_FIVE, 11}, ! 173: {&aha_driver, "ahac", 0, aha_intr, 0x130, 4, 0x130, ! 174: '?', 0, 0, SPL_FIVE, 11}, ! 175: ! 176: #endif /* NAHA > 1 */ ! 177: #endif /* NAHA > 0*/ ! 178: ! 179: #if NEAHA > 0 ! 180: {&eaha_driver, "eahac", 0, eaha_intr, 0x0000, 4, 0x0000, ! 181: '?', 0, 0, SPL_FIVE, 12}, ! 182: {&eaha_driver, "eahac", 0, eaha_intr, 0x1000, 4, 0x1000, ! 183: '?', 0, 0, SPL_FIVE, 12}, ! 184: {&eaha_driver, "eahac", 0, eaha_intr, 0x2000, 4, 0x2000, ! 185: '?', 0, 0, SPL_FIVE, 12}, ! 186: {&eaha_driver, "eahac", 0, eaha_intr, 0x3000, 4, 0x3000, ! 187: '?', 0, 0, SPL_FIVE, 12}, ! 188: {&eaha_driver, "eahac", 0, eaha_intr, 0x4000, 4, 0x4000, ! 189: '?', 0, 0, SPL_FIVE, 12}, ! 190: {&eaha_driver, "eahac", 0, eaha_intr, 0x5000, 4, 0x5000, ! 191: '?', 0, 0, SPL_FIVE, 12}, ! 192: {&eaha_driver, "eahac", 0, eaha_intr, 0x6000, 4, 0x6000, ! 193: '?', 0, 0, SPL_FIVE, 12}, ! 194: {&eaha_driver, "eahac", 0, eaha_intr, 0x7000, 4, 0x7000, ! 195: '?', 0, 0, SPL_FIVE, 12}, ! 196: {&eaha_driver, "eahac", 0, eaha_intr, 0x8000, 4, 0x8000, ! 197: '?', 0, 0, SPL_FIVE, 12}, ! 198: {&eaha_driver, "eahac", 0, eaha_intr, 0x9000, 4, 0x9000, ! 199: '?', 0, 0, SPL_FIVE, 12}, ! 200: {&eaha_driver, "eahac", 0, eaha_intr, 0xa000, 4, 0xa000, ! 201: '?', 0, 0, SPL_FIVE, 12}, ! 202: {&eaha_driver, "eahac", 0, eaha_intr, 0xb000, 4, 0xb000, ! 203: '?', 0, 0, SPL_FIVE, 12}, ! 204: {&eaha_driver, "eahac", 0, eaha_intr, 0xc000, 4, 0xc000, ! 205: '?', 0, 0, SPL_FIVE, 12}, ! 206: {&eaha_driver, "eahac", 0, eaha_intr, 0xd000, 4, 0xd000, ! 207: '?', 0, 0, SPL_FIVE, 12}, ! 208: {&eaha_driver, "eahac", 0, eaha_intr, 0xe000, 4, 0xe000, ! 209: '?', 0, 0, SPL_FIVE, 12}, ! 210: {&eaha_driver, "eahac", 0, eaha_intr, 0xf000, 4, 0xf000, ! 211: '?', 0, 0, SPL_FIVE, 12}, ! 212: #endif /* NEAHA > 0 */ ! 213: ! 214: #if NFD > 0 ! 215: {&fddriver, "fdc", 0, fdintr, 0x3f2, 6, 0x3f2, ! 216: '?', 0, 0, SPL_FIVE, 6}, ! 217: ! 218: {&fddriver, "fdc", 1, fdintr, 0x372, 6, 0x372, ! 219: '?', 0, 0, SPL_FIVE, 10}, ! 220: #endif /* NFD > 0 */ ! 221: #endif /* ! LINUX_DEV */ ! 222: ! 223: 0 ! 224: }; ! 225: ! 226: ! 227: struct bus_device bus_device_init[] = { ! 228: ! 229: /* driver name unit intr address am phys_address ! 230: adaptor alive ctlr slave flags *mi *next sysdep sysdep */ ! 231: ! 232: #ifndef LINUX_DEV ! 233: #if NHD > 0 ! 234: {&hddriver, "hd", 0, hdintr, 0x104, 8, 0x1f0, ! 235: '?', 0, 0, 0, 0, 0, 0, SPL_FIVE, 14}, ! 236: {&hddriver, "hd", 1, hdintr, 0x118, 8, 0x1f0, ! 237: '?', 0, 0, 1, 0, 0, 0, SPL_FIVE, 14}, ! 238: {&hddriver, "hd", 2, hdintr, 0x104, 8, 0x170, /*??*/ ! 239: '?', 0, 1, 0, 0, 0, 0, SPL_FIVE, 15}, ! 240: {&hddriver, "hd", 3, hdintr, 0x118, 8, 0x170, ! 241: '?', 0, 1, 1, 0, 0, 0, SPL_FIVE, 15}, ! 242: #endif /* NHD > 0 */ ! 243: ! 244: #if NAHA > 0 ! 245: { &aha_driver, "rz", 0, 0, 0x0,0, 0, '?', 0, 0, 0, 0, }, ! 246: { &aha_driver, "rz", 1, 0, 0x0,0, 0, '?', 0, 0, 1, 0, }, ! 247: { &aha_driver, "rz", 2, 0, 0x0,0, 0, '?', 0, 0, 2, 0, }, ! 248: { &aha_driver, "rz", 3, 0, 0x0,0, 0, '?', 0, 0, 3, 0, }, ! 249: { &aha_driver, "rz", 4, 0, 0x0,0, 0, '?', 0, 0, 4, 0, }, ! 250: { &aha_driver, "rz", 5, 0, 0x0,0, 0, '?', 0, 0, 5, 0, }, ! 251: { &aha_driver, "rz", 6, 0, 0x0,0, 0, '?', 0, 0, 6, 0, }, ! 252: { &aha_driver, "rz", 7, 0, 0x0,0, 0, '?', 0, 0, 7, 0, }, ! 253: ! 254: { &aha_driver, "tz", 0, 0, 0x0,0, 0, '?', 0, 0, 0, 0, }, ! 255: { &aha_driver, "tz", 1, 0, 0x0,0, 0, '?', 0, 0, 1, 0, }, ! 256: { &aha_driver, "tz", 2, 0, 0x0,0, 0, '?', 0, 0, 2, 0, }, ! 257: { &aha_driver, "tz", 3, 0, 0x0,0, 0, '?', 0, 0, 3, 0, }, ! 258: { &aha_driver, "tz", 4, 0, 0x0,0, 0, '?', 0, 0, 4, 0, }, ! 259: { &aha_driver, "tz", 5, 0, 0x0,0, 0, '?', 0, 0, 5, 0, }, ! 260: { &aha_driver, "tz", 6, 0, 0x0,0, 0, '?', 0, 0, 6, 0, }, ! 261: { &aha_driver, "tz", 7, 0, 0x0,0, 0, '?', 0, 0, 7, 0, }, ! 262: ! 263: #if NAHA > 1 ! 264: ! 265: { &aha_driver, "rz", 8, 0, 0x0,0, 0, '?', 0, 1, 0, 0, }, ! 266: { &aha_driver, "rz", 9, 0, 0x0,0, 0, '?', 0, 1, 1, 0, }, ! 267: { &aha_driver, "rz", 10, 0, 0x0,0, 0, '?', 0, 1, 2, 0, }, ! 268: { &aha_driver, "rz", 11, 0, 0x0,0, 0, '?', 0, 1, 3, 0, }, ! 269: { &aha_driver, "rz", 12, 0, 0x0,0, 0, '?', 0, 1, 4, 0, }, ! 270: { &aha_driver, "rz", 13, 0, 0x0,0, 0, '?', 0, 1, 5, 0, }, ! 271: { &aha_driver, "rz", 14, 0, 0x0,0, 0, '?', 0, 1, 6, 0, }, ! 272: { &aha_driver, "rz", 15, 0, 0x0,0, 0, '?', 0, 1, 7, 0, }, ! 273: ! 274: { &aha_driver, "tz", 8, 0, 0x0,0, 0, '?', 0, 1, 0, 0, }, ! 275: { &aha_driver, "tz", 9, 0, 0x0,0, 0, '?', 0, 1, 1, 0, }, ! 276: { &aha_driver, "tz", 10, 0, 0x0,0, 0, '?', 0, 1, 2, 0, }, ! 277: { &aha_driver, "tz", 11, 0, 0x0,0, 0, '?', 0, 1, 3, 0, }, ! 278: { &aha_driver, "tz", 12, 0, 0x0,0, 0, '?', 0, 1, 4, 0, }, ! 279: { &aha_driver, "tz", 13, 0, 0x0,0, 0, '?', 0, 1, 5, 0, }, ! 280: { &aha_driver, "tz", 14, 0, 0x0,0, 0, '?', 0, 1, 6, 0, }, ! 281: { &aha_driver, "tz", 15, 0, 0x0,0, 0, '?', 0, 1, 7, 0, }, ! 282: #endif /* NAHA > 1 */ ! 283: #endif /* NAHA > 0 */ ! 284: ! 285: #if NEAHA > 0 ! 286: { &eaha_driver, "rz", 0, 0, 0x0,0, 0, '?', 0, 0, 0, 0, }, ! 287: { &eaha_driver, "rz", 1, 0, 0x0,0, 0, '?', 0, 0, 1, 0, }, ! 288: { &eaha_driver, "rz", 2, 0, 0x0,0, 0, '?', 0, 0, 2, 0, }, ! 289: { &eaha_driver, "rz", 3, 0, 0x0,0, 0, '?', 0, 0, 3, 0, }, ! 290: { &eaha_driver, "rz", 4, 0, 0x0,0, 0, '?', 0, 0, 4, 0, }, ! 291: { &eaha_driver, "rz", 5, 0, 0x0,0, 0, '?', 0, 0, 5, 0, }, ! 292: { &eaha_driver, "rz", 6, 0, 0x0,0, 0, '?', 0, 0, 6, 0, }, ! 293: { &eaha_driver, "rz", 7, 0, 0x0,0, 0, '?', 0, 0, 7, 0, }, ! 294: ! 295: { &eaha_driver, "tz", 0, 0, 0x0,0, 0, '?', 0, 0, 0, 0, }, ! 296: { &eaha_driver, "tz", 1, 0, 0x0,0, 0, '?', 0, 0, 1, 0, }, ! 297: { &eaha_driver, "tz", 2, 0, 0x0,0, 0, '?', 0, 0, 2, 0, }, ! 298: { &eaha_driver, "tz", 3, 0, 0x0,0, 0, '?', 0, 0, 3, 0, }, ! 299: { &eaha_driver, "tz", 4, 0, 0x0,0, 0, '?', 0, 0, 4, 0, }, ! 300: { &eaha_driver, "tz", 5, 0, 0x0,0, 0, '?', 0, 0, 5, 0, }, ! 301: { &eaha_driver, "tz", 6, 0, 0x0,0, 0, '?', 0, 0, 6, 0, }, ! 302: { &eaha_driver, "tz", 7, 0, 0x0,0, 0, '?', 0, 0, 7, 0, }, ! 303: #endif /* NEAHA > 0*/ ! 304: ! 305: #if NFD > 0 ! 306: {&fddriver, "fd", 0, fdintr, 0x3f2, 6, 0x3f2, ! 307: '?', 0, 0, 0, 0, 0, 0, SPL_FIVE, 6}, ! 308: {&fddriver, "fd", 1, fdintr, 0x3f2, 6, 0x3f2, ! 309: '?', 0, 0, 1, 0, 0, 0, SPL_FIVE, 6}, ! 310: ! 311: {&fddriver, "fd", 2, fdintr, 0x372, 6, 0x372, ! 312: '?', 0, 1, 0, 0, 0, 0, SPL_FIVE, 10}, ! 313: {&fddriver, "fd", 3, fdintr, 0x372, 6, 0x372, ! 314: '?', 0, 1, 1, 0, 0, 0, SPL_FIVE, 10}, ! 315: #endif /* NFD > 0 */ ! 316: ! 317: #if NPC586 > 0 ! 318: /* For MACH Default */ ! 319: {&pcdriver, "pc", 0, pc586intr, 0xd0000, 0, 0xd0000, ! 320: '?', 0, -1, -1, 0, 0, 0, SPL_FIVE, 9}, ! 321: /* For Factory Default */ ! 322: {&pcdriver, "pc", 0, pc586intr, 0xc0000, 0, 0xc0000, ! 323: '?', 0, -1, -1, 0, 0, 0, SPL_FIVE, 5}, ! 324: /* For what Intel Ships */ ! 325: {&pcdriver, "pc", 0, pc586intr, 0xf00000, 0, 0xf00000, ! 326: '?', 0, -1, -1, 0, 0, 0, SPL_FIVE, 12}, ! 327: #endif /* NPC586 > 0 */ ! 328: ! 329: #if NNE > 0 ! 330: {&nedriver, "ne", 0, neintr, 0x280,0x4000,0xd0000, ! 331: '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 5}, ! 332: {&nedriver, "ne", 1, neintr, 0x300,0x4000,0xd0000, ! 333: '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 10}, ! 334: #endif NNE > 0 ! 335: ! 336: #if NNS8390 > 0 ! 337: /* "wd" and "el" */ ! 338: {&ns8390driver, "wd", 0, ns8390intr, 0x280,0x2000,0xd0000, ! 339: '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 9}, ! 340: {&ns8390driver, "wd", 0, ns8390intr, 0x2a0,0x2000,0xd0000, ! 341: '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 9}, ! 342: {&ns8390driver, "wd", 0, ns8390intr, 0x2e0,0x2000,0xd0000, ! 343: '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 5}, ! 344: {&ns8390driver, "wd", 0, ns8390intr, 0x300,0x2000,0xd0000, ! 345: '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 5}, ! 346: {&ns8390driver, "wd", 0, ns8390intr, 0x250,0x2000,0xd0000, ! 347: '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 5}, ! 348: {&ns8390driver, "wd", 0, ns8390intr, 0x350,0x2000,0xd0000, ! 349: '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 5}, ! 350: {&ns8390driver, "wd", 0, ns8390intr, 0x240,0x2000,0xd0000, ! 351: '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 11}, ! 352: {&ns8390driver, "wd", 1, ns8390intr, 0x340,0x2000,0xe8000, ! 353: '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 15}, ! 354: #endif /* NNS8390 > 0 */ ! 355: ! 356: #if NAT3C501 > 0 ! 357: {&at3c501driver, "et", 0, at3c501intr, 0x300, 0,0x300, ! 358: '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 9}, ! 359: #endif /* NAT3C501 > 0 */ ! 360: ! 361: #if NUL > 0 ! 362: {&uldriver, "ul", 0, ulintr, 0, 0, 0, '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 0}, ! 363: {&uldriver, "ul", 1, ulintr, 0, 0, 0, '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 0}, ! 364: #endif ! 365: ! 366: #if NWD > 0 ! 367: {&wddriver, "wd", 0, wdintr, 0, 0, 0, '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 9}, ! 368: {&wddriver, "wd", 1, wdintr, 0, 0, 0, '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 15}, ! 369: #endif ! 370: ! 371: #if NHPP > 0 ! 372: {&hppdriver, "hpp", 0, hppintr, 0, 0, 0, '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 0}, ! 373: {&hppdriver, "hpp", 1, hppintr, 0, 0, 0, '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 0}, ! 374: #endif ! 375: #endif /* ! LINUX_DEV */ ! 376: ! 377: #if NCOM > 0 ! 378: {&comdriver, "com", 0, comintr, 0x3f8, 8, 0x3f8, ! 379: '?', 0, -1, -1, 0, 0, 0, SPL_TTY, 4}, ! 380: {&comdriver, "com", 1, comintr, 0x2f8, 8, 0x2f8, ! 381: '?', 0, -1, -1, 0, 0, 0, SPL_TTY, 3}, ! 382: {&comdriver, "com", 2, comintr, 0x3e8, 8, 0x3e8, ! 383: '?', 0, -1, -1, 0, 0, 0, SPL_TTY, 5}, ! 384: #endif /* NCOM > 0 */ ! 385: ! 386: #ifndef LINUX_DEV ! 387: #if NLPR > 0 ! 388: {&lprdriver, "lpr", 0, lprintr, 0x378, 3, 0x378, ! 389: '?', 0, -1, -1, 0, 0, 0, SPL_TTY, 7}, ! 390: {&lprdriver, "lpr", 0, lprintr, 0x278, 3, 0x278, ! 391: '?', 0, -1, -1, 0, 0, 0, SPL_TTY, 7}, ! 392: {&lprdriver, "lpr", 0, lprintr, 0x3bc, 3, 0x3bc, ! 393: '?', 0, -1, -1, 0, 0, 0, SPL_TTY, 7}, ! 394: #endif /* NLPR > 0 */ ! 395: ! 396: #if NWT > 0 ! 397: {&wtdriver, "wt", 0, wtintr, 0x300, 2, 0x300, ! 398: '?', 0, -1, -1, 0, 0, 0, SPL_FIVE, 5}, ! 399: {&wtdriver, "wt", 0, wtintr, 0x288, 2, 0x288, ! 400: '?', 0, -1, -1, 0, 0, 0, SPL_FIVE, 5}, ! 401: {&wtdriver, "wt", 0, wtintr, 0x388, 2, 0x388, ! 402: '?', 0, -1, -1, 0, 0, 0, SPL_FIVE, 5}, ! 403: #endif /* NWT > 0 */ ! 404: #endif /* ! LINUX_DEV */ ! 405: ! 406: 0 ! 407: }; ! 408: ! 409: /* ! 410: * probeio: ! 411: * ! 412: * Probe and subsequently attach devices out on the AT bus. ! 413: * ! 414: * ! 415: */ ! 416: void probeio(void) ! 417: { ! 418: register struct bus_device *device; ! 419: register struct bus_ctlr *master; ! 420: int i = 0; ! 421: ! 422: for (master = bus_master_init; master->driver; master++) ! 423: { ! 424: if (configure_bus_master(master->name, master->address, ! 425: master->phys_address, i, "atbus")) ! 426: i++; ! 427: } ! 428: ! 429: for (device = bus_device_init; device->driver; device++) ! 430: { ! 431: /* ignore what we (should) have found already */ ! 432: if (device->alive || device->ctlr >= 0) ! 433: continue; ! 434: if (configure_bus_device(device->name, device->address, ! 435: device->phys_address, i, "atbus")) ! 436: i++; ! 437: } ! 438: ! 439: #if MACH_TTD ! 440: /* ! 441: * Initialize Remote kernel debugger. ! 442: */ ! 443: ttd_init(); ! 444: #endif /* MACH_TTD */ ! 445: } ! 446: ! 447: void take_dev_irq( ! 448: struct bus_device *dev) ! 449: { ! 450: int pic = (int)dev->sysdep1; ! 451: ! 452: if (intpri[pic] == 0) { ! 453: iunit[pic] = dev->unit; ! 454: ivect[pic] = dev->intr; ! 455: intpri[pic] = (int)dev->sysdep; ! 456: form_pic_mask(); ! 457: } else { ! 458: printf("The device below will clobber IRQ %d.\n", pic); ! 459: printf("You have two devices at the same IRQ.\n"); ! 460: printf("This won't work. Reconfigure your hardware and try again.\n"); ! 461: printf("%s%d: port = %x, spl = %d, pic = %d.\n", ! 462: dev->name, dev->unit, dev->address, ! 463: dev->sysdep, dev->sysdep1); ! 464: while (1); ! 465: } ! 466: ! 467: } ! 468: ! 469: void take_ctlr_irq( ! 470: struct bus_ctlr *ctlr) ! 471: { ! 472: int pic = ctlr->sysdep1; ! 473: if (intpri[pic] == 0) { ! 474: iunit[pic] = ctlr->unit; ! 475: ivect[pic] = ctlr->intr; ! 476: intpri[pic] = (int)ctlr->sysdep; ! 477: form_pic_mask(); ! 478: } else { ! 479: printf("The device below will clobber IRQ %d.\n", pic); ! 480: printf("You have two devices at the same IRQ. This won't work.\n"); ! 481: printf("Reconfigure your hardware and try again.\n"); ! 482: while (1); ! 483: } ! 484: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.