aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/host/mmci.h
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@stericsson.com>2010-10-19 08:41:24 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-11-10 08:12:59 -0500
commitf20f8f21e0402c785c342547f7e49eafc42cfb52 (patch)
treece9f9b37de7c065a406273d597bc31e114effdfd /drivers/mmc/host/mmci.h
parent2686b4b408c25349aee7b35558722d5730d67224 (diff)
ARM: 6399/3: mmci: handle broken MCI_DATABLOCKEND hardware
On the U300 the MCI_DATAEND and MCI_DATABLOCKEND IRQs can arrive out-of-order. Replace an ugly #ifdef hack with a proper runtime solution which models what is really happening. In the U300 DMA mode and on all Ux500 models, the MCI_DATABLOCKEND flag isn't properly cleared in hardware following and ACK leading to all kind of weird behaviour when the flag is still up in subsequent interrupts, so we add two flags indicating the error and handle this runtime. Cc: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/mmc/host/mmci.h')
-rw-r--r--drivers/mmc/host/mmci.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/mmc/host/mmci.h b/drivers/mmc/host/mmci.h
index b4e48bde1b4e..df06f01aac89 100644
--- a/drivers/mmc/host/mmci.h
+++ b/drivers/mmc/host/mmci.h
@@ -177,6 +177,9 @@ struct mmci_host {
177 struct timer_list timer; 177 struct timer_list timer;
178 unsigned int oldstat; 178 unsigned int oldstat;
179 179
180 bool blockend;
181 bool dataend;
182
180 /* pio stuff */ 183 /* pio stuff */
181 struct sg_mapping_iter sg_miter; 184 struct sg_mapping_iter sg_miter;
182 unsigned int size; 185 unsigned int size;