xref: /netbsd-src/sys/arch/vax/include/ka88.h (revision 6a6027692662ba623e7bf5274322989a7b5d1440)
1*6a602769Sragge /*	$NetBSD: ka88.h,v 1.6 2017/05/22 17:12:11 ragge Exp $	*/
2b38b1995Sragge 
3b38b1995Sragge /*
4b38b1995Sragge  * Copyright (c) 2000 Ludd, University of Lule}, Sweden. All rights reserved.
5b38b1995Sragge  *
6b38b1995Sragge  * Redistribution and use in source and binary forms, with or without
7b38b1995Sragge  * modification, are permitted provided that the following conditions
8b38b1995Sragge  * are met:
9b38b1995Sragge  * 1. Redistributions of source code must retain the above copyright
10b38b1995Sragge  *    notice, this list of conditions and the following disclaimer.
11b38b1995Sragge  * 2. Redistributions in binary form must reproduce the above copyright
12b38b1995Sragge  *    notice, this list of conditions and the following disclaimer in the
13b38b1995Sragge  *    documentation and/or other materials provided with the distribution.
14b38b1995Sragge  *
15b38b1995Sragge  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16b38b1995Sragge  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17b38b1995Sragge  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18b38b1995Sragge  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19b38b1995Sragge  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20b38b1995Sragge  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21b38b1995Sragge  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22b38b1995Sragge  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23b38b1995Sragge  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24b38b1995Sragge  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25b38b1995Sragge  */
26b38b1995Sragge 
27b38b1995Sragge /*
28b38b1995Sragge  * KA88 system defines, gotten from the
29b38b1995Sragge  * VAX 8530/8550/8700/8800 System Maintenance Guide.
30b38b1995Sragge  */
3156effcf2Smatt #ifndef _VAX_KA88_H_
3256effcf2Smatt #define _VAX_KA88_H_
33b38b1995Sragge 
34b38b1995Sragge /* Console communication ID fields */
35b38b1995Sragge #define KA88_CSA1	0x0100		/* first floppy */
36b38b1995Sragge #define KA88_CSA3	0x0200		/* hard drive */
37b38b1995Sragge #define KA88_LOCAL	0x0300		/* local console */
38b38b1995Sragge #define KA88_CSA2	0x0400		/* second floppy */
39b38b1995Sragge #define KA88_REMOTE	0x0600		/* remote console */
40b38b1995Sragge #define KA88_DIAGDATA	0x0700		/* */
41b38b1995Sragge #define	KA88_CONSMSG	0x0800		/* messages from console */
42b38b1995Sragge #define KA88_CONFDATA	0x0900		/* config data from PRO (in) */
43b38b1995Sragge #define KA88_CSACMND	0x0900		/* floppy command (out) */
44b38b1995Sragge #define KA88_TOY	0x0d00		/* time of year clock */
45b38b1995Sragge #define KA88_COMM	0x0f00		/* communication channel */
46b38b1995Sragge 
47b38b1995Sragge /* Messages from console */
48b38b1995Sragge #define KA88_ENV	0x0000		/* margins passed */
49b38b1995Sragge #define KA88_CSA1STAT	0x0010		/* floppy 1 status */
50b38b1995Sragge #define KA88_CSA2STAT	0x0020		/* floppy 2 status */
51b38b1995Sragge #define KA88_CSA3STAT	0x0050		/* hard drive status */
52b38b1995Sragge #define KA88_TOYERR	0x0070		/* time of year clock error */
53b38b1995Sragge 
54b38b1995Sragge /* Environment margins passed */
55b38b1995Sragge #define KA88_BLOWER	0x0000		/* fan malfunctioning */
56b38b1995Sragge #define KA88_YELLOW	0x0001		/* yellow zone passed */
57b38b1995Sragge #define KA88_RED	0x0002		/* red zone passed */
58b38b1995Sragge 
59b38b1995Sragge /* floppy status */
60b38b1995Sragge #define KA88_CSAOK	0x0000		/* floppy command succeeded */
61b38b1995Sragge 
62b38b1995Sragge /* config data from PRO */
63d20841bbSwiz #define KA88_LEFT	0x0001		/* left CPU available */
64b38b1995Sragge #define KA88_SMALL	0x0001		/* small cabinet (8530/8550) */
65d20841bbSwiz #define KA88_RIGHT	0x0002		/* right CPU available */
66b38b1995Sragge #define KA88_SECONDEN	0x0004		/* secondary enabled */
67d20841bbSwiz #define KA88_SINGLE	0x0008		/* single CPU */
68d20841bbSwiz #define KA88_LEFTPRIM	0x0040		/* left CPU is primary */
69b38b1995Sragge #define KA88_SLOW	0x0080		/* low-speed version */
70b38b1995Sragge 
71b38b1995Sragge /* floppy commands */
72b38b1995Sragge #define KA88_CS_READ	0x0000		/* read from device */
73b38b1995Sragge #define KA88_CS_WRITE	0x0001		/* write to device */
74b38b1995Sragge 
75b38b1995Sragge /* communication channel */
76b38b1995Sragge #define KA88_REBOOT	0x0002		/* reboot this processor */
77b38b1995Sragge #define KA88_CLRW	0x0003		/* clear warm start flag */
78b38b1995Sragge #define KA88_CLRC	0x0004		/* clear cold start flag */
79b38b1995Sragge #define KA88_REBOOT2ND	0x0005		/* reboot other processor */
80b38b1995Sragge #define KA88_TOYREAD	0x0008		/* request toy clock */
81b38b1995Sragge #define KA88_TOYWRITE	0x0009		/* notify of intent to write toy */
82b38b1995Sragge #define KA88_GETCONF	0x000d		/* request configuration info */
83b38b1995Sragge 
84b38b1995Sragge /* IPR defines */
85b38b1995Sragge #define PR_NICTRL	128		/* NMI Interrupt control */
86b38b1995Sragge #define	NICTRL_DEV0	0x80		/* Device 0 interrupt enable */
87b38b1995Sragge #define	NICTRL_DEV1	0x40		/* Device 1 interrupt enable */
88b38b1995Sragge #define	NICTRL_MNF	0x20		/* memory interrupt/NMI fault */
89b38b1995Sragge 
90b38b1995Sragge #define PR_INOP		129		/* Interrupt other processor */
91b38b1995Sragge #define	INOP_IOP	1
92b38b1995Sragge 
93b38b1995Sragge #define PR_NMIFSR	130		/* NMI fault summary */
94b38b1995Sragge #define PR_NMISIL	131		/* NMI silo data */
95b38b1995Sragge #define PR_NMIEAR	132		/* NMI error address */
96b38b1995Sragge #define PR_COR		133		/* Cache on register */
97b38b1995Sragge #define PR_REVR1	134		/* Rev register 1 */
98b38b1995Sragge #define PR_REVR2	135		/* Rev register 2 */
99b38b1995Sragge 
100b38b1995Sragge /* NBIA defines */
101b38b1995Sragge #define	NBIA_REGS(nbianr)	(0x20080000 + ((nbianr) << 26))
102b38b1995Sragge 
103b38b1995Sragge #define	NBIA_CSR0	0
104b38b1995Sragge #define	CSR0_PARERR	0x8000		/* NBI parity error */
105b38b1995Sragge #define	CSR0_LOOP	0x10000		/* loopback */
106b38b1995Sragge #define	CSR0_NBIIE	0x100000	/* NBI interrupt enable */
107b38b1995Sragge 
108b38b1995Sragge #define	NBIA_CSR1	4
109b38b1995Sragge #define NBIA_BR4VR	16
110b38b1995Sragge #define NBIA_BR5VR	20
111b38b1995Sragge #define NBIA_BR6VR	24
112b38b1995Sragge #define NBIA_BR7VR	28
113b38b1995Sragge /*
114b38b1995Sragge  * This is mostly fake, but simple way to get autoconf work.
115b38b1995Sragge  * slot 0-9:	BI bus adapters
116b38b1995Sragge  *       10:	Memory controller
117b38b1995Sragge  *    20-23:	CPUs.
118b38b1995Sragge  */
119b38b1995Sragge struct nmi_attach_args {
120dfba8166Smatt 	const char *na_type;
121dfba8166Smatt 	int na_slot;
122dfba8166Smatt 	bus_space_tag_t na_iot;
123dfba8166Smatt 	bus_dma_tag_t na_dmat;
124b38b1995Sragge };
125b38b1995Sragge 
126b38b1995Sragge #ifdef _KERNEL
127b38b1995Sragge int ka88_confdata;
128b38b1995Sragge #endif
12956effcf2Smatt 
13056effcf2Smatt #endif /* _VAX_KA88_H_ */
131