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

Archive Download this file



interactive