Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ad284c7b authored by Ashok Vuyyuru's avatar Ashok Vuyyuru
Browse files

msm: ipa3: configure the HOLB timer value to zero in SSR scenario



configure the HOLB timer value to zero in SSR scenario to avoid
USB stall issue.

Change-Id: I23f91c4a2bff2cb3b330d4354e81acc9460d1936
Signed-off-by: default avatarAshok Vuyyuru <avuyyuru@codeaurora.org>
parent f875c2c6
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -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();
+2 −2
Original line number Diff line number Diff line
@@ -1449,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;
@@ -1461,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)) {
+1 −1
Original line number Diff line number Diff line
@@ -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,