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
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
|
/* $NetBSD: btvmeireg.h,v 1.5 2005/12/11 12:22:48 christos Exp $ */
#ifndef _bit3reg_h_
#define _bit3reg_h_
#ifdef _KERNEL
#define BIT3_LSR_BITS "\20\1CABLE\2LRCERR\3ITO\6INTPR\7RBERR\10PARERR"
/* following is from:
** Filename: btpciio.h
**
** Purpose: Bit 3 400-809 PCI Applications Toolkit
** Adaptor Node Register Include File.
*/
/******************************************************************************
**
** Mapping Register Defines
**
******************************************************************************/
#define MR_PCI_VME 0x0 /* PCI to VME Map RAM base offset */
#define MR_PCI_VME_SIZE 0x8000 /* PCI to VME Map RAM size (bytes) */
#define MR_VME_PCI 0x8000 /* VME to PCI Map RAM base offset */
#define MR_VME_PCI_SIZE 0x4000 /* VME to PCI Map RAM size (bytes) */
#define MR_DMA_PCI 0xC000 /* DMA to PCI Map RAM base offset */
#define MR_DMA_PCI_SIZE 0x4000 /* DMA to PCI Map RAM size (bytes) */
#define MR_BYTE_SWAP (1<<3) /* r/w, Byte swap bytes */
#define MR_WORD_SWAP (1<<2) /* r/w, Swap words */
#define MR_WBYTE_SWAP (1<<1) /* r/w, Byte Swap non-bytes */
#define MR_RAM_INVALID (1<<0) /* r/w, Map register is invalid */
#define MR_ADDR_MASK 0xFFFFF000UL /* Mask for map address bits A31-A12 */
#define MR_REM_BUS_MASK 0x00000FFFUL /* Mask for remote address bits A11-A0 */
#define MR_AMOD_MASK 0x00000FC0UL /* Mask for address modifier bits */
/* AM5-AM0 for register bits A11-A6 */
#define MR_AMOD_SHIFT 6 /* Shift value for AMOD bits AM5-AM0 */
#define MR_FC_MASK 0x30 /* Mask for Mapping RAM Function Codes */
#define MR_FC_RBIO 0x10 /* Remote Bus I/O Mapping function code */
#define MR_FC_RRAM 0x20 /* Remote RAM Mapping function code */
#define MR_FC_DPRAM 0x30 /* Dual Port RAM Mapping function code */
/******************************************************************************
**
** Local Adaptor Node Registers
**
*******************************************************************************
**
** Local Command Register (Read/Write, 8 Bits)
**
*******************************************************************************
** 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
** +C_STAT |+CLR_PR |+SND_PT | | | | |
******************************************************************************/
#define LOC_CMD1 (0x00) /* Local Command Register */
#define LC1_CLR_ERROR (1<<7) /* w, Clear status error bits (1 Shot) */
#define LC1_CLR_PR_INT (1<<6) /* w, Clear PR (PS) Interrupt (1 Shot) */
#define LC1_SND_PT_INT (1<<5) /* r/w, Set PT Interrupt */
/******************************************************************************
**
** Local Interrupt Control Register (Read/Write, 8 Bits)
**
*******************************************************************************
** 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
** +INT_ACT | +INT_EN |+ERR_INT | 0 | 0 | +CINT2 | +CINT1 | +CINT0
******************************************************************************/
#define LOC_INT_CTRL (0x01) /* Local Interrupt Control Register */
#define LIC_INT_PENDING (1<<7) /* r , Adaptor asserting INT on PCI bus */
#define LIC_INT_ENABLE (1<<6) /* r/w, Normal (PR & CINT) INT Enable */
#define LIC_ERR_INT_ENABLE (1<<5) /* r/w, Error Interrupt Enable */
#define LIC_PT_CINT_SEL2 (1<<2) /* r/w, PT CINT Line Selection Bit 2 */
#define LIC_PT_CINT_SEL1 (1<<1) /* r/w, PT CINT Line Selection Bit 1 */
#define LIC_PT_CINT_SEL0 (1<<0) /* r/w, PT CINT Line Selection Bit 0 */
/******************************************************************************
**
** Local Status Register (Read Only, 8 Bits)
**
*******************************************************************************
** 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
** +PARITY |+REMBUS |+PR_INT |+CARD_RDY| 0 |+TIMEOUT|+LRC_ERR|+NOCONNECT
******************************************************************************/
#define LOC_STATUS (0x02) /* Local Status Register */
#define LSR_PARITY_ERR (1<<7) /* Interface Parity Error PCI->REM. */
#define LSR_REMBUS_ERR (1<<6) /* BERR from VME on PCI->REM. xfer */
#define LSR_PR_STATUS (1<<5) /* PR interrupt received from REMOTE */
#define LSR_TIMEOUT_ERR (1<<2) /* Interface Timeout error PCI->REM */
#define LSR_LRC_ERR (1<<1) /* LRC error (DMA master only) */
#define LSR_NO_CONNECT (1<<0) /* REM. bus power or I/O cable is off */
#define LSR_ERROR_MASK (LSR_PARITY_ERR|LSR_REMBUS_ERR|LSR_TIMEOUT_ERR|LSR_LRC_ERR)
#define LSR_CERROR_MASK (LSR_NO_CONNECT|LSR_ERROR_MASK)
/******************************************************************************
**
** Local Interrupt Status Register (Read Only)
**
*******************************************************************************
** 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
** +CINT7 | +CINT6 | +CINT5 | +CINT4 | +CINT3 | +CINT2 | +CINT1 | +CINT0
******************************************************************************/
#define LOC_INT_STATUS (0x03) /* Local Interrupt Status Register */
#define LIS_CINT7 (1<<7) /* Cable Interrupt 7 - CINT7 */
#define LIS_CINT6 (1<<6) /* Cable Interrupt 6 - CINT6 */
#define LIS_CINT5 (1<<5) /* Cable Interrupt 5 - CINT5 */
#define LIS_CINT4 (1<<4) /* Cable Interrupt 4 - CINT4 */
#define LIS_CINT3 (1<<3) /* Cable Interrupt 3 - CINT3 */
#define LIS_CINT2 (1<<2) /* Cable Interrupt 2 - CINT2 */
#define LIS_CINT1 (1<<1) /* Cable Interrupt 1 - CINT1 */
#define LIS_CINT_MASK (LIS_CINT1 | LIS_CINT2 | LIS_CINT3 | LIS_CINT4 | LIS_CINT5 | LIS_CINT6 | LIS_CINT7 )
/******************************************************************************
**
** Remote Adaptor Registers
**
*******************************************************************************
**
** Remote Command Register 1 (Write Only, 8 Bits)
**
*******************************************************************************
** 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
** +RESET |+CLR_PT | +SND_PR |+LOCKBUS| +PGMODE| +IACK2 | +IACK1 | +IACK0|VME
** " | " | " | " | " |+IOPGSEL|+PRMOD1 |+PRMOD0|Q-bus
** " | " | " | " | " |+IOPGSEL| 0 | 0 |MBus1
******************************************************************************/
#define REM_CMD1 (0x08) /* Remote Command Register 1 */
#define RC1_RESET_REM (1<<7) /* Reset remote bus - ONE SHOT */
#define RC1_CLR_PT_INT (1<<6) /* PT (PM) interrupt - FROM REMOTE */
#define RC1_SND_PR_INT (1<<5) /* PR (PS) interrupt - TO REMOTE */
#define RC1_LOCK_REM_BUS (1<<4) /* Lock remote bus - FOR RMW ONLY */
#define RC1_PG_SEL (1<<3) /* Enable page mode access */
#define RC1_INT_ACK_A3 (1<<2) /* IACK Read Mode Address Bit 2 */
#define RC1_INT_ACK_A2 (1<<1) /* IACK Read Mode Address Bit 1 */
#define RC1_INT_ACK_A1 (1<<0) /* IACK Read Mode Address Bit 0 */
#define RC1_IACK_MASK (0x07) /* IACK read level select mask */
/*****************************************************************************
**
** Remote Status Register (Read Only, 8 Bits)
**
******************************************************************************
** 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
** +RRESET | IACK_1 | +PRSET | +LKNSET| +PGREG |IACK_2|+PTSET|IACK_0|VME
** 0 | 0 | +PRSET | +LKNSET| +PGMOD | 0 |+PTSET| 0 |A24,Q,MB1
*****************************************************************************/
#define REM_STATUS (0x08) /* Remote Status Register */
#define RSR_PR_STATUS (1<<5) /* PR Interrupt is set */
#define RSR_NOT_LOCK_STATUS (1<<4) /* Remote bus is *NOT* locked */
#define RSR_PG_STATUS (1<<3) /* Page mode access is Enabled */
#define RSR_PT_STATUS (1<<1) /* PT interrupt is set */
/* The following bits apply to A32 VMEbus products ONLY */
#define RSR_WAS_RESET (1<<7) /* Remote bus was reset */
#define RSR_IACK2 (1<<2) /* IACK Read Mode Address Bit 2 */
#define RSR_IACK1 (1<<6) /* IACK Read Mode Address Bit 1 */
#define RSR_IACK0 (1<<0) /* IACK Read Mode Address Bit 0 */
/******************************************************************************
**
** Remote Command Register 2 (Read/Write, 8 Bits)
** THIS REGISTER DOES NOT APPLY TO A24 VMEbus
**
*******************************************************************************
** 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
** +DMA_PAUS | +AMOD_SEL | +DMA_BLK | +INT_DIS | PGSZ3 | PGSZ2 | PGSZ1 | PGSZ0
******************************************************************************/
#define REM_CMD2 (0x09) /* Remote Command Register 2 */
/* The following bits apply to A32 DMA VMEbus products only */
#define RC2_DMA_PAUSE (1<<7) /* DMA remote pause after 16 xfers */
#define RC2_REM_AMOD_SEL (1<<6) /* Use remote address modifier reg. */
#define RC2_DMA_BLK_SEL (1<<5) /* Use remote block-mode DMA operatn */
#define RC2_CINT_DISABLE (1<<4) /* Disable passing of rem cable intr */
/* The following bits apply to all products */
#define RC2_PG_SIZE_64K (0x00) /* 64K Page Size */
#define RC2_PG_SIZE_128K (0x01) /* 128K Page Size */
#define RC2_PG_SIZE_256K (0x03) /* 256K Page Size */
#define RC2_PG_SIZE_512K (0x07) /* 512K Page Size */
#define RC2_PG_SIZE_1MB (0x0F) /* 1M Page Size */
#define RC2_PG_SIZE_MASK (0x0F) /* Page Size select mask */
/******************************************************************************
**
** Remote Node Address Page Register (Read/Write, 16 Bits)
**
******************************************************************************/
#define REM_PAGE (0x0A) /* Remote Address Page Register */
#define REM_PAGE_LO (0x0A) /* Address page byte - A16-A23 */
/* The following define applies to A32 VMEbus products only */
#define REM_PAGE_HI (0x0B) /* Address page byte - A24-A31 */
#define MIN_PAGE_SHIFT 16 /* 64k is minimum size (shift value) */
#define MAX_PAGE_SHIFT 20 /* 1MB maximum page size (shift value) */
#define QBUS_PG_MAX (0x3F) /* Needed for "bt_remid" to identify QBUS */
/******************************************************************************
**
** Remote Card ID Register (Read/Write, 8 Bits)
** A32 Products Only
**
******************************************************************************/
#define REM_CARD_ID (0x0C) /* Remote Card ID Register */
/******************************************************************************
**
** Remote Address Modifier Register (Read/Write, 8 Bits)
** VMEbus Products Only
**
******************************************************************************/
#define REM_AMOD (0x0D) /* Remote Address Modifier Register */
/******************************************************************************
**
** IACK Read Register (Read Only)
** VMEbus & Q-bus Only
**
******************************************************************************/
#define REM_IACK (0x0E) /* IACK Read Register */
#define REM_IACK_WORD (0x0E) /* IACK vector-D0-D7(word) */
#define REM_IACK_BYTE (0x0F) /* IACK vector-D0-D7(byte)D8-D15(word) */
/******************************************************************************
**
** DMA Registers
**
*******************************************************************************
**
** Local DMA Command Register (Read/Write, 8 Bits)
**
*******************************************************************************
** 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
** +LDC_START | +DP_SEL | +WRT_SEL | +D32_SEL | 0 | +INT_EN | +DMA_DN | 0
******************************************************************************/
#define LDMA_CMD (0x10) /* Local DMA Command Register */
#define LDC_START (1<<7) /* Start DMA */
#define LDC_DP_SEL (1<<6) /* DMA to Dual-Port select */
#define LDC_WRITE_SEL (1<<5) /* DMA transfer direction */
#define LDC_DMA_D32_SEL (1<<4) /* DMA transfer size 16 / 32 bit data */
#define LDC_DMA_INT_ENABLE (1<<2) /* DMA done interrupt enable */
#define LDC_DMA_DONE (1<<1) /* DMA done indicator flag */
#define LDC_DMA_ACTIVE (1<<0) /* DMA in progress indicator flag */
/******************************************************************************
**
** Local DMA Remainder Count Register (Read/Write, 8 Bits)
**
******************************************************************************/
#define LDMA_RMD_CNT (0x11) /* Local DMA Remainder Count Register */
/*******************************************************************************
**
** Local DMA Packet Count Register (Read/Write, 16 Bits)
**
*******************************************************************************/
#define LDMA_PKT_CNT (0x12) /* Local DMA Packet Count Register */
#define LDMA_PKT_CNT_LO (0x12) /* Packet Count Byte - D0-D7 */
#define LDMA_PKT_CNT_HI (0x13) /* Packet Count Byte - D8-D15 */
#define LDMA_MIN_DMA_PKT_SIZE 4UL /* Minimum DMA Packet Size In Bytes */
#define LDMA_DMA_PKT_SIZE 8UL /* Standard DMA Packet Size Shift Val */
#define LDMA_MAX_XFER_LEN 0xFFFFFFL /* Maximum DMA transfer Size In Bytes */
/******************************************************************************
**
** Local DMA Address Registers (Read/Write)
**
*******************************************************************************/
#define LDMA_ADDR (0x14) /* Local DMA Address [indexes DMA map space] */
#define LDMA_ADDR_LO (0x14) /* Local DMA Address Byte - D0-D7 */
#define LDMA_ADDR_MID (0x15) /* Local DMA Address Byte - D8-D15 */
#define LDMA_ADDR_HI (0x16) /* Local DMA Address Byte - D8-D15 */
/******************************************************************************
**
** Remote DMA Packet Length Count Register (Read/Write)
**
******************************************************************************/
#define RDMA_LEN_CNT (0x18) /* Remote DMA 1st packet size */
/******************************************************************************
**
** Remote DMA Address Register (Read/Write)
**
******************************************************************************/
#define RDMA_ADDR (0x1A) /* Remote DMA Address */
#define RDMA_ADDR_HI (0x1A) /* Remote DMA Address (A31-A16) */
#define RDMA_ADDR_LO (0x1C) /* Remote DMA Address (A15-A0) */
/******************************************************************************
**
** Remote Slave Status Register (Read Only, 8 Bits)
**
*******************************************************************************
** 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
** +PARITY |+REMBUS |+PR_INT |+CARD_RDY| 0 |+TIMEOUT|+LRC_ERR|+NOCONNECT
******************************************************************************/
#define REM_SLAVE_STATUS (0x1F) /* Local Status of remote card */
#define RSS_PARITY_ERR (1<<7) /* Interface Parity Error Remote->PCI */
#define RSS_REMBUS_ERR (1<<6) /* Invalid mapping RAM access or a */
/* data parity error occurred */
#define RSS_PR_STATUS (1<<5) /* PR interrupt set on the VME card */
#define RSS_TIMEOUT_ERR (1<<2) /* Interface Timeout error on DMA xfer */
#define RSS_PT_STATUS (1<<1) /* PT interrupt set on the VME card */
#define RSS_NO_CONNECT (1<<0) /* Rem. bus power / I/O cable is off */
#define RSS_ERROR_MASK (RSS_PARITY_ERR|RSS_REMBUS_ERR|RSS_TIMEOUT_ERR)
#define RSS_CERROR_MASK (RSS_NO_CONNECT|RSS_ERROR_MASK)
#endif /* KERNEL */
#endif
|