[kernel] move lots of kernel related packages to the new system/ folder
[openwrt.git] / package / system / 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  */
152 struct 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