]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mmc: sdhci-esdhc-imx: remove unnecessary mmc_card_wake_sdio_irq check for tuning...
authorLuke Wang <ziniu.wang_1@nxp.com>
Wed, 15 Jul 2026 07:18:11 +0000 (15:18 +0800)
committerUlf Hansson <ulfh@kernel.org>
Wed, 15 Jul 2026 08:58:51 +0000 (10:58 +0200)
The tuning save/restore during system PM is conditioned on
mmc_card_wake_sdio_irq(), but this check is unrelated to whether
tuning values need to be preserved. The actual requirement is that
the card keeps power during suspend and the controller is a uSDHC.

SDIO devices using out-of-band GPIO wakeup maintain power during
suspend but do not set the SDIO IRQ wake flag. In this case the
tuning delay values are not saved/restored.

Remove the unnecessary mmc_card_wake_sdio_irq() condition from both
the suspend save and resume restore paths.

Fixes: c63d25cdc59a ("mmc: sdhci-esdhc-imx: Save tuning value when card stays powered in suspend")
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Haibo Chen <haibo.chen@nxp.com>
Signed-off-by: Luke Wang <ziniu.wang_1@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulfh@kernel.org>
drivers/mmc/host/sdhci-esdhc-imx.c

index 18ecddd6df6f22f5d8e5c645ca2d192c4586b0a3..6526d65538de5fa1573e303b1ed349c96abba618 100644 (file)
@@ -2064,8 +2064,7 @@ static int sdhci_esdhc_suspend(struct device *dev)
         * to save the tuning delay value just in case the usdhc
         * lost power during system PM.
         */
-       if (mmc_card_keep_power(host->mmc) && mmc_card_wake_sdio_irq(host->mmc) &&
-           esdhc_is_usdhc(imx_data))
+       if (mmc_card_keep_power(host->mmc) && esdhc_is_usdhc(imx_data))
                sdhc_esdhc_tuning_save(host);
 
        if (device_may_wakeup(dev)) {
@@ -2124,8 +2123,7 @@ static int sdhci_esdhc_resume(struct device *dev)
         * restore the saved tuning delay value for the device which keep
         * power during system PM.
         */
-       if (mmc_card_keep_power(host->mmc) && mmc_card_wake_sdio_irq(host->mmc) &&
-           esdhc_is_usdhc(imx_data))
+       if (mmc_card_keep_power(host->mmc) && esdhc_is_usdhc(imx_data))
                sdhc_esdhc_tuning_restore(host);
 
        pm_runtime_put_autosuspend(dev);