tsi148.h
9.34 KB
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
/*
* (C) Copyright 2009 Reinhard Arlt, reinhard.arlt@esd-electronics.com
*
* base on universe.h by
*
* (C) Copyright 2003 Stefan Roese, stefan.roese@esd-electronics.com
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef _tsi148_h
#define _tsi148_h
#ifndef PCI_DEVICE_ID_TUNDRA_TSI148
#define PCI_DEVICE_ID_TUNDRA_TSI148 0x0148
#endif
typedef struct _TSI148 TSI148;
typedef struct _OUTBOUND OUTBOUND;
typedef struct _INBOUND INBOUND;
typedef struct _TDMA_CMD_PACKET TDMA_CMD_PACKET;
struct _OUTBOUND {
unsigned int otsau; /* 0x000 Outbound start upper */
unsigned int otsal; /* 0x004 Outbouud start lower */
unsigned int oteau; /* 0x008 Outbound end upper */
unsigned int oteal; /* 0x00c Outbound end lower */
unsigned int otofu; /* 0x010 Outbound translation upper */
unsigned int otofl; /* 0x014 Outbound translation lower */
unsigned int otbs; /* 0x018 Outbound translation 2eSST */
unsigned int otat; /* 0x01c Outbound translation attr */
};
struct _INBOUND {
unsigned int itsau; /* 0x000 inbound start upper */
unsigned int itsal; /* 0x004 inbouud start lower */
unsigned int iteau; /* 0x008 inbound end upper */
unsigned int iteal; /* 0x00c inbound end lower */
unsigned int itofu; /* 0x010 inbound translation upper */
unsigned int itofl; /* 0x014 inbound translation lower */
unsigned int itat; /* 0x018 inbound translation attr */
unsigned int spare; /* 0x01c not used */
};
struct _TSI148 {
unsigned int pci_id; /* 0x000 */
unsigned int pci_csr; /* 0x004 */
unsigned int pci_class; /* 0x008 */
unsigned int pci_misc0; /* 0x00c */
unsigned int pci_mbarl; /* 0x010 */
unsigned int pci_mbarh; /* 0x014 */
unsigned int spare0[(0x03c-0x018)/4]; /* 0x018 */
unsigned int pci_misc1; /* 0x03c */
unsigned int pci_pcixcap; /* 0x040 */
unsigned int pci_pcixstat; /* 0x044 */
unsigned int spare1[(0x100-0x048)/4]; /* 0x048 */
OUTBOUND outbound[8]; /* 0x100 */
unsigned int viack[8]; /* 0x204 */
unsigned int rmwau; /* 0x220 */
unsigned int rmwal; /* 0x224 */
unsigned int rmwen; /* 0x228 */
unsigned int rmwc; /* 0x22c */
unsigned int rmws; /* 0x230 */
unsigned int vmctrl; /* 0x234 */
unsigned int vctrl; /* 0x238 */
unsigned int vstat; /* 0x23c */
unsigned int pcsr; /* 0x240 */
unsigned int spare2[3]; /* 0x244 - 0x24c */
unsigned int vmefl; /* 0x250 */
unsigned int spare3[3]; /* 0x254 - 0x25c */
unsigned int veau; /* 0x260 */
unsigned int veal; /* 0x264 */
unsigned int veat; /* 0x268 */
unsigned int spare4[1]; /* 0x26c */
unsigned int edpau; /* 0x270 */
unsigned int edpal; /* 0x274 */
unsigned int edpxa; /* 0x278 */
unsigned int edpxs; /* 0x27c */
unsigned int edpat; /* 0x280 */
unsigned int spare5[31]; /* 0x284 - 0x2fc */
INBOUND inbound[8]; /* 0x100 */
unsigned int gbau; /* 0x400 */
unsigned int gbal; /* 0x404 */
unsigned int gcsrat; /* 0x408 */
unsigned int cbau; /* 0x40c */
unsigned int cbal; /* 0x410 */
unsigned int crgat; /* 0x414 */
unsigned int crou; /* 0x418 */
unsigned int crol; /* 0x41c */
unsigned int crat; /* 0x420 */
unsigned int lmbau; /* 0x424 */
unsigned int lmbal; /* 0x428 */
unsigned int lmat; /* 0x42c */
unsigned int r64bcu; /* 0x430 */
unsigned int r64bcl; /* 0x434 */
unsigned int bpgtr; /* 0x438 */
unsigned int bpctr; /* 0x43c */
unsigned int vicr; /* 0x440 */
unsigned int spare6[1]; /* 0x444 */
unsigned int inten; /* 0x448 */
unsigned int inteo; /* 0x44c */
unsigned int ints; /* 0x450 */
unsigned int intc; /* 0x454 */
unsigned int intm1; /* 0x458 */
unsigned int intm2; /* 0x45c */
unsigned int spare7[40]; /* 0x460 - 0x4fc */
unsigned int dctl0; /* 0x500 */
unsigned int dsta0; /* 0x504 */
unsigned int dcsau0; /* 0x508 */
unsigned int dcsal0; /* 0x50c */
unsigned int dcdau0; /* 0x510 */
unsigned int dcdal0; /* 0x514 */
unsigned int dclau0; /* 0x518 */
unsigned int dclal0; /* 0x51c */
unsigned int dsau0; /* 0x520 */
unsigned int dsal0; /* 0x524 */
unsigned int ddau0; /* 0x528 */
unsigned int ddal0; /* 0x52c */
unsigned int dsat0; /* 0x530 */
unsigned int ddat0; /* 0x534 */
unsigned int dnlau0; /* 0x538 */
unsigned int dnlal0; /* 0x53c */
unsigned int dcnt0; /* 0x540 */
unsigned int ddbs0; /* 0x544 */
unsigned int r20[14]; /* 0x548 - 0x57c */
unsigned int dctl1; /* 0x580 */
unsigned int dsta1; /* 0x584 */
unsigned int dcsau1; /* 0x588 */
unsigned int dcsal1; /* 0x58c */
unsigned int dcdau1; /* 0x590 */
unsigned int dcdal1; /* 0x594 */
unsigned int dclau1; /* 0x598 */
unsigned int dclal1; /* 0x59c */
unsigned int dsau1; /* 0x5a0 */
unsigned int dsal1; /* 0x5a4 */
unsigned int ddau1; /* 0x5a8 */
unsigned int ddal1; /* 0x5ac */
unsigned int dsat1; /* 0x5b0 */
unsigned int ddat1; /* 0x5b4 */
unsigned int dnlau1; /* 0x5b8 */
unsigned int dnlal1; /* 0x5bc */
unsigned int dcnt1; /* 0x5c0 */
unsigned int ddbs1; /* 0x5c4 */
unsigned int r21[14]; /* 0x5c8 - 0x5fc */
unsigned int devi_veni_2; /* 0x600 */
unsigned int gctrl_ga_revid; /* 0x604 */
unsigned int semaphore0_1_2_3; /* 0x608 */
unsigned int semaphore4_5_6_7; /* 0x60c */
unsigned int mbox0; /* 0x610 */
unsigned int mbox1; /* 0x614 */
unsigned int mbox2; /* 0x618 */
unsigned int mbox3; /* 0x61c */
unsigned int r22[629]; /* 0x620 - 0xff0 */
unsigned int csrbcr; /* 0xff4 */
unsigned int csrbsr; /* 0xff8 */
unsigned int cbar; /* 0xffc */
};
#define IRQ_VOWN 0x0001
#define IRQ_VIRQ1 0x0002
#define IRQ_VIRQ2 0x0004
#define IRQ_VIRQ3 0x0008
#define IRQ_VIRQ4 0x0010
#define IRQ_VIRQ5 0x0020
#define IRQ_VIRQ6 0x0040
#define IRQ_VIRQ7 0x0080
#define IRQ_DMA 0x0100
#define IRQ_LERR 0x0200
#define IRQ_VERR 0x0400
#define IRQ_res 0x0800
#define IRQ_IACK 0x1000
#define IRQ_SWINT 0x2000
#define IRQ_SYSFAIL 0x4000
#define IRQ_ACFAIL 0x8000
struct _TDMA_CMD_PACKET {
unsigned int dctl; /* DMA Control */
unsigned int dtbc; /* Transfer Byte Count */
unsigned int dlv; /* PCI Address */
unsigned int res1; /* Reserved */
unsigned int dva; /* Vme Address */
unsigned int res2; /* Reserved */
unsigned int dcpp; /* Pointer to Numed Cmd Packet with rPN */
unsigned int res3; /* Reserved */
};
#define VME_AM_A16 0x01
#define VME_AM_A24 0x02
#define VME_AM_A32 0x03
#define VME_AM_Axx 0x03
#define VME_AM_USR 0x04
#define VME_AM_SUP 0x08
#define VME_AM_DATA 0x10
#define VME_AM_PROG 0x20
#define VME_AM_Mxx (VME_AM_DATA | VME_AM_PROG)
#define VME_FLAG_D8 0x01
#define VME_FLAG_D16 0x02
#define VME_FLAG_D32 0x03
#define VME_FLAG_Dxx 0x03
#endif