Date: Wed, 21 May 2014 00:58:37 +0900 (JST) From: SAITOU Toshihide <toshi@ruby.ocn.ne.jp> To: freebsd-arm@freebsd.org Subject: Re: BBB MMC / SD detection instability with U-Boot 2014.04 (CPU 1GHz) Message-ID: <20140521.005837.00935147.toshi@ruby.ocn.ne.jp> In-Reply-To: <20140520.234245.38709064.toshi@ruby.ocn.ne.jp> References: <20140520.212003.232778263.toshi@ruby.ocn.ne.jp> <537B62D1.4090901@hot.ee> <20140520.234245.38709064.toshi@ruby.ocn.ne.jp>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
In message: <20140520.234245.38709064.toshi@ruby.ocn.ne.jp>
SAITOU Toshihide <toshi@ruby.ocn.ne.jp> writes:
>>> u-boot-2014.04.tar.bz2
>>>
>>> patch
>>>
>>> 1. apply these patches:
>>>
>>> http://lists.freebsd.org/pipermail/freebsd-arm/2014-April/007922.html
>>> ~/crochet-freebsd/board/BeagleBone/files/uboot-2013.04_api_api_storage.c.patch
>>> ~/crochet-freebsd/board/BeagleBone/files/uboot-2013.04_drivers_mmc_mmc.c.patch
I forgot to mention that I had changed uboot-2013.04_drivers_mmc_mmc.c.patch a bit.
Sorry for bother you
--
SAITOU Toshihide
[-- Attachment #2 --]
--- mmc.c.orig 2014-05-21 00:52:57.000000000 +0900
+++ mmc.c 2014-05-20 23:52:09.000000000 +0900
@@ -1225,9 +1225,14 @@
block_dev_desc_t *mmc_get_dev(int dev)
{
struct mmc *mmc = find_mmc_device(dev);
- if (!mmc || mmc_init(mmc))
+ if (!mmc)
return NULL;
+ /* If mmc_init fails, mmc->block_dev will be of type
+ * DEV_TYPE_UNKNOWN with blksz and lba set to zero.
+ */
+ mmc_init(mmc);
+
return &mmc->block_dev;
}
#endif
@@ -1252,7 +1257,7 @@
err = mmc->cfg->ops->init(mmc);
if (err)
- return err;
+ goto done;
mmc_set_bus_width(mmc, 1);
mmc_set_clock(mmc, 1);
@@ -1261,7 +1266,7 @@
err = mmc_go_idle(mmc);
if (err)
- return err;
+ goto done;
/* The internal partition reset to user partition(0) at every CMD0*/
mmc->part_num = 0;
@@ -1280,13 +1285,24 @@
#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT)
printf("Card did not respond to voltage select!\n");
#endif
- return UNUSABLE_ERR;
+// return UNUSABLE_ERR;
+ goto done;
}
}
if (err == IN_PROGRESS)
mmc->init_in_progress = 1;
+done:
+ if (err) {
+ mmc->has_init = 0;
+ mmc->block_dev.type = DEV_TYPE_UNKNOWN;
+ mmc->block_dev.blksz = 0;
+ mmc->block_dev.lba = 0;
+ } else {
+ mmc->has_init = 1;
+ }
+
return err;
}
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140521.005837.00935147.toshi>
