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