From 2ab3f43df1586368cf5f282604ee57d3fafc664f Mon Sep 17 00:00:00 2001 From: Houston Hoffman Date: Tue, 8 Dec 2015 13:48:02 -0800 Subject: [PATCH] qcacld-3.0: Recheck firmware indicator register after enabling interrupts qcacld-2.0 to qcacld-3.0 propagation We suspect that the firmware indicator interrupt is being dropped when the firmware indicator interrupt is disabled. Check the firmware indicator after reenabling the firmware indicator interrupt. Change-Id: I600bd9dfae99ab96dfaf7e3448cef9128f8b7357 CRs-Fixed: 925315 --- core/hif/src/pcie/hif_io32_pci.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/hif/src/pcie/hif_io32_pci.h b/core/hif/src/pcie/hif_io32_pci.h index 3ffa30da0325..597508f6b0e8 100644 --- a/core/hif/src/pcie/hif_io32_pci.h +++ b/core/hif/src/pcie/hif_io32_pci.h @@ -243,6 +243,9 @@ extern void hif_target_write_checked(struct ol_softc *scn, uint32_t offset, #endif #endif /* CONFIG_ATH_PCIE_MAX_PERF */ + +irqreturn_t hif_fw_interrupt_handler(int irq, void *arg); + /** * ce_irq_enable() - ce_irq_enable * @scn: ol_softc @@ -276,6 +279,9 @@ static inline void ce_irq_enable(struct ol_softc *scn, int ce_id) if (scn->hif_init_done == true) A_TARGET_ACCESS_END(scn); cdf_spin_unlock_irqrestore(&scn->irq_lock); + + /* check for missed firmware crash */ + hif_fw_interrupt_handler(0, scn); } /** * ce_irq_disable() - ce_irq_disable