Commit 723ef0e2 authored by Kamal Dasu's avatar Kamal Dasu Committed by Ulf Hansson
Browse files

mmc: sdhci-brcmstb: add cqhci suspend/resume to PM ops



cqhci timeouts observed on brcmstb platforms during suspend:
  ...
  [  164.832853] mmc0: cqhci: timeout for tag 18
  ...

Adding cqhci_suspend()/resume() calls to disable cqe
in sdhci_brcmstb_suspend()/resume() respectively to fix
CQE timeouts seen on PM suspend.

Fixes: d46ba2d1 ("mmc: sdhci-brcmstb: Add support for Command Queuing (CQE)")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarKamal Dasu <kamal.dasu@broadcom.com>
Reviewed-by: default avatarFlorian Fainelli <florian.fainelli@broadcom.com>
Link: https://lore.kernel.org/r/20250311165946.28190-1-kamal.dasu@broadcom.com


Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent e51a349d
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -503,8 +503,15 @@ static int sdhci_brcmstb_suspend(struct device *dev)
	struct sdhci_host *host = dev_get_drvdata(dev);
	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
	struct sdhci_brcmstb_priv *priv = sdhci_pltfm_priv(pltfm_host);
	int ret;

	clk_disable_unprepare(priv->base_clk);
	if (host->mmc->caps2 & MMC_CAP2_CQE) {
		ret = cqhci_suspend(host->mmc);
		if (ret)
			return ret;
	}

	return sdhci_pltfm_suspend(dev);
}

@@ -529,6 +536,9 @@ static int sdhci_brcmstb_resume(struct device *dev)
			ret = clk_set_rate(priv->base_clk, priv->base_freq_hz);
	}

	if (host->mmc->caps2 & MMC_CAP2_CQE)
		ret = cqhci_resume(host->mmc);

	return ret;
}
#endif