summaryrefslogtreecommitdiffstats
path: root/bsd_eth_drivers/libbsdport
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2009-04-22 22:06:58 +0000
committerTill Straumann <strauman@slac.stanford.edu>2009-04-22 22:06:58 +0000
commita8bf95d0249565f4210ccab5c13232d501ce0c2d (patch)
treee01f2eca98add8dba13eec23a95fa22120638890 /bsd_eth_drivers/libbsdport
parentThis commit was manufactured by cvs2svn to create branch 'base'. (diff)
downloadlibbsdport-a8bf95d0249565f4210ccab5c13232d501ce0c2d.tar.bz2
- importing updated version from SLAC as of 20090422
Diffstat (limited to 'bsd_eth_drivers/libbsdport')
-rw-r--r--bsd_eth_drivers/libbsdport/Makefile116
-rw-r--r--bsd_eth_drivers/libbsdport/Makefile.am3
-rw-r--r--bsd_eth_drivers/libbsdport/alldrv.c1
-rw-r--r--bsd_eth_drivers/libbsdport/bus.h40
-rw-r--r--bsd_eth_drivers/libbsdport/devicet.c2
-rw-r--r--bsd_eth_drivers/libbsdport/libbsdport.h7
-rw-r--r--bsd_eth_drivers/libbsdport/libbsdport_api.h2
-rw-r--r--bsd_eth_drivers/libbsdport/modini.c100
-rw-r--r--bsd_eth_drivers/libbsdport/sysbus.c12
-rw-r--r--bsd_eth_drivers/libbsdport/taskqueue.h2
10 files changed, 222 insertions, 63 deletions
diff --git a/bsd_eth_drivers/libbsdport/Makefile b/bsd_eth_drivers/libbsdport/Makefile
new file mode 100644
index 0000000..fbf9f35
--- /dev/null
+++ b/bsd_eth_drivers/libbsdport/Makefile
@@ -0,0 +1,116 @@
+#
+# Makefile.lib,v 1.5 2000/06/12 15:00:14 joel Exp
+#
+# Templates/Makefile.lib
+# Template library Makefile
+#
+
+LIBNAME=libbsdport.a
+LIB=${ARCH}/${LIBNAME}
+
+# C and C++ source names, if any, go here -- minus the .c or .cc
+C_PIECES=rtems_callout rtems_taskqueue rtems_udelay ifstuff devicet alldrv
+C_PIECES+=contigmalloc sysbus malloc ifmedia
+C_FILES=$(C_PIECES:%=%.c)
+C_O_FILES=$(C_PIECES:%=${ARCH}/%.o)
+
+CC_PIECES=
+CC_FILES=$(CC_PIECES:%=%.cc)
+CC_O_FILES=$(CC_PIECES:%=${ARCH}/%.o)
+
+H_FILES=libbsdport_api.h rtems_verscheck.h
+
+LINKS+=sys/taskqueue.h
+LINKS+=sys/bus.h
+LINKS+=sys/mutex.h
+LINKS+=bsp/rtems_verscheck.h
+
+DUMMYHEADERS+=dummyheaders/machine/bus.h
+DUMMYHEADERS+=dummyheaders/machine/resource.h
+DUMMYHEADERS+=dummyheaders/dev/pci/pcivar.h
+DUMMYHEADERS+=dummyheaders/dev/pci/pcireg.h
+DUMMYHEADERS+=dummyheaders/dev/mii/miivar.h
+DUMMYHEADERS+=dummyheaders/sys/module.h
+DUMMYHEADERS+=dummyheaders/sys/rman.h
+DUMMYHEADERS+=dummyheaders/sys/kthread.h
+DUMMYHEADERS+=dummyheaders/sys/endian.h
+DUMMYHEADERS+=dummyheaders/net/if_vlan_var.h
+DUMMYHEADERS+=dummyheaders/netinet/ip6.h
+DUMMYHEADERS+=dummyheaders/vm/pmap.h
+DUMMYHEADERS+=dummyheaders/miibus_if.h
+
+# Assembly source names, if any, go here -- minus the .S
+S_PIECES=
+S_FILES=$(S_PIECES:%=%.S)
+S_O_FILES=$(S_FILES:%.S=${ARCH}/%.o)
+
+SRCS=$(C_FILES) $(CC_FILES) $(H_FILES) $(S_FILES)
+OBJS=$(C_O_FILES) $(CC_O_FILES) $(S_O_FILES)
+
+all:
+
+depend: ${LINKS}
+
+include $(RTEMS_MAKEFILE_PATH)/Makefile.inc
+
+include $(RTEMS_CUSTOM)
+include $(RTEMS_ROOT)/make/lib.cfg
+
+#
+# Add local stuff here using +=
+#
+
+DEFINES +=
+CPPFLAGS += -I.
+CFLAGS +=
+
+#
+# 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 +=
+CLOBBER_ADDITIONS += dummyheaders
+CLOBBER_ADDITIONS += $(sort $(foreach n,$(LINKS),$(firstword $(subst /, ,$(n)))))
+
+all: ${DUMMYHEADERS} ${LINKS} ${ARCH} $(SRCS) $(LIB)
+
+$(LIB): ${OBJS}
+ $(make-library)
+
+dummyheaders/%:
+ @if [ ! -d `dirname $@` ] ; then mkdir -p `dirname $@`; fi
+ @touch $@
+
+# for each name listed in LINKS, create parent directories (if needed)
+# and a symlink to file in .
+# E.g., LINKS=a/b/c.h
+# creates a/b/c.h -> ../../c.h
+$(LINKS):
+ @if [ ! -d $(dir $@) ] ; then mkdir -p $(dir $@); fi
+ @ln -s `echo $@ | sed -e 's%[^/]\+[/]\+%../%g'` $@
+
+ifndef RTEMS_SITE_INSTALLDIR
+RTEMS_SITE_INSTALLDIR = $(PROJECT_RELEASE)
+endif
+
+ifndef RTEMS_SITE_BSP_INSTALLDIR
+RTEMS_SITE_BSP_INSTALLDIR = $(RTEMS_SITE_INSTALLDIR)
+endif
+
+${RTEMS_SITE_INSTALLDIR}/include/bsp \
+${RTEMS_SITE_INSTALLDIR}/lib \
+${RTEMS_SITE_INSTALLDIR}/bin:
+ test -d $@ || mkdir -p $@
+
+# Install the program(s), appending _g or _p as appropriate.
+# for include files, just use $(INSTALL_CHANGE)
+#
+
+install: all $(RTEMS_SITE_INSTALLDIR)/lib $(RTEMS_SITE_INSTALLDIR)/include/bsp
+ $(INSTALL_VARIANT) -m 644 ${LIB} ${RTEMS_SITE_INSTALLDIR}/lib
+ $(INSTALL_CHANGE) -m 644 ${H_FILES} ${RTEMS_SITE_INSTALLDIR}/include/bsp
+
+
diff --git a/bsd_eth_drivers/libbsdport/Makefile.am b/bsd_eth_drivers/libbsdport/Makefile.am
index 44096b5..e6e31cd 100644
--- a/bsd_eth_drivers/libbsdport/Makefile.am
+++ b/bsd_eth_drivers/libbsdport/Makefile.am
@@ -38,9 +38,6 @@ DUMMYHEADERS+=dummyheaders/netinet/ip6.h
DUMMYHEADERS+=dummyheaders/vm/pmap.h
DUMMYHEADERS+=dummyheaders/miibus_if.h
-DUMMYHEADERS+=dummyheaders/miidevs.h
-DUMMYHEADERS+=dummyheaders/dev/mii/brgphyreg.h
-
BUILT_SOURCES=
include ../links.am
diff --git a/bsd_eth_drivers/libbsdport/alldrv.c b/bsd_eth_drivers/libbsdport/alldrv.c
index 0738179..f81b95a 100644
--- a/bsd_eth_drivers/libbsdport/alldrv.c
+++ b/bsd_eth_drivers/libbsdport/alldrv.c
@@ -5,7 +5,6 @@ driver_t *libbsdport_netdriver_table_all[] = {
&libbsdport_em_driver,
&libbsdport_pcn_driver,
&libbsdport_le_pci_driver,
- &libbsdport_re_driver,
0
};
diff --git a/bsd_eth_drivers/libbsdport/bus.h b/bsd_eth_drivers/libbsdport/bus.h
index 76d78a8..19cb24f 100644
--- a/bsd_eth_drivers/libbsdport/bus.h
+++ b/bsd_eth_drivers/libbsdport/bus.h
@@ -156,10 +156,6 @@ bus_setup_intr(device_t dev, struct resource *r, int flags, driver_filter_t filt
/* Flags currently ignored... */
#define INTR_MPSAFE 0
#define INTR_TYPE_NET 0
-/* INTR_FAST indicates that a 'handler' is actually
- * a 'fast' handler which already uses taskqueues
- */
-#define INTR_FAST 1
int
bus_teardown_intr(device_t dev, struct resource *r, void *cookiep);
@@ -196,16 +192,6 @@ rman_get_bustag(struct resource *r);
#define BUS_DMA_COHERENT 0
#endif
-#ifndef BUS_DMA_ZERO
-/* ignored anyways */
-#define BUS_DMA_ZERO 0
-#endif
-
-#ifndef BUS_DMA_ALLOCNOW
-/* ignored anyways */
-#define BUS_DMA_ALLOCNOW 0
-#endif
-
/* unused */
#ifndef BUS_SPACE_MAXADDR
#define BUS_SPACE_MAXADDR 0xdeadbeef
@@ -279,10 +265,10 @@ bus_get_dma_tag(device_t dev)
return 0;
}
-typedef void bus_dmamap_callback_t (void *arg, bus_dma_segment_t *segs, int nseg, int error);
+typedef void bus_dmamap_callback_t (void *, bus_dma_segment_t *, int, int);
static inline int
-bus_dmamap_load(bus_dma_tag_t tag, bus_dmamap_t map, caddr_t vaddr, bus_size_t size, bus_dmamap_callback_t cb, void *arg, unsigned flags)
+bus_dmamap_load(bus_dma_tag_t tag, bus_dmamap_t map, caddr_t vaddr, bus_size_t size, void (*cb)(void *arg, bus_dma_segment_t *segs, int nseg, int error), void *arg, unsigned flags)
{
bus_dma_segment_t segs[1];
segs[0].ds_addr = CPU2BUSADDR(vaddr);
@@ -291,28 +277,6 @@ bus_dma_segment_t segs[1];
return 0;
}
-typedef void bus_dmamap_callback2_t (void *arg, bus_dma_segment_t *segs, int nsegs, bus_size_t mapsize, int error);
-
-static inline int
-bus_dmamap_load_mbuf(bus_dma_tag_t tag, bus_dmamap_t map, struct mbuf *m_head, bus_dmamap_callback2_t cb, void *arg, unsigned flags)
-{
-/* hopefully there's enough stack ... */
-bus_dma_segment_t segs[tag->maxsegs];
-struct mbuf *m;
-int n;
-bus_size_t sz;
- for ( m=m_head, sz=0, n=0; m; m=m->m_next, n++ ) {
- if ( n >= tag->maxsegs ) {
- cb(arg, segs, n, sz, EFBIG);
- return EFBIG;
- }
- segs[n].ds_addr = CPU2BUSADDR(mtod(m, unsigned));
- sz += (segs[n].ds_len = m->m_len);
- }
- cb(arg, segs, n, sz, 0);
- return 0;
-}
-
#define bus_dmamap_unload(tag, map) do {} while (0)
/* should we do something if we have no HW snooping ? */
diff --git a/bsd_eth_drivers/libbsdport/devicet.c b/bsd_eth_drivers/libbsdport/devicet.c
index 48ddd9a..f197da4 100644
--- a/bsd_eth_drivers/libbsdport/devicet.c
+++ b/bsd_eth_drivers/libbsdport/devicet.c
@@ -12,7 +12,7 @@
#include <sys/bus.h>
#include "libbsdport_api.h"
-#define DEBUG
+#undef DEBUG
extern void real_libc_free(void*);
diff --git a/bsd_eth_drivers/libbsdport/libbsdport.h b/bsd_eth_drivers/libbsdport/libbsdport.h
index 8b88784..0fdd4a4 100644
--- a/bsd_eth_drivers/libbsdport/libbsdport.h
+++ b/bsd_eth_drivers/libbsdport/libbsdport.h
@@ -31,10 +31,6 @@
#include <rtems_udelay.h>
-#ifndef bswap32
-#define bswap32(_x) CPU_swap_u32(_x)
-#endif
-
#if defined(__LITTLE_ENDIAN__) || defined(__i386__)
static inline uint16_t htole16(uint16_t v) { return v; }
static inline uint32_t htole32(uint32_t v) { return v; }
@@ -191,9 +187,6 @@ static inline void membarrier_w() { asm volatile("eieio":::"memory"); }
#define PCIY_PMG 0x01
#endif
-#ifndef PCI_RF_DENSE
-#define PCI_RF_DENSE 0
-#endif
static inline uint32_t
pci_read_config(device_t dev, unsigned reg, int width)
diff --git a/bsd_eth_drivers/libbsdport/libbsdport_api.h b/bsd_eth_drivers/libbsdport/libbsdport_api.h
index ba3e54e..73b54b0 100644
--- a/bsd_eth_drivers/libbsdport/libbsdport_api.h
+++ b/bsd_eth_drivers/libbsdport/libbsdport_api.h
@@ -24,8 +24,6 @@ extern driver_t *libbsdport_netdriver_table[];
extern driver_t libbsdport_em_driver;
/* AMD 79C971..976 pcnet PCI */
extern driver_t libbsdport_pcn_driver;
-/* RealTek RTL8139, 8168, 8169, 8169S, 8110, 8101E, and 8111 PCI */
-extern driver_t libbsdport_re_driver;
/* AMD/Lance older (and later) chips; this driver also supports what 'pcn'
* does but might not be as efficient.
* NOTE: The 'le_pci' driver works with the pcnet32 (79C970A) emulation
diff --git a/bsd_eth_drivers/libbsdport/modini.c b/bsd_eth_drivers/libbsdport/modini.c
new file mode 100644
index 0000000..3156c16
--- /dev/null
+++ b/bsd_eth_drivers/libbsdport/modini.c
@@ -0,0 +1,100 @@
+#include "devicet.h"
+#include <rtems/rtems_bsdnet.h>
+
+struct {
+ struct device dev;
+ struct {
+ char space[4096];
+ } softc;
+} thele = {
+ {
+ bushdr: {
+/* mvme5500 { x, x, x } */
+/* qemu */ { 0, 3, 0 }
+ },
+ type: DEV_TYPE_PCI,
+ name: "le",
+ nameunit: { 'l', 'e', '1', 0},
+ unit: 1,
+ },
+ {
+ { 0, }
+ }
+};
+
+void *thelesoftc = &thele.softc;
+
+
+struct {
+ struct device dev;
+ struct {
+ char space[4096];
+ } softc;
+} theem = {
+ {
+ bushdr: {
+/* mvme5500 { 2, 0xa, 0 } */
+/* cpci */ { 7, 0, 0 }
+ },
+ type: DEV_TYPE_PCI,
+ name: "em",
+ nameunit: { 'e', 'm', '1', 0},
+ unit: 1,
+ },
+ {
+ { 0, }
+ }
+};
+
+void *theemsoftc = &theem.softc;
+
+struct {
+ struct device dev;
+ struct {
+ char space[4096];
+ } softc;
+} thepcn = {
+ {
+ bushdr: {
+/* mvme5500 { x, 0xx, x } */
+/* cpci */ { 4, 6, 0 }
+ },
+ type: DEV_TYPE_PCI,
+ name: "pcn",
+ nameunit: { 'p', 'c', 'n', '1', 0},
+ unit: 1,
+ },
+ {
+ { 0, }
+ }
+};
+
+void *thepcnsoftc = &thepcn.softc;
+
+extern driver_t rtems_em_driver;
+extern driver_t rtems_le_pci_driver;
+extern driver_t rtems_pcn_driver;
+
+driver_t *rtems_netdriver_table[] = {
+ &rtems_em_driver,
+ &rtems_le_pci_driver,
+ &rtems_pcn_driver,
+ 0
+};
+
+struct rtems_bsdnet_ifconfig pcncfg = {
+ name: "pcn",
+ rbuf_count:20,
+ xbuf_count:3,
+};
+
+#ifdef DEBUG_MODULAR
+void
+_cexpModuleInitialize(void *unused)
+{
+extern void * rtems_callout_initialize();
+extern void * rtems_taskqueue_initialize();
+ rtems_callout_initialize();
+ rtems_taskqueue_initialize();
+}
+#endif
diff --git a/bsd_eth_drivers/libbsdport/sysbus.c b/bsd_eth_drivers/libbsdport/sysbus.c
index fc0ae0b..fcd3aac 100644
--- a/bsd_eth_drivers/libbsdport/sysbus.c
+++ b/bsd_eth_drivers/libbsdport/sysbus.c
@@ -143,17 +143,12 @@ bus_setup_intr(device_t dev, struct resource *r, int flags, driver_filter_t filt
int rval;
struct irq_cookie *info = 0;
+
+
if ( filter && handler ) {
rtems_panic("bus_setup_intr for both: filter & handler not implemented\n");
}
- if ( (flags & INTR_FAST) && filter ) {
- rtems_panic("bus_setup_intr for both: filter & INTR_FAST not implemented\n");
- /* handler is a fast handler already */
- filter = (driver_filter_t) handler;
- handler = 0;
- }
-
if ( handler ) {
if ( !dev->drv ) {
device_printf(dev, "bus_setup_intr: device has no driver attached\n");
@@ -192,8 +187,7 @@ struct irq_cookie *info = 0;
return rval;
}
- if ( cookiep )
- *cookiep = info;
+ *cookiep = info;
return rval;
}
diff --git a/bsd_eth_drivers/libbsdport/taskqueue.h b/bsd_eth_drivers/libbsdport/taskqueue.h
index d700edf..a341ec1 100644
--- a/bsd_eth_drivers/libbsdport/taskqueue.h
+++ b/bsd_eth_drivers/libbsdport/taskqueue.h
@@ -31,8 +31,6 @@ taskqueue_create_fast(const char *name, int mflags, tq_enq_fn, void *ctxt);
int
taskqueue_enqueue(struct taskqueue *tq, struct task *ta);
-#define taskqueue_enqueue_fast(_q,_t) taskqueue_enqueue(_q,_t)
-
void
taskqueue_thread_enqueue(void *ctxt);