static INT32 wmt_ctrl_evt_err_trg_assert(P_WMT_CTRL_DATA pWmtCtrlData)
{
	INT32 iRet = -1;
	
	ENUM_WMTDRV_TYPE_T drv_type;
	UINT32 reason = 0;

	drv_type = pWmtCtrlData->au4CtrlData[0];
	reason = pWmtCtrlData->au4CtrlData[1];
	WMT_INFO_FUNC("wmt-ctrl:drv_type(%d),reason(%d)\n",drv_type,reason);
	
	if(0 == mtk_wcn_stp_get_wmt_evt_err_trg_assert())
	{
		mtk_wcn_stp_set_wmt_evt_err_trg_assert(1);
		wmt_lib_set_host_assert_info(drv_type,reason,1);
		
		iRet = mtk_wcn_stp_wmt_evt_err_trg_assert();
		if(iRet)
		{
			mtk_wcn_stp_set_wmt_evt_err_trg_assert(0);
		}
	}else
	{
		WMT_INFO_FUNC("do trigger assert & chip reset in stp noack \n");
	}
	return 0;
}
Example #2
0
MTK_WCN_BOOL mtk_wcn_wmt_assert (
	ENUM_WMTDRV_TYPE_T type,
    UINT32 reason
    )
#endif    
{
    P_OSAL_OP pOp = NULL;
    MTK_WCN_BOOL bRet = MTK_WCN_BOOL_FALSE;
    P_OSAL_SIGNAL pSignal;


	pOp  = wmt_lib_get_free_op();
    if (!pOp ) {
        WMT_WARN_FUNC("get_free_lxop fail\n");
        return MTK_WCN_BOOL_FALSE;
    }
	
	wmt_lib_set_host_assert_info(type,reason,1);

    pSignal = &pOp ->signal;

    pOp ->op.opId = WMT_OPID_TRIGGER_STP_ASSERT;
    
    pSignal->timeoutValue= MAX_EACH_WMT_CMD;
    /*this test command should be run with usb cable connected, so no host awake is needed*/
    //wmt_lib_host_awake_get();
    pOp->op.au4OpData[0] = 0;
    
    /*wake up chip first*/
    if (DISABLE_PSM_MONITOR()) {
        WMT_ERR_FUNC("wake up failed\n");
        wmt_lib_put_op_to_free_queue(pOp);
        return MTK_WCN_BOOL_FALSE;
    }
    
    bRet = wmt_lib_put_act_op(pOp);
    ENABLE_PSM_MONITOR();
    
    //wmt_lib_host_awake_put();
    WMT_INFO_FUNC("STP_ASSERT, opid (%d), par(%d, %d), ret(%d), result(%s)\n", \
    pOp->op.opId, \
    pOp->op.au4OpData[0], \
    pOp->op.au4OpData[1], \
    bRet, \
    MTK_WCN_BOOL_FALSE == bRet ? "failed" : "succeed"\
    );
	/*If trigger stp assert succeed, just return; trigger WMT level assert if failed*/
	if (MTK_WCN_BOOL_TRUE == bRet)
		return bRet;
	
    pOp  = wmt_lib_get_free_op();
    if (!pOp ) {
        WMT_WARN_FUNC("get_free_lxop fail\n");
        return MTK_WCN_BOOL_FALSE;
    }
	
	wmt_lib_set_host_assert_info(type,reason,1);

    pSignal = &pOp ->signal;

    pOp ->op.opId = WMT_OPID_CMD_TEST;
    
    pSignal->timeoutValue= MAX_EACH_WMT_CMD;
    /*this test command should be run with usb cable connected, so no host awake is needed*/
    //wmt_lib_host_awake_get();
    pOp->op.au4OpData[0] = 0;
    
    /*wake up chip first*/
    if (DISABLE_PSM_MONITOR()) {
        WMT_ERR_FUNC("wake up failed\n");
        wmt_lib_put_op_to_free_queue(pOp);
        return MTK_WCN_BOOL_FALSE;
    }
    
    bRet = wmt_lib_put_act_op(pOp);
    ENABLE_PSM_MONITOR();
    
    //wmt_lib_host_awake_put();
    WMT_INFO_FUNC("CMD_TEST, opid (%d), par(%d, %d), ret(%d), result(%s)\n", \
    pOp->op.opId, \
    pOp->op.au4OpData[0], \
    pOp->op.au4OpData[1], \
    bRet, \
    MTK_WCN_BOOL_FALSE == bRet ? "failed" : "succeed"\
    );
    
    return bRet;
}