diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/snoc.c')
| -rw-r--r-- | drivers/net/wireless/ath/ath10k/snoc.c | 29 | 
1 files changed, 20 insertions, 9 deletions
| diff --git a/drivers/net/wireless/ath/ath10k/snoc.c b/drivers/net/wireless/ath/ath10k/snoc.c index d66593f0950f..ea00fbb15601 100644 --- a/drivers/net/wireless/ath/ath10k/snoc.c +++ b/drivers/net/wireless/ath/ath10k/snoc.c @@ -1759,17 +1759,11 @@ err_core_destroy:  	return ret;  } -static int ath10k_snoc_remove(struct platform_device *pdev) +static int ath10k_snoc_free_resources(struct ath10k *ar)  { -	struct ath10k *ar = platform_get_drvdata(pdev);  	struct ath10k_snoc *ar_snoc = ath10k_snoc_priv(ar); -	ath10k_dbg(ar, ATH10K_DBG_SNOC, "snoc remove\n"); - -	reinit_completion(&ar->driver_recovery); - -	if (test_bit(ATH10K_SNOC_FLAG_RECOVERY, &ar_snoc->flags)) -		wait_for_completion_timeout(&ar->driver_recovery, 3 * HZ); +	ath10k_dbg(ar, ATH10K_DBG_SNOC, "snoc free resources\n");  	set_bit(ATH10K_SNOC_FLAG_UNREGISTERING, &ar_snoc->flags); @@ -1783,12 +1777,29 @@ static int ath10k_snoc_remove(struct platform_device *pdev)  	return 0;  } +static int ath10k_snoc_remove(struct platform_device *pdev) +{ +	struct ath10k *ar = platform_get_drvdata(pdev); +	struct ath10k_snoc *ar_snoc = ath10k_snoc_priv(ar); + +	ath10k_dbg(ar, ATH10K_DBG_SNOC, "snoc remove\n"); + +	reinit_completion(&ar->driver_recovery); + +	if (test_bit(ATH10K_SNOC_FLAG_RECOVERY, &ar_snoc->flags)) +		wait_for_completion_timeout(&ar->driver_recovery, 3 * HZ); + +	ath10k_snoc_free_resources(ar); + +	return 0; +} +  static void ath10k_snoc_shutdown(struct platform_device *pdev)  {  	struct ath10k *ar = platform_get_drvdata(pdev);  	ath10k_dbg(ar, ATH10K_DBG_SNOC, "snoc shutdown\n"); -	ath10k_snoc_remove(pdev); +	ath10k_snoc_free_resources(ar);  }  static struct platform_driver ath10k_snoc_driver = { | 
