linux/include/linux/i82593.h
<<
>>
Prefs
   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
  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
 156struct 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 */
 230