Пример #1
0
/*******************************************************************************
* mvCesaWinGet - Get TDMA target address window.
*
* DESCRIPTION:
*       Get TDMA target address window.
*
* INPUT:
*       winNum - TDMA target address decode window number.
*
* OUTPUT:
*       pDecWin - TDMA target window data structure.
*
* RETURN:
*       MV_ERROR if register parameters are invalid.
*
*******************************************************************************/
MV_STATUS mvCesaWinGet(MV_U32 winNum, MV_DEC_WIN *pDecWin)
{
    MV_DEC_WIN_PARAMS   winParam;
    MV_U32              sizeReg, baseReg;

    /* Parameter checking   */
    if (winNum >= MV_CESA_TDMA_ADDR_DEC_WIN)
    {
        mvOsPrintf("%s : ERR. Invalid winNum %d\n",
                   __FUNCTION__, winNum);
        return MV_NOT_SUPPORTED;
    }

    baseReg = MV_REG_READ( MV_CESA_TDMA_BASE_ADDR_REG(winNum) );
    sizeReg = MV_REG_READ( MV_CESA_TDMA_WIN_CTRL_REG(winNum) );

    /* Check if window is enabled   */
    if(sizeReg & MV_CESA_TDMA_WIN_ENABLE_MASK)
    {
        pDecWin->enable = MV_TRUE;

        /* Extract window parameters from registers */
        winParam.targetId = (sizeReg & MV_CESA_TDMA_WIN_TARGET_MASK) >> MV_CESA_TDMA_WIN_TARGET_OFFSET;
        winParam.attrib   = (sizeReg & MV_CESA_TDMA_WIN_ATTR_MASK) >> MV_CESA_TDMA_WIN_ATTR_OFFSET;
        winParam.size     = (sizeReg & MV_CESA_TDMA_WIN_SIZE_MASK) >> MV_CESA_TDMA_WIN_SIZE_OFFSET;
        winParam.baseAddr = (baseReg & MV_CESA_TDMA_WIN_BASE_MASK);

        /* Translate the decode window parameters to address decode struct */
        if (MV_OK != mvCtrlParamsToAddrDec(&winParam, pDecWin))
        {
            mvOsPrintf("Failed to translate register parameters to CESA address" \
                       " decode window structure\n");
            return MV_ERROR;
        }
    }
Пример #2
0
/*******************************************************************************
* mvCesaWinRead.
*
* DESCRIPTION:
*       Read TDMA target address window.
*
* INPUT:
*       winNum - TDMA target address decode window number.
*
* OUTPUT:
*       pDecWin - TDMA target window data structure.
*
* RETURN:
*	MV_BAD_PARAM if winNum is invalid.
*	MV_ERROR otherwise.
*
*******************************************************************************/
MV_STATUS mvCesaWinRead(MV_U32 winNum, MV_UNIT_WIN_INFO *pDecWin)
{                                                                                                                         
    MV_U32  sizeReg, baseReg;
    MV_U32  size;

    /* Parameter checking   */
    if (winNum >= MV_CESA_TDMA_ADDR_DEC_WIN) {
	mvOsPrintf("%s : ERR. Invalid winNum %d\n",
		__FUNCTION__, winNum);
	return MV_NOT_SUPPORTED;
    }

    baseReg = MV_REG_READ( MV_CESA_TDMA_BASE_ADDR_REG(winNum) );
    sizeReg = MV_REG_READ( MV_CESA_TDMA_WIN_CTRL_REG(winNum) );
 
   /* Check if window is enabled   */
    if(sizeReg & MV_CESA_TDMA_WIN_ENABLE_MASK) 
    {
        pDecWin->enable = MV_TRUE;

        /* Extract window parameters from registers */
        pDecWin->targetId = (sizeReg & MV_CESA_TDMA_WIN_TARGET_MASK) >> MV_CESA_TDMA_WIN_TARGET_OFFSET; 
        pDecWin->attrib   = (sizeReg & MV_CESA_TDMA_WIN_ATTR_MASK) >> MV_CESA_TDMA_WIN_ATTR_OFFSET;

	size = (sizeReg & MV_CESA_TDMA_WIN_SIZE_MASK) >> MV_CESA_TDMA_WIN_SIZE_OFFSET;
        pDecWin->addrWin.size     = (size + 1) * (1 << MV_CESA_TDMA_WIN_SIZE_OFFSET);
        pDecWin->addrWin.baseLow = (baseReg & MV_CESA_TDMA_WIN_BASE_MASK);
 	pDecWin->addrWin.baseHigh = 0;
    }