diff options
Diffstat (limited to 'drivers/net/wireless/rtl8723as/os_dep/linux/gspi_intf.c')
-rwxr-xr-x | drivers/net/wireless/rtl8723as/os_dep/linux/gspi_intf.c | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/drivers/net/wireless/rtl8723as/os_dep/linux/gspi_intf.c b/drivers/net/wireless/rtl8723as/os_dep/linux/gspi_intf.c index af5d6a143f76..aa08f2b1e4eb 100755 --- a/drivers/net/wireless/rtl8723as/os_dep/linux/gspi_intf.c +++ b/drivers/net/wireless/rtl8723as/os_dep/linux/gspi_intf.c @@ -192,7 +192,7 @@ _func_enter_; _rtw_mutex_init(&dvobj->h2c_fwcmd_mutex); _rtw_mutex_init(&dvobj->setch_mutex); _rtw_mutex_init(&dvobj->setbw_mutex); - + dvobj->processing_dev_remove = _FALSE; //spi init /* This is the only SPI value that we need to set here, the rest * comes from the board-peripherals file */ @@ -223,7 +223,7 @@ _func_enter_; DBG_871X("%s: initialize GSPI Failed!\n", __FUNCTION__); goto free_dvobj; } - + rtw_reset_continual_io_error(dvobj); status = _SUCCESS; free_dvobj: @@ -331,7 +331,7 @@ static void gspi_intf_stop(PADAPTER padapter) /* * Do deinit job corresponding to netdev_open() */ -static void rtw_dev_unload(PADAPTER padapter) +void rtw_dev_unload(PADAPTER padapter) { struct net_device *pnetdev = (struct net_device*)padapter->pnetdev; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; @@ -354,7 +354,7 @@ static void rtw_dev_unload(PADAPTER padapter) #endif RT_TRACE(_module_hci_intfs_c_, _drv_notice_, ("@ rtw_dev_unload: stop intf complete!\n")); - if (!padapter->pwrctrlpriv.bInternalAutoSuspend) + if (!adapter_to_pwrctl(padapter)->bInternalAutoSuspend) rtw_stop_drv_threads(padapter); RT_TRACE(_module_hci_intfs_c_, _drv_notice_, ("@ rtw_dev_unload: stop thread complete!\n")); @@ -362,7 +362,7 @@ static void rtw_dev_unload(PADAPTER padapter) if (padapter->bSurpriseRemoved == _FALSE) { #ifdef CONFIG_WOWLAN - if (padapter->pwrctrlpriv.bSupportRemoteWakeup == _TRUE) { + if (adapter_to_pwrctl(padapter)->bSupportRemoteWakeup == _TRUE) { DBG_871X("%s bSupportRemoteWakeup==_TRUE do not run rtw_hal_deinit()\n",__FUNCTION__); } else @@ -528,14 +528,14 @@ static void rtw_gspi_if1_deinit(PADAPTER if1) hostapd_mode_unload(if1); #endif #endif - +/* if(if1->DriverState != DRIVER_DISAPPEAR) { if(pnetdev) { unregister_netdev(pnetdev); //will call netdev_close() rtw_proc_remove_one(pnetdev); } } - +*/ rtw_cancel_all_timer(if1); rtw_dev_unload(if1); @@ -546,7 +546,7 @@ static void rtw_gspi_if1_deinit(PADAPTER if1) #ifdef CONFIG_IOCTL_CFG80211 if (if1->rtw_wdev) { - rtw_wdev_unregister(if1->rtw_wdev); + //rtw_wdev_unregister(if1->rtw_wdev); rtw_wdev_free(if1->rtw_wdev); } #endif @@ -641,7 +641,7 @@ free_dvobj: exit: return status == _SUCCESS?0:-ENODEV; } - +extern void rtw_unregister_netdevs(struct dvobj_priv *dvobj); static int /*__devexit*/ rtw_dev_remove(struct spi_device *spi) { struct dvobj_priv *dvobj = spi_get_drvdata(spi); @@ -651,8 +651,11 @@ _func_enter_; RT_TRACE(_module_hci_intfs_c_, _drv_notice_, ("+rtw_dev_remove\n")); + dvobj->processing_dev_remove = _TRUE; + rtw_unregister_netdevs(dvobj); + #if defined(CONFIG_HAS_EARLYSUSPEND) || defined(CONFIG_ANDROID_POWER) - rtw_unregister_early_suspend(&padapter->pwrctrlpriv); + rtw_unregister_early_suspend(dvobj_to_pwrctl(dvobj)); #endif rtw_pm_set_ips(padapter, IPS_NONE); @@ -683,7 +686,7 @@ static int rtw_gspi_suspend(struct spi_device *spi, pm_message_t mesg) { struct dvobj_priv *dvobj = spi_get_drvdata(spi); PADAPTER padapter = dvobj->if1; - struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct pwrctrl_priv *pwrpriv = dvobj_to_pwrctl(dvobj); struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct net_device *pnetdev = padapter->pnetdev; int ret = 0; @@ -717,7 +720,7 @@ static int rtw_gspi_suspend(struct spi_device *spi, pm_message_t mesg) rtw_netif_stop_queue(pnetdev); } #ifdef CONFIG_WOWLAN - padapter->pwrctrlpriv.bSupportRemoteWakeup=_TRUE; + pwrpriv->bSupportRemoteWakeup=_TRUE; #else //s2. rtw_disassoc_cmd(padapter, 0, _FALSE); @@ -798,7 +801,7 @@ int rtw_resume_process(_adapter *padapter) if (padapter) { pnetdev = padapter->pnetdev; - pwrpriv = &padapter->pwrctrlpriv; + pwrpriv = adapter_to_pwrctl(padapter); } else { ret = -1; goto exit; @@ -858,7 +861,7 @@ static int rtw_gspi_resume(struct spi_device *spi) { struct dvobj_priv *dvobj = spi_get_drvdata(spi); PADAPTER padapter = dvobj->if1; - struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct pwrctrl_priv *pwrpriv = dvobj_to_pwrctl(dvobj); int ret = 0; @@ -923,8 +926,7 @@ static void __exit rtw_drv_halt(void) { RT_TRACE(_module_hci_intfs_c_, _drv_notice_, ("+rtw_drv_halt\n")); DBG_8192C("RTW: rtw_drv_halt enter\n"); - - rtw_suspend_lock_uninit(); + drvpriv.drv_registered = _FALSE; spi_unregister_driver(&rtw_spi_drv); @@ -933,8 +935,11 @@ static void __exit rtw_drv_halt(void) rtw_wifi_gpio_wlan_ctrl(WLAN_PWDN_OFF); rtw_wifi_gpio_deinit(); + rtw_suspend_lock_uninit(); DBG_8192C("RTW: rtw_drv_halt enter\n"); RT_TRACE(_module_hci_intfs_c_, _drv_notice_, ("-rtw_drv_halt\n")); + + rtw_mstat_dump(); } module_init(rtw_drv_entry); module_exit(rtw_drv_halt); |