Root/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 */
151struct 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
550

Archive Download this file



interactive