Annotation of Gnu-Mach/linux/src/drivers/net/3c505.h, revision 1.1

1.1     ! root        1: /*****************************************************************
        !             2:  *
        !             3:  *  defines for 3Com Etherlink Plus adapter
        !             4:  *
        !             5:  *****************************************************************/
        !             6: 
        !             7: /*
        !             8:  * I/O register offsets
        !             9:  */
        !            10: #define        PORT_COMMAND    0x00    /* read/write, 8-bit */
        !            11: #define        PORT_STATUS     0x02    /* read only, 8-bit */
        !            12: #define        PORT_AUXDMA     0x02    /* write only, 8-bit */
        !            13: #define        PORT_DATA       0x04    /* read/write, 16-bit */
        !            14: #define        PORT_CONTROL    0x06    /* read/write, 8-bit */
        !            15: 
        !            16: #define ELP_IO_EXTENT  0x10    /* size of used IO registers */
        !            17: 
        !            18: /*
        !            19:  * host control registers bits
        !            20:  */
        !            21: #define        ATTN    0x80    /* attention */
        !            22: #define        FLSH    0x40    /* flush data register */
        !            23: #define DMAE   0x20    /* DMA enable */
        !            24: #define DIR    0x10    /* direction */
        !            25: #define        TCEN    0x08    /* terminal count interrupt enable */
        !            26: #define        CMDE    0x04    /* command register interrupt enable */
        !            27: #define        HSF2    0x02    /* host status flag 2 */
        !            28: #define        HSF1    0x01    /* host status flag 1 */
        !            29: 
        !            30: /*
        !            31:  * combinations of HSF flags used for PCB transmission
        !            32:  */
        !            33: #define        HSF_PCB_ACK     HSF1
        !            34: #define        HSF_PCB_NAK     HSF2
        !            35: #define        HSF_PCB_END     (HSF2|HSF1)
        !            36: #define        HSF_PCB_MASK    (HSF2|HSF1)
        !            37: 
        !            38: /*
        !            39:  * host status register bits
        !            40:  */
        !            41: #define        HRDY    0x80    /* data register ready */
        !            42: #define        HCRE    0x40    /* command register empty */
        !            43: #define        ACRF    0x20    /* adapter command register full */
        !            44: /* #define DIR         0x10    direction - same as in control register */
        !            45: #define        DONE    0x08    /* DMA done */
        !            46: #define        ASF3    0x04    /* adapter status flag 3 */
        !            47: #define        ASF2    0x02    /* adapter status flag 2 */
        !            48: #define        ASF1    0x01    /* adapter status flag 1 */
        !            49: 
        !            50: /*
        !            51:  * combinations of ASF flags used for PCB reception
        !            52:  */
        !            53: #define        ASF_PCB_ACK     ASF1
        !            54: #define        ASF_PCB_NAK     ASF2
        !            55: #define        ASF_PCB_END     (ASF2|ASF1)
        !            56: #define        ASF_PCB_MASK    (ASF2|ASF1)
        !            57: 
        !            58: /*
        !            59:  * host aux DMA register bits
        !            60:  */
        !            61: #define        DMA_BRST        0x01    /* DMA burst */
        !            62: 
        !            63: /*
        !            64:  * maximum amount of data allowed in a PCB
        !            65:  */
        !            66: #define        MAX_PCB_DATA    62
        !            67: 
        !            68: /*****************************************************************
        !            69:  *
        !            70:  *  timeout value
        !            71:  *     this is a rough value used for loops to stop them from 
        !            72:  *     locking up the whole machine in the case of failure or
        !            73:  *     error conditions
        !            74:  *
        !            75:  *****************************************************************/
        !            76: 
        !            77: #define        TIMEOUT 300
        !            78: 
        !            79: /*****************************************************************
        !            80:  *
        !            81:  * PCB commands
        !            82:  *
        !            83:  *****************************************************************/
        !            84: 
        !            85: enum {
        !            86:   /*
        !            87:    * host PCB commands
        !            88:    */
        !            89:   CMD_CONFIGURE_ADAPTER_MEMORY = 0x01,
        !            90:   CMD_CONFIGURE_82586          = 0x02,
        !            91:   CMD_STATION_ADDRESS          = 0x03,
        !            92:   CMD_DMA_DOWNLOAD             = 0x04,
        !            93:   CMD_DMA_UPLOAD               = 0x05,
        !            94:   CMD_PIO_DOWNLOAD             = 0x06,
        !            95:   CMD_PIO_UPLOAD               = 0x07,
        !            96:   CMD_RECEIVE_PACKET           = 0x08,
        !            97:   CMD_TRANSMIT_PACKET          = 0x09,
        !            98:   CMD_NETWORK_STATISTICS       = 0x0a,
        !            99:   CMD_LOAD_MULTICAST_LIST      = 0x0b,
        !           100:   CMD_CLEAR_PROGRAM            = 0x0c,
        !           101:   CMD_DOWNLOAD_PROGRAM         = 0x0d,
        !           102:   CMD_EXECUTE_PROGRAM          = 0x0e,
        !           103:   CMD_SELF_TEST                        = 0x0f,
        !           104:   CMD_SET_STATION_ADDRESS      = 0x10,
        !           105:   CMD_ADAPTER_INFO             = 0x11,
        !           106:   NUM_TRANSMIT_CMDS,
        !           107: 
        !           108:   /*
        !           109:    * adapter PCB commands
        !           110:    */
        !           111:   CMD_CONFIGURE_ADAPTER_RESPONSE       = 0x31,
        !           112:   CMD_CONFIGURE_82586_RESPONSE         = 0x32,
        !           113:   CMD_ADDRESS_RESPONSE                 = 0x33,
        !           114:   CMD_DOWNLOAD_DATA_REQUEST            = 0x34,
        !           115:   CMD_UPLOAD_DATA_REQUEST              = 0x35,
        !           116:   CMD_RECEIVE_PACKET_COMPLETE          = 0x38,
        !           117:   CMD_TRANSMIT_PACKET_COMPLETE         = 0x39,
        !           118:   CMD_NETWORK_STATISTICS_RESPONSE      = 0x3a,
        !           119:   CMD_LOAD_MULTICAST_RESPONSE          = 0x3b,
        !           120:   CMD_CLEAR_PROGRAM_RESPONSE           = 0x3c,
        !           121:   CMD_DOWNLOAD_PROGRAM_RESPONSE                = 0x3d,
        !           122:   CMD_EXECUTE_RESPONSE                 = 0x3e,
        !           123:   CMD_SELF_TEST_RESPONSE               = 0x3f,
        !           124:   CMD_SET_ADDRESS_RESPONSE             = 0x40,
        !           125:   CMD_ADAPTER_INFO_RESPONSE            = 0x41
        !           126: };
        !           127: 
        !           128: /* Definitions for the PCB data structure */
        !           129: 
        !           130: /* Data units */
        !           131: typedef unsigned char         byte;
        !           132: typedef unsigned short int    word;
        !           133: typedef unsigned long int     dword;
        !           134: 
        !           135: /* Data structures */
        !           136: struct Memconf {
        !           137:        word    cmd_q,
        !           138:                rcv_q,
        !           139:                mcast,
        !           140:                frame,
        !           141:                rcv_b,
        !           142:                progs;
        !           143: };
        !           144: 
        !           145: struct Rcv_pkt {
        !           146:        word    buf_ofs,
        !           147:                buf_seg,
        !           148:                buf_len,
        !           149:                timeout;
        !           150: };
        !           151: 
        !           152: struct Xmit_pkt {
        !           153:        word    buf_ofs,
        !           154:                buf_seg,
        !           155:                pkt_len;
        !           156: };
        !           157: 
        !           158: struct Rcv_resp {
        !           159:        word    buf_ofs,
        !           160:                buf_seg,
        !           161:                buf_len,
        !           162:                pkt_len,
        !           163:                timeout,
        !           164:                status;
        !           165:        dword   timetag;
        !           166: };
        !           167: 
        !           168: struct Xmit_resp {
        !           169:        word    buf_ofs,
        !           170:                buf_seg,
        !           171:                c_stat,
        !           172:                status;
        !           173: };
        !           174: 
        !           175: 
        !           176: struct Netstat {
        !           177:        dword   tot_recv,
        !           178:                tot_xmit;
        !           179:        word    err_CRC,
        !           180:                err_align,
        !           181:                err_res,
        !           182:                err_ovrrun;
        !           183: };
        !           184: 
        !           185: 
        !           186: struct Selftest {
        !           187:        word    error;
        !           188:        union {
        !           189:                word ROM_cksum;
        !           190:                struct {
        !           191:                        word ofs, seg;
        !           192:                } RAM;
        !           193:                word i82586;
        !           194:        } failure;
        !           195: };
        !           196: 
        !           197: struct Info {
        !           198:        byte    minor_vers,
        !           199:                major_vers;
        !           200:        word    ROM_cksum,
        !           201:                RAM_sz,
        !           202:                free_ofs,
        !           203:                free_seg;
        !           204: };
        !           205: 
        !           206: struct Memdump {
        !           207:        word size,
        !           208:             off,
        !           209:             seg;
        !           210: };
        !           211: 
        !           212: /*
        !           213: Primary Command Block. The most important data structure. All communication
        !           214: between the host and the adapter is done with these. (Except for the actual
        !           215: ethernet data, which has different packaging.)
        !           216: */
        !           217: typedef struct {
        !           218:        byte    command;
        !           219:        byte    length;
        !           220:        union   {
        !           221:                struct Memconf          memconf;
        !           222:                word                    configure;
        !           223:                struct Rcv_pkt          rcv_pkt;
        !           224:                struct Xmit_pkt         xmit_pkt;
        !           225:                byte                    multicast[10][6];
        !           226:                byte                    eth_addr[6];
        !           227:                byte                    failed;
        !           228:                struct Rcv_resp         rcv_resp;
        !           229:                struct Xmit_resp        xmit_resp;
        !           230:                struct Netstat          netstat;
        !           231:                struct Selftest         selftest;
        !           232:                struct Info             info;
        !           233:                struct Memdump          memdump;
        !           234:                byte                    raw[62];
        !           235:        } data;
        !           236: } pcb_struct;
        !           237: 
        !           238: /* These defines for 'configure' */
        !           239: #define RECV_STATION   0x00
        !           240: #define RECV_BROAD     0x01
        !           241: #define RECV_MULTI     0x02
        !           242: #define RECV_PROMISC   0x04
        !           243: #define NO_LOOPBACK    0x00
        !           244: #define INT_LOOPBACK   0x08
        !           245: #define EXT_LOOPBACK   0x10

unix.superglobalmegacorp.com

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