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; }
static int WMT_init(void) { dev_t devID = MKDEV(gWmtMajor, 0); INT32 cdevErr = -1; INT32 ret = -1; 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 #if defined(CONFIG_THERMAL) && defined(CONFIG_THERMAL_OPEN) WMT_INFO_FUNC("wmt_dev_tm_setup\n"); wmt_dev_tm_setup(); mtk_wcn_hif_sdio_update_cb_reg(wmt_dev_tra_sdio_update); #endif 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; } WMT_ERR_FUNC("fail \n"); return -1; }
static int WMT_init(void) { dev_t devID = MKDEV(gWmtMajor, 0); INT32 cdevErr = -1; INT32 ret = -1; #if REMOVE_MK_NODE struct device *wmt_dev = NULL; #endif WMT_INFO_FUNC("WMT Version= %s DATE=%s\n", MTK_WMT_VERSION, MTK_WMT_DATE); WMT_INFO_FUNC("COMBO Driver Version= %s\n", MTK_COMBO_DRIVER_VERSION); /* Prepare a UCHAR device */ /*static allocate chrdev */ gWmtInitDone = 0; init_waitqueue_head((wait_queue_head_t *) &gWmtInitWq); 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 REMOVE_MK_NODE wmt_class = class_create(THIS_MODULE, "stpwmt"); if (IS_ERR(wmt_class)) goto error; wmt_dev = device_create(wmt_class, NULL, devID, NULL, "stpwmt"); if (IS_ERR(wmt_dev)) goto error; #endif #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 #if CFG_WMT_PROC_FOR_AEE wmt_dev_proc_for_aee_setup(); #endif mtk_wcn_hif_sdio_update_cb_reg(wmt_dev_tra_sdio_update); #if CONSYS_WMT_REG_SUSPEND_CB_ENABLE ret = register_pm_notifier(&wmt_pm_notifier_block); if (ret) WMT_ERR_FUNC("WMT failed to register PM notifier failed(%d)\n", ret); #endif gWmtInitDone = 1; wake_up(&gWmtInitWq); #if CONSYS_EARLYSUSPEND_ENABLE osal_sleepable_lock_init(&g_es_lr_lock); register_early_suspend(&wmt_early_suspend_handler); WMT_INFO_FUNC("register_early_suspend finished\n"); #endif WMT_INFO_FUNC("success \n"); return 0; error: wmt_lib_deinit(); #if CFG_WMT_DBG_SUPPORT wmt_dev_dbg_remove(); #endif #if REMOVE_MK_NODE if (!IS_ERR(wmt_dev)) device_destroy(wmt_class, devID); if (!IS_ERR(wmt_class)) { class_destroy(wmt_class); wmt_class = NULL; } #endif if (cdevErr == 0) { cdev_del(&gWmtCdev); } if (ret == 0) { unregister_chrdev_region(devID, WMT_DEV_NUM); gWmtMajor = -1; } WMT_ERR_FUNC("fail\n"); return -1; }