diff options
author | Lucas Stach <dev@lynxeye.de> | 2015-12-22 13:41:01 -0500 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@linaro.org> | 2015-12-28 08:14:56 -0500 |
commit | 74cd42bcad7486664d13b1b42bc81a399d7ed763 (patch) | |
tree | d09a5a03f18bb0e41e5d2efc10d89e411d66242b /drivers/mmc | |
parent | a8e326a911d3ca1b7480aca936956a4e89c4add5 (diff) |
mmc: tegra: disable SPI_MODE_CLKEN
The Tegra30 and up TRM states that this bit should always be
programmed to 0 by driver software.
Signed-off-by: Lucas Stach <dev@lynxeye.de>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/host/sdhci-tegra.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c index f11db8337cce..20ce81b57d32 100644 --- a/drivers/mmc/host/sdhci-tegra.c +++ b/drivers/mmc/host/sdhci-tegra.c | |||
@@ -28,6 +28,10 @@ | |||
28 | #include "sdhci-pltfm.h" | 28 | #include "sdhci-pltfm.h" |
29 | 29 | ||
30 | /* Tegra SDHOST controller vendor register definitions */ | 30 | /* Tegra SDHOST controller vendor register definitions */ |
31 | #define SDHCI_TEGRA_VENDOR_CLOCK_CTRL 0x100 | ||
32 | #define SDHCI_CLOCK_CTRL_PADPIPE_CLKEN_OVERRIDE BIT(3) | ||
33 | #define SDHCI_CLOCK_CTRL_SPI_MODE_CLKEN_OVERRIDE BIT(2) | ||
34 | |||
31 | #define SDHCI_TEGRA_VENDOR_MISC_CTRL 0x120 | 35 | #define SDHCI_TEGRA_VENDOR_MISC_CTRL 0x120 |
32 | #define SDHCI_MISC_CTRL_ENABLE_SDR104 0x8 | 36 | #define SDHCI_MISC_CTRL_ENABLE_SDR104 0x8 |
33 | #define SDHCI_MISC_CTRL_ENABLE_SDR50 0x10 | 37 | #define SDHCI_MISC_CTRL_ENABLE_SDR50 0x10 |
@@ -125,7 +129,7 @@ static void tegra_sdhci_reset(struct sdhci_host *host, u8 mask) | |||
125 | struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); | 129 | struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); |
126 | struct sdhci_tegra *tegra_host = pltfm_host->priv; | 130 | struct sdhci_tegra *tegra_host = pltfm_host->priv; |
127 | const struct sdhci_tegra_soc_data *soc_data = tegra_host->soc_data; | 131 | const struct sdhci_tegra_soc_data *soc_data = tegra_host->soc_data; |
128 | u32 misc_ctrl; | 132 | u32 misc_ctrl, clk_ctrl; |
129 | 133 | ||
130 | sdhci_reset(host, mask); | 134 | sdhci_reset(host, mask); |
131 | 135 | ||
@@ -145,6 +149,10 @@ static void tegra_sdhci_reset(struct sdhci_host *host, u8 mask) | |||
145 | misc_ctrl &= ~SDHCI_MISC_CTRL_ENABLE_SDR104; | 149 | misc_ctrl &= ~SDHCI_MISC_CTRL_ENABLE_SDR104; |
146 | sdhci_writew(host, misc_ctrl, SDHCI_TEGRA_VENDOR_MISC_CTRL); | 150 | sdhci_writew(host, misc_ctrl, SDHCI_TEGRA_VENDOR_MISC_CTRL); |
147 | 151 | ||
152 | clk_ctrl = sdhci_readl(host, SDHCI_TEGRA_VENDOR_CLOCK_CTRL); | ||
153 | clk_ctrl &= ~SDHCI_CLOCK_CTRL_SPI_MODE_CLKEN_OVERRIDE; | ||
154 | sdhci_writel(host, clk_ctrl, SDHCI_TEGRA_VENDOR_CLOCK_CTRL); | ||
155 | |||
148 | tegra_host->ddr_signaling = false; | 156 | tegra_host->ddr_signaling = false; |
149 | } | 157 | } |
150 | 158 | ||