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.
         *
        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);
 err_ce:
        ath10k_pci_ce_deinit(ar);
 
-err:
+err_sleep:
+       ath10k_pci_sleep(ar);
        return ret;
 }
 
        /* 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
                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);
        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);
 }