diff options
author | Linus Walleij <linus.walleij@stericsson.com> | 2010-10-19 13:41:24 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-11-10 13:12:59 +0000 |
commit | f20f8f21e0402c785c342547f7e49eafc42cfb52 (patch) | |
tree | ce9f9b37de7c065a406273d597bc31e114effdfd /drivers/mmc/host/mmci.h | |
parent | 2686b4b408c25349aee7b35558722d5730d67224 (diff) | |
download | blackbird-op-linux-f20f8f21e0402c785c342547f7e49eafc42cfb52.tar.gz blackbird-op-linux-f20f8f21e0402c785c342547f7e49eafc42cfb52.zip |
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.h | 3 |
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 { struct timer_list timer; unsigned int oldstat; + bool blockend; + bool dataend; + /* pio stuff */ struct sg_mapping_iter sg_miter; unsigned int size; |