aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc
diff options
context:
space:
mode:
authorUlf Hansson <ulf.hansson@stericsson.com>2011-12-13 11:05:28 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2012-01-19 19:00:58 -0500
commit7258db7efe7d9c5eb80151554faa1fa7411d6e3e (patch)
tree0511157ae197aed2af2c4e691e46c7ee20378e96 /drivers/mmc
parent2cd976c46472e34460349ed43a217e34f90bad55 (diff)
ARM: 7227/1: mmc: mmci: Prepare for SDIO before setting up DMA job
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>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/host/mmci.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index 6a21fc0bf3d8..b09ccb7223e5 100644
--- a/drivers/mmc/host/mmci.c
+++ b/drivers/mmc/host/mmci.c
@@ -615,6 +615,11 @@ static void mmci_start_data(struct mmci_host *host, struct mmc_data *data)
615 if (data->flags & MMC_DATA_READ) 615 if (data->flags & MMC_DATA_READ)
616 datactrl |= MCI_DPSM_DIRECTION; 616 datactrl |= MCI_DPSM_DIRECTION;
617 617
618 /* The ST Micro variants has a special bit to enable SDIO */
619 if (variant->sdio && host->mmc->card)
620 if (mmc_card_sdio(host->mmc->card))
621 datactrl |= MCI_ST_DPSM_SDIOEN;
622
618 /* 623 /*
619 * Attempt to use DMA operation mode, if this 624 * Attempt to use DMA operation mode, if this
620 * should fail, fall back to PIO mode 625 * should fail, fall back to PIO mode
@@ -643,11 +648,6 @@ static void mmci_start_data(struct mmci_host *host, struct mmc_data *data)
643 irqmask = MCI_TXFIFOHALFEMPTYMASK; 648 irqmask = MCI_TXFIFOHALFEMPTYMASK;
644 } 649 }
645 650
646 /* The ST Micro variants has a special bit to enable SDIO */
647 if (variant->sdio && host->mmc->card)
648 if (mmc_card_sdio(host->mmc->card))
649 datactrl |= MCI_ST_DPSM_SDIOEN;
650
651 writel(datactrl, base + MMCIDATACTRL); 651 writel(datactrl, base + MMCIDATACTRL);
652 writel(readl(base + MMCIMASK0) & ~MCI_DATAENDMASK, base + MMCIMASK0); 652 writel(readl(base + MMCIMASK0) & ~MCI_DATAENDMASK, base + MMCIMASK0);
653 mmci_set_mask1(host, irqmask); 653 mmci_set_mask1(host, irqmask);