summaryrefslogtreecommitdiff
path: root/sys/arch/aviion/include/av530.h
blob: d5bb22b58270ac4fb0288fe502b3e5123584d0d6 (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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
/*	$OpenBSD: av530.h,v 1.1 2010/04/18 22:04:39 miod Exp $	*/
/*
 * Copyright (c) 2006, 2010 Miodrag Vallat
 *
 * 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.
 */

#ifndef	__MACHINE_AV530_H__
#define	__MACHINE_AV530_H__

#define	AV530_PROM		0xffc00000
#define	AV530_PROM_SIZE		0x00080000
#define	AV530_UTILITY		0xfff00000
#define	AV530_UTILITY_SIZE	0x00100000

/*
 * AV530 VME mappings
 */

#define	AV530_VME32_BASE	0x00000000
#define	AV530_VME32_START1	0x40000000
#define	AV530_VME32_END1	0x7fffffff
#define	AV530_VME32_START2	0x90000000
#define	AV530_VME32_END2	0xfdffffff
#define	AV530_VME24_BASE	0xfe000000
#define	AV530_VME24_START	0x00000000
#define	AV530_VME24_END		0x00ffffff
#define	AV530_VME16_BASE	0xffff0000
#define	AV530_VME16_START	0x00000000
#define	AV530_VME16_END		0x0000ffff

/*
 * AV530 declarations for hardware level device registers and such.
 */

#define	AV530_SETSWI	0xfff84080 	/* generate soft interrupt */
#define	AV530_CLRSWI	0xfff84084 	/* reset soft interrupt */

#define	AV530_VIRQLV	0xfff85000
#define	AV530_VIACK1V	0xfff85004
#define	AV530_VIACK2V	0xfff85008
#define	AV530_VIACK3V	0xfff8500c
#define	AV530_VIACK4V	0xfff85010
#define	AV530_VIACK5V	0xfff85014
#define	AV530_VIACK6V	0xfff85018
#define	AV530_VIACK7V	0xfff8501c
#define	AV530_VIRQV	0xfff85020

/*
 * IEN and IST register bits
 * See ``Programming System Control and I/O Registers: AViiON 4600 and
 * 530 series'', section 3 (Interrupts).
 */

#define	IRQ_RESERVED	0x0020aa00	/* all reserved bits */
#define IRQ_ABORT	0x80000000	/* 31 - Abort */
#define IRQ_ACF		0x40000000	/* 30 - AC Fail */
#define IRQ_ARBTO	0x20000000	/* 29 - VME Arbiter Timeout */
#define	IRQ_DTI		0x10000000	/* 28 - DUART Timer Interrupt */
#define IRQ_SWI7	0x08000000	/* 27 - SW Interrupt level 7 */
#define IRQ_SWI6	0x04000000	/* 26 - SW Interrupt level 6 */
#define IRQ_SWI5	0x02000000	/* 25 - SW Interrupt level 5 */
#define IRQ_SWI4	0x01000000	/* 24 - SW Interrupt level 4 */
#define IRQ_VME7	0x00800000	/* 23 - VMEBus level 7 */
#define IRQ_KBD		0x00400000	/* 22 - Keyboard */
#define IRQ_SF		0x00100000	/* 20 - System Failure */
#define IRQ_VME6	0x00080000	/* 19 - VMEBus level 6 */
#define IRQ_MEM		0x00040000	/* 18 - Memory Error */
#define IRQ_DI		0x00020000	/* 17 - DUART */
#define IRQ_SIGHPI	0x00010000	/* 16 - SIGHPI */
#define IRQ_VME5	0x00004000	/* 14 - VMEBus level 5 */
#define IRQ_VME4	0x00001000	/* 12 - VMEBus level 4 */
#define IRQ_VME3	0x00000400	/* 10 - VMEBus level 3 */
#define	IRQ_LMI		0x00000100	/* 08 - Location Monitor */
#define	IRQ_SIGLPI	0x00000080	/* 07 - SIGLPI */
#define IRQ_VME2	0x00000040	/* 06 - VMEBus level 2 */
#define IRQ_VME1	0x00000010	/* 04 - VMEBus level 1 */
#define IRQ_SWI3	0x00000008	/* 03 - SW Interrupt level 3 */
#define IRQ_SWI2	0x00000004	/* 02 - SW Interrupt level 2 */
#define IRQ_SWI1	0x00000002	/* 01 - SW Interrupt level 1 */
#define IRQ_SWI0	0x00000001	/* 00 - SW Interrupt level 0 */

#define IST_STRING	"\20" \
	"\40ABRT\37ACF\36ARBTO\35DTI\34SWI7\33SWI6\32SWI5\31SWI4" \
	"\30IRQ7\27KBD\25SF\24IRQ6\23MEM\22DI\21SIGHPI" \
	"\17IRQ5\15IRQ4\13IRQ3\11LMI" \
	"\10SIGLPI\7IRQ2\5IRQ1\4SWI3\3SWI2\2SWI1\1SWI0"

/*
 * Extended interrupts
 */

#define	AV_EXIEN_BASE	0xfff8e000
#define	AV_EXIEN0	0xfff8e004
#define	AV_EXIEN1	0xfff8e008
#define	AV_EXIEN2	0xfff8e010
#define	AV_EXIEN3	0xfff8e020
#define	AV_EXIENALL	0xfff8e03c
#define	AV_EXIEN(cpu)	(AV_EXIEN_BASE + (4 << (cpu)))

#define	AV_EXIST	0xfff8e040

#define EXISR_GET_CURRENT_MASK(cpu) \
	(*(volatile u_int *)AV_EXIST & ext_int_mask_reg[cpu])

/*
 * EXIEN and EXIST register bits
 * See ``Programming System control and I/O registers for the 4600 and 530
 * series'', section 3 (Interrupts).
 */

#define	EXIRQ_RESERVED	0x04000e9f	/* all reserved bits */
#define EXIRQ_RTCOF	0x80000000	/* 31 - RTC Overflow */
#define EXIRQ_PIT3OF	0x40000000	/* 30 - PIT 3 Overflow */
#define EXIRQ_PIT2OF	0x20000000	/* 29 - PIT 2 Overflow */
#define EXIRQ_PIT1OF	0x10000000	/* 28 - PIT 1 Overflow */
#define EXIRQ_PIT0OF	0x08000000	/* 27 - PIT 0 Overflow */
#define	EXIRQ_DMA4C	0x02000000	/* 25 - DMA4 Channel Complete */
#define	EXIRQ_DMA3C	0x01000000	/* 24 - DMA3 Channel Complete */
#define	EXIRQ_DMA2C	0x00800000	/* 23 - DMA2 Channel Complete */
#define	EXIRQ_DMA1C	0x00400000	/* 22 - DMA1 Channel Complete */
#define	EXIRQ_DMA0C	0x00200000	/* 21 - DMA0 Channel Complete */
#define	EXIRQ_SCC	0x00100000	/* 20 - SCC */
#define	EXIRQ_LAN0	0x00080000	/* 19 - Ethernet 0 */
#define	EXIRQ_LAN1	0x00040000	/* 18 - Ethernet 1 */
#define	EXIRQ_SCSI0	0x00020000	/* 17 - SCSI0 */
#define	EXIRQ_SCSI1	0x00010000	/* 16 - SCSI1 */
#define	EXIRQ_VIDEO	0x00008000	/* 15 - Video */
#define	EXIRQ_ZBUF	0x00004000	/* 14 - Z Buffer */
#define	EXIRQ_DUART2	0x00002000	/* 13 - DUART2 */
#define	EXIRQ_VDMA	0x00001000	/* 12 - VDMA */
#define	EXIRQ_IOEXP1	0x00000100	/* 8 - IO Expansion 1 */
#define	EXIRQ_IOEXP2	0x00000040	/* 6 - IO Expansion 2 */
#define	EXIRQ_PDMA	0x00000020	/* 5 - Parallel Printer DMA */

#define EXIST_STRING	"\20" \
	"\40RTCOF\37PIT3OF\36PIT2OF\35PIT1OF\34PIT0OF\32DMA4\31DMA3" \
	"\30DMA2\27DMA1\26DMA0\25SCC\24LAN0\23LAN1\22SCSI0\21SCSI1" \
	"\20VIDEO\17ZBUF\16DUART2\15VDMA\11IOEXP1" \
	"\7IOEXP2\6PDMA"

#define	AV530_SRST		0xfff83100	/* software reset */
#define	SRST_KBD			0x08
#define	SRST_DUART2			0x02
#define	SRST_DUART1			0x01
#define	AV530_IOBRDID0		0xfffcf000
#define	AV530_IOBRDID1		0xfffcf004
#define	AV530_CONFIG		0xfff8fffc

/*
 * CMMU addresses
 */

#define AV530_CMMU_D0	0xfff00000
#define AV530_CMMU_I0	0xfff01000
#define AV530_CMMU_D1	0xfff02000
#define AV530_CMMU_I1	0xfff03000

#define AV530_CMMU6_D0	0xfff00000
#define AV530_CMMU6_D1	0xfff01000
#define AV530_CMMU6_I0	0xfff04000
#define AV530_CMMU6_I1	0xfff05000
#define AV530_CMMU6_I2	0xfff06000
#define AV530_CMMU6_I3	0xfff07000
#define AV530_CMMU6_D2	0xfff08000
#define AV530_CMMU6_D3	0xfff09000
#define AV530_CMMU6_I4	0xfff0c000
#define AV530_CMMU6_I5	0xfff0d000
#define AV530_CMMU6_I6	0xfff0e000
#define AV530_CMMU6_I7	0xfff0f000

#endif	/* __MACHINE_AV530_H__ */