xref: /original-bsd/sys/vax/mba/mbareg.h (revision 883fb6be)
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) 06/05/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
136