Re: [PATCH] mmc: sdhci-brcmstb: add cqhci suspend/resume to PM ops

From: Kamal Dasu
Date: Tue Mar 11 2025 - 12:07:32 EST




On Tue, Mar 11, 2025 at 11:46 AM Florian Fainelli <florian.fainelli@xxxxxxxxxxxx> wrote:
On 3/11/25 08:01, 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@xxxxxxxxxxxxxxx
> Signed-off-by: Kamal Dasu <kamal.dasu@xxxxxxxxxxxx>
> ---
>   drivers/mmc/host/sdhci-brcmstb.c | 9 +++++++++
>   1 file changed, 9 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
> index 0ef4d578ade8..bf55a9185eb6 100644
> --- a/drivers/mmc/host/sdhci-brcmstb.c
> +++ b/drivers/mmc/host/sdhci-brcmstb.c
> @@ -505,6 +505,12 @@ static int sdhci_brcmstb_suspend(struct device *dev)
>       struct sdhci_brcmstb_priv *priv = sdhci_pltfm_priv(pltfm_host);

Missing an int ret declaration here, otherwise that won't build.

oops will fix it and send v2.
 
>   
>       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 +535,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


--
Florian

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature