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

Commit 208487a8 authored by Bjorn Andersson's avatar Bjorn Andersson Committed by Andy Gross
Browse files

soc: qcom: smd: Correct fBLOCKREADINTR handling



fBLOCKREADINTR is masking the notification from the remote and should
hence be cleared while we're waiting the tx fifo to drain. Also change
the reset state to mask the notification, as send is the only use case
where we're interested in it.

Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: default avatarAndy Gross <agross@codeaurora.org>
parent 93dbed91
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -312,7 +312,7 @@ static void qcom_smd_channel_reset(struct qcom_smd_channel *channel)
	SET_TX_CHANNEL_INFO(channel, fHEAD, 0);
	SET_TX_CHANNEL_INFO(channel, fTAIL, 0);
	SET_TX_CHANNEL_INFO(channel, fSTATE, 1);
	SET_TX_CHANNEL_INFO(channel, fBLOCKREADINTR, 0);
	SET_TX_CHANNEL_INFO(channel, fBLOCKREADINTR, 1);
	SET_TX_CHANNEL_INFO(channel, head, 0);
	SET_TX_CHANNEL_INFO(channel, tail, 0);

@@ -683,7 +683,7 @@ int qcom_smd_send(struct qcom_smd_channel *channel, const void *data, int len)
			goto out;
		}

		SET_TX_CHANNEL_INFO(channel, fBLOCKREADINTR, 1);
		SET_TX_CHANNEL_INFO(channel, fBLOCKREADINTR, 0);

		ret = wait_event_interruptible(channel->fblockread_event,
				       qcom_smd_get_tx_avail(channel) >= tlen ||
@@ -691,7 +691,7 @@ int qcom_smd_send(struct qcom_smd_channel *channel, const void *data, int len)
		if (ret)
			goto out;

		SET_TX_CHANNEL_INFO(channel, fBLOCKREADINTR, 0);
		SET_TX_CHANNEL_INFO(channel, fBLOCKREADINTR, 1);
	}

	SET_TX_CHANNEL_INFO(channel, fTAIL, 0);