summaryrefslogtreecommitdiffstats
path: root/drivers/char/rio/rioboard.h
blob: 822c071a693bc54566d4b3f230a618617707c510 (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
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
/************************************************************************/
/*									*/
/*	Title		:	RIO Host Card Hardware Definitions	*/
/*									*/
/*	Author		:	N.P.Vassallo				*/
/*									*/
/*	Creation	:	26th April 1999				*/
/*									*/
/*	Version		:	1.0.0					*/
/*									*/
/*	Copyright	:	(c) Specialix International Ltd. 1999	*
 *
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 *
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *									*/
/*	Description	:	Prototypes, structures and definitions	*/
/*				describing the RIO board hardware	*/
/*									*/
/************************************************************************/

/* History...

1.0.0	26/04/99 NPV	Creation.

*/

#ifndef	_rioboard_h		/* If RIOBOARD.H not already defined */
#define	_rioboard_h    1

/*****************************************************************************
***********************                                ***********************
***********************   Hardware Control Registers   ***********************
***********************                                ***********************
*****************************************************************************/

/* Hardware Registers... */

#define	RIO_REG_BASE	0x7C00	/* Base of control registers */

#define	RIO_CONFIG	RIO_REG_BASE + 0x0000	/* WRITE: Configuration Register */
#define	RIO_INTSET	RIO_REG_BASE + 0x0080	/* WRITE: Interrupt Set */
#define	RIO_RESET	RIO_REG_BASE + 0x0100	/* WRITE: Host Reset */
#define	RIO_INTRESET	RIO_REG_BASE + 0x0180	/* WRITE: Interrupt Reset */

#define	RIO_VPD_ROM	RIO_REG_BASE + 0x0000	/* READ: Vital Product Data ROM */
#define	RIO_INTSTAT	RIO_REG_BASE + 0x0080	/* READ: Interrupt Status (Jet boards only) */
#define	RIO_RESETSTAT	RIO_REG_BASE + 0x0100	/* READ: Reset Status (Jet boards only) */

/* RIO_VPD_ROM definitions... */
#define	VPD_SLX_ID1	0x00	/* READ: Specialix Identifier #1 */
#define	VPD_SLX_ID2	0x01	/* READ: Specialix Identifier #2 */
#define	VPD_HW_REV	0x02	/* READ: Hardware Revision */
#define	VPD_HW_ASSEM	0x03	/* READ: Hardware Assembly Level */
#define	VPD_UNIQUEID4	0x04	/* READ: Unique Identifier #4 */
#define	VPD_UNIQUEID3	0x05	/* READ: Unique Identifier #3 */
#define	VPD_UNIQUEID2	0x06	/* READ: Unique Identifier #2 */
#define	VPD_UNIQUEID1	0x07	/* READ: Unique Identifier #1 */
#define	VPD_MANU_YEAR	0x08	/* READ: Year Of Manufacture (0 = 1970) */
#define	VPD_MANU_WEEK	0x09	/* READ: Week Of Manufacture (0 = week 1 Jan) */
#define	VPD_HWFEATURE1	0x0A	/* READ: Hardware Feature Byte 1 */
#define	VPD_HWFEATURE2	0x0B	/* READ: Hardware Feature Byte 2 */
#define	VPD_HWFEATURE3	0x0C	/* READ: Hardware Feature Byte 3 */
#define	VPD_HWFEATURE4	0x0D	/* READ: Hardware Feature Byte 4 */
#define	VPD_HWFEATURE5	0x0E	/* READ: Hardware Feature Byte 5 */
#define	VPD_OEMID	0x0F	/* READ: OEM Identifier */
#define	VPD_IDENT	0x10	/* READ: Identifier string (16 bytes) */
#define	VPD_IDENT_LEN	0x10

/* VPD ROM Definitions... */
#define	SLX_ID1		0x4D
#define	SLX_ID2		0x98

#define	PRODUCT_ID(a)	((a>>4)&0xF)	/* Use to obtain Product ID from VPD_UNIQUEID1 */

#define	ID_SX_ISA	0x2
#define	ID_RIO_EISA	0x3
#define	ID_SX_PCI	0x5
#define	ID_SX_EISA	0x7
#define	ID_RIO_RTA16	0x9
#define	ID_RIO_ISA	0xA
#define	ID_RIO_MCA	0xB
#define	ID_RIO_SBUS	0xC
#define	ID_RIO_PCI	0xD
#define	ID_RIO_RTA8	0xE

/* Transputer bootstrap definitions... */

#define	BOOTLOADADDR		(0x8000 - 6)
#define	BOOTINDICATE		(0x8000 - 2)

/* Firmware load position... */

#define	FIRMWARELOADADDR	0x7C00	/* Firmware is loaded _before_ this address */

/*****************************************************************************
*****************************                    *****************************
*****************************   RIO (Rev1) ISA   *****************************
*****************************                    *****************************
*****************************************************************************/

/* Control Register Definitions... */
#define	RIO_ISA_IDENT	"JBJGPGGHINSMJPJR"

#define	RIO_ISA_CFG_BOOTRAM	0x01	/* Boot from RAM, else Link */
#define	RIO_ISA_CFG_BUSENABLE	0x02	/* Enable processor bus */
#define	RIO_ISA_CFG_IRQMASK	0x30	/* Interrupt mask */
#define	  RIO_ISA_CFG_IRQ12	0x10	/* Interrupt Level 12 */
#define	  RIO_ISA_CFG_IRQ11	0x20	/* Interrupt Level 11 */
#define	  RIO_ISA_CFG_IRQ9	0x30	/* Interrupt Level 9 */
#define	RIO_ISA_CFG_LINK20	0x40	/* 20Mbps link, else 10Mbps */
#define	RIO_ISA_CFG_WAITSTATE0	0x80	/* 0 waitstates, else 1 */

/*****************************************************************************
*****************************                    *****************************
*****************************   RIO (Rev2) ISA   *****************************
*****************************                    *****************************
*****************************************************************************/

/* Control Register Definitions... */
#define	RIO_ISA2_IDENT	"JBJGPGGHINSMJPJR"

#define	RIO_ISA2_CFG_BOOTRAM	0x01	/* Boot from RAM, else Link */
#define	RIO_ISA2_CFG_BUSENABLE	0x02	/* Enable processor bus */
#define	RIO_ISA2_CFG_INTENABLE	0x04	/* Interrupt enable, else disable */
#define	RIO_ISA2_CFG_16BIT	0x08	/* 16bit mode, else 8bit */
#define	RIO_ISA2_CFG_IRQMASK	0x30	/* Interrupt mask */
#define	  RIO_ISA2_CFG_IRQ15	0x00	/* Interrupt Level 15 */
#define	  RIO_ISA2_CFG_IRQ12	0x10	/* Interrupt Level 12 */
#define	  RIO_ISA2_CFG_IRQ11	0x20	/* Interrupt Level 11 */
#define	  RIO_ISA2_CFG_IRQ9	0x30	/* Interrupt Level 9 */
#define	RIO_ISA2_CFG_LINK20	0x40	/* 20Mbps link, else 10Mbps */
#define	RIO_ISA2_CFG_WAITSTATE0	0x80	/* 0 waitstates, else 1 */

/*****************************************************************************
*****************************                   ******************************
*****************************   RIO (Jet) ISA   ******************************
*****************************                   ******************************
*****************************************************************************/

/* Control Register Definitions... */
#define	RIO_ISA3_IDENT	"JET HOST BY KEV#"

#define	RIO_ISA3_CFG_BUSENABLE	0x02	/* Enable processor bus */
#define	RIO_ISA3_CFG_INTENABLE	0x04	/* Interrupt enable, else disable */
#define	RIO_ISA32_CFG_IRQMASK	0xF30	/* Interrupt mask */
#define	  RIO_ISA3_CFG_IRQ15	0xF0	/* Interrupt Level 15 */
#define	  RIO_ISA3_CFG_IRQ12	0xC0	/* Interrupt Level 12 */
#define	  RIO_ISA3_CFG_IRQ11	0xB0	/* Interrupt Level 11 */
#define	  RIO_ISA3_CFG_IRQ10	0xA0	/* Interrupt Level 10 */
#define	  RIO_ISA3_CFG_IRQ9	0x90	/* Interrupt Level 9 */

/*****************************************************************************
*********************************             ********************************
*********************************   RIO MCA   ********************************
*********************************             ********************************
*****************************************************************************/

/* Control Register Definitions... */
#define	RIO_MCA_IDENT	"JBJGPGGHINSMJPJR"

#define	RIO_MCA_CFG_BOOTRAM	0x01	/* Boot from RAM, else Link */
#define	RIO_MCA_CFG_BUSENABLE	0x02	/* Enable processor bus */
#define	RIO_MCA_CFG_LINK20	0x40	/* 20Mbps link, else 10Mbps */

/*****************************************************************************
********************************              ********************************
********************************   RIO EISA   ********************************
********************************              ********************************
*****************************************************************************/

/* EISA Configuration Space Definitions... */
#define	EISA_PRODUCT_ID1	0xC80
#define	EISA_PRODUCT_ID2	0xC81
#define	EISA_PRODUCT_NUMBER	0xC82
#define	EISA_REVISION_NUMBER	0xC83
#define	EISA_CARD_ENABLE	0xC84
#define	EISA_VPD_UNIQUEID4	0xC88	/* READ: Unique Identifier #4 */
#define	EISA_VPD_UNIQUEID3	0xC8A	/* READ: Unique Identifier #3 */
#define	EISA_VPD_UNIQUEID2	0xC90	/* READ: Unique Identifier #2 */
#define	EISA_VPD_UNIQUEID1	0xC92	/* READ: Unique Identifier #1 */
#define	EISA_VPD_MANU_YEAR	0xC98	/* READ: Year Of Manufacture (0 = 1970) */
#define	EISA_VPD_MANU_WEEK	0xC9A	/* READ: Week Of Manufacture (0 = week 1 Jan) */
#define	EISA_MEM_ADDR_23_16	0xC00
#define	EISA_MEM_ADDR_31_24	0xC01
#define	EISA_RIO_CONFIG		0xC02	/* WRITE: Configuration Register */
#define	EISA_RIO_INTSET		0xC03	/* WRITE: Interrupt Set */
#define	EISA_RIO_INTRESET	0xC03	/* READ:  Interrupt Reset */

/* Control Register Definitions... */
#define	RIO_EISA_CFG_BOOTRAM	0x01	/* Boot from RAM, else Link */
#define	RIO_EISA_CFG_LINK20	0x02	/* 20Mbps link, else 10Mbps */
#define	RIO_EISA_CFG_BUSENABLE	0x04	/* Enable processor bus */
#define	RIO_EISA_CFG_PROCRUN	0x08	/* Processor running, else reset */
#define	RIO_EISA_CFG_IRQMASK	0xF0	/* Interrupt mask */
#define	  RIO_EISA_CFG_IRQ15	0xF0	/* Interrupt Level 15 */
#define	  RIO_EISA_CFG_IRQ14	0xE0	/* Interrupt Level 14 */
#define	  RIO_EISA_CFG_IRQ12	0xC0	/* Interrupt Level 12 */
#define	  RIO_EISA_CFG_IRQ11	0xB0	/* Interrupt Level 11 */
#define	  RIO_EISA_CFG_IRQ10	0xA0	/* Interrupt Level 10 */
#define	  RIO_EISA_CFG_IRQ9	0x90	/* Interrupt Level 9 */
#define	  RIO_EISA_CFG_IRQ7	0x70	/* Interrupt Level 7 */
#define	  RIO_EISA_CFG_IRQ6	0x60	/* Interrupt Level 6 */
#define	  RIO_EISA_CFG_IRQ5	0x50	/* Interrupt Level 5 */
#define	  RIO_EISA_CFG_IRQ4	0x40	/* Interrupt Level 4 */
#define	  RIO_EISA_CFG_IRQ3	0x30	/* Interrupt Level 3 */

/*****************************************************************************
********************************              ********************************
********************************   RIO SBus   ********************************
********************************              ********************************
*****************************************************************************/

/* Control Register Definitions... */
#define	RIO_SBUS_IDENT	"JBPGK#\0\0\0\0\0\0\0\0\0\0"

#define	RIO_SBUS_CFG_BOOTRAM	0x01	/* Boot from RAM, else Link */
#define	RIO_SBUS_CFG_BUSENABLE	0x02	/* Enable processor bus */
#define	RIO_SBUS_CFG_INTENABLE	0x04	/* Interrupt enable, else disable */
#define	RIO_SBUS_CFG_IRQMASK	0x38	/* Interrupt mask */
#define	  RIO_SBUS_CFG_IRQNONE	0x00	/* No Interrupt */
#define	  RIO_SBUS_CFG_IRQ7	0x38	/* Interrupt Level 7 */
#define	  RIO_SBUS_CFG_IRQ6	0x30	/* Interrupt Level 6 */
#define	  RIO_SBUS_CFG_IRQ5	0x28	/* Interrupt Level 5 */
#define	  RIO_SBUS_CFG_IRQ4	0x20	/* Interrupt Level 4 */
#define	  RIO_SBUS_CFG_IRQ3	0x18	/* Interrupt Level 3 */
#define	  RIO_SBUS_CFG_IRQ2	0x10	/* Interrupt Level 2 */
#define	  RIO_SBUS_CFG_IRQ1	0x08	/* Interrupt Level 1 */
#define	RIO_SBUS_CFG_LINK20	0x40	/* 20Mbps link, else 10Mbps */
#define	RIO_SBUS_CFG_PROC25	0x80	/* 25Mhz processor clock, else 20Mhz */

/*****************************************************************************
*********************************             ********************************
*********************************   RIO PCI   ********************************
*********************************             ********************************
*****************************************************************************/

/* Control Register Definitions... */
#define	RIO_PCI_IDENT	"ECDDPGJGJHJRGSK#"

#define	RIO_PCI_CFG_BOOTRAM	0x01	/* Boot from RAM, else Link */
#define	RIO_PCI_CFG_BUSENABLE	0x02	/* Enable processor bus */
#define	RIO_PCI_CFG_INTENABLE	0x04	/* Interrupt enable, else disable */
#define	RIO_PCI_CFG_LINK20	0x40	/* 20Mbps link, else 10Mbps */
#define	RIO_PCI_CFG_PROC25	0x80	/* 25Mhz processor clock, else 20Mhz */

/* PCI Definitions... */
#define	SPX_VENDOR_ID		0x11CB	/* Assigned by the PCI SIG */
#define	SPX_DEVICE_ID		0x8000	/* RIO bridge boards */
#define	SPX_PLXDEVICE_ID	0x2000	/* PLX bridge boards */
#define	SPX_SUB_VENDOR_ID	SPX_VENDOR_ID	/* Same as vendor id */
#define	RIO_SUB_SYS_ID		0x0800	/* RIO PCI board */

/*****************************************************************************
*****************************                   ******************************
*****************************   RIO (Jet) PCI   ******************************
*****************************                   ******************************
*****************************************************************************/

/* Control Register Definitions... */
#define	RIO_PCI2_IDENT	"JET HOST BY KEV#"

#define	RIO_PCI2_CFG_BUSENABLE	0x02	/* Enable processor bus */
#define	RIO_PCI2_CFG_INTENABLE	0x04	/* Interrupt enable, else disable */

/* PCI Definitions... */
#define	RIO2_SUB_SYS_ID		0x0100	/* RIO (Jet) PCI board */

#endif						/*_rioboard_h */

/* End of RIOBOARD.H */