|
@@ -744,6 +744,9 @@ int ath9k_htc_probe_device(struct htc_target *htc_handle, struct device *dev,
|
|
|
if (ret)
|
|
|
goto err_init;
|
|
|
|
|
|
+ /* The device may have been unplugged earlier. */
|
|
|
+ priv->op_flags &= ~OP_UNPLUGGED;
|
|
|
+
|
|
|
ret = ath9k_init_device(priv, devid);
|
|
|
if (ret)
|
|
|
goto err_init;
|
|
@@ -760,6 +763,11 @@ err_free:
|
|
|
void ath9k_htc_disconnect_device(struct htc_target *htc_handle, bool hotunplug)
|
|
|
{
|
|
|
if (htc_handle->drv_priv) {
|
|
|
+
|
|
|
+ /* Check if the device has been yanked out. */
|
|
|
+ if (hotunplug)
|
|
|
+ htc_handle->drv_priv->op_flags |= OP_UNPLUGGED;
|
|
|
+
|
|
|
ath9k_deinit_device(htc_handle->drv_priv);
|
|
|
ath9k_deinit_wmi(htc_handle->drv_priv);
|
|
|
ieee80211_free_hw(htc_handle->drv_priv->hw);
|