[U-Boot] [PATCH] arm: mmc: increase MMC SDHCI read status timeout
Steve Rae
steve.rae at raedomain.com
Tue Jun 28 22:53:52 CEST 2016
Hi Tom,
On Tue, Jun 28, 2016 at 1:34 PM, Tom Rini <trini at konsulko.com> wrote:
> On Tue, Jun 28, 2016 at 01:30:09PM -0700, Steve Rae wrote:
>> Hi Stefan,
>>
>> On Tue, Jun 28, 2016 at 8:00 AM, Stefan Roese <sr at denx.de> wrote:
>> > Hi Steve,
>> >
>> > On 27.06.2016 23:43, Steve Rae wrote:
>> >>
>> >> Otherwise, ocassionally see errors like this:
>> >> 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]
>> >>
>> >> This does not affect the actual writing speed, which is controlled by
>> >> the default value:
>> >> CONFIG_SDHCI_CMD_DEFAULT_TIMEOUT
>> >>
>> >> It only increases the retries when reading:
>> >> SDHCI_INT_STATUS
>> >> to avoid the timeout error.
>> >>
>> >> Signed-off-by: Steve Rae <steve.rae at raedomain.com>
>> >> ---
>> >> as per the discussion in:
>> >> http://lists.denx.de/pipermail/u-boot/2016-June/258966.html
>> >> this supercedes:
>> >> http://patchwork.ozlabs.org/patch/615994/
>> >
>> >
>> > IIRC, I've suggested to move SDHCI_CMD_DEFAULT_TIMEOUT to Kconfig
>> > and use the old value as default value. So that you can overwrite
>> > it for your board / platform via your defconfig. But I have no
>> > strong feelings here - your current version also works for
>> > me and does not "clutter" the Kconfig subsystem with too many
>> > values. So:
>> >
>> > Reviewed-by: Stefan Roese <sr at denx.de>
>> >
>> > Thanks,
>> > Stefan
>> >
>>
>> Thanks for the review...
>> I didn't want to touch the "performance" algorithm related to
>> SDHCI_CMD_DEFAULT_TIMEOUT (which maybe should be in Kconfig).
>> However, the retry loop related to SDHCI_READ_STATUS_TIMEOUT doesn't need to
>> be in Kconfig -- it is just a define.
>
> ... so how is this handled in the kernel? I'm assuming some DT
> property..
>
> --
> Tom
( we discussed this in the other email thread; but I'll copy it here... )
It looks like (v.4.6) the code loops for max_loops=16,
and it looks like the loop delay is created by a write (which does not
exist in the U-Boot code):
sdhci_writel(host, mask, SDHCI_INT_STATUS);
Thanks, Steve
More information about the U-Boot
mailing list