1: /*
2: * Copyright (c) 1982, 1986 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)mbareg.h 7.1 (Berkeley) 6/5/86
7: */
8:
9: /*
10: * VAX MASSBUS adapter registers
11: */
12:
13: struct mba_regs
14: {
15: int mba_csr; /* configuration register */
16: int mba_cr; /* control register */
17: int mba_sr; /* status register */
18: int mba_var; /* virtual address register */
19: int mba_bcr; /* byte count register */
20: int mba_dr;
21: int mba_pad1[250];
22: struct mba_drv { /* per drive registers */
23: int mbd_cs1; /* control status */
24: int mbd_ds; /* drive status */
25: int mbd_er1; /* error register */
26: int mbd_mr1; /* maintenance register */
27: int mbd_as; /* attention status */
28: int mbd_da; /* desired address (disks) */
29: #define mbd_fc mbd_da /* frame count (tapes) */
30: int mbd_dt; /* drive type */
31: int mbd_la; /* look ahead (disks) */
32: #define mbd_ck mbd_la /* ??? (tapes) */
33: int mbd_sn; /* serial number */
34: int mbd_of; /* ??? */
35: #define mbd_tc mbd_of /* ??? */
36: int mbd_fill[22];
37: } mba_drv[8];
38: struct pte mba_map[256]; /* io space virtual map */
39: int mba_pad2[256*5]; /* to size of a nexus */
40: };
41:
42: /*
43: * Bits in mba_cr
44: */
45: #define MBCR_INIT 0x1 /* init mba */
46: #define MBCR_IE 0x4 /* enable mba interrupts */
47:
48: /*
49: * Bits in mba_sr
50: */
51: #define MBSR_DTBUSY 0x80000000 /* data transfer busy */
52: #define MBSR_NRCONF 0x40000000 /* no response confirmation */
53: #define MBSR_CRD 0x20000000 /* corrected read data */
54: #define MBSR_CBHUNG 0x00800000 /* control bus hung */
55: #define MBSR_PGE 0x00080000 /* programming error */
56: #define MBSR_NED 0x00040000 /* non-existant drive */
57: #define MBSR_MCPE 0x00020000 /* massbus control parity error */
58: #define MBSR_ATTN 0x00010000 /* attention from massbus */
59: #define MBSR_SPE 0x00004000 /* silo parity error */
60: #define MBSR_DTCMP 0x00002000 /* data transfer completed */
61: #define MBSR_DTABT 0x00001000 /* data transfer aborted */
62: #define MBSR_DLT 0x00000800 /* data late */
63: #define MBSR_WCKUP 0x00000400 /* write check upper */
64: #define MBSR_WCKLWR 0x00000200 /* write check lower */
65: #define MBSR_MXF 0x00000100 /* miss transfer error */
66: #define MBSR_MBEXC 0x00000080 /* massbus exception */
67: #define MBSR_MDPE 0x00000040 /* massbus data parity error */
68: #define MBSR_MAPPE 0x00000020 /* page frame map parity error */
69: #define MBSR_INVMAP 0x00000010 /* invalid map */
70: #define MBSR_ERRCONF 0x00000008 /* error confirmation */
71: #define MBSR_RDS 0x00000004 /* read data substitute */
72: #define MBSR_ISTIMO 0x00000002 /* interface sequence timeout */
73: #define MBSR_RDTIMO 0x00000001 /* read data timeout */
74:
75: #define MBSR_BITS \
76: "\20\40DTBUSY\37NRCONF\36CRD\30CBHUNG\24PGE\23NED\22MCPE\21ATTN\
77: \17SPE\16DTCMP\15DTABT\14DLT\13WCKUP\12WCKLWR\11MXF\10MBEXC\7MDPE\
78: \6MAPPE\5INVMAP\4ERRCONF\3RDS\2ISTIMO\1RDTIMO"
79:
80: #define MBSR_HARD (MBSR_PGE|MBSR_ERRCONF|MBSR_ISTIMO|MBSR_RDTIMO)
81:
82: #define MBSR_EBITS (~(MBSR_DTBUSY|MBSR_CRD|MBSR_ATTN|MBSR_DTCMP))
83:
84: #ifdef KERNEL
85: extern char mbsr_bits[];
86: #endif
87:
88: /*
89: * Commands for mbd_cs1
90: */
91: #define MB_WCOM 0x30
92: #define MB_RCOM 0x38
93: #define MB_GO 0x1
94:
95: /*
96: * Bits in mbd_ds.
97: */
98: #define MBDS_ERR 0x00004000 /* error in drive */
99: #define MBDS_MOL 0x00001000 /* medium on line */
100: #define MBDS_DPR 0x00000100 /* drive present */
101: #define MBDS_DRY 0x00000080 /* drive ready */
102:
103: #define MBDS_DREADY (MBDS_MOL|MBDS_DPR|MBDS_DRY)
104:
105: /*
106: * Bits in mbd_dt
107: */
108: #define MBDT_NSA 0x8000 /* not sector addressible */
109: #define MBDT_TAP 0x4000 /* is a tape */
110: #define MBDT_MOH 0x2000 /* moving head */
111: #define MBDT_7CH 0x1000 /* 7 channel */
112: #define MBDT_DRQ 0x800 /* drive request required */
113: #define MBDT_SPR 0x400 /* slave present */
114:
115: #define MBDT_TYPE 0x1ff
116: #define MBDT_MASK (MBDT_NSA|MBDT_TAP|MBDT_TYPE)
117:
118: /* type codes for disk drives */
119: #define MBDT_RP04 020
120: #define MBDT_RP05 021
121: #define MBDT_RP06 022
122: #define MBDT_RP07 042
123: #define MBDT_RM02 025
124: #define MBDT_RM03 024
125: #define MBDT_RM05 027
126: #define MBDT_RM80 026
127: #define MBDT_ML11A 0110
128: #define MBDT_ML11B 0111
129:
130: /* type codes for tape drives */
131: #define MBDT_TM03 050
132: #define MBDT_TE16 051
133: #define MBDT_TU45 052
134: #define MBDT_TU77 054
135: #define MBDT_TU78 0101
Defined struct's
mba_regs
defined in line
13; used 42 times
- in /usr/src/sys/stand/autoconf.c line
27(2),
39(2)
- in /usr/src/sys/stand/hp.c line
133(2),
337(2)
- in /usr/src/sys/stand/mba.c line
27(2),
93(2),
103(2)
- in /usr/src/sys/stand/mt.c line
75(2)
- in /usr/src/sys/vax/autoconf.c line
384(2),
391-393(4)
- in /usr/src/sys/vaxmba/hp.c line
826(2),
958(2)
- in /usr/src/sys/vaxmba/ht.c line
545(2),
579(2)
- in /usr/src/sys/vaxmba/mba.c line
131(2),
211(2),
398(2),
436(2)
- in /usr/src/sys/vaxmba/mt.c line
965(2),
1003(2)
Defined macros
MB_GO
defined in line
93; used 4 times
Usage of this include