a5f59b8c40b2dd11bcd6be0780fbbfec05a88ea5
[openwrt.git] / package / ifxmips-dsl-api / 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