[PATCH v2 6/7] atmel-mci: Don't overwrite error bits when NOTBUSY is set

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Haavard Skinnemoen
Date: Sunday, October 5, 2008 - 9:21 am

After a data error, we wait for the NOTBUSY bit to be set so that we can
be sure the data transfer is completely finished. However, when NOTBUSY
is set, the interrupt handler copies the contents of SR into
data_status, overwriting any error bits we may have detected earlier.

To avoid this, initialize data_status to 0 before starting a request, and
don't overwrite it unless it still contains 0.

Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
---
 drivers/mmc/host/atmel-mci.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
index d45dfa2..02529af 100644
--- a/drivers/mmc/host/atmel-mci.c
+++ b/drivers/mmc/host/atmel-mci.c
@@ -694,6 +694,7 @@ static void atmci_start_request(struct atmel_mci *host,
 
 	host->pending_events = 0;
 	host->completed_events = 0;
+	host->data_status = 0;
 
 	if (host->need_reset) {
 		mci_writel(host, CR, MCI_CR_SWRST);
@@ -1408,7 +1409,8 @@ static irqreturn_t atmci_interrupt(int irq, void *dev_id)
 		if (pending & MCI_NOTBUSY) {
 			mci_writel(host, IDR,
 					ATMCI_DATA_ERROR_FLAGS | MCI_NOTBUSY);
-			host->data_status = status;
+			if (!host->data_status)
+				host->data_status = status;
 			smp_wmb();
 			atmci_set_pending(host, EVENT_DATA_COMPLETE);
 			tasklet_schedule(&host->tasklet);
-- 
1.5.6.5

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH v2 0/7] atmel-mci: updates for 2.6.28, Haavard Skinnemoen, (Sun Oct 5, 9:21 am)
[PATCH v2 1/7] atmel-mci: Implement tasklet as a state machine, Haavard Skinnemoen, (Sun Oct 5, 9:21 am)
[PATCH v2 2/7] atmel-mci: Don't stop the clock between tra ..., Haavard Skinnemoen, (Sun Oct 5, 9:21 am)
[PATCH v2 3/7] atmel-mci: Platform code for supporting mul ..., Haavard Skinnemoen, (Sun Oct 5, 9:21 am)
[PATCH v2 4/7] atmel-mci: support multiple mmc slots, Haavard Skinnemoen, (Sun Oct 5, 9:21 am)
[PATCH v2 5/7] atmel-mci: Add experimental DMA support, Haavard Skinnemoen, (Sun Oct 5, 9:21 am)
[PATCH v2 6/7] atmel-mci: Don't overwrite error bits when ..., Haavard Skinnemoen, (Sun Oct 5, 9:21 am)
[PATCH v2 7/7] atmel-mci: Add missing flush_dcache_page() ..., Haavard Skinnemoen, (Sun Oct 5, 9:21 am)
Re: [PATCH v2 0/7] atmel-mci: updates for 2.6.28, Haavard Skinnemoen, (Sun Oct 5, 11:46 am)
Re: [PATCH v2 4/7] atmel-mci: support multiple mmc slots, Pierre Ossman, (Sun Oct 12, 1:39 am)
Re: [PATCH v2 0/7] atmel-mci: updates for 2.6.28, Pierre Ossman, (Sun Oct 12, 1:50 am)
Re: [PATCH v2 4/7] atmel-mci: support multiple mmc slots, Haavard Skinnemoen, (Sun Oct 12, 6:13 am)
Re: [PATCH v2 4/7] atmel-mci: support multiple mmc slots, Pierre Ossman, (Sun Oct 12, 8:58 am)
Re: [PATCH v2 4/7] atmel-mci: support multiple mmc slots, Haavard Skinnemoen, (Sun Oct 12, 9:07 am)