static int wmt_dev_dbg_write(struct file *file, const char *buffer, unsigned long count, void *data){ CHAR buf[256]; CHAR *pBuf; ULONG len = count; INT32 x = 0,y = 0, z=0; CHAR *pToken = NULL; CHAR *pDelimiter = " \t"; WMT_INFO_FUNC("write parameter len = %d\n\r", (int)len); if(len >= osal_sizeof(buf)){ WMT_ERR_FUNC("input handling fail!\n"); len = osal_sizeof(buf) - 1; return -1; } if(copy_from_user(buf, buffer, len)){ return -EFAULT; } buf[len] = '\0'; WMT_INFO_FUNC("write parameter data = %s\n\r", buf); pBuf = buf; pToken = osal_strsep(&pBuf, pDelimiter); x = NULL != pToken ? osal_strtol(pToken, NULL, 16) : 0; pToken = osal_strsep(&pBuf, "\t\n "); if(pToken != NULL){ y = osal_strtol(pToken, NULL, 16); WMT_INFO_FUNC("y = 0x%08x \n\r", y); } else { y = 3000; /*efuse, register read write default value*/ if(0x11 == x || 0x12 == x || 0x13 == x) { y = 0x80000000; } } pToken = osal_strsep(&pBuf, "\t\n "); if(pToken != NULL){ z = osal_strtol(pToken, NULL, 16); } else { z = 10; /*efuse, register read write default value*/ if(0x11 == x || 0x12 == x || 0x13 == x) { z = 0xffffffff; } } WMT_INFO_FUNC("x(0x%08x), y(0x%08x), z(0x%08x)\n\r", x, y, z); if (osal_array_size(wmt_dev_dbg_func) > x && NULL != wmt_dev_dbg_func[x]) { (*wmt_dev_dbg_func[x])(x, y, z); } else { WMT_WARN_FUNC("no handler defined for command id(0x%08x)\n\r", x); } return len; }
static INT32 _stp_btm_proc (void *pvData) { MTKSTP_BTM_T *stp_btm = (MTKSTP_BTM_T *)pvData; P_OSAL_OP pOp; INT32 id; INT32 result; if (!stp_btm) { STP_BTM_WARN_FUNC("!stp_btm \n"); return -1; } for (;;) { pOp = NULL; osal_wait_for_event(&stp_btm->STPd_event, _stp_btm_wait_for_msg, (void *)stp_btm ); if (osal_thread_should_stop(&stp_btm->BTMd)) { STP_BTM_INFO_FUNC("should stop now... \n"); // TODO: clean up active opQ break; } /* get Op from activeQ */ pOp = _stp_btm_get_op(stp_btm, &stp_btm->rActiveOpQ); if (!pOp) { STP_BTM_WARN_FUNC("get_lxop activeQ fail\n"); continue; } id = osal_op_get_id(pOp); STP_BTM_DBG_FUNC("======> lxop_get_opid = %d, %s, remaining count = *%d*\n", id, (id >= osal_array_size(g_btm_op_name))?("???"):(g_btm_op_name[id]), RB_COUNT(&stp_btm->rActiveOpQ)); if (id >= STP_OPID_BTM_NUM) { STP_BTM_WARN_FUNC("abnormal opid id: 0x%x \n", id); result = -1; goto handler_done; } result = _stp_btm_handler(stp_btm, &pOp->op); handler_done: if (result) { STP_BTM_WARN_FUNC("opid id(0x%x)(%s) error(%d)\n", id, (id >= osal_array_size(g_btm_op_name))?("???"):(g_btm_op_name[id]), result); } if (osal_op_is_wait_for_signal(pOp)) { osal_op_raise_signal(pOp, result); } else { /* put Op back to freeQ */ _stp_btm_put_op(stp_btm, &stp_btm->rFreeOpQ, pOp); } if (STP_OPID_BTM_EXIT == id) { break; } else if (STP_OPID_BTM_RST == id) { /* prevent multi reset case */ stp_btm_reset_btm_wq(stp_btm); mtk_wcn_stp_coredump_start_ctrl(0); } } STP_BTM_INFO_FUNC("exits \n"); return 0; };