/*******************************************************************************
* mvCntmrCtrlGet -
*
* DESCRIPTION:
*  	Get the Control value of a given counter/timer
*
* INPUT:
*       countNum - counter number
*		pCtrl - pointer to MV_CNTMR_CTRL structure
*
* OUTPUT:
*       Counter\Timer control value
*
* RETURN:
*       MV_BAD_PARAM on bad parameters , MV_ERROR on error ,MV_OK on sucess
*******************************************************************************/
MV_STATUS mvCntmrCtrlGet(MV_U32 countNum, MV_CNTMR_CTRL *pCtrl)
{
	MV_U32 cntmrCtrl;

	if (countNum >= MV_CNTMR_MAX_COUNTER) {
		DB(mvOsPrintf(("mvCntmrCtrlGet: Err. illegal counter number \n")));
		return MV_BAD_PARAM;;
	}

	/* read control register */
	cntmrCtrl = MV_REG_READ(CNTMR_CTRL_REG(countNum));

	/* enable counter\timer */
	if (cntmrCtrl & (CTCR_ARM_TIMER_EN(countNum)))
		pCtrl->enable = MV_TRUE;
	else
		pCtrl->enable = MV_FALSE;

	/* counter mode */
	if (cntmrCtrl & (CTCR_ARM_TIMER_AUTO_EN(countNum)))
		pCtrl->autoEnable = MV_TRUE;
	else
		pCtrl->autoEnable = MV_FALSE;
	if (cntmrHalData.ctrlFamily==MV_78XX0)
	{
		pCtrl->Ratio = (cntmrCtrl & (CTCR_ARM_TIMER_RATIO_MASK(countNum))) / (1 << (CTCR_ARM_TIMER_RATIO_OFFS(countNum)));
		pCtrl->enable_25Mhz = (cntmrCtrl & CTCR_ARM_TIMER_25MhzFRQ_MASK(countNum)) ? MV_TRUE : MV_FALSE;
	}
	return MV_OK;
}
Example #2
0
/*******************************************************************************
* mvCntmrCtrlSet -
*
* DESCRIPTION:
*  	Set the Control to a given counter/timer
*
* INPUT:
*       countNum - counter number
*		pCtrl - pointer to MV_CNTMR_CTRL structure
*
* OUTPUT:
*       None.
*
* RETURN:
*       MV_BAD_PARAM on bad parameters , MV_ERROR on error ,MV_OK on sucess
*******************************************************************************/
MV_STATUS mvCntmrCtrlSet(MV_U32 countNum, MV_CNTMR_CTRL *pCtrl)
{
	MV_U32 cntmrCtrl;

	if (countNum >= MV_CNTMR_MAX_COUNTER) {
		DB(mvOsPrintf(("mvCntmrCtrlSet: Err. illegal counter number \n")));
		return MV_BAD_PARAM;;
	}

	/* read control register */
	cntmrCtrl = MV_REG_READ(CNTMR_CTRL_REG(countNum));
	cntmrCtrl &= ~((CTCR_ARM_TIMER_EN_MASK(countNum)) | (CTCR_ARM_TIMER_AUTO_MASK(countNum)));

	if (pCtrl->enable)	/* enable counter\timer */
		cntmrCtrl |= (CTCR_ARM_TIMER_EN(countNum));

	if (pCtrl->autoEnable)	/* Auto mode */
		cntmrCtrl |= (CTCR_ARM_TIMER_AUTO_EN(countNum));

#ifndef MV88F78X60_Z1
	cntmrCtrl &= ~((CTCR_ARM_TIMER_RATIO_MASK(countNum)) | (CTCR_ARM_TIMER_25MhzFRQ_MASK(countNum)));

	cntmrCtrl |= (pCtrl->Ratio & 0x7) << (CTCR_ARM_TIMER_RATIO_OFFS(countNum));

	if (pCtrl->enable_25Mhz)	/* 25Mhz enable */
		cntmrCtrl |= (CTCR_ARM_TIMER_25MhzFRQ_EN(countNum));

#endif


	MV_REG_WRITE(CNTMR_CTRL_REG(countNum), cntmrCtrl);

	return MV_OK;

}
/*******************************************************************************
* mvCntmrFrqGet - get Counter/Timer Frequency.
*
* DESCRIPTION:
*       This routine retuen timer clock Frequency
*
* INPUT:
*       cntmrNum - Counter/Timer number.
*
* OUTPUT:
*       timer clock Frequency.
*
* RETURN:
*       ERROR - In case of invalid parameters.
*
*******************************************************************************/
MV_U32 mvCntmrFrqGet(MV_U32 cntmrNum)
{
	if (cntmrHalData.ctrlFamily==MV_78XX0)
	{
		if (INVALID_CNTMR(cntmrNum))
			return MV_ERROR;

		MV_U32 cntmrCtrl;
		cntmrCtrl = MV_REG_READ(CNTMR_CTRL_REG(cntmrNum));
		if (cntmrCtrl & CTCR_ARM_TIMER_25MhzFRQ_MASK(cntmrNum))
			return MV_BOARD_REFCLK_25MHZ;
	}
	return mvCpuL2ClkGet();
}
Example #4
0
/*******************************************************************************
* mvCntmrFrqGet - get Counter/Timer Frequency.
*
* DESCRIPTION:
*       This routine retuen timer clock Frequency
*
* INPUT:
*       cntmrNum - Counter/Timer number.
*
* OUTPUT:
*       timer clock Frequency.
*
* RETURN:
*       ERROR - In case of invalid parameters.
*
*******************************************************************************/
MV_U32 mvCntmrFrqGet(MV_U32 cntmrNum)
{
#ifndef MV88F78X60_Z1
                if (INVALID_CNTMR(cntmrNum))
                                return MV_ERROR;
                {
                                MV_U32 cntmrCtrl;
                                cntmrCtrl = MV_REG_READ(CNTMR_CTRL_REG(cntmrNum));


                                if (cntmrCtrl & CTCR_ARM_TIMER_25MhzFRQ_MASK(cntmrNum))
                                                return MV_BOARD_REFCLK_25MHZ;
                }
#endif
                return mvCpuL2ClkGet();
}