From 52eb4e3564de48b662a6ade21d7a5c913d68e656 Mon Sep 17 00:00:00 2001 From: Piyush Dhyani Date: Tue, 16 Mar 2021 11:44:06 +0530 Subject: [PATCH] msm: ipa3: Update holb config on WLAN & USB CONS ep. After configuring WLAN CONS ep or USB ep there is a chance of IPA hardware stall, if WLAN ep or USB ep is not pulling data fast enough. So, set holb on WLAN CONS ep and USB CONS ep to avoid stall. Change-Id: I370165ce197181eaac999df2d8abea517c9e9bd4 Signed-off-by: Piyush Dhyani --- drivers/platform/msm/ipa/ipa_v3/ipa_client.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_client.c b/drivers/platform/msm/ipa/ipa_v3/ipa_client.c index 4d68b06a95ae..1c147721f67e 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_client.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_client.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. */ #include @@ -62,11 +62,19 @@ int ipa3_enable_data_path(u32 clnt_hdl) * on other end from IPA hw. */ if ((ep->client == IPA_CLIENT_USB_DPL_CONS) || - (ep->client == IPA_CLIENT_MHI_DPL_CONS)) + (ep->client == IPA_CLIENT_MHI_DPL_CONS)) { + holb_cfg.tmr_val = 0; holb_cfg.en = IPA_HOLB_TMR_EN; - else + } else if (ipa3_ctx->ipa_hw_type == IPA_HW_v4_11 && + (ep->client == IPA_CLIENT_WLAN1_CONS || + ep->client == IPA_CLIENT_USB_CONS)) { + holb_cfg.en = IPA_HOLB_TMR_EN; + holb_cfg.tmr_val = IPA_HOLB_TMR_VAL_4_5; + } + else { holb_cfg.en = IPA_HOLB_TMR_DIS; - holb_cfg.tmr_val = 0; + holb_cfg.tmr_val = 0; + } res = ipa3_cfg_ep_holb(clnt_hdl, &holb_cfg); } @@ -1560,8 +1568,6 @@ int ipa3_xdci_disconnect(u32 clnt_hdl, bool should_force_clear, u32 qmi_req_id) if (!ep->keep_ipa_awake) IPA_ACTIVE_CLIENTS_INC_EP(ipa3_get_client_mapping(clnt_hdl)); - ipa3_disable_data_path(clnt_hdl); - if (!IPA_CLIENT_IS_CONS(ep->client)) { IPADBG("Stopping PROD channel - hdl=%d clnt=%d\n", clnt_hdl, ep->client); @@ -1585,6 +1591,7 @@ int ipa3_xdci_disconnect(u32 clnt_hdl, bool should_force_clear, u32 qmi_req_id) goto stop_chan_fail; } } + ipa3_disable_data_path(clnt_hdl); IPA_ACTIVE_CLIENTS_DEC_EP(ipa3_get_client_mapping(clnt_hdl)); IPADBG("exit\n");