[PATCH] mmc: xenon_sdhci: remove wait_dat0 SDHCI OP

Stefan Roese sr at denx.de
Mon Mar 14 13:03:08 CET 2022


On 3/11/22 19:14, Robert Marko wrote:
> Generic SDHCI driver received support for checking the busy status by
> polling the DAT[0] level instead of waiting for the worst MMC switch time.
> 
> Unfortunately, it appears that this does not work for Xenon controllers
> despite being a part of the standard SDHCI registers and the Armada 3720
> datasheet itself telling that BIT(20) is useful for detecting the DAT[0]
> busy signal.
> 
> I have tried increasing the timeout value, but I have newer managed to
> catch DAT_LEVEL bits change from 0 at all.
> 
> This issue appears to hit most if not all SoC-s supported by Xenon driver,
> at least A3720, A8040 and CN9130 have non working eMMC currently.
> 
> So, until a better solution is found drop the wait_dat0 OP for Xenon.
> I was able to only test it on A3720, but it should work for others as well.
> 
> Fixes: 40e6f52454fc ("drivers: mmc: Add wait_dat0 support for sdhci driver")
> Signed-off-by: Robert Marko <robert.marko at sartura.hr>

Reviewed-by: Stefan Roese <sr at denx.de>

Thanks,
Stefan

> ---
>   drivers/mmc/xenon_sdhci.c | 7 ++++++-
>   1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/mmc/xenon_sdhci.c b/drivers/mmc/xenon_sdhci.c
> index e292f2903d..2f8805096c 100644
> --- a/drivers/mmc/xenon_sdhci.c
> +++ b/drivers/mmc/xenon_sdhci.c
> @@ -439,6 +439,8 @@ static const struct sdhci_ops xenon_sdhci_ops = {
>   	.set_ios_post = xenon_sdhci_set_ios_post
>   };
>   
> +static struct dm_mmc_ops xenon_mmc_ops;
> +
>   static int xenon_sdhci_probe(struct udevice *dev)
>   {
>   	struct xenon_sdhci_plat *plat = dev_get_plat(dev);
> @@ -452,6 +454,9 @@ static int xenon_sdhci_probe(struct udevice *dev)
>   	host->mmc->dev = dev;
>   	upriv->mmc = host->mmc;
>   
> +	xenon_mmc_ops = sdhci_ops;
> +	xenon_mmc_ops.wait_dat0 = NULL;
> +
>   	/* Set quirks */
>   	host->quirks = SDHCI_QUIRK_WAIT_SEND_CMD | SDHCI_QUIRK_32BIT_DMA_ADDR;
>   
> @@ -568,7 +573,7 @@ U_BOOT_DRIVER(xenon_sdhci_drv) = {
>   	.id		= UCLASS_MMC,
>   	.of_match	= xenon_sdhci_ids,
>   	.of_to_plat = xenon_sdhci_of_to_plat,
> -	.ops		= &sdhci_ops,
> +	.ops		= &xenon_mmc_ops,
>   	.bind		= xenon_sdhci_bind,
>   	.probe		= xenon_sdhci_probe,
>   	.remove		= xenon_sdhci_remove,

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list