static void WMT_exit (void) { dev_t dev = MKDEV(gWmtMajor, 0); #if defined(CONFIG_THERMAL) && defined(CONFIG_THERMAL_OPEN) wmt_tm_deinit_rt(); wmt_tm_deinit(); #endif wmt_lib_deinit(); #if CFG_WMT_DBG_SUPPORT wmt_dev_dbg_remove(); #endif cdev_del(&gWmtCdev); unregister_chrdev_region(dev, WMT_DEV_NUM); gWmtMajor = -1; #ifdef MTK_WMT_WAKELOCK_SUPPORT WMT_WARN_FUNC("destroy func_on_off_wake_lock\n"); wake_lock_destroy(&func_on_off_wake_lock); #endif stp_drv_exit(); WMT_INFO_FUNC("done\n"); }
static void WMT_exit (void) { dev_t dev = MKDEV(gWmtMajor, 0); wmt_lib_deinit(); #if CFG_WMT_DBG_SUPPORT wmt_dev_dbg_remove(); #endif cdev_del(&gWmtCdev); unregister_chrdev_region(dev, WMT_DEV_NUM); gWmtMajor = -1; stp_drv_exit(); WMT_INFO_FUNC("done\n"); }
static void WMT_exit(void) { dev_t dev = MKDEV(gWmtMajor, 0); #if CONSYS_EARLYSUSPEND_ENABLE unregister_early_suspend(&wmt_early_suspend_handler); osal_sleepable_lock_deinit(&g_es_lr_lock); WMT_INFO_FUNC("unregister_early_suspend finished\n"); #endif #if CONSYS_WMT_REG_SUSPEND_CB_ENABLE unregister_pm_notifier(&wmt_pm_notifier_block); #endif wmt_lib_deinit(); #if CFG_WMT_DBG_SUPPORT wmt_dev_dbg_remove(); #endif #if CFG_WMT_PROC_FOR_AEE wmt_dev_proc_for_aee_remove(); #endif cdev_del(&gWmtCdev); unregister_chrdev_region(dev, WMT_DEV_NUM); gWmtMajor = -1; #if REMOVE_MK_NODE device_destroy(wmt_class, MKDEV(gWmtMajor, 0)); class_destroy(wmt_class); wmt_class = NULL; #endif #ifdef MTK_WMT_WAKELOCK_SUPPORT WMT_WARN_FUNC("destroy func_on_off_wake_lock\n"); wake_lock_destroy(&func_on_off_wake_lock); #endif stp_drv_exit(); WMT_INFO_FUNC("done\n"); }
static int WMT_init(void) { dev_t devID = MKDEV(gWmtMajor, 0); INT32 cdevErr = -1; INT32 ret = -1; /* init start */ gWmtInitDone = 0; init_waitqueue_head((wait_queue_head_t *)&gWmtInitWq); WMT_INFO_FUNC("WMT Version= %s DATE=%s\n" , MTK_WMT_VERSION, MTK_WMT_DATE); /* Prepare a UCHAR device */ /*static allocate chrdev*/ stp_drv_init(); ret = register_chrdev_region(devID, WMT_DEV_NUM, WMT_DRIVER_NAME); if (ret) { WMT_ERR_FUNC("fail to register chrdev\n"); return ret; } cdev_init(&gWmtCdev, &gWmtFops); gWmtCdev.owner = THIS_MODULE; cdevErr = cdev_add(&gWmtCdev, devID, WMT_DEV_NUM); if (cdevErr) { WMT_ERR_FUNC("cdev_add() fails (%d) \n", cdevErr); goto error; } WMT_INFO_FUNC("driver(major %d) installed \n", gWmtMajor); #if 0 pWmtDevCtx = wmt_drv_create(); if (!pWmtDevCtx) { WMT_ERR_FUNC("wmt_drv_create() fails \n"); goto error; } ret = wmt_drv_init(pWmtDevCtx); if (ret) { WMT_ERR_FUNC("wmt_drv_init() fails (%d) \n", ret); goto error; } WMT_INFO_FUNC("stp_btmcb_reg\n"); wmt_cdev_btmcb_reg(); ret = wmt_drv_start(pWmtDevCtx); if (ret) { WMT_ERR_FUNC("wmt_drv_start() fails (%d) \n", ret); goto error; } #endif ret = wmt_lib_init(); if (ret) { WMT_ERR_FUNC("wmt_lib_init() fails (%d) \n", ret); goto error; } #if CFG_WMT_DBG_SUPPORT wmt_dev_dbg_setup(); #endif /* init done, wake up waiting process */ gWmtInitDone = 1; wake_up(&gWmtInitWq); WMT_INFO_FUNC("success \n"); return 0; error: wmt_lib_deinit(); #if CFG_WMT_DBG_SUPPORT wmt_dev_dbg_remove(); #endif if (cdevErr == 0) { cdev_del(&gWmtCdev); } if (ret == 0) { unregister_chrdev_region(devID, WMT_DEV_NUM); gWmtMajor = -1; } stp_drv_exit(); WMT_ERR_FUNC("fail \n"); return -1; }