all nonexistent slaves aren't on formatter 0!
[unix-history] / usr / src / sys / vax / mba / mbareg.h
CommitLineData
da7c5cc6 1/*
0880b18e 2 * Copyright (c) 1982, 1986 Regents of the University of California.
da7c5cc6
KM
3 * All rights reserved. The Berkeley software License Agreement
4 * specifies the terms and conditions for redistribution.
5 *
0880b18e 6 * @(#)mbareg.h 7.1 (Berkeley) %G%
da7c5cc6 7 */
3ed87cd4
BJ
8
9/*
4df4b0ef 10 * VAX MASSBUS adapter registers
3ed87cd4
BJ
11 */
12
97fedd9e 13struct mba_regs
4d9e9e73 14{
97fedd9e
BJ
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 */
4d9e9e73 40};
97fedd9e
BJ
41
42/*
43 * Bits in mba_cr
44 */
a0eab615
BJ
45#define MBCR_INIT 0x1 /* init mba */
46#define MBCR_IE 0x4 /* enable mba interrupts */
97fedd9e 47
4d9e9e73 48/*
97fedd9e
BJ
49 * Bits in mba_sr
50 */
a0eab615
BJ
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 */
97fedd9e 74
a0eab615 75#define MBSR_BITS \
4656c503
BJ
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"
c4a6465b 79
a0eab615 80#define MBSR_HARD (MBSR_PGE|MBSR_ERRCONF|MBSR_ISTIMO|MBSR_RDTIMO)
c4a6465b 81
a0eab615 82#define MBSR_EBITS (~(MBSR_DTBUSY|MBSR_CRD|MBSR_ATTN|MBSR_DTCMP))
c4a6465b 83
a0eab615
BJ
84#ifdef KERNEL
85extern char mbsr_bits[];
86#endif
97fedd9e
BJ
87
88/*
89 * Commands for mbd_cs1
90 */
a0eab615
BJ
91#define MB_WCOM 0x30
92#define MB_RCOM 0x38
93#define MB_GO 0x1
97fedd9e
BJ
94
95/*
96 * Bits in mbd_ds.
97 */
a0eab615
BJ
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)
97fedd9e
BJ
104
105/*
106 * Bits in mbd_dt
4d9e9e73
BJ
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
97fedd9e 118/* type codes for disk drives */
4d9e9e73
BJ
119#define MBDT_RP04 020
120#define MBDT_RP05 021
121#define MBDT_RP06 022
122#define MBDT_RP07 042
fc7080e1 123#define MBDT_RM02 025
4d9e9e73
BJ
124#define MBDT_RM03 024
125#define MBDT_RM05 027
126#define MBDT_RM80 026
fba186d2
BJ
127#define MBDT_ML11A 0110
128#define MBDT_ML11B 0111
4d9e9e73 129
97fedd9e 130/* type codes for tape drives */
4d9e9e73
BJ
131#define MBDT_TM03 050
132#define MBDT_TE16 051
133#define MBDT_TU45 052
134#define MBDT_TU77 054
fba186d2 135#define MBDT_TU78 0101