aboutsummaryrefslogtreecommitdiff
path: root/include/tsi148.h
blob: a0beba73e4640bd7051b31909216ab0f40819d9a (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
/*
 * (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