summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-tegra/board-cardhu-sdhci.c4
-rw-r--r--arch/arm/mach-tegra/common.c2
-rw-r--r--drivers/mmc/host/sdhci-tegra.c9
3 files changed, 12 insertions, 3 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu-sdhci.c b/arch/arm/mach-tegra/board-cardhu-sdhci.c
index 7832d82c52d9..af1a502a42ab 100644
--- a/arch/arm/mach-tegra/board-cardhu-sdhci.c
+++ b/arch/arm/mach-tegra/board-cardhu-sdhci.c
@@ -234,7 +234,7 @@ int __init cardhu_sdhci_init(void)
#endif
platform_device_register(&tegra_sdhci_device3);
- platform_device_register(&tegra_sdhci_device2);
+// platform_device_register(&tegra_sdhci_device2);
#if 0
/* Fix ME: The gpios have to enabled for hot plug support */
@@ -247,7 +247,7 @@ int __init cardhu_sdhci_init(void)
- platform_device_register(&tegra_sdhci_device0);
+// platform_device_register(&tegra_sdhci_device0);
return 0;
}
diff --git a/arch/arm/mach-tegra/common.c b/arch/arm/mach-tegra/common.c
index 97149ef2fe97..5e3e99358635 100644
--- a/arch/arm/mach-tegra/common.c
+++ b/arch/arm/mach-tegra/common.c
@@ -163,7 +163,7 @@ static __initdata struct tegra_clk_init_table common_clk_init_table[] = {
{ "pll_u", NULL, 480000000, false },
{ "sdmmc1", "pll_p", 48000000, false},
{ "sdmmc3", "pll_p", 48000000, false},
- { "sdmmc4", "pll_p", 48000000, false},
+ { "sdmmc4", "clk_m", 12000000, true},
#ifndef CONFIG_ARCH_TEGRA_2x_SOC
{ "vde", "pll_c", ULONG_MAX, false },
{ "host1x", "pll_c", 0, false },
diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
index c54017ec9c1c..6fa88de8fc7a 100644
--- a/drivers/mmc/host/sdhci-tegra.c
+++ b/drivers/mmc/host/sdhci-tegra.c
@@ -67,6 +67,7 @@ static void tegra_sdhci_writel(struct sdhci_host *host, u32 val, int reg)
writel(val, host->ioaddr + reg);
+#ifdef CONFIG_ARCH_TEGRA_2x_SOC
if (unlikely(reg == SDHCI_INT_ENABLE)) {
/* Erratum: Must enable block gap interrupt detection */
u8 gap_ctrl = readb(host->ioaddr + SDHCI_BLOCK_GAP_CONTROL);
@@ -76,6 +77,7 @@ static void tegra_sdhci_writel(struct sdhci_host *host, u32 val, int reg)
gap_ctrl &= ~0x8;
writeb(gap_ctrl, host->ioaddr + SDHCI_BLOCK_GAP_CONTROL);
}
+#endif
}
static unsigned int tegra_sdhci_get_ro(struct sdhci_host *sdhci)
@@ -215,6 +217,13 @@ static int __devinit sdhci_tegra_probe(struct platform_device *pdev)
struct tegra_sdhci_host *tegra_host;
struct clk *clk;
int rc;
+ void __iomem *ioaddr_clk_rst;
+ unsigned int val = 0;
+
+ ioaddr_clk_rst = ioremap(0x60006300, 0x400);
+ val = readl(ioaddr_clk_rst + 0xa0);
+ val |= 0x68;
+ writel(val, ioaddr_clk_rst + 0xa0);
host = sdhci_pltfm_init(pdev, &sdhci_tegra_pdata);
if (IS_ERR(host))