diff options
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu-sdhci.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-tegra/common.c | 2 | ||||
-rw-r--r-- | drivers/mmc/host/sdhci-tegra.c | 9 |
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)) |