summaryrefslogtreecommitdiffstats
path: root/drivers/mmc
diff options
context:
space:
mode:
authorSan Mehat <san@google.com>2009-12-03 02:24:58 +0100
committerDaniel Walker <dwalker@codeaurora.org>2010-03-18 21:37:22 +0100
commit6ac9ea69069804d357064357d0082b0eab4c87ce (patch)
tree33fd578d5efde5cd0c671d41e37397d5c2ecb9a1 /drivers/mmc
parentmmc: msm_sdcc: Don't set host->curr.mrq until after we're sure the busclk tim... (diff)
downloadlinux-6ac9ea69069804d357064357d0082b0eab4c87ce.tar.xz
linux-6ac9ea69069804d357064357d0082b0eab4c87ce.zip
mmc: msm_sdcc: Fix the dma exec function to use the proper delays
Signed-off-by: San Mehat <san@google.com> Signed-off-by: Daniel Walker <dwalker@codeaurora.org>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/host/msm_sdcc.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/mmc/host/msm_sdcc.c b/drivers/mmc/host/msm_sdcc.c
index 28899ee392e2..8329fd650c5f 100644
--- a/drivers/mmc/host/msm_sdcc.c
+++ b/drivers/mmc/host/msm_sdcc.c
@@ -177,17 +177,18 @@ msmsdcc_start_command_exec(struct msmsdcc_host *host, u32 arg, u32 c) {
static void
msmsdcc_dma_exec_func(struct msm_dmov_cmd *cmd)
{
- struct msmsdcc_host *host = (struct msmsdcc_host *)cmd->data;
+ struct msmsdcc_host *host = (struct msmsdcc_host *)cmd->data;
- writel(host->cmd_timeout, host->base + MMCIDATATIMER);
- writel((unsigned int)host->curr.xfer_size, host->base + MMCIDATALENGTH);
- writel(host->cmd_pio_irqmask, host->base + MMCIMASK1);
- writel(host->cmd_datactrl, host->base + MMCIDATACTRL);
+ msmsdcc_writel(host, host->cmd_timeout, MMCIDATATIMER);
+ msmsdcc_writel(host, (unsigned int)host->curr.xfer_size, MMCIDATALENGTH);
+ msmsdcc_writel(host, host->cmd_pio_irqmask, MMCIMASK1);
+ msmsdcc_writel(host, host->cmd_datactrl, MMCIDATACTRL);
- if (host->cmd_cmd) {
- msmsdcc_start_command_exec(host,
- (u32)host->cmd_cmd->arg, (u32)host->cmd_c);
- }
+ if (host->cmd_cmd) {
+ msmsdcc_start_command_exec(host,
+ (u32) host->cmd_cmd->arg,
+ (u32) host->cmd_c);
+ }
host->dma.active = 1;
}