Message ID | 20221013093248.2220802-1-s.hauer@pengutronix.de |
---|---|
State | New |
Headers | show |
Series | mmc: sdhci-esdhc-imx: Propagate ESDHC_FLAG_HS400* only on 8bit bus | expand |
On Thu, 13 Oct 2022 at 11:32, Sascha Hauer <s.hauer@pengutronix.de> wrote: > > The core issues the warning "drop HS400 support since no 8-bit bus" when > one of the ESDHC_FLAG_HS400* flags is set on a non 8bit capable host. To > avoid this warning set these flags only on hosts that actually can do > 8bit, i.e. have bus-width = <8> set in the device tree. > > Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> I added a fixes tag, see below. Fixes: 029e2476f9e6 ("mmc: sdhci-esdhc-imx: add HS400_ES support for i.MX8QXP") I haven't tried if the patch applies on stable kernels beyond that commit, but if not, it should be a trivial conflict to resolve. So, I applied this for fixes and by adding a stable tag, thanks! Kind regards Uffe > --- > drivers/mmc/host/sdhci-esdhc-imx.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c > index 3f4eb49afa025..003534b78493b 100644 > --- a/drivers/mmc/host/sdhci-esdhc-imx.c > +++ b/drivers/mmc/host/sdhci-esdhc-imx.c > @@ -1663,6 +1663,10 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev) > 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; > @@ -1670,13 +1674,15 @@ 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 (imx_data->socdata->flags & ESDHC_FLAG_HS400) > + if (host->caps & MMC_CAP_8_BIT_DATA && > + 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 (imx_data->socdata->flags & ESDHC_FLAG_HS400_ES) { > + if (host->caps & MMC_CAP_8_BIT_DATA && > + 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; > @@ -1698,10 +1704,6 @@ 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.30.2 >
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c index 3f4eb49afa025..003534b78493b 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -1663,6 +1663,10 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev) 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; @@ -1670,13 +1674,15 @@ 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 (imx_data->socdata->flags & ESDHC_FLAG_HS400) + if (host->caps & MMC_CAP_8_BIT_DATA && + 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 (imx_data->socdata->flags & ESDHC_FLAG_HS400_ES) { + if (host->caps & MMC_CAP_8_BIT_DATA && + 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; @@ -1698,10 +1704,6 @@ 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);
The core issues the warning "drop HS400 support since no 8-bit bus" when one of the ESDHC_FLAG_HS400* flags is set on a non 8bit capable host. To avoid this warning set these flags only on hosts that actually can do 8bit, i.e. have bus-width = <8> set in the device tree. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> --- drivers/mmc/host/sdhci-esdhc-imx.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)