On Tue, 8 Oct 2024 at 13:18, Jonas Karlman <[email protected]> wrote: > > The commit 0252924ac6d4 ("mmc: dw_mmc: Extract FIFO data transfer into a > separate routine") unintentionally changed behavior of the FIFO data > transfer routine. > > When data is read and size reaches 0 the original loop would wait on > DWMCI_INTMSK_DTO or timeout. The remaining size to read and buf position > is no longer tracked across dwmci_data_transfer_fifo() calls and because > of this an extra call to fifo() and dwmci_fifo_ready() may now trigger a > FIFO underflow timeout error and slows down FIFO reading. > > Buswidth = 4, clock: 50000000 > Sending CMD16 > Sending CMD17 > dwmci_fifo_ready: FIFO underflow timeout > Sending CMD16 > Sending CMD18 > dwmci_fifo_ready: FIFO underflow timeout > Sending CMD12 > ## Checking hash(es) for config config-1 ... OK > > This reverts commit 0252924ac6d4af69061bb9589d16b30c5bdb7178 to restore > the old working behavior. > > Fixes: 0252924ac6d4 ("mmc: dw_mmc: Extract FIFO data transfer into a separate > routine") > Signed-off-by: Jonas Karlman <[email protected]> > --- > Changes in v2: > - Change to revert the offending commit, both size and buf where reset > between fifo() calls, easier to do a full revert. > - R-b tag not collected because of this being a different patch. > > Reading FIT from SD-card take ~20-30 seconds on a Rockchip RK3328 board > without this reverted, and goes back to sub second once reverted. > --- > drivers/mmc/dw_mmc.c | 103 ++++++++++++++++++++++--------------------- > 1 file changed, 52 insertions(+), 51 deletions(-)
Reviewed-by: Simon Glass <[email protected]>

