]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mmc: sdhci-brcmstb: add cqhci suspend/resume to PM ops
authorKamal Dasu <kamal.dasu@broadcom.com>
Tue, 11 Mar 2025 16:59:35 +0000 (12:59 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 28 Mar 2025 20:59:01 +0000 (21:59 +0100)
commit 723ef0e20dbb2aa1b5406d2bb75374fc48187daa upstream.

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>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Link: https://lore.kernel.org/r/20250311165946.28190-1-kamal.dasu@broadcom.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/mmc/host/sdhci-brcmstb.c

index 5b650d5dd0ae61cfb1f5a1cd221396efe4edc981..5a7ee8a390b0873cae3e28b0c1099e27d09b99eb 100644 (file)
@@ -396,8 +396,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);
 }
 
@@ -422,6 +429,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