[U-Boot] [PATCH v4 2/2] mmc: fsl_esdhc: fix probe issue without CONFIG_BLK enabled

Prabhakar Kushwaha prabhakar.kushwaha at nxp.com
Wed May 22 17:35:44 UTC 2019


> -----Original Message-----
> From: Yinbo Zhu <yinbo.zhu at nxp.com>
> Sent: Wednesday, May 15, 2019 3:38 PM
> To: York Sun <york.sun at nxp.com>; u-boot at lists.denx.de; Vabhav Sharma
> <vabhav.sharma at nxp.com>
> Cc: Yinbo Zhu <yinbo.zhu at nxp.com>; Xiaobo Xie <xiaobo.xie at nxp.com>; Jiafei
> Pan <jiafei.pan at nxp.com>; Y.b. Lu <yangbo.lu at nxp.com>; Jagdish Gediya
> <jagdish.gediya at nxp.com>; Prabhakar Kushwaha
> <prabhakar.kushwaha at nxp.com>; Andy Tang <andy.tang at nxp.com>
> Subject: [PATCH v4 2/2] mmc: fsl_esdhc: fix probe issue without CONFIG_BLK
> enabled
> 
> From: Yangbo Lu <yangbo.lu at nxp.com>
> 
> u-boot is trying to make CONFIG_BLK as a hard requirement for DM_MMC. But
> now it's still not.
> 
> config BLK
> 	bool "Support block devices"
> 	depends on DM
> 	default y if DM_MMC
> 
> When fsl_esdhc driver was reworked for DM_MMC support, DM_MMC without
> CONFIG_BLK enabled wasn't considered. This patch is to fix probe issue without
> CONFIG_BLK enabled.
> 
> Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
> Signed-off-by: Yinbo Zhu <yinbo.zhu at nxp.com>
> ---
> Change in v4:
> 		Update the Copyright
> 

Adding complete history

>  drivers/mmc/fsl_esdhc.c | 30 +++++++++++++++++++++++++++++-
>  1 file changed, 29 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index
> 9e34557d16..53277c9216 100644
> --- a/drivers/mmc/fsl_esdhc.c
> +++ b/drivers/mmc/fsl_esdhc.c
> @@ -1,6 +1,6 @@
>  // SPDX-License-Identifier: GPL-2.0+
>  /*
> - * Copyright 2007, 2010-2011 Freescale Semiconductor, Inc
> + * Copyright 2007, 2010-2020 Freescale Semiconductor, Inc
>   * Andy Fleming
>   *

Freescale was there till 2016.
After that it is NXP. So add NXP copyright. 

Please resend this patch. 

>   * Based vaguely on the pxa mmc code:
> @@ -25,6 +25,10 @@
>  #include <asm-generic/gpio.h>
>  #include <dm/pinctrl.h>
> 
> +#if !CONFIG_IS_ENABLED(BLK)
> +#include "mmc_private.h"
> +#endif
> +
>  DECLARE_GLOBAL_DATA_PTR;
> 
>  #define SDHCI_IRQ_EN_BITS		(IRQSTATEN_CC | IRQSTATEN_TC | \
> @@ -34,6 +38,7 @@ DECLARE_GLOBAL_DATA_PTR;
>  				IRQSTATEN_DEBE | IRQSTATEN_BRR |
> IRQSTATEN_BWR | \
>  				IRQSTATEN_DINT)
>  #define MAX_TUNING_LOOP 40
> +#define ESDHC_DRIVER_STAGE_VALUE 0xffffffff
> 
>  struct fsl_esdhc {
>  	uint    dsaddr;		/* SDMA system address register */
> @@ -1448,6 +1453,9 @@ static int fsl_esdhc_probe(struct udevice *dev)
>  	fdt_addr_t addr;
>  	unsigned int val;
>  	struct mmc *mmc;
> +#if !CONFIG_IS_ENABLED(BLK)
> +	struct blk_desc *bdesc;
> +#endif
>  	int ret;
> 
>  	addr = dev_read_addr(dev);
> @@ -1576,6 +1584,26 @@ static int fsl_esdhc_probe(struct udevice *dev)
>  	mmc = &plat->mmc;
>  	mmc->cfg = &plat->cfg;
>  	mmc->dev = dev;
> +#if !CONFIG_IS_ENABLED(BLK)
> +	mmc->priv = priv;
> +
> +	/* Setup dsr related values */
> +	mmc->dsr_imp = 0;
> +	mmc->dsr = ESDHC_DRIVER_STAGE_VALUE;
> +	/* Setup the universal parts of the block interface just once */
> +	bdesc = mmc_get_blk_desc(mmc);
> +	bdesc->if_type = IF_TYPE_MMC;
> +	bdesc->removable = 1;
> +	bdesc->devnum = mmc_get_next_devnum();
> +	bdesc->block_read = mmc_bread;
> +	bdesc->block_write = mmc_bwrite;
> +	bdesc->block_erase = mmc_berase;
> +
> +	/* setup initial part type */
> +	bdesc->part_type = mmc->cfg->part_type;
> +	mmc_list_add(mmc);
> +#endif
> +
>  	upriv->mmc = mmc;
> 
>  	return esdhc_init_common(priv, mmc);

@ Peng. Can you please ack on this patch

--pk




More information about the U-Boot mailing list