lantiq: Tune the XWAY subtarget cflags
[openwrt/staging/yousong.git] / package / platform / lantiq / ltq-atm / src / ifxmips_atm_fw_regs_common.h
1 /******************************************************************************
2 **
3 ** FILE NAME : ifxmips_atm_fw_regs_common.h
4 ** PROJECT : UEIP
5 ** MODULES : ATM (ADSL)
6 **
7 ** DATE : 1 AUG 2005
8 ** AUTHOR : Xu Liang
9 ** DESCRIPTION : ATM Driver (Firmware Register Structures)
10 ** COPYRIGHT : Copyright (c) 2006
11 ** Infineon Technologies AG
12 ** Am Campeon 1-12, 85579 Neubiberg, Germany
13 **
14 ** This program is free software; you can redistribute it and/or modify
15 ** it under the terms of the GNU General Public License as published by
16 ** the Free Software Foundation; either version 2 of the License, or
17 ** (at your option) any later version.
18 **
19 ** HISTORY
20 ** $Date $Author $Comment
21 ** 4 AUG 2005 Xu Liang Initiate Version
22 ** 23 OCT 2006 Xu Liang Add GPL header.
23 ** 9 JAN 2007 Xu Liang First version got from Anand (IC designer)
24 *******************************************************************************/
25
26
27
28 #ifndef IFXMIPS_ATM_FW_REGS_COMMON_H
29 #define IFXMIPS_ATM_FW_REGS_COMMON_H
30
31
32 #if defined(CONFIG_DANUBE)
33 #include "ifxmips_atm_fw_regs_danube.h"
34 #elif defined(CONFIG_AMAZON_SE)
35 #include "ifxmips_atm_fw_regs_amazon_se.h"
36 #elif defined(CONFIG_AR9)
37 #include "ifxmips_atm_fw_regs_ar9.h"
38 #elif defined(CONFIG_VR9)
39 #include "ifxmips_atm_fw_regs_vr9.h"
40 #else
41 #error Platform is not specified!
42 #endif
43
44
45
46 /*
47 * PPE ATM Cell Header
48 */
49 #if defined(__BIG_ENDIAN)
50 struct uni_cell_header {
51 unsigned int gfc :4;
52 unsigned int vpi :8;
53 unsigned int vci :16;
54 unsigned int pti :3;
55 unsigned int clp :1;
56 };
57 #else
58 struct uni_cell_header {
59 unsigned int clp :1;
60 unsigned int pti :3;
61 unsigned int vci :16;
62 unsigned int vpi :8;
63 unsigned int gfc :4;
64 };
65 #endif // defined(__BIG_ENDIAN)
66
67 /*
68 * Inband Header and Trailer
69 */
70 #if defined(__BIG_ENDIAN)
71 struct rx_inband_trailer {
72 /* 0 - 3h */
73 unsigned int uu :8;
74 unsigned int cpi :8;
75 unsigned int stw_res1:4;
76 unsigned int stw_clp :1;
77 unsigned int stw_ec :1;
78 unsigned int stw_uu :1;
79 unsigned int stw_cpi :1;
80 unsigned int stw_ovz :1;
81 unsigned int stw_mfl :1;
82 unsigned int stw_usz :1;
83 unsigned int stw_crc :1;
84 unsigned int stw_il :1;
85 unsigned int stw_ra :1;
86 unsigned int stw_res2:2;
87 /* 4 - 7h */
88 unsigned int gfc :4;
89 unsigned int vpi :8;
90 unsigned int vci :16;
91 unsigned int pti :3;
92 unsigned int clp :1;
93 };
94
95 struct tx_inband_header {
96 /* 0 - 3h */
97 unsigned int gfc :4;
98 unsigned int vpi :8;
99 unsigned int vci :16;
100 unsigned int pti :3;
101 unsigned int clp :1;
102 /* 4 - 7h */
103 unsigned int uu :8;
104 unsigned int cpi :8;
105 unsigned int pad :8;
106 unsigned int res1 :8;
107 };
108 #else
109 struct rx_inband_trailer {
110 /* 0 - 3h */
111 unsigned int stw_res2:2;
112 unsigned int stw_ra :1;
113 unsigned int stw_il :1;
114 unsigned int stw_crc :1;
115 unsigned int stw_usz :1;
116 unsigned int stw_mfl :1;
117 unsigned int stw_ovz :1;
118 unsigned int stw_cpi :1;
119 unsigned int stw_uu :1;
120 unsigned int stw_ec :1;
121 unsigned int stw_clp :1;
122 unsigned int stw_res1:4;
123 unsigned int cpi :8;
124 unsigned int uu :8;
125 /* 4 - 7h */
126 unsigned int clp :1;
127 unsigned int pti :3;
128 unsigned int vci :16;
129 unsigned int vpi :8;
130 unsigned int gfc :4;
131 };
132
133 struct tx_inband_header {
134 /* 0 - 3h */
135 unsigned int clp :1;
136 unsigned int pti :3;
137 unsigned int vci :16;
138 unsigned int vpi :8;
139 unsigned int gfc :4;
140 /* 4 - 7h */
141 unsigned int res1 :8;
142 unsigned int pad :8;
143 unsigned int cpi :8;
144 unsigned int uu :8;
145 };
146 #endif // defined(__BIG_ENDIAN)
147
148 /*
149 * MIB Table Maintained by Firmware
150 */
151 struct wan_mib_table {
152 u32 res1;
153 u32 wrx_drophtu_cell;
154 u32 wrx_dropdes_pdu;
155 u32 wrx_correct_pdu;
156 u32 wrx_err_pdu;
157 u32 wrx_dropdes_cell;
158 u32 wrx_correct_cell;
159 u32 wrx_err_cell;
160 u32 wrx_total_byte;
161 u32 res2;
162 u32 wtx_total_pdu;
163 u32 wtx_total_cell;
164 u32 wtx_total_byte;
165 };
166
167 /*
168 * Host-PPE Communication Data Structure
169 */
170
171 #if defined(__BIG_ENDIAN)
172 struct fw_ver_id {
173 unsigned int family :4;
174 unsigned int fwtype :4;
175 unsigned int interface :4;
176 unsigned int fwmode :4;
177 unsigned int major :8;
178 unsigned int minor :8;
179 };
180
181 struct wrx_queue_config {
182 /* 0h */
183 unsigned int res2 :27;
184 unsigned int dmach :4;
185 unsigned int errdp :1;
186 /* 1h */
187 unsigned int oversize :16;
188 unsigned int undersize :16;
189 /* 2h */
190 unsigned int res1 :16;
191 unsigned int mfs :16;
192 /* 3h */
193 unsigned int uumask :8;
194 unsigned int cpimask :8;
195 unsigned int uuexp :8;
196 unsigned int cpiexp :8;
197 };
198
199 struct wrx_queue_context {
200 /* 0h */
201 unsigned int curr_len :16;
202 unsigned int res0 :12;
203 unsigned int mfs :1;
204 unsigned int ec :1;
205 unsigned int clp1 :1;
206 unsigned int aal5dp :1;
207
208 /* 1h */
209 unsigned int intcrc;
210
211 /* 2h, 3h */
212 unsigned int curr_des0;
213 unsigned int curr_des1;
214
215 /* 4h - 0xE */
216 unsigned int res1[11];
217
218 unsigned int last_dword;
219 };
220
221 struct wtx_port_config {
222 unsigned int res1 :27;
223 unsigned int qid :4;
224 unsigned int qsben :1;
225 };
226
227 struct wtx_queue_config {
228 unsigned int res1 :16;
229 unsigned int same_vc_qmap:8;
230 unsigned int res2 :1;
231 unsigned int sbid :1;
232 unsigned int qsb_vcid :4; // Which QSB queue (VCID) does this TX queue map to.
233 unsigned int res3 :1;
234 unsigned int qsben :1;
235 };
236
237 struct wrx_desc_context {
238 unsigned int dmach_wrptr : 16;
239 unsigned int dmach_rdptr : 16;
240
241 unsigned int res0 : 16;
242 unsigned int dmach_fcnt : 16;
243
244 unsigned int res1 : 11;
245 unsigned int desbuf_wrptr : 5;
246 unsigned int res2 : 11;
247 unsigned int desbuf_rdptr : 5;
248
249 unsigned int res3 : 27;
250 unsigned int desbuf_vcnt : 5;
251 };
252
253 struct wrx_dma_channel_config {
254 /* 0h */
255 unsigned int res1 :1;
256 unsigned int mode :2;
257 unsigned int rlcfg :1;
258 unsigned int desba :28;
259 /* 1h */
260 unsigned int chrl :16;
261 unsigned int clp1th :16;
262 /* 2h */
263 unsigned int deslen :16;
264 unsigned int vlddes :16;
265 };
266
267 struct wtx_dma_channel_config {
268 /* 0h */
269 unsigned int res2 :1;
270 unsigned int mode :2;
271 unsigned int res3 :1;
272 unsigned int desba :28;
273 /* 1h */
274 unsigned int res1 :32;
275 /* 2h */
276 unsigned int deslen :16;
277 unsigned int vlddes :16;
278 };
279
280 struct htu_entry {
281 unsigned int res1 :1;
282 unsigned int clp :1;
283 unsigned int pid :2;
284 unsigned int vpi :8;
285 unsigned int vci :16;
286 unsigned int pti :3;
287 unsigned int vld :1;
288 };
289
290 struct htu_mask {
291 unsigned int set :1;
292 unsigned int clp :1;
293 unsigned int pid_mask :2;
294 unsigned int vpi_mask :8;
295 unsigned int vci_mask :16;
296 unsigned int pti_mask :3;
297 unsigned int clear :1;
298 };
299
300 struct htu_result {
301 unsigned int res1 :12;
302 unsigned int cellid :4;
303 unsigned int res2 :5;
304 unsigned int type :1;
305 unsigned int ven :1;
306 unsigned int res3 :5;
307 unsigned int qid :4;
308 };
309
310 struct rx_descriptor {
311 /* 0 - 3h */
312 unsigned int own :1;
313 unsigned int c :1;
314 unsigned int sop :1;
315 unsigned int eop :1;
316 unsigned int res1 :3;
317 unsigned int byteoff :2;
318 unsigned int res2 :2;
319 unsigned int id :4;
320 unsigned int err :1;
321 unsigned int datalen :16;
322 /* 4 - 7h */
323 unsigned int res3 :4;
324 unsigned int dataptr :28;
325 };
326
327 struct tx_descriptor {
328 /* 0 - 3h */
329 unsigned int own :1;
330 unsigned int c :1;
331 unsigned int sop :1;
332 unsigned int eop :1;
333 unsigned int byteoff :5;
334 unsigned int res1 :5;
335 unsigned int iscell :1;
336 unsigned int clp :1;
337 unsigned int datalen :16;
338 /* 4 - 7h */
339 unsigned int res2 :4;
340 unsigned int dataptr :28;
341 };
342 #else
343 struct wrx_queue_config {
344 /* 0h */
345 unsigned int errdp :1;
346 unsigned int dmach :4;
347 unsigned int res2 :27;
348 /* 1h */
349 unsigned int undersize :16;
350 unsigned int oversize :16;
351 /* 2h */
352 unsigned int mfs :16;
353 unsigned int res1 :16;
354 /* 3h */
355 unsigned int cpiexp :8;
356 unsigned int uuexp :8;
357 unsigned int cpimask :8;
358 unsigned int uumask :8;
359 };
360
361 struct wtx_port_config {
362 unsigned int qsben :1;
363 unsigned int qid :4;
364 unsigned int res1 :27;
365 };
366
367 struct wtx_queue_config {
368 unsigned int qsben :1;
369 unsigned int res3 :1;
370 unsigned int qsb_vcid :4; // Which QSB queue (VCID) does this TX queue map to.
371 unsigned int sbid :1;
372 unsigned int res2 :1;
373 unsigned int same_vc_qmap:8;
374 unsigned int res1 :16;
375 };
376
377 struct wrx_dma_channel_config
378 {
379 /* 0h */
380 unsigned int desba :28;
381 unsigned int rlcfg :1;
382 unsigned int mode :2;
383 unsigned int res1 :1;
384 /* 1h */
385 unsigned int clp1th :16;
386 unsigned int chrl :16;
387 /* 2h */
388 unsigned int vlddes :16;
389 unsigned int deslen :16;
390 };
391
392 struct wtx_dma_channel_config {
393 /* 0h */
394 unsigned int desba :28;
395 unsigned int res3 :1;
396 unsigned int mode :2;
397 unsigned int res2 :1;
398 /* 1h */
399 unsigned int res1 :32;
400 /* 2h */
401 unsigned int vlddes :16;
402 unsigned int deslen :16;
403 };
404
405 struct rx_descriptor {
406 /* 4 - 7h */
407 unsigned int dataptr :28;
408 unsigned int res3 :4;
409 /* 0 - 3h */
410 unsigned int datalen :16;
411 unsigned int err :1;
412 unsigned int id :4;
413 unsigned int res2 :2;
414 unsigned int byteoff :2;
415 unsigned int res1 :3;
416 unsigned int eop :1;
417 unsigned int sop :1;
418 unsigned int c :1;
419 unsigned int own :1;
420 };
421
422 struct tx_descriptor {
423 /* 4 - 7h */
424 unsigned int dataptr :28;
425 unsigned int res2 :4;
426 /* 0 - 3h */
427 unsigned int datalen :16;
428 unsigned int clp :1;
429 unsigned int iscell :1;
430 unsigned int res1 :5;
431 unsigned int byteoff :5;
432 unsigned int eop :1;
433 unsigned int sop :1;
434 unsigned int c :1;
435 unsigned int own :1;
436 };
437 #endif // defined(__BIG_ENDIAN)
438
439 #if defined(ENABLE_ATM_RETX) && ENABLE_ATM_RETX
440 #if defined(__BIG_ENDIAN)
441
442 struct Retx_adsl_ppe_intf {
443 unsigned int res0_0 : 16;
444 unsigned int dtu_sid : 8;
445 unsigned int dtu_timestamp : 8;
446
447 unsigned int res1_0 : 16;
448 unsigned int local_time : 8;
449 unsigned int res1_1 : 5;
450 unsigned int is_last_cw : 1;
451 unsigned int reinit_flag : 1;
452 unsigned int is_bad_cw : 1;
453 };
454
455 struct Retx_adsl_ppe_intf_rec {
456
457 unsigned int local_time : 8;
458 unsigned int res1_1 : 5;
459 unsigned int is_last_cw : 1;
460 unsigned int reinit_flag : 1;
461 unsigned int is_bad_cw : 1;
462
463 unsigned int dtu_sid : 8;
464 unsigned int dtu_timestamp : 8;
465
466 };
467
468 struct Retx_mode_cfg {
469 unsigned int res0 :8;
470 unsigned int invld_range :8; // used for rejecting the too late arrival of the retransmitted DTU
471 unsigned int buff_size :8; // the total number of cells in playout buffer is 32 * buff_size
472 unsigned int res1 :7;
473 unsigned int retx_en :1;
474 };
475
476 struct Retx_Tsync_cfg {
477 unsigned int fw_alpha :16; // number of consecutive HEC error cell causes that the cell delineation state machine transit from SYNC to HUNT (0 means never)
478 unsigned int sync_inp :16; // reserved
479 };
480
481 struct Retx_Td_cfg {
482 unsigned int res0 :8;
483 unsigned int td_max :8; // maximum delay between the time a DTU is first created at transmitter and the time the DTU is sent out of ReTX layer at receiver
484 unsigned int res1 :8;
485 unsigned int td_min :8; // minimum delay between the time a DTU is first created at transmitter and the time the DTU is sent out of ReTX layer at receiver
486 };
487
488 struct Retx_MIB_Timer_cfg {
489 unsigned int ticks_per_sec : 16;
490 unsigned int tick_cycle : 16;
491 };
492
493 struct DTU_stat_info {
494 unsigned int complete : 1;
495 unsigned int bad : 1;
496 unsigned int res0_0 : 14;
497 unsigned int time_stamp : 8;
498 unsigned int cell_cnt : 8;
499
500 unsigned int dtu_rd_ptr : 16;
501 unsigned int dtu_wr_ptr : 16;
502 };
503
504 struct Retx_ctrl_field {
505 unsigned int res0 : 1;
506
507 unsigned int l2_drop : 1;
508 unsigned int res1 : 13;
509 unsigned int retx : 1;
510
511 unsigned int dtu_sid : 8;
512 unsigned int cell_sid : 8;
513 };
514
515 #else
516 #error Little Endian is not supported yet.
517 #endif
518
519 struct dsl_param {
520 unsigned int update_flag; // 00
521 unsigned int res0; // 04
522 unsigned int MinDelayrt; // 08
523 unsigned int MaxDelayrt; // 0C
524 unsigned int res1; // 10
525 unsigned int res2; // 14
526 unsigned int RetxEnable; // 18
527 unsigned int ServiceSpecificReTx; // 1C
528 unsigned int res3; // 20
529 unsigned int ReTxPVC; // 24
530 unsigned int res4; // 28
531 unsigned int res5; // 2C
532 unsigned int res6; // 30
533 unsigned int res7; // 34
534 unsigned int res8; // 38
535 unsigned int res9; // 3C
536 unsigned int res10; // 40
537 unsigned int res11; // 44
538 unsigned int res12; // 48
539 unsigned int res13; // 4C
540 unsigned int RxDtuCorruptedCNT; // 50
541 unsigned int RxRetxDtuUnCorrectedCNT;// 54
542 unsigned int RxLastEFB; // 58
543 unsigned int RxDtuCorrectedCNT; // 5C
544 };
545 #endif
546
547
548
549 #endif // IFXMIPS_ATM_FW_REGS_COMMON_H