| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | * | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 10 | * HISTORY | 
|  | 11 | * i82593.h,v | 
| John W. Linville | 620d9aa | 2005-11-16 16:09:53 -0500 | [diff] [blame] | 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 | * | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
|  | 37 | /* Intel 82593 CSMA/CD Core LAN Controller */ | 
|  | 38 |  | 
|  | 39 | /* Port 0 Command Register definitions */ | 
|  | 40 |  | 
|  | 41 | /* Execution operations */ | 
|  | 42 | #define OP0_NOP			0	/* CHNL = 0 */ | 
|  | 43 | #define OP0_SWIT_TO_PORT_1	0	/* CHNL = 1 */ | 
|  | 44 | #define OP0_IA_SETUP		1 | 
|  | 45 | #define OP0_CONFIGURE		2 | 
|  | 46 | #define OP0_MC_SETUP		3 | 
|  | 47 | #define OP0_TRANSMIT		4 | 
|  | 48 | #define OP0_TDR			5 | 
|  | 49 | #define OP0_DUMP		6 | 
|  | 50 | #define OP0_DIAGNOSE		7 | 
|  | 51 | #define OP0_TRANSMIT_NO_CRC	9 | 
|  | 52 | #define OP0_RETRANSMIT		12 | 
|  | 53 | #define OP0_ABORT		13 | 
|  | 54 | /* Reception operations */ | 
|  | 55 | #define OP0_RCV_ENABLE		8 | 
|  | 56 | #define OP0_RCV_DISABLE		10 | 
|  | 57 | #define OP0_STOP_RCV		11 | 
|  | 58 | /* Status pointer control operations */ | 
|  | 59 | #define OP0_FIX_PTR		15	/* CHNL = 1 */ | 
|  | 60 | #define OP0_RLS_PTR		15	/* CHNL = 0 */ | 
|  | 61 | #define OP0_RESET		14 | 
|  | 62 |  | 
|  | 63 | #define CR0_CHNL		(1 << 4)	/* 0=Channel 0, 1=Channel 1 */ | 
|  | 64 | #define CR0_STATUS_0		0x00 | 
|  | 65 | #define CR0_STATUS_1		0x20 | 
|  | 66 | #define CR0_STATUS_2		0x40 | 
|  | 67 | #define CR0_STATUS_3		0x60 | 
|  | 68 | #define CR0_INT_ACK		(1 << 7)	/* 0=No ack, 1=acknowledge */ | 
|  | 69 |  | 
|  | 70 | /* Port 0 Status Register definitions */ | 
|  | 71 |  | 
|  | 72 | #define SR0_NO_RESULT		0		/* dummy */ | 
|  | 73 | #define SR0_EVENT_MASK		0x0f | 
|  | 74 | #define SR0_IA_SETUP_DONE	1 | 
|  | 75 | #define SR0_CONFIGURE_DONE	2 | 
|  | 76 | #define SR0_MC_SETUP_DONE	3 | 
|  | 77 | #define SR0_TRANSMIT_DONE	4 | 
|  | 78 | #define SR0_TDR_DONE		5 | 
|  | 79 | #define SR0_DUMP_DONE		6 | 
|  | 80 | #define SR0_DIAGNOSE_PASSED	7 | 
|  | 81 | #define SR0_TRANSMIT_NO_CRC_DONE 9 | 
|  | 82 | #define SR0_RETRANSMIT_DONE	12 | 
|  | 83 | #define SR0_EXECUTION_ABORTED	13 | 
|  | 84 | #define SR0_END_OF_FRAME	8 | 
|  | 85 | #define SR0_RECEPTION_ABORTED	10 | 
|  | 86 | #define SR0_DIAGNOSE_FAILED	15 | 
|  | 87 | #define SR0_STOP_REG_HIT	11 | 
|  | 88 |  | 
|  | 89 | #define SR0_CHNL		(1 << 4) | 
|  | 90 | #define SR0_EXECUTION		(1 << 5) | 
|  | 91 | #define SR0_RECEPTION		(1 << 6) | 
|  | 92 | #define SR0_INTERRUPT		(1 << 7) | 
|  | 93 | #define SR0_BOTH_RX_TX		(SR0_EXECUTION | SR0_RECEPTION) | 
|  | 94 |  | 
|  | 95 | #define SR3_EXEC_STATE_MASK	0x03 | 
|  | 96 | #define SR3_EXEC_IDLE		0 | 
|  | 97 | #define SR3_TX_ABORT_IN_PROGRESS 1 | 
|  | 98 | #define SR3_EXEC_ACTIVE		2 | 
|  | 99 | #define SR3_ABORT_IN_PROGRESS	3 | 
|  | 100 | #define SR3_EXEC_CHNL		(1 << 2) | 
|  | 101 | #define SR3_STP_ON_NO_RSRC	(1 << 3) | 
|  | 102 | #define SR3_RCVING_NO_RSRC	(1 << 4) | 
|  | 103 | #define SR3_RCV_STATE_MASK	0x60 | 
|  | 104 | #define SR3_RCV_IDLE		0x00 | 
|  | 105 | #define SR3_RCV_READY		0x20 | 
|  | 106 | #define SR3_RCV_ACTIVE		0x40 | 
|  | 107 | #define SR3_RCV_STOP_IN_PROG	0x60 | 
|  | 108 | #define SR3_RCV_CHNL		(1 << 7) | 
|  | 109 |  | 
|  | 110 | /* Port 1 Command Register definitions */ | 
|  | 111 |  | 
|  | 112 | #define OP1_NOP			0 | 
|  | 113 | #define OP1_SWIT_TO_PORT_0	1 | 
|  | 114 | #define OP1_INT_DISABLE		2 | 
|  | 115 | #define OP1_INT_ENABLE		3 | 
|  | 116 | #define OP1_SET_TS		5 | 
|  | 117 | #define OP1_RST_TS		7 | 
|  | 118 | #define OP1_POWER_DOWN		8 | 
|  | 119 | #define OP1_RESET_RING_MNGMT	11 | 
|  | 120 | #define OP1_RESET		14 | 
|  | 121 | #define OP1_SEL_RST		15 | 
|  | 122 |  | 
|  | 123 | #define CR1_STATUS_4		0x00 | 
|  | 124 | #define CR1_STATUS_5		0x20 | 
|  | 125 | #define CR1_STATUS_6		0x40 | 
|  | 126 | #define CR1_STOP_REG_UPDATE	(1 << 7) | 
|  | 127 |  | 
|  | 128 | /* Receive frame status bits */ | 
|  | 129 |  | 
|  | 130 | #define	RX_RCLD			(1 << 0) | 
|  | 131 | #define RX_IA_MATCH		(1 << 1) | 
|  | 132 | #define	RX_NO_AD_MATCH		(1 << 2) | 
|  | 133 | #define RX_NO_SFD		(1 << 3) | 
|  | 134 | #define RX_SRT_FRM		(1 << 7) | 
|  | 135 | #define RX_OVRRUN		(1 << 8) | 
|  | 136 | #define RX_ALG_ERR		(1 << 10) | 
|  | 137 | #define RX_CRC_ERR		(1 << 11) | 
|  | 138 | #define RX_LEN_ERR		(1 << 12) | 
|  | 139 | #define RX_RCV_OK		(1 << 13) | 
|  | 140 | #define RX_TYP_LEN		(1 << 15) | 
|  | 141 |  | 
|  | 142 | /* Transmit status bits */ | 
|  | 143 |  | 
|  | 144 | #define TX_NCOL_MASK		0x0f | 
|  | 145 | #define TX_FRTL			(1 << 4) | 
|  | 146 | #define TX_MAX_COL		(1 << 5) | 
|  | 147 | #define TX_HRT_BEAT		(1 << 6) | 
|  | 148 | #define TX_DEFER		(1 << 7) | 
|  | 149 | #define TX_UND_RUN		(1 << 8) | 
|  | 150 | #define TX_LOST_CTS		(1 << 9) | 
|  | 151 | #define TX_LOST_CRS		(1 << 10) | 
|  | 152 | #define TX_LTCOL		(1 << 11) | 
|  | 153 | #define TX_OK			(1 << 13) | 
|  | 154 | #define TX_COLL			(1 << 15) | 
|  | 155 |  | 
|  | 156 | struct i82593_conf_block { | 
|  | 157 | u_char fifo_limit : 4, | 
|  | 158 | forgnesi   : 1, | 
|  | 159 | fifo_32    : 1, | 
|  | 160 | d6mod      : 1, | 
|  | 161 | throttle_enb : 1; | 
|  | 162 | u_char throttle   : 6, | 
|  | 163 | cntrxint   : 1, | 
|  | 164 | contin	    : 1; | 
|  | 165 | u_char addr_len   : 3, | 
|  | 166 | acloc 	    : 1, | 
|  | 167 | preamb_len : 2, | 
|  | 168 | loopback   : 2; | 
|  | 169 | u_char lin_prio   : 3, | 
|  | 170 | tbofstop   : 1, | 
|  | 171 | exp_prio   : 3, | 
|  | 172 | bof_met    : 1; | 
|  | 173 | u_char	    : 4, | 
|  | 174 | ifrm_spc   : 4; | 
|  | 175 | u_char	    : 5, | 
|  | 176 | slottim_low : 3; | 
|  | 177 | u_char slottim_hi : 3, | 
|  | 178 | : 1, | 
|  | 179 | max_retr   : 4; | 
|  | 180 | u_char prmisc     : 1, | 
|  | 181 | bc_dis     : 1, | 
|  | 182 | : 1, | 
|  | 183 | crs_1	    : 1, | 
|  | 184 | nocrc_ins  : 1, | 
|  | 185 | crc_1632   : 1, | 
|  | 186 | : 1, | 
|  | 187 | crs_cdt    : 1; | 
|  | 188 | u_char cs_filter  : 3, | 
|  | 189 | crs_src    : 1, | 
|  | 190 | cd_filter  : 3, | 
|  | 191 | : 1; | 
|  | 192 | u_char	    : 2, | 
|  | 193 | min_fr_len : 6; | 
|  | 194 | u_char lng_typ    : 1, | 
|  | 195 | lng_fld    : 1, | 
|  | 196 | rxcrc_xf   : 1, | 
|  | 197 | artx	    : 1, | 
|  | 198 | sarec	    : 1, | 
|  | 199 | tx_jabber  : 1,	/* why is this called max_len in the manual? */ | 
|  | 200 | hash_1	    : 1, | 
|  | 201 | lbpkpol    : 1; | 
|  | 202 | u_char	    : 6, | 
|  | 203 | fdx	    : 1, | 
|  | 204 | : 1; | 
|  | 205 | u_char dummy_6    : 6,	/* supposed to be ones */ | 
|  | 206 | mult_ia    : 1, | 
|  | 207 | dis_bof    : 1; | 
|  | 208 | u_char dummy_1    : 1,	/* supposed to be one */ | 
|  | 209 | tx_ifs_retrig : 2, | 
|  | 210 | mc_all     : 1, | 
|  | 211 | rcv_mon    : 2, | 
|  | 212 | frag_acpt  : 1, | 
|  | 213 | tstrttrs   : 1; | 
|  | 214 | u_char fretx	    : 1, | 
|  | 215 | runt_eop   : 1, | 
|  | 216 | hw_sw_pin  : 1, | 
|  | 217 | big_endn   : 1, | 
|  | 218 | syncrqs    : 1, | 
|  | 219 | sttlen     : 1, | 
|  | 220 | tx_eop     : 1, | 
|  | 221 | rx_eop	    : 1; | 
|  | 222 | u_char rbuf_size  : 5, | 
|  | 223 | rcvstop    : 1, | 
|  | 224 | : 2; | 
|  | 225 | }; | 
|  | 226 |  | 
|  | 227 | #define I82593_MAX_MULTICAST_ADDRESSES	128	/* Hardware hashed filter */ | 
|  | 228 |  | 
|  | 229 | #endif /* _I82593_H */ |