diff options
author | Martin Burnicki <martin.burnicki@meinberg.de> | 2011-03-29 12:00:00 +0200 |
---|---|---|
committer | Martin Burnicki <martin.burnicki@meinberg.de> | 2011-03-29 12:00:00 +0200 |
commit | 6876bb99175610e97837b5448e3aacddad83bfe3 (patch) | |
tree | a15f337b2546245d93f230ee0ee062434ee4485c | |
parent | 2c6bf2badb076f7536616f9d6783c86200e20265 (diff) | |
download | mbgtools-nbsd-6876bb99175610e97837b5448e3aacddad83bfe3.tar.gz mbgtools-nbsd-6876bb99175610e97837b5448e3aacddad83bfe3.zip |
Update files from mbgtools-nbsd-dev-2011-03-29.tar.gzmbgtools-nbsd-dev-2011-03-29
19 files changed, 67 insertions, 909 deletions
diff --git a/src/external/bsd/meinberg/Makefile b/src/external/bsd/meinberg/Makefile index 346d99a..346d99a 100644..100755 --- a/src/external/bsd/meinberg/Makefile +++ b/src/external/bsd/meinberg/Makefile diff --git a/src/external/bsd/meinberg/Makefile.inc b/src/external/bsd/meinberg/Makefile.inc index 23fe19c..f169b5c 100644..100755 --- a/src/external/bsd/meinberg/Makefile.inc +++ b/src/external/bsd/meinberg/Makefile.inc @@ -13,7 +13,15 @@ IDIST= ${NETBSDSRCDIR}/external/bsd/meinberg/dist MBG_LIB_COMMON= ${IDIST}/mbglib/common MBG_LIB_BSD= ${IDIST}/mbglib/bsd -CPPFLAGS+=-DDEBUG -I${MBG_LIB_COMMON} -I${MBG_LIB_BSD} +CPPFLAGS+=-I${MBG_LIB_COMMON} -I${MBG_LIB_BSD} + +.if defined(DEBUG) +CPPFLAGS+=-DDEBUG=${DEBUG} +.endif + +.if defined(MBG_DEBUG) +CPPFLAGS+=-DMBG_DEBUG=${MBG_DEBUG} +.endif .if exists(${.CURDIR}/../../Makefile.inc) .include "${.CURDIR}/../../Makefile.inc" diff --git a/src/external/bsd/meinberg/dist/Makefile b/src/external/bsd/meinberg/dist/Makefile index 70b8148..6d9bb49 100755 --- a/src/external/bsd/meinberg/dist/Makefile +++ b/src/external/bsd/meinberg/dist/Makefile @@ -1,13 +1,16 @@ ######################################################################### # -# $Id: Makefile 1.1.1.6 2011/03/25 11:05:55 martin TRASH $ +# $Id: Makefile 1.1.1.1 2011/03/29 13:54:39 martin TRASH $ # # Description: # Makefile for mbgtools which recurses into the subdirectories. # # ----------------------------------------------------------------------- # $Log: Makefile $ +# Revision 1.1.1.1 2011/03/29 13:54:39 martin +# Revision 1.1.1.6.1.1 2011/03/28 09:36:56 martin +# Kardel: exclude subdir mbgclock under NetBSD # Revision 1.1.1.6 2011/03/25 11:05:55 martin # Optional parameter USE_TIMESPEC. # Revision 1.1.1.5 2011/03/21 16:24:12 martin diff --git a/src/external/bsd/meinberg/dist/README b/src/external/bsd/meinberg/dist/README index 9067192..4167efb 100755 --- a/src/external/bsd/meinberg/dist/README +++ b/src/external/bsd/meinberg/dist/README @@ -1,4 +1,4 @@ -$Id: README 1.1.1.1 2011/02/09 11:47:11 martin TRASH martin $ +$Id: README 1.1 2011/03/29 13:35:05 martin TRASH $ This is the README file for mbgtools-fbsd-dev-2011-02-04 -------------------------------------------------------- diff --git a/src/external/bsd/meinberg/dist/mbgclock/Makefile b/src/external/bsd/meinberg/dist/mbgclock/Makefile deleted file mode 100755 index 7dd2450..0000000 --- a/src/external/bsd/meinberg/dist/mbgclock/Makefile +++ /dev/null @@ -1,48 +0,0 @@ - -######################################################################### -# -# $Id: Makefile 1.1.1.4 2011/02/03 14:10:39 martin TEST martin $ -# -# Description: -# Makefile for mbgclock driver to support Meinberg bus level -# devices under FreeBSD. -# -# ----------------------------------------------------------------------- -# $Log: Makefile $ -# Revision 1.1.1.4 2011/02/03 14:10:39 martin -# Revision 1.1.1.3 2011/01/26 17:38:58 martin -# Add support for DEBUG build. -# Revision 1.1.1.2 2011/01/26 16:36:37 martin -# Enabled all required source files. -# Revision 1.1.1.1 2011/01/26 14:12:02 martin -# Started modifications to build mbgclock. -# Revision 1.1 2011/01/26 13:56:32 martin -# Initial skeleton based on FreeBSD's mypci.c sample program by Murray Stokely. -# -######################################################################### - -KMOD= mbgclock - -MBGLIB= ../mbglib -MBGLIB_COMMON= $(MBGLIB)/common -MBGLIB_BSD= $(MBGLIB)/bsd - -.PATH: $(MBGLIB_COMMON) $(MBGLIB_BSD) - -CFLAGS= -I$(MBGLIB_COMMON) -I$(MBGLIB_BSD) - -.ifdef DEBUG -CFLAGS+= -D DEBUG=$(DEBUG) -.endif - -SRCS= mbgdrvr.c -SRCS+= pcpsdrvr.c -SRCS+= identdec.c -SRCS+= rsrc_bsd.c -SRCS+= device_if.h bus_if.h pci_if.h - -CLEANFILES= *~ -CLEANFILES+= machine -CLEANFILES+= @ - -.include <bsd.kmod.mk> diff --git a/src/external/bsd/meinberg/dist/mbgclock/Makefile.nbsd b/src/external/bsd/meinberg/dist/mbgclock/Makefile.nbsd deleted file mode 100755 index 7dd2450..0000000 --- a/src/external/bsd/meinberg/dist/mbgclock/Makefile.nbsd +++ /dev/null @@ -1,48 +0,0 @@ - -######################################################################### -# -# $Id: Makefile 1.1.1.4 2011/02/03 14:10:39 martin TEST martin $ -# -# Description: -# Makefile for mbgclock driver to support Meinberg bus level -# devices under FreeBSD. -# -# ----------------------------------------------------------------------- -# $Log: Makefile $ -# Revision 1.1.1.4 2011/02/03 14:10:39 martin -# Revision 1.1.1.3 2011/01/26 17:38:58 martin -# Add support for DEBUG build. -# Revision 1.1.1.2 2011/01/26 16:36:37 martin -# Enabled all required source files. -# Revision 1.1.1.1 2011/01/26 14:12:02 martin -# Started modifications to build mbgclock. -# Revision 1.1 2011/01/26 13:56:32 martin -# Initial skeleton based on FreeBSD's mypci.c sample program by Murray Stokely. -# -######################################################################### - -KMOD= mbgclock - -MBGLIB= ../mbglib -MBGLIB_COMMON= $(MBGLIB)/common -MBGLIB_BSD= $(MBGLIB)/bsd - -.PATH: $(MBGLIB_COMMON) $(MBGLIB_BSD) - -CFLAGS= -I$(MBGLIB_COMMON) -I$(MBGLIB_BSD) - -.ifdef DEBUG -CFLAGS+= -D DEBUG=$(DEBUG) -.endif - -SRCS= mbgdrvr.c -SRCS+= pcpsdrvr.c -SRCS+= identdec.c -SRCS+= rsrc_bsd.c -SRCS+= device_if.h bus_if.h pci_if.h - -CLEANFILES= *~ -CLEANFILES+= machine -CLEANFILES+= @ - -.include <bsd.kmod.mk> diff --git a/src/external/bsd/meinberg/dist/mbgclock/mbgdrvr.c b/src/external/bsd/meinberg/dist/mbgclock/mbgdrvr.c deleted file mode 100755 index e2f968c..0000000 --- a/src/external/bsd/meinberg/dist/mbgclock/mbgdrvr.c +++ /dev/null @@ -1,725 +0,0 @@ - -/************************************************************************** - * - * $Id: mbgdrvr.c 1.1.1.11.1.3 2011/03/25 11:06:27 martin TRASH martin $ - * - * Description: - * Main file for for mbgclock driver to support Meinberg bus level - * devices under FreeBSD. - * - * The binary is a loadable module called mbgclock which implements - * /dev/mbgclock* devices. - * - * Based on FreeBSD's mypci.c sample program by Murray Stokely. - * - * ----------------------------------------------------------------------- - * $Log: mbgdrvr.c $ - * Revision 1.1.1.11.1.3 2011/03/25 11:06:27 martin - * Fixed typo. - * Revision 1.1.1.11.1.2 2011/03/23 16:49:53 martin - * Syntax fix. - * Revision 1.1.1.11.1.1 2011/03/22 12:09:16 martin - * Started to support NetBSD. - * Revision 1.1.1.11 2011/02/04 14:44:19 martin - * Revision 1.1.1.10 2011/02/02 12:33:52 martin - * Revision 1.1.1.9 2011/02/01 17:11:38 martin - * Revision 1.1.1.8 2011/02/01 14:49:42 martin - * Revision 1.1.1.7 2011/02/01 12:12:17 martin - * Revision 1.1.1.6 2011/01/31 17:28:56 martin - * Modified resource handling. - * Revision 1.1.1.5 2011/01/28 09:31:21 martin - * Fixed debug/non-debug build. - * Revision 1.1.1.4 2011/01/27 15:15:23 martin - * Loads and unloads properly. Calls pcps_start_device() which - * properly reads some data from a card. - * Revision 1.1.1.3 2011/01/26 16:37:18 martin - * Ioctl support compiled in. - * Revision 1.1.1.2 2011/01/26 15:05:53 martin - * Revision 1.1.1.1 2011/01/26 14:34:33 martin - * Started modifications to build mbgclock. - * Revision 1.1 2011/01/26 13:56:32 martin - * Initial skeleton based on FreeBSD's mypci.c sample program by Murray Stokely. - * - **************************************************************************/ - -#include <pcpsdrvr.h> -#include <mbgddmsg.h> - -#include <sys/param.h> /* defines used in kernel.h */ -#include <sys/module.h> -#include <sys/systm.h> -#include <sys/errno.h> -#include <sys/kernel.h> /* types used in module initialization */ -#include <sys/conf.h> /* cdevsw struct */ -#include <sys/uio.h> /* uio struct */ -#include <sys/malloc.h> -#include <sys/bus.h> /* structs, prototypes for pci bus stuff */ - -#if defined( MBG_TGT_FREEBSD ) - #include <sys/rman.h> -#endif - -#include <dev/pci/pcivar.h> /* For pci_get macros! */ -#include <dev/pci/pcireg.h> - - - -#if 1 //##++ move this elsewhere! - -#define REV_NUM 0x100 -#define REV_NUM_STR "1.00" - -#define MBG_COPYRIGHT "(c) Meinberg 2011" - -#define MBG_DRVR_NAME "mbgclock" -#define MBGCLK_NAME "mbgclk" -#define MBGNTP_NAME "mbgntp" - -const char pcps_driver_name[] = MBG_DRVR_NAME; - -static MBG_DBG_DATA mbg_dbg_data; -static MBG_DBG_PORT mbg_dbg_port = 0x378 + 0; //##++ -static PCPS_IO_ADDR_MAPPED mbg_dbg_port_mapped; //##++ - -static PCPS_DRVR_INFO drvr_info = { REV_NUM, 0, MBG_DRVR_NAME " radio clock driver" }; - -#if defined( DEBUG ) -int debug = DEBUG; -#endif - -MALLOC_DEFINE( M_MBGCLOCK, "short desc", "long desc" ); - -#include <macioctl.h> - -#endif - - - -/* The softc holds our per-instance data. */ -struct mbgclock_softc -{ - device_t device; - struct cdev *cdev; - PCPS_DDEV *pddev; -}; - - -/* Function prototypes */ -#if defined( MBG_TGT_NETBSD ) - static int mbgclock_open( dev_t, int, int, struct proc * ); - static int mbgclock_close( dev_t, int, int, struct proc * ); - static int mbgclock_read( dev_t dev, struct uio *, int ); -#else // FreeBSD - static d_open_t mbgclock_open; - static d_close_t mbgclock_close; - static d_read_t mbgclock_read; - static d_write_t mbgclock_write; - static d_ioctl_t mbgclock_ioctl; -#endif - - -/* Character device entry points */ - -static struct cdevsw mbgclock_cdevsw = -{ -#if defined( MBG_TGT_NETBSD ) - -#if 0 //##+++++++ - .d_open = mbgclock_open, - .d_close = mbgclock_close, - .d_read = mbgclock_read, - .d_write = mbgclock_write, - .d_ioctl = mbgclock_ioctl, - .d_name = "mbgclock" -#endif - -#else // FreeBSD - .d_version = D_VERSION, - .d_open = mbgclock_open, - .d_close = mbgclock_close, - .d_read = mbgclock_read, - .d_write = mbgclock_write, - .d_ioctl = mbgclock_ioctl, - .d_name = "mbgclock" -#endif -}; - - - -static __mbg_inline -void set_dev_connected( PCPS_DDEV *pddev, int state ) -{ - _mbgddmsg_4( MBG_DBG_DETAIL, "%s: setting dev %s_%s connected state to %i", - pcps_driver_name, _pcps_ddev_type_name( pddev ), _pcps_ddev_sernum( pddev ), - state ); - atomic_store_rel_int( &pddev->connected, state ); - -} // set_dev_connected - - - -/* - * In the cdevsw routines, we find our softc by using the si_drv1 member - * of struct cdev. We set this variable to point to our softc in our - * attach routine when we create the /dev entry. - */ -#if defined( MBG_TGT_NETBSD ) - -#if 0 //##++++ -int -mbgclock_open( dev_t, int, int, struct proc * ) -{ -} // mbgclock_open -#endif - -#else // FreeBSD - -int -mbgclock_open( struct cdev *dev, int oflags, int devtype, d_thread_t *td ) -{ - struct mbgclock_softc *psc = dev->si_drv1; - PCPS_DDEV *pddev = psc->pddev; - - _mbgddmsg_3( MBG_DBG_INFO, "%s: dev %s_%s opened successfully.", pcps_driver_name, - _pcps_ddev_type_name( pddev ), _pcps_ddev_sernum( pddev ) ); - - atomic_add_int( &pddev->open_count, 1 ); - - return 0; - -} // mbgclock_open - -#endif - - -#if defined( MBG_TGT_NETBSD ) - -#else // FreeBSD - -int -mbgclock_close( struct cdev *dev, int fflag, int devtype, d_thread_t *td ) -{ - struct mbgclock_softc *psc = dev->si_drv1; - PCPS_DDEV *pddev = psc->pddev; - - atomic_subtract_int( &pddev->open_count, 1 ); - - _mbgddmsg_3( MBG_DBG_INFO, "%s: dev %s_%s closed.", pcps_driver_name, - _pcps_ddev_type_name( pddev ), _pcps_ddev_sernum( pddev ) ); - - return 0; - -} // mbgclock_close - -#endif - - -#if defined( MBG_TGT_NETBSD ) - -#else // FreeBSD - -int -mbgclock_read( struct cdev *dev, struct uio *uio, int ioflag ) -{ - #if defined( DEBUG ) - struct mbgclock_softc *psc = dev->si_drv1; - PCPS_DDEV *pddev = psc->pddev; - - _mbgddmsg_4( MBG_DBG_INFO, "%s: dev %s_%s asked to read %li bytes", - pcps_driver_name, _pcps_ddev_type_name( pddev ), - _pcps_ddev_sernum( pddev ), (long) uio->uio_resid ); - #endif - - return 0; - -} // mbgclock_read - -#endif - - -#if defined( MBG_TGT_NETBSD ) - -#else // FreeBSD - -int -mbgclock_write( struct cdev *dev, struct uio *uio, int ioflag ) -{ - #if defined( DEBUG ) - struct mbgclock_softc *psc = dev->si_drv1; - PCPS_DDEV *pddev = psc->pddev; - - _mbgddmsg_4( MBG_DBG_INFO, "%s: dev %s_%s asked to write %li bytes", - pcps_driver_name, _pcps_ddev_type_name( pddev ), - _pcps_ddev_sernum( pddev ), (long) uio->uio_resid ); - #endif - - return 0; - -} // mbgclock_write - -#endif - - - -#if defined( MBG_TGT_NETBSD ) //##++++++++++++ - -// Below there are some dummy declarations to make the IOCTL handler -// for FreeBSD *compile* without errors under NetBSD. -// This is mainly to see if ioctl_switch() compiles without errors. - -#define caddr_t void * - -struct thread -{ - int dummy; -}; - -#endif - -int -mbgclock_ioctl( struct cdev *dev, u_long cmd, caddr_t data, - int32_t flag, struct thread *td ) -{ -#if defined( MBG_TGT_NETBSD ) - struct mbgclock_softc *psc = NULL; //##++++ dummy, just to avoid build error -#else // FreeBSD - struct mbgclock_softc *psc = dev->si_drv1; -#endif - PCPS_DDEV *pddev = psc->pddev; - int rc; - - rc = ioctl_switch( pddev, cmd, (void *) data, (void *) data ); - - // On success we return quickly. - - if ( rc == MBG_SUCCESS ) - { - _mbgddmsg_5( MBG_DBG_INFO, "%s: %p IOCTL 0x%02lX: success, dev %s_%s", - pcps_driver_name, dev, cmd, _pcps_ddev_type_name( pddev ), _pcps_ddev_sernum( pddev ) ); - goto out; - } - - - // An error has occurred. - // Generate an appropriate debug/error message - // and return an error status. - - switch ( rc ) - { - case MBG_ERR_INV_DEV_REQUEST: - _mbgddmsg_6( MBG_DBG_WARN, "%s: %p ioctl 0x%02lX: invalid cmd %04lX, dev %s_%s", - pcps_driver_name, dev, cmd, IOCBASECMD( cmd ), - _pcps_ddev_type_name( pddev ), _pcps_ddev_sernum( pddev ) ); - rc = -EINVAL; - break; - - - case MBG_ERR_NOT_SUPP_BY_DEV: - _mbgddmsg_5( MBG_DBG_WARN, "%s: %p ioctl 0x%02lX: not supported by dev %s_%s", - pcps_driver_name, dev, cmd, _pcps_ddev_type_name( pddev ), _pcps_ddev_sernum( pddev ) ); - rc = -EIO; - break; - - - case MBG_ERR_NO_MEM: - _mbgddmsg_5( MBG_DBG_WARN, "%s: %p ioctl 0x%02lX: unable to allocate buffer for dev %s_%s", - pcps_driver_name, dev, cmd, _pcps_ddev_type_name( pddev ), _pcps_ddev_sernum( pddev ) ); - rc = -EFAULT; - break; - - - case MBG_ERR_IRQ_UNSAFE: - _mbgddmsg_5( MBG_DBG_DETAIL, "%s: %p ioctl 0x%02lX: busy since unsafe IRQ enabled, dev %s_%s", - pcps_driver_name, dev, cmd, _pcps_ddev_type_name( pddev ), _pcps_ddev_sernum( pddev ) ); - rc = -EBUSY; - break; - - - default: // any access error code returned by the low level routine - // or copying from or to user space - _mbgddmsg_6( MBG_DBG_WARN, "%s: %p ioctl 0x%02lX: error %i accessing dev %s_%s", - pcps_driver_name, dev, cmd, rc, _pcps_ddev_type_name( pddev ), _pcps_ddev_sernum( pddev ) ); - rc = -EFAULT; - - } // switch error rc - - -out: - return rc; - -} // mbgclock_ioctl - - - -/* PCI Support Functions */ - -static void -mbg_deallocate_resource( device_t device, BSD_RSRC_INFO *p_ri, int type ) -{ - if ( p_ri->res ) - { -#if defined( MBG_TGT_NETBSD ) - //##++++++ -#else // FreeBSD - bus_deactivate_resource( device, type, - p_ri->rid, p_ri->res ); - bus_release_resource( device, type, - p_ri->rid, p_ri->res ); -#endif - p_ri->res = NULL; - } - -} // mbg_deallocate_resource - - - -/* - * deallocate resources - */ -static void -mbg_dealloc_rsrcs( device_t device ) -{ -#if defined( MBG_TGT_NETBSD ) - //##++++++ -#else // FreeBSD - struct mbgclock_softc *psc = device_get_softc( device ); - PCPS_DDEV *pddev = psc->pddev; - PCPS_RSRC_INFO *prsrci = &pddev->rsrc_info; - int i; - -// mbg_deallocate_resource( device, &prsrci->irq.bsd, SYS_RES_IRQ ); - - for ( i = 0; i < N_PCPS_MEM_RSRC; i++ ) - mbg_deallocate_resource( device, &prsrci->mem[i].bsd, SYS_RES_MEMORY ); - - for ( i = 0; i < N_PCPS_PORT_RSRC; i++ ) - mbg_deallocate_resource( device, &prsrci->port[i].bsd, SYS_RES_IOPORT ); -#endif - -} // mbg_dealloc_rsrcs - - - -static void -mbg_alloc_rsrc( device_t device, int rid, BSD_RSRC_INFO *p_ri, int type, int flags ) -{ -#if defined( MBG_TGT_NETBSD ) - //##++++++ -#else // FreeBSD - p_ri->rid = rid; - - p_ri->res = bus_alloc_resource_any( device, type, &p_ri->rid, flags ); - - if ( p_ri->res ) - { - p_ri->bst = rman_get_bustag( p_ri->res ); - p_ri->bsh = rman_get_bushandle( p_ri->res ); - } -#endif - -} // mbg_alloc_rsrc - - - -static void -mbg_alloc_rsrcs( device_t device ) -{ -#if defined( MBG_TGT_NETBSD ) - //##++++++ -#else // FreeBSD - struct mbgclock_softc *psc = device_get_softc( device ); - PCPS_DDEV *pddev = psc->pddev; - PCPS_RSRC_INFO *prsrci = &pddev->rsrc_info; - BSD_RSRC_INFO ri; - int bar; - -// _mbgddmsg_3( MBG_DBG_INIT_DEV, "%s: alloc I/O range %i: PCI device 0x%04X:0x%04X supported", -// pcps_driver_name, vend_id, dev_id ); - - for ( bar = 0; bar < 5; bar ++ ) - { - int rid = PCIR_BAR( bar ); - - if ( prsrci->num_rsrc_io < N_PCPS_PORT_RSRC ) - { - mbg_alloc_rsrc( device, rid, &ri, SYS_RES_IOPORT, RF_ACTIVE ); - - if ( ri.res ) - { - prsrci->port[prsrci->num_rsrc_io].bsd = ri; - pcps_add_rsrc_io( pddev, rman_get_start( ri.res ), rman_get_size( ri.res ) ); - continue; - } - } - - if ( prsrci->num_rsrc_mem < N_PCPS_MEM_RSRC ) - { - mbg_alloc_rsrc( device, rid, &ri, SYS_RES_MEMORY, RF_ACTIVE ); - - if ( ri.res ) - { - prsrci->mem[prsrci->num_rsrc_mem].bsd = ri; - pcps_add_rsrc_mem( pddev, rman_get_start( ri.res ), rman_get_size( ri.res ) ); - continue; - } - } - } - - - // single IRQ resource -#if 0 // currently not used / required - mbg_alloc_rsrc( device, 0, &ri, SYS_RES_IRQ, RF_SHAREABLE | RF_ACTIVE ); - - if ( ri.res ) - { - prsrci->port[prsrci->num_rsrc_irq].bsd = ri; - pcps_add_rsrc_irq( pddev, rman_get_start( ri.res ) ); - } -#endif - -#endif - -} // mbg_alloc_rsrcs - - - -/* - * Probe: compare the device ID of this device against the IDs that this driver - * supports. If there is a match, set the description and return success. - */ -static int -mbgclock_probe( device_t device ) -{ -#if defined( MBG_TGT_NETBSD ) - //##++++++ -#else // FreeBSD - uint16_t vend_id = pci_get_vendor( device ); - uint16_t dev_id = pci_get_device( device ); - PCPS_DEV_TYPE *pdt; - - - if ( vend_id != PCI_VENDOR_MEINBERG ) - goto fail; - - pdt = pcps_get_dev_type( PCPS_BUS_PCI, dev_id ); - - if ( pdt == NULL ) - goto fail; - - device_set_desc( device, pdt->name ); - - _mbgddmsg_3( MBG_DBG_INIT_DEV, "%s: probe: PCI device 0x%04X:0x%04X supported", - pcps_driver_name, vend_id, dev_id ); - - return BUS_PROBE_DEFAULT; - - -fail: - _mbgddmsg_3( MBG_DBG_INIT_DEV, "%s: probe: PCI device 0x%04X:0x%04X not supported", - pcps_driver_name, vend_id, dev_id ); - return ENXIO; - -#endif - -} // mbgclock_probe - - - -/* - * Attach function is only called if the probe is successful. - */ -static int -mbgclock_attach( device_t device ) -{ -#if defined( MBG_TGT_NETBSD ) - //##++++++ -#else // FreeBSD - uint16_t dev_id = pci_get_device( device ); - struct mbgclock_softc *psc = device_get_softc( device ); - int rc; - - _mbgddmsg_2( MBG_DBG_INIT_DEV, "%s: attach for device 0x%04X", - pcps_driver_name, dev_id ); - - psc->pddev = pcps_alloc_ddev(); - - if ( psc->pddev == NULL ) - { - _mbgddmsg_2( MBG_DBG_INIT_DEV, "%s: attach device 0x%04X: pcps_alloc_ddev() failed", - pcps_driver_name, dev_id ); - rc = ENOMEM; - goto fail; - } - - - rc = pcps_init_ddev( psc->pddev, PCPS_BUS_PCI, dev_id ); - - if ( rc != PCPS_SUCCESS ) - { - _mbgddmsg_3( MBG_DBG_INIT_DEV, "%s: attach device 0x%04X: pcps_init_ddev() failed, rc: %i", - pcps_driver_name, dev_id, rc ); - rc = ENXIO; - goto fail; - } - - - //##++++++ rc = pci_enable_device( dev ); - - - mbg_alloc_rsrcs( device ); - - //##++++++ rc = pcps_start_device( pddev, device->bus->number, device->devfn ); - rc = pcps_start_device( psc->pddev, 0, 0 ); - - if ( rc != PCPS_SUCCESS ) - { - _mbgddmsg_3( MBG_DBG_INIT_DEV, "%s: attach device 0x%04X: pcps_start_device() failed, rc: %i", - pcps_driver_name, dev_id, rc ); - rc = ENXIO; - goto fail; - } - - - set_dev_connected( psc->pddev, 1 ); - - /* Initialize our softc. */ - psc->device = device; - /* - * Create a /dev entry for this device. The kernel will assign us - * a major number automatically. We use the unit number of this - * device as the minor number and name the character device - * "mbgclock<unit>". - */ - psc->cdev = make_dev( &mbgclock_cdevsw, device_get_unit( device ), - UID_ROOT, GID_WHEEL, 0600, "mbgclock%u", device_get_unit( device ) ); - - psc->cdev->si_drv1 = psc; - - _mbgddmsg_2( MBG_DBG_INIT_DEV, "%s: device 0x%04X attached successfully", - pcps_driver_name, dev_id ); - - return 0; - - -fail: - mbg_dealloc_rsrcs( device ); - - if ( psc->pddev ) - pcps_free_ddev( psc->pddev ); - - _mbgddmsg_2( MBG_DBG_INIT_DEV, "%s: failed to attach device 0x%04X", - pcps_driver_name, dev_id ); - return rc; -#endif - -} // mbgclock_attach - - - -/* - * Detach device. - */ -static int -mbgclock_detach( device_t device ) -{ -#if defined( MBG_TGT_NETBSD ) - //##++++++ -#else // FreeBSD - #if defined( DEBUG ) - uint16_t dev_id = pci_get_device( device ); - #endif - struct mbgclock_softc *psc; - PCPS_DDEV *pddev; - - _mbgddmsg_2( MBG_DBG_INIT_DEV, "%s: detach for device 0x%04X", - pcps_driver_name, dev_id ); - - /* Teardown the state in our softc created in our attach routine. */ - psc = device_get_softc( device ); - pddev = psc->pddev; - - set_dev_connected( pddev, 0 ); - -// pcps_free_ddev( pddev ); //##++++++ should wait for outstanding requests - - mbg_dealloc_rsrcs( device ); - - destroy_dev( psc->cdev ); - - _mbgddmsg_2( MBG_DBG_INIT_DEV, "%s: device 0x%04X detached", - pcps_driver_name, dev_id ); -#endif - - return 0; - -} // mbgclock_detach - - - -/* - * Called during system shutdown after sync. - */ -static int -mbgclock_shutdown( device_t device ) -{ - printf( "mbgclock shutdown!\n" ); - - return 0; - -} // mbgclock_shutdown - - - -/* - * Device suspend routine. - */ -static int -mbgclock_suspend( device_t device ) -{ - printf( "mbgclock suspend!\n" ); - - return 0; - -} // mbgclock_suspend - - - -/* - * Device resume routine. - */ -static int -mbgclock_resume( device_t device ) -{ - printf( "mbgclock resume!\n" ); - - return 0; - -} // mbgclock_resume - - - -#if defined( MBG_TGT_NETBSD ) - //##++++++ -#else // FreeBSD -static device_method_t mbgclock_methods[] = -{ - /* Device interface */ - DEVMETHOD( device_probe, mbgclock_probe ), - DEVMETHOD( device_attach, mbgclock_attach ), - DEVMETHOD( device_detach, mbgclock_detach ), - DEVMETHOD( device_shutdown, mbgclock_shutdown ), - DEVMETHOD( device_suspend, mbgclock_suspend ), - DEVMETHOD( device_resume, mbgclock_resume ), - { 0, 0 } -}; -#endif - - -#if defined( MBG_TGT_NETBSD ) - //##++++++ -#else // FreeBSD -static devclass_t mbgclock_devclass; - -DEFINE_CLASS_0( mbgclock, mbgclock_driver, mbgclock_methods, sizeof( struct mbgclock_softc ) ); -DRIVER_MODULE( mbgclock, pci, mbgclock_driver, mbgclock_devclass, 0, 0 ); -#endif diff --git a/src/external/bsd/meinberg/dist/mbglib/common/mbgddmsg.h b/src/external/bsd/meinberg/dist/mbglib/common/mbgddmsg.h index d1aa8ae..3f9a367 100755 --- a/src/external/bsd/meinberg/dist/mbglib/common/mbgddmsg.h +++ b/src/external/bsd/meinberg/dist/mbglib/common/mbgddmsg.h @@ -1,7 +1,7 @@ /************************************************************************** * - * $Id: mbgddmsg.h 1.9 2011/01/26 18:13:49 martin REL_M $ + * $Id: mbgddmsg.h 1.9.1.1 2011/03/29 13:55:19 martin TRASH $ * * Copyright (c) Meinberg Funkuhren, Bad Pyrmont, Germany * @@ -10,6 +10,8 @@ * * ----------------------------------------------------------------------- * $Log: mbgddmsg.h $ + * Revision 1.9.1.1 2011/03/29 13:55:19 martin + * Also enable debug msgs if MBG_DEBUG is defined. * Revision 1.9 2011/01/26 18:13:49 martin * Support for *BSD. * Revision 1.8 2009/04/22 09:54:55 martin @@ -38,7 +40,7 @@ #include <mbg_tgt.h> -#if defined( DEBUG ) || ( defined( DBG ) && DBG ) +#if defined( DEBUG ) || ( defined( DBG ) && DBG ) || defined( MBG_DEBUG ) enum { diff --git a/src/external/bsd/meinberg/dist/mbglib/common/pcpsdev.h b/src/external/bsd/meinberg/dist/mbglib/common/pcpsdev.h index a9a617e..1bf517c 100755 --- a/src/external/bsd/meinberg/dist/mbglib/common/pcpsdev.h +++ b/src/external/bsd/meinberg/dist/mbglib/common/pcpsdev.h @@ -1,7 +1,7 @@ /************************************************************************** * - * $Id: pcpsdev.h 1.49.1.32 2011/03/25 11:09:43 martin TRASH $ + * $Id: pcpsdev.h 1.49.1.34 2011/03/29 14:08:45 martin TRASH martin $ * * Copyright (c) Meinberg Funkuhren, Bad Pyrmont, Germany * @@ -17,6 +17,10 @@ * * ----------------------------------------------------------------------- * $Log: pcpsdev.h $ + * Revision 1.49.1.34 2011/03/29 14:08:45 martin + * For compatibility use cpu_counter() instead of cpu_counter_serializing() under NetBSD. + * Revision 1.49.1.33 2011/03/28 09:50:18 martin + * Modifications for NetBSD from Frank Kardel. * Revision 1.49.1.32 2011/03/25 11:09:43 martin * Optionally support timespec for sys time (USE_TIMESPEC). * Started to support NetBSD. @@ -293,7 +297,7 @@ #if defined( MBG_TGT_NETBSD ) && defined( MBG_TGT_KERNEL ) #include <machine/cpu.h> - #include <machine/cpu_counter.h> /* for cycle counter abstractionb */ + #include <machine/cpu_counter.h> /* for cycle counter abstraction */ #endif #endif @@ -374,13 +378,14 @@ #include <sys/time.h> #endif - #if defined( MBG_TGT_NETBSD ) + #if defined( MBG_TGT_NETBSD ) #ifdef __LP64__ - #define MBG_MEM_ADDR uint64_t + #define MBG_MEM_ADDR uint64_t #else - #define MBG_MEM_ADDR uint32_t + #define MBG_MEM_ADDR uint32_t #endif #endif + #elif defined( MBG_TGT_OS2 ) typedef uint32_t MBG_PC_CYCLES; //##++ should differentiate more @@ -538,8 +543,9 @@ void mbg_get_pc_cycles( MBG_PC_CYCLES *p ) #define MBG_PC_CYCLES_SUPPORTED 1 -#elif defined( MBG_TGT_NETBSD ) && defined ( MBG_TGT_KERNEL ) - *p = cpu_counter(); + #elif defined( MBG_TGT_NETBSD ) && defined ( MBG_TGT_KERNEL ) + + *p = cpu_counter(); //##++ or cpu_counter_serializing() #define MBG_PC_CYCLES_SUPPORTED 1 @@ -612,13 +618,13 @@ void mbg_get_pc_cycles_frequency( MBG_PC_CYCLES_FREQUENCY *p ) #elif defined( MBG_TGT_BSD ) - #if defined( MBG_TGT_NETBSD ) && defined( MBG_TGT_KERNEL ) + #if defined( MBG_TGT_FREEBSD ) && defined( MBG_ARCH_X86 ) && defined( MBG_TGT_KERNEL ) - *p = cpu_frequency(curcpu()); + *p = tsc_freq; - #elif defined( MBG_TGT_FREEBSD ) && defined( MBG_ARCH_X86 ) && defined( MBG_TGT_KERNEL ) + #elif defined( MBG_TGT_NETBSD ) && defined( MBG_TGT_KERNEL ) - *p = tsc_freq; + *p = cpu_frequency( curcpu() ); #else diff --git a/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.c b/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.c index 78531c4..a2d021f 100755 --- a/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.c +++ b/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.c @@ -1,7 +1,7 @@ /************************************************************************** * - * $Id: pcpsdrvr.c 1.46.2.35 2011/03/25 11:10:34 martin TRASH $ + * $Id: pcpsdrvr.c 1.46.2.35.1.1 2011/03/28 09:52:16 martin TRASH martin $ * * Copyright (c) Meinberg Funkuhren, Bad Pyrmont, Germany * @@ -61,6 +61,8 @@ * * ----------------------------------------------------------------------- * $Log: pcpsdrvr.c $ + * Revision 1.46.2.35.1.1 2011/03/28 09:52:16 martin + * Fixes for compiler warnings from Frank Kardel. * Revision 1.46.2.35 2011/03/25 11:10:34 martin * Optionally support timespec for sys time (USE_TIMESPEC). * Revision 1.46.2.34 2011/03/22 10:25:57 martin diff --git a/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.h b/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.h index 2b8fd26..61e4091 100755 --- a/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.h +++ b/src/external/bsd/meinberg/dist/mbglib/common/pcpsdrvr.h @@ -1,7 +1,7 @@ /************************************************************************** * - * $Id: pcpsdrvr.h 1.41.1.20 2011/03/25 11:11:44 martin TRASH $ + * $Id: pcpsdrvr.h 1.41.1.21 2011/03/28 09:53:52 martin TRASH martin $ * * Copyright (c) Meinberg Funkuhren, Bad Pyrmont, Germany * @@ -10,6 +10,8 @@ * * ----------------------------------------------------------------------- * $Log: pcpsdrvr.h $ + * Revision 1.41.1.21 2011/03/28 09:53:52 martin + * Modifications for NetBSD from Frank Kardel. * Revision 1.41.1.20 2011/03/25 11:11:44 martin * Optionally support timespec for sys time (USE_TIMESPEC). * Started to support NetBSD. diff --git a/src/external/bsd/meinberg/dist/mbglib/common/words.h b/src/external/bsd/meinberg/dist/mbglib/common/words.h index 6106207..a0b2127 100755 --- a/src/external/bsd/meinberg/dist/mbglib/common/words.h +++ b/src/external/bsd/meinberg/dist/mbglib/common/words.h @@ -1,7 +1,7 @@ /************************************************************************** * - * $Id: words.h 1.25.1.2 2011/03/22 09:41:32 martin TRASH $ + * $Id: words.h 1.25.1.3 2011/03/28 09:55:52 martin TRASH $ * * Copyright (c) Meinberg Funkuhren, Bad Pyrmont, Germany * @@ -10,6 +10,8 @@ * * ----------------------------------------------------------------------- * $Log: words.h $ + * Revision 1.25.1.3 2011/03/28 09:55:52 martin + * Modifications for NetBSD from Frank Kardel. * Revision 1.25.1.2 2011/03/22 09:41:32 martin * Added FBYTE_OF() and FWORD_OF() macros. * Revision 1.25.1.1 2011/01/25 08:25:49Z martin @@ -245,7 +247,7 @@ typedef unsigned char uchar; -#if !defined( MBG_TGT_LINUX ) && !(defined ( MBG_TGT_NETBSD ) && defined ( MBG_TGT_KERNEL ) ) +#if !defined( MBG_TGT_LINUX ) && !( defined ( MBG_TGT_NETBSD ) && defined ( MBG_TGT_KERNEL ) ) typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong; diff --git a/src/external/bsd/meinberg/mbgclock/Makefile b/src/external/bsd/meinberg/mbgclock/Makefile index 85ad982..85ad982 100644..100755 --- a/src/external/bsd/meinberg/mbgclock/Makefile +++ b/src/external/bsd/meinberg/mbgclock/Makefile diff --git a/src/external/bsd/meinberg/mbgclock/Makefile.kmod b/src/external/bsd/meinberg/mbgclock/Makefile.kmod index ab1d577..ab1d577 100644..100755 --- a/src/external/bsd/meinberg/mbgclock/Makefile.kmod +++ b/src/external/bsd/meinberg/mbgclock/Makefile.kmod diff --git a/src/external/bsd/meinberg/mbgclock/files.mbgclock b/src/external/bsd/meinberg/mbgclock/files.mbgclock index 3a9f782..3a9f782 100644..100755 --- a/src/external/bsd/meinberg/mbgclock/files.mbgclock +++ b/src/external/bsd/meinberg/mbgclock/files.mbgclock diff --git a/src/external/bsd/meinberg/mbgclock/mbgclockdrvr.c b/src/external/bsd/meinberg/mbgclock/mbgclockdrvr.c index 8ffeb31..4d17032 100644..100755 --- a/src/external/bsd/meinberg/mbgclock/mbgclockdrvr.c +++ b/src/external/bsd/meinberg/mbgclock/mbgclockdrvr.c @@ -1,5 +1,5 @@ /* - * $Header$ + * $Header: /repository/clkdrv/bsd/netbsd/soft/mbgtools-nbsd/mbgclock/rcs/mbgclockdrvr.c 1.1.1.1 2011/03/29 13:30:34 martin TRASH martin $ * * NetBSD Meinberg mbgclock driver, Frank Kardel * @@ -94,8 +94,11 @@ CFATTACH_DECL2_NEW(mbgclock, extern struct cfdriver mbgclock_cd; -#ifdef DEBUG -int debug = 0; +#if defined( MBG_DEBUG ) +int debug = MBG_DEBUG; +#endif + +#if defined( DEBUG ) static int mbgclockdebug = ~0; #define DB_FOLLOW 0x00000001 #define DPRINTF(_X_, _Y_) do { \ @@ -279,7 +282,7 @@ mbg_alloc_rsrc( device_t device, int reg, BSD_RSRC_INFO *p_ri, int type ) p_ri->reg = reg; p_ri->type = type; - if (!pci_mapreg_map(&psc->pa, reg, type, BUS_SPACE_MAP_LINEAR, + if (!pci_mapreg_map(&psc->pa, reg, type, 0, //##++ BUS_SPACE_MAP_LINEAR ? &p_ri->bst, &p_ri->bsh, &p_ri->base, &p_ri->size)) { p_ri->valid = 1; @@ -318,12 +321,22 @@ mbg_alloc_rsrcs( device_t device ) if ( ri.valid ) { prsrci->port[prsrci->num_rsrc_io].bsd = ri; +#if 1 //##++ + pcps_add_rsrc_io( pddev, ri.base, ri.size ); +#else pcps_add_rsrc_io( pddev, (MBG_MEM_ADDR)bus_space_vaddr(ri.bst, ri.bsh), (ulong)ri.size ); +#endif continue; } + else + { + _mbgddmsg_2( MBG_DBG_INIT_DEV, + "%s: alloc I/O range %i failed", + pcps_driver_name, bar ); + } } break; @@ -506,6 +519,7 @@ mbgclock_activate(struct device *self, enum devact act) static int mbgclockopen(dev_t dev, int flags, int mode, struct lwp *l) { + _mbgddmsg_1( MBG_DBG_INIT_DEV, "%s: open called", pcps_driver_name ); DPRINTF(DB_FOLLOW, ("mbgclockopen(0x%"PRIx64", 0x%x, 0x%x, %p)\n", dev, flags, mode, l)); return 0; @@ -514,6 +528,7 @@ int mbgclockopen(dev_t dev, int flags, int mode, struct lwp *l) static int mbgclockclose(dev_t dev, int flags, int mode, struct lwp *l) { + _mbgddmsg_1( MBG_DBG_INIT_DEV, "%s: close called", pcps_driver_name ); DPRINTF(DB_FOLLOW,("mbgclockclose(0x%"PRIx64", 0x%x, 0x%x, %p)\n", dev, flags, mode, l)); return 0; @@ -522,6 +537,7 @@ int mbgclockclose(dev_t dev, int flags, int mode, struct lwp *l) static int mbgclockread(dev_t dev, struct uio *uio, int flags) { + _mbgddmsg_1( MBG_DBG_INIT_DEV, "%s: read called", pcps_driver_name ); DPRINTF(DB_FOLLOW,("mbgclockread(0x%"PRIx64", %p)\n", dev, uio)); return 0; @@ -530,6 +546,7 @@ int mbgclockread(dev_t dev, struct uio *uio, int flags) static int mbgclockwrite(dev_t dev, struct uio *uio, int flags) { + _mbgddmsg_1( MBG_DBG_INIT_DEV, "%s: write called", pcps_driver_name ); DPRINTF(DB_FOLLOW, ("mbgclockwrite(0x%"PRIx64", %p)\n", dev, uio)); return 0; @@ -544,6 +561,7 @@ int mbgclockioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l) PCPS_DDEV *pddev = psc->pddev; int rc; + _mbgddmsg_1( MBG_DBG_INIT_DEV, "%s: ioctl called", pcps_driver_name ); DPRINTF(DB_FOLLOW, ("mbgclockioctl(0x%"PRIx64", 0x%lx, %p, 0x%x, %p)\n", dev, cmd, data, flag, l->l_proc)); diff --git a/src/sys/dev/pci/files.pci.diff b/src/sys/dev/pci/files.pci.diff deleted file mode 100644 index 3871edb..0000000 --- a/src/sys/dev/pci/files.pci.diff +++ /dev/null @@ -1,16 +0,0 @@ -Index: files.pci -=================================================================== -RCS file: /cvsroot/src/sys/dev/pci/files.pci,v -retrieving revision 1.339 -diff -u -r1.339 files.pci ---- files.pci 23 Feb 2011 00:35:29 -0000 1.339 -+++ files.pci 27 Mar 2011 16:13:06 -0000 -@@ -1042,3 +1042,8 @@ - device vte: ether, ifnet, arp, mii, mii_phy - attach vte at pci - file dev/pci/if_vte.c vte -+ -+# -+# Meinberg radio clocks -+# -+include "external/bsd/meinberg/mbgclock/files.mbgclock" diff --git a/src/sys/dev/pci/pcidevs.diff b/src/sys/dev/pci/pcidevs.diff deleted file mode 100644 index d5ecaff..0000000 --- a/src/sys/dev/pci/pcidevs.diff +++ /dev/null @@ -1,47 +0,0 @@ -Index: pcidevs -=================================================================== -RCS file: /cvsroot/src/sys/dev/pci/pcidevs,v -retrieving revision 1.1066 -diff -u -r1.1066 pcidevs ---- pcidevs 25 Feb 2011 01:36:18 -0000 1.1066 -+++ pcidevs 27 Mar 2011 16:12:26 -0000 -@@ -546,6 +546,7 @@ - vendor SIIG 0x131f Siig - vendor DOMEX 0x134a Domex - vendor QUATECH 0x135c Quatech -+vendor MEINBERG 0x1360 Meinberg Funkuhren - vendor LMC 0x1376 LAN Media - vendor NETGEAR 0x1385 Netgear - vendor MOXA 0x1393 Moxa Technologies -@@ -3047,6 +3048,31 @@ - /* KTI products - XXX better descriptions */ - product KTI NE2KETHER 0x3000 Ethernet - -+/* Meinberg Funkuhren Products */ -+product MEINBERG PCI32 0x0101 DCF77 PCI32 -+product MEINBERG PCI509 0x0102 DCF77 PCI509 -+product MEINBERG PCI510 0x0103 DCF77 PCI510 -+product MEINBERG PCI511 0x0104 DCF77 PCI511 -+product MEINBERG PEX511 0x0105 DCF77 PEX511 -+ -+product MEINBERG GPS167PCI 0x0201 GPS GPS167PCI -+product MEINBERG GPS168PCI 0x0202 GPS GPS168PCI -+product MEINBERG GPS169PCI 0x0203 GPS GPS169PCI -+product MEINBERG GPS170PCI 0x0204 GPS GPS170PCI -+product MEINBERG GPS170PEX 0x0205 GPS GPS170PEX -+product MEINBERG GPS180PEX 0x0206 GPS GPS180PEX -+ -+product MEINBERG TCR510PCI 0x0301 IRIG TCR510PCI -+product MEINBERG TCR167PCI 0x0302 IRIG TCR167PCI -+product MEINBERG TCR511PCI 0x0303 IRIG TCR511PCI -+product MEINBERG TCR511PEX 0x0304 IRIG TCR511PEX -+product MEINBERG TCR170PEX 0x0305 IRIG TCR170PEX -+product MEINBERG TCR180PEX 0x0306 IRIG TCR180PEX -+ -+product MEINBERG PTP280PEX 0x0501 PTP PTP280PEX -+ -+product MEINBERG FRC511PEX 0x0601 FRC FRC511PEX -+ - /* LAN Media */ - product LMC HSSI 0x0003 HSSI Interface - product LMC DS3 0x0004 DS3 Interface diff --git a/src/sys/external/bsd/meinberg b/src/sys/external/bsd/meinberg deleted file mode 120000 index 39b5e46..0000000 --- a/src/sys/external/bsd/meinberg +++ /dev/null @@ -1 +0,0 @@ -../../../external/bsd/meinberg
\ No newline at end of file |