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;