linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] mmc: bcm2835: reset host on timeout
@ 2018-02-14 14:38 Michal Suchanek
  2018-02-14 14:38 ` [PATCH 2/2] mmc: bcm2835: print some informational messages during reset Michal Suchanek
  2018-02-14 14:58 ` [PATCH 1/2] mmc: bcm2835: reset host on timeout Stefan Wahren
  0 siblings, 2 replies; 21+ messages in thread
From: Michal Suchanek @ 2018-02-14 14:38 UTC (permalink / raw)
  To: linux-arm-kernel

The bcm2835 mmc host tends to lock up for unknown reason so reset it on
timeout. The upper mmc block layer tries retransimitting with single
blocks which tends to work out after a long wait.

This is better than giving up and leaving the machine broken for no
obvious reason.

Signed-off-by: Michal Suchanek <msuchanek@suse.de>
---
 drivers/mmc/host/bcm2835.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/mmc/host/bcm2835.c b/drivers/mmc/host/bcm2835.c
index 229dc18f0581..ce05fe72f865 100644
--- a/drivers/mmc/host/bcm2835.c
+++ b/drivers/mmc/host/bcm2835.c
@@ -286,6 +286,7 @@ static void bcm2835_reset(struct mmc_host *mmc)
 
 	if (host->dma_chan)
 		dmaengine_terminate_sync(host->dma_chan);
+	host->dma_chan = NULL;
 	bcm2835_reset_internal(host);
 }
 
@@ -837,6 +838,8 @@ static void bcm2835_timeout(struct work_struct *work)
 		dev_err(dev, "timeout waiting for hardware interrupt.\n");
 		bcm2835_dumpregs(host);
 
+		bcm2835_reset(host->mmc);
+
 		if (host->data) {
 			host->data->error = -ETIMEDOUT;
 			bcm2835_finish_data(host);
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2018-03-06 19:21 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-14 14:38 [PATCH 1/2] mmc: bcm2835: reset host on timeout Michal Suchanek
2018-02-14 14:38 ` [PATCH 2/2] mmc: bcm2835: print some informational messages during reset Michal Suchanek
2018-02-14 16:50   ` Florian Fainelli
2018-02-14 16:50   ` Florian Fainelli
2018-02-14 19:47     ` Michal Suchánek
2018-02-15 18:22       ` Stefan Wahren
2018-03-04 15:46         ` Michal Suchánek
2018-02-14 14:58 ` [PATCH 1/2] mmc: bcm2835: reset host on timeout Stefan Wahren
2018-02-14 15:36   ` Michal Suchánek
2018-02-14 16:13     ` Michal Suchánek
2018-02-14 16:49       ` Stefan Wahren
2018-02-14 19:24         ` Michal Suchánek
2018-02-14 20:30           ` Stefan Wahren
2018-03-04 15:57             ` Michal Suchánek
2018-03-04 18:11               ` Stefan Wahren
2018-03-04 18:44                 ` Michal Suchánek
2018-03-03 13:58           ` Stefan Wahren
2018-03-04 16:04             ` Michal Suchánek
2018-03-04 16:36             ` Michal Suchánek
2018-03-04 18:15               ` Stefan Wahren
2018-03-06 19:21             ` Michal Suchánek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).