i82593.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. /*
  2. * Definitions for Intel 82593 CSMA/CD Core LAN Controller
  3. * The definitions are taken from the 1992 users manual with Intel
  4. * order number 297125-001.
  5. *
  6. * /usr/src/pc/RCS/i82593.h,v 1.1 1996/07/17 15:23:12 root Exp
  7. *
  8. * Copyright 1994, Anders Klemets <klemets@it.kth.se>
  9. *
  10. * HISTORY
  11. * i82593.h,v
  12. * Revision 1.4 2005/11/4 09:15:00 baroniunas
  13. * Modified copyright with permission of author as follows:
  14. *
  15. * "If I82539.H is the only file with my copyright statement
  16. * that is included in the Source Forge project, then you have
  17. * my approval to change the copyright statement to be a GPL
  18. * license, in the way you proposed on October 10."
  19. *
  20. * Revision 1.1 1996/07/17 15:23:12 root
  21. * Initial revision
  22. *
  23. * Revision 1.3 1995/04/05 15:13:58 adj
  24. * Initial alpha release
  25. *
  26. * Revision 1.2 1994/06/16 23:57:31 klemets
  27. * Mirrored all the fields in the configuration block.
  28. *
  29. * Revision 1.1 1994/06/02 20:25:34 klemets
  30. * Initial revision
  31. *
  32. *
  33. */
  34. #ifndef _I82593_H
  35. #define _I82593_H
  36. /* Intel 82593 CSMA/CD Core LAN Controller */
  37. /* Port 0 Command Register definitions */
  38. /* Execution operations */
  39. #define OP0_NOP 0 /* CHNL = 0 */
  40. #define OP0_SWIT_TO_PORT_1 0 /* CHNL = 1 */
  41. #define OP0_IA_SETUP 1
  42. #define OP0_CONFIGURE 2
  43. #define OP0_MC_SETUP 3
  44. #define OP0_TRANSMIT 4
  45. #define OP0_TDR 5
  46. #define OP0_DUMP 6
  47. #define OP0_DIAGNOSE 7
  48. #define OP0_TRANSMIT_NO_CRC 9
  49. #define OP0_RETRANSMIT 12
  50. #define OP0_ABORT 13
  51. /* Reception operations */
  52. #define OP0_RCV_ENABLE 8
  53. #define OP0_RCV_DISABLE 10
  54. #define OP0_STOP_RCV 11
  55. /* Status pointer control operations */
  56. #define OP0_FIX_PTR 15 /* CHNL = 1 */
  57. #define OP0_RLS_PTR 15 /* CHNL = 0 */
  58. #define OP0_RESET 14
  59. #define CR0_CHNL (1 << 4) /* 0=Channel 0, 1=Channel 1 */
  60. #define CR0_STATUS_0 0x00
  61. #define CR0_STATUS_1 0x20
  62. #define CR0_STATUS_2 0x40
  63. #define CR0_STATUS_3 0x60
  64. #define CR0_INT_ACK (1 << 7) /* 0=No ack, 1=acknowledge */
  65. /* Port 0 Status Register definitions */
  66. #define SR0_NO_RESULT 0 /* dummy */
  67. #define SR0_EVENT_MASK 0x0f
  68. #define SR0_IA_SETUP_DONE 1
  69. #define SR0_CONFIGURE_DONE 2
  70. #define SR0_MC_SETUP_DONE 3
  71. #define SR0_TRANSMIT_DONE 4
  72. #define SR0_TDR_DONE 5
  73. #define SR0_DUMP_DONE 6
  74. #define SR0_DIAGNOSE_PASSED 7
  75. #define SR0_TRANSMIT_NO_CRC_DONE 9
  76. #define SR0_RETRANSMIT_DONE 12
  77. #define SR0_EXECUTION_ABORTED 13
  78. #define SR0_END_OF_FRAME 8
  79. #define SR0_RECEPTION_ABORTED 10
  80. #define SR0_DIAGNOSE_FAILED 15
  81. #define SR0_STOP_REG_HIT 11
  82. #define SR0_CHNL (1 << 4)
  83. #define SR0_EXECUTION (1 << 5)
  84. #define SR0_RECEPTION (1 << 6)
  85. #define SR0_INTERRUPT (1 << 7)
  86. #define SR0_BOTH_RX_TX (SR0_EXECUTION | SR0_RECEPTION)
  87. #define SR3_EXEC_STATE_MASK 0x03
  88. #define SR3_EXEC_IDLE 0
  89. #define SR3_TX_ABORT_IN_PROGRESS 1
  90. #define SR3_EXEC_ACTIVE 2
  91. #define SR3_ABORT_IN_PROGRESS 3
  92. #define SR3_EXEC_CHNL (1 << 2)
  93. #define SR3_STP_ON_NO_RSRC (1 << 3)
  94. #define SR3_RCVING_NO_RSRC (1 << 4)
  95. #define SR3_RCV_STATE_MASK 0x60
  96. #define SR3_RCV_IDLE 0x00
  97. #define SR3_RCV_READY 0x20
  98. #define SR3_RCV_ACTIVE 0x40
  99. #define SR3_RCV_STOP_IN_PROG 0x60
  100. #define SR3_RCV_CHNL (1 << 7)
  101. /* Port 1 Command Register definitions */
  102. #define OP1_NOP 0
  103. #define OP1_SWIT_TO_PORT_0 1
  104. #define OP1_INT_DISABLE 2
  105. #define OP1_INT_ENABLE 3
  106. #define OP1_SET_TS 5
  107. #define OP1_RST_TS 7
  108. #define OP1_POWER_DOWN 8
  109. #define OP1_RESET_RING_MNGMT 11
  110. #define OP1_RESET 14
  111. #define OP1_SEL_RST 15
  112. #define CR1_STATUS_4 0x00
  113. #define CR1_STATUS_5 0x20
  114. #define CR1_STATUS_6 0x40
  115. #define CR1_STOP_REG_UPDATE (1 << 7)
  116. /* Receive frame status bits */
  117. #define RX_RCLD (1 << 0)
  118. #define RX_IA_MATCH (1 << 1)
  119. #define RX_NO_AD_MATCH (1 << 2)
  120. #define RX_NO_SFD (1 << 3)
  121. #define RX_SRT_FRM (1 << 7)
  122. #define RX_OVRRUN (1 << 8)
  123. #define RX_ALG_ERR (1 << 10)
  124. #define RX_CRC_ERR (1 << 11)
  125. #define RX_LEN_ERR (1 << 12)
  126. #define RX_RCV_OK (1 << 13)
  127. #define RX_TYP_LEN (1 << 15)
  128. /* Transmit status bits */
  129. #define TX_NCOL_MASK 0x0f
  130. #define TX_FRTL (1 << 4)
  131. #define TX_MAX_COL (1 << 5)
  132. #define TX_HRT_BEAT (1 << 6)
  133. #define TX_DEFER (1 << 7)
  134. #define TX_UND_RUN (1 << 8)
  135. #define TX_LOST_CTS (1 << 9)
  136. #define TX_LOST_CRS (1 << 10)
  137. #define TX_LTCOL (1 << 11)
  138. #define TX_OK (1 << 13)
  139. #define TX_COLL (1 << 15)
  140. struct i82593_conf_block {
  141. u_char fifo_limit : 4,
  142. forgnesi : 1,
  143. fifo_32 : 1,
  144. d6mod : 1,
  145. throttle_enb : 1;
  146. u_char throttle : 6,
  147. cntrxint : 1,
  148. contin : 1;
  149. u_char addr_len : 3,
  150. acloc : 1,
  151. preamb_len : 2,
  152. loopback : 2;
  153. u_char lin_prio : 3,
  154. tbofstop : 1,
  155. exp_prio : 3,
  156. bof_met : 1;
  157. u_char : 4,
  158. ifrm_spc : 4;
  159. u_char : 5,
  160. slottim_low : 3;
  161. u_char slottim_hi : 3,
  162. : 1,
  163. max_retr : 4;
  164. u_char prmisc : 1,
  165. bc_dis : 1,
  166. : 1,
  167. crs_1 : 1,
  168. nocrc_ins : 1,
  169. crc_1632 : 1,
  170. : 1,
  171. crs_cdt : 1;
  172. u_char cs_filter : 3,
  173. crs_src : 1,
  174. cd_filter : 3,
  175. : 1;
  176. u_char : 2,
  177. min_fr_len : 6;
  178. u_char lng_typ : 1,
  179. lng_fld : 1,
  180. rxcrc_xf : 1,
  181. artx : 1,
  182. sarec : 1,
  183. tx_jabber : 1, /* why is this called max_len in the manual? */
  184. hash_1 : 1,
  185. lbpkpol : 1;
  186. u_char : 6,
  187. fdx : 1,
  188. : 1;
  189. u_char dummy_6 : 6, /* supposed to be ones */
  190. mult_ia : 1,
  191. dis_bof : 1;
  192. u_char dummy_1 : 1, /* supposed to be one */
  193. tx_ifs_retrig : 2,
  194. mc_all : 1,
  195. rcv_mon : 2,
  196. frag_acpt : 1,
  197. tstrttrs : 1;
  198. u_char fretx : 1,
  199. runt_eop : 1,
  200. hw_sw_pin : 1,
  201. big_endn : 1,
  202. syncrqs : 1,
  203. sttlen : 1,
  204. tx_eop : 1,
  205. rx_eop : 1;
  206. u_char rbuf_size : 5,
  207. rcvstop : 1,
  208. : 2;
  209. };
  210. #define I82593_MAX_MULTICAST_ADDRESSES 128 /* Hardware hashed filter */
  211. #endif /* _I82593_H */