diff --git a/src/drv/drvDvx.c b/src/drv/drvDvx.c index 7e7c40abf..0bb311d66 100644 --- a/src/drv/drvDvx.c +++ b/src/drv/drvDvx.c @@ -324,7 +324,6 @@ long dvx_driver_init() int intvec = DVX_IVEC0; struct dvx_2502 *ptr; short *sptr; - /* * dont continue DMA while vxWorks is control X * rebooting (and changing bus arbitration mode) @@ -584,6 +583,7 @@ dvx_dump(card,firstchan,lastchan) ,i,data,volts); } printf("end of list\n"); + return(0); } #ifndef EPICS_V2 @@ -593,7 +593,7 @@ IOSCANPVT *scanpvt; { if ((card >= ai_num_cards[DVX2502]) || (card < 0)) /* make sure hardware exists */ return(0); - else if (dvx[card].pdvx2502 == 0) + if (dvx[card].pdvx2502 == 0) return(0); *scanpvt = dvx[card].ioscanpvt; return(0); @@ -844,7 +844,7 @@ void *lclToA24(void *pLocal) void *pA24; status = sysLocalToBusAdrs( - VME_AM_STD_USR_DATA, + VME_AM_STD_SUP_DATA, pLocal, &pA24); if(status<0){ diff --git a/src/drv/drvXy566.c b/src/drv/drvXy566.c index 7bf3c5ae2..a420e23d1 100644 --- a/src/drv/drvXy566.c +++ b/src/drv/drvXy566.c @@ -76,6 +76,7 @@ * .18 08-10-92 joh cleaned up the merge of the xy566 wf and ai * drivers * .19 08-25-92 mrk replaced call to ai_driver by ai_xy566_driver + * .20 08-26-92 mrk support epics I/O event scan */ #include @@ -84,6 +85,9 @@ #include #include #include +#ifndef EPICS_V2 +#include +#endif static char SccsId[] = "$Id$\t$Date$ "; @@ -180,6 +184,9 @@ struct ai566 **pai_xy566dil; unsigned short **pai_xy566se_mem; unsigned short **pai_xy566di_mem; unsigned short **pai_xy566dil_mem; +#ifndef EPICS_V2 +static IOSCANPVT *paioscanpvt; +#endif /* reset the counter interrupt 0x8000 */ @@ -268,11 +275,17 @@ unsigned char val; *addr = val; } -ai566_intr(ap) -register struct ai566 *ap; +ai566_intr(i) +short i; { + register struct ai566 *ap = pai_xy566dil[i]; + /* wake up the I/O event scanner */ +#ifdef EPICS_V2 io_scanner_wakeup(IO_AI,XY566DIL,ap->card_number); +#else + scanIoRequest(paioscanpvt[i]); +#endif /* reset the CSR - needed to allow next interrupt */ senw(&ap->a566_csr,XY566L_CSR); @@ -432,6 +445,7 @@ register short ***pppmem_present; /* latch in the first bunch of data and start continuous scan */ senb(&pai566->soft_start,0); } + return(0); } /* @@ -461,6 +475,20 @@ register short ***pppmem_present; return ERROR; } +#ifndef EPICS_V2 + paioscanpvt = (IOSCANPVT *)calloc(num_cards, sizeof(*paioscanpvt)); + if(!paioscanpvt) { + return ERROR; + } + { + int i; + for(i=0; iint_vect = AI566_VNUM + i; - intConnect((AI566_VNUM + i) * 4, ai566_intr, pai566); + intConnect((AI566_VNUM + i) * 4, ai566_intr, i); sysIntEnable(XY566_INT_LEVEL); /* reset the Xycom 566 board */ @@ -575,9 +603,19 @@ register short ***pppmem_present; senw(&pai566->a566_csr,XY566L_CSR); } + return(0); } - +#ifndef EPICS_V2 +ai_xy566_getioscanpvt(card,scanpvt) +unsigned short card; +IOSCANPVT *scanpvt; +{ + if((card<=MAX_DIL_CARDS) && paioscanpvt[card]) *scanpvt = paioscanpvt[card]; + return(0); +} +#endif + ai_xy566_driver(card,chan,type,prval) register unsigned short card; unsigned short chan; @@ -636,10 +674,8 @@ register unsigned short *prval; rval_convert(prval); return (0); } - - return (0); - } + return (0); }