Эх сурвалжийг харах

qcacmn: Remove logic to enable/disable wake msi for drv systems

Remove logic to enable/disable wake msi for drv systems. Today, during
WoW suspend sequence, between hif pci bus suspend and hif pci bus
suspend no irq, wake msi is getting disable temporarily. In case
fw toggles wake msi during this period, then the wake msi is lost,
which can lead to device not waking up for fw triggered wakeup.
Add the fix to remove enable/disable wake msi from suspend/resume
path and keep wake msi always enabled.

Change-Id: Idad0805f66ead4079d67577fa1151f73567511a3
CRs-Fixed: 3042261
Alan Chen 3 жил өмнө
parent
commit
c180315712

+ 0 - 2
hif/src/dispatcher/multibus.c

@@ -480,7 +480,6 @@ int hif_apps_irqs_disable(struct hif_opaque_softc *hif_ctx)
 		return -EINVAL;
 
 	/* if the wake_irq is shared, don't disable it twice */
-	disable_irq(scn->wake_irq);
 	for (i = 0; i < scn->ce_count; ++i) {
 		int irq = scn->bus_ops.hif_map_ce_to_irq(scn, i);
 
@@ -502,7 +501,6 @@ int hif_apps_irqs_enable(struct hif_opaque_softc *hif_ctx)
 		return -EINVAL;
 
 	/* if the wake_irq is shared, don't enable it twice */
-	enable_irq(scn->wake_irq);
 	for (i = 0; i < scn->ce_count; ++i) {
 		int irq = scn->bus_ops.hif_map_ce_to_irq(scn, i);
 

+ 2 - 5
hif/src/hif_main.c

@@ -2109,11 +2109,8 @@ irqreturn_t hif_wake_interrupt_handler(int irq, void *context)
 
 	hif_info("wake interrupt received on irq %d", irq);
 
-	if (hif_pm_runtime_get_monitor_wake_intr(hif_ctx)) {
-		hif_pm_runtime_set_monitor_wake_intr(hif_ctx, 0);
-		hif_pm_runtime_request_resume(hif_ctx,
-					      RTPM_ID_WAKE_INTR_HANDLER);
-	}
+	hif_pm_runtime_set_monitor_wake_intr(hif_ctx, 0);
+	hif_pm_runtime_request_resume(hif_ctx, RTPM_ID_WAKE_INTR_HANDLER);
 
 	if (scn->initial_wakeup_cb)
 		scn->initial_wakeup_cb(scn->initial_wakeup_priv);

+ 0 - 4
hif/src/pcie/if_pci.c

@@ -2345,8 +2345,6 @@ int hif_pci_bus_suspend_noirq(struct hif_softc *scn)
 	if (hif_can_suspend_link(GET_HIF_OPAQUE_HDL(scn)))
 		qdf_atomic_set(&scn->link_suspended, 1);
 
-	hif_apps_wake_irq_enable(GET_HIF_OPAQUE_HDL(scn));
-
 	return 0;
 }
 
@@ -2361,8 +2359,6 @@ int hif_pci_bus_suspend_noirq(struct hif_softc *scn)
  */
 int hif_pci_bus_resume_noirq(struct hif_softc *scn)
 {
-	hif_apps_wake_irq_disable(GET_HIF_OPAQUE_HDL(scn));
-
 	/* a vote for link up can come in the middle of the ongoing resume
 	 * process. hence, clear the link suspend flag once
 	 * hif_bus_resume_noirq() succeeds since PCIe link is already resumed