summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJuhyun \(Justin\) Oh <Juhyun_Oh@sigmadesigns.com>2013-09-13 18:06:00 +0000
committerPantelis Antoniou <panto@antoniou-consulting.com>2013-09-20 19:02:29 +0300
commit2c011847c129491084a19c753a039a3441b7dce4 (patch)
tree4d322d8528690691506217f44942c8506a89e8a3 /drivers
parente8232fea41be712bfe894abbff08c39015d8d5d2 (diff)
Fix wrong sdhci host control register read and write
The patch fixes the improper read and write of sdhci host control register for sdma transfer. The problem comes when reading and writing 1 byte long host control register with the sdhci_readl() and sdhci_writel(). The misuse of these functions overwrite the value of the next registers which are in 4 bytes boundary. This patch replaces four byte register read/write functions with one byte read/write ones. Beside, it eliminates unnecessary bit operation. i.e. or-ing zero against a variable. Signed-off-by: Juhyun (Justin) Oh <Juhyun_Oh@sigmadesigns.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mmc/sdhci.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
index 14fe41f6c4..dfb2eeeb4d 100644
--- a/drivers/mmc/sdhci.c
+++ b/drivers/mmc/sdhci.c
@@ -68,10 +68,9 @@ static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data,
unsigned int stat, rdy, mask, timeout, block = 0;
#ifdef CONFIG_MMC_SDMA
unsigned char ctrl;
- ctrl = sdhci_readl(host, SDHCI_HOST_CONTROL);
+ ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
ctrl &= ~SDHCI_CTRL_DMA_MASK;
- ctrl |= SDHCI_CTRL_SDMA;
- sdhci_writel(host, ctrl, SDHCI_HOST_CONTROL);
+ sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
#endif
timeout = 1000000;