|
@@ -11926,7 +11926,7 @@ static struct cdp_mesh_latency_ops dp_ops_mesh_latency = {
|
|
};
|
|
};
|
|
#endif
|
|
#endif
|
|
|
|
|
|
-#ifdef FEATURE_RUNTIME_PM
|
|
|
|
|
|
+#if defined(DP_POWER_SAVE) || defined(FEATURE_RUNTIME_PM)
|
|
/**
|
|
/**
|
|
* dp_flush_ring_hptp() - Update ring shadow
|
|
* dp_flush_ring_hptp() - Update ring shadow
|
|
* register HP/TP address when runtime
|
|
* register HP/TP address when runtime
|
|
@@ -11946,11 +11946,13 @@ void dp_flush_ring_hptp(struct dp_soc *soc, hal_ring_handle_t hal_srng)
|
|
hal_srng_access_end(soc->hal_soc, hal_srng);
|
|
hal_srng_access_end(soc->hal_soc, hal_srng);
|
|
|
|
|
|
hal_srng_set_flush_last_ts(hal_srng);
|
|
hal_srng_set_flush_last_ts(hal_srng);
|
|
- qdf_atomic_set(&soc->tx_pending_rtpm, 0);
|
|
|
|
|
|
+
|
|
dp_debug("flushed");
|
|
dp_debug("flushed");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
+#ifdef FEATURE_RUNTIME_PM
|
|
/**
|
|
/**
|
|
* dp_runtime_suspend() - ensure DP is ready to runtime suspend
|
|
* dp_runtime_suspend() - ensure DP is ready to runtime suspend
|
|
* @soc_hdl: Datapath soc handle
|
|
* @soc_hdl: Datapath soc handle
|
|
@@ -11985,6 +11987,7 @@ static QDF_STATUS dp_runtime_suspend(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
|
HAL_SRNG_FLUSH_EVENT);
|
|
HAL_SRNG_FLUSH_EVENT);
|
|
dp_flush_ring_hptp(soc, soc->tcl_data_ring[i].hal_srng);
|
|
dp_flush_ring_hptp(soc, soc->tcl_data_ring[i].hal_srng);
|
|
}
|
|
}
|
|
|
|
+ qdf_atomic_set(&soc->tx_pending_rtpm, 0);
|
|
|
|
|
|
return QDF_STATUS_E_AGAIN;
|
|
return QDF_STATUS_E_AGAIN;
|
|
}
|
|
}
|
|
@@ -12035,6 +12038,7 @@ static QDF_STATUS dp_runtime_resume(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
|
for (i = 0; i < MAX_TCL_DATA_RINGS; i++) {
|
|
for (i = 0; i < MAX_TCL_DATA_RINGS; i++) {
|
|
dp_flush_ring_hptp(soc, soc->tcl_data_ring[i].hal_srng);
|
|
dp_flush_ring_hptp(soc, soc->tcl_data_ring[i].hal_srng);
|
|
}
|
|
}
|
|
|
|
+ qdf_atomic_set(&soc->tx_pending_rtpm, 0);
|
|
|
|
|
|
dp_flush_ring_hptp(soc, soc->reo_cmd_ring.hal_srng);
|
|
dp_flush_ring_hptp(soc, soc->reo_cmd_ring.hal_srng);
|
|
dp_rx_fst_update_pm_suspend_status(soc, false);
|
|
dp_rx_fst_update_pm_suspend_status(soc, false);
|
|
@@ -12487,6 +12491,7 @@ static QDF_STATUS dp_bus_resume(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
|
{
|
|
{
|
|
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
|
|
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
|
|
struct dp_pdev *pdev = dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id);
|
|
struct dp_pdev *pdev = dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id);
|
|
|
|
+ uint8_t i;
|
|
|
|
|
|
if (qdf_unlikely(!pdev)) {
|
|
if (qdf_unlikely(!pdev)) {
|
|
dp_err("pdev is NULL");
|
|
dp_err("pdev is NULL");
|
|
@@ -12501,6 +12506,9 @@ static QDF_STATUS dp_bus_resume(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
|
|
|
|
|
dp_resume_fse_cache_flush(soc);
|
|
dp_resume_fse_cache_flush(soc);
|
|
|
|
|
|
|
|
+ for (i = 0; i < soc->num_tcl_data_rings; i++)
|
|
|
|
+ dp_flush_ring_hptp(soc, soc->tcl_data_ring[i].hal_srng);
|
|
|
|
+
|
|
return QDF_STATUS_SUCCESS;
|
|
return QDF_STATUS_SUCCESS;
|
|
}
|
|
}
|
|
|
|
|