//static //void __exit mtlte_sys_sdio_driver_exit(void) void mtlte_sys_sdio_driver_exit(void) { KAL_RAWPRINT(("[EXIT] =======> lte_sdio_driver_exit\n")); sdio_onoff_module_exit(); KAL_DESTROYMUTEX(<e_dev.thread_kick_lock) ; sdio_unregister_driver(&mtlte_driver); KAL_RAWPRINT(("[EXIT] sdio_unregister_driver OK. \n")); #if EMCS_SDIO_DRVTST mtlte_dev_test_drvdeinit() ; KAL_RAWPRINT(("[EXIT] mtlte_dev_test_drvdeinit OK. \n")); #endif /* denit the expt layer */ mtlte_expt_deinit() ; KAL_RAWPRINT(("[EXIT] mtlte_expt_deinit OK. \n")); /* denit the data flow layer */ mtlte_df_deinit() ; KAL_RAWPRINT(("[EXIT] mtlte_df_deinit OK. \n")); /* denit the hif layer */ mtlte_hif_sdio_deinit() ; KAL_RAWPRINT(("[EXIT] mtlte_hif_sdio_deinit OK. \n")); #ifdef MT_LTE_AUTO_CALIBRATION autok_module_exit(); #endif KAL_RAWPRINT(("[EXIT] <======= lte_sdio_driver_exit\n")); }
int mtlte_df_deinit(void) { KAL_DBGPRINT(KAL, DBG_INFO,("====> %s\n",KAL_FUNC_NAME)) ; #if USE_MULTI_QUE_DISPATCH for (i=0; i<RXQ_NUM ; i++){ destroy_workqueue(lte_df_core.rxq_dispatch_work_queue[i]); } #else destroy_workqueue(lte_df_core.dl_dispatch_work_queue); #endif destroy_workqueue(lte_df_core.dl_reload_work_queue); KAL_DESTROYMUTEX(<e_df_core.dl_pkt_lock) ; KAL_DBGPRINT(KAL, DBG_INFO,("<==== %s\n",KAL_FUNC_NAME)) ; return KAL_SUCCESS ; }