m8260Fcc.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:15k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* m8260Fcc.h - Motorola MPC8260 Fast Communications Controller header file */
  2. /* Copyright 1984-1999 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,12sep99,ms_  created from m8260Cpm.h, 01d.
  7. */
  8. /*
  9.  * This file contains constants for the Fast Communications Controllers
  10.  * (fCCs) in the Motorola MPC8260 PowerQUICC II integrated Communications
  11.  * Processor
  12.  */
  13. #ifndef __INCm8260Fcch
  14. #define __INCm8260Fcch
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif
  18. #ifndef M8260ABBREVIATIONS
  19. #define M8260ABBREVIATIONS
  20. #ifdef  _ASMLANGUAGE
  21. #define CAST(x)
  22. #else /* _ASMLANGUAGE */
  23. typedef volatile UCHAR VCHAR;   /* shorthand for volatile UCHAR */
  24. typedef volatile INT32 VINT32; /* volatile unsigned word */
  25. typedef volatile INT16 VINT16; /* volatile unsigned halfword */
  26. typedef volatile INT8 VINT8;   /* volatile unsigned byte */
  27. typedef volatile UINT32 VUINT32; /* volatile unsigned word */
  28. typedef volatile UINT16 VUINT16; /* volatile unsigned halfword */
  29. typedef volatile UINT8 VUINT8;   /* volatile unsigned byte */
  30. #define CAST(x) (x)
  31. #endif  /* _ASMLANGUAGE */
  32. #endif /* M8260ABBREVIATIONS */
  33. /*
  34.  * MPC8260 internal register/memory map (section 17 of prelim. spec)
  35.  * note that these are offsets from the value stored in the IMMR
  36.  * register. Also note that in the MPC8260, the IMMR is not a special
  37.  * purpose register, but it is memory mapped.
  38.  */
  39.  
  40. /* CPM mux FCC clock route register */
  41. #define M8260_CMXFCR(base)   (CAST(VUINT32 *)((base) + 0x11B04)) 
  42. /* FCC 1 register set */
  43.  
  44. #define M8260_FGMR1(base)   (CAST(VUINT32 *)((base) + 0x11300)) /* Gen Mode */
  45. #define M8260_FPSMR1(base)  (CAST(VUINT32 *)((base) + 0x11304)) /* Prot Spec */
  46. #define M8260_FTODR1(base)  (CAST(VUINT32 *)((base) + 0x11308)) /* transmit */
  47. /* on demand */
  48. #define M8260_FDSR1(base)   (CAST(VUINT32 *)((base) + 0x1130C)) /* data sync */
  49. #define M8260_FCCER1(base)  (CAST(VUINT32 *)((base) + 0x11310)) /* event */
  50. #define M8260_FCCMR1(base)  (CAST(VUINT32 *)((base) + 0x11304)) /* mask */
  51. #define M8260_FCCSR1(base)  (CAST(VUINT32 *)((base) + 0x11308)) /* status */
  52. /* FCC1 transmit internal rate registers for PHY 0-3 */
  53. #define M8260_FTIRR1_PHY0(base) (CAST(VUINT32 *)((base) + 0x1131C)) 
  54. #define M8260_FTIRR1_PHY1(base) (CAST(VUINT32 *)((base) + 0x1131D)) 
  55. #define M8260_FTIRR1_PHY2(base) (CAST(VUINT32 *)((base) + 0x1131E)) 
  56. #define M8260_FTIRR1_PHY3(base) (CAST(VUINT32 *)((base) + 0x1131F)) 
  57. /* offsets in internal RAM of FCC registers */
  58. #define M8260_FCC_IRAM_GAP 0x20 /* gap between FCCs */
  59. /* in Internal RAM */
  60. #define M8260_FCC_GFMR_OFF 0x0 /* GFMR offset */
  61. #define M8260_FCC_FPSMR_OFF 0x4 /* FPSMR offset */
  62. #define M8260_FCC_FTODR_OFF 0x8 /* FTODR offset */
  63. #define M8260_FCC_FDSR_OFF 0xC /* FDSR offset */
  64. #define M8260_FCC_FCCER_OFF 0x10 /* FCCER offset */
  65. #define M8260_FCC_FCCMR_OFF 0x14 /* FCCMR offset */
  66. #define M8260_FCC_FCCSR_OFF 0x18 /* FCCSR offset */
  67. /* FCC Dual-Ported RAM definitions */
  68.  
  69. #define M8260_FCC1_BASE(base) (CAST(VUINT32 *)((base) + 0x8400)) /* FCC1 */
  70. #define M8260_FCC2_BASE(base) (CAST(VUINT32 *)((base) + 0x8500)) /* FCC2 */
  71. #define M8260_FCC3_BASE(base) (CAST(VUINT32 *)((base) + 0x8600)) /* FCC3 */
  72. #define M8260_FCC_DPRAM_GAP 0x100 /* gap between FCCs */
  73. /* parameter RAM in DPRAM */
  74. #define M8260_FCC_RIPTR_OFF 0x0 /* rx FIFO pointer offset */
  75. #define M8260_FCC_TIPTR_OFF 0x2 /* tx FIFO pointer offset */
  76. #define M8260_FCC_RES1_OFF 0x4 /* reserved */
  77. #define M8260_FCC_MRBLR_OFF 0x6 /* max rx buffer length */
  78. #define M8260_FCC_RSTATE_OFF 0x8 /* rx internal state */
  79. #define M8260_FCC_RBASE_OFF 0xC /* RBD base address */
  80. #define M8260_FCC_RBDSTAT_OFF 0x10 /* RBD status/control */
  81. #define M8260_FCC_RBDLEN_OFF 0x12 /* RBD data length */
  82. #define M8260_FCC_RDPTR_OFF 0x14 /* RBD data pointer */
  83. #define M8260_FCC_TSTATE_OFF 0x18 /* tx internal state */
  84. #define M8260_FCC_TBASE_OFF 0x1C /* TBD base address */
  85. #define M8260_FCC_TBDSTAT_OFF 0x20 /* TBD status/control */
  86. #define M8260_FCC_TBDLEN_OFF 0x22 /* TBD data length */
  87. #define M8260_FCC_TDPTR_OFF 0x24 /* TBD data pointer */
  88. #define M8260_FCC_RBPTR_OFF 0x28 /* RBD pointer */
  89. #define M8260_FCC_TBPTR_OFF 0x2C /* TBD pointer */
  90. #define M8260_FCC_RCRC_OFF 0x30 /* temp rx CRC */
  91. #define M8260_FCC_TCRC_OFF 0x34 /* temp tx CRC */
  92. #define M8260_FCC_STATBUF_OFF 0x3C /* internal buffer */
  93. #define M8260_FCC_CAM_PTR_OFF 0x40 /* CAM address */
  94. #define M8260_FCC_C_MASK_OFF 0x44 /* MASK for CRC */
  95. #define M8260_FCC_C_PRES_OFF 0x48 /* preset CRC */
  96. #define M8260_FCC_CRCEC_OFF 0x4C /* CRC error counter */
  97. #define M8260_FCC_ALEC_OFF 0x50 /* alignment error counter */
  98. #define M8260_FCC_DISFC_OFF 0x54 /* discard frame counter */
  99. #define M8260_FCC_RET_LIM_OFF 0x58 /* retry limit */
  100. #define M8260_FCC_RET_CNT_OFF 0x5A /* retry limit counter */
  101. #define M8260_FCC_P_PER_OFF 0x5C /* persistence */
  102. #define M8260_FCC_BOFF_CNT_OFF 0x5E /* backoff counter */
  103. #define M8260_FCC_GADDR_H_OFF 0x60 /* group address filter high */
  104. #define M8260_FCC_GADDR_L_OFF 0x64 /* group address filter low */
  105. #define M8260_FCC_TFCSTAT_OFF 0x68 /* out-of-sequence TBD stat */
  106. #define M8260_FCC_TFCLEN_OFF 0x6A /* out-of-sequence TBD length */
  107. #define M8260_FCC_TFCPTR_OFF 0x6C /* out-of-sequence TBD pointer*/
  108. #define M8260_FCC_MFLR_OFF 0x70 /* max receive frame length */
  109. #define M8260_FCC_PADDR_H_OFF 0x72 /* individual address high */
  110. #define M8260_FCC_PADDR_M_OFF 0x74 /* individual address medium */
  111. #define M8260_FCC_PADDR_L_OFF 0x76 /* individual address low */
  112. #define M8260_FCC_IBD_CNT_OFF 0x78 /* internal BD counter */
  113. #define M8260_FCC_IBD_START_OFF 0x7A /* internal BD start pointer */
  114. #define M8260_FCC_IBD_END_OFF 0x7C /* internal BD end pointer */
  115. #define M8260_FCC_TX_LEN_OFF 0x7E /* tx frame length counter */
  116. #define M8260_FCC_IBD_BASE_OFF 0x80 /* internal BD base */
  117. #define M8260_FCC_IADDR_H_OFF 0xA0 /* individual addr filter high*/
  118. #define M8260_FCC_IADDR_L_OFF 0xA4 /* individual addr filter low */
  119. #define M8260_FCC_MINFLR_OFF 0xA8 /* min frame lenght */
  120. #define M8260_FCC_TADDR_H_OFF 0xAA /* set hash table addr high */
  121. #define M8260_FCC_TADDR_M_OFF 0xAC /* set hash table addr medium */
  122. #define M8260_FCC_TADDR_L_OFF 0xAE /* set hash table addr low */
  123. #define M8260_FCC_PAD_PTR_OFF 0xB0 /* internal PAD pointer */
  124. #define M8260_FCC_RES2_OFF 0xB2 /* reserved */
  125. #define M8260_FCC_CF_RANGE_OFF 0xB4 /* control frame range */
  126. #define M8260_FCC_MAX_B_OFF 0xB6 /* max BD byte counter */
  127. #define M8260_FCC_MAXD1_OFF 0xB8 /* max DMA1 lenght */
  128. #define M8260_FCC_MAXD2_OFF 0xBA /* max DMA2 lenght */
  129. #define M8260_FCC_MAXD_OFF 0xBC /* rx max DMA lenght */
  130. #define M8260_FCC_DMA_CNT_OFF 0xBE /* rx DMA counter */
  131. #define M8260_FCC_OCTC_OFF 0xC0 /* data octets number */
  132. #define M8260_FCC_COLC_OFF 0xC4 /* collision estimate */
  133. #define M8260_FCC_BROC_OFF 0xC8 /* received broadast packets */
  134. #define M8260_FCC_MULC_OFF 0xCC /* received multicast packets */
  135. #define M8260_FCC_USPC_OFF 0xD0 /* good packets shorter than */
  136. /* 64 bytes */
  137. #define M8260_FCC_FRGC_OFF 0xD4 /* bad packets shorter than */
  138. /* 64 bytes */
  139. #define M8260_FCC_OSPC_OFF 0xD8 /* good packets longer than */
  140. /* 1518 bytes */
  141. #define M8260_FCC_JBRC_OFF 0xDC /* bad packets longer than */
  142. /* 1518 bytes */
  143. #define M8260_FCC_P64C_OFF 0xE0 /* packets 64-byte long */
  144. #define M8260_FCC_P65C_OFF 0xE4 /* packets < 128 bytes and */
  145. /* > 64 bytes */
  146. #define M8260_FCC_P128C_OFF 0xE8 /* packets < 256 bytes and */ 
  147. /* > 127 bytes */
  148. #define M8260_FCC_P256C_OFF 0xEC /* packets < 512 bytes and */ 
  149. /* > 255 bytes */
  150. #define M8260_FCC_P512C_OFF 0xF0 /* packets < 1024 bytes and */ 
  151. /* > 511 bytes */
  152. #define M8260_FCC_P1024C_OFF 0xF4 /* packets < 1519 bytes and */ 
  153. /* > 1023 bytes */
  154. #define M8260_FCC_CAM_BUF_OFF 0xF8 /* internal buffer */
  155. #define M8260_FCC_RES3_OFF 0xFC /* reserved */
  156. /* General FCC Mode Register definitions */
  157.  
  158. #define M8260_GFMR_HDLC 0x00000000      /* HDLC mode */
  159. #define M8260_GFMR_RES1 0x00000001      /* reserved mode */
  160. #define M8260_GFMR_RES2 0x00000002      /* reserved mode */
  161. #define M8260_GFMR_RES3 0x00000003      /* reserved mode */
  162. #define M8260_GFMR_RES4 0x00000004      /* reserved mode */
  163. #define M8260_GFMR_RES5 0x00000005      /* reserved mode */
  164. #define M8260_GFMR_RES6 0x00000006      /* reserved mode */
  165. #define M8260_GFMR_RES7 0x00000007      /* reserved mode */
  166. #define M8260_GFMR_RES8 0x00000008      /* reserved mode */
  167. #define M8260_GFMR_RES9 0x00000009      /* reserved mode */
  168. #define M8260_GFMR_ATM 0x0000000a      /* ATM mode */
  169. #define M8260_GFMR_RES10 0x0000000b      /* reserved mode */
  170. #define M8260_GFMR_ETHERNET 0x0000000c      /* ethernet mode */
  171. #define M8260_GFMR_RES11 0x0000000d      /* reserved mode */
  172. #define M8260_GFMR_RES12 0x0000000e      /* reserved mode */
  173. #define M8260_GFMR_RES13 0x0000000f      /* reserved mode */
  174. #define M8260_GFMR_NORM 0x00000000      /* normal mode */
  175. #define M8260_GFMR_LOOP 0x40000000      /* local loopback */
  176. #define M8260_GFMR_ECHO 0x80000000      /* automatic echo */
  177. #define M8260_GFMR_LOOP_ECHO 0xc0000000      /* loop & echo */
  178. #define M8260_GFMR_TCI        0x20000000      /* tx clock invert */
  179. #define M8260_GFMR_TRX         0x10000000      /* transparent receiver */
  180. #define M8260_GFMR_TTX        0x08000000      /* transparent transmitter */
  181. #define M8260_GFMR_CDP         0x04000000      /* CD* pulse */
  182. #define M8260_GFMR_CTSP        0x02000000      /* CTS* pulse */
  183. #define M8260_GFMR_CDS         0x01000000      /* CD* sampling */
  184. #define M8260_GFMR_CTSS        0x00800000      /* CTS* sampling */
  185. #define M8260_GFMR_SYN_EXT     0x00000000      /* external sync */
  186. #define M8260_GFMR_SYN_AUTO    0x00004000      /* automatic sync */
  187. #define M8260_GFMR_SYN_8 0x00008000      /* 8-bit sync pattern */
  188. #define M8260_GFMR_SYN_16 0x0000c000      /* 16-bit sync pattern */
  189. #define M8260_GFMR_RTSM 0x00002000      /* RTS* mode */
  190. #define M8260_GFMR_RENC_RES    0x00001000      /* receiver encoding reserved */
  191. #define M8260_GFMR_RENC_NRZI   0x00000800      /* receiver encoding NRZI */
  192. #define M8260_GFMR_RENC_NRZ    0x00000000      /* receiver encoding NRZ */
  193. #define M8260_GFMR_REVD        0x00000400      /* reverse data */
  194. #define M8260_GFMR_TENC_RES    0x00000200      /* transmitter encoding res */
  195. #define M8260_GFMR_TENC_NRZI   0x00000100      /* transmitter encoding NRZI */
  196. #define M8260_GFMR_TENC_NRZ    0x00000000      /* transmitter encoding NRZ */
  197. #define M8260_GFMR_TCRC_RES    0x00000040      /* transparent CRC reserved */
  198. #define M8260_GFMR_TCRC_16     0x00000000      /* 16-bit transparent CRC */
  199. #define M8260_GFMR_TCRC_32     0x00000080      /* 32-bit transparent CRC */
  200. #define M8260_GFMR_ENT 0x00000010      /* enable transmitter */
  201. #define M8260_GFMR_ENR 0x00000020      /* enable receiver */
  202. /* FCC Data Synchronization Register definitions */
  203.  
  204. #define M8260_FDSR_SYN1_MASK 0x00ff       /* sync pattern mask 1 */
  205. #define M8260_FDSR_SYN2_MASK 0xff00       /* sync pattern mask 2 */
  206. #define M8260_FDSR_ETH_SYN1 0x55       /* Ethernet sync pattern 1 */
  207. #define M8260_FDSR_ETH_SYN2 0xd5       /* Ethernet sync pattern 2 */
  208. /* FCC Transmit on Demand Register definitions */
  209.  
  210. #define M8260_FTODR_TOD 0x8000       /* transmit on demand */
  211. /* FCC Function Code Register definitions */
  212.  
  213. #define M8260_FCR_GBL 0x20       /* global mem operation */
  214. /* enable snooping */
  215. #define M8260_FCR_BO_BE 0x10       /* big-endian ordering */
  216. #define M8260_FCR_BO_LE 0x08       /* little-endian ordering */
  217. #define M8260_FCR_TC2 0x04       /* transfer code for TC[2] */
  218. #define M8260_FCR_DTB 0x02       /* data is in the local bus */
  219. #define M8260_FCR_BDB 0x01       /* BDs are in the local bus */
  220. #define M8260_FCR_SHIFT 24       /* get to fcr bits in xstate */
  221. /* FCC Ethernet Protocol Specific Mode Register definitions */
  222.  
  223. #define M8260_FPSMR_ETH_HBC 0x80000000          /* heartbeat checking */
  224. #define M8260_FPSMR_ETH_FC 0x40000000          /* force collision */
  225. #define M8260_FPSMR_ETH_SBT 0x20000000          /* stop backoff timer */
  226. #define M8260_FPSMR_ETH_LPB 0x10000000          /* loopback operation */
  227. #define M8260_FPSMR_ETH_LCW 0x08000000          /* late collision window */
  228. #define M8260_FPSMR_ETH_FDE 0x04000000          /* full duplex enable */
  229. #define M8260_FPSMR_ETH_MON 0x02000000          /* enable RMON mode */
  230. #define M8260_FPSMR_ETH_PRO 0x00400000          /* enable promiscous mode */
  231. #define M8260_FPSMR_ETH_FCE 0x00200000          /* flow control enable */
  232. #define M8260_FPSMR_ETH_RSH 0x00100000          /* receive short frame */
  233. #define M8260_FPSMR_ETH_CAM 0x00000400          /* CAM address matching */
  234. #define M8260_FPSMR_ETH_BRO 0x00000200          /* broadcast enable */
  235. #define M8260_FPSMR_ETH_CRC_32 0x00000080          /* use 32-bit CCITT CRC */
  236. #define M8260_FPSMR_ETH_CRC_MASK 0x000000c0          /* CRC mask field */
  237. /* FCC Ethernet Event and Mask Register definitions */
  238.  
  239. #define M8260_FEM_ETH_RES      0xff00          /* reserved mask */
  240. #define M8260_FEM_ETH_EVENT    0x00ff          /* event mask */
  241. #define M8260_FEM_ETH_GRA      0x0080          /* graceful stop event */
  242. #define M8260_FEM_ETH_RXC      0x0040          /* rx control frame event */
  243. #define M8260_FEM_ETH_TXC      0x0020          /* tx control frame event */
  244. #define M8260_FEM_ETH_TXE      0x0010          /* transmission error event */
  245. #define M8260_FEM_ETH_RXF      0x0008          /* frame received event */
  246. #define M8260_FEM_ETH_BSY      0x0004          /* busy condition */
  247. #define M8260_FEM_ETH_TXB      0x0002          /* buffer transmitted event */
  248. #define M8260_FEM_ETH_RXB      0x0001          /* buffer received event */
  249.  
  250. /* FCC Ethernet Receive Buffer Descriptor definitions */
  251.  
  252. #define M8260_FETH_RBD_E       0x8000          /* buffer is empty */
  253. #define M8260_FETH_RBD_W       0x2000          /* last BD in ring */
  254. #define M8260_FETH_RBD_I       0x1000          /* interrupt on receive */
  255. #define M8260_FETH_RBD_L       0x0800          /* buffer is last in frame */
  256. #define M8260_FETH_RBD_F       0x0400          /* buffer is first in frame */
  257. #define M8260_FETH_RBD_M       0x0100          /* miss bit for prom mode */
  258. #define M8260_FETH_RBD_BC      0x0080          /* broadcast address frame */
  259. #define M8260_FETH_RBD_MC      0x0040          /* multicast address frame */
  260. #define M8260_FETH_RBD_LG      0x0020          /* frame length violation */
  261. #define M8260_FETH_RBD_NO      0x0010          /* nonoctet aligned frame */
  262. #define M8260_FETH_RBD_SH      0x0008          /* short frame received */
  263. #define M8260_FETH_RBD_CR      0x0004          /* Rx CRC error */
  264. #define M8260_FETH_RBD_OV      0x0002          /* overrun condition */
  265. #define M8260_FETH_RBD_CL      0x0001          /* collision condition */
  266.  
  267. /* FCC Ethernet Transmit Buffer Descriptor definitions */
  268.  
  269. #define M8260_FETH_TBD_R       0x8000          /* buffer is ready */
  270. #define M8260_FETH_TBD_PAD     0x4000          /* auto pad short frames */
  271. #define M8260_FETH_TBD_W       0x2000          /* last BD in ring */
  272. #define M8260_FETH_TBD_I       0x1000          /* interrupt on transmit */
  273. #define M8260_FETH_TBD_L       0x0800          /* buffer is last in frame */
  274. #define M8260_FETH_TBD_TC      0x0400          /* auto transmit CRC */
  275. #define M8260_FETH_TBD_DEF     0x0200          /* defer indication */
  276. #define M8260_FETH_TBD_HB      0x0100          /* heartbeat */
  277. #define M8260_FETH_TBD_LC      0x0080          /* late collision */
  278. #define M8260_FETH_TBD_RL      0x0040          /* retransmission limit */
  279. #define M8260_FETH_TBD_RC      0x003c          /* retry count */
  280. #define M8260_FETH_TBD_UN      0x0002          /* underrun */
  281. #define M8260_FETH_TBD_CSL     0x0001          /* carrier sense lost */
  282.  
  283. #ifdef __cplusplus
  284. }
  285. #endif
  286. #endif /* __INCm8260Fcch */