From 923071b346524a62cd2a41af8d51bf476b01d893 Mon Sep 17 00:00:00 2001 From: Ashok Vuyyuru Date: Fri, 18 Oct 2019 00:38:56 +0530 Subject: [PATCH] msm: ipa4: Fix to use common PM handle for coalescing and default pipe Because of using different PM handles default WAN consumer handle never unvote data pending in suspend scenarios. Add changes to use the common PM handle for default and coalescing pipes. Change-Id: I2d6ff2998e7b80f11bdb7cfcd787cab098eaf718 Signed-off-by: Ashok Vuyyuru --- drivers/platform/msm/ipa/ipa_v3/ipa_dp.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_dp.c b/drivers/platform/msm/ipa/ipa_v3/ipa_dp.c index 059e6cade2ed..5b27d37db1d6 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_dp.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_dp.c @@ -926,7 +926,7 @@ static void ipa_pm_sys_pipe_cb(void *p, enum ipa_pm_cb_event event) int ipa3_setup_sys_pipe(struct ipa_sys_connect_params *sys_in, u32 *clnt_hdl) { struct ipa3_ep_context *ep; - int i, ipa_ep_idx, wan_handle; + int i, ipa_ep_idx, wan_handle, coal_ep_id; int result = -EINVAL; struct ipahal_reg_coal_qmap_cfg qmap_cfg; struct ipahal_reg_coal_evict_lru evict_lru; @@ -956,6 +956,7 @@ int ipa3_setup_sys_pipe(struct ipa_sys_connect_params *sys_in, u32 *clnt_hdl) goto fail_gen; } + coal_ep_id = ipa3_get_ep_mapping(IPA_CLIENT_APPS_WAN_COAL_CONS); /* save the input config parameters */ if (sys_in->client == IPA_CLIENT_APPS_WAN_COAL_CONS) ep_cfg_copy = sys_in->ipa_ep_cfg; @@ -1007,7 +1008,12 @@ int ipa3_setup_sys_pipe(struct ipa_sys_connect_params *sys_in, u32 *clnt_hdl) ep->sys->db_timer.function = ipa3_ring_doorbell_timer_fn; /* create IPA PM resources for handling polling mode */ - if (IPA_CLIENT_IS_CONS(sys_in->client)) { + if (sys_in->client == IPA_CLIENT_APPS_WAN_CONS && + coal_ep_id != IPA_EP_NOT_ALLOCATED && + ipa3_ctx->ep[coal_ep_id].valid == 1) { + /* Use coalescing pipe PM handle for default pipe also*/ + ep->sys->pm_hdl = ipa3_ctx->ep[coal_ep_id].sys->pm_hdl; + } else if (IPA_CLIENT_IS_CONS(sys_in->client)) { pm_reg.name = ipa_clients_strings[sys_in->client]; pm_reg.callback = ipa_pm_sys_pipe_cb; pm_reg.user_data = ep->sys;