mmc: sdhci: Auto-CMD23 fixes.
authorAndrei Warkentin <andreiw@motorola.com>
Wed, 25 May 2011 14:42:50 +0000 (10:42 -0400)
committerChris Ball <cjb@laptop.org>
Wed, 25 May 2011 20:52:26 +0000 (16:52 -0400)
Fixes bugs in Auto-CMD23 feature enable decision. Auto-CMD23
should be enabled if host is >= v3, and SDMA is not in use.

USE_ADMA | USE_SDMA | Auto-CMD23
---------+----------+-----------
    0    |    0     |     1
---------+----------+-----------
    0    |    1     |     0
---------+----------+-----------
    1    |    0     |     1
---------+----------+-----------
    1    |    1     |     1

Signed-off-by: Andrei Warkentin <andreiw@motorola.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/sdhci.c

index f845fd6a64ae55cce8862ff1d744cf1b75091292..58d5436ff649fb7b0319657464344be692a583c8 100644 (file)
@@ -2494,9 +2494,9 @@ int sdhci_add_host(struct sdhci_host *host)
                host->flags |= SDHCI_AUTO_CMD12;
 
        /* Auto-CMD23 stuff only works in ADMA or PIO. */
-       if ((host->version == SDHCI_SPEC_300) &&
+       if ((host->version >= SDHCI_SPEC_300) &&
            ((host->flags & SDHCI_USE_ADMA) ||
-            !(host->flags & SDHCI_REQ_USE_DMA))) {
+            !(host->flags & SDHCI_USE_SDMA))) {
                host->flags |= SDHCI_AUTO_CMD23;
                DBG("%s: Auto-CMD23 available\n", mmc_hostname(mmc));
        } else {