From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Roese Date: Fri, 24 Jun 2016 06:56:43 +0200 Subject: [U-Boot] error: sdhci_send_command: Timeout for status update! In-Reply-To: References: Message-ID: <576CBD8B.5010404@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Steve, On 24.06.2016 00:06, Steve Rae wrote: > I am asking you about this code, because of this: > commit 29905a4 - mmc: sdhci: Use timer based timeout detection in > sdhci_send_command() > > Occasionally, I am seeing failures when writing to flash on my device: > > Flashing sparse image at offset 2078720 > Flashing Sparse Image > sdhci_send_command: Timeout for status update! > mmc fail to send stop cmd > write_sparse_image: Write failed, block #2181088 [0] > > I can eliminate this error if I kludge the following code: > > diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c > index 5c71ab8..854f7ce 100644 > --- a/drivers/mmc/sdhci.c > +++ b/drivers/mmc/sdhci.c > @@ -243,9 +243,9 @@ static int sdhci_send_command(struct mmc *mmc, > struct mmc_cmd *cmd, > if (stat & SDHCI_INT_ERROR) > break; > } while (((stat & mask) != mask) && > - (get_timer(start) < CONFIG_SDHCI_CMD_DEFAULT_TIMEOUT)); > + (get_timer(start) < 600 /*CONFIG_SDHCI_CMD_DEFAULT_TIMEOUT*/)); > > - if (get_timer(start) >= CONFIG_SDHCI_CMD_DEFAULT_TIMEOUT) { > + if (get_timer(start) >= 600 /*CONFIG_SDHCI_CMD_DEFAULT_TIMEOUT*/) { > if (host->quirks & SDHCI_QUIRK_BROKEN_R1B) > return 0; > else { > > I don't know much about this - I arrived at 600 by trial and error > (500 fails...) > Any ideas? Perhaps your platform needs a bigger timeout value. Did you check what the Linux driver does here? You could move CONFIG_SDHCI_CMD_DEFAULT_TIMEOUT to Kconfig with a default of 100 and select a higher value for your platform. Thanks, Stefan