Annotation of Gnu-Mach/linux/src/drivers/net/eth82586.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * eth82586.h: Intel EtherExpress defines
                      3:  *
                      4:  * Written 1995 by John Sullivan
                      5:  * See eexpress.c for further details
                      6:  * documentation and usage to do.
                      7:  */
                      8: 
                      9: /*
                     10:  * EtherExpress card register addresses
                     11:  * as offsets from the base IO region (dev->base_addr)
                     12:  */
                     13: 
                     14: #define DATAPORT 0x0000
                     15: #define WRITE_PTR 0x0002
                     16: #define READ_PTR 0x0004
                     17: #define SIGNAL_CA 0x0006
                     18: #define SET_IRQ 0x0007
                     19: #define SM_PTR 0x0008
                     20: #define MEM_Ctrl 0x000b
                     21: #define MEM_Page_Ctrl 0x000c
                     22: #define Config 0x000d
                     23: #define EEPROM_Ctrl 0x000e
                     24: #define ID_PORT 0x000f
                     25: 
                     26: /*
                     27:  * offset to shadowed memory, 0 <= x <= 31. We don't use this yet,
                     28:  * but may in the future. Is shadow memory access any faster than
                     29:  * dataport access?
                     30:  */
                     31: #define SM_ADDR(x) (0x4000+((x&0x10)<<10)+(x&0xf))
                     32: 
                     33: /* Always mirrors eexp-memory at 0x0008-0x000f */
                     34: #define SCB_STATUS 0xc008
                     35: #define SCB_CMD 0xc00a
                     36: #define SCB_CBL 0xc00c
                     37: #define SCB_RFA 0xc00e
                     38: 
                     39: 
                     40: 
                     41: /*
                     42:  * card register defines
                     43:  */
                     44: 
                     45: /* SET_IRQ */
                     46: #define SIRQ_en 0x08
                     47: #define SIRQ_dis 0x00
                     48: 
                     49: /* Config */
                     50: #define set_loopback outb(inb(ioaddr+Config)|0x02,ioaddr+Config)
                     51: #define clear_loopback outb(inb(ioaddr+Config)&0xfd,ioaddr+Config)
                     52: 
                     53: /* EEPROM_Ctrl */
                     54: #define EC_Clk 0x01
                     55: #define EC_CS  0x02
                     56: #define EC_Wr  0x04
                     57: #define EC_Rd  0x08
                     58: #define ASIC_RST 0x40
                     59: #define i586_RST  0x80
                     60: 
                     61: #define eeprom_delay() { int _i = 40; while (--_i>0) { __SLOW_DOWN_IO; }}
                     62: 
                     63: /*
                     64:  * i82586 Memory Configuration
                     65:  */
                     66: 
                     67: /* (System Configuration Pointer) System start up block, read after 586_RST */
                     68: #define SCP_START 0xfff6
                     69: 
                     70: 
                     71: /* Intermediate System Configuration Pointer */
                     72: #define ISCP_START 0x0000
                     73: /* System Command Block */
                     74: #define SCB_START 0x0008
                     75: 
                     76: /*
                     77:  * Start of buffer region. If we have 64k memory, eexp_hw_probe() may raise
                     78:  * NUM_TX_BUFS. RX_BUF_END is set to the end of memory, and all space between
                     79:  * the transmit buffer region and end of memory used for as many receive buffers
                     80:  * as we can fit. See eexp_hw_[(rx)(tx)]init().
                     81:  */
                     82: #define TX_BUF_START 0x0100
                     83: #define TX_BUF_SIZE ((24+ETH_FRAME_LEN+31)&~0x1f)
                     84: #define RX_BUF_SIZE ((32+ETH_FRAME_LEN+31)&~0x1f)
                     85: 
                     86: 
                     87: 
                     88: /*
                     89:  * SCB defines
                     90:  */
                     91: 
                     92: /* these functions take the SCB status word and test the relevant status bit */
                     93: #define SCB_complete(s) ((s&0x8000)!=0)
                     94: #define SCB_rxdframe(s) ((s&0x4000)!=0)
                     95: #define SCB_CUdead(s) ((s&0x2000)!=0)
                     96: #define SCB_RUdead(s) ((s&0x1000)!=0)
                     97: #define SCB_ack(s) (s & 0xf000)
                     98: 
                     99: /* Command unit status: 0=idle, 1=suspended, 2=active */
                    100: #define SCB_CUstat(s) ((s&0x0300)>>8)
                    101: 
                    102: /* Receive unit status: 0=idle, 1=suspended, 2=out of resources, 4=ready */
                    103: #define SCB_RUstat(s) ((s&0x0070)>>4)
                    104: 
                    105: /* SCB commands */
                    106: #define SCB_CUnop     0x0000
                    107: #define SCB_CUstart   0x0100
                    108: #define SCB_CUresume  0x0200
                    109: #define SCB_CUsuspend 0x0300
                    110: #define SCB_CUabort   0x0400
                    111: 
                    112: /* ? */
                    113: #define SCB_resetchip 0x0080
                    114: 
                    115: #define SCB_RUnop     0x0000
                    116: #define SCB_RUstart   0x0010
                    117: #define SCB_RUresume  0x0020
                    118: #define SCB_RUsuspend 0x0030
                    119: #define SCB_RUabort   0x0040
                    120: 
                    121: 
                    122: /*
                    123:  * Command block defines
                    124:  */
                    125: 
                    126: #define Stat_Done(s)   ((s&0x8000)!=0)
                    127: #define Stat_Busy(s)   ((s&0x4000)!=0)
                    128: #define Stat_OK(s)     ((s&0x2000)!=0)
                    129: #define Stat_Abort(s)  ((s&0x1000)!=0)
                    130: #define Stat_STFail    ((s&0x0800)!=0)
                    131: #define Stat_TNoCar(s) ((s&0x0400)!=0)
                    132: #define Stat_TNoCTS(s) ((s&0x0200)!=0)
                    133: #define Stat_TNoDMA(s) ((s&0x0100)!=0)
                    134: #define Stat_TDefer(s) ((s&0x0080)!=0)
                    135: #define Stat_TColl(s)  ((s&0x0040)!=0)
                    136: #define Stat_TXColl(s) ((s&0x0020)!=0)
                    137: #define Stat_NoColl(s) (s&0x000f)
                    138: 
                    139: /* Cmd_END will end AFTER the command if this is the first
                    140:  * command block after an SCB_CUstart, but BEFORE the command
                    141:  * for all subsequent commands. Best strategy is to place
                    142:  * Cmd_INT on the last command in the sequence, followed by a
                    143:  * dummy Cmd_Nop with Cmd_END after this.
                    144:  */
                    145: #define Cmd_END     0x8000
                    146: #define Cmd_SUS     0x4000
                    147: #define Cmd_INT     0x2000
                    148: 
                    149: #define Cmd_Nop     0x0000
                    150: #define Cmd_SetAddr 0x0001
                    151: #define Cmd_Config  0x0002
                    152: #define Cmd_MCast   0x0003
                    153: #define Cmd_Xmit    0x0004
                    154: #define Cmd_TDR     0x0005
                    155: #define Cmd_Dump    0x0006
                    156: #define Cmd_Diag    0x0007
                    157: 
                    158: 
                    159: /*
                    160:  * Frame Descriptor (Receive block) defines
                    161:  */
                    162: 
                    163: #define FD_Done(s)  ((s&0x8000)!=0)
                    164: #define FD_Busy(s)  ((s&0x4000)!=0)
                    165: #define FD_OK(s)    ((s&0x2000)!=0)
                    166: 
                    167: #define FD_CRC(s)   ((s&0x0800)!=0)
                    168: #define FD_Align(s) ((s&0x0400)!=0)
                    169: #define FD_Resrc(s) ((s&0x0200)!=0)
                    170: #define FD_DMA(s)   ((s&0x0100)!=0)
                    171: #define FD_Short(s) ((s&0x0080)!=0)
                    172: #define FD_NoEOF(s) ((s&0x0040)!=0)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.