Merge ad284c7b5f on remote branch

Change-Id: I4233377b35c8a5a30082afd46cfd8fa3c502a11b
This commit is contained in:
Linux Build Service Account 2021-04-27 11:13:24 -07:00
commit 0bbe284a68
3 changed files with 25 additions and 10 deletions

View file

@ -4032,12 +4032,17 @@ void ipa3_q6_pre_shutdown_cleanup(void)
ipa3_q6_pipe_delay(true);
ipa3_q6_avoid_holb();
if (ipa3_ctx->ipa_hw_type == IPA_HW_v4_11)
ipa3_set_reset_client_cons_pipe_sus_holb(true, 0,
IPA_CLIENT_USB_CONS);
if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_0) {
prod = true;
ipa3_halt_q6_gsi_channels(prod);
}
if (ipa3_ctx->ipa_config_is_mhi)
ipa3_set_reset_client_cons_pipe_sus_holb(true,
ipa3_set_reset_client_cons_pipe_sus_holb(true, 0,
IPA_CLIENT_MHI_CONS);
if (ipa3_q6_clean_q6_tables()) {
IPAERR("Failed to clean Q6 tables\n");
@ -4095,6 +4100,9 @@ void ipa3_q6_post_shutdown_cleanup(void)
/* Handle the issue where SUSPEND was removed for some reason */
ipa3_q6_avoid_holb();
if (ipa3_ctx->ipa_hw_type == IPA_HW_v4_11)
ipa3_set_reset_client_cons_pipe_sus_holb(true,
IPA_HOLB_TMR_VAL_4_5, IPA_CLIENT_USB_CONS);
/* halt both prod and cons channels starting at IPAv4 */
if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_0) {
IPA_ACTIVE_CLIENTS_DEC_SIMPLE();

View file

@ -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 <asm/barrier.h>
@ -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);
}
@ -1441,7 +1449,7 @@ int ipa3_start_stop_client_prod_gsi_chnl(enum ipa_client_type client,
client_lock_unlock_cb(client, false);
return result;
}
int ipa3_set_reset_client_cons_pipe_sus_holb(bool set_reset,
int ipa3_set_reset_client_cons_pipe_sus_holb(bool set_reset, u32 tmr_val,
enum ipa_client_type client)
{
int pipe_idx;
@ -1453,7 +1461,7 @@ int ipa3_set_reset_client_cons_pipe_sus_holb(bool set_reset,
memset(&ep_holb, 0, sizeof(ep_holb));
ep_suspend.ipa_ep_suspend = set_reset;
ep_holb.tmr_val = 0;
ep_holb.tmr_val = tmr_val;
ep_holb.en = set_reset;
if (IPA_CLIENT_IS_PROD(client)) {
@ -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");

View file

@ -2492,7 +2492,7 @@ int ipa3_start_stop_client_prod_gsi_chnl(enum ipa_client_type client,
void ipa3_client_prod_post_shutdown_cleanup(void);
int ipa3_set_reset_client_cons_pipe_sus_holb(bool set_reset,
int ipa3_set_reset_client_cons_pipe_sus_holb(bool set_reset, u32 tmr_val,
enum ipa_client_type client);
int ipa3_xdci_suspend(u32 ul_clnt_hdl, u32 dl_clnt_hdl,