[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