| /* |
| * Definitions for Intel 82593 CSMA/CD Core LAN Controller |
| * The definitions are taken from the 1992 users manual with Intel |
| * order number 297125-001. |
| * |
| * /usr/src/pc/RCS/i82593.h,v 1.1 1996/07/17 15:23:12 root Exp |
| * |
| * Copyright 1994, Anders Klemets <klemets@it.kth.se> |
| * |
| * This software may be freely distributed for noncommercial purposes |
| * as long as this notice is retained. |
| * |
| * HISTORY |
| * i82593.h,v |
| * Revision 1.1 1996/07/17 15:23:12 root |
| * Initial revision |
| * |
| * Revision 1.3 1995/04/05 15:13:58 adj |
| * Initial alpha release |
| * |
| * Revision 1.2 1994/06/16 23:57:31 klemets |
| * Mirrored all the fields in the configuration block. |
| * |
| * Revision 1.1 1994/06/02 20:25:34 klemets |
| * Initial revision |
| * |
| * |
| */ |
| #ifndef _I82593_H |
| #define _I82593_H |
| |
| /* Intel 82593 CSMA/CD Core LAN Controller */ |
| |
| /* Port 0 Command Register definitions */ |
| |
| /* Execution operations */ |
| #define OP0_NOP 0 /* CHNL = 0 */ |
| #define OP0_SWIT_TO_PORT_1 0 /* CHNL = 1 */ |
| #define OP0_IA_SETUP 1 |
| #define OP0_CONFIGURE 2 |
| #define OP0_MC_SETUP 3 |
| #define OP0_TRANSMIT 4 |
| #define OP0_TDR 5 |
| #define OP0_DUMP 6 |
| #define OP0_DIAGNOSE 7 |
| #define OP0_TRANSMIT_NO_CRC 9 |
| #define OP0_RETRANSMIT 12 |
| #define OP0_ABORT 13 |
| /* Reception operations */ |
| #define OP0_RCV_ENABLE 8 |
| #define OP0_RCV_DISABLE 10 |
| #define OP0_STOP_RCV 11 |
| /* Status pointer control operations */ |
| #define OP0_FIX_PTR 15 /* CHNL = 1 */ |
| #define OP0_RLS_PTR 15 /* CHNL = 0 */ |
| #define OP0_RESET 14 |
| |
| #define CR0_CHNL (1 << 4) /* 0=Channel 0, 1=Channel 1 */ |
| #define CR0_STATUS_0 0x00 |
| #define CR0_STATUS_1 0x20 |
| #define CR0_STATUS_2 0x40 |
| #define CR0_STATUS_3 0x60 |
| #define CR0_INT_ACK (1 << 7) /* 0=No ack, 1=acknowledge */ |
| |
| /* Port 0 Status Register definitions */ |
| |
| #define SR0_NO_RESULT 0 /* dummy */ |
| #define SR0_EVENT_MASK 0x0f |
| #define SR0_IA_SETUP_DONE 1 |
| #define SR0_CONFIGURE_DONE 2 |
| #define SR0_MC_SETUP_DONE 3 |
| #define SR0_TRANSMIT_DONE 4 |
| #define SR0_TDR_DONE 5 |
| #define SR0_DUMP_DONE 6 |
| #define SR0_DIAGNOSE_PASSED 7 |
| #define SR0_TRANSMIT_NO_CRC_DONE 9 |
| #define SR0_RETRANSMIT_DONE 12 |
| #define SR0_EXECUTION_ABORTED 13 |
| #define SR0_END_OF_FRAME 8 |
| #define SR0_RECEPTION_ABORTED 10 |
| #define SR0_DIAGNOSE_FAILED 15 |
| #define SR0_STOP_REG_HIT 11 |
| |
| #define SR0_CHNL (1 << 4) |
| #define SR0_EXECUTION (1 << 5) |
| #define SR0_RECEPTION (1 << 6) |
| #define SR0_INTERRUPT (1 << 7) |
| #define SR0_BOTH_RX_TX (SR0_EXECUTION | SR0_RECEPTION) |
| |
| #define SR3_EXEC_STATE_MASK 0x03 |
| #define SR3_EXEC_IDLE 0 |
| #define SR3_TX_ABORT_IN_PROGRESS 1 |
| #define SR3_EXEC_ACTIVE 2 |
| #define SR3_ABORT_IN_PROGRESS 3 |
| #define SR3_EXEC_CHNL (1 << 2) |
| #define SR3_STP_ON_NO_RSRC (1 << 3) |
| #define SR3_RCVING_NO_RSRC (1 << 4) |
| #define SR3_RCV_STATE_MASK 0x60 |
| #define SR3_RCV_IDLE 0x00 |
| #define SR3_RCV_READY 0x20 |
| #define SR3_RCV_ACTIVE 0x40 |
| #define SR3_RCV_STOP_IN_PROG 0x60 |
| #define SR3_RCV_CHNL (1 << 7) |
| |
| /* Port 1 Command Register definitions */ |
| |
| #define OP1_NOP 0 |
| #define OP1_SWIT_TO_PORT_0 1 |
| #define OP1_INT_DISABLE 2 |
| #define OP1_INT_ENABLE 3 |
| #define OP1_SET_TS 5 |
| #define OP1_RST_TS 7 |
| #define OP1_POWER_DOWN 8 |
| #define OP1_RESET_RING_MNGMT 11 |
| #define OP1_RESET 14 |
| #define OP1_SEL_RST 15 |
| |
| #define CR1_STATUS_4 0x00 |
| #define CR1_STATUS_5 0x20 |
| #define CR1_STATUS_6 0x40 |
| #define CR1_STOP_REG_UPDATE (1 << 7) |
| |
| /* Receive frame status bits */ |
| |
| #define RX_RCLD (1 << 0) |
| #define RX_IA_MATCH (1 << 1) |
| #define RX_NO_AD_MATCH (1 << 2) |
| #define RX_NO_SFD (1 << 3) |
| #define RX_SRT_FRM (1 << 7) |
| #define RX_OVRRUN (1 << 8) |
| #define RX_ALG_ERR (1 << 10) |
| #define RX_CRC_ERR (1 << 11) |
| #define RX_LEN_ERR (1 << 12) |
| #define RX_RCV_OK (1 << 13) |
| #define RX_TYP_LEN (1 << 15) |
| |
| /* Transmit status bits */ |
| |
| #define TX_NCOL_MASK 0x0f |
| #define TX_FRTL (1 << 4) |
| #define TX_MAX_COL (1 << 5) |
| #define TX_HRT_BEAT (1 << 6) |
| #define TX_DEFER (1 << 7) |
| #define TX_UND_RUN (1 << 8) |
| #define TX_LOST_CTS (1 << 9) |
| #define TX_LOST_CRS (1 << 10) |
| #define TX_LTCOL (1 << 11) |
| #define TX_OK (1 << 13) |
| #define TX_COLL (1 << 15) |
| |
| struct i82593_conf_block { |
| u_char fifo_limit : 4, |
| forgnesi : 1, |
| fifo_32 : 1, |
| d6mod : 1, |
| throttle_enb : 1; |
| u_char throttle : 6, |
| cntrxint : 1, |
| contin : 1; |
| u_char addr_len : 3, |
| acloc : 1, |
| preamb_len : 2, |
| loopback : 2; |
| u_char lin_prio : 3, |
| tbofstop : 1, |
| exp_prio : 3, |
| bof_met : 1; |
| u_char : 4, |
| ifrm_spc : 4; |
| u_char : 5, |
| slottim_low : 3; |
| u_char slottim_hi : 3, |
| : 1, |
| max_retr : 4; |
| u_char prmisc : 1, |
| bc_dis : 1, |
| : 1, |
| crs_1 : 1, |
| nocrc_ins : 1, |
| crc_1632 : 1, |
| : 1, |
| crs_cdt : 1; |
| u_char cs_filter : 3, |
| crs_src : 1, |
| cd_filter : 3, |
| : 1; |
| u_char : 2, |
| min_fr_len : 6; |
| u_char lng_typ : 1, |
| lng_fld : 1, |
| rxcrc_xf : 1, |
| artx : 1, |
| sarec : 1, |
| tx_jabber : 1, /* why is this called max_len in the manual? */ |
| hash_1 : 1, |
| lbpkpol : 1; |
| u_char : 6, |
| fdx : 1, |
| : 1; |
| u_char dummy_6 : 6, /* supposed to be ones */ |
| mult_ia : 1, |
| dis_bof : 1; |
| u_char dummy_1 : 1, /* supposed to be one */ |
| tx_ifs_retrig : 2, |
| mc_all : 1, |
| rcv_mon : 2, |
| frag_acpt : 1, |
| tstrttrs : 1; |
| u_char fretx : 1, |
| runt_eop : 1, |
| hw_sw_pin : 1, |
| big_endn : 1, |
| syncrqs : 1, |
| sttlen : 1, |
| tx_eop : 1, |
| rx_eop : 1; |
| u_char rbuf_size : 5, |
| rcvstop : 1, |
| : 2; |
| }; |
| |
| #define I82593_MAX_MULTICAST_ADDRESSES 128 /* Hardware hashed filter */ |
| |
| #endif /* _I82593_H */ |