From 2c1a2558212cb107d67fc8bad8bc05de33924961 Mon Sep 17 00:00:00 2001 Message-Id: <2c1a2558212cb107d67fc8bad8bc05de33924961.1531317141.git.marcel.ziswiler@toradex.com> In-Reply-To: <6654e1bd342708a683daf47e7558455f709a3e7e.1531317141.git.marcel.ziswiler@toradex.com> References: <6654e1bd342708a683daf47e7558455f709a3e7e.1531317141.git.marcel.ziswiler@toradex.com> From: Marcel Ziswiler Date: Thu, 15 Dec 2016 10:56:26 +0100 Subject: [PATCH 05/33] mmc: tegra: apalis-tk1: hack to make sd1 functional Disable the external loopback and use the internal loopback as per SDMMC_VENDOR_MISC_CNTRL_0 register's SDMMC_SPARE1 bits being set to 0xfffd according to the TRM. Signed-off-by: Marcel Ziswiler Acked-by: Dominik Sliwa (cherry picked from toradex_tk1_l4t_r21.5 commit fc14b7601e5ca587afd97936ef3fd599f4e9281c) --- drivers/mmc/host/sdhci-tegra.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c index 0cd6fa80db66..327883d86b33 100644 --- a/drivers/mmc/host/sdhci-tegra.c +++ b/drivers/mmc/host/sdhci-tegra.c @@ -43,6 +43,7 @@ #define SDHCI_MISC_CTRL_ENABLE_SDR50 0x10 #define SDHCI_MISC_CTRL_ENABLE_SDHCI_SPEC_300 0x20 #define SDHCI_MISC_CTRL_ENABLE_DDR50 0x200 +#define SDHCI_MISC_CTRL_ENABLE_EXT_LOOPBACK 0x20000 #define SDHCI_TEGRA_AUTO_CAL_CONFIG 0x1e4 #define SDHCI_AUTO_CAL_START BIT(31) @@ -181,6 +182,16 @@ static void tegra_sdhci_reset(struct sdhci_host *host, u8 mask) clk_ctrl |= SDHCI_CLOCK_CTRL_SDR50_TUNING_OVERRIDE; } +#define CONFIG_MACH_APALIS_TK1 +#ifdef CONFIG_MACH_APALIS_TK1 + /* + * Disable the external loopback and use the internal loopback as per + * SDMMC_VENDOR_MISC_CNTRL_0 register's SDMMC_SPARE1 bits being set to + * 0xfffd according to the TRM. + */ + misc_ctrl &= ~SDHCI_MISC_CTRL_ENABLE_EXT_LOOPBACK; +#endif /* CONFIG_MACH_APALIS_TK1 */ + sdhci_writel(host, misc_ctrl, SDHCI_TEGRA_VENDOR_MISC_CTRL); sdhci_writel(host, clk_ctrl, SDHCI_TEGRA_VENDOR_CLOCK_CTRL); -- 2.14.4