]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
ARM: 7227/1: mmc: mmci: Prepare for SDIO before setting up DMA job
authorUlf Hansson <ulf.hansson@stericsson.com>
Tue, 13 Dec 2011 16:05:28 +0000 (17:05 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 20 Jan 2012 00:00:58 +0000 (00:00 +0000)
Move the SDIO preparation to be done before the DMA job is setup.
This makes it possible to do DMA for SDIO transfers as well as the
earlier supported pio mode.

Signed-off-by: Ulf Hansson <ulf.hansson@stericsson.com>
Signed-off-by: Stefan Nilsson XK <stefan.xk.nilsson@stericsson.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/mmc/host/mmci.c

index 6a21fc0bf3d86487b0d006ef11f86359afd7d477..b09ccb7223e54d6b285ce5fd8e25be2ae6bc30b6 100644 (file)
@@ -615,6 +615,11 @@ static void mmci_start_data(struct mmci_host *host, struct mmc_data *data)
        if (data->flags & MMC_DATA_READ)
                datactrl |= MCI_DPSM_DIRECTION;
 
+       /* The ST Micro variants has a special bit to enable SDIO */
+       if (variant->sdio && host->mmc->card)
+               if (mmc_card_sdio(host->mmc->card))
+                       datactrl |= MCI_ST_DPSM_SDIOEN;
+
        /*
         * Attempt to use DMA operation mode, if this
         * should fail, fall back to PIO mode
@@ -643,11 +648,6 @@ static void mmci_start_data(struct mmci_host *host, struct mmc_data *data)
                irqmask = MCI_TXFIFOHALFEMPTYMASK;
        }
 
-       /* The ST Micro variants has a special bit to enable SDIO */
-       if (variant->sdio && host->mmc->card)
-               if (mmc_card_sdio(host->mmc->card))
-                       datactrl |= MCI_ST_DPSM_SDIOEN;
-
        writel(datactrl, base + MMCIDATACTRL);
        writel(readl(base + MMCIMASK0) & ~MCI_DATAENDMASK, base + MMCIMASK0);
        mmci_set_mask1(host, irqmask);