diff options
Diffstat (limited to 'c/src/lib')
-rw-r--r-- | c/src/lib/libbsp/powerpc/dmv177/include/bsp.h | 4 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/dmv177/sonic/Makefile.in | 2 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/dmv177/sonic/dmvsonic.c | 114 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/dmv177/wrapup/Makefile.in | 2 | ||||
-rw-r--r-- | c/src/lib/libchip/Makefile.in | 6 | ||||
-rw-r--r-- | c/src/lib/libchip/network/Makefile.in | 57 | ||||
-rw-r--r-- | c/src/lib/libchip/network/README | 16 | ||||
-rw-r--r-- | c/src/lib/libchip/network/README.sonic | 21 | ||||
-rw-r--r-- | c/src/lib/libchip/network/sonic.c (renamed from c/src/lib/libbsp/powerpc/dmv177/sonic/sonic.c) | 192 | ||||
-rw-r--r-- | c/src/lib/libchip/network/sonic.h (renamed from c/src/lib/libbsp/powerpc/dmv177/sonic/sonic.h) | 71 | ||||
-rw-r--r-- | c/src/lib/wrapup/Makefile.in | 1 |
11 files changed, 305 insertions, 181 deletions
diff --git a/c/src/lib/libbsp/powerpc/dmv177/include/bsp.h b/c/src/lib/libbsp/powerpc/dmv177/include/bsp.h index 34d15e59df..d0c5574348 100644 --- a/c/src/lib/libbsp/powerpc/dmv177/include/bsp.h +++ b/c/src/lib/libbsp/powerpc/dmv177/include/bsp.h @@ -48,9 +48,9 @@ extern "C" { * Network driver configuration */ struct rtems_bsdnet_ifconfig; -extern int rtems_sonic_driver_attach (struct rtems_bsdnet_ifconfig *config); +int rtems_dmv177_sonic_driver_attach(struct rtems_bsdnet_ifconfig *config); #define RTEMS_BSP_NETWORK_DRIVER_NAME "sonic1" -#define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_sonic_driver_attach +#define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_dmv177_sonic_driver_attach /* diff --git a/c/src/lib/libbsp/powerpc/dmv177/sonic/Makefile.in b/c/src/lib/libbsp/powerpc/dmv177/sonic/Makefile.in index b6c1bed0c4..bad013f7a2 100644 --- a/c/src/lib/libbsp/powerpc/dmv177/sonic/Makefile.in +++ b/c/src/lib/libbsp/powerpc/dmv177/sonic/Makefile.in @@ -8,7 +8,7 @@ VPATH = @srcdir@ RTEMS_ROOT = @top_srcdir@ PROJECT_ROOT = @PROJECT_ROOT@ -PGM=${ARCH}/sonic.rel +PGM=${ARCH}/dmvsonic.rel # C source names, if any, go here -- minus the .c C_PIECES=sonic diff --git a/c/src/lib/libbsp/powerpc/dmv177/sonic/dmvsonic.c b/c/src/lib/libbsp/powerpc/dmv177/sonic/dmvsonic.c new file mode 100644 index 0000000000..a068c74f31 --- /dev/null +++ b/c/src/lib/libbsp/powerpc/dmv177/sonic/dmvsonic.c @@ -0,0 +1,114 @@ +/* + * DMV177 SONIC Configuration Information + * + * References: + * + * 1) SVME/DMV-171 Single Board Computer Documentation Package, #805905, + * DY 4 Systems Inc., Kanata, Ontario, September, 1996. + * + * $Id$ + */ + +#include <bsp.h> +#include <rtems/rtems_bsdnet.h> +#include <libchip/sonic.h> + +void dmv177_sonic_write_register( + void *base, + unsigned32 regno, + unsigned32 value +) +{ + volatile unsigned32 *p = base; + +#if (SONIC_DEBUG & SONIC_DEBUG_PRINT_REGISTERS) + printf( "%p Write 0x%04x to %s (0x%02x)\n", + &p[regno], value, SONIC_Reg_name[regno], regno ); + fflush( stdout ); +#endif + p[regno] = value; +} + +unsigned32 dmv177_sonic_read_register( + void *base, + unsigned32 regno +) +{ + volatile unsigned32 *p = base; + unsigned32 value; + + value = p[regno]; +#if (SONIC_DEBUG & SONIC_DEBUG_PRINT_REGISTERS) + printf( "%p Read 0x%04x from %s (0x%02x)\n", + &p[regno], value, SONIC_Reg_name[regno], regno ); + fflush( stdout ); +#endif + return value; +} + +/* + * Default sizes of transmit and receive descriptor areas + */ +#define RDA_COUNT 20 /* 20 */ +#define TDA_COUNT 20 /* 10 */ + +/* + * Default device configuration register values + * Conservative, generic values. + * DCR: + * No extended bus mode + * Unlatched bus retry + * Programmable outputs unused + * Asynchronous bus mode + * User definable pins unused + * No wait states (access time controlled by DTACK*) + * 32-bit DMA + * Empty/Fill DMA mode + * Maximum Transmit/Receive FIFO + * DC2: + * Extended programmable outputs unused + * Normal HOLD request + * Packet compress output unused + * No reject on CAM match + */ +#define SONIC_DCR \ + (DCR_DW32 | DCR_WAIT0 | DCR_PO0 | DCR_PO1 | DCR_RFT24 | DCR_TFT28) +#ifndef SONIC_DCR +# define SONIC_DCR (DCR_DW32 | DCR_TFT28) +#endif +#ifndef SONIC_DC2 +# define SONIC_DC2 (0) +#endif + +/* + * Default location of device registers + */ +#ifndef SONIC_BASE_ADDRESS +# define SONIC_BASE_ADDRESS 0xF3000000 +# warning "Using default SONIC_BASE_ADDRESS." +#endif + +/* + * Default interrupt vector + */ +#ifndef SONIC_VECTOR +# define SONIC_VECTOR 1 +# warning "Using default SONIC_VECTOR." +#endif + +sonic_configuration_t dmv177_sonic_configuration = { + SONIC_BASE_ADDRESS, /* base address */ + SONIC_VECTOR, /* vector number */ + SONIC_DCR, /* DCR register value */ + SONIC_DC2, /* DC2 register value */ + TDA_COUNT, /* number of transmit descriptors */ + RDA_COUNT, /* number of receive descriptors */ + dmv177_sonic_write_register, + dmv177_sonic_read_register +}; + +int rtems_dmv177_sonic_driver_attach(struct rtems_bsdnet_ifconfig *config) +{ + return rtems_sonic_driver_attach( config, &dmv177_sonic_configuration ); + +} diff --git a/c/src/lib/libbsp/powerpc/dmv177/wrapup/Makefile.in b/c/src/lib/libbsp/powerpc/dmv177/wrapup/Makefile.in index 7119536c6a..c5f0464a06 100644 --- a/c/src/lib/libbsp/powerpc/dmv177/wrapup/Makefile.in +++ b/c/src/lib/libbsp/powerpc/dmv177/wrapup/Makefile.in @@ -9,7 +9,7 @@ RTEMS_ROOT = @top_srcdir@ PROJECT_ROOT = @PROJECT_ROOT@ # We only build the networking device driver if HAS_NETWORKING was defined -NETWORKING_DRIVER_yes_V = sonic +NETWORKING_DRIVER_yes_V = dmvsonic NETWORKING_DRIVER = $(NETWORKING_DRIVER_$(HAS_NETWORKING)_V) # pieces specific to this BSP diff --git a/c/src/lib/libchip/Makefile.in b/c/src/lib/libchip/Makefile.in index a5144ec02d..c1d0ffb462 100644 --- a/c/src/lib/libchip/Makefile.in +++ b/c/src/lib/libchip/Makefile.in @@ -11,4 +11,8 @@ PROJECT_ROOT = @PROJECT_ROOT@ include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg include $(RTEMS_ROOT)/make/directory.cfg -SUB_DIRS=rtc serial +# We only build the networking chip drivers if HAS_NETWORKING was defined +LIBNETWORKING_yes_V = network +LIBNETWORKING = $(LIBNETWORKING_$(HAS_NETWORKING)_V) + +SUB_DIRS=rtc serial $(LIBNETWORKING) diff --git a/c/src/lib/libchip/network/Makefile.in b/c/src/lib/libchip/network/Makefile.in new file mode 100644 index 0000000000..aaaf460aa1 --- /dev/null +++ b/c/src/lib/libchip/network/Makefile.in @@ -0,0 +1,57 @@ +# +# $Id$ +# + +@SET_MAKE@ +srcdir = @srcdir@ +VPATH = @srcdir@ +RTEMS_ROOT = @top_srcdir@ +PROJECT_ROOT = @PROJECT_ROOT@ + +LIBNAME=libnetchip.a +LIB=${ARCH}/${LIBNAME} + +C_PIECES=\ + sonic + +C_FILES=$(C_PIECES:%=%.c) +C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) + +INSTALLED_H_FILES=$(srcdir)/sonic.h +SRCS=$(C_FILES) $(H_FILES) $(SYS_H_FILES) $(RTEMS_H_FILES) $(PRIVATE_H_FILES) +OBJS=$(C_O_FILES) + +include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg +include $(RTEMS_ROOT)/make/lib.cfg + +# +# Add local stuff here using += +# + +DEFINES += -D_COMPILING_BSD_KERNEL_ -DKERNEL -DINET -DNFS \ + -DDIAGNOSTIC -DBOOTP_COMPAT +CPPFLAGS += +CFLAGS += $(LIBC_DEFINES) + +# +# Add your list of files to delete here. The config files +# already know how to delete some stuff, so you may want +# to just run 'make clean' first to see what gets missed. +# 'make clobber' already includes 'make clean' +# + +CLEAN_ADDITIONS += $(LIB) +CLOBBER_ADDITIONS += + +all: ${ARCH} preinstall $(LIB) + $(INSTALL_VARIANT) -m 644 ${LIB} ${PROJECT_RELEASE}/lib + +$(LIB): $(SRCS) ${OBJS} + $(make-library) + +# Install the library, appending _g or _p as appropriate. +# for include files, just use $(INSTALL) +preinstall: + $(INSTALL) -m 444 $(INSTALLED_H_FILES) $(PROJECT_INCLUDE)/libchip + + diff --git a/c/src/lib/libchip/network/README b/c/src/lib/libchip/network/README new file mode 100644 index 0000000000..fd5853ef16 --- /dev/null +++ b/c/src/lib/libchip/network/README @@ -0,0 +1,16 @@ +# +# $Id$ +# + +This is the network interface controller portion of the libchip library. +This directory contains the source code for reusable TCP/IP network driver +support code. Each driver has its own configuration table and its +chip specific attach routine must be called by a board specific +attach routine. The board specific chip routine passes the chip +configuration and network configuration to the resuable device driver. + +The reusable chip drivers do not directly access the controller. +They access the registers on the controller via a set of +functions which are provided by the BSP. These functions set and get +general registers and data buffers. + diff --git a/c/src/lib/libchip/network/README.sonic b/c/src/lib/libchip/network/README.sonic new file mode 100644 index 0000000000..ef9641d6a2 --- /dev/null +++ b/c/src/lib/libchip/network/README.sonic @@ -0,0 +1,21 @@ +# +# $Id$ +# + +This SONIC driver does not make any attempt to support the SONIC chip +in any of the following modes: + + + 16-bit + + little endian + +It does not attempt to handle SONIC's older than Revision C. There is +a bug in chips before that revision that must be handled in the driver. + +The configuration table should be discussed here but if you look in the +include file for the sonic, it is reasonably obvious. :) + +The performance impact of transforming this driver into libchip format +was minimal. + +The powerpc/dmv177 BSP uses this driver and can serve as an example +configuration table. diff --git a/c/src/lib/libbsp/powerpc/dmv177/sonic/sonic.c b/c/src/lib/libchip/network/sonic.c index dd7cefe030..2dd8e32e79 100644 --- a/c/src/lib/libbsp/powerpc/dmv177/sonic/sonic.c +++ b/c/src/lib/libchip/network/sonic.c @@ -1,62 +1,33 @@ /* - ******************************************************************* - ******************************************************************* - ** ** - ** RTEMS NETWORK DRIVER FOR NATIONAL DP83932 `SONIC' ** - ** SYSTEMS-ORIENTED NETWORK INTERFACE CONTROLLER ** - ** ** - ******************************************************************* - ******************************************************************* - */ - -/* - * $Revision$ $Date$ $Author$ - * $State$ - * $Id$ - */ - -/* + * RTEMS NETWORK DRIVER FOR NATIONAL DP83932 `SONIC' + * SYSTEMS-ORIENTED NETWORK INTERFACE CONTROLLER + * + * REUSABLE CHIP DRIVER + * * References: - * 1) DP83932C-20/25/33 MHz SONIC(TM) Systems-Oriented Network Interface - * Controller data sheet. TL/F/10492, RRD-B30M105, National Semiconductor, - * 1995. * - * 2) Software Driver Programmer's Guide for the DP83932 SONIC(TM), - * Application Note 746, Wesley Lee and Mike Lui, TL/F/11140, - * RRD-B30M75, National Semiconductor, March, 1991. + * 1) DP83932C-20/25/33 MHz SONIC(TM) Systems-Oriented Network Interface + * Controller data sheet. TL/F/10492, RRD-B30M105, National Semiconductor, + * 1995. * - * 3) SVME/DMV-171 Single Board Computer Documentation Package, #805905, - * DY 4 Systems Inc., Kanata, Ontario, September, 1996. + * 2) Software Driver Programmer's Guide for the DP83932 SONIC(TM), + * Application Note 746, Wesley Lee and Mike Lui, TL/F/11140, + * RRD-B30M75, National Semiconductor, March, 1991. + * + * COPYRIGHT (c) 1989-1997. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ */ -#include <bsp.h> /* XXX JRS changed order */ -#include "sonic.h" +#include <rtems.h> #include <rtems/rtems_bsdnet.h> - -/***** CONFIGURATION ****/ -typedef void (*sonic_write_register_t)( - void *base, - unsigned32 regno, - unsigned32 value -); - -typedef unsigned32 (*sonic_read_register_t)( - void *base, - unsigned32 regno -); - -typedef struct { - unsigned32 base_address; - unsigned32 vector; - unsigned32 dcr_value; - unsigned32 dc2_value; - unsigned32 tda_count; - unsigned32 rda_count; - sonic_write_register_t write_register; - sonic_read_register_t read_register; -} sonic_configuration_t; - -/***** CONFIGURATION ****/ +#include <libchip/sonic.h> #include <stdio.h> @@ -75,6 +46,12 @@ typedef struct { #include <netinet/if_ether.h> /* + * XXX fix this + */ + +void *set_vector(void *, unsigned32, unsigned32); + +/* * Debug levels * */ @@ -108,12 +85,6 @@ typedef struct { #endif /* - * XXX - */ - -#include <dmv170.h> - -/* * Use the top line if you want more symbols. */ @@ -1499,7 +1470,7 @@ sonic_ioctl (struct ifnet *ifp, int command, caddr_t data) */ int -rtems_sonic_driver_attach_chip ( +rtems_sonic_driver_attach ( struct rtems_bsdnet_ifconfig *config, sonic_configuration_t *chip ) @@ -1656,106 +1627,3 @@ char SONIC_Reg_name[64][6]= { "DCR2" /* 0x3F */ }; #endif - -void dmv177_sonic_write_register( - void *base, - unsigned32 regno, - unsigned32 value -) -{ - volatile unsigned32 *p = base; - -#if (SONIC_DEBUG & SONIC_DEBUG_PRINT_REGISTERS) - printf( "%p Write 0x%04x to %s (0x%02x)\n", - &p[regno], value, SONIC_Reg_name[regno], regno ); - fflush( stdout ); -#endif - p[regno] = value; -} - -unsigned32 dmv177_sonic_read_register( - void *base, - unsigned32 regno -) -{ - volatile unsigned32 *p = base; - unsigned32 value; - - value = p[regno]; -#if (SONIC_DEBUG & SONIC_DEBUG_PRINT_REGISTERS) - printf( "%p Read 0x%04x from %s (0x%02x)\n", - &p[regno], value, SONIC_Reg_name[regno], regno ); - fflush( stdout ); -#endif - return value; -} -/******** DMV177 SPECIFIC INFORMATION ***********/ -/* - * Default sizes of transmit and receive descriptor areas - */ -#define RDA_COUNT 20 /* 20 */ -#define TDA_COUNT 20 /* 10 */ - -/* - * Default device configuration register values - * Conservative, generic values. - * DCR: - * No extended bus mode - * Unlatched bus retry - * Programmable outputs unused - * Asynchronous bus mode - * User definable pins unused - * No wait states (access time controlled by DTACK*) - * 32-bit DMA - * Empty/Fill DMA mode - * Maximum Transmit/Receive FIFO - * DC2: - * Extended programmable outputs unused - * Normal HOLD request - * Packet compress output unused - * No reject on CAM match - */ -#define SONIC_DCR \ - (DCR_DW32 | DCR_WAIT0 | DCR_PO0 | DCR_PO1 | DCR_RFT24 | DCR_TFT28) -#ifndef SONIC_DCR -# define SONIC_DCR (DCR_DW32 | DCR_TFT28) -#endif -#ifndef SONIC_DC2 -# define SONIC_DC2 (0) -#endif - -/* - * Default location of device registers - */ -#ifndef SONIC_BASE_ADDRESS -# define SONIC_BASE_ADDRESS 0xF3000000 -# warning "Using default SONIC_BASE_ADDRESS." -#endif - -/* - * Default interrupt vector - */ -#ifndef SONIC_VECTOR -# define SONIC_VECTOR 1 -# warning "Using default SONIC_VECTOR." -#endif - -sonic_configuration_t dmv177_sonic_configuration = { - SONIC_BASE_ADDRESS, /* base address */ - SONIC_VECTOR, /* vector number */ - SONIC_DCR, /* DCR register value */ - SONIC_DC2, /* DC2 register value */ - TDA_COUNT, /* number of transmit descriptors */ - RDA_COUNT, /* number of receive descriptors */ - dmv177_sonic_write_register, - dmv177_sonic_read_register -}; - -int rtems_sonic_driver_attach (struct rtems_bsdnet_ifconfig *config) -{ - return rtems_sonic_driver_attach_chip ( config, &dmv177_sonic_configuration ); - -} - -/******** DMV177 SPECIFIC INFORMATION ***********/ - diff --git a/c/src/lib/libbsp/powerpc/dmv177/sonic/sonic.h b/c/src/lib/libchip/network/sonic.h index 7ce0eccebb..47f50d3356 100644 --- a/c/src/lib/libbsp/powerpc/dmv177/sonic/sonic.h +++ b/c/src/lib/libchip/network/sonic.h @@ -1,24 +1,58 @@ /* - ******************************************************************. - ******************************************************************* - ** ** - ** DECLARATIONS FOR NATIONAL DP83932 `SONIC' ** - ** SYSTEMS-ORIENTED NETWORK INTERFACE CONTROLLER ** - ** ** - ******************************************************************* - ******************************************************************* + * RTEMS NETWORK DRIVER FOR NATIONAL DP83932 `SONIC' + * SYSTEMS-ORIENTED NETWORK INTERFACE CONTROLLER + * + * REUSABLE CHIP DRIVER CONFIGURATION + * + * References: + * + * 1) DP83932C-20/25/33 MHz SONIC(TM) Systems-Oriented Network Interface + * Controller data sheet. TL/F/10492, RRD-B30M105, National Semiconductor, + * 1995. + * + * 2) Software Driver Programmer's Guide for the DP83932 SONIC(TM), + * Application Note 746, Wesley Lee and Mike Lui, TL/F/11140, + * RRD-B30M75, National Semiconductor, March, 1991. + * + * COPYRIGHT (c) 1989-1997. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ */ +#ifndef _SONIC_DP83932_ +#define _SONIC_DP83932_ + /* - * $Revision$ $Date$ $Author$ - * $State$ - * $Id$ + * Configuration Information */ -#ifndef _SONIC_DP83932_ -#define _SONIC_DP83932_ +typedef void (*sonic_write_register_t)( + void *base, + unsigned32 regno, + unsigned32 value +); -#include <bsp.h> +typedef unsigned32 (*sonic_read_register_t)( + void *base, + unsigned32 regno +); + +typedef struct { + unsigned32 base_address; + unsigned32 vector; + unsigned32 dcr_value; + unsigned32 dc2_value; + unsigned32 tda_count; + unsigned32 rda_count; + sonic_write_register_t write_register; + sonic_read_register_t read_register; +} sonic_configuration_t; /* ****************************************************************** @@ -370,4 +404,13 @@ typedef volatile CamDescriptor_t *CamDescriptorPointer_t; /* and the driver can process it */ #define RDA_FREE 0xFFFF /* SONIC can use it */ +/* + * Attatch routine + */ + +int rtems_sonic_driver_attach ( + struct rtems_bsdnet_ifconfig *config, + sonic_configuration_t *chip +); + #endif /* _SONIC_DP83932_ */ diff --git a/c/src/lib/wrapup/Makefile.in b/c/src/lib/wrapup/Makefile.in index 5e73848490..d3e0f76ac9 100644 --- a/c/src/lib/wrapup/Makefile.in +++ b/c/src/lib/wrapup/Makefile.in @@ -24,6 +24,7 @@ SRCS=$(wildcard $(PROJECT_RELEASE)/lib/libbsp$(LIB_VARIANT).a) \ $(wildcard $(PROJECT_RELEASE)/lib/libcpu$(LIB_VARIANT).a) \ $(wildcard $(PROJECT_RELEASE)/lib/librtcio$(LIB_VARIANT).a) \ $(wildcard $(PROJECT_RELEASE)/lib/libserialio$(LIB_VARIANT).a) \ + $(wildcard $(PROJECT_RELEASE)/lib/libnetchip$(LIB_VARIANT).a) \ $(PROJECT_RELEASE)/lib/libcsupport$(LIB_VARIANT).a \ $(PROJECT_RELEASE)/lib/libmisc$(LIB_VARIANT).a \ $(wildcard $(PROJECT_RELEASE)/lib/rtems-ctor$(LIB_VARIANT).o) \ |