Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- srio_err_t srio_mwrite(uint srioID, uint address, uint length, uchar hopCount, void* buffer) {
- srio_err_t result;
- gSRIOMWriteXfer.idSize = 1;
- gSRIOMWriteXfer.intrRequest = 0;
- gSRIOMWriteXfer.outPortID = 0;
- gSRIOMWriteXfer.priority = 2;
- gSRIOMWriteXfer.xambs = 0;
- gSRIOMWriteXfer.ttype = 1;
- gSRIOMWriteXfer.ftype = 8;
- gSRIOMWriteXfer.doorbellInfo = 0;
- gSRIOMWriteXfer.priority = 0;
- gSRIOMWriteXfer.rapidIOMSB = 0;
- gSRIOMWriteXfer.rapidIOLSB = address;
- gSRIOMWriteXfer.dspAddress = ((uint) buffer);
- gSRIOMWriteXfer.bytecount = length;
- gSRIOMWriteXfer.dstID = srioID;
- gSRIOMWriteXfer.hopCount = hopCount;
- gSRIOMWriteXfer.priority = 0;
- result = srio_xfer(&gSRIOMWriteXfer);
- return result;
- }
- srio_err_t srio_mread(uint srioID, uint address, uint length, uchar hopCount, void* buffer) {
- srio_err_t result;
- gSRIOMReadXfer.idSize = 1;
- gSRIOMReadXfer.intrRequest = 0;
- gSRIOMReadXfer.outPortID = 0;
- gSRIOMReadXfer.priority = 2;
- gSRIOMReadXfer.xambs = 0;
- gSRIOMReadXfer.ttype = 0;
- gSRIOMReadXfer.ftype = 8;
- gSRIOMReadXfer.doorbellInfo = 0;
- gSRIOMReadXfer.priority = 0;
- gSRIOMReadXfer.rapidIOMSB = 0;
- gSRIOMReadXfer.rapidIOLSB = address;
- gSRIOMReadXfer.dspAddress = ((uint) buffer);
- gSRIOMReadXfer.bytecount = length;
- gSRIOMReadXfer.dstID = srioID;
- gSRIOMReadXfer.hopCount = hopCount;
- gSRIOMReadXfer.priority = 0;
- result = srio_xfer(&gSRIOMReadXfer);
- return result;
- }
- bool _srio_lsu_busy(uint8* context, uint8* transId) {
- long long timeout = 0;
- uint busy;
- do {
- if(timeout++ > LSU_BUSY_TIMEOUT) {
- return true;
- }
- busy = SRIO_REGS->LSU_CMD[lsuNum].RIO_LSU_REG6;
- } while ((busy & ((1 << 31) | (1 << 30))) != 0);
- CSL_SRIO_GetLSUContextTransaction(sjlHSrio, lsuNum, context, transId);
- return false;
- }
- #define _srio_lsu_load(x) CSL_SRIO_SetLSUTransfer(sjlHSrio, 0, x)
- srio_err_t srio_xfer(SRIO_LSU_TRANSFER* srio_xfer) {
- uint8 context, contextCheck, transId, compCode;
- if(_srio_lsu_busy(&context, &transId) == true) {
- lsuCompletionCode = LSU_RESV_SJL_INVALID;
- return kSRIOErrorBusy;
- }
- /* if we get here that means a shaddow reg is availiable */
- _srio_lsu_load(srio_xfer);
- do {
- CSL_SRIO_GetLSUCompletionCode(sjlHSrio, lsuNum, transId, &compCode, &contextCheck);
- } while (context != contextCheck);
- lsuCompletionCode = (LsuCompCode)compCode;
- if (lsuCompletionCode == LSU_TRANS_NO_ERR) {
- return kSRIONoError;
- }
- return lsuCompletionCode;
- }
Advertisement
Add Comment
Please, Sign In to add comment