mmc: mmci: add hardware busy timeout feature
authorLudovic Barre <ludovic.barre@st.com>
Tue, 8 Oct 2019 09:56:02 +0000 (11:56 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Wed, 13 Nov 2019 15:10:16 +0000 (16:10 +0100)
commit8266c585f4897ceff0959bd64d196f164caa0601
treea59e6a2e8dc7567aa437d8cbb587af0b7dfc5cb9
parente2b98d83ff0c1aaba31c767673c8000e20ad3524
mmc: mmci: add hardware busy timeout feature

In the stm32_sdmmc variant, the datatimer is active not only during
data transfers with the DPSM, but also while waiting for the busyend
IRQs from commands having the MMC_RSP_BUSY flag set. This leads to an
incorrect IRQ being raised to signal MCI_DATATIMEOUT error, which
simply breaks the behaviour.

Address this by updating the datatimer value before sending a command
having the MMC_RSP_BUSY flag set. To inform the mmc core about the
maximum supported busy timeout, which also depends on the current
clock rate, set ->max_busy_timeout (in ms).

Signed-off-by: Ludovic Barre <ludovic.barre@st.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/mmci.c
drivers/mmc/host/mmci.h