1
2
3
4
5
6
7
8
9
10
11 #if defined(__sparc__) || defined(__FreeBSD__)
12
13 typedef void * bus_space_tag_t;
14 typedef u_int32_t pci_chipset_tag_t;
15 typedef caddr_t bus_space_handle_t;
16 typedef u_int32_t bus_size_t;
17 typedef caddr_t bus_addr_t;
18
19 #define bus_space_read_4(t, h, o) ((void) t, \
20 (*(volatile u_int32_t *)((h) + (o))))
21 #define bus_space_write_4(t, h, o, v) \
22 ((void) t, ((void)(*(volatile u_int32_t *)((h) + (o)) = (v))))
23
24 #if defined(__sparc__)
25 #define vtophys(x) ((u_int32_t)(x))
26 #endif
27
28 #endif
29
30
31 #define MID_SZTOB(X) ((X) * 256 * 4)
32 #define MID_BTOSZ(X) ((X) / 256 / 4)
33
34 #define MID_N_VC 1024
35 #define MID_NTX_CH 8
36 #define MID_ATMDATASZ 48
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 #define MID_PHYOFF 0x030000
55 #define MID_MIDOFF 0x040000
56 #define MID_RAMOFF 0x200000
57 #define MID_DRQOFF 0x204000
58 #define MID_DRQEND MID_DTQOFF
59 #define MID_DTQOFF 0x205000
60 #define MID_DTQEND MID_SLOFF
61 #define MID_SLOFF 0x206000
62 #define MID_SLEND MID_BUFOFF
63 #define MID_BUFOFF 0x207000
64 #define MID_PROBEOFF 0x21fffc
65 #define MID_PROBSIZE 0x020000
66 #define MID_MAXOFF 0x3ffffc
67
68
69
70
71
72
73
74
75
76 #define MID_RESID 0x40000
77
78 #define MID_VER(X) (((X) & 0xf0000000) >> 28)
79 #define MID_MID(X) (((X) & 0x700) >> 8)
80 #define MID_IS_SABRE(X) ((X) & 0x80)
81 #define MID_IS_SUNI(X) ((X) & 0x40)
82 #define MID_IS_UPIPE(X) ((X) & 0x20)
83 #define MID_DID(X) ((X) & 0x1f)
84
85 #define MID_INTACK 0x40004
86 #define MID_INTSTAT 0x40008
87 #define MID_INTENA 0x4000c
88
89 #define MID_TXCHAN(N) (1 << ((N) + 9))
90 #define MID_INT_TX 0x1fe00
91 #define MID_INT_DMA_OVR 0x00100
92 #define MID_INT_IDENT 0x00080
93 #define MID_INT_LERR 0x00040
94 #define MID_INT_DMA_ERR 0x00020
95 #define MID_INT_DMA_RX 0x00010
96 #define MID_INT_DMA_TX 0x00008
97 #define MID_INT_SERVICE 0x00004
98 #define MID_INT_SUNI 0x00002
99 #define MID_INT_STATS 0x00001
100
101 #define MID_INT_ANY 0x1ffff
102
103 #define MID_INTBITS "\20\21T7\20T6\17T5\16T4\15T3\14T2\13T1\12T0\11DMAOVR\10ID\7LERR\6DMAERR\5RXDMA\4TXDMA\3SERV\2SUNI\1STAT"
104
105 #define MID_MAST_CSR 0x40010
106
107 #define MID_IPL(X) (((X) & 0x1c0) >> 6)
108 #define MID_SETIPL(I) ((I) << 6)
109 #define MID_MCSR_TXLOCK 0x20
110
111 #define MID_MCSR_ENDMA 0x10
112 #define MID_MCSR_ENTX 0x08
113 #define MID_MCSR_ENRX 0x04
114 #define MID_MCSR_W1MS 0x02
115 #define MID_MCSR_W500US 0x01
116
117 #define MID_MCSRBITS "\20\6LCK\5DMAON\4TXON\3RXON\2W1MS\1W500US"
118
119 #define MID_STAT 0x40014
120
121 #define MID_VTRASH(X) (((X) >> 16) & 0xffff)
122
123 #define MID_OTRASH(X) ((X) & 0xffff)
124
125 #define MID_SERV_WRITE 0x40018
126 #define MID_DMA_ADDR 0x4001c
127
128
129 #define MID_DMA_WRRX 0x40020
130
131 #define MID_DMA_RDRX 0x40024
132
133 #define MID_DMA_WRTX 0x40028
134
135 #define MID_DMA_RDTX 0x4002c
136
137
138
139
140 #define MIDX_PLACE(N) (0x40040+((N)*0x10))
141
142 #define MIDX_MKPLACE(SZ,LOC) ( ((SZ) << 11) | (LOC) )
143 #define MIDX_LOC(X) ((X) & 0x7ff)
144 #define MIDX_SZ(X) ((X) >> 11)
145 #define MIDX_BASE(X) \
146 (((MIDX_LOC(X) << MIDV_LOCTOPSHFT) * sizeof(u_int32_t)) + MID_RAMOFF)
147
148
149 #define MIDX_READPTR(N) (0x40044+((N)*0x10))
150 #define MIDX_DESCSTART(N) (0x40048+((N)*0x10))
151
152
153
154
155
156
157
158
159
160
161 #define MID_VC(N) (MID_RAMOFF+((N)*0x10))
162
163 #define MIDV_TRASH 0x00000000
164 #define MIDV_AAL5 0x80000000
165 #define MIDV_NOAAL 0x40000000
166 #define MIDV_MASK 0xc0000000
167 #define MIDV_SETMODE(VC,M) (((VC) & ~(MIDV_MASK)) | (M))
168 #define MIDV_PTI 0x20000000
169 #define MIDV_LOCTOPSHFT 8
170 #define MIDV_LOCSHIFT 18
171 #define MIDV_LOCMASK 0x7ff
172 #define MIDV_LOC(X) (((X) >> MIDV_LOCSHIFT) & MIDV_LOCMASK)
173
174 #define MIDV_SZSHIFT 15
175 #define MIDV_SZ(X) (((X) >> MIDV_SZSHIFT) & 7)
176
177 #define MIDV_INSERVICE 0x1
178
179 #define MID_DST_RP(N) (MID_VC(N)|0x4)
180
181 #define MIDV_DSTART_SHIFT 16
182 #define MIDV_DSTART(X) (((X) >> MIDV_DSTART_SHIFT) & 0x7fff)
183 #define MIDV_READP_MASK 0x7fff
184
185 #define MID_WP_ST_CNT(N) (MID_VC(N)|0x8)
186
187 #define MIDV_WRITEP_MASK 0x7fff0000
188 #define MIDV_WRITEP_SHIFT 16
189 #define MIDV_ST_IDLE 0x0000
190 #define MIDV_ST_TRASH 0xc000
191 #define MIDV_ST_REASS 0x4000
192 #define MIDV_CCOUNT 0x7ff
193
194 #define MID_CRC(N) (MID_VC(N)|0xc)
195
196
197
198
199
200 #define MID_DMA_END (1 << 5)
201 #define MID_DMA_CNT(X) (((X) >> 16) & 0xffff)
202 #define MID_DMA_TXCHAN(X) (((X) >> 6) & 0x7)
203 #define MID_DMA_RXVCI(X) (((X) >> 6) & 0x3ff)
204 #define MID_DMA_TYPE(X) ((X) & 0xf)
205
206 #define MID_DRQ_N 512
207 #define MID_DRQ_A2REG(N) (((N) - MID_DRQOFF) >> 3)
208
209 #define MID_DRQ_REG2A(N) (((N) << 3) + MID_DRQOFF)
210
211
212 #define MID_MK_RXQ_ENI(CNT,VC,END,TYPE) \
213 ( ((CNT) << 16)|((VC) << 6)|(END)|(TYPE) )
214
215 #define MID_MK_RXQ_ADP(CNT,VC,END,JK) \
216 ( ((CNT) << 12)|((VC) << 2)|((END) >> 4)|(((JK) != 0) ? 1 : 0))
217
218
219
220
221 #define MID_DTQ_N 512
222 #define MID_DTQ_A2REG(N) (((N) - MID_DTQOFF) >> 3)
223
224 #define MID_DTQ_REG2A(N) (((N) << 3) + MID_DTQOFF)
225
226
227
228 #define MID_MK_TXQ_ENI(CNT,CHN,END,TYPE) \
229 ( ((CNT) << 16)|((CHN) << 6)|(END)|(TYPE) )
230
231 #define MID_MK_TXQ_ADP(CNT,CHN,END,JK) \
232 ( ((CNT) << 12)|((CHN) << 2)|((END) >> 4)|(((JK) != 0) ? 1 : 0) )
233
234
235
236
237
238 #define MIDDMA_JK 0x3
239 #define MIDDMA_BYTE 0x1
240 #define MIDDMA_2BYTE 0x2
241 #define MIDDMA_WORD 0x0
242 #define MIDDMA_2WORD 0x7
243 #define MIDDMA_4WORD 0x4
244 #define MIDDMA_8WORD 0x5
245 #define MIDDMA_16WORD 0x6
246 #define MIDDMA_2WMAYBE 0xf
247 #define MIDDMA_4WMAYBE 0xc
248 #define MIDDMA_8WMAYBE 0xd
249 #define MIDDMA_16WMAYBE 0xe
250
251 #define MIDDMA_MAYBE 0xc
252 #define MIDDMA_MAXBURST (16 * sizeof(u_int32_t))
253
254
255
256
257
258 #define MID_SL_N 1024
259 #define MID_SL_A2REG(N) (((N) - MID_SLOFF) >> 2)
260
261 #define MID_SL_REG2A(N) (((N) << 2) + MID_SLOFF)
262
263
264
265
266
267
268
269
270
271 #define MID_RBD_SIZE 4
272 #define MID_CHDR_SIZE 4
273 #define MID_RBD_ID(X) ((X) & 0xfe000000)
274 #define MID_RBD_STDID 0x36000000
275 #define MID_RBD_CLP 0x01000000
276 #define MID_RBD_CE 0x00010000
277 #define MID_RBD_T 0x00001000
278 #define MID_RBD_CRCERR 0x00000800
279 #define MID_RBD_CNT(X) ((X) & 0x7ff)
280
281
282
283
284
285
286 #define MID_TBD_SIZE 8
287 #define MID_TBD_MK1(AAL,PR_RATE,CNT) \
288 (MID_TBD_STDID|(AAL)|((PR_RATE) << 19)|(CNT))
289 #define MID_TBD_STDID 0xb0000000
290 #define MID_TBD_AAL5 0x08000000
291 #define MID_TBD_NOAAL5 0x00000000
292
293 #define MID_TBD_MK2(VCI,PTI,CLP) \
294 (((VCI) << 4)|((PTI) << 1)|(CLP))
295
296
297
298
299
300
301 #define MID_PDU_SIZE 8
302 #define MID_PDU_MK1(UU,CPI,LEN) \
303 (((UU) << 24)|((CPI) << 16)|(LEN))
304 #define MID_PDU_LEN(X) ((X) & 0xffff)