CHROMIUM: mmc: sdhci: handle busy-end interrupt during command

Patch derived from https://lkml.org/lkml/2014/2/3/12

When controller supports busy-end interrupts, they may send it
before commands complete. If the host sends a new command too early,
it will result in CRC errors.

CMD  : CMD | ,,,, |   RESPONSE   |
DATA :     |    busy    |
                        .        .
                        .        . sdhci_cmd_irq (command interupt)
                        .
                        . sdhci_data_irq ("busy end" interrupt)

Before this patch, if the CPU is very fast, when sdhci_data_irq is
executed, it would complete the command and issue a new one while
CMD line is still driven by the device, resulting in a CRC error.

With this patch, we wait for both interrupts to be received before
completing the command.

TEST=On swanky with Tohisba eMMC, check the error messages:
 mmc0: Got command interrupt 0x00000001 even though no command operation was in progress.
and
 mmc0: unexpected status 0x800800 after switch
are gone.
BUG=chrome-os-partner:29817

Change-Id: I43b7467d59eb133d8c545115b48a5acbc450c2dd
Signed-off-by: Hankyung Yu <hankyung.yu@lge.com>
Signed-off-by: Chanho Min <chanho.min@lge.com>
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/206033
Reviewed-by: Sonny Rao <sonnyrao@chromium.org>
Tested-by: Yung Leem <yungleem@chromium.org>
(cherry picked from commit e794c9f173a20d7788ca50cf543fce65fbda3f29)
Reviewed-on: https://chromium-review.googlesource.com/206406