diff options
| -rw-r--r-- | CORE/SERVICES/HIF/PCIe/hif_pci.c | 3 | ||||
| -rw-r--r-- | CORE/SERVICES/HIF/PCIe/if_pci.c | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/CORE/SERVICES/HIF/PCIe/hif_pci.c b/CORE/SERVICES/HIF/PCIe/hif_pci.c index 66b21138ab7c..6364600d6948 100644 --- a/CORE/SERVICES/HIF/PCIe/hif_pci.c +++ b/CORE/SERVICES/HIF/PCIe/hif_pci.c @@ -2020,6 +2020,9 @@ HIF_sleep_entry(void *arg) struct hif_pci_softc *sc = hif_state->sc; u_int32_t idle_ms; + if (sc->recovery) + return; + adf_os_spin_lock_irqsave(&hif_state->keep_awake_lock); if (hif_state->verified_awake == FALSE) { idle_ms = adf_os_ticks_to_msecs(adf_os_ticks() diff --git a/CORE/SERVICES/HIF/PCIe/if_pci.c b/CORE/SERVICES/HIF/PCIe/if_pci.c index a94ce1ee37a3..e44588a33536 100644 --- a/CORE/SERVICES/HIF/PCIe/if_pci.c +++ b/CORE/SERVICES/HIF/PCIe/if_pci.c @@ -199,6 +199,10 @@ bool hif_pci_targ_is_awake(struct hif_pci_softc *sc, void *__iomem *mem) { A_UINT32 val; + + if(sc->recovery) + return false; + val = A_PCI_READ32(mem + PCIE_LOCAL_BASE_ADDRESS + RTC_STATE_ADDRESS); return (RTC_STATE_V_GET(val) == RTC_STATE_V_ON); } @@ -1622,6 +1626,8 @@ void hif_pci_shutdown(struct pci_dev *pdev) if (!sc) return; + sc->recovery = true; + if (vos_is_load_unload_in_progress(VOS_MODULE_ID_HIF, NULL)) { printk("Load/unload in progress, ignore SSR shutdown\n"); return; |
