diff mbox series

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

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

Commit Message

Yinbo Zhu May 23, 2019, 3:05 a.m. UTC
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(-)

Comments

Prabhakar Kushwaha June 19, 2019, 11:43 a.m. UTC | #1
> -----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 mbox series

Patch

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);