Exemplo n.º 1
0
AVL_DVBSx_ErrorCode CPU_Halt(struct AVL_DVBSx_Chip * pAVLChip)
{
	AVL_DVBSx_ErrorCode r;
	AVL_uint16 i= 0;

	r = AVL_DVBSx_IBase_SendRxOP(OP_RX_HALT, pAVLChip );
	printf("%s  r is %d",__FUNCTION__,r);
     if(AVL_DVBSx_EC_OK == r)
     {
		while(i++<20)
		{
			r = AVL_DVBSx_IBase_GetRxOPStatus(pAVLChip);
			if(AVL_DVBSx_EC_OK == r)
			{
				break;
			}
			else
			{
				AVL_DVBSx_IBSP_Delay(10);
			}
		}
     }
	 printf("%s  r is %d",__FUNCTION__,r);
	return (r);
}
Exemplo n.º 2
0
AVL_DVBSx_ErrorCode AVL_DVBSx_IBase_SendRxOP(AVL_uchar ucOpCmd, struct AVL_DVBSx_Chip * pAVLChip )
{
    AVL_DVBSx_ErrorCode r = AVL_DVBSx_EC_OK;
    AVL_uchar pucBuff[2];
    AVL_uint16 uiTemp;
    enum AVL_DVBSx_Sleep_Wake_Status sleep_wake_status;
    const AVL_uint16 uiTimeDelay = 10;
    AVL_uint16 uiMaxRetries = 20;

    r = AVL_DVBSx_IBSP_WaitSemaphore(&(pAVLChip->m_semRx));
    r |= AVL_DVBSx_IBase_GetChipStatus(&sleep_wake_status, pAVLChip);
    if(r == AVL_DVBSx_EC_OK)
    {
        if(sleep_wake_status == AVL_DVBSx_Sleep_Mode)
        {
            if((ucOpCmd != OP_RX_WAKE) && (ucOpCmd != OP_RX_HALT) && (ucOpCmd != OP_RX_SLEEP))
            {
                AVL_DVBSx_IBSP_ReleaseSemaphore(&(pAVLChip->m_semRx));
                r = AVL_DVBSx_EC_InSleepMode;
                return(r);
            }
        }

        do
        {
            r = AVL_DVBSx_IBase_GetRxOPStatus(pAVLChip);
            if( AVL_DVBSx_EC_OK == r )
            {
                break;
            }
            //AVL_DVBSx_IBSP_Delay(uiTimeDelay);
            tuner_mdelay(uiTimeDelay);
            uiMaxRetries--;

        } while(uiMaxRetries != 0);

        if( AVL_DVBSx_EC_OK == r )
        {
            pucBuff[0] = 0;
            pucBuff[1] = ucOpCmd;
            uiTemp = DeChunk16(pucBuff);
            r |= AVL_DVBSx_II2C_Write16(pAVLChip, rx_cmd_addr, uiTemp);
        }
    }
    r |= AVL_DVBSx_IBSP_ReleaseSemaphore(&(pAVLChip->m_semRx));

    return(r);
}