static MV_STATUS mvXorInitWinsUnit(MV_U32 unit, MV_UNIT_WIN_INFO *addrWinMap) { MV_U32 winNum; MV_UNIT_WIN_INFO *addrDecWin; MV_U32 winPrioIndex = 0; /* Initiate XOR address decode */ /* First disable all address decode windows */ for (winNum = 0; winNum < XOR_MAX_ADDR_DEC_WIN; winNum++) mvXorTargetWinEnable(unit, winNum, MV_FALSE); /* Go through all windows in user table until table terminator */ for (winNum = 0; ((xorAddrDecPrioTap[winPrioIndex] != TBL_TERM) && (winNum < XOR_MAX_ADDR_DEC_WIN));) { addrDecWin = &addrWinMap[xorAddrDecPrioTap[winPrioIndex]]; if (addrDecWin->enable == MV_TRUE) { if (MV_OK != mvXorTargetWinWrite(unit, winNum, addrDecWin)) { DB(mvOsPrintf("mvXorInit: ERR. mvDmaTargetWinSet failed\n")); return MV_ERROR; } winNum++; } winPrioIndex++; } return MV_OK; }
static MV_STATUS mvXorInitWinsUnit (MV_U32 unit) { MV_U32 winNum; MV_XOR_DEC_WIN addrDecWin; MV_CPU_DEC_WIN cpuAddrDecWin; MV_U32 status; MV_U32 winPrioIndex=0; /* Initiate XOR address decode */ /* First disable all address decode windows */ for(winNum = 0; winNum < XOR_MAX_ADDR_DEC_WIN; winNum++) { mvXorTargetWinEnable(unit,winNum, MV_FALSE); } /* Go through all windows in user table until table terminator */ for (winNum = 0; ((xorAddrDecPrioTap[winPrioIndex] != TBL_TERM) && (winNum < XOR_MAX_ADDR_DEC_WIN));) { /* first get attributes from CPU If */ status = mvCpuIfTargetWinGet(xorAddrDecPrioTap[winPrioIndex], &cpuAddrDecWin); if(MV_NO_SUCH == status) { winPrioIndex++; continue; } if (MV_OK != status) { mvOsPrintf("%s: ERR. mvCpuIfTargetWinGet failed\n", __FUNCTION__); return MV_ERROR; } if (cpuAddrDecWin.enable == MV_TRUE) { addrDecWin.target = xorAddrDecPrioTap[winPrioIndex]; addrDecWin.addrWin.baseLow = cpuAddrDecWin.addrWin.baseLow; addrDecWin.addrWin.baseHigh = cpuAddrDecWin.addrWin.baseHigh; addrDecWin.addrWin.size = cpuAddrDecWin.addrWin.size; addrDecWin.enable = MV_TRUE; if (MV_OK != mvXorTargetWinSet(unit,winNum, &addrDecWin)) { DB(mvOsPrintf("mvXorInit: ERR. mvDmaTargetWinSet failed\n")); return MV_ERROR; } winNum++; } winPrioIndex++; } return MV_OK; }