summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/shared/vme
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2007-12-09 06:51:50 +0000
committerTill Straumann <strauman@slac.stanford.edu>2007-12-09 06:51:50 +0000
commit863b0ceff3f16b3b7ce60b163326632a7295695e (patch)
treeba4a6c7b69f514fc215187a45878a879aa24b11c /c/src/lib/libbsp/powerpc/shared/vme
parent2007-12-08 Till Straumann <strauman@slac.stanford.edu> (diff)
downloadrtems-863b0ceff3f16b3b7ce60b163326632a7295695e.tar.bz2
2007-12-08 Till Straumann <strauman@slac.stanford.edu>
* shared/vme/vme_universe.c: must set DMA ops pointer during init.
Diffstat (limited to 'c/src/lib/libbsp/powerpc/shared/vme')
-rw-r--r--c/src/lib/libbsp/powerpc/shared/vme/vme_universe.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/c/src/lib/libbsp/powerpc/shared/vme/vme_universe.c b/c/src/lib/libbsp/powerpc/shared/vme/vme_universe.c
index 27531ff5fd..069fa347c8 100644
--- a/c/src/lib/libbsp/powerpc/shared/vme/vme_universe.c
+++ b/c/src/lib/libbsp/powerpc/shared/vme/vme_universe.c
@@ -133,7 +133,7 @@ static VMEOpsRec uniOpsRec = {
static int uniVecs[] = { UNIV_DMA_INT_VEC };
-static DmaOpsRec uniDmaOps = {
+static DmaOpsRec uniDmaOpsRec = {
setup: vmeUniverseDmaSetup,
start: vmeUniverseDmaStart,
status: vmeUniverseDmaStatus,
@@ -164,7 +164,7 @@ static int tsiVecs[] = {
TSI_DMA1_INT_VEC,
};
-static DmaOpsRec tsiDmaOps = {
+static DmaOpsRec tsiDmaOpsRec = {
setup: vmeTsi148DmaSetup,
start: vmeTsi148DmaStart,
status: vmeTsi148DmaStatus,
@@ -284,10 +284,11 @@ BSP_VMEDmaListDescriptorSetup(
uint32_t n_bytes)
{
VMEDmaListClass pc;
+
if ( !d ) {
- if ( ! (pc = theDmaOps->listClass) ) {
- pc = (theDmaOps = selectOps())->listClass;
- }
+
+ pc = theDmaOps->listClass;
+
return BSP_VMEDmaListDescriptorNewTool(
pc,
attr_mask,
@@ -297,6 +298,7 @@ VMEDmaListClass pc;
n_bytes);
}
+
return BSP_VMEDmaListDescriptorSetupTool(d, attr_mask, xfer_mode, pci_addr, vme_addr, n_bytes);
}
@@ -366,7 +368,8 @@ int BSP_VMEInit()
{
#if defined(_VME_DRIVER_UNIVERSE)
if ( 0 == vmeUniverseInit() ) {
- theOps = &uniOpsRec;
+ theOps = &uniOpsRec;
+ theDmaOps = &uniDmaOpsRec;
vmeUniverseReset();
}
#endif
@@ -375,8 +378,9 @@ int BSP_VMEInit()
#endif
#if defined(_VME_DRIVER_TSI148)
if ( 0 == vmeUniverseInit() ) {
- theOps = &tsiOpsRec;
- vmeUniverseReset();
+ theOps = &tsiOpsRec;
+ theDmaOps = &tsiDmaOpsRec;
+ vmeTsi148Reset();
#ifdef VME_CLEAR_BRIDGE_ERRORS
{
extern unsigned short (*_BSP_clear_vmebridge_errors)();