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); }
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); }