ARM: 6399/3: mmci: handle broken MCI_DATABLOCKEND hardware
authorLinus Walleij <linus.walleij@stericsson.com>
Tue, 19 Oct 2010 12:41:24 +0000 (13:41 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 10 Nov 2010 13:12:59 +0000 (13:12 +0000)
commitf20f8f21e0402c785c342547f7e49eafc42cfb52
treece9f9b37de7c065a406273d597bc31e114effdfd
parent2686b4b408c25349aee7b35558722d5730d67224
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>
drivers/mmc/host/mmci.c
drivers/mmc/host/mmci.h