summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/shared/vme/vmeconfig.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/powerpc/shared/vme/vmeconfig.c')
-rw-r--r--c/src/lib/libbsp/powerpc/shared/vme/vmeconfig.c56
1 files changed, 18 insertions, 38 deletions
diff --git a/c/src/lib/libbsp/powerpc/shared/vme/vmeconfig.c b/c/src/lib/libbsp/powerpc/shared/vme/vmeconfig.c
index 15baf84d15..e951acf51c 100644
--- a/c/src/lib/libbsp/powerpc/shared/vme/vmeconfig.c
+++ b/c/src/lib/libbsp/powerpc/shared/vme/vmeconfig.c
@@ -1,15 +1,16 @@
/* $Id$ */
-/* Standard VME bridge configuration for VGM type boards */
+/* Default VME bridge configuration - note that this file
+ * is independent of the bridge driver/chip
+ */
/* Author: Till Straumann <strauman@slac.stanford.edu>, 3/2002 */
#include <bsp.h>
#include <bsp/VME.h>
-#include <bsp/irq.h>
+#include <bsp/VMEConfig.h>
#include <libcpu/bat.h>
-#include <libcpu/spr.h>
-#include <bsp/motorola.h>
+#include <rtems/bspIo.h>
/* Use a weak alias for the VME configuration.
* This permits individual applications to override
@@ -24,50 +25,38 @@
void BSP_vme_config(void) __attribute__ (( weak, alias("__BSP_default_vme_config") ));
-SPR_RO(DBAT0U)
-
void
__BSP_default_vme_config(void)
{
-union {
- struct _BATU bat;
- unsigned long batbits;
-} dbat0u;
-
- vmeUniverseInit();
- vmeUniverseReset();
- /* setup a PCI area to map the VME bus */
- dbat0u.batbits = _read_DBAT0U();
-
- /* if we have page tables, BAT0 is available */
- if (dbat0u.bat.vs || dbat0u.bat.vp) {
- printk("WARNING: BAT0 is taken (no pagetables?); "
- "VME bridge must share PCI range for VME access\n"
- "Skipping VME initialization...\n");
+ if ( BSP_VMEInit() ) {
+ printk("Skipping VME initialization...\n");
return;
}
- setdbat(0,
+#ifdef BSP_VME_BAT_IDX
+ /* setup a PCI area to map the VME bus */
+ setdbat(BSP_VME_BAT_IDX,
PCI_MEM_BASE + _VME_A32_WIN0_ON_PCI,
PCI_MEM_BASE + _VME_A32_WIN0_ON_PCI,
0x10000000,
IO_PAGE);
+#endif
/* map VME address ranges */
- vmeUniverseMasterPortCfg(
+ BSP_VMEOutboundPortCfg(
0,
VME_AM_EXT_SUP_DATA,
_VME_A32_WIN0_ON_VME,
_VME_A32_WIN0_ON_PCI,
0x0F000000);
- vmeUniverseMasterPortCfg(
+ BSP_VMEOutboundPortCfg(
1,
VME_AM_STD_SUP_DATA,
0x00000000,
_VME_A24_ON_PCI,
0x00ff0000);
- vmeUniverseMasterPortCfg(
+ BSP_VMEOutboundPortCfg(
2,
VME_AM_SUP_SHORT_IO,
0x00000000,
@@ -76,26 +65,17 @@ union {
#ifdef _VME_DRAM_OFFSET
/* map our memory to VME */
- vmeUniverseSlavePortCfg(
+ BSP_VMEInboundPortCfg(
0,
VME_AM_EXT_SUP_DATA,
_VME_DRAM_OFFSET,
PCI_DRAM_OFFSET,
BSP_mem_size);
-
- /* make sure the host bridge PCI master is enabled */
- vmeUniverseWriteReg(
- vmeUniverseReadReg(UNIV_REGOFF_PCI_CSR) | UNIV_PCI_CSR_BM,
- UNIV_REGOFF_PCI_CSR);
#endif
/* stdio is not yet initialized; the driver will revert to printk */
- vmeUniverseMasterPortsShow(0);
- vmeUniverseSlavePortsShow(0);
+ BSP_VMEOutboundPortsShow(0);
+ BSP_VMEInboundPortsShow(0);
- /* install the VME insterrupt manager */
- vmeUniverseInstallIrqMgr(0,5,1,6);
- if (vmeUniverse0PciIrqLine<0)
- BSP_panic("Unable to get interrupt line info from PCI config");
- _BSP_vme_bridge_irq=BSP_PCI_IRQ_LOWEST_OFFSET+vmeUniverse0PciIrqLine;
+ BSP_VMEIrqMgrInstall();
}