qcacmn: Request runtime PM resume after receiving WAKE MSI
For PCIe DRV (L1SS sleep) suspend, firmware will trigger a WAKE MSI to wake up host so that request runtime PM resume for this case. Change-Id: I959d3b1053b7aef5fe80889553958cf9394c8c38 CRs-fixed: 2450284
This commit is contained in:
@@ -744,6 +744,7 @@ void hif_clear_stats(struct hif_opaque_softc *hif_ctx);
|
||||
#ifdef FEATURE_RUNTIME_PM
|
||||
struct hif_pm_runtime_lock;
|
||||
void hif_fastpath_resume(struct hif_opaque_softc *hif_ctx);
|
||||
int hif_pm_runtime_request_resume(struct hif_opaque_softc *hif_ctx);
|
||||
int hif_pm_runtime_get(struct hif_opaque_softc *hif_ctx);
|
||||
void hif_pm_runtime_get_noresume(struct hif_opaque_softc *hif_ctx);
|
||||
int hif_pm_runtime_put(struct hif_opaque_softc *hif_ctx);
|
||||
@@ -761,6 +762,9 @@ struct hif_pm_runtime_lock {
|
||||
const char *name;
|
||||
};
|
||||
static inline void hif_fastpath_resume(struct hif_opaque_softc *hif_ctx) {}
|
||||
static inline int
|
||||
hif_pm_runtime_request_resume(struct hif_opaque_softc *hif_ctx)
|
||||
{ return 0; }
|
||||
static inline void hif_pm_runtime_get_noresume(struct hif_opaque_softc *hif_ctx)
|
||||
{}
|
||||
|
||||
|
@@ -1265,12 +1265,15 @@ irqreturn_t hif_wake_interrupt_handler(int irq, void *context)
|
||||
irqreturn_t hif_wake_interrupt_handler(int irq, void *context)
|
||||
{
|
||||
struct hif_softc *scn = context;
|
||||
struct hif_opaque_softc *hif_ctx = GET_HIF_OPAQUE_HDL(scn);
|
||||
|
||||
HIF_INFO("wake interrupt received on irq %d", irq);
|
||||
|
||||
if (scn->initial_wakeup_cb)
|
||||
scn->initial_wakeup_cb(scn->initial_wakeup_priv);
|
||||
|
||||
hif_pm_runtime_request_resume(hif_ctx);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
#endif /* WLAN_SUSPEND_RESUME_TEST */
|
||||
|
@@ -3858,6 +3858,15 @@ void hif_pci_irq_disable(struct hif_softc *scn, int ce_id)
|
||||
}
|
||||
|
||||
#ifdef FEATURE_RUNTIME_PM
|
||||
int hif_pm_runtime_request_resume(struct hif_opaque_softc *hif_ctx)
|
||||
{
|
||||
struct hif_pci_softc *sc = HIF_GET_PCI_SOFTC(hif_ctx);
|
||||
|
||||
if (!sc)
|
||||
return -EINVAL;
|
||||
|
||||
return hif_pm_request_resume(sc->dev);
|
||||
}
|
||||
|
||||
void hif_pm_runtime_get_noresume(struct hif_opaque_softc *hif_ctx)
|
||||
{
|
||||
|
Reference in New Issue
Block a user