INT32 wmt_dbg_chip_rst(INT32 par1, INT32 par2, INT32 par3) { if (0 == par2) { if (mtk_wcn_stp_is_ready()) { WMT_INFO_FUNC("whole chip reset test\n"); wmt_lib_cmb_rst(WMTRSTSRC_RESET_TEST); } else { WMT_INFO_FUNC("STP not ready , not to launch whole chip reset test\n"); } } else if (1 == par2) { WMT_INFO_FUNC("chip hardware reset test\n"); wmt_lib_hw_rst(); } else { WMT_INFO_FUNC("chip software reset test\n"); wmt_lib_sw_rst(1); } return 0; }
static int BT_open(struct inode *inode, struct file *file) { BT_INFO_FUNC("%s: major %d minor %d (pid %d)\n", __func__, imajor(inode), iminor(inode), current->pid ); #if 1 /* GeorgeKuo: turn on function before check stp ready */ /* turn on BT */ if (MTK_WCN_BOOL_FALSE == mtk_wcn_wmt_func_on(WMTDRV_TYPE_BT)) { BT_WARN_FUNC("WMT turn on BT fail!\n"); return -ENODEV; }else{ retflag = 0; mtk_wcn_wmt_msgcb_reg(WMTDRV_TYPE_BT, bt_cdev_rst_cb); BT_INFO_FUNC("WMT register BT rst cb!\n"); } #endif if (mtk_wcn_stp_is_ready()) { #if 0 /* GeorgeKuo: turn on function before check stp ready */ /* turn on BT */ if (MTK_WCN_BOOL_FALSE == mtk_wcn_wmt_func_on(WMTDRV_TYPE_BT)) { BT_WARN_FUNC("WMT turn on BT fail!\n"); return -ENODEV; } #endif mtk_wcn_stp_set_bluez(0); BT_INFO_FUNC("Now it's in MTK Bluetooth Mode\n"); BT_INFO_FUNC("WMT turn on BT OK!\n"); BT_INFO_FUNC("STP is ready!\n"); platform_load_nvram_data(BT_NVRAM_CUSTOM_NAME, (char *)&g_nvram_btdata, sizeof(g_nvram_btdata)); BT_INFO_FUNC("Read NVRAM : BD address %02x%02x%02x%02x%02x%02x Cap 0x%02x Codec 0x%02x\n", g_nvram_btdata[0], g_nvram_btdata[1], g_nvram_btdata[2], g_nvram_btdata[3], g_nvram_btdata[4], g_nvram_btdata[5], g_nvram_btdata[6], g_nvram_btdata[7]); mtk_wcn_stp_register_event_cb(BT_TASK_INDX, BT_event_cb); BT_INFO_FUNC("mtk_wcn_stp_register_event_cb finish\n"); } else { BT_ERR_FUNC("STP is not ready\n"); /*return error code*/ return -ENODEV; } // init_MUTEX(&wr_mtx); sema_init(&wr_mtx, 1); // init_MUTEX(&rd_mtx); sema_init(&rd_mtx, 1); BT_INFO_FUNC("finish\n"); return 0; }
static int GPS_open(struct inode *inode, struct file *file) { printk("%s: major %d minor %d (pid %d)\n", __func__, imajor(inode), iminor(inode), current->pid ); if(retflag == 1) { GPS_WARN_FUNC("whole chip resetting...\n"); return -EPERM; } #if 1 /* GeorgeKuo: turn on function before check stp ready */ /* turn on BT */ if (MTK_WCN_BOOL_FALSE == mtk_wcn_wmt_func_on(WMTDRV_TYPE_GPS)) { GPS_WARN_FUNC("WMT turn on GPS fail!\n"); return -ENODEV; } else { mtk_wcn_wmt_msgcb_reg(WMTDRV_TYPE_GPS, gps_cdev_rst_cb); GPS_INFO_FUNC("WMT turn on GPS OK!\n"); } #endif if (mtk_wcn_stp_is_ready()) { #if 0 if (MTK_WCN_BOOL_FALSE == mtk_wcn_wmt_func_on(WMTDRV_TYPE_GPS)) { GPS_WARN_FUNC("WMT turn on GPS fail!\n"); return -ENODEV; } GPS_INFO_FUNC("WMT turn on GPS OK!\n"); #endif mtk_wcn_stp_register_event_cb(GPS_TASK_INDX, GPS_event_cb); } else { GPS_ERR_FUNC("STP is not ready, Cannot open GPS Devices\n\r"); /*return error code*/ return -ENODEV; } //init_MUTEX(&wr_mtx); sema_init(&wr_mtx, 1); //init_MUTEX(&rd_mtx); sema_init(&rd_mtx, 1); return 0; }
INT32 wmt_idc_msg_from_lte_handing(ipc_ilm_t *ilm) { MTK_WCN_BOOL bRet; if (NULL == ilm) { WMT_ERR_FUNC("NULL pointer\n"); return -1; } if (mtk_wcn_stp_is_ready()) { bRet = wmt_lib_handle_idc_msg(ilm); if (MTK_WCN_BOOL_FALSE == bRet) { WMT_ERR_FUNC("wmt handing idc msg fail\n"); return -2; } wmt_lib_notify_stp_sleep(); } else { WMT_INFO_FUNC("Received LTE msg,but STP is not ready,drop it!\n"); } return 0; }
static int BT_open(struct inode *inode, struct file *file) { BT_INFO_FUNC("%s: major %d minor %d pid %d\n", __func__, imajor(inode), iminor(inode), current->pid); if (current->pid == 1) return 0; /* Turn on BT */ if (MTK_WCN_BOOL_FALSE == mtk_wcn_wmt_func_on(WMTDRV_TYPE_BT)) { BT_WARN_FUNC("WMT turn on BT fail!\n"); return -ENODEV; } BT_INFO_FUNC("WMT turn on BT OK!\n"); rstflag = 0; if (mtk_wcn_stp_is_ready()) { mtk_wcn_stp_set_bluez(0); BT_INFO_FUNC("Now it's in MTK Bluetooth Mode\n"); BT_INFO_FUNC("STP is ready!\n"); BT_DBG_FUNC("Register BT event callback!\n"); mtk_wcn_stp_register_event_cb(BT_TASK_INDX, BT_event_cb); } else { BT_ERR_FUNC("STP is not ready\n"); mtk_wcn_wmt_func_off(WMTDRV_TYPE_BT); return -ENODEV; } BT_DBG_FUNC("Register BT reset callback!\n"); mtk_wcn_wmt_msgcb_reg(WMTDRV_TYPE_BT, bt_cdev_rst_cb); /* init_MUTEX(&wr_mtx); */ sema_init(&wr_mtx, 1); /* init_MUTEX(&rd_mtx); */ sema_init(&rd_mtx, 1); BT_INFO_FUNC("%s: finish\n", __func__); return 0; }