diff --git a/patches.suse/mmc-sdhci-esdhc-imx-make-no-mmc-hs400-works.patch b/patches.suse/mmc-sdhci-esdhc-imx-make-no-mmc-hs400-works.patch new file mode 100644 index 0000000..4fdc4b9 --- /dev/null +++ b/patches.suse/mmc-sdhci-esdhc-imx-make-no-mmc-hs400-works.patch @@ -0,0 +1,79 @@ +From 81dce1490e28439c3cd8a8650b862a712f3061ba Mon Sep 17 00:00:00 2001 +From: Haibo Chen +Date: Thu, 4 May 2023 19:22:22 +0800 +Subject: [PATCH] mmc: sdhci-esdhc-imx: make "no-mmc-hs400" works +Git-commit: 81dce1490e28439c3cd8a8650b862a712f3061ba +Patch-mainline: v6.4-rc4 +References: git-fixes + +After commit 1ed5c3b22fc7 ("mmc: sdhci-esdhc-imx: Propagate +ESDHC_FLAG_HS400* only on 8bit bus"), the property "no-mmc-hs400" +from device tree file do not work any more. +This patch reorder the code, which can avoid the warning message +"drop HS400 support since no 8-bit bus" and also make the property +"no-mmc-hs400" from dts file works. + +Fixes: 1ed5c3b22fc7 ("mmc: sdhci-esdhc-imx: Propagate ESDHC_FLAG_HS400* only on 8bit bus") +Signed-off-by: Haibo Chen +Cc: stable@vger.kernel.org +Link: https://lore.kernel.org/r/20230504112222.3599602-1-haibo.chen@nxp.com +Signed-off-by: Ulf Hansson +Acked-by: Takashi Iwai + +--- + drivers/mmc/host/sdhci-esdhc-imx.c | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +--- a/drivers/mmc/host/sdhci-esdhc-imx.c ++++ b/drivers/mmc/host/sdhci-esdhc-imx.c +@@ -1581,6 +1581,10 @@ sdhci_esdhc_imx_probe_dt(struct platform + if (ret) + return ret; + ++ /* HS400/HS400ES require 8 bit bus */ ++ if (!(host->mmc->caps & MMC_CAP_8_BIT_DATA)) ++ host->mmc->caps2 &= ~(MMC_CAP2_HS400 | MMC_CAP2_HS400_ES); ++ + if (mmc_gpio_get_cd(host->mmc) >= 0) + host->quirks &= ~SDHCI_QUIRK_BROKEN_CARD_DETECTION; + +@@ -1665,10 +1669,6 @@ static int sdhci_esdhc_imx_probe(struct + host->mmc_host_ops.execute_tuning = usdhc_execute_tuning; + } + +- err = sdhci_esdhc_imx_probe_dt(pdev, host, imx_data); +- if (err) +- goto disable_ahb_clk; +- + if (imx_data->socdata->flags & ESDHC_FLAG_MAN_TUNING) + sdhci_esdhc_ops.platform_execute_tuning = + esdhc_executing_tuning; +@@ -1676,15 +1676,13 @@ static int sdhci_esdhc_imx_probe(struct + if (imx_data->socdata->flags & ESDHC_FLAG_ERR004536) + host->quirks |= SDHCI_QUIRK_BROKEN_ADMA; + +- if (host->mmc->caps & MMC_CAP_8_BIT_DATA && +- imx_data->socdata->flags & ESDHC_FLAG_HS400) ++ if (imx_data->socdata->flags & ESDHC_FLAG_HS400) + host->mmc->caps2 |= MMC_CAP2_HS400; + + if (imx_data->socdata->flags & ESDHC_FLAG_BROKEN_AUTO_CMD23) + host->quirks2 |= SDHCI_QUIRK2_ACMD23_BROKEN; + +- if (host->mmc->caps & MMC_CAP_8_BIT_DATA && +- imx_data->socdata->flags & ESDHC_FLAG_HS400_ES) { ++ if (imx_data->socdata->flags & ESDHC_FLAG_HS400_ES) { + host->mmc->caps2 |= MMC_CAP2_HS400_ES; + host->mmc_host_ops.hs400_enhanced_strobe = + esdhc_hs400_enhanced_strobe; +@@ -1706,6 +1704,10 @@ static int sdhci_esdhc_imx_probe(struct + goto disable_ahb_clk; + } + ++ err = sdhci_esdhc_imx_probe_dt(pdev, host, imx_data); ++ if (err) ++ goto disable_ahb_clk; ++ + sdhci_esdhc_imx_hwinit(host); + + err = sdhci_add_host(host); diff --git a/series.conf b/series.conf index 9add2ad..5e573fb 100644 --- a/series.conf +++ b/series.conf @@ -20151,6 +20151,7 @@ patches.suse/vc_screen-reload-load-of-struct-vc_data-pointer-in-v.patch patches.suse/fbdev-udlfb-Fix-endpoint-check.patch patches.suse/powerpc-iommu-DMA-address-offset-is-incorrectly-calc.patch + patches.suse/mmc-sdhci-esdhc-imx-make-no-mmc-hs400-works.patch ######################################################## # end of sorted patches