#include "subevt.h"
#include "param.h"
-#define MU_FIFO 0x04000000UL
-#define MU_EVT_COUNT 0x000e8014UL
-#define MU_FIFO_STATUS 0x06000008UL
+#define MU_EVT_COUNT 0x0e8014UL
+#define MU_FIFO 0x0000UL
+#define MU_FIFO_STATUS 0x0008UL
struct HardwareS {
- LVme *lvme;
+ LVme *lvme0;
+ LVme *lvme4;
+ LVme *lvme6;
LVme_L evtCount;
LVme_L old_evtCount;
size_t maxSubEvtSize;
cardBase = Param_getVal(param, "mu", "cardbase");
desParam(param);
- my->lvme = allocMem(sizeof(LVme));
- if (0 > conLVme(my->lvme, cardBase, 0x8000000UL, 0x09UL, 0, 0)) {
+ my->lvme0 = allocMem(sizeof(LVme));
+ if (0 > conLVme(my->lvme0, cardBase, 0x100000UL, 0x09UL, 0, 0)) {
+ msglog(LOG_ERR, "MU on %p not found\n", cardBase);
+ return NULL;
+ }
+ my->lvme4 = allocMem(sizeof(LVme));
+ if (0 > conLVme(my->lvme4, cardBase + 0x4000000, 0x10000UL, 0x09UL, 0, 0)) {
+ msglog(LOG_ERR, "MU on %p not found\n", cardBase);
+ return NULL;
+ }
+ my->lvme6 = allocMem(sizeof(LVme));
+ if (0 > conLVme(my->lvme6, cardBase + 0x6000000, 0x10000UL, 0x09UL, 0, 0)) {
msglog(LOG_ERR, "MU on %p not found\n", cardBase);
return NULL;
}
void deleteHardware(Hardware *my)
{
- desLVme(my->lvme);
- freeMem(my->lvme);
+ desLVme(my->lvme6);
+ freeMem(my->lvme6);
+ desLVme(my->lvme4);
+ freeMem(my->lvme4);
+ desLVme(my->lvme0);
+ freeMem(my->lvme0);
freeMem(my);
}
return;
}
- my->old_evtCount=LVme_getL(my->lvme, MU_EVT_COUNT);
+ my->old_evtCount=LVme_getL(my->lvme0, MU_EVT_COUNT);
while (my->evtCount == my->old_evtCount) {
#if 1
struct timespec tS, *t = &tS;
t->tv_sec = 0;
t->tv_nsec = 400000000UL;
nanosleep(t, NULL);
- my->old_evtCount=LVme_getL(my->lvme, MU_EVT_COUNT);
+ my->old_evtCount=LVme_getL(my->lvme0, MU_EVT_COUNT);
#endif
}
data = SubEvt_begin(subEvt);
- if (! ((LVme_getW(my->lvme, MU_FIFO_STATUS) >> 3) &0x1) ) {
- LVme_getW(my->lvme, MU_FIFO);
+ if (! ((LVme_getW(my->lvme6, MU_FIFO_STATUS) >> 3) &0x1) ) {
+ LVme_getW(my->lvme4, MU_FIFO);
}
- *data++ = LVme_getW(my->lvme, MU_FIFO) & 0xffff;
- *data++ = LVme_getW(my->lvme, MU_FIFO) & 0xffff;
- *data++ = LVme_getW(my->lvme, MU_FIFO) & 0xffff;
- *data++ = LVme_getW(my->lvme, MU_FIFO) & 0xffff;
+ *data++ = LVme_getW(my->lvme4, MU_FIFO) & 0xffff;
+ *data++ = LVme_getW(my->lvme4, MU_FIFO) & 0xffff;
+ *data++ = LVme_getW(my->lvme4, MU_FIFO) & 0xffff;
+ *data++ = LVme_getW(my->lvme4, MU_FIFO) & 0xffff;
SubEvt_setDecoding(subEvt, SubEvtDecoding_32bitData);
while (data < SubEvt_end(subEvt)) {
- *data++ = LVme_getW(my->lvme, MU_FIFO) & 0xffff;
+ *data++ = LVme_getW(my->lvme4, MU_FIFO) & 0xffff;
}
msglog(LOG_DEBUG, "subEvt: %s\n", SubEvt_2charP(subEvt));