|
|
1.1 ! root 1: /* vbavar.h 4.18 81/03/09 */ ! 2: ! 3: /* ! 4: * This file contains definitions related to the kernel structures ! 5: * for dealing with the Versabus adapters. ! 6: * ! 7: * Each Versabus controller which is not a device has a vba_ctlr structure. ! 8: * Each Versabus device has a vba_device structure. ! 9: */ ! 10: ! 11: ! 12: #ifndef LOCORE ! 13: /* ! 14: * Per-controller structure. ! 15: * (E.g. one for each disk and tape controller, and other things ! 16: * which use and release buffered data paths.) ! 17: * ! 18: * If a controller has devices attached, then there are ! 19: * cross-referenced vba_drive structures. ! 20: * This structure is the one which is queued in Versabus resource wait, ! 21: * and saves the information about Versabus resources which are used. ! 22: * The queue of devices waiting to transfer is also attached here. ! 23: */ ! 24: struct vba_ctlr { ! 25: struct vba_driver *um_driver; ! 26: short um_ctlr; /* controller index in driver */ ! 27: short um_vbanum; /* the vba it is on */ ! 28: short um_alive; /* controller exists */ ! 29: int (**um_intr)(); /* interrupt handler(s) */ ! 30: caddr_t um_addr; /* address of device in i/o space */ ! 31: /* the driver saves the prototype command here for use in its go routine */ ! 32: int um_cmd; /* communication to dgo() */ ! 33: int um_vbinfo; /* save Versabus registers, etc */ ! 34: struct buf um_tab; /* queue of devices for this controller */ ! 35: }; ! 36: ! 37: /* ! 38: * Per ``device'' structure. ! 39: * (A controller has devices or uses and releases buffered data paths). ! 40: * (Everything else is a ``device''.) ! 41: * ! 42: * If a controller has many drives attached, then there will ! 43: * be several vba_device structures associated with a single vba_ctlr ! 44: * structure. ! 45: * ! 46: * This structure contains all the information necessary to run ! 47: * a Versabus device. It also contains information ! 48: * for slaves of Versabus controllers as to which device on the slave ! 49: * this is. A flags field here can also be given in the system specification ! 50: * and is used to tell which vcx lines are hard wired or other device ! 51: * specific parameters. ! 52: */ ! 53: struct vba_device { ! 54: struct vba_driver *ui_driver; ! 55: short ui_unit; /* unit number on the system */ ! 56: short ui_ctlr; /* mass ctlr number; -1 if none */ ! 57: short ui_vbanum; /* the vba it is on */ ! 58: short ui_slave; /* slave on controller */ ! 59: int (**ui_intr)(); /* interrupt handler(s) */ ! 60: caddr_t ui_addr; /* address of device in i/o space */ ! 61: short ui_dk; /* if init 1 set to number for iostat */ ! 62: short ui_flags; /* parameter from system specification */ ! 63: short ui_alive; /* device exists */ ! 64: short ui_type; /* driver specific type information */ ! 65: caddr_t ui_physaddr; /* phys addr, for standalone (dump) code */ ! 66: /* this is the forward link in a list of devices on a controller */ ! 67: struct vba_device *ui_forw; ! 68: /* if the device is connected to a controller, this is the controller */ ! 69: struct vba_ctlr *ui_mi; ! 70: }; ! 71: #endif ! 72: ! 73: /* ! 74: * Per-driver structure. ! 75: * ! 76: * Each Versabus driver defines entries for a set of routines ! 77: * as well as an array of types which are acceptable to it. ! 78: * These are used at boot time by the configuration program. ! 79: */ ! 80: struct vba_driver { ! 81: int (*ud_probe)(); /* see if a driver is really there */ ! 82: int (*ud_slave)(); /* see if a slave is there */ ! 83: int (*ud_attach)(); /* setup driver for a slave */ ! 84: int (*ud_dgo)(); /* fill csr/ba to start transfer */ ! 85: long *ud_addr; /* device csr addresses */ ! 86: char *ud_dname; /* name of a device */ ! 87: struct vba_device **ud_dinfo; /* backpointers to vbdinit structs */ ! 88: char *ud_mname; /* name of a controller */ ! 89: struct vba_ctlr **ud_minfo; /* backpointers to vbminit structs */ ! 90: short ud_xclu; /* want exclusive use of bdp's */ ! 91: }; ! 92: ! 93: /* ! 94: * Flags to VBA map/bdp allocation routines ! 95: */ ! 96: #define VBA_NEEDBDP 1 /* transfer needs a bdp */ ! 97: #define VBA_CANTWAIT 2 /* don't block me */ ! 98: #define VBA_NEED16 3 /* need 16 bit addresses only */ ! 99: ! 100: #define numvba 1 /* number of vba's */ ! 101: #ifndef LOCORE ! 102: #ifdef KERNEL ! 103: /* ! 104: * VBA related kernel variables ! 105: */ ! 106: ! 107: /* ! 108: * Vbminit and vbdinit initialize the mass storage controller and ! 109: * device tables specifying possible devices. ! 110: */ ! 111: extern struct vba_ctlr vbminit[]; ! 112: extern struct vba_device vbdinit[]; ! 113: ! 114: /* ! 115: * Versabus device address space is mapped by VMEMmap ! 116: * into virtual address umem[][]. ! 117: */ ! 118: extern struct pte VMEMmap[]; /* vba device addr pte's */ ! 119: extern char vmem[]; /* vba device addr space */ ! 120: ! 121: #endif KERNEL ! 122: #endif !LOCORE
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.