Sorry, forget to cc stable maillist, will resend again. > -----Original Message----- > From: Bough Chen <haibo.chen@xxxxxxx> > Sent: 2023年5月4日 19:19 > To: adrian.hunter@xxxxxxxxx; ulf.hansson@xxxxxxxxxx; s.hauer@xxxxxxxxxxxxxx > Cc: linux-mmc@xxxxxxxxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>; Bough Chen > <haibo.chen@xxxxxxx>; shawnguo@xxxxxxxxxx; kernel@xxxxxxxxxxxxxx; > festevam@xxxxxxxxx > Subject: [PATCH] mmc: sdhci-esdhc-imx: make "no-mmc-hs400" works > > From: Haibo Chen <haibo.chen@xxxxxxx> > > 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 <haibo.chen@xxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > --- > drivers/mmc/host/sdhci-esdhc-imx.c | 18 ++++++++++-------- > 1 file changed, 10 insertions(+), 8 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c > b/drivers/mmc/host/sdhci-esdhc-imx.c > index d7c0c0b9e26c..eebf94604a7f 100644 > --- a/drivers/mmc/host/sdhci-esdhc-imx.c > +++ b/drivers/mmc/host/sdhci-esdhc-imx.c > @@ -1634,6 +1634,10 @@ sdhci_esdhc_imx_probe_dt(struct platform_device > *pdev, > 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; > > @@ -1724,10 +1728,6 @@ static int sdhci_esdhc_imx_probe(struct > platform_device *pdev) > host->mmc_host_ops.init_card = usdhc_init_card; > } > > - 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; > @@ -1735,15 +1735,13 @@ static int sdhci_esdhc_imx_probe(struct > platform_device *pdev) > 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; > @@ -1765,6 +1763,10 @@ static int sdhci_esdhc_imx_probe(struct > platform_device *pdev) > 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); > -- > 2.34.1