Index: bsps/headers.am
===================================================================
--- bsps/headers.am	(revision dbe6e0ad09881d596a41d247686d18eaa43cd897)
+++ bsps/headers.am	(revision 7604a1308793a7a6a5b9de2d518c90b5dc501c96)
@@ -7,8 +7,5 @@
 include_bspdir = $(includedir)/bsp
 include_bsp_HEADERS =
-include_bsp_HEADERS += ../../bsps/include/bsp/VME.h
-include_bsp_HEADERS += ../../bsps/include/bsp/VMEDMA.h
 include_bsp_HEADERS += ../../bsps/include/bsp/bootcard.h
-include_bsp_HEADERS += ../../bsps/include/bsp/bspVmeDmaList.h
 include_bsp_HEADERS += ../../bsps/include/bsp/console-polled.h
 include_bsp_HEADERS += ../../bsps/include/bsp/console-termios.h
Index: bsps/include/bsp/VME.h
===================================================================
--- bsps/include/bsp/VME.h	(revision dbe6e0ad09881d596a41d247686d18eaa43cd897)
+++ 	(revision )
@@ -1,133 +1,0 @@
-/**
- *  @file
- *
- *  @ingroup shared_vme
- *
- *  @brief SVGM et al. BSP's VME support
- */
-
-#ifndef RTEMS_BSP_VME_API_H
-#define RTEMS_BSP_VME_API_H
-
-/*
- * Authorship
- * ----------
- * This software was created by
- *     Till Straumann <strauman@slac.stanford.edu>, 2002,
- * 	   Stanford Linear Accelerator Center, Stanford University.
- *
- * Acknowledgement of sponsorship
- * ------------------------------
- * This software was produced by
- *     the Stanford Linear Accelerator Center, Stanford University,
- * 	   under Contract DE-AC03-76SFO0515 with the Department of Energy.
- *
- * Government disclaimer of liability
- * ----------------------------------
- * Neither the United States nor the United States Department of Energy,
- * nor any of their employees, makes any warranty, express or implied, or
- * assumes any legal liability or responsibility for the accuracy,
- * completeness, or usefulness of any data, apparatus, product, or process
- * disclosed, or represents that its use would not infringe privately owned
- * rights.
- *
- * Stanford disclaimer of liability
- * --------------------------------
- * Stanford University makes no representations or warranties, express or
- * implied, nor assumes any liability for the use of this software.
- *
- * Stanford disclaimer of copyright
- * --------------------------------
- * Stanford University, owner of the copyright, hereby disclaims its
- * copyright and all other rights in this software.  Hence, anyone may
- * freely use it for any purpose without restriction.
- *
- * Maintenance of notices
- * ----------------------
- * In the interest of clarity regarding the origin and status of this
- * SLAC software, this and all the preceding Stanford University notices
- * are to remain affixed to any copy or derivative of this software made
- * or distributed by the recipient and are to be affixed to any copy of
- * software made or distributed by the recipient that contains a copy or
- * derivative of this software.
- *
- * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03
- */
-
-#include <stdio.h>
-
-/* address modifiers & friends */
-#include <bsp/vme_am_defs.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  @defgroup shared_vme VME related declarations
- *
- *  @ingroup shared_vmeuniverse
- *
- *  @brief BSP-specific configuration routine; sets up
- * VME windows and installs the VME interrupt manager.
- */
-
-void BSP_vme_config(void);
-
-/* translate through host bridge and vme master window of vme bridge */
-int
-BSP_vme2local_adrs(unsigned long am, unsigned long vmeaddr, unsigned long *plocaladdr);
-
-/* how a CPU address is mapped to the VME bus (if at all) */
-int
-BSP_local2vme_adrs(unsigned long am, unsigned long localaddr, unsigned long *pvmeaddr);
-
-/* interrupt handlers and levels */
-typedef void (*BSP_VME_ISR_t)(void *usrArg, unsigned long vector);
-
-int
-BSP_installVME_isr(unsigned long vector, BSP_VME_ISR_t handler, void *arg);
-int
-BSP_removeVME_isr(unsigned long vector, BSP_VME_ISR_t handler, void *arg);
-
-/* retrieve the currently installed ISR for a given vector */
-BSP_VME_ISR_t
-BSP_getVME_isr(unsigned long vector, void **parg);
-
-int
-BSP_enableVME_int_lvl(unsigned int level);
-
-int
-BSP_disableVME_int_lvl(unsigned int level);
-
-int
-BSP_VMEOutboundPortCfg(
-	unsigned long port,
-	unsigned long address_space,
-	unsigned long vme_address,
-	unsigned long pci_address,
-	unsigned long size);
-
-int
-BSP_VMEInboundPortCfg(
-	unsigned long port,
-	unsigned long address_space,
-	unsigned long vme_address,
-	unsigned long pci_address,
-	unsigned long size);
-
-void
-BSP_VMEOutboundPortsShow(FILE *f);
-
-void
-BSP_VMEInboundPortsShow(FILE *f);
-
-/* Assert VME SYSRESET */
-void
-BSP_VMEResetBus(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
Index: bsps/include/bsp/VMEDMA.h
===================================================================
--- bsps/include/bsp/VMEDMA.h	(revision dbe6e0ad09881d596a41d247686d18eaa43cd897)
+++ 	(revision )
@@ -1,309 +1,0 @@
-/**
- *  @file
- *
- *  @ingroup shared_vmedma
- *
- *  @brief Public interface of DMA routines
- */
-
-#ifndef BSP_VME_DMA_H
-#define BSP_VME_DMA_H
-
-/*
- * Authorship
- * ----------
- * This software was created by
- *     Till Straumann <strauman@slac.stanford.edu>, 2006, 2007
- * 	   Stanford Linear Accelerator Center, Stanford University.
- *
- * Acknowledgement of sponsorship
- * ------------------------------
- * This software was produced by
- *     the Stanford Linear Accelerator Center, Stanford University,
- * 	   under Contract DE-AC03-76SFO0515 with the Department of Energy.
- *
- * Government disclaimer of liability
- * ----------------------------------
- * Neither the United States nor the United States Department of Energy,
- * nor any of their employees, makes any warranty, express or implied, or
- * assumes any legal liability or responsibility for the accuracy,
- * completeness, or usefulness of any data, apparatus, product, or process
- * disclosed, or represents that its use would not infringe privately owned
- * rights.
- *
- * Stanford disclaimer of liability
- * --------------------------------
- * Stanford University makes no representations or warranties, express or
- * implied, nor assumes any liability for the use of this software.
- *
- * Stanford disclaimer of copyright
- * --------------------------------
- * Stanford University, owner of the copyright, hereby disclaims its
- * copyright and all other rights in this software.  Hence, anyone may
- * freely use it for any purpose without restriction.
- *
- * Maintenance of notices
- * ----------------------
- * In the interest of clarity regarding the origin and status of this
- * SLAC software, this and all the preceding Stanford University notices
- * are to remain affixed to any copy or derivative of this software made
- * or distributed by the recipient and are to be affixed to any copy of
- * software made or distributed by the recipient that contains a copy or
- * derivative of this software.
- *
- * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03
- */
-
-#include <stdint.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  @defgroup shared_vmedma VMEDMA Support
- *
- *  @ingroup shared_vmeuniverse
- *
- *  @brief VMEDMA Support Package
- */
-
-
-/* NOTE: Access to DMA Channels is *not* protected / thread-safe.
- *       It is the responsability of the user to provide appropriate
- *       locking/serialization.
- */
-
-/* Simple abstraction of DMA controller setup / bus utilization:  */
-
-/* Since VME is the bottleneck, the settings for PCI are always
- * chosen aggressively.
- */
-
-
-/* Optimize for throughput; accept longer latencies:
- * Choose a large block size (1k) and immediately re-request
- * the bus at block boundaries.
- */
-#define BSP_VMEDMA_OPT_THROUGHPUT	1
-/* Optimize for latency, accept throughput penalty:
- * Choose a small block size (32b) and immediately re-request
- * the bus at block boundaries.
- */
-#define BSP_VMEDMA_OPT_LOWLATENCY	2
-
-/* Optimize for bus sharing with other devices:
- * Choose relatively small block size (128) and back off for 64us
- * at each block boundary.
- */
-#define BSP_VMEDMA_OPT_SHAREDBUS	3
-
-/* Choose bridge default/reset configuration:
- * (see manual)
- */
-#define BSP_VMEDMA_OPT_DEFAULT		4
-
-/* Provide custom configuration pass pointer to array
- * with as many 32-bit words the particular bridge chip
- * expects.
- */
-#define BSP_VMEDMA_OPT_CUSTOM		5
-
-/* VME Transfer modes */
-
-/* Bitwise OR of the VME address-modifier/transfer-type
- * with driver specific (no standard AM code for 2eVME and
- * 2eSST defined) and optional special flags (see below)
- */
-
-/* Additional qualifiers: */
-
-/* Don't increment VME address */
-#define BSP_VMEDMA_MODE_NOINC_VME	(1<<20)
-/* Don't increment PCI address */
-#define BSP_VMEDMA_MODE_NOINC_PCI	(1<<21)
-
-/* Direction */
-#define BSP_VMEDMA_MODE_PCI2VME		(1<<31)
-
-typedef void *BSP_VMEDmaListDescriptor;
-
-/* Program the device for the selected mode;
- *
- *  'bus_mode': one of the ...VMEDMA_OPT... choices
- *              listed above.
- * 'xfer_mode': VME address-modifier optionally ORed with
- *              ...VMEDMA_MODE... bits listed above.
- *    'custom': (only used if bus_mode is VMEDMA_OPT_CUSTOM)
- *              pointer to a list of setup parameters (chip-driver
- *              specific).
- *
- * RETURNS: 0 on success, nonzero on error (mode or channel
- *          unsupported).
- *
- * NOTES:   The setup is preserved across multiple DMA transfers.
- *          It is the responsibility of the driver to reprogram
- *          the setup if the hardware does not preserve it.
- *          However - in linked list mode, some fields may be
- *          read from the list descriptors.
- *
- *          Usually this routine must be used even in linked-list
- *          mode to program the 'bus_mode'.
- *
- *          Direction of transfer is specified by a bit in the
- *          'xfer_mode' (BSP_VMEDMA_MODE_PCI2VME).
- */
-int
-BSP_VMEDmaSetup(int channel, uint32_t bus_mode, uint32_t xfer_mode, void *custom_setup);
-
-/* Start direct (not linked-list) transfer.
- *
- * RETURNS: 0 on success, nonzero on failure
- */
-int
-BSP_VMEDmaStart(int channel, uint32_t pci_addr, uint32_t vme_addr, uint32_t n_bytes);
-
-/* Transfer status/result */
-#define BSP_VMEDMA_STATUS_OK		0
-/* Unsupported channel */
-#define BSP_VMEDMA_STATUS_UNSUP		(-1)
-/* Bus error on VME */
-#define BSP_VMEDMA_STATUS_BERR_VME	1
-/* Bus error on PCI */
-#define BSP_VMEDMA_STATUS_BERR_PCI	2
-/* Channel busy        */
-#define BSP_VMEDMA_STATUS_BUSY		3
-/* Setup/programming error */
-#define BSP_VMEDMA_STATUS_PERR		4
-/* Other/unspecified error */
-#define BSP_VMEDMA_STATUS_OERR		5
-
-/* Retrieve status of last transfer.
- *
- * RETURNS: 0 if the transfer was successful,
- *          nonzero on error (e.g., one of the
- *          values defined above).
- *
- *    NOTE: Driver is allowed to pass other,
- *          device specific codes
- */
-
-uint32_t
-BSP_VMEDmaStatus(int channel);
-
-/*
- * Hook a callback (executed from ISR context) to DMA interrupt and
- * enable it.
- * If called with NULL callback then an existing callback is removed
- * and the interrupt disabled.
- *
- * RETURNS: 0 on success, nonzero on failure (IRQ in use, unsupported
- *          channel).
- */
-typedef void (*BSP_VMEDmaIRQCallback)(void *usr_arg);
-
-int
-BSP_VMEDmaInstallISR(int channel, BSP_VMEDmaIRQCallback cb, void *usr_arg);
-
-/*
- * DMA List operations.
- *
- * Note that the list is totally unprotected, i.e., the user is
- * responsible for maintaining coherency against concurrent
- * access by multiple threads or hardware.
- * We assume the user builds/updates a list, hands it over to
- * the hardware (list start command) and leaves it alone until
- * the DMA controller is done with it.
- */
-
-/* Modify a list entry. If the list element pointer is NULL
- * then a new list element is allocated.
- * Only the fields with its corresponding bit set in the mask
- * argument are touched.
- *
- * RETURNS: 'd' or newly allocated descriptor or NULL (no memory,
- *          or invalid setup).
- */
-#define BSP_VMEDMA_MSK_ATTR		(1<<0)
-#define BSP_VMEDMA_MSK_PCIA		(1<<1)
-#define BSP_VMEDMA_MSK_VMEA		(1<<2)
-#define BSP_VMEDMA_MSK_BCNT		(1<<3)
-#define BSP_VMEDMA_MSK_ALL		(0xf)
-BSP_VMEDmaListDescriptor
-BSP_VMEDmaListDescriptorSetup(
-		BSP_VMEDmaListDescriptor d,
-		uint32_t                 attr_mask,
-		uint32_t				 xfer_mode,
-		uint32_t                 pci_addr,
-		uint32_t                 vme_addr,
-		uint32_t                 n_bytes);
-
-/* De-allocate a list descriptor previously obtained by
- * BSP_VMEDmaListDescriptorSetup(0,...);
- *
- * RETURNS: 0 on success, nonzero on failure (d currently on a list)
- */
-int
-BSP_VMEDmaListDescriptorDestroy(BSP_VMEDmaListDescriptor d);
-
-/* Traverse a list of descriptors and destroy all elements */
-int
-BSP_VMEDmaListDestroy(BSP_VMEDmaListDescriptor anchor);
-
-/* Enqueue a list descriptor 'd' after 'tail'
- *
- * If 'tail' is NULL then 'd' is removed from
- * the list it is currently on.
- *
- * RETURNS: 0 on success, nonzero if 'd' is already
- *          on a list (enqueue) or if it is not currently
- *          on a list (dequeue).
- *
- * NOTE: it is obviously the user's responsibility to update
- *       list queue/tail pointers when changing the
- *       structure of the list.
- */
-int
-BSP_VMEDmaListDescriptorEnq(
-		BSP_VMEDmaListDescriptor tail,
-		BSP_VMEDmaListDescriptor d);
-
-/* Obtain next and previous descriptors */
-BSP_VMEDmaListDescriptor
-BSP_VMEDmaListDescriptorNext(BSP_VMEDmaListDescriptor d);
-
-BSP_VMEDmaListDescriptor
-BSP_VMEDmaListDescriptorPrev(BSP_VMEDmaListDescriptor d);
-
-/* Set and get a 'usrData' pointer in the descriptor */
-void
-BSP_VMEDmaListDescriptorSetUsr(BSP_VMEDmaListDescriptor d, void *usrData);
-
-void *
-BSP_VMEDmaListDescriptorGetUsr(BSP_VMEDmaListDescriptor d);
-
-/* Refresh an entire list. Some DMA controllers modify certain
- * fields (e.g., byte count) and this command restores the original
- * setup.
- */
-
-int
-BSP_VMEDmaListRefresh(BSP_VMEDmaListDescriptor anchor);
-
-/* Start linked-list operation.
- *
- * RETURNS: 0 on success, nonzero on failure
- */
-int
-BSP_VMEDmaListStart(int channel, BSP_VMEDmaListDescriptor list);
-
-#ifdef DEBUG
-void
-BSP_VMEDmaListDump(BSP_VMEDmaListDescriptor p);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
Index: bsps/include/bsp/bspVmeDmaList.h
===================================================================
--- bsps/include/bsp/bspVmeDmaList.h	(revision dbe6e0ad09881d596a41d247686d18eaa43cd897)
+++ 	(revision )
@@ -1,140 +1,0 @@
-/**
- *  @file
- *
- *  @ingroup shared_bspvmedmalist
- *
- *  @brief This header should only be used inside a BSP
- * chosing to use bspVmeDmaList for implementing VMEDMA.h
- */
-
-#ifndef BSP_VME_DMA_LIST_H
-#define BSP_VME_DMA_LIST_H
-
-
-
-/*
- * The bspVmeDmaList utility implements part of the API defined by
- * 'VMEDMA.h' namely all 'VMEDmaListDescriptor' related entry points:
- *
- * BSP_VMEDmaListDescriptorDestroy(),
- * BSP_VMEDmaListDestroy(),
- * BSP_VMEDmaListDescriptorEnq(),
- * BSP_VMEDmaListDescriptorNext(),
- * BSP_VMEDmaListDescriptorPrev(),
- * BSP_VMEDmaListDescriptorSetUsr(),
- * BSP_VMEDmaListDescriptorGetUsr(),
- * BSP_VMEDmaListRefresh()
- *
- * Also, it provides helper routines to assist BSPs with implementing
- *
- * BSP_VMEDmaListDescriptorSetup()
- *
- * and
- *
- * BSP_VMEDmaListStart()
- *
- * by providing
- *
- * BSP_VMEDmaListDescriptorNewTool(),
- * BSP_VMEDmaListDescriptorSetupTool(),
- *
- * and
- *
- * BSP_VMEDmaListDescriptorStartTool()
- */
-
-/*
- * Authorship
- * ----------
- * This software was created by
- *     Till Straumann <strauman@slac.stanford.edu>, 2006, 2007
- * 	   Stanford Linear Accelerator Center, Stanford University.
- *
- * Acknowledgement of sponsorship
- * ------------------------------
- * This software was produced by
- *     the Stanford Linear Accelerator Center, Stanford University,
- * 	   under Contract DE-AC03-76SFO0515 with the Department of Energy.
- *
- * Government disclaimer of liability
- * ----------------------------------
- * Neither the United States nor the United States Department of Energy,
- * nor any of their employees, makes any warranty, express or implied, or
- * assumes any legal liability or responsibility for the accuracy,
- * completeness, or usefulness of any data, apparatus, product, or process
- * disclosed, or represents that its use would not infringe privately owned
- * rights.
- *
- * Stanford disclaimer of liability
- * --------------------------------
- * Stanford University makes no representations or warranties, express or
- * implied, nor assumes any liability for the use of this software.
- *
- * Stanford disclaimer of copyright
- * --------------------------------
- * Stanford University, owner of the copyright, hereby disclaims its
- * copyright and all other rights in this software.  Hence, anyone may
- * freely use it for any purpose without restriction.
- *
- * Maintenance of notices
- * ----------------------
- * In the interest of clarity regarding the origin and status of this
- * SLAC software, this and all the preceding Stanford University notices
- * are to remain affixed to any copy or derivative of this software made
- * or distributed by the recipient and are to be affixed to any copy of
- * software made or distributed by the recipient that contains a copy or
- * derivative of this software.
- *
- * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03
- */
-#include <stdint.h>
-
-#include <bsp/VMEDMA.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct VMEDmaListNodeRec_    *VMEDmaListNode;
-
-typedef struct VMEDmaListClassRec_   *VMEDmaListClass;
-
-/**
- *  @defgroup shared_bspvmedmalist Create and setup a new descriptor.
- *
- *  @ingroup shared_vmeuniverse
- *
- *  @brief The BSP must supply the appropriate controller class.
- */
-
-VMEDmaListNode
-BSP_VMEDmaListDescriptorNewTool(
-		VMEDmaListClass pc,
-		uint32_t	attr_mask,
-		uint32_t	xfer_mode,
-		uint32_t	pci_addr,
-		uint32_t	vme_addr,
-		uint32_t	n_bytes);
-
-/* Setup an existing descriptor */
-VMEDmaListNode
-BSP_VMEDmaListDescriptorSetupTool(
-		VMEDmaListNode n,
-		uint32_t	attr_mask,
-		uint32_t	xfer_mode,
-		uint32_t	pci_addr,
-		uint32_t	vme_addr,
-		uint32_t	n_bytes);
-
-
-/* Start a list DMA transfer on 'controller'. The 'controller' information
- * must be provided by the BSP.
- */
-int
-BSP_VMEDmaListDescriptorStartTool(volatile void *controller, int channel, VMEDmaListNode n);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
Index: bsps/powerpc/headers.am
===================================================================
--- bsps/powerpc/headers.am	(revision dbe6e0ad09881d596a41d247686d18eaa43cd897)
+++ bsps/powerpc/headers.am	(revision 7604a1308793a7a6a5b9de2d518c90b5dc501c96)
@@ -10,4 +10,7 @@
 include_bspdir = $(includedir)/bsp
 include_bsp_HEADERS =
+include_bsp_HEADERS += ../../../../../bsps/powerpc/include/bsp/VME.h
+include_bsp_HEADERS += ../../../../../bsps/powerpc/include/bsp/VMEDMA.h
+include_bsp_HEADERS += ../../../../../bsps/powerpc/include/bsp/bspVmeDmaList.h
 include_bsp_HEADERS += ../../../../../bsps/powerpc/include/bsp/consoleIo.h
 include_bsp_HEADERS += ../../../../../bsps/powerpc/include/bsp/flashPgm.h
Index: bsps/powerpc/include/bsp/VME.h
===================================================================
--- bsps/powerpc/include/bsp/VME.h	(revision 7604a1308793a7a6a5b9de2d518c90b5dc501c96)
+++ bsps/powerpc/include/bsp/VME.h	(revision 7604a1308793a7a6a5b9de2d518c90b5dc501c96)
@@ -0,0 +1,133 @@
+/**
+ *  @file
+ *
+ *  @ingroup shared_vme
+ *
+ *  @brief SVGM et al. BSP's VME support
+ */
+
+#ifndef RTEMS_BSP_VME_API_H
+#define RTEMS_BSP_VME_API_H
+
+/*
+ * Authorship
+ * ----------
+ * This software was created by
+ *     Till Straumann <strauman@slac.stanford.edu>, 2002,
+ * 	   Stanford Linear Accelerator Center, Stanford University.
+ *
+ * Acknowledgement of sponsorship
+ * ------------------------------
+ * This software was produced by
+ *     the Stanford Linear Accelerator Center, Stanford University,
+ * 	   under Contract DE-AC03-76SFO0515 with the Department of Energy.
+ *
+ * Government disclaimer of liability
+ * ----------------------------------
+ * Neither the United States nor the United States Department of Energy,
+ * nor any of their employees, makes any warranty, express or implied, or
+ * assumes any legal liability or responsibility for the accuracy,
+ * completeness, or usefulness of any data, apparatus, product, or process
+ * disclosed, or represents that its use would not infringe privately owned
+ * rights.
+ *
+ * Stanford disclaimer of liability
+ * --------------------------------
+ * Stanford University makes no representations or warranties, express or
+ * implied, nor assumes any liability for the use of this software.
+ *
+ * Stanford disclaimer of copyright
+ * --------------------------------
+ * Stanford University, owner of the copyright, hereby disclaims its
+ * copyright and all other rights in this software.  Hence, anyone may
+ * freely use it for any purpose without restriction.
+ *
+ * Maintenance of notices
+ * ----------------------
+ * In the interest of clarity regarding the origin and status of this
+ * SLAC software, this and all the preceding Stanford University notices
+ * are to remain affixed to any copy or derivative of this software made
+ * or distributed by the recipient and are to be affixed to any copy of
+ * software made or distributed by the recipient that contains a copy or
+ * derivative of this software.
+ *
+ * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03
+ */
+
+#include <stdio.h>
+
+/* address modifiers & friends */
+#include <bsp/vme_am_defs.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ *  @defgroup shared_vme VME related declarations
+ *
+ *  @ingroup shared_vmeuniverse
+ *
+ *  @brief BSP-specific configuration routine; sets up
+ * VME windows and installs the VME interrupt manager.
+ */
+
+void BSP_vme_config(void);
+
+/* translate through host bridge and vme master window of vme bridge */
+int
+BSP_vme2local_adrs(unsigned long am, unsigned long vmeaddr, unsigned long *plocaladdr);
+
+/* how a CPU address is mapped to the VME bus (if at all) */
+int
+BSP_local2vme_adrs(unsigned long am, unsigned long localaddr, unsigned long *pvmeaddr);
+
+/* interrupt handlers and levels */
+typedef void (*BSP_VME_ISR_t)(void *usrArg, unsigned long vector);
+
+int
+BSP_installVME_isr(unsigned long vector, BSP_VME_ISR_t handler, void *arg);
+int
+BSP_removeVME_isr(unsigned long vector, BSP_VME_ISR_t handler, void *arg);
+
+/* retrieve the currently installed ISR for a given vector */
+BSP_VME_ISR_t
+BSP_getVME_isr(unsigned long vector, void **parg);
+
+int
+BSP_enableVME_int_lvl(unsigned int level);
+
+int
+BSP_disableVME_int_lvl(unsigned int level);
+
+int
+BSP_VMEOutboundPortCfg(
+	unsigned long port,
+	unsigned long address_space,
+	unsigned long vme_address,
+	unsigned long pci_address,
+	unsigned long size);
+
+int
+BSP_VMEInboundPortCfg(
+	unsigned long port,
+	unsigned long address_space,
+	unsigned long vme_address,
+	unsigned long pci_address,
+	unsigned long size);
+
+void
+BSP_VMEOutboundPortsShow(FILE *f);
+
+void
+BSP_VMEInboundPortsShow(FILE *f);
+
+/* Assert VME SYSRESET */
+void
+BSP_VMEResetBus(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: bsps/powerpc/include/bsp/VMEDMA.h
===================================================================
--- bsps/powerpc/include/bsp/VMEDMA.h	(revision 7604a1308793a7a6a5b9de2d518c90b5dc501c96)
+++ bsps/powerpc/include/bsp/VMEDMA.h	(revision 7604a1308793a7a6a5b9de2d518c90b5dc501c96)
@@ -0,0 +1,309 @@
+/**
+ *  @file
+ *
+ *  @ingroup shared_vmedma
+ *
+ *  @brief Public interface of DMA routines
+ */
+
+#ifndef BSP_VME_DMA_H
+#define BSP_VME_DMA_H
+
+/*
+ * Authorship
+ * ----------
+ * This software was created by
+ *     Till Straumann <strauman@slac.stanford.edu>, 2006, 2007
+ * 	   Stanford Linear Accelerator Center, Stanford University.
+ *
+ * Acknowledgement of sponsorship
+ * ------------------------------
+ * This software was produced by
+ *     the Stanford Linear Accelerator Center, Stanford University,
+ * 	   under Contract DE-AC03-76SFO0515 with the Department of Energy.
+ *
+ * Government disclaimer of liability
+ * ----------------------------------
+ * Neither the United States nor the United States Department of Energy,
+ * nor any of their employees, makes any warranty, express or implied, or
+ * assumes any legal liability or responsibility for the accuracy,
+ * completeness, or usefulness of any data, apparatus, product, or process
+ * disclosed, or represents that its use would not infringe privately owned
+ * rights.
+ *
+ * Stanford disclaimer of liability
+ * --------------------------------
+ * Stanford University makes no representations or warranties, express or
+ * implied, nor assumes any liability for the use of this software.
+ *
+ * Stanford disclaimer of copyright
+ * --------------------------------
+ * Stanford University, owner of the copyright, hereby disclaims its
+ * copyright and all other rights in this software.  Hence, anyone may
+ * freely use it for any purpose without restriction.
+ *
+ * Maintenance of notices
+ * ----------------------
+ * In the interest of clarity regarding the origin and status of this
+ * SLAC software, this and all the preceding Stanford University notices
+ * are to remain affixed to any copy or derivative of this software made
+ * or distributed by the recipient and are to be affixed to any copy of
+ * software made or distributed by the recipient that contains a copy or
+ * derivative of this software.
+ *
+ * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03
+ */
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ *  @defgroup shared_vmedma VMEDMA Support
+ *
+ *  @ingroup shared_vmeuniverse
+ *
+ *  @brief VMEDMA Support Package
+ */
+
+
+/* NOTE: Access to DMA Channels is *not* protected / thread-safe.
+ *       It is the responsability of the user to provide appropriate
+ *       locking/serialization.
+ */
+
+/* Simple abstraction of DMA controller setup / bus utilization:  */
+
+/* Since VME is the bottleneck, the settings for PCI are always
+ * chosen aggressively.
+ */
+
+
+/* Optimize for throughput; accept longer latencies:
+ * Choose a large block size (1k) and immediately re-request
+ * the bus at block boundaries.
+ */
+#define BSP_VMEDMA_OPT_THROUGHPUT	1
+/* Optimize for latency, accept throughput penalty:
+ * Choose a small block size (32b) and immediately re-request
+ * the bus at block boundaries.
+ */
+#define BSP_VMEDMA_OPT_LOWLATENCY	2
+
+/* Optimize for bus sharing with other devices:
+ * Choose relatively small block size (128) and back off for 64us
+ * at each block boundary.
+ */
+#define BSP_VMEDMA_OPT_SHAREDBUS	3
+
+/* Choose bridge default/reset configuration:
+ * (see manual)
+ */
+#define BSP_VMEDMA_OPT_DEFAULT		4
+
+/* Provide custom configuration pass pointer to array
+ * with as many 32-bit words the particular bridge chip
+ * expects.
+ */
+#define BSP_VMEDMA_OPT_CUSTOM		5
+
+/* VME Transfer modes */
+
+/* Bitwise OR of the VME address-modifier/transfer-type
+ * with driver specific (no standard AM code for 2eVME and
+ * 2eSST defined) and optional special flags (see below)
+ */
+
+/* Additional qualifiers: */
+
+/* Don't increment VME address */
+#define BSP_VMEDMA_MODE_NOINC_VME	(1<<20)
+/* Don't increment PCI address */
+#define BSP_VMEDMA_MODE_NOINC_PCI	(1<<21)
+
+/* Direction */
+#define BSP_VMEDMA_MODE_PCI2VME		(1<<31)
+
+typedef void *BSP_VMEDmaListDescriptor;
+
+/* Program the device for the selected mode;
+ *
+ *  'bus_mode': one of the ...VMEDMA_OPT... choices
+ *              listed above.
+ * 'xfer_mode': VME address-modifier optionally ORed with
+ *              ...VMEDMA_MODE... bits listed above.
+ *    'custom': (only used if bus_mode is VMEDMA_OPT_CUSTOM)
+ *              pointer to a list of setup parameters (chip-driver
+ *              specific).
+ *
+ * RETURNS: 0 on success, nonzero on error (mode or channel
+ *          unsupported).
+ *
+ * NOTES:   The setup is preserved across multiple DMA transfers.
+ *          It is the responsibility of the driver to reprogram
+ *          the setup if the hardware does not preserve it.
+ *          However - in linked list mode, some fields may be
+ *          read from the list descriptors.
+ *
+ *          Usually this routine must be used even in linked-list
+ *          mode to program the 'bus_mode'.
+ *
+ *          Direction of transfer is specified by a bit in the
+ *          'xfer_mode' (BSP_VMEDMA_MODE_PCI2VME).
+ */
+int
+BSP_VMEDmaSetup(int channel, uint32_t bus_mode, uint32_t xfer_mode, void *custom_setup);
+
+/* Start direct (not linked-list) transfer.
+ *
+ * RETURNS: 0 on success, nonzero on failure
+ */
+int
+BSP_VMEDmaStart(int channel, uint32_t pci_addr, uint32_t vme_addr, uint32_t n_bytes);
+
+/* Transfer status/result */
+#define BSP_VMEDMA_STATUS_OK		0
+/* Unsupported channel */
+#define BSP_VMEDMA_STATUS_UNSUP		(-1)
+/* Bus error on VME */
+#define BSP_VMEDMA_STATUS_BERR_VME	1
+/* Bus error on PCI */
+#define BSP_VMEDMA_STATUS_BERR_PCI	2
+/* Channel busy        */
+#define BSP_VMEDMA_STATUS_BUSY		3
+/* Setup/programming error */
+#define BSP_VMEDMA_STATUS_PERR		4
+/* Other/unspecified error */
+#define BSP_VMEDMA_STATUS_OERR		5
+
+/* Retrieve status of last transfer.
+ *
+ * RETURNS: 0 if the transfer was successful,
+ *          nonzero on error (e.g., one of the
+ *          values defined above).
+ *
+ *    NOTE: Driver is allowed to pass other,
+ *          device specific codes
+ */
+
+uint32_t
+BSP_VMEDmaStatus(int channel);
+
+/*
+ * Hook a callback (executed from ISR context) to DMA interrupt and
+ * enable it.
+ * If called with NULL callback then an existing callback is removed
+ * and the interrupt disabled.
+ *
+ * RETURNS: 0 on success, nonzero on failure (IRQ in use, unsupported
+ *          channel).
+ */
+typedef void (*BSP_VMEDmaIRQCallback)(void *usr_arg);
+
+int
+BSP_VMEDmaInstallISR(int channel, BSP_VMEDmaIRQCallback cb, void *usr_arg);
+
+/*
+ * DMA List operations.
+ *
+ * Note that the list is totally unprotected, i.e., the user is
+ * responsible for maintaining coherency against concurrent
+ * access by multiple threads or hardware.
+ * We assume the user builds/updates a list, hands it over to
+ * the hardware (list start command) and leaves it alone until
+ * the DMA controller is done with it.
+ */
+
+/* Modify a list entry. If the list element pointer is NULL
+ * then a new list element is allocated.
+ * Only the fields with its corresponding bit set in the mask
+ * argument are touched.
+ *
+ * RETURNS: 'd' or newly allocated descriptor or NULL (no memory,
+ *          or invalid setup).
+ */
+#define BSP_VMEDMA_MSK_ATTR		(1<<0)
+#define BSP_VMEDMA_MSK_PCIA		(1<<1)
+#define BSP_VMEDMA_MSK_VMEA		(1<<2)
+#define BSP_VMEDMA_MSK_BCNT		(1<<3)
+#define BSP_VMEDMA_MSK_ALL		(0xf)
+BSP_VMEDmaListDescriptor
+BSP_VMEDmaListDescriptorSetup(
+		BSP_VMEDmaListDescriptor d,
+		uint32_t                 attr_mask,
+		uint32_t				 xfer_mode,
+		uint32_t                 pci_addr,
+		uint32_t                 vme_addr,
+		uint32_t                 n_bytes);
+
+/* De-allocate a list descriptor previously obtained by
+ * BSP_VMEDmaListDescriptorSetup(0,...);
+ *
+ * RETURNS: 0 on success, nonzero on failure (d currently on a list)
+ */
+int
+BSP_VMEDmaListDescriptorDestroy(BSP_VMEDmaListDescriptor d);
+
+/* Traverse a list of descriptors and destroy all elements */
+int
+BSP_VMEDmaListDestroy(BSP_VMEDmaListDescriptor anchor);
+
+/* Enqueue a list descriptor 'd' after 'tail'
+ *
+ * If 'tail' is NULL then 'd' is removed from
+ * the list it is currently on.
+ *
+ * RETURNS: 0 on success, nonzero if 'd' is already
+ *          on a list (enqueue) or if it is not currently
+ *          on a list (dequeue).
+ *
+ * NOTE: it is obviously the user's responsibility to update
+ *       list queue/tail pointers when changing the
+ *       structure of the list.
+ */
+int
+BSP_VMEDmaListDescriptorEnq(
+		BSP_VMEDmaListDescriptor tail,
+		BSP_VMEDmaListDescriptor d);
+
+/* Obtain next and previous descriptors */
+BSP_VMEDmaListDescriptor
+BSP_VMEDmaListDescriptorNext(BSP_VMEDmaListDescriptor d);
+
+BSP_VMEDmaListDescriptor
+BSP_VMEDmaListDescriptorPrev(BSP_VMEDmaListDescriptor d);
+
+/* Set and get a 'usrData' pointer in the descriptor */
+void
+BSP_VMEDmaListDescriptorSetUsr(BSP_VMEDmaListDescriptor d, void *usrData);
+
+void *
+BSP_VMEDmaListDescriptorGetUsr(BSP_VMEDmaListDescriptor d);
+
+/* Refresh an entire list. Some DMA controllers modify certain
+ * fields (e.g., byte count) and this command restores the original
+ * setup.
+ */
+
+int
+BSP_VMEDmaListRefresh(BSP_VMEDmaListDescriptor anchor);
+
+/* Start linked-list operation.
+ *
+ * RETURNS: 0 on success, nonzero on failure
+ */
+int
+BSP_VMEDmaListStart(int channel, BSP_VMEDmaListDescriptor list);
+
+#ifdef DEBUG
+void
+BSP_VMEDmaListDump(BSP_VMEDmaListDescriptor p);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: bsps/powerpc/include/bsp/bspVmeDmaList.h
===================================================================
--- bsps/powerpc/include/bsp/bspVmeDmaList.h	(revision 7604a1308793a7a6a5b9de2d518c90b5dc501c96)
+++ bsps/powerpc/include/bsp/bspVmeDmaList.h	(revision 7604a1308793a7a6a5b9de2d518c90b5dc501c96)
@@ -0,0 +1,140 @@
+/**
+ *  @file
+ *
+ *  @ingroup shared_bspvmedmalist
+ *
+ *  @brief This header should only be used inside a BSP
+ * chosing to use bspVmeDmaList for implementing VMEDMA.h
+ */
+
+#ifndef BSP_VME_DMA_LIST_H
+#define BSP_VME_DMA_LIST_H
+
+
+
+/*
+ * The bspVmeDmaList utility implements part of the API defined by
+ * 'VMEDMA.h' namely all 'VMEDmaListDescriptor' related entry points:
+ *
+ * BSP_VMEDmaListDescriptorDestroy(),
+ * BSP_VMEDmaListDestroy(),
+ * BSP_VMEDmaListDescriptorEnq(),
+ * BSP_VMEDmaListDescriptorNext(),
+ * BSP_VMEDmaListDescriptorPrev(),
+ * BSP_VMEDmaListDescriptorSetUsr(),
+ * BSP_VMEDmaListDescriptorGetUsr(),
+ * BSP_VMEDmaListRefresh()
+ *
+ * Also, it provides helper routines to assist BSPs with implementing
+ *
+ * BSP_VMEDmaListDescriptorSetup()
+ *
+ * and
+ *
+ * BSP_VMEDmaListStart()
+ *
+ * by providing
+ *
+ * BSP_VMEDmaListDescriptorNewTool(),
+ * BSP_VMEDmaListDescriptorSetupTool(),
+ *
+ * and
+ *
+ * BSP_VMEDmaListDescriptorStartTool()
+ */
+
+/*
+ * Authorship
+ * ----------
+ * This software was created by
+ *     Till Straumann <strauman@slac.stanford.edu>, 2006, 2007
+ * 	   Stanford Linear Accelerator Center, Stanford University.
+ *
+ * Acknowledgement of sponsorship
+ * ------------------------------
+ * This software was produced by
+ *     the Stanford Linear Accelerator Center, Stanford University,
+ * 	   under Contract DE-AC03-76SFO0515 with the Department of Energy.
+ *
+ * Government disclaimer of liability
+ * ----------------------------------
+ * Neither the United States nor the United States Department of Energy,
+ * nor any of their employees, makes any warranty, express or implied, or
+ * assumes any legal liability or responsibility for the accuracy,
+ * completeness, or usefulness of any data, apparatus, product, or process
+ * disclosed, or represents that its use would not infringe privately owned
+ * rights.
+ *
+ * Stanford disclaimer of liability
+ * --------------------------------
+ * Stanford University makes no representations or warranties, express or
+ * implied, nor assumes any liability for the use of this software.
+ *
+ * Stanford disclaimer of copyright
+ * --------------------------------
+ * Stanford University, owner of the copyright, hereby disclaims its
+ * copyright and all other rights in this software.  Hence, anyone may
+ * freely use it for any purpose without restriction.
+ *
+ * Maintenance of notices
+ * ----------------------
+ * In the interest of clarity regarding the origin and status of this
+ * SLAC software, this and all the preceding Stanford University notices
+ * are to remain affixed to any copy or derivative of this software made
+ * or distributed by the recipient and are to be affixed to any copy of
+ * software made or distributed by the recipient that contains a copy or
+ * derivative of this software.
+ *
+ * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03
+ */
+#include <stdint.h>
+
+#include <bsp/VMEDMA.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct VMEDmaListNodeRec_    *VMEDmaListNode;
+
+typedef struct VMEDmaListClassRec_   *VMEDmaListClass;
+
+/**
+ *  @defgroup shared_bspvmedmalist Create and setup a new descriptor.
+ *
+ *  @ingroup shared_vmeuniverse
+ *
+ *  @brief The BSP must supply the appropriate controller class.
+ */
+
+VMEDmaListNode
+BSP_VMEDmaListDescriptorNewTool(
+		VMEDmaListClass pc,
+		uint32_t	attr_mask,
+		uint32_t	xfer_mode,
+		uint32_t	pci_addr,
+		uint32_t	vme_addr,
+		uint32_t	n_bytes);
+
+/* Setup an existing descriptor */
+VMEDmaListNode
+BSP_VMEDmaListDescriptorSetupTool(
+		VMEDmaListNode n,
+		uint32_t	attr_mask,
+		uint32_t	xfer_mode,
+		uint32_t	pci_addr,
+		uint32_t	vme_addr,
+		uint32_t	n_bytes);
+
+
+/* Start a list DMA transfer on 'controller'. The 'controller' information
+ * must be provided by the BSP.
+ */
+int
+BSP_VMEDmaListDescriptorStartTool(volatile void *controller, int channel, VMEDmaListNode n);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
