mmc: mmci: add threaded irq to abort DPSM of non-functional state
authorLudovic Barre <ludovic.barre@st.com>
Wed, 11 Dec 2019 13:39:34 +0000 (14:39 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Wed, 18 Dec 2019 13:05:31 +0000 (14:05 +0100)
commitee157abebc0c8ddb1de9c7cb2b8d8a06c69ce17d
treebb4ac0c712c06d5586394ebe9b485f62e8880cd5
parentd0052ad90e712aaa76190e05fc1b0a8acb3b449e
mmc: mmci: add threaded irq to abort DPSM of non-functional state

The stm32_sdmmc variant has build-in support for datatimeout for R1B
requests. If a corresponding IRQ is raised, this triggers the DPSM to stay
busy and remains in a non-functional state. Only a reset can bring it back
to a functional state.

Because a reset must be issued from non-atomic context, let's defer this to
be managed from a threaded IRQ handler. Besides the reset, the threaded
handler also calls mmc_request_done(), to finally complete the request.

Signed-off-by: Ludovic Barre <ludovic.barre@st.com>
Link: https://lore.kernel.org/r/20191211133934.16932-1-ludovic.Barre@st.com
[Ulf: A few minor updates to the changelog/comments]
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/mmci.c
drivers/mmc/host/mmci.h