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

Commit dbee5229 authored by Prakash Gupta's avatar Prakash Gupta Committed by Isaac J. Manjarres
Browse files

iommu: arm-smmu: clear TBU halt request when halt times out



TBU halt request is considered timed out after some wait.
But the halt request is not cleared. This can result in halt request
succeeding subsequently and driver not resuming the TBU. This can cause
functional issue of TBU power collapse or TBU remaining halted.
Clear the TBU halt request in case of timeout.

Change-Id: I2225485cae8146917ea8cfdf3bf50742278ae628
Signed-off-by: default avatarPrakash Gupta <guptap@codeaurora.org>
[isaacm@codeaurora.org: Use DEBUG_SID_HALT_REQ]
Signed-off-by: default avatarIsaac J. Manjarres <isaacm@codeaurora.org>
parent 60c00665
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -5010,6 +5010,11 @@ static int qsmmuv500_tbu_halt(struct qsmmuv500_tbu_device *tbu,
					(status & DEBUG_SR_HALT_ACK_VAL),
					0, TBU_DBG_TIMEOUT_US)) {
		dev_err(tbu->dev, "Couldn't halt TBU!\n");

		halt = readl_relaxed(tbu_base + DEBUG_SID_HALT_REG);
		halt &= ~DEBUG_SID_HALT_REQ;
		writel_relaxed(halt, tbu_base + DEBUG_SID_HALT_REG);

		spin_unlock_irqrestore(&tbu->halt_lock, flags);
		return -ETIMEDOUT;
	}