SuperIC社区_

标题: T2中使用1236c+mxl603或者608时在有信号强度界面待机死机的问题 [打印本页]

作者: icezhou    时间: 2016-6-1 17:09
标题: T2中使用1236c+mxl603或者608时在有信号强度界面待机死机的问题
T2中使用1236c+mxl603或者608时在有信号强度界面待机死机的问题。
这个问题是由于MSD1236C中互斥锁没释放导致的死机,在获取信号强度的函数MDrv_Demod_GetPWR中603的分支里面如果获取MxLWare603_API_ReqTunerRxPower失败这个时候只是将IIC Bypass关闭,上面的加的互斥锁没有释放导致死机。
    if (MsOS_ObtainMutex(pMSB1236C->s32_MSB1236C_Mutex, COFDMDMD_MUTEX_TIMEOUT) == FALSE)
    {
        PRINTE(("MDrv_Demod_GetPWR:Obtain mutex failed !!!\n"));
        return FALSE;
    }
    else
    {
        *ps32Signal = 0;
        if (E_DEMOD_LOCK == MSB1236C_DTV_DVB_T_GetLockStatus())
        {
#if(FRONTEND_TUNER_TYPE == TUNER_MXL603)
            float fSignal;
            MSB1236C_IIC_Bypass_Mode(TRUE);
            if (MXL_SUCCESS != MxLWare603_API_ReqTunerRxPower(MXL603_I2C_ADDR, &fSignal))
            {
                PRINTE(("MxLWare603_API_ReqTunerRxPower failed !!!\n"));
                MSB1236C_IIC_Bypass_Mode(FALSE);
                return FALSE;
            }
            MSB1236C_IIC_Bypass_Mode(FALSE);
            *ps32Signal = (MS_U32)MSB1236C_DTV_GetSignalStrengthWithRFPower(fSignal);
#else
            *ps32Signal  = (MS_U32)MSB1236C_DTV_GetSignalStrength();
#endif

应该如下修改,
            if (MXL_SUCCESS != MxLWare603_API_ReqTunerRxPower(MXL603_I2C_ADDR, &fSignal))
            {
                PRINTE(("MxLWare603_API_ReqTunerRxPower failed !!!\n"));
                MSB1236C_IIC_Bypass_Mode(FALSE);
    MsOS_ReleaseMutex(pMSB1236C->s32_MSB1236C_Mutex);
                return FALSE;
            }



作者: bean.yang    时间: 2016-6-1 17:10
公版缺陷




欢迎光临 SuperIC社区_ (/) Powered by Discuz! X3.3