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

VxWorks

开发平台:

C/C++

  1. /* if_cpm.h - Motorola CPM core Ethernet interface header */
  2. /* Copyright 1996 - 2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01f,09nov01,dat  Adding obsolescence warnings to outdated drivers
  7. 01e,11jan99,cn   added qualifier volatile where needed (SPR# 24295).
  8. 01d,22jun98,cn   added field intMask to SCC_ETHER_DEV.
  9. 01c,13apr98,map  moved SCC device definitions to ../multi/ppc860Cpm.h
  10.                  renamed SCC_DEV to SCC_ETHER_DEV
  11. 01b,09aug96,dat  fixed long wraparound lines
  12. 01a,09may96,dzb  written.
  13. */
  14. /*
  15. This file contains I/O addresses and related constants for the Motorola
  16. CPM core Ethernet controller used in the M68EN360 and PPC800-series
  17. communications controllers.
  18. */
  19. #ifndef __INCif_cpmh
  20. #define __INCif_cpmh
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. #warning "if_cpm driver is obsolete, please use motCpmEnd driver"
  25. #include "drv/multi/ppc860Cpm.h"
  26. /* defines */
  27. /* General SCC Mode Register definitions */
  28. #define SCC_GSMRL_HDLC          0x00000000      /* HDLC mode */
  29. #define SCC_GSMRL_APPLETALK     0x00000002      /* AppleTalk mode (LocalTalk) */
  30. #define SCC_GSMRL_SS7           0x00000003      /* SS7 mode (microcode) */
  31. #define SCC_GSMRL_UART          0x00000004      /* UART mode */
  32. #define SCC_GSMRL_PROFI_BUS     0x00000005      /* Profi-Bus mode (microcode) */
  33. #define SCC_GSMRL_ASYNC_HDLC    0x00000006      /* async HDLC mode (microcode)*/
  34. #define SCC_GSMRL_V14           0x00000007      /* V.14 mode */
  35. #define SCC_GSMRL_BISYNC        0x00000008      /* BISYNC mode */
  36. #define SCC_GSMRL_DDCMP         0x00000009      /* DDCMP mode (microcode) */
  37. #define SCC_GSMRL_ETHERNET      0x0000000c      /* ethernet mode (SCC1 only) */
  38. #define SCC_GSMRL_ENT           0x00000010      /* enable transmitter */
  39. #define SCC_GSMRL_ENR           0x00000020      /* enable receiver */
  40. #define SCC_GSMRL_LOOPBACK      0x00000040      /* local loopback mode */
  41. #define SCC_GSMRL_ECHO          0x00000080      /* automatic echo mode */
  42. #define SCC_GSMRL_TENC          0x00000700      /* transmitter encoding method*/
  43. #define SCC_GSMRL_RENC          0x00003800      /* receiver encoding method */
  44. #define SCC_GSMRL_RDCR_X8       0x00004000      /* receive DPLL clock x8 */
  45. #define SCC_GSMRL_RDCR_X16      0x00008000      /* receive DPLL clock x16 */
  46. #define SCC_GSMRL_RDCR_X32      0x0000c000      /* receive DPLL clock x32 */
  47. #define SCC_GSMRL_TDCR_X8       0x00010000      /* transmit DPLL clock x8 */
  48. #define SCC_GSMRL_TDCR_X16      0x00020000      /* transmit DPLL clock x16 */
  49. #define SCC_GSMRL_TDCR_X32      0x00030000      /* transmit DPLL clock x32 */
  50. #define SCC_GSMRL_TEND          0x00040000      /* transmitter frame ending */
  51. #define SCC_GSMRL_TPP_00        0x00180000      /* Tx preamble pattern = 00 */
  52. #define SCC_GSMRL_TPP_10        0x00080000      /* Tx preamble pattern = 10 */
  53. #define SCC_GSMRL_TPP_01        0x00100000      /* Tx preamble pattern = 01 */
  54. #define SCC_GSMRL_TPP_11        0x00180000      /* Tx preamble pattern = 11 */
  55. #define SCC_GSMRL_TPL_NONE      0x00000000      /* no Tx preamble (default) */
  56. #define SCC_GSMRL_TPL_8         0x00200000      /* Tx preamble = 1 byte */
  57. #define SCC_GSMRL_TPL_16        0x00400000      /* Tx preamble = 2 bytes */
  58. #define SCC_GSMRL_TPL_32        0x00600000      /* Tx preamble = 4 bytes */
  59. #define SCC_GSMRL_TPL_48        0x00800000      /* Tx preamble = 6 bytes */
  60. #define SCC_GSMRL_TPL_64        0x00a00000      /* Tx preamble = 8 bytes */
  61. #define SCC_GSMRL_TPL_128       0x00c00000      /* Tx preamble = 16 bytes */
  62. #define SCC_GSMRL_TINV          0x01000000      /* DPLL transmit input invert */
  63. #define SCC_GSMRL_RINV          0x02000000      /* DPLL receive input invert */
  64. #define SCC_GSMRL_TSNC          0x0c000000      /* transmit sense */
  65. #define SCC_GSMRL_TCI           0x10000000      /* transmit clock invert */
  66. #define SCC_GSMRL_EDGE          0x60000000      /* adjustment edge +/- */
  67.  
  68. #define SCC_GSMRH_RSYN          0x00000001      /* receive sync timing*/
  69. #define SCC_GSMRH_RTSM          0x00000002      /* RTS* mode */
  70. #define SCC_GSMRH_SYNL          0x0000000c      /* sync length */
  71. #define SCC_GSMRH_TXSY          0x00000010      /* transmitter/receiver sync */
  72. #define SCC_GSMRH_RFW           0x00000020      /* Rx FIFO width */
  73. #define SCC_GSMRH_TFL           0x00000040      /* transmit FIFO length */
  74. #define SCC_GSMRH_CTSS          0x00000080      /* CTS* sampling */
  75. #define SCC_GSMRH_CDS           0x00000100      /* CD* sampling */
  76. #define SCC_GSMRH_CTSP          0x00000200      /* CTS* pulse */
  77. #define SCC_GSMRH_CDP           0x00000400      /* CD* pulse */
  78. #define SCC_GSMRH_TTX           0x00000800      /* transparent transmitter */
  79. #define SCC_GSMRH_TRX           0x00001000      /* transparent receiver */
  80. #define SCC_GSMRH_REVD          0x00002000      /* reverse data */
  81. #define SCC_GSMRH_TCRC          0x0000c000      /* transparent CRC */
  82. #define SCC_GSMRH_GDE           0x00010000      /* glitch detect enable */
  83. /* CPM - Communication Processor Module */
  84. /* SCC Ethernet Protocol Specific Mode Register definitions */
  85.  
  86. #define SCC_ETHER_PSMR_NIB_13   0x0000          /* SFD 13 bits after TENA */
  87. #define SCC_ETHER_PSMR_NIB_14   0x0002          /* SFD 14 bits after TENA */
  88. #define SCC_ETHER_PSMR_NIB_15   0x0004          /* SFD 15 bits after TENA */
  89. #define SCC_ETHER_PSMR_NIB_16   0x0006          /* SFD 16 bits after TENA */
  90. #define SCC_ETHER_PSMR_NIB_21   0x0008          /* SFD 21 bits after TENA */
  91. #define SCC_ETHER_PSMR_NIB_22   0x000a          /* SFD 22 bits after TENA */
  92. #define SCC_ETHER_PSMR_NIB_23   0x000c          /* SFD 23 bits after TENA */
  93. #define SCC_ETHER_PSMR_NIB_24   0x000e          /* SFD 24 bits after TENA */
  94. #define SCC_ETHER_PSMR_LCW      0x0100          /* late collision window */
  95. #define SCC_ETHER_PSMR_SIP      0x0200          /* sample input pins */
  96. #define SCC_ETHER_PSMR_LPB      0x0400          /* loopback operation */
  97. #define SCC_ETHER_PSMR_SBT      0x0800          /* stop backoff timer */
  98. #define SCC_ETHER_PSMR_BRO      0x0100          /* broadcast address */
  99. #define SCC_ETHER_PSMR_PRO      0x0200          /* promiscuous mode */
  100. #define SCC_ETHER_PSMR_CRC      0x0800          /* CRC selection */
  101. #define SCC_ETHER_PSMR_IAM      0x1000          /* individual address mode */
  102. #define SCC_ETHER_PSMR_RSH      0x2000          /* receive short frame */
  103. #define SCC_ETHER_PSMR_FC       0x4000          /* force collision */
  104. #define SCC_ETHER_PSMR_HBC      0x8000          /* heartbeat checking*/
  105.  
  106. /* SCC Ethernet Event and Mask Register definitions */
  107.  
  108. #define SCC_ETHER_SCCX_RXB      0x0001          /* buffer received event */
  109. #define SCC_ETHER_SCCX_TXB      0x0002          /* buffer transmitted event */
  110. #define SCC_ETHER_SCCX_BSY      0x0004          /* busy condition */
  111. #define SCC_ETHER_SCCX_RXF      0x0008          /* frame received event */
  112. #define SCC_ETHER_SCCX_TXE      0x0010          /* transmission error event */
  113. #define SCC_ETHER_SCCX_GRA      0x0080          /* graceful stop event */
  114.  
  115. /* SCC Ethernet Receive Buffer Descriptor definitions */
  116.  
  117. #define SCC_ETHER_RX_BD_CL      0x0001          /* collision condition */
  118. #define SCC_ETHER_RX_BD_OV      0x0002          /* overrun condition */
  119. #define SCC_ETHER_RX_BD_CR      0x0004          /* Rx CRC error */
  120. #define SCC_ETHER_RX_BD_SH      0x0008          /* short frame received */
  121. #define SCC_ETHER_RX_BD_NO      0x0010          /* Rx nonoctet aligned frame */
  122. #define SCC_ETHER_RX_BD_LG      0x0020          /* Rx frame length violation */
  123. #define SCC_ETHER_RX_BD_M       0x0100          /* miss bit for prom mode */
  124. #define SCC_ETHER_RX_BD_F       0x0400          /* buffer is first in frame */
  125. #define SCC_ETHER_RX_BD_L       0x0800          /* buffer is last in frame */
  126. #define SCC_ETHER_RX_BD_I       0x1000          /* interrupt on receive */
  127. #define SCC_ETHER_RX_BD_W       0x2000          /* last BD in ring */
  128. #define SCC_ETHER_RX_BD_E       0x8000          /* buffer is empty */
  129.  
  130. /* SCC Ethernet Transmit Buffer Descriptor definitions */
  131.  
  132. #define SCC_ETHER_TX_BD_CSL     0x0001          /* carrier sense lost */
  133. #define SCC_ETHER_TX_BD_UN      0x0002          /* underrun */
  134. #define SCC_ETHER_TX_BD_RC      0x003c          /* retry count */
  135. #define SCC_ETHER_TX_BD_RL      0x0040          /* retransmission limit */
  136. #define SCC_ETHER_TX_BD_LC      0x0080          /* late collision */
  137. #define SCC_ETHER_TX_BD_HB      0x0100          /* heartbeat */
  138. #define SCC_ETHER_TX_BD_DEF     0x0200          /* defer indication */
  139. #define SCC_ETHER_TX_BD_TC      0x0400          /* auto transmit CRC */
  140. #define SCC_ETHER_TX_BD_L       0x0800          /* buffer is last in frame */
  141. #define SCC_ETHER_TX_BD_I       0x1000          /* interrupt on transmit */
  142. #define SCC_ETHER_TX_BD_W       0x2000          /* last BD in ring */
  143. #define SCC_ETHER_TX_BD_PAD     0x4000          /* auto pad short frames */
  144. #define SCC_ETHER_TX_BD_R       0x8000          /* buffer is ready */
  145. /* typedefs */
  146. /* SCC - Serial Comunications Controller */
  147. typedef struct          /* SCC_ETHER_PROTO */
  148.     {
  149.     UINT32       c_pres;             /* preset CRC */
  150.     UINT32       c_mask;             /* constant mask for CRC */
  151.     volatile UINT32     crcec;              /* CRC error counter */
  152.     volatile UINT32     alec;               /* alignment error counter */
  153.     volatile UINT32     disfc;              /* discard frame counter */
  154.     UINT16       pads;               /* short frame pad value */
  155.     UINT16       ret_lim;            /* retry limit threshold */
  156.     volatile UINT16     ret_cnt;            /* retry limit counter */
  157.     UINT16       mflr;               /* maximum frame length register */
  158.     UINT16       minflr;             /* minimum frame length register */
  159.     UINT16       maxd1;              /* max DMA1 length register */
  160.     UINT16       maxd2;              /* max DMA2 length register */
  161.     volatile UINT16     maxd;               /* Rx max DMA */
  162.     volatile UINT16     dma_cnt;            /* Rx DMA counter */
  163.     volatile UINT16     max_b;              /* max BD byte count */
  164.     UINT16       gaddr1;             /* group address filter 1 */
  165.     UINT16       gaddr2;             /* group address filter 2 */
  166.     UINT16       gaddr3;             /* group address filter 3 */
  167.     UINT16       gaddr4;             /* group address filter 4 */
  168.     volatile UINT32     tbuf0_data0;        /* save area 0 - current frame */
  169.     volatile UINT32     tbuf0_data1;        /* save area 1 - current frame */
  170.     volatile UINT32     tbuf0_rba0;         /* ? */
  171.     volatile UINT32     tbuf0_crc;          /* ? */
  172.     volatile UINT16     tbuf0_bcnt;         /* ? */
  173.     UINT16       paddr1_h;           /* physical address 1 (MSB) */
  174.     UINT16       paddr1_m;           /* physical address 1 */
  175.     UINT16       paddr1_l;           /* physical address 1 (LSB) */
  176.     UINT16       p_per;              /* persistence */
  177.     volatile UINT16     rfbd_ptr;           /* Rx first BD pointer */
  178.     volatile UINT16     tfbd_ptr;           /* Tx first BD pointer */
  179.     volatile UINT16     tlbd_ptr;           /* Tx last BD pointer */
  180.     volatile UINT32     tbuf1_data0;        /* save area 0 - next frame */
  181.     volatile UINT32     tbuf1_data1;        /* ? */
  182.     volatile UINT32     tbuf1_rba0;         /* ? */
  183.     volatile UINT32     tbuf1_crc;          /* ? */
  184.     volatile UINT16     tbuf1_bcnt;         /* ? */
  185.     volatile UINT16     tx_len;             /* Tx frame length counter */
  186.     UINT16       iaddr1;             /* individual address filter 1 */
  187.     UINT16       iaddr2;             /* individual address filter 2 */
  188.     UINT16       iaddr3;             /* individual address filter 3 */
  189.     UINT16       iaddr4;             /* individual address filter 4 */
  190.     volatile UINT16     boff_cnt;           /* backoff counter */
  191.     UINT16       taddr_h;            /* temp address (MSB) */
  192.     UINT16       taddr_m;            /* temp address */
  193.     UINT16       taddr_l;            /* temp address (LSB) */
  194.     } SCC_ETHER_PROTO;
  195.  
  196. /* SCC device descriptor */
  197. typedef struct          /* SCC_ETHER_DEV */
  198.     {
  199.     int                 sccNum;         /* number of SCC device */
  200.     int                 txBdNum;        /* number of transmit buf descriptors */
  201.     int                 rxBdNum;        /* number of receive buf descriptors */
  202.     SCC_BUF *           txBdBase;       /* transmit BD base address */
  203.     SCC_BUF *           rxBdBase;       /* receive BD base address */
  204.     u_char *            txBufBase;      /* transmit buffer base address */
  205.     u_char *            rxBufBase;      /* receive buffer base address */
  206.     UINT32              txBufSize;      /* transmit buffer size */
  207.     UINT32              rxBufSize;      /* receive buffer size */
  208.     int                 txBdNext;       /* next transmit BD to fill */
  209.     int                 rxBdNext;       /* next receive BD to read */
  210.     volatile SCC *      pScc;           /* SCC parameter RAM */
  211.     volatile SCC_REG *  pSccReg;        /* SCC registers */
  212.     UINT32              intMask;        /* interrupt acknowledge mask */
  213.     } SCC_ETHER_DEV;
  214. #ifdef __cplusplus
  215. }
  216. #endif
  217. #endif /* __INCif_cpmh */