mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 06:03:36 -04:00
Merge ad284c7b5f on remote branch
Change-Id: I4233377b35c8a5a30082afd46cfd8fa3c502a11b
This commit is contained in:
commit
0bbe284a68
3 changed files with 25 additions and 10 deletions
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue