|
@@ -1619,6 +1619,14 @@ static void ath6kl_init_get_fwcaps(struct ath6kl *ar, char *buf, size_t buf_len)
|
|
buf[len] = '\0';
|
|
buf[len] = '\0';
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static int ath6kl_init_hw_reset(struct ath6kl *ar)
|
|
|
|
+{
|
|
|
|
+ ath6kl_dbg(ATH6KL_DBG_BOOT, "cold resetting the device");
|
|
|
|
+
|
|
|
|
+ return ath6kl_diag_write32(ar, RESET_CONTROL_ADDRESS,
|
|
|
|
+ cpu_to_le32(RESET_CONTROL_COLD_RST));
|
|
|
|
+}
|
|
|
|
+
|
|
static int __ath6kl_init_hw_start(struct ath6kl *ar)
|
|
static int __ath6kl_init_hw_start(struct ath6kl *ar)
|
|
{
|
|
{
|
|
long timeleft;
|
|
long timeleft;
|
|
@@ -1836,9 +1844,7 @@ void ath6kl_stop_txrx(struct ath6kl *ar)
|
|
* Try to reset the device if we can. The driver may have been
|
|
* Try to reset the device if we can. The driver may have been
|
|
* configure NOT to reset the target during a debug session.
|
|
* configure NOT to reset the target during a debug session.
|
|
*/
|
|
*/
|
|
- ath6kl_dbg(ATH6KL_DBG_TRC,
|
|
|
|
- "attempting to reset target on instance destroy\n");
|
|
|
|
- ath6kl_reset_device(ar, ar->target_type, true, true);
|
|
|
|
|
|
+ ath6kl_init_hw_reset(ar);
|
|
|
|
|
|
up(&ar->sem);
|
|
up(&ar->sem);
|
|
}
|
|
}
|