From ee157abebc0c8ddb1de9c7cb2b8d8a06c69ce17d Mon Sep 17 00:00:00 2001 From: Ludovic Barre Date: Wed, 11 Dec 2019 14:39:34 +0100 Subject: 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 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 --- drivers/mmc/host/mmci.h | 1 + 1 file changed, 1 insertion(+) (limited to 'drivers/mmc/host/mmci.h') diff --git a/drivers/mmc/host/mmci.h b/drivers/mmc/host/mmci.h index 12d4ed8af88a..be6cd1df2bf3 100644 --- a/drivers/mmc/host/mmci.h +++ b/drivers/mmc/host/mmci.h @@ -411,6 +411,7 @@ struct mmci_host { struct timer_list timer; unsigned int oldstat; + u32 irq_action; /* pio stuff */ struct sg_mapping_iter sg_miter; -- cgit v1.2.3