Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages

fxnProto.h

00001 /************************************************************************************
00002  * fxnProto.h
00003  *
00004  *  synopsis: Function prototypes.
00005  *
00006  *  Damon Fasching, UW Madison                             fasching@wisconsin.cern.ch
00007  *  Douglas Ferguson, UW Madison   (510) 486-5230          dpferguson@lbl.gov
00008  ************************************************************************************/
00009 #ifndef FUNCTION_PROTOTYPES
00010 #define FUNCTION_PROTOTYPES
00011 
00012 #include <csl.h>
00013 #include <csl_timer.h>
00014 
00015 #include "processor.h"
00016 #include "msgBuff.h"
00017 #include "primFuncts.h"
00018 #include "primParams.h"
00019 #include "eventHandler.h"
00020 #include "txtBuffer.h"
00021 #include "drand48.h"
00022 
00023 #include "taskManager.h"
00024 #if defined(I_AM_MASTER_DSP)
00025     #include "serialStreams.h"
00026 #elif defined(I_AM_SLAVE_DSP)
00027     #include "histogram.h"
00028 #endif
00029 
00030 #if defined(SCT_ROD)
00031     #include "fxnProto_sct.h"
00032 #elif defined(PIXEL_ROD)
00033     #include "fxnProto_pxl.h"
00034     #include "fittingRoutines.h"
00035 #endif
00036 
00037 //rodRun.c:
00038 void  chipInit(void);
00039 INT32 extInit(void);
00040 void  mainLoop(void);
00041 
00042 #if defined(I_AM_MASTER_DSP)
00043     //accessSlave.c:
00044     void writeSlvHPIC(UINT32, UINT32);
00045     void writeSlvHPIA(UINT32, UINT32);
00046     void writeSlvHPID(UINT32, UINT32);
00047     void writeSlvHPID_I(UINT32, UINT32);
00048 
00049     UINT32 readSlvHPIC(UINT32);
00050     UINT32 readSlvHPIA(UINT32);
00051     UINT32 readSlvHPID(UINT32);
00052     UINT32 readSlvHPID_I(UINT32);
00053 
00054     void writeSlvBlock(UINT8 slv, UINT32 *slvPtr, UINT32 *ptr, UINT32 len);
00055     void readSlvBlock(UINT8 slv, UINT32 *slvPtr, UINT32 *ptr, UINT32 len);
00056     
00057     //simulation.c:
00058     void   copySdspRegs(UINT32 sdsp, UINT32 toIdram);
00059     UINT32 *remapSdspPtr(UINT32 sdsp, UINT32 *sdspPtr);
00060 
00061     //accessFifo.c:
00062     INT32 accessFifo(UINT32 fifoId, UINT32 bank, UINT32 readNotWrite, UINT32 numElements,
00063                       UINT32 *data, UINT32 *bytesXfrd);
00064     INT32 waitSerialCaptureComplete(void);
00065     //int extractInmemLink(void *inmemBuff, int link, void *outBuff, int size,
00066     //                     int *nWordsWritten, int flags);
00067     //int extractInmemLink(void *inmemBuff, int link, void *outBuff, int size, int flags);
00068     UINT8 fmtLinkToHwLink(UINT8 fmtLink);
00069     void  extractRawLink(int hwLink, UINT32 *dst, int extractData);
00070     void  resetCaptureBuffer();
00071     INT32 inmemCaptureNext(int fmtLink, void *dest, int extractData);
00072 
00073     //boc.c
00074     void  bocRegDecode(UINT32 id, UINT8 *bocReg, UINT8 *link);
00075     INT32 setBocVariable(UINT8 link, UINT8 type, UINT8 val);
00076     INT32 getBocVariable(UINT8 link, UINT8 type, UINT8 *val);
00077     INT32 configureBoc(void);
00078 
00079     //commTest.c:
00080     INT32 sdspCommTest(void *ptr);
00081     
00082     //errorCheck.c:
00083     INT32 moduleIndexCheck(UINT32 cfgSet, UINT32 module, UINT8 single, UINT8 checkPresent,
00084                            UINT8  cfgBitfield);
00085     INT32 checkSdspStatus(UINT8 sdsp, UINT8 testBits, char *routineName);
00086     
00087     //flash.c:
00088     INT32 programFlash(INT32 len, void *base);
00089     INT32 flashProductInfo(void);
00090 
00091     //resetRod.c
00092     void  resetSlave(UINT8);
00093     INT32 resetSlaveSync(UINT8, UINT8, UINT32, UINT32, UINT8);
00094     void  resetRod(UINT8);
00095     INT32 waitPRMAck(UINT32, UINT8);
00096     INT32 waitRodBusy(void);
00097 
00098     //rodConfiguration.c:
00099     UINT8 getRodRev(void);
00100     UINT8 slvPresent(UINT8 slv);
00101     INT32 setSlvClk(UINT8 slv, UINT8 MHzDiv20);
00102     void  setLemoLink(UINT8 fmtLink);
00103     INT32 rodMode(UINT32 mode, UINT8 flag, UINT8 fifoSetup, UINT32 nBits, UINT32 delay,
00104                   UINT32 evtsPerL1A, UINT8 message);
00105     UINT32 atlasRunMode(void);
00106     
00107     INT32 setMaskConfig(UINT8 moduleNum, UINT8 cmdLine, UINT8 fmtLink[2]);
00108     void  switchLinkMasks(UINT32 maskType, UINT8  maskSet);
00109     void  setLinkMasks(UINT8 mod, UINT8 sp, UINT32 maskType, UINT8 storage, UINT8 maskSet);
00110 #endif
00111 
00112 //smHostListProc.c:
00113 INT32 smHostListProc(void);
00114 void setPausedByPrim(void);
00115 
00116 //rodConfiguration.c (common):
00117 void  initRodConfig(void);
00118 
00119 #ifdef I_AM_MASTER_DSP  
00120     void storeReplyParams(UINT32 sdsp, UINT32 *slaveRepData);
00121     void initiateSlvList(UINT32 sdsp, UINT32 pauseMasterList, UINT32 getSlaveReply);
00122     void initiateSlvPause(UINT32 sdsp);
00123     void initiateSlvResume(UINT32 sdsp);
00124     void initiateSlvAbort(UINT32 sdsp);
00125     void copySlvReply(UINT32 sdsp);
00126 void decAttendSlvReply(void);
00127 void incAttendSlvReply(void);
00128 
00129 void setPausedBySlave(void);
00130 void rstPausedBySlave(void);
00131 void abortSlvListSMs(void);
00132     INT32 smHostListToSlave(UINT32 sdsp);
00133     UINT32 slvHostListIdle(UINT32 sdsp);
00134     UINT32 *getReplyDest(UINT32 sdsp);
00135 #endif
00136 
00137 INT32 smIntrDspListProc(void);
00138 INT32 idspListSend(UINT32 sdsp, UINT32 timeoutIn);
00139 UINT32 intrDspListSendIdle(void);
00140 INT32 smIntrDspListSend(void);
00141 INT32 addMessage(UINT32 buffNum, UINT32 buffIdx, UINT32 msgId, UINT32 msgRevision,
00142                   UINT32 msgBodyLength, UINT32 *msgBodyPtr);
00143 INT32 addReplyData(PrimData *primData, void *ptr, UINT32 nWords);
00144 
00145 #ifdef I_AM_MASTER_DSP
00146     void initiateListSendSM(UINT32 sdsp);
00147 UINT32 replyDataAvail(void);
00148 #endif
00149 
00150 #ifdef I_AM_SLAVE_DSP
00151 void initiateListSendSM(UINT32 dummy);
00152 #endif
00153 
00154 void newError(INT32 *errorKeep, INT32 error, INT32 severity, char routine[],
00155               char message[], char file[], INT32 line);
00156 void addError(INT32 *errorKeep, INT32 error, char routine[], char branch[],
00157               char file[], INT32 line);
00158 void setErrMask(UINT32 errMask);
00159 UINT32 getErrMask();
00160 void addErrorInfo(char file[], INT32 line, char message[]);
00161 void newInformation(char file[], INT32 line, char message[]);
00162 void addInformation(char file[], INT32 line, char message[]);
00163 void newDiagnostic(char file[], INT32 line, char message[]);
00164 void addDiagnostic(char file[], INT32 line, char message[]);
00165 #ifdef I_AM_MASTER_DSP
00166     void newXfer(char [], INT32, char []);
00167     void addXfer(char [], INT32, char []);
00168 #endif
00169 
00170 void initPrimListStructs(void);
00171 void resetPrimListStructs(UINT32 buffNum);
00172 INT32 readListWrapper(UINT32 buffNum, UINT32 buffIdx, UINT32 *index);
00173 void getPrimIndex(UINT32 buffNum, UINT32 *index);
00174 INT32 execPrim(UINT32 buffNum, UINT32 *listDone);
00175 UINT32 replyAvailable(UINT32 buffNum);
00176 void addListWrapper(UINT32 buffNum, UINT32 buffIdx, UINT32 listIdx);
00177 void initPrimParams(void);
00178 
00179 #if defined(I_AM_MASTER_DSP)
00180 void loadSlaveList(UINT32 slaveIdx, UINT32 listLength, UINT32 *slavePrimList);
00181 void getReplyMsg(UINT32 bfrNum, UINT32 *msgBodyPtr, UINT32 *msgBodyLength,
00182                  UINT32 *listDone);
00183 #endif
00184 UINT32 getIntrDspAck(void);
00185 
00186 INT32 getNewListInfo(struct MSG_LIST *);
00187 
00188 void initializePrimParams(UINT32 primIDList[],
00189                           struct PRIM_PARAMETERS primParams[], UINT32 *listRevision);
00190 
00191 #if defined(I_AM_MASTER_DSP)
00192     //getSlaveTxtBuff.c:
00193     void initGetSlvTxtBuffSM(UINT32 sdsp);
00194     void readSlvTxtBuffAddr(UINT32 sdsp);
00195     INT32 getSlvTxtBuffs(UINT32 sdsp);
00196 
00197     //accessRegister.c:
00198     INT32 writeRegister( UINT32 id, UINT32 width, UINT32 offset, UINT32 value);
00199     INT32 readRegister( UINT32 id, UINT32 width, UINT32 offset, UINT32 *value);
00200     INT32 initRegisterArray(void);
00201 
00202     #ifndef TI_EVM
00203     //void initRrif(void);
00204     #endif
00205 #endif 
00206 
00207 void setRunningBit(void);
00208 
00209 INT32 initialize(void);
00210 INT32 checkMemBound(void);
00211 
00212 /* initEmif.c */
00213   INT32 initEmif(void);
00214   #ifdef I_AM_MASTER_DSP
00215     INT32 initSlvEmif(UINT8 slv);
00216   #endif
00217 
00218 #if defined(I_AM_MASTER_DSP)
00219 INT32 loadCode(void);
00220 void setSlaveConfig(UINT32 sdsp, UINT32 commOnOff, UINT32 slaveType);
00221 UINT32 numSlaves(void);
00222 INT32 slaveIsOn(UINT32 sdsp);
00223 UINT32 slaveIsMemType(UINT32 sdsp);
00224 void initHostListToSlaveSM(UINT32 sdsp);
00225 #endif
00226 
00227 void initSerialPorts(void);
00228 
00229 #ifdef I_AM_MASTER_DSP
00230 void setCalibrationParams(UINT32 numPulses, UINT32 period, UINT32 tCalToL1,
00231                           UINT32 tL1ToL1);
00232 #endif
00233 
00234 void initSendTxtBuffSM(void);
00235 INT32 sendTxtBuffs(void);
00236 INT32 txtBuffSMIdle(UINT32);
00237 
00238 void startHeartbeatTimer(UINT32 period);
00239 TIMER_Handle startUserTimer(UINT32 period);
00240 
00241 //utilities.c:
00242 UINT32 calculateChecksum(UINT32 *baseAddress, INT32 checksumWC);
00243 INT32 setMem(void *dst, UINT32 len, UINT32 val);
00244 INT32 copyMem(void *src, void *dst, UINT32 len);
00245 void  setLedState(UINT8, UINT8);
00246 UINT8 getLedState(UINT8);
00247 #ifdef I_AM_MASTER_DSP
00248   INT32 parseInmem(UINT8 inmem, UINT32 linkFieldHi, UINT32 linkFieldLow,
00249                    UINT32 *linkBufferBase);
00250   INT32 chkSlaves(UINT8, UINT8 *, UINT32, UINT8);
00251 #endif
00252 void waitRegister(UINT32, UINT8, UINT8);
00253 void codeVersion(void);
00254 
00255 //validate.c:
00256 INT32 pass_validate(UINT32 revision, PrimData *primData);
00257 INT32 startTask_validate(UINT32 revision, PrimData *primData);
00258 
00259 //rodConfiguration.c:
00260 UINT32 boardClockInMHz(void);
00261 UINT32 DSPClockInMHz(void);
00262 
00263 //accessCommRegs.c:
00264 void initCommRegs(void);
00265 void setRunning(void);
00266 void initListComRegs(void);
00267 void setBusy(void);
00268 void rstBusy(void);
00269 void setExecuting(void);
00270 void rstExecuting(void);
00271 void setPaused(void);
00272 void rstPaused(void);
00273 void assignOutListRdy(UINT32 outListRdy);
00274 void setDspAck(void);
00275 void rstDspAck(void);
00276 void setTxtBuffNE(UINT32 txtBuffNum);
00277 void rstTxtBuffNE(UINT32 txtBuffNum);
00278 void setTxtBuffProc(UINT32 txtBuffNum);
00279 void rstTxtBuffProc(UINT32 txtBuffNum);
00280 void setListFatal(UINT32 error);
00281 void setListError(UINT32 error, UINT32 count);
00282 void loadPrimListIndex(UINT32 value);
00283 void loadPrimIndex(UINT32 value);
00284 UINT32 getInListRdy(void);
00285 UINT32 getPause(void);
00286 UINT32 getResume(void);
00287 UINT32 getAbort(void);
00288 UINT32 getTxtBuffRR(UINT32 txtBuffNum);
00289 #ifdef I_AM_SLAVE_DSP
00290 UINT32 getSlvID(void);
00291 #endif
00292 
00293 #if defined(I_AM_MASTER_DSP)
00294     void setSlvInListRdy(UINT32 sdsp);
00295     void rstSlvInListRdy(UINT32 sdsp);
00296     void setSlvPause(UINT32 sdsp);
00297     void rstSlvPause(UINT32 sdsp);
00298     void setSlvAbort(UINT32 sdsp);
00299     void rstSlvAbort(UINT32 sdsp);
00300     void toggleSlvResume(UINT32 sdsp);
00301     void setSlvID(UINT32 sdsp);
00302     void setSlvTxtBuffRR(UINT32 sdsp, UINT32 buffer);
00303     void rstSlvTxtBuffRR(UINT32 sdsp, UINT32 buffer);
00304     UINT32 getSlvRunning(UINT32 sdsp);
00305     UINT32 getSlvPaused(UINT32 sdsp);
00306     UINT32 getSlvAck(UINT32 sdsp);
00307     UINT32 getSlvOutListRdy(UINT32 sdsp);
00308     UINT32 getSlvResume(UINT32 sdsp);
00309     UINT32 getSlvTxtBuffNE(UINT32 sdsp, UINT32 buffer);
00310 
00311     void   initSdspRegAddr(void);
00312 
00313     void   setSlvRegBit(UINT32 sdsp, UINT32 regAddress, UINT32 bitNum);
00314     void   rstSlvRegBit(UINT32 sdsp, UINT32 regAddress, UINT32 bitNum);
00315     UINT32 getSlvRegBit(UINT32 sdsp, UINT32 regAddress, UINT32 bitNum);
00316     void   setSlvReg(UINT32 sdsp, UINT32 regAddress, UINT32 val);
00317     UINT32 getSlvReg(UINT32 sdsp, UINT32 regAddress);
00318 #endif
00319 
00320 UINT32 getTimerCnt(void);
00321 #if defined(I_AM_MASTER_DSP)
00322     void yellowBop(void);
00323     INT32 setupRouter(UINT32, UINT32, UINT32, UINT32, UINT32, RouterTrapParams[]);
00324     
00325     
00326     /* serialStreams.c */
00327     void interleave(UINT32 [], UINT32 *[],  UINT32 **, UINT32 *);
00328     void serialOut(UINT8 sp);
00329     //void serialOut(CmdBuff *cb);
00330     void serialStreamOut(UINT32, TransData *, UINT32);
00331     /*void serialStreamOut(unsigned char, UINT32 *[], UINT32 []);*/
00332     
00333     void initCmdBuffer(UINT8 sp);
00334     void initCmdBuff(CmdBuff *cmd, UINT32 *data[], UINT32 *ilBuff, UINT32 size,
00335                           UINT8 sp, UINT8 module[]);
00336     INT32 makeStreamSet(struct CmdList *cmdList0, struct CmdList *cmdList1, UINT8 init,
00337                         UINT8 chip, UINT8 fibre, UINT32 dataLen, UINT32 *data,
00338                         UINT32 **ptr, UINT32 *nSets, UINT8 doInterleave);
00339 #endif
00340 
00341 #if defined(I_AM_SLAVE_DSP)
00342 
00343     void initExtPinGpio(void);
00344 
00345     //eventHandler.c:
00346     INT32  initiateTrapping(void);
00347     void   stopTrapping(void);
00348     INT32  initEvtMgrStructs(void);
00349     INT32 initEventManager(UINT32 numberOfEvents,      UINT32 releaseFrames,
00350                            UINT32 permitBackPressure,  UINT32 dataMode,   UINT32 sLink,
00351                            UINT32 format,              UINT32 trapStray,
00352                            RouterTrapParams traps[2]);
00353     
00354     struct EventData *getNextEvent(void);
00355     void   copyEvent(struct EventData *, UINT32 *);
00356     UINT32 getFramePtr(unsigned char);
00357     unsigned char getNextFrame(struct EventData *, unsigned char,unsigned char);
00358     void processEvent(struct EventData *, unsigned char);
00359 
00360     #if defined(TI_EVM)
00361         //void clearRegisters(void);
00362         //void getRegisters(void);
00363     #endif
00364 
00365     #if defined(REV_E)
00366         void cacheOn(void);
00367         void cacheOff(void);
00368         void flushL2Range(UINT32 *ptr, UINT32 len);
00369     #endif
00370 
00371 #endif
00372 
00373 //task routine files:
00374 #if   (defined(I_AM_MASTER_DSP))
00375     INT32 histoCtrlTask(TaskInput *, TaskOutput *, UINT32);
00376     INT32 mirrorTask   (TaskInput *, TaskOutput *, UINT32);
00377     INT32 trapReqTask  (TaskInput *, TaskOutput *, UINT32);
00378 
00379 #elif (defined(I_AM_SLAVE_DSP))
00380     INT32 histogramTask(TaskInput *, TaskOutput *, UINT32);
00381     INT32 trapTask     (TaskInput *, TaskOutput *, UINT32);
00382     INT32 errorTask    (TaskInput *, TaskOutput *, UINT32);
00383     INT32 occupancyTask(TaskInput *, TaskOutput *, UINT32);
00384     INT32 resynchTask  (TaskInput *, TaskOutput *, UINT32);
00385 #endif
00386 
00387 //taskManager.c:
00388 INT32 initTaskManager(void);
00389 void setTaskState(UINT8 taskType, UINT8 state); 
00390 UINT8 getTaskState(UINT8 taskType); 
00391 TaskOutput *getTaskData(UINT8 taskType);
00392 INT32 insertTask(UINT32, UINT32, UINT32, UINT32, TaskInput *);
00393 INT32 taskOp(UINT8, UINT8, UINT32, UINT32);
00394 INT32 taskManager(void);
00395 INT32 currentTask(UINT8);
00396 
00397 //txtBuffer.c:
00398 INT32 txtNewBufferEntry(struct TXTBUFFER *buffer, char *file, 
00399                         INT32 line, char *txtMessage);
00400 INT32 txtAddBufferEntry(struct TXTBUFFER *buffer, char *file, 
00401                         INT32 line, char *txtMessage);
00402 INT32 txtMarkBufferRead(struct TXTBUFFER *buffer);
00403 
00404 #endif  //Multiple inclusion protection

Generated on Thu Dec 22 20:17:02 2005 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5