]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - arch/powerpc/include/asm/fsl_fman.h
Merge remote-tracking branch 'u-boot-imx/master'
[karo-tx-uboot.git] / arch / powerpc / include / asm / fsl_fman.h
1 /*
2  * MPC85xx Internal Memory Map
3  *
4  * Copyright 2010-2011 Freescale Semiconductor, Inc.
5  *
6  * See file CREDITS for list of people who contributed to this
7  * project.
8  *
9  * This program is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License as
11  * published by the Free Software Foundation; either version 2 of
12  * the License, or (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
22  * MA 02111-1307 USA
23  */
24
25 #ifndef __FSL_FMAN_H__
26 #define __FSL_FMAN_H__
27
28 #include <asm/types.h>
29
30 typedef struct fm_bmi_common {
31         u32     fmbm_init;      /* BMI initialization */
32         u32     fmbm_cfg1;      /* BMI configuration1 */
33         u32     fmbm_cfg2;      /* BMI configuration2 */
34         u32     res0[0x5];
35         u32     fmbm_ievr;      /* interrupt event register */
36         u32     fmbm_ier;       /* interrupt enable register */
37         u32     fmbm_ifr;       /* interrupt force register */
38         u32     res1[0x5];
39         u32     fmbm_arb[0x8];  /* BMI arbitration */
40         u32     res2[0x28];
41         u32     fmbm_gde;       /* global debug enable */
42         u32     fmbm_pp[0x3f];  /* BMI port parameters */
43         u32     res3;
44         u32     fmbm_pfs[0x3f]; /* BMI port FIFO size */
45         u32     res4;
46         u32     fmbm_ppid[0x3f];/* port partition ID */
47 } fm_bmi_common_t;
48
49 typedef struct fm_qmi_common {
50         u32     fmqm_gc;        /* general configuration register */
51         u32     res0;
52         u32     fmqm_eie;       /* error interrupt event register */
53         u32     fmqm_eien;      /* error interrupt enable register */
54         u32     fmqm_eif;       /* error interrupt force register */
55         u32     fmqm_ie;        /* interrupt event register */
56         u32     fmqm_ien;       /* interrupt enable register */
57         u32     fmqm_if;        /* interrupt force register */
58         u32     fmqm_gs;        /* global status register */
59         u32     fmqm_ts;        /* task status register */
60         u32     fmqm_etfc;      /* enqueue total frame counter */
61         u32     fmqm_dtfc;      /* dequeue total frame counter */
62         u32     fmqm_dc0;       /* dequeue counter 0 */
63         u32     fmqm_dc1;       /* dequeue counter 1 */
64         u32     fmqm_dc2;       /* dequeue counter 2 */
65         u32     fmqm_dc3;       /* dequeue counter 3 */
66         u32     fmqm_dfnoc;     /* dequeue FQID not override counter */
67         u32     fmqm_dfcc;      /* dequeue FQID from context counter */
68         u32     fmqm_dffc;      /* dequeue FQID from FD counter */
69         u32     fmqm_dcc;       /* dequeue confirm counter */
70         u32     res1[0xc];
71         u32     fmqm_dtrc;      /* debug trap configuration register */
72         u32     fmqm_efddd;     /* enqueue frame descriptor dynamic debug */
73         u32     res3[0x2];
74         u32     res4[0xdc];     /* missing debug regs */
75 } fm_qmi_common_t;
76
77 typedef struct fm_bmi {
78         u8      res[1024];
79 } fm_bmi_t;
80
81 typedef struct fm_qmi {
82         u8      res[1024];
83 } fm_qmi_t;
84
85 struct fm_bmi_rx_port {
86         u32 fmbm_rcfg;  /* Rx configuration */
87         u32 fmbm_rst;   /* Rx status */
88         u32 fmbm_rda;   /* Rx DMA attributes */
89         u32 fmbm_rfp;   /* Rx FIFO parameters */
90         u32 fmbm_rfed;  /* Rx frame end data */
91         u32 fmbm_ricp;  /* Rx internal context parameters */
92         u32 fmbm_rim;   /* Rx internal margins */
93         u32 fmbm_rebm;  /* Rx external buffer margins */
94         u32 fmbm_rfne;  /* Rx frame next engine */
95         u32 fmbm_rfca;  /* Rx frame command attributes */
96         u32 fmbm_rfpne; /* Rx frame parser next engine */
97         u32 fmbm_rpso;  /* Rx parse start offset */
98         u32 fmbm_rpp;   /* Rx policer profile */
99         u32 fmbm_rccb;  /* Rx coarse classification base */
100         u32 res1[0x2];
101         u32 fmbm_rprai[0x8];    /* Rx parse results array Initialization */
102         u32 fmbm_rfqid;         /* Rx frame queue ID */
103         u32 fmbm_refqid;        /* Rx error frame queue ID */
104         u32 fmbm_rfsdm;         /* Rx frame status discard mask */
105         u32 fmbm_rfsem;         /* Rx frame status error mask */
106         u32 fmbm_rfene;         /* Rx frame enqueue next engine */
107         u32 res2[0x23];
108         u32 fmbm_ebmpi[0x8];    /* buffer manager pool information */
109         u32 fmbm_acnt[0x8];     /* allocate counter */
110         u32 res3[0x8];
111         u32 fmbm_cgm[0x8];      /* congestion group map */
112         u32 fmbm_mpd;           /* BMan pool depletion */
113         u32 res4[0x1F];
114         u32 fmbm_rstc;          /* Rx statistics counters */
115         u32 fmbm_rfrc;          /* Rx frame counters */
116         u32 fmbm_rfbc;          /* Rx bad frames counter */
117         u32 fmbm_rlfc;          /* Rx large frames counter */
118         u32 fmbm_rffc;          /* Rx filter frames counter */
119         u32 fmbm_rfdc;          /* Rx frame discard counter */
120         u32 fmbm_rfldec;        /* Rx frames list DMA error counter */
121         u32 fmbm_rodc;          /* Rx out of buffers discard counter */
122         u32 fmbm_rbdc;          /* Rx buffers deallocate counter */
123         u32 res5[0x17];
124         u32 fmbm_rpc;           /* Rx performance counters */
125         u32 fmbm_rpcp;          /* Rx performance count parameters */
126         u32 fmbm_rccn;          /* Rx cycle counter */
127         u32 fmbm_rtuc;          /* Rx tasks utilization counter */
128         u32 fmbm_rrquc;         /* Rx receive queue utilization counter */
129         u32 fmbm_rduc;          /* Rx DMA utilization counter */
130         u32 fmbm_rfuc;          /* Rx FIFO utilization counter */
131         u32 fmbm_rpac;          /* Rx pause activation counter */
132         u32 res6[0x18];
133         u32 fmbm_rdbg;          /* Rx debug configuration */
134 };
135
136 /* FMBM_RCFG - Rx configuration */
137 #define FMBM_RCFG_EN            0x80000000 /* port is enabled to receive data */
138 #define FMBM_RCFG_FDOVR         0x02000000 /* frame discard override */
139 #define FMBM_RCFG_IM            0x01000000 /* independent mode */
140
141 /* FMBM_RST - Rx status */
142 #define FMBM_RST_BSY            0x80000000 /* Rx port is busy */
143
144 /* FMBM_RFCA - Rx frame command attributes */
145 #define FMBM_RFCA_ORDER         0x80000000
146 #define FMBM_RFCA_MR_MASK       0x003f0000
147 #define FMBM_RFCA_MR(x)         ((x << 16) & FMBM_RFCA_MR_MASK)
148
149 /* FMBM_RSTC - Rx statistics */
150 #define FMBM_RSTC_EN            0x80000000 /* statistics counters enable */
151
152 struct fm_bmi_tx_port {
153         u32 fmbm_tcfg;  /* Tx configuration */
154         u32 fmbm_tst;   /* Tx status */
155         u32 fmbm_tda;   /* Tx DMA attributes */
156         u32 fmbm_tfp;   /* Tx FIFO parameters */
157         u32 fmbm_tfed;  /* Tx frame end data */
158         u32 fmbm_ticp;  /* Tx internal context parameters */
159         u32 fmbm_tfne;  /* Tx frame next engine */
160         u32 fmbm_tfca;  /* Tx frame command attributes */
161         u32 fmbm_tcfqid;/* Tx confirmation frame queue ID */
162         u32 fmbm_tfeqid;/* Tx error frame queue ID */
163         u32 fmbm_tfene; /* Tx frame enqueue next engine */
164         u32 fmbm_trlmts;/* Tx rate limiter scale */
165         u32 fmbm_trlmt; /* Tx rate limiter */
166         u32 res0[0x73];
167         u32 fmbm_tstc;  /* Tx statistics counters */
168         u32 fmbm_tfrc;  /* Tx frame counter */
169         u32 fmbm_tfdc;  /* Tx frames discard counter */
170         u32 fmbm_tfledc;/* Tx frame length error discard counter */
171         u32 fmbm_tfufdc;/* Tx frame unsupported format discard counter */
172         u32 fmbm_tbdc;  /* Tx buffers deallocate counter */
173         u32 res1[0x1a];
174         u32 fmbm_tpc;   /* Tx performance counters */
175         u32 fmbm_tpcp;  /* Tx performance count parameters */
176         u32 fmbm_tccn;  /* Tx cycle counter */
177         u32 fmbm_ttuc;  /* Tx tasks utilization counter */
178         u32 fmbm_ttcquc;/* Tx transmit confirm queue utilization counter */
179         u32 fmbm_tduc;  /* Tx DMA utilization counter */
180         u32 fmbm_tfuc;  /* Tx FIFO utilization counter */
181         u32 res2[0x19];
182         u32 fmbm_tdcfg; /* Tx debug configuration */
183 };
184
185 /* FMBM_TCFG - Tx configuration */
186 #define FMBM_TCFG_EN    0x80000000 /* port is enabled to transmit data */
187 #define FMBM_TCFG_IM    0x01000000 /* independent mode enable */
188
189 /* FMBM_TST - Tx status */
190 #define FMBM_TST_BSY            0x80000000 /* Tx port is busy */
191
192 /* FMBM_TFCA - Tx frame command attributes */
193 #define FMBM_TFCA_ORDER         0x80000000
194 #define FMBM_TFCA_MR_MASK       0x003f0000
195 #define FMBM_TFCA_MR(x)         ((x << 16) & FMBM_TFCA_MR_MASK)
196
197 /* FMBM_TSTC - Tx statistics counters */
198 #define FMBM_TSTC_EN            0x80000000
199
200 /* FMBM_INIT - BMI initialization register */
201 #define FMBM_INIT_START         0x80000000 /* init internal buffers */
202
203 /* FMBM_CFG1 - BMI configuration 1 */
204 #define FMBM_CFG1_FBPS_MASK     0x03ff0000 /* Free buffer pool size */
205 #define FMBM_CFG1_FBPS_SHIFT    16
206 #define FMBM_CFG1_FBPO_MASK     0x000003ff /* Free buffer pool offset */
207
208 /* FMBM_IEVR - interrupt event */
209 #define FMBM_IEVR_PEC           0x80000000 /* pipeline table ECC err detected */
210 #define FMBM_IEVR_LEC           0x40000000 /* linked list RAM ECC error */
211 #define FMBM_IEVR_SEC           0x20000000 /* statistics count RAM ECC error */
212 #define FMBM_IEVR_CLEAR_ALL     (FMBM_IEVR_PEC | FMBM_IEVR_LEC | FMBM_IEVR_SEC)
213
214 /* FMBM_IER - interrupt enable */
215 #define FMBM_IER_PECE           0x80000000 /* PEC interrupt enable */
216 #define FMBM_IER_LECE           0x40000000 /* LEC interrupt enable */
217 #define FMBM_IER_SECE           0x20000000 /* SEC interrupt enable */
218
219 #define FMBM_IER_DISABLE_ALL    0x00000000
220
221 /* FMBM_PP - BMI Port Parameters */
222 #define FMBM_PP_MXT_MASK        0x3f000000 /* Max # tasks */
223 #define FMBM_PP_MXT(x)          (((x-1) << 24) & FMBM_PP_MXT_MASK)
224 #define FMBM_PP_MXD_MASK        0x00000f00 /* Max DMA */
225 #define FMBM_PP_MXD(x)          (((x-1) << 8) & FMBM_PP_MXD_MASK)
226
227 /* FMBM_PFS - BMI Port FIFO Size */
228 #define FMBM_PFS_IFSZ_MASK      0x000003ff /* Internal Fifo Size */
229 #define FMBM_PFS_IFSZ(x)        (x & FMBM_PFS_IFSZ_MASK)
230
231 /* FMQM_GC - global configuration */
232 #define FMQM_GC_ENQ_EN          0x80000000 /* enqueue enable */
233 #define FMQM_GC_DEQ_EN          0x40000000 /* dequeue enable */
234 #define FMQM_GC_STEN            0x10000000 /* enable global stat counters */
235 #define FMQM_GC_ENQ_THR_MASK    0x00003f00 /* max number of enqueue Tnum */
236 #define FMQM_GC_ENQ(x)          ((x << 8) &  FMQM_GC_ENQ_THR_MAS)
237 #define FMQM_GC_DEQ_THR_MASK    0x0000003f /* max number of dequeue Tnum */
238 #define FMQM_GC_DEQ(x)          (x & FMQM_GC_DEQ_THR_MASK)
239
240 /* FMQM_EIE - error interrupt event register */
241 #define FMQM_EIE_DEE            0x80000000 /* double-bit ECC error */
242 #define FMQM_EIE_DFUPE          0x40000000 /* dequeue from unknown PortID */
243 #define FMQM_EIE_CLEAR_ALL      (FMQM_EIE_DEE | FMQM_EIE_DFUPE)
244
245 /* FMQM_EIEN - error interrupt enable register */
246 #define FMQM_EIEN_DEEN          0x80000000 /* double-bit ECC error */
247 #define FMQM_EIEN_DFUPEN        0x40000000 /* dequeue from unknown PortID */
248 #define FMQM_EIEN_DISABLE_ALL   0x00000000
249
250 /* FMQM_IE - interrupt event register */
251 #define FMQM_IE_SEE             0x80000000 /* single-bit ECC error detected */
252 #define FMQM_IE_CLEAR_ALL       FMQM_IE_SEE
253
254 /* FMQM_IEN - interrupt enable register */
255 #define FMQM_IEN_SEE            0x80000000 /* single-bit ECC err IRQ enable */
256 #define FMQM_IEN_DISABLE_ALL    0x00000000
257
258 /* NIA - next invoked action */
259 #define NIA_ENG_RISC            0x00000000
260 #define NIA_ENG_MASK            0x007c0000
261
262 /* action code */
263 #define NIA_RISC_AC_CC          0x00000006
264 #define NIA_RISC_AC_IM_TX       0x00000008 /* independent mode Tx */
265 #define NIA_RISC_AC_IM_RX       0x0000000a /* independent mode Rx */
266 #define NIA_RISC_AC_HC          0x0000000c
267
268 typedef struct fm_parser {
269         u8      res[1024];
270 } fm_parser_t;
271
272 typedef struct fm_policer {
273         u8      res[4*1024];
274 } fm_policer_t;
275
276 typedef struct fm_keygen {
277         u8      res[4*1024];
278 } fm_keygen_t;
279
280 typedef struct fm_dma {
281         u32     fmdmsr;         /* status register */
282         u32     fmdmmr;         /* mode register */
283         u32     fmdmtr;         /* bus threshold register */
284         u32     fmdmhy;         /* bus hysteresis register */
285         u32     fmdmsetr;       /* SOS emergency threshold register */
286         u32     fmdmtah;        /* transfer bus address high register */
287         u32     fmdmtal;        /* transfer bus address low register */
288         u32     fmdmtcid;       /* transfer bus communication ID register */
289         u32     fmdmra;         /* DMA bus internal ram address register */
290         u32     fmdmrd;         /* DMA bus internal ram data register */
291         u32     res0[0xb];
292         u32     fmdmdcr;        /* debug counter */
293         u32     fmdmemsr;       /* emrgency smoother register */
294         u32     res1;
295         u32     fmdmplr[32];    /* FM DMA PID-LIODN # register */
296         u32     res[0x3c8];
297 } fm_dma_t;
298
299 /* FMDMSR - Fman DMA status register */
300 #define FMDMSR_CMDQNE           0x10000000 /* command queue not empty */
301 #define FMDMSR_BER              0x08000000 /* bus err event occurred on bus */
302 #define FMDMSR_RDB_ECC          0x04000000 /* read buffer ECC error */
303 #define FMDMSR_WRB_SECC         0x02000000 /* write buf ECC err sys side */
304 #define FMDMSR_WRB_FECC         0x01000000 /* write buf ECC err Fman side */
305 #define FMDMSR_DPEXT_SECC       0x00800000 /* DP external ECC err sys side */
306 #define FMDMSR_DPEXT_FECC       0x00400000 /* DP external ECC err Fman side */
307 #define FMDMSR_DPDAT_SECC       0x00200000 /* DP data ECC err on sys side */
308 #define FMDMSR_DPDAT_FECC       0x00100000 /* DP data ECC err on Fman side */
309 #define FMDMSR_SPDAT_FECC       0x00080000 /* SP data ECC error Fman side */
310
311 #define FMDMSR_CLEAR_ALL        (FMDMSR_BER | FMDMSR_RDB_ECC \
312                                 | FMDMSR_WRB_SECC | FMDMSR_WRB_FECC \
313                                 | FMDMSR_DPEXT_SECC | FMDMSR_DPEXT_FECC \
314                                 | FMDMSR_DPDAT_SECC | FMDMSR_DPDAT_FECC \
315                                 | FMDMSR_SPDAT_FECC)
316
317 /* FMDMMR - FMan DMA mode register */
318 #define FMDMMR_SBER             0x10000000 /* stop the DMA if a bus error */
319
320 typedef struct fm_fpm {
321         u32     fpmtnc;         /* TNUM control */
322         u32     fpmprc;         /* Port_ID control */
323         u32     res0;
324         u32     fpmflc;         /* flush control */
325         u32     fpmdis1;        /* dispatch thresholds1 */
326         u32     fpmdis2;        /* dispatch thresholds2 */
327         u32     fmepi;          /* error pending interrupts */
328         u32     fmrie;          /* rams interrupt enable */
329         u32     fpmfcevent[0x4];/* FMan controller event 0-3 */
330         u32     res1[0x4];
331         u32     fpmfcmask[0x4]; /* FMan controller mask 0-3 */
332         u32     res2[0x4];
333         u32     fpmtsc1;        /* timestamp control1 */
334         u32     fpmtsc2;        /* timestamp control2 */
335         u32     fpmtsp;         /* time stamp */
336         u32     fpmtsf;         /* time stamp fraction */
337         u32     fpmrcr;         /* rams control and event */
338         u32     res3[0x3];
339         u32     fpmdrd[0x4];    /* data_ram data 0-3 */
340         u32     res4[0xc];
341         u32     fpmdra;         /* data ram access */
342         u32     fm_ip_rev_1;    /* IP block revision 1 */
343         u32     fm_ip_rev_2;    /* IP block revision 2 */
344         u32     fmrstc;         /* reset command */
345         u32     fmcld;          /* classifier debug control */
346         u32     fmnpi;          /* normal pending interrupts */
347         u32     res5;
348         u32     fmfpee;         /* event and enable */
349         u32     fpmcev[0x4];    /* CPU event 0-3 */
350         u32     res6[0x4];
351         u32     fmfp_ps[0x40];  /* port status */
352         u32     res7[0x260];
353         u32     fpmts[0x80];    /* task status */
354         u32     res8[0xa0];
355 } fm_fpm_t;
356
357 /* FMFP_PRC - FPM Port_ID Control Register */
358 #define FMFPPRC_PORTID_MASK     0x3f000000
359 #define FMFPPRC_PORTID_SHIFT    24
360 #define FMFPPRC_ORA_SHIFT       16
361 #define FMFPPRC_RISC1           0x00000001
362 #define FMFPPRC_RISC2           0x00000002
363 #define FMFPPRC_RISC_ALL        (FMFPPRC_RISC1 | FMFPPRC_RSIC2)
364
365 /* FPM Flush Control Register */
366 #define FMFP_FLC_DISP_LIM_NONE  0x00000000 /* no dispatch limitation */
367
368 /* FMFP_EE - FPM event and enable register */
369 #define FMFPEE_DECC             0x80000000 /* double ECC err on FPM ram */
370 #define FMFPEE_STL              0x40000000 /* stall of task ... */
371 #define FMFPEE_SECC             0x20000000 /* single ECC error */
372 #define FMFPEE_RFM              0x00010000 /* release FMan */
373 #define FMFPEE_DECC_EN          0x00008000 /* double ECC interrupt enable */
374 #define FMFPEE_STL_EN           0x00004000 /* stall of task interrupt enable */
375 #define FMFPEE_SECC_EN          0x00002000 /* single ECC err interrupt enable */
376 #define FMFPEE_EHM              0x00000008 /* external halt enable */
377 #define FMFPEE_UEC              0x00000004 /* FMan is not halted */
378 #define FMFPEE_CER              0x00000002 /* only errornous task stalled */
379 #define FMFPEE_DER              0x00000001 /* DMA error is just reported */
380
381 #define FMFPEE_CLEAR_EVENT      (FMFPEE_DECC | FMFPEE_STL | FMFPEE_SECC | \
382                                  FMFPEE_EHM | FMFPEE_UEC | FMFPEE_CER | \
383                                  FMFPEE_DER | FMFPEE_RFM)
384
385 /* FMFP_RCR - FMan Rams Control and Event */
386 #define FMFP_RCR_MDEC           0x00008000 /* double ECC error in muram */
387 #define FMFP_RCR_IDEC           0x00004000 /* double ECC error in iram */
388
389 typedef struct fm_imem {
390         u32     iadd;           /* instruction address register */
391         u32     idata;          /* instruction data register */
392         u32     itcfg;          /* timing config register */
393         u32     iready;         /* ready register */
394         u8      res[0xff0];
395 } fm_imem_t;
396 #define IRAM_IADD_AIE           0x80000000 /* address auto increase enable */
397 #define IRAM_READY              0x80000000 /* ready to use */
398
399 typedef struct fm_soft_parser {
400         u8      res[4*1024];
401 } fm_soft_parser_t;
402
403 typedef struct fm_dtesc {
404         u8      res[4*1024];
405 } fm_dtsec_t;
406
407 typedef struct fm_mdio {
408         u8      res0[0x120];
409         u32     miimcfg;        /* MII management configuration reg */
410         u32     miimcom;        /* MII management command reg */
411         u32     miimadd;        /* MII management address reg */
412         u32     miimcon;        /* MII management control reg */
413         u32     miimstat;       /* MII management status reg  */
414         u32     miimind;        /* MII management indication reg */
415         u8      res1[0x1000 - 0x138];
416 } fm_mdio_t;
417
418 typedef struct fm_10gec {
419         u8      res[4*1024];
420 } fm_10gec_t;
421
422 typedef struct fm_10gec_mdio {
423         u8      res[4*1024];
424 } fm_10gec_mdio_t;
425
426 typedef struct fm_memac {
427         u8      res[4*1024];
428 } fm_memac_t;
429
430 typedef struct fm_memac_mdio {
431         u8      res[4*1024];
432 } fm_memac_mdio_t;
433
434 typedef struct fm_1588 {
435         u8      res[4*1024];
436 } fm_1588_t;
437
438 typedef struct ccsr_fman {
439         u8                      muram[0x80000];
440         fm_bmi_common_t         fm_bmi_common;
441         fm_qmi_common_t         fm_qmi_common;
442         u8                      res0[2048];
443         struct {
444                 fm_bmi_t        fm_bmi;
445                 fm_qmi_t        fm_qmi;
446                 fm_parser_t     fm_parser;
447                 u8              res[1024];
448         } port[63];
449         fm_policer_t            fm_policer;
450         fm_keygen_t             fm_keygen;
451         fm_dma_t                fm_dma;
452         fm_fpm_t                fm_fpm;
453         fm_imem_t               fm_imem;
454         u8                      res1[8*1024];
455         fm_soft_parser_t        fm_soft_parser;
456         u8                      res2[96*1024];
457 #ifdef CONFIG_SYS_FMAN_V3
458         struct {
459                 fm_memac_t              fm_memac;
460                 fm_memac_mdio_t         fm_memac_mdio;
461         } memac[10];
462         u8                      res4[32*1024];
463         fm_memac_mdio_t         fm_dedicated_mdio[2];
464 #else
465         struct {
466                 fm_dtsec_t      fm_dtesc;
467                 fm_mdio_t       fm_mdio;
468         } mac_1g[8];            /* support up to 8 1g controllers */
469         struct {
470                 fm_10gec_t              fm_10gec;
471                 fm_10gec_mdio_t         fm_10gec_mdio;
472         } mac_10g[1];
473         u8                      res4[48*1024];
474 #endif
475         fm_1588_t               fm_1588;
476         u8                      res5[4*1024];
477 } ccsr_fman_t;
478
479 #endif /*__FSL_FMAN_H__*/