[ltq-dsl]
[openwrt/svn-archive/archive.git] / package / ltq-dsl / src / ifxmips_atm_fw_regs_common.h
1 #ifndef IFXMIPS_ATM_FW_REGS_COMMON_H
2 #define IFXMIPS_ATM_FW_REGS_COMMON_H
3
4
5
6 #if defined(CONFIG_DANUBE)
7 #include "ifxmips_atm_fw_regs_danube.h"
8 #elif defined(CONFIG_AMAZON_SE)
9 #include "ifxmips_atm_fw_regs_amazon_se.h"
10 #elif defined(CONFIG_AR9)
11 #include "ifxmips_atm_fw_regs_ar9.h"
12 #elif defined(CONFIG_VR9)
13 #include "ifxmips_atm_fw_regs_vr9.h"
14 #else
15 #error Platform is not specified!
16 #endif
17
18
19
20 /*
21 * PPE ATM Cell Header
22 */
23 #if defined(__BIG_ENDIAN)
24 struct uni_cell_header {
25 unsigned int gfc :4;
26 unsigned int vpi :8;
27 unsigned int vci :16;
28 unsigned int pti :3;
29 unsigned int clp :1;
30 };
31 #else
32 struct uni_cell_header {
33 unsigned int clp :1;
34 unsigned int pti :3;
35 unsigned int vci :16;
36 unsigned int vpi :8;
37 unsigned int gfc :4;
38 };
39 #endif // defined(__BIG_ENDIAN)
40
41 /*
42 * Inband Header and Trailer
43 */
44 #if defined(__BIG_ENDIAN)
45 struct rx_inband_trailer {
46 /* 0 - 3h */
47 unsigned int uu :8;
48 unsigned int cpi :8;
49 unsigned int stw_res1:4;
50 unsigned int stw_clp :1;
51 unsigned int stw_ec :1;
52 unsigned int stw_uu :1;
53 unsigned int stw_cpi :1;
54 unsigned int stw_ovz :1;
55 unsigned int stw_mfl :1;
56 unsigned int stw_usz :1;
57 unsigned int stw_crc :1;
58 unsigned int stw_il :1;
59 unsigned int stw_ra :1;
60 unsigned int stw_res2:2;
61 /* 4 - 7h */
62 unsigned int gfc :4;
63 unsigned int vpi :8;
64 unsigned int vci :16;
65 unsigned int pti :3;
66 unsigned int clp :1;
67 };
68
69 struct tx_inband_header {
70 /* 0 - 3h */
71 unsigned int gfc :4;
72 unsigned int vpi :8;
73 unsigned int vci :16;
74 unsigned int pti :3;
75 unsigned int clp :1;
76 /* 4 - 7h */
77 unsigned int uu :8;
78 unsigned int cpi :8;
79 unsigned int pad :8;
80 unsigned int res1 :8;
81 };
82 #else
83 struct rx_inband_trailer {
84 /* 0 - 3h */
85 unsigned int stw_res2:2;
86 unsigned int stw_ra :1;
87 unsigned int stw_il :1;
88 unsigned int stw_crc :1;
89 unsigned int stw_usz :1;
90 unsigned int stw_mfl :1;
91 unsigned int stw_ovz :1;
92 unsigned int stw_cpi :1;
93 unsigned int stw_uu :1;
94 unsigned int stw_ec :1;
95 unsigned int stw_clp :1;
96 unsigned int stw_res1:4;
97 unsigned int cpi :8;
98 unsigned int uu :8;
99 /* 4 - 7h */
100 unsigned int clp :1;
101 unsigned int pti :3;
102 unsigned int vci :16;
103 unsigned int vpi :8;
104 unsigned int gfc :4;
105 };
106
107 struct tx_inband_header {
108 /* 0 - 3h */
109 unsigned int clp :1;
110 unsigned int pti :3;
111 unsigned int vci :16;
112 unsigned int vpi :8;
113 unsigned int gfc :4;
114 /* 4 - 7h */
115 unsigned int res1 :8;
116 unsigned int pad :8;
117 unsigned int cpi :8;
118 unsigned int uu :8;
119 };
120 #endif // defined(__BIG_ENDIAN)
121
122 /*
123 * MIB Table Maintained by Firmware
124 */
125 struct wan_mib_table {
126 u32 res1;
127 u32 wrx_drophtu_cell;
128 u32 wrx_dropdes_pdu;
129 u32 wrx_correct_pdu;
130 u32 wrx_err_pdu;
131 u32 wrx_dropdes_cell;
132 u32 wrx_correct_cell;
133 u32 wrx_err_cell;
134 u32 wrx_total_byte;
135 u32 res2;
136 u32 wtx_total_pdu;
137 u32 wtx_total_cell;
138 u32 wtx_total_byte;
139 };
140
141 /*
142 * Host-PPE Communication Data Structure
143 */
144
145 #if defined(__BIG_ENDIAN)
146 struct wrx_queue_config {
147 /* 0h */
148 unsigned int res2 :27;
149 unsigned int dmach :4;
150 unsigned int errdp :1;
151 /* 1h */
152 unsigned int oversize :16;
153 unsigned int undersize :16;
154 /* 2h */
155 unsigned int res1 :16;
156 unsigned int mfs :16;
157 /* 3h */
158 unsigned int uumask :8;
159 unsigned int cpimask :8;
160 unsigned int uuexp :8;
161 unsigned int cpiexp :8;
162 };
163
164 struct wtx_port_config {
165 unsigned int res1 :27;
166 unsigned int qid :4;
167 unsigned int qsben :1;
168 };
169
170 struct wtx_queue_config {
171 unsigned int res1 :25;
172 unsigned int sbid :1;
173 unsigned int res2 :3;
174 unsigned int type :2;
175 unsigned int qsben :1;
176 };
177
178 struct wrx_dma_channel_config {
179 /* 0h */
180 unsigned int res1 :1;
181 unsigned int mode :2;
182 unsigned int rlcfg :1;
183 unsigned int desba :28;
184 /* 1h */
185 unsigned int chrl :16;
186 unsigned int clp1th :16;
187 /* 2h */
188 unsigned int deslen :16;
189 unsigned int vlddes :16;
190 };
191
192 struct wtx_dma_channel_config {
193 /* 0h */
194 unsigned int res2 :1;
195 unsigned int mode :2;
196 unsigned int res3 :1;
197 unsigned int desba :28;
198 /* 1h */
199 unsigned int res1 :32;
200 /* 2h */
201 unsigned int deslen :16;
202 unsigned int vlddes :16;
203 };
204
205 struct htu_entry {
206 unsigned int res1 :1;
207 unsigned int clp :1;
208 unsigned int pid :2;
209 unsigned int vpi :8;
210 unsigned int vci :16;
211 unsigned int pti :3;
212 unsigned int vld :1;
213 };
214
215 struct htu_mask {
216 unsigned int set :1;
217 unsigned int clp :1;
218 unsigned int pid_mask :2;
219 unsigned int vpi_mask :8;
220 unsigned int vci_mask :16;
221 unsigned int pti_mask :3;
222 unsigned int clear :1;
223 };
224
225 struct htu_result {
226 unsigned int res1 :12;
227 unsigned int cellid :4;
228 unsigned int res2 :5;
229 unsigned int type :1;
230 unsigned int ven :1;
231 unsigned int res3 :5;
232 unsigned int qid :4;
233 };
234
235 struct rx_descriptor {
236 /* 0 - 3h */
237 unsigned int own :1;
238 unsigned int c :1;
239 unsigned int sop :1;
240 unsigned int eop :1;
241 unsigned int res1 :3;
242 unsigned int byteoff :2;
243 unsigned int res2 :2;
244 unsigned int id :4;
245 unsigned int err :1;
246 unsigned int datalen :16;
247 /* 4 - 7h */
248 unsigned int res3 :4;
249 unsigned int dataptr :28;
250 };
251
252 struct tx_descriptor {
253 /* 0 - 3h */
254 unsigned int own :1;
255 unsigned int c :1;
256 unsigned int sop :1;
257 unsigned int eop :1;
258 unsigned int byteoff :5;
259 unsigned int res1 :5;
260 unsigned int iscell :1;
261 unsigned int clp :1;
262 unsigned int datalen :16;
263 /* 4 - 7h */
264 unsigned int res2 :4;
265 unsigned int dataptr :28;
266 };
267 #else
268 struct wrx_queue_config {
269 /* 0h */
270 unsigned int errdp :1;
271 unsigned int dmach :4;
272 unsigned int res2 :27;
273 /* 1h */
274 unsigned int undersize :16;
275 unsigned int oversize :16;
276 /* 2h */
277 unsigned int mfs :16;
278 unsigned int res1 :16;
279 /* 3h */
280 unsigned int cpiexp :8;
281 unsigned int uuexp :8;
282 unsigned int cpimask :8;
283 unsigned int uumask :8;
284 };
285
286 struct wtx_port_config {
287 unsigned int qsben :1;
288 unsigned int qid :4;
289 unsigned int res1 :27;
290 };
291
292 struct wtx_queue_config {
293 unsigned int qsben :1;
294 unsigned int type :2;
295 unsigned int res2 :3;
296 unsigned int sbid :1;
297 unsigned int res1 :25;
298 };
299
300 struct wrx_dma_channel_config
301 {
302 /* 0h */
303 unsigned int desba :28;
304 unsigned int rlcfg :1;
305 unsigned int mode :2;
306 unsigned int res1 :1;
307 /* 1h */
308 unsigned int clp1th :16;
309 unsigned int chrl :16;
310 /* 2h */
311 unsigned int vlddes :16;
312 unsigned int deslen :16;
313 };
314
315 struct wtx_dma_channel_config {
316 /* 0h */
317 unsigned int desba :28;
318 unsigned int res3 :1;
319 unsigned int mode :2;
320 unsigned int res2 :1;
321 /* 1h */
322 unsigned int res1 :32;
323 /* 2h */
324 unsigned int vlddes :16;
325 unsigned int deslen :16;
326 };
327
328 struct rx_descriptor {
329 /* 4 - 7h */
330 unsigned int dataptr :28;
331 unsigned int res3 :4;
332 /* 0 - 3h */
333 unsigned int datalen :16;
334 unsigned int err :1;
335 unsigned int id :4;
336 unsigned int res2 :2;
337 unsigned int byteoff :2;
338 unsigned int res1 :3;
339 unsigned int eop :1;
340 unsigned int sop :1;
341 unsigned int c :1;
342 unsigned int own :1;
343 };
344
345 struct tx_descriptor {
346 /* 4 - 7h */
347 unsigned int dataptr :28;
348 unsigned int res2 :4;
349 /* 0 - 3h */
350 unsigned int datalen :16;
351 unsigned int clp :1;
352 unsigned int iscell :1;
353 unsigned int res1 :5;
354 unsigned int byteoff :5;
355 unsigned int eop :1;
356 unsigned int sop :1;
357 unsigned int c :1;
358 unsigned int own :1;
359 };
360 #endif // defined(__BIG_ENDIAN)
361
362
363
364 #endif // IFXMIPS_ATM_FW_REGS_COMMON_H