summaryrefslogtreecommitdiff
path: root/sys/arch/vax/include/ka88.h
blob: 17578d605522963333a339091830fe944679a2ad (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
/*	$NetBSD: ka88.h,v 1.6 2017/05/22 17:12:11 ragge Exp $	*/

/*
 * Copyright (c) 2000 Ludd, University of Lule}, Sweden. 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.
 *
 * 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.
 */

/*
 * KA88 system defines, gotten from the
 * VAX 8530/8550/8700/8800 System Maintenance Guide.
 */
#ifndef _VAX_KA88_H_
#define _VAX_KA88_H_

/* Console communication ID fields */
#define KA88_CSA1	0x0100		/* first floppy */
#define KA88_CSA3	0x0200		/* hard drive */
#define KA88_LOCAL	0x0300		/* local console */
#define KA88_CSA2	0x0400		/* second floppy */
#define KA88_REMOTE	0x0600		/* remote console */
#define KA88_DIAGDATA	0x0700		/* */
#define	KA88_CONSMSG	0x0800		/* messages from console */
#define KA88_CONFDATA	0x0900		/* config data from PRO (in) */
#define KA88_CSACMND	0x0900		/* floppy command (out) */
#define KA88_TOY	0x0d00		/* time of year clock */
#define KA88_COMM	0x0f00		/* communication channel */

/* Messages from console */
#define KA88_ENV	0x0000		/* margins passed */
#define KA88_CSA1STAT	0x0010		/* floppy 1 status */
#define KA88_CSA2STAT	0x0020		/* floppy 2 status */
#define KA88_CSA3STAT	0x0050		/* hard drive status */
#define KA88_TOYERR	0x0070		/* time of year clock error */

/* Environment margins passed */
#define KA88_BLOWER	0x0000		/* fan malfunctioning */
#define KA88_YELLOW	0x0001		/* yellow zone passed */
#define KA88_RED	0x0002		/* red zone passed */

/* floppy status */
#define KA88_CSAOK	0x0000		/* floppy command succeeded */

/* config data from PRO */
#define KA88_LEFT	0x0001		/* left CPU available */
#define KA88_SMALL	0x0001		/* small cabinet (8530/8550) */
#define KA88_RIGHT	0x0002		/* right CPU available */
#define KA88_SECONDEN	0x0004		/* secondary enabled */
#define KA88_SINGLE	0x0008		/* single CPU */
#define KA88_LEFTPRIM	0x0040		/* left CPU is primary */
#define KA88_SLOW	0x0080		/* low-speed version */

/* floppy commands */
#define KA88_CS_READ	0x0000		/* read from device */
#define KA88_CS_WRITE	0x0001		/* write to device */

/* communication channel */
#define KA88_REBOOT	0x0002		/* reboot this processor */
#define KA88_CLRW	0x0003		/* clear warm start flag */
#define KA88_CLRC	0x0004		/* clear cold start flag */
#define KA88_REBOOT2ND	0x0005		/* reboot other processor */
#define KA88_TOYREAD	0x0008		/* request toy clock */
#define KA88_TOYWRITE	0x0009		/* notify of intent to write toy */
#define KA88_GETCONF	0x000d		/* request configuration info */

/* IPR defines */
#define PR_NICTRL	128		/* NMI Interrupt control */
#define	NICTRL_DEV0	0x80		/* Device 0 interrupt enable */
#define	NICTRL_DEV1	0x40		/* Device 1 interrupt enable */
#define	NICTRL_MNF	0x20		/* memory interrupt/NMI fault */

#define PR_INOP		129		/* Interrupt other processor */
#define	INOP_IOP	1

#define PR_NMIFSR	130		/* NMI fault summary */
#define PR_NMISIL	131		/* NMI silo data */                   
#define PR_NMIEAR	132		/* NMI error address */           
#define PR_COR		133		/* Cache on register */           
#define PR_REVR1	134		/* Rev register 1 */              
#define PR_REVR2	135		/* Rev register 2 */

/* NBIA defines */
#define	NBIA_REGS(nbianr)	(0x20080000 + ((nbianr) << 26))

#define	NBIA_CSR0	0
#define	CSR0_PARERR	0x8000		/* NBI parity error */
#define	CSR0_LOOP	0x10000		/* loopback */
#define	CSR0_NBIIE	0x100000	/* NBI interrupt enable */

#define	NBIA_CSR1	4
#define NBIA_BR4VR	16
#define NBIA_BR5VR	20
#define NBIA_BR6VR	24
#define NBIA_BR7VR	28
/*
 * This is mostly fake, but simple way to get autoconf work.
 * slot 0-9:	BI bus adapters
 *       10:	Memory controller
 *    20-23:	CPUs.
 */
struct nmi_attach_args {
	const char *na_type;
	int na_slot;
	bus_space_tag_t na_iot;
	bus_dma_tag_t na_dmat;
};

#ifdef _KERNEL
int ka88_confdata;
#endif

#endif /* _VAX_KA88_H_ */