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

Commit 1df710cc authored by Ashok Vuyyuru's avatar Ashok Vuyyuru
Browse files

msm: ipa3: Send enable force clear only for producer pipe



Enable forceclear only supported for producer pipe so
avoid sending the force clear command to consumer pipes.

Change-Id: I850f360f18c6598af6914c9cd2c89cacad1ac4c9
Signed-off-by: default avatarAshok Vuyyuru <avuyyuru@codeaurora.org>
parent 464112e0
Loading
Loading
Loading
Loading
+18 −16
Original line number Diff line number Diff line
@@ -2632,6 +2632,7 @@ int ipa3_suspend_gsi_wdi_pipe(u32 clnt_hdl)
	}
	if (ep->valid) {
		IPADBG("suspended pipe %d\n", ipa_ep_idx);
		if (IPA_CLIENT_IS_PROD(ep->client)) {
			source_pipe_bitmask = 1 <<
				ipa3_get_ep_mapping(ep->client);
			res = ipa3_enable_force_clear(clnt_hdl,
@@ -2650,6 +2651,7 @@ int ipa3_suspend_gsi_wdi_pipe(u32 clnt_hdl)
			} else {
				disable_force_clear = true;
			}
		}
retry_gsi_stop:
		res = ipa3_stop_gsi_channel(ipa_ep_idx);
		if (res != 0 && res != -GSI_STATUS_AGAIN &&
+18 −16
Original line number Diff line number Diff line
@@ -848,6 +848,7 @@ int ipa3_disable_wdi3_pipes(int ipa_ep_idx_tx, int ipa_ep_idx_rx)
	 * as IPA uC will fail to suspend the pipe otherwise.
	 */
	ep = &ipa3_ctx->ep[ipa_ep_idx_rx];
	if (IPA_CLIENT_IS_PROD(ep->client)) {
		source_pipe_bitmask = 1 <<
			ipa3_get_ep_mapping(ep->client);
		result = ipa3_enable_force_clear(ipa_ep_idx_rx,
@@ -866,6 +867,7 @@ int ipa3_disable_wdi3_pipes(int ipa_ep_idx_tx, int ipa_ep_idx_rx)
		} else {
			disable_force_clear = true;
		}
	}

	/* stop gsi rx channel */
	result = ipa3_stop_gsi_channel(ipa_ep_idx_rx);
+19 −17
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
 * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
 */

#include "ipa_i.h"
@@ -1793,6 +1793,7 @@ int ipa3_disable_wigig_pipe_i(enum ipa_client_type client)
	}

	IPADBG("pipe %d\n", ipa_ep_idx);
	if (IPA_CLIENT_IS_PROD(ep->client)) {
		source_pipe_bitmask = 1 << ipa_ep_idx;
		res = ipa3_enable_force_clear(ipa_ep_idx,
				false, source_pipe_bitmask);
@@ -1810,6 +1811,7 @@ int ipa3_disable_wigig_pipe_i(enum ipa_client_type client)
		} else {
			disable_force_clear = true;
		}
	}
retry_gsi_stop:
	res = ipa3_stop_gsi_channel(ipa_ep_idx);
	if (res != 0 && res != -GSI_STATUS_AGAIN &&