diff options
author | Till Straumann <strauman@slac.stanford.edu> | 2011-07-20 17:25:21 +0000 |
---|---|---|
committer | Till Straumann <strauman@slac.stanford.edu> | 2011-07-20 17:25:21 +0000 |
commit | 88f653ad2e278a42c3c1c480022820abdeea233f (patch) | |
tree | 56329574a0093a9db1385b31124d9e92136afec3 /bsd_eth_drivers/if_em/e1000_osdep.h | |
parent | 2010-07-23 Till Straumann <Till.Straumann@TU-Berlin.de> (diff) | |
download | libbsdport-88f653ad2e278a42c3c1c480022820abdeea233f.tar.bz2 |
2011-07-20 Till Straumann <Till.Straumann@TU-Berlin.de>
* if_em/Makefile.am, if_em/e1000_osdep.h, if_em/e1000_osdep.c,
if_em/if_em.c: added e1000_osdep.c which implements all
os-dependent parts in a bsdnet-agnostic fashion. Hence, the
low-level driver can be used w/o bsdnet.
FIXES: dependency on bsdnet initialization; PCI bus header
was not initialized when not used via bsdnet (lanIpBasic driver
crashed).
Diffstat (limited to 'bsd_eth_drivers/if_em/e1000_osdep.h')
-rw-r--r-- | bsd_eth_drivers/if_em/e1000_osdep.h | 91 |
1 files changed, 54 insertions, 37 deletions
diff --git a/bsd_eth_drivers/if_em/e1000_osdep.h b/bsd_eth_drivers/if_em/e1000_osdep.h index 96a7d84..134c4cc 100644 --- a/bsd_eth_drivers/if_em/e1000_osdep.h +++ b/bsd_eth_drivers/if_em/e1000_osdep.h @@ -41,31 +41,13 @@ POSSIBILITY OF SUCH DAMAGE. #include <rtems/pci.h> #include <vm/vm.h> /* for non-_KERNEL boolean_t :-( */ -#ifdef _KERNEL -#ifndef __INSIDE_RTEMS_BSD_TCPIP_STACK__ -#define __INSIDE_RTEMS_BSD_TCPIP_STACK__ -#endif -#include <rtems/rtems_bsdnet.h> -#include <rtems/rtems_bsdnet_internal.h> - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/mbuf.h> -#include <sys/protosw.h> -#include <sys/socket.h> -#include <sys/malloc.h> -#include <sys/kernel.h> -#include <sys/bus.h> - -#define ASSERT(x) if(!(x)) panic("EM: x") - /* The happy-fun DELAY macro is defined in /usr/src/sys/i386/include/clock.h */ -#define usec_delay(x) DELAY(x) -#define msec_delay(x) DELAY(1000*(x)) +#define usec_delay(x) e1000_udelay(x) +#define msec_delay(x) e1000_udelay(1000*(x)) /* TODO: Should we be paranoid about delaying in interrupt context? */ -#define msec_delay_irq(x) DELAY(1000*(x)) -#include <rtems_udelay.h> +#define msec_delay_irq(x) msec_delay(x) + +void e1000_udelay(unsigned); #define MSGOUT(S, A, B) printf(S "\n", A, B) #define DEBUGFUNC(F) DEBUGOUT(F); @@ -75,22 +57,8 @@ POSSIBILITY OF SUCH DAMAGE. #define DEBUGOUT3(S,A,B,C) #define DEBUGOUT7(S,A,B,C,D,E,F,G) -#include <devicet.h> - -struct e1000_osdep -{ - uint32_t mem_bus_space_handle; - uint32_t io_bus_space_handle; - uint32_t flash_bus_space_handle; - /* these are currently unused; present for freebsd compatibility only */ - uint32_t mem_bus_space_tag; - uint32_t io_bus_space_tag; - uint32_t flash_bus_space_tag; - device_t dev; -}; #define STATIC static -#endif #ifndef FALSE #define FALSE 0 @@ -118,6 +86,12 @@ typedef int8_t s8 ; typedef volatile uint32_t __uint32_va_t __attribute__((may_alias)); typedef volatile uint16_t __uint16_va_t __attribute__((may_alias)); +struct e1000_pcisig { + uint16_t bus; + uint8_t dev; + uint8_t fun; +}; + #ifdef NO_82542_SUPPORT #define E1000_REGISTER(hw, reg) reg #else @@ -218,6 +192,49 @@ static inline void __outport_dword(unsigned long base, uint32_t off, uint32_t va #define USE_LIBBSDPORT_IO #endif +#if defined(USE_LIBBSDPORT_IO) && !defined(_KERNEL) +#define _KERNEL +#endif + +#ifdef _KERNEL +#ifndef __INSIDE_RTEMS_BSD_TCPIP_STACK__ +#define __INSIDE_RTEMS_BSD_TCPIP_STACK__ +#endif +#include <rtems/rtems_bsdnet.h> +#include <rtems/rtems_bsdnet_internal.h> + +#include <sys/types.h> +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/mbuf.h> +#include <sys/protosw.h> +#include <sys/socket.h> +#include <sys/malloc.h> +#include <sys/kernel.h> +#include <sys/bus.h> + +#define ASSERT(x) if(!(x)) panic("EM: x") + +#include <devicet.h> + +struct e1000_osdep +{ + /* struct e1000_pcisig MUST be first since + * 'back' pointer is cast to (struct e1000_pcisig *) + * in e1000_osdep.c! + */ + struct e1000_pcisig pcisig; + uint32_t mem_bus_space_handle; + uint32_t io_bus_space_handle; + uint32_t flash_bus_space_handle; + /* these are currently unused; present for freebsd compatibility only */ + uint32_t mem_bus_space_tag; + uint32_t io_bus_space_tag; + uint32_t flash_bus_space_tag; + device_t dev; +}; +#endif + #ifdef USE_LIBBSDPORT_IO #define USE_EXPLICIT_BUSTAGS |