Message ID | 20250311165946.28190-1-kamal.dasu@broadcom.com |
---|---|
State | New |
Headers | show |
Series | [v2] mmc: sdhci-brcmstb: add cqhci suspend/resume to PM ops | expand |
On 3/11/2025 9:59 AM, Kamal Dasu wrote: > 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: d46ba2d17f90 ("mmc: sdhci-brcmstb: Add support for Command Queuing (CQE)") > Cc: stable@vger.kernel.org > Signed-off-by: Kamal Dasu <kamal.dasu@broadcom.com> > --- > drivers/mmc/host/sdhci-brcmstb.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c > index 0ef4d578ade8..48cdcba0f39c 100644 > --- a/drivers/mmc/host/sdhci-brcmstb.c > +++ b/drivers/mmc/host/sdhci-brcmstb.c > @@ -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; Hopefully this won't be causing a possibly uninitialized warning. Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c index 0ef4d578ade8..48cdcba0f39c 100644 --- a/drivers/mmc/host/sdhci-brcmstb.c +++ b/drivers/mmc/host/sdhci-brcmstb.c @@ -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
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: d46ba2d17f90 ("mmc: sdhci-brcmstb: Add support for Command Queuing (CQE)") Cc: stable@vger.kernel.org Signed-off-by: Kamal Dasu <kamal.dasu@broadcom.com> --- drivers/mmc/host/sdhci-brcmstb.c | 10 ++++++++++ 1 file changed, 10 insertions(+)