summaryrefslogtreecommitdiff
path: root/sys/arch/pdp10/dev/rhreg.h
blob: 125da88017c51ebf1ce455be759e8274c5efa7e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*	$NetBSD: rhreg.h,v 1.1 2003/08/19 10:51:57 ragge Exp $	*/
/*
 * Copyright (c) 2003 Anders Magnusson (ragge@ludd.luth.se).
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/*
 * RH20 register definitions.
 */

/*
 * Different device codes.
 */
#define	RH_DT_RP04	0x10
#define RH_DT_RP05	0x11
#define RH_DT_RP06	0x12
#define RH_DT_RP07	0x22
#define RH_DT_RM02	0x15
#define RH_DT_RM03	0x14
#define RH_DT_RM05	0x17
#define RH_DT_RM80	0x16
#define	RH_DT_TU45	052
#define	RH_DT_DRQ	0x800		/* Dual ported */
#define	RH_DT_MOH	0x2000		/* Moving head device */

/*
 * Some common registers used in the rh device driver.
 */
#define RH_DS		1		/* unit status */
#define RH_AS		4		/* attention summary */
#define RH_DT		6		/* drive type */
#define	RH_SBAR		070		/* Bus address register */
#define	RH_STCR		071		/* Transfer control register */
#define	RH_IVIR		074		/* Interrupt vector register */

#define RH_DS_DPR	0x100		/* Unit present */
/*
 * Internal register bits.
 */
#define	RH_BAR_ADRMSK	0177777		/* Disk/tape address mask */
#define	RH_TCR_RCLP	0002000000000	/* Reset channel when starting */
#define	RH_TCR_SES	0000200000000	/* Store status after transfer */
#define	RH_TCR_DTES	0000000200000	/* Don't stop if errors */
#define	RH_TCR_NBC	0000000177700	/* Negative block count */
#define RH_TCR_NBCSH	6		/* Block count shift */

/*
 * RH20 register definitions.
 */
#define	RH20_CONI_BPE	0400000		/* Data bus parity error */
#define	RH20_CONI_EXC	0200000		/* Exception */
#define	RH20_CONI_LWE	0100000		/* Long word count error */
#define	RH20_CONI_SWE	0040000		/* Short word count error */
#define	RH20_CONI_MBE	0020000		/* MBOX error */
#define	RH20_CONI_DRE	0010000		/* Drive response error */
#define	RH20_CONI_RAE	0004000		/* Register access error */
#define	RH20_CONI_MBH	0002000		/* MBOX halted */
#define	RH20_CONI_OVR	0001000		/* Data overrun */
#define	RH20_CONI_MEN	0000400		/* Massbus enable */
#define	RH20_CONI_ATN	0000200		/* Drive attention */
#define	RH20_CONI_2RF	0000100		/* Secondary command register full */
#define	RH20_CONI_ATE	0000040		/* Attention enable */
#define	RH20_CONI_1RF	0000020		/* Primary command register full */
#define	RH20_CONI_DON	0000010		/* Channel done */

#define	RH20_CONO_RAE	0004000		/* Clear RAE */
#define	RH20_CONO_RST	0002000		/* Controller reset */
#define	RH20_CONO_XFR	0001000		/* Clear transfer error */
#define	RH20_CONO_MEN	0000400		/* Massbus enable */
#define	RH20_CONO_RCL	0000200		/* Reset MBOX command list pointer */
#define	RH20_CONO_DEL	0000100		/* Delete secondary command */
#define	RH20_CONO_ATE	0000040		/* Enable attention interrupts */
#define	RH20_CONO_STP	0000020		/* Stop current command */
#define	RH20_CONO_DON	0000010		/* Clear done */
#define	RH20_CONO_IMSK	0000007		/* Mask for interrupt level */

#define	RH20_DATAI_CBPE	0001000000000	/* Control bus parity error */
#define	RH20_DATAI_TRA	0000200000000	/* Transfer received */
#define	RH20_DATAI_CPA	0000000200000	/* Massbus parity bit */
#define	RH20_DATAO_RS	0770000000000	/* Register select */
#define	RH20_DATAO_LR	0004000000000	/* Load register */
#define	RH20_DATAO_RAES	0000400000000	/* RAE Suppress */

/*
 * Data channel defines.
 */
#define	DCH_CCL_OFF	0	/* Channel Command List opcode */
#define	DCH_CST_OFF	1	/* Channel Status Word */
#define	DCH_CCW_OFF	2	/* Current Channel Command Word */
#define	DCH_CIV_OFF	3	/* Unused, free for software to use */

#define DCH_CCW_HLT	0000000000000	/* HALT opcode */
#define DCH_CCW_JMP	0200000000000	/* JUMP opcode */
#define DCH_CCW_XFR	0400000000000	/* XFER opcode, plus next 2 bits: */
#define DCH_CCW_XHLT	0200000000000	/* Xfer cmd: "Halt after xfer" */
#define DCH_CCW_XREV	0100000000000	/* Xfer cmd: "Reverse xfer" */
#define DCH_CCW_CNTMSK	0077760000000	/* Word Count (positive) */
#define DCH_CCW_CNTSH	22		/* Word Count shift */
#define DCH_CCW_ADRMSK	0000017777777	/* 22-bit address */

/* Channel Status Word
*/
#define DCH_CSW_SET	0400000000000	/* Always set 1 */
#define DCH_CSW_MPAR	0200000000000	/* Mem Par Err during CCW fetch */
#define DCH_CSW_NOAPE	0100000000000	/* Set if NO mem addr par err */
#define DCH_CSW_NOWC0	0040000000000	/* CCW count NOT 0 when CSW set */
#define DCH_CSW_NXM	0020000000000	/* Chan referenced NXM */
#define DCH_CSW_LXFE	0000400000000	/* Last Transfer Error */
#define DCH_CSW_RH20E	0000200000000	/* RH20 tried to start not-ready chn */
#define DCH_CSW_LWCE	0000100000000	/* Long Word Count Error */
#define DCH_CSW_SWCE	0000040000000	/* Short Word Count Error */
#define DCH_CSW_OVN	0000020000000	/* Overrun */
#define	DCH_CSW_ADRMSK	0000017777777	/* 22-bit CCW addr+1 */