Skip to content

Commit

Permalink
mmc: mmci: stm32: clear DLYB_CR after sending tuning command
Browse files Browse the repository at this point in the history
During test campaign, and especially after several unbind/bind sequences,
it has been seen that the SD-card on SDMMC1 thread could freeze.
The freeze always appear on a CMD23 following a CMD19.
Checking SDMMC internal registers shows that the tuning command (CMD19)
has failed.
The freeze is then due to the delay block involved in the tuning sequence.
To correct this, clear the delay block register DLYB_CR register after
the tuning commands.

Signed-off-by: Christophe Kerello <[email protected]>
Signed-off-by: Yann Gautier <[email protected]>
Reviewed-by: Linus Walleij <[email protected]>
Fixes: 1103f80 ("mmc: mmci_sdmmc: Add execute tuning with delay block")
Cc: [email protected]
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Ulf Hansson <[email protected]>
  • Loading branch information
Yann-lms authored and storulf committed Dec 21, 2021
1 parent f89b548 commit ff31ee0
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions drivers/mmc/host/mmci_stm32_sdmmc.c
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,8 @@ static int sdmmc_dlyb_phase_tuning(struct mmci_host *host, u32 opcode)
return -EINVAL;
}

writel_relaxed(0, dlyb->base + DLYB_CR);

phase = end_of_len - max_len / 2;
sdmmc_dlyb_set_cfgr(dlyb, dlyb->unit, phase, false);

Expand Down

0 comments on commit ff31ee0

Please sign in to comment.