diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2000-06-12 15:00:15 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2000-06-12 15:00:15 +0000 |
commit | df49c60c9671e4a28e636964d744c1f59fb6cb68 (patch) | |
tree | eabd85e189514ad412a35414ba5d483dcda3ef1f /c/src/lib/libbsp/m68k/mvme167/network/uti596.h | |
parent | Purged as many egcs references as possible. (diff) | |
download | rtems-df49c60c9671e4a28e636964d744c1f59fb6cb68.tar.bz2 |
Merged from 4.5.0-beta3a
Diffstat (limited to 'c/src/lib/libbsp/m68k/mvme167/network/uti596.h')
-rw-r--r-- | c/src/lib/libbsp/m68k/mvme167/network/uti596.h | 297 |
1 files changed, 186 insertions, 111 deletions
diff --git a/c/src/lib/libbsp/m68k/mvme167/network/uti596.h b/c/src/lib/libbsp/m68k/mvme167/network/uti596.h index 5757767526..d1d3d1ae2e 100644 --- a/c/src/lib/libbsp/m68k/mvme167/network/uti596.h +++ b/c/src/lib/libbsp/m68k/mvme167/network/uti596.h @@ -3,7 +3,6 @@ /* * EII: March 11: Created v. 0.0 - * Jan 12/98 Added STAT bits, s11-=s5 and max_colls. * * $Id$ */ @@ -55,14 +54,11 @@ struct enet_statistics{ int nic_reset_count; /* The number of times uti596reset() has been called. */ }; -#define UTI596_MUTEX 1 - - #define CMD_EOL 0x8000 /* The last command of the list, stop. */ #define CMD_SUSP 0x4000 /* Suspend after doing cmd. */ #define CMD_INTR 0x2000 /* Interrupt after doing cmd. */ -#define CMD_FLEX 0x0008 /* Enable flexible memory model */ +#define CMD_FLEX 0x0008 /* Enable flexible memory model */ #define SCB_STAT_CX 0x8000 /* Cmd completes with 'I' bit set */ #define SCB_STAT_FR 0x4000 /* Frame Received */ @@ -72,7 +68,6 @@ struct enet_statistics{ #define SCB_CUS_SUSPENDED 0x0100 #define SCB_CUS_ACTIVE 0x0200 - #define STAT_C 0x8000 /* Set to 1 after execution */ #define STAT_B 0x4000 /* 1 : Cmd being executed, 0 : Cmd done. */ #define STAT_OK 0x2000 /* 1: Command executed ok 0 : Error */ @@ -87,8 +82,6 @@ struct enet_statistics{ #define STAT_S5 0x0020 #define STAT_MAX_COLLS 0x000F - - #define RBD_STAT_P 0x4000 /* prefetch */ #define RBD_STAT_F 0x4000 /* used */ @@ -105,17 +98,11 @@ struct enet_statistics{ #define RU_NO_RESOURCES 0x0020 #define RU_READY 0x0040 - -#define IO_ADDR 0x360 -#define PORT_ADDR IO_ADDR -#define CHAN_ATTN PORT_ADDR + 4 -#define NIC_ADDR PORT_ADDR + 8 - #define I596_NULL ( ( void * ) 0xffffffff) #define UTI_596_END_OF_FRAME 0x8000 -#define SIZE_MASK 0x3fff -struct i596_tbd; + +struct i596_tbd; /* necessary forward declaration */ enum commands { CmdNOp = 0, @@ -128,14 +115,100 @@ enum commands { CmdDiagnose = 7 }; +/* + * 82596 Dump Command Result + */ +typedef volatile struct i596_dump_result { + unsigned char bf; + unsigned char config_bytes[11]; + unsigned char reserved1[2]; + unsigned char ia_bytes[6]; + unsigned short last_tx_status; + unsigned short tx_crc_byte01; + unsigned short tx_crc_byte23; + unsigned short rx_crc_byte01; + unsigned short rx_crc_byte23; + unsigned short rx_temp_mem01; + unsigned short rx_temp_mem23; + unsigned short rx_temp_mem45; + unsigned short last_rx_status; + unsigned short hash_reg01; + unsigned short hash_reg23; + unsigned short hash_reg45; + unsigned short hash_reg67; + unsigned short slot_time_counter; + unsigned short wait_time_counter; + unsigned short rx_frame_length; + unsigned long reserved2; + unsigned long cb_in3; + unsigned long cb_in2; + unsigned long cb_in1; + unsigned long la_cb_addr; + unsigned long rdb_pointer; + unsigned long int_memory; + unsigned long rfd_size; + unsigned long tbd_pointer; + unsigned long base_addr; + unsigned long ru_temp_reg; + unsigned long tcb_count; + unsigned long next_rb_size; + unsigned long next_rb_addr; + unsigned long curr_rb_size; + unsigned long la_rbd_addr; + unsigned long next_rbd_addr; + unsigned long curr_rbd_addr; + unsigned long curr_rb_count; + unsigned long next_fd_addr; + unsigned long curr_fd_add; + unsigned long temp_cu_reg; + unsigned long next_tb_count; + unsigned long buffer_addr; + unsigned long la_tbd_addr; + unsigned long next_tbd_addr; + unsigned long cb_command; + unsigned long next_cb_addr; + unsigned long curr_cb_addr; + unsigned long scb_cmd_word; + unsigned long scb_pointer; + unsigned long cb_stat_word; + unsigned long mm_lfsr; + unsigned char micro_machine_bit_array[28]; + unsigned char cu_port[16]; + unsigned long mm_alu; + unsigned long reserved3; + unsigned long mm_temp_a_rr; + unsigned long mm_temp_a; + unsigned long tx_dma_b_cnt; + unsigned long mm_input_port_addr_reg; + unsigned long tx_dma_addr; + unsigned long mm_port_reg1; + unsigned long rx_dma_b_cnt; + unsigned long mm_port_reg2; + unsigned long rx_dma_addr; + unsigned long reserved4; + unsigned long bus_t_timers; + unsigned long diu_cntrl_reg; + unsigned long reserved5; + unsigned long sysbus; + unsigned long biu_cntrl_reg; + unsigned long mm_disp_reg; + unsigned long mm_status_reg; + unsigned short dump_status; +} i596_dump_result; + +typedef volatile struct i596_selftest { + unsigned long rom_signature; + unsigned long results; +} i596_selftest; + /* * Action commands * (big endian, linear mode) - */ + */ typedef volatile struct i596_cmd { - volatile unsigned short status; - volatile unsigned short command; - volatile struct i596_cmd *next; + unsigned short status; + unsigned short command; + struct i596_cmd *next; } i596_cmd; typedef volatile struct i596_nop { @@ -144,21 +217,21 @@ typedef volatile struct i596_nop { typedef volatile struct i596_set_add { i596_cmd cmd; - char data[8]; + char data[8]; } i596_set_add; typedef volatile struct i596_configure { i596_cmd cmd; - char data[16]; + char data[16]; } i596_configure; typedef volatile struct i596_tx { - i596_cmd cmd; - volatile struct i596_tbd *pTbd; - unsigned short count; - unsigned short pad; - char data[6]; - unsigned short length; + i596_cmd cmd; + struct i596_tbd *pTbd; + unsigned short count; + unsigned short pad; + char data[6]; + unsigned short length; } i596_tx; typedef volatile struct i596_tdr { @@ -168,17 +241,17 @@ typedef volatile struct i596_tdr { typedef volatile struct i596_dump { i596_cmd cmd; - char *pData; + char *pData; } i596_dump; /* * Transmit buffer descriptor */ typedef volatile struct i596_tbd { - unsigned short size; - unsigned short pad; - volatile struct i596_tbd *next; - char *data; + unsigned short size; + unsigned short pad; + struct i596_tbd *next; + char *data; } i596_tbd; /* @@ -186,113 +259,115 @@ typedef volatile struct i596_tbd { * (flexible memory structure) */ typedef volatile struct i596_rbd { - unsigned short count; - unsigned short offset; - volatile struct i596_rbd *next; - char *data; - unsigned short size; - unsigned short pad; + unsigned short count; + unsigned short offset; + struct i596_rbd *next; + char *data; + unsigned short size; + unsigned short pad; } i596_rbd; /* * Receive Frame Descriptor */ typedef volatile struct i596_rfd { - volatile unsigned short stat; - volatile unsigned short cmd; - volatile struct i596_rfd *next; - i596_rbd *pRbd; - unsigned short count; - unsigned short size; - char data [1532]; + unsigned short stat; + unsigned short cmd; + struct i596_rfd *next; + i596_rbd *pRbd; + unsigned short count; + unsigned short size; + char data [1532]; } i596_rfd; -#define RX_RING_SIZE 8 - /* * System Control Block */ typedef volatile struct i596_scb { - volatile unsigned short status; - volatile unsigned short command; - volatile unsigned long Cmd_val; - volatile unsigned long Rfd_val; - volatile unsigned long crc_err; - volatile unsigned long align_err; - volatile unsigned long resource_err; - volatile unsigned long over_err; - volatile unsigned long rcvdt_err; - volatile unsigned long short_err; - volatile unsigned short t_off; - volatile unsigned short t_on; - i596_cmd *pCmd; - i596_rfd *pRfd; + unsigned short status; + unsigned short command; + unsigned long cmd_pointer; + unsigned long rfd_pointer; + unsigned long crc_err; + unsigned long align_err; + unsigned long resource_err; + unsigned long over_err; + unsigned long rcvdt_err; + unsigned long short_err; + unsigned short t_off; + unsigned short t_on; + i596_cmd *pCmd; + i596_rfd *pRfd; } i596_scb; /* * Intermediate System Configuration Pointer */ typedef volatile struct i596_iscp { - volatile unsigned long stat; - volatile unsigned long scb_val; - i596_scb *scb; + unsigned8 null1; /* Always zero */ + unsigned8 busy; /* Busy byte */ + unsigned short scb_offset; /* Not used in linear mode */ + unsigned long scb_pointer; /* Swapped pointer to scb */ + i596_scb *scb; /* Real pointer to scb */ } i596_iscp; /* * System Configuration Pointer */ typedef volatile struct i596_scp { - unsigned long sysbus; - unsigned long pad; - unsigned long iscp_val; - i596_iscp *iscp; + unsigned long sysbus; /* Only low 8 bits are used */ + unsigned long pad; /* Must be zero */ + unsigned long iscp_pointer; /* Swapped pointer to iscp */ + i596_iscp *iscp; /* Real pointer to iscp */ } i596_scp; +/* + * Device Dependent Data Structure + */ typedef volatile struct uti596_softc { - struct arpcom arpcom; - i596_scp *pScp; - i596_iscp iscp; - i596_scb scb; - i596_set_add set_add; - i596_configure set_conf; - i596_tdr tdr; - i596_nop nop; - unsigned long stat; - i596_tx *pTxCmd; - i596_tbd *pTbd; - - int ioAddr; - - i596_rfd *pBeginRFA; - i596_rfd *pEndRFA; - i596_rfd *pLastUnkRFD; - i596_rbd *pLastUnkRBD; - i596_rfd *pEndSavedQueue; - i596_cmd *pCmdHead; - i596_cmd *pCmdTail; /* unneeded, as chaining not used, but implemented */ - - rtems_id rxDaemonTid; - rtems_id txDaemonTid; - rtems_id resetDaemonTid; + struct arpcom arpcom; + i596_scp *pScp; /* Block aligned on 16 byte boundary */ + i596_scp *base_scp; /* Unaligned block. Need for free() */ + i596_iscp iscp; + i596_scb scb; + i596_set_add set_add; + i596_configure set_conf; + i596_tdr tdr; + i596_nop nop; + i596_tx *pTxCmd; + i596_tbd *pTbd; + + i596_rfd *pBeginRFA; + i596_rfd *pEndRFA; + i596_rfd *pLastUnkRFD; + i596_rbd *pLastUnkRBD; + i596_rfd *pEndSavedQueue; + i596_cmd *pCmdHead; + i596_cmd *pCmdTail; /* unneeded, as chaining not used, but implemented */ + + rtems_id rxDaemonTid; + rtems_id txDaemonTid; + rtems_id resetDaemonTid; struct enet_statistics stats; - int started; - unsigned long rxInterrupts; - unsigned long txInterrupts; - volatile int cmdOk; - int resetDone; - unsigned long txRawWait; - i596_rfd *pInboundFrameQueue; - short int rxBdCount; - short int txBdCount; - short int countRFD; - short int savedCount; - i596_rfd *pSavedRfdQueue; - rtems_name semaphore_name; - rtems_id semaphore_id; - char zeroes[64]; - unsigned long rawsndcnt; - int nic_reset; /* flag is for requesting that ISR issue a reset quest */ + int started; + unsigned long rxInterrupts; + unsigned long txInterrupts; + volatile int cmdOk; + unsigned short * pCurrent_command_status; + int resetDone; + unsigned long txRawWait; + i596_rfd *pInboundFrameQueue; + short int rxBdCount; + short int txBdCount; + short int countRFD; + short int savedCount; + i596_rfd *pSavedRfdQueue; + rtems_name semaphore_name; + rtems_id semaphore_id; + char zeroes[64]; + unsigned long rawsndcnt; + int nic_reset; /* flag for requesting that ISR issue a reset quest */ } uti596_softc_; #endif /* UTI596_H */ |