Message ID | 20190523030546.16639-2-yinbo.zhu@nxp.com |
---|---|
State | Accepted |
Delegated to: | Prabhakar Kushwaha |
Headers | show |
Series | [U-Boot,v5,1/2] armv8: fsl-lsch3: add clock support for the second eSDHC | expand |
> -----Original Message----- > From: Yinbo Zhu <yinbo.zhu@nxp.com> > Sent: Thursday, May 23, 2019 8:36 AM > To: York Sun <york.sun@nxp.com>; u-boot@lists.denx.de; Prabhakar Kushwaha > <prabhakar.kushwaha@nxp.com>; Vabhav Sharma <vabhav.sharma@nxp.com> > Cc: Yinbo Zhu <yinbo.zhu@nxp.com>; Xiaobo Xie <xiaobo.xie@nxp.com>; Jiafei > Pan <jiafei.pan@nxp.com>; Y.b. Lu <yangbo.lu@nxp.com>; Jagdish Gediya > <jagdish.gediya@nxp.com>; Andy Tang <andy.tang@nxp.com>; G.h. Gao > <guanhua.gao@nxp.com> > Subject: [PATCH v5 2/2] mmc: fsl_esdhc: fix probe issue without CONFIG_BLK > enabled > > From: Yangbo Lu <yangbo.lu@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@nxp.com> > Signed-off-by: Yinbo Zhu <yinbo.zhu@nxp.com> > --- > Change in v2: > Change in v3: > Remove non-TFA patch > Change in v4: > update the Copyright information Change in v5: > Add NXP Copyright information > > drivers/mmc/fsl_esdhc.c | 31 ++++++++++++++++++++++++++++++- > 1 file changed, 30 insertions(+), 1 deletion(-) > Fixed copyright issue This patch has been applied to fsl-qoriq master, awaiting upstream. --pk
diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index 3cdfa7f5a6..8ed1b7b553 100644 --- a/drivers/mmc/fsl_esdhc.c +++ b/drivers/mmc/fsl_esdhc.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * Copyright 2007, 2010-2011 Freescale Semiconductor, Inc + * Copyright 2007-2016 Freescale Semiconductor, Inc. + * Copyright 2017-2019 NXP Semiconductors * Andy Fleming * * Based vaguely on the pxa mmc code: @@ -25,6 +26,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 +39,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 */ @@ -1401,6 +1407,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); @@ -1529,6 +1538,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);