|
@@ -1875,6 +1875,12 @@ static int ath10k_pci_hif_power_up(struct ath10k *ar)
|
|
|
|
|
|
ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot hif power up\n");
|
|
|
|
|
|
+ ret = ath10k_pci_wake(ar);
|
|
|
+ if (ret) {
|
|
|
+ ath10k_err(ar, "failed to wake up target: %d\n", ret);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
/*
|
|
|
* Bring the target up cleanly.
|
|
|
*
|
|
@@ -1888,13 +1894,13 @@ static int ath10k_pci_hif_power_up(struct ath10k *ar)
|
|
|
ret = ath10k_pci_chip_reset(ar);
|
|
|
if (ret) {
|
|
|
ath10k_err(ar, "failed to reset chip: %d\n", ret);
|
|
|
- goto err;
|
|
|
+ goto err_sleep;
|
|
|
}
|
|
|
|
|
|
ret = ath10k_pci_init_pipes(ar);
|
|
|
if (ret) {
|
|
|
ath10k_err(ar, "failed to initialize CE: %d\n", ret);
|
|
|
- goto err;
|
|
|
+ goto err_sleep;
|
|
|
}
|
|
|
|
|
|
ret = ath10k_pci_init_config(ar);
|
|
@@ -1914,7 +1920,8 @@ static int ath10k_pci_hif_power_up(struct ath10k *ar)
|
|
|
err_ce:
|
|
|
ath10k_pci_ce_deinit(ar);
|
|
|
|
|
|
-err:
|
|
|
+err_sleep:
|
|
|
+ ath10k_pci_sleep(ar);
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
@@ -1925,6 +1932,8 @@ static void ath10k_pci_hif_power_down(struct ath10k *ar)
|
|
|
/* Currently hif_power_up performs effectively a reset and hif_stop
|
|
|
* resets the chip as well so there's no point in resetting here.
|
|
|
*/
|
|
|
+
|
|
|
+ ath10k_pci_sleep(ar);
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_PM
|
|
@@ -2526,6 +2535,8 @@ static int ath10k_pci_probe(struct pci_dev *pdev,
|
|
|
goto err_deinit_irq;
|
|
|
}
|
|
|
|
|
|
+ ath10k_pci_sleep(ar);
|
|
|
+
|
|
|
ret = ath10k_core_register(ar, chip_id);
|
|
|
if (ret) {
|
|
|
ath10k_err(ar, "failed to register driver core: %d\n", ret);
|
|
@@ -2577,7 +2588,6 @@ static void ath10k_pci_remove(struct pci_dev *pdev)
|
|
|
ath10k_pci_deinit_irq(ar);
|
|
|
ath10k_pci_ce_deinit(ar);
|
|
|
ath10k_pci_free_pipes(ar);
|
|
|
- ath10k_pci_sleep(ar);
|
|
|
ath10k_pci_release(ar);
|
|
|
ath10k_core_destroy(ar);
|
|
|
}
|