forked from Imagelibrary/rtems
This commit was manufactured by cvs2svn to create branch 'rtems-4-5-branch'.
Cherrypick from master 2000-04-05 13:27:52 UTC Joel Sherrill <joel.sherrill@OARcorp.com> 'New file. Copied from i386ex BSP as missing from submission.': c/src/lib/libbsp/m68k/mvme167/network/Makefile.am c/src/lib/libbsp/m68k/mvme167/network/netexterns.h c/src/lib/libbsp/m68k/mvme167/network/network.c c/src/lib/libbsp/m68k/mvme167/network/uti596.h make/custom/Cygwin-posix.cfg
This commit is contained in:
36
c/src/lib/libbsp/m68k/mvme167/network/Makefile.am
Normal file
36
c/src/lib/libbsp/m68k/mvme167/network/Makefile.am
Normal file
@@ -0,0 +1,36 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
|
||||
PGM = $(ARCH)/network.rel
|
||||
|
||||
C_FILES = network.c
|
||||
C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.o)
|
||||
|
||||
H_FILES = uti596.h
|
||||
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../../../automake/lib.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
$(PGM): $(OBJS)
|
||||
$(make-rel)
|
||||
|
||||
# the .rel file built here will be put into libbsp.a by ../wrapup/Makefile
|
||||
|
||||
if HAS_NETWORKING
|
||||
all-local: $(ARCH) $(OBJS) $(PGM)
|
||||
endif
|
||||
|
||||
.PRECIOUS: $(PGM)
|
||||
|
||||
EXTRA_DIST = network.c uti596.h
|
||||
|
||||
include $(top_srcdir)/../../../../../../automake/local.am
|
||||
18
c/src/lib/libbsp/m68k/mvme167/network/netexterns.h
Normal file
18
c/src/lib/libbsp/m68k/mvme167/network/netexterns.h
Normal file
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef NET_EXTERNS_H
|
||||
#define NET_EXTERNS_H
|
||||
|
||||
/*
|
||||
* External entry points
|
||||
*/
|
||||
|
||||
extern int uti596_attach(struct rtems_bsdnet_ifconfig *);
|
||||
extern int uti596dump(char * );
|
||||
extern void uti596reset(void);
|
||||
extern void uti596Diagnose(int);
|
||||
extern void uti596_request_reset(void);
|
||||
|
||||
#endif
|
||||
2889
c/src/lib/libbsp/m68k/mvme167/network/network.c
Normal file
2889
c/src/lib/libbsp/m68k/mvme167/network/network.c
Normal file
File diff suppressed because it is too large
Load Diff
298
c/src/lib/libbsp/m68k/mvme167/network/uti596.h
Normal file
298
c/src/lib/libbsp/m68k/mvme167/network/uti596.h
Normal file
@@ -0,0 +1,298 @@
|
||||
|
||||
/* uti596.h: Contains the defines and structures used by the uti596 driver */
|
||||
|
||||
/*
|
||||
* EII: March 11: Created v. 0.0
|
||||
* Jan 12/98 Added STAT bits, s11-=s5 and max_colls.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef UTI596_H
|
||||
#define UTI596_H
|
||||
#include <rtems/error.h>
|
||||
#include <rtems/rtems_bsdnet.h>
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/mbuf.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/sockio.h>
|
||||
|
||||
#include <net/if.h>
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/if_ether.h>
|
||||
|
||||
/* Ethernet statistics */
|
||||
|
||||
struct enet_statistics{
|
||||
int rx_packets; /* total packets received */
|
||||
int tx_packets; /* total packets transmitted */
|
||||
int rx_errors; /* bad packets received */
|
||||
int tx_errors; /* packet transmit problems */
|
||||
int rx_dropped; /* no space in buffers */
|
||||
int tx_dropped;
|
||||
int tx_retries_exceeded; /* excessive retries */
|
||||
int multicast; /* multicast packets received */
|
||||
int collisions;
|
||||
|
||||
/* detailed rx_errors: */
|
||||
int rx_length_errors;
|
||||
int rx_over_errors; /* receiver ring buff overflow */
|
||||
int rx_crc_errors; /* recved pkt with crc error */
|
||||
int rx_frame_errors; /* recv'd frame alignment error */
|
||||
int rx_fifo_errors; /* recv'r fifo overrun */
|
||||
int rx_missed_errors; /* receiver missed packet */
|
||||
|
||||
/* detailed tx_errors */
|
||||
int tx_aborted_errors;
|
||||
int tx_carrier_errors;
|
||||
int tx_fifo_errors;
|
||||
int tx_heartbeat_errors;
|
||||
int tx_window_errors;
|
||||
|
||||
/* NIC reset errors */
|
||||
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 SCB_STAT_CX 0x8000 /* Cmd completes with 'I' bit set */
|
||||
#define SCB_STAT_FR 0x4000 /* Frame Received */
|
||||
#define SCB_STAT_CNA 0x2000 /* Cmd unit Not Active */
|
||||
#define SCB_STAT_RNR 0x1000 /* Receiver Not Ready */
|
||||
|
||||
#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 */
|
||||
#define STAT_A 0x1000 /* command has been aborted */
|
||||
|
||||
#define STAT_S11 0x0800
|
||||
#define STAT_S10 0x0400
|
||||
#define STAT_S9 0x0200
|
||||
#define STAT_S8 0x0100
|
||||
#define STAT_S7 0x0080
|
||||
#define STAT_S6 0x0040
|
||||
#define STAT_S5 0x0020
|
||||
#define STAT_MAX_COLLS 0x000F
|
||||
|
||||
|
||||
|
||||
#define RBD_STAT_P 0x4000 /* prefetch */
|
||||
#define RBD_STAT_F 0x4000 /* used */
|
||||
|
||||
#define CUC_START 0x0100
|
||||
#define CUC_RESUME 0x0200
|
||||
#define CUC_SUSPEND 0x0300
|
||||
#define CUC_ABORT 0x0400
|
||||
#define RX_START 0x0010
|
||||
#define RX_RESUME 0x0020
|
||||
#define RX_SUSPEND 0x0030
|
||||
#define RX_ABORT 0x0040
|
||||
|
||||
#define RU_SUSPENDED 0x0010
|
||||
#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;
|
||||
|
||||
enum commands {
|
||||
CmdNOp = 0,
|
||||
CmdSASetup = 1,
|
||||
CmdConfigure = 2,
|
||||
CmdMulticastList = 3,
|
||||
CmdTx = 4,
|
||||
CmdTDR = 5,
|
||||
CmdDump = 6,
|
||||
CmdDiagnose = 7
|
||||
};
|
||||
|
||||
/*
|
||||
* Action commands
|
||||
* (big endian, linear mode)
|
||||
*/
|
||||
typedef volatile struct i596_cmd {
|
||||
volatile unsigned short status;
|
||||
volatile unsigned short command;
|
||||
volatile struct i596_cmd *next;
|
||||
} i596_cmd;
|
||||
|
||||
typedef volatile struct i596_nop {
|
||||
i596_cmd cmd;
|
||||
} i596_nop;
|
||||
|
||||
typedef volatile struct i596_set_add {
|
||||
i596_cmd cmd;
|
||||
char data[8];
|
||||
} i596_set_add;
|
||||
|
||||
typedef volatile struct i596_configure {
|
||||
i596_cmd cmd;
|
||||
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_tx;
|
||||
|
||||
typedef volatile struct i596_tdr {
|
||||
i596_cmd cmd;
|
||||
unsigned long data;
|
||||
} i596_tdr;
|
||||
|
||||
typedef volatile struct i596_dump {
|
||||
i596_cmd cmd;
|
||||
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;
|
||||
} i596_tbd;
|
||||
|
||||
/*
|
||||
* Receive buffer descriptor
|
||||
* (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;
|
||||
} 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];
|
||||
} 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;
|
||||
} i596_scb;
|
||||
|
||||
/*
|
||||
* Intermediate System Configuration Pointer
|
||||
*/
|
||||
typedef volatile struct i596_iscp {
|
||||
volatile unsigned long stat;
|
||||
volatile unsigned long scb_val;
|
||||
i596_scb *scb;
|
||||
} i596_iscp;
|
||||
|
||||
/*
|
||||
* System Configuration Pointer
|
||||
*/
|
||||
typedef volatile struct i596_scp {
|
||||
unsigned long sysbus;
|
||||
unsigned long pad;
|
||||
unsigned long iscp_val;
|
||||
i596_iscp *iscp;
|
||||
} i596_scp;
|
||||
|
||||
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 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 */
|
||||
} uti596_softc_;
|
||||
|
||||
#endif /* UTI596_H */
|
||||
Reference in New Issue
Block a user