summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/rtl8723as/os_dep/linux/gspi_intf.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rtl8723as/os_dep/linux/gspi_intf.c')
-rwxr-xr-xdrivers/net/wireless/rtl8723as/os_dep/linux/gspi_intf.c37
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);