diff options
author | Wilson Callan <wilson.callan@savantsystems.com> | 2012-07-19 06:49:16 (GMT) |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2012-07-22 20:42:30 (GMT) |
commit | 9a0985b78d70209db1e0d870f7be80272a0e7642 (patch) | |
tree | aac27528e36b09c9b4710a6090c7cb34a207173d | |
parent | 108ecc4cf9c46a4caabaf18efc42d19818c95b70 (diff) | |
download | linux-9a0985b78d70209db1e0d870f7be80272a0e7642.tar.xz |
mmc: esdhc: Fix DMA_MASK to not break mx25 DMA access
Patch to not set reserved bits in i.MX25 PROCTL register. DMA stops
working if those bits get set.
Signed-off-by: Wilson Callan <wilson.callan@savantsystems.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
-rw-r--r-- | drivers/mmc/host/sdhci-esdhc-imx.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c index ebbe984..e23f813 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -299,6 +299,8 @@ static void esdhc_writew_le(struct sdhci_host *host, u16 val, int reg) static void esdhc_writeb_le(struct sdhci_host *host, u8 val, int reg) { + struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); + struct pltfm_imx_data *imx_data = pltfm_host->priv; u32 new_val; switch (reg) { @@ -315,8 +317,11 @@ static void esdhc_writeb_le(struct sdhci_host *host, u8 val, int reg) SDHCI_CTRL_D3CD); /* ensure the endianess */ new_val |= ESDHC_HOST_CONTROL_LE; - /* DMA mode bits are shifted */ - new_val |= (val & SDHCI_CTRL_DMA_MASK) << 5; + /* bits 8&9 are reserved on mx25 */ + if (!is_imx25_esdhc(imx_data)) { + /* DMA mode bits are shifted */ + new_val |= (val & SDHCI_CTRL_DMA_MASK) << 5; + } esdhc_clrset_le(host, 0xffff, new_val, reg); return; |