aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2020-04-25 10:27:07 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2020-04-25 10:27:07 -0700
commit92108127629465abfef85706b0348fb12980c619 (patch)
treee555ef875e66bc4b1d656ea83a4bc07cc32c44c3
parent18560b999482640b868e0a088f7be4804ce28b17 (diff)
parentf821711b03c6738820c413cf884d4dbdffb87fad (diff)
Merge "msm: ipa3: Update holb config on WLAN & USB CONS ep"LA.UM.8.13.r1-08000-SAIPAN.0
-rw-r--r--drivers/platform/msm/ipa/ipa_v3/ipa_client.c22
-rw-r--r--drivers/platform/msm/ipa/ipa_v3/ipa_i.h2
2 files changed, 19 insertions, 5 deletions
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_client.c b/drivers/platform/msm/ipa/ipa_v3/ipa_client.c
index 36c18e5d0920..871b3d957de2 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa_client.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa_client.c
@@ -61,11 +61,22 @@ 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_2 ||
+ ipa3_ctx->ipa_hw_type == IPA_HW_v4_7) &&
+ (ep->client == IPA_CLIENT_WLAN1_CONS ||
+ ep->client == IPA_CLIENT_USB_CONS)) {
+ holb_cfg.en = IPA_HOLB_TMR_EN;
+ if (ipa3_ctx->ipa_hw_type < IPA_HW_v4_5)
+ holb_cfg.tmr_val = IPA_HOLB_TMR_VAL;
+ else
+ 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);
}
@@ -1400,8 +1411,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);
@@ -1425,6 +1434,9 @@ 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");
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h
index 72a78dba465b..9cef059e4160 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h
@@ -64,6 +64,8 @@
#define IPA_UC_WAII_MAX_SLEEP 1200
#define IPA_HOLB_TMR_DIS 0x0
#define IPA_HOLB_TMR_EN 0x1
+#define IPA_HOLB_TMR_VAL 65535
+#define IPA_HOLB_TMR_VAL_4_5 31
#define IPA_MPM_MAX_RING_LEN 64
#define IPA_MAX_TETH_AGGR_BYTE_LIMIT 24
#define IPA_MPM_MAX_UC_THRESH 4