From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Nelson Date: Fri, 4 Dec 2015 15:42:33 -0700 Subject: [U-Boot] mmc erase fails from U-Boot command line In-Reply-To: <5661C0CB.2040900@nelint.com> References: <5620E3A7.7040909@defengcorp.com> <5624CEC5.8040901@digi.com> <52F917CEA1B9C64C94833D53889D478C269236@dor-sms-xch01.digi.com> <565DEF80.90204@nelint.com> <565F3CD3.1010100@nelint.com> <565F4674.8010306@nelint.com> <5661C0CB.2040900@nelint.com> Message-ID: <566216D9.4030202@nelint.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi all, On 12/04/2015 09:35 AM, Eric Nelson wrote: > Hi Fabio, > > On 12/02/2015 12:53 PM, Fabio Estevam wrote: >> On Wed, Dec 2, 2015 at 5:28 PM, Eric Nelson wrote: >> > ... >>> >>> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c >>> index 53084a7..8f5d9e1 100644 >>> --- a/drivers/mmc/mmc.c >>> +++ b/drivers/mmc/mmc.c >>> @@ -105,6 +105,9 @@ int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd >>> *cmd, struct mmc_data *data) >>> #else >>> ret = mmc->cfg->ops->send_cmd(mmc, cmd, data); >>> #endif >>> + if (ret) >>> + printf("error %d from CMD_SEND:%d\n", ret, cmd->cmdidx); >>> + >>> return ret; >> >> Applying this change on top of head I get: >> >> => mmc erase 4000 1000 >> >> MMC erase: dev # 2, block # 16384, count 4096 ... Timeout waiting for DAT0 to go >> high! >> error -19 from CMD_SEND:38 >> mmc erase failed >> 0 blocks erased: ERROR > > How easy is this for you to reproduce? > > I'm only seeing the error sporadically, which makes it difficult to > test. > I've figured out a way to repeat this on my machine. If I write 0xff's to the eMMC blocks, then issue an erase for the same, I get the problem with each MMC_ERASE command. I've also found something that fixes the issue in my testing. Changing SECURE_ERASE to 0 from 0x80000000 in include/mmc.h allows things to function for me. Page 115 of the JEDEC eMMC 4.5 spec says that bit 31 is obsolete and should be zero: http://www.jedec.org/sites/default/files/docs/jesd84-B45.pdf Hector and Fabio, can you test that change? Please advise, Eric diff --git a/include/mmc.h b/include/mmc.h index cda9a19..b1528d4 100644 --- a/include/mmc.h +++ b/include/mmc.h @@ -121,7 +121,7 @@ #define OCR_VOLTAGE_MASK 0x007FFF80 #define OCR_ACCESS_MODE 0x60000000 -#define SECURE_ERASE 0x80000000 +#define SECURE_ERASE 0x00000000