fsl_fman.h 16 KB

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