static int __init rtw_drv_entry(void) { int ret; RT_TRACE(_module_hci_intfs_c_, _drv_notice_, ("+rtw_drv_entry\n")); DBG_8192C("RTW: rtw_drv_entry enter\n"); rtw_suspend_lock_init(); _rtw_mutex_init(&drvpriv.hw_init_mutex); #if defined(CONFIG_CONCURRENT_MODE) || defined(CONFIG_DUALMAC_CONCURRENT) //init global variable _rtw_mutex_init(&drvpriv.h2c_fwcmd_mutex); _rtw_mutex_init(&drvpriv.setch_mutex); _rtw_mutex_init(&drvpriv.setbw_mutex); #endif drvpriv.drv_registered = _TRUE; rtw_wifi_gpio_init(); rtw_wifi_gpio_wlan_ctrl(WLAN_PWDN_ON); ret = spi_register_driver(&rtw_spi_drv); DBG_8192C("RTW: rtw_drv_entry exit %d\n", ret); return 0; }
static int __init rtw_drv_entry(void) { int ret; // DBG_871X(KERN_INFO "+%s", __func__); RT_TRACE(_module_hci_intfs_c_, _drv_notice_, ("+rtw_drv_entry\n")); DBG_871X(KERN_NOTICE DRV_NAME " driver version " DRIVERVERSION "\n"); rtw_suspend_lock_init(); #if defined(CONFIG_CONCURRENT_MODE) || defined(CONFIG_DUALMAC_CONCURRENT) //init global variable _rtw_mutex_init(&drvpriv.h2c_fwcmd_mutex); _rtw_mutex_init(&drvpriv.setch_mutex); _rtw_mutex_init(&drvpriv.setbw_mutex); _rtw_mutex_init(&drvpriv.hw_init_mutex); #endif drvpriv.drv_registered = _TRUE; ret = sdio_register_driver(&drvpriv.r871xs_drv); // DBG_871X(KERN_INFO "-%s: ret=%d", __func__, ret); RT_TRACE(_module_hci_intfs_c_, _drv_notice_, ("-rtw_drv_entry: ret=%d\n", ret)); return ret; }
static int __init rtw_drv_entry(void) { int ret = 0; /*depends on sunxi power control */ #if defined CONFIG_MMC_SUNXI_POWER_CONTROL unsigned int mod_sel = mmc_pm_get_mod_type(); if(mod_sel == SUNXI_SDIO_WIFI_NUM_RTL8189ES) { rtl8189es_sdio_powerup(); sunximmc_rescan_card(SDIOID, 1); printk("[rtl8189es] %s: power up, rescan card.\n", __FUNCTION__); } else { ret = -1; printk("[rtl8189es] %s: mod_sel = %d is incorrect.\n", __FUNCTION__, mod_sel); } #endif if(ret != 0) goto exit; // DBG_871X(KERN_INFO "+%s", __func__); RT_TRACE(_module_hci_intfs_c_, _drv_notice_, ("+rtw_drv_entry\n")); DBG_871X(KERN_NOTICE DRV_NAME " driver version " DRIVERVERSION "\n"); rtw_suspend_lock_init(); #if defined(CONFIG_CONCURRENT_MODE) || defined(CONFIG_DUALMAC_CONCURRENT) //init global variable _rtw_mutex_init(&drvpriv.h2c_fwcmd_mutex); _rtw_mutex_init(&drvpriv.setch_mutex); _rtw_mutex_init(&drvpriv.setbw_mutex); _rtw_mutex_init(&drvpriv.hw_init_mutex); #endif drvpriv.drv_registered = _TRUE; ret = sdio_register_driver(&drvpriv.r871xs_drv); exit: // DBG_871X(KERN_INFO "-%s: ret=%d", __func__, ret); RT_TRACE(_module_hci_intfs_c_, _drv_notice_, ("-rtw_drv_entry: ret=%d\n", ret)); return ret; }
void rtl8192c_sreset_init_value(_adapter *padapter) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); struct sreset_priv *psrtpriv = &pHalData->srestpriv; _rtw_mutex_init(&psrtpriv->silentreset_mutex ); psrtpriv->silent_reset_inprogress = _FALSE; psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS; psrtpriv->last_tx_time =0; psrtpriv->last_tx_complete_time =0; }
void sreset_init_value(_adapter *padapter) { #if defined(DBG_CONFIG_ERROR_DETECT) HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); struct sreset_priv *psrtpriv = &pHalData->srestpriv; _rtw_mutex_init(&psrtpriv->silentreset_mutex); psrtpriv->silent_reset_inprogress = _FALSE; psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS; psrtpriv->last_tx_time =0; psrtpriv->last_tx_complete_time =0; #endif }
int init_io_priv(_adapter *padapter) { void (*set_intf_ops)(struct _io_ops *pops); struct io_priv *piopriv = &padapter->iopriv; struct intf_hdl *pintf = &piopriv->intf; piopriv->padapter = padapter; pintf->padapter = padapter; pintf->pintf_dev = &padapter->dvobjpriv; _rtw_mutex_init(&pintf->io_mutex ); #ifdef CONFIG_SDIO_HCI set_intf_ops = &sdio_set_intf_ops; #endif //END OF CONFIG_SDIO_HCI #ifdef CONFIG_USB_HCI if(padapter->chip_type == RTL8188C_8192C) { #ifdef CONFIG_RTL8192C set_intf_ops = &rtl8192cu_set_intf_ops; #endif } else if(padapter->chip_type == RTL8192D) { #ifdef CONFIG_RTL8192D set_intf_ops = &rtl8192cu_set_intf_ops; #endif } else { set_intf_ops = NULL; } #endif //END OF CONFIG_USB_HCI if(set_intf_ops==NULL) return _FAIL; set_intf_ops(&pintf->io_ops); return _SUCCESS; }
u8 rtw_init_drv_sw(_adapter *padapter) { u8 ret8=_SUCCESS; _func_enter_; RT_TRACE(_module_os_intfs_c_,_drv_info_,("+rtw_init_drv_sw\n")); if ((rtw_init_cmd_priv(&padapter->cmdpriv)) == _FAIL) { RT_TRACE(_module_os_intfs_c_,_drv_err_,("\n Can't init cmd_priv\n")); ret8=_FAIL; goto exit; } padapter->cmdpriv.padapter=padapter; if ((rtw_init_evt_priv(&padapter->evtpriv)) == _FAIL) { RT_TRACE(_module_os_intfs_c_,_drv_err_,("\n Can't init evt_priv\n")); ret8=_FAIL; goto exit; } if (rtw_init_mlme_priv(padapter) == _FAIL) { RT_TRACE(_module_os_intfs_c_,_drv_err_,("\n Can't init mlme_priv\n")); ret8=_FAIL; goto exit; } if(_rtw_init_xmit_priv(&padapter->xmitpriv, padapter) == _FAIL) { DBG_871X("Can't _rtw_init_xmit_priv\n"); ret8=_FAIL; goto exit; } if(_rtw_init_recv_priv(&padapter->recvpriv, padapter) == _FAIL) { DBG_871X("Can't _rtw_init_recv_priv\n"); ret8=_FAIL; goto exit; } _rtw_memset((unsigned char *)&padapter->securitypriv, 0, sizeof (struct security_priv)); _init_timer(&(padapter->securitypriv.tkip_timer), padapter->pnetdev, rtw_use_tkipkey_handler, padapter); if(_rtw_init_sta_priv(&padapter->stapriv) == _FAIL) { DBG_871X("Can't _rtw_init_sta_priv\n"); ret8=_FAIL; goto exit; } padapter->stapriv.padapter = padapter; rtw_init_bcmc_stainfo(padapter); rtw_init_pwrctrl_priv(padapter); //_rtw_memset((u8 *)&padapter->qospriv, 0, sizeof (struct qos_priv));//move to mlme_priv //_set_timer(&padapter->mlmepriv.sitesurveyctrl.sitesurvey_ctrl_timer, 5000); _set_timer(&padapter->mlmepriv.dynamic_chk_timer, 5000); #ifdef CONFIG_MP_INCLUDED mp871xinit(padapter); #endif ret8 = rtw_init_default_value(padapter); init_dm_priv(padapter); rtw_InitSwLeds(padapter); _rtw_mutex_init(&padapter->silentreset_mutex ); #ifdef SILENT_RESET_FOR_SPECIFIC_PLATFOM padapter->silent_reset_inprogress = _FALSE; padapter->Wifi_Error_Status = WIFI_STATUS_SUCCESS; padapter->last_tx_time =0; padapter->last_tx_complete_time =0; #endif exit: RT_TRACE(_module_os_intfs_c_,_drv_info_,("-rtw_init_drv_sw\n")); _func_exit_; return ret8; }
static struct dvobj_priv *gspi_dvobj_init(struct spi_device *spi) { int status = _FAIL; struct dvobj_priv *dvobj = NULL; PGSPI_DATA pgspi; _func_enter_; dvobj = (struct dvobj_priv*)rtw_zmalloc(sizeof(*dvobj)); if (NULL == dvobj) { goto exit; } _rtw_mutex_init(&dvobj->hw_init_mutex); _rtw_mutex_init(&dvobj->h2c_fwcmd_mutex); _rtw_mutex_init(&dvobj->setch_mutex); _rtw_mutex_init(&dvobj->setbw_mutex); dvobj->processing_dev_remove = _FALSE; _rtw_spinlock_init(&dvobj->lock); dvobj->macid[1] = _TRUE; //macid=1 for bc/mc stainfo _rtw_spinlock_init(&dvobj->cam_ctl.lock); //spi init /* This is the only SPI value that we need to set here, the rest * comes from the board-peripherals file */ spi->bits_per_word = 32; spi->max_speed_hz = 48 * 1000 * 1000; //here mode 0 and 3 all ok, //3 can run under 48M clock when SPI_CTL4 bit14 IS_FST set to 1 //0 can run under 24M clock, but can run under 48M when SPI_CTL4 bit14 IS_FST set to 1 and Ctl0_reg[1:0] set to 3. spi->mode = SPI_MODE_3; spi_setup(spi); #if 1 //DBG_8192C("set spi ==========================%d \n", spi_setup(spi)); DBG_871X("%s, mode = %d \n", __func__, spi->mode); DBG_871X("%s, bit_per_word = %d \n", __func__, spi->bits_per_word); DBG_871X("%s, speed = %d \n", __func__, spi->max_speed_hz); DBG_871X("%s, chip_select = %d \n", __func__, spi->chip_select); DBG_871X("%s, controller_data = %d \n", __func__, *(int *)spi->controller_data); DBG_871X("%s, irq= %d \n", __func__, oob_irq); #endif spi_set_drvdata(spi, dvobj); pgspi = &dvobj->intf_data; pgspi->func = spi; if (gspi_init(dvobj) != _SUCCESS) { DBG_871X("%s: initialize GSPI Failed!\n", __FUNCTION__); goto free_dvobj; } rtw_reset_continual_io_error(dvobj); status = _SUCCESS; free_dvobj: if (status != _SUCCESS && dvobj) { spi_set_drvdata(spi, NULL); _rtw_spinlock_free(&dvobj->lock); _rtw_mutex_free(&dvobj->hw_init_mutex); _rtw_mutex_free(&dvobj->h2c_fwcmd_mutex); _rtw_mutex_free(&dvobj->setch_mutex); _rtw_mutex_free(&dvobj->setbw_mutex); _rtw_spinlock_free(&dvobj->cam_ctl.lock); rtw_mfree((u8*)dvobj, sizeof(*dvobj)); dvobj = NULL; } exit: _func_exit_; return dvobj; }